具有流水线式算术逻辑单元的异步处理器的系统和方法
【专利说明】 具有流水线式算术逻辑单元的异步处理器的系统和方法
[0001]相关申请交叉引用
[0002]本申请要求SHI Wuxi an等人于2013年9月6日提交的申请号为61/874,909、发明名称为“具有流水线式算术逻辑单元的异步处理器的方法和装置”的美国临时申请的优先权,其全部内容通过引用结合在本申请中,并且要求于2014年9月4日提交的、申请序列号为14/477,536、发明名称为“具有流水线式算术逻辑单元的异步处理器的方法和装置”的美国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
[0003]本发明涉及异步处理,尤其涉及具有流水线式算术逻辑单元的异步处理器的系统和方法。
【背景技术】
[0004]微流水线(micropipeline)为异步处理器设计的一种基本组件。微流水线的重要构件包括会合(RENDEZVOUS)电路,例如,一连串穆勒_C (穆勒-C)元件。穆勒_C元件使得数据在当前计算逻辑级完成并且下一计算逻辑级准备开始时能够进行传递。取代使用非标准穆勒-C元件来实现两个无时钟(不使用时钟定时)计算电路逻辑之间的握手协议的是,异步处理器复制整个处理块(包括所有的计算逻辑级)并使用一系列令牌(token)和令牌环来模拟流水线。每个处理块包含令牌处理逻辑,用以在没有计算逻辑级之间的时间或时钟同步的情况下控制令牌的使用。因此,处理器设计被称为异步或无时钟处理器设计。令牌环调节对系统资源的访问。令牌处理逻辑按顺序接受、保持并传递相互之间的令牌。当一令牌处理逻辑保持一令牌时,所述处理块被授予独占访问对应于该令牌的资源的权利,直到该令牌被传递给所述令牌环中的下一令牌处理逻辑。需要一种改进的且更有效的异步处理器架构,例如具有较短延时或延迟的计算能力的处理器。
【发明内容】
[0005]根据一实施例,一种由异步处理器执行的方法,包括:在所述异步处理器的指令执行单元(XU)提取第一指令,在所述XU中执行所述第一指令。在所述XU—经保持用于提取下一指令的令牌,就提取第二指令。在所述XU —经保持用于启动所述下一指令的令牌,就执行所述第二指令。
[0006]根据另一实施例,一种由异步处理器的算术逻辑单元(ALU)执行的方法,包括:提取第一指令,并执行所述第一指令。在将所述第一指令写入存储器之前,提取第二指令。在所述ALU执行所述第二指令。
[0007]根据又一实施例,一种用于异步处理器的装置包括:非暂时性存储器,用于存储指令;以及设置成环形架构的用于传递令牌的多个指令执行单元(XU)。所述多个XU的每个XU包括逻辑电路,该逻辑电路配置成:从所述非暂时性存储器提取第一指令;执行所述第一指令;从所述非暂时性存储器提取第二指令。所述逻辑电路还配置成,不论所述多个xu的一个XU是否保持用于写入所述第一指令的令牌,均执行所述第二指令。
[0008]为了可以更好地理解本发明的以下详细描述,前述内容已相当广泛地概述了本发明实施例的特征。以下将对本发明实施例的附加特征和优点进行描述,其形成本发明权利要求的主题。本领域技术人员应当理解,可以很容易地将所公开的概念和具体实施例用作修改或设计用于执行本发明的相同目的的其它结构或过程的基础。本领域技术人员还应该认识到,这种等效构造并不脱离所附权利要求中阐述的本发明的精神和范围。
【附图说明】
[0009]为了更完整地理解本发明及其优点,现结合附图参考以下描述,其中:
[0010]图1示出了一种萨瑟兰异步微流水线架构;
[0011 ] 图2示出了一种令牌环架构;
[0012]图3示出了一种异步处理器架构;
[0013]图4示出了在算术逻辑单元(ALU)内进行选通的基于令牌的流水线;
[0014]图5示出了在多个ALU之间进行传递的基于令牌的流水线;
[0015]图6示出了基于令牌的处理器中令牌延迟的场景;
[0016]图7示出了流水线式ALU系统的实施例;以及
[0017]图8示出了针对异步处理器应用流水线式ALU的方法的实施例。
[0018]除非另有说明,不同附图中的相应数字和符号通常指代相应部件。对附图进行绘制以清楚说明实施例的相关方面,并且不一定按比例进行绘制。
【具体实施方式】
[0019]以下对当前优选实施例的形成和使用进行详细讨论。然而,应当理解,本发明提供多种可以在各种特定背景下体现的适用性发明构思。所讨论的具体实施例仅用来说明形成和使用本发明的具体方式,并不限制本发明的范围。
[0020]图1示出了一种萨瑟兰异步微流水线架构。所述萨瑟兰异步微流水线架构是使用握手协议来操作微流水线构件的异步微流水线架构的一种形式。萨瑟兰异步微流水线架构包括多个通过触发器或锁存器依次相连的计算逻辑。所述计算逻辑串联布置并且由每两个相邻的计算逻辑之间的锁存器分隔开来。通过穆勒-c元件(标记为C)来实现握手协议,以便控制锁存器,从而确定是否以及何时在计算逻辑之间传递信息。这使得能够异步或无时钟控制流水线,而不需要定时信号。如图所示,穆勒-c元件具有耦合到相应锁存器的输出端和耦合到其它两个相邻的穆勒-C元件的两个输入端。每个信号具有两个状态(例如,1和0,或者真和假)中的一个。传输到穆勒-C元件的输入信号由反向的A(i),A(i+l),A(i+2),A(i+3)和正向的 R⑴,R(i+1),R(i+2),R(i+3)表示,其中 i,i+1,i+2,i+3表示串联中的各级。传输到穆勒_C元件的正向输入为通过延迟逻辑级的延迟信号。穆勒-c元件还具有存储有输出到相应锁存器的其前一个输出信号的状态的存储器。穆勒-C元件根据输入信号和前一个输出信号发送下一个输出信号。具体地,如果传输到穆勒-C元件的两个输入信号R和A具有不同状态,则穆勒-C元件向相应锁存器输出A。否则,保持前一输出状态。锁存器根据相应穆勒-c元件的输出信号在两个相邻的计算逻辑之间传递信号。锁存器具有最后输出信号状态的存储器。如果传输给锁存器的当前输出信号发生状态改变,则锁存器允许信息(例如,一个或多个处理比特)从前面的计算逻辑传递到下一个逻辑。如果状态没有发生变化,则锁存器阻止信息传递。此穆勒-C元件是一种非标准芯片组件,通常在制造商提供的用于支持各种芯片组件和逻辑的函数库中得不到支持。因此,基于非标准穆勒-C元件在芯片上实现上述架构的功能是有挑战性的,而且不是所希望的。
[0021]图2示出了一种令牌环架构的例子,其根据芯片实施方式是上述架构合适的替代选择。这种架构的组件由用于芯片实现的标准函数库所支持。如上所述,萨瑟兰异步微流水线架构需要由非标准穆勒-C元件实现的握手协议。为了避免使用穆勒-C元件(如图1中),采用一系列令牌处理逻辑来控制诸如芯片上的处理单元(例如,ALUs)或其它函数计算单元的不同计算逻辑(未示出)的处理,或者控制所述计算逻辑对诸如寄存器或存储器系统资源的访问。为了涵盖某些计算逻辑的较长延迟,如图所示,将令牌处理逻辑复制几个拷贝并设置成串联的令牌处理逻辑。串联的每个令牌处理逻辑控制一个或多个令牌信号(与一个或多个资源相关联)的传递。通过串联的令牌处理逻辑传递的令牌信号形成令牌环。令牌环调控计算逻辑(未示出)访问与该令牌信号相关联的系统资源(例如,存储器、寄存器)。令牌处理逻辑按顺序接受、保持并传递彼此间的令牌信号。当令牌处理逻辑保持令牌信号时,与该令牌处理逻辑相关联的计算逻辑被授予独占访问对应于该令牌信号的资源的权利,直到该令牌信号被传递给所述令牌环中的下一令牌处理逻辑。保持并传递令牌信号推断出对应资源的逻辑访问或使用,并且在本文中称为对令牌的消耗。一旦令牌被消耗,其由该逻辑释放给所述令牌环中的后续逻辑。
[0022]图3示出了一种异步处理器架构。该架构包括在如上所述的令牌环架构中并联的多个自定时(异步)算术逻辑单元(ALUs)。所述多个ALU可以包括或对应于图2的令牌处理逻辑。图3的异步处理器架构还包括:反馈引擎、指令/定时历史表、寄存器(存储器)和交叉开关,其中所述反馈引擎用于在所述多个ALU之间恰当地分配输入指令,所述指令/定时历史表能够被所述反馈引擎访问以便确定指令的分配,所述寄存器(存储器)能够被所述多个ALU访问,并且所述交叉开关用于在所述多个ALU之间交换所需信息。所述表用于指示传输到处理器系统的多个输入指令之间的定时和相关性信息。来自指令缓存/存储器的指令由反馈引擎接收,该反馈引擎利用历史表检测或计算数据相关性并确定指令的时序。反馈引擎对每条指令进行预解码以判断该指令需要多少输入操作数。然后,反馈引擎查找历史表以查明这片数据是在交叉开关上还是在寄存器文件上。如果数据是在交叉总线上找到的,则反馈引擎计算是哪个ALU产生所述数据。将该信息标记给分派给该ALU的指令。反馈引擎也相应地更新历史表。
[0023]图4示出了在ALU内进行选通(gating)的基于令牌的流水线,本文中也称为ALU内令牌选通系统的基于令牌的流水线。根据该流水线,采用指定令牌以流水线的给定顺序来选通其它指定令牌。这意味着,当一指定令牌经过一 ALU时,此时允许令牌环架构中同一ALU对第二指定令牌进行处理并传递。换言之,ALU释放一个令牌成为以该给定顺序消耗(处理)该ALU中另一令牌的条件。图4示出了令牌选通关系的一种可能的例子。具体地,在该例子中,启动令牌(U选通寄存器访问令牌(R),其依次又选通跳跃令牌(jump token)(PC令牌)。跳跃令牌选通存储器访问令牌(M)、指令预提取令牌(F)以及可能被使用的其它可能的资源令牌。这意味着,令牌M、令牌F和其它资源令牌只能在传递跳跃令牌后由ALU消耗掉。这些令牌选通提交令牌(w) (commit token)到寄存器或存储器。提交令牌在本文中也称为一种用于写入指令的令牌。反