用于增强的计算能力的处理器体系结构的制作方法

文档序号:6480109阅读:195来源:国知局
专利名称:用于增强的计算能力的处理器体系结构的制作方法
技术领域
本发明涉及处理器体系结构,更具体地,涉及有利于高性能数字信号 处理计算的数字信号处理器体系结构。所公开的数字信号处理器可以随其 它处理器一起^吏用,或者作为独立的处理器4吏用。
背景技术
数字信号处理器(DSP)是被设计用于对数字信号处理应用的性能进 行优化的专用计算机,所述数字信号处理应用例如为快速傅里叶变换、教 字滤波、图像处理、无线系统中的信号处理以及语音识别。数字信号处理 器应用典型地具有实时操作、高中断率以及密集的数值计算的特征。此夕卜, 数字信号处理器应用趋向于存储器访问操作密集以及需要对大量数据的 输入和输出。数字信号处理器体系结构典型地被优化用于有效地执行这种 计算。
数字信号处理器的核心处理器典型地包括计算块、程序序列发生器、 指令解码器、以及执行数字信号计算所需要的所有其它元件。计算块是数
字信号处理器的基本计算元件,并且典型地包括寄存器堆以及一个或更多 个计算单元,所述计算单元例如为乘法器和算术逻辑单元(ALU)。
数字信号计算实际上经常是重复性的。也就是说,可能多次用不同的 数据来执行相同或相类似的计算。因此,各个计算的l变的任何提高可能 提供数字信号处理器的性能的显著增强。
诸如无线系统中的基站之类的一些应用具有超出当前数字信号处理 器的能力的性能需求和时序需求。为了满足这些需求,设计者使用了与 ASIC (专用集成电路)和/或FPGA (现场可编程门阵列)相组合的数字 信号处理器。这种系统缺乏灵活性Jbf目对昂贵。此外,所需要的性能随着 下一代无线系统的引入而提高。高功耗通常是高性能处理器中存在的问 题。
可以取决于预期应用而针对不同的操作参数来优化数字信号处理器设计,所述不同的操作参数例如为计算速度、功耗以及编程的简易性。此
外,数字信号处理器可以被设计用于不同的字长。在1999年9月21日授 权给Garde的美国专利5954811中7>开了利用长指令字和宽数据总线并 且实现了高运算速度的32位体系结构。核心处理器包括两个计算块。尽 管具有很高的性能,但是该公开的处理器并未提供用于所有应用的优化的 解决方案。
因此,存在对数字信号处理器体系结构和性能的进一步创新的需求。

发明内容
根据本发明的第一方面, 一种数字信号处理器包括控制块,被配置 用于基于已存储的程序来发出指令;以及计算阵列,包括两个或更多个计 算引擎,所述计算阵列被配置成使得所发出的指令中的每个指令在连续的 时段、在至少所述计算引擎的子集中的连续的计算引擎中执行。所述计算 阵列可以被配置成使得所发出的指令中的每个指令在连续的时段流经至 少所述计算引擎的子集中的、连续的计算引擎。
所述计算引擎中的每个计算引擎可以包括指令管道,被配置用于控 制指令经过计算阵列的流动;以及至少一个流单元,被配置用于对与所述 指令相关联的数据执行流操作。所述计算引擎中的每个计算引擎还可以包 括 一个或更多个计算单元,用于执行数字信号计算;以及寄存器堆,用 于保存数字信号计算的操作数。
所述计算阵列包括至少一个存储器。在一些实施例中,所述计算引擎
中的每个计算引擎包括第一存储器和第二存储器。在其它实施例中,所述 计算阵列包括被配置用于随所述计算引擎中的每个计算引擎一起操作的
第一存储器和第二存储器。所述计算阵列中的计算引擎可以被配置用于对 所述存储器的内容执行逐列操作、逐行逐列的操作、以及逐行操作。
在一些应用中,所述流单元可以被配置用于从存储器加栽数据、以及 将数据移位到连续的计算引擎中的一个或更多个所选寄存器中。在其它应 用中,所述流单元可以被配置用于从存储器加载数据、以及向所述计算引 擎中的每个计算引擎中的一个或更多个所选寄存器广播数据。在另外的应 用中,所述流单元可以被配置用于对来自连续的计算引擎中的一个或更多 个所选寄存器的数据进行累加以及存储结果。在一些实施例中,流单元中 的寄存器与寄存器堆中的寄存器相交互。在一些应用中,可以将所述计算引擎形成为组。在其它应用中,可以 使数据再循环经过计算阵列。
根据本发明的第二方面, 一种用于数字信号处理的方法包括提供一 种包括控制块和计算阵列的数字信号处理器,其中该计算阵列包括两个或 更多个计算引擎;在所述控制块中基于已存储的程序来发出指令;以及在 连续的时段、在至少所述计算引擎的子集中的连续的计算引擎中执行所发 出的指令中的每个指令。
根据本发明的第三方面, 一种数字信号处理器包括控制处理器;处 理器,所述处理器包括被配置用于基于已存储的程序来发出指令的控制 块,以及计算阵列,所述计算阵列包括两个或更多个计算引擎,所述所述 计算阵列被配置成使得在连续的时段、在至少所述计算引擎的子集中的连 续的计算引擎中执行所发出的指令中的每个指令;以及能够被所述控制处 理器和所述处理器访问的主存储器。所述计算阵列可以被配置成使得所发 出的指令中的每个指令在连续的时段流经至少所述计算引擎的子集中的、 连续的计算引擎。


为了更好地理解本发明,参考通过引用而合并于此的附图,在附图中
图l是根据本发明的实施例的数字信号处理器的示意性框图2是图1所示的处理器的实施例的示意性框图3是图2所示的计算引擎之一的实施例的示意性框图4是图2所示的计算阵列的第二实施例的示意性框图5是示出了根据本发明的实施例的、用于流^Mt的存储器地址空间 的示意性;f匡图6是示出了根据本发明的实施例的、用于SIMD操作的存储器地 址空间的示意性4匡图6A是示出了根据本发明的另一实施例的、用于SIMD操作的存储 器地址空间的示意性框图7是根据本发明的实施例的流单元的示意性框图8A是执行流加载指令的流单元的示意性框图;图8B是示出了流加载指令的执行的示意性框图9A是执行流存储指令的流单元的示意性框图9B是示出了 ;i^储指令的操作的示意性框图IO是计算阵列的示意性框图,其示出了根据本发明的实施例的数 据通路总线;
图11是示出了根据本发明的实施例的对称滤波计算的示意性框图12是根据本发明的实施例的计算引擎的示意性框图13是示出了计算引擎的分组的示意性框图14是图2所示的控制块的实施例的示意性框图15是示出了根据本发明的实施例的DMA交织的示意性框图16是示出了使用根据本发明的实施例的处理器的逐列处理的示意 性图示;
图17是示出了使用根据本发明的实施例的处理器的逐行逐列的处理 的示意性图示;
图18是示出了使用根据本发明的实施例的处理器的逐行处理的示意 性图示;
图19是示出了使用根据本发明的实施例的处理器的带移位的逐行处 理的示意性图示;以及
图20是示出了使用根据本发明的实施例的处理器的带移位和广播的 逐行处理的示意性图示。
具体实施例方式
图1中示出了根据本发明的实施例的数字信号处理器的示意性框图。 数字信号处理器(DSP) 10包括控制处理器12、存储器14、 1/0端口 16 和处理器20。控制处理器12与处理器20进行交互,并访问存储器14。 DMA1总线22在存储器14与处理器20之间传送数据。DMA2总线24 在存储器14、处理器20和I/O端口 16之间传送数据。1/0端口 16可以 经由FIFO或I/O緩冲器直接与处理器20进行通信。I/O端口 16提供了 去向诸如主机计算机之类的外部存储器、外部装置和/或外部处理器的接 O 。作为示例,控制处理器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、整数ALU38和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。但是,本 发明并不限于这方面,并且每个指令可以在任意数量的时钟周期之后从一 个计算引擎行进至下个计算引擎。此外,指令不一定在第一个计算引擎处
l计算阵列32,而是可以在所述计算引擎中的任一计算引擎处^。 该特性例如在利用对计算引擎的分组的应用中是有益的。所述计算引擎中 的每个计算引擎可以被单独地流水线化,因此可能需要若干时钟周期来完 成指令的执朴。此外,数据在连续的时段流至连续的计算引擎,这将在下 面详细描述。
在图2的实施例中,指令在连续的时钟周期流经所述计算引擎中的所 有计算引擎或所述计算引擎的子集。在其它实施例中,控制块30发出的 指令可以被广播至所述计算引擎中的所有计算引擎或所述计算引擎的子集。在该实施例中,根据计算引擎在计算阵列中的位置来延迟所广播的指 令,使得每个广播的指令在连续的时段在连续的计算引擎中执行。例如,
所广播的指令可以在计算引擎50中无延迟,在计算引擎51中有一个时钟 周期的延迟,在计算引擎52中有两个时钟周期的延迟,等等。在每种情 况下,每个发出的指令在连续的时a^连续的计算引擎中执行。在利用对 计算引擎的分组的情况下,每个指令在连续的时段在所述组中的连续的计 算引擎中执行。
图3中示出了单个计算引擎的实施例的示意性框图。每个计算引擎包 括指令管道70和流单元72,指令管道70用于控制经过计算引擎的阵列 的指令流,流单元72用于控制计算引擎的阵列中的数据流。连续的计算 引擎中的指令管道70通过指令总线120耦合在一起。连续的计算引擎中 的流单元72通过流总线102耦合在一起。每个计算引擎一般可以配置有 一个或更多个流单元以及一个或更多个流总线。指令管道70保存指令并 向计算引擎提供控制信号以用于执行指令。每个计算引擎中的指令管道 70在长度上可以是一个或更多个时钟周期。在一个实施例中,每个计算 引擎中的指令管道70在长度上是一个时钟周期。
每个计算引擎还包括计算块74、寄存器堆76和DMA緩冲器82。在 图2的实施例中,每个计算引擎包括X存储器78和Y存储器80。可以 将与所述计算引擎中的每个计算引擎相关联的存储器实现为SRAM。如 同下面所讨论的,可以以不同的方式来实现该存储器。在另一实施例中, 每个计算引擎可以包括单个存储器。计算块74可以包括一个或更多个计 算单元。例如,计算块74可以包括乘法器卯、算术逻辑单元(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的输入端连接到在先
12的计算引擎中的流单元,并且流数据在流总线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在空间上更 为有效。替代实现八个存储器,,可以通it^DRAM与计算引擎之间 插入分级緩冲器来4吏用单个DRAM,以顺序地将数据按行提供给计算阵 列的每个段。存储器访问经过与延迟线起类似作用的分m冲器88。分 级緩沖器88中的负栽延迟线具有随段号而增加的延迟。也就是说,段0 无延迟,段1具有1个周期的延迟,等等,以及段7具有7个周期的延迟。 对于分M冲器88中的存储延迟线而言,延迟是相反的。也就是说,段 0具有7个周期的延迟,段1具有6个周期的延迟,等等,以及段7无延 迟。由于分级緩冲器88在8个时钟周期内被清空,因此可以用动态逻辑 来构建分级緩冲器88。
在本发明的范围之内,计算阵列32可以具有不同的存储器配置。图 2示出了每个计算引擎包括X存储器78和Y存储器80的实施例,图4 示出了计算阵列32包括单个X存储器84和单个Y存储器86的实施例。 在其它实施例中,每个计算引擎可以包括单个存储器或多于两个的存储 器。在另外的实施例中,单个存储器可以服务于整个计算阵列。在另外的实施例中,计算阵列可以包括与相应的计算引擎相关联的单独的段存储器 (典型地是较小的存储器),以及一个服务于整个计算阵列的存储器(典 型地是较大的存储器)。在这些具有八个计算引擎的实施例中一般可以配
置一个或更多个存储器来服务于l个、2个、4个或8个计算引擎。
计算阵列32可以包括行高速緩存130 (图4 ),行高速緩存130允许 在单个周期内緩存1024位的数据行以用于流访问。这在后续对该行的流 访问中释放了存储器。由于行高速緩存,程序员不需要访问四倍长字,从 而最小化存储器访问。这通常简化和减小了程序大小。这还减少了功耗, 并且允许对存储器的较优的DMA访问。行高速緩存130优选地包括加载 行高速緩存(LRC)和存储行高速緩存(SRC)。优选地,行高速緩存只 支持流访问而不支持SIMD访问。行高速緩存可以在图2和2A的实施例 中使用。计算阵列32可以包括一个或更多个加载行高速緩存以及一个或 更多个存储行高速緩存。
加载行高速緩存保存存储器中当前访问的整个行。该行是在第一次执 行流加载指令时自动加载的。加载行高速緩存的功能是如同高速緩存一样 起作用,以减少后续对存储器的流访问的数量。加载行高速緩存还提供了 拆分功能,特别是用于短字。控制器不再对存储器进行流访问,直到行地 址改变。例如,该緩冲器可以保存64个短字,并省去了 63次对存储器的 访问。
存储行高速緩存在被充满之前对输入流结果进行打包。当被充满时, 存储行高速緩存^向存储器的存储。存储行高速緩存如同高速緩存一样 起作用,以减少对存储器的多次单独访问。存储行高速緩存还提供打包功 能,特别是用于短字。控制器不将存储行高速緩存的内M储到存储器中, 直到行地址改变或者直到行高速緩存被充满。例如,该緩冲器可以保存 64个短字结果,并省去对存储器的63次访问。
控制块30发出用于计算阵列32的加载/存储指令和计算指令。指令 从左侧1计算阵列,并在每个时钟周期从一个段流到下个段,直到它们 在八个时钟周期之后离开该阵列。进入阵列的数据按照指令所指定地以相 同的方式流经该阵列。计算的结果按照指令所指定地以类似的方式跨计算 引擎地流动,当流动结束时,可以将结果存储在存储器中。如果应用需要 多于八个的计算引擎,则数据和结果可以再循环经过计算阵列32。相反 地,对于需要较少的计算引擎的应用,八个计算引擎可以被配置成组。通 过每个计算引擎中的开关来实现组。每个计算引擎中的存储器在使用流指令时是所有计算引擎的共用资源,但是对于SIMD (单个指令,多个数据) 指令而言是局部资源。
指令、数据和结果在每个时钟周期水平地逐段流过阵列。该流产生了 以下编程假象不管处理是水平地跨过阵列、是以SIMD方式垂直,过 阵列、还是以二者的组合(因此是SIMD-流)跨过阵列,都存在一个处 理器和一个存储器。同时执行SIMD操作和流操作的能力显著地增强了体 系结构的通用性。通it^流操作期间对段进行分组以允许需要较少量操作 的任务得到优化管理的能力,来增强流体系结构的通用性。利用SIMD 操作,每个段所作的工作可以有相当大的差别。这是因为,大多数指令可 以是有条件的,或者可以根据每个段的唯一 ID来进行修改。
在计算阵列的每个段中包括单独的存储器的实施例中,每个段可以执 行独立的表查找。通过由控制块30中的地址生成器将每个段中的地址偏 移量寄存器的内容与广播给所有段的公共地址相加,可以在每个段中执行 对存储器的表查找。这允许在每个段中执行单独的表查找。在每个段中复 制表以允许同时查找。存储器访问指令具有指定是否调用地址偏移量寄存 器的位。
可以利用不同的寻址方案来进行SIMD操作(单个计算引擎中的非 流操作)和流操作(跨计算引擎的操作)。基于指令类型来选择寻址方案。
对于流存储器访问,存储器表现为单个字长很宽的存储器,并且在包 括八个段的实施例中每一行具有1024位或具有32个各为32位的字,其 中每一段具有存储器行,所述存储器行具有四个32位的字。为实现它, 每个存储器段只响应于其列地址。流地址只应用于一个存储器段。所选的 段将其数据置于FMD总线94上。当使用组时,流地址为每个组所共用。 因此,对于各具有四个段的两个组而言,行大小为16个字,但是存在两 组该行地址。图5中示出了賴^据本发明的实施例的流寻址方案。如图5 所示,流地址跨所有段地线性增加。
对于SIMD存储器访问,X存储器和Y存储器各表现为八个并列的 存储体。每个存储器段接JlM目同的地址并相同地进行操作。因此,数据被 存储为八+数据集。用于存储器段的地址和控制在每个时钟周期在指令流 总线120上从左流向右,使得连续的段在连续的周期进行响应。SIMD存 储器可以被概括为包括八个相同的存储器,每个段具有公共地址。该地址 被广播给所有段,并且每个段每行有四个32位的字。地址空间是一个段 的地址空间。因此,加载指令从每个存储器段中的相同地址处加载每个段中的一个或更多个寄存器的内容。但是,由于指令跨阵列地流动,因此每
个段比在先段晚一个周期进行响应。图6中示出了根据本发明的实施例的 SIMD存储器寻址方案。如图6所示,在每个段中SIMD地址增加。
虽然图5和6示出了针对流操作和SIMD操作的不同寻址方案,但 是应当理解,并不要求不同的寻址方案。更具体地,可以^使用线性地址空 间来进行流操作和SIMD操作。在这种情况下,SIMD存储器访问使用较 大的地址增量来访问下个存储器行。
图6A中示出了根据本发明的另一实施例的SIMD存储器寻址方案。 该寻址方案允许使用相同的存储器地址空间来进行流操作和SIMD操作。 对于SIMD存储器访问,地址生成器在每个四倍边界处基于模数32来增 加SIMD地址,即,来自地址位al的进位进位到地址位a5。这是因为计 算阵列自身隐含地增加位a4:2。因此,对于SIMD操作和流操作而言, 地址空间可以保持为相同的和线性的。地址生成器修改地址使得来自位 al的进位被关联到位a5,以针对中间的位在阵列中被隐含地增加的事实 而进4亍调整。因此,增加一将4吏地址从0、 1、 2、 3、 32、 34、 35、 64、 65、 66等处开始。中间的地址在阵列中被隐含地用于SIMD访问。X存 储器和Y存储器各表现为八个并列的存储体。每个存储器段接i!M目同的 地址并相同地进行操作。因此,数据被存储为八个数据集。用于存储器段 的地址和控制在每个时钟周期(在指令流总线上)从左流向右,使得连续 的段在连续的时钟周期进行响应。
图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,以提供灵活性。
流操作有两种基本类型(l)M储器进行流加载的操作,其利用诸 如跨所有段的移位之类的操作,以及(2)向存储器进行流存储的操作, 其利用诸如跨所有段的累加之类的操作。除了流存储器访问是按行访问存储器而不是按列访问存储器之夕卜,流存储器访问与SIMD存储器访问相类 似。
以下指令支持流操作
OP Rm = = [Jml; 〃流加载指令
[JmOP = = Rm; 〃流存储指令
流加载指令从存储器位置Jm处加载Rm寄存器的内容,并跨所有段 地执行操作OP (典型地是延迟线移位或广播)。流存储指令跨所有段地 对寄存器Rm执行操作OP (典型地是累加),并将结果存储到存储器位 置Jm处。"==,,符号表示流指令。OP操作表示可以在流操作期间执行 的若干类型的操作,例如累加、移位、传送、广播以及异或。流操作是在 流单元72中执行的,流单元72可以以与存储器访问相类似的方式来访问 寄存器堆76,并且可以被看作替代性的存储器访问。
参照图8A和8B来描述流加载^Mt或DFLOW操作。针对流加载操 作,每个计算引擎中的流单元72利用定义流加载路径的四位D寄存器100 (D3:0 )。在第一计算引擎50中,流加栽操作包括从FMD总线94上的 存储器进行加载。在其它计算引擎51、 52、 ...、 57中的每个计算引擎中, 流加载操作包括在流总线102上的段之间的流,其细节取决于指定的操作 OP以及指定的一个或多个寄存器。
考虑通过SH R6 = = [J3 + = 1给出的流移位IMt的示例,该示例实现 了每个段中三个周期的延迟。流加栽操作在连续的时钟周期在计算阵列 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、 Rl、 R1:0、 R2、 R2:l、 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上的存储器中。^W^可以对来 自计算阵列的每个段的Rn寄存器的内M行求和,使得AFLOW输出是 计算阵列中的所有Rn寄存器的内容的总和。当AFLOW数据i^V段时, 该数据被与局部Rn寄存器的内斜目加,并在l^的周期中被输出至接收 数据的下个段。对所有段重复此操作。在八个时钟周期之后在最后一个段 处出现结果。例如,指令[3^1+ = = 110;对来自计算阵列的八个段中的每 个段的寄存器R0的内M行求和,并将结果存储在存储器中的地址adrl 处。AFLOW操作将去向计算阵列的第一段的流输入初始化为零。
考虑如图9A所示的、通过[13 + = 1==+ 115: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中的寄存器进M取和写入。
参照图IO来描述计算阵列32的计算引擎50-57之间的数据通路总线。 指令总线120连接在连续的计算引擎的指令管道70之间。指令i^指令 总线120上的计算阵列,并流经该计算阵列。指令l第一段(计算引擎 50),并被时钟控制为在每个时钟周期1每个连续的段。该总线提供用 于两次或三次存储器访问的地址以及用于两个计算操作的控制。计算阵列的大部分控制逻辑可以位于控制块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允许数据逐段地传送、广播或移位以及在需要多于八个的 段的情况下进行再循环。典型地,要共享的或要跨计算阵列地进行移位的 流数据在第一段中ii^阵列,并被跨所有段地进行移位。流总线102也用 于通过使计算结果在每个段中从左流向右来对该结果进行累加或以其它 方式进行操作。通常都需要用于移位功能的流以及用于累加或广播功能的 流,但是不一定要在同一周期中。由于可以配置流操作以使其不需要在每 个周期进行,因此在在不同的周期中使用流总线102的情况下,可以将流
总线102用于DFLOW^Mt和AFLOW^Mt。在其它的实施例中,计算 阵列32可以包括两个或更多个流总线,并且DFLOW操作和AFLOW操 作可以同时执行。
在未选择分组时,使用FMD总线94来加载数据。FMD总线94还 用于将流数据存储到存储器中。组中的最后一个计算引擎提供数据以及存 储位置的地址标记。对于加载,只有第一段提供地址,并且段l-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支持乘法器卯、 ALU 92、流单元72、 MAC加法器96、以及存储体78或84和80或86, 并且可以具有用于支持这些单元的十个端口 。乘法器90和流单元72在每 个周期中执M-改-写。寄存器堆76还可以具有可用于单周期上下文切 换的阴影副本(shadow copy ),以支持在流式传输数据时的中断。
乘法器卯可以是32 x 32定点乘法器,并且具有内置的相关功能和可 选的数据精度。乘法器可以执行具有实数数据类型和复数数据类型的四倍 的16位相乘。复数16位数据包括8位实数数据和8位虚数数据。对于 32x32相乘,需要附加的延迟周期。MAC加法器96和乘法器卯是半独 立的单元。从乘法器至MAC加法器的通路可以包含可在MAC加法器中 分解的部分和。
通过用于在流操作期间对段进行分组的能力可以增强流体系结构的 通用性。这允许优化地管理需要较小数量的^Mt的任务。示例包括4抽头 FIR (有限脉冲响应)操作和4x4矩阵操作。分组使用对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内的独立的流^Mt。
当应用需要多于八个的段时,计算阵列允许流操作再循环,从而产生 了很长的流阵列的效果。再循环的次数实际上是无限制的,但是吞吐量仍 然受到计算引擎的数量的限制,即,计算引擎是分时的。再循环将来自最 后一个段的DFLOW操作和AFLOW操作^J绩到第一个段,或者从组的 末端反馈到组的起始处。在再循环序列结束时,将累加结果写入存储器。
置乱是在计算阵列的段之间互换存储器数据的操作。可以以两个、四 个或八个为一组来置乱数据或互换数据。该操作可用于当数据被顺序地按 行存储在存储器中时前三级在段间互换数据的快速傅里叶变换。置乱操作 使用加载行高速緩存和存储行高速緩存作为緩冲器。数据最初从每段中的 所选存储器位置中被传送至加载行高速緩存。然后,在置乱操作中,使用 流总线和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的存储体的 内容。M/恢复可以同时在计算阵列32和控制块30中进行操作,从而 使性能与主处理器相比加倍。
控制块30向计算阵列32发出指令(加载/存储和计算)。指令在计算 引擎50处i^计算阵列32,并在连续的时钟周期顺序地1每个计算引擎,直到所述指令在八个时钟周期后离开。在指令中指定的流数据i^阵 列,并以相同的方式流经计算阵列。
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, O)中,然后将四个 四倍长字加载到每个DMA緩冲器中的位置DMAB(3,1)中。如图15的第 三行所示,为了按对进行交织,将四个四倍长字加载到每个DMA緩冲器 中的位置DMAB(l, O)中,然后将四个四倍长字加载到每个DMA緩冲器 中的位置DMAB(3, 2)中。对于无交织的DMA传送,按段顺序地加载四 倍长字。为了执行SIMD加载, 一次对DMA緩冲器中的一段进行加栽。 此外,可以通过对DMA緩冲器组进行加载来执行组加栽。
计算阵列32的SIMD-FLOW体系结构良好地适合于按列或按行或按 行和列的组合来对数据集进行操作。以下示例举例说明了这种^Mt。
图16中示出了其中计算阵列的每一段在单个通道(八个通道DA至 DH )上进行SIMD型操作的逐列点积。在计算阵列的段之间不共享数据。 这在到达的数据集被按列布置并且没有数据要共享的情况下良好地工作。 因此,在段0中,将系数CA0与数据DA0相乘,将系数CA1与数据DA1 相乘,等等,并且对结果进行累加以提供通道A总和。在其它段中执行 类似的操作。
图17中示出了逐行逐列的处理。系数CA0-CA7被按行水平地布置 在存储器中,而数据DAO-Dan被按列垂直地布置在存储器中。使每个系 数利用DFLOW通路而跨整个阵列地流动(广播)。系数连同对应的指令 一起流经每个段,使每个M似执行相同的^时间延迟的操作。这是有 共享系数的SIMD乘法累加操作的示例。对于波束形成,这允许由每个天 线(水平的)的所有时间样本共享一组系数,而跨所有天线地(垂直地) 完成求和。如果对数据和系数进行互换,则可以实现多相FIR滤波器, 其中每一段根据相同的数据实现了该滤波器的不同相位。利用图17的方 法可以完成矩阵相乘。 一个矩阵C的M广播并被与第二矩阵D的八列 相乘。八个结果位于每一段的MAC中。
图18中示出了逐行处理。图18的示例示出了逐个矢量的相乘中的逐 行点积。在逐行操作中,数据或系数均不流动,而是在AFLOW通路中 对来自每一段的乘法器结果进行累加。每一段对其乘积和到达的总和进行 求和,并将结果传递至下一段。
图19中示出了带移位的逐行^Mt。图19的示例示出了可以如何利用 逐行操作来实现FIR滤波器。数据^L存储在移位寄存器(DFLOW通 路)中,以实现带抽头的延迟线。数据被保持在存储器中,然后被加载到 流路径中,被移位,并且可选地被返回到存储器中。为了节省功率和存储器带宽,可以在多次移位之后执行加载操作和存储操作。当在小数量的通
道上进行操作时,DFLOW数据可以被保留在寄存器堆中,并且不将该数 据复制到存储器中。
图20的示例中示出了具有移位和广播的逐行处理。图20示出了 FIR 滤波器实施方案的变型,其中数据如常地在延迟线中被移位,但是系数被 流广播至所有段。在每个段中的累加寄存器MRO中原地完成累加,并利 用SIMD指令存储这些结果。
图1中示出了处理器20,并且在上文中将其描述为随控制处理器一 起进行操作。但是,处理器20不限于这方面。处理器20的体系结构允许 作为被配置用于计算密集的应用的独立处理器来进行IMt。
如上文所述,处理器20可以执行在连续的周期从计算引擎流向计算 引擎的流操作,可以在单独的计算引擎内执行SIMD操作,并且可以执行 流操作和SIMD操作的组合。流操作由流指令驱动,SIMD操作由SIMD 指令驱动。可以根据正在执行的操作的类型来访问存储器。在计算阵列中, 多个计算引擎接^目同的^fr时间上有延迟的指令。处理器20包括公用 序列发生器和用于多个计算引擎的地址生成器。
在此描述的处理器体系结构实现了低功耗。该设计是紧凑的,并且使 用了短的总线长度和小驱动器。控制块中的功耗被分摊到多个计算引擎 上。利用了小的存储器,并且对于许多应用而言需要减少的数据移动。寄 存器堆可以具有256字的容量,使得需要较少的存储器访问。该设计可以 被优化用于深流水线和低电压,而不是用于快速设备。
应当理解,在具有本发明的至少一个实施例的上述若干方面的情况 下,本领域的技术人员可以容易地想到各种更改、修改和改进。这种更改、 修改和改进旨在为本公开的 一部分,并且旨在在本发明的精神和范围之 内。因此,上述描述和附图仅>(31作为示例。
权利要求
1. 一种数字信号处理器,包括控制块,被配置用于基于存储的程序来发出指令;以及计算阵列,包括两个或更多个计算引擎,所述计算阵列被配置成使得发出的指令中的每个指令在连续的时段、在至少所述计算引擎的子集中的连续的计算引擎中执行。
2. 根据权利要求1所述的数字信号处理器,其中所述计算阵列被配 置成使得发出的指令中的每个指令在连续的时段流经至少所述计算引擎 的子集中的、连续的计算引擎。
3. 根据权利要求2所述的数字信号处理器,其中所述计算引擎中的 每个计算引擎包括:指令管道,被配置用于控制指令经过计算阵列的流动。
4. 根据权利要求3所述的数字信号处理器,其中所述计算引擎中的 每个计算引擎还包括至少一个流单元,被配置用于对与发出的指令相关 联的数据执行流操作。
5. 根据权利要求4所述的数字信号处理器,其中所述计算引擎中的 每个计算引擎还包括 一个或更多个计算单元,用于执行数字信号计算; 以及寄存器堆,用于保存数字信号计算的操作数。
6. 根据权利要求5所述的数字信号处理器,其中所述计算引擎中的 每个计算引擎还包括至少一个存储器。
7. 根据权利要求2所述的数字信号处理器,其中所述计算阵列还包 括至少一个存储器,被配置用于随所述计算引擎中的每个计算引擎一起 进行操作。
8. 根据权利要求7所述的数字信号处理器,其中所述计算阵列还包 括耦合在存储器与计算引擎之间的分级緩沖器,所述分级緩冲器具有有 延迟的段,所^J1迟与对应的计算引擎在计算阵列中的位置相对应。
9. 根据权利要求7所述的数字信号处理器,其中所述计算阵列中的 计算引擎被配置用于对存储器的内容执行逐列操作。
10. 根据权利要求7所述的数字信号处理器,其中所述计算阵列中的 计算引?^配置用于对存储器的内容执行逐行逐列的操作。
11. 根据权利要求7所述的数字信号处理器,其中所述计算阵列中的计算引擎被配置用于对存储器的内容执行逐行操作。
12. 根据权利要求7所述的数字信号处理器,其中所述计算引擎中的 每个计算引擎还包括DMA緩冲器,其与所述存储器相关联,并被配置 用于将数据传送至所述存储器以及从所述存储器传送数据。
13. 根据权利要求l所述的数字信号处理器,其中所述计算引擎中的 每个计算引擎具有流水线体系结构。
14. 根据权利要求2所述的数字信号处理器,其中所述指令中的每个 指令在连续的时钟周期流经所述连续的计算引擎。
15. 根据权利要求2所述的数字信号处理器,其中所述计算阵列包括: 一个或更多个开关,被配置用于将计算引擎形成为组。
16. 根据权利要求2所述的数字信号处理器,其中所述计算阵列被配 置用于使数据再循环经过计算引擎。
17. 根据权利要求2所述的数字信号处理器,其中所述计算阵列包括 以串联配置的八个计算引擎。
18. 根据权利要求7所述的数字信号处理器,其中所述计算阵列包括 至少一个加载行高速緩存,用于保存来自存储器行的数据以用于加载操 作。
19. 根据权利要求7所述的数字信号处理器,其中所述计算阵列包括 至少一个存储行高速緩存,用于*数据以用于存储器行中的存储操作。
20. 根据权利要求7所述的数字信号处理器,其中所述计算阵列包括 一个或更多个总线,被配置用于在计算引擎之间传送指令和数据。
21. 根据权利要求20所述的数字信号处理器,其中所述计算引擎中 的每个计算引擎包括 一个或更多个总线,被配置用于向存储器传送信息 以及从存储器传送信息。
22. 根据权利要求5所述的数字信号处理器,其中所述流单元被配置 用于从存储器加载数据、以及使数据在连续的计算引擎中的一个或更多个 所选寄存器之间进行移位。
23. 根据权利要求5所述的数字信号处理器,其中所述流单元被配置 用于M储器加载数据、以及向所述计算引擎中的每个计算引擎中的一个 或更多个寄存器广播数据。
24. 根据权利要求5所述的数字信号处理器,其中所述流单元被配置 用于对来自连续的计算引擎中的一个或更多个所选寄存器的数据进行累 加以及存储结果。
25. 根据权利要求7所述的数字信号处理器,其中所述计算阵列被配 置用于访问宽的存储器字以用于流操作,并被配置用于访问与每个计算引 擎相关联的存储器段以用于计算引擎内的操作。
26. 根据权利要求12所述的数字信号处理器,其中所述DMA緩沖 器被配置用于4艮据指定的交织^iM"lt据ii行交织。
27. 根据权利要求2所述的数字信号处理器,其中所述计算阵列被配 置用于响应于第一类型的指令而执行各个计算引擎内的操作,并被配置用 于响应于第二类型的指令而执行跨计算引擎的流操作。
28. 根据权利要求6所述的数字信号处理器,其中所述计算引擎中的 每个计算引擎被配置用于在其存储器中执行独立的表查找。
29. —种用于数字信号处理的方法,包括提供包括控制块和计算阵列的数字信号处理器,所述计算阵列包括两 个或更多个计算引擎;在所述控制块中基于所存储的程序而发出指令;以及在连续的时段、在至少所述计算引擎的子集中的连续的计算引擎中执 行发出的指令中的每个指令。
30. 根据权利要求29所述的方法,其中对发出的指令中的每个指令 的执行包括执行流加载操作,所述流加载操作从存储器位置处加栽寄存 器的内容并执行跨计算引擎的操作。
31. 根据权利要求29所述的方法,其中执行发出的指令中的每个指 令包括执行it^储操作,所述流存储操作执行跨计算引擎的操作并将结 果存储到存储器位置中。
32. 根据权利要求29所述的方法,其中执行发出的指令中的每个指 令包括形成计算引擎的组,以用于单独的控制。
33. 根据权利要求29所述的方法,其中执行发出的指令中的每个指 令包括使数据再循环经过所述计算阵列的计算引擎。
34. 根据权利要求29所述的方法,其中执行发出的指令中的每个指令包括通过数据流式传输来向所述计算引擎提供数据,而不进行存储器 访问。
35. —种数字信号处理器,包括 控制处理器;处理器,包括控制块和计算阵列,所述控制块被配置用于基于已存储 的程序来发出指令,所述计算阵列包括两个或更多个计算引擎,所述计算 阵列被配置成使得发出的指令中的每个指令在连续的时段、在至少所述计 算引擎的子集中的连续的计算引擎中执行;以及主存储器,其能够被所述控制处理器和所述处理器访问。
36. 根据权利要求35所述的数字信号处理器,其中所述计算阵列被 配置成使得发出的指令中的每个指令在连续的时段流经至少所述计算引 擎的子集中的、连续的计算引擎。
37. 根据权利要求36所述的数字信号处理器,其中所述计算引擎中 的每个计算引擎包括指令管道,被配置用于控制指令经过计算阵列的流动。
38. 根据权利要求37所述的数字信号处理器,其中所述计算引擎中 的每个计算引擎还包括流单元,被配置用于对与发出的指令相关联的数 据执行流操作。
39. 根据权利要求38所述的数字信号处理器,其中所述计算引擎中 的每个计算引擎还包括: 一个或更多个计算单元,用于执行数字信号计算;以及寄存器堆,用于保存数字信号计算的操作数。
40. 根据权利要求39所述的数字信号处理器,其中所述计算引擎中 的每个计算引擎还包括至少一个计算阵列存储器,被配置用于随所述寄存器堆一起进行操作。
41. 根据权利要求38所述的数字信号处理器,其中所述计算阵列还 包括至少一个存储器,被配置用于随所述计算引擎中的每个计算引擎一 起进行操作;其中所述计算阵列存储器能够被所述控制处理器所访问。
42. 根据权利要求41所述的数字信号处理器,其中所述计算阵列还包括分级緩冲器,其耦合在所述计算阵列存储器与所述计算引擎中的每 个计算引擎之间。
43. 根据权利要求41所述的数字信号处理器,其中所述计算阵列中的计算引擎被配置用于对所述计算阵列存储器的内容执行逐列^Mt。
44. 根据权利要求41所述的数字信号处理器,其中所述计算阵列中 的计算引擎被配置用于对所述计算阵列存储器的内容执行逐行逐列的操 作。
45. 根据权利要求41所述的数字信号处理器,其中计算阵列中的计 算引擎被配置用于对所述计算阵列存储器的内容执行逐行操作。
46. 根据权利要求36所述的数字信号处理器,其中所述计算阵列包 括 一个或更多个开关,被配置用于将所述计算引擎形成为组。
47. 根据权利要求36所述的数字信号处理器,其中所述计算阵列被 配置用于使数据再循环经过所述计算引擎。
48. 根据权利要求41所述的数字信号处理器,其中所述计算阵列包 括至少一个加载行高速緩存,用于保存来自存储器行的数据以用于加载 操作。
49. 根据权利要求41所述的数字信号处理器,其中所述计算阵列包 括至少一个存储行高速緩存,用于M数据以用于存储器行中的存储操 作。
50. 根据权利要求40所述的数字信号处理器,其中所述计算引擎中 的每个计算引擎被配置用于在其计算阵列存储器中进行独立的表查找。
全文摘要
公开了一种用于增强的计算能力的处理器体系结构。一种数字信号处理器包括控制块,被配置用于基于存储的程序来发出指令;以及计算阵列,包括两个或更多个计算引擎,所述计算阵列被配置成使得所发出的所述指令中的每个指令在连续的时段、在至少所述计算引擎的子集中的连续的计算引擎中执行。该数字信号处理器可以随控制处理器一起使用,或者可以作为独立的处理器来使用。该计算阵列可以被配置成使得所发出的指令中的每个指令在连续的时段流经至少所述计算引擎的子集中的、连续的计算引擎。
文档编号G06F9/38GK101482811SQ200910000709
公开日2009年7月15日 申请日期2009年1月7日 优先权日2008年1月9日
发明者道格拉斯·戈德 申请人:模拟装置公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1