向量处理器的存储器互连网络体系结构的制作方法

文档序号:6516324阅读:259来源:国知局
向量处理器的存储器互连网络体系结构的制作方法
【专利摘要】本公开提供了一种用于执行并行操作的处理器(诸如向量处理器)的存储器互连体系结构。示例性处理器可以包括计算阵列,其包括处理元件;存储器,其包括存储体;和存储器互连网络体系结构,其将计算阵列互连到存储器。在实例中,所述存储器互连网络体系结构包括基于交换机的互连网络和非基于交换机的互连网络。所述处理器被配置来经由基于交换机的互连网络将第一数据操作数同步加载到处理元件中的每个,且经由非基于交换机的互连网络将第二数据操作数同步加载到处理元件中的每个。
【专利说明】向量处理器的存储器互连网络体系结构
[0001]相关申请案
[0002]本申请是2012年10月23日提交的美国临时专利申请第61/717,561号的非临时申请,本申请是以引用的方式全部并入本文中。
【技术领域】
[0003]本公开一般涉及执行并行处理的处理器(诸如向量处理器)且更特别地说涉及一种用于执行并行处理的处理器的存储器互连网络体系结构。
【背景技术】
[0004]例如由数字信号处理器实施以优化数字信号处理应用的并行处理趋向于集中在存储器访问操作。例如,数字信号处理器可用作单指令多数据(SMD)或数据并行处理器。在SMD操作中,将一个指令发送到数字信号处理器的多个处理元件,其中每个处理器元件可对不同数据执行相同操作。为了实现高数据吞吐量,具有SMD体系结构的DSP (或支持并行处理的其它处理器)的存储器组织支持多次同步数据访问。在实例中,处理器体系结构可以包括由存储器互连网络体系结构互连到处理元件的多体存储器,使得可在给定循环期间对处理元件加载一个以上数据操作数(可由处理元件访问一个以上数据操作数)。
[0005]存储器互连网络体系结构通常包括用于每次各自并行数据传送的互连网络。例如,如果执行操作需要从存储器到处理器元件进行两次并行数据传送,那么存储器互连网络体系结构实施互连网络以将第一数据集从存储器传送到处理元件并实施另一互连网络以将第二数据集从存储器传送到处理元件。虽然用于并行处理的现有存储器互连网络体系结构一般适用于其所希望的目的,但是并非其所有方面均完全令人满意。
【专利附图】

【附图说明】
[0006]在阅读附图后根据下列详述充分理解本公开。本公开强调,根据工业中的标准惯例,并未按比例绘制不同特征且仅仅为了说明目的而使用不同特征。事实上,为了明确论述,可以强制增加或减小不同特征的尺寸。
[0007]图1是根据本公开的不同方面的示例性数字信号处理器的示意方框图。
[0008]图2是根据本公开的不同方面的示例性数字信号处理器的示意方框图。
[0009]图3是示出了互连根据本公开的不同方面的数字信号处理器的不同特征(诸如图1和图2的数字信号处理器的计算阵列和存储器)的示例性交叉开关(crossbar)的示意方框图。
[0010]图4是示出了互连根据本公开的不同方面的数字信号处理器的不同特征(诸如图2的数字信号处理器存储器的和计算阵列)的示例性广播总线的示意方框图。
[0011]图5是可由根据本公开的不同方面的数字信号处理器(诸如图2的数字信号处理器)实施的示例性方法的流程图。
[0012]图6是由根据本公开的不同方面的数字信号处理器(诸如图2的数字信号处理器)实施的示例性矩阵乘法器算法的示意图。
【具体实施方式】
[0013]本公开提供了在任何适当计算环境中实施的不同处理器实施方案。一个示例性实施方案提供了一种用于可执行并行操作的处理器(诸如向量处理器)的存储器互连体系结构。在某些实施方案中,处理器可以包括计算阵列,其包括处理元件;存储器,其包括存储体;和存储器互连网络体系结构,其将计算阵列互连到存储器。处理元件中的至少某些可以包括计算单元和寄存器堆。在实例中,每个处理元件均包括计算单元和寄存器堆。存储器互连网络体系结构可以包括:基于交换机的互连网络和非基于交换机的互连网络,且处理器被配置来经由基于交换机的互连网络将第一数据操作数同步加载到处理元件中的至少某些,且经由非基于交换机的互连网络将第二数据操作数同步加载到处理元件中的至少某些。
[0014]在示例性构造中,基于交换机的互连网络是交叉开关且非基于交换机的互连网络是总线。在不同实施方式中,第一数据操作数是用于每个处理元件的不同数据操作数且第二数据操作数是用于每个处理元件的相同数据操作数。在不同实施方式中,计算阵列具有N个处理元件;存储器具有η个存储体;且交叉开关网络(crossbar network)具有NXn个交换机。在不同实施方式中,n=NX由处理器执行的同步数据操作数加载的数量。在示例性构造中,处理器被配置来经由基于交换机的互连网络将第一数据操作数同步加载到处理元件中的每个,且经由非基于交换机的互连网络将第二数据操作数同步加载到处理元件中的每个。
[0015]在某些实施方案中,处理器可以包括计算阵列,其具有N个处理元件;存储器,其具有η个存储体;交叉开关,其互连计算阵列与存储器;和总线,其互连计算阵列与存储器。N个处理元件中的每个可以包括计算单元和寄存器堆。交叉开关被配置来将数据从η个存储体传送到N个处理元件,且总线被配置来将数据从η个存储体传送到N个处理元件。交叉开关和总线被配置来将数据从η个存储体同步传送到N个处理元件。在不同实施方式中,交叉开关具有NXn个交换机且总线没有交换机。在不同实施方式中,交叉开关被配置来将不同数据操作数传送到N个处理元件中的每个,且总线被配置来将相同数据操作数从存储器传送到N个处理元件。在不同实施方式中,η=ΝΧ由处理器执行的同步数据传送的数量。
[0016]在某些实施方案中,一种用于操作本文中描述的处理器的方法包括:将指令集发布到处理元件;基于所述指令集,经由基于交换机的互联网络将第一数据操作数同步传送到处理元件,且经由非基于交换机的互联网络将第二数据操作数同步传送到处理元件;和通过处理元件使用第一数据操作数和第二数据操作数执行操作。在不同实施方式中,传送第一数据操作数可以包括执行广播加载,其中相同数据操作数是从存储器传送到每个处理元件;且传送第二数据操作数可以包括执行单指令多数据(SMD)加载,其中不同数据操作数是从存储器传送到每个处理元件。在不同实施方式中,操作是有限响应滤波器操作和矩阵乘法操作之一。在不同实施方式中,操作可以是可与同步SIMD和广播加载兼容的其它算法。
[0017]示例性实施方案详述
[0018]下列公开提供用于实施本公开的不同特征的许多不同实施方案或实例。下文描述组件和配置的特定实例以简化本公开。当然,这些仅仅是实例且并非意欲限制。此外,本公开可以在不同实例中重复参考数字和/或字母。这种重复是为了简化和明确的目的且本身并不指示所论述的不同实施方案和/或构造之间的关系。
[0019]图1是根据本发明的不同方面的示例性数字信号处理器100的示意方框图。为了明确起见,简化图1以充分理解本公开的发明概念。可在数字信号处理器100中添加额外特征,且在数字信号处理器100的其它实施方案中可取代或消除下文描述的特征中的某些。
[0020]数字信号处理器100可以包括计算阵列110、控制单元120和存储器130。在实例中,计算阵列110和控制单元120构成可执行数字信号处理器100的比较和数据处理功能的核心处理器。数字信号处理器100可包括其它组件,诸如用于执行微控制器指令的微控制器、直接存储器访问(DMA)单元和到芯片外装置的不同接口。 [0021]计算阵列110可以包括处理元件PE1、PE2、PE3、……、PEN,其中N是计算阵列110的处理元件的总数。在实例中,计算阵列Iio可以包括四个处理元件(换句话说,PE1、PE2、PE3和PE4,其中N=4)。处理元件PE1、PE2、PE3、……、PEN对数字信号处理算法执行数值处理。处理元件PE1、PE2、PE3、……、PEN进行独立、并行操作,或用作单指令多数据(SMD)引擎。在本实例中,每个处理元件PE1、PE2、PE3、……、PEN均是向量处理器。或者,处理元件PE1、PE2、PE3、……、PEN是标量处理器和向量处理器的组合。
[0022]每个处理元件PE1、PE2、PE3、......、PEN包括各自计算单元(CU) 112!、1122、
1123、……、1121<和各自寄存器堆111、1142、1143、……、114N。在已描绘的实施方案中,计
算单元112^112^112^......、1121<相同且寄存器堆111、1142、1143、......、114N相同,但是
本公开设想其中计算单元和寄存器堆均不相同的实施方案。本公开还设想其中处理元件PE1、PE2、PE3、……、PEN中的一个或多个不包括计算单元和/或寄存器堆的构造。在本实
例中,计算单元112ρ1122、1123、......、112Ν包括算术逻辑单元(ALU)、乘法累加器(MAC)、移
位器、其它计算单元或其组合。ALU可执行算术和逻辑操作,诸如加法、减法、求反、递增、递减、绝对值、与、或、异或、非、除法原语、其它算术操作、其它逻辑操作或其组合。MAC可执行乘法操作以及乘法和累加操作,诸如单循环乘法、乘法/加法、乘法/减法、其它操作或其组合。移位器可执行逻辑和算术移位、位操作、正规化、反正规化、指数求导操作、其它操作或其组合。可对固定点和浮点格式均执行不同算术操作、逻辑操作和其它操作。寄存器堆传送处理元件PE1、PE2、PE3、……、PEN与数据互连网络(诸如下文详细描述的互连网络150和互连网络160)之间的数据并存储结果。在实例中,每个寄存器堆包括主要组的寄存器(例如,一组的16个寄存器)和次级组的寄存器(例如,另一组的16个寄存器)。在不同实施方案中,ALU、MAC和移位器还每个包括寄存器。
[0023]控制单元120利于数字信号处理器100的程序执行。控制单元120可以包括算术逻辑单元和数据地址生成(ALU-DAG)单元122、程序定序器124和程序存储器126。控制单元120可包括其它组件,诸如指令高速缓存、计时器和指令寄存器。ALU-DAG单元122支持通用整数计算并对存储器地址供应地址。例如,当在存储器(诸如存储器130)与寄存器(诸如寄存器堆lHplHyllt、……、114N)之间传送数据时,ALU-DAG122提供存储器地址。ALU-DAG单元122可将地址供应给数据存储器(例如,存储器130)和/或程序存储器126。程序定序器124将指令地址提供到程序存储器126以进行指令取出。程序存储器126将数字信号处理器100实施的程序存储到处理数据(诸如存储在存储器130中的处理数据)且还可存储处理数据。程序包括具有一个或多个指令的指令集,且数字信号处理器100通过取出指令、解码指令和执行指令来实施程序。在实例中,程序可以包括用于实施不同数字信号处理算法的指令集。
[0024]存储器130存储由数字信号处理器100处理的信息/数据(数据存储器)、由数字信号处理器100实施以处理信息/数据的程序(程序存储器)或其组合。在已描绘的实施方案中,存储器130具有多体交错存储器结构,使得存储器130包括存储体M1、M2、M3、……、Mn,其中η是存储器130的存储体的总数。多体交错存储器结构支持低延迟、高带宽并行等级I (LI)存储器访问(注意LI存储器通常全速操作数字信号处理器100使得几乎不延迟或没有延迟)。在实例中,存储器130是随机访问存储器,诸如静态随机访问存储器(SRAM)。在实例中,存储体Ml、M2、M3、……、Mn中的一个或多个是独立SRAM。
[0025]互连网络140、互连网络150和互连网络160互连计算阵列110、控制单元120和存储器130,从而在计算阵列110、控制单元120与存储器130之间提供通信路径。互连网络140、互连网络150和互连网络160包括单总线、多总线、交叉开关网络、单级网络、多级网络、其它类型的互连网络或其组合。控制单元120经由互连网络140将指令和数据地址发布到计算阵列110。互连网络140因此经由互连网络140将指令和数据的地址传送到不同处理元件PE1、PE2、PE3、……、PEN。互连网络150和160传送来自存储器(诸如存储器130、程序存储器126、其它存储器或其组合)的数据和/或指令,使得可将数字信号处理器100中的任何寄存器的内容传送到任何其它寄存器或任何存储器位置,且存储器130可将数据操作数(值)提供到计算阵列HO。
[0026]编程要求通常必须使处理元件PEl、PE2、PE3、……、PEN中的任何一个均访问存储体Ml、M2、M3、……、Mn中的任何一个。存储体与处理元件之间的互连网络支持这种灵活的访问。例如,在图1的数字信号处理器100中,互连网络150和160互连计算阵列110与存储器130,使得处理元件PE1、PE2、PE3、……、PEN中的任何一个均可与存储体Ml、M2、
M3、......、Mn中的任何一个进行通信(或访问存储体Ml、M2、M3、......、Mn中的任何一个)。
存储体的数量和互连网络的数量随着并行加载指令的数量增加而增加。例如,数字信号处理器可使用一种互连网络(诸如互连网络150)和数量等于处理元件的数量的多个存储体(在本实例中,存在四个PE,n=N=4)发布并执行下列加载指令:
[0027]Id RO= [A0+= I],
[0028]这引导数字信号处理器使用位于保存在地址寄存器AO中的存储器地址处的数据操作数来加载寄存器R0。随后,AO中的地址递增I。为了促进实例,为了发布并执行下列加载指令(其中并行发布两个加载指令),数字信号处理器需要两种互连网络(每次数据加载使用一种互连网络,诸如互连网络150和互连网络160)和数量等于处理元件的数量的两倍的多个存储体(在实例中,存在四个PE,n=2 X N=2 X 4=8个存储体(Ml至M8)):
[0029]Id RO= [A0+= I] || Id R1=[A1+=1],
[0030]这引导数字信号处理器使用位于保存在地址寄存器AO中的存储器地址处的数据操作数来加载数据寄存器RO并使用位于保存在地址寄存器Al中的存储器地址处的数据操作数来加载数据寄存器R1。随后,AO和Al中的地址均递增I。为了更加促进实例,为使数字信号处理器的每个PE1、PE2、PE3、……、PEN执行一次32位MAC/循环(每个循环进行的乘法和累加),需要两次并行存储器加载以实现大约100%的使用数字信号处理器的计算资源。例如,考虑乘法和累加操作的简单有限脉冲响应(FIR)滤波器内核,其中可如下以C/C++编程语言写入具有样品向量X和向量taps的最上层循环:
[0031]for(int i=0;i<numTaps;i++)
[0032]sum+=x[i+j]*taps[i];
[0033]对于这种FIR滤波器内核,为了使乘法和累加操作维持一次MAC/循环,FIR内核循环需要两次并行加载,为向量X加载值且为向量taps加载值。数字信号处理器因此需要两种互连网络(一种互连网络为向量X加载值且一种互连网络为向量taps加载值)和数量等于处理元件的数量的两倍的多个存储体(在实例中,存在四个PE,n=2XN=2X4=8个存储体(Ml至M8))。
[0034]为了改善计算资源效率,诸如如上所述,互连网络150和互连网络160使数字信号处理器100支持并行发布和执行多个加载指令。在已描绘的实施方案中,为了利于并行加载,数字信号处理器100要求互连网络150和互连网络160是基于交换机的互连网络,诸如交叉开关网络、单级网络、多级网络或其它基于交换机的网络。在已描绘的实例中,互连网络150和互连网络160是全交叉开关,意指交叉开关具有数量等于处理元件的数量乘以存储体的数量的多个交换机(换句话说,交换机的数量=NXn)。如上文论述,假设计算阵列110具有四个处理元件(PEl至PE4,其中N=4)且存储器130具有八个存储体(Ml至M8,其中n=2*N=2*4=8),图3是示出了实施为根据本公开的不同方面的互连网络150和160的示例性交叉开关350的示意方框图。交叉开关350包括NXn个交换机365 (这里,其中N=4且n=8,交换机的数量是32)。为了明确起见,简化图3以充分理解本公开的发明概念。可在交叉开关350中添加额外特征,且在交叉开关350的其它实施方案中可取代或消除特征中的某些。
[0035]在一次循环期间,使用存储器互连网络体系结构(互连网络140、150和160),处理元件PE1、PE2、PE3、……、PEN中的至少某些(经由互连网络140)访问指令并(经由互连网络150和160)访问来自存储器的两个数据操作数。在单指令多数据(SMD)模式中,处理元件PE1、PE2、PE3、……、PEN执行相`同指令,但却操作不同数据。例如,在图1的数字信号处理器100的操作中,在一次循环期间,基于交换机的互连网络150和160 (诸如全交叉开关)利于两次同步并行单指令多数据(SMD)加载,其中每个处理元件PEl、PE2、PE3、……、PEN被引导来从存储器130加载不同数据操作数。
[0036]数字信号处理器100可因此使用其存储器互连网络体系结构执行不同并行操作。例如,在一次循环期间,数字信号处理器100可经由互连网络140将一个指令调度到处理元件PE1、PE2、PE3、……、PEN ;经由互连网络150和互连网络160从存储器(存储器130、程序存储器126、其它存储器或其组合)加载N个数据集,处理元件PE1、PE2、PE3、……、PEN中的任何一个均具有一个数据集(在实例中,每个数据集可以包括两个数据操作数);在处理元件PE1、PE2、PE3、……、PEN中同步执行所述一个指令;且将来自所述同步执行的数据结果存储在存储器(存储器130、程序存储器126、其它存储器或其组合)中。图1的存储器互连网络体系结构对单跨式访问、非单跨式访问和/或变址阵列访问的SMD加载提供支持,从而允许在存储器130中加载连续和/或非连续数据元件。
[0037]因为互连网络的大小随着处理元件的数量增加而增长(在其中处理元件的数量等于存储体的数量的情况下,互连网络增长为处理元件的数量的平方),所以互连网络面积和功率预算随着处理元件的数量增加而变得极为重要。因此,在图1的数字信号处理器100的已描绘实施方案中,包括基于交换机的互连网络150和160 (具体地说,两个全交叉开关)的存储器互连网络体系结构非常昂贵。如上所述,对于N个处理元件和η个存储体,每个全交叉开关使用N X η个交换机(且其中Ν=η,ΝΛ2个交换机)。因为全交叉开关是以导线为主,所以具有更多交换机的全交叉开关造成较长导线和较大面积,这造成较高通信成本、较高功耗和较低时钟速率(换句话说,效能降低)。因此,希望存在避免需要两个基于交换机的互连网络(诸如两个全交叉开关)并维持数字信号处理器的效能的方式。
[0038]本公开认识到,通常由数字信号处理器实施的数字信号处理算法(诸如有限脉冲响应(FIR)算法、矩阵乘法算法等)引导处理元件PEl、ΡΕ2、ΡΕ3、……、PEN从相同存储器位置加载数据操作数。换句话说,每个处理元件均从来自相同存储体的相同地址接收相同数据值(例如,从存储体Ml的相同地址接收数据值)。称作广播加载的这些存储器加载未使用将计算阵列110连接到存储器130的互连网络的全容量。例如,广播加载操作仅仅使用全交叉开关的1/Ν。
[0039]本公开因此提出了通过用非基于交换机的互连网络(诸如基于总线的互连网络)取代基于交换机的互连网络之一来修改数字信号处理器100的存储器互连网络体系结构。特别地说,如下文所述,用单广播总线取代全交叉开关之一。在不同实施方式中,用非基于交换机的互连网络(诸如基于总线的互连网络)取代每个基于交换机的互连网络,在非基于交换机的互连网络中,可经由如下文所述的广播加载实现与这种互连网络相关的存储器加载。
[0040]图2是根据本公开的不同方面的数字信号处理器200的示意方框图。为了明确起见,简化图2以充分理解本公开的发明概念。图2的实施方案在许多方面均类似于图1的实施方案。因此,为了明确且简单起见,由相同参考数字认定图1和图2中的类似特征。可在数字信号处理器200中添加额外特征,且在数字信号处理器200的其它实施方案中可取代或消除下文描述的特征中的某些。
[0041]类似于图1的数字信号处理器10`0,基于交换机的互连网络150互连处理元件
PE1、PE2、PE3、......、ΡΕΝ 与存储体 M1、M2、M3、......、Μη,使得处理元件 ΡΕ1、ΡΕ2、ΡΕ3、......、
PEN中的任何一个均可与存储体Ml、M2、M3、……、Mn中的任何一个进行通信(或访问存储体M1、M2、M3、……、Mn中的任何一个)。与图1的数字信号处理器100相比,图2的数字信号处理器200用非基于交换机的互连网络260 (诸如基于总线的互连网络)取代基于交换机的互连网络160。非基于交换机的互连网络260也互连处理元件PE1、PE2、PE3、……、PEN
与存储体Ml、M2、M3、......、Mn,使得处理元件PEl、PE2、PE3、......、PEN中的任何一个均可
与存储体Ml、M2、M3、......、Mn中的任何一个进行通信(或访问存储体Ml、M2、M3、......、Mn
中的任何一个)。应注意,基于交换机的互连网络150和非基于交换机的互连网络260可经设计使得其均可访问存储体M1、M2、M3、……、Mn中的任何一个,使得在数字信号处理器200的操作期间并未限制可将向量映射到何处。
[0042]在实例中,非基于交换机的互连网络260是单广播总线。图4是示出了可实施为根据本公开的不同方面的非基于交换机的互连网络260的示例性广播总线460的示意方框图。广播总线460没有交换机。在实例中,广播总线460是一根32位、一根64位广播总线或一根128位广播总线,其将数据从存储器130的存储体M1、M2、M3、……、Mn馈送到计算阵列130的处理元件PEl、PE2、PE3、……、PEN。或者,广播总线460取决于数字信号处理器200的数据大小传送要求而具有另一大小。为了明确起见,简化图4以充分理解本公开的发明概念。可在广播总线460中添加额外特征,且在广播总线460的其它实施方案中可取代或消除特征中的某些。
[0043]非基于交换机的互连网络260利于广播加载,其中处理元件PE1、PE2、PE3、……、PEN中的至少某些从存储器130接收相同数据操作数。在实例中,非基于交换机的互连网络260利于广播加载,其中每个处理元件PE1、PE2、PE3、……、PEN均从存储器130接收相同数据操作数。因此,在图2的数字信号处理器200的操作中,在一次循环期间,互连网络150利于SIMD加载,其中处理元件PE1、PE2、PE3、……、PEN中的至少某些被引导来从存储器130加载不同数据操作数;且互连网络260利于广播存储器加载,其中处理元件PE1、PE2、PE3、……、PEN中的至少某些被引导来从存储器130加载相同数据操作数(换句话说,处理元件从相同存储体中的相同地址加载相同数据值)。在实例中,在一次循环期间,互连网络150利于SIMD加载,其中每个处理元件PEl、PE2、PE3、……、PEN被引导来从存储器130加载不同数据操作数;且互连网络260利于广播存储器加载,其中每个处理元件PE1、PE2、PE3、……、PEN被引导来从存储器130加载相同数据操作数(换句话说,每个处理元件从相同存储体中的相同地址加载相同数据值)。
[0044]通过 实施图2的存储器互连体系结构(尤其是全交叉开关和广播总线),大幅减小处理器的面积和功率要求并维持数字信号处理应用的关键算法的效能。例如,已修改的存储器互连网络体系结构在计算资源使用方面维持近似100%效率,并满足大部分数字信号处理算法的带宽要求。应注意,使用数字信号处理器200的存储器互连网络体系结构(其中基于交换机的互连网络150利于SIMD加载且非基于交换机的互连网络160利于广播加载),必需两次SMD加载的数字信号处理算法(诸如点积算法)将使用两次循环以对点积操作加载数据操作数。特别地说,在第一次循环期间,将经由互连网络150将第一数据操作数从存储器130传送到处理元件PEl、PE2、PE3、……、PEN中的至少某些(在实例中,每个处理元件PE1、PE2、PE3、……、PEN),且然后在第二次循环期间,将经由互连网络150将第二数据操作数从存储器130传送到处理元件PEl、PE2、PE3、……、PEN中的至少某些(在实例中,每个处理元件PE1、PE2、PE3、……、PEN)。虽然这样的算法由于必需两次循环而可能减缓处理时间,但是由数字信号处理器200的存储器互连网络体系结构造成的面积、功率和成本节省平衡了这些影响。不同实施方案可以具有不同优点,且任何实施方案均无需任何特别的优点。
[0045]数字信号处理器200可单独使用其硬件(系统体系结构)来检测广播操作,使得数字信号处理器的硬件检测何时使用广播总线260从存储器130进行广播加载。在其中数字信号处理器200的硬件检测到广播操作的实施方式中,由数字信号处理器200的编译器生成的内循环代码可呈现如下:
[0046]loop_start:V2+=V0*V1||Vl=[Al+=8]||VO=[A2+=A3];
[0047]if nlcOe, jump loop_start V6+=v7*v8 v7=[A4+ — 4]| v8=[A5+=A3];
[0048]这个序列不包括广播指令。在某些实施方式中,可用广播指令(其可以依赖于体系结构)编程数字信号处理器200,使得数字信号处理器200知道何时使用广播总线260从存储器130进行广播加载。例如,下文使用C/C++编程语言提供矩阵乘法器算法的示例性代码,其中具有矩阵大小rl X cl的矩阵A (matA)乘以具有矩阵大小clXc2的矩阵B (matB)以确定具有矩阵大小rl X c2的积矩阵(matC)。
[0049]

void sp_mat_mul(const float *matA,

int 11,

int c I


float *matB,


int c2,
[0050]

float *matC) {
for (int i = 0; i < rl; ++i) {

for(int j = PE; j<c2; j+=NPE){

float mr = 0;

for (int k = 0; k < cl; ++k) {

float a = matA[.1 * cl + k];

float b = matB[j + k * c2]);

mr = += a * b;


}

matC[i z Cl + j]) = mr;

}

}
}[0051]在矩阵乘法器算法中,示例性代码规定每个处理元件(PE)的j索引不同(for(intj=PE; j〈c2; j+=NPE))且每个处理元件的k索引相同(for (int k=0; k〈cl;++k))。在不同实施方式中,广播指令可简化数字信号处理器200的体系结构。
[0052]图5是可由根据本公开的不同方面的处理器执行的方法500的流程图。例如,方法500可由具有包括基于交换机互连网络(例如,交叉开关)和非基于交换机互连网络(例如,总线)的存储器互连体系结构的数字信号处理器200来执行。方法500开始于方框510,其中处理器将指令集发布到处理器的处理元件。例如,如上所述,数字信号处理器200将指令集(诸如并行存储器加载指令)发布到处理元件PE1、PE2、PE3、……、PEN。在方框520,经由基于交换机的互连网络将第一数据操作数传送到处理元件中的至少某些且经由非基于交换机的互连网络将第二数据操作数传送到处理元件中的至少某些。在实例中,经由SMD加载传送第一数据操作数,其中每个处理元件接收(或访问)不同数据操作数,且经由广播加载传送第二数据操作数,其中每个处理元件接收(或访问)相同数据操作数。例如,如上所述,经由互连网络150将第一数据操作数从存储器130传送到每个处理元件PE1、PE2、PE3、……、PEN,且经由广播总线260将第二数据操作数从存储器130传送到每个处理元件PE1、PE2、PE3、……、PEN。在方框530,处理元件可使用第一数据操作数和第二数据操作数执行操作。例如,如上所述,处理元件PE1、PE2、PE3、……、PEN使用其各自第一数据操作数和第二数据操作数以执行数字信号处理算法(诸如矩阵乘法器算法或fir响应滤波器操作)。可在方法500之前、期间和之后提供额外步骤,且方法500的其它实施方案可取代或消除已描述的步骤中的某些。
[0053]本文中已公开的存储器互连网络体系结构有利于可由数字信号处理器200实施的广泛的算法,尤其是可获利于同步SIMD加载和广播加载的任何算法(诸如矩阵乘法器算法或fir响应滤波器操作)。图6是由根据本公开的不同方面的数字信号处理器(诸如图2的数字信号处理器)实施的示例性矩阵乘法器算法的示意图。可使用上文描述中提供的示例性代码实施矩阵乘法器算法,其中具有矩阵大小rl X Cl的矩阵A(matA)乘以具有矩阵大小clXc2的矩阵B (matB)以确定具有矩阵大小rlXc2的积矩阵(matC)。在图6中,matA是由4X4输入矩阵A (其中rl=l,cl=4)表示,matB是由4X4输入矩阵B (其中c2=4)表示,且matC是由4X4输出矩阵C表示。在本文中已公开的运行实例中,其中数字信号处理器200包括四个处理元件(N=4),图6示意地示出了输出矩阵C的第一行的计算。例如,在第一次传递中(诸如在内循环的第一次迭代中),数字信号处理器200实施广播加载以经由互连网络260将输入矩阵A的元素aTO传送到处理元件PE1、PE2、PE3和PE4,且还实施SMD加载以经由互连网络150将输入矩阵B的元素和bQ3分别传送到处理元件PE1、PE2、PE3和PE4。然后,处理元件PE1、PE2、PE3和PE4分别使矩阵A的相同元素aQ(l乘以输入矩阵B的各自元素b, b01, b02和bw继续进行处理,在第二次传递中(诸如在内循环的第二次迭代中),数字信号处理器200实施广播加载以经由互连网络260将输入矩阵A的元素aQ1传送到处理元件PE1、PE2、PE3和PE4,且还实施SMD加载以经由互连网络150将输入矩阵B的元素 b1(l、bn、b12和b13分别传送到处理元件PE1、PE2、PE3和PE4。然后,处理元件PE1、PE2、PE3和PE4分别使矩阵A的相同元素aQ1乘以输入矩阵B的各自元素b1(l、bn、b12和b13。类似地,在第三次传递中(诸如在内循环的第三次迭代中),数字信号处理器200实施广播加载以经由互连网络260将输入矩阵A的元素aQ2传送到处理元件PE1、PE2、PE3和PE4,且还实施SMD加载以经由互连网络150将输入矩阵B的元素b2(l、b21、b22和b23分别传送到处理元件PE1、PE2、PE3和PE4 ;且处理元件PE1、PE2、PE3和PE4分别使矩阵A的相同元素知乘以输入矩阵B的各自元素b2(l、b21、b22和b23。再次类似地,在第四次传递中(诸如在内循环的第四次迭代中),数字信号处理器200实施广播加载以经由互连网络260将输入矩阵A的元素aQ3传送到处理元件PE1、PE2、PE3和PE4,且还实施SMD加载以经由互连网络150将输入矩阵B的元素b3Q、b31、b32和b33分别传送到处理元件PE1、PE2、PE3和PE4 ;且处理元件PE1、PE2、PE3和PE4分别使矩阵A的相同元素aQ3乘以输入矩阵B的各自元素匕30、匕31、b32 和 b33。
[0054]每当内循环进行传递(迭代)时,在每个乘法操作后,处理元件PEl、PE2、PE3和PE4通过将其各自乘积与来自先前迭代的各自值相加(乘法相加值)执行加法操作,其中相加的结果变量在进行第一次传递(迭代)时初始化为零。例如,在进行第一次传递时,处理元件PEl将乘法操作的积与零相加;在进行第二次传递时,处理元件PEl将乘法操作的积与PEl的第一次传递进行的乘法加法操作的值相加;在进行第三次传递时,处理元件PEl将乘法操作的积与PEl的第二次传递进行的乘法加法操作的值相加;且在进行第四次传递时,处理元件PEl将乘法操作的积与PEl的第三次传递进行的乘法加法操作的值相加;且以此类推,以确定输出矩阵C的元素Ctltlt5由其它处理元件PE2、PE3和PE4执行类似乘法加法操作以分别确定输出矩阵C的元素Ctll、输出矩阵C的元素Ctl2和输出矩阵C的元素C(l3。继续使用同步广播和SMD加载对输入矩阵A和输入矩阵B的元素进行这种处理,以确定输出矩阵C的剩余元素。矩阵乘法器算法因此极大地获利于数字信号处理器200的存储器互连网络体系结构。
[0055]虽然本公开参考数字信号处理器描述了存储器互连网络体系结构,但是本公开设想本文中描述用于可执行并行操作的任何处理器(包括微处理器、微控制器、通用计算机或可执行并行操作的任何其它处理器)的存储器互连网络体系结构。本文中概括的规范、尺寸和关系(例如,处理元件和存储体的数量、逻辑操作、加载值等)仅仅是为了实例和教学的目的而提供。这些中的每个可以在不违背本公开的精神或随附权利要求的范围的情况下而大幅改变。所述规范仅仅适用于非限制实例,且因此其应被解释为仅仅适用于非限制实例。在前文描述中,已参考特定处理器配置描述了示例性实施方案。在不违背随附权利要求的范围的情况下可以对这些实施方案作出不同修改和改变。所述描述和附图因此被视为说明性意义而非限制性意义。
[0056]参考前述附图描述的操作和步骤仅仅示出了可以分别由图1和图2的数字信号处理器100和数字信号处理器200执行或在其内执行的可能案例中的某些。在适当情况下可以删除或取消这些操作中的某些,或在不违背已论述概念的范围的情况下可以大幅修改或改变这些步骤。此外,可以大幅更改这些操作的时序且这些操作仍实现本公开中教学的结果。前述操作流程是为了实例和论述的目的而提供。所述系统提供了实质性的灵活性:在不违背已论述概念的教学的情况下可以提供任何适当配置、时间顺序、构造和时序机制。
[0057]在一个示例性实施方案中,图1和图2的数字信号处理器100和数字信号处理器200分别耦接到相关电子装置的母板。所述母板可能是可固定电子装置的内部电子系统的不同组件且还对其它外围装置提供连接器的通用电路板。更具体地说,所述母板可提供可让系统的其它组件进行通信的电连接。任何适当的处理器(包括数字信号处理器、微处理器、支持芯片组等)、存储器元件等可基于特定构造需要、处理要求、计算机设计等而适当地连接到所述母板。诸如外部存储装置、用于视频显示的控制器和外围装置的其它组件可以经由电缆作为插件附接到所述母板,或集成到其自身的母板中。在另一示例性实施方案中,图1和图2的数字信号处理器100/数字信号处理器200分别可以嵌入在独立模块(例如,具有被配置来执行特定应用程序或功能的相关组件的装置)中或作为插件模块集成到电子装置的专用硬件中。
[0058]注意本公开的特定实施方案可以随意地包括芯片上系统(S0C)、中央处理单元(CPU)封装。SOC表示将计算机或其它电子系统的组件集成到一个芯片中的集成电路(1C)。其可以包括数字、模拟、混合信号且通常包括射频功能:其全部可以被提供在一个芯片基板上。其它实施方案可以包括多芯片模块(MCM),其中多个芯片位于一个电子封装内且被配置来通过电子封装相互紧密交互。在各个其它实施方案中,数字信号处理功能可以实施于专用集成电路(ASIC)、现场可编程门阵列(FPGA)和其它半导体芯片中的一个或多个硅心中。
[0059]在示例性实施方式中,本文中概括的处理活动的至少某些部分可以实施于(例如)控制单元120中的软件中。在某些实施方案中,这些特征中的一个或多个可以实施于提供在图1至图4的元件外部的硬件中或可以按任何适当方式合并以实现所希望的功能。不同组件可以包括可合并以实现如本文中概括的操作的软件(或往复式软件)。在另外其它实施方案中,这些元件可以包括任何适当的算法、硬件、软件、组件、模块、接口或利于其操作的物体。
[0060]此外,本文中分别在图1和图2描述的数字信号处理器100和数字信号处理器200(和/或其相关结构)还可以包括用于在网络环境中接收、传输和/或以其它方式传达数据或信息的适当接口。此外,可以移除或以其它方式合并与已描述的处理器相关的组件中的某些。一般意义上,附图中描绘的配置在其表示上可能更具逻辑性,而物理体系结构则可以包括这些元件的不同排列、组合和/或混合。必须注意,可使用无数种可能的设计构造以实现本文中概括的操作目标。因此,关联的基础设施具有大量替代配置、设计选择、装置可能性、硬件构造、软件实施方式、设备选项等。
[0061]在示例性实施方案中的某些中,一个或多个存储器元件(例如,存储器130、程序存储器126等)可存储用于本文中描述的操作的数据。这包括能够将指令(例如,软件、逻辑、代码等)存储在非暂时性介质中使得所述指令被执行来实行本文中描述的活动的存储器元件。
[0062]任何适当处理器组件可执行与数据相关的任何类型的指令以实现本文中详述的操作。在一个实施方案中,图1和图2的数字信号处理器100和数字信号处理器200分别可将元件或物件(例如,数据)从一种状态或状况变换成另一种状态或状况。在另一实例中,本文中概括的活动可以使用固定逻辑或可编程逻辑(例如,由处理器执行的软件和/或计算机指令)实施,且本文中认定的元件可能是某种类型的可编程处理器、可编程数字逻辑(例如,现场可编程门阵列(FPGA)、可抹除可编程只读存储器(EPR0M)、电可抹除可编程只读存储器(EEPR0M))、包括数字逻辑、软件、代码、电子指令、闪存、光盘、⑶-R0M、DVD ROM、磁卡或光卡、适用于存储电子指令的其它类型的机器可读介质的ASIC,或其任何适当组合。在操作中,图1和图2的数字信号处理器100和数字信号处理器200分别可以将信息保存在任何适当类型的非暂时性存储介质(例如,随机访问存储器(RAM)、只读存储器(ROM)、现场可编程门阵列(FPGA)、可抹除可编程只读存储器(EPROM)、电可抹除可编程ROM (EEPROM)等)、软件、硬件或任何其它适当组件、装置、元件中或在适当情况下且基于特定需要保存在物体中。此外,正被追踪、发送、接收或存储在数字信号处理器100和数字信号处理器200中的信息可基于特定需要和实施方式而被提供在任何数据库、寄存器、表格、高速缓存、队列、控制清单或存储结构中,其全部以任何适当时间表加以引用。本文中论述的任何存储器项应被解释为包括在广义的术语“存储器”内。类似地,本文中描述的可能处理元件、模块和机器中的任何一个应被解释为包括在广义的术语“处理器”内。
[0063]实施本文中描述的功能的所有或部分的计算机程序逻辑是以各种形式(包括(但绝不限于)源代码形式、计算机可执行形式和不同中间形式(例如,由汇编器、编译器、链接程序或定位程序产生的形式))具体实施。在实例中,源代码包括以不同编程语言(诸如目标代码、汇编语言或高级语言(诸如搭配不同操作系统或操作环境使用的公式翻译程式语言、
C、C++、JAVA或HTML))实施的一系列计算机程序指令。源代码可以定义和使用不同数据结构和通信讯息。源代码可以(例如,经由解译器)呈现计算机可执行形式,或源代码可以(例如,经由转译器、汇编程序或编译器)而转换为计算机可执行形式。
[0064]前文概括了多个实施方案的特征使得本领域一般技术人员可以更好地理解本公开的方面。本领域一般技术人员应明白,他们可以随意地使用本公开作为用于设计或修改用于实行相同目的和/或实现本文中介绍的实施方案的相同优点的其它程序和结构的基础。本领域一般技术人员还应意识到这样等效的构造没有违背本公开的精神和范围,且他们可以在不等效的构造没有违背本公开的精神和范围的情况下在本文中作出各种改变、替代和更改。
[0065]本领域一般技术人员可以确认多种其它变化、替代、变动、更改和修改,且设想本公开包括属于随附权利要求的范围内的所有这些变化、替代、变动、更改和修改。为了辅助美国专利商标局(USPTO)且此外辅助关于本申请发布的任何专利的任何读者解译附属于本申请的权利要求,希望 申请人:注意:(a)除非`特定权利要求中具体使用单词“用于……的工具”或“用于……的步骤”,否则并非意欲随附权利要求中的任一项调用35U.S.C.第112章第六(6)段,因为35U.S.C.第112章第六(6)段的存在是关于提交日期jP(b)并非意欲通过说明书中的任何声明以随附权利要求中未以其它方式反映出来的任何方式限制本公开。
[0066]示例性实施方案的实施
[0067]一个特定示例性实施方式可以包括用于以下步骤的工具(例如,软件、逻辑、代码、硬件或其组合):将指令集发布到处理元件;经由基于交换机的互联网络将第一数据操作数同步传送到处理元件中的至少某些,且经由非基于交换机的互联网络将第二数据操作数同步传送到处理元件中的至少某些;和通过处理元件中的至少某些使用第一数据操作数和第二数据操作数执行操作。不同实施方式还可以包括用于执行广播加载的工具,其中相同数据操作数是从存储器传送到所述至少某些处理元件中的每个;且传送第二数据操作数包括执行单指令多数据(SMD)加载,其中不同数据操作数是从存储器传送到所述至少某些处理元件中的每个。不同实施方式可以包括执行有限响应滤波器操作和矩阵乘法操作之一。
【权利要求】
1.一种处理器,其包括: 计算阵列,其包括处理元件; 存储器,其包括存储体;和 存储器互连网络体系结构,其用于将所述处理元件中的至少某些互连到所述存储体中的至少某些,其中所述存储器互连网络体系结构包括: 基于交换机的互连网络,和 非基于交换机的互连网络, 其中所述处理器被配置来经由所述基于交换机的互连网络将第一数据操作数同步加载到所述处理元件中的至少某些,且经由所述非基于交换机的互连网络将第二数据操作数同步加载到所述处理元件中的至少某些。
2.根据权利要求1所述的处理器,其中所述基于交换机的互连网络是交叉开关网络。
3.根据权利要求2所述的处理器,其中 所述计算阵列包括N个处理元件; 所述存储器包括η个存储体;且 所述交叉开关网络包括NXn个交 换机。
4.根据权利要求2所述的处理器,其中所述非基于交换机的互连网络是广播总线。
5.根据权利要求4所述的处理器,其中所述广播总线是32位总线和64位总线中选定的总线。
6.根据权利要求4所述的处理器,其中所述广播总线是单广播总线。
7.根据权利要求1所述的处理器,其中所述第一数据操作数是用于每个处理元件的不同数据操作数且所述第二数据操作数是用于每个处理元件的相同数据操作数。
8.根据权利要求1所述的处理器,其中每个处理元件包括计算单元和寄存器堆。
9.根据权利要求2所述的处理器,其中η=ΝΧ由所述处理器执行的同步数据操作数加载的数量。
10.根据权利要求1所述的处理器,其中所述处理器被配置来经由所述基于交换机的互连网络将所述第一数据操作数同步加载到每个处理元件,且经由所述非基于交换机的互连网络将第二数据操作数同步加载到每个处理元件。
11.一种处理器,其包括: 计算阵列,其包括N个处理元件; 存储器,其包括η个存储体; 交叉开关,其用于互连所述计算阵列与所述存储器,所述交叉开关被配置来将数据从所述η个存储体传送到所述N个处理元件; 总线,其用于互连所述计算阵列与所述存储器,所述总线被配置来将数据从所述η个存储体传送到所述N个处理元件;以及 其中所述交叉开关和所述总线被配置来将所述数据从所述η个存储体同步传送到所述N个处理元件。
12.根据权利要求11所述的处理器,其中所述交叉开关具有NXn个交换机。
13.根据权利要求12所述的处理器,其中所述总线没有交换机。
14.根据权利要求11所述的处理器,其中所述交叉开关被配置来将不同数据操作数传送到所述N个处理元件中的每个,且所述总线被配置来将相同数据操作数从所述存储器传送到所述N个处理元件。
15.根据权利要求11所述的处理器,其中所述N个处理元件中的至少某些包括计算单元和寄存器堆。
16.根据权利要求11所述的处理器,其中n=NX由所述处理器执行的同步数据传送的数量。
17.一种要由处理器执行的方法,所述处理器包括:计算阵列,其包括处理元件;和存储器,其包括存储体,所述方法包括: 将指令集发布到所述处理元件; 经由基于交换机的互联网络将第一数据操作数同步传送到所述处理元件中的至少某些,且经由非基于交换机的互联网络将第二数据操作数同步传送到所述处理元件中的至少某些;和 通过所述处理元件中的至少某些使用所述第一数据操作数和所述第二数据操作数执行操作。
18.根据权利要求17所 述的方法,其中: 传送所述第一数据操作数包括执行广播加载,其中相同数据操作数是从所述存储器传送到每个处理元件;以及 传送所述第二数据操作数包括执行单指令多数据(SIMD)加载,其中不同数据操作数是从所述存储器传送到每个处理元件。
19.根据权利要求17所述的方法,其中: 所述基于交换机的互联网络是交叉开关;以及 所述非基于交换机的互联网络是总线。
20.根据权利要求17所述的方法,其中执行所述操作包括执行有限响应滤波器操作和矩阵乘法操作之一。
【文档编号】G06F15/80GK103778100SQ201310501553
【公开日】2014年5月7日 申请日期:2013年10月23日 优先权日:2012年10月23日
【发明者】K·桑海, B·勒纳, M·G·佩尔金斯, J·L·瑞德福特 申请人:亚德诺半导体技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1