专利名称:基于双缓冲结构的流缓冲器的制作方法
技术领域:
本发明主要涉及到微处理器的设计领域,特指一种基于双缓冲结构的流缓冲器。
背景技术:
在微处理器设计中,大容量寄存器文件的端口数目越多,则实现方式越复杂,读/写延迟越大。因此可以采用一个虚拟端口的方式,以有限的端口支持多于实际端口数的读写请求。在流处理器中,流寄存器文件是一个大容量的存储部件,它作为流处理器的核心部件,负责流数据和流指令在各部件间传输,既能同时为多个流计算、流客户提供各种长度的流数据,又能作为片内大容量Cache,缓存计算单元生产的中间流。流寄存器文件的主要服务对象是以SIMD方式工作的N个运算单元,因此流寄存器文件需要同时向N个运算单元提供数据,要求具有很高的带宽。该寄存器文件只使用一个单端口的SRAM作为主存储器,通过多个流缓冲器和一个仲裁器,以共享访问总线的方式,实现了多端口访问的逻辑功能。该寄存器文件为各流客户提供一个按地址访问的顺序数据队列,访问的数据以块(block)为单位,块的大小直接与每个字位宽和运算单元的数目M直接相关,若设计M个运算单元,则一个块的位宽至少应该有M个字。这种结构的寄存器文件能为计算单元提供很高的操作数带宽。其中的流缓冲器以一个双缓冲区的结构支持具有不对称带宽的从流寄存器到流客户的流数据传输,能够接受启动传输信号,并完成一个定长或不定长的流的读出与写入。
发明内容
本发明要解决的技术问题就在于针对现有技术存在的技术问题,本发明提供一种支持不对称数据访问带宽的基于双缓冲结构的流缓冲器。
为解决上述技术问题,本发明提出的解决方案为一种基于双缓冲结构的流缓冲器,其特征在于它包括0号半缓冲器、1号半缓冲器和流缓冲器控制器,所述0号缓冲器和1号缓冲器是两个具有相同容量的存储结构,其大小与流寄存器文件的一个块的大小一样,用于存储客户要从流寄存器文件读出的流数据,或者客户要写入流寄存器文件的流数据;所述流缓冲器控制器包括一个流控制寄存器和产生控制信号的逻辑电路单元,流缓冲器控制器负责启动和结束一个流的传输,存储流的长度和流在寄存器文件中的地址,向流寄存器文件仲裁控制逻辑单元、流控制器和流客户发送反馈信号,产生读/写两个半缓冲器的信号。
所述流缓冲器控制器包括流控制寄存器、流状态寄存器和产生控制信号的组合逻辑单元。流状态寄存器内包括用于表示两个半缓冲器空满状态的信号为HBStatus0和HBStatus1、流寄存器文件当前正在访问的半缓冲器指针CurrentHBForSRF、客户当前正在访问的半缓冲器指针CurrentHBForClient以及用于表示客户当前访问的数据地址的寄存器WordAddress。
所述状态信号寄存器内包括用于表示两个半缓冲器空满状态的信号为HBStatus0和HBStatus1,所述HBStatus0的含义是为读操作时,HBStatus0为1时表示客户读0号半缓冲器的数据已经准备好,否则表示没有准备好;写操作时,0号半缓冲器时有空余的位置可以供客户写入数据,否则表示不可以写入;HBStatus1的含义为读操作时,HBStatus1为1时表示客户读1号半缓冲器的数据已经准备好,否则表示没有准备好;写操作时,1号半缓冲器时有空余的位置可以供客户写入数据,否则表示不可以写入。
所述流状态寄存器内包括用于表示流寄存器文件当前正在访问的半缓冲器指针CurrentHBForSRF和表示客户当前正在访问的半缓冲器指针CurrentHBForClient,所述CurrentHBForSRF为0表示当前流寄存器文件正在使用0号缓冲器,为1表示当前流寄存器文件正在使用1号缓冲器,CurrentHBForClient为0表示当前客户正在使用0号缓冲器,为1表示当前客户正在使用1号缓冲器。
所述流状态寄存器内包括用于表示客户当前访问的数据地址的寄存器WordAddress,所述WordAddress表示客户下面要读取的数据位于当前半缓冲器的哪个位置。
所述流缓冲器与客户之间设有地址连线,地址连线用来使流缓冲器可根据客户提供的地址将相应数据写入正确的位置。
与现有技术相比,本发明的优点就在于支持并行、不间断的读写访问;支持具有不对称带宽的读/写访问;支持对写入数据重排序。
图1为具体实施例中流处理器框架结构示意图;图2为只读流缓冲器的框架结构示意图;图3为支持重排序的读/写双向流缓冲器的框架结构示意图;图4为两个半缓冲器的框架结构示意图;图5为流控制寄存器的结构示意图;
图6为流状态寄存器的结构示意图;图7为客户完成读操作的控制流程示意图;图8为客户完成读操作的数据流程示意图;图9为客户完成写操作的控制流程示意图;图10为客户完成写操作的数据流程示意图。
具体实施例方式
以下将结合附图和具体实施例对本发明做进一步详细说明。
参见图1所示,本发明以64位流处理器的体系结构为例,该流处理器包含一个流控制器,一个微指令控制器,一个流寄存器文件(SRF),由四个运算单元组成的运算群,以及一个存储控制器,一个DDR控制器,一个片间互连接口,以及主机接口组成。流缓冲器属于SRF部件,流缓冲器可以是只读的(客户只能通过它进行读流操作),只写的(客户只能对它进行写流操作),或是可读可写的(客户可以进行读流操作,也可以进行写流操作)。对于可写的流缓冲器,可以是支持重排序的,也可以不支持重排序;这里的支持重排序是指客户可以按任意顺序将数据写入流缓冲器。
如图2和图3所示,本发明的一种基于双缓冲结构的流缓冲器,它包括0号半缓冲器、1号半缓冲器和流缓冲器控制器,所述0号缓冲器和1号缓冲器是两个具有相同容量的存储结构,其大小与流寄存器文件(SRF)的一个块的大小一样,用于存储客户要从流寄存器文件(SRF)读出的流数据,或者客户要写入流寄存器文件的流数据;所述流缓冲器控制器包括一个流控制寄存器、一个流状态寄存器和产生控制信号的组合逻辑电路单元,流缓冲器控制器负责启动一个流的传输,存储流的长度和流在寄存器文件中的地址,向流寄存器文件仲裁控制逻辑单元、流控制器和流客户发送反馈信号,产生读/写两个半缓冲器的信号。先看流控制器和流缓冲器的接口信号流缓冲器给流控制器一个忙信号,忙信号表示目前流缓冲器处于忙/空闲状态,当流缓冲器处于空闲状态时,流控制器可以向流缓冲器发启动信号,启动流缓冲器进行一次新的流传输。再看流缓冲器与SRAM及仲裁器的接口流缓冲器向SRF仲裁器发出的请求信号是表示当前要从SRAM中读取数据,仲裁器发回的允许信号表示流缓冲器现在可以从SRAM取走数据,2048位数据即是从SRAM的读端口引出的数据线;再来看流缓冲器与客户的接口有效信号是流缓冲器向客户指示客户想要读走的数据现在已经有效了,可以读走了。读信号是客户向流缓冲器指示客户现在可以读数据,如果流缓冲器此时给出有效信号,则客户可以读走一个字的数据,64位数据输出就是流缓冲器提供给客户的数据,这样就表示客户完成了一次读操作。而流缓冲器则可以将地址加1,将下一个数据提供给客户。本实施例中,该状态信号寄存器内包括用于表示两个半缓冲器空满状态的信号为HBStatus0和HBStatus1、流寄存器文件当前正在访问的半缓冲器指针CurrentHBForSRF、客户当前正在访问的半缓冲器指针CurrentHBForClient以及用于表示客户当前访问的数据地址的寄存器WordAddress。该状态信号寄存器内包括用于表示两个半缓冲器空满状态的信号为HBStatus0和HBStatus1,所述HBStatus0的含义是为读操作时,HBStatus0为1时表示客户读0号半缓冲器的数据已经准备好,否则表示没有准备好;写操作时,0号半缓冲器时有空余的位置可以供客户写入数据,否则表示不可以写入;HBStatus1的含义为读操作时,HBStatus1为1时表示客户读1号半缓冲器的数据已经准备好,否则表示没有准备好;写操作时,1号半缓冲器时有空余的位置可以供客户写入数据,否则表示不可以写入。该状态信号寄存器内包括用于表示流寄存器文件当前正在访问的半缓冲器指针CurrentHBForSRF和表示客户当前正在访问的半缓冲器指针CurrentHBForClient,所述CurrentHBForSRF为0表示当前流寄存器文件正在使用0号缓冲器,为1表示当前流寄存器文件正在使用1号缓冲器,CurrentHBForClient为0表示当前客户正在使用0号缓冲器,为1表示当前客户正在使用1号缓冲器。该状态信号寄存器内包括用于表示客户当前访问的数据地址的寄存器WordAddress,所述WordAddress表示客户下面要读取的数据位于当前半缓冲器的哪个位置,地址分配见图4。
读操作时,SRF每次读出一个数据块(16字)至某数据缓冲器16字的半缓冲器中,并标记该半缓冲器已满,然后由请求部件将该半缓冲器内容读走,数据读完后该半缓存器标记为空。如果任一个半缓冲器为空,且该次数据传输的流控制器中的GO位置1,则对这一空半缓冲器的传输是使能的,并且当该数据缓冲器赢得仲裁时进行数据传输。当SCR的字计数器域减为0,流缓冲器发出一个传输结束信号(EOS)以表示数据块传输完成。
写操作时,上述的过程则相反。写操作有两种模式按序写入和乱序写入。按序写入指客户按地址顺序写入数据到半缓冲器,乱序写入是指客户在写一个数据的同时提供该数据在半缓冲器中的地址,将数据写入该地址对应的单元里。在这两种模式下,都是由客户填写半缓冲器,当写半缓冲器中的第16个字时,缓冲器被标记为满,如果GO位置1,经仲裁,半缓冲器的数据被写入存储体。当客户完成一个数据块的写操作,它发出一个结束信号(EOS)表示数据块传输完成。在定长传输时,这应该与SCR的字计数器域减至零一致。在进行可变长度数据块的写操作时,EOS信号表示传输结束,并应该设置字计数器域。
当可变长的写操作完成时,SCR的字计数器域被写回某个寄存器中。这样后面的操作就可使用新产生的数据块。
当数据传输完成时,对于读操作,发出EOS信号;对写操作,EOS信号被忽略,除非它是一个递增计数模式下的不定长流操作。这时,当数据传输结束时,生产者将设置EOS信号,通知数据缓冲器最后一片数据已经传输完毕。
图3支持重排序的读/写双向流缓冲器的结构框图。双向流缓冲器是指可以支持客户的读流操作和写流操作。而支持重排序是指客户可以按任意顺序填满半缓冲器,不需要按顺序写入。支持重排序的双向流缓冲器由三部分组成0号半缓冲器,1号半缓冲器,流缓冲器控制器;流缓冲器控制器由一个流控制寄存器和产生控制信号的逻辑电路组成。流控制器负责启动一个流的传输,存储流的长度和流在寄存器文件中的地址,向SRF仲裁控制器、流控制器和流客户发送反馈信号,产生读/写两个半缓冲器的信号。与只读流缓冲器不同的是,双向流缓冲器支持客户进行写流操作,在流缓冲控制器中增加了写操作的控制,另外为了支持重排序,客户与流缓冲器之间增加了地址连线。流缓冲器根据客户提供的地址将相应数据写入正确的位置。
图4给出了两个半缓冲器的结构,0号半缓冲器和1号半缓冲器具有相同的结构。半缓冲器由4个bank组成,每个bank包含4个字(每个字为64位),半缓冲器的容量为16个字;半缓冲器的容量与SRF的结构相匹配,包括bank数目和每个字的位宽。半缓冲器按字交叉编址,地址0在bank0,地址1在bank1,地址2在bank2,地址3在bank3,地址4在bank0,依次类推。当流缓冲器向SRF传输数据时,传输的数据是半缓冲器中的全部数据,即数据宽度是16个字;而当流缓冲器与客户进行数据传输时,数据宽度则根据每个客户的特点,可以是不同的。针对运算群,它的传输宽度是4个字(每个bank中取一个字,如地址为0、1、2、3的四个字);针对存储器,片问互连接口,微指令控制器,传输的数据宽度都是1个字。图4中的0号半缓冲器正在与客户传数据,而1号半缓冲器正在与SRF传数据,显示了流缓冲器可以实现两个方向并行传输数据,而两边的数据带宽是不一样的,有力地支持了流处理器中不同带宽的存储层次。
图5给出了流控制寄存器的位域组成。此寄存器中的各个位域控制着SRF与客户之间流数据的传输过程。块地址是所要传输的数据在SRF中的地址,指明这一块数据是SRF中的哪一块。字计数器在递增计数模式下,是指已经传输完的以字为单位的数据量;在递减计数模式下,是指剩余的没有传输完的以字为单位的数据量。计数模式是指流传输有两种计数模式,递增计数和递减计数。递增计数是预先不知道流长度的情况,每传输完一次数据就在字计数器中累加传完的字数,收到客户发来的结束信号时结束流传输。这样最后字计数器中的内容就是流的长度。递减计数是指预先己知流的长度,将流长度写入字计数器,每传输完一次数据就将计数器减去该块数据的长度,等字计数器变为零时流传输结束。读写方向是指流传输是读流还是写流操作;读流是指客户从SRF中读取流数据,写流是指客户向SRF中写入流数据。请求位是一个1位的标志位,为1时指半缓冲器向SRF发出读写请求,要求读出下一块数据(读流),或要求写入下一块数据(写流)。为0时表示没有传输数据的需求。
图6是流状态寄存器,用于保存流传输过程中流缓冲器的状态。状态寄存器所包含的状态有用于表示两个半缓冲器空满状态的信号为HBStatus0和HBStatus1;SRF当前正在访问的半缓冲器指针CurrentHBForSRF;客户当前正在访问的半缓冲器指针CurrentHBForClient;用于表示客户当前访问的数据地址的寄存器WordAddress。HBStatus0的含义是读操作时,HBStatus0为1时表示客户读0号半缓冲器的数据已经准备好,否则表示没有准备好;写操作时,0号半缓冲器时有空余的位置可以供客户写入数据,否则表示不可以写入。同样,HBStatusl的含义是读操作时,HBStatus1为1时表示客户读1号半缓冲器的数据已经准备好,否则表示没有准备好;写操作时,1号半缓冲器时有空余的位置可以供客户写入数据,否则表示不可以写入。CurrentHBForSRF为0表示当前SRF正在使用0号缓冲器,为1表示当前SRF正在使用1号缓冲器。CurrentHBForClient为0表示当前客户正在使用0号缓冲器,为1表示当前客户正在使用1号缓冲器。WordAddress表示客户下面要读取的数据位于当前半缓冲器的哪个位置,WordAddress的位数由半缓冲器的容量决定,当半缓冲器的容量是32个字时,WordAddress是5位。地址分配见图4。
图7是客户从流寄存器文件读数据时单次数据传输的控制流程。读操作时,流缓冲器向流寄存器文件的仲裁逻辑发出请求信号Request=1,等待仲裁逻辑发回允许信号Grant=1,向半缓冲器发出Write=1,将SRAM中读出的一个数据块(16字)写至某个半缓冲器中,并向客户指示缓冲器数据有效,然后由客户将该半缓冲器内容读走,数据读完后该半缓存器标记为空。如果任一个半缓冲器为空,且该次数据传输的请求位置1,则对这一空半缓冲器的传输是使能的,并且当该数据缓冲器赢得仲裁时进行数据传输。当流控制器的字计数器域减为0,其流缓冲器发出一个传输结束信号(EOS)以表示数据块传输完成。
图8为客户读数据的数据流程。数据先由流缓冲器取到半缓冲器中,位宽为一个数据块的宽度,16个字,也是半缓冲器的大小,再由客户从半缓冲器中取数据,每次读取的数据的位宽是1个字或4个字。
图9给出了客户写数据的控制流程。首先客户将Write信号置1,当流缓冲器中有空余空间时,给客户返回一个Ready=1,表示此次数据可以写入;然后流缓冲控制逻辑向某个半缓冲器发出Wrire=1,将数据写入半缓冲器中。等这个半缓冲器中的数据放满之后,向SRF仲裁逻辑发Request=1信号,等其返回6rant=1后,将整个半缓冲器作为一个数据块写入SRAM中。
图10是客户写数据的数据流程。首先客户写入半缓冲器的数据是1个字或4个字,等待半缓冲器放满数据后,作为整体写入SRAM。
本发明的流缓冲器可以支持并行的、具有不同带宽的读/写访问,可以支持重排序;已经成功地应用于国防科技大学生产的具有自主知识产权的YeS64CPU芯片中。
权利要求
1.一种基于双缓冲结构的流缓冲器,其特征在于它包括0号半缓冲器、1号半缓冲器和流缓冲器控制器,所述0号缓冲器和1号缓冲器是两个具有相同容量的存储结构,其大小与流寄存器文件的一个块的大小一样,用于存储客户要从流寄存器文件读出的流数据,或者客户要写入流寄存器文件的流数据;所述流缓冲器控制器包括一个流控制寄存器和产生控制信号的逻辑电路单元,流缓冲器控制器负责启动一个流的传输,存储流的长度和流在寄存器文件中的地址,向流寄存器文件仲裁控制逻辑单元、流控制器和流客户发送反馈信号,产生读/写两个半缓冲器的信号。
2.根据权利要求1所述的基于双缓冲结构的流缓冲器,其特征在于所述流缓冲器控制器包括用来存放当前状态以产生控制信号的流状态寄存器,流状态寄存器内包括用于表示两个半缓冲器空满状态的信号为HBStatus0和HBStatus1、流寄存器文件当前正在访问的半缓冲器指针CurrentHBForSRF、客户当前正在访问的半缓冲器指针CurrentHBForClient以及用于表示客户当前访问的数据地址的寄存器WordAddress。
3.根据权利要求2所述的基于双缓冲结构的流缓冲器,其特征在于所述状态信号寄存器内包括用于表示两个半缓冲器空满状态的信号为HBStatus0和HBStatus1,所述HBStatus0的含义是为读操作时,HBStatus0为1时表示客户读0号半缓冲器的数据已经准备好,否则表示没有准备好;写操作时,0号半缓冲器时有空余的位置可以供客户写入数据,否则表示不可以写入;HBStatus1的含义为读操作时,HBStatus1为1时表示客户读1号半缓冲器的数据已经准备好,否则表示没有准备好;写操作时,1号半缓冲器时有空余的位置可以供客户写入数据,否则表示不可以写入。
4.根据权利要求2或3所述的基于双缓冲结构的流缓冲器,其特征在于所述状态信号寄存器内包括用于表示流寄存器文件当前正在访问的半缓冲器指针CurrentHBForSRF和表示客户当前正在访问的半缓冲器指针CurrentHBForClient,所述CurrentHBForSRF为0表示当前流寄存器文件正在使用0号缓冲器,为1表示当前流寄存器文件正在使用1号缓冲器,CurrentHBForClient为0表示当前客户正在使用0号缓冲器,为1表示当前客户正在使用1号缓冲器。
5.根据权利要求2或3所述的基于双缓冲结构的流缓冲器,其特征在于所述流状态寄存器内包括用于表示客户当前访问的数据地址的寄存器WordAddress,所述WordAddress表示客户下面要读取的数据位于当前半缓冲器的哪个位置。
6.根据权利要求4所述的基于双缓冲结构的流缓冲器,其特征在于所述流状态寄存器内包括用于表示客户当前访问的数据地址的寄存器WordAddress,所述WordAddress表示客户下面要读取的数据位于当前半缓冲器的哪个位置。
7.根据权利要求1或2或3所述的基于双缓冲结构的流缓冲器,其特征在于所述流缓冲器与客户之间设有地址连线,地址连线用来使流缓冲器可根据客户提供的地址将相应数据写入正确的位置。
8.根据权利要求6所述的基于双缓冲结构的流缓冲器,其特征在于所述流缓冲器与客户之间设有地址连线,地址连线用来使流缓冲器可根据客户提供的地址将相应数据写入正确的位置。
全文摘要
本发明公开了一种基于双缓冲结构的流缓冲器,它包括0号半缓冲器、1号半缓冲器和流缓冲器控制器,所述0号缓冲器和1号缓冲器是两个具有相同容量的存储结构,其大小与流寄存器文件的一个块的大小一样,用于存储客户要从流寄存器文件读出的流数据,或者客户要写入流寄存器文件的流数据;所述流缓冲器控制器包括一个流控制寄存器、流状态寄存器和产生控制信号的逻辑电路单元,流缓冲器控制器负责启动一个流的传输,存储流的长度和流在寄存器文件中的地址,向流寄存器文件仲裁控制逻辑单元、流控制器和流客户发送反馈信号,产生读/写两个半缓冲器的信号。
文档编号G06F9/38GK101021833SQ20071003457
公开日2007年8月22日 申请日期2007年3月19日 优先权日2007年3月19日
发明者衣晓飞, 陈海燕, 蒋江, 杨学军, 张民选, 邢座程, 张明, 穆长富, 阳柳, 曾献君, 马驰远, 李勇, 高军, 李晋文, 倪晓强, 唐遇星, 张承义, 齐树波 申请人:中国人民解放军国防科学技术大学