CN115904493A - 用于可变长度指令集机器的预先暂存指令寄存器 - Google Patents
用于可变长度指令集机器的预先暂存指令寄存器 Download PDFInfo
- Publication number
- CN115904493A CN115904493A CN202210933446.4A CN202210933446A CN115904493A CN 115904493 A CN115904493 A CN 115904493A CN 202210933446 A CN202210933446 A CN 202210933446A CN 115904493 A CN115904493 A CN 115904493A
- Authority
- CN
- China
- Prior art keywords
- instruction
- instructions
- processor
- staged
- processing unit
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本文公开了与具有预先暂存指令的改进处理架构相关的方法和系统。所公开的处理器包括指令存储器,至少一个功能处理单元,总线,一组指令寄存器以及逻辑电路,一组指令寄存器配置为使用总线加载来自指令存储器的一组预先暂存指令,逻辑电路配置为响应于从指令存储器接收指令,将该组预先暂存指令从该组指令寄存器提供到至少一个功能处理单元。
Description
技术领域
本发明涉及计算机处理架构和指令集领域,尤其涉及用于可变长度指令集机器的预先暂存指令寄存器。
背景技术
处理架构包括必须提供指令和数据的功能单元,以执行其功能。指令标识了操作以及将执行操作的数据。操作由处理架构的操作代码识别。操作代码是代表要执行的具体操作的位串(例如,操作代码“001”告诉功能处理单元进行加法,而“002”告诉功能单元进行减法)。在选择和设计功能处理单元或处理架构单元的各种操作代码时,有许多相关的权衡。通过系统传输指令需要能量和时间。此外,更大的指令大小需要更大的总线、寄存器和逻辑电路,这增加了架构的成本。通常,包括更多更专门化指令可以带来显著的好处,因为假设选择了正确的专门化指令,每个指令可以做得更多,且需要通过系统传输的指令更少。然而,更专门化指令需要创建更大的指令库,以及更多或更复杂的功能处理单元来处理指令,这增加了架构的成本。
发明内容
公开了与计算机处理架构和指令集领域相关的方法和系统。本文公开的方法和系统包括处理架构,该处理架构可以动态创建大的复合指令,可以使用单个指令移动所需的电量来执行该复合指令。本文公开的方法和系统包括处理架构,其可以用最小尺寸的指令总线实现可变长度指令集机器(variable length instruction set machine)的功能。在具体实施例中,提供了处理器,其包括一组指令寄存器,该指令寄存器加载来自指令存储器的一组预先暂存指令(pre-staged instructions),并响应于接收到的从指令存储器传递的另一指令,随后将预先暂存指令提供到至少一个功能处理单元。
本发明的具体实施例提供了显著的好处。根据本发明具体实施例的处理器可以创建许多不同的复合指令,这些复合指令可以重复执行,同时仅使用与移动单个较小组件指令相关的电力和总线大小。因此,架构保持了执行各种复合指令的可配置性,同时不会使指令大小变得太大,也不会需要过多的指令通过系统相对长距离的传输到功能处理单元。
通常,虽然前段所述的好处代表了处理架构的改进,但有一些应用,它们尤其相关。例如,在设计用于操作大数据组的处理器中,当处理器通过数据组工作时,一系列操作将被处理器多次执行,一系列操作可以预先暂存(pre-staged)在寄存器中,然后重复应用于数据的不同部分,以响应仅从指令存储器传输的单个指令。作为另一个示例,当处理器打算并行地执行多个操作时,可将并行的操作组预先暂存在寄存器中,然后应用于数据的不同部分,以响应仅从存储器传输的单个指令。在涉及大数据和并行计算的组合的进一步示例中,大量并行指令的序列将需要重复应用于数据的不同部分,并且同样的方法可用于复合减少需要通过系统从指令存储器传输的指令的数量。
在本发明的具体实施例中,提供了一种处理器。处理器包括指令存储器、至少一个功能处理单元、总线、一组指令寄存器和逻辑电路。该组指令寄存器配置为使用总线加载来自指令存储器的一组预先暂存指令。逻辑电路配置为响应于从指令存储器接收指令,将该组预先暂存指令从该组指令寄存器提供到至少一个功能处理单元。
在本发明的具体实施例中,提供了一种方法,其中每个步骤都由处理器执行。该方法包括:将指令存储在指令存储器中,使用总线将一组预先暂存指令从指令存储器加载到一组指令寄存器,在逻辑电路处接收指令,以及响应于接收的指令并使用逻辑电路,将预先暂存指令从该组指令寄存器提供到至少一个功能处理单元。
在本发明的具体实施例中,提供了一种处理器。处理器包括指令存储器、至少一个功能处理单元、总线、一组指令寄存器和逻辑电路。处理器还包括用于使用总线将来自指令存储器的一组预先暂存指令加载到该组指令寄存器的装置。处理器还包括用于响应从指令存储器接收指令,将该组预先暂存指令从该组指令寄存器提供到至少一个功能处理单元的装置。
附图说明
图1示出了根据本文公开的本发明具体实施例的处理器的框图。
图2示出了根据本文公开的本发明具体实施例的处理器的执行区域的框图。
图3示出了根据本文公开的本发明具体实施例的一组方法的流程图。
图4示出了框图和流程图,以说明根据本文公开的本发明具体实施例的逻辑电路的一部分操作。
图5示出了根据本文公开的本发明具体实施例的逻辑电路和至少两个功能处理单元的一部分框图。
图6示出了根据本文公开的本发明的具体实施例的逻辑电路的一部分的框图,逻辑电路设计成用加载触发指令操作。
具体实施方式
在此详细公开了与根据上述发明内容的计算机处理器架构领域相关的方法和系统。该部分中公开的方法和系统是本发明的非限制性实施例,仅用于解释目的,并且不应用于限制本发明的完整范围。应当理解的是,所公开的实施例可以彼此互搭,也可以彼此不互搭。因此,一个实施例或其具体实施例的部分可以落入或可以不落入另一个实施例或其具体实施例的范围内,反之亦然。来自不同方面的不同实施例可以结合或单独实施。在本发明的大框架内示出的有代表性的实施例的许多不同组合以及次级组合,对于本领域技术人员来说可能是明显的,而没有明确示出或描述的,不应被解释为排除。
处理器架构涉及处理器执行计算所需的各种硬件元件的设计。处理器可以包括至少一个存储器和至少一个功能处理单元,功能处理单元用于执行处理器计算。可以通过功能处理单元执行指令来执行计算。存储器可以包括单个硬件元件或单独的硬件元件。存储器可以既存储将执行计算的数据(“操作数数据”)又存储指令本身(“指令数据”或“指令”)。处理器可以至少部分地由处理器的指令集定义,因为处理器的硬件元件设计成用指令集操作。例如,处理器的指令总线可设计为容纳具有指令集的指令大小的数据元素,且处理器的功能处理单元可设计为在寄存器加载来自指令集的给定操作代码时,采取具体行动。
本文公开的处理器可以采用各种形式。处理器可以是多核处理器或独立运行的处理器中的处理核心。处理器可以作为单芯片系统实现,包括晶圆级单芯片系统、多芯片单封装系统,或在多芯片多封装系统中,其中芯片通常连接到公共衬底,例如印刷电路板(PCB)、插接器或硅网。处理器可以是处理器网络的一部分。网络可以是片上网络(NoC)。根据本发明的处理器还可以是网络的一部分,该网络包括多个衬底上的芯片,这些衬底通过高级公共衬底连接在一起,例如在多个PCB的情况下,每个PCB都有一组芯片,多个PCB固定在公共底板上。根据本发明的处理器也可以在基于芯片组(chiplet)的系统中实现。例如,在本发明的具体实施例中,一个或多个处理器可以由一个或多个网络芯片组封装或实现,例如通过插接器连接。
本文公开的处理器可以包括各种元件。处理器可以包括至少一个功能处理单元、存储器和至少一条总线。本文公开的处理器还可以包括额外的或更多有特殊功能的元件,例如网络接口单元、控制器、串行器/解串器以及可修改配置信息的非易失性存储器。处理器的功能处理单元可用于执行计算网络执行复合计算所需的组件计算。计算网络可以包括每个处理器上的路由器和总线系统,总线系统要么仅仅连接相邻处理器以促进多跳通信,要么还连接远处的处理器以促进这些远处的处理器之间的单跳通信。
处理器的存储器可以采用各种形式。存储器可以是随机存取易失性存储器,例如静态随机存取存储器(SRAM)。存储器可以既存储由处理器执行的指令(指令数据),又存储这些指令将用作操作数的数据(操作数数据)。存储器可以是处理器的高速缓冲存储器或处理器的主存储器。处理器可以包括多个存储器,例如快速缓冲存储器和主存储器。处理器可以具有指令缓冲存储器和独立的数据缓冲存储器。在存储器存储编译指令数据的实施例中,它可以称为处理器的指令存储器。
功能处理单元可以采取各种形式,并以各种方式布置在处理器上。功能处理单元可以在处理器上的执行区域中实现。执行区域可以是处理器衬底上的基本连续的区域(例如,硅衬底)。在本发明的具体实施例中,执行区域足够小,以至于相对于处理器的时钟周期而言,在执行区域的任何部分之间移动数据所需的时间可忽略不计。在替代实施例中,执行区域可能需要若干个时钟周期来遍历(例如,3个时钟周期)。然而,本发明的具体实施例将获得显著的好处,该好处与从存储器获取指令并将它们传输到执行区域的相关成本成正比。在这些实施例中,重复执行预先暂存指令的好处将重复地节省与从存储器获取指令相关的时间和能量,无论执行区域的大小。总线可以是用于处理器的指令总线,这可以使指令从指令存储器直接路由到执行区域。功能处理单元可以完全并行或在计算管线(computation pipeline)中布置。如果处理器是处理核心,则处理管线(processingpipeline)可以是处理核心的主计算管线。功能处理单元可以是任何类型的计算单元,包括算术逻辑单元、浮点单元、舍入单元、通用数学单元、压缩单元、数据类型修改单元、加载单元、存储单元以及其他基本计算单元或计算管线单元。加载单元的任务可以是将数据从处理器的高速缓冲存储器、从处理器的主存储器或从处理器执行区域中的暂存区域加载到处理器的计算管线中。存储单元的任务可以是将功能处理单元输出的数据存储在处理器的高速缓冲存储器或处理器的主存储器中。取决于处理器所设计的应用,可以选择专门的功能处理单元和功能处理单元组。例如,功能处理单元可以形成图形渲染管线或脉动阵列,用于密集的线性代数计算。
在实施例中,处理器包括控制器,这种控制器可以采取各种形式。本文公开的处理器可以包括控制器,用于协调处理器内操作的执行以及在功能处理单元和处理器的存储器之间交换数据(包括指令数据和操作数数据)。如本领域所知,控制器可以处理许多已知行动,这些已知行动由标准处理器控制器执行,用于管理处理器。例如,控制器可以将指令从指令存储器加载到处理器的执行区域。更具体地说,控制器可以将指令加载到处理器执行区域的指令解码逻辑中。如果处理器是多核处理器中的处理核心,那么控制器可以是处理器的核心控制器。在具体实施例中,控制器可以是专用的中央处理单元(CPU),用于执行处理器的管理。
在本发明的具体实施例中,本文公开的处理器可以包括一组指令寄存器。该组指令寄存器可以位于功能处理单元的附近。该组指令寄存器可以在处理器的执行区域中。该组指令寄存器可以比指令存储器更靠近功能处理单元。该组指令寄存器可以是处理器指令解码逻辑电路的一部分。该组指令寄存器独立且区别于处理器的指令存储器,但可以加载来自指令存储器的指令。在具体实施例中,指令存储器可以以SRAM的形式在处理器的高速缓冲存储器中实现,而该组指令寄存器通常是寄存器或锁存逻辑电路形式的独立硬件单元。
在本发明的具体实施例中,该组指令寄存器可以配置为使用总线加载一组预先暂存指令。该指令可以称为预先暂存,因为它们被预先加载到该组指令寄存器中,以便之后快速应用于处理器的至少一个功能处理单元。该组指令寄存器可以加载来自指令存储器的指令。指令寄存器可以配置为以各种方式加载该组预先暂存指令。例如,处理器的指令解码逻辑可以识别从存储器加载的特定指令中的专门的操作代码,这表明特定指令的净负荷应该提供给指令寄存器。然后,指令解码逻辑对这些特殊指令的处理可能导致将这些指令存储在指令寄存器中,而不是导致处理核心的计算单元立即执行操作。在本发明的具体实施例中,处理器的指令解码逻辑还可以识别地址,该地址表明净负荷指令应该加载到哪个指令寄存器中。这些专门的指令在此可称为“配置指令”,操作代码是由指令解码逻辑识别的“配置”操作代码。
在实施例中,处理器包括一组指令寄存器,该组指令寄存器配置为加载一组预先暂存指令,处理器可以实现可变长度指令集机器的功能。由于指令集寄存器(instructionset register)的内容可以加载不同的指令集,处理器可以从功能处理单元被设计用来执行的操作代码的组合中有效地创建新的复合指令,以由处理器执行。这些复合指令可以包括不同数量的组件指令,因此复合指令的长度是可变的。
在本发明的具体实施例中,预先暂存指令可以在减小指令总线大小、减少需要在指令总线上传输的指令数量或两者的组合方面提供显著的好处。由于指令集寄存器的内容能够加载可以多次利用的指令集,例如在大数据组或循环程序的情况下,相关的指令不需要重复从指令存储器传递到处理器的执行区域,而仍然实现相同的计算量。此外,尽管加载这些寄存器会有开销,但如果多次利用预存储的指令集,相对于由此带来的节省,这种开销可以忽略不计。这在诸如图形渲染、机器学习应用的训练、从人工神经网络中得出推论以及其他的应用中尤其如此。
在本发明的具体实施例中,响应于从指令存储器接收指令,可以将预先暂存指令从该组指令寄存器提供到至少一个功能处理单元。指令可以包括特定的操作代码,将会将其标识为“触发指令”。处理器的指令解码逻辑可以检测指令中的“触发”操作代码,并作为响应启动向至少一个功能处理单元提供预先暂存指令。该指令可称为触发指令,因为它触发向至少一个功能处理单元提供预先暂存指令。该指令也可以称为宏指令,因为预先暂存指令可以是一组组件指令,这些组件指令形成按序列提供给至少一个功能处理单元的指令复合程序。在本发明的具体实施例中,参考图6如下文所述,触发指令可以通过操作代码来识别,操作代码将由功能处理单元来执行,但它将作为触发指令提供双重用途。
在本发明的具体实施例中,触发指令可以包括净负荷,该净负荷具有关于将预先暂存指令从该组指令寄存器提供到至少一个功能处理单元的方式的配置信息和/或至少一个功能处理单元应该如何执行指令的配置信息。作为配置信息的示例,触发指令可以包括用于识别序列的序列信息,序列用于将指令寄存器中的指令应用于至少一个功能处理单元。相应的,触发指令的内容可以设计为通过预先暂存指令在指令寄存器中的地址来识别预先暂存指令,并通过这些地址的排列来描述它们的序列。作为配置信息的另一示例,触发指令可以包括执行信息,执行信息指定指令的具体操作数的位置以及指令执行结果放置在哪里。在至少一个功能处理单元与一组暂存寄存器(a set of staging registers)相关联的实施例中,执行信息可以识别暂存寄存器中的地址,该地址中存储着执行指令的中间或最终结果。执行信息可以包括应如何执行预先暂存指令的附加规范,例如应该将指令的执行分配给哪个特定的功能单元,应执行指令的精度,指令输出的所需的数据类型,如果应以某种其他方式抑制指令,以及其他多种选择。
图1示出了根据本文公开的本发明具体实施例的处理器100的框图。处理器100包括指令存储器101、功能处理单元102、总线103、一组指令寄存器104和逻辑电路105。功能处理单元102、指令寄存器104和逻辑电路105在处理器100的执行区域106中。指令存储器101与执行区域106分离,但能够通过总线103向执行区域106提供指令。由于总线103路由来自指令存储器的指令,总线103可以称为处理器100的指令总线。指令存储器101存储指令(例如指令107),指令用于通过总线103传输到执行区域106,顺序由它们在指令存储器101中的位置决定。该指令可以由作用于更高级指令的自动编译器或直接由人类程序员提供给指令存储器101。在本发明的具体实施例中,处理器100利用指令获取命令作为触发器,用于通过程序步进并从指令存储器101获取下一条指令,以传递到执行区域106。功能处理单元102绘制覆盖在处理器100的主计算数据流上。数据流输入的是执行区域106中的输入数据寄存器108,并且数据流输出的是执行区域106中的输出数据寄存器109。在本发明的具体实施例中,数据流将包括处理器100的计算管线,功能处理单元102是处理器100的一部分。输入数据寄存器108和输出数据寄存器109可以是数据的暂存寄存器,这些数据将作为操作数数据更持久地存储在处理器的存储器中。在本发明的具体实施例中,输入数据寄存器108和输出数据寄存器109可以相同,以便输出覆盖输入。操作数数据的存储器可以是与指令存储器101相同的硬件元件,也可以是不同的存储器,例如处理器的高速缓冲存储器或主存储器。
处理器100可以至少部分地由处理器100的指令集定义。指令集可以包括处理器的功能处理单元(例如功能处理单元102)可以识别的所有指令。总线103的宽度至少与指令集的指令大小相同。例如,指令大小可以是32位,总线可以是32线总线。此外,指令寄存器104可以设计为存储具有指令集的指令大小的预先暂存指令。处理器100可以具有指令集,该指令集包括触发指令和配置指令,触发指令用于触发从指令寄存器向功能处理单元提供指令,配置指令用于控制指令寄存器中预先暂存指令的初始存储。
在本发明的具体实施例中,处理器可以包括指令解码逻辑电路形式的逻辑电路,该逻辑电路与处理器的功能处理单元结合操作以执行指令。指令解码逻辑电路可以至少部分地由处理器的指令集定义。例如,逻辑电路105可以包括指令解码逻辑电路110,指令解码逻辑电路110根据标准处理器的指令解码逻辑电路进行操作,以解码总线103上提供的供功能处理单元102执行的指令。因此,功能处理单元102和指令解码逻辑电路110可以执行指令,例如来自指令存储器101的指令107,使用来自输入数据寄存器108的操作数数据,以将操作数数据输出到输出数据寄存器109。此外,除了根据标准处理器的方法对用于执行的指令进行解码外,指令解码逻辑电路110还可以包括识别配置和触发指令并适当处理它们的功能。逻辑电路可以使用识别操作代码的标准过程(standard processes)来识别相关的操作代码。然后,逻辑电路可以处于将指令数据路由到指令寄存器104的状态(在接收到配置指令时)或将指令数据从指令寄存器104路由到功能处理单元102的状态(在接收到触发指令时)。
在本发明的具体实施例中,处理器可以包括用于使用总线将一组预先暂存指令加载到一组指令寄存器的装置。指令寄存器可以配置为使用总线加载来自指令存储器的一组预先暂存指令。例如,总线可以是处理器的指令总线,例如总线103,并且指令寄存器应该配置为可选地连接到指令获取线,指令获取线通过多路复用器或横杆锁存器与总线103耦合,或者指令寄存器可以连接到逻辑电路105,以便在逻辑电路处理完指令之后接收指令。用于使用总线103将一组预先暂存指令加载到该组指令寄存器104的装置可以是指令解码逻辑电路110。指令解码逻辑电路110可以设计为检查总线103上提供的指令,响应于指令获取命令,将该指令识别为配置指令,并采取合适的行动将预先暂存指令加载到指令寄存器(例如,指令寄存器104)中,例如将配置指令的净负荷路由到特定寄存器。指令解码逻辑电路110可以根据固定排程(例如通过寄存器地址的循环顺序)将指令路由到特定寄存器。或者,配置指令可以包括关于预先暂存指令应加载到哪个指令寄存器的特定信息。如其他地方提到的,配置指令可以包括其他指令数据,例如,预先暂存指令是什么类型的指令,以及与预先暂存指令相关联的其他数据,例如应如何执行预先暂存指令以及指令的操作数是什么。在具体实施例中,配置指令的净负荷可以是预先暂存指令本身或这种指令的大部分。在具体实施例中,指令解码逻辑电路110可以在检测到配置指令后改变其状态,并在接收到附加指令时直接将其路由到指令寄存器,而不是对其进行解码。在这些实施例中,配置指令可以包括计数器,计数器用于计算解码逻辑电路110在恢复到其标称状态之前应该路由到指令寄存器的指令数。或者,关闭配置模式的单独指令随后可以将指令解码逻辑110返回到其正常状态,在该状态下,额外的传入指令被正常处理。在替代或组合中,用于使用总线加载该组指令寄存器的装置可以包括控制器,例如控制器113。控制器可以配置为使用总线将该组预先暂存指令从指令存储器加载到该组指令寄存器。该过程可以覆盖逻辑电路105的操作,并使用总线114直接写入指令寄存器104内的地址,以便预先暂存该组指令。控制器可以是软件可访问的控制器,以便于调试指令寄存器的操作。控制器113还可以通过总线115将指令加载到指令存储器101中,以便于调试配置指令。在处理器100是处理核心的实施例中,控制器113可以是核心控制器。
在本发明的具体实施例中,处理器可以包括用于响应从指令存储器接收指令将一组预先暂存指令从一组指令寄存器提供到至少一个功能处理单元的装置。例如,处理器可以包括逻辑电路,该逻辑电路配置为响应从指令存储器接收指令,将该组预先暂存指令从该组指令寄存器提供到至少一个功能处理单元。在图1的示例中,逻辑电路105可以包括预先暂存指令传递逻辑电路111,以便于将预先暂存指令提供给功能处理单元102。在本发明的具体实施例中,预先暂存指令传递逻辑电路111可以在控制器(例如控制器113)的控制下这样做。在本发明的具体实施例中,预先暂存指令传递逻辑电路111可以在由指令解码逻辑电路110提供的可配置信息的控制下这样做。指令解码逻辑电路110可以在总线103上接收到这样的触发指令时,提供来自触发指令的操作代码或净负荷的这种可配置信息。在这两类实施例中的任何一类中,在解码触发指令时,指令解码逻辑电路可以启动预先暂存指令传递逻辑电路。在这两类实施例中的任何一类中,预先暂存指令传递逻辑电路(例如,预先暂存指令传递逻辑电路111)可以设计为将指令序列从指令寄存器提供到功能处理单元,由处理器的控制器(例如,控制器113)发送指令获取命令进行同步。指令获取命令可以是控制器发出的标准信号,以便在执行其指令时同步处理器的操作。
取决于本发明的实施例,指令寄存器中的指令可以具有与处理器的指令集的指令大小相同的大小,或者可以具有不同的大小。例如,预先暂存指令可以以第一格式传递到逻辑电路105,第一格式将它们标识为打算存储在指令寄存器104中,然后可以以第二格式存储在指令寄存器104中。第二格式可以比该第一格式具有更少的位。当指令第一次传递到逻辑电路105时,指令的操作代码可以将其标识为配置指令,而当指令存储在指令寄存器104中时,指令的首部可以将其标识为数学操作或将由功能处理单元102执行的一些其他类型的操作。作为另一个示例,预先暂存指令可以直接被传递到指令寄存器104,而无需由控制器113或逻辑电路105修改。
处理器100的功能的具体示例说明了本发明某些实施例的好处。功能处理单元102可以是用于执行存储在指令存储器101中的程序的浮点单元。该程序可以是四个浮点单元操作的循环,必须在大数据组(data set)上执行。数据组可能包括数十亿个条目,因此循环需要运行数十亿次,以处理整个数据组。为了执行该操作,编译器可以为指令存储器101编译一组指令,该指令首先指示逻辑电路105将循环的四个浮点单元操作预先暂存到指令寄存器104中,然后指示逻辑电路105将这些指令以重复序列应用于功能处理单元102。指令寄存器的初始加载可以通过向逻辑电路105传递四条配置指令来实现。序列的每一次重复都可以通过传递具有净负荷的触发指令来实现,净负荷识别了运行序列的附加数据。该示例说明了所公开的架构的好处。因为必须通过总线103传输的指令数量减少了四倍。如果数据组包含数十亿个循环,这可以代表显著的节省,并且发送最初四条配置指令的开销可以忽略不计。这提供了显著的好处,总线103可以保持小型,因为所需的指令大小较小(可以通过发送配置信息来形成更复杂的指令,因此每个组件指令都可以小),因为在执行区域内的指令传输比从指令存储器向执行区域的指令传输耗电更少。此外,触发指令可以包括序列信息,以标识四个操作应该运行的顺序。因此,该示例说明了额外的好处,即常用组件指令可以重新配置为不同的复合指令,而无需发送额外的配置指令来重新配置存储在指令寄存器104中的指令。
图2示出了根据本文公开的本发明具体实施例的处理器的执行区域的框图。执行区域200可用于解释本发明的进一步实施例。在本发明的具体实施例中,处理器可以包括两个或多个功能处理单元,来自指令寄存器的指令可以并行地馈送到这些功能处理单元。图1中的参考编号再次用于指示前面描述的元件。由于执行区域200在处理器的数据流路径上明确地示出了多个功能处理单元,因此执行区域200与执行区域106是可辨别的。具体地,执行区域200包括功能处理单元201和功能处理单元202。本公开中的各个功能单元可能需要一个以上的时钟周期来执行指令,因此可以以管线方式执行指令。此外,可以布置多个功能处理单元来对数据执行管线操作。例如,图2中的功能单元可以布置为从数据寄存器108获取数据,并使用脉动阵列范式对数据进行操作,其中每个功能单元(即201和102)的输出被提供作为下一个功能单元(即分别为102和202)的输入。此外,多个功能单元可以布置成通过从一组公共寄存器(例如暂存寄存器203)写入和读取,以管线方式操作。例如,功能处理单元201可以将输出数据写入暂存寄存器203,然后由功能处理单元202将其作为输入数据读取。在图2的具体实施例中,功能处理单元配置为可以使用上述三个管线概念中的任何一个。此外,可以在总线103上接收的配置或触发指令中的执行信息中描述执行管线的方式。根据本发明的具体实施例,逻辑电路105可以将指令从指令寄存器104提供到管线中的任何功能处理单元。由于执行区域200包括一组暂存寄存器203,功能处理单元102,201,202可访问暂存寄存器203,因此执行区域200与执行区域106进一步区分。暂存寄存器203可以是功能处理单元可用的一组通用寄存器。
在执行区域包括多个功能处理单元的系统中,来自指令寄存器的指令可以以各种方式路由到正确的功能处理单元。例如,在具体实施例中,指令寄存器中的指令可以包括标识该指令用于哪个功能处理单元的指令数据(例如,直接通过功能处理单元标识符或间接通过包括只能由特定功能单元执行的操作代码)。作为另一个示例,指令解码逻辑可以将指令存储在特定指令寄存器中,特定指令寄存器与给定功能处理单元相关联。指令解码逻辑可以从对指令的操作代码的分析或从对存储在指令净负荷中的配置数据的分析中获得该存储步骤所需的信息。
在处理架构中,处理管线包括一组暂存寄存器,在执行指令寄存器中的一组指令期间,要使用的暂存寄存器的具体地址可以由触发指令中的配置数据指定。执行区域200包括功能单元可访问的一组暂存寄存器203。暂存寄存器可以存储来自功能处理单元的中间结果,主流管线外的管线(pipeline)中的其他功能处理单元可能需要这些中间结果。在这些实施例中,用于执行指令寄存器中指令的触发指令可以包括配置信息,并且逻辑电路105可以配置为将该组预先暂存指令与配置信息一起从该组指令寄存器104提供到功能处理单元102,201,202。配置信息可以设置在暂存寄存器203中的地址,以供该组预先暂存指令使用。在具体实施例中,指令寄存器中的指令可以小于总线103上传递的指令。例如,总线103上传递的指令可以是32位指令,存储在指令寄存器104中的指令可以是28位指令。在这些实施例中,来自触发指令的配置信息可以足够大,以向该组指令寄存器104中的每个指令提供4位,以便它们成为由指令解码逻辑110处理的完整32位指令。配置信息可以包括替代实施例中的附加信息,这些附加信息将在功能处理单元执行预先暂存指令之前,增加预先暂存指令的大小。
图3示出了一组方法的流程图300,该组方法依照本发明公开的具体实施例。流程图300从用于处理器执行计算的编译指令的步骤301开始。该步骤可导致在处理器的指令存储器中指令序列的存储。步骤301可以由处理器一部分的编译器执行,或者由外部编译器执行,其中指令通过用于执行复合计算的网络推送到处理器,其中处理器只是单个处理节点。在具体实施例中,步骤301还可以由人类程序员通过操作控制系统来执行,人类程序员直接指定存储在指令存储器中的指令序列。这些指令可以存储在一系列地址中,这些地址将由程序计数器按顺序访问,并由处理器的控制器发出的指令获取命令进行同步。步骤301可以包括增加程序执行的并行化的步骤。为此,编译器可以在程序中搜索循环,并为循环中的每个操作形成一组预先暂存指令和相关配置数据。步骤301还可以包括生成配置和触发指令,以包含在指令序列中。该步骤可以作为在程序中搜索循环的过程的一部分来执行,因为配置指令可以在处理器的指令寄存器中预先暂存执行循环的指令,并且触发指令可以通过触发将预先暂存指令从指令寄存器提供到处理器的至少一个功能处理单元,来触发循环的一次执行。
流程图300继续在指令存储器中存储指令的步骤302。指令可以是在步骤301中编译的指令,包括触发和配置指令。指令存储器可以是处理器的本地缓存或主存储器。例如,指令存储器可以是来自图1的指令存储器101。指令可以按照他们将执行的顺序存储。
流程图300继续步骤303,使用总线将一组预先暂存指令从指令存储器加载到一组指令寄存器。总线可以是处理器的指令总线。指令可以由处理器执行区域中的逻辑电路处理,并根据上述方法路由到指令寄存器。例如,指令解码逻辑110可以接收在总线103上的配置指令,并切换到总线103上接收的附加指令路由到指令寄存器104的模式。或者,在总线103上接收的特定指令可以将其自身识别为应该由指令解码逻辑110路由到指令寄存器104中的指令。该步骤可以与处理器的指令获取命令同步执行。该步骤可以包括处理器的控制器以及处理器的指令存储器和逻辑电路所采取的行动。
流程图300继续接收指令的步骤304。指令可以在处理器上的逻辑电路接收。逻辑电路可以是处理器的指令解码逻辑电路。可以根据获取由处理器执行的指令的标准过程来接收指令。可以在处理器的指令总线上接收指令。或者,指令可以从用于调试的总线上的处理器的控制器传递到处理器的指令解码逻辑,或者以其他方式覆盖指令传递到处理器的指令解码逻辑的通常方式。指令可以是触发指令,它将启动从指令寄存器到处理器的至少一个功能处理单元的预先暂存指令的传输。触发指令也可以是其自身可由功能处理单元执行的指令,但还包括指示预先暂存指令应从指令寄存器提供的信息,例如标记或其他首部信息。
在本发明的具体实施例中,接收到的指令将启动向功能处理单元提供指令,例如在步骤304中接收到的触发指令,可以包括关于应如何执行预先暂存指令的配置信息。配置信息可以包括选择信息、序列信息和/或执行信息。处理器的逻辑电路可以配置为使用选择信息选择存储在指令寄存器中的一组预先暂存指令的子集。逻辑电路还可以配置为根据序列信息,以指定的序列向至少一个功能处理单元提供该组预先暂存指令的子集。例如,触发指令可以包括配置信息,该配置信息将使用选择信息从十二个预先暂存指令中选择两个,并可以使用序列信息指定其中一个指令应在另一个指令之前执行。在本发明的具体实施例中,序列信息可以隐含在选择信息的排列中。例如,触发指令可以具有第一寄存器地址后跟第二寄存器地址的净负荷。因此,由于两个地址的存储顺序,序列和选择信息被组合。这两个寄存器地址的选择将作为选择信息,而这两个地址在净负荷中的顺序将作为序列信息。
流程图300继续步骤305,响应于接收指令并使用逻辑电路,将预先暂存指令从该组指令寄存器提供到至少一个功能处理单元。可以使用随指令提供的配置信息,将预先暂存指令提供给至少一个功能处理单元。指令可以是上面提到的触发指令。该步骤可由处理器的逻辑电路执行。例如,该步骤可以由处理器100的逻辑电路105执行。作为更具体的示例,该步骤可以由预先暂存指令传递逻辑电路111执行。预先暂存指令传递逻辑电路111可以响应于来自指令解码逻辑电路110的信号或响应于来自处理器的控制器(例如控制器113)的信号来执行步骤305。
流程图300包括步骤305的一组子步骤,以描述执行步骤305的具体实施例。具体示例,执行该步骤可以通过具有多路复用器和移位寄存器的预先暂存指令传递逻辑电路来进行,其中,移位寄存器控制在给定时间访问那个寄存器,多路复用器可以将该寄存器的内容传递到处理器的至少一个功能处理单元。子步骤包括使用逻辑电路加载具有来自指令序列信息的逻辑电路的移位寄存器的步骤306,用来自移位寄存器的序列信息控制多路复用器的步骤307,以及通过多路复用器将该组预先暂存指令从该组指令寄存器提供到至少一个功能处理单元的步骤308。下面可以参考图4描述用于执行这些子步骤的具体系统。
在本发明的具体实施例中,处理器包括具有移位寄存器和多路复用器的逻辑电路,用于执行将预先暂存指令从指令寄存器提供到功能处理单元。逻辑电路可用于预先暂存指令传递逻辑电路的目的,例如,预先暂存指令传递逻辑电路111。移位寄存器可以与多路复用器控制耦合,并且多路复用器可以配置为基于移位寄存器的控制输入将各种不同指令寄存器的内容提供给给定的功能处理单元。多路复用器的各种输入可以是一组指令寄存器中的不同指令寄存器。多路复用器的输入还可以包括与指令总线的直接链接,这将允许绕过预先暂存指令传递逻辑电路。多路复用器的输入还可以具有通常访问的硬编码指令。在要求在任何给定的复合指令中执行这种硬编码指令的情况下,本发明的实施例将进一步节省时间和能量,因为硬编码指令不需要预先由配置指令设置。
图4示出了框图和流程图,以说明根据本文公开的本发明具体实施例的逻辑电路的一部分操作。逻辑电路400的部分可以包括多路复用器401和移位寄存器402。多路复用器401与移位寄存器402控制耦合。逻辑电路400的部分可以是预先暂存指令传递逻辑电路,例如预先暂存指令传递逻辑电路111。逻辑电路400的部分可以与识别触发指令的指令解码逻辑相结合,作为将一组预先暂存指令从一组指令寄存器提供到至少一个功能处理单元的装置,以响应从指令存储器接收的指令。将参考图5描述,可以组合使用逻辑电路400的部分的多个例示,来并行地向多个功能处理单元提供指令。逻辑电路400的部分还可以执行流程图300中的步骤307和308,并接收在步骤306中加载的序列信息。在这些实施例中,指令解码电路可以执行步骤306,并作为使用总线将一组预先暂存指令加载到该组指令寄存器的装置。
在本发明的具体实施例中,配置指令的净负荷将用于加载指令寄存器,触发指令的净负荷将用于加载移位寄存器。移位寄存器可以在其所连接的多路复用器的编码空间中加载特定指令寄存器的地址。移位寄存器可以加载一系列这种地址,以便通过功能处理单元触发提供预先暂存指令,预先暂存指令来自与这种地址相关联的指令寄存器。移位寄存器可以配置为出于如下所述的各种原因移位。无论移位寄存器以何种方式移位,当移位寄存器中的值循环时,指令寄存器地址序列将提供给多路复用器,并且相关联指令寄存器地址处的预先暂存指令将提供给相关联的功能处理单元并执行。这样,处理器的逻辑电路可以配置为向移位寄存器加载来自指令的序列信息,并配置为使用序列信息和移位寄存器,通过多路复用器将预先寄存指令从该组指令寄存器提供到至少一个功能处理单元。然而,这些步骤也可以有多种替代方法。
在本发明的替代实施例中,一个或多个配置指令的净负荷将用于加载指令寄存器并向移位寄存器提供多组预先暂存输入,而触发指令的净负荷将用于选择应将哪组预先暂存输入提供给移位寄存器。这些方法与上一段中描述的方法不同,因为触发指令的净负荷可以更小,因为它将只选择一组预先暂存输入到移位寄存器,而不需要对全部组的预先暂存输入进行编码。除此之外,该方法与上一段中描述的方法类似。在接收到为移位寄存器识别一组预先暂存输入的触发指令后,该组预先暂存输入可以加载到移位寄存器中。预先暂存输入可以是它们所连接的多路复用器编码空间中特定指令寄存器的地址。移位寄存器的预先暂存输入可以是这种地址的序列,以便通过功能处理单元触发提供预先暂存指令,预先暂存指令来自与这种地址相关联的指令寄存器。
图4包括配置指令410和触发指令411。所示逻辑电路通过先向指令寄存器104加载预先暂存指令来实现功能。例如,配置指令410的净负荷412可以加载到指令寄存器413中,并存储为预先暂存指令。在此示例中,单独的指令先前加载到指令寄存器104中。随后,可将触发指令411的净负荷415加载到移位寄存器402中。净负荷415可以是寄存器414的地址,后跟MUX401编码空间中的寄存器413的地址,并且可以加载到移位寄存器402的顺序寄存器中。或者,如上所述,净负荷415可以以前段所提到的地址序列的形式识别移位寄存器的一组预先暂存输入。在这种方法中,该组预先暂存输入可以由配置指令410提供,配置指令410也具有移位寄存器净负荷。
在本发明的具体实施例中,触发指令可以包括足够的配置信息,以选择和排序大量预先暂存指令,以便由处理器的一个或多个功能处理单元执行。例如,如果MUX401的编码空间是两位,并且净负荷415是24位净负荷,则净负荷415将能够选择并排序12条预先暂存指令,以供功能处理单元102执行。因此,触发指令411的净负荷415将是序列和选择信息(指定指令寄存器413,414中的指令应按照它们应该执行的顺序执行)。此时,电路将准备好向功能处理单元提供预先暂存指令。流程图420提供了来自流程图300的执行步骤303的子步骤,包括接收处理器指令获取命令(processor instruction fetch command)的步骤421和接收处理器指令获取命令时使移位寄存器移位的步骤422。这些步骤可以涉及移位寄存器(例如移位寄存器402),在输入(例如输入403)上接收处理器指令获取命令,并相应地使移位寄存器移位。结果,移位寄存器402的下一个寄存器的内容将被提供给多路复用器的控制输入。例如,移位寄存器402可以首先将指令寄存器414的地址输出到MUX401,这将导致MUX将指令从指令寄存器414提供给功能处理单元102,然后可以通过接收输入403上的信号进行移位,将指令寄存器413的地址输出到MUX401的控制输入。因此,触发指令可以通过按照不同的序列加载移位寄存器,基于一组预先暂存指令创建不同的复合指令。虽然在该示例中未提供,但也可以基于来自触发指令的其他配置信息来区分不同的复合指令,例如输入、输出或中间寄存器的地址,以供指令在执行期间使用。
在本发明的具体实施例中,贯穿本公开描述的移位寄存器可以被配置为以不同方式移位。在具体实施例中,一旦满足一组指定的依赖关系(designated dependencies),移位寄存器就可以移位。指定的依赖关系可以随着设备的操作过程而变化。依赖关系可以由更高级控制器或通过配置或触发指令中发送的控制信息进行编程。该组依赖关系可以编程为空集,从而使移位寄存器继续自动移位,而无需接收额外的外部控制信号。移位寄存器可以配置为在不需要接收另一个处理器指令的情况下进行移位,并且可以继续循环处理预先暂存指令,其速度与功能处理单元能够处理这些预先暂存指令的速度相同。作为依赖关系的示例,移位寄存器可以配置为在接收到处理器的指令获取命令时进行移位。指令获取命令可以是在图4中的输入403上接收到的信号。作为另一个依赖关系的示例,移位寄存器可以配置为需要在移位之前接收到另一个指令。作为另一个示例,移位寄存器可以配置为需要在移位之前接收到另一个触发指令。作为另一个示例,移位寄存器可以配置为一旦从存储器接收到数据已成功写入其中的响应就移位。作为另一个示例,移位寄存器可以配置为响应于上述事件的组合而移位。在本发明的具体实施例中,移位寄存器可以配置为表现出这些行为中的任何一种,并且所使用的移位方式可以由初始触发指令或配置指令的净负荷来设置。例如,如果指令413在接收到一些其他指令之前不应执行,则移位寄存器402可以配置为只在接收到该指令时才移位。然而,如果指令413可以在414之后立即进行,那么移位寄存器402也可以配置为立即移位。
上面参考图4描述的方法可以扩展到具有多个功能处理单元的处理器。处理器可以包括多个预先暂存指令传递逻辑电路,用于将正确的预先暂存指令传递到合适的功能处理单元。在单指令多数据(SIMD)实施方式中,来自指令寄存器的相同指令可以同时提供给多个功能处理单元。在管线并行计算实施方式中,可以为每个功能处理单元使用额外的多路复用器和移位寄存器,以将不同的指令并行地提供给不同的功能处理单元。不同的功能处理单元可以是不同类型的功能处理单元,或者可以是相同类型的功能处理单元在数据上执行不同的指令或相同的指令,其在沿处理管线向下移动时已经改变。额外的多路复用器和移位寄存器组可以共享一组指令寄存器,或者它们可以各自拥有自己的一组指令寄存器。
图5示出了根据本文公开的本发明具体实施例的具有至少两个功能处理单元的逻辑电路500的一部分框图。所示的功能处理单元501和502可以是在处理器管线的不同部分上操作的功能处理单元。将功能处理单元501和502并入处理器的数据路径的各种方式可以与参照图2中的功能处理单元102、201和202所描述的方式相同。例如,功能处理单元501和502可以连接到处理器中的相同管线级(pipeline stage),可以在脉动阵列范式中按顺序排列,和/或可以相互连接到一组暂存寄存器,以支持多个潜在的管线路径。功能处理单元501和502可以是同一类型的功能处理单元,或者是不同类型的功能处理单元。例如,功能处理单元可以包括两个不同的功能处理块,选自:加载块、数据类型转换块、算术逻辑单元块、浮点数学块、舍入块和存储块,以及任何其他类型的专门化的功能处理单元。逻辑电路500是可以执行图3中的步骤305的电路的另一个示例,增加了至少一个功能处理单元,包括两个功能处理单元501和502,并且在步骤305中提供来自该组指令寄存器的预先暂存指令,包括向两个功能处理单元501和502并行地提供指令。
逻辑电路500的操作类似于逻辑电路400的操作,并且类似的原理可以应用于具有甚至多于两个功能处理单元并行操作的处理架构。此外,如上所述,逻辑电路500中的每个功能处理单元可以由SIMD架构中的一个或多个功能处理单元镜像,其中每个镜像的功能处理单元接收到与所示的功能处理单元相同的指令。两个或多个功能处理单元可以布置在并行管线中,或按顺序布置在单一管线中。逻辑电路500包括至少两个多路复用器503和504,至少两个多路复用器503和504由至少两个移位寄存器505和506一一对应控制。处理器的逻辑电路配置为向至少两个移位寄存器505和506加载来自指令的配置信息。在所示实施例中,该指令是触发指令540,其具有分别提供给移位寄存器505和506的两个单独的配置信息段511和512。配置信息511和512可以是序列信息,并且包括分别在多路复用器503和504的地址编码空间中的指令寄存器507和508中的特定寄存器的地址。用于向移位寄存器提供配置信息的逻辑电路可以是处理器的指令解码逻辑。
在所示实施例中,逻辑电路配置为使用序列信息和至少两个移位寄存器,将一组预先暂存指令并行地提供给两个功能处理单元。来自该组指令寄存器的该组预先暂存指令可以通过至少两个多路复用器提供给至少一个功能处理单元。例如,移位寄存器505可以在多路复用器503的控制输入上为多路复用器503的编码空间中的寄存器509提供地址,同时,移位寄存器506可以在多路复用器504的控制输入上为多路复用器504的编码空间中的寄存器510提供地址。结果,多路复用器503将把寄存器509的指令传递给功能处理单元501,而多路复用器504将把寄存器510的指令传递给功能处理单元502。寄存器509和510不在其相关寄存器组的同一部分中,以说明多个多路复用器可以连接到同一组指令寄存器的事实。当多个功能处理单元设计为识别相同的操作代码时(例如,如果功能处理单元501和功能处理单元502是相同类型的功能处理单元),这种方法可能是有意义的。逻辑电路500可以设计为将指令并行地提供给功能处理单元501和502,因为移位寄存器505和506都可以由公共信号513控制。例如,公共信号可以是处理器的处理器指令获取命令,并导致两个移位寄存器并行移位。
在依据图5的方法中,指令寄存器可以以类似于上面参考图4所描述的方法加载预先暂存指令。专门化指令(例如配置指令)可以预先从指令存储器中发出,这些指令要么加载到寄存器本身,要么包括用于加载寄存器的数据。在图5的示例中,触发指令540的前面有第一配置指令520和第二配置指令530。触发指令540的前面可以有任何数量的指令,这些指令将用来加载指令寄存器。如图所示,配置指令520包括第一净负荷,其可以是用于存储在指令寄存器509中的预先暂存指令的至少一部分,并且配置指令530包括第二净负荷,其可以是用于存储在指令寄存器510中的第二预先暂存指令的至少一部分。图5仅是说明性的,并且在具体实施例中,单个配置指令可以包括加载一个以上的指令寄存器所需的数据。
在本发明的具体实施例中,处理器的功能处理单元可以是不同类型的功能块。例如,功能处理单元可以选自加载块、数据类型转换块、算术逻辑单元块、浮点数学块、舍入块和存储块,以及任何其他形式的基本的或专门化的功能处理单元。在这些实施例中,处理器可以配置为将指令发出总线上传递的每条指令传递到电路的指令解码逻辑,并将指令的操作代码推送到每个功能处理单元,而只有被设计为执行相关操作的功能处理单元才会进行操作。在替代实施例中,指令解码逻辑将包括评估操作代码的逻辑,并基于该评估将其单独路由到合适的功能单元。不管采取何种方法,指令解码逻辑可以配置为将特定指令视为由功能处理单元执行的常规指令和如本文其他地方所述的触发指令。
在本发明的具体实施例中,如下面参考图6所描述的,触发指令可以通过操作代码来识别,操作代码将由功能处理单元执行,但它将作为触发指令发挥双重作用。这些指令可以称为操作触发指令。例如,如果操作是加载指令,则该指令可以称为加载触发指令。在该示例中,至少一个功能处理单元可以包括加载块和至少一个不同的功能块。加载触发指令可以是加载指令,具有专用空间用于额外的配置信息(例如序列信息),以限定如何执行存储在指令寄存器中并打算用于不同功能块的预先暂存指令。
使用操作触发指令的实施例可以展现出具体的好处。在处理器执行的指令的每个序列或管线中使用特定功能处理单元的方法,它们将在该方法中特别受益。前面提到的加载触发指令是这种指令的示例,当它用在配置有加载功能处理单元的处理架构中时,加载功能处理单元被用作利用可用功能处理单元执行操作序列的第一步。在这些实施例中,用于加载功能处理单元的指令可以包括将指令识别为加载指令的操作代码、加载功能处理单元操作所需的净负荷(例如,要加载到管线中的数据地址),以及如上所述的触发指令的配置信息。
图6示出了根据本公开发明的具体实施例的逻辑电路的一部分的框图600,逻辑电路设计成用加载触发指令操作。框图600包括加载块601、数学块602和舍入块603形式的不同功能处理单元的管线。管线还可以包括诸如本文所述的其他块。如图所示,加载块601不与用于提供预先暂存指令的逻辑电路相关联。相反,加载块601接收加载指令611,加载指令611作为加载触发指令610的一部分。图示的加载块601接收加载指令611的路径可以涉及标准指令解码逻辑电路。加载指令611可以向加载块601提供来自主存储器或高速缓冲存储器的地址,从地址中加载操作数数据,以供管线的其余部分进行操作。同时,加载触发指令610可以包括用于传递到移位寄存器620的数学移位寄存器净负荷612,和用于移位寄存器630的循环移位寄存器净负荷613。如图5所示,移位寄存器净负荷可以指定MUX621地址空间中指令寄存器622中的地址,以及MUX631地址空间中指令寄存器632中的地址。移位寄存器净负荷可以包括由数学块602和循环块603中的每一个执行多条指令的配置信息。多条指令可以在通过管线的多轮流水式数据上执行,或者在管线的单次执行中执行多个数据元素。这第二种类型的指令执行可能涉及暂存寄存器,以存储中间值和由每个功能处理单元执行的多个操作。在本发明的具体实施例中,加载触发指令610可以为管线中的每个功能处理单元指定指令,否则功能处理单元将需要来自指令存储器的单独指令,这样,单个加载触发指令(与处理器的指令获取命令同步传递)将使整个管线以最大的并行度运行,而无需等待其他命令。
根据本公开的处理器可以包括至少一个非暂时性计算机可读介质。至少一个处理器可以包括计算节点网络中的至少一个计算节点。介质可以包括处理器上的高速缓冲存储器。介质还可以包括共享存储器,该共享存储器与唯一计算节点(unique computationalnode)不相关。介质可以是共享存储器,可以是共享随机存取存储器,也可以是例如倍速资料传输记忆体(DDR DRAM)。共享存储器可以通过多个通道访问。非暂时性计算机可读介质可以存储执行本文公开的任何方法所需的数据、本文公开的指令数据和/或本文公开的操作数数据。计算机可读介质还可以存储指令,在系统执行该指令时,该指令使系统执行本文公开的方法。在此使用执行指令的概念来描述执行任何逻辑或数据移动操作的设备的操作,即使“指令”完全在硬件中指定(例如,与门执行“逻辑与”指令)。该术语并不意味着赋予设备可编程的能力。
根据本公开的处理器可以包括至少一个如上所述的逻辑电路。逻辑电路可以包括有源和无源器件,并以一个或多个逻辑电平进行操作。逻辑电路可以使用布尔逻辑操作,并且可以是同步时钟电路或异步电路。逻辑电路可以包括逻辑门、触发器、锁存器、寄存器和其他基本电路元件,这些元件需要对数字化逻辑输入产生数字化逻辑输出。逻辑电路可以直接在硬件中实现,从而通过实现或门的晶体管的物理集合进行逻辑或操作,而数据元素的存储涉及至少一个触发器、延迟线或其他物理存储元素的物理状态。
尽管本说明书已经针对本发明的具体实施例进行了详细描述,但是应当理解,本领域技术人员在获得对前述内容的理解后,可以容易地设想出对这些实施例的改变、变化和等同物。本文公开的任何方法都可以由处理器结合计算机可读介质执行,该计算机可读介质存储了用于与上述其他硬件元件结合的方法的指令。本发明的这些和其他修改和变化可由本领域技术人员实施,而不偏离本发明的范围,本发明的范围在所附权利要求中得到更具体的阐述。
Claims (21)
1.一种处理器,包括:
指令存储器;
至少一个功能处理单元;
总线;
一组指令寄存器,配置为使用所述总线加载来自所述指令存储器的一组预先暂存指令;和
逻辑电路,配置为响应于从所述指令存储器接收指令,将所述一组预先暂存指令从所述一组指令寄存器提供到所述至少一个功能处理单元。
2.根据权利要求1所述的处理器,还包括:
核心控制器;
其中,所述处理器为处理核心;并且
其中,所述核心控制器配置为使用所述总线,将所述一组预先暂存指令从所述指令存储器加载到所述一组指令寄存器。
3.根据权利要求1所述的处理器,其中:
所述处理器具有指令集;
所述总线的宽度至少与所述指令集的指令大小相同;
所述一组预先暂存指令中的每个所述预先暂存指令具有的大小与所述指令大小相等;并且
所述指令具有等于所述指令大小的大小。
4.根据权利要求1所述的处理器,其中:
所述逻辑电路包括指令解码逻辑电路;并且
所述至少一个功能处理单元和所述指令解码逻辑电路执行来自所述指令存储器的指令。
5.根据权利要求1所述的处理器,其中,所述逻辑电路包括:
移位寄存器;和
多路复用器,所述多路复用器与所述移位寄存器控制耦合;
其中,所述逻辑电路配置为将来自所述指令的序列信息加载到所述移位寄存器;并且
其中,所述逻辑电路配置为,使用所述序列信息和所述移位寄存器,通过所述多路复用器将所述一组预先暂存指令从所述一组指令寄存器提供到所述至少一个功能处理单元。
6.根据权利要求5所述的处理器,其中:
所述移位寄存器配置为在一组指定的依赖关系得到满足时进行移位。
7.根据权利要求1所述的处理器,其中:
所述指令包括选择信息和序列信息;
所述逻辑电路配置为使用所述选择信息来选择所述一组预先暂存指令的子集;并且
所述逻辑电路配置为根据所述序列信息,将所述一组预先暂存指令的所述子集提供到所述至少一个功能处理单元。
8.根据权利要求1所述的处理器,其中:
所述指令包括序列信息;并且
所述逻辑电路配置为使用来自所述指令的所述序列信息,将所述一组预先暂存指令从所述一组指令寄存器提供到所述至少一个功能处理单元。
9.根据权利要求1所述的处理器,还包括:
一组暂存,所述至少一个功能处理单元可访问所述一组暂存;
其中,所述指令包括配置信息;
其中,所述逻辑电路配置为将所述一组预先暂存指令连同所述配置信息一起,从所述一组指令寄存器提供到所述至少一个功能处理单元;并且
其中,所述配置信息在所述一组寄存器中设置地址,以供所述一组预先暂存指令使用。
10.根据权利要求1所述的处理器,其中:
所述至少一个功能处理单元包括至少两个功能处理单元;并且
所述逻辑电路将至少两个预先暂存指令从所述一组预先暂存指令并行提供到所述至少两个功能处理单元。
11.根据权利要求1所述的处理器,其中,所述逻辑电路包括:
至少两个多路复用器,所述至少两个多路复用器由至少两个移位寄存器一一对应控制;
其中,所述逻辑电路配置为将来自所述指令的序列信息加载到所述至少两个移位寄存器;
其中,所述至少一个功能处理单元包括至少两个功能处理单元;并且
其中,所述逻辑电路配置为,使用所述序列信息和所述至少两个移位寄存器,将所述一组预先暂存指令并行提供到所述至少两个功能处理单元。
12.根据权利要求1所述的处理器,其中:
所述逻辑电路包括至少两个多路复用器,所述至少两个多路复用器由至少两个移位寄存器一一对应控制;
所述至少一个功能处理单元包括至少两个不同的功能块,所述至少两个不同的功能块选自:加载块、数据类型转换块、算术逻辑单元块、浮点数学块、舍入块和存储块;
所述逻辑电路配置为将来自所述指令的序列信息加载到所述至少两个移位寄存器;并且
所述逻辑电路配置为,使用所述至少两个移位寄存器中的所述序列信息,通过所述至少两个多路复用器将所述一组预先暂存指令从所述一组指令寄存器提供到所述至少一个功能处理单元。
13.根据权利要求12所述的处理器,其中:
所述至少两个移位寄存器配置为在接收处理器指令获取命令时移位;并且
所述逻辑电路配置为使用所述至少两个多路复用器和所述序列信息,将所述一组预先暂存指令并行提供到所述至少两个不同的功能块。
14.根据权利要求1所述的处理器,其中:
所述至少一个功能处理单元包括加载块和至少一个不同的功能块;并且
所述指令是加载指令,所述加载指令具有用于附加序列信息的专用空间,以定义如何执行所述一组预先暂存指令中的所述预先暂存指令。
15.根据权利要求1所述的处理器,其中:
所述处理器具有单指令多数据架构;
所述至少一个功能处理单元包括至少两个功能处理单元;并且
所述逻辑电路配置为将预先暂存指令从所述一组预先暂存指令同步地提供到所述至少两个功能处理单元。
16.一种方法,其中每个步骤都由处理器执行,包括:
将指令存储在指令存储器中;
使用总线将一组预先暂存指令从所述指令存储器加载到一组指令寄存器;
在逻辑电路处接收指令;以及
响应于接收所述指令并使用所述逻辑电路,将所述预先暂存指令从所述一组指令寄存器提供到至少一个功能处理单元。
17.根据权利要求16所述的方法,还包括:
使用所述逻辑电路,将来自所述指令的序列信息加载到所述逻辑电路的移位寄存器;
用来自所述移位寄存器的所述序列信息控制多路复用器;并且
通过所述多路复用器,将所述一组预先暂存指令从所述一组指令寄存器提供到所述至少一个功能处理单元。
18.根据权利要求17所述的方法,还包括:
接收处理器指令获取命令;并且
使所述移位寄存器在接收所述处理器指令获取命令时移位。
19.根据权利要求16所述的方法,其中:
所述至少一个功能处理单元包括至少两个功能处理单元;并且
提供来自所述一组指令寄存器的所述预先暂存指令,包括将指令并行地提供到所述至少两个功能处理单元。
20.根据权利要求16所述的方法,其中:
所述至少一个功能处理单元包括加载块和至少一个不同的功能块;并且
所述指令是加载指令,所述加载指令具有用于附加序列信息的专用空间,以定义如何执行所述预先暂存指令。
21.一种处理器,包括:
指令存储器;
至少一个功能处理单元;
总线;
一组指令寄存器;
用于使用总线将一组预先暂存指令加载到所述一组指令寄存器的装置;以及
用于响应从所述指令存储器接收指令将所述一组预先暂存指令从所述一组指令寄存器提供到所述至少一个功能处理单元的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/401,005 US11599358B1 (en) | 2021-08-12 | 2021-08-12 | Pre-staged instruction registers for variable length instruction set machine |
US17/401,005 | 2021-08-12 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115904493A true CN115904493A (zh) | 2023-04-04 |
Family
ID=82898756
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210933446.4A Pending CN115904493A (zh) | 2021-08-12 | 2022-08-04 | 用于可变长度指令集机器的预先暂存指令寄存器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11599358B1 (zh) |
EP (1) | EP4137939A1 (zh) |
CN (1) | CN115904493A (zh) |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2810068B2 (ja) | 1988-11-11 | 1998-10-15 | 株式会社日立製作所 | プロセッサシステム、コンピュータシステム及び命令処理方法 |
ATE200357T1 (de) | 1991-07-08 | 2001-04-15 | Seiko Epson Corp | Risc-prozessor mit dehnbarer architektur |
US6260134B1 (en) | 1998-11-02 | 2001-07-10 | Advanced Micro Devices, Inc. | Fixed shift amount variable length instruction stream pre-decoding for start byte determination based on prefix indicating length vector presuming potential start byte |
AU5805300A (en) * | 1999-06-10 | 2001-01-02 | Pact Informationstechnologie Gmbh | Sequence partitioning in cell structures |
US6766441B2 (en) | 2001-01-19 | 2004-07-20 | International Business Machines Corporation | Prefetching instructions in mis-predicted path for low confidence branches |
JP2002333978A (ja) | 2001-05-08 | 2002-11-22 | Nec Corp | Vliw型プロセッサ |
US7657882B2 (en) * | 2004-01-22 | 2010-02-02 | University Of Washington | Wavescalar architecture having a wave order memory |
US20050278505A1 (en) | 2004-05-19 | 2005-12-15 | Lim Seow C | Microprocessor architecture including zero impact predictive data pre-fetch mechanism for pipeline data memory |
US7707390B2 (en) | 2007-04-25 | 2010-04-27 | Arm Limited | Instruction issue control within a multi-threaded in-order superscalar processor |
US20090024839A1 (en) | 2007-07-21 | 2009-01-22 | Arssov Paul Plamen | Variable instruction set microprocessor |
US20090198876A1 (en) * | 2008-01-31 | 2009-08-06 | Jimmy Kwok Lap Lai | Programmable Command Sequencer |
US20140215185A1 (en) * | 2013-01-29 | 2014-07-31 | Atmel Norway | Fetching instructions of a loop routine |
US9766895B2 (en) * | 2014-02-06 | 2017-09-19 | Optimum Semiconductor Technologies, Inc. | Opportunity multithreading in a multithreaded processor with instruction chaining capability |
US20170046159A1 (en) | 2015-08-14 | 2017-02-16 | Qualcomm Incorporated | Power efficient fetch adaptation |
KR20180031266A (ko) | 2016-09-19 | 2018-03-28 | 삼성전자주식회사 | 전자 장치, vliw 프로세서 및 그 제어 방법들 |
US10719325B2 (en) | 2017-11-07 | 2020-07-21 | Qualcomm Incorporated | System and method of VLIW instruction processing using reduced-width VLIW processor |
JP7131313B2 (ja) * | 2018-11-09 | 2022-09-06 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
-
2021
- 2021-08-12 US US17/401,005 patent/US11599358B1/en active Active
-
2022
- 2022-08-04 CN CN202210933446.4A patent/CN115904493A/zh active Pending
- 2022-08-11 EP EP22189917.2A patent/EP4137939A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US11599358B1 (en) | 2023-03-07 |
US20230051122A1 (en) | 2023-02-16 |
EP4137939A1 (en) | 2023-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109697186B (zh) | 时间确定性编译器 | |
CN109697185B (zh) | 多瓦片处理阵列中的同步 | |
US6112299A (en) | Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching | |
US9158575B2 (en) | Multithreaded processor array with heterogeneous function blocks communicating tokens via self-routing switch fabrics | |
KR100464406B1 (ko) | 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법 | |
CN109697082B (zh) | 指令组 | |
US11416440B2 (en) | Controlling timing in computer processing | |
US20230153110A1 (en) | Pre-staged instruction registers for variable length instruction set machine | |
JP2009539186A (ja) | ハードウエアエミュレーションシステムのプロセッサを同期化する方法及び装置 | |
US8171259B2 (en) | Multi-cluster dynamic reconfigurable circuit for context valid processing of data by clearing received data with added context change indicative signal | |
KR100431975B1 (ko) | 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템 | |
US10817459B2 (en) | Direction indicator | |
US20230195526A1 (en) | Graph computing apparatus, processing method, and related device | |
US20230093393A1 (en) | Processor, processing method, and related device | |
US11561926B2 (en) | Data exchange pathways between pairs of processing units in columns in a computer | |
CN115904493A (zh) | 用于可变长度指令集机器的预先暂存指令寄存器 | |
KR20010007093A (ko) | 마이크로 명령을 기초로 프로그램 가능한 명령을 실행하는하드웨어 장치 | |
US8631173B2 (en) | Semiconductor device | |
JP2004503872A (ja) | 共同利用コンピュータシステム | |
US20240086201A1 (en) | Input channel processing for triggered-instruction processing element | |
US20230195478A1 (en) | Access To Intermediate Values In A Dataflow Computation | |
CN116802605A (zh) | 用于根据触发条件执行指令的电路和方法 | |
Jung et al. | Optimal processor interface for CGRA-based accelerators implemented on FPGAs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |