CN1549113A - 将加载管线式微处理器指令队列的指令删除的设备及方法 - Google Patents

将加载管线式微处理器指令队列的指令删除的设备及方法 Download PDF

Info

Publication number
CN1549113A
CN1549113A CNA2004100005497A CN200410000549A CN1549113A CN 1549113 A CN1549113 A CN 1549113A CN A2004100005497 A CNA2004100005497 A CN A2004100005497A CN 200410000549 A CN200410000549 A CN 200410000549A CN 1549113 A CN1549113 A CN 1549113A
Authority
CN
China
Prior art keywords
instruction
aforementioned
signal
formation
clock period
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.)
Granted
Application number
CNA2004100005497A
Other languages
English (en)
Other versions
CN1316353C (zh
Inventor
托马斯C・麦克唐纳
托马斯C·麦克唐纳
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.)
Zhiquan No1 Co
Original Assignee
Zhiquan No1 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 Zhiquan No1 Co filed Critical Zhiquan No1 Co
Publication of CN1549113A publication Critical patent/CN1549113A/zh
Application granted granted Critical
Publication of CN1316353C publication Critical patent/CN1316353C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Advance Control (AREA)

Abstract

本发明是关于一种能够在一指令已经加载微处理器指令队列的情况下将其删除的装置。此装置包括一控制逻辑,用来发现指令绝对不能执行的情况,例如一分支指令的错误预测。然而当此控制逻辑察觉此情况时,已经无法阻止此指令被加载指令队列,此控制逻辑于是将会产生一个删除信号,来说明此指令绝对不可执行。一个删除队列接收到此删除信号并将其值存储下来。删除队列与指令队列并行前进,以确保当指令队列顺序输出指令时,删除队列也输出与此指令相应的删除信号值。如果从删除队列输出的删除信号值为真,微处理器则作废相应指令而不对其进行执行。

Description

将加载管线式微处理器指令队列的指令删除的设备及方法
技术领域
本发明涉及一种微处理器中的指令缓冲,特别是涉及一种在指令被加载指令缓冲器之后的指令删除。
本发明是一相关申请,本申请主张美国专利申请第60/440063号的优先权,该申请于2003年1月14日递交,其名称为用于删除在前级管线阶段中采用分支目标地址高速缓冲存储器的微处理器中的指令格式化之后被作废的指令的装置及方法(APPARATUS AND METHOD FOR KILLINGINSTRUCTIONS DETERMINED INVALID AFTER INSTRUCTION FORMATTING IN AMICROPROCESSOR EMPLOYING A BRANCH TARGET ADDRESS CACHE IN AN EARLYPIPELINE STAGE)。
背景技术
现代微处理器都是管道微处理器。它们可在微处理器的不同模块或管线阶段中同时操作多个指令。Hennessy与Patterson在其合著书中将管道技术定义为“多个指令重迭执行的实施技术”——《计算机结构:量化方法》,第二版,John L.Hennes sy,David A.Patterson合着,MorganKaufmann出版社,San Francisco,CA,1996。他们还提供了如下对于管线技术极佳的形象解释:
一个管道就像一条流水线。在汽车生产的流水在线,有许多任务位,每个工位给汽车装配一个零部件。每个工位与其它工位并行运作,但各自对不同汽车进行装配。在一个计算机管道内,每个步骤完成指令的一部分。像流水线一样,不同的步骤同时并行完成不同指令的不同部分。每个此种步骤被称为一个管线阶段,或管线片断。所有阶段连成一体构成一个完整的管道,指令从一端进入,经过管道中各个阶段,最后又另一端输出,正像流水在线的汽车一样。
同步微处理器按时钟周期工作。一般地,在一个时钟周期内,指令由一个微处理器的管道阶段进行到下一个。在汽车流水在线,如果工位上有工人没有汽车可进行操作,那么整条流水线的生产效率就会降低。同样,如果某个时钟周期内一个微处理器阶段因没有指令可进行操作而被闲置(一种通常被称为管道气泡的现象),那么这个微处理器的运算效率也会降低。
一个常用的用来避免管道气泡现象的方法是在管道不同阶段间采用指令缓冲器,其常用结构为队列结构。一个指令缓冲器可在其前后管道阶段处理速度不同时提供一个缓冲空间。例如,当管线执行阶段(如低端)需要指令来进行操作,而在管道高端的高速缓冲存储器中没有指令时,指令缓冲器就可发挥其作用。此种情况下,在内存读取的同时,指令缓冲器可为执行阶段提供指令,因此减小高速缓冲存储器指令缺失造成的影响。
另一种可能的管道气泡产生的原因是分支指令。当处理器接收到一个分支指令时,它必须确定分支指令的目标地址并从目标地址取得指令,而不是从分支指令后的下一个顺序地址。另外,如果此分支指令为条件分支指令(如根据某一条件存在与否而决定是否执行此分支指令),处理器在确定目标地址之外,还必须确定此分支指令是否将被执行。因为确定目标地址和/或决定是否执行分支指令的管线阶段在取得指令的管线阶段之后,所以管道气泡可能由此产生。
指令缓冲的确可以减少管道气泡的数量,但现代微处理器一般都采用分支预测的机制来提前预测目标地址和/或分支指令是否将被执行,以进一步减小此问题。然而,如果分支预测错误,无论因此预测而取得的指令为下一顺序指令或目标地址指令,此指令均不应执行,否则将会产生错误。
更正错误地分支指令预测,正是必须将已加载微处理器的指令加以删除的一个例子,亦即,不应由管道来执行此错误分支指令。然而,实际情况可能是当指令已经被写入指令缓冲器之后才确定其必须被删除。因此,亟需一种方案来实现被写入指令内存的指令的删除。
有鉴于上述现有的将加载管线式微处理器指令队列的指令删除的设备及方法存在的缺陷,本发明人基于从事此类产品设计制造多年丰富的实务经验及专业知识,积极加以研究创新,以期创设一种新的将加载管线式微处理器指令队列的指令删除的设备及方法,能够改进一般现有的将加载管线式微处理器指令队列的指令删除的设备及方法,使其更具有实用性。经过不断的研究、设计,并经反复试作样品及改进后,终于创设出确具实用价值的本发明。
发明内容
本发明的目的在于,克服现有的将加载管线式微处理器指令队列的指令删除的设备及方法存在的缺陷,而提供一种新的将加载管线式微处理器指令队列的指令删除的设备及方法,所要解决的技术问题是使其采用指令队列及如分支预测机制之类的要求指令删除功能的微处理器管线中的程序能够正确执行。
本发明的另一目的在于,提供一种将加载管线式微处理器指令队列的指令删除的设备及方法,所要解决的技术问题是使其删除信号能够在后面产生,而不需要额外的管线阶段来存储指令队列。
本发明的目的及解决其技术问题是采用以下技术方案来实现的。依据本发明提出的一种指令删除装置,其中一指令在一第一时钟周期加载于一微处理器的一指令队列,并将该指令在之后的第二时钟周期从指令队列底端项目输出,该指令删除装置包括:一删除信号,用来传递前述第一时钟周期之后的一第三时钟周期内产生的值;一删除队列,耦合至前述删除信号,用来载入前述第三时钟周期产生的该删除信号的值,并于前述第二时钟周期将此值输出;以及一有效性信号,耦合至前述删除队列,于前述第二时钟周期产生,用于表示指令是否将被微处理器执行,如果在前述第二时钟周期由前述删除队列输出的删除信号的值为真,则此有效性信号值为假。
本发明的目的及解决其技术问题还可采用以下技术措施进一步实现。
前述的指令删除装置,其中前述第三时钟周期与前述第二时钟周期为同一时钟周期。
前述的指令删除装置,其中前述第三时钟周期为前述第二时钟周期的前一个时钟周期。
前述的指令删除装置,还包括:一加载信号,耦合至前述删除队列,用来在第二时钟周期内表示指令是否在第一时钟周期已被载入到前述指令队列的底端项目。
前述的指令删除装置,其中如果前述加载信号为真,则前述第三时钟周期与前述第二时钟周期为同一时钟周期。
前述的指令删除装置,其中如果前述加载信号为假,则前述第二时钟周期在前述第三个时钟周期之后。
前述的指令删除装置,还包括:一逻辑,耦接至前述删除队列,用来在前述第二时钟周期根据前述加载信号及前述删除队列输出的前述删除信号的值来产生前述有效性信号。
前述的指令删除装置,其中前述删除队列包括:多个项目,用来存储相对应的多个时钟周期内产生的多个前述删除信号的值。
前述的指令删除装置,其中前述指令在前述第二时钟周期由前述指令队列底端项目输出给指令转译器,以转译成为一个或多个微指令,并由微处理器根据前述有效性信号进行选择性执行。
本发明的目的及解决其技术问题还采用以下的技术方案来实现。
一种在微处理器中删除指令的方法,其中此方法包括:在一第一时钟周期将一指令加载在一第一队列中;在前述第一时钟周期之后的一第二时钟周期产生一删除信号;在前述第二时钟周期内将前述删除信号的一个值加载在一第二队列中;在一第三时钟周期判断该第二队列内的前述值是否为真,在前述第三时钟周期内指令由前述第一队列的底端项目输出;以及如果前述值为真,执行前述指令。
本发明的目的及解决其技术问题还可采用以下技术措施进一步实现。
前述的在微处理器中删除指令的方法,还包括:在将前述指令加载前述第一队列之前,将前述指令格式化。
前述的在微处理器中删除指令的方法,还包括:在将前述指令加载于前述第一队列之后,判断前述指令有否在前述第一个队列内向下转移;以及如果前述指令在前述第一队列内已被向下转移,在将前述删除信号的值载入第二队列之后,将前述删除信号的值在前述第二队列内向下转移。
前述的在微处理器中删除指令的方法,还包括:在将前述指令加载前述第一队列之前,预测前述指令为进行分支指令;发现一个对前述分支进行指令的错误预测;以及响应前述发现的错误预测,在前述第二时钟周期,进行前述产生前述删除信号的操作。
前述的在微处理器中删除指令的方法,还包括:基于一个分支指令进行的预测,使此微处理器分支处理,该指令为此分支指令的下一个指令;以及在使此微处理器分支处理之后,在前述第二时钟周期进行产生前述删除信号的操作。
前述的在微处理器中删除指令的方法,其中指令为被预测进行的分支指令的下一个指令,该方法还包括:响应于发现前述分支指令被预测为进行,在前述第二时钟周期进行产生前述删除信号的操作。
本发明的目的及解决其技术问题还采用以下的技术方案来实现。
一种微处理器,其特征在于该微处理器包括:一第一队列,用来接收一个指令并进行缓冲;一逻辑,耦接至前述第一个队列,用来发现一个前述指令不能被微处理器执行的情况,其中前述逻辑在一个信号上产生一个真值来说明前述情况,其中前述具真值的信号在前述指令被前述第一队列接收之后产生;以及一第二队列,耦接至前述逻辑,用来加载前述具真值的信号并随后与前述第一队列输出前述指令同时输出前述真值,其中微处理器响应前述具真值的信号并作废前述指令,而不对其进行执行。
一种微处理器,其中该微处理器包括:一第一队列,用来接收一个指令并进行缓冲;一逻辑,耦接至前述第一个队列,用来发现一个前述指令不能被微处理器执行的情况,其中前述逻辑在一个信号上产生一个真值来说明前述情况,其中前述具真值的信号在前述指令被前述第一队列接收之后产生;以及一第二队列,耦接至前述逻辑,用来加载前述具真值的信号并随后与前述第一队列输出前述指令同时输出前述真值,其中微处理器响应前述具真值的信号并作废前述指令,而不对其进行执行。
一种包含于传输媒介中的计算机数据信号,其包括:一计算机可读程序代码,用来提供一装置以删除在第一时钟周期载入微处理器指令队列而在一第二时钟周期由指令队列底端项目输出的指令,且此第二时钟周期是在前述第一时钟周期之后,前述计算机程序码包括:一第一程序代码,用来提供一删除信号,用来传递一个在前述第一时钟周期之后的第三时钟周期内产生的值;一第二程序代码,用来提供一删除队列,耦接至前述删除信号,用来加载前述第三时钟周期产生的前述删除信号的值,并在第二时钟周期内输出前述删除信号的值;以及一第三程序代码,用来提供一有效性信号,耦接至前述删除队列,该有效性信号在第二时钟周期产生,用来指示前述指令是否将被微处理器执行,其中,如果前述删除队列在第二时钟周期内输出的前述删除信号值为真,则前述有效性信号值为假。
本发明与现有技术相比具有明显的优点和有益效果。由以上技术方案可知,为了达到前述发明目的,本发明的主要技术内容如下:
本发明提出一种将加载管线式微处理器指令队列的指令删除的设备及方法,本发明提供一种指令删除装置,其用于删除一个在第一时钟周期加载微处理器指令队列而在下一个时钟周期从队列底端输出的指令。其包括:  一个删除信号,用以传递前述第一时钟周期之后的第三时钟周期内产生的值;一个删除队列,与删除信号合用,用以加载前述第三时钟周期产生的删除信号值,并在下一个时钟周期将此值输出;一个在第二时钟周期产生的有效性信号,与删除队列合用,用以说明此指令是否需要被微处理器执行。如果删除队列在第二时钟周期输出的删除信号值为真,则此有效性信号值为假。
另一方面,本发明提供一种删除微处理器中指令的方法。其包括:在第一时钟周期内将指令加载第一队列,在下一个时钟周期内产生一个删除信号并将此删除信号的值加载另一个队列;在第三时钟周期内将此指令从第一队列的底端输出,并确定第二队列中的信号值是否为真,如果此值为真则执行此指令。
另一方面,本发明提供一种微处理器。其包括:第一队列,用来接收指令以进行指令缓冲;一个逻辑,与第一队列合用以发现指令不得被微处理器执行的情况,此逻辑产生一个值为真的信号来说明此情况,此信号在指令被第一队列接收后产生;第二队列,与逻辑合用,用以加载此真值信号并于第一队列输出指令同时输出此信号。此微处理器响应此真值信号,作废相应指令。
另一方面,本发明提供一种包含在传输媒体中的计算机数据,此计算机数据包括计算机可读的程序代码,此程序代码使一装置可实现对在第一时钟周期加载微处理器指令队列而在下一时钟周期从队列底端输出的指令的删除操作。该程序代码包括:第一段程序代码,用以产生删除信号及传递第三时钟周期产生的信号值;第二段程序代码,用以产生删除队列,与删除信号合用,加载第三时钟周期产生的删除信号,并在第二时钟周期将此删除信号值输出;第三段程序代码,用以产生一个有效性信号,并与删除队列合用,此有效性信号于第二时钟周期产生,并用以说明指令是否将被微处理器执行,如果删除队列在第二时钟周期中所输出的删除信号为真,此有效性信号值将为假。
本发明的一个优点在于它使得采用指令队列及如分支预测机制之类的要求指令删除功能的微处理器管线中的程序能够正确执行。另一个好处在于,本发明使得删除信号能够在后面产生,而不需要额外的管线阶段来存储指令队列。
综上所述,本发明特殊结构的将加载管线式微处理器指令队列的指令删除的设备及方法,其具有上述诸多的优点及实用价值,并在同类产品及方法中未见有类似的结构设计及方法公开发表或使用而确属创新,其不论在产品结构、方法或功能上皆有较大的改进,在技术上有较大的进步,并产生了好用及实用的效果,且较现有的将加载管线式微处理器指令队列的指令删除的设备及方法具有增进的多项功效,从而更加适于实用,而具有产业的广泛利用价值,诚为一新颖、进步、实用的新设计。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。
本发明的具体结构及其方法由以下实施例及附图详细给出。
附图说明
图1为本发明所述一种微处理器的一个结构示意图。
图2为说明依据本发明的图1所示格式化的指令队列的第一队列的结构示意图。
图3为说明依据本发明的图1所示格式化的指令队列的第二队列的结构示意图。
图4为说明依据本发明的图1所示删除队列的第一个实例的结构示意图。
图5为说明依据本发明的图1所示删除队列的第二个实例的结构示意图。
图6为说明依据本发明的图1所示删除队列的第三个实例的结构示意图。
图7为产生依据本发明的图1所示F_valid信号的FIQ控制逻辑的结构示意图。
图8为说明依据本发明的图1所示微处理器指令删除装置工作原理的流程图。
图9为说明依据本发明的图1所示指令删除装置工作原理的时序图。
图10为说明依据本发明的图1所示指令删除装置工作原理的时序图。
图11为说明依据本发明的图1所示指令删除装置工作原理的时序图。
具体实施方式
以下结合附图及较佳实施例,对依据本发明提出的将加载管线式微处理器指令队列的指令删除的设备及方法其具体结构、方法、步骤、特征及其功效,详细说明如后。
图1为本发明的一个微处理器100的结构示意图。微处理器100是一个具备多个管线阶段的管道处理器。示意图展示了部分阶段,包括一个指令阶段(I-stage)151,一个提取阶段(F-stage)153,一个转译阶段(X-stage)155和一个暂存阶段(R-stage)157。I-stage151包括一个从内存或高速缓冲存储器提取指令字节的阶段。在一种实例中,I-stage151包括了多个阶段。F-stage153包括一个将一段未格式化指令字节格式化的阶段。X-stage 155包括一个将宏指令转化为微指令的阶段。R-stage 157包括一个从缓存器文件加载操作数的暂存阶段。其它R-stage 157之后的诸如地址产生,数据,执行,存储及结果写回等微处理器100的执行阶段未在图1中列出。
微处理器100在I-stage 151中包括了一个高速指令缓冲存储器104。高速指令缓冲存储器104缓冲从与微处理器100合用的系统内存中取得的指令。高速指令缓冲存储器104接收一个当前找取地址181,据此来选择容量为一个高速缓冲存储器存储界(cache line)的指令字节167并将其输出。在一种实例中,高速指令缓冲存储器104为一多阶段高速缓存,亦即,高速指令缓冲存储器104要求多个时钟周期来相应当前找取地址并输出一个高速缓冲存储器存储界。
微处理器100在I-stage151内还包括一个多任务器178。多任务器178提供当前找取地址181。多任务器178接收下一个目标地址179,此地址是将当前目标地址181加上高速指令缓冲存储器104内存所输出的高速缓冲存储器存储界大小所取得。多任务器178将接收一个更正地址177,此地址明确指出一个供微处理器100更正错误的分支预测所用的地址。多任务器178还接收一个预测的分支目标地址175。
微处理器100在I-stage 151内还包括一个分支目标地址缓存BTAC106,此缓存耦接至多任务器178。BTAC 106响应当前目标地址181并产生一个预测的分支目标地址175。BTAC 106缓冲存储执行过的分支指令的分支目标地址及分支指令地址。在一种实例中,BTAC106包括一个4路组合高速缓冲存储器,并且被选中组合的每一路包含了多个项目,以供存储目标地址及所预测分支指令的分支预测信息。除预测的分支目标地址175外,BTAC106还输出分支预测相关信息194。在一种实例中,BTAC信息194包括:一个偏移位元,说明当前找取地址181选中的高速缓冲存储器存储界的预测的分支指令的首字节;一条信息说明预测的分支指令是否跨越半个高速缓冲存储器存储界;针对选中项目中每个项目的一个有效位;一条信息说明选中组合中的哪一路为最近所最少使用的路;一条信息说明选中路中的哪一个为最近所最少所用的项目;及一个分支指令是否将会被执行的预测。
微处理器100还包括控制逻辑102。如果当前目标地址181与BTAC 106中一个执行过的分支指令的有效的缓存地址相符合,并且BTAC106预测此分支指令将会被执行,则控制逻辑102控制多任务器178来选择BTAC目标地址175。如果错误的分支预测发生,控制逻辑102则控制多任务器178选择更正地址177。否则,控制逻辑102将控制多任务器178来选择下一个目标地址179。控制逻辑102也接受BTAC信息194。
微处理器100在其I-stage 151内还包括前置译码逻辑108,此前置译码逻辑108与高速指令缓冲存储器104合用。前置译码逻辑108接收高速指令缓冲存储器104提供的指令字节167的高速缓冲存储器存储界及BTAC信息194,并据此产生前置译码信息169。在一种实例中,前置译码信息169包括:与每个指令字节相关的一个位,此位用来预测此字节是否为BTAC 106所预测执行的分支指令的运算代码;根据预测的指令长度来预测下一指令长度的多个位;与每个指令字节相关的一位,此位用来预测此字节是否为指令的前缀字节;及分支指令输出结果的预测。
微处理器100在其F-stage 153内还包括一个指令字节缓冲器112,此缓冲器112与前置译码逻辑108合用。指令字节缓冲器112从前置译码逻辑108接收前置译码信息169,并从高速指令缓冲存储器104处接收指令字节167。指令字节缓冲器112通过信号196向控制逻辑102提供前置译码信息。在一种实例中,指令字节缓冲器112能够缓冲4个高速缓冲存储器存储界的指令字节及相关的前置译码信息。
微处理器100还包括指令字节缓冲控制逻辑114,其与指令字节缓冲器112合用。指令字节缓冲控制逻辑114控制输入及输出指令字节缓冲器112的指令字节及相关前置译码信息数据的流程。指令字节缓冲控制逻辑114同时也接收BTAC信息194。
微处理器100在其F-stage 153内还包括一个指令格式器116,其与指令字节缓冲器112合用。指令格式器116从指令字节缓冲器112处接收指令字节及前置译码信息165,并由此产生格式化指令197。即,指令格式器116查阅从指令字节缓冲器112内一个指令字节的字符串,确定哪些字节包含下一个指令及指令长度,并将下一指令作为格式化后指令197输出。在图1所示实例中,指令格式器116包括了一个组合逻辑,此逻辑查阅指令字节缓冲器112提供的指令字节165并在同一个时钟周期内输出格式化后指令197。在一种实例中,格式化后的指令197所提供的格式化后的指令包含了充分符合X86结构指令组合的指令。在一种实例中,格式化后的指令又被称作由宏指令转化成的可由微处理器100管道执行阶段所执行的微指令。格式化后指令197是在F-stage 153内产生的。每次指令格式器116输出一个格式化后指令197,指令格式器116产生一个值为真的F_new_instr152信号来说明格式化后指令197包含一个有效的格式化后的指令。另外,指令格式器116通过一个信号F_instr_info 198输出格式化后指令197的相关信息,并将此信号提供给控制逻辑102。在实施例中,信号F_instr_info 198包括:一个预测信息(如果此指令为分支指令),此预测信息说明分支指令是否被执行;一个指令的前缀;此指令的地址是否命中在微处理器分支地址缓冲存储器内;是否此指令为一个长距直接转移分支指令(far direct branch instruction);是否此指令为一个长距间接转移分支指令(far indirect branch instruction);是否此指令为一个调用分支指令(call branch instruction);是否此指令为一个返回分支指令(return branch instruction);是否此指令为一个长距转移返回分支指令(far return branch instruction);是否此指令为一无条件分支指令(unconditional branch instruction);及是否此指令为一条件分支指令(conditional branch instruction)。另外,指令格式器116通过当前指令指针CIP信号182输出格式化的指令的地址,此地址等于前一指令的地址加上前一指令长度。
微处理器100在其X-stage 155内还包括一个格式化后的指令队列FIQ187。格式化后的指令队列187从指令格式器116处接收格式化后指令197。格式化后的指令队列187还通过一个提前信号(early0)193输出条格式化后的指令。另外,格式化后的指令队列187通过一个信号X_rel_info186从控制逻辑102处接收相关由格式化后指令197所获格式化后指令的信息。X_rel_info 186是在X-stage 155内产生的。格式化后的指令队列187还通过late0信号191输出其由early0信号193输出格式化后的指令的相关信息。格式化后的指令队列187及X_rel_info 186将在下面做详细阐述。
微处理器100还包括格式化后指令队列FIQ的控制逻辑118。FIQ控制逻辑118从指令格式器116处接收信号F_new_instr 152。FIQ控制逻辑118产生一个真值信号FIQ_full 199,在格式化后的指令队列187满时,将此信号发送给指令格式器116。FIQ控制逻辑118还产生一个eshift信号164,用来控制格式化后的指令队列187内指令的轮换。FIQ控制逻辑118还产生多个eload信号162,用来控制从格式化后指令197向空的格式化后的指令队列187项目加载指令。在实例中,FIQ控制逻辑118为每一个格式化后的指令队列187的项目产生一个eload信号162。在一种实例中,格式化后的指令队列187包括12个项目,每一个项目存储一条格式化后的宏指令。但是,为了使示意图简明清楚,图1至图3中的格式化后的指令队列187仅展示3个项目;因此图1展现3个eload信号162,其可标为eload[2:0]。
FIQ控制逻辑118还为每一个格式化后的指令队列187的项目保持一个有效位134。图1所示实例包含了3个有效位,分别标示为FV2,FV1,和FV0。FV0 134与格式化后的指令队列187最低端项目相对应;FV1 134与格式化后的指令队列187中间项目相对应;而FV2 134与格式化后的指令队列187最高端项目相对应。FIQ控制逻辑118还输出一个信号F_valid188,在一种实例中,此信号即为FV0 134。有效位134说明格式化后的指令队列187对应的项目是否包含一个有效的指令。FIQ控制逻辑118还接收一个XIQ_full信号195。
微处理器100在其X-stage 155内还包括一个指令转译器138,与格式化后的指令队列187合用。指令转译器138从格式化后的指令队列187处通过一个early0信号193接收一个格式化后的指令,并将此格式化后的宏指令转译成一个或多个微指令171。在一个实例中,微处理器100包括了一个精简指令集计算机(RISC)核心,用来执行原始的或简化的指令集。在图1所示实例中,指令转译器138包括了组合逻辑,以通过early0 193来接收格式化后的宏指令,并在同一时钟周期内输出转译后的微指令171。即,无论指令转译器138的输入是否包含有效的宏指令,它均会在每一个时钟周期对其输入端信息进行转译。
微处理器100在其X-stage 155内还包括一个转译后的指令队列XIQ154,与指令转译器138合用。XIQ 154缓冲由指令转译器138处接收的微指令171。XIQ 154还缓冲由格式化后的指令队列187处通过late0信号191接收到的相关信息。此信息与微指令171转译之前的格式化后的宏指令相关,因此也与微指令171相关。此相关信息191被微处理器100的执行阶段用来执行相关的微指令171。在一种实例中,XIQ 154包括4个项目,而在另外的实例中,XIQ154分别包括6个或者8个项目。然而,为简明清楚起见,图1所示XIQ154仅包含3个项目。
微处理器100还包括XIQ控制逻辑156,与XIQ 154合用。XIQ控制逻辑156接收F_valid信号188并产生XIQ_full信号195。XIQ控制逻辑156还产生X_load信号164来控制转译后的微指令171及相关信息191项XIQ154的加载。XIQ控制逻辑156还产生X_shift信号111来控制微指令在XIQ154内的向下转移。XIQ控制逻辑156还为XIQ 154的每一个输入保持一个有效位149。图1所示实例包括3个有效位,分别标记为XV2,XV1和XV0。XV0 149对应XIQ154低端项目的有效位;XV1 149对应XIQ154中端项目的有效位;XV2 149对应XIQ 154高端项目的有效位。XIQ控制逻辑156还输出一个X_valid信号148,在一种实例中,此信号即为XV0 149。有效位149说明一个XIQ 154内对应的项目是否包含一个有效的转译后的微指令。
微处理器100在其X-stage155内还包括一个2输入的多任务器172,其耦接至XIQ154。多任务器172作为一个选择性地旁路XIQ 154的旁路多任务器运作。多任务器172在一个输入端接收XIQ 154的输出,而在另一端接收XIQ 154的输入信号,如微指令171及late0 191。多任务器172在XIQ控制逻辑156产生的一个控制信号输入161的控制下选择其所接受的一个输入,并将其输出至R-stage157内的一个执行阶段缓存器176。如果执行阶段缓存器176状态为可接收一条指令,且当指令转译器138输出微指令171时XIQ 154为空,则多任务器172在XIQ控制逻辑156控制下旁路XIQ 154。微处理器100还包括一个有效位缓存器RV 189,此缓存器189从XIQ控制逻辑156处接收X_valid信号148,并以此说明存储于执行阶段缓存器176的微指令及相关信息是否有效。
格式化后的指令队列187包括:早期队列132,用来存储通过格式化后指令信号197接收到的格式化后的宏指令;一个相对应的晚期队列146,用来存储通过X_rel_info信号186接收到的相关信息。图1显示早期队列132包括3个项目,分别标记为EE2,EE1,和EE0。EE0为早期队列132的低端项目;EE1为早期队列132的中端项目;EE2为早期队列132的高端项目。EE0的内容提供作为输出信号early0 193。信号eshift 164及eload[2:0]162控制早期队列132的转换和加载。类似的,图1显示晚期队列146包括3个项目,分别标记为LE2,LE1,和LE0。LE0为晚期队列146的低端项目;LE1为晚期队列146的中端项目;LE2为晚期队列146的高端项目。LE0的内容提供作为输出信号late0 191。
格式化后的指令队列187还包括一个缓存器185。缓存器185在第一时钟周期末尾从FIQ控制逻辑118处接收eshift信号164,并在下一个时钟周期通过一个lshift信号168来输出第一时钟周期接收到的eshift信号164的值。格式化后的指令队列187还包括3个缓存器183。缓存器183在第一时钟周期末尾从FIQ控制逻辑118处接收eload[2:0]信号162,并在下一个时钟周期通过一个lload[2:0]信号142来输出第一时钟周期接收到的eload[2:0]信号162的值。即,缓存器185和183分别将eshift信号164及eload[2:0]信号162延迟一个时钟周期输出。
在一个实例中,X_rel_info 186包括:用来转译成对应微指令的格式化后的宏指令的长度;一个对此宏指令是否跨越半个高速缓冲存储器存储界的说明;此宏指令的一个存放位置;此宏指令的一个当前位置;此宏指令的指令指针;及在此宏指令被预测为分支指令的情况下与各种相关分支预测的信息,此信息为分支预测的更正。
在一个实例中,与分支预测及更正相关的信息包括:用来预测分支指令是否会被执行的分支历史表信息;用来预测分支指令是否会被执行的分支指令的线性指令指针的一部分;用来与前述线性指令指针进行互斥或逻辑演算,以藉此预测分支指令是否会被执行的一个分支样式;在分支预测错误的情况下用以回溯的第二分支样式;各种说明分支指令特征的标志位,如:此分支指令是否为一条件分支指令,一调用指令,一个返回堆栈的目标,一个相关分支,一个间接分支,及分支指令结果的预测是否为静态预测器所做;相关BTAC 106所做预测的各种信息,如当前找取地址181是否对应一个BTAC 106内部地址,此对应地址是否有效,分支指令被预测为执行或是不执行,被当前目标地址181选中的BTAC 106组合的最近使用的项目,如果指令的执行要求BTAC 106进行更新,应替换选中组合的哪一个项目,即BTAC 106输出的目标地址。在一个实例中,X_rel_info 186的一部分是在前一个时钟周期产生的,并与在此宏指令被由早期队列132的项目EE0通过early0信号193提供之后一个时钟周期产生的相关信息一起作为输入。
微处理器100在其X-stage155内还包括一个删除队列145,其耦接至FIQ控制逻辑118。删除队列145存储一个由控制逻辑102产生的删除信号141。控制逻辑102产生一个值为真的删除信号141来说明早期队列132在前一个时钟周期所接收到的格式化后指令信号197所包含的的宏指令不能被微处理器100执行。删除队列145包含与格式化后的指令队列187项目数量相同的项目。图1显示删除队列包含3个项目,分别标记为KE2、KE1及KE0,并与图1所示格式化后的指令队列187项目相对应。KE0为删除队列的底端入口项目,KE1为删除队列的中端项目,KE2为删除队列的顶端入口项目。如图4、5、6所示,KE0的内容由输出信号kill0 143提供。删除队列145接收lload[2:0]信号142,lshift信号168及eshift信号164,用来控制删除队列145的加载及转换。在以下对图4、5、6的阐述中将进一步解释删除队列。
控制逻辑102根据从BTAC信息194、predecode_info 196、F_instr_info198和当前指令指针182发现的不同情况产生一个真值信号。一种情况是察觉BTAC 106错误预测一个分支指令。在一种实例中,BTAC 106因错误预测分支指令的长度,如预测的指令长度不同于指令格式器116所确认的长度,而造成对分支指令的错误预测。在一种实例中,BTAC 106因错误预测一个普通指令为分支指令而造成分支指令的错误预测,例如BTAC 106预测一条指令为分支指令,而指令格式器116确认其非分支指令。在一种实例中,BTAC 106因错误预测分支指令的地址而造成分支指令的错误预测,例如所预测由BTAC 106输出的指令偏移位元与被BTAC 106用来做此预测的找取地址181的和不等于指令格式器116所产生的指令地址182。
在一种实例中,当BTAC 106进行预测时,被错误预测的指令与后续指令必须被删除;因此,控制逻辑102针对每一个需要被删除的指令产生一个值为真的删除信号141。控制逻辑102在指令被提供给指令格式器116之后的一个时钟周期产生删除信号141。另外,控制逻辑102通过一个作废信号147来提供信息以作废产生错误预测的BTAC 106的项目。当控制逻辑102作废做错误预测的BTAC 106项目后,控制逻辑102控制多任务器178来选择更正地址177以便重新获取被错误预测的指令及其后续指令,藉此以更正原先的错误预测。因为此时BTAC 106内做错误预测的项目已经无效,BTAC 106不会再预测上次被错误预测的指令为被执行的分支指令;因此,无论此指令是否为分支指令,它均会被指令格式器116格式化,被指令转译器138转译,并被微处理器管线100的执行阶段执行。
另一种控制逻辑102产生真值删除信号141的情况为,控制逻辑102导致微处理器100采用一个由BTAC106响应其所做的一分支指令将被执行的预测而产生的一个目标地址。在此情况下,由高速指令缓冲存储器104取出,并传送到指令字节缓冲器112的分支指令的任何后续指令都必须被删除;因此,控制逻辑102针对每一个需被删除的指令产生一个真值删除信号141。控制逻辑102在指令提供给指令格式器116之后的一个时钟周期产生此删除信号141。在一种实例中,指令格式器116能够在一个时钟周期内格式化2个宏指令。如果BTAC 106预测此2个指令中的第一个为一个需执行的分支指令,控制逻辑102则会删除第二个指令。
图2展示了根据本发明的图1所示的格式化后的指令队列187的早期队列132的结构示意图。早期队列132包括3个选择-缓存器,此3个选择-缓存器顺序相连形成一个队列。此3个选择-缓存器包括图1所示的项目EE2、EE1、EE0。
早期队列132顶端的选择-缓存器包括一个2输入的多任务器212及一个缓存器222,此缓存器标记为ER2,用来接收多任务器212的输出。多任务器212包括负载数据输入端,用来接收图1所示的格式化后指令信号197。多任务器212还包括一个保持数据输入端,用来接收缓存器ER2 222的输出。多任务器212接收图1所示eload[2]信号162作为控制输入。如果eload[2]162为真,多任务器212将选中负载数据输入端上的格式化后指令信号197;否则,多任务器212则选中保持数据输入端上的缓存器ER2222的输出。缓存器ER2 222在一个时钟周期(clk)202的上升沿载入多任务器212的输出。
早期队列132中段的选择-缓存器包括一个3输入的多任务器211及一个缓存器221,此缓存器标记为ER1,用来接收多任务器211的输出。多任务器211包括负载数据输入端,用来接收格式化后指令信号197。多任务器211还包括一个保持数据输入端,用来接收缓存器ER1 221的输出。多任务器211还包括一个转换数据输入端,用来接收缓存器ER2 222的输出。多任务器211接收图1所示eload[1]信号162作为控制输入。多任务器211还接收图1所示eshift信号164作为控制信号。如果eload[1]162为真,多任务器211选中负载数据输入端上的格式化后指令信号197;如果eshift信号164为真,多任务器211选中转换数据输入端上缓存器ER2222的输出;否则,多任务器212则选中保持数据输入端上的缓存器ER1 221的输出。缓存器ER1 221在一个时钟周期clk202的上升沿载入多任务器211的输出。
早期队列132底端的选择-缓存器包括一个3输入的多任务器210及一个缓存器220,此缓存器标记为ER0,用来接收多任务器210的输出。多任务器210包括负载数据输入端,用来接收格式化后指令信号197。多任务器210还包括一个保持数据输入端,用来接收缓存器ER0 220的输出。多任务器210还包括一个转换数据输入端,用来接收缓存器ER1 221的输出。多任务器210接收图1所示eload[0]信号162作为控制输入。多任务器210还接收图1所示eshift信号164作为控制信号。如果eload[0]162为真,则多任务器210选中负载数据输入端上的格式化后指令信号197;如果eshift信号164为真,则多任务器210选中转换数据输入端上缓存器ER1 221的输出;否则,多任务器212则选中保持数据输入端上的缓存器ER0 220的输出。缓存器ER0 220在一个时钟周期clk 202的上升沿载入多任务器210的输出。缓存器ER0 220将结果作为early0信号193输出。
图3展示了根据本发明的图1所示的格式化后的指令队列187的晚期队列146的结构示意图。晚期队列146包括3个暂存-多任务器,此3个暂存-多任务器顺序相连形成一个队列。此3个暂存-多任务器包括图1所示的项目LE2、LE1、LE0。
晚期队列146顶端的暂存-多任务器包括一个2输入的多任务器312及一个缓存器322,此缓存器标记为LR2,用来接收多任务器312的输出。多任务器312包括一个负载数据输入端,用来接收图1所示X_ref_info186。多任务器312还包括一个保持数据输入端,用来接收缓存器LR2 322的输出。多任务器312接收lload[2]信号142作为控制输入。如果lload[2]142值为真,则多任务器312选中负载数据输入端上的X_ref_info 186;否则多任务器312选中保持数据输入端上的缓存器LR2 322的输出。缓存器LR2 322在图2中所示的时钟周期clk 202的上升沿载入多任务器312的输出值。
晚期队列146中段的暂存-多任务器包括一个3输入的多任务器311及一个缓存器321,此缓存器标记为LR1,用来接收多任务器311的输出。多任务器311包括一个负载数据输入端,用来接收图1所示X_ref_info186。多任务器311还包括一个保持数据输入端,用来接收缓存器LR1 321的输出。多任务器311还包括一个转换数据输入端,用来接收缓存器LR2 322的输出。多任务器311接收lload[1]信号142作为控制输入。多任务器311还接收lshift信号168作为控制输入。如果lload[1]142值为真,则多任务器311选中负载数据输入端上的X_ref_info 186;如果lshift 168值为真,则多任务器311选中LR2 322的输出;否则多任务器311选中保持数据输入端上的缓存器LR1 321的输出。缓存器LR1 321在图2中所示的时钟周期clk 202的上升沿载入多任务器311的输出值。
晚期队列146底端的暂存-多任务器包括一个3输入的多任务器310及一个缓存器320,此缓存器标记为LR0,用来接收多任务器310的输出。多任务器310包括一个负载数据输入端,用来接收图1所示X_ref_i nfo186。多任务器310还包括一个保持数据输入端,用来接收缓存器LR0 320的输出。多任务器310还包括一个转换数据输入端,用来接收缓存器LR1 321的输出。多任务器310接收lload[0]信号142作为控制输入。多任务器310还接收lshift信号168作为控制输入。如果lload[0]142值为真,则多任务器310选中负载数据输入端上的X_ref_info 186;如果lshift 168值为真,则多任务器310选中LR1 321的输出;否则多任务器310选中保持数据输入端上的缓存器LR0 320的输出。缓存器LR1 320在图2中所示的时钟周期clk 202的上升沿载入多任务器310的输出值。多任务器310将结果作为图1中late0信号191输出。
图4展示依据本发明的图1中所示删除队列145的第一个实例的结构示意图。图4中删除队列实例的结构类似图3中晚期队列146的结构。删除队列包括3个暂存-多任务器,3个暂存-多任务器顺序连接,构成一个队列。3个暂存-多任务器包括了图1所示的项目KE2、KE1和KE0。
删除队列145顶端的暂存-多任务器包括一个2输入的多任务器412及一个缓存器422,缓存器标记为KR2,用来接收多任务器412的输出。多任务器412包括一个负载数据输入端,用来接收图1所示删除信号141。多任务器412还包括一个保持数据输入端,用来接收缓存器KR2 422的输出。多任务器412接收lload[2]信号142作为控制信号。如果lload[2]142值为真,多任务器412选中负载数据输入端上的删除信号141;否则多任务器412选中保持数据输入端上的缓存器KR2 422的输出。缓存器KR2 422在图2中所示的时钟周期clk 202的上升沿载入多任务器412的输出值。
删除队列145中段的暂存-多任务器包括一个3输入的多任务器411及一个缓存器421,此缓存器标记为KR1,用来接收多任务器411的输出。多任务器411包括一个负载数据输入端,用来接收删除信号141。多任务器411还包括一个保持数据输入端,用来接收缓存器KR1 421的输出。多任务器411还包括一个转换数据输入端,用来接收缓存器KR2 422的输出。多任务器411接收lload[1]信号142作为控制输入。多任务器411还接收lshift信号168作为控制输入。如果lload[1]142值为真,多任务器411选中负载数据输入端上的删除信号141;如果lshift 168值为真,多任务器411选中KR2 422的输出;否则多任务器411选中保持数据输入端上的缓存器KR1 421的输出。缓存器KR1 421在图2中所示的时钟周期clk 202的上升沿载入多任务器411的输出值。
删除队列145底端的暂存-多任务器包括一个3输入的多任务器410及一个缓存器420,此缓存器标记为KR0,用来接收多任务器410的输出。多任务器410包括一个负载数据输入端,用来接收删除信号141。多任务器410还包括一个保持数据输入端,用来接收缓存器KR0 420的输出。多任务器410还包括一个转换数据输入端,用来接收缓存器KR1 421的输出。多任务器410接收lload[0]信号142作为控制输入。多任务器410还接收lshift信号168作为控制输入。如果lload[0]142值为真,多任务器410选中负载数据输入端上的删除信号141;如果lshift 168值为真,多任务器410选中KR1 421的输出;否则多任务器410选中保持数据输入端上的缓存器KR0 420的输出。缓存器KR0 420在图2中所示的时钟周期clk 202的上升沿载入多任务器410的输出值。多任务器410将结果作为图1中kill0信号143输出。
图5展示依据本发明的图1中所示删除队列145的第二个实例的结构示意图。删除队列145包括三个选择-缓存器及第四个多任务器彼此相连构成一个队列。此三个选择-缓存器包括图1所是的项目KE2、KE1和KE0。
删除队列145顶端的选择-缓存器包括一个2输入的多任务器512及一个缓存器522,缓存器标记为KR2,用来接收多任务器512的输出。多任务器512包括一个负载数据输入端,用来接收图1所示删除信号141。多任务器512还包括一个保持数据输入端,用来接收缓存器KR2 522的输出。多任务器512接收图1所示的lload[2]信号142作为控制信号。如果lload[2]142值为真,多任务器512选中负载数据输入端上的删除信号141;否则多任务器512选中保持数据输入端上的缓存器KR2 522的输出。缓存器KR2 522在一个时钟周期的上升沿载入多任务器512的输出值,此时钟周期标记为clk 202。
删除队列145中段的选择-缓存器包括一个3输入的多任务器511及一个缓存器521,缓存器标记为KR1,用来接收多任务器511的输出。多任务器511包括一个负载数据输入端,用来接收删除信号141。多任务器511还包括一个保持数据输入端,用来接收缓存器KR1 521的输出。多任务器511还包括一个转换数据输入端,用来接收缓存器KR2 522的输出。多任务器511接收图1所示的lload[1]信号142作为控制信号。多任务器511还接收图1所示lshift信号168作为控制输入。如果lload[1]142值为真,多任务器511选中负载数据输入端上的删除信号141;如果lshift信号168值为真,多任务器511选中KR2 522的输出;否则多任务器511选中保持数据输入端上的缓存器KR1 521的输出。缓存器KR1 521在时钟周期clk 202的上升沿载入多任务器511的输出值。
删除队列145底端的选择-缓存器包括一个2输入的多任务器510、一个缓存器520标记为KR0,用来接收多任务器510的输出,以及一个2输入的多任务器509。多任务器509包括一个负载数据输入端,用来接收删除信号141。多任务器509还包括一个保持数据输入端,用来接收缓存器KR0 520的输出。多任务器509接收图1所示的lload[0]信号142作为控制信号。如果lload[0]142值为真,多任务器509选中负载数据输入端上的删除信号141;否则多任务器509选中保持数据输入端上的缓存器KR0 520的输出。多任务器510包括一个保持数据输入端,用来接收多任务器509的输出,此输出即是图1所示kill0信号143。多任务器510还包括一个转换数据输入端,用来接收多任务器511的输出。多任务器510接收eshift信号164作为控制输入。如果eshift信号164值为真,多任务器510选中转换数据输入端上的多任务器511的输出;否则多任务器510选中保持数据输入端上的多任务器509的输出。缓存器KR0 520在时钟周期clk 202的上升沿载入多任务器510的输出值。
图6展示依据本发明的图1中所示删除队列145的第三个实例的结构示意图。图中删除队列145与图5中删除队列145相类似,并且对应组件(元件)也都标以类似序号。图6所示删除队列与图5所示值不同之处在于以下几点。图6中删除队列145的输入KE0也包括四个逻辑闸:一个反向器602、二个2输入的与门604和606、及一个2输入的或门608。反向器602接收lload[0]信号142,并将其输出提供给一个与门604。与门604接收缓存器KR0 520的输出并将其作为第二个输入。与门606接收lload[0]信号142作为其一个输入,同时接收删除信号141作为其另一个输入。两个与门604及606的输出作为或门608的输入。或门608的结果作为图1所示删除队列145的kill0信号143输出,而不是图5中所示删除队列145中多任务器509的输出。
图7展示了FIQ控制逻辑118内产生根据本发明图1所示F_valid信号188的逻辑的结构示意图。此逻辑包括一个反向器712及一个2输入的与门714。反向器712接收图1所示kill0信号143,并将其输出提供给与门714作为其一个输入。与门714的另一个输入为图1所示格式化后的指令队列187的有效位FV0134。因此,有效位FV0134经kill0信号限定,以使得XIQ控制逻辑156能得知通过early0信号193提供给指令转译器138的指令为无效指令,如:被删除指令。
图8展示了根据本发明图1中所示的微处理器100指令删除装置运作原理的流程图。流程从区块802开始。
在区块802中,图1所示的指令格式器116将指令字节缓冲器112内的一条指令格式化,格式化后的指令由FIQ控制逻辑118加载早期队列132。特别的,FIQ控制逻辑118将格式化后的指令加载早期队列132最低端的无效的项目中。在一种实例中,区块802在第一时钟周期内发生,在图8中标记为clock 1。流程前进到区块804。
在区块804中,图1所示控制逻辑102产生一个真值于图1所示的删除信号141上,以此来说明在前一个时钟周期时载入早期队列132的指令必须被删除。在一种实例中,区块804在时钟周期1的下一个时钟周期发生,在图8中标记为clock 2。流程前进到806。
在区块806中,删除队列将clock 2中产生的删除信号141的值加载。此值被加载删除队列最低端的无效项目中。流程前进到判定功能区块808。
在判定功能区块808中,判断条件为在区块802中加载格式化后指令队列187的指令,例如需要被删除的指令,是否位在格式化后指令队列187的最低端项目中。如果此指令在格式化后指令队列187的最低端项目中,则流程前进到判定功能区块812;如果不是,则流程前进到区块818。
在判定功能区块812中,判断条件为删除信号141值是否非真。如果为真,流程前进到区块814,否则,流程前进到区块816。
在区块814中,将产生一个值为真的图1中所示的kill0信号143,通过对FIQ有效位FV0 134的限定来产生一个值为假的图1所示F_valid信号188,并以此来实现指令的删除。流程在区块814结束。
在区块816中,将产生一个值为假的图1中所示的kill0信号143;因此,如果FV0 134为真,则F_valid 188也为真。流程在区块816结束。在一个实例中,从区块804到区块816全部在第二时钟周期发生。
在区块818,格式化后指令队列187及删除队列145  向下移一个项目。流程前进到判定功能区块822。
在判定功能区块822中,判断条件为在区块802中所加载的格式化后指令队列187的指令,例如需要被删除的指令,是否位在格式化后指令队列187的最低端项目。如果是,流程前进到判定功能区块824;否则,流程返回区块818。
在判定功能区块824,判断条件为删除队列的最低端项目是否为真。如果是,流程前进到区块826;否则,流程前进到区块828。
在区块826,将产生一个值为真的图1所示的kill0信号143,通过对FIQ有效位FV0 134的限定来产生一个值为假的图1所示F_valid信号188,并以此来实现指令的删除。流程在区块826结束。
在区块828,将产生一个值为假的kill0信号143;因此,如果FV0 134为真,则F_valid 188也为真。流程在区块828结束。在一个实例中,每个从区块818到区块828的循环都发生在clock 2相邻的下一个时钟周期,标记为clock 3,或再下一个相邻的时钟周期,直到要被删除的指令转移到格式化后指令队列187的最低端项目为止。
图9说明依据本发明的图1所示指令删除装置工作原理的时序图。图9显示了5个时钟周期,每个时钟周期由图2至图6所示clk信号202的上升沿开始。按照惯例,图9中真值用逻辑高准位来表示。图9展示了如下一种情况:当指令格式器116产生一个新的格式化后的宏指令时,图1所示的XIQ 154状态为不满,例如XIQ 154可以从指令转译器138接收宏指令;格式化后指令队列187为空。另外,在图9的实例中,当指令转译器138转译early0193所含的格式化后的宏指令并产生新的微指令171时,XIQ154为空。因此,XIQ控制逻辑156以X_valid信号148来提供F_valid信号188的值,而不是象图9所示,将F_valid 188存储为有效位XV 149。
如图中所示,在第一时钟周期1内,指令格式器116产生一个值为真的图1中所示F_new_instr信号152,来说明图1中的格式化后指令信号197包含一个有效的新的格式化后的宏指令。因为格式化后指令队列187为空,图1中FIQ控制逻辑118产生一个值为真的eload[0]信号162,以此将格式化后指令信号197的有效的新的格式化后的宏指令加载格式化后指令队列187最底层的空项目EE0。如图中所示,在同一个实例内,删除信号141,kill0信号143,F_valid 188,X_valid 148及有效位RV 189均为假。
在第二时钟周期2内,图1中的格式化后指令队列187的项目EE0的有效位FV0 134,被设置为说明EE0是否包含一个有效指令。在时钟周期2的上升沿,图1中的一个缓存器183加载eload[0]162并输出一个值为真的lload[0]142。如图中所示,因为eload[0]162为真,新指令被加载ER0 220并输出于图1中的early0信号193,作为图1中指令转译器138的输入。指令转译器138转译这个新的宏指令,并把得出的微指令171提供给XIQ 154。另外,如图所示,控制逻辑102产生相关X_rel_info 186上新的指令的新信息。因为lload[0]142为真,如图所示,多任务器410选择负载数据输入端,并将X_rel_info186所包含的相关信息输出到late0191上作为XIQ 154及图1所示多任务器172的输入。进一步,因为指令转译器138已经在第二时钟周期转译过此新指令,FIQ控制逻辑118产生一个真值于图1中的eshift信号164上,以使得指令能在第三时钟周期转移出格式化后的指令队列187。
同样在第二时钟周期2内,控制逻辑102发现一个第一时钟周期内产生的新指令必须被删除的情况,并因此在第二时钟周期后半周产生一个值为真的图1所示删除信号141。因为在clock 2的后半部lload[0]142及删除信号均为真,依据图4至图6,kill0信号143也为真。进一步,因为kill0信号143位真,依据图7,F_valid 188为假。最后,如图所示,因为F_valid 188为假,且XIQ 154为空,在第二时钟周期结束时X_valid 148为假。
在第三时钟周期3内,因为新指令已转移出格式化后指令队列187,FV0134为假。在第三时钟周期的上升沿,因为XIQ154为空,XIQ控制逻辑156将转译后的微指令171及late0 191所提供的指令相关信息加载执行阶段缓存器176。另外,图1中缓存器185加载eshift信号164并输出一个真值lshift 168。进一步,在第二时钟周期末尾值为假的X_valid 148被加载RV 189,此信号在第三时钟周期内为假。因此,在第二时钟周期产生并加载执行阶段缓存器176的微指令171被标志为无效,而如同预期的一样,不会被微处理器100管道的执行阶段所执行。
从图9可看出,尽管新的宏指令在第一时钟周期内就已产生并且被加载入格式化后指令队列187,删除信号141直到第二时钟周期才产生。图1中的指令删除装置方便地使宏指令能够被删除,例如标志为无效,因此执行阶段不会执行已被删除地指令。
图10是为说明依据本发明的图1所示指令删除装置工作原理的时序图。除当指令格式器116产生一个新的格式化后的宏指令时XIQ 154为满之外,图10与图9相类似。因为图10所时实例中XIQ 154为满XIQ 154的有效位XV2 149有显示,而RV 189及X_valid 148的值则没有显示。
在时钟周期1内,XIQ_full 195为真。如同图9所示一样,指令格式器116在format ted_instr 197上产生一个新的指令,F_new_instr 152为真。因为格式化后指令队列187为空,如同图9所示一样,FIQ控制逻辑118产生一个值为真的eload[0]信号162,以此将有效的新的格式化后的宏指令从格式化后指令信号197载入EE0。图1中所示删除信号141、kill0信号143及F_valid 188,如同图9中所示,均为假。但是,因为XIQ 154为满,因此有效位XV2 149为真,亦即,XIQ 154的输入2有效。
在时钟周期2内,如同图9所示一样,FV0 134被设置为说明EE0是否包含一个有效指令;缓存器183输出一个值为真的lload[0]142;新指令被加载ER0 220之中,并被输出为early0信号193以作为指令转译器138的输入;相关新指令的新信息被产生为X_rel_info 186;多任务器310选中负载数据输入端,并将X_rel_info 186所提供的新相关信息输出为late0191,作为XIQ 154及多任务器172的输入。但是,因为在第二时钟周期起始时XIQ 154为满,不同于图9所示情况,FIQ控制逻辑118产生一个值为假的eshift信号164。XIQ控制逻辑156随之取消XIQ_full 195,以藉此表示指令转译器138已准备好将在第三时钟周期内转译一条新的宏指令。
同样的,在时钟周期2内,控制逻辑102发现一个第一时钟周期内产生的新指令必须被删除的情况,并因此在第二时钟周期后半周产生一个值为真的删除信号141。因为在clock 2的后半部lload[0]142及删除信号均为真,依据图4至图6,kill0信号143也为真。进一步,因为kill0信号143为真,因此依据图7可知,F_valid 188为假。因为XIQ 154被向下转移,使得XIQ 154在第二时钟周期不再为满,XV2 149转为假,表示XIQ154顶端项目的指令,亦即,由XV2 149所明确指示的项目,不再有效。
在时钟周期3内,因为eshift信号164在时钟周期clk 202上升沿为假,新指令被保持在ER0 220内,并通过early0 193被提供给指令转译器138进行转译。相当的,FV0 134保持为真。指令转译器138转译新的宏指令,并把转译成的微指令171提供给XIQ 154。因为lload[0]142在时钟周期clk 202上升沿为真,在第二时钟周期通过X_rel_info 186提供的相关信息被加载LR0 320。因为在时钟周期其它时间lload[0]142及lshift168为假,如图所示,LR0 320的内容,亦即,与指令相关的新的信息,将通过late0 191而被提供给XIQ 154。在第三时钟周期开始后,FIQ控制逻辑118产生一个值为真的eshift信号164,以使得新的指令在第四个时钟周期被转移出格式化后指令队列187。
同样在时钟周期3内,根据图4至图6,kill0信号继续保持为真。即在第二时钟周期产生并被加载删除队列14 5输入KE0的删除信号141在时钟周期3被保持,并通过kill0信号143提供。因为kill0信号143为真,F_valid 188在整个时钟周期3内保持为假来表示提供给指令转译器的指令193为无效指令。此步骤为必需的,原因在于在时钟周期2内控制逻辑102产生一个值为真的删除信号141来表示时钟周期1内产生的指令197必须被删除。XV2 149继续为假。进一步,控制逻辑在时钟周期3内赋假值给删除信号141(或称取消删除信号141)。
在时钟周期4内,因为新的指令被转移出格式化后指令队列187,FV0134转为假。在时钟周期4的上升沿,图1中的缓存器185加载eshift信号164并通过lshift 168输出一真值。另外,XIQ控制逻辑156加载转译后的微指令171及通过late0 191提供的指令相关信息给XIQ 154。但是,因为在时钟周期3末尾F_valid 188为假,一个假值被载入XV2 149来表示载入XIQ 154的转译后的微指令171无效。因此,在时钟周期3由指令转译器138产生并被载入XIQ 154的微指令171被标志为无效,并且如同预期一样,当其从XIQ 154输出时,不会被微处理器100管道的执行阶段执行。在一种实例中,因为XIQ 154接收微指令171的输入被标志为无效,它可能被下一个微指令所覆盖。
从图10可看出,尽管新的宏指令在第一时钟周期内就已产生并且被加载格式化后指令队列187,但删除信号141  却直到第二时钟周期才会产生。图1中的指令删除装置方便地使宏指令能够被删除,亦即,将其标志为无效,因此执行阶段不会执行已被删除地指令。
图11是为说明依据本发明的图1所示指令删除装置工作原理的时序图。除当指令格式器116产生一个新的格式化后的宏指令时XIQ 154为满且格式化后指令队列187不为空外,图11与图10相类似。图1中所示的删除信号141的值必须被加载删除队列中与格式化后指令队列187内此新的宏指令所载入项目相对应的项目,并且与格式化后指令队列187相应的向下转移,以此保证当格式化后指令队列187提供新的宏指令时,与其对应的正确的删除信号的值也能被删除队列提供出来。其相关具体细节将在以下阐述。因此删除队列145中缓存器KR1(在图4中标记为42,在图5、6中标记为521,而在此后将称为KR1 421)的值也在图11中表示出来。
在时钟周期1内,XIQ_full 195为真。如同图9、10所示一样,指令格式器116在formatted_instr 197上产生一个新的指令,F_new_instr 152为真。因为EE0包含一个有效指令,FV0 134为真;但是,如图所示,因为EE1不包含一个有效指令,图1中所示格式化后指令队列187的项目EE1的有效位FV1 134为假。因此,FIQ控制逻辑118产生一个值为真的eload[1]信号162,以此将格式化后指令信号197的有效的新的格式化后的宏指令载入EE1。信号early0 193提供保存在EE0的指令,此指令在图11中被标记为old instr;信号late0 191提供保存在LE0的旧指令的相关信息,此信息被标记为old info,如图所示。与图10所示相同,图1中的删除信号141及kill0信号143均为假,有效位XV2 149为真。但是,因为FV0 134为真,而删除信号141为假,所以F_valid 188为真。KR1 421为假。
在时钟周期2内,FV1 134被设置为说明EE1是否包含一个有效指令,FV0同样保持被设置的状态。旧指令保存在ER0 220,而旧指令的相关信息则保存在LR0 320。缓存器183输出一个值为真的lload[1]142。新指令被加载ER1 221,如图所示。与新指令相关的新的信息被产生为X_rel_info 186,且图3中的多任务器311将选中负载数据输入端,此输入同样被提供给缓存器LR1 321。因为在第二时钟周期起始时XIQ 154为满,所以FIQ控制逻辑118产生一个值为假的eshift信号164。XIQ控制逻辑156随之赋假值给XIQ_full 195,藉此以表示指令转译器138将准备在第三时钟周期内转译一条新的宏指令。
同样在时钟周期2内,控制逻辑102发现一个第一时钟周期内产生的新指令必须被删除的情况,并因此在第二时钟周期后半周产生一个值为真的删除信号141。KR1 421保持为假。根据图4至图6,因为此例中格式化后指令队列187的EE0内的指令不需被删除,kill0信号143为假。进一步,因为kill0信号143为假,而FV0 134为真,所以依据图7可知F_valid188为假。因为XIQ 154被向下转移,使得XIQ 154在第二时钟周期不再为满,XV2 149转为假。这表示XIQ 154顶端项目的指令,亦即,其有效性为XV2 149所明确的项目,不再有效。
在时钟周期3内,因为eshift信号164在时钟周期clk 202上升沿为假,新指令被保持在ER1 221内,另外旧指令被保持在ER0 220,并通过early0 193被提供给指令转译器138进行转译。FV1与FV0 134保持为真。指令转译器138转译旧的宏指令,并把转译成的微指令171提供给XIQ154。因为在时钟周期3的其它时间区域内,lload[0]142及lshift 168均为假,因此,LR0 320的内容,亦即,旧指令的旧相关信息,将通过late0191而被提供给XIQ 154。因为lload[0]142在时钟周期clk 202上升沿为真,所以在第二时钟周期通过X_rel_info 186提供的新的相关信息被加载LR1 321。在第三时钟周期开始后,FIQ控制逻辑118产生一个值为真的eshift信号164,以使得新的指令在第四个时钟周期被由EE1转移至EE0。
同样在时钟周期3内,因为在时钟周期2末尾lload[1]142及删除信号141为真,所以一个真值被加载KR1 421,如图所示。但是,根据图4至图6,kill0信号143将保持为假。因为FV0 134保持为真,所以F_valid 188也保持为真。进一步,控制逻辑102在时钟周期3赋假值给删除信号141。
在时钟周期4内,因为新的指令被由EE1转移至EE0,所以FV1 134为假。在时钟周期4的上升沿,XIQ控制逻辑156将由旧指令转译后的微指令171及通过late0 191提供的指令相关信息加载至XIQ 154。另外,缓存器185加载eshift信号164并通过lshift 168输出一真值。因为XIQ 154状态为可以接受另一个微指令,所以eshift为真。因为在时钟周期clk 202上升沿eshift信号164为真,所以新指令由ER1 221转移至ER0 220,并通过early0 193提供给指令转译器138以进行转译。FV0 134保持为真。指令转译器138转译新指令,并把得到的微指令171提供给XIQ 154。因为在时钟周期4内lshift 168为真,所以保持在LR1 321的新指令相关信息被选中为多任务器310的切换数据输入端,并被通过late0信号191向外提供,如图所示。
同样在时钟周期4内,在时钟周期2内产生并被保存在删除队列145的删除信号141的值,亦即,删除位,被由KR1 421转移至图4的KR0 420(或图5、6的KR0 520)。因此,根据图4至图6可知其导致产生一个值为真的kill0信号143。根据图7,F_valid 188相应的转为假。
在时钟周期5内,因为新指令被转移出格式化后指令队列187,所以FIQ控制逻辑118清除FV0 134。在时钟周期5的上升沿,XIQ控制逻辑156将由新指令转译后所得的微指令171及通过late0 191提供的新指令相关信息加载至XIQ 154。但是,因为在时钟周期4末尾F_valid 188为假,因此一个假的值被加载XV2 149来表示载入XIQ 154的转译后的微指令无效。因此,在时钟周期3由指令转译器138产生并被载入XIQ 154的微指令171被标记为无效,并且如同所预期一样,当其从XIQ 154输出时,不会被微处理器100管道的执行阶段所执行。在一种实例中,因为XIQ 154用来接收微指令171的项目被标记为无效,它可能会被下一个微指令覆盖。
从图11可看出,尽管新的宏指令在第一时钟周期内就已产生并且被加载格式化后指令队列187,删除信号141却直到第二时钟周期才产生。图1中的指令删除装置方便地使宏指令能够被删除,亦即,将其标志为无效,因此执行阶段不会执行已被删除的指令。
虽然本发明与其目的、特性、及优点已在此文档中详细解释,它还可以包括其它的实例。例如,尽管文中已提及多种指令必须被删除的情况,本发明仍可用于其它情况下的指令删除。另外,尽管文中只描述一个表示微处理器将宏指令转译成微指令的实例,一个微处理器以精简指令集计算机(RISC)代替,译码RISC指令,而不是将宏指令转译成微指令的实例仍不脱离本发明的可预期的实施例范围。
除用硬件来实施本发明外,它还可以通过计算机可读代码(如计算机可读程序代码、数据等)在一个计算机可用(如可读的)媒介内实现。此类计算机代码可造成对此发明功能的实施、模仿或两者都有。例如,此功能可用通用的编程语言(如C、C++、JAVA、及其它类似语言)实现;亦可用GDSII数据库,硬件描述语言(HDL),包括Verilog HDL、VHDL、AlteraHDL(AHDL)等,或者其它程序和/或电路(如schematic)捕获工具等行业内存在的工具实现。计算机代码可存储于任何计算机可用(如可读的)媒体内,包括半岛器内存、磁盘、光盘、CD-ROM、DVD-ROM及类似品,或作为计算机数据被放置在计算机可用(如可读的)传播媒介(如载波或其它媒介包括数字的\光学的、或模拟媒介)。因此,计算机代码可在通讯网络中传播,包括因特网和企业内部网络。作为知识产权的一部分,本发明可以包含于计算机代码核心,例如微处理器核心,或者系统级设计,例如单片机系统(SOC)内,并作为集成电路产品的一部分而被转移到硬件内。同时,本发明也可以用硬件及计算机代码的结合来实现。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的方法及技术内容作出些许的更动或修饰为等同变化的等效实施例,但是凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

Claims (17)

1、一种指令删除装置,其特征在于一指令在一第一时钟周期加载于一微处理器的一指令队列,并将该指令在之后的第二时钟周期从指令队列底端项目输出,该指令删除装置包括:
一删除信号,用来传递前述第一时钟周期之后的一第三时钟周期内产生的值;
一删除队列,耦合至前述删除信号,用来载入前述第三时钟周期产生的该删除信号的值,并于前述第二时钟周期将此值输出;以及
一有效性信号,耦合至前述删除队列,在前述第二时钟周期产生,用于表示指令是否将被微处理器执行,如果在前述第二时钟周期由前述删除队列输出的删除信号的值为真,则此有效性信号值为假。
2、根据权利要求1所述的指令删除装置,其特征在于其中前述第三时钟周期与前述第二时钟周期为同一时钟周期。
3、根据权利要求1所述的指令删除装置,其特征在于其中前述第三时钟周期为前述第二时钟周期之前一个时钟周期。
4、根据权利要求1所述的指令删除装置,还包括:
一加载信号,耦合至前述删除队列,用来在第二时钟周期内表示指令是否在第一时钟周期已被载入到前述指令队列的底端项目。
5、根据权利要求4所述的指令删除装置,其特征在于如果前述加载信号为真,则前述第三时钟周期与前述第二时钟周期为同一时钟周期。
6、根据权利要求4所述的指令删除装置,其特征在于如果前述加载信号为假,则前述第二时钟周期在前述第三个时钟周期之后。
7、根据权利要求4所述的指令删除装置,还包括:
一逻辑,耦接至前述删除队列,用来在前述第二时钟周期根据前述加载信号及前述删除队列输出的前述删除信号的值来产生前述有效性信号。
8、根据权利要求1所述的指令删除装置,其特征在于其中前述删除队列包括:
多个项目,用来存储相对应的多个时钟周期内产生的多个前述删除信号的值。
9、根据权利要求1所述的指令删除装置,其特征在于前述指令在前述第二时钟周期由前述指令队列底端项目输出给指令转译器,以转译成为一个或多个微指令,并由微处理器根据前述有效性信号进行选择性执行。
10、一种在微处理器中删除指令的方法,其特征在于此方法包括:
在一第一时钟周期将一指令加载在一第一队列中;
在前述第一时钟周期之后的一第二时钟周期产生一删除信号;
在前述第二时钟周期内将前述删除信号的一个值加载在一第二队列中;
在一第三时钟周期判断该第二队列内的前述值是否为真,在前述第三时钟周期内指令由前述第一队列的底端项目输出;以及
如果前述值为真,执行前述指令。
11、根据权利要求10所述的在微处理器中删除指令的方法,还包括:
在将前述指令加载前述第一队列之前,将前述指令格式化。
12、根据权利要求10所述的在微处理器中删除指令的方法,还包括:
在将前述指令加载于前述第一队列之后,判断前述指令有否在前述第一个队列内向下转移;以及
如果前述指令在前述第一队列内已被向下转移,在将前述删除信号的值载入第二队列之后,将前述删除信号的值在前述第二队列内向下转移。
13、根据权利要求10所述的在微处理器中删除指令的方法,还包括:
在将前述指令加载前述第一队列之前,预测前述指令为进行分支指令;
发现一个对前述分支进行指令的错误预测;以及
响应前述发现的错误预测,在前述第二时钟周期,进行前述产生前述删除信号的操作。
14、根据权利要求10所述的在微处理器中删除指令的方法,还包括:
基于一个分支指令进行的预测,使此微处理器分支处理,该指令为此分支指令的下一个指令;以及
在使此微处理器分支处理之后,在前述第二时钟周期进行产生前述删除信号的操作。
15、根据权利要求10所述的在微处理器中删除指令的方法,其特征在于前述指令为被预测进行的分支指令的下一个指令,该方法还包括:
响应于发现前述分支指令被预测为进行,在前述第二时钟周期进行产生前述删除信号的操作。
16、一种微处理器,其特征在于该微处理器包括:
一第一队列,用来接收一个指令并进行缓冲;
一逻辑,耦接至前述第一个队列,用来发现一个前述指令不能被微处理器执行的情况,其中前述逻辑在一个信号上产生一个真值来说明前述情况,其中前述具真值的信号在前述指令被前述第一队列接收之后产生;以及
一第二队列,耦接至前述逻辑,用来加载前述具真值的信号并随后与前述第一队列输出前述指令同时输出前述真值,其中微处理器响应前述具真值的信号并作废前述指令,而不对其进行执行。
17、一种包含于传输媒介中的计算机数据信号,其特征在于其包括:
一计算机可读程序代码,用来提供一装置以删除在第一时钟周期载入微处理器指令队列而在一第二时钟周期由指令队列底端项目输出的指令,且此第二时钟周期是在前述第一时钟周期之后,前述计算机程序码包括:
一第一程序代码,用来提供一删除信号,用来传递一个在前述第一时钟周期之后的第三时钟周期内产生的值;
一第二程序代码,用来提供一删除队列,耦接至前述删除信号,用来加载前述第三时钟周期产生的前述删除信号的值,并在第二时钟周期内输出前述删除信号的值;以及
一第三程序代码,用来提供一有效性信号,耦接至前述删除队列,该有效性信号在第二时钟周期产生,用来指示前述指令是否将被微处理器执行,其中,如果前述删除队列在第二时钟周期内输出的前述删除信号值为真,则前述有效性信号值为假。
CNB2004100005497A 2003-01-14 2004-01-14 将加载管线式微处理器指令队列的指令删除的设备及方法 Expired - Lifetime CN1316353C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US44006303P 2003-01-14 2003-01-14
US60/440,063 2003-01-14

Publications (2)

Publication Number Publication Date
CN1549113A true CN1549113A (zh) 2004-11-24
CN1316353C CN1316353C (zh) 2007-05-16

Family

ID=34375164

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100005497A Expired - Lifetime CN1316353C (zh) 2003-01-14 2004-01-14 将加载管线式微处理器指令队列的指令删除的设备及方法

Country Status (2)

Country Link
CN (1) CN1316353C (zh)
TW (1) TWI249131B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101604235B (zh) * 2009-07-10 2012-03-28 杭州电子科技大学 一种嵌入式处理器分支预测的方法
CN104854556A (zh) * 2012-11-28 2015-08-19 高通股份有限公司 建立用于子例程返回的分支目标指令高速缓冲存储器(btic)条目以减少执行管线泡,以及相关系统、方法和计算机可读媒体
CN109708156A (zh) * 2018-10-25 2019-05-03 青岛海尔智能技术研发有限公司 用于燃气灶的控制方法及燃气灶
CN114090077A (zh) * 2021-11-24 2022-02-25 海光信息技术股份有限公司 调取指令的方法及装置、处理装置及存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW253946B (en) * 1994-02-04 1995-08-11 Ibm Data processor with branch prediction and method of operation
US5644779A (en) * 1994-04-15 1997-07-01 International Business Machines Corporation Processing system and method of operation for concurrent processing of branch instructions with cancelling of processing of a branch instruction
US5649137A (en) * 1994-10-20 1997-07-15 Advanced Micro Devices, Inc. Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US6289442B1 (en) * 1998-10-05 2001-09-11 Advanced Micro Devices, Inc. Circuit and method for tagging and invalidating speculatively executed instructions

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101604235B (zh) * 2009-07-10 2012-03-28 杭州电子科技大学 一种嵌入式处理器分支预测的方法
CN104854556A (zh) * 2012-11-28 2015-08-19 高通股份有限公司 建立用于子例程返回的分支目标指令高速缓冲存储器(btic)条目以减少执行管线泡,以及相关系统、方法和计算机可读媒体
CN104854556B (zh) * 2012-11-28 2017-11-10 高通股份有限公司 建立分支目标指令高速缓冲存储器条目的方法和系统
CN109708156A (zh) * 2018-10-25 2019-05-03 青岛海尔智能技术研发有限公司 用于燃气灶的控制方法及燃气灶
CN109708156B (zh) * 2018-10-25 2024-04-12 青岛海尔智能技术研发有限公司 用于燃气灶的控制方法及燃气灶
CN114090077A (zh) * 2021-11-24 2022-02-25 海光信息技术股份有限公司 调取指令的方法及装置、处理装置及存储介质

Also Published As

Publication number Publication date
CN1316353C (zh) 2007-05-16
TW200414035A (en) 2004-08-01
TWI249131B (en) 2006-02-11

Similar Documents

Publication Publication Date Title
CN1147794C (zh) 具有静态转移预测支持的去耦取指令-执行引擎
CN1291311C (zh) 一种执行非标准呼叫/返回的程序代码的装置及方法
EP1624369B1 (en) Apparatus for predicting multiple branch target addresses
CN1279442C (zh) 选择性存取不同指令缓冲阶层的装置及方法
RU2417407C2 (ru) Способы и устройство для моделирования поведения предсказания переходов явного вызова подпрограммы
KR100955433B1 (ko) 파이프라인 구조를 갖는 캐시 메모리 및 이를 제어하는방법
US7159097B2 (en) Apparatus and method for buffering instructions and late-generated related information using history of previous load/shifts
CN110069285A (zh) 一种检测分支预测的方法及处理器
CN1264083C (zh) 用于在执行被转换指令时维持环境的方法和装置
CN1397887A (zh) 一种将储存数据重新导向的虚拟集合高速缓存
CN1658154A (zh) 早期修正分支指令预测错误的管线微处理器装置与方法
CN105718241A (zh) 一种基于sparc v8体系结构的分类式混合分支预测系统
CN111886581A (zh) 高性能微处理器中的准确早期分支预测
CN1629801A (zh) 产生早期指令结果的管线式微处理器、装置以及方法
CN101493762A (zh) 多指令集的指令预解码
CN1554048A (zh) 用于检查和操作数据的存储器引擎
RU2419835C2 (ru) Способы и устройства для сокращения поисков в кэше целевых адресов ветвлений
CN1549113A (zh) 将加载管线式微处理器指令队列的指令删除的设备及方法
JP2002527798A (ja) ストアアドレス生成およびユニバーサルな依存性ベクトルに基づくロードブロックのためのメカニズム
CN1291323C (zh) 实现数据一致性的装置及方法
US20100106910A1 (en) Cache memory and method of controlling the same
CN1310137C (zh) 缓冲指令及其较晚产生相关信息的装置及方法
CN1947092A (zh) 用于多处理器流水线并行性的方法和装置
CN100343799C (zh) 产生流水线微处理器的早期状态标志的装置及方法
CN1521635A (zh) 解决分支目标地址快取中死结提取条件的装置与方法

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

Granted publication date: 20070516

CX01 Expiry of patent term