指令处理方法以及其所适用的超纯量管线微处理器的制作方法

文档序号:6606972阅读:175来源:国知局
专利名称:指令处理方法以及其所适用的超纯量管线微处理器的制作方法
技术领域
本发明主要关于微处理器的技术领域,特别是有关于一种微处理器的微处理器架 构(microarchitecture)0
背景技术
精简指令集架构处理器的一个典型是这种处理器会使用一种加载/储存架构,也 就是说,这种处理器包括了一加载指令,用以将一操作数从存储器中加载至该处理器的一 寄存器,这种处理器还包括一储存指令,用以将该处理器的一寄存器中的一操作数储存到 存储器里。在一般范例中,上述加载指令与储存指令是唯一会存取存储器的指令,而执行算 术/逻辑运算的其它指令则从寄存器中接收各自的操作数并将结果写入寄存器,意即,非 加载或储存的指令不被允许指定在存储器中的操作数,这使得大部分的非加载或储存的指 令可在单一频率周期执行完毕,相较之下,一个加载指令则需要占用数个频率周期以存取 存储器(即高速缓存或系统存储器)。因此,一般的指令序列可能包括有一个加载指令,用 以从存储器中提取(fetch) —操作数至一第一寄存器,该加载指令其后则接着一算术逻辑 (arithmetic/logical)指令,用以在第一寄存器中的操作数上执行一算术逻辑运算(即加 法运算、减法运算、增量运算、乘法运算、移位/回转(shirt/rotate)运算、布尔和(Boolean AND)运算、布尔或(Boolean OR)运算、布尔反(Boolean NOT)运算等等)并且将结果写入 一第二寄存器,该算术逻辑指令其后再接着一储存指令,用以将第二寄存器中的结果写入 存储器。上述加载/储存架构的典型范例的优点是众所周知的。然而,加载/储存架构所产生的结果是许多处理器包括了不同的加载/储存单 元,分离于执行算术逻辑运算的执行单元,也就是说,一加载单元仅执行从存储器中将数 据加载至一寄存器,一储存单元仅执行将数据从一寄存器储存至存储器,而算术逻辑单元 (Arithmetic/Logical Unit, ALU)则对来自来源寄存器的操作数执行算术逻辑运算并将结 果写入一目的寄存器。于是,以上述的指令序列范例而言,加载单元会执行加载指令以自存 储器中提取操作数至第一寄存器,一算术逻辑单元会执行算术逻辑指令以对第一寄存器中 的操作数执行算术逻辑运算(或许使用另一寄存器中的第二操作数来进行)并将结果写入 第二寄存器,最后,储存单元会执行将第二寄存器中的结果写入存储器的储存指令。使用不同加载/储存单元以及算术逻辑单元的优点是架构简单且速度快,然而, 缺点是将结果通过寄存器在各个单元间所做的转送动作会耗用许多时间,这个问题的一部 分可藉由转送总线而获得解决,转送总线会把一结果从一执行单元直接转送至另一执行单 元而不需经由寄存器,但是,这仍然有时间被耗用的问题,意即转送过程中所发生的延迟 (delay)情形。所被耗用的时间主要是取决于距离与阻容电路(RC circuit)时间常数的一 函数,该距离是指信号在转送总线上来去不同执行单元之间所需的距离,而阻容电路时间 常数是指关于该信号传输线(signal trace)的阻容电路时间常数。关于转送结果的延迟 时间总计可达一或多个频率周期,视已知设计中执行单元的布设(layout)与所使用的制 程技术而定。

发明内容
本发明的一实施例提供了 一种超纯量管线微处理器。该超纯量管线微处理器包括 由该超纯量管线微处理器的一指令集架构所界定的一寄存器集合、一高速缓存、多个执行 单元、以及耦接至上述高速缓存的一储存单元。上述储存单元是不同于该超纯量管线微处 理器的其它执行单元,且上述储存单元包括一算术逻辑单元。上述储存单元是用以接收一 第一指令,上述第一指令指定上述寄存器集合的一第一来源寄存器、以及在一第一来源操 作数上执行并产生一结果的一第一运算。上述储存单元亦用以自上述第一来源寄存器读取 上述第一来源操作数。上述算术逻辑单元是用以在上述第一来源操作数上执行上述第一运 算以产生上述结果,而非将上述第一来源操作数转送至上述其它执行单元的任一者以在上 述第一来源操作数上执行上述第一运算以产生上述结果。上述储存单元更用以将上述结果 写入上述高速缓存。本发明的另一实施例提供了一种指令处理方法,适用于一超纯量管线微处理器, 该超纯量管线微处理器具有由该超纯量管线微处理器的一指令集架构所界定的一寄存器 集合、一高速缓存、多个执行单元、以及不同于该超纯量管线微处理器的其它执行单元的一 储存单元。上述指令处理方法包括由上述储存单元接收一第一指令,上述第一指令指定上 述寄存器集合的一第一来源寄存器、以及在一第一来源操作数上执行并产生一结果的一第 一运算;由上述储存单元自上述第一来源寄存器读取上述第一来源操作数;由上述储存单 元的一算术逻辑单元在上述第一来源操作数上执行上述第一运算以产生上述结果,而非将 上述第一来源操作数转送至上述其它执行单元的任一者以在上述第一来源操作数上执行 上述第一运算以产生上述结果;以及由上述储存单元将上述结果写入上述高速缓存。


图1是根据本发明所述的超纯量管线微处理器的方块图。图2是根据本发明如图1所示的加载单元124的方块图。图3是根据本发明如图1所示的超纯量管线微处理器100的运作流程图。图4是显示比对本发明所述的超纯量管线微处理器100的传统微处理器运作流程 图。图5是根据本发明一实施例所述的效果的时间图。图6是根据本发明另一实施例所示的加载单元的方块图。图7是根据本发明另一实施例所述的加载单元的方块图。图8是根据本发明另一实施例所述的效果的时间图。图9是根据本发明如图1所示的储存单元126的方块图。图10是根据本发明如图1所示的超纯量管线微处理器100的运作流程图。图11是显示比对本发明所述的超纯量管线微处理器100的传统微处理器运作流 程图。图12是根据本发明另一实施例所述的效益的时间图。主要组件符号说明100 超纯量管线微处理器;
102 指令高速缓存;
104 指令转译器;
106 寄存器别名表;
108 保留站;
112 通用寄存器集合;
114 重排缓冲器;
116 存储器子系统;
122 其它执行单元;
124 加载单元;
126 储存单元;
132 宏指令;
134 微指令;
142、162 算术逻辑单元
144、146 总线;
148 转送总线;
152 结果总线;
154、156 算术逻辑单元
202 地址产生器;
204 转译后备缓冲器;
206 快取卷标矩阵;
208 快取数据矩阵;
212 控制逻辑;
214 多工器;
222 虚拟加载地址;
224 实体地址;
226 状态;
228 快取线;
232 加载数据;
234 命中/未命中;
652,952 第二操作数;
662 储存区;
946 储存数据
具体实施例方式
本发明的发明人发现在一管线流加载单元设计中,最后一个阶段中可能会有一部 份的频率周期不会被使用到,也就是说,加载单元最后一个阶段的电路所产生的延迟时间 只是频率周期时间的一小部分而已。因此,本发明有利地在实施例中将一算术逻辑单元整 合到加载单元的最后一个阶段中,使加载单元能够在将从存储器所提取出的加载数据加载 到目的寄存器之前,先在加载数据上执行算术逻辑运算。通过此一有利的设计,使得将加载
7数据转送至另一算术逻辑执行单元以执行算术逻辑运算时所需耗用的时间能够节省下来。 本发明的微处理器使用了一加载/储存的微处理器架构,该微处理器架构所实现的是处理 器的非加载/储存x86架构(或处理器的宏架构)。指令转译器产生特别类型的加载微指 令(此后以Idalu微指令称之),用以指示加载单元执行从存储器的加载以及在加载数据上 执行适当的算术逻辑单元运算。这使得该微处理器得以实现复杂的宏指令,该宏指令所需 要的存储器的读取以及一算术逻辑单元运算皆位于执行单元中,所以不需要另一执行单元 来执行该算术逻辑单元运算,从而避免结果转送所造成的时间延迟。图1是根据本发明所述的超纯量管线微处理器的方块图。超纯量管线微处理器 100包括一指令高速缓存102,用以快取一指令集架构(例如x86指令集架构)的宏指 令。宏指令132所包括的指令需要一存储器存取与一算术逻辑单元运算功能,举例来说,一 x86M0VZX reg/mem(零值延伸搬移)指令,用以指示超纯量管线微处理器100将存储器中 的来源操作数的内容复制到目的寄存器并且将该值进行零值延伸。当目的寄存器的尺寸大 小要比存储器操作数的有效大小来的大时,零值延伸是很重要的一项运作。其它的例子则 包括了 x86指令,该x86指令涉及(involve) —存储器操作数以及一算术逻辑单元功能,例 如加法(ADD)、减法(SUB)、增量(INC)、减量(DEC)、乘法(MUL)、移位(SAL/SAR/SHL/SHR)、 回转(RCL/RCR/R0L/R0R)、与(AND)、或(OR)、反(NOT)、异或(XOR)等功能。超纯量管线微处理器100包括耦接至指令高速缓存102的一指令转译器104,该指 令转译器104将宏指令132转译为例如Idalu微指令的微指令134,该Idalu微指令指示加 载单元124(将于后续段落作进一步说明)加载存储器中的数据并且于加载的数据上执行 算术逻辑单元运算。在另一实施例中,指令转译器104将宏指令132转译为例如stalu微 指令的微指令134,该stalu微指令指示储存单元126 (将于后续段落作进一步说明)于储 存数据上执行算术逻辑单元运算并且将该数据储存于存储器中。超纯量管线微处理器100包括一寄存器别名表(Register Alias Table,RAT) 106, 寄存器别名表106产生微指令相依性并且以程序顺序将微指令134发送(dispatch)至保 留站108,保留站108再将微指令134送到(issue)执行单元(即为加载单元124、储存单元 126、以及其它执行单元122)执行。在一实施例中,保留站108不以程序顺序送出微码指令 134。举例来说,其它执行单元122可包括整数算术逻辑单元、浮点单元、以及单指令多数据 (Single Instruction Multiple Data, SIMD)执行单元(例如多媒体延伸(MultiMedia extension, MMX)单元或单指令多数据串流延伸(Streaming SIMDExtensions, SSE)单 元)。执行单元122/142/162各自将其结果152/154/156提供至一重排缓冲器(Reorder Buffer, ROB) 114,重排缓冲器114能确保按顺序将指令引退(retirement)至架构状态 (architectural state)。超纯量管线微处理器100亦包括耦接至加载单元124与储存单 元126的一存储器子系统116,存储器子系统116包括了高速缓存、加载缓冲器、储存缓冲 器、以及一总线接口单元。执行单元122/142/162接收来自一通用寄存器集合(General PurposeRegister, GPR) 112的操作数。执行单元122/142/162亦互相接收来自对方的结果152/154/156以当 作转送总线148上的操作数。尤其是加载单元124接收一总线144上的操作数,而储存单 元126接收一总线146上的操作数。加载单元124包括一算术逻辑单元142,储存单元126 包括一算术逻辑单元162,其相关的运算将于后续作进一步说明。
浦鄉觯元遍■辅力口籠种图2是根据本发明如图1所示的加载单元124的方块图。加载单元124包括一 地址产生器202,地址产生器202使用如图1所示的来源操作数144以产生虚拟加载地址 222 (也就是将自该处加载数据的存储器地址)。加载单元124存取存储器子系统116的一 转译后备缓冲器(Translation LookasideBuffer,TLB) 204,转译后备缓冲器204负责查找 虚拟位置222以提供转译后的实体地址224。一快取卷标矩阵(cache tag array) 206查找 实体地址224的一卷标部分并且为高速缓存的每一路(way)提供状态226。实体地址224 的索引(index)部分为一快取数据矩阵208的索引,而快取数据矩阵208则针对高速缓存 的每一路输出一快取线(cache line) 228。控制逻辑212检查状态226以决定实体地址224 是否为高速缓存的一命中/未命中(hit/miss) 234。此外,控制逻辑212控制一多工器214, 而多工器214选择从数据矩阵208所输出的适合的快取线228以及加载指令或Idalu微指 令所指定的快取线中的数据,该数据可为根据实施例的不同而为1、2、4、8、16、32、或64位, 且被提供作为加载数据232。在一传统的加载单元124中,加载数据232将被提供当作一传统加载指令的结果, 然而,本发明的加载单元124有利地,亦包括了如图1所示的算术逻辑单元142,算术逻辑单 元142接收加载数据232以及选择性地在加载数据232上执行一算术逻辑单元运算以产生 一算术逻辑单元结果(alU-reSUlt)154。(如果该指令为一正规加载指令,则算术逻辑单元 142只是让加载数据232当作算术逻辑单元结果154通过。)算术逻辑单元142是用以根 据不同实施例执行不同的各式运算。在一实施例中,算术逻辑单元142执行一零值延伸(zero-extend)运算,并且包括 多个与门(and gate)以遮除掉(mask off)加载数据232中不被由Idalu微指令指定的存 储器操作数所包括的较高位。在其它实施例中,算术逻辑单元142是用以额外执行一或多个单一(single)操作 数运算,包括、但不限定于以下运算1.布尔(Boolean)反(NOT)运算算术逻辑单元结果154使加载数据232的每一 位被反向(invert)。2.不等门(NE GATE)运算算术逻辑单元结果154为加载数据232的二补码负位 (two, s complement negation)。3.增量(increment)运算算术逻辑单元结果154为加载数据232再加1。4.减量(decrement)运算算术逻辑单元结果154为加载数据232再减1。5.符号延伸(sign-extend)运算算术逻辑单元结果154为符号延伸后的加载数 据 232。6.零值侦测运算若加载数据232为零时,算术逻辑单元结果154的值为真 (true);反之,若加载数据232不为零时,算术逻辑单元结果154的值则为假(false)。7.壹值侦测运算若加载数据232的所有位皆为二进制的壹(1)值时,算术逻辑 单元结果154的值为真;反之,若加载数据232的所有位并非全为二进制的壹值时,算术逻 辑单元结果154的值则为假。8.数据格式转换运算算术逻辑单元结果154为格式化成一指定数据格式的加载 数据232,该指定数据格式可为例如一浮点格式、或单指令多数据格式。
在图6所示的另一实施例中,算术逻辑单元142是用以接收一第二操作数652,以 及用以在第二操作数652与加载数据232上执行一双操作数的算术逻辑单元功能。算术逻 辑单元142可用以另外再执行一或多个双操作数运算,包括但不限定于以下运算9.布尔逻辑(AND、OR、XOR、NOR)运算算术逻辑单元142在第二操作数652与加 载数据232上执行指定的布尔逻辑运算,以产生算术逻辑单元结果154。10.算术(ADD、SUB、MUL)运算算术逻辑单元142在第二操作数652与加载数据 232上执行指定的算术运算,以产生算术逻辑单元结果154。在图6所示的另一实施例中,加载单元124包括了储存区662,储存区662用以于 加载地址不存在数据高速缓存时储存第二操作数652,而当加载地址不存在数据高速缓存 时会使得必须从系统存储器提取加载数据且Idalu微指令必须在加载单元124中重新执 行。图3是根据本发明如图1所示的超纯量管线微处理器100的运作流程图。流程从 方块302开始进行。在方块302,指令转译器104译码一宏指令132并将之转译为单一 Idalu微指令 134,宏指令132所指定的运算是用以产生自该处提取数据的一存储器地址。宏指令132也 指定了将于存储器中提取出的数据上执行的一算术逻辑单元运算以产生一结果。宏指令 132还指定了作为该结果的目的寄存器的一通用寄存器112。Idalu微指令与宏指令132指 定了相同的地址操作数。而且,Idalu微指令还与宏指令132指定了相同的算术逻辑单元 运算。最后,Idalu微指令更与宏指令132针对目的操作数指定了相同的通用寄存器112。 举例来说,宏指令132可为一 x86 MOVZX reg/mem指令或一 PMOVZX reg/mem指令,在此例 子中,指令转译器104再将宏指令132转译为指定了零值延伸为其算术逻辑单元运算的一 单一 Idalu微指令。流程继续进行到方块304。在方块304,保留站112将Idalu微指令送到加载单元124,流程继续进行到方块 306。在方块306,加载单元124根据由Idalu微指令所指定的来源操作数144而产生虚 拟加载地址222,流程继续进行到方块308。在方块308,加载单元124在转译后备缓冲器204中查找虚拟加载地址222以取得 实体加载地址224,流程继续进行到方块312。在方块312,加载单元124以实体加载地址224依序存取快取卷标矩阵206与快取 数据矩阵208以取得状态226与快取线228,而多工器214选择了由Idalu微指令所指定的 加载数据232,流程继续进行到方块322。 在方块322,加载单元124在加载数据232上执行由Idalu微指令所指定的算术逻 辑单元运算,以产生算术逻辑单元结果154,流程继续进行到方块324。在方块324,加载单元124将算术逻辑单元结果154输出到其结果总线上,事实上, 算术逻辑单元142执行所需的算术逻辑单元运算有利地减轻了将加载数据232转送至另一 执行单元122以执行算术逻辑单元运算的需求以及转送运算所伴随的延迟。流程继续进行 到方块326。在方块326,重排缓冲器114从加载单元的结果总线接收并储存算术逻辑单元结 果154,流程继续进行到方块328。
在方块328,重排缓冲器114将其所储存的算术逻辑单元结果154引退至目的通用 寄存器112,流程结束。图4是显示传统微处理器的运作流程,用以比对本发明所述的超纯量管线微处理 器100的运作。虽然图1所示的超纯量管线微处理器100中的组件亦存在于图4的描述 中,但必须了解的是图4所述的微处理器中的加载单元并不包括用以在加载数据上执行算 术逻辑单元运算的一算术逻辑单元,且指令转译器并不会针对加载数据产生特别的Idalu 微指令。流程从方块402开始进行。在方块402,指令转译器104译码一宏指令132并将之转译为二个微指令134,一 为加载指令,一为alu微指令。举例来说,宏指令132可为一 x86M0VZX reg/mem指令或一 PMOVZX reg/mem指令,在此范例中,指令转译器104会将宏指令132转译为一加载微指令以 及指定零值延伸为其算术逻辑单元函数的一 alu微指令。接着,寄存器别名表116在加载 微指令上针对alu微指令产生一相依性。流程继续进行到方块404。在方块404,保留站112将加载指令送到加载单元124,流程继续进行到方块406。在方块406,加载单元124根据由加载指令所指定的来源操作数144产生虚拟加载 地址222,流程继续进行到方块408。在方块408,加载单元124在转译后备缓冲器中查找虚拟加载地址222以取得实体 加载地址224,流程继续进行到方块412。在方块412,加载单元124以实体加载地址224依序存取快取卷标矩阵206与快取 数据矩阵208以取得状态226与快取线228,而多工器214选择了由加载指令所指定的加载 数据232,流程继续进行到方块414与方块416。在方块414,加载单元124将所提取的加载数据232输出到其结果总线上,流程继 续进行到方块418。在方块416,既然加载数据222目前已可取用为一来源操作数,则保留站112将 alu微指令送到一执行单元122 (例如一整数单元),流程继续进行到方块418。在方块418,整数单元112从加载单元124的结果总线接收加载数据232作为一来 源操作数,流程继续进行到方块422。在方块422,整数单元112在接收自加载单元124的加载数据232上执行由alu微 指令所指定的算术逻辑单元运算,以产生一算术逻辑单元结果。流程继续进行到方块424。在方块424,整数单元112将算术逻辑单元结果输出到其结果总线152上,流程继 续进行到方块426。在方块426,重排缓冲器114从整数单元122的结果总线152接收并储存算术逻辑 单元结果,流程继续进行到方块428。在方块428,重排缓冲器114将其所储存的算术逻辑单元结果引退至目的通用寄 存器112,流程结束。比较图3与图4可发现,指令转译器104产生一单一 Idalu微指令、以及加载单元 124包括一算术逻辑单元142以执行由Idalu微指令所指定的算术逻辑单元运算,有利地避 免了由传统微处理器所引起的转送运作,如图5所示。图5是根据本发明一实施例所述的效果的时间图。图中展示了六个频率周期,图 左侧所示为传统微处理器中由寄存器区隔的管线流阶段,图右侧所示为本发明一实施例的超纯量管线微处理器100中由寄存器区隔的管线流阶段。在图5所示的范例中,假设了加 载单元124包括有四个管线流阶段,各自被标示为A、B、C、以及D。然而,需要注意的是在其 它实施例中,加载单元124可具有不同数量的管线流阶段。而在图5所示的范例中,假设了 传统微处理器中的整数算术逻辑单元包括单一阶段。在传统微处理器中,一加载指令接在加载单元124分别对应到频率周期1、2、3、4 的管线流阶段A、B、C、以及D之后进行。然后加载数据被转送至整数单元,整数单元于频率 周期5在加载数据上执行一算术逻辑单元运算,最后,于频率周期6,由整数单元所产生的 算术逻辑单元结果被写入至重排缓冲器114并且被转送至其它执行单元122。在如图1所示的超纯量管线微处理器100中,相似于传统微处理器一般,一 Idalu 指令接在加载单元124分别对应到频率周期1、2、3、4的管线流阶段A、B、C、以及D之后进 行。然而,不同于传统微处理器,在加载单元124于频率周期4的管线流阶段D中,算术逻 辑单元142在加载数据232上执行了由Idalu微指令所指定的算术逻辑单元运算以产生算 术逻辑单元结果154。在频率周期5中,由加载单元124所产生的算术逻辑单元结果154被 写入至重排缓冲器114并且被转送至其它执行单元122。因此可见,如图1所示的超纯量 管线微处理器100至少在比传统微处理器更早一频率周期时,即产生了算术逻辑单元结果 154并且让其它指令可取得算术逻辑单元结果154。而如上述所言,当信号在转送总线上来 去不同执行单元之间所需的距离、以及该信号传输线的阻容电路时间常数增加时,意即转 送延迟增加时,那么本发明所能省下的时间也就跟着提升了。图7是根据本发明另一实施例所述的加载单元的方块图。本图中的加载单元124 类似于图1所示的加载单元124,然而,图7的加载单元124在内部将算术逻辑单元结果154 转送回给自己当作一来源操作数144,以供计算出一后续加载指令(或Idalu微指令)的一 加载地址222。在某些设计中,此内部转送的路径可能比传统微处理器中来自其它执行单元 的外部转送路径来的短,该其它执行单元会执行算术逻辑单元运算且结果会被当作一来源 操作数144从该处被转送至加载单元124。有关内部转送的路径的优点将于图8中绘示。图8为一相似于图5所示的时间图。然而,图8所示的范例假设了在传统微处理 器中,一加载指令接在alu微指令之后并且使用alu微指令的算术逻辑单元结果当作一来 源操作数以计算加载地址。同样地,第八图中假设了在超纯量管线微处理器100中,一加载 指令接在alu微指令之后并且使用alu微指令的算术逻辑单元结果154当作一来源操作 数以计算加载地址。此外,图8所示的范例假设传统微处理器(以及超纯量管线微处理器 100)分别在频率周期5与7中,需要一额外的频率周期以将结果自加载单元124转送至整 数单元122,以及另一额外的频率周期将结果自整数单元122转送至加载单元124。如图8 所示,本发明的加载单元124在频率周期4的管线流阶段D中执行由Idalu微指令所指定 的算术逻辑单元运算,并且在频率周期5中将算术逻辑单元结果154内部转送回给自己使 得加载单元124能够使用算术逻辑单元结果154,以产生加载地址222,而非使一算术逻辑 单元结果自其它执行单元被转送至加载单元124。因此,在此范例中,具有如图7所示的加 载单元124的超纯量管线微处理器100可有利地在以少于传统微处理器三个频率周期的情 况下,即处理完Idalu微指令或加载微指令序列。图9是根据本发明如图1所示的储存单元126的方块图。储存单元126包括了图 1中的算术逻辑单元162,算术逻辑单元162所接收的储存数据946是经由总线146来自通用寄存器集合112的、或经由转送总线148来自执行单元122/124/126。算术逻辑单元162 在储存数据946上执行一算术逻辑单元运算以产生一算术逻辑单元结果156,而算术逻辑 单元结果156被提供至存储器子系统116中的一储存缓冲器、被提供至重排缓冲器114、以 及经由转送总线148被提供至执行单元122/124/126。储存缓冲器最终将算术逻辑单元结 果156写入至存储器。该算术逻辑单元运算可为如图2所述由加载单元124所执行的任一 单来源操作数的算术逻辑单元运算。另外,在一实施例中,算术逻辑单元162可接收一第二 操作数952以致该算术逻辑单元运算可为如图6所述由加载单元124所执行的任一双来源 操作数的算术逻辑单元运算。如下于第10 12图所述,通过将算术逻辑单元162整合至储存单元126以于将 储存数据946写入存储器前先在储存数据946上执行算术逻辑单元运算,即可有利地避免 掉传统微处理器所会发生的转送延迟。在一实施例中,超纯量管线微处理器100将储存运算拆解为两个不同的微指 令-储存地址微指令以及储存数据微指令。而超纯量管线微处理器100包括了两个单独的 单元-储存地址单元以及储存数据单元,分别用以执行该储存地址微指令以及储存数据微 指令。储存地址单元包括一地址产生器(类似于加载单元124的地址产生器202),用以从 储存地址微指令所指定的来源操作数产生一虚拟储存地址。然后储存地址单元于转译后备 缓冲器204中查找虚拟储存地址以取得一转译后的实体储存地址,该实体储存地址即为储 存地址单元写入至存储器子系统116的一储存缓冲器的数据,且该储存缓冲器是被配置予 此储存运算。储存缓冲器中的实体储存地址最后被写入到快取卷标矩阵206与快取数据矩 阵208、或被写入到系统存储器中。在一传统微处理器中,储存单元仅接收储存数据(不会 有储存单元之外的其它执行单元在储存数据上执行一算术逻辑单元运算)、以及将储存数 据写入至储存缓冲器。储存缓冲器最后将储存数据从储存数据单元写入至由储存地址单元 所产生的存储器地址。在一实施例中,储存地址单元并未被绘示出,而储存数据单元则为图 9所示的储存单元126。图10是根据本发明如图1所示的超纯量管线微处理器100的运作流程图。流程 从方块1002开始进行。在方块1002,指令转译器104译码一宏指令132并将其转译为单一 stalu微指令 134。宏指令132指定了容纳(hold) —操作数的一通用寄存器112,一算术逻辑单元运算即 执行于该操作数上以产生一结果并将结果写入存储器中。stalu微指令针对其来源操作数 指定了与宏指令132所指定的相同的通用寄存器112。再者,stalu微指令亦指定了与宏指 令132所指定的相同的算术逻辑单元运算。流程继续进行到方块1004。在方块1004,保留站112将stalu微指令送到储存单元126,流程继续进行到方块 1006。在方块1006,储存单元126从由stalu微指令所指定的通用寄存器112 (或者从转 送总线148)接收储存数据946。如果stalu微指令指定的是一双操作数的算术逻辑单元运 算,则储存单元126再接收来自于一第二通用寄存器112 (或转送总线148)的第二操作数 952。储存单元126的算术逻辑单元162在储存数据946上(以及于指定时,亦包括在第二 操作数952上)执行由stalu微指令所指定的算术逻辑单元运算,以产生算术逻辑单元结 果156。流程继续进行到方块1008。
13
在方块1008,储存单元126将算术逻辑单元结果156写入存储器子系统116的一 储存缓冲器。如上所述,在一实施例中,算术逻辑单元结果156将被写入到的物理存储器地 址亦被储存地址单元写入至该储存缓冲器,以因应一储存地址微指令。流程继续进行到方 块 1012。在方块1012,储存缓冲器将算术逻辑单元结果156写入存储器,流程结束。图11显示传统微处理器的运作流程,用以比对本发明所述的超纯量管线微处理 器100的运作。虽然图1所示的超纯量管线微处理器100中的组件亦存在于图11的描述 中,但必须了解的是传统微处理器中的储存单元并不包括用以在储存数据上执行算术逻辑 单元运算的一算术逻辑单元,且指令转译器并不会针对储存数据产生特别的Stalu微指 令。流程从方块1102开始进行。在方块1102,指令转译器104译码一宏指令132并将的转译为二个微指令134,宏 指令132指定了容纳一操作数的一通用寄存器112,一算术逻辑单元运算即执行于该操作 数上以产生一结果并将结果写入存储器中。第一个转译后的微指令为一算术逻辑单元指 令,该算术逻辑单元指令针对其来源操作数指定了与宏指令132所指定的相同的通用寄存 器112,且该算术逻辑单元指令亦指定了与宏指令132所指定的相同的算术逻辑单元运算。 该算术逻辑单元指令针对其目的操作数指定了一临时寄存器。第二个转译后的微指令为一 储存微指令,该储存微指令针对其来源操作数(意即针对其储存数据)指定了上述临时寄 存器。流程继续进行到方块1104。在方块1104,保留站112将alu微指令送到整数单元122,流程继续进行到方块 1106。在方块1106,整数单元122从alu微指令所指定的通用寄存器112接收来源操作 数,并且在来源操作数上执行由alu微指令所指定的算术逻辑单元运算以产生一结果。流 程继续进行到方块1108与方块1112。在方块1108,整数单元122将结果输出到结果总线152上,流程继续进行到方块 1114。在方块1112,保留站108将储存微指令送到储存单元126,流程继续进行到方块 1114。在方块1114,储存单元126通过结果总线152从整数单元112接收结果,流程继续 进行到方块1116。在方块1116,储存单元126将结果写入储存缓冲器,流程继续进行到方块1118。在方块1118,储存缓冲器将结果写入存储器,流程结束。比较图10与图11可发现,指令转译器104产生一单一 Stalu微指令,且储存单元 126包括一算术逻辑单元162以执行由stalu微指令所指定的算术逻辑单元运算,此有利地 避免了由传统微处理器所引起的转送运作,如图12所示。图12是根据本发明一实施例所述的效果的时间图。图中展示了三个频率周期,图 左侧所示为传统微处理器中由寄存器区隔的管线流阶段,图右侧所示为本发明一实施例的 超纯量管线微处理器100中由寄存器区隔的管线流阶段。在图12所示的范例中,假设了储 存单元126包括单一管线流阶段。然而,需要注意的是在其它实施例中,储存单元126可具 有不同数量的管线流阶段。而在图12所示的范例中,假设了传统微处理器中的整数算术逻辑单元包括单一阶段。在传统微处理器中,一 alu微指令接在整数单元122用以执行指定算术逻辑单元 运算的管线流阶段之后进行,该指定的算术逻辑单元运算是用以于频率周期1内产生一结 果。然后该结果通过转送总线148从整数单元被转送至储存单元,而储存单元于频率周期 2内接收该结果为储存数据。最后在频率周期3,储存数据被写入储存缓冲器。在如图1所示的超纯量管线微处理器100中,一 stalu指令接在储存单元126于频 率周期1的管线流阶段之后进行。相较于传统的微处理器,在频率周期1,储存单元126中 的算术逻辑单元162在储存数据946上(以及于指定时,亦包括在第二操作数952上)执 行由stalu微指令所指定的算术逻辑单元运算,以产生算术逻辑单元结果156。在频率周期 2,由储存单元126所产生的算术逻辑单元结果156被写入储存缓冲器。因此可见,如图1 所示的超纯量管线微处理器100至少在比传统微处理器更早一频率周期时,即产生了算术 逻辑单元结果156并且让储存缓冲器与其它指令可取得算术逻辑单元结果156。而如上述 所言,当信号在转送总线上来去不同执行单元之间所需的距离、以及该信号传输线的阻容 电路时间常数增加时,意即转送延迟增加时,那么本发明所能省下的时间也就跟着提升了。需要注意的是,虽然在图10所述的实施例中,宏指令132指定了用以容纳一操作 数的通用寄存器112,且一算术逻辑单元运算在该操作数上执行以产生一结果而该结果将 被写入存储器,但指令转译器104可产生一 stalu微指令以及其它微指令(包括Idalu微 指令)以实作其它宏指令。举例来说,某些宏指令132于一存储器操作数上指定了读取、修 改、或写入类型的运算,也就是说,宏指令指定了一算术逻辑单元运算以及一存储器地址, 且该存储器地址为该算术逻辑单元运算所执行其上的操作数的地址,而该结果将被写回该 存储器地址。针对这样的宏指令,本发明的指令转译器104可产生其后接着一 stalu微指 令的一传统的加载微指令,或者其后接着一传统的储存微指令的一 Idalu微指令。本发明的另一优点是通过将加载微指令与alu (alu与储存)微指令合并至 单一 Idalu(Stalu)微指令,在超纯量管线微处理器100中,一次仅会耗用一个指令槽 (instruction slot)而非两个指令槽。举例来说,ldalu(stalu)微指令仅分别占用寄存器 别名表116、保留站108、以及重排缓冲器114中的一个项目(entry)而已,而非如加载微指 令与alu (alu与储存)微指令会分别占用寄存器别名表116、保留站108、以及重排缓冲器 114中的两个项目。特别是通过整理出重排缓冲器114中的更多空间给更多微指令使用, Idalu微指令可能创造出用以送出指令到执行单元122/124/126的一较大的微指令集用池 (pool)或窗口,因而可能增加超纯量管线微处理器100的前视(Iookahead)能力,使更加充 分利用程序执行时的指令级平行化,并且可提升执行单元122/124/126的使用状况。再者, 单一 Idalu微指令只会产生两次对通用寄存器112的存取(读取来源操作数、以及写入结 果),而加载与alu微指令序列则产生四次存取。因此,本发明可降低通用寄存器112的拥 塞状况,并且可使超纯量管线微处理器100的设计包括较小、较快、耗用较低功率、以及较 不复杂的通用寄存器112。最后,指令转译器104每个频率周期可产生的微指令数量是有限 的(该数量在一实施例中为3,在另一实施例中则为4)。另根据一实施例,为了降低指令转 译器104的复杂度,指令转译器104必须在同一个频率周期内产生实作一已知宏指令所需 的所有微指令,这使得部分的有限数量指令槽在某些频率周期时是空着的,因此,让指令转 译器104能够少产生一微指令以实作某些宏指令,可使指令转译器104充分利用有限数量指令槽并以较快的速率转译宏指令。纵然上述实施例是针对x86架构的微处理器,但本发明并不只限定于x86架构的 微处理器。反之,将一或多个算术逻辑单元并入超纯量管线微处理器中的管线加载以及/ 或储存单元,此一概念亦可运用于其它架构的微处理器中。另外,虽然上述实施例所描述的指令转译器产生Idalu微指令(或Stalu微指 令),例如图3中的方块302,以因应一复杂的宏指令需要从存储器进行读取与一算术逻辑 单元运算(或者需要一算术逻辑单元运算与进行写入存储器),但在其它实施例中,指令转 译器可辨识一宏指令序列,该宏指令序列中的第一个宏指令将一操作数从存储器搬移至一 寄存器,其后该宏指令序列中的第二个宏指令在该寄存器中的该操作数上执行一算术逻辑 单元运算并将该操作数写入一目的寄存器(或者该宏指令序列中的第一个宏指令在寄存 器中的操作数上执行一算术逻辑单元运算并将该操作数写入一目的寄存器,其后该宏指令 序列中的第二个宏指令再将该操作数从目的寄存器搬移至存储器)。指令转译器将这两个 宏指令整合至一单一 Idalu微指令,该单一 Idalu微指令指示加载单元在将加载数据写入 目的寄存器的前,于加载数据上执行算术逻辑单元运算(或者整合至一单一 stalu微指令, 该单一 stalu微指令只是储存单元在将储存数据写入存储器的前,于储存数据上执行算术 逻辑单元运算),从而避免掉结果转送延迟。换言之,Idalu微指令与stalu微指令可运用 在各式情况中并带来效益,不止是因应转译单一宏指令。在另一范例的一实施例中,超纯量 管线微处理器100包括一微码单元与一微序列发生器(microseqUencer),微码单元所包括 的微码例程的微码指令是储存于一微码存储器,而微序列发生器则将微指令定序于超纯量 管线微处理器100的管线流中。该微码可供指令转译器104使用以实作复杂的宏指令、或 执行其它功能,例如内建自我测试(Built-in Self-Test, BIST)或超纯量管线微处理器 100的其它初始化功能。该微码可有利地随时视需求使用Idalu微指令与Stalu微指令以 降低程序于超纯量管线微处理器100上的执行时间以及/或程序代码大小。此外,上述实施例所描述位于加载单元或储存单元中的算术逻辑单元需要少于一 个频率周期以执行算术逻辑单元运算(意即算术逻辑单元运算是执行于加载单元或储存 单元的最后管线流阶段所对应的频率周期的一部份),使得执行所有加载/储存指令所需 的频率周期数量都是相同的,不论加载/储存指令为正规的加载/储存指令或为算术逻辑 单元整合加载/储存指令,虽然如此,但在其它实施例中,算术逻辑单元运算所占用的时间 多于加载单元或储存单元的最后管线流阶段的可用时间,因此视运算逻辑单元运算的复杂 度而定,将造成算术逻辑单元整合加载/储存指令比常规加载/储存指令占用更多频率周 期,以及/或造成某些算术逻辑单元整合加载/储存指令比其它算术逻辑单元整合加载/ 储存指令占用更多频率周期。在此实施例中,保留站中的指令排序器(scheduler)则必须 考虑执行一加载/储存指令所需的频率周期的可变量量。本发明虽以各种实施例揭露如上,然而其仅为范例参考而非用以限定本发明的 范围,任何熟习此项技艺者,在不脱离本发明的精神和范围内,当可做些许的更动与润饰。 举例来说,软件可实现相关于本发明的装置与方法的功能、制造、模块化(modeling)、模拟 (simulation)、描述(description)、以及/或测试等等。该软件可使用一般程序设计语言 (如C、C++)、硬件描述语言(如=Verilog HDL、VHDL等等)、或其它可得的程序来实作。且 该软件可配置于任何公知的计算机可使用媒体中,例如半导体、磁盘、或光盘(如只读记忆光盘(Compact Disc Read-Only Memory,CD-ROM)、数字多功能光盘(Digital Versatile Disc Read-Only Memory, DVD-ROM)等等)。本发明所述的装置与方法的实施例可包括于一 半导体智财核心(semiconductorintellectual property core)中,例如微处理器核心 (如嵌入于硬件描述语言中),再进一步转换为硬件的集成电路产品。另外,本发明所述的 装置与方法可以硬件与软件的一组合方式嵌入。因此,上述实施例并非用以限定本发明的 范围,本发明的保护范围当视后附的权利要求所界定者为准。特别是,本发明可实作于一微 处理器装置,且该微处理器装置可使用于一般用途的计算机。最后,熟习此项技艺者应当可 理解在不脱离本发明的精神和范围内,以上述所揭露的实施例与概念设计出与本发明相同 目的的其它架构。
权利要求
一种超纯量管线微处理器,包括一寄存器集合,由该超纯量管线微处理器的一指令集架构所界定;一高速缓存;多个执行单元;以及一储存单元,耦接至上述高速缓存,上述储存单元是不同于该超纯量管线微处理器的其它执行单元,且上述储存单元包括一算术逻辑单元,其中上述储存单元是用以接收一第一指令,上述第一指令指定上述寄存器集合的一第一来源寄存器、以及在一第一来源操作数上执行并产生一结果的一第一运算,其中上述储存单元是用以自上述第一来源寄存器读取上述第一来源操作数,其中上述算术逻辑单元是用以在上述第一来源操作数上执行上述第一运算以产生上述结果,而非将上述第一来源操作数转送至上述其它执行单元的任一者以在上述第一来源操作数上执行上述第一运算以产生上述结果,其中上述储存单元更用以将上述结果写入上述高速缓存。
2.如权利要求1所述的超纯量管线微处理器,其中上述储存单元是用以通过一储存缓 冲器间接将上述结果写入至上述高速缓存。
3.如权利要求1所述的超纯量管线微处理器,其中上述储存单元更用以接收一第二 指令,上述第二指令指定上述寄存器集合中用以接收一第二来源操作数的一第二来源寄存 器,而上述第二来源操作数的接收不需要指定在上述第二来源操作数上执行的一第二运 算,其中上述储存单元以相同数量的频率周期执行上述第一指令与上述第二指令。
4.如权利要求1所述的超纯量管线微处理器,其中上述超纯量管线微处理器的其它执 行单元皆非用以写入上述高速缓存。
5.如权利要求1所述的超纯量管线微处理器,其中上述其它执行单元的至少一者具有 一算术逻辑单元,上述算术逻辑单元是用以执行由上述第一指令所指定的上述第一运算, 而上述储存单元不会将上述第一来源操作数转送至上述其它执行单元的至少一者的任一 者以于上述第一来源操作数上执行上述第一运算以产生上述结果。
6.如权利要求1所述的超纯量管线微处理器,其中上述储存单元是用以执行写入上述 高速缓存的所有指令,且上述其它执行单元皆非用以执行写入上述高速缓存的指令。
7.如权利要求1所述的超纯量管线微处理器,其中上述第一指令更指定一第二来源操 作数,其中上述第一运算是执行于上述第一来源操作数与上述第二来源操作数以产生上述 结果,其中上述第二来源操作数是由上述寄存器集合的一寄存器提供至上述储存单元。
8.如权利要求1所述的超纯量管线微处理器,其中上述储存单元仅需单次存取上述寄 存器集合以执行上述第一指令。
9.如权利要求1所述的超纯量管线微处理器,更包括一指令转译器,用以将一第一宏指令转译为由上述储存单元所执行的上述第一指令, 其中上述第一宏指令是由上述指令集架构所界定。
10.如权利要求8所述的超纯量管线微处理器,其中上述指令转译器更用以将由上述 指令集架构所界定的一第二宏指令转译为一对指令,上述对指令包括上述第一指令与一第 二指令,其中上述第二指令是由上述其它执行单元之一者所执行,且上述其它执行单元之 一者将上述第一来源操作数自上述高速缓存加载至上述第一来源寄存器,上述第一指令是自上述第一来源寄存器读取上述第一来源操作数。
11.如权利要求10所述的超纯量管线微处理器,其中上述指令转译器是用以将由上述 指令集架构所界定的上述第一宏指令与上述第二宏指令转译为上述第一指令。
12.如权利要求1所述的超纯量管线微处理器,其中上述第一运算包括以下运算的至 少一者一零值延伸运算,上述零值延伸运算将上述第一来源操作数进行零值延伸至上述高速 缓存的一目的寄存器的一大小;一布尔反运算,上述布尔反运算将上述第一来源操作数的每个位反向; 一不等门运算,上述不等门运算产生上述第一来源操作数的一二补码负位; 一增量运算,上述增量运算将上述第一来源操作数增量; 一减量运算,上述减量运算将上述第一来源操作数减量; 一符号延伸运算,上述符号延伸运算将上述第一来源操作数进行符号延伸; 一零值侦测运算,上述零值侦测运算于上述第一来源操作数为零时,产生上述结果的 值为真,而于上述第一来源操作数为非零时,产生上述结果的值为假;一壹值侦测运算,上述壹值侦测运算于上述第一来源操作数的所有位皆为二进制的壹 值时,产生上述结果的值为真,反的则产生上述结果的值为假;一数据格式转换运算,上述数据格式转换运算将上述第一来源操作数格式化为一数据 格式,且上述数据格式不同于上述第一来源操作数自上述高速缓存被读出时的数据格式, 其中上述第一指令指定上述数据格式;一布尔逻辑运算,其中上述算术逻辑单元在上述第一来源操作数与一第二来源操作数 上执行上述布尔逻辑运算以产生上述结果;以及一算术运算,其中上述算术逻辑单元在上述第一来源操作数与一第二来源操作数上执 行上述算术运算以产生上述结果。
13.一种指令处理方法,适用于一超纯量管线微处理器,该超纯量管线微处理器具有由 该超纯量管线微处理器的一指令集架构所界定的一寄存器集合、一高速缓存、多个执行单 元、以及不同于该超纯量管线微处理器的其它执行单元的一储存单元,上述指令处理方法 包括由上述储存单元接收一第一指令,上述第一指令指定上述寄存器集合的一第一来源寄 存器、以及在一第一来源操作数上执行并产生一结果的一第一运算; 由上述储存单元自上述第一来源寄存器读取上述第一来源操作数; 由上述储存单元的一算术逻辑单元在上述第一来源操作数上执行上述第一运算以产 生上述结果,而非将上述第一来源操作数转送至上述其它执行单元的任一者以在上述第一 来源操作数上执行上述第一运算以产生上述结果;以及 由上述储存单元将上述结果写入上述高速缓存。
14.如权利要求13所述的指令处理方法,其中上述储存单元是用以通过一储存缓冲器 间接将上述结果写入至上述高速缓存。
15.如权利要求13所述的指令处理方法,其中上述储存单元更用以接收一第二指令, 上述第二指令指定上述寄存器集合中用以接收一第二来源操作数的一第二来源寄存器,而 上述第二来源操作数的接收不需要指定在上述第二来源操作数上执行的一第二运算,其中上述储存单元以相同数量的频率周期执行上述第一指令与上述第二指令。
16.如权利要求13所述的指令处理方法,其中上述第一运算是执行于上述第一来源操 作数与上述第二来源操作数以产生上述结果。
17.如权利要求13所述的指令处理方法,更包括将一第一宏指令转译为由上述储存单元所执行的上述第一指令,其中上述第一宏指令 是由上述指令集架构所界定。
18.如权利要求17所述的指令处理方法,更包括将由上述指令集架构所界定的一第二宏指令转译为一对指令,上述对指令包括上述第 一指令与一第二指令,其中上述第二指令是由上述其它执行单元之一者所执行,且上述其 它执行单元之一者将上述第一来源操作数自上述高速缓存加载至上述第一来源寄存器,上 述第一指令是自上述第一来源寄存器读取上述第一来源操作数。
19.如权利要求18所述的指令处理方法,更包括将由上述指令集架构所界定的上述第一宏指令与上述第二宏指令转译为上述第一指令。
20.如权利要求19所述的指令处理方法,其中上述第一运算包括以下运算的至少一者一零值延伸运算、一布尔反运算、一不等门运算、一增量运算、一减量运算、一符号延伸 运算、一零值侦测运算、一壹值侦测运算、一数据格式转换运算、一布尔逻辑运算、一算数运 算;其中上述算术逻辑单元在上述第一来源操作数与一第二来源操作数上执行上述布尔 逻辑运算以产生上述结果;其中上述算术逻辑单元在上述第一来源操作数与一第二来源操作数上执行上述算术 运算以产生上述结果。
全文摘要
一种超纯量管线微处理器及指令处理方法,该超纯量管线微处理器包括寄存器集合,由超纯量管线微处理器的指令集架构所界定;高速缓存;多个执行单元;以及储存单元,耦接至高速缓存,储存单元是不同于超纯量管线微处理器的其它执行单元,且储存单元包括算术逻辑单元,其中储存单元接收第一指令,第一指令指定寄存器集合的第一来源寄存器、以及在第一来源操作数上执行并产生结果的第一运算,其中储存单元自第一来源寄存器读取第一来源操作数,其中算术逻辑单元在第一来源操作数上执行第一运算以产生结果,而非将第一来源操作数转送至其它执行单元的任一者以在第一来源操作数上执行第一运算以产生结果,其中储存单元将结果写入高速缓存。
文档编号G06F9/38GK101944012SQ20101024315
公开日2011年1月12日 申请日期2010年7月28日 优先权日2009年8月7日
发明者吉拉德·M·卡尔, 柯林·艾迪, 罗德尼·E·虎克 申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1