CN1947092B - 处理器 - Google Patents
处理器 Download PDFInfo
- Publication number
- CN1947092B CN1947092B CN2005800124889A CN200580012488A CN1947092B CN 1947092 B CN1947092 B CN 1947092B CN 2005800124889 A CN2005800124889 A CN 2005800124889A CN 200580012488 A CN200580012488 A CN 200580012488A CN 1947092 B CN1947092 B CN 1947092B
- Authority
- CN
- China
- Prior art keywords
- processor
- instruction
- local storage
- functional
- functional 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.)
- Expired - Fee Related
Links
- 230000008520 organization Effects 0.000 claims abstract description 32
- 238000003860 storage Methods 0.000 claims description 57
- 230000006870 function Effects 0.000 claims description 23
- 239000000872 buffer Substances 0.000 claims description 18
- 230000008859 change Effects 0.000 claims description 11
- 238000004064 recycling Methods 0.000 claims description 8
- 230000008878 coupling Effects 0.000 claims description 5
- 238000010168 coupling process Methods 0.000 claims description 5
- 238000005859 coupling reaction Methods 0.000 claims description 5
- 230000009466 transformation Effects 0.000 claims description 5
- 230000014759 maintenance of location Effects 0.000 claims description 4
- 238000013461 design Methods 0.000 description 85
- 238000000034 method Methods 0.000 description 31
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 108010022579 ATP dependent 26S protease Proteins 0.000 description 2
- 101100524516 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) RFA2 gene Proteins 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000008485 antagonism Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000011079 streamline operation Methods 0.000 description 1
- 238000010189 synthetic method Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
-
- 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/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/46—Multiprogramming arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Multimedia (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
提供一种用于多处理器流水线并行性的方法和装置,其中的具有模块化组织结构的处理器包括至少一个本地存储器,可操作用于存储数据和用于执行的指令;至少一个功能单元,可操作用于对本地存储器所提供的数据执行指令;以及至少一个发布逻辑单元,可操作用于将该本地存储器所提供的指令转换为用于执行该指令的功能单元的操作。每个这种发布逻辑单元可操作用于根据一个公共的指令集来控制一个或多个功能单元对指令的执行。
Description
相关申请的交叉参考
本申请要求2004年4月22日提交的美国临时专利申请60/564,682的权益,其所公开的内容在此引用以作为参考。
技术领域
本发明涉及集成电路及其设计。
背景技术
近年来,集成电路处理器的设计已经从独立型专有设计转移到以对抗性设计和传统平台支持更大的网络功能和互用性的设计上。这与取代传统的占有优势的独立PC而具有网络服务器计算机的计算世界的重新调整是相符的。
因此,这不再足以提供具有最高独立性能的处理器。该处理器必须熟练地操控手头的计算作业,这意味着有效地响应处理调用。可以支持来自不同卖主的各种不同设计的处理器的调用的处理器设计是出众的,因为它能提供更高程度的互用性。然而,在这种设计中,当网络中的处理器无论大或小、服务器或客户机,在共享公共的设计特征时,将获得更高的性能,如在2001年3月22日提交的共同未决的美国专利申请09/815,554中描述的,特此在此引用以做参考。这种公共的设计可以利用具有公共指令集体系结构(ISA)或其子部分的公共体系结构,以及用于数据通路和寻址的公共设计。这样的公共设计也可以支持作业的高执行速率,例如对图形数据的服务和/或处理。这样的设计将支持互用性,同时促进共享设计的高性能优点。
在设计用于此目的的处理器时,需要有效的处理器组织结构和设计方法。应当实现相对短的设计周期,而无须考虑处理器的大小、或者设计支持的计算作业。处理器设计应当在连续执行公共的指令集体系结构的同时能够改变。而且,处理器设计应当能够在接近被释放的时间被改变,以无须对处理器进行大规模的重新设计以及无须对微代码和硬件进行大规模的重新设计地在集成电路(IC)上制造,以便在改变的处理器上执行指令集。
图1是示出根据现有技术的处理器的实现方法。如图1所示,在处理器设计中的初始步骤S01中包括设计新的指令集体系结构和/或现有指令集体系结构的扩展,这两方面在这里被统称为“ISA”。指令集体系结构是无论何时出现在处理器面前都需要处理器识别并执行的机器语言指令的集合。ISA典型地包括用于存储并检索数据、存储和检索指令的指令、用于对操作数进行数学、逻辑或其它操作的指令以及该处理器的一个或多个寄存器所持有的其它指令。ISA典型地被详细描述成其中只有一个特定处理器或某类处理器或多个处理器能够执行其指令的点。ISA的细节包括:每次访问从存储器中检索的数据的位宽、以及可经其直接访问数据比特的读取命令的类型。另外,对数据在处理器的寄存器和不同层次的存储器,例如不同层次的缓存,之间的移动的支持通常对于处理器的设计或处理器的分类而言是特定的。如另一实例的描述,虽然具有不同组织结构的处理器能够执行浮点运算,但只有属于特定种类的处理器能够执行其中尾数长为32比特、指数长为16比特、并且这两个的余数被用作表示数的符号的浮点运算。
在根据现有技术的这种方法中,在设计ISA之后,就对处理器进行定制设计(步骤S03)以便使其具有支持ISA设计的固定功能组织结构。包括其任意扩展的ISA典型地被设计为只能通过具有非常特殊的功能组织结构的处理器硬件来实现。如上所述,作为一个例子,通常由包含在ISA中的指令来固定用于从/向处理器的寄存器中传输数据的位宽、以及能够由处理器操作的操作数的位宽。因此,处理器的设计就缩减到对支持ISA指令的固定硬件和/或微代码的设计处理上。
此后,在步骤S05,定制设计发布逻辑和微代码,以便执行关于为此设计的处理器硬件的指令。发布逻辑用于将由处理器和由基于人类或机器的编程方(编译器)识别的具有有限位宽(例如32比特字符数据)的符号的指令转换为能够根据执行指令的需要来开启并断开处理器硬件的各个元件的电信号的集合。典型地由硬件或在固件中通过查找表示这样的信号的存储数据来执行这种符号到信号的转换。例如,微代码指令由存储在控制存储器中的表示这种信号的数据来实现。基于对特定指令的符号的识别,从控制存储器中取出该存储数据,然后将该数据用于提供在处理器上执行指令的信号。根据现有技术的方法,发布逻辑和微代码的设计通常在硬件设计之后执行,这是因为它们依赖于在硬件设计过程中所做出的选择。
然而,在根据现有技术的设计方法中,问题出现在寻求对处理器设计的修改时。在步骤S03,设计具有固定的功能组织结构的处理器以支持ISA。然后定制设计发布逻辑和微代码,以便实现关于所定制设计的处理器的ISA。然而,由于它们是定制设计的,因此当修改处理器的设计时,预先设计的发布逻辑和微代码在修改后的处理器设计中可能不再工作。因此,无论什么时候决定修改处理器的设计(S06),处理流程都要回到步骤S03的处理器设计的步骤上,这反映了为了实现关于修改后的处理器设计的ISA,处理器设计中的改变也需要在发布逻辑和微代码的设计中进行改变。
除了上面考虑到的因素之外,现有技术提供了两种用于根据上述方法的步骤S03来设计处理器的现有方法:合成设计以及定制设计。这些设计方法发现了对处理器“核心”、即具有附加功能的集成电路的处理器元件的设计的特定应用。归类为芯片上的系统(“SOC”)的集成电路具有处理器核心。
在合成设计法中,如图2所示,推断性地开发出可再利用的元件块库,如S10所示,该库可用于设计多种不同的用于具有一定范围的时钟速度和用途的系统中的电路。利用相对高级的语言来定义可再利用的元件块,例如,寄存器传输级(“RTL”)描述。设计者然后通过指定其中所用的元件块来组合处理器设计,如S12所示。编译器根据RTL描述中指定的元件块来合成电路布局。合成设计对在设计周期内修改处理器的基本特征、诸如指令集、流水线宽度和缓存大小等提供了灵活性。通过在RTL描述中指定可再利用的元件块的不同集合来进行修改,如S14所示。合成设计还允许在相对较短的设计周期之内创建设计并为测试(在硬件之前的阶段)做准备。
反之,定制设计是费力的,它需要相对较长的设计周期。如图3所示,在处理器的完全定制设计中,处理器的元件从底层向上设计,包括所有的功能块,如S20所示。电路被手工制造成符合特定的性能标准,例如支持最小时钟频率,从而消耗低于某种限度的功率,或者占用低于某种限度的集成电路面积。功能块之间的布局和配线也要谨慎地设计以满足性能标准,如S22所示。由于对设计的每个元件给予了更高的关注并特别强调满足性能标准,因此当把定制设计处理器与合成创建该设计相比时,能够获得四倍之高的性能。另一方面,修改定制设计则产生了困难,这是因为它需要从底层向上再次重新设计处理器,如S24所示。
然而,如参考图1在上面所指出的,为了实现关于修改后的处理器设计的ISA,对处理器设计的修改迫使对发布逻辑和微代码进行重新估计和再设计。
因此,需要提供一种具有模块化功能组织结构的处理器,其具有根据处理器中所提供的多个模块化元件来确定的性能。
还需要提供一种设计处理器的方法,该方法在对处理器设计进行改变、例如对处理器功能单元的数目进行改变时,不需要对发布逻辑和微代码进行再设计。
发明内容
根据本发明的一个方面,提供一种具有模块化组织结构的处理器。该处理器包括:至少一个本地存储器,可操作用于存储数据和供执行的指令;至少一个功能单元,可操作用于执行与从所述至少一个本地存储器提供的数据有关的指令;以及至少一个发布逻辑单元,可操作用于将从所述至少一个本地存储器提供的指令转换为用于控制所述至少一个功能单元对这些指令的执行的信号。
每个这种发布逻辑单元可操作用于根据公共指令集来控制所述至少一个功能单元中的一个或多个对指令的执行。当所述处理器包括多个所述功能单元时,所述至少一个发布逻辑单元可操作用于对从所述至少一个本地存储器提供的指令中的单一指令进行解码,以便根据所述单一指令同时操作全部所述多个功能单元,以及可操作用于对多个指令进行解码以便分别操作所述多个功能单元的第一和第二子集,其中根据所述多个指令中的各个指令来操作每个所述子集。
根据本发明的另一方面,提供一种集成电路的处理器,所述处理器具有发布逻辑,其特征在于,所述处理器具有支持指令集体系结构的模块化功能组织结构,所述发布逻辑被设计成在所述处理器上实现所述指令集体系结构,所述发布逻辑适应所述模块化功能组织结构中的改变。
附图说明
图1是示出根据现有技术的处理器实现方法的流程图。
图2是示出根据现有技术的合成设计方法的流程图。
图3是示出根据现有技术的定制设计方法的流程图。
图4是示出根据本发明实施例的处理器组织结构的方框图。
图5是示出根据本发明另一实施例的处理器组织结构的方框图。
图6是示出根据本发明又一实施例的处理器组织结构的方框图。
图7是示出根据本发明又一实施例的处理器组织结构的方框图。
图8是示出根据图4所示的本发明实施例的处理器的详细组织结构的详细方框图。
图9是示出根据本发明实施例的处理器的单线程指令流水线元件的结构和功能的图表。
图10是示出根据本发明实施例的处理器的逐个周期的多线程指令流水线元件的结构和功能的图表。
图11是示出根据本发明实施例的设计方法的流程图。
图12是示出根据图11所示的本发明实施例的处理器组织结构的详细方框图。
具体实施方式
下面将参考图4至12描述本发明的实施例。
图4是示出根据本发明实施例的方法所设计的处理器10的组织结构的方框图。如图4所示,处理器包括三个主要元件:本地存储器12,功能单元14和发布逻辑16。本地存储器(LS)12至少存储由功能单元14执行的数据,优选地还存储指令。功能单元14基于具有位宽OP的操作数来执行指令,该位宽是用于从/向本地存储器12传输数据的总线宽度。可由功能单元14操控的比特数OP随处理器10的设计而改变。在一个特定的实施例中,比特数OP是2的整数倍次幂,例如,4、8、16、32或64比特。功能单元14基于从本地存储器12提供的操作数来执行指令。
发布逻辑16用于将排队执行的指令转换为用于功能单元14的信号。例如,在该功能单元中将两个操作数相乘的指令被转换为一系列操作,其中每一个操作将一个操作数向左移位由第二个操作数的位所确定的位置数。此后,为了完成乘法,以进位方式将移位操作的结果相加。
图5示出了根据本发明实施例所提供的另一处理器20的组织结构。如同图4所示的处理器10,处理器20包括发布逻辑26,用于将指令转换为用以控制功能单元对它们的执行的信号。然而,不同于处理器10,处理器20包括多个本地存储器(LS)22,如22a至22d所示,以及多个功能单元24,如24a至24d所示。每个本地存储器22提供一个与相应的功能单元匹配的存储空间,并至少为其提供操作数。例如,本地存储器22a提供一个与功能单元24a相匹配的存储空间,并且本地存储器22b提供一个与功能单元24b相匹配的存储空间。每个本地存储器还优选地提供由相应的功能单元24执行的指令。尽管优选地在单个集成电路中实现,但处理器20的本地存储器(LS)22和功能单元24被设计成可根据处理器10的设计再利用的元件或部件。这样,例如在本实施例中,处理器20包括四个功能单元,每个功能单元基于32比特宽操作数来执行指令,处理器20还包括四个匹配的本地存储器,每个本地存储器提供对32比特宽操作数的访问。另外,处理器20包括发布逻辑26,其处理同时操作128比特宽操作数组的指令。在这种情况下,可针对多个(达4个)不同的32比特操作数流,将指令排列为“多级(multi-scalar)”执行。这种多级执行可通过逐个周期的多线程执行来提供,如下面更完整的描述所述。在这种多级执行中,根据被提供给处理器的多个指令中的不同指令来分别操作处理器功能单元的两个或多个子集,如在2004年4月22日提交的、名称是“用于SIMD指令集处理器的多标量扩展”的共同转让的美国临时专利申请60,564,673中所描述的,在此引用该申请以作为参考。
可选择地,当操作数从各个本地存储器22中排队并由相同的指令同时操作以提供单指令多数据(SIMD)操作时,通过处理器20的数据通路的宽度可能会从32比特增加到2倍、3倍或4倍,即64比特、96比特或128比特。
图6示出了根据本发明另一个实施例的处理器30的组织结构。图6所示的实施例与图5的区别在于在本地存储器(LS)32和功能单元34之间引入了开关33。开关33提供了一个互连的网络,以使包含操作数和/或指令的数据能够从任一个本地存储器(LS)32中被检索,并被提供给任一个功能单元34。按所期望地,互连的网络是纵横制(cross-bar)类型,以便允许在全部四个本地存储器32和全部四个功能单元34之间同时进行数据的多次传输。
图7示出了根据本发明另一实施例的处理器30的组织结构。图7中所示的实施例与图6的区别在于提供了多个发布逻辑单元46a至46d。发布逻辑单元46a至46d中的每一个与功能单元44a至44d中的相应一个相关联。默认地,每个发布逻辑单元、例如发布逻辑单元46a对用于相应功能单元、例如功能单元44a的指令进行解码。然后由相应的功能单元来执行经解码的指令。以这种方式,由发布逻辑单元46中的各个单元对多个指令进行同时解码,然后由功能单元44中相应单元对各个数据同时进行处理。然而,每个发布逻辑单元也可以对用以由全部功能单元44a至44d同时对各个数据执行指令的指令、即用以SIMD操作的指令进行解码。
图8是示出根据图4中所示的本发明实施例而提供的处理器100的组织结构的详细方框图。如图8所示,处理器100包括功能单元102以及与之耦合的高速缓存104,高速缓存104作为操作数和功能单元102所执行的操作的结果等数据的存储库。处理器100还包括指令缓冲器106,从该缓冲器将指令传送到流水线108,以由发布逻辑110将其转换为操作功能单元102的信号。如图8进一步所示的,处理器100通过高速缓存104和指令缓冲器106接口到存储器101。存储器101存储数据和由处理器100执行的指令。处理器100还存储执行指令的结果。另外,如果指令包含任何需要在执行之前解释的语句,存储器101可进一步用于存储由处理器100生成的作为这些语句的解释结果的指令。
在图8所示的实例中,高速缓存104与处理器之间的数据通路具有一个双字(64比特)的宽度。指令流水线108可容纳一个双字宽(宽度为64比特)的指令。在一个实施例中,高速缓存可容纳1024个这样的双字。
指令缓冲器106保持从存储器101取出的指令,并置于指令流水线108的队列中。在本发明的一个实施例中,该指令缓冲器106保持少量的、例如32个指令,其中每个指令都具有一个双字的宽度。可以根据处理器100所支持的特定应用程序的需要,而提供具有更小或更大容量的指令缓冲器。优选地,指令缓冲器106为从存储器101取出以输出到指令流水线108的指令的排队提供先入先出(FIFO)操作,并提供随机访问,以便关于分支操作,允许不按照缓冲的顺序来执行指令。
指令流水线108根据指令缓冲器中可用的指令,对多个执行指令进行排队,其数目在图8所示的实例中为6。指令流水线108支持传统的单线程方式,其中流水线中的每个指令(INSN 1,INSN 2,INSN 3等等)都来自一个指令流,并按顺序跟随在该指令流的上一个指令之后。
指令流水线108的深度主要是由特定的处理器组织结构的需要来确定的。排有6个指令的指令流水线108,如这里所示,需要6个指令周期来处理每个指令,以将其转换为操作功能单元102的信号。这些周期中的一个或多个通常用于基于较早执行的指令的结果来检验指令的从属性。如果发现一个指令具有这种从属性,则必须准备从缓存中检索较早执行的指令的结果,或者如果高速缓存104中没有,就从存储器101中检索。
有时,在检验从属性时,缓存或存储器101中都没有执行指令流中的较早指令的结果,而是这种结果置于高速缓存104和存储器101“之间”的某处。换言之,数据存在于从高速缓存或存储器向其它部件传输的过程中,存储单元在时间上也不允许对特定点的数据进行访问。此时,少有对行动的选择。根据一个选择,功能单元102通过执行一系列等待周期而中止,直到高速缓存中的数据变为可用并被提供到功能单元102以执行指令为止。但这是不希望的,因为许多处理器周期在等待数据就绪时被浪费掉。另一个选择是用于挂起当前指令流,处理器100立即开始向缓冲器106和指令流水线108加载另一指令流以执行。然而,这种选择也是不希望的,这是因为为了将指令加载到缓冲器106中并使之在指令流水线108中执行就绪,需要许多周期。
图9示出了执行保持在指令流水线208中的指令序列。如图9所示,流水线208中的每个指令由线程号T1来识别。线程号T1用于识别已经从存储器中检索出的相关指令的特定序列。如本领域技术人员所公知的,一个线程的每个指令通常涉及与最后一个在先指令相同的工作项目,以便通过顺次执行特定线程的指令来完成该工作项目。图9示出了这种情况,即在某一特定时间点,流水线208中的所有指令为单线程T1中的被顺序排序的指令。在这种设置下,特定线程的执行有时会被中止,而代之以开始执行另一线程。除了这种在线程之间的偶尔改变之外,图9示出的模型表示了一种由具有单线程指令流水线208的处理器来执行这些线程指令的顺序,换言之,线程T1的指令是按顺序执行的。
然而,如上面所指出的,由于各种原因这种执行是不希望的。如果一条指令、例如指令210与在先操作的结果具有从属性,则该结果在准备执行指令210的时候对功能单元102(图8)必须是可用的,否则,指令210不能被执行。因此,当产生了这样的从属性时,一个公共响应可以从指令流水线208中移走线程T1的当前指令流,并开始向流水线208中填充另一线程T11(未示出)的指令。由于指令流水线208的深度为8,所以再次加载流水线的等待时间就是8。因此,在线程之间的这种转换过程中,至少有8个周期因再次加载指令流水线而被浪费了。
图10示出了大大减小了上述问题的影响的指令流水线308。如图10所示,在流水线308中等待执行的指令属于不同的线程。每个线程的指令在每个线程中按顺序排序的同时,对每个线程的指令进行排队以便在每个连续的指令周期中,执行属于不同线程的指令。这样,在第一周期中,执行属于线程T1的指令310。接着,在第二周期中,执行来自线程T2的指令312。在第三周期中,执行属于线程T3的指令314,接着在第四周期中执行属于线程T4的指令316。这里所描述的用于以循环方式执行不同线程的指令的流水线操作作为“逐个周期的多线程操作”为公众所知。
逐个周期的多线程操作有利于处理器的效率,这是因为它使指令的执行更加不受从属性的影响。因为有四个线程的指令在指令流水线308中等待执行,所以对于特定线程T3的指令314的不令人满意的从属性(例如高速缓存未中)不会导致其它线程T1、T2和T4的指令被挂起。关于特定线程T3的等待状态也不会干扰其它线程的执行。指令的执行如之前那样继续进行。
此外,逐个周期的多线程操作减小了执行每个线程的指令的等待时间。如图10所示,在具有8指令深度并且多线程为4个线程的指令流水线中,关于每个线程的等待时间只有2,这是因为在任意一个时间点,每个线程仅仅有2个指令等待在指令流水线308中执行。而且,当新的线程、例如线程T22取代了具有不令人满意的从属性的线程T2而被加载到指令流水线308中时,最多只有2个而不是8个周期被浪费,这是因为属于其它线程T1、T3和T4的指令仍保留在流水线中。
图11是示出根据本发明实施例的设计处理器的方法的流程图。图12是示出依照这种方法而设计出的处理器的组织结构的方框图。如图11所示,该方法的第一步骤是要设计指令集体系结构(ISA)和/或对ISA的扩展,如步骤S30所示。一旦设计了ISA,就设计具有支持该ISA的模块化功能组织结构的处理器硬件(步骤S32)。包含在处理器的模块化功能组织结构中的模块化元件,包括那些可以存在或不存在于处理器中的元件,或者是以不同数量存在的元件,尽管这些元件在与其它元件的特定互连中可能改变。处理器的模块化元件包括如上面参考图4至7示出和描述的功能元件、本地存储器和发布逻辑单元的数量,以及如参考图6和7示出和描述的开关的存在与否。然后,如步骤S34所示,设计用以实现ISA且适应处理器的模块化组织结构中的改变的发布逻辑和微代码。
这些步骤一旦被执行,则在步骤S36中,根据所期望的处理器的应用,为处理器的设计选择特定的模块化组织结构。在这一步骤,选择功能单元的数目、本地存储器和发布逻辑单元的数目和/或开关,以作为用于特定处理器以及所期望的用途的组织结构的一部分。例如,为某一特定用途而选择具有4个功能单元、4个本地存储器,没有开关且具有2个发布逻辑单元的处理器组织结构。
此后,在步骤S38,根据处理器的该特定用途,确定是否应当修改处理器设计。如果需要修改,则在步骤S40中改变处理器的模块化功能组织结构的相关元件,即功能单元、本地存储器、发布逻辑单元的数目以及开关的存在等等。然后得到具有改变了这种元件的数目的修改后的处理器设计。由于开始时被设计的ISA、发布逻辑和微代码支持具有这种模块化功能组织结构的处理器,所以这种新的处理器设计已经支持ISA,并且发布逻辑和微代码可用于操作经修改的处理器设计。
参考图12,在另一实施例中,通过这里所公开的方法而设计的处理器400的组织结构随着可再利用元件的数目而改变以支持各种功能。这样,处理器400的设计包括具有多个可再利用的高速缓存元件CE 1、CE 2...CE z的高速缓存404。高速缓存的大小是由在设计中所使用的高速缓存元件的数目决定的。每个高速缓存元件代表整个高速缓存中相对较大的一个片断部分,这样该高速缓存元件被称为“宏”。例如,具有16K双字大小的高速缓存可具有16个高速缓存元件,每个高速缓存元件的大小均为1024个双字。处理器的其它基本特征是由其它类型的宏的实例数目来确定。这样,在一个实施例中,通过选择指令缓冲器宏的实例数目来设计指令缓冲器406,以便提供缓冲器INSN BUF0,INSN BUF1,...INSN BUFX,其中每个缓冲器都缓存特定线程的指令流。换言之,提供多个指令缓冲器,其中每个缓冲器以循环方式向耦合到指令流水线408的指令总线输出指令。多指令缓冲器INSN BUF0,INSN BUF1等与指令流水线408以及发布逻辑410的组合构成了处理器400的指令流水线单元。这种包括多指令缓冲器和向指令流水线408的共用输出的组织结构能够按照逐个周期的多线程操作来工作,如上面参考图10所描述的。其中,与上面关于图1所描述的现有技术的方法不同,不必在开始设计之前就推断性地确定好指令缓冲器的数目。由于每个宏都被设计为可再利用的,因此就可以依照每种类型的宏的数目及互连来确定处理器的功能元件的大小和性能。另外,优选地依照支持指令流水线408的功能的宏的实例数目来确定指令流水线408的深度M和宽度N。
另外,依照所提供的功能单元宏的实例FC1,FC2,...FCY的数目来确定处理器400的功能单元402的性能。功能单元宏的每个实例优选地实现功能单元的功能,如上面参考图4至7所描述的。换言之,功能单元宏的每个实例具有执行线程的功能。这样,对于具有数目为Y的功能单元宏(其中每个功能单元宏处理OP比特的操作数)的处理器组织结构而言,可以获得两个优点。第一,多线程操作可以用于多达Y个指令流。第二,当多个功能单元作为一个单元来操作时,可以在一个周期内处理宽度达Y*OP的操作数。
上面关于设计方法和处理器结构的描述,强调了灵活而通用的、设计不同大小和性能的处理器的方法,这种方法仍共享了公共设计特征,并适于满足特殊性能标准。
尽管本发明已经参照特定实施例进行了描述,可以理解,这些实施例只是示意性地示出本发明的原则和应用。因此可以理解,对这些示意性实施例所做出的大量修改和其他的安排都不背离如所附保护范围定义的本发明的精神和范围。
Claims (20)
1.一种具有模块化组织结构的处理器,包括:
模块化元件,所述模块化组织结构可再利用所述模块化元件,每个模块化元件包括具有预定功能的相应宏,其中,对每个所述模块化元件指定了实例的数目;
至少一个本地存储器,可操作用于存储数据和供执行的指令;
至少一个功能单元,可操作用于执行与从所述至少一个本地存储器提供的数据有关的指令;以及
至少一个发布逻辑单元,可操作用于将从所述至少一个本地存储器提供的指令转换为用于控制所述至少一个功能单元对这些指令的执行的信号,所述至少一个发布逻辑单元中的每一个可操作用于根据公共指令集来控制所述至少一个功能单元中的一个或多个对指令的执行,以便当所述处理器包括多个所述功能单元时,所述至少一个发布逻辑单元可操作用于对从所述至少一个本地存储器提供的指令中的单一指令进行解码,以便根据所述单一指令同时操作全部所述多个功能单元,以及可操作用于对多个指令进行解码以便分别操作所述多个功能单元的至少两个子集,其中根据所述多个指令中的各个指令来操作每个所述子集。
2.如权利要求1所述的处理器,其中,每个所述功能单元还可操作用于执行从所述至少一个本地存储器提供的指令。
3.如权利要求1所述的处理器,其中,所述处理器包括:一个本地存储器、一个功能单元和一个发布逻辑单元。
4.如权利要求1所述的处理器,其中,所述处理器包括:多个所述功能单元、多个所述本地存储器、以及一个所述发布逻辑单元,其中每个所述本地存储器对应于所述功能单元中的特定一个,每个所述对应的本地存储器具有同与之对应的所述功能单元匹配的存储空间,以便只从具有所述匹配的存储空间的所述对应的本地存储器向每个所述功能单元提供数据。
5.如权利要求1所述的处理器,其中,所述处理器包括:多个所述功能单元、多个所述本地存储器和一个所述发布逻辑单元,所述处理器还包括所述多个本地存储器和所述多个功能单元之间的互连网络,所述互连网络允许任一个所述功能单元对任一个所述本地存储器进行访问。
6.如权利要求1所述的处理器,其中,所述处理器包括:多个所述功能单元、多个所述本地存储器以及多个所述发布逻辑单元,所述处理器还包括所述多个本地存储器和所述多个功能单元之间的互连网络,所述互连网络允许任一个所述功能单元对任一个所述本地存储器进行访问,并且所述多个发布逻辑单元可操作用于同时控制所述功能单元中的各个单元对多个指令的执行。
7.如权利要求1所述的处理器,其中,所述处理器包括:多个所述功能单元、多个所述本地存储器和多个所述发布逻辑单元,所述多个发布逻辑单元可操作用于同时控制所述功能单元中的各个单元对多个指令的执行。
8.如权利要求1所述的处理器,其中,所述处理器包括:多个所述功能单元、多个所述本地存储器和多个所述发布逻辑单元,其中每个本地存储器对应于所述功能单元中的特定一个,每个所述对应的本地存储器具有同与之对应的所述功能单元匹配的存储空间,以便只从所述对应的本地存储器中向每个所述功能单元提供数据,并且其中所述多个发布逻辑单元可操作用于同时控制所述功能单元中的各个单元对多个指令的执行。
9.如权利要求4、5、6、7或8所述的处理器,进一步包括指令流水线单元,该指令流水线单元包括多个指令流水线元件,其中依据所述指令流水线元件的数目来确定所述指令流水线单元的组织结构。
10.如权利要求9所述的处理器,其中,所述处理器还包括多个指令流缓冲器,每个指令流缓冲器可操作用于缓存与在至少一个其它所述指令流缓冲器中缓存的指令流不同的指令流,所述多个指令流缓冲器与所述指令流水线元件互连,从而使所述指令流水线单元可操作用于提供逐个周期的多线程操作。
11.一种集成电路的处理器,所述处理器具有发布逻辑,其特征在于,所述处理器具有支持指令集体系结构的模块化功能组织结构,
所述发布逻辑被设计成在所述处理器上实现所述指令集体系结构,所述发布逻辑适应所述模块化功能组织结构中的改变,
所述处理器还包括所述模块化功能组织结构可再利用的模块化元件,每个模块化元件包括具有预定功能的相应宏,其中,对每个所述模块化元件指定了实例的数目。
12.如权利要求11所述的处理器,其特征在于,还包括在所述处理器上实现所述指令集体系结构的微代码,所述微代码适应所述模块化功能组织结构中的改变。
13.如权利要求11所述的处理器,其特征在于,所述处理器还包括从所述模块化功能组织结构中选择的特定模块化功能组织结构。
14.如权利要求13所述的处理器,其特征在于,所述特定模块化功能组织结构可被修改,并且所述发布逻辑适应所述特定模块化功能组织结构中的改变。
15.如权利要求11所述的处理器,其特征在于,所述模块化元件包括具有指令流水线功能的第一宏,并且所述处理器还具有指令流水线单元,其中,对所述指令流水线单元选择了所述第一宏的实例的数目。
16.如权利要求15所述的处理器,其特征在于,还包括为所述指令流水线单元提供的多个指令流缓冲器,每个所述指令流缓冲器缓存与在至少一个其它所述指令流缓冲器中缓存的指令流相分离的指令流,并且所述多个指令流缓冲器与所述指令流水线单元互连,以便使所述指令流水线单元可操作用于提供逐个周期的多线程操作。
17.如权利要求11所述的处理器,其特征在于,所述模块化元件包括具有高速缓存功能的第二宏,所述处理器还包括高速缓存,并且为所述高速缓存选择了所述第二宏的实例数目。
18.如权利要求17所述的处理器,其特征在于,依照所述第二宏的所述实例的数目来选择所述高速缓存的大小。
19.如权利要求11所述的处理器,其特征在于,所述模块化元件包括具有线程执行功能的第三宏,并且所述处理器还包括指令执行元件,为所述指令执行元件选择了所述第三宏的实例数目。
20.如权利要求19所述的处理器,其特征在于,依据所选择的所述第三宏的实例数目来确定能够由所述指令执行元件同时执行的线程的数目。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US56468204P | 2004-04-22 | 2004-04-22 | |
US60/564,682 | 2004-04-22 | ||
PCT/JP2005/008098 WO2005103889A2 (en) | 2004-04-22 | 2005-04-21 | Methods and apparatus for multi-processor pipeline parallelism |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1947092A CN1947092A (zh) | 2007-04-11 |
CN1947092B true CN1947092B (zh) | 2010-05-26 |
Family
ID=34966383
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005800124889A Expired - Fee Related CN1947092B (zh) | 2004-04-22 | 2005-04-21 | 处理器 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7302554B2 (zh) |
EP (1) | EP1733303A2 (zh) |
JP (1) | JP2005310168A (zh) |
KR (1) | KR100873755B1 (zh) |
CN (1) | CN1947092B (zh) |
WO (1) | WO2005103889A2 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8032737B2 (en) | 2006-08-14 | 2011-10-04 | Marvell World Trade Ltd. | Methods and apparatus for handling switching among threads within a multithread processor |
TWI483631B (zh) | 2006-10-31 | 2015-05-01 | Interdigital Tech Corp | 確定頻道品質指示符(cqi)及傳送cqi的傳輸時間間隔(tti) |
US8006073B1 (en) * | 2007-09-28 | 2011-08-23 | Oracle America, Inc. | Simultaneous speculative threading light mode |
US20090133022A1 (en) * | 2007-11-15 | 2009-05-21 | Karim Faraydon O | Multiprocessing apparatus, system and method |
US9424045B2 (en) * | 2013-01-29 | 2016-08-23 | Arm Limited | Data processing apparatus and method for controlling use of an issue queue to represent an instruction suitable for execution by a wide operand execution unit |
CN106066786A (zh) * | 2016-05-26 | 2016-11-02 | 上海兆芯集成电路有限公司 | 处理器以及处理器操作方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6289434B1 (en) * | 1997-02-28 | 2001-09-11 | Cognigine Corporation | Apparatus and method of implementing systems on silicon using dynamic-adaptive run-time reconfigurable circuits for processing multiple, independent data and control streams of varying rates |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5923862A (en) * | 1997-01-28 | 1999-07-13 | Samsung Electronics Co., Ltd. | Processor that decodes a multi-cycle instruction into single-cycle micro-instructions and schedules execution of the micro-instructions |
US6574725B1 (en) * | 1999-11-01 | 2003-06-03 | Advanced Micro Devices, Inc. | Method and mechanism for speculatively executing threads of instructions |
US6826662B2 (en) * | 2001-03-22 | 2004-11-30 | Sony Computer Entertainment Inc. | System and method for data synchronization for a computer architecture for broadband networks |
KR20040064713A (ko) | 2001-11-26 | 2004-07-19 | 코닌클리즈케 필립스 일렉트로닉스 엔.브이. | 프로세서, 인스트럭션 세트, 인스트럭션 분배 방법 및컴파일링 방법 |
US6968445B2 (en) * | 2001-12-20 | 2005-11-22 | Sandbridge Technologies, Inc. | Multithreaded processor with efficient processing for convergence device applications |
-
2005
- 2005-04-19 US US11/108,959 patent/US7302554B2/en not_active Expired - Fee Related
- 2005-04-21 KR KR1020067023556A patent/KR100873755B1/ko not_active IP Right Cessation
- 2005-04-21 CN CN2005800124889A patent/CN1947092B/zh not_active Expired - Fee Related
- 2005-04-21 WO PCT/JP2005/008098 patent/WO2005103889A2/en active Application Filing
- 2005-04-21 EP EP05736517A patent/EP1733303A2/en not_active Withdrawn
- 2005-04-22 JP JP2005125342A patent/JP2005310168A/ja active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6289434B1 (en) * | 1997-02-28 | 2001-09-11 | Cognigine Corporation | Apparatus and method of implementing systems on silicon using dynamic-adaptive run-time reconfigurable circuits for processing multiple, independent data and control streams of varying rates |
Also Published As
Publication number | Publication date |
---|---|
US7302554B2 (en) | 2007-11-27 |
US20050251648A1 (en) | 2005-11-10 |
WO2005103889A2 (en) | 2005-11-03 |
WO2005103889A3 (en) | 2006-08-10 |
EP1733303A2 (en) | 2006-12-20 |
KR20070011468A (ko) | 2007-01-24 |
CN1947092A (zh) | 2007-04-11 |
KR100873755B1 (ko) | 2008-12-15 |
JP2005310168A (ja) | 2005-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9281026B2 (en) | Parallel processing computer systems with reduced power consumption and methods for providing the same | |
US6871341B1 (en) | Adaptive scheduling of function cells in dynamic reconfigurable logic | |
CN1947092B (zh) | 处理器 | |
CN101523359B (zh) | 具有减小数据高速缓存访问功率的微标签阵列的处理器及其应用 | |
CN102725734B (zh) | 基于隔离的线程批调度方法 | |
CN100447738C (zh) | 含有多级寄存器文件的数字数据处理设备 | |
JP4129819B2 (ja) | データベース検索システム及びその検索方法並びにプログラム | |
CN102473109A (zh) | 利用批调度的线程调度 | |
KR100955433B1 (ko) | 파이프라인 구조를 갖는 캐시 메모리 및 이를 제어하는방법 | |
US20080320240A1 (en) | Method and arrangements for memory access | |
CN112257368A (zh) | 时钟布局方法、装置、eda工具及计算机可读存储介质 | |
CN1771486B (zh) | 用于可合成流水线控制的方法及设备 | |
CN100461090C (zh) | 利用代码共享进行堆栈高速缓存的系统、方法和设备 | |
Khouri et al. | Memory binding for performance optimization of control-flow intensive behaviors | |
US9652305B2 (en) | Tracking source availability for instructions in a scheduler instruction queue | |
Ball et al. | Partitioning of code for a massively parallel machine | |
JPH04347728A (ja) | ブロック線図を表す、効率的に実行可能なコードを生成する装置および方法 | |
Bayoumi et al. | SDS: A Framework for the Design of DSP ASICs | |
Papadopoulos et al. | Systematic data structure exploration of multimedia and network applications realized embedded systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100526 Termination date: 20130421 |