CN1117618A - 具有转移预测的数据处理及其操作方法 - Google Patents
具有转移预测的数据处理及其操作方法 Download PDFInfo
- Publication number
- CN1117618A CN1117618A CN 94113738 CN94113738A CN1117618A CN 1117618 A CN1117618 A CN 1117618A CN 94113738 CN94113738 CN 94113738 CN 94113738 A CN94113738 A CN 94113738A CN 1117618 A CN1117618 A CN 1117618A
- Authority
- CN
- China
- Prior art keywords
- address
- transfer
- instruction
- transfering state
- transfer instruction
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 29
- 238000012546 transfer Methods 0.000 claims description 238
- 230000005055 memory storage Effects 0.000 claims description 21
- 230000015654 memory Effects 0.000 claims description 11
- 230000003068 static effect Effects 0.000 abstract description 20
- 238000005516 engineering process Methods 0.000 description 5
- 238000007667 floating Methods 0.000 description 5
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 101100018862 Mus musculus Ifnar1 gene Proteins 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000001915 proofreading effect Effects 0.000 description 1
- 238000007634 remodeling Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3846—Speculative instruction execution using static prediction, e.g. branch taken strategy
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
数据处理机具有预测条件转移指令的转移预测电路。转移预测电路可以工作在两种由用户选择的模式:(1)动态转移预测模式;或(2)静态转移预测模式。在动态转移预测模式,预测根据各转移指令的转移状态进行。每个转移状态可以在数据处理机确定预测是否正确后加以更新。在静态转移预测模式,转移预测根据嵌在转移指令内的一位或几位进行。数据处理机工作在这个第二模式期间可以根据用户需要更新或不更新各转移指令的转移状态。
Description
本发明属数字计算系统技术领域。具体地说,本发明提出了一种具有转移预测能力的数据处理机。
转移预测技术改善了数据处理机的性能。采用转移预测技术的数据处理机每当接收到一个转移指令时,就作出一个“推测”,根据这一个推测进行动作,然后通过执行这个转移指令确定所作的这个推测是否正确。这种数据处理机推测最终将采取转移跳到一个新的指令地址,还是会“失败”而执行下一个顺序指令。对转移指令进行预测的数据处理机由于能比完全执行转移指令更快地作出精确推测,因此性能得到了提高。这种数据处理机需要的只是对错误的推测加以校正。
通常,数据处理机在进行“推测”时可以采用两种转移预测技术中的一种技术。首先,数据处理机可以采用静态转移预测方法。在一种静态转移预测方法中,每个转移指令都有一位或几位用来确定是否应采取转移。这些位在程序编辑时全都设置好了,因此是静态的。其次,数据处理机也可以采用动态转移预测方法。在一种动态转移预测方法中,为每个转移指令分别规定了一个反映这个转移指令过去转移情况的状态。最简单的状态是上次转移或上次没有转移。一个特定转移指令的状态确定了下次数据处理机执行这个转移指令时是否应转移。一个特定转移指令的状态在这个指令完成后可以加以修改,以反映是否已采取了转移。
这两种转移预测方法各有优缺点。例如,在程序员的洞察力提高或至少保持一定预测精度的情况下,与动态转移预测相比,静态转移预测的优点是程序较短。在这些情况下,采用动态转移预测的数据处理机或许在程序完成前不能精确地规定每个可能转移指令的转移状态。相反,在一些复杂的软件程序中,为了预测转移指令动态转移预测可能是唯一的选择。在这些情况下,可以用一个比较复杂的模型确定各转移的状态。这种模型可以提高采用这种方法的数据处理的总的转移预测精度。
本发明所提出的具有转移预测的数据处理机基本上消除了现有的数据处理机的缺点。
这种数据处理机具有第一转移计算电路、第二转移计算电路、第一存储装置、以及转移预测电路。第一和第二转移计算电路分别根据一个指令的地址和这个指令本身产生一个第一取指(读取指令)地址和一个第二取指地址。第一存储装置存储了一组转移状态,这组转移状态与一组转移指令中不同的一个相联。转移预测电路在第一工作模式根据转移指令或在第二工作模式根据相应的一个转移状态从第一和第二取指地址中选择一个取指地址输出。
本发明提出的操作数据处理机的方法其特征在于首先包括:
接收一条第一转移指令,产生一个第一取指地址,产生一个第二取指地址,根据这条第一转移指令选择第一或第二取指地址,以及读取由选中的取指地址指向的指令。这种方法其次包括:接收一条第二转移指令,产生一个第三取指地址,产生一个第四取指地址,根据存储在一个第一存储装置中的一个相应的转移状态从第三和第四取指地址中选择一个取指地址,以及读取由选中的取指地址指向的指令。
本发明的特征和优点从以下结合附图所作的详细说明中可以更为清楚地看出。在这些附图中相同的标记数字标记是相同或相当的部件,其中:
图1示出了按照本发明构成的数据处理机的方框图;
图2示出了图1中的转移单元的方框图;
图3示出了图2中的转移送指/执行单元的方框图;以及
图4示出了一个示例性的转移指令的状态转换图。
图1是一个按照本发明构成的数据处理机10的方框图。数据处理机10是一个性能得到改善的数据处理机,它结合了静态和动态的转移预测方法。如上所述,数据处理机10对每个转移指令是否会导致转移进行预测后,读取在预测地址的指令,开始执行这些指令。此后,数据处理机10分析是否应该采取转移,如果前面预测不正确,则执行校正。按照本发明,数据处理机10可以工作在静态的或动态的转移预测模式。此外,数据处理机10在静态转移预测模式可以按照一个可编程的位对转移历程表中各转移指令的转移状态进行更新或不进行更新。数据处理机10可以例如在首次执行程序代码时将转移历程表“填”好。
由图1可见,总线接口单元(以下简称为BIU)12控制了数据处理机10与数据处理系统其他部件(未示出)之间数据流。BIU12接到指令高速缓冲存储器(高速缓存)14和数据高速缓存16上。指令高速缓存14向转移单元18和完成/送指单元20提供一个指令流。转移单元18将在以后结合图2和图3详细加以说明。完成/送指单元20逐个将指令送到适当的执行单元。数据处理机10有一个定点执行单元22、一个装入/存储执行单元24和一个浮点执行单元26。定点执行单元22和装入/存储执行单元24对一个通用体系结构(architectural)寄存器文件(以下简称为GPR文件)28和一个第一更名缓存30进行读写。浮点执行单元26和装入/存储执行单元24对一个浮点结构寄存器文件(以下简称为FPR文件)32和一个第二更名缓存34进行读写。
如果没有采用本发明的转移预测方法的数据处理机10的工作情况是这个领域中所周知的。通常,转移单元18确定哪个编程指令顺序适合给出的某些数据寄存器的内容和各程序步本身。完成/送指单元将单个的指令分发到各执行单元22、24和26。每个执行单元执行一特定类指令中的一个或几个指令。每个执行单元可执行的指令的特定类别由这个执行单元的名称表示。例如,浮点执行单元26执行的是浮点算术指令。
定点执行单元22将其操作结果返回给第一更名缓冲器30的指定入口。第一更名缓冲器30周期性地在产生这个结果的指令前的所有指令已经更新了各自的GPR文件入口后用第一更名缓冲器30的一个入口更新GPR文件28的一个入口。完成/送指单元20对这种更新进行协调。第一更名缓冲器30和GPR文件28都能向定点执行单元22提供操作数。相反,浮点执行单元26将其操作结果返回给第二更名缓冲器34的指定入口。第二更名缓冲器34周期性地在产生这个结果的指令前的所有指令已经更新了各自的FPR文件入口后,用第二更名缓冲器34的一个入口更新FPR文件32的一个入口。完成/送指单元20也对这种更新进行协调。第二更名缓存34和FPR文件32都能向浮点执行单元26提供操作数。
装入/存储单元24读取存储在GPR文件28、第一更名缓冲器30、FPR32或第二更名缓冲器34中的数据,并将所读出的数据写入数据高速缓存16。这数据也可以根据与所分开的本发明无关的数据处理机10的操作特点写入到一个外存储系统(未示出)。相反,装入/存储单元24读取存储在数据高速缓存16中的数据,并将所读出的数据写入GPR文件28、第一更名缓冲器30、FPR文件32或第二更名缓冲器34。
下面结合图2至图4说明采用本发明的转移预测方法的数据处理机10的工作情况。一般说来,数据处理机10是一个指令集经压缩的计算机(“RISC”)。数据处理机10是通过将每个指令划分为一系列小步的序列、每步在时间上可与其他指令的各步重叠的方式达到高性能的。这种提高性能的策略就是所谓的“流水线(pipelining)”。
在所述的本实施例中,每个指令都划分为五个分立的步骤取指、送指、执行、返写和完成。指令高速缓存14内的存储器管理电路(未示出)在取指阶段检索出在一个由转移单元18识别的存储器地址开始的一条或几条指令。在送指阶段,完成/送指单元20在确定并无不允许的数据相关和为指令结果保留一个更名缓冲器入口后,将每条指令发送给适当的执行单元。各具体执行单元在执行阶段执行它的编程指令,并在返写阶段将它的结果(如果有的话)写入所保留的更名缓冲器入口。最后,在完成阶段,完成/送指单元20在这具体指令前的各指令已经更新了体系结构寄存器文件后,用存储在更名缓冲器中的具体指令结果更新体系结构寄存器文件。通常,每个指令阶段要占用一个机器时钟周期。然而,某些指令需要占用一个以上的时钟周期,而另一些指令不需要占用所有这五个阶段。由于完成各种指令所需的时钟周期数不同,因此对于一个具体的指令来说,在回写阶段与完成阶段之间可能有延迟。
图2示出了图1中转移单元18的方框图。转移单元18产生要从存储器读取的下一条指令的地址(标为发至存储器的地址)和接收从指令高速缓存14读取的下一条指令(标为取自存储器的指令)。转移单元18将接收到的指令锁存在一个送指缓冲器44内。在这个实施例中,转移单元18每个时钟周期接收四条指令:一条存在发出的地址(读取地址)上的指令和三条存在紧接着读取地址的三个地址上的指令。因此,第一转移检测器46识别出在每组四条被锁存的指令中的第一条转移指令(如果有的话)。
锁存在送指缓冲器44内的第一条转移指令(第一指令)的地址发送给转移取指单元48、转移送指/执行单元50和转移完成单元52。转移取指单元48、转移送指/执行单元50和转移完成单元52分别在不同的指令阶段产生一个要读取的下一条指令的地址。转移送指/执行单元50还接收第一转移检测器46的输出。这三个单元的工作情况在后面将加以说明。多路复用器(标为MUX)54根据地址选择器56的输出信号输出这三个存储器地址中的一个存储器地址。地址选择器56接收转移取指单元48、转移送指/执行单元50和转移完成单元52发来的各控制信号,经解码后确定应该输出这三个存储器地址中的哪一个存储器地址信号。取指地址寄存器(标为IFAR)58将MUX54的输出锁存起来。IFAR58输出的信号标为发至存储器的地址。
转移取指单元48在IFAR58一旦锁定了一个当前取指地址后就为一条具体转移指令计算出两个新的取指地址。计算是在这具体转移指令的取指阶段进行的。这个(些)由取指地址指向的具体指令在它的取指阶段还是不知道的。转移取指单元48向MUX54输出这两个地址中的一个。当与现行取指地址关联的那条转移指令假设为在不采取转移(也就是“失败”而取下一个顺序地址)时,输出第一个地址。当与现行取指地址关联的那条转移指令假设为采取转移(也就是指令流“跳转”到一个新的位置)时,输出第二个地址。
转移取址单元48有两条内部流水线,分别计算这两个新的取指地址。转移取指单元第一流水线通过增加IFAR58锁存的地址计算出一个顺序地址。在本实施例中,转移取指单元第一流水线是在IFAR58的内容上加四个指令的长度。转移取指单元第二流水线利用IFAR58的内容的一部分来检索随机存取存储器(RAM)高速缓存器的一个第一存储块,这个存储块称为转移目标地址高速缓存(BTAC)60。在本实施例中,转移取址单元48为许多现行转移指令在BTAC60中存储了转移目标地址(取指地址)和与这些取指地址关联的转移指令的地址的子集。
在本实施例中,BTAC60是一个二路(tioo—wert)组相联高速缓存。BTAC60利用锁存在IFAR58的地址的一个子集来检索BTAC60的两个入口。转移取指单元48将这索引地址的剩余位与存储在检索到的BTAC60的两个入口的每个入口的地址位的子集进行比较。如果有一个比较的结果是匹配的,则BTAC“成功”,转移取指单元48输出与这个匹配的地址位的子集关联的“转移”的取指地址。如果这两上比较的结果没有一个是匹配的,则BTAC“失败”,转移取指单元48向MUX54输出经增加的IFAR58的内容,也就是“不转移”的取指地址。
转移送指/执行单元50在它一接到由IFAR58的内容可指向的具体指令和第一转移检测器46在可读取的四个指令中识别出第一转移指令(如果有的话)时,计算两个取指地址。转移送指/执行单元50在一个具体的转移指令的送指阶段为这个具体的转移指令计算两个地址。这两个地址分别与不转移和转移条件相应。转移送指/执行单元50向MUX54仅输出其中一个地址。应该注意,转移取指单元48已经在前面的时钟周期根据这同一转移指令向MUX54输出了一个新的取指地址。根据在转移送指/执行单元50或转移完成单元52中同时执行的各转移指令的输出情况,IFAR58可以装入这两个单元中的一个单元的输出。在这种情况下,数据处理机10将读取在这个地址开始的各指令。
转移送指/执行单元50也有两条计算它的两个取地址的内部流水线。第一流水线通过用一条指令增加转移指令地址来计算一个顺序地址。第一转移检测器46在每组四个读取的指令中检测出第一转移指令地址(如果有的话)。转移送指/执行单元的第二流水线按照这条具体转移指令计算取指地址。例如,这条流水线可以在转移指令上加一个嵌在指令内的偏移量。
一条转移指令是否要转移与转移时跳转到哪里无关。条件转移指令是一类取决于指令结果的转移指令,而这结果在类转移指令的送指/执行阶段通常是不知道的。这条件决定了是否要进行转移,但并不确定取指地址是什么。因此,转移送指/执行单元50按照动态转移预测方法或静态转移预测方法从它所计算的两个取指地址中选择一个。用户可以通过对某个专用寄存器(未示出)的某些位的位置控制要采用哪种具体的预测方法。
当按照动态转移预测方法进行操作时,转移送指/执行单元50利用IFAR58的部分内容来检索RAM的一个第二存储区,该区称为转移历程表(BHT)62。转移送指/执行单元50为每条转移指令或转移指令的某些子集规定转移状态。一条具体转移指令的转移状态确定是否要进行转移。转移送指/执行单元50在一条具体转移指令完成后更新这条指令的转移状态。本实施例的转移状态模型稍后将结合图4加以说明。
当按照静态转移预测方法进行操作时,转移送指/执行单元50利用嵌在转移指令本身内的一位或几位来确定是否要进行转移。这些位在在编译含有转移指令的程序时就都设置好了。
转移送指/执行单元50在按照静态转移预测操作时可以更新BHT62,也可以不更新BHT62。是否要更新BHT62是一个策略问题。例如,数据处理机10在启动一个程序后可以工作在更新BHT的静态转移预测模式。一旦执行了一定数量的转移指令、BHT62填充了数据,数据处理机10就可以转移到动态转移预测模式。此外,在从一个第一程序转到一个第二程序再要返回的情况下,如果第二程序很短或不如第一程序重要,那么从动态转移预测转到不带更新的静态转移预测再返回可能就比较好,因为这样避免了与第二程序关联的数据对BHT62的污染。
转移完成单元52在完成一条具体转移指令后为这条指令只产生一个地址。象其他指令一样,一条转移指令也是在它以前的所有指令已经将它们的结果写入适当的体系寄存器时完成的。此时,转移指令的转移条件是已知的。应当注意的是,转移取指单元48已经在同一转移指令的取指阶段向MUX54输出根据同一转移指令得到的一个指令读取地址,而转移送指/执行单元50可能已经在同一指令的送指/执行阶段向MUX54输出一个第二指令读取地址。
转移完成单元52含有一个先进先出队列或转移队列64。在这个队列中存储有关每个所执行的转移指令的数据。转移完成单元52通过一组数据/控制信号66接收从转移送指/执行单元50发来的一些有关每个转移指令的数据:(1)转移送指/执行单元50产生的而没有向MUX54输出的取指地址(“未选通路”
PATH);(2)在送指/执行阶段据以计算是否转移的转移条件的预测值;以及(3)本转移指令的转移状态。转移完成单元52还将每个转移指令的地址存储在转移队列64中。转移完成单元52从完成/送指单元20(未示出)接收一个指示每个转移指令完成时刻的控制信号。
在一个转移指令完成后,转移完成单元52接收到转移送指/执行单元50据以产生取指地址的转移条件的实际值。通常,这转移条件是一个专用寄存器(条件寄存器)中可由其他指令修改的一位。如果这条件的实际值与存储在转移队列64中的预测值不同,则说明转移送指/执行单元50所作的转移预测是错误的。在这种情况下,转移完成单元52输出所存储的与这个转移指令关联的地址。这个地址原是未被转移送指/执行单元50选中的那个通路。如果这条件的实际值与存储在转移队列64中的预测值相同,则说明转移送指/执行单元50所作的转移预测是正确的。在这种情况下,转移完成单元52除了使转移队列64中与所完成的这条转移指令关联的入口无效备用外不进行其他操作。无论是哪种情况,转移完成单元52都要根据对预测转移条件和实际转移条件的比较和根据所存储的转移状态为这条转移指令产生一个新的转移状态。转移完成单元52用所存储的转移地址对BHT62检索,将这个新的转移状态存入BHT62。
地址选择器56确定应该使MUX54将多至三个输出地址中的哪一个地址输出给IFAR58。地址选择器56接收从转移取指单元48输出的取指地址、从转移送指/执行单元50输出的取指地址和从转移完成单元52发来的一个控制信号。如果转移条件的预测值与实际值不同,则转移完成单元52就认定这个控制信号有效,如果转移定成单元52认定其控制信号,则地址选择器56使MUX54输出由转移完成单元52产生的地址。如果转移完成单元52没有认定的控制信号,而转移送指/执行单元50产生的地址又与转移取指单元48在前一个时钟周期产生的地址不同的话,则地址选择器56使MUX54输出转移送指/执行单元50产生的地址。否则,地址选择器56使MUX54输出转移取指单元48产生的地址。应该理解,地址选择器56可在任何给定时刻从多至三个由三条不同的转移指令产生的不同地址中选出一个地址。
图3是在图2中的转移送指/执行单元50的方框图。转移送指/执行单元50有一个多路复用器(MUX)68,它通过TOMUX54通路向图2中的MUX54输出两个地址中的一个地址。转移预测逻辑单元70选定两个地址中的哪一个地址将由MUX68输出。转移预测逻辑单元70稍后再加以说明。
MUX68接收由顺序地址计算器72发来的第一地址。顺序地址计算器72在送指阶段接收转移指令的地址,用一个指令增加这个二进制数。顺序地址计算器72产生预测这条转移指令不采取转移时从存储器读取下条指令的地址。
MUX68接收由转移地址计算器74发来的第二地址。转移地址计算器74按照所接收的转移指令和所接收的转移指令地址产生一个取指地址。例如,转移地址计算器74可以转移指令地址上加上或减去一个嵌在转移指令内的偏移量,或者直接将一个嵌在转移指令内的绝对地址送给MUX68。转移地址计算器74产生当预测这条转移指令会引起转移时从存储器读取下条指令的地址。
转移预测逻辑单元70按照模式位(MODE BITS)输入信号可以工作在三种模式:(1)动态转移预测;(2)BHT更新的静态转移预测;以及(3)BHT不更新的静态转移预测。在这个优选实施例中,模式位输入信号是从一个用户可编程的专用寄存器(未示出)发出的。
在动态转移预测模式,用存储在IFAR58中的地址对BHT62进行检索。BHT62输出与相应转移指令关联的一位或几位的转移状态。在本实施例中,每个转移指令都有四个转移状态。如果转移指令定义为两个第一状态中的一个状态,转移预测逻辑单元70将选择由顺序地址计算器72产生的地址。如果转移指令定义为两个第二状态中的一个状态,则转移预测逻辑单元70将选择由转移地址计算器74产生的地址。转移状态稍后将结合图4说明。在这个模式,转移预测逻辑单元70认定更新模式(UPDATEMODE)控制信号有效。与门76接收分别来自转移预测逻辑单元70和转移完成单元52的更新模式控制信号和BHT更新控制(BHTUPDATE)信号。与门72的输出端产生一个BHT62的写入允许信号(标为WE)。当更新模式和BHT更新这两个控制信号都被认定时,转移完成单元64就可以将一个新的转移状态写入BHT62。转移完成单元64在转移指令的完成阶段通过认定BHT更新控制信号有效和分别将转移地址和新转移状态加到BHT地址和新转移状态的数据通路的操作将一个新的转移状态写入BHT62。
在BHT更新的静态转移预测模式,转移预测逻辑单元70通过转移指令的数据通路接收这条转移指令本身的一位或几位。在本实施例中,用两位在静态转移预测模式对转移指令进行预测。其中一位是符号位,一般指示转移地址计算器74应该加两个数来产生取指地址还是减两个数来产生取指地址(向前转移或向回转移)。第二位是转移预测位,指示是否应该转移。转移预测位的逻辑状态和产生的作用之间的关系在符号位被触发相反。无论如何,符号位和转移预测位解码成一个单个转移/不转移位。如果这单个转移/不转移位逻辑上相当于第一状态,则转移预测逻辑单元70将选择由顺序地址计算器72产生的地址。如果这单个转移/不转移位逻辑上相当于第二状态,则转移预测逻辑单元70将选择由转移地址计算器74产生的地址。转移预测逻辑单元70在这个模式也认定更新模式控制信号有效。
在BHT不更新的静态转移预测模式,转移预测逻辑单元70的工作情况与在BHT更新的静态转移预测模式相同,只是在这个模式不使更新模式控制信号有效,因而转移完成单元52不能更新BHT62。
转移送指/执行单元50具有某些对于所有这三种转移预测模式来说是公共的工作特点。MUX68向数据通路PATH输出未被选中的取指地址。转移预测逻辑单元70向数据通路<CR>输出转移条件的假设值。BHT62向原转移状态数据通路输出转移指令的转移状态。如上所述,未被选中的取指地址、转移条件的假设值、转移指令的转移状态与转移指令的地址一起都保存在转移队列52内,直至这转移指令完成为止。在完成阶段,转移完成单元52确定转移送指/执行单元50是否作了正确的预测。此时,如有必要,所存储的这些数据值用来产生一个得到校正的取指地址和BHT62的一个新的转移状态。
图4示出了一个典型的转移指令的状态转移图。每条转移指令或转移指令子集中的每条转移指令都有一个为它规定的转移状态。这些转移状态存储在BHT62中,用转移指令的地址检索。每条转移指令的转移状态可以是四个状态(标为:强不转移、弱不转移、弱转移和强转移)中的一个也仅是一个状态。数据处理机10复位时,使各转移状态分别设置在相应的预定转移状态。以后,转移完成单元52在每条具体转移指令完成时就修改这条具体转移指令的转移状态。
如果一条转移指令的转移状态是强不转移或弱不转移,则转移送指/执行单元50就预测这条转移指令不会引起转移。如果一条转移指令的转移状态是强转移或弱转移,则转移送指/执行单元50预测这条转移指令会引起转移。如上所述,转移完成单元52在一条转移指令完成后将改变这条转移指令的转移状态。
如果一条转移指令的转移状态对应于强不转移,而指令执行结果却是采取了转移,则转移完成单元52就将这个转移状态改为弱不转移。一条转移指令处在强不转移或弱不转移状态,在指令完成时如果预测转移条件与实际转移条件不等,则判为采取转移。否则,转移完成单元52就将相同的转移状态—强不转移写入用转移地址检索的BHT入口。
如果一条指令的转移状态是弱不转移,而指令执行结果是采取了转移,则转移完成单元52就将这个转移状态改为弱转移。然而,如果一条指令的转移状态是弱不转移,而指令执行结果也是不采取转移,则转移完成单元52就将转移状态改为强不转移。一条转移指令处在强不转移或弱不转移状态,在指令完成时如果预测转移条件与实际条件相等,则判为不采取转移。
如果一条指令的转移状态是对应弱转移,而指令执行结果也是采取了转移,则转移完成单元52就将这个转移状态改为强转移。一条转移指令处在弱转移或强转移状态,在指令完成时如果预测转移条件与实际转移条件相等,则判为采取转移。然而,如果一条指令的转移状态是对应弱转移,而指令执行结果却是不采取转移,则转移完成单元52就将这个转移状态改为弱不转移。一条转移指令处在弱转移或强转移状态,在指令完成时如果预测转移条件与实际转移条件不等,则判为不采取转移。
如果一条指令的转移状态是对应强转移,而指令执行结果却是不采取转移,则转移完成单元52就将这个转移状态改为弱转移。否则,转移完成单元52将相同的转移状态—强转移写入用转移地址检索的BHT入口。
虽然以上结合具体实施例对本发明作了说明,但对于熟悉该技术的人员来说,在此基础上的一些改动和完善是很显然的。例如,本发明可以结合到传统上归为复杂指令系统计算机(CISC机)的数据处理机中。此外,某些功能单元在一些实施例中可以省去或划重新定位到数据处理机10的其他区域。因此可以理解,本发明包括了所有不背离所附权利要求所规定的本发明的精神实质和保护范围的各种改型。
Claims (13)
1.一种具有转移预测的数据处理机,其特征是所述数据处理机包括:
根据一条转移指令的地址产生一个第一取指地址的第一转移计算电路;
根据这条转移指令产生一个第二取指地址的第二转移计算电路,这条转移指令的结果是根据一个条件预测的;
存储一个转移状态组的第一存储装置,这个转移状态组的各转移状态分别与一个包括这条转移指令在内的转移指令组的不同的(differing)转移指令关联;以及
与第一、第二转移计算电路和第一存储装置连接的转移预测电路,该电路在第一工作模式根据转移指令而在第二工作模式根据转移状态组中一个相应转移状态从第一、第二取指地址中选择一个取指地址输出。
2.权利要求1所提出的数据处理机,其特征是所述数据处理机还包括与第一存储装置和转移预测电路连接的转移完成电路,该电路根据接收条件的情况输出一个第三取指地址,这个第三取指地址逻辑上等于未被转移预测电路输出的第一或第二取指地址中的一个。
3.权利要求2所提出的数据处理机,其中所述转移完成电路的特征在于产生转移状态组的电路,转移状态组的每个转移状态对应转移状态组的原先存储的一个相应转移状态和条件;其中转移预测电路还包括在第三模式将转移状态组存储在第一存储装置内而在第四模式不存储转移状态组的电路。
4.权利要求3所提出的数据处理机,其特征是所述数据处理机还包括:
根据第一转移指令的地址产生一个第四取指地址的第三转移计算电路;
根据一个输入地址输出一组地址中的一个地址或不输出地址的第二存储装置,这组地址的各地址分别与一组地址索引的不同的地址索引关联,而这个输入地址等于第一转移指令的地址的一部分;以及
与第三转移计算电路和第二存储装置连接的输出电路,该电路在第二存储装置匹配失败时输出第四取指地址,而在第二存储装置匹配成功时输出地址组中的一个或不输出地址。
5.权利要求2所提出的数据处理机,其特征是所述数据处理机还包括:
根据第一转移指令的地址产生一个第四取指地址的第三转移计算电路;
根据一个输入地址输出一组地址中的一个地址或不输出地址的第三存储装置,这组地址的各地址与一组地址索引的不同的地址索引关联,而这个输入地址等于第一转移指令的地址的一部分;以及
与第三转移计算电路和第二存储装置连接的输出电路,该电路在第二存储装置匹配失败时输出第四取指地址,而在第二存储装置匹配成功时输出地址组中的一个或不输出地址。
6.一种操作数据处理机的方法,其特征是所述方法包括下列各步:
在第一时间段接收数据处理机的第一和第二转移计算电路中的一条第一转移指令;
在第一转移计算电路中根据第一转移指令的地址产生一个第一取指地址;
在第二转移计算电路中根据第一转移指令产生一个第二取指地址;
通过与第一和第二转移计算电路连接的转移预测电路根据第一转移指令从第一和第二取指地址中选择一个取指地址;
读取由选中的第一或第二取指地址指向的指令;
在第二时间段接收第一和第二转移计算电路中的一条第二转移指令;
在第一转移计算电路中根据第二转移指令的地址产生一个第三取指地址;
在第二转移计算电路中根据第二转移指令产生一个第四取指地址;
通过转移预测电路根据一个转移状态组中的一个第一选中转移状态从第三和第四取指地址中选择一个取指地址,转移状态组存储在第一存储装置内,转移状态组的各转移状态分别与一个包括第二转移指令在内的转移指令组的不同的一个转移指令关联;以及
读取由选中的第三或第四取指地址指向的指令。
7.权利要求6所提出的方法,其特征是其中所述从第三和第四取指地址中选择一个取指地址这一步要早于从第一和第二取指地址中选择一个取指地址这一步。
8.权利要求7所提出的方法,其特征是其中所述从第三和第四取指地址中选择一个取指地址这一步包括:
产生一个第一转移状态;以及
将第一转移状态存储在第一存储装置内。
9.权利要求8所提出的方法,其特征是所述方法还包括下列各步:
在第一时间段后的第三时间段
接收第一和第二转移计算电路中的一条第三转移指令;
在第一转移计算电路中根据第三转移指令的地址产生一个第五取指地址;
在第二转移计算电路中根据第三转移指令产生一个第六取指地址;
根据转移状态组中的一个第二选中转移状态从第五和第六取指地址中选择一个取指地址;
读取由选中的第五或第六取指地址指向的指令;
产生一个第二转移状态;以及
将第二转移状态存储在第一存储装置内。
10.权利要求9所提出的方法,其特征是其中所述从第一和第二取指地址中选择一个取指地址这一步包括:
产生一个转移状态;以及
将这个转移状态存储在第一存储装置内。
11.权利要求10所提出的方法,其特征是所述方法还包括下列各步:
在第一时间段前的第四时间段
在一个第五转移计算电路中根据第一转移指令的地址产生一个第七取指地址;
根据第一转移指令的地址从一个第三存储装置输出一组地址中的一个地址和一组地址标记中的一个地址标记;
根据地址标记组的这个地址标记与第一转移指令的地址的逻辑比较从第七取指地址和地址组的这个地址中选择一个;以及
读取由选中的第七取指地址或地址组的这个地址指向的指令。
12.权利要求8所提出的方法,其特征是其中所述从第一和第二取指地址中选择一个取指地址这一步包括:
产生一个转移状态;以及
将这个转移状态存储在第一存储装置内。
13.权利要求6所提出的方法,其特征是其中所述从第一和第二取指地址中选择一个取指地址这一步包括:
产生一个转移状态;以及
将这个转移状态存储在第一存储装置内。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14438893A | 1993-11-02 | 1993-11-02 | |
US144,388 | 1993-11-02 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1117618A true CN1117618A (zh) | 1996-02-28 |
Family
ID=22508362
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 94113738 Pending CN1117618A (zh) | 1993-11-02 | 1994-10-31 | 具有转移预测的数据处理及其操作方法 |
Country Status (4)
Country | Link |
---|---|
CN (1) | CN1117618A (zh) |
GB (1) | GB2283595B (zh) |
IE (1) | IE940854A1 (zh) |
TW (1) | TW261676B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100342326C (zh) * | 1999-09-01 | 2007-10-10 | 英特尔公司 | 多线程处理器和操作处理器的方法 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100507834C (zh) * | 1994-12-02 | 2009-07-01 | 现代电子美国公司 | 有限游程转移预测 |
US5752014A (en) * | 1996-04-29 | 1998-05-12 | International Business Machines Corporation | Automatic selection of branch prediction methodology for subsequent branch instruction based on outcome of previous branch prediction |
SE520343C2 (sv) * | 1997-02-12 | 2003-07-01 | Ericsson Telefon Ab L M | Förfarande, system och dator för grenprediktion |
US6341348B1 (en) | 1998-12-03 | 2002-01-22 | Sun Microsystems, Inc. | Software branch prediction filtering for a microprocessor |
US6427206B1 (en) * | 1999-05-03 | 2002-07-30 | Intel Corporation | Optimized branch predictions for strongly predicted compiler branches |
US6859875B1 (en) * | 2000-06-12 | 2005-02-22 | Freescale Semiconductor, Inc. | Processor having selective branch prediction |
US11163577B2 (en) | 2018-11-26 | 2021-11-02 | International Business Machines Corporation | Selectively supporting static branch prediction settings only in association with processor-designated types of instructions |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4477872A (en) * | 1982-01-15 | 1984-10-16 | International Business Machines Corporation | Decode history table for conditional branch instructions |
US4755966A (en) * | 1985-06-28 | 1988-07-05 | Hewlett-Packard Company | Bidirectional branch prediction and optimization |
US5265213A (en) * | 1990-12-10 | 1993-11-23 | Intel Corporation | Pipeline system for executing predicted branch target instruction in a cycle concurrently with the execution of branch instruction |
-
1994
- 1994-09-13 TW TW83108427A patent/TW261676B/zh active
- 1994-10-10 GB GB9420379A patent/GB2283595B/en not_active Expired - Fee Related
- 1994-10-31 CN CN 94113738 patent/CN1117618A/zh active Pending
- 1994-11-01 IE IE940854A patent/IE940854A1/en not_active IP Right Cessation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100342326C (zh) * | 1999-09-01 | 2007-10-10 | 英特尔公司 | 多线程处理器和操作处理器的方法 |
Also Published As
Publication number | Publication date |
---|---|
GB9420379D0 (en) | 1994-11-23 |
GB2283595B (en) | 1998-06-03 |
TW261676B (zh) | 1995-11-01 |
IE940854A1 (en) | 1995-05-03 |
GB2283595A (en) | 1995-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101479700B (zh) | 用于积极主动分支目标地址高速缓冲存储器管理的方法和设备 | |
CN100487641C (zh) | 预测提示指令的运行时间更新 | |
US5805877A (en) | Data processor with branch target address cache and method of operation | |
CN1148650C (zh) | 数据处理系统、微处理器以及处理指令的方法 | |
US5933628A (en) | Method for identifying hard-to-predict branches to enhance processor performance | |
EP0855058B1 (en) | Programmable branch prediction system and method for computer systems | |
US5530825A (en) | Data processor with branch target address cache and method of operation | |
CN1142483C (zh) | 具有改进的地址目标预测的处理器和方法 | |
EP0381444B1 (en) | Branch prediction | |
US6189091B1 (en) | Apparatus and method for speculatively updating global history and restoring same on branch misprediction detection | |
US5761723A (en) | Data processor with branch prediction and method of operation | |
US20060090063A1 (en) | Method for executing structured symbolic machine code on a microprocessor | |
JP3594506B2 (ja) | マイクロプロセッサの分岐命令予測方法 | |
EP0847004B1 (en) | Information processing apparatus with branch prediction | |
CN101529378B (zh) | 用于处理分支历史信息的方法及管线处理器 | |
JP2001236266A (ja) | 高レベルキャッシュの効率改善方法 | |
US5634119A (en) | Computer processing unit employing a separate millicode branch history table | |
CN1117618A (zh) | 具有转移预测的数据处理及其操作方法 | |
US20020199092A1 (en) | Split history tables for branch prediction | |
Evers et al. | Understanding branches and designing branch predictors for high-performance microprocessors | |
CN86103694A (zh) | 缩减指令集的计算机中字节传送的方法和装置 | |
CN1124546C (zh) | 一种超标量处理器及在该超标量处理器中完成指令的方法 | |
US20050283593A1 (en) | Loop end prediction | |
US5745780A (en) | Method and apparatus for source lookup within a central processing unit | |
EP0666538A2 (en) | Data processor with branch target address cache and method of operation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C01 | Deemed withdrawal of patent application (patent law 1993) | ||
WD01 | Invention patent application deemed withdrawn after publication |