CN100409222C - 使能/禁止控制simd处理器切片的方法和设备 - Google Patents
使能/禁止控制simd处理器切片的方法和设备 Download PDFInfo
- Publication number
- CN100409222C CN100409222C CNB2006100051333A CN200610005133A CN100409222C CN 100409222 C CN100409222 C CN 100409222C CN B2006100051333 A CNB2006100051333 A CN B2006100051333A CN 200610005133 A CN200610005133 A CN 200610005133A CN 100409222 C CN100409222 C CN 100409222C
- Authority
- CN
- China
- Prior art keywords
- simd
- enabler flags
- circuit
- section
- order
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000012545 processing Methods 0.000 claims abstract description 56
- 230000004044 response Effects 0.000 claims abstract description 22
- 239000011159 matrix material Substances 0.000 claims abstract description 9
- 238000003860 storage Methods 0.000 claims description 81
- 230000006870 function Effects 0.000 claims description 25
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 claims description 23
- 238000012546 transfer Methods 0.000 claims description 19
- 230000005540 biological transmission Effects 0.000 claims description 16
- 238000005516 engineering process Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 238000007689 inspection Methods 0.000 description 6
- 230000009286 beneficial effect Effects 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000000605 extraction Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 239000000758 substrate Substances 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 238000005520 cutting process Methods 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 230000000873 masking effect Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- JBRZTFJDHDCESZ-UHFFFAOYSA-N AsGa Chemical compound [As]#[Ga] JBRZTFJDHDCESZ-UHFFFAOYSA-N 0.000 description 1
- GYHNNYVSQQEPJS-UHFFFAOYSA-N Gallium Chemical compound [Ga] GYHNNYVSQQEPJS-UHFFFAOYSA-N 0.000 description 1
- 229910001218 Gallium arsenide Inorganic materials 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- FTWRSWRBSVXQPI-UHFFFAOYSA-N alumanylidynearsane;gallanylidynearsane Chemical compound [As]#[Al].[As]#[Ga] FTWRSWRBSVXQPI-UHFFFAOYSA-N 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 230000003750 conditioning effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000004134 energy conservation Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 229910052733 gallium Inorganic materials 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000011079 streamline operation Methods 0.000 description 1
- 239000002887 superconductor Substances 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/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer 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/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- 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
-
- 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/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- 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
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Executing Machine-Instructions (AREA)
- Image Processing (AREA)
- Advance Control (AREA)
Abstract
方法和设备设置为在指定周期内响应一或多个使能标志而禁止其中处理电路被组织成切片和级段的矩阵的SIMD处理流水线的至少一些数据路径处理电路。
Description
技术领域
本发明涉及控制单指令,多数据(SIMD)处理流水线的方法和设备。
背景技术
近年来,由于刀锋(cutting-edge)计算机应用涉及实时,多媒体功能,所以存在永不满足的对更快速计算机处理数据吞吐率的需求。由于图形应用需要在相对短时间段内进行这种大量数据访问,数据计算和数据操作以实现期望的可见结果,所以在各种应用中,图形应用对处理***有最高的要求。这些应用需要非常快速的处理速度,例如每秒许多千兆位的数据。虽然某些处理***使用单处理器实现快速处理速度,但是其它则使用多处理器体系结构实现。在多处理器***中,多个子处理器能够并行(或至少一致)地操作以实现期望的处理结果。
在经历变化的等待时间数据路径的深流水线SIMD处理器中,标量和向量(SIMD)的存在操作可以复杂化数据相关性检查。SIMD处理器可以执行许多操作和/或指令,其中每个具有其自身的和可能不同的等待时间。例如,Intel IA-32 SSE指令集使用不同指令进行标量和SIMD计算/操作。标量操作使用相同寄存器但是始终使用相同切片(slice)。如果目的寄存器的未使用切片字必须保持不变,则大大增加了适当流水线操作和数据传递的复杂度。
此外,SIMD处理器包含多个级段,其中每个级段可以同时执行其操作,并且设法在其目的寄存器中放置结果。当流水线中的两个或更多操作使相同目的寄存器具有不同未使用切片时,数据相关性检查变得更加复杂。当遇到写后写(WAW)或写后读(RAW)相关性时,停止条件可能恶化。由于每个切片具有不同相关性,所以RAW相关性尤其有问题。
与未使用切片的相关性检查相关的复杂度可以通过读取要发出指令的目的寄存器(操作数)(例如,源寄存器)及不经修改地流水线化未使用切片的数据来解决。不幸的是,这需要读取目的寄存器的附加硬件并且可能导致停止的增加。这是由于目的操作数(以及源操作数)可能具有RAW相关性。此外,当不经修改地流水线化未使用切片的数据时,难以实现节能。
可以解决与未使用切片的相关性检查相关的复杂度的另一种方式是把指令的发行延迟或停转一段足够时间以便流水线中的多数操作(具有相同目的寄存器)完成其写回阶段。不幸的是,这可能导致显著的性能退化。
发明内容
根据本发明的第一方面,提供了一种使能/禁止控制SIMD处理器切片的设备,包括具有组织成切片和级段的矩阵的多个数据路径处理电路的SIMD处理流水线,其中至少一些处理电路用以在指定周期内响应一或多个使能标志至少部分地禁止操作,所述设备还包括:存储电路,用以存储各组使能标志,每个组对于相应一个级段中的每个处理电路具有相应使能标志,其中各组使能标志被进行以下处理中的至少之一:包含在每个SIMD指令内并且被提取和传送到存储电路;包含在相应SIMD控制指令内,每个控制指令与相应一个SIMD指令相关,并且使能标志由SIMD控制指令产生并且被传送到存储电路;通过选择预定位组,响应于SIMD指令内不存在使能标志和不存在SIMD控制指令中的至少一种情况而被产生;及响应于从SIMD控制指令和SIMD指令的至少一个解码出的信息而被产生,并且用于选择使能标志的预定组。
根据本发明的另一方面,提供了一种使能/禁止控制SIMD处理器切片的方法,包括:在指定周期内响应一或多个使能标志而禁止其中处理电路被组织成切片和级段的矩阵的SIMD处理流水线的至少一些数据路径处理电路,所述方法还包括:存储各组使能标志,每个组对于相应一个级段中的每个处理电路具有相应使能标志;每个周期传送来自一个级段、用于下一个级段的处理电路的使能标志组;以及以下中的至少之一:在相应SIMD指令内提供各组使能标志,并且提取使能标志以供存储;在相应SIMD控制指令内提供各组使能标志,使每个控制指令与相应一个SIMD指令相关,并且从SIMD控制指令产生使能标志以供存储;当指定SIMD指令不包含使能标志和不存在SIMD控制指令中的至少一个情况时,解码相应SIMD指令并且选择预定位组以产生各组使能标志;及从SIMD控制指令和SIMD指令的至少一个解码出信息,并且使用该信息选择使能标志的预定组。
根据本发明的再一方面,提供了一种使能/禁止控制SIMD处理器切片的设备,包括:具有被组织成切片和级段的矩阵的多个数据路径处理电路的SIMD处理流水线;和传递电路,用以在指定周期内响应一或多个使能标志而使能或禁止结果从处理电路到流水线的一或多个源操作数的传递,其中每组使能标志与相应SIMD指令相关,各组使能标志被进行以下处理中的至少之一:包含在每个SIMD指令内并且被提取和传送到存储电路;包含在相应SIMD控制指令内,每个控制指令与相应一个SIMD指令相关,并且使能标志由SIMD控制指令产生并且传送到存储电路;通过选择预定位组,响应于SIMD指令内不存在使能标志和不存在SIMD控制指令中的至少一种情况而被产生;及响应于从SIMD控制指令和SIMD指令的至少一个解码出的信息而被产生,并且用于选择使能标志的预定组。
根据本发明的一或多个实施例,为分别使能和禁止SIMD切片而没有性能退化,提供灵活性(例如,等待时间和/或吞吐率)。这个功能最好通过使能标记来提供。存在可以实现使能标志的若干方式,例如(i)在每个SIMD指令中嵌入使能标志;(ii)由每个SIMD指令之前或之后加入的前缀或后缀控制指令指定使能标志(如果没有前缀/后缀控制指令存在,则使能全部切片);(iii)提供存储一组使能标志的控制寄存器(使用嵌入指令代码或前缀/后缀控制指令选择标志,并且使用加载或移动指令动态修改);及(iv)上述的组合。
通过使用使能标志控制针对SIMD切片的时钟信号,实现节电。可以如同下述实现数据传递:相关性检查单元检测要发出指令的源寄存器和每个流水线级段中操作的目的寄存器之间的数据相关性。如果相关性存在并且结果仍无效,则停止指令发出。如果相关性存在并且结果有效,则向要发出的指令的操作数传递结果。然而,最好单独控制每个切片的结果的传递以便避免停转。
根据本发明的一或多个实施例,方法和设备设置为:响应指定周期内一或多个使能标志,禁止SIMD处理流水线的至少某些数据路径处理电路,该流水线中处理电路被组织成切片和级段的矩阵。最好是,禁止步骤包含响应使能标志中的相应标志独立禁止处理电路。
例如,禁止步骤可以包含响应使能标志的状态而中断对相应处理电路的时钟信号。
可选地或另外,禁止步骤可以包含根据使能标志阻止来自相应处理电路的相应数据结果被写入到一或多个目的寄存器。禁止特征的另一个扩展是使得能够向流水线的源操作数传递处理电路的至少某些结果。
最好是,禁止和/或传递步骤在逐个周期地执行。
在相关性检查的情形中,禁止步骤最好基于相关性检查电路的确定和使能标志,相关性检查电路可以确定仍进入流水线的切片的指令的任何操作数是否取决于处理电路的任何数据结果。
当结合附图对本发明进行描述时,本领域技术人员将明白其它方面,特征,优点等等。
附图说明
出于说明本发明的各种方面的目的,以附图形式示出当前优选的方式,然而,可以理解本发明不局限于示出的具体方案和手段。
图1是说明可以根据本发明的一或多个方面进行调整的处理***的结构的模块图;
图2是说明适用于图1的处理***和/或这里的其它实施例的SIMD处理流水线的模块图;
图3是说明使能标志和图2的处理流水线和/或这里的其它实施例的操作之间的关系的真值表的框图;
图4是说明适用于图1的处理***和/或这里的其它实施例的可选SIMD处理流水线的模块图;
图5是说明使能标志可以通过解码包含使能/禁止信息的SIMD指令来调用的模块图;
图6是说明使能标志可以通过解码包含与SIMD指令相关的使能/禁止信息的SIMD控制指令来调用的模块图;
图7是说明使能标志可以通过解码SIMD指令和使用其中使能/禁止信息选择和/或改变预定位来调用的模块图;
图8是说明使能标志可以通过解码SIMD指令和使用其中使能/禁止信息选择预定使能标志来调用的模块图;
图9是说明适用于图1的处理***和/或这里的其它实施例的传递电路的模块图;
图10是说明目的寄存器的内容和使用图9和/或这里的其它实施例的使能标志和传递电路控制的传递操作数的表;
图11是说明具有可以根据本发明的一或多个方面来调整的两个或更多子处理器的多处理***的结构的模块图;
图12是说明可以被用来实现本发明的一或多个其它方面的最优处理器单元(PE)的框图;
图13是说明可以根据本发明的一或多个其它方面来调整的图12的***的示例性子处理单元(SPU)的结构的框图;及
图14是说明可以根据本发明的一或多个其它方面来调整的图12的***的示例性处理单元(PU)的结构的框图。
具体实施方式
参照附图,其中类似附图标记指示类似单元,图1中示出了适于执行本发明的一或多个特征的处理***100的至少一部分。出于简洁和清晰的目的,图1的模块图在这里将被称作和描述为如图所示的设备100,然而,可以理解,描述可以容易地被应用于具有相同作用的方法的各个方面。
装置100最好包含处理器102,本地存储器104,主存储器106(例如,DRAM)和总线108。处理器102可以使用能向***存储器106请求数据,并且操作数据以实现期望结果的任何已知技术来实现。例如,处理器102可以使用能执行软件和/或固件、包含标准微处理器,分布式微处理器等等的任何已知微处理器实现。如下所述,处理器102最好使用处理流水线实现。例如,一或多个处理器102可以是能请求和操作包含灰度信息,色彩信息,纹理数据,多边形信息,视频帧信息等等,例如像素数据的数据的图形处理器。
本地存储器104位于处理器102附近,使得处理器可以执行程序代码,以及另外在与***存储器106相对的本地存储器104内操作数据。本地存储器104可以是或不是传统硬件高速缓冲存储器。因为片内空间受限制,所以本地存储器104的大小可能比***存储器106小很多。处理器102最好提供数据访问请求,以通过总线108把***存储器106的数据(可包含程序数据)复制到用于程序处理和数据操作的本地存储器104。利于数据访问的机构最好使用存储器接口110内的直接存储器存取控制器DMAC实现。
根据本发明的一或多个实施例,处理器102可以通过把来自主存储器106的可执行代码复制到本地存储器104(通过MIF 110)来执行软件程序,并且运行本地存储器104内的软件程序。因为本地存储器104可以相对较小(例如256KB),所以可能期望允许部分软件程序(与整个程序相反)和任何相关数据被复制到本地存储器104并且被执行。这需要某个机构,其被用来控制和管理移动部分软件程序到本地存储器,执行部分程序,函数调用等等。
参照图2,处理器102最好使用处理流水线实现,其中逻辑指令以流水线方式处理。流水线可以被分成任何数量的切片(所示四个)和处理指令的任何数量的级段(所示三个级段)。流水线通常包括获取一或多个指令,解码指令,检查指令间的相关性,发出指令和执行指令。在这点上,处理器102可以包含指令缓冲器,指令解码电路,相关性检查电路,指令发出电路及执行级段。
处理流水线可以由组织成切片(切片0,切片1,切片2,切片3...)和级段(级段0,级段1,级段2...)的矩阵的多个数据路径处理电路120组成。根据SIMD处理技术,切片从一或多个源寄存器122接收数据操作数,根据SIMD指令处理数据,并且把数据操作的结果写入到一或多个目的寄存器124。应当注意,根据处理电路120内的算术逻辑单元的结构和流水线内执行的特定编程指令,可以把结果写入到流水线的特定级段(或其特定周期)的目的寄存器124。如果特定级段的结果就绪(即,操作完成),则结果穿过流水线中的任何剩余级段,直至寄存器写回级段。可选地,结果可以被临时保存,直到写回周期。
处理器102最好包含存储部件,其包括多个存储单元EF0,EF1,EF2...,其中每个处理级段均有一个单元与之相关。存储单元保存多个使能标志126,最好组织成相应集合。因而,每组使能标志126在特定处理周期内与处理流水线的一个级段相关。例如,在指定处理周期中,EF0内的使能标志126可以与处理流水线的级段0相关,EF1内的使能标志126可以与处理流水线1的级段1相关,并且EF2内的使能标志126可以与处理流水线的级段2相关。在下一个处理周期中,EF2内的使能标志126将被丢弃或将前进到下一个处理级段(如果下一个级段存在),EF1内的使能标志126将前进到EF2并且EF0内的使能标志126将前进到EF1。因为将在下文中更详细地讨论,所以新的使能标志126组将结合发出到流水线的新SIMD指令被输入到EF0。例如,单元EF0,EF1,EF2,...可以是能在流水线的指定级段保存切片的每个处理电路120的一或多个信息位的硬件寄存器,锁存器等等。
根据本发明的一或多个实施例,至少某些处理电路120用以在指定周期内响应一或多个使能标志126至少部分地禁止操作。
现在参考图3,其是说明使能标志126和处理流水线的切片之间的关系的真值表。例如,假定EF0内的使能标志126为0,0,0,0,则级段0的切片0,切片1,切片2和切片3内的处理电路120优选地在指定周期内被至少部分地禁止。如果使能标志126为0,0,0,1,则优选地,级段0的切片3的处理电路120被使能,而该级段的其它处理电路120优选地被禁止。如果使能标志126为0,0,1,0,则优选地,级段0的切片2的处理电路120被使能,而该级段的其它处理电路120优选地被禁止。关于其它使能标志126的组合可以容易地确定类似关系。通过这种方式,响应相应使能标志126,处理电路120可以被独立禁止(至少部分地)。
参照图4,尽管响应使能标志126而进行处理电路120的部分或全部禁止的数字硬件的适当实现有许多,但是一个可能性是,处理电路120可以包含用于在指定周期内响应使能标志126的状态(例如,逻辑真,假)而部分或全部禁止处理电路120的禁止终端(或等价输入单元)。在这点上,最好SIMD处理流水线包含控制逻辑和数据路径逻辑。控制逻辑产生响应在指定处理电路120中执行的操作类型,并且控制指定电路120的处理行为的一或多个控制信号。控制信号可以包含处理电路120的各个部分的时钟选通信号,使能信号等等。使能标志126可以用一或多个控制信号逻辑选通(例如,进行与操作)以部分或完全禁止处理电路120。可选或另外地,处理电路120可以包含选通时钟输入,其中使能标志126的状态选通时钟信号到该处理电路120以便在指定周期内禁止处理。这可以通过用时钟信号选通被选通使能标志126与控制信号的结果来实现。
使能/禁止流水线的相应切片的能力增加了用于某些操作,例如标量操作的寄存器的表面数量,并且允许在指定级段使用相对少的SIMD指令在每个切片内进行不同操作。
如将在下文中更详细地讨论的,使能标志126可以在指定工作周期内使能或禁止特定处理电路120向目的寄存器124传送处理结果的能力。
有利的是,选通单个处理电路120的时钟的能力允许大量节电而无需消极影响处理吞吐率。
现在参考图5,其是说明使能标志和SIMD指令之间的关系的模块图。最好是,每组使能标志126与相应SIMD指令相关。如图5的图解,一组使能标志126可以被包含在SIMD指令内并且在解码操作期间被提取。一旦被提取,则使能标志126可以在向处理流水线发出SIMD操作时被传送到存储单元EF0。此后,在后续处理周期内,与该SIMD指令相关的使能标志126最好前进到相继存储单元EF1,EF2等等。
参照图6,使能标志126可以被包含在与相应SIMD指令相关的SIMD控制指令内。SIMD控制指令可以在SIMD指令前面或后面(即,充当前缀或后缀)。可以在解码处理期间通过经由提取逻辑激活使能标志来由SIMD控制指令产生使能标志126。例如,一部分SIMD控制指令可以包含表示使能标志126的4位,其在解码处理期间被输入到提取逻辑。另一部分SIMD控制指令可以在解码处理期间被用来激活或选通提取逻辑内的位以产生使能标志126。在可选实施例中,来自SIMD控制指令的使能标志126的提取处理可以使用考虑在这里公开内容的本领域技术人员所知道的任何其它技术实现。
参照图7,可以响应缺省位或来从SIMD指令解码的信息来产生使能标志126。例如,如果SIMD指令包含使能标志126,则可以通过选择逻辑选择此。另一方面,如果SIMD指令不包含使能标志126,则缺省位(例如,1,1,1,1)可产生使能标志126。通过其它例子,如果存在与SIMD指令相关的SIMD控制指令,则使能标志126可以从SIMD控制指令获得。如果SIMD指令其中包含使能标志126,则使能标志126可以从SIMD指令自身获得。另外,使能标志126可以从缺省位获得。
参照图8,可以响应从SIMD控制指令或SIMD指令自身解码的信息产生使能标志126,其中信息被用来选择使能标志126N的预定组。例如,处理器102可以包含控制寄存器,其包含多组使能标志126,例如组0,组1,组2,...组N。来自控制寄存器的使能标志126组可以与选择逻辑通信。从SIMD控制指令或SIMD指令获得的信息可以被输入到选择逻辑,以便选择N组使能标志126中的一组。例如,选择逻辑可以表示简单选通功能或复用器电路。
考虑这里的公开的本领域的技术人员将理解,使能标志可以根据任何一个以上讨论的技术或其组合产生。
现在参考图9,其是图解适于实现使结果中所使用的切片字从处理电路120传递到一或多个源操作数的功能的电路结构的例子的模块图。在本发明的这个实施例中,处理器102可以包含充当传递电路以便根据使能标志126把结果中所使用的切片字从相应处理电路120传递到一或多个源操作数的控制电路132和/或数据路径电路134。应当注意,传递电路可以单独或结合图2和/或4的结构使用,使得禁止把结果中未使用切片字从处理电路120写入到目的寄存器124的附加功能也可以被实现。
控制电路132最好从相关性检查电路130接收使能标志126和结果。控制电路132可以使用多个门实现,以便产生每个切片的相应传递控制信号136。相应传递控制信号136被输入到专用于每个切片的数据路径电路134的相应部分。数据路径电路134用以根据使能标志126传递所使用的切片字到一或多个源操作数。例如,数据路径电路134的每个部分可以使用一或多个复用器(或选择器)实现,其中每个复用器的输入(入)可以包含一或多个:(i)流水线的每个(或至少一个)级段的结果;及(ii)来自源寄存器122的数据。
相关性检查电路130被用以确定仍进入流水线的切片的指令的任何操作数是否依赖流水线内处理电路120的任何数据结果。当存在未使用切片字时,相关性为假,并且当在指定处理电路120的结果中存在使用的切片字时,相关性是真。相关性检查电路130通过处理流水线的每个级段(级段0结果,级段1结果等等)的相应检查结果,提供这个确定结果。这种检查结果最好针对每个级段内的使能标志126选通,以便终止任何假相关性并且保持任何真相关性。选通结果最好被输入到切片逻辑,以便产生传递控制信号136,其用于逐个周期地选择每个切片的最早流水线级段中的最近有效结果。
数据路径电路134(例如,选择器或复用器)基于传递控制信号136选择最近结果,并且把它传送到每个切片的源操作数。如果在一或多个切片中不存在相关性(真),则从源寄存器122读取的数据被选择,并且被传送到该切片的源操作数。最好是,传递电路(控制电路132和/或数据路径电路134)用以逐个切片地(换言之,针对每个切片独立地)选择数据并且将其传送到源操作数。
参照图10,图解了传递电路怎样被用来控制向源操作数传递处理结果的例子。针对这个例子的目的,假定要发出到处理流水线的指令包含操作数,其与通过处理流水线内的处理电路120执行的一或多个操作的结果相关。也假定所图解的情况涉及高度复杂数据相关性的情况,例如其中相同目的寄存器被用于在级段0,1,2和3中执行的全部操作。
假定目的寄存器124的内容最初是A,B,C,D。在级段3,使能标志为0,0,0,1,其允许切片3(E)的处理电路120的结果被写入目的寄存器124。在级段2,使能标志为1,0,0,0,其允许切片0(F)的处理电路120的结果被写入目的寄存器124。在级段1,使能标志126为0,1,0,0,其允许切片1(G)的处理电路120的结果被写入目的寄存器124。在级段0,使能标志126为1,1,0,0,其允许切片0和切片1(H和I,分别地)中的处理电路120的结果被写入目的寄存器124。
在每个周期的结束,每个级段的操作(和使能标志)执行到下一个级段(即,级段0->级段1->级段2->级段3等等)。
基于使能标志126,结果的使用切片字在写回阶段则被写入到目的寄存器124。结果中的未使用切片字是不确定的,并且在写回阶段期间不被写入到目的寄存器124。
如果操作在这些或较早级段被完成(即,结果就绪),则最好执行下列操作:(i)对于切片0,H被从级段0传递到源操作数,(ii)对于切片1,I被从级段0传递到源操作数;(iii)对于切片2,C被从源寄存器122读取并且选择用于源操作数;及(iv)对于切片3,E被从级段3传递到源操作数。如果在至少级段0和级段3中的操作未完成,则停止指令发出。在级段2(F)处的切片0的结果和在级段1(G)处的切片1的结果是传递的候选。实际上,由于在级段0的结果是最近的,所以在级段0(H,I)处而不是在级段1和级段2处的切片0和切片1的结果被传递到源操作数。把流水线的使用切片传递到源操作数(和不传递未使用切片)的能力避免不必要的停转。
图11是适于实现这里讨论的特征和本发明的一或多个其它实施例的多处理***100A的模块图。***100A包含与本地存储器104A-D相关的多个处理器102A-D,和通过总线108互连的共享存储器106。这里共享存储器106也可以被称作主存储器或***存储器。尽管通过例子图解了四个处理器102,但是可以在不偏离本发明的宗旨和范围的前提下使用任何数量。每个处理器102可以有相似构造或不同构造。
本地存储器104最好位于与其相应处理器102相同的芯片(相同半导体基底)上;然而,本地存储器104最好不是其中不存在实现硬件高速缓冲存储器功能的片上或芯片外硬件高速缓存电路,高速缓存寄存器,高速缓冲存储器控制器等等的传统硬件高速缓冲存储器。
处理器102最好提供数据访问请求,以通过总线108把***存储器106的数据复制到其相应的用于程序执行和数据操作的本地存储器104。利于数据访问的机构最好使用未示出的直接存储器存取控制器(DMAC)实现。每个处理器的DMAC最好与上文相对于本发明的其它特征所述的性能基本相同。
***存储器106最好是通过存储器连接(未示出)连接到处理器102的动态随机存取存储器(DRAM)。尽管***存储器106最好是DRAM,但是存储器106可以使用其它器件实现,例如静态随机存取存储器(SRAM),磁性随机访问存储器(MRAM),光学存储器,全息存储器等等。
每个处理器102最好使用处理流水线实现,其中逻辑指令以流水线方式处理。尽管流水线可以被分成处理指令的任何数量的级段,但是流水线通常包括获取一或多个指令,解码指令,检查指令间的相关性,发出指令及执行指令。在这点上,处理器102可以包含指令缓冲器,指令解码电路,相关性检查电路,指令发出电路及执行级段。
在一或多个实施例中,处理器102和本地存储器104可以被布置在公共半导体基底上。在一或多个其它实施例中,共享存储器106也可以被布置在公共半导体基底上或它可以被分别布置。
在一或多个可选实施例中,一或多个处理器102可以充当在操作中连接其它处理器102并且能通过总线108被连接到共享存储器106的主处理器。主处理器102可以安排和协调其它处理器102的数据的处理。然而,不同于其它处理器102,主处理器可以被连接到硬件高速缓冲存储器,其用以高速缓存从至少一个共享存储器106和处理器102的一或多个本地存储器104获得的数据。主处理器可以提供数据访问请求,以通过总线108,使用例如DMA技术的任何已知技术,把***存储器106的数据(其可以包含程序数据)复制到用于程序执行和数据操作的本地存储器104。
现在描述多处理器***的最优计算机体系结构,其适于执行这里讨论的一或多个特征。根据一或多个实施例,多处理器***可以被实现成用于例如游戏***,家庭终端,PC***,服务器***和工作站的媒体丰富应用的独立和/或分布式处理的单芯片解决方案。在例如游戏***和家庭终端的某些应用中,实时计算是必要的。例如,在实时,分布式游戏应用中,一或多个网络图像解压缩,3D计算机图形,音频生成,网络通信,物理模拟及人工智能处理必须被足够快速地执行以为用户提供实时经历的假象。因而,多处理器***中的每个处理器必须在短并且可预测的时间内完成任务。
因此,并且根据该计算机体系结构,多处理计算机***的全部处理器根据公共计算模块(或单元)构造。这个公共计算模块具有一致的结构并且最好使用相同指令集体系结构。多处理计算机***能够由一或多个客户端,服务器,PC,移动计算机,游戏机,PDA,机顶盒,电器,数字电视和使用计算机处理器的其它设备构成。
需要时,多个计算机***也可以是网络的构件。一致模块化结构允许多处理计算机***高效,高速处理应用和数据,并且如果使用网络,则通过网络快速传输应用和数据。这个结构还简化了不同规模和处理能力的网络成员的建立,及这些成员对处理应用的准备。
参照图12,基本处理模块是处理器单元(PE)500。PE 500包括I/O接口502,处理单元(PU)504及多个子处理单元508,即子处理单元508A,子处理单元508B,子处理单元508C和子处理单元508D。本地(或内部)PE总线512在PU 504,子处理单元508和存储器接口511间发送数据和应用。本地PE总线512可以具有例如传统体系结构或可以被实现成分组交换网。如果实现为分组交换网络,虽然需要更多硬件,但增加了可用带宽。
可以使用实现数字逻辑的不同方法构造PE 500。然而,PE 500最好被构造为在硅质基底上使用互补金属氧化物半导体(CMOS)的单集成电路。基底的可选材料包含砷化镓(gallium arsinide),砷化镓铝和使用各种掺杂剂的其它所谓III-B化合物。还可以使用例如快速单磁通量子(RSFQ)逻辑的超导材料来实现PE 500。
PE 500通过高带宽存储器连接516与共享(主)存储器514紧密相关。尽管存储器514最好是动态随机存取存储器(DRAM),但是存储器514可以使用其它手段实现为例如静态随机存取存储器(SRAM),磁性随机访问存储器(MRAM),光学存储器,全息存储器等等。
PU 504和子处理单元508最好均连接到包含直接存储器访问DMA功能的存储流控制器(MFC),其结合存储器接口511,利于DRAM514和PE 500的子处理单元508和PU 504之间的数据传送。应当注意,DMAC和/或存储器接口511可以相对于子处理单元508和PU 504被集成或分别布置。实际上,DMAC功能和/或存储器接口511功能可以与一或多个(最好全部)子处理单元508和PU 504集成。还应当注意,DRAM 514可以相对于PE 500被集成或分别布置。例如,DRAM 514可以如所示图解隐含的那样被布置在芯片外,或DRAM 514可以以集成方式被布置在芯片内。
PU 504可以是例如能独立处理数据和应用的标准处理器。在操作中,PU 504最好安排和协调子处理单元对数据和应用的处理。子处理单元最好是单指令,多数据(SIMD)处理器。在PU 504的控制下,子处理单元以并行和独立的方式执行这些数据和应用的处理。最好使用PowerPC核心实现PU 504,其中PowerPC核心是使用缩减指令集计算(RISC)技术的微处理器体系结构。RISC使用简单指令的组合执行更多复杂指令。因而,处理器的时序可以基于更简单和更快速的操作,从而允许微处理器以指定时钟速度执行更多指令。
应当注意,PU 504可以通过子处理单元508之一实现,其作为安排和协调子处理单元508对数据和应用的处理的主处理单元。此外,在处理器单元500内可以有不止一个PU被实现。
根据这个模块化结构,特定计算机***使用的PE 500的数量基于该***所需的处理能力。例如,服务器可以使用四个PE 500,工作站可以使用两个PE 500,并且PDA可以使用一个PE 500。分配处理特定软件单元的PE 500的子处理单元的数量取决于单元内程序和数据的复杂度和量。
图13说明子处理单元(SPU)508的优选结构和功能。SPU 508体系结构优选地填补通用处理器(其被设计为在大量应用上实现高平均性能)和专用处理器(其被设计为在单个应用上实现高性能)之间的空白。SPU 508被设计为实现游戏应用,媒体应用,宽带***等等的高性能,并且为实时应用的程序员提供高度控制。SPU 508的某些性能包含图形几何流水线(graphics geometry pipelines),表面子划分,快速富立叶变换,图像处理关键字,流处理,MPEG编码/解码,加密,解密,设备驱动程序扩展,模拟,游戏物理,内容建立及音频合成和处理。
子处理单元508包含两个基本功能单元,即SPU核心510A和存储流控制器(MFC)510B。SPU核心510A执行程序处理,数据操作等等,而MFC 510B执行涉及***的SPU核心510A和DRAM 514之间的数据传送的功能。
SPU核心510A包含本地存储器,指令单元(IU)552,寄存器554,一个或多个浮点执行级段556和一或多个定点执行级段558。本地存储器550最好使用例如SRAM的单端口随机访问存储器实现。鉴于多数处理器通过使用高速缓存减少对存储器的等待时间,SPU核心510A实现相对较小的本地存储器550而不是高速缓存。实际上,为了给实时应用(和其它这里提及的应用程序)的程序员提供一致和可预测的存储器访问等待时间,SPU 508A内的高速缓冲存储器体系结构不是优选的。高速缓冲存储器的高速缓存命中/命中失误特性导致从少数周期到数百周期的易变存储器访问时间。这种易变性削弱了例如实时应用编程中期望的访问定时可预测性。可以通过把DMA传送与数据计算重叠在本地存储器SRAM 550中实现等待时间隐藏。这提供了实时应用编程的高度控制。由于与DMA传送相关的等待时间和指令开销超出服务于高速缓存命中失误的等待时间的开销时,当DMA传送大小足够大并且充分可预测时,SRAM本地存储器方案得到优势(例如,DMA命令可以在需要数据之前发出)。
在一个指定子处理单元508上运行的程序使用本地地址参考相关的本地存储器550,然而,本地存储器550的每个位置还在总的***的存储器映射内被分配一个实地址(RA)。这允许特权软件把本地存储器550映射到进程的有效地址(EA)以利于一个本地存储器550和另一个本地存储器550之间的DMA传送。PU 504也可以使用有效地址直接访问本地存储器550。在一个最优实施例中,本地存储器550包含556千字节的存储,并且寄存器552的容量是128×128位。
SPU核心510A最好使用处理流水线实现,其中逻辑指令以流水线方式处理。尽管流水线可以被分成处理指令的任何数量的级段,但是流水线通常包括获取一或多个指令,解码指令,检查指令间的相关性,发出指令及执行指令。在这点上,IU 552包含指令缓冲器,指令解码电路,相关性检查电路,和指令发出电路。
指令缓冲器最好包含连接到本地存储器550并且在其被获取时临时存储指令的多个寄存器。指令缓冲器最好进行操作,使得全部指令成组,即基本上同时离开寄存器。尽管指令缓冲器可以具有任何大小,但是优选的是它具有不大于大约两个或三个寄存器的大小。
通常,解码电路分解指令并且产生执行相应指令功能的逻辑微操作。例如,逻辑微操作可以指定算术和逻辑操作,本地存储器550的加载和存储操作,寄存器源操作数和/或立即数据操作数。解码电路也可以指示指令使用哪些资源,例如目标寄存器地址,结构资源,功能单元和/或总线。解码电路也可以提供指示需要资源的指令流水线级段的信息。指令解码电路最好基本同时地解码等于指令缓冲器的寄存器的数量的若干指令。
相关性检查电路包含执行测试以确定指定指令的操作数是否取决于流水线中其它指令的操作数的数字逻辑。如果是,则指定指令将不会被执行,直到这些其它操作数被更新(例如,通过允许其它指令完成处理)。优选地,相关性检查电路同时确定解码器电路112分配的多个指令的相关性。
指令发出电路可以向浮点执行级段556和/或定点执行级段558发出指令。
寄存器554最好被实现为相对较大的统一寄存器堆,例如128个条目的寄存器堆。这允许深流水线化高频实现,而无需要寄存器重命名以避免寄存器资源缺乏。重命名硬件通常消耗处理***的大量面积和功率。因此,在通过软件循环展开或其它交错技术覆盖等待时间时,可实现有利操作。
最好,SPU核心510A具有超标量体系结构,使得每个时钟周期发出不止一个指令。SPU核心510A最好超标量化到对应于来自指令缓冲器的同时指令分派数量,例如2和3之间的程度(意味着每个时钟周期发出两个或3个指令)。取决于所需的处理能力,可以使用更大或更小数量的浮点执行级段556和定点执行级段558。在一个最优实施例中,浮点执行级段556以每秒32兆兆浮点操作(32GFLOPS)的速度进行操作,并且定点执行级段558以每秒32兆兆操作(32GOPS)的速度进行操作。
MFC 510B最好包含总线接口单元(BIU)564,存储器管理单元(MMU)562,和直接存储器存取控制器(DMAC)560。除了DMAC 560,与SPU核心510A和总线512相比,MFC 510B最好以半频(半速)运行以满足低功耗设计目标。MFC 510B处理从总线512进入SPU 508的数据和指令,为DMAC提供地址转换,及数据一致性的探听操作。BIU 564提供总线512及MMU 562和DMAC 560之间的接口。因而,SPU508(包含SPU核心510A和MFC 510B)和DMAC 560被物理和/或逻辑地连接到总线512。
MMU 562最好把有效地址(取自DMA命令)转换成用于存储器访问的实地址。例如,MMU 562可以把有效地址的高阶位转换成实地址位。然而,低阶地址位最好不可翻译,并且被认为是逻辑和物理的,用于形成针对存储器的实地址和请求访问。在一或多个实施例中,MMU 562可以基于64位存储器管理模型实现,并且可以提供具有4K,64K,1M和16M字节页面尺寸的264字节有效地址空间和256MB区段尺寸。优选地,MMU 562支持高达265字节的虚拟存储器,和242字节(4兆兆字节)的物理存储器,以用于DMA命令。MMU 562的硬件可以包含8条目完全关联SLB,256条目4向组关联TLB,和用于硬件TLB命中失误处理的TLB的4×4替换管理表(RMT)。
DMAC 560优选地管理来自SPU核心510A和例如PU 504和/或其它SPU的一或多个其它设备的DMA命令。可以有三类DMA命令:放置命令,其把数据从本地存储器550移动到共享存储器514;获取命令,其把数据从共享存储器514移动到本地存储器550;及存储控制命令,其包含SLI命令和同步命令。同步命令可以包含原子命令,发送信号命令,及专用屏蔽命令。响应DMA命令,MMU 562把有效地址转换成实地址并且实地址被传递到BIU 564。
SPU核心510A最好使用通道接口和数据接口与DMAC 560内的接口通信(发送DMA命令,状态等等)。SPU核心510A通过通道接口向DMAC 560中的DMA队列分配DMA命令。一旦DMA命令处于DMA队列中,通过DMAC 560内的发出和完成逻辑来处理它。当DMA命令的全部总线事务处理结束时,完成信号通过通道接口被回送到SPU核心510A。
图14说明PU 504的优选结构和功能。PU 504包含两个基本功能单元,PU核心504A和存储流控制器(MFC)504B。PU核心504A执行程序处理,数据操作,多处理器管理功能等等,MFC 504B执行涉及***100的PU核心504A和存储器空间之间的数据传送的功能。
PU核心504A可以包含L1高速缓存570,指令单元572,寄存器574,一或多个浮点执行级段576和一或多个定点执行级段578。L1高速缓存提供对通过MFC 504B从共享存储器106,处理器102,或存储器空间的其它部分接收的数据的数据高速缓存功能。由于PU核心504A最好被实现为超流水线,指令单元572最好被实现为具有包含获取,解码,相关性检查,发出等等的多个级段的指令流水线。为了实现高处理能力,浮点执行级段576和定点执行级段578包含流水线结构的多个级段。取决于所需的处理能力,可以使用更大或更小数量的浮点执行级段576和定点执行级段578。
MFC 504B包含总线接口单元(BIU),L2高速缓冲存储器,非高速缓存单元(NCU)584,核心接口单元(CIU)586和存储器管理单元(MMU)588。与PU核心504A和总线108相比,大部分MFC 504B以半频(半速)运行以满足低功耗设计目标。
BIU 580提供总线108和L2高速缓存582及NCU 584逻辑块之间的接口。因此,BIU 580可以充当总线108上的主以及从设备以便执行完全相干的存储器操作。作为主设备,它可以代表L2高速缓存582和NCU 584发起载入/存储请求到总线108以得到服务。BIU 580也可以实现限制能够被发送到总线108的命令的总数的命令流控制机构。总线108上的数据操作可以被设计为采取8个节拍,并且因此最好围绕128字节高速缓存线设计BIU 580,并且一致性和同步粒度是128KB。
L2高速缓冲存储器582(和支持硬件逻辑)最好被设计成高速缓存512KB数据。例如,L2高速缓存582可以处理可高速缓存的载入/存储,数据预取,指令获取,指令预取,高速缓存操作和屏蔽操作。L2高速缓存582最好是一个8向组关联***。L2高速缓存582可以包含与六(6)个逐出队列(例如,6个RC机器)匹配的6个重新加载队列和8个(64字节宽)存储队列。L2高速缓存582可以提供L1高速缓存570中的某些或所有数据的备份复制。有利的是,这在处理节点被热切换时用于恢复状态。这个结构还允许L1高速缓存570以较少端口更快速操作,并且允许更快速的高速缓存到高速缓存的传送(由于请求可以在L2高速缓存582终止)。这个结构还提供传递高速缓存一致性管理到L2高速缓冲存储器582的机构。
NCU 584与CIU 586,L2高速缓存存储器582和BIU 580接口,并且通常充当PU核心504A和存储器***之间非可高速缓存操作的队列/缓冲电路。NCU 584最好处理L2高速缓存582不处理的与PU核心504A的全部通信,例如禁止高速缓存的载入/存储,屏蔽操作和高速缓存一致性操作。NCU 584最好以半速运行以满足上述功耗目标。
CIU 586被布置在MFC 504B和PU核心504A的边界上,并且充当针对来自执行级段576,578,指令单元572和MMU单元588并且到L2高速缓存582和NCU 584的请求的路由,仲裁和流控制点。在L2高速缓存582和NCU 584以2∶1速度比操作时,PU核心504A和MMU 588最好以全速运行。因而,频率边界存在于CIU 586,并且当它在两个频域之间传递请求和重新加载数据时,其功能中的一个是正确处理频率交叉。
CIU 586包括三个功能模块:加载单元,存储单元和重新加载单元。另外,数据预取功能由CIU 586执行,并且最好是加载单元的功能部分。CIU 586最好:(i)从PU核心504A和MMU 588接受加载和存储请求;(ii)把请求从全速时钟频率转换到半速(2∶1时钟频率转换);(iii)路由可高速缓存请求到L2高速缓存582,并且路由非可高速缓存请求到NCU 584;(iv)在针对L2高速缓存582和NCU 584的请求之间公平仲裁;(v)对到L2高速缓存582和NCU 584的分派提供流控制,使得在目标窗口接收请求并且避免溢出;(vi)接受加载返回数据并且将其路由到执行级段576,578,指令单元572或MMU 588;(vii)传递探听请求到执行级段576,578,指令单元572,或MMU 588;(viii)把加载返回数据和探听传输从半速转换到全速。
MMU 588最好提供PU核心504A的地址转换,例如通过第二级地址转换设施。通过可比MMU 588小得多和更快速的分立指令和数据ERAT(用于实地址转换)阵列,在PU核心504A中优选提供第一级转换。
在一个最优实施例中,PU 504工作在4-6GHz,10F04,具有64位实现。寄存器最好是64位长(尽管一或多个专用寄存器可更小)并且有效地址是64位长。指令单元572,寄存器574和执行级段576、578最好使用实现(RISC)计算技术的PowerPC技术来实现。
涉及该计算机***的模块化结构的其它详细资料可以在美国专利No.6,526,491中找到,其中这里参考引用了整个公开。
根据本发明的至少一个其它方面,如上所述的方法和设备可以使用例如附图中说明的适当硬件实现。这些硬件可以使用任何已知技术实现,例如标准数字电路,任何可以执行软件和/或固件程序的已知处理器,一或多个可编程数字设备或***,例如可编程只读存储器(PROM),可编程阵列逻辑设备(PAL)等等。此外,尽管附图中说明的设备被表示为被分成某些功能模块,这些块可以通过分立电路实现,和/或合并成一或多个功能单元。此外,本发明的不同方面可以通过可被存储在适当存储介质(例如软盘,存储器芯片等等)的软件和/或固件程序实现,以进行传送和/或发布。
尽管这里已经参照特定实施例描述了本发明,但是应当理解,这些实施例仅仅是本发明的原理和应用程序的图解。因此,应当理解,可以在不偏离如所附权利要求限定的本发明的宗旨和范围的前提下,对图解的实施例进行许多修改。
Claims (20)
1. 一种使能/禁止控制SIMD处理器切片的设备,包括具有组织成切片和级段的矩阵的多个数据路径处理电路的SIMD处理流水线,其中至少一些处理电路用以在指定周期内响应一或多个使能标志至少部分地禁止操作,
所述设备还包括:存储电路,用以存储各组使能标志,每个组对于相应一个级段中的每个处理电路具有相应使能标志,
其中各组使能标志被进行以下处理中的至少之一:
包含在每个SIMD指令内并且被提取和传送到存储电路;
包含在相应SIMD控制指令内,每个控制指令与相应一个SIMD指令相关,并且使能标志由SIMD控制指令产生并且被传送到存储电路;
通过选择预定位组,响应于SIMD指令内不存在使能标志和不存在SIMD控制指令中的至少一种情况而被产生;及
响应于从SIMD控制指令和SIMD指令的至少一个解码出的信息而被产生,并且用于选择使能标志的预定组。
2. 如权利要求1所述的设备,其中处理电路用以响应使能标志中的相应标志而独立地禁止操作。
3. 如权利要求1所述的设备,还包括:通过中断相应处理电路的时钟信号来响应使能标志的状态的时钟中断电路。
4. 如权利要求1所述的设备,还包括:一或多个控制电路,可操作用以执行以下中的至少之一:(i)根据使能标志禁止来自相应处理电路的相应数据结果被写入到一或多个目的寄存器;和(ii)使能来自处理电路的结果到流水线的一或多个源操作数的传递。
5. 如权利要求4所述的设备,其中所述设备执行以下中的至少之一:
一或多个控制电路用以禁止来自处理电路的结果中的未使用切片字被写入到目的寄存器;
一或多个控制电路用以使能来自处理电路的结果中的使用切片字到一或多个源操作数的传递;及
一或多个控制电路用以逐个周期地执行禁止和/或使能功能。
6. 如权利要求4所述的设备,还包括:
相关性检查电路,用以确定仍进入流水线的切片的指令的任何操作数是否依赖处理电路的任何数据结果,
其中一或多个控制电路用以基于相关性检查电路的确定结果和使能标志禁止或使能相应处理电路的传递功能。
7. 如权利要求1所述的设备,其中存储电路用以每个周期传送来自一个级段、用于下一个级段的处理电路的使能标志组。
8. 如权利要求1所述的设备,其中每组使能标志与相应SIMD指令相关。
9. 如权利要求1所述的设备,其中在以下时机的至少一个处理SIMD控制指令:在SIMD指令之前,期间和之后。
10. 如权利要求1所述的设备,还包括存储电路,用以存储使能标志的多个预定组,从SIMD控制指令和SIMD指令的至少一个解码出的信息被用于选择使能标志的一个预定组。
11. 一种使能/禁止控制SIMD处理器切片的方法,包括:在指定周期内响应一或多个使能标志而禁止其中处理电路被组织成切片和级段的矩阵的SIMD处理流水线的至少一些数据路径处理电路,
所述方法还包括:存储各组使能标志,每个组对于相应一个级段中的每个处理电路具有相应使能标志;每个周期传送来自一个级段、用于下一个级段的处理电路的使能标志组;以及以下中的至少之一:
在相应SIMD指令内提供各组使能标志,并且提取使能标志以供存储;
在相应SIMD控制指令内提供各组使能标志,使每个控制指令与相应一个SIMD指令相关,并且从SIMD控制指令产生使能标志以供存储;
当指定SIMD指令不包含使能标志和不存在SIMD控制指令中的至少一个情况时,解码相应SIMD指令并且选择预定位组以产生各组使能标志;及
从SIMD控制指令和SIMD指令的至少一个解码出信息,并且使用该信息选择使能标志的预定组。
12. 如权利要求11所述的方法,其中禁止步骤包含响应使能标志中的相应标志而独立地禁止处理电路。
13. 如权利要求11所述的方法,其中禁止步骤包含响应使能标志的状态而中断相应处理电路的时钟信号。
14. 如权利要求11所述的方法,其中所述方法包括以下中的至少之一:
禁止步骤包括根据使能标志防止来自相应处理电路的相应数据结果被写入到一或多个目的寄存器;并且
该方法还包括使能来自处理电路的结果到流水线的一或多个源操作数的传递。
15. 如权利要求11所述的方法,其中所述方法包括以下中的至少之一:
禁止步骤包含禁止来自处理电路的结果中的未使用切片字被写入到目的寄存器;
传递步骤包含使能来自处理电路的结果中的使用切片字到一或多个源操作数的传递;及
逐个周期地执行禁止和/或使能的步骤。
16. 如权利要求11所述的方法,其中禁止和/或使能的步骤基于相关性检查电路的确定和使能标志,相关性检查电路用以确定仍进入流水线的切片的指令的任何操作数是否依赖处理电路的任何数据结果。
17. 如权利要求11所述的方法,其中每组使能标志与相应SIMD指令相关。
18. 一种使能/禁止控制SIMD处理器切片的设备,包括:
具有被组织成切片和级段的矩阵的多个数据路径处理电路的SIMD处理流水线;和
传递电路,用以在指定周期内响应一或多个使能标志而使能或禁止结果从处理电路到流水线的一或多个源操作数的传递,
其中每组使能标志与相应SIMD指令相关,
各组使能标志被进行以下处理中的至少之一:
包含在每个SIMD指令内并且被提取和传送到存储电路;
包含在相应SIMD控制指令内,每个控制指令与相应一个SIMD指令相关,并且使能标志由SIMD控制指令产生并且传送到存储电路;
通过选择预定位组,响应于SIMD指令内不存在使能标志和不存在SIMD控制指令中的至少一种情况而被产生;及
响应于从SIMD控制指令和SIMD指令的至少一个解码出的信息而被产生,并且用于选择使能标志的预定组。
19. 如权利要求18所述的设备,其中所述设备执行以下中的至少之一:
传递电路用以使能来自处理电路的结果中的使用切片字到一或多个源操作数的传递;
传递电路用以禁止来自处理电路的结果中的未使用切片字到一或多个源操作数的传递;
传递电路用以基于逐个切片地执行禁止和/或使能功能;
传递电路用以基于逐个周期地执行禁止和/或使能功能。
20. 如权利要求18所述的设备,还包括:
相关性检查电路,用以确定仍进入流水线的切片的指令的任何操作数是否依赖处理电路的任何数据结果,
其中传递电路用以基于相关性检查电路的确定结果和使能标志禁止或使能相应处理电路的传递功能。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/034,693 | 2005-01-13 | ||
US11/034,693 US7644255B2 (en) | 2005-01-13 | 2005-01-13 | Method and apparatus for enable/disable control of SIMD processor slices |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1811745A CN1811745A (zh) | 2006-08-02 |
CN100409222C true CN100409222C (zh) | 2008-08-06 |
Family
ID=36654625
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100051333A Active CN100409222C (zh) | 2005-01-13 | 2006-01-12 | 使能/禁止控制simd处理器切片的方法和设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7644255B2 (zh) |
JP (1) | JP4451397B2 (zh) |
CN (1) | CN100409222C (zh) |
Families Citing this family (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7383421B2 (en) | 2002-12-05 | 2008-06-03 | Brightscale, Inc. | Cellular engine for a data processing system |
US8736620B2 (en) | 2004-05-14 | 2014-05-27 | Nvidia Corporation | Kill bit graphics processing system and method |
US8860722B2 (en) | 2004-05-14 | 2014-10-14 | Nvidia Corporation | Early Z scoreboard tracking system and method |
US8687010B1 (en) | 2004-05-14 | 2014-04-01 | Nvidia Corporation | Arbitrary size texture palettes for use in graphics systems |
US8736628B1 (en) | 2004-05-14 | 2014-05-27 | Nvidia Corporation | Single thread graphics processing system and method |
US8743142B1 (en) | 2004-05-14 | 2014-06-03 | Nvidia Corporation | Unified data fetch graphics processing system and method |
US7461295B1 (en) * | 2005-07-29 | 2008-12-02 | Netlogic Microsystems, Inc. | Timing failure analysis in a semiconductor device having a pipelined architecture |
CN101371264A (zh) * | 2006-01-10 | 2009-02-18 | 光明测量公司 | 用于在并行处理***中处理多媒体数据的子块的方法和装置 |
US20080059763A1 (en) * | 2006-09-01 | 2008-03-06 | Lazar Bivolarski | System and method for fine-grain instruction parallelism for increased efficiency of processing compressed multimedia data |
US20080244238A1 (en) * | 2006-09-01 | 2008-10-02 | Bogdan Mitu | Stream processing accelerator |
WO2008027567A2 (en) * | 2006-09-01 | 2008-03-06 | Brightscale, Inc. | Integral parallel machine |
US8537168B1 (en) | 2006-11-02 | 2013-09-17 | Nvidia Corporation | Method and system for deferred coverage mask generation in a raster stage |
US9183607B1 (en) | 2007-08-15 | 2015-11-10 | Nvidia Corporation | Scoreboard cache coherence in a graphics pipeline |
US8736624B1 (en) | 2007-08-15 | 2014-05-27 | Nvidia Corporation | Conditional execution flag in graphics applications |
US8521800B1 (en) | 2007-08-15 | 2013-08-27 | Nvidia Corporation | Interconnected arithmetic logic units |
US8599208B2 (en) * | 2007-08-15 | 2013-12-03 | Nvidia Corporation | Shared readable and writeable global values in a graphics processor unit pipeline |
US8314803B2 (en) | 2007-08-15 | 2012-11-20 | Nvidia Corporation | Buffering deserialized pixel data in a graphics processor unit pipeline |
US8775777B2 (en) * | 2007-08-15 | 2014-07-08 | Nvidia Corporation | Techniques for sourcing immediate values from a VLIW |
US20090046105A1 (en) * | 2007-08-15 | 2009-02-19 | Bergland Tyson J | Conditional execute bit in a graphics processor unit pipeline |
JP5489402B2 (ja) * | 2007-11-02 | 2014-05-14 | 三菱電機株式会社 | 信号処理プロセッサ |
JP5193624B2 (ja) | 2008-02-19 | 2013-05-08 | ルネサスエレクトロニクス株式会社 | データプロセッサ |
US8755515B1 (en) | 2008-09-29 | 2014-06-17 | Wai Wu | Parallel signal processing system and method |
JP4996654B2 (ja) * | 2009-08-18 | 2012-08-08 | 株式会社東芝 | プロセッサ |
KR101723127B1 (ko) * | 2010-07-13 | 2017-04-04 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 그래픽 프로세서 내의 simd 유닛들의 동적 인에이블링 및 디스에이블링 |
US9411595B2 (en) | 2012-05-31 | 2016-08-09 | Nvidia Corporation | Multi-threaded transactional memory coherence |
US9098265B2 (en) * | 2012-07-11 | 2015-08-04 | Arm Limited | Controlling an order for processing data elements during vector processing |
US9690350B2 (en) * | 2012-09-06 | 2017-06-27 | Advances Micro Devices, Inc. | Method and apparatus for power reduction during lane divergence |
CN104813277B (zh) * | 2012-12-19 | 2019-06-28 | 英特尔公司 | 用于处理器的功率效率的向量掩码驱动时钟门控 |
US9824009B2 (en) | 2012-12-21 | 2017-11-21 | Nvidia Corporation | Information coherency maintenance systems and methods |
US10102142B2 (en) | 2012-12-26 | 2018-10-16 | Nvidia Corporation | Virtual address based memory reordering |
US9317251B2 (en) | 2012-12-31 | 2016-04-19 | Nvidia Corporation | Efficient correction of normalizer shift amount errors in fused multiply add operations |
US10175981B2 (en) * | 2013-07-09 | 2019-01-08 | Texas Instruments Incorporated | Method to control the number of active vector lanes for power efficiency |
US10732689B2 (en) * | 2013-07-09 | 2020-08-04 | Texas Instruments Incorporated | Controlling the number of powered vector lanes via a register field |
US9569385B2 (en) | 2013-09-09 | 2017-02-14 | Nvidia Corporation | Memory transaction ordering |
US11675591B2 (en) * | 2018-10-31 | 2023-06-13 | Advanced Micro Devices, Inc. | Selectively enabled result lookaside buffer based on a hit rate |
US11074213B2 (en) * | 2019-06-29 | 2021-07-27 | Intel Corporation | Apparatuses, methods, and systems for vector processor architecture having an array of identical circuit blocks |
US11223575B2 (en) | 2019-12-23 | 2022-01-11 | Advanced Micro Devices, Inc. | Re-purposing byte enables as clock enables for power savings |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5542074A (en) * | 1992-10-22 | 1996-07-30 | Maspar Computer Corporation | Parallel processor system with highly flexible local control capability, including selective inversion of instruction signal and control of bit shift amount |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5045995A (en) * | 1985-06-24 | 1991-09-03 | Vicom Systems, Inc. | Selective operation of processing elements in a single instruction multiple data stream (SIMD) computer system |
US4907148A (en) * | 1985-11-13 | 1990-03-06 | Alcatel U.S.A. Corp. | Cellular array processor with individual cell-level data-dependent cell control and multiport input memory |
JPH06103494B2 (ja) * | 1986-11-18 | 1994-12-14 | 株式会社日立製作所 | ベクトル処理装置の制御方式 |
US4933895A (en) * | 1987-07-10 | 1990-06-12 | Hughes Aircraft Company | Cellular array having data dependent processing capabilities |
US5471593A (en) * | 1989-12-11 | 1995-11-28 | Branigin; Michael H. | Computer processor with an efficient means of executing many instructions simultaneously |
CA2073516A1 (en) * | 1991-11-27 | 1993-05-28 | Peter Michael Kogge | Dynamic multi-mode parallel processor array architecture computer system |
GB2273377A (en) * | 1992-12-11 | 1994-06-15 | Hughes Aircraft Co | Multiple masks for array processors |
US5727229A (en) * | 1996-02-05 | 1998-03-10 | Motorola, Inc. | Method and apparatus for moving data in a parallel processor |
US5867724A (en) * | 1997-05-30 | 1999-02-02 | National Semiconductor Corporation | Integrated routing and shifting circuit and method of operation |
US6304955B1 (en) * | 1998-12-30 | 2001-10-16 | Intel Corporation | Method and apparatus for performing latency based hazard detection |
JP5285828B2 (ja) * | 1999-04-09 | 2013-09-11 | ラムバス・インコーポレーテッド | 並列データ処理装置 |
US7233998B2 (en) * | 2001-03-22 | 2007-06-19 | Sony Computer Entertainment Inc. | Computer architecture and software cells for broadband networks |
US6526491B2 (en) * | 2001-03-22 | 2003-02-25 | Sony Corporation Entertainment Inc. | Memory protection system and method for computer architecture for broadband networks |
US6809734B2 (en) * | 2001-03-22 | 2004-10-26 | Sony Computer Entertainment Inc. | Resource dedication system and method for a computer architecture for broadband networks |
US7093104B2 (en) * | 2001-03-22 | 2006-08-15 | Sony Computer Entertainment Inc. | Processing modules for computer architecture for broadband networks |
US6839828B2 (en) * | 2001-08-14 | 2005-01-04 | International Business Machines Corporation | SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode |
-
2005
- 2005-01-13 US US11/034,693 patent/US7644255B2/en active Active
-
2006
- 2006-01-12 CN CNB2006100051333A patent/CN100409222C/zh active Active
- 2006-01-13 JP JP2006006043A patent/JP4451397B2/ja active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5542074A (en) * | 1992-10-22 | 1996-07-30 | Maspar Computer Corporation | Parallel processor system with highly flexible local control capability, including selective inversion of instruction signal and control of bit shift amount |
Also Published As
Publication number | Publication date |
---|---|
JP2006196004A (ja) | 2006-07-27 |
JP4451397B2 (ja) | 2010-04-14 |
US20060155964A1 (en) | 2006-07-13 |
US7644255B2 (en) | 2010-01-05 |
CN1811745A (zh) | 2006-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100409222C (zh) | 使能/禁止控制simd处理器切片的方法和设备 | |
EP1861790B1 (en) | Methods and apparatus for virtualizing an address space | |
US7613886B2 (en) | Methods and apparatus for synchronizing data access to a local memory in a multi-processor system | |
EP1834245B1 (en) | Methods and apparatus for list transfers using dma transfers in a multi-processor system | |
US10817012B2 (en) | System, apparatus and method for providing a local clock signal for a memory array | |
EP1839165B1 (en) | Methods and apparatus for hybrid dma queue and dma table | |
US7526608B2 (en) | Methods and apparatus for providing a software implemented cache memory | |
US7882310B2 (en) | Methods and apparatus for managing a shared memory in a multi-processor system | |
US7689784B2 (en) | Methods and apparatus for dynamic linking program overlay | |
US7818724B2 (en) | Methods and apparatus for instruction set emulation | |
US20060259733A1 (en) | Methods and apparatus for resource management in a logically partitioned processing environment | |
EP1846829B1 (en) | Method and apparatus for address translation from an external device to a memory of a processor | |
US20190362772A1 (en) | System, Apparatus And Method For Segmenting A Memory Array | |
TW201423600A (zh) | 用於在多緒處理單元中改善性能之技術 | |
US20230114164A1 (en) | Atomic handling for disaggregated 3d structured socs | |
JP2006172468A (ja) | システム内部のデータ転送を処理する装置および方法 | |
JP4583327B2 (ja) | 分散型のマルチプロセッサシステム内において一貫性管理を行う方法、システムおよび装置 | |
US20060179275A1 (en) | Methods and apparatus for processing instructions in a multi-processor system | |
US20060206732A1 (en) | Methods and apparatus for improving processing performance using instruction dependency check depth |
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 |