基于Avalon总线的流处理器IP核的制作方法

文档序号:6459030阅读:171来源:国知局

专利名称::基于Avalon总线的流处理器IP核的制作方法
技术领域
:本发明涉及一种流处理器IP核,尤其是采用FPGA实现的基于Avalon总线的流处理器IP核。
背景技术
:流处理器是新一代面向密集计算的高性能微处理器的典型代表,流处理器的主要功能就是顺序处理有序数据记录。记录由相关数据的集合组成,有序的记录构成流,流的长度不固定,流记录可以是任意数据类型,但同一个流中的记录类型相同。流处理器专门面向流应用。流应用主要分为两类一类是媒体应用;另一类是科学计算。流应用具有以下几个主要特征计算密集性,与传统的桌面应用相比,流应用对每次从内存取出的数据都要进行大量的算术运算;并行性,以数据级并行为主,同时存在指令级和任务级并行;局域性,是指应用中的数据重用局域性。根据这些特点,流处理器采用流级和核心级两级编程模式,流级程序负责数据的组织,核心级程序负责数据的计算。流处理器由流处理核、主机接口、标量核组成。流处理核通过主机接口与标量核连接。流处理核由流控制器、流寄存器文件SRF(StreamRegisterFile)、微控制器、存储控制器、多个运算簇、网络接口组成。流控制器与主机接口相连,接收数据和地址信号。流控制器与存储控制器、流寄存器文件SRF、微控制器和网络接口相连接,向它们发送流指令产生的控制信号。流寄存器文件SRF与存储控制器和运算簇相连,用来存储流数据同计算相关的输入数据流、输出数据流以及中间数据都存放在流寄存器文件SRF中,保证数据能够在处理器内部循环利用而不产生对外部存储器DRAM的访问。微控制器与运算簇直接相连,向运算簇发送超长指令字。流应用中所有的计算指令由运算簇完成,每个运算簇内包含多个ALU及ALU间的簇内互联开关,运算簇之间通过通讯单元保证不同运算簇间的通讯。流处理核通常作为协处理器,需要与主处理器协同工作,主处理器通常称为标量处理器或标量核。执行流应用时,标量核将程序员编写的高级流操作编译成低级流操作,再发送到流处理核中执行。可编程片上系统(SOPC,SystemonaProgrammableChip)是指中央处理器、数字信号处理器、存储器、模拟电路、信号采集和转换电路等集成在一块印制电路板上来实现系统的功能,并且能够根据用户需求进行可编程开发。随着微电子技术的发展,一块芯片内部可以集成很多器件,这种在一块可编程芯片上集成的系统称为SOPC。由于SOPC的规模非常庞大,涉及工作量很大,因此对已经设计好的模块进行重复使用十分必要,解决这个问题的一个方法是使用IP核(IntellectualPropertyCore)。IP核在集成电路领域指已经过验证的、可重复利用的并具有确定功能的集成电路模块。IP核的使用可以大大降低设计时间、成本,提高设计效率。现有百万门以上的芯片70。/。的模块是IP核的重复使用。但是媒体应用和科学计算等领域的流应用处理速度的要求日益增高,由于通用微处理器的体系结构不适合高速处理大规模密集计算,所以普通的通用微处理器IP核不能适应媒体应用和科学计算等领域的流应用。若采用流体系结构的流处理器IP核,则能够适应媒体应用和科学计算等领域的流应用。目前设计上通常采用如下两种方案一是ASIC(专用集成电路,Application-SpecificIntegratedCircuit)投片;二是FPGA(现场可编程门阵列,FieldProgrammableGateArray)。因为流处理器系统规模达千万门级,消耗的逻辑资源和布线资源多,设计后端的布局布线的压力也很大,所以通常采用ASIC方案。但是,ASIC投片需要大量的资金和人力资源,且不可修改。而采用FPGA既能获得有关硬件实现的参数又具有灵活性,并且克服了ASIC设计周期长和投资大的缺点,是比较理想的选择。目前采用Avalon总线标准的FPGA以其灵活易用性被广泛采用,其中Altera公司StratixII系列的EP2S180,单片逻辑门数达千万门的规模,是目前采用Avalon总线标准的最大规模的FPGA芯片之一,但是其规模相对流处理器仍然较小。因此研究一种能够在现有单片FPGA规模下实现的基于Avalon总线的流处理器IP核仍然是本领域技术人员极为关心的问题。
发明内容本发明要解决的技术问题是在现有单片FPGA规模下提供一种基于Avalon总线标准的流处理器IP核,该IP核适应媒体应用和科学计算等领域的流应用对较高处理速度的要求。本发明的技术方案是流处理器IP核采用FPGA实现,由标量核、流处理核、Avalon总线组成,釆用Avalon总线作为流处理器系统架构的片上高速总线,标量核、流处理核通过Avalon总线互连。Avalon总线包括数据写信号线、读数据线、写数据线,地址和数据读信号线。标量核中设计有一个异构核中间件,异构核中间件是一个动态调度器,它一端与标量核中的编译器连接,另一端通过Avalon总线与流处理核连接,它完成标量核和流处理核之间的链接,向编译过后的流级程序提供调用接口;流处理核中设计有一个流级执行单元,流级执行单元一端通过Avalon总线与标量核连接,另一端通过控制和状态信号线与流处理核的微控制器、存储控制器、流寄存器文件SRF、网络接口连接,流级执行单元是流级程序的执行部件,它缓存流指令、选择流指令执行、执行流指令、传递标量数据、向标量核提供流级执行单元状态;所述流指令来自适应这种体系结构的新的流指令集。由于标量核、流处理核拥有不同的指令集或操作码,各自面向不同特征的工作负载,结构迥异,因此被称为异构核。基于Altera公司的嵌入式总线标准设计实现的完整Avalon片上总线系统,异构核间数据传输的时序和性能由Avalon总线协议保证。但是异构核间特别是标量核和流处理核间的交互较为复杂,只使用Avalon总线无法确保异构核之间的数据传输的正确性和高效性,因此设计异构核中间件和流级执行单元来实现异构核之间的数据传输。异构核中间件由用户调用接口、控制逻辑、指令数组缓存、指令状态缓存、底层接口组成。用户调用接口是供用户程序调用异构核中间件功能的一组接口函数,直接与流级程序进行数据和指令交互,它从编译器处获得编译生成的流指令和数据,将数据和指令传输给控制逻辑,并将从控制逻辑获得的控制信号返回给用户程序。指令状态缓存在控制逻辑将流指令发送到流处理核时保存流指令的信息,包括指令的类型,各项参数等等,并从控制逻辑接收并保存当前流指令的执行状态信息,根据这些状态信息更新自身内部缓存的流指令的状态信息。指令数组缓存是缓存一个用户程序中所有低级流操作指令(低级流操作指令是由流编译根据流级程序中的高级流操作自动生成的,可以直接发往流处理核,并被流处理核执行的指令)的部件,与控制逻辑连接,供控制逻辑查询低级流操作指令。控制逻辑是控制异构核中间件其它部件完成各种功能的关键部件,它与用户调用接口、指令数组缓存、指令状态缓存、底层接口均相连。流程序调用异构核中间件时,控制逻辑从用户调用接口接收数据和指令,从指令状态缓存读取当前的流指令状态信息,同时从指令数组缓存接收低级流操作。根据接收到的数据和指令,控制逻辑执行下面几种不同的操作在标量核向流处理器传输流指令时,控制逻辑从用户调用接口获得低级流操作,通过底层接口从流处理核获取流指令当前执行状态信息,决定是通过底层接口传送低级流操作,还是等待再传送;在流处理核向标量核传输流指令执行状态时,控制逻辑通过底层接口从流处理核中读出流处理核当前状态,并更新指令状态缓存中的信息;在标量核与流处理核之间传输标量数据时,流级程序通过编译器将读标量数据的低级流操作传送给用户调用接口,控制逻辑通过底层接口将低级流操作传送到流处理核,流处理核执行完毕后,控制逻辑再从底层接口将数据从流处理核读出,并通过用户调用接口返回给编译器,供流级程序使用;在标量核与流处理核之间进行流数据传输(专指成块数据序列的传输)时,控制逻辑通过底层接口向流处理核发送所有数据传输ffiffiM低级流操作,流处理核执行这些低级流操作使得流数据在标量核和流处理核之间传输。底层接口既与控制逻辑相连接,又与流处理核相连,它从控制逻辑获取指令或数据,将从控制逻辑获得的指令或数据传送给流处理核,并向控制逻辑返回流处理核的状态信息。为了完成标量核同流处理核之间的交互,在流处理核中设计有流级执行单元。流级执行单元由流级执行单元接口、状态寄存器、指令存储器RAM、标量寄存器文件、指令执行单元、指令状态信息单元、状态信息更新逻辑和多路选择器组成。流级执行单元接口通过Avalon总线与标量核的异构核中间件相连,通过逻辑发射槽信号线、第一流指令信号线、写使能信号线与指令存储器RAM相连,通过读地址信号线和第一数据读信号线与标量寄存器文件相连,通过流级执行单元状态信号线与状态寄存器相连。流级执行单元接口通过Avalon总线中的数据写信号线接收从标量核发来的流指令,将流指令通过第一流指令信号线转发到指令存储器RAM,并将写向指令存储器RAM的地址通过逻辑发射槽信号线发送给指令存储器RAM;流级执行单元接口将来自标量核的地址信号转发给标量寄存器文件,接收从标量寄存器文件返回的存储在该地址的数据,返回给标量核;同时,流级执行单元接口从状态寄存器接收流级执行单元状态信息,将流级执行单元状态信息返回给标量核。由于Avalon总线的数据宽度是32位,而流指令的长度是变长的,部分流指令宽度超过32位,因此需要多个周期来传输流指令,因此,流级执行单元接口设计有指令结束信号线来标志一条流指令的传输是否结束,标量核往指令结束信号线发送0就表示该流指令未传输完,发送1则表示该条流指令传输完成。指令存储器RAM与流级执行单元接口通过逻辑发射槽信号线、第一流指令信号线、写使能信号线相连,与多路选择器通过地址信号线相连,通过第二流指令信号线与指令执行单元相连。RAM通过逻辑发射槽信号线从流级执行单元接口获取指令在RAM中的地址,通过第一流指令信号线从流级执行单元接口获取流指令,在写使能信号线使能的情况下写入流指令;并从多路选择器获取读取RAM中指令的地址,通过第二流指令信号线将读取的流指令发送给指令执行单元。指令状态信息单元通过状态信号线和置位信号线与状态信息更新逻辑相连,通过选择信号线与多路选择器相连。指令状态信息单元为一个寄存器组,寄存器组的每一项对应于一条流指令,存储该流指令执行时所需的信息,包括就绪位、资源位、逻辑发射槽号三个字段,就绪位表示该项对应的流指令是否可以执行,资源位表示该项对应的流指令执行时所需的资源,逻辑发射槽号表示该项对应的流指令的逻辑编号。指令状态信息单元的每一项寄存器通过置位信号线从状态信息更新逻辑获取置位信号,若置位信号为高,则置该项寄存器的就绪位为就绪状态,表示该项对应的流指令可以执行,同时,指令状态信息单元将逻辑发射槽号和就绪位通过选择信号线发送给多路选择器。多路选择器通过选择信号线与指令状态信息单元相连,通过地址信号线与指令存储器RAM相连。多路选择器通过选择信号线获取指令状态信息单元每一项的就绪信息,若某一项处于就绪状态,则多路选择器选择该项指令执行,通过选择信号线获取该项的逻辑发射槽号作为读取RAM的地址,通过地址信号线传给RAM,若指令状态信息单元有多项寄存器的就绪信息为就绪状态,则选择编号最小或编号最大的寄存器中的指令执行,将其对应的逻辑发射槽号作为地址发送给RAM。状态信息更新逻辑一方面与网络接口、微控制器、流寄存器文件SRF、存储控制器通过忙闲信号线相连,接收来自这些模块的忙闲信号,另一方面通过忙闲状态信号线与指令执行单元相连,通过状态信号线和置位信号线与指令状态信息单元相连,同时通过执行状态信号线和状态设置信号线与状态寄存器相连。状态信息更新逻辑通过状态信号线获取指令状态信息单元的每一项的资源信息,从而获知与该项对应的指令执行所需的资源,根据忙闲信号线获取流处理核中其它模块(即网络接口、微控制器、流寄存器文件SRF、存储控制器)的忙闲信息,若该项对应的指令所需的资源为空闲,则通过置位信号线设置该项寄存器的就绪位为就绪状态,反之就绪位不变。标量寄存器文件通过数据写信号线和数据读信号线与指令执行单元相连,通过读地址信号线、第一数据读信号线与流级执行单元接口相连。标量寄存器文件为一个寄存器组,用来存储流处理核中的标量数据,它通过数据写信号线接收来自指令执行单元的数据,通过数据读信号线将数据返回给指令执行单元。同时,标量寄存器文件通过第一数据读信号线将读地址对应的数据返回给流级执行单元接口。指令执行单元通过第二流指令信号线与指令存储器RAM连接,通过控制信号线与网络接口、微控制器、流寄存器文件SRF、存储控制器相连,通过数据写信号线和数据读信号线与标量寄存器文件相连,通过忙闲状态信号线与状态信息更新逻辑相连。指令执行单元接收来自RAM的流指令,对流指令进行译码,产生控制信号并发送给流处理核中的其它模块(即网络接口、微控制器、流寄存器文件SRF、存储控制器),启动其它模块工作。同时,指令执行单元通过数据写信号线向标量寄存器文件写数据,通过数据读信号线从标量寄存器文件中读取数据。另外,指令执行单元将忙闲信息通过忙闲状态信号线传给状态信息更新逻辑。状态寄存器是保存流级执行单元状态的寄存器,通过执行状态信号线和状态设置信号线与状态信息更新逻辑相连,通过流级执行单元状态信号线与流级执行单元接口相连。若状态设置信号线有效,则置状态寄存器为有效状态,状态寄存器的内容一方面通过执行状态信号线传给状态信息更新逻辑,一方面通过流级执行单元状态信号线传给流级执行单元接口。流应用通过流处理核执行流指令来完成,因此必须设计适应本发明体系结构的新的流指令集。流指令集设计为可变长的,在流级执行单元中执行。流指令集包括四类指令寄存器读写指令,流传输指令,执行核心程序指令,其他指令。每条指令是多位二进制数,在指令中设置多个域,每个域代表指令的一个操作或者一个操作数,每条指令的第一个域为指令识别码域。1.寄存器读写指令是用于对流体系结构中的寄存器进行读写操作的指令。该类指令包含2条指令(1).MOVEDst—type,Dst—num,Src_type,Src—num,synch指令功能将源寄存器Src一type[Src—num]的内容写至目的寄存器Dst—type[Dst_num]。其中—type指明寄存器类型,—num指明寄存器的编号,synch表示同步标志位,当该指令需要与其它模块同步时,该标志位置上。(2).Write—ImmDst_type,Dst—num,Imm,synch指令功能将立即数Imm写至目的寄存器DstJype[Dst_num]。其中—type指明寄存器类型,一num指明寄存器的编号,synch表示同步标志位,当该指令需要与其它模块同步时,该标志为置上。2.流传输指令用于片外DRAM存储器、片上的SRF、微控制器之间的数据传输,包含3条指令。(3).MemopData—sdr一num,dir,Data—mar指令功能启动片外DRAM与流寄存器文件之间的流传输。流在片外DRAM存储器中的地址和访存方式由寄存器Data—mar给出,流在SRF中的地址和长度由寄存器Data_sdr_num给出,方向由dir给出。(4).Load一ucodePgm—sdr一num,mpc指令功能将核心程序的微码以流数据的方式从SRF加载到微控制器,微码在SRF中的位置和长度由寄存器Pgm—sdiLnum给出,微码加载到微控制器中起始地址由mpc给出。(5).Netopnet一sdr—num,dir,Tag,NRR指令功能启动本地流寄存器文件与远程流寄存器文件之间的流网络传输。流数据在本地流寄存器文件中的位置和长度由寄存器net—sdr_num给出,dir表示数据的传输方向,用来区分数据的发送和接收,Tag用来区分前往同一个网络节点的不同报文,每个报文具有不同的Tag值,网络传输过程所需的路由信息由寄存器NRR给出。3.执行核心程序指令(6).Clustopsdr一num,dir,mode,restartable,mpc指令功能通知微控制器执行核心程序,核心在微码存储器的起始地址由MPC指出,而核心输入流和输出流在SRF中位置和长度由寄存器sdr一num给出,传输方向由dir给出,传输模式由mode给出,restartable指明输入和输出是否需要再次启动。(7).Clust一restartsdr一num,dir,mode,restartable指令功能重启核心的输入或输出流,长流双缓冲时使用。流在SRF中的位置和长度由sdr—num给出,传输方向由dri给出,传输模式由mode给出,restartable指明输入和输出是否需要再次启动。4.其它指令(8).END指令功能一个完整的流程序结束前最后执行该指令,通知流处理器程序已经执行完毕。(9).Barrier指令功能由于流程序存有标量操作例如循环、分支,为了确保流指令正确发射,插入Barrier指令,该指令起到阻塞的功能,即只有按照程序顺序将先于Barrier指令的所有流指令都执行完毕,Barrier指令以及Barrier指令以后的指令才有可能发射。(10).Synch一uc指令功能当微控制器在执行核心程序的过程中到达相应的同步点,执行该指令,实现与核心程序执行的同步。该指令会向微控制器发送一个同步信号,使得微控制器继续执行核心程序。流指令最初位于标量核,经异构核中间件进入到流处理核,并在流处理核的流级执行单元上执行。在流级执行单元中,流指令首先经过流级执行单元接口进入指令存储RAM,然后由多路选择器选择发射到指令执行单元,指令执行单元译码执行流指令,根据流指令的功能,产生控制流处理核中其它模块的控制信号,控制流处理核中其它模块的运行。采用本发明可以达到以下效果1、本发明提供了一种基于Avalon总线的流处理器IP核。由于流体系结构本身适合与媒体处理核科学计算领域的应用,因此本IP核适合作为媒体处理和科学计算等领域的计算密集型的流应用的运行平台。2、在本发明IP核内部,标量核和流处理核之间去掉了主机接口,改用片内高速总线即Avalon标准总线互连,而Avalon总线标准支持多个外设,所以本发明很容易在规模上进行扩展,使IP核的总线标准与FPGA开发应用统一,有更好的通用性。3、本发明IP核中的标量核内部设计有异构核中间件,流处理核内部设计有流级执行单元,它们同Avalon标准总线连接,使得IP核能够完成标量核同流处理核的协同工作机制,能够顺利执行流应用。4、本发明设计有适应本发明体系结构的新的流指令集,使得流应用的程序能够经编译器、异构核中间件、流级执行单元形成流指令集中的流指令,流应用能够以流指令执行的方式被流处理核执行。图1是美国斯坦福大学公开的一种流处理器体系结构图。图2是本发明基于Avalon总线的流处理器IP核结构图。图3是本发明IP核中异构核中间件的逻辑结构图。图4是本发明IP核中流级执行单元的结构图。具体实施例方式图1是美国斯坦福大学公开的一种流处理器IP核体系结构图。该IP核由标量核和流处理核通过主机接口连接而成。流处理核由流控制器、流寄存器文件SRF、微控制器、存储控制器、多个运算簇、网络接口组成。流控制器与主机接口相连,接收数据和地址信号。流控制器与存储控制器、流寄存器文件SRF、微控制器和网络接口相连接,向它们发送流指令产生的控制信号。流寄存器文件SRF与存储控制器和运算簇相连,用来存储流数据同计算相关的输入数据流、输出数据流以及中间数据都存放在流寄存器文件SRF中,保证数据能够在处理器内部循环利用而不产生对外部存储器DRAM的访问。微控制器与运算簇直接相连,向运算簇发送超长指令字。流处理器中所有的计算指令由运算簇完成,每个运算簇内包含多个ALU及ALU间的簇内互联开关,运算簇之间通过通讯单元保证不同运算簇间的通讯。执行流应用时,标量核将程序员编写的高级流操作编译成低级流操作,再发送到流处理核中执行。图2是本发明基于Avalon总线的流处理器IP核结构图。基于Avalon总线的流处理器IP核具有流处理器的体系结构,包括标量核、流处理核和Avalon总线。与原有流处理器的主要区别是标量核、流处理核之间没有主机接口,流处理核中没有流控制器,其功能由标量核中的异构核中间件、Avalon总线和流处理核中的流级执行单元实现,数据和控制信号不再通过主机接口而是通过Avalon总线传输。图3是本发明IP核中异构核中间件逻辑结构图。异构核中间件是一个动态调度器,它一端与标量核中的编译器连接,另一端通过Avalon总线与流处理核连接,它完成标量核和流处理核之间的链接,向编译过后的流级程序提供调用接口。异构核中间件由用户调用接口、控制逻辑、指令数组缓存、指令状态缓存、底层接口组成。用户调用接口是供用户程序调用异构核中间件功能的一组接口函数,直接与流级程序进行数据和指令交互,它从编译器处获得编译生成的流指令和数据,将数据和指令传输给控制逻辑,并将从控制逻辑获得控制信号返回给用户程序。指令状态缓存在控制逻辑将流指令发送到流处理核时保存这些流指令的信息,包括指令的类型,各项参数等等,并从控制逻辑接收并保存当前流指令的执行状态信息,根据这些状态信息更新自身内部缓存的流指令的状态信息。指令数组缓存是缓存一个用户程序中所有低级流操作指令的部件,与控制逻辑连接,供控制逻辑査询低级流操作指令。控制逻辑是异构核中间件完成各种功能的关键部件,它与用户调用接口、指令数组缓存、指令状态缓存、底层接口均相连。底层接口既与控制逻辑相连接,又与流处理核相连,它从控制逻辑获取指令或数据,向控制逻辑返回流处理核的状态信息,并将从控制逻辑获得的指令或数据与流处理核交互。图4是本发明IP核中流级执行单元的结构图。流级执行单元一端通过Avalon总线与标量核连接,另一端通过控制和状态信号线与流处理核的微控制器、存储控制器、流寄存器文件SRF、网络接口连接。流级执行单元由流级执行单元接口、状态寄存器、指令存储器RAM、标量寄存器文件、指令执行单元、指令状态信息单元、状态信息更新逻辑和多路选择器组成。流级执行单元接口通过Avalon总线与标量核的异构核中间件相连,通过逻辑发射槽信号线、第一流指令信号线、写使能信号线与指令存储器RAM相连,通过读地址信号线和第一数据读信号线与标量寄存器文件相连,通过流级执行单元状态信号线与状态寄存器相连。流级执行单元接口通过Avalon总线中的数据写信号线接收从标量核发来的流指令,将流指令通过第一流指令信号线转发到指令存储器RAM,并将写向指令存储器RAM的地址通过逻辑发射槽信号线发送给指令存储器RAM;流级执行单元接口将来自标量核的地址信号转发给标量寄存器文件,接收从标量寄存器文件返回的存储在该地址的数据,返回给标量核;同时,流级执行单元接口从状态寄存器接收流级执行单元状态信息,将流级执行单元状态信息返回给标量核。流级执行单元接口设计有指令结束信号线来标志一条流指令的传输是否结束,标量核往指令结束信号线发送0就表示该流指令未传输完,发送1则表示该条流指令传输完成。指令存储器RAM与流级执行单元接口通过逻辑发射槽信号线、第一流指令信号线、写使能信号线相连,与多路选择器通过地址信号线相连,通过第二流指令信号线与指令执行单元相连。RAM通过逻辑发射槽信号线从流级执行单元接口获取指令在RAM中的地址,通过第一流指令信号线从流级执行单元接口获取流指令,在写使能信号线使能的情况下写入流指令;并从多路选择器获取读取RAM中指令的地址,通过第二流指令信号线将读取的流指令发送给指令执行单元。指令状态信息单元通过状态信号线和置位信号线与状态信息更新逻辑相连,通过选择信号线与多路选择器相连。指令状态信息单元为一个寄存器组,寄存器组的每一项对应于一条流指令,存储该流指令执行时所需的信息,包括就绪位、资源位、逻辑发射槽号三个字段,就绪位表示该项对应的流指令是否可以执行,资源位表示该项对应的流指令执行时所需的资源,逻辑发射槽号表示该项对应的流指令的逻辑编号。指令状态信息单元的每一项寄存器通过置位信号线从状态信息更新逻辑获取置位信号,若置位信号为高,则置该项寄存器的就绪位为就绪状态,表示该项对应的流指令可以执行,同时,指令状态信息单元将逻辑发射槽号和就绪位通过选择信号线发送给多路选择器。多路选择器通过选择信号线与指令状态信息单元相连,通过地址信号线与指令存储器RAM相连。多路选择器通过选择信号线获取指令状态信息单元每一项的就绪信息,若某一项处于就绪状态,则多路选择器选择该项指令执行,通过选择信号线获取该项的逻辑发射槽号作为读取RAM的地址,通过地址信号线传给RAM,若指令状态信息单元有多项寄存器的就绪信息为就绪状态,则选择编号最小或编号最大的寄存器中的指令执行,将其对应的逻辑发射槽号作为地址发送给RAM。状态信息更新逻辑一方面与网络接口、微控制器、流寄存器文件SRF、存储控制器通过忙闲信号线相连,接收来自这些模块的忙闲信号,另一方面通过忙闲状态信号线与指令执行单元相连,通过状态信号线和置位信号线与指令状态信息单元相连,同时通过执行状态信号线和状态设置信号线与状态寄存器相连。状态信息更新逻辑通过状态信号线获取指令状态信息单元的每一项的资源信息,从而获知与该项对应的指令执行所需的资源,根据忙闲信号线获取流处理核中其它模块(即网络接口、微控制器、流寄存器文件SRF、存储控制器)的忙闲信息,若该项对应的指令所需的资源为空闲,则通过置位信号线设置该项寄存器的就绪位为就绪状态,反之就绪位不变。标量寄存器文件通过数据写信号线和数据读信号线与指令执行单元相连,通过读地址信号线、第一数据读信号线与流级执行单元接口相连。标量寄存器文件为一个寄存器组,用来存储流处理核中的标量数据,它通过数据写信号线接收来自指令执行单元的数据,通过数据读信号线将数据返回给指令执行单元。同时,标量寄存器文件通过第一数据读信号线将读地址对应的数据返回给流级执行单元接口。指令执行单元通过第二流指令信号线与指令存储器RAM连接,通过控制信号线与网络接口、微控制器、流寄存器文件SRF、存储控制器相连,通过数据写信号线和数据读信号线与标量寄存器文件相连,通过忙闲状态信号线与状态信息更新逻辑相连。指令执行单元接收来自RAM的流指令,对流指令进行译码,产生控制信号并发送给流处理核中的其它模块(即网络接口、微控制器、流寄存器文件SRF、存储控制器),启动其它模块工作。同时,指令执行单元通过数据写信号线向标量寄存器文件写数据,通过数据读信号线从标量寄存器文件中读取数据。另外,指令执行单元将忙闲信息通过忙闲状态信号线传给状态信息更新逻辑。状态寄存器是保存流级执行单元状态的寄存器,通过执行状态信号线和状态设置信号线与状态信息更新逻辑相连,通过流级执行单元状态信号线与流级执行单元接口相连。若状态设置信号线有效,则置状态寄存器为有效状态,状态寄存器的内容一方面通过执行状态信号线传给状态信息更新逻辑,一方面通过流级执行单元状态信号线传给流级执行单元接口。权利要求1.一种基于Avalon总线的流处理器IP核,由标量核、流处理核组成,其特征在于整个IP核采用FPGA实现,标量核、流处理核、外围设备通过Avalon总线互连,Avalon总线包括数据写信号线、读数据线、写数据线,地址和数据读信号线,标量核中设计有一个异构核中间件,异构核中间件是一个动态调度器,它一端与标量核中的编译器连接,另一端通过Avalon总线与流处理核连接,它完成标量核和流处理核之间的链接,向编译过后的流级程序提供调用接口;流处理核中设计有一个流级执行单元,流级执行单元一端通过Avalon总线与标量核连接,另一端通过控制和状态信号线与流处理核的微控制器、存储控制器、流寄存器文件SRF、网络接口连接,流级执行单元是流级程序的执行部件,它缓存流指令、选择流指令执行、执行流指令、传递标量数据、向标量核提供流级执行单元状态;流指令来自适应这种体系结构的新的流指令集。2.如权利要求1所述的基于Avalon总线的流处理器IP核,其特征在于所述异构核中间件由用户调用接口、控制逻辑、指令数组缓存、指令状态缓存、底层接口组成2.1用户调用接口是供用户程序调用异构核中间件功能的一组接口函数,直接与流级程序进行数据和指令交互,它从编译器处获得编译生成的流指令和数据,将数据和指令传输给控制逻辑,并将从控制逻辑获得的控制信号返回给用户程序;2.2指令状态缓存在控制逻辑将流指令发送到流处理核时保存流指令的类型和各项参数,并从控制逻辑接收并保存当前流指令的执行状态信息,根据这些状态信息更新自身内部缓存的流指令的状态信息;2.3指令数组缓存是缓存一个用户程序中所有低级流操作指令的部件,与控制逻辑连接,供控制逻辑査询低级流操作指令,低级流操作指令是由流编译根据流级程序中的高级流操作自动生成的,可以直接发往流处理核,并被流处理核执行的指令;2.4控制逻辑是控制异构核中间件其它部件完成各种功能的部件,它与用户调用接口、指令数组缓存、指令状态缓存、底层接口均相连;流程序调用异构核中间件时,控制逻辑从用户调用接口接收数据和指令,从指令状态缓存读取当前的流指令状态信息,同时从指令数组缓存接收低级流操作;根据接收到的数据和指令,控制逻辑执行下面几种不同的操作在标量核向流处理器传输流指令时,控制逻辑从用户调用接口获得低级流操作,通过底层接口从流处理核获取流指令当前执行状态信息,决定是通过底层接口传送低级流操作,还是等待再传送;在流处理核向标量核传输流指令执行状态时,控制逻辑通过底层接口从流处理核中读出流处理核当前状态,并更新指令状态缓存中的信息;在标量核与流处理核之间传输标量数据时,流级程序通过编译器将读标量数据的低级流操作传送给用户调用接口,控制逻辑通过底层接口将低级流操作传送到流处理核,流处理核执行完毕后,控制逻辑再从底层接口将数据从流处理核读出,并通过用户调用接口返回给编译器,供流级程序使用;在标量核与流处理核之间进行流数据传输时,控制逻辑通过底层接口向流处理核发送所有数据传输所需的低级流操作,流处理核执行这些低级流操作使得流数据在标量核和流处理核之间传输;(2.5)底层接口既与控制逻辑相连接,又与流处理核相连,它从控制逻辑获取指令或数据,将从控制逻辑获得的指令或数据传送给流处理核,并向控制逻辑返回流处理核的状态信息。3、如权利要求1所述的基于Avalon总线的流处理器IP核,其特征在于所述流级执行单元由流级执行单元接口、状态寄存器、指令存储器RAM、标量寄存器文件、指令执行单元、指令状态信息单元、状态信息更新逻辑和多路选择器组成-3.1流级执行单元接口通过Avalon总线与标量核的异构核中间件相连,通过逻辑发射槽信号线、第一流指令信号线、写使能信号线与指令存储器RAM相连,通过读地址信号线和第一数据读信号线与标量寄存器文件相连,通过流级执行单元状态信号线与状态寄存器相连;流级执行单元接口通过Avalon总线中的数据写信号线接收从标量核发来的流指令,将流指令通过第一流指令信号线转发到指令存储器RAM,并将写向指令存储器RAM的地址通过逻辑发射槽信号线发送给指令存储器RAM;流级执行单元接口将来自标量核的地址信号转发给标量寄存器文件,接收从标量寄存器文件返回的存储在该地址的数据,返回给标量核;同时,流级执行单元接口从状态寄存器接收流级执行单元状态信息,将流级执行单元状态信息返回给标量核;3.2指令存储器RAM与流级执行单元接口通过逻辑发射槽信号线、第一流指令信号线、写使能信号线相连,与多路选择器通过地址信号线相连,通过第二流指令信号线与指令执行单元相连;RAM通过逻辑发射槽信号线从流级执行单元接口获取指令在RAM中的地址,通过第一流指令信号线从流级执行单元接口获取流指令,在写使能信号线使能的情况下写入流指令;并从多路选择器获取读取RAM中指令的地址,通过第二流指令信号线将读取的流指令发送给指令执行单元;3.3指令状态信息单元通过状态信号线和置位信号线与状态信息更新逻辑相连,通过选择信号线与多路选择器相连;指令状态信息单元为一个寄存器组,寄存器组的每一项对应于一条流指令,存储该流指令执行时所需的信息,包括就绪位、资源位、逻辑发射槽号三个字段,就绪位表示该项对应的流指令是否可以执行,资源位表示该项对应的流指令执行时所需的资源,逻辑发射槽号表示该项对应的流指令的逻辑编号;指令状态信息单元的每一项寄存器通过置位信号线从状态信息更新逻辑获取置位信号,若置位信号为高,则置该项寄存器的就绪位为就绪状态,表示该项对应的流指令可以执行,同时,指令状态信息单元将逻辑发射槽号和就绪位通过选择信号线发送给多路选择器;3.4多路选择器通过选择信号线与指令状态信息单元相连,通过地址信号线与指令存储器RAM相连;多路选择器通过选择信号线获取指令状态信息单元每一项的就绪信息,若某一项处于就绪状态,则多路选择器选择该项指令执行,通过选择信号线获取该项的逻辑发射槽号作为读取RAM的地址,通过地址信号线传给RAM,若指令状态信息单元有多项寄存器的就绪信息为就绪状态,则选择编号最小或编号最大的寄存器中的指令执行,将其对应的逻辑发射槽号作为地址发送给RAM;3.5状态信息更新逻辑一方面与网络接口、微控制器、流寄存器文件SRF、存储控制器通过忙闲信号线相连,接收来自这些模块的忙闲信号,另一方面通过忙闲状态信号线与指令执行单元相连,通过状态信号线和置位信号线与指令状态信息单元相连,同时通过执行状态信号线和状态设置信号线与状态寄存器相连;状态信息更新逻辑通过状态信号线获取指令状态信息单元的每一项的资源信息,从而获知与该项对应的指令执行所需的资源,根据忙闲信号线获取流处理核中其它模块即网络接口、微控制器、流寄存器文件SRF、存储控制器的忙闲信息,若该项对应的指令所需的资源为空闲,则通过置位信号线设置该项寄存器的就绪位为就绪状态,反之就绪位不变;3.6标量寄存器文件通过数据写信号线和数据读信号线与指令执行单元相连,通过读地址信号线、第一数据读信号线与流级执行单元接口相连;标量寄存器文件为一个寄存器组,用来存储流处理核中的标量数据,它通过数据写信号线接收来自指令执行单元的数据,通过数据读信号线将数据返回给指令执行单元,通过第一数据读信号线将读地址对应的数据返回给流级执行单元接口;3.7指令执行单元通过第二流指令信号线与指令存储器RAM连接,通过控制信号线与网络接口、微控制器、流寄存器文件SRF、存储控制器相连,通过数据写信号线和数据读信号线与标量寄存器文件相连,通过忙闲状态信号线与状态信息更新逻辑相连;指令执行单元接收来自RAM的流指令,对流指令进行译码,产生控制信号并发送给网络接口、微控制器、流寄存器文件SRF、存储控制器,启动网络接口、微控制器、流寄存器文件SRF、存储控制器工作;同时,指令执行单元通过数据写信号线向标量寄存器文件写数据,通过数据读信号线从标量寄存器文件中读取数据,并将忙闲信息通过忙闲状态信号线传给状态信息更新逻辑;3.8状态寄存器是保存流级执行单元状态的寄存器,通过执行状态信号线和状态设置信号线与状态信息更新逻辑相连,通过流级执行单元状态信号线与流级执行单元接口相连;若状态设置信号线有效,则置状态寄存器为有效状态,状态寄存器的内容一方面通过执行状态信号线传给状态信息更新逻辑,一方面通过流级执行单元状态信号线传给流级执行单元接口。4.如权利要求1所述的基于Avalon总线的流处理器IP核,其特征在于所述流指令集包括四类指令寄存器读写指令,流传输指令,执行核心程序指令,其他指令,每条指令是多位二进制数,在指令中设置多个域,每个域代表指令的一个操作或者一个操作数,每条指令的第一个域为指令识别码域4.1寄存器读写指令是用于对流体系结构中的寄存器进行读写操作的指令,该类指令包含2条指令(1).MOVEDst一type,Dst_num,Src—type,Src一num,synch指令功能将源寄存器Src_type[Src—num]的内容写至目的寄存器Dst—type[Dst_num],其中一type指明寄存器类型,一num指明寄存器的编号,synch表示同步标志位,当该指令需要与其它模块同步时,该标志位置上;(2).Write_ImmDst—type,Dst_num,Imm,synch指令功能将立即数Imm写至目的寄存器Dst—type[Dst—num],其中—type指明寄存器类型,—num指明寄存器的编号,synch表示同步标志位,当该指令需要与其它模块同步时,该标志为置上;4.2流传输指令用于片外DRAM存储器、片上的SRF、微控制器之间的数据传输,包含3条指令(3).MemopData一sdr—num,dir,Data_mar指令功能启动片外DRAM与流寄存器文件之间的流传输,流在片外DRAM存储器中的地址和访存方式由寄存器Data—mar给出,流在SRF中的地址和长度由寄存器Data—sdr_num给出,方向由dir给出;(4).Load_ucodePgm—sdr一num,mpc指令功能将核心程序的微码以流数据的方式从SRF加载到微控制器,微码在SRF中的位置和长度由寄存器PgmjdiLnum给出,微码加载到微控制器中起始地址由mpc给出;(5).Netopnet—sdr一num,dir,Tag,NRR指令功能启动本地流寄存器文件与远程流寄存器文件之间的流网络传输,流数据在本地流寄存器文件中的位置和长度由寄存器net_Sdr_mim给出,dir表示数据的传输方向,用来区分数据的发送和接收,Tag用来区分前往同一个网络节点的不同报文,每个报文具有不同的Tag值,网络传输过程所需的路由信息由寄存器NRR给出;4.3执行核心程序指令(6).Clustopsdr—num,dir,mode,restartable,mpc指令功能通知微控制器执行核心程序,核心在微码存储器的起始地址由MPC指出,核心输入流和输出流在SRF中位置和长度由寄存器sdr—num给出,传输方向由dir给出,传输模式由mode给出,restartable指明输入和输出是否需要再次启动;(7).Clust—restartsdr_num,dir,mode,restartable指令功能重启核心的输入或输出流,长流双缓冲时使用,流在SRF中的位置和长度由sdr_num给出,传输方向由dri给出,传输模式由mode给出,restartable指明输入和输出是否需要再次启动;4.4其它指令(8).END指令功能一个完整的流程序结束前最后执行该指令,通知流处理器程序已经执行完毕;(9).Barrier指令功能由于流程序存有标量操作例如循环、分支,为了确保流指令正确发射,插入Barrier指令,该指令起到阻塞的功能,即只有按照程序顺序将先于Barrier指令的所有流指令都执行完毕,Barrier指令以及Barrier指令以后的指令才有可能发射;(10).Synch—uc指令功能当微控制器在执行核心程序的过程中到达相应的同步点,执行该指令,实现与核心程序执行的同步,该指令会向微控制器发送一个同步信号,使得微控制器继续执行核心程序。.如权利要求3所述的基于Avalon总线的流处理器IP核,其特征在于所述流级执行单元接口设计有指令结束信号线来标志一条流指令的传输是否结束,标量核往指令结束信号线发送0就表示该流指令未传输完,发送1则表示该条流指令传输完成c全文摘要本发明公开了一种基于Avalon总线的流处理器IP核。技术方案是IP核由标量核、流处理核组成,它们通过Avalon总线互连,标量核中设计有一个动态调度器——异构核中间件,它既与标量核中的编译器连接,又与流处理核连接,完成标量核和流处理核之间的链接,向流级程序提供调用接口;流处理核中设计有流级程序的执行部件——流级执行单元,它既与标量核连接,又与流处理核的微控制器、存储控制器、流寄存器文件、网络接口连接,它缓存流指令、选择流指令、执行流指令、传递标量数据、向标量核提供流级执行单元状态;流指令来自适应这种体系结构的流指令集。本发明能适应媒体应用和科学计算等领域的流应用对较高处理速度的要求,具有较好的通用性。文档编号G06F15/76GK101281513SQ200810031299公开日2008年10月8日申请日期2008年5月15日优先权日2008年5月15日发明者巨任,楠伍,义何,伟吴,张春元,梅文,李京旭,杨乾明,俊柴,管茂林,荀长庆申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1