CN101482811B - 用于增强的计算能力的处理器体系结构 - Google Patents
用于增强的计算能力的处理器体系结构 Download PDFInfo
- Publication number
- CN101482811B CN101482811B CN200910000709.0A CN200910000709A CN101482811B CN 101482811 B CN101482811 B CN 101482811B CN 200910000709 A CN200910000709 A CN 200910000709A CN 101482811 B CN101482811 B CN 101482811B
- Authority
- CN
- China
- Prior art keywords
- computing
- computing engines
- digital signal
- engines
- instruction
- 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.)
- Active
Links
- 230000015654 memory Effects 0.000 claims description 85
- 238000012545 processing Methods 0.000 claims description 11
- 230000005540 biological transmission Effects 0.000 claims description 9
- 238000000034 method Methods 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 5
- 230000008878 coupling Effects 0.000 claims 2
- 238000010168 coupling process Methods 0.000 claims 2
- 238000005859 coupling reaction Methods 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 23
- 238000006073 displacement reaction Methods 0.000 description 9
- 230000001186 cumulative effect Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000001965 increasing effect Effects 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 101100490563 Caenorhabditis elegans adr-1 gene Proteins 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 239000012530 fluid Substances 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 206010000234 Abortion spontaneous Diseases 0.000 description 1
- 101150043088 DMA1 gene Proteins 0.000 description 1
- 101150090596 DMA2 gene Proteins 0.000 description 1
- 241001269238 Data Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005314 correlation function Methods 0.000 description 1
- 208000037265 diseases, disorders, signs and symptoms Diseases 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000005194 fractionation Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 208000015994 miscarriage Diseases 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 208000000995 spontaneous abortion Diseases 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
- G06F15/8015—One dimensional arrays, e.g. rings, linear arrays, buses
Abstract
本发明公开了一种用于增强的计算能力的处理器体系结构。一种数字信号处理器包括:控制块,被配置用于基于存储的程序来发出指令;以及计算阵列,包括两个或更多个计算引擎,所述计算阵列被配置成使得所发出的所述指令中的每个指令在连续的时段、在至少所述计算引擎的子集中的连续的计算引擎中执行。该数字信号处理器可以随控制处理器一起使用,或者可以作为独立的处理器来使用。该计算阵列可以被配置成使得所发出的指令中的每个指令在连续的时段流经至少所述计算引擎的子集中的、连续的计算引擎。
Description
技术领域
本发明涉及处理器体系结构,更具体地,涉及有利于高性能数字信号处理计算的数字信号处理器体系结构。所公开的数字信号处理器可以随其它处理器一起使用,或者作为独立的处理器使用。
背景技术
数字信号处理器(DSP)是被设计用于对数字信号处理应用的性能进行优化的专用计算机,所述数字信号处理应用例如为快速傅里叶变换、数字滤波、图像处理、无线系统中的信号处理以及语音识别。数字信号处理器应用典型地具有实时操作、高中断率以及密集的数值计算的特征。此外,数字信号处理器应用趋向于存储器访问操作密集以及需要对大量数据的输入和输出。数字信号处理器体系结构典型地被优化用于有效地执行这种计算。
数字信号处理器的核心处理器典型地包括计算块、程序序列发生器、指令解码器、以及执行数字信号计算所需要的所有其它元件。计算块是数字信号处理器的基本计算元件,并且典型地包括寄存器堆以及一个或更多个计算单元,所述计算单元例如为乘法器和算术逻辑单元(ALU)。
数字信号计算实际上经常是重复性的。也就是说,可能多次用不同的数据来执行相同或相类似的计算。因此,各个计算的速度的任何提高可能提供数字信号处理器的性能的显著增强。
诸如无线系统中的基站之类的一些应用具有超出当前数字信号处理器的能力的性能需求和时序需求。为了满足这些需求,设计者使用了与ASIC(专用集成电路)和/或FPGA(现场可编程门阵列)相组合的数字信号处理器。这种系统缺乏灵活性且相对昂贵。此外,所需要的性能随着下一代无线系统的引入而提高。高功耗通常是高性能处理器中存在的问题。
可以取决于预期应用而针对不同的操作参数来优化数字信号处理器设计,所述不同的操作参数例如为计算速度、功耗以及编程的简易性。此外,数字信号处理器可以被设计用于不同的字长。在1999年9月21日授权给Garde的美国专利5954811中公开了利用长指令字和宽数据总线并且实现了高运算速度的32位体系结构。核心处理器包括两个计算块。尽管具有很高的性能,但是该公开的处理器并未提供用于所有应用的优化的解决方案。
因此,存在对数字信号处理器体系结构和性能的进一步创新的需求。
发明内容
根据本发明的第一方面,一种数字信号处理器包括:控制块,被配置用于基于已存储的程序来发出指令;以及计算阵列,包括两个或更多个计算引擎,所述计算阵列被配置成使得所发出的指令中的每个指令在连续的时段、在至少所述计算引擎的子集中的连续的计算引擎中执行。所述计算阵列可以被配置成使得所发出的指令中的每个指令在连续的时段流经至少所述计算引擎的子集中的、连续的计算引擎。
所述计算引擎中的每个计算引擎可以包括:指令管道,被配置用于控制指令经过计算阵列的流动;以及至少一个流单元,被配置用于对与所述指令相关联的数据执行流操作。所述计算引擎中的每个计算引擎还可以包括:一个或更多个计算单元,用于执行数字信号计算;以及寄存器堆,用于保存数字信号计算的操作数。
所述计算阵列包括至少一个存储器。在一些实施例中,所述计算引擎中的每个计算引擎包括第一存储器和第二存储器。在其它实施例中,所述计算阵列包括被配置用于随所述计算引擎中的每个计算引擎一起操作的第一存储器和第二存储器。所述计算阵列中的计算引擎可以被配置用于对所述存储器的内容执行逐列操作、逐行逐列的操作、以及逐行操作。
在一些应用中,所述流单元可以被配置用于从存储器加载数据、以及将数据移位到连续的计算引擎中的一个或更多个所选寄存器中。在其它应用中,所述流单元可以被配置用于从存储器加载数据、以及向所述计算引擎中的每个计算引擎中的一个或更多个所选寄存器广播数据。在另外的应用中,所述流单元可以被配置用于对来自连续的计算引擎中的一个或更多个所选寄存器的数据进行累加以及存储结果。在一些实施例中,流单元中的寄存器与寄存器堆中的寄存器相交互。
在一些应用中,可以将所述计算引擎形成为组。在其它应用中,可以使数据再循环经过计算阵列。
根据本发明的第二方面,一种用于数字信号处理的方法包括:提供一种包括控制块和计算阵列的数字信号处理器,其中该计算阵列包括两个或更多个计算引擎;在所述控制块中基于已存储的程序来发出指令;以及在连续的时段、在至少所述计算引擎的子集中的连续的计算引擎中执行所发出的指令中的每个指令。
根据本发明的第三方面,一种数字信号处理器包括:控制处理器;处理器,所述处理器包括被配置用于基于已存储的程序来发出指令的控制块,以及计算阵列,所述计算阵列包括两个或更多个计算引擎,所述所述计算阵列被配置成使得在连续的时段、在至少所述计算引擎的子集中的连续的计算引擎中执行所发出的指令中的每个指令;以及能够被所述控制处理器和所述处理器访问的主存储器。所述计算阵列可以被配置成使得所发出的指令中的每个指令在连续的时段流经至少所述计算引擎的子集中的、连续的计算引擎。
附图说明
为了更好地理解本发明,参考通过引用而合并于此的附图,在附图中:
图1是根据本发明的实施例的数字信号处理器的示意性框图;
图2是图1所示的处理器的实施例的示意性框图;
图3是图2所示的计算引擎之一的实施例的示意性框图;
图4是图2所示的计算阵列的第二实施例的示意性框图;
图5是示出了根据本发明的实施例的、用于流操作的存储器地址空间的示意性框图;
图6是示出了根据本发明的实施例的、用于SIMD操作的存储器地址空间的示意性框图;
图6A是示出了根据本发明的另一实施例的、用于SIMD操作的存储器地址空间的示意性框图;
图7是根据本发明的实施例的流单元的示意性框图;
图8A是执行流加载指令的流单元的示意性框图;
图8B是示出了流加载指令的执行的示意性框图;
图9A是执行流存储指令的流单元的示意性框图;
图9B是示出了流存储指令的操作的示意性框图;
图10是计算阵列的示意性框图,其示出了根据本发明的实施例的数据通路总线;
图11是示出了根据本发明的实施例的对称滤波计算的示意性框图;
图12是根据本发明的实施例的计算引擎的示意性框图;
图13是示出了计算引擎的分组的示意性框图;
图14是图2所示的控制块的实施例的示意性框图;
图15是示出了根据本发明的实施例的DMA交织的示意性框图;
图16是示出了使用根据本发明的实施例的处理器的逐列处理的示意性图示;
图17是示出了使用根据本发明的实施例的处理器的逐行逐列的处理的示意性图示;
图18是示出了使用根据本发明的实施例的处理器的逐行处理的示意性图示;
图19是示出了使用根据本发明的实施例的处理器的带移位的逐行处理的示意性图示;以及
图20是示出了使用根据本发明的实施例的处理器的带移位和广播的逐行处理的示意性图示。
具体实施方式
图1中示出了根据本发明的实施例的数字信号处理器的示意性框图。数字信号处理器(DSP)10包括控制处理器12、存储器14、I/O端口16和处理器20。控制处理器12与处理器20进行交互,并访问存储器14。DMA1总线22在存储器14与处理器20之间传送数据。DMA2总线24在存储器14、处理器20和I/O端口16之间传送数据。I/O端口16可以经由FIFO或I/O缓冲器直接与处理器20进行通信。I/O端口16提供了去向诸如主机计算机之类的外部存储器、外部装置和/或外部处理器的接口。
作为示例,控制处理器12可以具有在美国专利5896543中公开的类型的体系结构,该美国专利5896543在1999年4月20日被授权给Garde,并被模拟装置公司(Analog Devices,Inc.)作为TigerSharc数字信号处理器出售。存储器14可以包括三个独立的大容量存储体。在优选的实施例中,所述存储体中的每个存储体可以具有64K个各为32位的字的容量。所述存储体中的每个存储体可以具有128位数据总线,使得可以在单个时钟周期内,将多达四个的连续的对准的各为32位的数据字传送至每个存储体,或从每个存储体传送多达四个的连续的对准的各为32位的数据字。
图2中示出了处理器20的第一实施例的示意性框图。处理器20可以包括控制块30和计算阵列32。控制块30可以包括控制逻辑34、DMA控制器36、整数ALU 38和40、程序序列发生器42、程序存储器44和数据存储器46。控制块30基于已存储的程序而将指令和数据地址发给计算阵列32。
计算阵列32包括两个或更多个计算引擎。在图2的实施例中,计算阵列32包括八个计算逻辑50、51、52、...、57。每个计算引擎可以被称为计算阵列的“段”。计算引擎是串联的,使得控制块30发出的指令以及对应的数据行进经过或“流动”经过计算引擎50、51、52、...、57,并在连续的时段在所述计算引擎中的每个计算引擎中执行。如同下面所公开的那样,在利用对计算引擎的分组的应用中,控制块30所发出的指令以及对应的数据流经所述计算引擎的子集或组,并在连续的时段执行。在一个实施例中,指令在连续的时钟周期行进经过连续的计算引擎。作为示例,控制块30发出的指令可以在时钟周期1行进至计算引擎50,在时钟周期2行进至计算引擎51,以及在时钟周期8行进至计算引擎57。但是,本发明并不限于这方面,并且每个指令可以在任意数量的时钟周期之后从一个计算引擎行进至下个计算引擎。此外,指令不一定在第一个计算引擎处进入计算阵列32,而是可以在所述计算引擎中的任一计算引擎处进入。该特性例如在利用对计算引擎的分组的应用中是有益的。所述计算引擎中的每个计算引擎可以被单独地流水线化,因此可能需要若干时钟周期来完成指令的执行。此外,数据在连续的时段流至连续的计算引擎,这将在下面详细描述。
在图2的实施例中,指令在连续的时钟周期流经所述计算引擎中的所有计算引擎或所述计算引擎的子集。在其它实施例中,控制块30发出的指令可以被广播至所述计算引擎中的所有计算引擎或所述计算引擎的子集。在该实施例中,根据计算引擎在计算阵列中的位置来延迟所广播的指令,使得每个广播的指令在连续的时段在连续的计算引擎中执行。例如,所广播的指令可以在计算引擎50中无延迟,在计算引擎51中有一个时钟周期的延迟,在计算引擎52中有两个时钟周期的延迟,等等。在每种情况下,每个发出的指令在连续的时段在连续的计算引擎中执行。在利用对计算引擎的分组的情况下,每个指令在连续的时段在所述组中的连续的计算引擎中执行。
图3中示出了单个计算引擎的实施例的示意性框图。每个计算引擎包括指令管道70和流单元72,指令管道70用于控制经过计算引擎的阵列的指令流,流单元72用于控制计算引擎的阵列中的数据流。连续的计算引擎中的指令管道70通过指令总线120耦合在一起。连续的计算引擎中的流单元72通过流总线102耦合在一起。每个计算引擎一般可以配置有一个或更多个流单元以及一个或更多个流总线。指令管道70保存指令并向计算引擎提供控制信号以用于执行指令。每个计算引擎中的指令管道70在长度上可以是一个或更多个时钟周期。在一个实施例中,每个计算引擎中的指令管道70在长度上是一个时钟周期。
每个计算引擎还包括计算块74、寄存器堆76和DMA缓冲器82。在图2的实施例中,每个计算引擎包括X存储器78和Y存储器80。可以将与所述计算引擎中的每个计算引擎相关联的存储器实现为SRAM。如同下面所讨论的,可以以不同的方式来实现该存储器。在另一实施例中,每个计算引擎可以包括单个存储器。计算块74可以包括一个或更多个计算单元。例如,计算块74可以包括乘法器90、算术逻辑单元(ALU)92和MAC(乘法累加器)加法器96(图12)。计算块74与寄存器堆76相交互,以便响应于指令管道70中的指令而执行数字信号计算。寄存器堆76与存储器78和80以及流单元72相交互,以获得用于数字信号计算的指定数据以及将结果提供给指定目的地。通过指令来指定数据的位置和结果的目的地。通过DMA缓冲器82以及DMA总线22和24,将数据传送至存储器78和80以及从存储器78和80传送数据。在一些实施例中,计算块74可以包括可配置门阵列(CGA)98。
流存储器数据(FMD)总线94、流总线102和回流数据(BFD)总线124经由开关104耦合到流单元72的输入端。FMD总线94、流总线102和BFD总线124经由开关106耦合到流单元72的输出端。在正常的操作模式中,开关104经由流总线102将流单元72的输入端连接到在先的计算引擎中的流单元,并且流数据在流总线102上从在先的计算引擎接收。在正常模式中,开关106经由流总线102将流单元72的输出端连接到下个计算引擎中的流单元,并且流数据在流总线102上被提供给下个计算引擎。如下文所述,当利用对计算引擎的分组时,开关106将流输出端102连接到组中的最后一个计算引擎中的BFD总线124,使得流数据被保持在计算引擎的组内。在流加载操作的情况下,FMD总线94经由开关104连接到所选计算引擎中的流单元72的输入端,由此将存储器连接到流单元72。在流存储操作的情况下,经由开关106将所选计算引擎中的流单元72的输出端连接到FMD总线94。如图10所示,当以再循环模式使用计算阵列32时,从最后一个计算引擎57输出的流数据在流总线102上被耦合至第一个计算引擎50的流数据输入端。
图4中示出了计算阵列32的第二实施例的示意性框图。图2和4中的相似元件具有相同的附图标记。图4的实施例包括计算引擎50、51、52、...、57。在图4的实施例中,每个计算引擎不包括单独的X存储器和Y存储器。替代地,计算阵列32包括由所述计算引擎中的每个计算引擎所访问的单个X存储器84和单个Y存储器86。每个存储器84,86可以是DRAM,并且可以具有足够用于与所述计算引擎中的每个计算引擎相关的并行的加载/存储操作的行宽度。例如,存储器84和86可以为1024位宽,以便对于所述八个计算引擎中的每个计算引擎并行地加载/存储四个32位的字。与八个较小的SRAM相比,使用大的DRAM在空间上更为有效。替代实现八个存储器段地,可以通过在DRAM与计算引擎之间插入分级缓冲器来使用单个DRAM,以顺序地将数据按行提供给计算阵列的每个段。存储器访问经过与延迟线起类似作用的分级缓冲器88。分级缓冲器88中的负载延迟线具有随段号而增加的延迟。也就是说,段0无延迟,段1具有1个周期的延迟,等等,以及段7具有7个周期的延迟。对于分级缓冲器88中的存储延迟线而言,延迟是相反的。也就是说,段0具有7个周期的延迟,段1具有6个周期的延迟,等等,以及段7无延迟。由于分级缓冲器88在8个时钟周期内被清空,因此可以用动态逻辑来构建分级缓冲器88。
在本发明的范围之内,计算阵列32可以具有不同的存储器配置。图2示出了每个计算引擎包括X存储器78和Y存储器80的实施例,图4示出了计算阵列32包括单个X存储器84和单个Y存储器86的实施例。在其它实施例中,每个计算引擎可以包括单个存储器或多于两个的存储器。在另外的实施例中,单个存储器可以服务于整个计算阵列。在另外的实施例中,计算阵列可以包括与相应的计算引擎相关联的单独的段存储器(典型地是较小的存储器),以及一个服务于整个计算阵列的存储器(典型地是较大的存储器)。在这些具有八个计算引擎的实施例中一般可以配置一个或更多个存储器来服务于1个、2个、4个或8个计算引擎。
计算阵列32可以包括行高速缓存130(图4),行高速缓存130允许在单个周期内缓存1024位的数据行以用于流访问。这在后续对该行的流访问中释放了存储器。由于行高速缓存,程序员不需要访问四倍长字,从而最小化存储器访问。这通常简化和减小了程序大小。这还减少了功耗,并且允许对存储器的较优的DMA访问。行高速缓存130优选地包括加载行高速缓存(LRC)和存储行高速缓存(SRC)。优选地,行高速缓存只支持流访问而不支持SIMD访问。行高速缓存可以在图2和2A的实施例中使用。计算阵列32可以包括一个或更多个加载行高速缓存以及一个或更多个存储行高速缓存。
加载行高速缓存保存存储器中当前访问的整个行。该行是在第一次执行流加载指令时自动加载的。加载行高速缓存的功能是如同高速缓存一样起作用,以减少后续对存储器的流访问的数量。加载行高速缓存还提供了拆分功能,特别是用于短字。控制器不再对存储器进行流访问,直到行地址改变。例如,该缓冲器可以保存64个短字,并省去了63次对存储器的访问。
存储行高速缓存在被充满之前对输入流结果进行打包。当被充满时,存储行高速缓存发起向存储器的存储。存储行高速缓存如同高速缓存一样起作用,以减少对存储器的多次单独访问。存储行高速缓存还提供打包功能,特别是用于短字。控制器不将存储行高速缓存的内容存储到存储器中,直到行地址改变或者直到行高速缓存被充满。例如,该缓冲器可以保存64个短字结果,并省去对存储器的63次访问。
控制块30发出用于计算阵列32的加载/存储指令和计算指令。指令从左侧进入计算阵列,并在每个时钟周期从一个段流到下个段,直到它们在八个时钟周期之后离开该阵列。进入阵列的数据按照指令所指定地以相同的方式流经该阵列。计算的结果按照指令所指定地以类似的方式跨计算引擎地流动,当流动结束时,可以将结果存储在存储器中。如果应用需要多于八个的计算引擎,则数据和结果可以再循环经过计算阵列32。相反地,对于需要较少的计算引擎的应用,八个计算引擎可以被配置成组。通过每个计算引擎中的开关来实现组。每个计算引擎中的存储器在使用流指令时是所有计算引擎的共用资源,但是对于SIMD(单个指令,多个数据)指令而言是局部资源。
指令、数据和结果在每个时钟周期水平地逐段流过阵列。该流产生了以下编程假象:不管处理是水平地跨过阵列、是以SIMD方式垂直地跨过阵列、还是以二者的组合(因此是SIMD-流)跨过阵列,都存在一个处理器和一个存储器。同时执行SIMD操作和流操作的能力显著地增强了体系结构的通用性。通过在流操作期间对段进行分组以允许需要较少量操作的任务得到优化管理的能力,来增强流体系结构的通用性。利用SIMD操作,每个段所作的工作可以有相当大的差别。这是因为,大多数指令可以是有条件的,或者可以根据每个段的唯一ID来进行修改。
在计算阵列的每个段中包括单独的存储器的实施例中,每个段可以执行独立的表查找。通过由控制块30中的地址生成器将每个段中的地址偏移量寄存器的内容与广播给所有段的公共地址相加,可以在每个段中执行对存储器的表查找。这允许在每个段中执行单独的表查找。在每个段中复制表以允许同时查找。存储器访问指令具有指定是否调用地址偏移量寄存器的位。
可以利用不同的寻址方案来进行SIMD操作(单个计算引擎中的非流操作)和流操作(跨计算引擎的操作)。基于指令类型来选择寻址方案。
对于流存储器访问,存储器表现为单个字长很宽的存储器,并且在包括八个段的实施例中每一行具有1024位或具有32个各为32位的字,其中每一段具有存储器行,所述存储器行具有四个32位的字。为实现它,每个存储器段只响应于其列地址。流地址只应用于一个存储器段。所选的段将其数据置于FMD总线94上。当使用组时,流地址为每个组所共用。因此,对于各具有四个段的两个组而言,行大小为16个字,但是存在两组该行地址。图5中示出了根据本发明的实施例的流寻址方案。如图5所示,流地址跨所有段地线性增加。
对于SIMD存储器访问,X存储器和Y存储器各表现为八个并列的存储体。每个存储器段接收相同的地址并相同地进行操作。因此,数据被存储为八个数据集。用于存储器段的地址和控制在每个时钟周期在指令流总线120上从左流向右,使得连续的段在连续的周期进行响应。SIMD存储器可以被概括为包括八个相同的存储器,每个段具有公共地址。该地址被广播给所有段,并且每个段每行有四个32位的字。地址空间是一个段的地址空间。因此,加载指令从每个存储器段中的相同地址处加载每个段中的一个或更多个寄存器的内容。但是,由于指令跨阵列地流动,因此每个段比在先段晚一个周期进行响应。图6中示出了根据本发明的实施例的SIMD存储器寻址方案。如图6所示,在每个段中SIMD地址增加。
虽然图5和6示出了针对流操作和SIMD操作的不同寻址方案,但是应当理解,并不要求不同的寻址方案。更具体地,可以使用线性地址空间来进行流操作和SIMD操作。在这种情况下,SIMD存储器访问使用较大的地址增量来访问下个存储器行。
图6A中示出了根据本发明的另一实施例的SIMD存储器寻址方案。该寻址方案允许使用相同的存储器地址空间来进行流操作和SIMD操作。对于SIMD存储器访问,地址生成器在每个四倍边界处基于模数32来增加SIMD地址,即,来自地址位a1的进位进位到地址位a5。这是因为计算阵列自身隐含地增加位a4:2。因此,对于SIMD操作和流操作而言,地址空间可以保持为相同的和线性的。地址生成器修改地址使得来自位a1的进位被关联到位a5,以针对中间的位在阵列中被隐含地增加的事实而进行调整。因此,增加一将使地址从0、1、2、3、32、34、35、64、65、66等处开始。中间的地址在阵列中被隐含地用于SIMD访问。X存储器和Y存储器各表现为八个并列的存储体。每个存储器段接收相同的地址并相同地进行操作。因此,数据被存储为八个数据集。用于存储器段的地址和控制在每个时钟周期(在指令流总线上)从左流向右,使得连续的段在连续的时钟周期进行响应。
图7中示出了根据本发明的实施例的流单元72的示意性框图。四位(quad)D寄存器100(D3:0)接收流总线102上的输入,并在流总线102上提供输出。D寄存器100与寄存器堆76中的所选寄存器进行交互。流单元72还可以包括四位加法器110和四位A寄存器112(A3:0)。加法器110接收流总线102上的输入以及来自寄存器堆76中的所选寄存器的输入。结果被置于A寄存器112中,并且A寄存器112在流总线102上提供输出。流单元72还可以包括四位D′寄存器114(D′3:0),该四位D′寄存器接收BFD总线124上的输入并在BFD总线124上提供输出。流单元72可以包括可配置门阵列(CGA)117以及诸如传送、比较、异或之类的其它功能116,以提供灵活性。
流操作有两种基本类型:(1)从存储器进行流加载的操作,其利用诸如跨所有段的移位之类的操作,以及(2)向存储器进行流存储的操作,其利用诸如跨所有段的累加之类的操作。除了流存储器访问是按行访问存储器而不是按列访问存储器之外,流存储器访问与SIMD存储器访问相类似。
以下指令支持流操作:
OP Rm==[Jm];//流加载指令
[Jm]OP==Rm;//流存储指令
流加载指令从存储器位置Jm处加载Rm寄存器的内容,并跨所有段地执行操作OP(典型地是延迟线移位或广播)。流存储指令跨所有段地对寄存器Rm执行操作OP(典型地是累加),并将结果存储到存储器位置Jm处。“==”符号表示流指令。OP操作表示可以在流操作期间执行的若干类型的操作,例如累加、移位、传送、广播以及异或。流操作是在流单元72中执行的,流单元72可以以与存储器访问相类似的方式来访问寄存器堆76,并且可以被看作替代性的存储器访问。
参照图8A和8B来描述流加载操作或DFLOW操作。针对流加载操作,每个计算引擎中的流单元72利用定义流加载路径的四位D寄存器100(D3:0)。在第一计算引擎50中,流加载操作包括从FMD总线94上的存储器进行加载。在其它计算引擎51、52、...、57中的每个计算引擎中,流加载操作包括在流总线102上的段之间的流,其细节取决于指定的操作OP以及指定的一个或多个寄存器。
考虑通过SH R6==[J3+=1]给出的流移位操作的示例,该示例实现了每个段中三个周期的延迟。流加载操作在连续的时钟周期在计算阵列32的连续段中开始。该指令包括在每个计算引擎中的以下操作。首先,从寄存器堆76中将寄存器R6:4的内容读取到四位D寄存器100中的位置D2:0中。接着,将寄存器D0的内容移位出到流总线102上。然后,将寄存器D2:1的内容移位到寄存器D1:0中,并将输入流移位到寄存器D2中。在第一段(计算引擎50)中,输入流来自FMD总线94上的存储器。在其它段中,输入流来自流总线102上的在先段。最终,将寄存器D2:0的内容写入寄存器堆76中的寄存器R6:4中。
在流加载操作中,通过DFLOW指令的入口点来确定移位寄存器长度。在流加载指令中,寄存器编号是指定的模数4。因此,SH R2和SH R14均定义了长度为三个字的移位寄存器。此外,该指令可以指定一个至四个字。被移位出内容的寄存器的数量与被移位入内容的寄存器的数量相同。针对流加载操作的寄存器选项为R0、R1、R1:0、R2、R2:1、R2:0、R3、R3:2、R3:1以及R3:0。使用模4符号来指定较高编号的寄存器。
B类型的广播指令R15:12==[mem]将存储器内容广播到计算阵列的每个段中的寄存器R15:12中。
参照图9A和9B来描述流存储操作或AFLOW操作。针对流存储操作,流单元72利用定义流存储路径的加法器110和四位A寄存器112(A3:0)。流单元72在数据在计算阵列的段之间流动时对该数据进行操作。主要的AFLOW操作是累加,但是可以利用其它操作,例如异或、比较、取最大值/最小值、传送、逻辑和移位。流可以来自寄存器堆76中的任何寄存器。A寄存器112保存段之间的累加结果。最后一个段(计算引擎57)的输出被存储在FMD总线94上的存储器中。流路径可以对来自计算阵列的每个段的Rn寄存器的内容进行求和,使得AFLOW输出是计算阵列中的所有Rn寄存器的内容的总和。当AFLOW数据进入段时,该数据被与局部Rn寄存器的内容相加,并在随后的周期中被输出至接收数据的下个段。对所有段重复此操作。在八个时钟周期之后在最后一个段处出现结果。例如,指令[adr1]+==R0;对来自计算阵列的八个段中的每个段的寄存器R0的内容进行求和,并将结果存储在存储器中的地址adr1处。AFLOW操作将去向计算阵列的第一段的流输入初始化为零。
考虑如图9A所示的、通过[J3+=1]==+R5:4给出的流累加指令的示例。流存储操作在连续的时钟周期在计算阵列32的连续的段中开始。首先,从寄存器堆76中读取寄存器R5:4的内容,并将寄存器R5:4的内容与输入流相加。结果被暂时置于A寄存器112中。从A寄存器112输出的总和表示流输入加上寄存器R5:4的内容的结果。
上文描述了流单元72与寄存器堆76中的所选寄存器相交互。例如,可以将D寄存器100的内容写入到寄存器堆76中的所选寄存器中,反之也可以将寄存器堆76的所选寄存器的内容写入到D寄存器100中。此外,可以将寄存器堆76中的所选寄存器的内容与流数据相加。在其它的实施例中,流单元72并不与寄存器堆76相交互。替代地,计算块74可以对流单元72中的寄存器进行读取和写入。
参照图10来描述计算阵列32的计算引擎50-57之间的数据通路总线。指令总线120连接在连续的计算引擎的指令管道70之间。指令进入指令总线120上的计算阵列,并流经该计算阵列。指令进入第一段(计算引擎50),并被时钟控制为在每个时钟周期进入每个连续的段。该总线提供用于两次或三次存储器访问的地址以及用于两个计算操作的控制。计算阵列的大部分控制逻辑可以位于控制块30中,以避免每个段中的重复。每个周期中的三次存储器访问可以是针对X存储器78或84、针对Y存储器80或86、以及针对DMA缓冲器82。DMA总线22和24向计算阵列提供DMA数据,可以通过若干输入源之一来驱动该DMA数据,或者可以将该DMA数据发送至若干输出目的地。DMA数据被置于每个段中的两个四倍长字的DMA缓冲器82中。主处理器12可以使用DMA总线来直接访问计算阵列存储器。DMA总线22和24可以用作两个128位总线或单个256位总线。DMA总线22和24可以经由缓冲器122而相耦合。
流总线102允许数据逐段地传送、广播或移位以及在需要多于八个的段的情况下进行再循环。典型地,要共享的或要跨计算阵列地进行移位的流数据在第一段中进入阵列,并被跨所有段地进行移位。流总线102也用于通过使计算结果在每个段中从左流向右来对该结果进行累加或以其它方式进行操作。通常都需要用于移位功能的流以及用于累加或广播功能的流,但是不一定要在同一周期中。由于可以配置流操作以使其不需要在每个周期进行,因此在在不同的周期中使用流总线102的情况下,可以将流总线102用于DFLOW操作和AFLOW操作。在其它的实施例中,计算阵列32可以包括两个或更多个流总线,并且DFLOW操作和AFLOW操作可以同时执行。
在未选择分组时,使用FMD总线94来加载数据。FMD总线94还用于将流数据存储到存储器中。组中的最后一个计算引擎提供数据以及存储位置的地址标记。对于加载,只有第一段提供地址,并且段1-7之一通过将其数据驱动至段0来进行响应。对于无分组的存储,最后一个段提供数据和地址。FMD总线94经由缓冲器122耦合到控制块30。
在选择了两个或四个计算引擎的组时,使用BFD总线124。BFD总线124被切换以支持段的分组。BFD总线124允许流数据返回至组的起始处,并且还用于组内的流存储器访问。对于两个或四个计算引擎的组,BFD总线124用于再循环、数据置乱以及流存储器访问。
DFLOW通路允许对对称滤波器的抽头进行预先相加以使性能加倍。对称滤波器具有关于滤波器的中心点对称的系数。可以在将与相等的系数相对应的数据值与所述系数相乘之前,对所述数据值进行预先相加,从而减少所需要的相乘的数量。通过如图11所示地使BFD总线124流经D′3:0寄存器,可以使预先相加所需要的抽头可用。当使用16位数据时,将该数据作为两对长字来进行访问。寄存器D′1:0和D1:0的内容在ALU中被相加,然后被与四个带数位叠加和的短系数相乘。对于32位数据,每段的抽头数量可以是两个、四个或八个。对于16位数据,最有效的使用是每段有八个或十六个抽头。为了实现回流移位寄存器,BFD总线124的16位或32位被重定向为流经D′3:0寄存器。这是沿DFLOW通路的相反方向移位。
在从X存储器78或84或者Y存储器80或86进行加载或存储时,存储器地址总线118(图4)提供了流存储器地址。该地址可以在相同的周期用于组中的所有段,但是只有该组中的具有对应地址的段作出响应。
图12中更详细地示出了计算引擎之一。寄存器堆76可以是具有32个至64个之间的寄存器的多端口寄存器堆。寄存器堆76支持乘法器90、ALU 92、流单元72、MAC加法器96、以及存储体78或84和80或86,并且可以具有用于支持这些单元的十个端口。乘法器90和流单元72在每个周期中执行读-改-写。寄存器堆76还可以具有可用于单周期上下文切换的阴影副本(shadow copy),以支持在流式传输数据时的中断。
乘法器90可以是32×32定点乘法器,并且具有内置的相关功能和可选的数据精度。乘法器可以执行具有实数数据类型和复数数据类型的四倍的16位相乘。复数16位数据包括8位实数数据和8位虚数数据。对于32×32相乘,需要附加的延迟周期。MAC加法器96和乘法器90是半独立的单元。从乘法器至MAC加法器的通路可以包含可在MAC加法器中分解的部分和。
通过用于在流操作期间对段进行分组的能力可以增强流体系结构的通用性。这允许优化地管理需要较小数量的操作的任务。示例包括4抽头FIR(有限脉冲响应)操作和4×4矩阵操作。分组使用对BFD总线124的特定组织,以选择不同的存储器段用于该目的。在逐个周期的基础上通过流指令来指定组操作。分组允许流操作在八个段的子集中进行。如图8所示,例如可以将前四个段(0-3)组合成第一组140,并且可以将后四个段(4-7)组合成第二组142。每个组在该组内对其数据进行再循环,并且每个组可以对不同的数据进行操作。计算阵列可以被细分成四组、每组两个,或者可以被细分成两组、每组四个。分组也可用于提供一起工作的奇数数量的段,例如三个或七个段。未使用的段应用自动补零。组控制可以应用两种类型的动作:(a)为所有组所共用的数据,或(b)在组内使用组存储器数据的独立的组。
使用适当的计算引擎中的开关104和106(图3)来配置组。图13中示意性地示出了被配置为组140和142的计算阵列32的示例,其中每个组具有四个计算引擎,并且每个组具有流数据的再循环。段3和4之间的开关150将段3的流总线102的输出端连接到段3中的BFD总线124,并将段4的流总线102的输入端连接到段4中的BFD总线124。此外,段0中的开关152将段0的流总线102的输入端连接到段0中的BFD总线124。这允许组140和142内的独立的流操作。
当应用需要多于八个的段时,计算阵列允许流操作再循环,从而产生了很长的流阵列的效果。再循环的次数实际上是无限制的,但是吞吐量仍然受到计算引擎的数量的限制,即,计算引擎是分时的。再循环将来自最后一个段的DFLOW操作和AFLOW操作反馈到第一个段,或者从组的末端反馈到组的起始处。在再循环序列结束时,将累加结果写入存储器。
置乱是在计算阵列的段之间互换存储器数据的操作。可以以两个、四个或八个为一组来置乱数据或互换数据。该操作可用于当数据被顺序地按行存储在存储器中时前三级在段间互换数据的快速傅里叶变换。置乱操作使用加载行高速缓存和存储行高速缓存作为缓冲器。数据最初从每段中的所选存储器位置中被传送至加载行高速缓存。然后,在置乱操作中,使用流总线和BFD总线将每段的加载行高速缓存的内容移动至下个段的存储行高速缓存中。针对期望的置乱移位而重复该操作。然后,将存储行高速缓存的内容存储到所有段中的指定存储器位置。每次执行置乱操作时传送四倍长字。如果置乱是在最近的相邻段之间进行的,则执行一次置乱操作。如果置乱是在相隔四个间隔的段间进行的,则重复两次置乱操作。如果置乱是在相隔八个间隔的段间进行的,则重复四次置乱操作。
图14示出了控制块30的元件以及所述元件与计算阵列32和系统总线之间的交互。控制块30包括程序存储器44、程序序列发生器42、整数ALU JALU 38和KALU 40、中断控制器和中断堆栈48、DMA控制器36、以及控制逻辑34。此外,数据存储器46用于存储参数以及在上下文切换期间进行保存和恢复。数据存储器46可以包括例如两个1K字的小存储体。控制块30还可以包括解码单元60和数字振荡器62。控制块30中的两个局部总线允许ALU 38和40保存和恢复到数据存储器46的存储体的内容。保存/恢复可以同时在计算阵列32和控制块30中进行操作,从而使性能与主处理器相比加倍。
控制块30向计算阵列32发出指令(加载/存储和计算)。指令在计算引擎50处进入计算阵列32,并在连续的时钟周期顺序地进入每个计算引擎,直到所述指令在八个时钟周期后离开。在指令中指定的流数据进入阵列,并以相同的方式流经计算阵列。
DMA总线22只连接到计算阵列32,并且主要用于将I/O数据传送至计算阵列32的存储器。DMA总线22还可以用于从主存储器14传送数据。DMA总线24可以连接到计算阵列32或控制块30,并且允许在处理器20和主存储器14之间沿任一方向直接进行读取/写入。所述传送可以经由DMA或程序控制。控制处理器12(图1)可以经由DMA总线24访问处理器20,以便对特定寄存器进行读取或写入、写入中断矢量或检查状态、下载程序存储器的内容、或者下载或上传控制块30或计算阵列32中的数据存储器的内容。
程序存储器44与控制处理器12中可用的程序存储器相比相对小。该存储器可以是4K个32位的字,并且可以被实现为高速缓存。程序存储器可以是256位宽,以允许每周期发出多达八个指令,包括用于IALU的两个指令、用于程序序列发生器的一个指令、用于计算阵列计算的两个指令、加上一个额外的用于即时数据的指令。数据存储器46主要用于保存用于IALU的附加参数以及与上下文切换相关的保存/恢复。程序序列发生器42是在主处理器12中使用的程序序列发生器的简化版本,并且每周期取出多达八个指令。程序序列发生器包括程序计数器、分支硬件、分支目标缓冲器、中断矢量表等。JALU 38和KALU 40是具有32位的地址空间的整数ALU。JALU 38和KALU 40中的每个都可以访问任一计算阵列存储体。中断堆栈48允许多个中断根据其优先级而顺序地得到服务。
处理器20可以支持从DMA或直接从I/O端口经由FIFO流式传输至流路径的数据。流式传输的数据经过计算阵列32,并且在不从存储器加载所述流式传输的数据的情况下处理所述流式传输的数据。可以通过快速上下文切换来支持数据流式传输。在数据流式传输中,I/O数据并不被写入存储器中,而是被置于DMA缓冲器82中,以便直接由计算引擎进行处理。
可以如图15所示地使用DMA交织。在图15中示出了用于每个段的DMA缓冲器82。如图15的第一行所示,为了按四进行交织,将两个四倍长字加载到每个缓冲器中的位置DMAB(0)中。然后将两个四倍长字加载到每个DMA缓冲器中的DMAB(1)中,将两个四倍长字加载到每个DMA缓冲器中的DMAB(2)中,并将两个四倍长字加载到每个DMA缓冲器中的DMAB(3)中。如图15的第二行所示,为了按二进行交织,将四个四倍长字加载到每个DMA缓冲器中的位置DMAB(2,0)中,然后将四个四倍长字加载到每个DMA缓冲器中的位置DMAB(3,1)中。如图15的第三行所示,为了按对进行交织,将四个四倍长字加载到每个DMA缓冲器中的位置DMAB(1,0)中,然后将四个四倍长字加载到每个DMA缓冲器中的位置DMAB(3,2)中。对于无交织的DMA传送,按段顺序地加载四倍长字。为了执行SIMD加载,一次对DMA缓冲器中的一段进行加载。此外,可以通过对DMA缓冲器组进行加载来执行组加载。
计算阵列32的SIMD-FLOW体系结构良好地适合于按列或按行或按行和列的组合来对数据集进行操作。以下示例举例说明了这种操作。
图16中示出了其中计算阵列的每一段在单个通道(八个通道DA至DH)上进行SIMD型操作的逐列点积。在计算阵列的段之间不共享数据。这在到达的数据集被按列布置并且没有数据要共享的情况下良好地工作。因此,在段0中,将系数CA0与数据DA0相乘,将系数CA1与数据DA1相乘,等等,并且对结果进行累加以提供通道A总和。在其它段中执行类似的操作。
图17中示出了逐行逐列的处理。系数CA0-CA7被按行水平地布置在存储器中,而数据DA0-Dan被按列垂直地布置在存储器中。使每个系数利用DFLOW通路而跨整个阵列地流动(广播)。系数连同对应的指令一起流经每个段,使每个段看似执行相同的但有时间延迟的操作。这是有共享系数的SIMD乘法累加操作的示例。对于波束形成,这允许由每个天线(水平的)的所有时间样本共享一组系数,而跨所有天线地(垂直地)完成求和。如果对数据和系数进行互换,则可以实现多相FIR滤波器,其中每一段根据相同的数据实现了该滤波器的不同相位。利用图17的方法可以完成矩阵相乘。一个矩阵C的行被广播并被与第二矩阵D的八列相乘。八个结果位于每一段的MAC中。
图18中示出了逐行处理。图18的示例示出了逐个矢量的相乘中的逐行点积。在逐行操作中,数据或系数均不流动,而是在AFLOW通路中对来自每一段的乘法器结果进行累加。每一段对其乘积和到达的总和进行求和,并将结果传递至下一段。
图19中示出了带移位的逐行操作。图19的示例示出了可以如何利用逐行操作来实现FIR滤波器。数据行被存储在移位寄存器(DFLOW通路)中,以实现带抽头的延迟线。数据被保持在存储器中,然后被加载到流路径中,被移位,并且可选地被返回到存储器中。为了节省功率和存储器带宽,可以在多次移位之后执行加载操作和存储操作。当在小数量的通道上进行操作时,DFLOW数据可以被保留在寄存器堆中,并且不将该数据复制到存储器中。
图20的示例中示出了具有移位和广播的逐行处理。图20示出了FIR滤波器实施方案的变型,其中数据如常地在延迟线中被移位,但是系数被流广播至所有段。在每个段中的累加寄存器MRO中原地完成累加,并利用SIMD指令存储这些结果。
图1中示出了处理器20,并且在上文中将其描述为随控制处理器一起进行操作。但是,处理器20不限于这方面。处理器20的体系结构允许作为被配置用于计算密集的应用的独立处理器来进行操作。
如上文所述,处理器20可以执行在连续的周期从计算引擎流向计算引擎的流操作,可以在单独的计算引擎内执行SIMD操作,并且可以执行流操作和SIMD操作的组合。流操作由流指令驱动,SIMD操作由SIMD指令驱动。可以根据正在执行的操作的类型来访问存储器。在计算阵列中,多个计算引擎接收相同的但在时间上有延迟的指令。处理器20包括公用序列发生器和用于多个计算引擎的地址生成器。
在此描述的处理器体系结构实现了低功耗。该设计是紧凑的,并且使用了短的总线长度和小驱动器。控制块中的功耗被分摊到多个计算引擎上。利用了小的存储器,并且对于许多应用而言需要减少的数据移动。寄存器堆可以具有256字的容量,使得需要较少的存储器访问。该设计可以被优化用于深流水线和低电压,而不是用于快速设备。
应当理解,在具有本发明的至少一个实施例的上述若干方面的情况下,本领域的技术人员可以容易地想到各种更改、修改和改进。这种更改、修改和改进旨在为本公开的一部分,并且旨在在本发明的精神和范围之内。因此,上述描述和附图仅仅作为示例。
Claims (45)
1.一种数字信号处理器,包括:
控制块,被配置用于基于存储的程序来发出流指令和流数据;以及
计算阵列,包括多个串联连接的计算引擎,所述计算阵列被配置成使得:(i)发出的流指令中的每个指令在第一计算引擎中执行,并在单一方向上流动以在连续的时段在所述多个串联连接的计算引擎中的每个连续的计算引擎中执行;以及(ii)所述流数据从所述多个串联连接的计算引擎中的最后计算引擎直接再循环返回到所述第一计算引擎。
2.根据权利要求1所述的数字信号处理器,其中所述计算引擎中的每个计算引擎包括:指令管道,被配置用于控制所述流指令经过计算阵列的流动。
3.根据权利要求2所述的数字信号处理器,其中所述计算引擎中的每个计算引擎还包括:至少一个流单元,被配置用于对与发出的流指令相关联的数据执行流操作。
4.根据权利要求3所述的数字信号处理器,其中所述计算引擎中的每个计算引擎还包括:一个或更多个计算单元,用于执行数字信号计算;以及寄存器堆,用于保存数字信号计算的操作数。
5.根据权利要求4所述的数字信号处理器,其中所述计算引擎中的每个计算引擎还包括至少一个存储器。
6.根据权利要求1所述的数字信号处理器,其中所述计算阵列还包括:至少一个存储器,被配置用于随所述计算引擎中的每个计算引擎一起进行操作。
7.根据权利要求6所述的数字信号处理器,其中所述计算阵列还包括:耦合在存储器与计算引擎之间的分级缓冲器,所述分级缓冲器具有有延迟的段,所述延迟与对应的计算引擎在计算阵列中的位置相对应。
8.根据权利要求6所述的数字信号处理器,其中所述计算阵列中的计算引擎被配置用于对存储器的内容执行逐列操作。
9.根据权利要求6所述的数字信号处理器,其中所述计算阵列中的计算引擎被配置用于对存储器的内容执行逐行逐列的操作。
10.根据权利要求6所述的数字信号处理器,其中所述计算阵列中的计算引擎被配置用于对存储器的内容执行逐行操作。
11.根据权利要求6所述的数字信号处理器,其中所述计算引擎中的每个计算引擎还包括:DMA缓冲器,其与所述存储器相关联,并被配置用于将数据传送至所述存储器以及从所述存储器传送数据。
12.根据权利要求1所述的数字信号处理器,其中所述计算引擎中的每个计算引擎具有流水线体系结构。
13.根据权利要求1所述的数字信号处理器,其中所述流指令中的每个指令在连续的时钟周期流经所述连续的计算引擎。
14.根据权利要求1所述的数字信号处理器,其中所述计算阵列包括:一个或更多个开关,被配置用于将计算引擎形成为组。
15.根据权利要求1所述的数字信号处理器,其中所述计算阵列包括以串联配置的八个计算引擎。
16.根据权利要求6所述的数字信号处理器,其中所述计算阵列包括:至少一个加载行高速缓存,用于保存来自存储器行的数据以用于加载操作。
17.根据权利要求6所述的数字信号处理器,其中所述计算阵列包括:至少一个存储行高速缓存,用于保存数据以用于存储器行中的存储操作。
18.根据权利要求6所述的数字信号处理器,其中所述计算阵列包括:一个或更多个总线,被配置用于在计算引擎之间传送指令和数据。
19.根据权利要求18所述的数字信号处理器,其中所述计算引擎中的每个计算引擎包括:一个或更多个总线,被配置用于向存储器传送信息以及从存储器传送信息。
20.根据权利要求4所述的数字信号处理器,其中所述流单元被配置用于从存储器加载数据、以及使数据在连续的计算引擎中的一个或更多个所选寄存器之间进行移位。
21.根据权利要求4所述的数字信号处理器,其中所述流单元被配置用于从存储器加载数据、以及向所述计算引擎中的每个计算引擎中的一个或更多个所选寄存器广播数据。
22.根据权利要求4所述的数字信号处理器,其中所述流单元被配置用于对来自连续的计算引擎中的一个或更多个所选寄存器的数据进行累加以及存储结果。
23.根据权利要求6所述的数字信号处理器,其中所述计算阵列被配置用于访问宽的存储器字以用于流操作,并被配置用于访问与每个计算引擎相关联的存储器段以用于计算引擎内的操作。
24.根据权利要求11所述的数字信号处理器,其中所述DMA缓冲器被配置用于根据指定的交织参数来对数据进行交织。
25.根据权利要求1所述的数字信号处理器,其中所述计算阵列被配置用于响应于第一类型的指令而执行各个计算引擎内的操作,并被配置用于响应于所述流指令而执行跨计算引擎的流操作。
26.根据权利要求5所述的数字信号处理器,其中所述计算引擎中的每个计算引擎被配置用于在其存储器中执行独立的表查找。
27.一种用于数字信号处理的方法,包括:
提供包括控制块和计算阵列的数字信号处理器,所述计算阵列包括多个串联连接的计算引擎;
在所述控制块中基于所存储的程序而发出流指令和流数据;
在第一计算引擎中执行发出的流指令中的每个指令;
将发出的流指令中的每个指令在连续的时段在单一方向上循环到所述多个串联连接的计算引擎中的每个连续的计算引擎,并在所述多个串联连接的计算引擎中的每个连续的计算引擎中执行发出的流指令中的每个指令;以及
将所述流数据从所述多个串联连接的计算引擎中的最后计算引擎直接再循环返回到所述第一计算引擎。
28.根据权利要求27所述的方法,其中对发出的流指令中的每个指令的执行包括:执行流加载操作,所述流加载操作从存储器位置处加载寄存器的内容并执行跨计算引擎的操作。
29.根据权利要求27所述的方法,其中执行发出的流指令中的每个指令包括:执行流存储操作,所述流存储操作执行跨计算引擎的操作并将结果存储到存储器位置中。
30.根据权利要求27所述的方法,其中执行发出的流指令中的每个指令包括:形成计算引擎的组,以用于单独的控制。
31.根据权利要求27所述的方法,其中执行发出的流指令中的每个指令包括:通过数据流式传输来向所述计算引擎提供数据,而不进行存储器访问。
32.一种数字信号处理器,包括:
控制处理器;
处理器,包括控制块和计算阵列,所述控制块被配置用于基于已存储的程序来发出流指令和流数据,所述计算阵列包括多个串联连接的计算引擎,所述计算阵列被配置成使得:(i)发出的流指令中的每个指令在第一计算引擎中执行,并在单一方向上流动以在连续的时段在所述多个串联连接的计算引擎中的每个连续的计算引擎中执行;以及(ii)所述流数据从所述多个串联连接的计算引擎中的最后计算引擎直接再循环返回到所述第一计算引擎;以及
主存储器,其能够被所述控制处理器和所述处理器访问。
33.根据权利要求32所述的数字信号处理器,其中所述计算引擎中的每个计算引擎包括:指令管道,被配置用于控制所述流指令经过计算阵列的流动。
34.根据权利要求33所述的数字信号处理器,其中所述计算引擎中的每个计算引擎还包括:流单元,被配置用于对与发出的流指令相关联的数据执行流操作。
35.根据权利要求34所述的数字信号处理器,其中所述计算引擎中的每个计算引擎还包括:一个或更多个计算单元,用于执行数字信号计算;以及寄存器堆,用于保存数字信号计算的操作数。
36.根据权利要求35所述的数字信号处理器,其中所述计算引擎中的每个计算引擎还包括:至少一个计算阵列存储器,被配置用于随所述寄存器堆一起进行操作。
37.根据权利要求34所述的数字信号处理器,其中所述计算阵列还包括:至少一个存储器,被配置用于随所述计算引擎中的每个计算引擎一起进行操作;其中所述计算阵列存储器能够被所述控制处理器所访问。
38.根据权利要求37所述的数字信号处理器,其中所述计算阵列还包括:分级缓冲器,其耦合在所述计算阵列存储器与所述计算引擎中的每个计算引擎之间。
39.根据权利要求37所述的数字信号处理器,其中所述计算阵列中的计算引擎被配置用于对所述计算阵列存储器的内容执行逐列操作。
40.根据权利要求37所述的数字信号处理器,其中所述计算阵列中的计算引擎被配置用于对所述计算阵列存储器的内容执行逐行逐列的操作。
41.根据权利要求37所述的数字信号处理器,其中计算阵列中的计算引擎被配置用于对所述计算阵列存储器的内容执行逐行操作。
42.根据权利要求32所述的数字信号处理器,其中所述计算阵列包括:一个或更多个开关,被配置用于将所述计算引擎形成为组。
43.根据权利要求37所述的数字信号处理器,其中所述计算阵列包括:至少一个加载行高速缓存,用于保存来自存储器行的数据以用于加载操作。
44.根据权利要求37所述的数字信号处理器,其中所述计算阵列包括:至少一个存储行高速缓存,用于保存数据以用于存储器行中的存储操作。
45.根据权利要求36所述的数字信号处理器,其中所述计算引擎中的每个计算引擎被配置用于在其计算阵列存储器中进行独立的表查找。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/008,220 | 2008-01-09 | ||
US12/008,220 US8078834B2 (en) | 2008-01-09 | 2008-01-09 | Processor architectures for enhanced computational capability |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101482811A CN101482811A (zh) | 2009-07-15 |
CN101482811B true CN101482811B (zh) | 2014-01-22 |
Family
ID=40845522
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910000709.0A Active CN101482811B (zh) | 2008-01-09 | 2009-01-07 | 用于增强的计算能力的处理器体系结构 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8078834B2 (zh) |
CN (1) | CN101482811B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8108653B2 (en) * | 2008-01-09 | 2012-01-31 | Analog Devices, Inc. | Processor architectures for enhanced computational capability and low latency |
US8078834B2 (en) | 2008-01-09 | 2011-12-13 | Analog Devices, Inc. | Processor architectures for enhanced computational capability |
US8612503B2 (en) * | 2010-03-16 | 2013-12-17 | Integrated Device Technology, Inc. | Methods and apparatuses for flexible and high performance digital signal processing |
US9823928B2 (en) * | 2011-09-30 | 2017-11-21 | Qualcomm Incorporated | FIFO load instruction |
US9880845B2 (en) * | 2013-11-15 | 2018-01-30 | Qualcomm Incorporated | Vector processing engines (VPEs) employing format conversion circuitry in data flow paths between vector data memory and execution units to provide in-flight format-converting of input vector data to execution units for vector processing operations, and related vector processor systems and methods |
US9977676B2 (en) * | 2013-11-15 | 2018-05-22 | Qualcomm Incorporated | Vector processing engines (VPEs) employing reordering circuitry in data flow paths between execution units and vector data memory to provide in-flight reordering of output vector data stored to vector data memory, and related vector processor systems and methods |
GB2569775B (en) | 2017-10-20 | 2020-02-26 | Graphcore Ltd | Synchronization in a multi-tile, multi-chip processing arrangement |
GB2569271B (en) | 2017-10-20 | 2020-05-13 | Graphcore Ltd | Synchronization with a host processor |
GB2569844B (en) * | 2017-10-20 | 2021-01-06 | Graphcore Ltd | Sending data off-chip |
GB2575294B8 (en) | 2018-07-04 | 2022-07-20 | Graphcore Ltd | Host Proxy On Gateway |
GB2579412B (en) | 2018-11-30 | 2020-12-23 | Graphcore Ltd | Gateway pull model |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN85109763A (zh) * | 1984-12-24 | 1986-07-16 | 株式会社日立制作所 | 并行处理计算机 |
CN1072788A (zh) * | 1991-11-27 | 1993-06-02 | 国际商业机器公司 | 动态多方式并行处理器阵列体系结构的计算机系统 |
CN1658186A (zh) * | 2004-02-16 | 2005-08-24 | 松下电器产业株式会社 | 并行运算处理器 |
US7295334B2 (en) * | 2000-03-31 | 2007-11-13 | Riso Kagaku Corporation | Image processing apparatus having configurable processors |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US177867A (en) * | 1876-05-23 | Improvement in feeding devices for pill-machines | ||
GB8517376D0 (en) | 1985-07-09 | 1985-08-14 | Jesshope C R | Processor array |
WO2003025781A2 (de) | 2001-09-19 | 2003-03-27 | Pact Xpp Technologies Ag | Verfahren zur konfiguration der verbindung zwischen datenverarbeitungszellen |
US5954811A (en) * | 1996-01-25 | 1999-09-21 | Analog Devices, Inc. | Digital signal processor architecture |
US5896543A (en) * | 1996-01-25 | 1999-04-20 | Analog Devices, Inc. | Digital signal processor architecture |
US7636835B1 (en) * | 2006-04-14 | 2009-12-22 | Tilera Corporation | Coupling data in a parallel processing environment |
US8078834B2 (en) | 2008-01-09 | 2011-12-13 | Analog Devices, Inc. | Processor architectures for enhanced computational capability |
-
2008
- 2008-01-09 US US12/008,220 patent/US8078834B2/en active Active
-
2009
- 2009-01-07 CN CN200910000709.0A patent/CN101482811B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN85109763A (zh) * | 1984-12-24 | 1986-07-16 | 株式会社日立制作所 | 并行处理计算机 |
CN1072788A (zh) * | 1991-11-27 | 1993-06-02 | 国际商业机器公司 | 动态多方式并行处理器阵列体系结构的计算机系统 |
US7295334B2 (en) * | 2000-03-31 | 2007-11-13 | Riso Kagaku Corporation | Image processing apparatus having configurable processors |
CN1658186A (zh) * | 2004-02-16 | 2005-08-24 | 松下电器产业株式会社 | 并行运算处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN101482811A (zh) | 2009-07-15 |
US8078834B2 (en) | 2011-12-13 |
US20090177867A1 (en) | 2009-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101482811B (zh) | 用于增强的计算能力的处理器体系结构 | |
US20230020571A1 (en) | Method and apparatus for distributed and cooperative computation in artificial neural networks | |
CN109147842B (zh) | 同时进行数据路径中计算操作的设备及方法 | |
CN1809810B (zh) | 指令控制数据处理设备 | |
US8108653B2 (en) | Processor architectures for enhanced computational capability and low latency | |
US6208772B1 (en) | Data processing system for logically adjacent data samples such as image data in a machine vision system | |
CN107229463A (zh) | 计算设备和相应计算方法 | |
CN102402415B (zh) | 一种动态可重构阵列内数据缓存的装置及方法 | |
CN111656339B (zh) | 存储器装置及其控制方法 | |
WO2018175121A1 (en) | Apparatuses and methods for in-memory data switching networks | |
US7581080B2 (en) | Method for manipulating data in a group of processing elements according to locally maintained counts | |
US20060212613A1 (en) | Data processor apparatus | |
KR20070061538A (ko) | Simd 프로세서 및 데이터 통신 방법 | |
WO2016024508A1 (ja) | マルチプロセッサ装置 | |
CN108269601B (zh) | 非易失性存储器中的处理器 | |
CN101470600B (zh) | 一种超长指令字处理的方法和装置 | |
CN106610817A (zh) | 用于采取vliw处理器中的相同执行数据包中的常数扩展槽指定或扩展常数位数的方法 | |
CN1329819C (zh) | 互换地址寄存器所存内容的方法和设备 | |
CN116050492A (zh) | 一种扩展单元 | |
US11488650B2 (en) | Memory processing unit architecture | |
US7263543B2 (en) | Method for manipulating data in a group of processing elements to transpose the data using a memory stack | |
WO2020226903A1 (en) | Memory processing unit architecture | |
CN101398784A (zh) | 一种二维寻址方法及装置 | |
JP2022028579A (ja) | 命令取得、解読、実行と論理アドレスとバスネットの回路が有る記憶装置 | |
US8856493B2 (en) | System of rotating data in a plurality of processing elements |
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 |