用于改进状态依赖计算的性能的系统、方法及装置与流程

文档序号:12362715阅读:208来源:国知局
用于改进状态依赖计算的性能的系统、方法及装置与流程

本文描述的各种实施例涉及处理器架构。



背景技术:

在大多数架构中,仅有一个架构寄存器,例如RFLAG,来指示计算的状态标记。这将限置编译器或二进制转换器为了更好的性能和/或能效而重排序指令的能力。

附图说明

本发明通过示例说明,且不限于附图的图形,其中相同的标号指示相似的元件,且其中:

图1示出了硬件处理器(或处理器核)内寄存器的实施例。

图2示出了用于状态消耗(consuming)指令的指令格式的示范性实施例。

图3示出了在处理器中执行状态消耗指令的方法的实施例。

图4示出了用于状态写入指令的指令格式的示范性实施例。

图5示出了在处理器中执行状态写入指令的方法的实施例。

图6A为示出根据本发明实施例的示范性有序管线和示范性寄存器重命名、无序发布/执行管线的框图。

图6B为示出根据本发明实施例,要包含在处理器内的有序架构核和示范性寄存器重命名、无序发布/执行架构核的示范性实施例的框图。

图7A-B示出了更具体的示范性有序核架构的框图,该核会为芯片内的数个逻辑块之一(包括同一类型和/或不同类型的其它核)。

图8为根据本发明的实施例,可以具有多于一个的核,可以具有集成存储控制器,并可以具有集成图形的处理器800的框图。图9-12为示范性计算机架构的框图。

图13为根据本发明的实施例,对比使用软件指令变换器将源指令集中的二进制指令变换为目标指令集中的二进制指令的框图。

具体实施方式

在下面的描述中,阐述了许多具体细节。然而,要理解,无需这些具体细节也可以实施本发明的实施例。说明书中引用“一个实施例”、“实施例”、“示范性实施例”等指示描述的实施例可以包括特定的特征、结构或特性,但每个实施例可不必包括所述特定的特征、结构或特性。而且,此类短语不必指的是同一实施例。进一步地,当结合实施例描述特定的特征、结构或特性时,认为结合无论是否明确描述的其它实施例来影响此类特征、结构或特性在本领域技术人员的认知之内。

一种仅具有单个标记(条件码寄存器)的解决方案是提供每个(潜在地)标记产生计算的两个变量。例如,指令ROR右旋且更新进位标记,而RORX右旋,不影响任意标记。这允许某种基于编译器的重排序,尤其是围绕指令的标记结果因从未消耗而能压缩的所述指令。

另一解决方案是提供多个架构标记寄存器。例如,人们能够想象RFLAGS0、RFLAGS1、RFLAGS2和RFLAGS3。产生方及消耗方指令两者然后能够(用2个位)指定它们希望引用哪个标记寄存器。这需要给每个产生者-几乎每个算术指令一和每个使用者(例如,条件转移、条件移动)增加2个位。此外,在无序处理器中,必须重新命名这4个标记寄存器。

图1示出了硬件处理器(或处理器核)内的寄存器的实施例。在此实施例中,有存储关于所述处理器的状态的状态信息的状态寄存器101。此寄存器可以具有许多不同的名称,包括但不限于FLAGS寄存器(例如FLAGFS、EFLAGS或RFLAGS)、程序状态字(PSW)、条件码(CC)寄存器等。状态寄存器中存储的状态位(或标记)的示例包括但不限于进位(C)、奇偶(P)、调整(A)、零(Z)、符号(S)和溢出(O)的指示。通过所述状态寄存器,指令可以基于通过评估一个或多个所述状态位的之前指令的结果采取行动。指令的执行基于该指令自身的结果,设置状态寄存器701的状态位。例如,在某些旋转指令中仅设置状态寄存器的某些位(标记),例如C标记,而A、Z、S和P会不受影响。

还有多个物理数据寄存器1103至N 109。在某些实施例中,物理数据寄存器103、108的数量多于架构上对程序员可见的。在这些实施例中,指令执行管线的重命名部分期间,所述物理寄存器分配给架构寄存器。

数据寄存器的数据部分107和113的大小取决于实现而变化。例如,所述数据部分可以是8位、16位、32位、64位、128位、256位、512位、1024位等。所述数据部分还可以用于存储整数、浮点或压缩(或整数或浮点)数据值。

实现例如无序处理器的处理器中的状态的方式是扩展各物理数据寄存器103和109,以包含计算(C、O、S、P、A和Z)的状态标记结果。例如,对于64位数据寄存器,此扩展将产生物理70位寄存器。较大的寄存器示为附加于数据部分107和113的FLAGS 105和111,使得它们与所述计算的结果物理上共同定位。所述处理器内的重命名硬件以与架构寄存器给物理寄存器重命名相同的方式给物理寄存器重命名。因而,数据寄存器指的是其物理寄存器的前64位,并且状态指的是所述物理寄存器的标记部分。尽管以小字节序格式(其中数据在最低有效位中,并且一个或多个状态位存储在一个或多个最高有效位中)显示这些寄存器,但在其它实施例中,以相反方式存储数据及状态位的存储。

考虑下面传统示例。当用指令“sub rax,$7”从RAX减去7时,将产生的用于架构寄存器RAX的值连同标记结果一起写入到物理寄存器(例如,P39)。因而,RAX寄存器和状态寄存器两者现在指向物理寄存器P39。接下来,比方说,指令“add rbx,$3”将其结果写入物理寄存器P40中。现在,RBX寄存器和状态寄存器两者指向物理寄存器P40。RAX寄存器仍然指向物理寄存器P39。不幸的是,尽管P39中的硬件中仍然存在所述减法指令的标记结果,但对于软件目前没有办法访问它。

下面详细描述了新状态消耗指令(例如条件转移)及其执行的实施例,其通过使指令引用保持有与期望的状态结果同时产生的结果的架构寄存器,规定哪个物理寄存器应该充当它们消耗的一个或多个状态位的源。只要所述特定的架构寄存器还未被随后的指令重写,这就能进行,而不管任意随后的指令是否已经重写所述状态寄存器。例如,即使在状态寄存器被重写时,用物理寄存器存储的一个或多个状态位用于进行条件判定。当然,现有的指令可以继续使用状态寄存器,无需任意修改。

在某些实施例中,状态消耗指令在其编码中有寄存器字段来指示哪个架构寄存器保持有所述条件指示的计算的结果(状态信息)。例如,新指令“jne rcx.f,L2”评估对由产生RCX中的整数值(“f”指示存储标记)的相同指令所产生的标记的“不相等”测试。作为说明性汇编语言惯例,物理寄存器中的整数结果架构上被RCX引用为“RCX”并且同一物理寄存器中的标记结果引用为“RCX.F”。注意,以相对低的硬件成本,软件现在使用与存在的架构整数寄存器一样多的标记结果寄存器。当然,在某些实施例中,此标记结果特征限于可用架构寄存器的子集。)

注意,还能够提供除转移和/或跳转之外的条件指令。例如,能够指定条件移动和条件存储操作来消耗来自RCX.F(除了状态寄存器之外)的标记。

图2示出了用于状态消耗指令的指令格式的示范性实施例。第一类状态写入指令201包括操作码203,指示所述指令的执行要评估源操作数207的至少一个状态位以确定是否要执行操作。例如,应基于设置的一个或多个状态位,执行从源207至目的地205的条件移动。第二类状态写入指令211包括用于状态消耗指令的操作码213,以指示要执行的操作。源操作数217包括它存储状态信息的指示。例如,源f可以用来指示所述源包括要消耗的状态数据。目的地215为所述操作的目的地。

第三类状态写入指令221包括操作码223,指示所述指令的执行要评估明确标记位置(源操作数)223的至少一个状态位以确定是否要执行操作。例如,应基于设置的一个或多个状态位,执行至偏移225的条件跳转。

第四类状态写入指令231包括操作码233,指示所述指令的执行要评估至少一个状态位以确定是否要执行操作。明确标记位置(源操作数)233指示其除数据外还存储状态信息。例如,源f可以用来指示所述源包括要消耗的状态数据。例如,应基于设置的一个或多个状态位,执行至偏移235的条件跳转。

图3示出了在处理器中执行状态消耗指令的方法的实施例。后面的图中详细描述了示范性管线和处理器(或核)。另外,上面已详细描述了用于状态消耗指令的示范性指令格式。

在301,状态消耗指令由取出硬件取出。通常,指令在取出之前存储在指令高速缓存中。

在303,取出的指令由解码硬件解码。所述指令的解码确定要执行哪个指令、取出哪些操作数。在某些实施例中,所述指令解码成微操作。

在某些实施例中,在305,由重命名/分配硬件对所述指令的一个或多个操作数执行寄存器重命名。例如,将源操作数从架构寄存器映射到物理寄存器。

在307,从物理寄存器文件或存储器检索源操作数值。

在309,由功能单元(执行硬件)对检索到的一个或多个源操作数执行所述解码的状态消耗指令。例如,执行非零跳转(JNZ)。执行所述解码的状态消耗指令使得通过查看来自检索到的源的状态信息来确定是否满足状态条件。在JNZ实例中,当在所述源操作数的状态部分中未设置零状态(例如,零标记)时,执行跳转。

尽管上面的图已经关于硬件而描述,但所述方法的一个或多个方面可以以软件执行,例如作为仿真的一部分。例如,解码器可以以软件或固件、而不是硬件实现。

下面详细描述了新状态写入指令及其执行的实施例,其通过使它们引用保持有与状态结果同时产生的结果的架构寄存器,规定哪个物理寄存器应该充当状态信息的目的地。

图4示出了用于状态写入指令的指令格式的示范性实施例。第一类状态写入指令401包括操作码403,指示所述指令的执行要使得所述至少一个状态位连同所述结果一起存储到与目的地操作数405关联的单个目的地物理存储位置。第一类状态写入指令401通常还包括至少一个源操作数407。此类指令的示例为SUB.F DST,SRC,其中SUB.F的操作码指示此类指令不同于正常的减法指令,并且要将状态信息存储在目的地(DST)中。

第二类状态写入指令411包括用于所述指令的操作码413以及指示所述指令的结果及其状态信息要存储在单个目的地物理位置中的目的地操作数415。第二类状态写入指令411通常还包括至少一个源操作数417。此类指令的实例为SUB DST.F,SRC,其中DST.F的目的地指示此类指令不同于正常的减法,并且要将状态信息存储在目的地(DST)中。

第三类状态写入指令421包括用于所述指令的操作码423和目的地操作数425。此类状态写入指令未指示所述状态信息要不连同所述结果一起存储在单个目的地物理位置中。第三类状态写入指令411通常还包括至少一个源操作数417。此类指令的示例为SUB DST,SRC。非状态写入指令变量会具有不同的操作码,例如SUBX,以界定所述指令的执行要不提供可访问的状态位。因而,本文详细描述的实施例不与包含指令的标记产生及标记压缩的变化的指令集架构冲突。例如,写入状态寄存器的指令SUB和不写入的指令SUBX。在本文详述的实施例中,两个指令变量均将整数结果和标记结果写入到所述目的地物理寄存器。然而,仅有SUB变量重命名所述状态寄存器以指向所述指令的目的地位置。在上面的示例中,SUB能够由SUBX代替以及消耗指令(例如JNE)仍能消耗RCX.F。SUB和SUBX均会比如说将物理寄存器P39分配作为目的地。两者会将所述减法的整数结果写到P39,并且两者会将所述减法的标记结果写入到P39。两者会将架构寄存器RCX重命名到P39。但仅有SUB会将状态寄存器重命名到P39。直至RCX随后被另一指令重命名,新条件转移才能消耗RCX.F。

图5示出了在处理器中执行状态写入指令的方法的实施例。后面的图中详细描述了示范性管线和处理器(或核)。另外,上面已详细描述了用于状态写入指令的示范性指令格式。

在501,状态写入指令由取出硬件取出。通常,指令取出之前存储在指令高速缓存中。

在503,取出的指令由解码硬件解码。所述指令的解码确定要执行哪个指令以及取出哪些操作数。在某些实施例中,所述指令解码成微操作。

在某些实施例中,在505,由重命名/分配硬件对所述指令的一个或多个操作数执行寄存器重命名。例如,将目的地操作数从架构寄存器映射到物理寄存器。

在507,从物理寄存器文件或存储器检索源操作数值。

在509,由功能单元(执行硬件)对检索到的一个或多个操作数执行解码的状态写入指令。例如,执行减法。执行所述解码的状态写入指令使得要计算结果和要生成状态信息(例如如上面详述的C、O、S、P、A和Z)。

在511,写回硬件(例如引退硬件)将执行的解码的状态写入指令的结果和所述状态信息存储到单个目的地寄存器。在使用重命名的处理器(核)中,将所述寄存器从架构版映射到物理版。另外,将所述状态信息(例如标记寄存器)映射到具有状态及数据两者的物理寄存器。

尽管上面的图已经关于硬件而描述,但所述方法的一个或多个方面可以以软件执行,例如作为仿真的一部分。例如,所述解码器可以以软件或固件而非硬件而实现。

本文所详细描述的内容通过允许软件访问之前隐藏的硬件物理状态来增加程序的架构状态。这具有对上下文切换的暗示,并能以通常的方式处理。例如,可由操作系统使用例如XSAVE来保存和恢复附加状态。备选地,仅能在事务区域(例如,XBEGIN和XEND之间的区域)内利用此能力,使得以原子方式产生和消耗附加的架构状态。或者,新架构状态能够由运行时间软件管理,例如限于经由动态二进制转换所产生的代码,其中由运行时间管理软件或固件层拦截陷阱及中断。

上面的指令提供了许多益处。通常,状态寄存器中仅有用于所述标记(进位、溢出、符号、零等)的单个架构值。因此,编译器或二进制转换器通常不可能将标记计算置于循环之上或之外。考虑下面的示例:

for(int rsi=0;rsi<1000;++rsi){if(rax=rbx){

x[rsi]=calculation1;

}else{

x[rsi]=calculation2;

}

}

伪汇编中,这变为:

xor rsi,rsi//set rsi=0;

L1:cmp rax,rbx;

jne L2;

x[rsi]=calculation1;

jmp L3;

L2:x[rsi]=calculation2;

L3:add rsi,$1;

Cmp rsi,$1000;

Jl L1;

尤其是,注意到,RAX和RBX的比较发生在循环内部,并且因此即使它总是产生相同的值,其也要执行1000次。它的状态(标记)结果由以后且必需的循环索引比较重写。两个比较指令产生由随后使用者(条件转移)所需的标记。

现在,使用目的地状态写入及消耗指令,可以将上面的实例编译(或二进制转换)为:

xor rsi,rsi//set rsi=0;

sub rcx=rax,rbx;

L1:jne rcx.f,L2;

x[rsi]=calculation1;

jmp L3;

L2:x[rsi]=calculation2;

L3:add rsi,$1;

cmp rsi,$1000;

Jl L1;

RAX和RBX的比较已移至所述循环的上面。RCX.F中的值(具有状态信息的目的地寄存器)被计算一次,并被使用1000次。编译器还未(并且可以不)将整数寄存器RCx用作在所述循环内执行的任意指令的目的地,因为这样做会重写RCX..F以及RCX。

附带地,上面的代码还不是最优的。将所述比较移至所述循环的上面允许进一步优化,例如避免最后一个条件转移(JL)跳转到上面的另一个条件转移(JNE)。因此:

xor rsi,rsi//set rsi=0;

sub rcx=rax,rbx;

jne rcx.f,L2;

L1:x[rsi]=calculation1;

jmp L3;

L2:x[rsi]=calculation2;

L3:add rsi,$1;

cmp rsi,$1000;

jge L4;//通常不采用

jne rcx.f,L2;

jmp L1;

L4;

上面产生RCX.F的指令碰巧被写入作为三操作数(非破坏性源)指令,使得所述源(RAX和RBX)不被重写。这与本发明的实施例正交。如果非破坏性源指令在给定的指令集架构(ISA)中不可用,则上面的单个减法能够用“mov rcx,rax;sub rcx,rbx;”代替。

上面的加、减及比较全都更新状态寄存器。上面的条件跳转、JGE也指由状态寄存器中的状态标记确定的条件。

本文详述的实施例可以在许多不同架构(包括下面详述的那些)上执行。

示范性核架构、处理器及计算机架构

处理器核可以以不同方式、出于不同目的、以及在不同处理器中实现。例如,此类核的实现可包括:1)旨在用于通用计算的通用有序核;2)旨在用于通用计算的高性能通用无序核;3)主要旨在用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可以包括:1)包含旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用无序核的CPU;以及2)包含旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核的协处理器。此类不同的处理器导致不同的计算机系统架构,其可以包括:1)在与CPU分离的芯片上的协处理器;2)在同一封装中的分离的管芯上,作为CPU的协处理器;3)同一管芯上,作为CPU的协处理器(在此情况下,此类协处理器有时称作专用逻辑,例如集成图形和/或科学(吞吐量)逻辑或称作专用核);以及4)可以在同一管芯上包含所描述的CPU(有时称作一个或多个应用核或一个或多个应用处理器)、上面描述的协处理器及附加功能性的片上系统。接下来描述示范性核架构,紧接着描述示范性处理器及计算机架构。

示范性核架构

有序及无序核框图

图6A为示出根据本发明实施例的示范性有序管线和示范性寄存器重命名、无序发布/执行管线两者的框图。图6B为示出根据本发明实施例的要包含在处理器中的有序架构核的示范性实施例和示范性寄存器重命名、无序发布/执行架构核的框图。图6A-B中的实线框示出了有序管线和有序核,而虚线框的可选增加示出了寄存器重命名、无序发布/执行管线及核。考虑到所述有序方面为无序方面的子集,将描述所述无序方面。

在图6A中,处理器管线600包括取出级602、长度解码级604、解码级606、分配级608、重命名级610、调度(也称作分派或发布)级612、寄存器读/存储器读级614、执行级616、写回/存储器写级618、异常处理级622和提交级624。

图6B显示了处理器核690,包括耦合到执行引擎单元650的前端单元630,并且两者都耦合到存储器单元670。核690可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、非常长指令字(VLIW)核或混合或备选核类型。作为又一选项,核690可以是专用核,例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等等。

前端单元630包括耦合到指令高速缓存单元634的分支(branch)预测单元632,其耦合到指令转换后备缓冲器(TLB)636,其耦合到指令取出单元638,其耦合到解码单元640。解码单元640(或解码器)可以解码指令,并生成作为输出的一个或多个微操作、微代码入口点、微指令、其它指令或其它控制信号,其从初始指令解码,或其以别的方式反映初始指令、或由初始指令导出。解码单元640可以使用各种不同的机制实现。适当机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核690包括微代码ROM或存储用于某些宏指令的微代码的其它介质(例如,在解码单元640中或以其它方式在前端单元630内)。解码单元640耦合到执行引擎单元650中的重命名/分配单元652。执行引擎单元650包括耦合到引退单元654和一个或多个调度器单元(一个或多个)656的集合的重命名/分配器单元652。一个或多个调度器单元656代表任意数量的不同调度器,包括保留站、中央指令窗等。一个或多个调度器单元656耦合到一个或多个物理寄存器文件单元658。一个或多个物理寄存器文件单元658的每个代表一个或多个物理寄存器文件,所述物理寄存器文件的不同的文件存储一个或多个不同的数据类型,例如标量整数、标量浮点、压缩整数、压缩浮点、矢量整数、矢量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,一个或多个物理寄存器文件单元658包括矢量寄存器单元、写屏蔽寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构矢量寄存器、矢量屏蔽寄存器和通用寄存器。一个或多个物理寄存器文件单元(一个或多个)658被引退单元654覆盖,以示出可以实现寄存器重命名及无序执行的各种方法(例如,使用一个或多个重排序缓冲器和一个或多个引退寄存器文件;使用一个或多个未来文件、一个或多个历史缓冲器和一个或多个引退寄存器文件;使用寄存器映射和寄存器池;等)。引退单元654和一个或多个物理寄存器文件单元(一个或多个)658耦合到一个或多个执行簇660。一个或多个执行簇660包括一个或多个执行单元662的集合和一个或多个存储器存取单元664的集合。执行单元662可以执行各种操作(例如,移位、加法、减法、乘法),以及针对各种类型的数据(例如,标量浮点、压缩整数、压缩浮点、矢量整数、矢量浮点)执行。虽然某些实施例可以包括多个专用于特定功能或功能的集合的执行单元,但其它实施例可以仅包括一个执行单元或全都执行所有功能的多个执行单元。一个或多个调度器单元656、一个或多个物理寄存器文件单元(一个或多个)658和一个或多个执行簇660显示为可能是多个的,因为某些实施例针对某些类型的数据/操作创建独立的管线(例如,标量整数管线、标量浮点/压缩整数/压缩浮点/矢量整数/矢量浮点管线和/或存储器存取管线,每个具有其自己的调度器单元、一个或多个物理寄存器文件单元和/或执行簇一且在独立的存储器存取管线的情况下,实现其中仅此管线的执行簇具有一个或多个存储器存取单元664的某些实施例)。还应该理解,在使用独立管线的情形下,一个或多个这些管线可以是无序发布/执行,并且其余是有序的。

存储器存取单元664的集合耦合到存储器单元670,其包括耦合到数据高速缓存单元674的数据TLB单元672,所述数据高速缓冲单元耦合到2级(L2)高速缓存单元676。在一个示范性实施例中,存储器存取单元664可以包括加载单元、存储地址单元和存储数据单元,每个耦合到存储器单元670中的数据TLB单元672。指令高速缓存单元634进一步耦合到存储器单元670中的2级(L2)高速缓存单元676。L2高速缓存单元676耦合到一个或多个其它级的高速缓存,并最后耦合到主存储器。

举例来说,示范性寄存器重命名、无序发布/执行核架构可以如下实现管线600∶1)指令取出638执行所述取出及长度解码级602和604;2)解码单元640执行解码级606;3)重命名/分配器单元652执行分配级608和重命名级610;4)一个或多个调度器单元656执行调度级612;5)一个或多个物理寄存器文件单元658和存储器单元670执行寄存器读/存储器读级614;执行簇660执行执行级616;6)存储器单元670和一个或多个物理寄存器文件单元(一个或多个)658执行写回/存储器写级618;7)各种单元可以涉及异常处理级622;以及8)引退单元654和一个或多个物理寄存器文件单元(一个或多个)658执行提交级624。

核690可以支持一个或多个指令集(例如,x86指令集(其中新版本已经增加了某些扩展);加州桑尼维尔市的MIPS Technologies的MIPS指令集;加州桑尼维尔市的ARM Holdings的ARM指令集(具有例如NEON的可选附加扩展)),包括本文描述的一个或多个指令。在一个实施例中,核690包括支持压缩数据指令集扩展(例如AVX1、AVX2)的逻辑,从而允许使用压缩数据执行许多多媒体应用所用的操作。

应该理解,所述核可以支持多线程(执行两个或更多个操作或线程的并行集合),并可以以各种方式如此进行,包括时间分片多线程、同时多线程(其中单个物理核为物理核正同时多线程的各线程提供逻辑核)或其组合(例如,时间分片取出及解码并且其后同时多线程,例如在英特尔的超线程技术中)。

尽管在无序执行的上下文中描述了寄存器重命名,但应该理解寄存器重命名可以用在有序架构中。尽管所示的处理器的实施例还包括独立的指令及数据高速缓存单元634/674和共享的L2高速缓存单元676,但备选的实施例可以具有用于指令及数据的单个内部高速缓存,例如1级(L1)内部高速缓存或多级内部高速缓存。在某些实施例中,所述系统可以包括内部高速缓存和在所述核和/或处理器外部的外部高速缓存的组合。备选地,所有高速缓存都可以在核和/或处理器外部。

具体的示范性有序核架构

图7A-B示出了更具体的示范性有序核架构的框图,该核会为芯片中数个逻辑块(包括同一类型和/或不同类型的其它核)之一。取决于应用,所述逻辑块通过高带宽互连网络(例如,环形网络)与某些固定的功能逻辑、存储器I/O接口和其它必要的I/O逻辑通信。

图7A为根据本发明实施例的单个处理器核,连同其到管芯上互连网络702的连接以及连同其2级(L2)高速缓存704的本地子集,的框图。在一个实施例中,指令解码器700支持具有压缩数据指令集扩展的x86指令集。L1高速缓存706允许对到标量及矢量单元中的高速缓存存储器的低延迟访问。尽管在一个实施例中(为了简化设计),标量单元708和矢量单元710使用独立的寄存器集(分别为标量寄存器712和矢量寄存器714),并且它们之间传输的数据写入到存储器,并且然后从1级(L1)高速缓存706读回,但本发明的备选实施例可以使用不同的方法(例如,使用单个寄存器集或包括允许数据在两个寄存器文件之间传输而不被写回及读回的通信路径)。

L2高速缓存704的本地子集为全局L2高速缓存的一部分,其划分为独立的本地子集,每处理器核一个。各处理器核具有到其自己的L2高速缓存704的本地子集的直接访问路径。由处理器核读取的数据存储在其L2高速缓存子集704中,并能被快速访问,与其它处理器核访问其自己的本地L2高速缓存子集并行。由处理器核所写入的数据存储在其自己的L2高速缓存子集704中,且如有必要,从其它子集刷新。所述环形网络确保共享数据的相干性(coherency)。所述环形网络为双向的,以允许例如处理器核、L2高速缓存和其它逻辑块的代理在芯片内互相通信。各环形数据路径为每方向1012位宽。

图7B为根据本发明实施例的图7A中的处理器核的一部分的扩展图。图7B包括L1高速缓存704的L1数据高速缓存706A部分,以及关于矢量单元710和矢量寄存器714的更多细节。具体地,矢量单元710为16宽矢量处理单元(VPU)(参见16宽ALU 728),其执行一个或多个整数、单精度浮点及双精度浮点指令。VPU支持用混合单元720混合寄存器输入、用数字变换单元722A-B数字变换、以及用复制单元724对存储器输入复制。写屏蔽寄存器726允许预测得到的矢量写入。

具有集成存储器控制器及图形的处理器

图8为根据本发明实施例,可以具有多于一个核、可以具有集成存储器控制器、并可以具有集成图形的处理器800的框图。图8中的实线框示出具有单个核802A、系统代理810、一个或多个总线控制器单元816的集合的处理器800,而虚线框的可选的增加示出了具有多个核802A-N、系统代理单元810中一个或多个集成存储器控制器单元(一个或多个)814的集合和专用逻辑808的备选处理器800。

因此,处理器800的不同实现可以包括:1)具有集成图形和/或科学(吞吐量)逻辑(其可以包括一个或多个核)的专用逻辑808的CPU,以及核802A-N为一个或多个通用核(例如,通用有序核、通用无序核,两者的组合);2)协处理器,其中核802A-N为大量的专用核,旨在主要用于图形和/或科学(吞吐量);以及3)协处理器,其中核802A-N为大量的通用有序核。因此,处理器800可以是通用处理器、协处理器或专用处理器,例如诸如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量集成众核(MIC)协处理器(包括30个或更多核)、嵌入式处理器等等。所述处理器可以在一个或多个芯片上实现。处理器800可以是使用许多处理技术、例如诸如BiCMOS、CMOS或NMOS任一个的一个或多个衬底的一部分和/或在其上实现。

存储器层次结构包括所述核内的一个或多个级的高速缓存、共享高速缓存单元806的集合或一个或多个共享高速缓存单元806,以及耦合到集成存储器控制器单元814的集合的外部存储器(未示出)。共享高速缓存单元806的集合可以包括一个或多个中间级高速缓存,例如2级(L2)、3级(L3)、4级(L4)或其它级高速缓存、末级高速缓存(LLC)和/或其组合。尽管在一个实施例中,基于环形的互连单元812将集成图形逻辑808、共享高速缓存单元806的集合,以及系统代理单元810/一个或多个集成存储器控制器单元814互连,但备选实施例可以使用任意数量的公知技术用于互连此类单元。在一个实施例中,维持一个或多个高速缓存单元806和核802A-N之间的相干性。

在某些实施例中,一个或多个核802A-N能够多线程。系统代理810包括协调和操作核802A-N的那些组件。系统代理单元810可以包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括用于调节核802A-N和集成图形逻辑808的功率状态所需的逻辑及组件。所述显示单元用于驱动一个或多个外部连接的显示器。

在架构指令集方面,核802A-N可以是同质或异质的;也就是说,两个或更多个核802A-N可以能够执行相同的指令集,而其它的可以能够仅执行该指令集的子集或不同的指令集。

示范性计算机架构

图9-12为示范性计算机架构的框图。本领域公知的用于膝上型计算机、桌上型计算机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、手机、便携式媒体播放器、手持设备及各种其它电子设备的其它系统设计及配置也是适当的。一般来说,能够结合如本文公开的处理器和/或其它执行逻辑的各种系统或电子设备通常是合适的。

现在参考图9,示出了根据本发明一个实施例的系统900的框图。系统900可以包括一个或多个处理器910、915,其耦合到控制器集线器920。在一个实施例中,控制器集线器920包括图形存储器控制器集线器(GMCH)990和输入/输出集线器(IOH)950(其可以在独立的芯片上);GMCH 990包括存储器和图形控制器,存储器940及协处理器945耦合到其上;IOH 950将输入/输出(I/O)设备960耦合到GMCH 990。备选地,存储器和图形控制器之一或两者都集成在处理器内(如本文所描述的),存储器940和协处理器945直接耦合到处理器910以及具有IOH 950的单个芯片中的控制器集线器920。

图9中用虚线表明附加处理器915的可选性质。处理器910、915各可以包括本文描述的一个或多个处理核,并可以是处理器800的某个版本。

存储器940可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或两者的组合。对于至少一个实施例,控制器集线器920经由多点总线(例如前侧总线(FSB),例如快速路径互连(QPI)或类似连接995的点对点接口)与一个或多个处理器910、915通信。

在一个实施例中,协处理器945为专用处理器,例如诸如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等。在一个实施例中,控制器集线器920可以包括集成图形加速器。

在包括架构、微架构、热、功耗特性等等的价值度量范围(spectrum)方面,物理资源910、915之间可能有各种区别。

在一个实施例中,处理器910执行控制通用类型的数据处理操作的指令。嵌入在所述指令内的可以是协处理器指令。处理器910将这些协处理器指令辨识为应该由附连的协处理器945执行的类型。相应地,处理器910在协处理器总线或其它互连上给协处理器945发布这些协处理器指令(或表示协处理器指令的控制信号)。一个或多个协处理器945接受并执行接收的协处理器指令。

现在参考图10,显示了根据本发明实施例的第一更具体的示范性系统1000的框图。如图10中所示,多处理器系统1000为点到点互连系统,并且包括第一处理器1070和经由点对点互连1050耦合的第二处理器1080。处理器1070和1080的每个可以是处理器800的某个版本。在本发明的一个实施例中,处理器1070和1080分别为处理器910和915,而协处理器1038为协处理器945。在另一实施例中,处理器1070和1080分别为处理器910和协处理器945。

处理器1070和1080显示为分别包括集成存储器控制器(IMC)单元1072和1082。处理器1070还包括作为其总线控制器单元的一部分的点对点(P-P)接口1076和1078;类似地,第二处理器1080包括P-P接口1086和1088。处理器1070、1080可以使用P-P接口电路1078、1088,经由点对点(P-P)接口1050交换信息。如图10中所示的,IMC1072和1082将所述处理器耦合到相应的存储器,也就是存储器1032和存储器1034,其可以是本地附连到相应的处理器的主存储器的部分。

处理器1070、1080可以各使用点对点接口电路1076、1094、1086、1098,经由单独的P-P接口1052、1054与芯片组1090交换信息。芯片组1090可以可选地经由高性能接口1039与协处理器1038交换信息。在一个实施例中,协处理器1038为专用处理器,例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等。

共享高速缓存(未示出)可以包含在或处理器内或两个处理器外,还经P-P互连与所述处理器连接,使得如果将处理器置于低功率模式,任一或两个处理器的本地高速缓存信息可以存储在共享高速缓存中。

芯片组1090可以经由接口1096耦合到第一总线1016。在一个实施例中,第一总线1016可以是外围组件互连(PCI)总线,或例如PCI Express总线的总线,或另一第三代I/O互连总线,尽管本发明的范畴不限于此。

如图10中所示的,各种I/O设备1014连同将第一总线1016耦合到第二总线1020的总线桥一起可以耦合到第一总线1016。在一个实施例中,一个或多个附加处理器(一个或多个)1015,例如协处理器、高吞吐量MIC处理器、GPGPU、加速器(例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任意其它处理器,耦合到第一总线1016。在一个实施例中,第二总线1020可以是低引脚计数(LPC)总线。在一个实施例中,各种设备可以耦合到第二总线1020,包括例如键盘和/或鼠标1022、通信设备1027和例如磁盘驱动或可以包括指令/代码及数据1030的其它大容量存储设备的存储单元1028。进一步地,音频I/O 1024可以耦合到第二总线1020。注意,其它架构是可能的。例如,系统可以实现多点总线或其它此类架构,而不是图10的点对点架构。

现在参考图11,显示了根据本发明实施例的第二更具体的示范性系统1100的框图。图10和11中的相同元件具有相同的附图标记,并且已经从图11中忽略了图10的某些方面,以免避免模糊图11的其它方面。

图11示出处理器1070、1080可以分别包括集成的存储器和I/O控制逻辑(“CL”)1072和1082。因此,CL 1072、1082包括集成的存储器控制器单元,并包括I/O控制逻辑。图11示出不仅存储器1032、1034耦合到CL 1072、1082,而且I/O设备1114耦合到控制逻辑1072、1082。传统的I/O设备1115耦合到芯片组1090。

现在参考图12,示出了根据本发明实施例的SoC 1200的框图。图8中的类似元件具有相同的附图标记。而且,虚线框为更高级的SoC上的可选特征。在图12中,一个或多个互连单元1202耦合到:包括一个或多个核202A-N的集合和一个或多个共享高速缓存单元806的应用处理器1210;系统代理单元810;一个或多个总线控制器单元816;一个或多个集成的存储器控制器单元814;一个或多个协处理器1220的集合,其可以包括集成的图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1230;直接存储器存取(DMA)单元1232;用于耦合到一个或多个外部显示器的显示单元1240。在一个实施例中,一个或多个协处理器1220包括专用处理器,例如诸如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等等。

本文公开的机制的实施例可以以硬件、软件、固件或此类实现方式的组合实现。本发明的实施例可以实现为在包括至少一个处理器、存储系统(包括易失性及非易失性存储器和/或存储元件)、至少一个输入设备和至少一个输出设备的可编程系统上执行的计算机程序或程序代码。

程序代码,例如图10中所示的代码1030,可以应用于输入指令以执行本文描述的功能并生成输出信息。所述输出信息可以以公知方式应用于一个或多个输入设备。出于此应用的目的,处理系统包括具有例如诸如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器的处理器的任意系统。

所述程序代码可以以高级面向过程或面向对象编程语言实现,以与处理系统通信。如果期望,所述程序代码还可以以汇编或及其语言实现。实际上,本文描述的机制范围上不限于任意特定的编程语言。在任何情况下,所述语言可以是编译或解释语言。

至少一个实施例的一个或多个方面可以由机器可读介质上存储的代表性指令实现,其表示处理器内各种逻辑,所述逻辑当由机器读取时使得所述机器制造执行本文描述的技术。此类表示,称作“IP核”,可以存储在有形的机器可读介质上,并提供应给各种顾客或生产设施以载入实际制造逻辑或处理器的制造机器。

此类机器可读存储媒体可以包括,不限于由机器或设备制造或形成的物品的非暂时性有形排列,包括存储媒体,例如硬盘、任意其它类型的磁盘,包括软盘、光盘、光盘只读存储器(CD-ROM)、可重写光盘(CD-RW)和磁光盘,半导体设备,例如只读存储器(ROM)、例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(DPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM)、磁或光卡或适于存储电子指令的任意其它类型的媒体。

相应地,本发明实施例还包括非暂时性、有形的机器可读媒体,所述媒体包含指令或包含设计数据,例如硬件描述语言(HDL),其定义本文描述的结构、电路、装置、处理器和/或系统特征。此类实施例还可以称作程序产品。

仿真(包括二进制转换、代码融合(morphing)等)

在某些情况下,指令变换器可以用于将来自源指令集的指令变换为目标指令集。例如,所述指令变换器可以将指令转换(例如,使用静态二进制转换、包括动态编译的动态二进制转换)、融合、仿真或以其它方式变换为要由核处理的一个或多个其它指令。所述指令变换器可以以软件、硬件、固件或其组合实现。所述指令变换器可以在处理器上、脱离处理器或部分在处理器上且部分脱离处理器。

图13为根据本发明的实施例,对比使用软件指令变换器以将源指令集中的二进制指令变换为目标指令集中的二进制指令的框图。在所示的实施例中,所述指令变换器为软件指令变换器,尽管备选地,所述指令变换器可以以软件、固件、硬件或其各种组合实现。图13显示了使用高级语言1302的程序可以用x86编译器1304编译,以生成可以由具有至少一个x86指令集核1316的处理器自然执行的x86二进制代码1306。具有至少一个x86指令集核1316的处理器代表能够通过可兼容地执行或以其它方式处理(1)英特尔x86指令集核的指令集的实质部分或(2)应用的对象代码版本或目标为在具有至少一个x86指令集核的英特尔处理器上运行的其它软件,而可以实质上执行与具有至少一个x86指令集核的英特尔处理器相同的功能的任意处理器,以实质上实现与具有至少一个x86指令集核的英特尔处理器相同的结果。x86编译器1304代表可操作以生成能够利用或无需附加链接处理,在具有至少一个x86指令集核1316上执行的x86二进制代码1306(例如,对象代码)的编译器。类似地,图13显示了使用高级语言1302的程序,其可以使用备选指令集编译器1308编译,以生成可以由不具有至少一个x86指令集核1314的处理器(例如,具有执行加州桑尼维尔市MIPS Technologies的MIPS指令集和/或执行加州桑尼维尔市ARM Holddings的ARM指令集的核的处理器)自然执行的备选指令集二进制代码1310。指令变换器1312用于将x86二进制代码1306变换为可以由不具有x86指令集核1314的处理器天然执行的代码。这种变换的代码不可能与备选指令集二进制代码1310相同,因为能够这样的指令变换器难于制造;然而,变换的代码将实现一般操作,并由来自备选指令集的指令构成。因此,指令变换器1312代表软件、固件、硬件或其组合,其通过仿真,模拟或任意其它过程,允许处理器或不具有x86指令集处理器或核的其它电子设备执行x86二进制代码1306。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1