CN1291310C - 微处理器中用于执行非直接近跳跃运算的装置及方法 - Google Patents

微处理器中用于执行非直接近跳跃运算的装置及方法 Download PDF

Info

Publication number
CN1291310C
CN1291310C CN 200410043101 CN200410043101A CN1291310C CN 1291310 C CN1291310 C CN 1291310C CN 200410043101 CN200410043101 CN 200410043101 CN 200410043101 A CN200410043101 A CN 200410043101A CN 1291310 C CN1291310 C CN 1291310C
Authority
CN
China
Prior art keywords
jump
logic device
order
micro
loading
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 - Lifetime
Application number
CN 200410043101
Other languages
English (en)
Other versions
CN1570854A (zh
Inventor
葛拉·M·柯尔
G·葛兰·亨利
泰瑞·派克斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
INTELLIGENCE FIRST CO
Original Assignee
INTELLIGENCE FIRST CO
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by INTELLIGENCE FIRST CO filed Critical INTELLIGENCE FIRST CO
Priority to CN 200410043101 priority Critical patent/CN1291310C/zh
Publication of CN1570854A publication Critical patent/CN1570854A/zh
Application granted granted Critical
Publication of CN1291310C publication Critical patent/CN1291310C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)

Abstract

本发明公开了一种微处理器中可执行一非直接近跳跃运算的装置及方法。此微处理器装置包括成对的运算转译逻辑器、加载逻辑器以及执行逻辑器。而成对的运算转译逻辑器可接收一非直接近跳跃宏指令,并产生一加载-跳跃微指令,其中该加载-跳跃微指令指引一微处理器内的管线层来执行非直接近跳跃运算。加载逻辑器则耦接至该成对运算转译逻辑器,以及接收加载-跳跃微指令。加载逻辑器自存储器中获取一补偿值,此补偿值指示一跳跃目标,而该跳跃目标与相应于非直接近跳跃宏指令的一指令地址相关。至于执行逻辑器则耦接至该加载逻辑器。加载逻辑器可接收补偿值,并利用指令地址与补偿值来产生一目标地址,其载明了跳跃目标以供近跳跃运算之用。

Description

微处理器中用于执行非直接近跳跃运算的装置及方法
技术领域
本发明涉及微电子的领域,尤其是涉及管线化微处理器中用以有效率地执行非直接近跳跃操作的装置及方法。
背景技术
早期的微处理器一次只执行一个指令。相对应地,每一个个别的指令自存储器中被提取,而由该指令所指定的所有功能是由微处理器内的功能单元所执行,直到所有的功能被完成为止。当所有的功能被完成时,此一个别指令将被收回(retire),而下一个指令将自存储器中被提取以供执行。虽然早期微处理器中的程序指令执行让人较容易了解,但其指令的执行效率却非常缓慢。因此设计者便不断致力于修改微处理器的架构以期增进指令的执行速度或吞吐量(throughput)。近年来,管线化结构已普遍应用在微处理器上。管线化结构可将一微处理器的功能单元打散而成为一连串相继的操作,其是非常相似于一装配在线的各个阶段。相对应地,当紧接着微处理器内一特定层前的一层正执行由一第二指令所规定的一运算时,该特定层将可能执行由一第一指令所规定的另一运算,其中在一应用程序中第二指令是于第一指令之后。而当所有管线层正执行运算时,一微处理器的有效吞吐量(throughput)即可获得。而当一特定管线层花太多时间处理其所规定的指令时,无效率的问题将会出现。在此情况下,一暂停信号将早于管线层前发出以强制保持住这些管线层,直到该特定层完成其功能为止。管线结构已持续发展成可于管线的一单一遍历(traversal)中完成许多由程序指令(或称宏指令)所规定的运算。举例来说,借助同时自一寄存器层内的寄存器中获取两个暂存操作数,并将此两个暂存操作数相加以产生一后续的执行层中的一结果,最后再将该结果回写至该执行层后面的一结果回写层的一结果寄存器中,则一“寄存器到寄存器(register-to-register)”增加运算便可完成。执行该“寄存器到寄存器”增加运算的一单一指令便可用来以一管线时钟来同步化地传递至后续的管线层,其最终结果为一使用者可在单一管线循环中经历“寄存器到寄存器”的增加。
虽然有许多宏指令在整个管线的单一遍历中可被执行,但仍有不少指令因其所规定的运算太过复杂,以致无法在一单一遍历中执行。其中的一特别的例子即为一非直接近跳跃指令,其规定了一非直接近跳跃运算。此一非直接近跳跃指令要求一跳跃补偿值自存储器中被获取出,并被加入至一现行指令指针中以产生一目标地址而供程控转移之用。但大部份现今的微处理器提供一单一管线层,其可于存储器中存取操作数,或利用所提供的操作数执行一算数或逻辑器计算。这两种运算的情况无法于相同的管线循环中执行。相对应地,当指令于管线中进行时,一非直接近跳跃运算将要求两个次运算被加以执行。首先,补偿值必须自存储器中获取。接着,此补偿值随着指令指针而可用来产生目标地址。当自存储器中获取补偿值的运算被提供时,其后的提取指令动作将会暂停。而当增加的运算被提供时,提取指令将可继续下去。
在一管线化的微处理器中要求实现多重管线的任何运算型态均为不确定的,其主要是因为管线层的无效率利用造成。因此本发明便提供一微处理器中的一装置及方法,其可使一非直接近跳跃运算于一单一管线循环中完成。
发明内容
本发明提供一于一管线化微处理器中完成非直接近跳跃运算的装置。在本发明的一较佳实施例中,一微处理器装置提供来执行一非直接近跳跃运算。此微处理器装置包括成对的转译逻辑器、加载逻辑器以及执行逻辑器。该成对的运算转译逻辑器可接收一非直接近跳跃宏指令,并产生一加载-跳跃微指令,而在其中该加载-跳跃微指令可指引在一微处理器中的管线层执行非直接近跳跃运算。加载逻辑器耦接至该成队的运算转译逻辑器,并可接收加载-跳跃微指令。加载逻辑器可自存储器中获取一补偿值,而此补偿值则指示了一跳跃终点,其相关于根据该非直接近跳跃宏指令的一指令地址。执行逻辑器耦接至该加载逻辑器。此执行逻辑器可接收补偿值,并利用该指令地址与补偿值来产生一目标地址,其可载明该跳跃终点以供近跳跃运算使用。
其中,该加载-跳跃微指令指引该加载逻辑器以获取该补偿值,并指引该执行逻辑器以产生该目标地址。该加载逻辑器位于这些管线层中的一第一层,而该执行逻辑器位于这些管线层中的一第二层,其中该第二层在该第一层之后,并且该加载-跳跃微指令在一单一循环内通过这些管线层的该第一层进行。该加载-跳跃微指令在一单一循环内通过这些管线层的该第二层进行。该第一层将该补偿值与该加载-跳跃微指令递送至该第二层以产生该目标地址。
本发明也提供一微处理器中用来执行一非直接近跳跃宏指令的装置。此装置包括一成对运算转译器,其可将非直接近跳跃宏指令转译为一加载-跳跃微指令,该加载-跳跃微指令则可指示该微处理器执行两个运算。其中该两个运算由微处理器中的两个前后层所执行。而此两个前后层指一加载层与一执行层。加载层可执行该两个运算中的第一运算,此第一运算包括自存储器中的一区域获取补偿值。执行层则耦接至该加载层。执行层可执行该两个运算中的第二运算,而其中该第二运算则包括接收该补偿值并使用该补偿值与非直接近跳跃宏指令相关的一指令指针来产生一跳跃目标地址。
其中,微处理器中该执行层在该加载层之后。该加载-跳跃微指令在一单一管线循环内通过该加载层或该执行层进行。该加载层将该补偿值数据与该加载-跳跃微指令递送至该执行层以产生该跳跃目标地址。
本发明还提供一管线化微处理器中用来执行一非直接近跳跃运算的方法。此方法具有一加载-跳跃微指令与加载逻辑器。该加载-跳跃微指令相关于由转译逻辑器所接收和转译的一非直接近跳跃宏指令。而该加载逻辑器则可自一存储器位置中接收该加载-跳跃微指令以及获取补偿值数据,并可提供该补偿值数据给微处理器中一后续层的执行逻辑器,而其中,该执行逻辑器可产生一目标地址以指引一单一管线循环中的近跳跃运算。
其中,该加载-跳跃微指令指引该加载逻辑器以获取该补偿值数据,以及指引该执行逻辑器以产生该目标地址。该加载-跳跃微指令在一单一管线循环内的该加载层中进行。
本发明的其它特征、利益及优点,在参阅本说明书的其余部分和附图后,将可更加清楚。
附图说明
图1为已知技术的管线化微处理器的管线层方框示意图。
图2的表格记录了图1中微处理器所执行的一非直接近跳跃指令。
图3为本发明的微处理器在成对加载-跳跃运算时的方框示意图。
图4表格记录了图3中微处理器所执行的一非直接近跳跃指令。
附图符号说明
100-微处理器               101-提取层
102-转译层                 103-暂存层
104-地址层                 105-数据/算数逻辑单元
106-回写层                 200-表格
300-微处理器               301-提取逻辑器
302-指令存储器/高速缓存    303-指令缓冲器
304-成对运算转译逻辑器     305-指令队列
306-队列缓冲器             307-临时文件
308-寄存器                 309-微指令缓冲器
310-操作数寄存器           311-操作数寄存器
312-加载逻辑器             313-数据高速缓存
314-微指令缓冲器           315-操作数缓冲器
316-操作数缓冲器           317-操作数缓冲器
318-执行逻辑器             319-微指令缓冲器
320-结果寄存器             400-表格
具体实施方式
鉴于上述所讨论的关于现今管线化微处理器的非直接跳跃指令执行,在此我们将利用图1与图2来讨论已知技术中传统管线化结构的限制,其将妨碍非直接近跳跃的有效执行。接着本发明的内容可参照图3与图4而加以说明。利用本发明中的微处理器,非直接近跳跃运算将可比现今的微处理器减少一半的管线循环。
请参考图1,其为用以说明管线化微处理器100的层的方框图。微处理器100包括有一提取层101、转译层102、暂存层103、地址层104、数据/算数逻辑单元(ALU)层105以及回写层106。
提取层101可自外部存储器中(图中未标示)获取宏指令,而这些宏指令将由微处理器100所执行。转译层102可将该被提取的宏指令转译为相关的微指令。暂存层103可自一临时文件(图中未标示)获取由微指令所载明的操作数以供管线的后续层104至106中的逻辑器(图中未标示)使用。地址层104可产生由微指令所载明的存储器地址,以用于数据储存以及获取运算。数据/算数逻辑单元层105则可以执行算数的、逻辑的或其它规定的运算,以产生使用自临时文件所获取的操作数的结果;数据/算数逻辑单元层105亦可以存取外部存储器以利用在地址层104中所产生的地址来储存或获取存储器操作数。回写层106利用数据/算数逻辑单元层105中的外部存储器所产生或维持的结果来更新临时文件中的寄存器。微指令可依据一管线频率信号(图中未标示)来同步化地在每一个后续的层中依序进行。为了实现最佳的管线性能,当一特定微指令正在管线中的一特定层执行时,一前面的微指令将在一后续管线层中执行,而一后面的微指令则将在一先前的管线层中执行。换言之,在一特定的管线循环中,微处理器100的所有层101-106将执行其建构的功能;没有一个层会闲置。
然而最佳的管线吞吐量(throughput)很少可以实现,其主因是由宏指令所规定的许多运算太过复杂,以至于其运算势将打散成两个或更多的子运算,其中每一个子运算由一相对应的微指令所规定。因此,当这种宏指令的其中之一被提供给转译层102时,在转译层102之前的层必暂停(stall),此时转译层102将产生微指令以完成该复杂的运算。若由一宏指令所规定的一特定运算可通过一单一微指令实施,其中该单一微指令可无阻碍地在整个管线中进行,则该被规定的运算将被称为一单一循环运转。若该特定的运算要求三个微指令,则其被称为一三循环运转。明显地,减少被要求来实施一运算的微指令数目是有益的,其中该运算由一宏指令所规定。
由宏指令所指定的运算(或功能)被视为复杂的原因有很多。其中一个特定的原因是因为传统管线化微处理器中的逻辑功能的结构布局(或配置)。举例来说,若一宏指令指定一需要超过一个互斥子运算的运算以在层101到106中的一特定层中执行时,该宏指令将必须分解为相对应的数个微指令,其中每一个微指令指定了一个互斥子运算。相对应地,一第一微指令可指引层101至106间的一特定层来执行一第一互斥子运算。第一微指令后为一第二微指令,其可指引层101至106间的一特定层来执行一第二互斥子运算。后续的微指令会持续依序产生直到所有的互斥子运算都已被指引与执行完毕为止。
本发明就上述多重微指令问题的一特定例子,搭配图2,说明如下。
请参考图2,表200记录了图1的微处理器100所执行的一非直接近跳跃指令。表200具有7列,其中的六列分别表示图1所述的101至106间的管线层,另外一列则为循环列(或循环的序数),其表示管线循环相关于在整个微处理器100的管线层101到106间的指令的传进。循环列的数目与相继的管线循环有关,其每一个相对应于微处理器100内部的一管线(或核心)频率信号(图中未标示)的一特定循环数目。本领域技术人员可了解在现今的管线化微处理器100中,一般来说,一个管线循环相关于一核心频率周期。现行讨论的指令详细地描述在表中的提取至回写列间;而之前与之后的指令若非相关于现行讨论则表示为“-”。在微处理器管线中的一暂停指令标示为“暂停”。而一暂停发生的时机为当一101到106之间的特定管线层被阻碍执行其被指定的相对应于管线循环的功能时。
图2描述了一传统微处理器100的限制,其因多重微指令生成的需求以完成互斥子运算,其中互斥子运算相关于由一特定宏指令JMP[EAX]所指定的一运算。此一特定宏指令JMP[EAX]为一非直接近跳跃宏指令,其根据与一x86兼容微处理器相称的架构方式。x86架构可在此处使用的原因是x86兼容的微处理器及其所相关联的宏指令广泛使用于产业上,然而本领域技术人员应可明了下面讨论的问题是普遍发生在除了x86外的微处理器架构上。
在第一循环中,在提取层101中的逻辑器可自存储器中(图中未标示)获取(或提取)非直接近跳跃宏指令JMP[EAX]。本领域技术人员就可明了此处所谓的“存储器”包括磁盘、只读存储器(ROM)、随机存取存储器(RAM)、分离式(off-chip)与内嵌式(on-chip)高速缓存等。一宏作业码JMP可指引微处理器100执行一无条件跳跃(亦称为一分支)至一新位置,此一新位置的地址(亦称为一跳跃目标地址、跳跃目标或目标地址)与非直接近跳跃宏指令的地址相关。近跳跃宏指令的地址称为指令地址、现行指令指针、或是现行程序记数器。为了决定目标地址,补偿值数据(或补偿值)加入至指令地址中,此补偿值数据可为正亦可为负。补偿值数据并不是直接由非直接近跳跃宏指令所规定;补偿值数据储存在数据存储器(图中未标示)中的一位置中,其地址储存在微处理器100中的一寄存器EAX中。而为了完成JMP[EAX]所规定的非直接近跳跃运算,微处理器100必须首先存取寄存器EAX以获得存储器中的补偿值数据地址。一旦补偿值数据的地址获得后,微处理器100必须在存储器中存取地址以获取补偿值。接着此补偿值必须加至非直接近跳跃宏指令JMP[EAX]的指令地址,如此便可产生跳跃目标地址。在产生完跳跃目标地址后,微处理器100的程控逻辑器(图中未标示)将开始自目标地址中连续地提取指令。在循环1中,非直接近跳跃宏指令JMP[EAX]由转译层102的逻辑器在后续循环时在一指令缓冲器(图中未标示)中所提供以用于存取。
在循环2中,非直接近跳跃宏指令JMP[EAX]在转译层102中进行。而在其中非直接近跳跃宏指令JMP[EAX]转译为两个微指令。第一个微指令LDT1,[EAX]可指引微处理器100以1)自寄存器EAX中获取存储器的补偿值地址,2)利用EAX所提供的地址以自存储器中获取补偿值数据,以及3)将所获取到的补偿值储存入寄存器T1。第二个微指令JMP T1则可指引微处理器以无条件地分支至一区域,而该区域的地址存在寄存器T1中。T1为微处理器100中的一寄存器,其为结构性地无形,换言之,其无法经由宏指令所规定。
非直接近跳跃宏指令JMP[EAX]所规定的非直接近跳跃运算必须分解为两个微指令LD T1,[EAX]与JMP T1的原因是,在数据/算数逻辑单元层105中,两个互斥子运算必须执行以完成非直接近跳跃运算。回溯图1的讨论,数据/算数逻辑单元层105可执行算数的、逻辑的或其它规定的运算,以产生使用自临时文件所获取的操作数的结果;或是存取外部存储器以利用在地址层104中所产生的地址来储存或获取存储器操作数。而为了完成非直接近跳跃运算,数据/算数逻辑单元层105必须1)存取外部存储器以获取补偿值数据供跳跃使用,以及2)利用JMP[EAX]的指令地址与相对的补偿值来产生目标地址。但由于数据/算数逻辑单元层105在一给定的管线循环里仅可一次执行两种子运算的其中之一,所以必须要求两个微指令LD T1,[EAX]与JMP T1。而因为完成一非直接近跳跃运算需要两个微指令,因此便称为一二循环运算。
因此,在循环2中,转译层102产生第一微指令LD T1,[EAX]。此外,在循环2中,一暂停(STALL)指令提供给提取层101以防止后续指令的提取,因为转译层102需要一额外的管线循环以产生第二微指令JMP T1。
在循环3中,第一微指令LD T1,[EAX]在暂存层103中进行。而在其中寄存器EAX被存取以获取补偿值数据的存储器地址。此外在循环3中,转译层102产生第二微指令JMP T1。并且在循环3中,暂停指令将自提取层101中移除。
在循环4中,LD T1,[EAX]在地址层104中进行。而在其中自循环3中的EAX处所获取的存储器地址被转译以在一系统存储器总线上显示。本领域技术人员将可明了现今的微处理器100时常使用虚拟地址结构,其需要将虚拟地址转译为实体地址以在一系统存储器总线存取存储器。此外在循环4中,JMP T1在暂存层103中进行。而在其中并无任何功能被规定。
在循环5中,LD T1,[EAX]在数据/算数逻辑单元层105进行。在其中,地址层104所提供的已转译地址被用来存取存储器的位置以获取补偿值数据,进而提供给非直接近跳跃运算,而该补偿值数据存在寄存器T1中,其可由后续微指令所存取。此外在循环5中,JMP T1在地址层104中进行。在其中并无任何功能被规定。
在循环6中,LD T1,[EAX]在回写层106中进行。在其中并无任何功能被规定,且第一微指令LD T1,[EAX]可完成执行。此外在循环6中,JMP T1在数据/算数逻辑单元层105进行。在其中补偿值数据自寄存器T1中获取出,并与非直接近跳跃宏指令JMP[EAX]的指令地址一起被用来产生目标地址,以供跳跃使用。跳跃目标地址因此提供给程控逻辑器,如此一来非直接近跳跃便可完成。
在循环7中,JMP T1在回写层106中进行。在其中并无任何功能被规定,且第二微指令可完成执行。
为了使目的清楚,上述的讨论并无提及一现行数据管线微处理器100的其它熟知用来执行程控转换运算的特性,例如分支预测与分支控制技术等。本领域技术人员应当明了,已产生的目标地址可提供给提取层101中的分支控制逻辑器以改变程序宏指令的提取,且当可知悉在目标地址产生前,分支预测技术可提供后续宏指令的推测性提取与执行。不过,由于传统微处理器100内此处所描述的数据/算数逻辑单元层105的互斥限制,其将使非直接近跳跃运算形成一二循环运算,进而降低管线效能。
非直接近跳跃运算已广泛地使用于现今的台式或笔记型计算机的应用程序中。因此,上述搭配图1与图2所讨论的管线无效率事例所导致的较缓慢执行,便为使用者所不愿见到的。本发明的目的便以克服上述的问题。搭配图3与图4,本发明可实现一非直接近跳跃运算的单一循环执行,其是使用一微处理器管线中的功能与相对应逻辑器的创新配置,以及一利用这些创新管线特点的非直接近跳跃微指令。
请参考图3,其为本发明一微处理器300在成对加载-跳跃运算时的方框示意图。此微处理器包括有一具有提取逻辑器301的提取层、一具有成对运算转译逻辑器304和一微指令队列305的转译层、一具有一临时文件307的暂存层、一具有加载逻辑器312的加载层、以及一具有执行逻辑器318的执行层。为了明确本发明的目的,加载层之前的层(如:地址层)以及执行层之后的层(如:回写层)将不在图中显示。相对于图1、2所讨论的传统微处理器100,本发明的微处理器300配置有存储器检索功能给一加载层,该加载层自一用来执行算数与逻辑功能的执行层中所分出。此微处理器还包括有成对的运算转译逻辑器304,其可利用该分离的加载与执行层以减少管线循环的数目,而管线循环用于成对的加载-执行功能的执行,其中一种加载-执行功能可为非直接近跳跃运算。
提取逻辑器301可自外部存储器或指令存储器/高速缓存302中提取宏指令,并将这些宏指令提供给一指令缓冲器303。成对的运算转译逻辑器304可自指令缓冲器303中接收宏指令,并将这些宏指令转译为一相对应的微指令序列,其可指引微处理器完成由宏指令所规定的运算。每一个所产生的微指令依序提供给微指令队列中的一队列缓冲器306。若一非直接近跳跃宏指令自指令缓冲器303处被接收,如同x86中的非直接近跳跃宏指令JMP[EAX]一般,则成对运算转译逻辑器304会将非直接近跳跃宏指令转译为一单一加载-跳跃微指令,其可引导微处理器300来1)存取由非直接近跳跃宏指令所规定的一寄存器(如:图3所示的寄存器EAX)以获得供近跳跃运算所需的一补偿值的一存储器位置,2)在该存储器位置处存取一数据高速缓存313(或是外部存储器)以接收用于跳跃运算的补偿值,以及3)产生用于以上述的补偿值来进行非直接近跳跃运算的一跳跃目标地址。依据本发明的方法可能在一单一微指令中规定所有上述的三个工作,因为用于执行层中的一未解决计算的存储器数据(即补偿值)不再为互斥运算。事实上,虽然一非直接近跳跃运算被用来作为描述本发明内容的工具,本领域技术人员应当明了本发明的范畴包括了成对的加载-执行功能的任何形式,例如加载-增加、加载-减少、加载-逻辑等,而其中被要求于功能内的计算的一操作数必须首先自存储器数据高速缓存313中截取出。
暂存层自微指令队列305中的队列缓冲器306中依序获取微指令。若一被获取的指令指引了信道至临时文件307内的寄存器308,则临时文件307将可存取该寄存器308,并提供寄存器308的内容于操作数寄存器310与311中。此外,微指令传递至微指令缓冲器309中的下一个管线层中。为了使目的清楚,所有的其它相关于一特定宏指令的信息显示于图中,经过微指令缓冲器309而传送,其中该特定宏指令包括有一相应于一联系宏指令的指令地址。
微指令与联系操作数继续朝后续层传送,直到他们到达加载层为止。其中加载逻辑器312用来存取数据高速缓存313以获取数据,当该微指令有如此规定时。加载逻辑器312可自数据高速缓存313处获取数据,并提供其在一获取操作数缓冲器316中以借助执行逻辑器318来进行存取。寄存器操作数亦传送至执行层的操作数1缓冲器315与操作数2缓冲器317中。此外,微指令与其它相关信息传送至执行层的微指令缓冲器314中。依据本发明的一加载-跳跃微指令的一特别例子里,加载逻辑器312存取数据高速缓存313以获取补偿值供非直接近跳跃运算之用,且该补偿值提供给由操作数3缓冲器316中的执行逻辑器318所进行的存取。补偿值指示一跳跃目的或目标地址,其与相应于非直接近跳跃宏指令的一指令地址(与其它相关的微指令数据一起被提供)有关。
执行逻辑器318可自微指令314处接收微指令与有关的信息,以及自操作数缓冲器315到317处接收相关联的操作数数据,并执行所规定的运算以产生一结果,此结果接着提供给一结果寄存器320。此外,微指令与相关联的信息经由微指令缓冲器319传送至后续层。在一加载-跳跃微指令的特别例子中,执行逻辑器318使用由操作数3缓冲器316所提供的补偿值数据以及用于相对应非直接近跳跃宏指令的指令指针(自微指令缓冲器314处所接收)来产生一目标地址,以供非直接近跳跃运算之用。而目标地址提供于结果缓冲器320中,其由程控逻辑器(图中未显示)来存取以将相关联的应用程控转换为由目标地址所指定的目的。
请参考图4,表格400所示为图3的微处理器300所执行的一非直接近跳跃宏指令。表格400具有七列,其中的六列分别表示图3所讨论的相关管线层,另外一列则为循环列(或说循环的序数),其表示相关于在整个微处理器300的管线层间的指令传进的管线循环次数。虽然为了使目标明确,图3并无显示出一地址层,然而在图4中仍然将地址层列于其中以方便描述微指令的进行。同样地,为了突显目的,根据本发明,表格400仅列出微处理器300的执行层以下的层。而与图2的表格200所讨论相似的是,其所注意的指令仅列出提取到执行列,以上及以下与所欲讨论的内容无关的指令标示为“-”。
图4所示的例子可解释本发明的微处理器如何解决传统微处理器100中为了完成互斥子运算而必须产生多重微指令的限制。图4的例子中,这些子运算都相联系于由一特定x86宏指令JMP[EAX]所规定的一运算,不过x86非直接近跳跃指令是用来作为本发明的实施例。在此需了解的是,本发明可应用于其它微处理器指令集构造与复杂的宏指令中。
在循环1中,微处理器300提取层中的提取逻辑器301自指令存储器/高速缓存302处获取(或提取)非直接近跳跃宏指令JMP[EAX]。如上所讨论的内容,指令存储器/高速缓存302适用于可编程或中介程序储存媒体,例如磁盘、只读存储器、随机存取存储器、高速缓存等。一宏程序代码JMP可指引微处理器300执行一无条件跳跃至一跳跃目的,其中该跳跃目的的目标地址由相关于非直接近跳跃宏指令的相关指令指针所规定。为了决定目标地址,一补偿值必须自数据高速缓存313中被获取出并将之加入指令指针中。补偿值数据储存在数据高速缓存313中的一位置里,其地址则储存在临时文件307的一寄存器308EAX中。
循环1中,非直接近跳跃宏指令JMP[EAX]提供于指令缓冲器303中以供成对运算转译逻辑器在接下来的管线循环中所存取。
在循环2中,非直接近跳跃宏指令JMP[EAX]提供给成对运算转译逻辑器304。由于非直接近跳跃宏指令JMP[EAX]规定了一加载-跳跃运算,其中该运算根据本发明而执行在一单一循环中,因此成对运算转译逻辑器304可将非直接近跳跃宏指令JMP[EAX]转译为一加载一跳跃微指令LDJMP[EAX]。该加载-跳跃微指令LDJMP[EAX]指引微处理器300以1)自寄存器EAX中获取存储器的补偿值地址,2)利用EAX所提供的地址以自存储器中获取补偿值数据,以及3)使用该补偿值数据与相关联于JMP[EAX]的指令指针以产生一跳跃目标地址,以及4)无条件地分支目标地址。相对于一传统微处理器100,本发明执行一非直接近跳跃运算不需要额外的寄存器(例如图2所示的寄存器T1),只需要一个微指令LDJMP[EAX]来完成成对的载入-跳跃运算。这是因为本发明中功能配置在管线层,以致加载运算不互斥于算数或逻辑运算,而其传统上由执行逻辑器318所执行。在一较佳实施例中,执行逻辑器318为一算数逻辑单元(ALU)。因此,当执行于本发明的一微处理器300时,加载-分支运算将变成为单一循环运算。
在循环2中,成对运算转译逻辑器304产生加载-跳跃微指令LDJMP[EAX]并提供其至微指令队列305。由于LDJMP[EAX]为一单一微指令,其并不需要发出一暂停指令至提取逻辑器301。宏指令的提取被允许前进而不受限制的。
在循环3中,加载-跳跃微指令LDJMP[EAX]在暂存层中前进,其中寄存器EAX 308在临时文件307中被存取以获取补偿值的存储器地址供近跳跃之用。
在循环4中,LDJMP[EAX]在地址层中前进(未在图3中显示)。其中,在循环3中自EAX所获取的存储器地址转译以呈现在一系统存储器总线上,如同之前图2所述。
在循环5中,LDJMP[EAX]在加载层中前进。其中,加载逻辑器312使用地址层所提供的转译地址以存取存储器313中的位置,进而获取补偿值数据以供非直接近跳跃运算使用。该补偿值传送至执行层的操作数3缓冲器316中。
在循环6中,LDJMP[EAX]在执行层中前进。其中执行逻辑器318自操作数3缓冲器316处获取补偿值数据,以及自微指令缓冲器314处获取用于非直接近跳跃宏指令的指令指针。执行逻辑器318便可立即产生用于跳跃的目标地址,而不需要等待额外的微指令或存取额外的缓冲器。跳跃目标地址接着提供给结果寄存器320以供程控逻辑器存取,如此非直接近跳跃运算便可完成。
在接下去的循环中,加载-跳跃微指令LDJMP[EAX]在微处理器300的剩余管线层中进行,而其无关于此处的讨论。虽然LDJMP[EAX]必须在后续管线层进行以自管线中收回,但其运算基本上在执行层便已完成。
如前述配合图2的讨论,为了明确目的,其它广泛所熟知的程控特性,例如推测性分支执行将不在此讨论。此处可充分明了的是,一非直接近跳跃运算例子所例示的加载-执行运算可利用一单一微指令依据本发明而在一单一管线循环中完成。
虽然本发明及其目的、特性与优点已详细描述,但本发明亦包括有其它实施例。举例来说,由前述的讨论可知,微指令与被要求来执行一非直接近跳跃运算的管线循环的数目可利用本发明的方法将之减少至一半。然而任何加载-执行运算的态样,例如:加载-增加、加载-减少、加载-逻辑等均可有同样的优点。
此外,虽然此处是利用依据一x86兼容的微处理器架构的宏指令作为实施例,但本领域技术人员应当明了本发明可包含所有其管线层可将加载与执行功能归类于相继的子运算的所有管线结构。
最后,虽然上述为实现本发明的目的的最佳实施例,但本领域技术人员应该了解,在不脱离本发明的精神及范围之下,其可立即使用所揭示的观念及特定的具体实施例当作基础,来进行与本发明的目的相同的设计或修改其它结构。

Claims (8)

1、一种在微处理器中用于执行一非直接近跳跃运算的装置,其特征在于包括:
成对运算转译逻辑器,其用以接收一非直接近跳跃宏指令以及产生一加载-跳跃微指令,其中该加载-跳跃微指令可指引一微处理器中的多个管线层以执行该非直接近跳跃运算;
加载逻辑器,其耦接至该成对运算转译逻辑器,该加载逻辑器用来接收该加载-跳跃微指令以及自存储器中获取一补偿值,其中该补偿值可用来指引一跳跃目标,而该跳跃目标则与对应该非直接近跳跃宏指令的一指令地址相关;以及
执行逻辑器,其耦接至该加载逻辑器,该执行逻辑器用来接收该补偿值以及使用该指令地址与该补偿值来产生由该跳跃目标所载明的一目标地址以供近跳跃运算之用。
2、如权利要求1所述的装置,其特征在于该加载-跳跃微指令指引该加载逻辑器以获取该补偿值,并指引该执行逻辑器以产生该目标地址。
3、如权利要求1所述的装置,其特征在于该加载逻辑器位于这些管线层中的一第一层,而该执行逻辑器位于这些管线层中的一第二层,其中该第二层在该第一层之后,并且该加载-跳跃微指令在一单一循环内通过这些管线层的该第一层进行。
4、如权利要求3所述的装置,其特征在于该加载-跳跃微指令于一单一循环内通过这些管线层的该第二层进行。
5、如权利要求4所述的装置,其特征在于该第一层将该补偿值与该加载-跳跃微指令递送至该第二层以产生该目标地址。
6、一种在一管线化微处理器内执行一非直接近跳跃运算的方法,其特征在于包括:
一加载-跳跃微指令,其相应于由转译逻辑器所接收和转译的一非直接近跳跃宏指令;以及
加载逻辑器,其用来接收该加载-跳跃微指令,并自一存储器位置获取补偿值数据,以及于管线化微处理器的后续层中提供该补偿值数据给执行逻辑器,其中该执行逻辑器于一单一管线循环中产生一目标地址以供非直接近跳跃运算之用。
7、如权利要求6所述的方法,其特征在于该加载-跳跃微指令指引该加载逻辑器以获取该补偿值数据,以及指引该执行逻辑器以产生该目标地址。
8、如权利要求6所述的方法,其特征在于该加载-跳跃微指令于一单一管线循环内的该加载层中进行。
CN 200410043101 2004-05-11 2004-05-11 微处理器中用于执行非直接近跳跃运算的装置及方法 Expired - Lifetime CN1291310C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200410043101 CN1291310C (zh) 2004-05-11 2004-05-11 微处理器中用于执行非直接近跳跃运算的装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200410043101 CN1291310C (zh) 2004-05-11 2004-05-11 微处理器中用于执行非直接近跳跃运算的装置及方法

Publications (2)

Publication Number Publication Date
CN1570854A CN1570854A (zh) 2005-01-26
CN1291310C true CN1291310C (zh) 2006-12-20

Family

ID=34481866

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200410043101 Expired - Lifetime CN1291310C (zh) 2004-05-11 2004-05-11 微处理器中用于执行非直接近跳跃运算的装置及方法

Country Status (1)

Country Link
CN (1) CN1291310C (zh)

Also Published As

Publication number Publication date
CN1570854A (zh) 2005-01-26

Similar Documents

Publication Publication Date Title
US10515049B1 (en) Memory circuits and methods for distributed memory hazard detection and error recovery
CN1161691C (zh) 检测被寻址单元预测失败的存储控制器
US6988183B1 (en) Methods for increasing instruction-level parallelism in microprocessors and digital system
KR101817397B1 (ko) 하나의 아키텍처의 코드 모듈이 다른 아키텍처의 라이브러리 모듈을 사용할 수 있게 하는 아키텍처 간 호환성 모듈
CN105426160B (zh) 基于sprac v8指令集的指令分类多发射方法
US20200310994A1 (en) Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
KR101754462B1 (ko) 동적 비순차적 프로세서 파이프라인을 구현하기 위한 방법 및 장치
CN1147794C (zh) 具有静态转移预测支持的去耦取指令-执行引擎
CN1269042C (zh) 具有预取指令的微处理器及预取至其高速缓存的方法
CN108369511B (zh) 用于基于通道的跨步存储操作的指令和逻辑
CN108027766A (zh) 预取指令块
TWI644208B (zh) 藉由對硬體資源之限制實現的向後相容性
US20080250227A1 (en) General Purpose Multiprocessor Programming Apparatus And Method
US7813909B2 (en) Register mapping in emulation of a target system on a host system
US9430392B2 (en) Supporting large pages in hardware prefetchers
CN104040490A (zh) 用于多引擎微处理器的加速的代码优化器
CN1127899A (zh) 具有推测指令取指的数据处理器及操作方法
CN104040491A (zh) 微处理器加速的代码优化器
CN108027807A (zh) 基于块的处理器核拓扑寄存器
CN104040492A (zh) 微处理器加速的代码优化器和依赖性重排序方法
CN1945525A (zh) 从队列处理指令刷新的生存期计数器设计的系统和方法
CN1825276A (zh) 多线程管道中的可编程延迟分派
CN1975693A (zh) 具有自驱动功能的指令仿真解析系统及其实现方法
CN101266559A (zh) 将单微处理器核划分为多个小核的可配置微处理器和方法
US20140129805A1 (en) Execution pipeline power reduction

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
CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20061220