存储器体系结构的制作方法

文档序号:6516032阅读:268来源:国知局
存储器体系结构的制作方法
【专利摘要】根据一个示例实施方案,公开了一种判优器,用于中转来自多个处理元件的存储器访问请求。如果两个或更多个处理元件试图访问单个存储器组块中相同的字内的数据,则判优器允许一些或全部处理元件访问该字。如果两个或更多个处理元件试图访问相同存储器组块中不同数据字,则对最低排序的处理元件授予访问权,并停滞其余处理元件。
【专利说明】存储器体系结构
[0001]相关申请的交叉引用
[0002]本专利申请要求2012年10月23日提交的、标题为“用于向量处理器的存储器体系结构(Memory Architecture for Vector Processors)”的美国临时专利申请61/717,553的优先权,其通过引用全部并入本文。
【技术领域】
[0003]本公开大体上涉及并行和向量处理器,以及更具体地来说,涉及用于向量处理的存储器体系结构。
【背景技术】
[0004]并行处理常常由处理器实施来优化处理应用,例如由数字信号处理器来优化数字信号处理应用。处理器可以作为单指令多数据(SMD)或数据并行处理器来工作以实现并行处理。在SMD操作中,将单个指令发送到处理器的多个处理元件,其中每个处理元件可以对不同的数据执行相同的操作。
[0005]在向量处理器中,许多不同的处理元件(PE)能够在单个周期期间读或写存储器位置。构建此类存储器的一个通用方式称为组块化(banking),其中以使任何PE能够访问任何RAM组块的方式将一组单端口 RAM组块连接到PE。每个RAM组块处理一组交织的地址,有时该组地址分割成数据字。例如,在具有32位(4字节)字长和四个RAM组块的处理器中,RAMO可以处理字节地址0-3,RAMl可以处理字节地址4-7,RAM2可以处理字节地址8-11,RAM3可以处理字节地址12 - 15,RAMO可以处理字节地址16 - 19,并依此类推。
【专利附图】

【附图说明】
[0006]从结合附图阅读时的下文详细描述中最佳地理解本公开。要强调的是,根据业界中的标准实践,各个特征部件未按比例绘制,且仅出于说明性目的而使用。实际上,为了论述简明,可任意地增加或减小各个特征部件的尺寸。
[0007]图1是根据本公开的各个方面的数字信号处理器系统的框图。
[0008]图2是根据本公开的各个方面的以更具体的存储器操作来公开的框图。
[0009]图3是根据本公开的各个方面的示例存储器访问操作的框图。
[0010]图4是根据本公开的各个方面的示例存储器访问操作的框图。
[0011]图5是根据本公开的各个方面的示例存储器访问操作的框图。
[0012]图6是根据本公开的各个方面的示例存储器访问操作的框图。
【具体实施方式】
[0013]在一个方面中,公开了一种电路,其包括多个处理元件;包括多个组块的存储器;通信上耦合到处理元件和存储器并实现处理元件和存储器之间多路复用通信的交叉矩阵(crossbar);以及控制交叉矩阵的判优器,并且判优器配置成:从多个处理元件接收多个访问请求;比较来自两个处理元件的存储器访问请求;以及在确定两个处理元件请求对共用组块中的共用数据字的访问时,允许这两个处理元件访问共用数据字。
[0014]在另一个方面中,公开了一种判优器电路,其包括输入端口,所述输入端口配置成接收存储器访问请求;输出端口,所述输出端口配置成控制存储器多路复用器;以及逻辑电路,所述逻辑电路配置成:接收多个存储器访问请求;以及根据规则服务于访问请求;其中所述规则包括:如果两个访问请求指向共用存储器组块中的共用数据字,则同时服务于两个访问请求。
[0015]在又一个方面中,公开了一种在计算机上执行的方法,其包括接收两个存储器访问请求;比较所述存储器访问请求;以及根据包括如下内容的规则服务于所述存储器访问请求中的至少一个:如果两个访问请求均来自处理元件并指向共用存储器组块中的共用数据字,则同时服务于两个访问请求。
[0016]示例实施方案的详细描述
[0017]向量处理器如数字信号处理器(DSP)可以采用SMD模式工作,其中多个处理元件(PE)的每一个处理元件对不同的数据执行相同的指令。包括主存储器、本地(LI)存储器或高速缓存的存储器可以分成多个组块,以及每个组块可能够在每个时钟周期执行一次成功的读和/或写。由此,如果多于一个的PE尝试在相同时钟周期上访问相同的组块,则发生“停滞”状态:一个或多个PE应该等待多个时钟周期之后其数据操作才成功。在一些示例实施方案中,将基于顺序指定来授予PE访问优先权。例如,给定四个PE,可以按升序或降序或根据某种其他模式来授予PE访问权。
[0018]当读或写一系列连续项时,组块化方案效果良好,因为每个PE就可以同一时间访问存储器。当每个PE具有到存储器中的其自己的地址偏移量时,组块化方案效果不太好。这称为集中读操作和分散(scatter)写。在该情况中,若干PE可能试图同时到达相同组块。在典型的向量存储器系统中,通过对每个PE赋予单独的周期来处理此类冲突。这可能导致集中或分散占用多个周期,从而减慢总的处理。
[0019]本公开的一个方面描述加速此情形的方式。这情况往往是PE访问相同组块时它们还访问该组块内的相同字。这可能是由于它们需要读完全相同的数据段(或许为查表的一部分),或由于它们需要读或写不相同但仍在一个组块字内的数据所致。在任一种情况中,执行满足若干PE的一次存储器访问是可能的,从而加速整体访问。
[0020]在η个PE以SMD模式工作且每个PE尝试在相同时钟周期上对相同组块写或从相同组块读时,出现最坏情况的场合。在该情况中,对于具有最低优先级的ΡΕ,将出现至少η个时钟周期的停滞,在此时间期间,PE处于闲置而非处理有用的数据。
[0021]可以通过精心设计的程序来改善停滞。例如,如果存在与PE至少一样多的存储器组块,则程序员可以通过确保在每个时钟周期上每个PE访问不同的存储器组块来消除停滞。遗憾的是,此解决方案不完善,因为存在存储器无法如此仔细地分隔或规划的许多情况。
[0022]为了进一步改善停滞,本公开的某些实施方案提供一种存储器体系结构,其将试图从相同存储器组块读取的PE分组,并且如果多个PE试图从相同数据字读数据,则无附加停滞地将该字返回到每个ΡΕ。或者,可以通过将该字的有用部分移位到特定位置(如最高有效位或最低有效位)且将字的其余部分填充O来返回该字。[0023]在本公开的一个示例中,如果相冲突的PE从RAM组块中的相同字请求数据,则在一个周期中服务所有请求。具体来说,强化冲突逻辑以检查匹配索引。相应地,不是将所有较低优先级的PE停滞,而是将最高优先级PE的RAM地址发送到所有其他PE。如果另一个PE具有相同RAM地址,则它可以在与最高优先级PE相同的周期中读或写。否则,应该插入停滞。
[0024]现在转到附图,图1是根据本公开的各个方面的示例数字信号处理器(DSP)IOO的示意框图。出于简明起见以及更好地理解本公开的创新概念,已将图1进行简化。可以在DSP100中添加额外的特征部件,以及在DSP100的其他实施方案中,可以替换或取消下文描述的一些特征部件。
[0025]DSP100可以包括控制单元110、存储器120和计算阵列180。在示例中,控制单元110、计算阵列180和互连网络140、142、144构成能够执行DSP100的计算和数据处理功能的核130。DSP100的一些实施方案包括其他组件,如用于执行微控制器指令的微控制器、直接存储器存取(DMA)单元和到芯片外装置的各种接口。再者,虽然存储器120在此处示出为单个逻辑块,但是本领域那些技术人员将认识到存储器120可以包括系统主存储器、各种级别的芯片上高速缓存和/或其他易失性或非易失性存储器技术。在示例实施方案中,可以提供单独可寻址的LI存储器220 (图2)或高速缓存。
[0026]控制单元110协助DSP100的程序执行。控制单元110可以包括算术逻辑单元和数据地址生成(ALU-DAG)单元112、程序定序器114和程序存储器116。控制单元110还可以包括其他组件,如指令高速缓存、定时器和指令寄存器。ALU-DAG单元112支持通用整数计算和提供存储器地址的地址。例如,在存储器120与寄存器(如下文描述的核130的寄存器堆)之间传输数据时,ALU-DAGl 12提供存储器地址。ALU-DAG单元112可以将地址提供到数据存储器(例如,存储器120)和/或程序存储器116。程序定序器114将指令地址提供到程序存储器116以用于指令提取。程序存储器116存储DSP100实施以处理数据(如存储在存储器120中的数据)的程序,并且还能够存储处理数据。程序包括具有一个或多个指令的指令集,并且DSP100通过提取指令、将指令解码并执行指令来实施程序。在一个示例中,程序可以包括用于实施各种DSP算法(包括依赖于预测计数器的算法)的指令集。
[0027]存储器120存储DSP100要处理的信息/数据(数据存储器)、DSP100实施以处理信息/数据的程序(程序存储器)或其组合。在所描绘的实施方案中,存储器120具有多个组块化交织的存储器结构,以使存储器120包括存储器组块Ml、M2、M3、…Mn,其中η是存储器120的存储器组块的总数。在一个示例中,存储器120是随机存取存储器,如静态随机存取存储器(SRAM)、动态RAM (DRAM)、闪存或其他适合的存储器技术。在一个示例中,一个或多个存储器组块M是单独的RAM。或者,在各种实施中,存储器120是另一种适合类型的存储器。
[0028]互连网络140、互连网络142和互连网络144将控制单元110、存储器120和计算阵列180互连,从而提供控制单元110、存储器120和计算阵列180之间的通信路径。互连网络140、互连网络142和互连网络144可以包括单根总线、多根总线、交叉矩阵网络、单级网络、多级网络、其他类型的互连网络或其组合。控制单元110通过互连网络142向计算阵列180发出指令和数据地址。互连网络142由此将指令和数据的地址通过互连网络142传输到计算阵列180的各个处理元件PE。互连网络144传输来自存储器(如存储器120、程序存储器116、其他存储器或其组合)的数据和/或指令,以使DSPlOO中的任何寄存器的内容能够传输到任何其他寄存器或任何存储器位置,以及存储器120能够将数据运算数(值)提供到计算阵列180。
[0029]在一些实施方案中,计算阵列180包括多个处理元件PE1、PE2、PE3、...、PEN,其中N是计算阵列180的处理元件的总数。在一个示例中,核110可以包括四个处理元件(PE1、PE2、PE3和PE4)。处理元件PE执行DSP算法的数值处理。处理元件PE可以独立地、并行地或作为SMD引擎来工作。在本示例中,每个处理元件PE可以是向量处理器。或者,处理元件PE可以是标量处理器和向量处理器的组合。
[0030]处理元件PE各包括相应的计算单元(⑶)152。在所描绘的实施方案中,计算单元152可以是完全相同的,然而本公开可设想计算单元152不完全相同的实施方案。本公开还可设想一个或多个处理元件PE不包含计算单元152的配置。在本示例中,计算单元152各包括算术逻辑单元(ALU)、乘法累加器(MAC)、移位器、其他计算单元或其组合。ALU可以执行算术和逻辑运算,如加法、减法、求反、递增、递减、绝对值、AND、OR、EXCLUSIVE 0R、N0T、除法原语(divide primitive)、其他算术运算、其他逻辑运算或其组合。示例MAC可以执行乘法运算以及相乘并累加运算,如单周期相乘、乘法/加法、乘法/减法、其他运算或其组合。移位器可以执行逻辑和算术移位、位操作、规格化、去规格化、指数求导(derive-exponent)运算、其他运算或其组合。可以在定点和浮点格式上执行各种算术运算、逻辑运算和其他运算。在各种实施方案中,ALU、MAC和/或移位器包括与其关联的寄存器。
[0031]处理元件PE还可以各包括相应的寄存器堆154。在所描绘的实施方案中,寄存器堆154可以是完全相同的,然而本公开可设想寄存器堆154不完全相同的实施方案。本公开还可设想一个或多个处理元件PE不包含寄存器堆154的配置。寄存器堆154包括在处理元件PE与数据互连网络(如互连网络144)之间传输数据并存储结果的寄存器。在本示例中,寄存器堆154可以包括相应的通用寄存器组155,通用寄存器组155包括宽度根据DSP100的设计要求而定的通用寄存器,如32位通用寄存器、40位通用寄存器、64位通用寄存器、128位通用寄存器、其他宽度通用寄存器或其组合。出于下文论述的目的,通用寄存器155包括32位通用寄存器。
[0032]DSP100可以执行各种并行运算。例如,在单个周期期间,处理元件PE可以访问指令(通过互连网络142),并从存储器访问N个数据运算数(通过互连网络144)以用于同步处理。在SMD模式中,DSP100可以并行地处理多个数据流。例如,当在SMD模式中时,DSP100在单个周期中可以通过互连网络142将单个指令派发到每个或多个处理元件PE ;通过互连网络144从存储器(存储器120、程序存储器116、其他存储器或其组合)加载N个数据集,对应于每个处理元件PE加载一个数据集(在一个示例中,每个数据集可以包含两个数据运算数);在处理元件PE中同步地执行单个指令;以及将来自同步执行的数据结果存储在存储器120 中。
[0033]图2是根据本公开的一个示例实施方案的以更具体的存储器操作来公开的框图。在此实施方案中,核130在通信上耦合到LI存储器220,在一些实施方案中,LI存储器220可以是主存储器120的一部分或与主存储器120相同,或可以是以核130的速度或接近核130的速度工作的芯片上高速存储器。为了此示例实施方案的目的,主存储器120将被处理作为相对较慢的系统存储器,而LI存储器220将被处理作为配置成作为高速缓存来工作的相对较快的LI存储器,其中LI存储器220中的位置映射到主存储器120中的位置。在此实施方案中,程序存储器116从主存储器120接收指令,并将指令提供到定序器114,定序器114将SMD指令提供到核130的每个处理元件PE。核130内的处理元件PE向LI存储器220发出存储器请求。在一些实施方案中,LI存储器220镜像主存储器120的区域,并维持主存储器地址的表,从而核130能够根据数据在主存储器120中的地址从LI存储器220请求数据。数据交换根据如下方案来编码,其中数据宽度依据位(例如,32b)来指定:
[0034]
【权利要求】
1.一种电路,其包括: 多个处理元件; 存储器,其包括多个组块; 交叉矩阵,其通信上耦合到所述处理元件和所述存储器;以及 判优器,其能够控制所述交叉矩阵的至少一些操作,其中所述电路配置成: 从所述多个处理元件接收多个访问请求; 比较来自两个处理元件的存储器访问请求; 确定所述两个处理元件正在请求对共用组块中的共用数据字的访问;以及 允许所述两个处理元件访问所述共用数据字。
2.如权利要求1所述的电路,其中所述判优器还配置成: 确定多于两个的处理元件正在请求访问所述共用数据字;以及 允许请求访问的所有处理元件访问所述共用数据字。
3.如权利要求1所述的电路,其中所述访问请求是读请求,以及其中允许所述两个处理元件访问所述共用数据字包括将所述共用数据字返回到所述两个处理元件。
4.如权利要求3所述的电路,其中所述判优器还配置成:` 为每个处理元件创建所述共用数据字的副本;以及 将每个副本中所述共用数据字的一部分移位到优选位置。
5.如权利要求1所述的电路,其中所述访问请求是写请求,以及其中允许所述两个处理元件访问所述共用数据字包括将所述写请求组合成单个数据字,并将所述共用数据字写入到所述共用存储器组块。
6.如权利要求1所述的电路,其中比较所述存储器访问请求包括: 提取标识存储器组块的一组位; 执行为所述两个处理元件提取的位之间的优先级编码;以及 对每个处理元件赋予结果索引。
7.如权利要求6所述的电路,其中所述判优器配置成: 检测两个处理元件正在请求对共用存储器组块中的非共用数据字的访问; 允许一个处理元件访问所述共用存储器组块;以及停滞所述另一个处理元件。
8.如权利要求7所述的电路,其中允许具有较低索引的处理元件访问所述共用存储器组块。
9.如权利要求1所述的电路,其中所述判优器还配置成: 接收外部访问请求;以及 停滞来自处理元件的后续访问请求,直到所述外部访问请求已被服务为止。
10.一种判优器电路,其包括: 输入端口,其配置成接收存储器访问请求; 输出端口,其配置成控制存储器多路复用器;以及 逻辑电路,所述逻辑电路配置成: 接收多个存储器访问请求;以及 根据规则服务访问请求; 其中所述规则包括:如果两个访问请求指向共用存储器组块中的共用数据字,则同时服务这两个访问请求。
11.如权利要求10所述的判优器电路,其中所述规则还包括: 如果一个访问请求是对存储器组块的写请求以及一个访问请求是从所述存储器组块的读请求,则同时服务这两个请求。
12.如权利要求10所述的判优器电路,其中所述规则还包括: 如果一个访问请求来自外部装置以及一个访问请求来自本地装置,则对来自所述外部装置的所述请求赋予优先权。
13.如权利要求10所述的判优器电路,其中所述规则还包括: 当从多个本地装置接收到多个访问请求时,为每个装置标识或赋予索引,以及如果多于一个的装置正在请求对共用存储器组块的共用数据字的访问,则服务来自具有较低索引的装置的请求。
14.如权利要求10所述的判优器,其中同时服务两个请求的规则包括: 如果所述访问请求是读请求,则响应每个访问请求返回所述共用数据字。
15.一种计算机上执行的方法,其包括: 接收两个存储器访问请求; 比较所述存储器访问请求;以及 根据规则服务所述存储器访问请求中的至少一个,所述规则包括: 如果两个访问请求都来自处理元件且指向共用存储器组块中的共用数据字,则同时服务这两个访问请求。
16.如权利要求15所述的方法,其中所述规则还包括如果两个访问请求均指向共用存储器组块中的非共用数据字,则选择一个访问请求予以立即服务,以及选择另一个访问请求予以停滞。
17.如权利要求15所述的方法,其中所述规则还包括:如果从请求访问所述共用数据字的多于两个的处理元件接收到访问请求,则同时服务访问请求。
18.如权利要求15所述的方法,其中所述访问请求是读请求,以及其中服务两个访问请求包括将所述共用数据字返回到所述两个处理元件。
19.如权利要求15所述的方法,其中所述访问请求是写请求,以及其中服务两个访问请求包括将所述写请求组合成单个数据字,并将所述共用数据字写入到所述共用存储器组块。
20.如权利要求15所述的方法,其中比较所述存储器访问请求包括: 从每个访问请求提取标识存储器组块的一组位;以及 执行所提取的位之间的优先级编码并对每个请求赋予结果索引。
【文档编号】G06F3/06GK103778085SQ201310496505
【公开日】2014年5月7日 申请日期:2013年10月22日 优先权日:2012年10月23日
【发明者】J·L·瑞德福特, B·勒纳 申请人:美国亚德诺半导体公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1