CN114924796A - 再生逻辑块以实现提高的吞吐量 - Google Patents

再生逻辑块以实现提高的吞吐量 Download PDF

Info

Publication number
CN114924796A
CN114924796A CN202210557637.5A CN202210557637A CN114924796A CN 114924796 A CN114924796 A CN 114924796A CN 202210557637 A CN202210557637 A CN 202210557637A CN 114924796 A CN114924796 A CN 114924796A
Authority
CN
China
Prior art keywords
logic
block
pipeline
blocks
multiplexer
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
Application number
CN202210557637.5A
Other languages
English (en)
Inventor
休·杰克逊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Publication of CN114924796A publication Critical patent/CN114924796A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3875Pipelining a single stage, e.g. superpipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)
  • Logic Circuits (AREA)
  • Complex Calculations (AREA)

Abstract

本发明涉及再生逻辑块以实现提高的吞吐量。描述了使用再生的逻辑块来提高流水线的吞吐量的一种数据通路流水线。在实施例中,流水线或其部分包括若干并行的逻辑通路,每个逻辑通路包括相同的逻辑。在连续的时钟周期上轮流启用每个逻辑通路起始端的输入寄存器级,从而轮流将数据读入每个逻辑通路,且不同通路上的逻辑异相地运行。将逻辑通路的输出读入一个或多个输出寄存器级,且使用多工器将逻辑通路合并,该多工器在任何时钟周期上从逻辑通路中的一个选择输出。描述了各种优化技术,并在各种示例中可还使用寄存器重定时。在各种示例中,数据通路流水线在处理器内。

Description

再生逻辑块以实现提高的吞吐量
本申请是申请日为2015年6月19日,申请号为201510345907.6,发明名称为“再生逻辑块以实现提高的吞吐量”的申请的分案申请。
技术领域
本发明涉及再生逻辑块以实现提高的吞吐量。
背景技术
通常期望增大通过处理器内的流水线(例如,算术逻辑单元)的数据吞吐量,且这通常是通过加快处理器的时钟速度来实现的。然而,时钟速度受限于在流水线内寄存器组之间的逻辑的数量,因为该逻辑必须在一个时钟周期内全部被执行。对此的已知解决方案是将组合逻辑分为多个周期,并将寄存器组插入每个逻辑块之间。由于每个寄存器级之间有更少的逻辑,因此可以提高时钟速度,且现在时钟速度受限于执行产生的逻辑块中最慢的逻辑块所用的时间。用这种方式分开组合逻辑使时钟速率能够加快,时钟速率加快增大了吞吐量,但也增大了延迟(因为数据需要额外的周期以通过所有逻辑)。除了人工设计之外,可使用被称为“寄存器重定时”的技术来确定如何划分逻辑以及应将寄存器放置在哪儿。
如下所述的实施例不限于解决在处理器内设计流水线的已知方法的任何或全部缺点的实现方式。
发明内容
本发明内容被提供从而以简化方式介绍以下具体实施方式中会进一步描述的一组概念。该发明内容不旨在确定所要求保护的主题的关键特性或基本特性,也不旨在用于帮助确定所要求保护的主题的范围。
描述了使用再生逻辑块来提高流水线的吞吐量的数据通路流水线。在实施例中,流水线或其部分包括若干并行的逻辑通路,每个逻辑通路包括相同的逻辑。在连续的时钟周期上轮流启用在每个逻辑通路起始端的输入寄存器级,使得轮流将数据读入每个逻辑通路,且不同通路上的逻辑异相地运行。将逻辑通路的输出读入一个或多个输出寄存器级,且使用多工器合并逻辑通路,该多工器在任何时钟周期上从逻辑通路中的一个选择输出。描述了各种优化技术,并在各种示例中还可使用寄存器重定时。在各种示例中,数据通路流水线在处理器内。
第一方面提供数据通路流水线,其包括:在流水线内形成并行逻辑通路的一个或多个再生逻辑块;在每个逻辑通路的起始端的输入寄存器块,其中在任何时钟周期中只启用输入寄存器级的一个子集;一个或多个输出寄存器块,其被布置成从一个或多个逻辑通路接收数据;以及多工器,其被布置成将并行逻辑通路合并为单个输出。
第二方面提供操作数据通路流水线的方法,该方法包括:在连续的时钟周期上轮流启用一组输入寄存器块中的每一个,以将数据传递到多个并行逻辑通路中;在多个时钟周期上处理每个逻辑通路中的数据;以及在连续的时钟周期上轮流从每个逻辑通路选择一个输出。
第三方面提供设计数据通路流水线的方法,该流水线包括逻辑且该方法包括:再生逻辑的至少一部分以形成多个逻辑通路;将输入寄存器块添加到每个逻辑通路的起始端;将输出寄存器块添加到每个逻辑通路的末端;配置流水线以在连续的时钟周期上依次启用输入寄存器块;配置流水线以在连续的时钟周期上轮流启用输出寄存器块;以及增加多工器以合并来自逻辑通路的输出。
本发明的实施例还涉及以下方面:
1)一种数据通路流水线,其包括:一个或多个再生逻辑块,其在所述流水线中形成并行逻辑通路;输入寄存器块,其位于每个逻辑通路的起始端,其中在连续时钟周期中依次启用所述输入寄存器块;多工器,其被布置成将所述并行逻辑通路重新合并为单个输出;以及单个输出寄存器块,其被连接至所述多工器的输出端。
2)根据1)所述的流水线,其中,再生逻辑块包括花费多于一个时钟周期来完成的硬件逻辑。
3)根据1)所述的流水线,还包括:在所述多工器和输出寄存器块之间的逻辑块。
4)根据1)所述的流水线,还包括:中间多工器,其被连接至所述逻辑通路的子集,并被布置成将所述逻辑通路的所述子集合并为单个输出。
5)根据4)所述的流水线,还包括:在所述中间多工器和所述多工器之间的逻辑块。
6)根据前述中任一项所述的流水线,其中,每个逻辑通路包括第一逻辑块和第二逻辑块以及在所述第一逻辑块和所述第二逻辑块之间的中间寄存器级。
7)根据1)-5)中任一项所述的流水线,其包括只在所述流水线的输入端和输出端的寄存器级。
8)根据1)所述的流水线,其中,所述流水线在处理器的功能单元中。
9)一种操作数据通路流水线的方法,所述方法包括:在连续的时钟周期上轮流启用一组输入寄存器块中的每一个输入寄存器块,以将数据传递到多个并行逻辑通路中;在多个时钟周期上处理每个逻辑通路中的所述数据;以及使用多工器以在连续的时钟周期上轮流从每个逻辑通路中选择输出;在所有时钟周期上启用被连接至所述多工器的输出端的单个输出寄存器块。
10)根据9)所述的方法,其中,所述数据通路流水线在处理器的功能单元中。
11)一种设计数据通路流水线的方法,所述流水线包括逻辑且所述方法包括:再生所述逻辑的至少一部分,以形成多个逻辑通路;将输入寄存器块添加至每个逻辑通路的起始端;将输出寄存器块添加至每个逻辑通路的末端;将所述流水线配置成在连续的时钟周期上依次启用所述输入寄存器块;将所述流水线配置成在连续的时钟周期上依次启用所述输出寄存器块;添加多工器,以合并来自逻辑通路的输出;以及将在两个或多于两个逻辑通路的末端处的所述输出寄存器块替换为放置于多工器后的单个输出寄存器块,所述多工器合并来自所述两个或多于两个逻辑通路的输出。
12)根据11)所述的方法,还包括:使用流水线来优化每个逻辑通路。
13)根据11)所述的方法,还包括:将在两个或多于两个逻辑通路的末端处的所再生的逻辑的一部分替换为放置于多工器后的所再生的逻辑的所述一部分的单个实例,所述多工器合并来自所述两个或多于两个逻辑通路的输出。
14)根据11)所述的方法,还包括:将在两个或多于两个逻辑通路中的所再生的逻辑的一部分替换为放置于多工器后的所再生的逻辑的所述一部分的单个实例,所述多工器合并来自所述两个或多于两个逻辑通路的输出。
15)根据11)所述的方法,还包括:使用寄存器重定时算法来优化在所述流水线中的所述一个或多个多工器的位置。
16)根据15)所述的方法,其中,所述寄存器重定时算法是网络流量算法以及混合整数线性程序算法中的一个。
17)根据11)-16)中任一项所述的方法,其中,所述数据通路流水线在处理器的功能单元内。
另一方面提供一种计算机可读存储介质,在其上编码用于生成处理器的计算机可读程序代码,该处理器包括如上所述的流水线,并提供了一种计算机可读存储介质,在其上编码用于生成处理器的计算机可读程序代码,该处理器被配置成实施如上所述的方法。
本文所述的方法可通过配置有软件的计算机来实施,该软件为机器可读形式,并被存储在有形的存储介质上,例如,当程序在计算机上运行时且计算机程序可在计算机可读存储介质上实现的情况下,以包括用于配置计算机以实施所述的方法的组成部分的计算机可读程序代码的计算机程序的形式,或者以包括适用于实施本文所述的任何方法的所有步骤的计算机程序代码方法的计算机程序的形式。有形的(或非暂时性的)存储介质的示例包含磁盘、拇指驱动器、记忆卡等,且不包含传播的信号。软件可适合于在平行处理器或串行处理器上被执行,从而使能够以任何合适的次序或同时实施方法步骤。
本文所述的硬件组件可由在其上编码计算机可读程序代码的非暂时性计算机可读存储介质而产生。
这确认了固件和软件可被单独地使用且有价值。其旨在包含运行在“基本的(dumb)”或标准的硬件上或控制“基本的”或标准的硬件的软件,以实现期望的功能。其还旨在包含“描述”或定义硬件配置的软件,例如HDL(硬件描述语音)软件,如被用于设计硅芯片或用于配置通用可编程芯片,以实现期望的功能。
如对于技术人员很明显的,优选的特性可被适当地结合,且可与本发明的任何方面相结合。
附图说明
参考以下附图,以示例的方式描述本发明的实施例,其中:
图1示出示例处理器的示意图,其中可实施本文所述的方法;
图2示出两个执行流水线的示意图;
图3示出图2所示的改进的执行流水线的波形;
图4示出可对图2所示的改进的流水线做出的进一步的优化;
图5示出可对流水线做出的进一步的优化;
图6示出全流水线式功能单元和使用流水线操作(pipelining)和侧流线(sidelining)组合的功能单元的比较;
图7示出两个进一步改进的流水线;
图8为示出流水线操作的示例方法的流程图,其中流水线使用了侧流线;以及
图9为设计改进的流水线的示例方法的流程图。
整个附图中共同的参考标记用来指示相似的特征。
具体实施方式
下文中只以示例的方式描述了本发明的实施例。这些示例代表目前申请人所知道的实施本发明的最佳方式,然而它们不是实施本发明的唯一的方式。本说明书阐述了示例的功能以及用于构造和操作示例的步骤的顺序。然而,可由不同的示例来实现相同或等同的功能和顺序。
如上所述,通过在流水线内增加额外的寄存器级,在每个寄存器级之间的逻辑更少,并且可提高时钟速度。然而,随着级间的逻辑减少,寄存器的设置和保持时间变为对寄存器级间的延迟的更重要的贡献,且这是限制进一步提高时钟速度的能力的其中一个因素(因为延迟对应于最小可能的时钟周期)。而且,增加额外的寄存器级可对设计尺寸(其中寄存器被放置于逻辑的中间,相较于在逻辑的输入端或输出端中的任一个处,其通常需要存储更多位)以及还有可对该设计的有效功率(由于定时硬件在使用中的以往周期的大量的寄存器时钟)产生不利影响。
本文描述了数据通路流水线以及设计和操作数据通路流水线的方法,该方法使时钟速度能够加快,并因此可增加流水线的吞吐量。如下所述,在一些示例中,这些方法可结合寄存器重定时(或其他常规的流水线操作技术)来使用,或者这些方法可独立于寄存器重定时来使用。在本文所述的方法中,组合逻辑被再生,且再生版本并行且异相地运行。这降低了再生块中的每一个再生块内的有效时钟速度(或有效时钟速率)(例如,数据可只在交替的时钟周期上被定时进入再生块中,从而块可具有用以完成的两个时钟周期)。通过减少寄存器级的数量,与标准解决方案相比,减少了总的设置和保持时间,这使实际的时钟速度能够被加快。如下面更详细地描述,可通过优化逻辑的哪个部分被再生以及输出多工器(其将来自再生块的结果合并回到单一通路)和输出寄存器的位置来实现时钟速度和/或设备区的进一步的改进。在很多示例中,本文所述的方法被实现用于不包含任何组合反馈(即,逻辑块不向其本身反馈)的组合逻辑。然而,在其他示例中,可包含反馈。
术语“数据通路流水线”(也可将其称为“执行流水线”或“流水线”)指的是逻辑块,该逻辑块花费多个时钟周期以用于待处理信息,且因此通常包括多个寄存器级,在寄存器级之间具有逻辑。在各个示例中,流水线可能是处理器的一部分(如下面描述的实例中),即,CPU、GPU或DSP的一部分;然而还可在其它情况下实现本文所述的方法。
术语“组合逻辑(combinational logic)”指的是逻辑,其中输出只是当前输入的纯函数且输出不依赖于输入的历史(不同于时序逻辑)。流水线可包括组合逻辑和时序逻辑,且进行数学计算的算术逻辑单元(ALU)的部分可以只包括组合逻辑。组合逻辑也可被称为时间无关逻辑或组合的逻辑(combinatorial logic)。
图1示出其中可实施本文所述方法的两个示例处理器100、101的示意图。第一示例处理器100为乱序处理器,且第二示例处理器为有序处理器。在此示例中,处理器100、101是单线程处理器,然而该方法也可被应用于多线程处理器。而且,如上所述,尽管将流水线112示为示例处理器100、101的一部分,本文所述的方法和流水线不限于处理器内的流水线(例如,CPU内)。
乱序处理器100包括提取级102、解码和重命名级104、重新排序缓冲器106、提交级108和一个或多个功能单元110,每个功能单元110包括一个或多个执行流水线112。
提取级102被配置成从如通过程序计数器(PC)指示的程序中提取指令(以程序顺序)。一旦指令被提取,将其提供给解码和重命名级104,解码和重命名级104被布置为解译指令并执行寄存器重命名。
指令通过解码和重命名级104之后,其被嵌入重新排序缓冲器106(ROB)并发送给功能单元110以用于执行。向其发送指令的功能单元110可基于指令的类型。重新排序缓冲器106是能够将指令乱序地执行、但有序地提交的缓冲器。重新排序缓冲器106以程序顺序保存被嵌入其中的指令,但ROB 106内的指令可被功能单元110不按顺序地执行。
每个功能单元110负责执行指令并可被配置成执行特定类型的指令。因为功能单元110可包括加载-存储单元、整数单元、浮点单元(FPU)、数字信号处理(DSP)/单指令多数据(SIMD)单元或乘法累加(MAC)单元中的一个或多个。功能单元内的流水线可具有不同的长度和/或复杂度。例如,FPU流水线通常比整数执行流水线长,因为FPU流水线通常执行更复杂的操作。
有序处理器101包括提取级102、解码级105、一个或多个功能单元110(其每个包括一个或多个执行流水线112)以及寄存器文件114。如同乱序处理器100中的解码和重命名级104,有序处理器中的解码级105被布置成解译在提取级102中提取的指令;然而在有序处理器中,解码级105不执行寄存器重命名。
应理解,其他处理器可能不包括图1中所示的所有功能元件(即,图1中所示的功能元件中的一个或多个可被省略),并且在一些示例中,可包括图1中未示出的额外的功能元件。
图2示出执行流水线21、22的两个示意图。每个21、22包括由圆化端部的形状表示的组合逻辑(在以下描述中将其称之为“逻辑”)块202和由方形表示的寄存器块204。第一张图示出包括三个寄存器级(每个包括一个寄存器块204)的标准流水线21,在寄存器级之间具有逻辑块202。流水线21的输入端处具有寄存器级,且该寄存器级可被称为输入寄存器级;在流水线21的输出端处具有寄存器级,且该寄存器级可被称为输出寄存器级。
图2中的第二张图示出改进的流水线22的第一个示例(其中,如上所述,术语“流水线”指的是花费多个周期以用于待处理信息的任意逻辑块)。如可从图看出的,已形成了逻辑块,其对应于如图2中第一张图所示的两个逻辑块202,然后该逻辑块(其花费两个周期来完成)已被再生,产生两个相同的逻辑块206、208和两个逻辑通路:通路1 210和通路2 212。每个通路210、212包括输入寄存器级(寄存器块214、216)和输出寄存器级(寄存器块218和220),且两个通路210、212通过在输出寄存器级218、220之后使用多工器222被合并。
可参考图3所示的图解来描述流水线22的操作。输入寄存器块214、216中的每一个在交替的时钟周期(如通过波形303和305所示)上被启用(即,被时钟控制),使得它们在交替的时钟周期上接收新数据并然后将该数据保存两个时钟周期(如通过波形304和306所示,其具有在波形302中所示的共享的输入数据)。例如,第一输入寄存器块214在时钟边沿0上存储输入数据1(见波形304)。在时钟边沿1上,第二输入寄存器块216存储输入数据2(见波形306)且第一输入寄存器块仍然保存输入数据1(见波形304)。在时钟边沿2上,第一输入寄存器块214存储输入数据3(见波形304),而第二输入寄存器块仍然保存输入数据2(如参见波形306)。在时钟边沿3上,第二输入寄存器块216存储输入数据4(见波形306),且第一输入寄存器块仍然保存输入数据3(如参见波形304),以此类推。输入寄存器块214从而在时钟周期0和1上保存输入数据1(如波形304中所示),输入寄存器块216在时钟周期1和2上保存输入数据2(如波形306中所示),等等。这在图2中通过使能(EN)逻辑表示,其中对于第一输入寄存器块214,EN:(T/N)+0,并且对于第二输入寄存器块216,EN:(T/N)+N-1,其中T是当前周期计数(即,时间),且N为流水线中的级数(在所示示例中N=2)。
用于输入(和输出)寄存器块的时钟可以是与主时钟(即,用于流水线的标准时钟)分离的;然而,在很多示例中可使用同一个时钟(如在图3中由波形301表示的)来为所有的寄存器级定时,其中时钟穿过时钟门控单元,从而寄存器不是在主时钟的每个周期上都被启用(如通过波形303和305所示)。
因此,再生逻辑块206、208具有两个时钟周期用于完成,在这个时间段中输入数据(在输入寄存器级中)被保存(如波形304和306中所示)。返回参考前面示例,第一再生逻辑块206在时钟边沿0和2之间的时钟周期中处理输入数据1,第二再生逻辑块208在时钟边沿1和3之间的时钟周期中处理输入数据2,第一再生逻辑块206在时钟边沿2和4之间的时钟周期中处理输入数据3,等等。从而,每个通路210、212的“有效时钟速率”可被视为实际时钟速率(即,流水线21的时钟速率)的一半。
以与输入寄存器块214、216相似的方式,输出寄存器块218、220中的每个在交替的时钟周期(如通过波形303、305所示)上被启用,使得它们在交替的时钟周期上接收新数据。在时钟边沿2上,第一输出寄存器块218接收处理数据1(其在两个先前的时钟周期中发生)的第一再生逻辑块206的结果。然后该数据在寄存器块218的输出端上被保存两个时钟周期(如波形307中所示)。在时钟边沿3上,第二输出寄存器块220接收处理数据2(其在两个先前的时钟周期上发生)的第二再生逻辑块208的结果,然后该数据在寄存器块220的输出端上被保存两个时钟周期(如波形308中所示),等等。
输出多工器222在相邻时钟周期上选择交替的输入,其中该输出多工器222将流水线22内的两个独立的逻辑通路210、220的输出合并。图2示出选择逻辑(SEL:T%N,其中符号“%”表示“模运算”),且这在附图3的波形309中被示出,其中“0”表示选择通路1 210,“1”表示选择通路2 212。可从图3中看出,多工器222选择刚被更新的寄存器组(或输出寄存器块218、220),例如,多工器222在时钟边沿2上选择第一通路210、在时钟边沿3上选择第二通路212、在时钟边沿4上选择第一通路210等等。从图3中还可看出,寄存器块218、220只需要在第一循环上保存数据,且同样地没有为其定时的新数据,因此为每个周期定时将会浪费功率。
尽管图2中的第二张图只示出形成两个逻辑通路210、212的两个再生块206、208,但是方法可被延伸至形成N个逻辑通路的N个再生块。在这种示例中,每个输入和每个输出寄存器级在每第N个时钟周期被启用,其中在每个时钟周期中启用一个输入级和一个输出级。这表示N个再生块中的每一个再生块具有用以处理输入数据的N个时钟周期,且多工器在每个时钟周期中选择N个通路中的一个并轮流循环对N个通路中每一个的选择。
图2中所示的改进的流水线22的第一个示例包括更多数量的逻辑,这导致与第一流水线21相比的逻辑尺寸(例如,区域)的增加;然而,通过减少任何通路中的寄存器级的数量(并因此消除相关的设置和保持时间),其使时钟速度能够提高,时钟速度的提高增加了流水线的吞吐量。虽然现在具有更多的寄存器块(4个而不是3个),但是与21中的寄存器块相比,流水线22中的每个寄存器块将具有相同或更小的宽度,因为寄存器只位于输入端和输出端处,而不在通路的中间,其中数据宽度在路径的中间很可能比输入端处更大。此外,由于寄存器被更少定时(例如,对于输入寄存器,每第N个周期),因此降低了寄存器块的有效(或动态)功率消耗,并且逻辑的有效功率消耗基本保持不变(因为新的数据每N个周期才被定时进入逻辑)。虽然存在对整体漏泄功率的影响,但是由额外的逻辑引起的增加通过由减少的寄存器数量引起的下降来抵消。基于特定的设计,泄漏功率可能在图2所示的两个流水线之间变化。
如在图2中改进的流水线22的第一个示例所示,再生逻辑以产生多个独立的逻辑通路的技术可被称为“侧流线”。该技术的进一步优化在下面进行描述,且如上所述,还可将该技术与寄存器重定时或其他形式的流水线操作结合。
图4示出可对图2所示并如上所述的改进的流水线22做出的进一步的优化。所示改进与多工器和输出寄存器级的定位有关。
图4示出来自图2的改进的流水线22的第一个示例,以及具有减少数量的寄存器块的第二个示例性改进的流水线42,但是该改进的流水线42的寄存器级的数量保持不变(例如,流水线22示出在两个寄存器级中的四个寄存器块214、216、218、220,然而流水线42示出在两个寄存器级中的三个寄存器块214、216、420)。如上所述,流水线22中的输出寄存器块218、220在交替的周期上被启用,且在任何时钟周期中只从一对输出寄存器块中的一个读取数据(例如,在时钟周期0、2等上读取输出寄存器块218,并在时钟周期1、3等上读取输出寄存器块220)。因此,可通过将输出寄存器块移动越过多工器222并用单个输出寄存器块420将其替换来优化流水线,其中输出寄存器块420在所有时钟周期上被启用并从两个逻辑通路交替地接收数据,并且来自两个逻辑通路的数据在每个循环上被读取。
应理解,尽管图4只示出两个逻辑通路,但是方法可被延伸至形成N个逻辑通路的N个再生块。在这种示例中,每个输入寄存器级在每第N个时钟周期被启用,其中每个时钟周期中启用一个输入寄存器级。这表示N个再生块中的每一个再生块具有用以处理输入数据的N个时钟周期,且多工器在每个时钟周期中选择N个通路中的一个并轮流循环对N个通路中的每一个的选择。在所有时钟周期上启用流水线42中的单个输出寄存器块420。
与第一个改进的流水线22相比,第二个示例性改进的流水线42减小寄存器所需的区域,并且从而降低静态(或泄漏)功率消耗,同时动态功率消耗基本保持不变。
与传统的流水线式解决方案(例如,如流水线21中所示的)相比,在第二个示例性改进的流水线42中具有相同总数的寄存器块;然而,每个通路包括更少的寄存器级,从而减少总的设置和保持时间。而且,由于寄存器级只位于输入端和输出端处,它们的宽度更窄(即,它们需要存储较少位数),且由于并行的通路,寄存器级被更少定时(流水线21中的寄存器级在每个时钟周期上都进行定时,然而流水线42中的输入寄存器级只在交替的周期上定时)。与流水线21相比,这将降低动态功率消耗。
图5示出可对流水线51(其可对应于图4中所示的改进的流水线42)做出的进一步的优化,其中在每个再生逻辑块的末端(且因此每个逻辑通路的末端)处具有相同的逻辑块502、504,来自其中的数据只需要在交替的时钟周期上稳定一个周期。在各个示例中,用于寄存器重定时的已知算法可被使用以优化其中使用侧流线的多工器的定位。示例算法在由C.E.Leiserson和J.B.Saxe于1991年出版在Algorithmica的“重定时同步电路系统(Retiming Synchronous Circuitry”)中提出。其他示例算法是网络流量算法和混合整数线性程序算法。
返回参考改进的流水线42,再生逻辑块206、208可被分为如图5所示的两个或多于两个较小的逻辑块502-508(如果使用了传统的流水线,情况将是逻辑块之间没有寄存器级)。在流水线51中所示的示例中,每个通路中的较小的逻辑块506、508中的第一个需要稳定2个时钟周期(例如,如果N=2,则块506在周期0→1上保持稳定,块508在周期1→0上保持稳定),然而,每个通路中的较小的逻辑块502、504中的最后一个只需要在交替的时钟周期上稳定一个周期(例如,如果N=2,则块502在周期1上保持稳定,块504在周期0上保持稳定)。
如在改进的流水线52中所示,多工器222前面的两个逻辑块502、504可反而被多工器222后面的单个逻辑块510替代,其中两个逻辑块502、504中的每个只需要在交替的时钟周期上稳定一个周期。这减少了被再生的逻辑的数量,从而减少了制造流水线所需的面积(例如,硅面积),同时仍然使得时钟速度(以及由此吞吐量)能够增加。由于现在多工器222在逻辑链内(即,多工器222在其输入端和输出端均具有逻辑块),而不是在所有逻辑之后,因此这可能增加多工器必须能够适应的数据的宽度;然而,由于实现多工器所需的逻辑相对简单,因此这不会导致所需面积的大幅增加。
输出端处的多工器222不增加很多逻辑级(例如,其可被实现作为单极的与/或),且多工器代表的额外面积由寄存器所占的面积的降低来抵消(作为整体,在寄存器中存储较少的位,因为寄存器仅位于通路的输入端和输出端,而不位于通路的中间,其中在通路中间的数据的宽度可能比在输入端处的大)。
就图2和图4来说,应理解,尽管图5只示出两个逻辑通路,但是方法可被延伸至N个逻辑通路。在这种示例中,其中在每个路径的末端处具有逻辑,其只需要在每第N个时钟周期上稳定,该逻辑可被多工器后的逻辑的单个实例替代。
图6示出(如能够人工产生的或通过使用寄存器重定时技术产生的)全流水线式功能单元61和使用流水线操作和侧流线的组合的功能单元62的比较。为了清楚起见,当描述图6时使用术语“功能单元”来代替流水线,且应理解,所示的功能单元可以是完整的功能单元或其部分。
在全流水线式功能单元61中,逻辑块602是被寄存器级604分开的,逻辑块602中的每一个能够在单个周期中执行。在使用流水线和侧流线的功能单元62中,逻辑中的一些已经被再生(例如,块606和608以及块610和612),以形成两个独立的通路,而其他的逻辑未被再生(例如,块614)。两个流水线61、62之间的虚线箭头示出逻辑块之间的对应关系,且可看出第二流水线62中的再生逻辑块606、608中的一个包括花费两个周期来完成的逻辑。如上所述,数据在交替的时钟周期上被定时进入两个通路中的每一个,使得在任一个路径中的有效时钟速率是实际时钟速率的一半。另外,包含逻辑块610、612和614的结构示出参考图5所描述的优化。
通过如在图6中下面的图中所示的组合流水线操作和侧流线技术,产生的功能单元具有提高的时钟速度(由于侧流线),同时减少总逻辑面积(由于流水线)。
尽管图6中的第二张图只示出被再生以形成两个并行、独立的逻辑通路的两个逻辑块,但是该方法可被延伸至包含更多的再生以形成N个逻辑通路。另外,还如图6中所示,本文所述的方法可被用于只在功能单元的一部分中再生逻辑块。
图7示出另外两个改进的流水线71、72,其中N=4。尽管第二流水线72可被视为第一流水线71的优化,但是每个流水线基于对流水线的特定要求和应用可以为适合的解决方案。具体地,尽管第二流水线72具有较少的逻辑再生,但其具有两个额外的多工器,且这些多工器的尺寸(即,多工器所容纳的位的数目)将取决于由流水线执行的特定计算,且在一些示例中该尺寸可能非常大(例如,如果流水线与32位的数相乘,则可能在逻辑通路中间具有64或128位)。因此,基于特定应用,与流水线72相比,流水线71可占有较多的或较小的面积(例如,在硅芯片上)。
图7中所示的第一流水线71有些类似于图4和图5中所示并如上所述的流水线42和51,除了N=4(对于流水线42和51,N=2)。流水线71包括四个独立的逻辑通路,每个逻辑通路包括输入逻辑块702以及在每个通路中相同的一些逻辑。每个输入寄存器块702每第N个时钟周期被启用,且保存数据N(即,4)个周期。通过输入寄存器块702(以及本文所述的所有改进的流水线中的输入寄存器块)所保存的值不变,除了当输入寄存器级被启用的时候。即使逻辑通路可能花费N个周期来执行,输入寄存器也必须保存该数据N个周期(而不是,例如,读取用于处理的新数据),否则这可能将影响逻辑通路的输出。具有被放置于多工器712后(例如,以与图4中所示的流水线42相似的方式)的单个输出寄存器块714。
尽管每个通路中的逻辑可被表示为一个单个块(如流水线42中的块206、208中),但是在图7中逻辑通路中的逻辑被表示为四个分立的块(未被寄存器级分开),且每个块被标记以辨认数据在哪个周期上需要稳定,其中周期被编号为0到3,然后重复(例如,周期4=周期0,周期5=周期1等)。在每个通路中,第一逻辑块704需要在所有四个周期上稳定,第二逻辑块706需要在每四个周期中稳定三个周期(例如,对于第一通路为周期1-3),第三逻辑块708需要在每四个周期中稳定两个周期(例如,对于第一通路为周期2-3),且第四逻辑块710需要在每四个周期中稳定一个周期(例如,对于第一通路为周期3)。
图7中所示的第二流水线72将上面参考图5所描述的优化应用于第一流水线71。首先考虑流水线71的逻辑通路中的每一个中的第四逻辑块710,可看出当数据需要在通路之间稳定的时候不存在重叠,因此四个逻辑块710可以被多工器712之后单个逻辑块716替代。考虑流水线71的逻辑通路中的每一个中的第三逻辑块708,可看出当数据需要在第一和第三通路之间稳定的时候不存在重叠,相似地,当数据需要在第二和第四通路之间稳定的时候不存在重叠。因此,四个第三逻辑块708可被两个逻辑块718替代,在利用多工器720合并的两个逻辑通路之间共享逻辑块718的每个,多工器720交替地选择两个通路中的一个。应注意,流水线72中的通路被绘制为与流水线71不同的顺序,其中流水线72中的第二逻辑通路对应于流水线71中的第三通路,且流水线72中的第三逻辑通路对应于流水线71中的第二通路,如箭头722所示。
就图2、图4和图5来说,应理解,尽管图7示出四个逻辑通路,但是方法可被延伸至N个逻辑通路。在这种示例中,成对的逻辑通路可以利用多工器被合并到一起并被馈入到N/2个逻辑通路中的一个中,其中N/2个逻辑块的输出端通过另外的多工器合并且馈入到输出寄存器级之前的输出逻辑块中。
应理解,改进的流水线22、42、51、52、62、71、72只提供改进的流水线的一些示例,且已被描述以展示侧流线技术,该技术可被用于提高流水线的时钟速度,并从而提高流水线的吞吐量。如上所述以及图6中所示,侧流线可结合传统的流水线操作来使用,或者侧流线可独立于传统的流水线操作来使用。在各种示例中,确定寄存器级的最佳位置而在寄存器重定时中使用的算法可在侧流线中被使用,以确定多工器的最佳位置。
图8为示出流水线操作的示例方法的流程图,其中流水线使用了侧流线。如图8所示和如上参考示例性改进的流水线所述,在连续的时钟周期上轮流启用一组输入寄存器块(其形成输入寄存器级)中的每一个,以便将数据传递到多个逻辑通路(块802)中,其中每个逻辑通路包括逻辑的相同布置。被传递到每个逻辑通路中的数据然后在两个或多于两个时钟周期上在每个逻辑通路中被处理(块804),然后例如,使用多工器在连续的时钟周期上轮流从多个逻辑通路中的每一个中选择输出(块806)。如上所述,来自被选择(在块806中)的通路的输出可能是来自通路本身内的逻辑的输出或来自输出寄存器级的输出。
图9是设计改进的流水线的示例方法的流程图。如图9所示且如上参考示例性改进的流水线所述,流水线内的逻辑块(其在许多示例中不包括任何组合的反馈)被再生,以形成多个并行的逻辑通路(块902)。输入寄存器块被添加到每个逻辑通路的起始端(块904),并且输出寄存器块被添加到每个逻辑通路的末端(块906),并且流水线被配置使得输入寄存器块被连续启用,其中一个输入寄存器块在任意时钟周期上被启用(块908)。相似地,流水线还被配置使得连续地启用输出寄存器块,其中一个输出寄存器块在任意时钟周期上被启用(块910)。然后添加多工器以合并逻辑通路的输出(块912)。
如上所述,方法可进一步包括一个或多个优化,例如以下中的一个或多个:
·在每个逻辑通路内使用传统的流水线操作/寄存器重定时(块914和如图6所示);
·将多工器前的两个或多于两个输出寄存器块替换为多工器后的一个输出寄存器块(块916和如图4所示);
·将每个逻辑通路末端处的逻辑的一部分替换为在多工器后、输出寄存器级前的逻辑的一部分的单个实例(块918和如图5所示),其中当数据需要在分开的逻辑通路中的逻辑的每一个部分中保持稳定的时候不存在重叠;
·将逻辑通路的(合适的)子集的末端处的逻辑的一部分替换为在新增的多工器后的逻辑的一部分的单个实例,该新增的多工器将逻辑通路的子集的输出合并(块920和如图7所示),其中当数据需要在逻辑通路的子集中的逻辑的一部分中保持稳定的时候不存在重叠;以及
·使用用于寄存器重定时的已知算法在流水线内优化多工器布置(块922)。
如上所述,通过使用本文所述的方法,消除了与流水线中的寄存器级相关的设置和保持时间的子集,并因此可以提高时钟速度,这增加了流水线的吞吐量。而且,如上所述,与常规的解决方案相比,能够降低动态功率消耗。虽然所需的逻辑的面积有所增加,然而这被所需的寄存器面积的降低部分地抵消。通过使用本文所述的各种优化,有可能设计出流水线并且在尺寸的增加与可获得的时钟速度的提高之间进行折衷。
将理解,尽管图2-7在上文中被描述为示出了流水线,但是它们可选择性地示出流水线的一部分,并且本文所述的方法可被应用于整个流水线或其一部分。
在如上所述的示例中,再生逻辑块(例如,图2中的块214和216)被描述为是相同的。然而应理解,可能存在其中在再生逻辑中可能有差异(例如,在奇数周期和偶数周期中具有传递不同类型的操作的流水线中)的示例。
本文使用的术语“处理器”是指具有处理能力从而其能够执行指令的任何设备或其部分。例如,术语“处理器”可包括中央处理单元(CPU)、图形处理单元(GPU或VPU)、物理处理单元(PPU)、数字信号处理器(DSP)、通用处理器(例如,通用GPU)、微处理器、被设计成在CPU外加速任务的任何处理单元等等。本领域的技术人员将意识到,这种处理能力被纳入许多不同设备中,并且因此术语“计算机”包括机顶盒、媒体播放器、数字收音机、PC、服务器、手机、个人数字助理和许多其他设备。
本文所述的方法不限于CPU、乱序处理器或单线程处理器,但可在任何类型的处理器(例如,GPU)中被实现,其中处理器可执行或可不执行乱序指令,且其中处理器可以是单线程的或多线程的。而且,如上所述,可在处理器外使用本文所述的方法。
对“逻辑”的特定引用是指执行一个功能或多个功能的结构。逻辑的示例包括被布置成执行那些功能的电路系统。例如,这种电路系统可包括晶体管和/或制造过程中可用的其他硬件元件。这种晶体管和/或其他元件可用于形成实现和/或包含存储器的电路系统或结构,其中存储器例如寄存器、触发器或锁存器、例如布尔运算的逻辑运算符、例如加法器、乘法器的数学运算符或移位器,并通过示例的方式相互连接。可将这种元件提供作为定制电路或标准元件库、宏指令或在其他抽象层上提供。可将这种元件以特定的布置相互连接。逻辑可包括固定功能的电路系统,并且电路系统可被编程以执行一个功能或多个功能;可从固件或软件更新或控制机制提供这种编程。被识别以执行一个功能的逻辑还可包括实现组合功能或子进程的逻辑。在一个示例中,硬件逻辑具有执行固定功能操作或多个操作、状态机或进程的电路系统。
如将对技术人员明显的是,可在不失去所寻求的效果的情况下延伸或改变本文所给出的任何范围或设备值。
应理解,如上所述的益处和优点可能与一个实施例相关或可能与几个实施例相关。实施例不限于解决任何或全部所陈述的问题的那些实施例或具有任何或全部所陈述的益处和优点的那些实施例。
对术语“一个”的任何引用是指那些项中的一个或多个。术语“包括”在本文中被使用以表示包含方法块或所识别的元件,但是这种块或元件不包括穷举性列表,且装置可包含额外的块或元件,以及方法可包含额外的操作或元件。此外,块、元件和操作本身并不隐含地不公开。
对“子集”的任何引用是指合适的子集,从而子集不包括整个组的一个或多个元件。
本文所述的方法的步骤可用任何合适的顺序来执行或在适当的时候同时执行。图中方框之间的箭头示出方法步骤的一个示例性顺序,但并不旨在排除其他顺序或多个步骤的并行执行。此外,在不脱离在本文所述的主题的精神和范围的情况下,可从任何方法中删除独立的块。在不失去所寻求的效果的情况下,如上所述的任何示例的方面可被与形成其他示例所描述的任何其他示例的方面结合。其中图中的元件被示出为通过箭头连接,应理解,这些箭头只示出元件之间的通信(包含数据和控制消息)的一个示例性流程。元件之间的流向可以在两个方向中任一方向或两个方向上。
应理解,只通过示例性的方式给出优选实施例的以上描述,且本领域技术人员可以进行各种修改。尽管以上已经以某种程度的特殊性或参考一个或多个单独的实施例描述了本发明的各种实施例,但是在不背离本发明精神或范围的前提下,本领域技术人员可以对公开的实施例做出多种改变。

Claims (18)

1.一种数据通路流水线,其包括:
一个或多个再生逻辑块,其在所述数据通路流水线中形成并行的逻辑通路;
一个或多个输入寄存器块,其位于每个逻辑通路的起始端,其中输入寄存器块在连续的时钟周期中被依次启用;并且其中一个再生逻辑块与相应的输入寄存器块成对以形成一对块;
第一多工器,其被布置成将所述并行的逻辑通路重新合并为单个输出;以及
其中来自两个或多于两个的逻辑通路中的最后一对块中的该一对块的至少一个块被连接至所述第一多工器的输出端的第一等效单个块替换以接收从所述第一多工器传输的数据;以及
其中所述第一等效单个块在所有时钟周期上被启用并在所述连续的时钟周期中依次从所述并行的逻辑通路接收从所述第一多工器传输的数据。
2.根据权利要求1所述的数据通路流水线,其中,再生逻辑块包括花费多于一个时钟周期来完成的硬件逻辑。
3.根据权利要求1所述的数据通路流水线,其中,
来自两个或多于两个的逻辑通路中的所述最后一对块中的该一对块的另外的至少一个块被连接在所述第一多工器和所述第一等效单个块之间的第二等效单个块替换。
4.根据权利要求1所述的数据通路流水线,还包括:
中间多工器,其被连接至所述逻辑通路的子集,并被布置成将所述逻辑通路的所述子集合并为单个输出。
5.根据权利要求4所述的数据通路流水线,还包括:
在所述中间多工器和所述第一多工器之间的逻辑块。
6.根据权利要求1所述的数据通路流水线,其中,每个逻辑通路包括第一逻辑块和第二逻辑块以及在所述第一逻辑块和所述第二逻辑块之间的中间寄存器级。
7.根据权利要求1所述的数据通路流水线,其包括只在所述数据通路流水线的输入端和输出端的寄存器级。
8.根据权利要求1所述的数据通路流水线,其中,所述数据通路流水线在处理器的功能单元中。
9.根据权利要求1所述的数据通路流水线,其中,所述第一等效单个块包括单个输出寄存器和单个逻辑块中的一个。
10.一种操作数据通路流水线的方法,所述方法包括:
在连续的时钟周期上轮流启用一组输入寄存器块中的每一个输入寄存器块,以将数据传递到多个并行的逻辑通路中;
在多个时钟周期上处理每个逻辑通路中的所述数据;
使每个输入寄存器块与所述逻辑通路中的逻辑块成对以形成一对或多对块;
使用多工器以在连续的时钟周期上轮流从每个逻辑通路中选择输出;以及
在所有时钟周期上启用来自所述逻辑通路中的最后一对块的该一对块的至少一个块以被第一等效单个块替换并被连接至所述多工器的输出端,以在连续的时钟周期中轮流从所述逻辑通路接收从所述多工器传输的数据。
11.根据权利要求10所述的方法,其中,所述数据通路流水线在处理器的功能单元中。
12.根据权利要求10所述的方法,还包括包含再生逻辑块,所述再生逻辑块具有花费多于一个时钟周期来完成的硬件逻辑。
13.根据权利要求10所述的方法,还包括:
将来自两个或多于两个的逻辑通路中的最后一对块的该一对块的另外的至少一个块替换为连接在所述多工器与所述第一等效单个块之间的第二等效单个块。
14.根据权利要求10所述的方法,还包括:
将所述逻辑通路的子集和连接至所述逻辑通路的所述子集的中间多工器合并为单个输出。
15.根据权利要求14所述的方法,还包括提供在所述中间多工器和所述多工器之间的逻辑块。
16.根据权利要求10所述的方法,其中,每个逻辑通路包括第一逻辑块和第二逻辑块以及在所述第一逻辑块和所述第二逻辑块之间的中间寄存器级。
17.根据权利要求10所述的方法,包括只在所述数据通路流水线的输入端和输出端寄存级。
18.根据权利要求10所述的方法,其中,所述第一等效单个块包括单个输出寄存器和单个逻辑块中的一个。
CN202210557637.5A 2014-06-20 2015-06-19 再生逻辑块以实现提高的吞吐量 Pending CN114924796A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1411052.2A GB2527367B (en) 2014-06-20 2014-06-20 Replicating logic blocks to enable increased throughput
GB1411052.2 2014-06-20
CN201510345907.6A CN105302523A (zh) 2014-06-20 2015-06-19 再生逻辑块以实现提高的吞吐量

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201510345907.6A Division CN105302523A (zh) 2014-06-20 2015-06-19 再生逻辑块以实现提高的吞吐量

Publications (1)

Publication Number Publication Date
CN114924796A true CN114924796A (zh) 2022-08-19

Family

ID=51409921

Family Applications (3)

Application Number Title Priority Date Filing Date
CN202210557637.5A Pending CN114924796A (zh) 2014-06-20 2015-06-19 再生逻辑块以实现提高的吞吐量
CN201510345907.6A Pending CN105302523A (zh) 2014-06-20 2015-06-19 再生逻辑块以实现提高的吞吐量
CN201520430146.XU Active CN204790975U (zh) 2014-06-20 2015-06-19 数据通路流水线

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN201510345907.6A Pending CN105302523A (zh) 2014-06-20 2015-06-19 再生逻辑块以实现提高的吞吐量
CN201520430146.XU Active CN204790975U (zh) 2014-06-20 2015-06-19 数据通路流水线

Country Status (4)

Country Link
US (2) US11709682B2 (zh)
CN (3) CN114924796A (zh)
DE (1) DE102015109969A1 (zh)
GB (1) GB2527367B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9652418B2 (en) 2014-06-30 2017-05-16 Intel Corporation High throughput register file memory with pipeline of combinational logic
CN105468335B (zh) * 2015-11-24 2017-04-12 中国科学院计算技术研究所 流水级运算装置、数据处理方法及片上网络芯片
CN106484564B (zh) * 2016-09-18 2020-03-31 上海尚毅测控技术有限公司 一种采集数据存储方法
GB2567507B (en) * 2018-04-05 2019-10-02 Imagination Tech Ltd Texture filtering with dynamic scheduling
CN110764823B (zh) * 2019-09-02 2021-11-16 芯创智(北京)微电子有限公司 一种指令流水线的回路控制系统及方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5774080A (en) * 1994-12-15 1998-06-30 Analog Devices, Incorporated Reduced transistor-count data storage and multiplexing system
US6614371B2 (en) * 2001-07-19 2003-09-02 Broadcom Corporation Synchronous data serialization circuit
US20050097620A1 (en) * 2003-10-30 2005-05-05 Honeywell International Inc. Architecture for multi-channel video processing
WO2005050383A2 (en) * 2003-11-13 2005-06-02 Commvault Systems, Inc. Combining data streams in storage network
JP4546775B2 (ja) * 2004-06-30 2010-09-15 富士通株式会社 時分割多重処理可能なリコンフィギュラブル回路
US7526583B2 (en) * 2005-06-23 2009-04-28 International Business Machines Corporation Method and apparatus to launch write queue read data in a microprocessor recovery unit
US7840001B2 (en) * 2005-11-04 2010-11-23 Arm Limited Data processing apparatus

Also Published As

Publication number Publication date
DE102015109969A1 (de) 2015-12-24
US11709682B2 (en) 2023-07-25
GB2527367A (en) 2015-12-23
GB201411052D0 (en) 2014-08-06
US20230325195A1 (en) 2023-10-12
GB2527367B (en) 2017-01-18
US20150370574A1 (en) 2015-12-24
CN105302523A (zh) 2016-02-03
CN204790975U (zh) 2015-11-18

Similar Documents

Publication Publication Date Title
US20230325195A1 (en) Replicating logic blocks to enable increased throughput with sequential enabling of input register blocks
US11188330B2 (en) Vector multiply-add instruction
US9760373B2 (en) Functional unit having tree structure to support vector sorting algorithm and other algorithms
US8250342B1 (en) Digital signal processing engine
US9329866B2 (en) Methods and apparatus for adapting pipeline stage latency based on instruction type
US20180121386A1 (en) Super single instruction multiple data (super-simd) for graphics processing unit (gpu) computing
JP2010532063A (ja) 条件命令を無条件命令および選択命令へと拡張する方法およびシステム
GB2464292A (en) SIMD processor circuit for performing iterative SIMD multiply-accumulate operations
US8281113B2 (en) Processor having ALU with dynamically transparent pipeline stages
US9965275B2 (en) Element size increasing instruction
US20080059764A1 (en) Integral parallel machine
US20080059763A1 (en) System and method for fine-grain instruction parallelism for increased efficiency of processing compressed multimedia data
US20240004663A1 (en) Processing device with vector transformation execution
CN112074810B (zh) 并行处理设备
JP4444305B2 (ja) 半導体装置
GB2523805A (en) Data processing apparatus and method for performing vector scan operation
Suzuki et al. Instruction rearrangement and path limitation for ALU cascading
Schaffer et al. A prototype multithreaded associative SIMD processor
White Design and implementation of RVV-Lite: a layered approach to the official RISC-V vector ISA
Meeraa et al. Nurture IDR Segmentation and Multiple Instruction Queues in Superscalar Pipelining Processor
JP6060853B2 (ja) プロセッサおよびプロセッサの処理方法
JP2005539333A (ja) 完全同期方式スーパーパイプライン型vliwプロセッサのシステムおよび方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination