CN100456271C - 面向流应用的片内存储器 - Google Patents
面向流应用的片内存储器 Download PDFInfo
- Publication number
- CN100456271C CN100456271C CNB2007100345755A CN200710034575A CN100456271C CN 100456271 C CN100456271 C CN 100456271C CN B2007100345755 A CNB2007100345755 A CN B2007100345755A CN 200710034575 A CN200710034575 A CN 200710034575A CN 100456271 C CN100456271 C CN 100456271C
- Authority
- CN
- China
- Prior art keywords
- data
- single port
- storer
- data buffer
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Transfer Systems (AREA)
Abstract
本发明公开了一种面向流应用的片内存储器,它包括单端口SRAM存储器、描述符寄存器文件、一个或一个以上的数据缓冲器和存储器访问流水线,所述描述符寄存器文件由多个相同结构的寄存器组成,用来描述流数据在单端口SRAM存储器中的起始块位置和长度信息,所述数据缓冲器是计算单元或其他部件访问存储器的逻辑接口,存储器访问流水线控制所有数据缓冲器对单端口SRAM存储器访问的仲裁和访存流水线,计算单元以及外部客户端通过数据缓冲器,在存储器访问流水线的控制下访问单端口SRAM存储器。本发明能够用来负责流数据和流指令在各部件间传输,既能同时为多个计算单元、网络接口提供各种长度的流数据,又能作为片内大容量Cache缓存计算单元生产中间流。
Description
技术领域
本发明主要涉及到微处理器中片内存储器的设计领域,特指一种面向具有计算密集型和数据并行性流计算的微处理器中的片内存储器。
背景技术
近年来一类新型的应用——流应用,正成为微处理器的主要负载。这种新型的流应用主要分为两类:一类是媒体应用,用来实时地处理音频、视频、静态图像及其他密集型数据,典型的应用包括图像处理、图形处理、视频编码与解码、信号处理等;另一类是科学计算,主要用于高精度科学建模,典型的应用包括流体力学、气象、分子动力学、有限元分析、生物技术等。这些流应用具有以下的特点:(一)数据并行性高。对多个数据元素进行同样的操作,大量数据元素的处理过程间没有依赖关系。(二)计算密集性。媒体、实时信号处理等应用要对大量长序列采样数据进行操作,对每次从存储器中读出的数据往往要实施多种运算。(三)局域性。数据访问通常表现为空间局域性和生产者消费者的局域性,即对大数据块的相邻或跨距访问,和在计算流水线或计算单元的不同阶段中,一个计算单元生产出的数据被另一个计算单元所消费(被读取),数据重用性低。
传统的指令级并行微处理器运算单元匮乏,芯片面积占有率低,不能很好地支持大量的密集型计算;其访存带宽低,不能为足够多的运算单元提供数据,数据并行性不高;其传统的片内存储层次适合具有时间局部性的数据访问,很好满足了数据重用性高的一般应用,因此不能很好地支持流应用。如在Iantium-2处理器中,12个整数部件和2个浮点部件和相关的寄存器文件仅仅占到整个芯片面积的6%,而其他非运算类的部件如:通讯,控制,存储开销占到了整个芯片面积的94%,其存储带宽为6.4GB/s,通讯和访存耗费了大量芯片资源。
传统的片内存储器Cache采用高速缓存机制,强调数据重用性,目标是捕获更多的时间局部性,尽量减小存储器的平均访问延迟,对于Cache的访问是通过名字翻译单元(例如tag查找表),将主存地址转换为Cache的存储器的地址。由于硬件实现代价的制约,Cache不能提供很高的带宽。当计算逻辑单元数量增加的时候,需要高数据带宽的存储器为计算单元提供数据,无法为大量计算单元提供数据。缺乏重用性的流应用数据经过复杂Cache机制来存取还会降低数据访存性能,严重制约其性能的提高。
由于VLSI技术的发展,单个芯片能集成上亿晶体管,而流应用的特性和当代VLSI技术的特点非常匹配。要满足多个数据计算并行的应用需求,单芯片内可以集成很多廉价的运算部件。但是传统的微处理器片内存储器为这些运算单元提供指令和数据不仅代价昂贵,而且运算性能不高。因此,本发明设计了一种符合流计算应用特点,支持密集型计算、能捕获其空间局部性、生产者消费者局部性的片内存储器。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种能够用来负责流数据和流指令在各部件间传输,既能同时为多个计算单元、网络接口提供各种长度的流数据,又能作为片内大容量Cache缓存计算单元生产中间流的面向流应用的片内存储器。该存储器用一个单端口的大容量SRAM作为主存储体,通过多个数据缓冲器(DBs)与N个计算单元、一个指令控制器、片外存储器、网路控制器等客户端相连,以共享访问总线的方式,实现了多逻辑端口访问功能,为各客户端提供流数据和流指令的传输。存储器为计算单元提供的数据由软件组织,访问的数据以块(Block)为单位,由软件确定访问数据在存储器中的起始地址和块长度。通过数据缓冲器,该存储器可为每个访存端口提供一个按地址访问的顺序数据队列,能为计算单元提供很高的操作数带宽。由于计算单元对流数据的访问是预知的、粗粒度的,因此该存储器还具有粗粒度的数据预取作用。
为解决上述技术问题,本发明提出的解决方案为:一种面向流应用的片内存储器,其特征在于:它包括单端口SRAM存储器、描述符寄存器文件、一个或一个以上的数据缓冲器和存储器访问流水线,所述描述符寄存器文件由多个相同结构的寄存器组成,用来描述流数据在单端口SRAM存储器中的起始块位置和长度信息,所述数据缓冲器是计算单元或其他部件访问存储器的逻辑接口,存储器访问流水线控制所有数据缓冲器对单端口SRAM存储器访问的仲裁和访存流水线,计算单元以及外部客户端通过数据缓冲器,在存储器访问流水线的控制下访问单端口SRAM存储器;所述数据缓冲器包括一个数据传输控制器和两个结构一致的半缓冲器,数据传输控制器用来控制数据块传输的过程,数据缓冲器具有两个输入输出端口,一个是SRAM的读写端口,另外一个是其所服务客户端的读写端口;两个半缓冲器用来支持计算单元与数据缓冲器之间和数据缓冲器与单端口SRAM存储器之间同时进行数据交换,数据传输控制器中包含一个数据控制寄存器,数据控制寄存器用来从指令中获取本次传输的数据块地址、长度、传输方向、传输计数模式等信息,再向存储器访问流水线发出访问请求,获取访问权限后由数据控制寄存器控制该数据块的传输过程。
所述存储器访问流水线用来负责动态仲裁数据缓冲器访问单端口SRAM存储器的请求,并且按流水线的方式访问单端口SRAM存储器,数据缓冲器访问单端口SRAM存储器的过程分为五级流水站:
(1)仲裁站:仲裁器根据仲裁算法,从多个数据缓冲器DB请求中选中一个数据缓冲器DB;
(2)选择站:根据仲裁站的仲裁结果GrantsReg[k-1:0]从K个数据缓冲器中选出相应数据缓冲器DB的地址、数据和方向,其中GrantsReg[k-1:0]维持信号两拍有效,同时生成访问单端口SRAM存储器的使能信号WrSRFEn,当有一个数据缓冲器DB被选中时,WrSRFEn为1;生成one-hot编码的写数据缓冲器DB的使能信号Grants_wrdb,是Grantsreg[k-1:0]与读写方向信号Dir[k-1:0]位或的结果;
(3)RAM数据建立站:准备好读或写SRAM的数据、地址、片选及读写使能信号,将写某个数据缓冲器DB的one-hot编码信号Grants_wrdb寄存一站得到Grants_wrdb_reg。
(4)存储器访问站:因为存储器的访问时间大于系统时钟周期,所以存储器访问需要两个时钟周期,需要将数据缓冲器DB写回站要用的数据缓冲器DB写使能信号WriteDBNumReg寄存一拍;
(5)缓冲器写回站:如果是读单端口SRAM存储器的操作,生成写缓冲器的信号WriteDBNumReg和数据Dataout。
所述描述符寄存器文件由两个域Length和Block组成,Length表示数据块的字数,Block表示数据块在存储器中的起始块地址。
与现有技术相比,本发明的优点就在于:
1.该片内主存储器以物理单端口SRAM的硬件代价,实现了逻辑访问端口数大于4的访问功能,大大减少了芯片面积和功耗,性价比高。目前市场上提供的最好的SRAM提供的访存端口数都小于4个,不支持4个或以上访存端口的直接访问,而且随着物理访问端口数的增加,其面积和功耗成倍增长,而每个物理访存端口的访存速度却在降低。
2.硬件实现复杂度降低。数据在该片内存储器中按块地址顺序放置,按块地址寻址,存储体部分只需SRAM构成,不用考虑相关性问题。而传统片内Cache采用的是组相联或全相联方式,每个Cache行少不了地址比较标记,而且需要硬件实现Cache一致性协议,硬件实现复杂。
3.访存延时确定。该存储器对软件可见,每次访存都由软件进行调度,不存在访存缺失情况;而传统的片内Cache对软件透明,存在命中率的问题,当Cache失效时,访问延时可能达上百个时钟周期。
4.访存粒度大:存储器最小寻址单位是一个块,便于隐藏访存延时,更适合数据量大、计算密集的流应用;而Cache的访问粒度以字为单位。
5.能够为多个计算单元提供很高的数据访问带宽。在工作频率为500MHz,计算单元N=4时,可以向4个计算单元提供高达64GB/s的带宽,内部单端口SRAM存储器的访问带宽达32GB/s。
6.数据缓冲器采用双缓冲器的结构,支持双带宽流水访问,能实现数据预取,隐藏数据访问延迟。
7.存储器的半频访问权衡了计算单元对片内存储器带宽的需求和当今VLSI技术条件下大容量片内单端口SRAM存储器访问延迟较大的问题。既满足了性能的要求,又放松了对访问延时的约束,降低了功耗。
附图说明
图1是本发明片内存储器总体结构的框架示意图;
图2是本发明描述符寄存器文件(DRF)中一个寄存器的域组成示意图;
图3是本发明中一个服务于计算单元的数据缓冲器(DB)的结构框架示意图;
图4是本发明数据控制寄存器(DCR)的域结构示意图;
图5是本发明中存储器访问流水线的示意图;
图6是本发明采用的仲裁算法示意图;
图7是单端口SRAM存储器时钟生成电路的原理示意图。
具体实施方式
以下将结合附图和具体实施例对本发明做进一步详细说明。
参见图1所示,本发明是一种面向流应用的片内存储器,它包括单端口SRAM存储器、描述符寄存器文件、一个或一个以上的数据缓冲器和存储器访问流水线,所述描述符寄存器文件由多个相同结构的寄存器组成,用来描述流数据在单端口SRAM存储器中的起始块位置和长度信息,所述数据缓冲器是计算单元或其他部件访问存储器的逻辑接口,存储器访问流水线控制所有数据缓冲器对单端口SRAM存储器访问的仲裁和访存流水线,计算单元以及外部客户端通过数据缓冲器,在存储器访问流水线的控制下访问单端口SRAM存储器。其中,单端口SRAM存储器采用单端口的存储器,大小为C个字(256KB~1GB),被组织成C/M个块(Block),每块M个字;并且根据计算单元的个数被分为N个存储体(Bank),与计算单元一一对应。存储器的数据位宽即为M个字,即一个Block块的大小。每次对单端口SRAM存储器的访问都以一个Block为单位,因此为数据/指令分配的空间是以Block为单位。存储器中的一个字具有三部分地址:块地址.字地址.体地址;块地址识别块,字地址识别该块中每个Bank中的字,体地址识别寄存器文件存储体中体。其主要服务对象是以单指令流多数据流(SIMD)方式工作的N个计算单元,每个计算单元只访问与其对应的存储体中的数据。描述符寄存器文件由多个相同结构的寄存器组成,用来描述流数据在单端口SRAM存储器中的起始块位置和长度信息,因此每个寄存器的内容由块起始地址和块长度位两部分构成,并由相关指令写入。流数据传输时需由指令指定某个描述符寄存器,以获知欲读写流数据的长度及其在存储器中的起始地址。数据缓冲器是计算单元和其他部件访问存储器的逻辑接口。每个数据缓冲器由一个数据传输控制器(DTCR)和两个结构一致的半缓冲器(半缓冲器0和半缓冲器1)构成,DTCR中包含一个数据控制寄存器(DCR)。每次启动流数据传输时,会对DCR进行初始化,即DCR会从指令中获取本次传输的数据块地址(Block)、长度(Length)、传输方向(Dir)、传输计数模式(Count_mode)等信息,再向存储器访问流水线发出访问请求,获取访问权限后由DTCR控制该数据传输过程。这种双缓冲结构的数据缓冲器同时支持双向不同带宽的流水访问,即能同时和存储器内部和计算单元等外部请求源进行数据传输,能很好隐藏访问延时。这样,通过多个数据缓冲器,以很小的硬件代价使物理单端口的单端口SRAM存储器支持了多逻辑端口的流数据访问。存储器访问流水线控制所有数据缓冲器对单端口SRAM存储器访问的仲裁和访存流水线。为获得较高的访存性能,存储器访问操作被设计成五级流水站:仲裁站(ARBTRATOR)、选择站(SEL)、RAM数据建立站(DATASETUP)、存储器访问站和数据缓冲器写回站(WB)。
本发明的片内存储器执行描述符寄存器的读写和流数据传输两类指令。描述符寄存器的写指令是为一个流数据在片内存储器中分配一个空间,流描述符寄存器的读指令是将一个流数据在片内存储器中的信息提供给消费者。流数据传输指令也分为两大类:读(load)指令和写(store)指令。读指令是指将一个流数据从片内存储器中读出来送给多个计算单元或其他客户请求端。写指令是将计算单元、其他客户端生成的一个流数据或外部存储器的数据流写到片内存储器中。下面以计算单元访问片内存储器为例,说明读、写指令的操作过程。
计算单元从片内存储器中读流的过程如下:
1.通过执行描述符寄存器的写指令来指定为计算单元提供的流数据在片内存储器中起始地址和长度。
2.初始化数据缓冲器。硬件根据流指令指定的描述符寄存器和数据流传输模式初始化数据控制寄存器(DCR)。
3.流数据的传输。刚开始启动传输时,数据缓冲器的半缓冲器0和半缓冲器1中的数据都是无效的,由半缓冲器0发出一个访问单端口SRAM存储器的读请求,若该请求被存储器访问流水线仲裁站赋予访问权限,则该访问请求进入SRAM访存流水线。当访问完成的时候,将单端口SRAM存储器返回的数据一次写入半缓冲器0中,并开始向计算单元传输数据。此时由于半缓冲器1中的数据是无效的,因此半缓冲器1发出一个访问单端口SRAM存储器的读请求。当半缓冲器0被计算单元读空且半缓冲器1的访问请求返回数据后,两个半缓冲器交换角色,即半缓冲器1向计算单元提供数据,而半缓冲器0产生一个访问单端口SRAM存储器的访问请求。两个半缓冲重复交换角色直到数据传输完成。
4.流数据传输完成。当DCR中的长度Length递减到0并且数据缓冲器的两个半缓冲器中的数据都被计算单元读完时,数据传输完成,并向计算单元发送数据传输完毕(EOS)信号。
计算单元产生一个流数据写入片内存储器的过程如下:
1.通过执行描述符寄存器的写指令来为计算单元生成的流数据在片内存储器中分配空间起始地址和长度。
2.初始化数据缓冲器。根据流指令指定的描述符寄存器和流指令指定的数据流传输模式初始化数据控制寄存器(DCR)。
3.流数据的传输。由于开始时数据缓冲器的两个半缓冲器中数据无效,因此半缓冲器0可以接受计算单元生成的流数据。当半缓冲器0写满的时候,半缓冲器0产生一个访问单端口SRAM存储器的写请求,获取访问权限后,进入访存流水线。同时由于半缓冲器1中的数据无效,此时可以开始接受计算单元生成的数据流。当半缓冲器0中的数据写入单端口SRAM存储器且半缓冲1被写满的时候,两个半缓冲交换角色,即半缓冲0接受计算单元生成的数据流,而半缓冲1产生一个访问单端口SRAM存储器的写请求。两个半缓冲重复交换角色直到数据接受完成。
4.流数据传输完成。当DCR的Length递减到0或者计算单元发出EOS信号,数据传输完成。
在具体的实施例中,参见图1所示,本实施例的片内存储器总体结构,由单端口SRAM存储器、K个数据缓冲器(DBs)、存储访问流水线、描述符寄存器文件(DRF)等模块构成。K个数据缓冲器分别与N个计算单元、一个指令控制器、片外存储器、网路控制器等客户端相连,作为这些客户端访问单端口SRAM存储器的逻辑端口。单端口读/写单端口SRAM存储器只有一组地址总线和分离的输入数据总线和输出数据总线。外部的客户不能直接访问该存储器,必须通过数据缓冲器在存储访问流水线的控制下获取总线使用权后才能访问。在本实施例中单端口SRAM存储器大小为256KB,分为4个体,一个Block块16个字(1个字64bit),支持4个计算单元。数据记录在Bank中交叉存储。即N=4,共有4个Bank,Bank0中存放流数据的第0、4、8……个记录,bank1中就存放流的第1、5、9……个记录,以此类推。描述符寄存器文件由多个同构寄存器组成,由软件负责初始化。
图2给出了本发明实施例的DRF中一个寄存器的域结构,由两个域Length和Block组成,Length表示数据块的字数,Block表示数据块在存储器中的起始块地址。
图3是本发明实施例中一个数据缓冲器的结构框图。数据缓冲器由两个大小相等的半缓冲器(半缓冲器0,半缓冲器1)和一个数据传输控制器(DTCR)组成。数据缓冲器具有两个输入输出端口,一个是SRAM的读写端口,另外一个是它服务的客户端的读写端口。当一个端口用作输入(或者输出)时,另外一个端口必须用作输出(或者输入)。两个端口的数据传输方向是由DTCR中的DCR寄存器中的Dir域决定的。Datain[M-1:0]、Dataout[M-1:0]、Request和Grant是数据缓冲器与SRAM的接口信号,数据位宽是一个块;Clientdatain[W-1:0]、Clientdataout[W-1:0]、DB_ready和Client_ready是数据缓冲器与客户端的接口信号(W大小是N个字),数据位宽是N个字。
每个半缓冲器的大小为M个字,与一个Block大小相同。每个数据缓冲器与每个运算单元的数据位宽是1个字,由于存在N个计算单元,因此数据缓冲器与计算单元之间的数据位宽是N个字。因此数据缓冲器调节了单端口SRAM存储器与计算单元之间数据位宽不匹配的现象。双半缓冲器的设计支持计算单元与数据缓冲器之间和数据缓冲器与单端口SRAM存储器之间同时进行数据交换。例如,在计算单元读数据过程中,当其中的一个半缓冲器向其传输数据,而另外一个半缓冲器为空时,那么数据缓冲器在向计算单元提供数据的同时还可产生一个访问单端口SRAM存储器的请求,以隐藏访问延迟,完成数据的预取。在我们的设计中数据缓冲器共32个字,每个半缓冲器16个字,被分为4个体。
数据传输控制器(DTCR)用来控制数据块传输的过程。主要包含了一个数据控制寄存器(DCR),图4详细的介绍了DCR的各个域。CurrentHBForSRF/CurrentHBForClient控制dataout/Clientdataout从两个半缓冲器中的哪一个中输出。EnableHB[0]/Enable[1]是半缓冲0/半缓冲1的写使能信号。SrfClient表示写缓冲器的数据端口,1表示SRAM向缓冲器写入数据,0表示客户端向缓冲器中写入数据。WordAddr表示半缓冲的字地址。
图4给出了数据控制寄存器DCR的域组成,其中:(1)Block占11位:下一次数据缓冲器与单端口SRAM存储器数据传输的地址。缓冲器每次与SRAM存储块完成一次数据交换,将其加1。(2)Length占16位:CountMode为零时表示数据缓冲器与单端口SRAM存储器数据块传输的剩余字长;CountMode为1时表示数据缓冲器已经向单端口SRAM存储器中写入的数据块字长。因此在CountMode为零时,该域初始化为数据块的字长,在CountMode为1时,该域被初始化为零。缓冲器每次与单端口SRAM存储器完成一次数据交换将其加M或者减M。(3)Max_length占16位:本次数据传输的最大字长,在传输过程中该域不会改变。在Count_mode为1时,当Length等于Max_length或者计算单元发出传输结束(EOS)信号时,表示单端口SRAM存储器与数据缓冲器之间的数据传输结束,在Count_mode为0时,当Length等于0时,表示单端口SRAM存储器与数据缓冲器之间数据传输结束。(4)CountMode占1位:决定Length,0表示定长数据块传输,计数时进行减操作,1表示不定长数据块传输,计数时进行加操作。(5)Dir占1位,本次流传输的方向,1表示向单端口SRAM存储器写入数据,0表示从单端口SRAM存储器中读出数据。(6)Restartable占1位,1表示本次数据传输是长数据块的一部分,等待本次传输结束后,系统会启动该数据缓冲器继续传输,本次传输结束后,并不向计算单元发送结束(EOS)信号,0表示本次数据传输是长数据块的最后一部分,本次数据传输结束后向计算单元发送EOS信号。通过该域实现了硬件对软件双缓冲技术的硬件支持。(7)Go占1位,表示单端口SRAM存储器与数据缓冲器之间的还有数据传输。(8)Write占5位,在Count_mode为1的情况下才有意义,等待数据传输结束后,将Length的值写入由Write给出的DRF的Length域。
图5给出了数据缓冲器访问单端口SRAM存储器的流水线结构,负责动态仲裁K个数据缓冲器(DBs)访问单端口SRAM存储器的请求,并且按流水线的方式访问单端口SRAM存储器。数据缓冲器访问单端口SRAM存储器的过程分为五级流水站:仲裁站(ARBTRATOR)、选择站(SEL)、RAM数据建立站(DATASETUP)、存储器访问站和数据缓冲器写回站(WB)。
(1)仲裁站:仲裁器根据仲裁算法,从多个数据缓冲器DB请求(requests)中选中一个数据缓冲器DB。
(2)选择站:根据仲裁站的仲裁结果GrantsReg[k-1:0]从K个数据缓冲器DBs中选出相应数据缓冲器DB的地址(Addr)、数据(Data)和方向(Dir)。其中GrantsReg[k-1:0]维持信号两拍有效。同时生成访问单端口SRAM存储器的使能信号WrSRFEn,当有一个数据缓冲器DB被选中时,WrSRFEn为1;生成one-hot编码的写数据缓冲器DB的使能信号Grants_wrdb,是Grantsreg[k-1:0]与Dir[k-1:0]位或的结果。
(3)RAM数据建立站:准备好读或写SRAM的数据(Data_Reg)、地址(Addr_Reg)、片选(WrSRFEN)及读写使能信号(Dir_Reg)。并将Grants_wrdb_reg寄存一拍。
(4)存储器访问站:因为存储器的访问时间大于系统时钟周期,所以存储器访问需要两个时钟周期。需要将WRDBNum寄存一拍。
(5)缓冲器写回站:如果是读单端口SRAM存储器德操作,生成写缓冲器的信号WriteDBNumReg和数据Dataout。
图6是本发明的仲裁算法,本发明中仲裁器采用的是总线多级分组LRU仲裁算法(下面以K=16来介绍仲裁算法的实现),首先将总线请求在顶层分为两组,每组由8个数据缓冲器DB组成,这两组请求对应一个LRU位,每次仲裁时先根据该LRU位选择其中的一组,选中后更新该位;再将这两组请求分别以二叉树的形式继续分组,每一分组又对应一个LRU位;直至分组对应到每一个数据缓冲器DB请求为止,因此K个数据缓冲器DB请求将对应K-1个LRU位。这种算法既可以保证每个缓冲器相对公平地获得总线使用权,又使其硬件实现代价小,运算速度快。设置15个一位寄存器R0~R14,记录16个数据缓冲器DBs请求被服务的状态,二叉树的结点为0时,表示树的左边对应的项最近被服务过,下次应选择另一组未被服务的。仲裁时首先判断R0~R14的值,同时考虑各数据缓冲器DB是否有请求。如果某个数据缓冲器DB的请求被服务,那么将从根节点到叶节点所经过的寄存器取反,其它寄存器状态保持不变。
图7是单端口SRAM存储器的时钟生成电路。由于本发明所采用的单端口SRAM存储器的访问时间大于1个系统时钟周期而小于两个系统时钟周期,因此访问单端口SRAM存储器采用两站的设计,单端口SRAM存储器的时钟可以由系统时钟生成模块提供,也可以由该模块自己生成。本发明采用了第二种方案,图7给出了单端口SRAM存储器的时钟生成电路,WrSRFen_Reg信号是访问流水线中生成的SRAM体的访问请求信号。采用该电路实现的门控时钟,可极大降低功耗。
Claims (3)
1、一种面向流应用的片内存储器,其特征在于:它包括单端口SRAM存储器、描述符寄存器文件、一个以上的数据缓冲器和存储器访问流水线,所述描述符寄存器文件由多个相同结构的寄存器组成,用来描述流数据在单端口SRAM存储器中的起始块位置和长度信息,所述数据缓冲器是计算单元或其他部件访问存储器的逻辑接口,存储器访问流水线控制所有数据缓冲器对单端口SRAM存储器访问的仲裁和访存流水线,计算单元以及外部客户端通过各个数据缓冲器,在存储器访问流水线的控制下访问单端口SRAM存储器;所述数据缓冲器包括一个数据传输控制器和两个结构一致的半缓冲器,数据传输控制器用来控制数据块传输的过程,数据缓冲器具有两个输入输出端口,一个是SRAM的读写端口,另外一个是其所服务客户端的读写端口;两个半缓冲器用来支持计算单元与数据缓冲器之间和数据缓冲器与单端口SRAM存储器之间同时进行数据交换,数据传输控制器中包含一个数据控制寄存器,数据控制寄存器用来从指令中获取本次传输的数据块地址、长度、传输方向、传输计数模式信息,再向存储器访问流水线发出访问请求,获取访问权限后由数据控制寄存器控制该数据传输过程。
2、根据权利要求1所述的面向流应用的片内存储器,其特征在于所述存储器访问流水线用来负责动态仲裁数据缓冲器访问单端口SRAM存储器的请求,并且按流水线的方式访问单端口SRAM存储器,数据缓冲器访问单端口SRAM存储器的过程分为五级流水站:
(1)仲裁站:仲裁器根据仲裁算法,从多个数据缓冲器DB请求中选中一个数据缓冲器DB;
(2)选择站:根据仲裁站的仲裁结果GrantsReg[k-1:0]从K个数据缓冲器中选出相应数据缓冲器DB的地址、数据和方向,其中GrantsReg[k-1:0]维持信号两拍有效,同时生成访问单端口SRAM存储器的使能信号WrSRFEn,当有一个数据缓冲器DB被选中时,WrSRFEn为1;生成one-hot编码的写数据缓冲器DB的使能信号Grants_wrdb,是Grantsreg[k-1:0]与读写方向信号Dir[k-1:0]位或的结果;
(3)RAM数据建立站:准备好读或写SRAM的数据、地址、片选及读写使能信号,并将写某个数据缓冲器DB的one-hot编码信号Grants_wrdb寄存一站得到Grants_wrdb_reg;
(4)存储器访问站:因为存储器的访问时间大于系统时钟周期,所以存储器访问需要两个时钟周期,需要将数据缓冲器DB写回站要用的数据缓冲器DB写使能信号WriteDBNumReg寄存一拍;
(5)缓冲器写回站:如果是读单端口SRAM存储器的操作,生成写缓冲器的信号WriteDBNumReg和数据Dataout。
3、根据权利要求2所述的面向流应用的片内存储器,其特征在于:所述描述符寄存器文件由两个域Length和Block组成,Length表示数据块的字数,Block表示数据块在存储器中的起始块地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100345755A CN100456271C (zh) | 2007-03-19 | 2007-03-19 | 面向流应用的片内存储器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100345755A CN100456271C (zh) | 2007-03-19 | 2007-03-19 | 面向流应用的片内存储器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101021818A CN101021818A (zh) | 2007-08-22 |
CN100456271C true CN100456271C (zh) | 2009-01-28 |
Family
ID=38709591
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007100345755A Expired - Fee Related CN100456271C (zh) | 2007-03-19 | 2007-03-19 | 面向流应用的片内存储器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100456271C (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5368687B2 (ja) * | 2007-09-26 | 2013-12-18 | キヤノン株式会社 | 演算処理装置および方法 |
CN101751242B (zh) * | 2009-12-22 | 2013-08-21 | 无锡中星微电子有限公司 | 一种数据处理方法及系统 |
CN102855213B (zh) * | 2012-07-06 | 2017-10-27 | 中兴通讯股份有限公司 | 一种网络处理器指令存储装置及该装置的指令存储方法 |
CN106330498B (zh) * | 2015-06-25 | 2019-08-27 | 华为技术有限公司 | 远程数据获取方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001067244A (ja) * | 1999-08-31 | 2001-03-16 | Hitachi Ltd | オンチップメモリモジュール |
CN1477532A (zh) * | 2002-08-20 | 2004-02-25 | 华为技术有限公司 | 控制芯片片内存储装置及其存储方法 |
WO2007004146A1 (en) * | 2005-07-01 | 2007-01-11 | Nxp B.V. | Integrated circuit and method of securing access to an on-chip memory. |
-
2007
- 2007-03-19 CN CNB2007100345755A patent/CN100456271C/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001067244A (ja) * | 1999-08-31 | 2001-03-16 | Hitachi Ltd | オンチップメモリモジュール |
CN1477532A (zh) * | 2002-08-20 | 2004-02-25 | 华为技术有限公司 | 控制芯片片内存储装置及其存储方法 |
WO2007004146A1 (en) * | 2005-07-01 | 2007-01-11 | Nxp B.V. | Integrated circuit and method of securing access to an on-chip memory. |
Also Published As
Publication number | Publication date |
---|---|
CN101021818A (zh) | 2007-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Stuecheli et al. | The virtual write queue: Coordinating DRAM and last-level cache policies | |
Loh | 3D-stacked memory architectures for multi-core processors | |
CN103314363B (zh) | 用于设计分级存储器系统的高速存储器系统和方法 | |
CN100524252C (zh) | 一种嵌入式系统芯片及数据读写处理方法 | |
KR100829287B1 (ko) | 소프트웨어에 의해 구현되는 캐시 메모리를 제공하는 방법및 장치 | |
KR20140098199A (ko) | 물리적 로우에 함께 저장된 태그 및 데이터를 구비한 dram 캐시 | |
CN101326500A (zh) | 提供同时软件/硬件高速缓存填充的方法与装置 | |
Zhang et al. | Cached DRAM for ILP processor memory access latency reduction | |
CN101493796A (zh) | 存储器内、页面内目录高速缓存一致性配置 | |
CN103744644A (zh) | 采用四核结构搭建的四核处理器系统及数据交换方法 | |
CN100456271C (zh) | 面向流应用的片内存储器 | |
Davis | Modern DRAM architectures | |
CN101515295B (zh) | 片上硬件数据库的高速缓冲器支持实现方法 | |
CN100557581C (zh) | 一种面向数据流的Cache管理方法 | |
Walden et al. | Monolithically integrating non-volatile main memory over the last-level cache | |
CN100557584C (zh) | 用于对网络和存储器进行耦合的存储器控制器和方法 | |
Hameed et al. | Architecting on-chip DRAM cache for simultaneous miss rate and latency reduction | |
CN101198941A (zh) | 存储器控制器 | |
Liu et al. | Accelerating Personalized Recommendation with Cross-level Near-Memory Processing | |
CN100547567C (zh) | 具有被优化以处理数据流应用的高速缓存的数据处理系统 | |
Olukotun et al. | Rationale, design and performance of the hydra multiprocessor | |
Li et al. | NDRec: A Near-Data Processing System for Training Large-Scale Recommendation Models | |
Wang et al. | A low overhead in-network data compressor for the memory hierarchy of chip multiprocessors | |
Therdsteerasukdi et al. | Utilizing radio-frequency interconnect for a many-DIMM DRAM system | |
CN114911724A (zh) | 一种基于多bank的cache预取技术的访存结构 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090128 Termination date: 20110319 |