CN101366013A - 具有可变精度互连的数据处理单元的阵列 - Google Patents
具有可变精度互连的数据处理单元的阵列 Download PDFInfo
- Publication number
- CN101366013A CN101366013A CNA200680013506XA CN200680013506A CN101366013A CN 101366013 A CN101366013 A CN 101366013A CN A200680013506X A CNA200680013506X A CN A200680013506XA CN 200680013506 A CN200680013506 A CN 200680013506A CN 101366013 A CN101366013 A CN 101366013A
- Authority
- CN
- China
- Prior art keywords
- data processing
- data
- processing unit
- unit
- array
- 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.)
- Pending
Links
Images
Landscapes
- Logic Circuits (AREA)
Abstract
用于使用数据处理单元(13)的阵列(11)来处理数据的系统和方法,将数据处理单元(13)采用可变精度互连件(14)耦合在一起。一个实施例包括由可变精度互连耦合以形成行-列阵列(11)的数据处理单元。互连件(14)和/或数据处理单元(13)可为同步或异步的。数据处理单元(13)可以采用固定的方式进行操作,或它们可为可编程的,并且可给阵列中可选择的数据处理单元(13)设旁路。互连件(14)和数据处理单元(13)可配置成以数字串行的方式来处理数据,每个数字的标记(25、26)标识该数字是否是数据字中的第一个和/或最后一个数字。数据处理单元可耦合到系统总线(54、55),该系统总线使数据能够在数据处理单元和外部设备之间传送,并允许将控制信息传送到数据处理单元以及从数据处理单元传送出来。
Description
技术领域
本发明一般地涉及电子逻辑电路,并且更具体地涉及处理可变精度数据的系统和方法,可变精度数据使用标记来标识数字在数据字内的位置。
背景技术
正如计算机技术取得的进步,处理功率的数量和计算机系统的速度增加了。这些系统能够执行软件程序的速度也因此增加了。然而,尽管有这些增加,仍然存在着使软件程序执行得更快的持续的愿望。
对速度的需要有时通过硬件加速来处理。传统的处理器对于顺序程序的每个指令重复使用相同硬件。程序常常包含关键码,其中相对于应用程序中的大多数其它部分,软件的相同或类似部分被执行很多次。为了加速程序,增加额外的硬件,以便为程序的关键码段提供硬件并行性。取决于数据的可用性,这提供了同时执行关键码段中的所有指令的效果。此外,有可能打开迭代循环,以便同时执行单独的迭代,从而进一步加速软件。
虽然存在将要取得的速度进步,但是这并不是不受约束的。必须特别针对正被讨论的软件应用程序来设计硬件。在硬件中实现功能通常要比在软件中实现它花费更多的大量努力和资源。最初,实现算法的硬件结构必须基于标准来选择,如所执行的操作及其复杂性、输入和输出数据格式和吞吐量、存储要求、功率要求、成本或面积限制以及其它合适的标准。
然后根据硬件仿真和与软件的比较,来建立仿真环境以提供对实现的验证。根据系统总体要求来选择硬件目标库。最终目标可为专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它类似的硬件平台。硬件设计然后开始使用硬件描述语言(HDL)、目标库和仿真环境。对HDL设计执行逻辑合成,以产生基于目标库来表示硬件的连线表(netlist)。
虽然有很多在处理中始终使用的复杂而昂贵的设计工具,一般需要频繁的迭代以便管理例如在定时、面积、功率和功能之间的权衡。硬件设计过程的困难是设计目标的功能和目标库。半导体技术的持续进步随着每个新处理的产生而继续提高设备参数的重要性。这与变得可能的更大设计密度结合,确保硬件设计过程将随着时间而继续增加复杂性。
本发明涉及硬件中算法的实现,该硬件对数据执行逻辑或算法操作(operation)。目前可利用的方法分布在使用单个处理器、处理器阵列、固定(门阵列)或现场可编程门阵列(FPGA)、或标准单元(ASIC)或全定制设计技术的范围内。一些设计可合并多于一种方法的单元。例如,处理器可合并现场可编程逻辑块。
当比较可编程逻辑的不同实现时,有时使用粒度(granularity)的概念。它涉及对给定方法的最小可编程设计单位。粒度可在从晶体管,通过门和更复杂的块,到整个处理器的范围内变化。在比较可编程硬件结构时的另一考虑是可编程单元的互连布置。它们可在从简单的面向位的点到点布置到各种拓扑、纵横制(crossbar)以及甚至更奇异的配置的更复杂共享总线的范围内变化。
具有门级粒度和紧密互连的全定制或标准单元设计提供了极好的性能、面积和功率权衡能力。所使用的库通常是门和寄存器级别。由于设计流程被所需要的各种复杂工具所强加,设计时间可能是重要的。在设计之后对功能和定时的验证常常是实际计划表的较大组成部分。除了昂贵的设计工具以外,制造工具的费用还很高且随着每个新的处理的产生而上升,使得这种方法只对于很高利润或很大容量的设计才是经济的。使用全定制或标准单元技术实现的算法是固定的(在最初设计期间就达到预期的程度),并且不可以改变。
对固定或传统门阵列的设计方法类似于标准单元的设计方法。传统门阵列的主要优点是产品上市时间和较低的单位成本,因为个别设计以公共平台或基片为基础。相比于定制或标准单元设计,灵活性和电路密度可被减少,因为只利用未被授权的门和路由选择信道。像利用定制或标准单元技术构建的算法一样,使用传统门阵列实现的算法是固定的且在制造之后不可改变。
像传统门阵列一样,FPGA基于标准设计,但是可编程。在这种情况下,标准设计是完成的芯片或设备,而不是子系统模块和未被授权门的块。可编程性大大增加了设备的面积,对于一些应用产生了昂贵的解决方案。此外,由于增加的阻抗和相关联的传播延迟,可编程互连可限制流量和性能。FPGA具有复杂的宏块(micro block)作为设计单元,而不是简单的门和寄存器。由于可编程逻辑块、互连网络和相关联的缓存器的低效率,功率消耗可能是一个问题。使用FPGA实现的算法可被改变,并因此被认为是可编程的。由于互连结构,它们可只在不活动时(没有时钟运行)被配置。重新编程所有必要的互连和逻辑块所需要的时间可能相对于设备的速度是相当长的,使得实时动态编程不可行。
在用于实现算法的硬件解决方案的连续体(continuum)中,存在不同程度的困难或专业化。该连续体像一个倒置的三角形,因为最低级别需要最高程度的专业化,因此表示很小基础的潜在设计者,而较高级别利用更普遍知道的技能,且潜在设计者的工具明显增强了(见表1)。此外,应注意,该排序的较低级别表示设计抽象的较低级别,复杂性级别在较高级别中上升。
表1:不同技术的设计者基础
因此,存在对于提供软件加速(software acceleration)的技术的需要,该软件加速提供ASIC的速度和灵活性,容易使用并且可访问处理器,从而能够实现大型设计和应用基础。
发明内容
本公开内容致力于使用数据处理单元的阵列来处理数据的系统和方法,该数据处理单元利用解决上面讨论的一个或更多问题的可变精度互连(variable precision interconnect)耦合在一起。一个特定的实施例包括具有简单的单元到单元互连的处理单元的阵列,该互连在宽度上固定,但是支持具有可变精度的数据。单元在这些链接上接收输入数据,并也在其上发送操作结果。由每个单元执行的操作(operation)可以是固定的,或可变/可编程的。只有在发送者有新数据可用且接收者需要新数据时,才在单元之间传送数据。此外,可使用异步单元来最小化功率并改善性能。
可选的实施例包括多个数据处理单元,其被一个或更多互连件耦合以形成阵列,例如行和列的阵列。一个或更多互连件配置成在数据处理单元之间传送可变精度数据。互连件可为同步或异步的。类似地,数据处理单元可为同步(全局或本地)或异步的。数据处理单元可按固定的方式进行操作,或它们可以为可编程的,且可为阵列中的可选数据处理单元设旁路。互连件和数据处理单元可配置成以数字串行(digit-serial)方式处理数据,其中与每个数字相关联的标记(tag)标识该数字是否是数据字中的第一个和/或最后一个数字。在一个实施例中,单元阵列耦合到系统总线,该数据总线使数据能够在数据处理单元和外部设备(例如外部存储器)之间传送,并允许控制信息被传送到数据处理单元及从数据处理单元传送出来。
很多其它的实施例也是可能的。
附图说明
当阅读下列详细说明时和当参考附图时,本发明的其它目的和优点可变得清楚。
图1是根据一个实施例显示处理单元阵列的图,该处理单元经由可变精度互连总线彼此通信。
图2是根据一个实施例显示数据字如何映射到一系列数字和标志位(flag bit)中以形成可变精度字的图。
图3是根据一个实施例显示对于数字串行数据字事务的可变精度总线活动的图。
图4是根据一个实施例显示使数据能够在多个方向上输入/输出的数据处理单元核(corn)的连接的图。
图5是根据一个实施例显示用于读和写入内部寄存器/存储器的系统接口的图。
图6是根据一个实施例显示配置成向阵列中的数据处理单元提供行-列可寻址能力的命令接口的图。
图7是根据一个实施例显示配置成使状态信息能够从阵列中的数据处理单元传送的状态接口的图。
图8是表示一个实施例中的阶乘算法的流程图。
图9是根据一个实施例显示实现图8的阶乘算法的一组数据处理单元的图。
图10是根据一个实施例显示行/列阵列中的图9的数据处理单元的图。
虽然本发明可进行各种更改和采取可替换形式,本发明的特定实施例作为例子显示在附图和所附详细说明中。然而应理解,附图和详细说明不是用来将本发明限制到所描述的特定实施例。相反,本公开内容的意图是包括落在由所附权利要求限定的本发明范围内的所有更改、等效方案和可替换方案。
具体实施方式
下面描述本发明的一个或更多实施例。应注意,下面描述的这些和任何其它实施例是示例性的,且意图是说明本发明而非限制。
如上所述,本发明的各种实施例包括使用数据处理单元的阵列来处理数据的系统和方法,数据处理单元采用可变精度互连耦合在一起。一个实施例包括具有简单的单元到单元互连的处理单元的阵列,该互连件在宽度上是固定的,但是支持具有可变精度的数据。单元在这些链接上接收输入数据,并也在其上发送操作结果。由每个单元执行的操作可以是固定的,或可变/可编程的。只有在发送者有新数据可用且接收者需要新数据时,才在单元之间传送数据。此外,可使用异步单元来最小化功率并改善性能。
在一个实施例中,可变精度互连设计成传送数字串行数据,其中每个数字附有指示该数字在被传输的数据字中是否是第一个和/或最后一个数字的标志。处理单元之一接收数字,该处理单元对数据字执行相应的操作,并将其输出提供给一个或更多其它的处理单元。处理单元可配置成对数据进行操作或给数据设旁路而到达其它处理单元。系统总线实现了数据到/从处理单元的传送、命令信息输入到处理单元和状态信息从处理单元输出。处理单元之间的互连以及处理单元本身可同步地或异步地进行操作。在一个实施例中,处理单元的操作可为本地同步或全局异步。
图1显示经由可变精度互连总线14彼此相互通信的处理单元13的阵列11。当数据通过阵列从一个单元移动到另一单元时,处理单元对数据执行操作。处理单元通过恒定宽度的互连总线或通信信道连接。很多互连拓扑是可能的,但在优选实施例中,为了速度和简单性而选择最近邻(nearest-neighbor)的单元到单元布置。每个单元到单元总线14作为具有单个源和目的地的单向通信信道。对于输入和输出具有分离的互连,且在每个方向(图中的上、下、右和左)上具有分离的输入和输出连接来连接邻近的单元。沿着阵列11的周边的处理单元13可以使其输入被避免和输出被忽略(图中没有示出),或它们可以可选地连接到外部模块12,例如存储器控制器、一些其它的外围设备。在另一个实施例中,它们可耦合到阵列的相对侧上的其它单元。例如,列中的顶部单元可连接到列中的底部单元,或行中最左边的单元可连接到行中最右边的单元。理论上,互连总线提供了支持可变精度数据的机制。
实际上,将算法或计算问题分解成分立的操作,并映射到连接的处理单元的网络中。数据被使用任何数量的装置引入阵列中,然后根据单元对数据的产生和使用,通过阵列从一个单元传送到另一单元而进行传播。类似地,对于从阵列输出数据存在各种可能性。处理单元可采取包括(但不限于)外部模块、系统接口和其它(相邻)单元的各种方式,来接收输入数据并传输输出数据。
系统接口主要由多个单元共有的数据总线组成,其中每个单元可被单独选择。这允许控制单元将数据选择性地读出或写入选定的单元。
处理单元的特性可依赖于特定的应用和实现而变化。单元可针对在硬件中实现某些共同操作的某些应用而最优化,或它们可为完全通用的。最低限度地,处理单元需要能够与数据连系并处理数据,且需要能够对输入数据执行期望的操作,以及产生输出数据。此外,希望具有的特征是处理可变精度数据的能力,如在优选实施例中的。对于给定操作的独特单元顺序可为固定的,或它们可为完全可变的,使得该单元成为可编程的。
固定单元可包含只读存储器(ROM)、固定可编程逻辑阵列(PLA)或用于控制特定操作或功能的事件顺序的一些其它固定存储器。固定操作和顺序的时刻可在设计过程期间,或在制造周期中非常靠后的时间。
可变或可编程单元可包括随机存取存储器(RAM)、寄存器、非易失性存储器(如闪存),或一些其它类型的可变存储器,其包含将要控制操作顺序中每个步骤的行为的数据。
单元的特性(personality)主要由该单元所执行的操作和事件顺序组成。定义单元特性的数据可被转换或重新装入。它也可为双缓冲的,以使两个特性共存,且外部信号选择使用哪一个特性。转换(switching)特性也可主要由转换状态组成,这意味着任何附加的内部工作寄存器或状态信息也必须被转换。理论上,为了以后使用而储存该信息,以便可恢复以前的情境。
在处理给定的数据块、有效而动态地改变算法、或以逐段连续的方式执行更复杂的算法之后,可改变一个或更多单元的特性。一个或更多单元的特性可在系统初始化时被装入,该特性可针对产品的现场更新等而改变。也有混合结构,其中单元的部分特性保持相对固定,而其它部分是可变的。这种结构的一个例子是数字滤波器,其中输入样本数据被固定的滤波器系数相乘。在这种情况下,固定的单元设置有乘法操作,而可编程部分包括可变操作数。使用可编程或混合单元,滤波器系数可在应用程序中作为参数而变化。
单元的最简单的实现将利用同步设计方法,其中单个全局定时参考用于所有的内部寄存器,因为目前可得到的商业设计工具通常增强该方法。
异步设计技术在功率消耗和数据吞吐量的领域中具有公知的优点。由于单个单元在整个阵列上被复制,使用异步方法的设计难题被最小化。因为可变精度接口信道实现了数据流原理,并具有闭环信号交换(handshaking),消除来自信道接口的时钟实际上是一个简化。因此,另外实现合并异步可变精度信道和/或异步单元的阵列是可能的。
提供系统接口,以便阵列内的每个单元可被独立编址和访问。这可用于初始化和诊断的目的,或将数据插进单元内的处理操作或从其提取数据。也有一种机制,使得单独的处理单元可通过声明中断信号,来通知发信号事件。
在一个实施例中,单元之间的可变精度接口是具有状态线的数字串行总线,该状态线指示该字内的当前数字位置。数字串行意味着字由一系列数字组成,数字由一个或更多的位(bit)组成。对于给定的实现,数字尺寸是固定的,然而组成字的数字的数目可变化。数字可占据字的第一个、最后一个或中间位置。单个数字的字是可能的,且在那种情况下,该数字是第一个也是最后一个数字。两个数字的字具有第一个数字和最后一个数字,但没有中间数字。由三个或更多数字组成的字具有一个或更多的中间数字。
单元互连总线宽度固定在n个数字位,加上两个标志位和两个握手(handshake)信号。标志位指示数字是否是数据字的第一个和/或最后一个数字。两个握手信号指示数据准备何时被传送到处理单元和/或从其传送出来。全局时钟信号可以被可选地用于同步实现。通过正确地设置标志位,可在接口上顺序传输大于n位的字。单个标志位在技术上足以标明边界条件,但这需要为每个输入增加数字流水线延迟(pipeline delay),以便可以单独确定最低有效和最高有效位置。
图2示出字如何映射到数字和标志位中以形成可变精度字,图3示出对那个事务的可变精度总线活动。字21由多个数字组成。数字0“D0”表示第一个和最低有效数字,数字n“Dn”表示字的最后一个和最高有效数字。为第一个数字24指定标志为“F”26,而为最后一个数字22指定为“L”25。不是第一个和最后一个的数字是连续数字23。对只占据一个数字的字,F和L标志位都被设置。表2列出相应于可能数字的标志F和L的组合。数字尺寸可位任何正整数。在优选实施例中,数字尺寸等于8位。更小或更大的数字尺寸可适合于以具有不同流量和面积要求的应用为目标的阵列。
在第一个或最后一个数字与数字有效性之间没有区别。附加位可加到可变精度总线,以进一步确定数字有效性,但那是可选的。也可包括附加的格式位,以表示带符号与不带符号或其它格式。在优选实施例中,当选择了单元操作时,首先在算法级别上处理最低有效与最高有效数字的传输。如果必要,可以利用在最高有效数字第一格式和最低有效数字第一格式之间进行转变的单元功能。
图3示出本实施例的在可变精度信道上发送和接收数据的事件的顺序。所示的所有信号从源或发送器单元输出,并输入到目的地或接收器单元,应答握手ACK除外,该ACK从目的地输出并输入到源。图中没有显示系统时钟。虽然一些实现可能希望时钟信号作为可变精度总线的一部分,但它是可选的,因为可变精度信道协议被定义成使得信号交换是闭环的,因此可实现完全异步的接口。这是实现中的关键点,其中处理单元彼此相互异步。
当数据的单个数字(例如D0)连同相应的F和L标志在总线上可用时,信道发送器声明请求REQ信号。数据、标志和REQ信号一直保持,直到信道接收器发送应答ACK信号为止,表明信道接收器成功地从总线读取了这些信号。这时,REQ信号被释放,而数据和标志自由地改变状态。接收器继续声明ACK直到REQ信号被释放。不再设置REQ信号,直到ACK信号是非活动的且新数据可用于新事务。以这种方式,包括数字D0-Dn的数据字从信道发送器传送到信道接收器。
连接相邻处理单元的可变精度通信信道还提供了给个别单元设旁路的机制,从而允许通信跳过单元。这种设旁路的能力使得给单元连接规定路线更容易。来自一个单元的未使用的任何输出可连接到同一单元的其它方向之一上的未使用的输入,从而在本质上给该单元设了旁路。
图4示出单元13和单元核44连同四个连接方向中每一个方向上的输入(例如42)和输出(例如41)可变精度信道的图。给输入信道规定到处理核和到输出选择器(例如43)的路线。单元内的旁路寄存器将输出源选择为单元自身或该单元的每个输出信道的其它三个输入之一。注意,为简单起见示出输出信道通过单个多路复用器43,但事实上,存在着与也必须规定路线的选定信道相关联的ACK返回(输入)信号。这意味着针对ACK输入的附加多路复用器——对于每个方向将有一组多路复用器。
图1中没有示出(为清楚起见)本实施例的系统接口,其允许基于解码的行-列地址来选择每个单元。如图5所示,系统接口提供了用于读和写每个单元的内部构件(内部寄存器和存储器)的机制。系统地址总线54用于为每个读或写操作选择单独的单元。地址解码器53将地址分解成每个单元的单独选择线(例如51)和用于对单独的单元内部构件寻址的子地址域。子地址的尺寸是需要寻址的单独的单元内部构件的数量的函数。为了清楚起见,在图中每行的一组选择线组、子地址和读/写命令线显示为单一线(例如52)。对于较大的阵列,解码器可在设计中成为分布式的。系统数据总线55运送用于写操作的写数据,或运送作为读操作结果的读数据。它被显示为双向的,但实际上可使用分离的读和写总线来实现。此外,读多路复用器可以是在单元中分布的。
总体来说,地址和控制信号、输入数据和输出数据被称为系统总线。除了读/写命令线、单元选择线和子地址51以外,每个单元13还被提供给输入数据,并在输出数据总线上提供输出数据。输入和输出数据总线不必为可变精度,在优选实施例中,使用传统的32位总线。写控制信号包括字节写启动信号。被寻址的单元的内部构件可主要由寄存器或存储器块或任何其它的数据结构组成,这取决于单元的内部构件。给每个单元的地址输入必须充分,以足够解码或分解单元内的每个可寻址的资源。地址的这部分可包括该地址的较低地址位。然后,较高地址位可用于表示所寻址的实际单元。这些位被输入到解码器模块53,解码器模块53产生单独的选择线(例如51)——每个单元一条。
在一个实施例中,系统接口具有传统的非易失性精度总线。在该实施例中,总线为以独立字节实现的32位数据总线。为了提供用于设置数字位置标记位的简单机制,提供寄存器或存储器地址的别名(alias)。有四种可用的形式。表3示出用于系统接口写的别名,而表4示出用于读的别名。
在该实施例中讨论的数字尺寸为8位。对于系统接口写操作,第一个别名允许写入字尺寸为8位的数据,同时自动设定F和L位。提供第二个别名用于写入16位字同时设定标志位,以及第三个别名用于写入32位的字尺寸。第四个别名允许写入数据,同时将F和L位设定为零,这对装载大于32位的字是有用的。可以通过将字节0写为别名1,接着写为别名4,来处理端点字节,从而写入较大的字尺寸。最后,需要将结束字节写为别名1。
系统接口读别名提供了分离地读F位、L位和数据位的机制。别名1和4是相同的,且只返回与读地址相关联的数据。别名2返回每个字节的较低位位置中的F标志,而别名3返回每个字节的较低位位置中的L标志。当根据别名2和3读时,不返回数据。那些别名仅用于确定数字对准。
在本实施例中,图6所示的单个命令的命令接口以与系统接口不同的方式提供了行-列可寻址能力。不是一次一个地为单个单元寻址和向其提供数据,而是对于每个命令都有行和列地址。命令地址寄存器分为行63和列64段(segment)。行段被解码,并为阵列中的每一行提供分离的行选择线61。类似地,解码的列段为阵列的每一列提供分离的线62。行和列命令信号连成穿过单元阵列的行和列的菊花链(daisy-chained)。列中最接近于命令的插入点的第一个单元首先接收列命令信号62。当将信号62未更改地向前传送到列中的下一个单元时,第一个单元监控信号的值。每个单元依次做同样的事情,直到它到达那列中的最后一个单元。以相同的方式处理行单元。行中的第一个单元接收行命令信号61,将信号61向前传送到同一行中的下一个单元,同时监控在那条线上的信号。如果一个单元观察到相同命令的行和列信号是有效的,则它知道它被指示来执行指定的命令。采用像系统接口那样的寻址,一次只访问一个单元。使用控制接口,可同时选择矩形区域内的一个到很多个邻近的单元。
可被映射到命令接口的命令例子包括重置、启动、清零中断和转换状态。重置命令用于初始化一个单元或一组单元。启动命令用于选择性地启动或禁止单元组。清零中断命令用于使单元内的内部状况清零,并用于响应状态接口的中断输出。每个单元的功能和情境(context)可为双缓冲的,且阵列的整个区域可通过改变状态命令的值来同时执行情境转换。
除了命令输入外,状态输出还以类似的方式合并入状态接口,如图7所示。中断状态信号输出连成穿过在状态寄存器中读到的行和列的菊花链,状态寄存器主要由行组件73和列组件74组成。在状态寄存器中,对于阵列的每行和每列,存在分离的位。每行单元接收来自行71上前一个单元的输出,按需要修改状态信号,以及将其输出到该行中的下一个单元。每个单元依次从前一个行单元接收输入,增加其自己的状态信息,以及将它向前传送,直到它到达行中最后一个单元之后的状态寄存器。列单元执行相同的功能,从前一个单元72接收输入,增加其自己的任何状态信息,以及将它向前传送到列中的下一个单元或状态寄存器74(如果它是列中的最后一个单元)。
在接下来的部分中,使用伪码形式来描述示例性单元的微指令序列。伪码表示通用程序设计结构,且不必意味着直接对应于单元微指令,尽管单个单元微指令或其组合能够实现该操作。输入或输出伪指令操作使用可变名称,该可变名称可选地为逻辑信道标识符。有四个输入信道标识符:a、b、c和d。类似地,有四个逻辑输出信道标识符:w、x、y和z。注意,逻辑标识符独立地映射到相应于四个方向的物理信道中。与传统码不同,单元的伪码被自动重复。当结束时,每个单元的码流(code flow)在起始处重新开始。
作为本发明的一个应用例子,考虑下面所示的用C程序设计语言编码的算法。
int factorial(int a){
int i,w,y;
w=1;
for(i=1;i<=a;i++){
w=w*i;
}
y=w;
return(y);
}
该代码实现了阶乘函数,且当用输入整数“a”被调用时,将返回“a!”。此算法遵循简化映射过程的单个声明(assertion)的原理。注意,在循环结构内的声明和循环结构外部的声明之间进行区分。整数“a”为输入的数字。整数“i”为用作循环计数器的临时变量。整数“w”为保存中间计算的工作值的临时变量,而整数“y”为结果和返回值。按照定义,0!=1,所以“w”在循环的外部被初始化为1,虽然在循环的内部有对“w”的赋值。
图8示出阶乘算法的可选表示。在82输入数“a”被接收,在83“w”被初始化,在84循环计数器被设定为初值。操作82、83和84共同形成唯一的分组81,分组81与循环组85和循环之后的组89分离。通过具有特定的起始和结束条件的循环操作来描述这些操作块。操作组可被嵌套。注意,组81的操作被顺序连接在一起。这是流程图中的约定,因为它们以顺序语言和顺序机器结构为基础。实际上,如我们将看到的,一旦操作被映射到单元,唯一的顺序操作是具有数据相关性的操作。在任何未决的数据输出已经被处理的情况下,如果输入数据是可用的,则单元的操作并行地进行。
循环计数器测试操作86检验是否继续;如果满足继续条件(i<=a),则在87执行乘法,且在88使循环计数器递增。如果满足循环结束条件(i>a),则在810将“w”赋值给“y”,并在811输出(返回)该值。
基于单元操作的可用库,图8的流程图所示的算法现在被映射到单元。这个过程类似于软件编译器产生中间通用码的过程,该通用码不是针对特定的处理器或结构特有的。该过程的结果显示在图9中。所示的每个操作块表示一个或更多的单元。还应注意,因为单元到单元的连接是点到点的,一些单元(94、912)用于使数据信道成为T形的(tee),以便单个源可以有附加目的地,从而增加其输出端。
82的输出“a”转变为循环输入寄存器单元(lireg)96。循环寄存器用于在循环的输入和输出点控制数据流。具有额外的控制输入信道的循环输入寄存器与具有数据输入和输出信道的普通寄存器相同。控制输入表示何时输入数据应被取样并被装入内部寄存器,并被连接到起始循环条件。如果控制输入信道为真,则“a”被装入内部寄存器。随后,内部寄存器在输出数据信道上被发送。数据总是被输出——唯一的条件是装入输入数据。起始循环条件是布尔(Boolean)值,该值在循环的第一次迭代时为真,以及在随后的迭代时为假。在循环的最后一次迭代之后,它再次变成真。lireg的一般序列(采用伪码)为:
lireg
input a,control
if(control)
while(!end-of-word)
input b,data
while(!end-of-word)
output data,w
相应于88的循环计数器值“i”存储在初始化的寄存器单元92中。初始化的寄存器单元具有被首先输出的初始参数值(在这种情况下为零)。从那时起,所接收的简单地是延迟、输出的字。输入字记号被维持和反映在输出中。ireg的序列为:
ireg
output initial_value,w
L1 input a,data
output data,w
jump L1
最初的检查可使我们推断出,该单元92不是必要的。由于存在反馈循环(通过递增单元91和多路复用器93),如果对i的保持寄存器不可用,该路径就不会开始。多路复用器93必须使用两个输入上的数据,这就是为什么ireg具有初始值零并在输入它之前输出数据的原因。
常量寄存器97(其相应于在84的赋值)用于初始化i。它与“reg”相同,除了没有输入端口连接。常量值保持在内部,并被连续地输出。对于固定的单元,这为硬件实现的值,而对于可编程单元,该值可为参数,该参数作为单元情境或定义的一部分装载,或甚至通过外部处理器改变。
creg
while(1)
output constant,w
多路复用器93起传统的数据多路复用器的作用,并表示85中反馈循环的结束。一个输入项是84的“i=1”,且只有当进入循环体85时才被选择,而另一个项是88的“i=i+1”,并被选择直到退出该循环。多路复用器的输出表示“i”。两个输入都被使用;控制输入选择在输出上反映哪个输入;另一个输入被丢弃。多路复用器操作的伪码遵循:
mux
input a,control
input b,d1
input c,d2
if(control)
output d1,w
else
output d2,w
注意,循环比较操作符95、递增器91和乘法器99需要多路复用输出。指出算法仅进行与数据使用同样快也是重要的。因此,“i”的新值将不会出现,直到乘法器、循环比较器和递增器都已经使用最新的值。因为多路复用器只有一个输出,T形接头(tee)94被插入以提供额外的输出端。可选方案是建立具有多个输出的多路复用器。还可创建具有多于两个输出的T形接头单元。T形接头的伪码如下:
tee
input a,value
output value,w
output value,x
相应于86的循环比较操作符95使用当前循环变量(“i”)和终值(“a”)作为输入,来执行“小于或等于”的逻辑计算。比较操作的伪码为:
lte
while(!end-of-word)
input a,ending_value
input b,loop_count
if(first digit)
r=ending_value+~loop_count+1
else
r=ending_value+~loop_count+carry_flag
if(r zero_flag or!negative_flag)
output‘1’,w
else
output‘0’,w
注意,在1te函数中,为每个输入数字进行计算,而仅在所有的输入数字被接收到之后才出现输出。在该单元中,使用二进制补码的带符号表示法,且从a减去b输入。变量carry_flag、negative_flag和zero_flag是基于ALU的操作而设置的内部标志,类似于传统处理器中的标志。数字的字位置标志用于表示字中的第一个数字。
1te单元的输出是循环测试变量:在循环迭代期间它为真,否则为假。特殊的循环单元98用于维持循环执行的状态。循环比较操作的输出被输进循环单元输入(“test”)中,且两个分离的输出被产生:一个在循环的第一次迭代(“start”)期间设定为真,另一个在最后一次迭代(“stop”)时为真。不是第一次和最后一次的循环迭代将两个输出都设定为假。初始条件(跟随单元的重置)对于“start”输出为真,而对于“stop”输出为假。作为例子,特定的实现具有多个“start”输出,从而减少了对额外的T形接头的需要。通过合并任何单元、改变其微指令序列,特别是对于复制输出(假定存在足够的输入和输出信道),来执行最优化是可能的。虽然这不影响总的功能,它可能影响吞吐量或等待时间。此外,它还可能影响所产生的阵列内单元的布局(placement)或定向(orientation)。循环单元的伪码为:
loop
if(reset)
flag=1
output flag,w //开始1
output flag,x //开始2
output flag,y //开始3
while(!end-of-word)
input a,test
if(test>0)
flag=0
else
flag=1
output flag,z //停止
乘法器单元99执行两个输入的整数相乘。如果第一个输入具有n个数字,以及第二个具有m个数字,则结果将具有n+m个数字。在阶乘例子中,以前的乘积被乘以循环变量“i”。乘法器单元的伪码为:
mul
while(!end-of-word)
input a,n
while(!end-of-word)
input b,m
[product,product_remainder]=n*m
output product,w
while(!end-of-word)
output product_remainder,w
用于实际乘以product和product_remainder作为结果的表示法(notation),试图针对全精度乘法说明不同字尺寸。
寄存器910保存随后迭代的工作乘积值。该单元的功能非常类似于92的功能。寄存器尺寸必须足够大以保存最大值,该最大值可通过使多个单元串联而获得。reg的序列为:
reg
input a,data
output data,w
常数914在功能上与97完全一致,且多路复用器911与93相同。T形接头912与94完全一致。
循环输出寄存器(loreg)913在功能上类似于lireg96。lireg总是输出所保存的数据,但当被选择时只更新其内部寄存器;loreg总是接受输入数据,但当被选择时只提供输出数据。lireg通常用在循环输入上,而loreg通常用在循环输出上。下面示出loreg的伪码:
loreg
input a,control//停止循环条件
while(!end-of-word)
input b,data
if(control !=0)
output data,w//y输出
loreg控制输入被连接到循环单元停止信号,因此“y”数据仅在所有的循环迭代结束之后才是可用的。
图10描述映射到相同单元的阵列中的图9的单元。未使用的单元101占据正在执行的算法的特定映射所不需要的位置。根据单元操作,一些单元未被使用,但用于提供互连,例如单元102。通过给实际单元如95设旁路,执行功能的其它单元可具有用于提供单元之间路由选择的备用输入或输出信道。
本领域技术人员应理解,可使用各种科技和技术中的任一种来表示信息和信号。例如,上面说明中提到的数据、指令、命令、信息、信号、位、符号等等,可由电压、电流、电磁波、磁场或粒子、光场或粒子、或其任何组合来表示。可以使用包括电线、金属导电路径(metallic trace)、通路、光纤等任何适当的传输介质,在公开系统的组件之间传送信息和信号。
技术人员应进一步认识到,与这里公开的实施例共同被描述的各种例证性逻辑块、模块、电路和算法步骤,可以不同的方法实现。为了清楚地显示系统拓扑的这种可变性,以上一般地根据功能描述了例证性逻辑块、模块、电路和步骤。在上面特别描述的特定功能块中是否实现这种功能,取决于强加于总系统和相应设计选择上的具体应用和设计限制。对每个具体的应用,本领域技术人员可以采取变化的方法来实现所述功能,但这样的实现方案不应理解为偏离本发明的范围。
上面关于特定的实施例描述了本发明可提供的利益和优点。这些利益和优点以及可使其出现或变得更明显的任何单元或限制,不应解释为任何或所有权利要求的关键的、需要的或本质的特征。如这里所使用的,术语“包括”、“包含”或其任何其它变形,意图是被理解为非排他性地包括遵循那些术语的单元或限制。因此,包括一组单元的系统、方法或其它实施例不限于只有那些单元,而是可包括没有明确列出或不是所声明的实施例固有的其它单元。
虽然参考具体实施例描述了本发明,应理解,这些实施例是例证性的,且本发明的范围不限于这些实施例。对上述实施例的很多变形、更改、附加和改进是可能的。这些变形、更改、附加和改进落在如下列权利要求详述的本发明的范围内。
Claims (20)
1.一种系统,包括:
多个数据处理单元13;
一个或更多互连件14,其将所述数据处理单元一起耦合在阵列11中;
其中,一个或更多所述互连件14配置成在所述数据处理单元之间传送可变精度数据。
2.如权利要求1所述的系统,其中,一个或更多所述互连件14是异步的。
3.如权利要求1所述的系统,其中,一个或更多所述数据处理单元13是异步的。
4.如权利要求1所述的系统,其中,一个或更多所述数据处理单元13是本地同步和全局异步的。
5.如权利要求1所述的系统,其中,一个或更多所述数据处理单元13配置成处理数字串行数据。
6.如权利要求5所述的系统,其中,一个或更多所述数据处理单元13配置成处理包括标记25、26的数字串行数据,以识别位在相应数据字21中的位置。
7.如权利要求6所述的系统,其中,一个或更多所述数据处理单元配置成处理数字串行数据,其中每个数字包括第一标记26和第二标记27,所述第一标记26指示所述数字是否是所述相应数据字中的第一个数字,并且所述第二标记27指示所述数字是否是所述相应数据字21中的最后一个数字。
8.如权利要求1所述的系统,其中,每个数据处理单元13配置成对由所述数据处理单元接收的任何数据执行单一的预定操作。
9.如权利要求1所述的系统,其中,每个所述数据处理单元13配置成对所接收的数据执行多个可选操作中的一个。
10.如权利要求1所述的系统,其中,每个数据处理单元13可编程为从两个或更多邻近的数据处理单元交替地接收数据,并且可编程为向两个或更多邻近的数据处理单元提供输出数据。
11.如权利要求10所述的系统,其中,每个数据处理单元可编程为给从所述邻近的数据处理单元中的第一个接收的数据设旁路而到达所述邻近的数据处理单元中的第二个。
12.如权利要求1所述的系统,其中,所述阵列包括行和列的二维阵列11,其中第一行中的每个数据处理单元耦合到最后一行中的相应的数据处理单元。
13.如权利要求1所述的系统,其中,所述阵列包括行和列的二维阵列11,其中第一列中的每个数据处理单元耦合到最后一列中的相应的数据处理单元。
14.如权利要求1所述的系统,其中,所述系统配置成按照路线顺序通过两个或更多所述数据处理单元传送所述数据,来处理多个数据字中的每一个。
15.如权利要求1所述的系统,进一步包括非可变精度系统总线,所述非可变精度系统总线耦合到一个或更多所述数据处理单元,并配置成使数据能够从一个或更多所述数据处理单元和外围设备12传送。
16.如权利要求15所述的系统,其中,所述外围设备12包括外部存储器。
17.如权利要求1所述的系统,进一步包括命令接口,所述命令接口耦合到所述数据处理单元,并配置成使命令能够传送到所述数据处理单元。
18.如权利要求17所述的系统,其中,所述命令接口配置成使命令能够同时传送到所述数据处理单元中的选定数据处理单元。
19.如权利要求18所述的系统,其中,每个所述数据处理单元配置成对所接收的数据执行多个可选操作中的一个,且其中通过经由所述命令接口将所述命令传送到所述数据处理单元,来选择每个数据处理单元的可选操作中的一个。
20.如权利要求1所述的系统,进一步包括状态接口,所述状态接口耦合到所述数据处理单元13,并配置成使状态信息能够从所述数据处理单元传送到控制单元。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US67399405P | 2005-04-22 | 2005-04-22 | |
US60/674,070 | 2005-04-22 | ||
US60/673,995 | 2005-04-22 | ||
US60/673,994 | 2005-04-22 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101366013A true CN101366013A (zh) | 2009-02-11 |
Family
ID=40391466
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA200680013506XA Pending CN101366013A (zh) | 2005-04-22 | 2006-04-21 | 具有可变精度互连的数据处理单元的阵列 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101366013A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719068A (zh) * | 2010-01-06 | 2010-06-02 | 哈尔滨工程大学 | 一种面向计数类循环的C-to-VHDL映射方法及映射装置 |
CN109902061A (zh) * | 2019-02-03 | 2019-06-18 | 旋智电子科技(上海)有限公司 | 数字逻辑电路及微处理器 |
CN110546635A (zh) * | 2017-04-28 | 2019-12-06 | 美商新思科技有限公司 | 使用与单元级布局相关的应力效应的单元放置和布线 |
CN112419140A (zh) * | 2020-12-02 | 2021-02-26 | 海光信息技术股份有限公司 | 数据处理装置、数据处理方法及电子设备 |
-
2006
- 2006-04-21 CN CNA200680013506XA patent/CN101366013A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719068A (zh) * | 2010-01-06 | 2010-06-02 | 哈尔滨工程大学 | 一种面向计数类循环的C-to-VHDL映射方法及映射装置 |
CN110546635A (zh) * | 2017-04-28 | 2019-12-06 | 美商新思科技有限公司 | 使用与单元级布局相关的应力效应的单元放置和布线 |
CN110546635B (zh) * | 2017-04-28 | 2023-09-12 | 美商新思科技有限公司 | 使用与单元级布局相关的应力效应的单元放置和布线 |
CN109902061A (zh) * | 2019-02-03 | 2019-06-18 | 旋智电子科技(上海)有限公司 | 数字逻辑电路及微处理器 |
CN109902061B (zh) * | 2019-02-03 | 2023-06-02 | 旋智电子科技(上海)有限公司 | 数字逻辑电路及微处理器 |
CN112419140A (zh) * | 2020-12-02 | 2021-02-26 | 海光信息技术股份有限公司 | 数据处理装置、数据处理方法及电子设备 |
CN112419140B (zh) * | 2020-12-02 | 2024-01-23 | 海光信息技术股份有限公司 | 数据处理装置、数据处理方法及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7500043B2 (en) | Array of data processing elements with variable precision interconnect | |
Renaudin | Asynchronous circuits and systems: a promising design alternative | |
US6594752B1 (en) | Meta-address architecture for parallel, dynamically reconfigurable computing | |
US7200735B2 (en) | High-performance hybrid processor with configurable execution units | |
CN109597646A (zh) | 具有可配置空间加速器的处理器、方法和系统 | |
US20100100704A1 (en) | Integrated circuit incorporating an array of interconnected processors executing a cycle-based program | |
CN103443767A (zh) | 展开量化以控制自动机的入度和/或出度 | |
CN103547999A (zh) | 利用专用元件实施有限状态机 | |
CN103430148A (zh) | 用于元件利用的状态分组 | |
CN100388264C (zh) | 具有可重构体系结构的计算机装置 | |
CN101366013A (zh) | 具有可变精度互连的数据处理单元的阵列 | |
CN102207904A (zh) | 用于对可重构处理器进行仿真的设备和方法 | |
CN100444107C (zh) | 优化的处理器和指令对准 | |
US20230052450A1 (en) | Packing conditional branch operations | |
CN103150461A (zh) | 用于集成电路设计的并行综合方法及其系统 | |
US20060242213A1 (en) | Variable Precision Processor | |
CN100485656C (zh) | 数字信号处理集成电路及执行信号处理操作的方法 | |
JP4285877B2 (ja) | 動的再構成計算のためのメタアドレス指定アーキテクチャ及び動的再構成計算のためのメタアドレス指定方法 | |
CN101236576B (zh) | 一种适用于异质可重构处理器的互联模型 | |
Nussbaum et al. | Field programmable processor arrays | |
US20030186685A1 (en) | Module for generating circuits for analysing bit strings inside data cells, method for generating this type of circuit and relative circuit | |
Fisher | Implementation issues for algorithmic VLSI processor arrays | |
WO2023183329A1 (en) | Mapping workloads to circuit units in a computing device via reinforcement learning | |
Ang et al. | ACRES architecture and compilation | |
Gebhardt | Energy-efficient design of an asynchronous network-on-chip |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20090211 |