CN1821953A - 可变群组组合分支目标地址快取传送每一快取列多目标地址 - Google Patents
可变群组组合分支目标地址快取传送每一快取列多目标地址 Download PDFInfo
- Publication number
- CN1821953A CN1821953A CN 200510091909 CN200510091909A CN1821953A CN 1821953 A CN1821953 A CN 1821953A CN 200510091909 CN200510091909 CN 200510091909 CN 200510091909 A CN200510091909 A CN 200510091909A CN 1821953 A CN1821953 A CN 1821953A
- Authority
- CN
- China
- Prior art keywords
- soon
- branch instruction
- memory cache
- row
- 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.)
- Granted
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
本发明是揭露一分支预测装置,其具有两个双通道集合组合快取存储器,其中每一双通道集合组合快取存储器是由一指令快取撷取地址的一较低部分所索引。此索引选取四个入口的一群组,每一入口是选自每一快取列的每一通道。每一入口储存一不同的先前被执行分支指令的一单一目标地址。依据程序内分支指令的分布,对某些群组,此四个入口快取在四个不同快取列的每一快取列内的一分支指令的目标地址,以获得四通道群组的组合;对其他群组,此四个入口快取在两个不同快取列的每一快取列内的一分支指令的目标地址以及在一第三不同快取列内的两分支指令的目标地址,以获得三通道群组的组合。
Description
技术领域
本发明是有关于微处理器内分支预测的领域,尤其是有关于分支目标地址快取。
背景技术
许多现代管线化微处理器是包含一分支目标地址快取(branch target address cache,其后简称BTAC),此BTAC快取先前被执行的分支指令的目标地址。当从微处理器的指令快取撷取一快取列时,撷取地址是提供给BTAC,且BTAC是利用此撷取地址预测是否有分支指令出现在此快取列中,以及是否此BTAC包含一有效目标地址给分支指令。如果分支指令是被预测发生,则处理器是分支至BTAC所提供的有效目标地址。由于每一快取列是可储存多指令,因此指令快取列是可能包含一个以上的分支指令。因此,一些BTAC是固定提供储存器以快取每一快取列的两个目标地址,由于在此快取列内的一分支指令是可能执行而另一分支指令是可能不执行,因此此方法是提供BTAC更精准预测程序的流程。
在传统BTAC中,两目标地址的储存是固定于BTAC内。亦即,无论是否两分支指令出现在此快取列内或是一分支指令出现在此快取列内,其空间是固定专用。事实上,在一被整合至指令快取的传统BTAC中,甚至没有分支指令出现在此快取列内,其空间仍是固定专用。然而,根据观察所得,仅将近20%含有一分支指令的快取列是含有两分支指令。因此,在BTAC内第二目标地址固定专用的额外空间是浪费快取列80%的空间。例如:在一双通道集合组合快取(2-way set associativecache)固定提供每一入口的两个目标地址储存的BTAC中,由于仅有大约20%的快取列是含有两个或两个以上的分支指令,因此仅有大约60%的目标地址储存空间是被用于储存有效的目标地址。
因此,所需要的是一个更有空间效率的机制以预测在一撷取的快取列内多分支指令。
发明内容
本发明的目的是提供一分支预测装置,其动态决定一群组入口的组合,此群组入口是由一指定的撷取地址索引依照此索引所指定的快取列内所出现的分支指令数量而选取。由此仅以一单分支指令享有较多的索引组合以及以多分支指令享有较少的索引组合。
本发明是提供一微电脑内的一装置,用以预测从一指令快取的一撷取地址所撷取的每一快取列内的一可变数量的分支指令的一目标地址。此装置是包含一第一与一第二双通道集合组合快取存储器(two-way set associative cache memory),每一双通道集合组合快取存储器是具有一索引输入耦合接收此指令快取撷取地址的一部分。此索引选取复数个四入口(entry)群组其中之一。每一群组是具有一入口于每一第一及第二快取存储器的每一通道。每一入口是用以快取一先前被执行的分支指令的一目标地址。此装置亦包含一置换逻辑(replacement logic),是耦接至此第一与此第二快取,是用以选取更换入口其中之一,以回应一分支指令的决定,以使得(a)在复数个群组的一第一子集微电脑操作期间,四入口是在每一四个不同快取列内快取一分支指令的目标地址;以及(b)在复数个群组的一第二子集微电脑操作期间,四入口是在每一两个不同快取列内快取一分支指令的目标地址以及在一第三不同快取列内快取两分支指令的目标地址以获得三通道群组的组合。
本发明是提供一微电脑内预测从一指令快取的一撷取地址所撷取的一快取列内一可变数量的分支指令的一目标地址的方法。此方法是包含提供一索引给一第一与一第二双通道集合组合快取存储器以选取复数个四入口群组其中之一。每一群组是包含一入口于每一第一与第二快取存储器的每一通道。每一入口是快取一先前被执行的分支指令的一目标地址。此索引是指令快取撷取地址的一部分。此方法亦包含选取更换入口其中之一,以回应一分支指令的决定,以使得(a)在复数个群组的一第一子集微电脑操作期间,四入口是在每一四个不同快取列内快取一分支指令的目标地址以获得四通道群组的组合;以及(b)在复数个群组的一第二子集微电脑操作期间,四入口是在每一两个不同快取列内快取一分支指令的目标地址以及在一第三不同快取列内快取两分支指令的目标地址以获得三通道群组的组合。
本发明是提供一微电脑内的一装置,用以预测从一指令快取的一撷取地址所撷取的一快取列内一可变数量的分支指令的一目标地址。此装置是包含M个N通道集合组合快取存储器,每一N通道集合组合快取存储器是具有一索引输入耦合接收此指令快取撷取地址的一部分。此索引选取复数个M×N入口群组其中之一。每一群组是包含一入口于每一M个快取存储器的每一通道。每一入口是用以快取一先前被执行的分支指令的一目标地址。此装置亦包含一置换逻辑,是耦接至此M个快取,是用以选取更换入口其中之一,以回应一分支指令的决定,以使得(a)在复数个群组的一第一子集微电脑操作期间,M×N入口是在每一M×N个不同快取列内快取一分支指令的目标地址以获得M×N通道群组组合;以及(b)在复数个群组的一第二子集微电脑操作期间,M×N入口是在每一(M×N-1)个不同快取列内快取一分支指令的目标地址以及在一第M×N不同快取列内快取两分支指令的目标地址以获得(M×N-1)通道群组的组合。
本发明是提供一微电脑内预测从一指令快取的一撷取地址所撷取的一快取列内一可变数量的分支指令的一目标地址的方法。此方法是包含提供一索引给M个N通道集合组合快取存储器以选取复数个M×N入口群组其中之一。每一群组是包含一入口于每一M个快取存储器的每一通道。每一入口是快取一先前被执行的分支指令的一目标地址。此索引是指令快取撷取地址的一部分。此方法亦包含选取更换入口其中之一,以回应一分支指令的决定,以使得(a)在复数个群组的一第一子集微电脑操作期间,M×N入口是在每一M×N个不同快取列内快取一分支指令的目标地址以获得M×N通道群组的组合;以及(b)在复数个群组的一第二子集微电脑操作期间,M×N入口是在每一(M×N-1)个不同快取列内快取一分支指令的目标地址以及在一第M×N不同快取列内快取两分支指令的目标地址以获得(M×N-1)通道群组的组合。
本发明是提供一偕同计算机装置使用的计算机程序产品,此计算机程序产品是包含一计算机可使用的媒体,其具有计算机可读取的程序码嵌入此媒体,使得在一微电脑内的一装置预测从一指令快取的一撷取地址所撷取的每一快取列内一可变数量的分支指令的一目标地址。此计算机可读取的程序码是包含一第一程序码提供一第一与一第二双通道集合组合快取存储器,每一双通道集合组合快取存储器是具有一索引输入耦合接收此指令快取撷取地址的一部分。此索引是选取复数个四入口群组其中之一。每一群组是具有一入口于每一第一及第二快取存储器的每一通道。每一入口是用以快取一先前被执行的分支指令的一目标地址。此计算机可读取的程序码亦包含一第二程序提供一置换逻辑,是耦接至此第一与此第二快取,是用以选取更换入口其中之一,以回应一分支指令的决定,以使得(a)在复数个群组的一第一子集微电脑操作期间,四入口是在每一四个不同快取列内快取一分支指令的目标地址以获得四通道群组的组合;以及(b)在复数个群组的一第二子集微电脑操作期间,四入口是在每一两个不同快取列内快取一分支指令的目标地址以及在一第三不同快取列内快取两分支指令的目标地址以获得三通道群组的组合。
本发明的一优点是其可预测每一指令快取列占用的两个目标地址,亦可预测每一快取列索引占用的每一具有较高组合性的快取列的一单目标地址。本发明是藉由排序每一入口的一单目标地址以达到上述的目的,而并非藉由排序每一入口的多目标地址,藉此相较于一传统BTAC是更有效率地使用储存空间。并且,如果指令快取的组合增加,则本发明的分支目标地址预测是可适当增加其有效组合以符合许多不具等比例增加分支目标地址预测装置的索引的指令快取的组合。
附图说明
为进一步说明本发明的具体技术内容,以下结合实施例及附图详细说明如后,其中:
图1是本发明的一微处理器的方块图;
图2是图1的分支目标地址预测装置的方块图;
图3是图2的分支目标地址预测装置在被读取产生一预测目标地址的操作的流程图;以及
图4是图2的分支目标地址预测装置在被更新回应一决定分支指令的操作的流程图。
具体实施方式
请参照图1,其为本发明的一微处理器100的方块图。微处理器100是包含一管线化微处理器。在一实施例中,微处理器100是包含一微处理器,此微处理器的指令集是实质符合×86架构指令集。
微处理器100是包含一指令撷取器102。指令撷取器102亦控制一撷取地址多工器136,而撷取地址多工器136输出一目前指令快取撷取地址162。目前指令快取撷取地址162指定撷取目前执行程序的指令字节的下一个快取列的地址以供微处理器100执行。如果快取地址162是命中(hit)于一指令快取104,则指令快取104输出由撷取地址162所指定的指令的快取列;否则,指令撷取器102从一存储器(例如:一耦接至微处理器100的系统存储器)撷取未命中(missing)的指令,并且指令快取104快取从存储器所撷取的指令以供微处理器100的后序使用。尤其从指令快取104所撷取的快取列是有可能包含0、1、2或更多个分支指令。在一实施例中,指令快取104是包含一64KB的四通道集合组合一阶快取(4-way set associative level-l cache);然而,本发明是可被用于连接各种大小与各种组合的指令快取。
微处理器100亦包含一分支目标地址预测装置142(详细讨论如下)。分支目标地址预测装置142快取有关先前被执行的分支指令的信息。当指令撷取器102从指令快取104撷取一快取列时,分支目标地址预测装置142依据分支目标地址预测装置142内所快取的信息预测是否有一个或更多个分支指令是出现在此快取列内,并且提供分支指令其中之一的一被预测目标地址给多工器136。如果预测分支指令将发生,则多工器136是选取被预测目标地址164当成在下一时脉周期上的撷取地址162以实现微处理器100的一分支对被预测目标地址164。
尤其,分支目标地址预测装置142是快取先前被执行的分支指令的目标地址、快取列内分支指令的偏移值、是否分支指令会发生的一预测、含有分支指令的快取列的一标签(tag)以及一有效的指示(indicator)。如下列的详述,分支目标地址预测装置142是包含多集合的组合分支目标地址快取存储器以及置换逻辑。置换逻辑是以动态变更每一索引群组的有效组合的方法将多快取的更换视为一体控制,由此,对某些多分支指令是出现在指令快取104的一对应快取列的群组,组合性是较少容纳多分支,并且,对某些仅有一单一分支指令是出现在对应快取列的群组,组合性是较多。一索引群组或群组,是包含由撷取地址162的索引部分选取的所有快取的所有集合内的所有入口,如图2所示。
如某些传统分支预测器,如果从指令快取104所撷取的一快取列是包含多分支指令,则分支目标地址预测装置142是可提供多目标地址;然而,不像快取列多分支的分支预测器,本发明的分支目标地址预测装置142内的每一入口是包含储存器以快取仅有单一分支目标地址与其相关信息,而非像传统预测器是包含储存器以快取多分支目标地址,传统预测器中,传统储存空间是浪费快取列的一基本百分比。因此,本发明的分支目标地址预测装置142使储存空间的使用更有效率,并且提供更多组合,由此潜在增加分支预测的精准度。
所应了解的是,快取列或列的名词的使用,在此除了在其它方面表明之外,是参照每一时脉周期由指令快取器102从指令快取104所撷取的指令字节的总量,其可能是指令快取104与主存储器间所实际传送的一些字节的一子集。例如:在图1的实施例中,微处理器100在系统存储器与指令快取104之间可能一次传送32字节的指令;然而,指令快取器102每一时脉周期从指令快取104仅撷取16字节。如以下所讨论,在一实施例中,分支目标地址预测装置142预测每一时脉周期是否一个或多个分支指令出现在一快取列,或是16字节总量。
微处理器100亦包含一指令缓冲器106耦接至指令快取104。指令缓冲器106接收来自指令快取104的指令字节的快取列,并且缓冲快取列直到他们可以被格式化成区别的指令而由微处理器100所执行。在一实施例中,指令缓冲器106是包含四个入口以储存到四个快取列。
微处理器100亦包含一指令格式化器108耦合至指令缓冲器106。指令格式化器108接收来自指令缓冲器106的指令位,并且由此产生已格式化的指令。亦即,指令格式化器108查看指令缓冲器106内指令字节的一字符串,决定此字节包含下一指令与其长度,并且输出下一指令与其长度。在一实施例中,已格式化的指令是包含实质上符合×86架构指令集的指令。
微处理器100亦包含一格式化指令伫列112耦接至指令格式化器108。格式化指令伫列112接收来自指令格式化器108的格式化指令,并且缓冲格式化指令直到他们可以被转换成微指令。在一实施例中,格式化指令伫列112是包含入口以储存到12个格式化指令。
微处理器100亦包含一指令转译器114耦接至格式化指令伫列112。指令转译器114将储存于格式化指令伫列112的格式化宏指令转译成微指令。在一实施例中,微处理器100是包含一执行精简的微指令或本机指令集的精简指令集计算机(reduced instruction set computer;RISC)核。
微处理器100亦包含一转译指令伫列116耦接至指令转译器114。转译指令伫列116接收来自指令转译器114的转译微指令,并且缓冲微指令直到他们可以被剩余的微处理器管线所执行。
微处理器100亦包含一暂存器阶段118耦接至转译指令伫列116。暂存器阶段118是包含复数个暂存器用以储存指令操作数与结果。暂存器阶段118包含一使用者可见的暂存器组用以储存微处理器100的使用者可见的状态。
微处理器100亦包含一地址阶段122耦接至暂存器阶段118。地址阶段122是包含地址产生逻辑用以产生存储器地址给存取存储器的指令,例如:加载或储存指令以及分支指令。
微处理器100亦包含资料阶段124耦接至地址阶段122。资料阶段124是包含逻辑用以从存储器加载资料以及一个或多个快取用以快取从存储器所加载的资料。
微处理器100亦包含执行阶段126耦接至资料阶段124。执行阶段126是包含执行单元用以执行指令,例如算术及逻辑单元用以执行算术及逻辑指令。在一实施例中,执行阶段126是包含一整数执行单元;一浮点执行单元;一MMX执行单元;以及一SSE执行单元。执行阶段126亦包含逻辑用以决定分支指令,尤其执行阶段126决定一分支指令是否会发生以及此分支指令的实际目标地址。
微处理器100亦包含一储存阶段128耦接至执行阶段126。储存阶段128是包含逻辑用以回应储存微指令储存资料至存储器。此外,储存阶段128产生一更新请求176用以更新具有决定分支指令目标地址的分支目标地址预测装置142,并回应决定分支指令的执行阶段126。更新请求176是尚包含被决定分支指令地址与被决定目标地址,在一实施例中,其等的每一是32位。BTAC更新请求176亦包含信息(将于图2详细讨论),其与分支指令以管线下送(piped down),其中分支指令是当分支目标地址预测装置142是与包含来自指令快取104的快取列同时存取与撷取时而获得。
微处理器100亦包含一写回阶段132耦接至储存阶段128。写回阶段132是包含逻辑用以将一指令结果写至暂存器阶段118。
除了接收预测目标地址164,多工器136亦接收撷取地址162与一下一紧随的撷取地址166。一加法器134是藉由增加目前撷取地址一快取列的大小而产生下一紧随的撷取地址166。在从指令快取104正常快取一快取列后,多工器136是选取下一紧随的撷取地址166以输出如目前撷取地址162,于下一时脉周期。如果指令缓冲器106是满的,则多工器136是选取撷取地址162而非下一紧随的撷取地址166。如上所述,如果分支目标地址预测装置142指示其已提供一有效被预测目标地址164给一在目前从指令快取104所撷取的快取列内的分支指令,并且分支指令是被预测将发生,则多工器136选取预测目标地址164当成撷取地址162于下一时脉周期。虽然未绘出,多工器136亦从储存阶段128接收一正确地址。如果储存阶段128指示一分支指令是预测错误,则多工器136是选取正确地址以更正此分支预测错误。
请参照图2,其为图1的分支目标地址预测装置142的方块图。分支目标地址预测装置142是包含控制逻辑202,其控制分支目标地址预测装置142的各种操作,例如:BTAC 208的读取与写入以及一如下所述的LRU阵列212。控制逻辑202是接收微处理器100的一指令指标222,其指示目前被撷取执行的程序指令的地址。
分支目标地址预测装置142亦包含一两输入地址多工器216。此地址多工器216的一输入是接收图1的指令快取104撷取地址162,以及其另一输入是接收由控制逻辑202所产生的一更新地址232。当BTAC 208及/或LRU阵列212被读取时,控制逻辑202是控制地址多工器216以输出撷取地址,并且当BTAC 208及/或LRU阵列212被写入时,控制逻辑202是控制地址多工器216以选取更新地址232。
分支目标地址预测装置142亦包含两分支目标地址快取(branch target address cache;BTAC)存储器,其等是分别标示为第一BTAC 208A与第BTAC 208B。第一BTAC208A与第二BTAC 208B是一般BATC 208的个别称呼以及整体称为BATCs 208。第一BTAC 208A与第二BTAC 208B在此亦被称为第一侧与第二侧。每一BATC 208是耦合以接收一由多工器216所输出地址的索引部分274。在一实施例中,索引274是包含由多工器216所输出地址的第4~13位。每一BTAC 208是双通道集合的组合。每一唯一索引274值是从每一BTACs 208选取一不同集合的两通道(在图2中标示通道0与通道1)。每一通道0与通道1具有一入口264用以快取一先前被执行的分支指令的一目标地址254;一有效指示238指示入口264是否有效;一偏移266是指定从指令快取104所撷取的对应快取列内先前被执行的分支指令的位置或开始的字节偏移;先前被执行的分支指令的一发生/不发生预测276;以及包含先前被执行的分支指令的快取列地址的一标签242。BTACs 208是可个别更新,因此,控制逻辑202产生个别写入信号给每一BTACs 208。
由一索引274值所选取的四个入口264(两入口264是来自每一两BTACs 208),在此是整体被称为一索引群组262或群组262,如图2所示。图2是图解说明三个被标示为262A、262B以及262C的典型群组262。在一实施例中,分支目标地址预测装置142是具有1024个群组262。每次指令快取器102从指令快取104撷取一快取列时,BTACs 208是输出被快取在由撷取地址162的索引274所选取的群组的所有四个入口内的信息252。
群组262A例示在分支目标地址预测装置142内群组262的一子集,其正快取在四个不同指令快取列的每一快取列内的一单一先前被执行分支指令的一分支目标地址与相关信息。此四个不同目标地址是被标示为W、X、Y、Z于群组262A。亦即,四个不同快取列的每一快取列的快取标签是独一无二的。因此,虽然两个BTACs 208仅是双通道集合的组合,但是整体查看两个BTACs 208,由于对某些索引274值,群组262A是快取四个不同快取列内的一单一分支指令的一目标地址,因此群组262A实际上是一四通道组合群组262。
群组262B例示在分支目标地址预测装置142内群组262的一子集,其正快取在两个不同指令快取列的每一快取列内的一单一先前被执行分支指令的一分支目标地址与相关信息,以及在一第三不同指令快取列内的两个先前被执行分支指令的两分支目标地址与相关信息。此四个不同目标地址是被标示为W1、X、Y、W2于群组262B。W1与W2是标示在相同快取列内的两个不同分支指令的目标地址。亦即,与目标地址W1与W2有关的快取标签是完全相似,但与目标地址X与Y有关的快取标签却是独一无二的。因此,整体查看两个BTACs 208,由于对某些索引274值,群组262B是快取在两个不同指令快取列内的一单一分支指令的一目标地址,以及快取在一第三不同指令快取列内的两个不同分支指令的两个目标地址,因此群组262B实际上是一三通道组合群组262。
群组262C例示在分支目标地址预测装置142内群组262的一子集,其正快取在两个不同指令快取列的每一快取列内的两个先前被执行分支指令的一分支目标地址与相关信息。此四个不同目标地址是被标示为W1、X1、X2、W2于群组262C。W1与W2是标示在一第一指令快取列内的两个不同分支指令的目标地址,以及X1与X2是标示在一第二指令快取列内的两个不同分支指令的目标地址。亦即,与目标地址W1与W2有关的快取标签是完全相似,与目标地址X1与X2有关的快取标签是完全相似,但与目标地址W1与W2有关的快取标签和与目标地址X1与X2有关的快取标签却是不同的。因此,整体查看两个BTACs 208,由于对某些索引274值,群组262C是快取在两个不同快取列的每一快取列内两个不同分支指令的一目标地址,因此群组262C实际上是一双通道组合群组262。
无论分支目标地址预测装置142内的一特定索引群组262是依据目前执行程序内的先前被执行分支指令的分布而成为双通道、三通道或四通道组合群组262的子集,尤其是依据储存目前执行程序指令的快取列内的先前被执行分支指令的分布。其优点是,当微处理器100执行且终于决定一新的分支指令,并且以新的分支指令的目标地址与相关信息更新分支目标地址预测装置142时,分支目标地址预测装置142可能更换被选取群组262内的一存在入口264以变更群组262的组合以符合需求。尤其,分支目标地址预测装置142可能减少组合性的阶层以容纳在一快取列内有两分支指令或甚至在两快取列内有两分支指令的一特定索引274分支指令的一分布;相反地,分支目标地址预测装置142可能增加组合性的阶层以容纳在每一快取列内仅具有一单一分支指令的一特定索引274分支指令的一分布。
分支目标地址预测装置142亦包含一最近最少使用(least recently used,其后简称LRU)存储器阵列212。LRU阵列212亦接收索引274,此索引274是选取LRU阵列212内的一入口。在LRU阵列212内的每一入口是储存由索引274所选取在BTACs 208内的一对应群组262的更换信息。因此,LRU阵列212是一共享于两BTACs 208之间的总体资源。在一实施例中,更换信息是包含一位用以指示与被选取群组262有关的第一BTAC 208A或第二BTAC 208B是否为最近最少使用;一位用以指示由索引274所选取在第一BTAC 208A内的集合有关的第一BTAC 208A的通道0或通道1是否为最近最少使用;以及一位用以指示由索引274所选取在第BTAC 208B内的集合有关的第二BTAC 208B的通道0或通道1是否为最近最少使用。每次指令快取器102从指令快取104撷取一快取列时,LRU阵列212输出由索引274所选取的入口的更换信息236。控制逻辑202产生更新数据234提供给BTACs 208与LRU阵列212当成输入。当以更新数据234更新BTACs 208及/或LRU阵列212时,控制逻辑202是使地址选择多工器216选取更新地址232。在一实施例中,更新资料234可能包含更新LRU信息、目标地址、标签、有效位、分支指令偏移值以及发生/不发生(T/NT)预测。当一分支指令是被决定且管线产生一更新请求176,控制逻辑202是使用更换信息236以决定更换在一群组262内的那一入口,如下列与图4相关的更详细描述。控制逻辑202亦依据储存在BTACs 208内的信息的使用而更新在LRU阵列212内的更换信息。在一实施例中,在BTACs 208内的一入口264,如果其是被分配用于更换且如果其有关的分支指令是有效的以及当BTACs 208被读取时预测发生,则是被视为用于最近最少使用的目的。
分支目标地址预测装置142亦包含四个比较器214以助于侦测快取地址162是否命中于BTACs 208内。每一比较器214是接收一标签242当成地址274,此标签242是由BTACs 208从多工器216所输出的撷取地址162的索引274部分所选取的群组262的一个别入口264输出。每一比较器214比较其个别标签242与撷取地址162的标签部分272,如果个别标签242是匹配于撷取地址162标签272,则产生一真值(true)于一个匹配指示244。匹配指示244是被提供给控制逻辑202。
控制逻辑202亦接收一有效指示238、分支指令偏移266以及由BTACs 208从索引274所选取的群组262的一个别入口264所输出的T/NT预测276。控制逻辑202产生四个命中指示258对应于群组262的四个入口264。如果对应有效指示238与匹配信号244两者是为“真”时,则控制逻辑202产生一真值于命中指示258。当分支指令被决定时,命中指示258是与用于决定更换在一群组262内那一入口264的分支指令一起以管线下送微处理器100的管线。
分支目标地址预测装置142亦包含一两输入的第一通道选择多工器206A与一两输入的第二通道选择多工器206B。第一通道选择多工器206A是接收来自索引274所选取的群组262内的第一BTAC 208A的每一入口264的目标地址254。控制逻辑202经由命中信号258使第一通道选择多工器206A选取输出当成第一侧目标地址256A,第一侧目标地址256A是撷取地址162所命中的目标地址254的通道0或通道1。同理,第二通道选择多工器206B是接收来自索引274所选取的群组262内的第BTAC 208B的每一入口264的目标地址254,且控制逻辑202使第二通道选择多工器206B选取输出当成第二侧目标地址256B,第二侧目标地址256B是撷取地址址162所命中的目标地址254的通道0或通道1。
分支目标地址预测装置142亦包含一两输入的侧选择多工器204,其接收来自通道选择多工器206的第一侧目标地址256A与第二侧目标地址256B。控制逻辑202经由一选择信号278使侧选择多工器204输出如同图1的被预测目标地址164,被预测目标地址164是在被选取群组262内的第一、有效、发生、可见的分支指令的目标地址256。如下列有关图3的详细描述。
控制逻辑202接收图1的更新请求176。更新请求176是包含有关于被决定分支指令的信息(例如:其地址与目标地址)。当分支目标地址预测装置142在分支指令开始从指令快取104撷取,并且是透过微处理器100管线与分支指令一起以管线下传存取时,更新请求176亦包含有效位238、偏移266、T/NT预测276、匹配指示244以及LRU信息236输出。如果被决定的分支指令并非一新的分支指令(例如:如果分支目标地址预测装置142已经快取被决定的分支指令的预测信息),则更新请求176亦包含两BTACs 208以及在BTAC 208已提供被决定的分支指令的预测信息的两个通道的一指示。
在一实施例中,BTACs 208的每一BTAC是包含个别的存储器阵列用以快取分支预测信息。例如:在一实施例中,分支目标地址254与分支指令偏移266是被快取在一第一存储器阵列内;标签242与有效位238是被快取在一第二存储器阵列内;以及T/NT预测276是被储存在一第三存储器阵列内。在一实施例中,个别T/NT储存阵列的储存组件是两位饱和上数/下属计数器用以指示一极可能发生、发生、不发生或极不可能发生的预测。在另一实施例中,T/NT预测276除了BTACs 208的外是由一完整个别分支预测器所产生,例如:一分支历史表格。
从图2与其它图标可观察到的,本发明的分支目标地址预测装置142使储存空间的使用比传统每一快取列多分支的分支预测器更有效率,其中传统每一快取列多分支的分支预测器是藉由包含储存器用以快取仅有的一单一分支目标地址与其每一入口相关信息,而不是固定包含储存器用以快取每一入口多分支目标地址。然而,储存空间的效率是消耗每一BTAC 208快取标签而获得,在图2的实施例中的快取标签是一单一传统每一快取列多分支BTAC的两倍。然而,标签基本上比分支目标地址与相关预测信息具有较少位(在一实施例中,每一入口是快取20位的标签,而每一入口是快取42位的分支预测信息);因此,其优点是,分支目标预测装置142的整体大小是较小的。并且,分支目标预测装置142有利于提供每一群组可变的组合性,其潜在改良其性能超越一传统BTAC。
请参照图3,其为图2的分支目标地址预测装置142在被读取以产生一被预测目标地址164的操作流程图。流程开始于步骤302。
在步骤302,指令撷取器102产生撷取地址162以从图1的指令快取104撷取一快取列的指令。撷取地址162亦被提供用以存取图1的分支目标地址预测装置142。回应撷取地址162,控制逻辑202控制地址多工器216以选取撷取地址162用以输出做为图2的地址274。索引274部分的撷取地址162是选取图2的BTACs 208的群组262其中的一群组。如的前所述,群组262是包含每一第一BTAC 208A与第BTAC 208B的每一通道0与1的一入口264。接着执行至步骤304。
在步骤304,BTACs 208是输出标签242、有效位238、偏移266、T/NT预测276以及在步骤302所被选取的组群262的每一入口的图2的目标地址254。接着执行至步骤306。
在步骤306,比较器214是比较撷取地址162标签272与被选取群组262的每一标签242以产生图2的匹配指示244用于群组262内的每一入口264。接着执行至步骤308。
在步骤308,控制逻辑202产生命中指示258给被选取的群组262的每一入口,其是依据他们对应匹配指示244与有效指示238。控制逻辑202亦控制通道选择多工器206以选取撷取地址162命中的目标地址254的通道。接着执行至步骤312。
在步骤312,侧选择多工器204是依据指令指标222、命中指示258、T/NT预测276以及偏移266值选取具有第一、有效、发生、可见的分支指令的BTAC 208。控制逻辑202从T/NT预测276是否会发生决定。在一实施例中,如果分支指令的T/NT预测是发生或极可能发生,则分支指令是发生。如果一分支指令的偏移266值是大于或等于目前指令指标222的对应最少象征位的值时,此分支指令是可见。如果一分支指令的对应有效位238是为真时,此分支指令是有效的。如果一分支指令在快取列是最早的,此分支指令在其快取列是第一的,例如:如果其具有较低偏移266值。因此,如果撷取地址162是命中于第一BTAC 208A与第二BTAC 208B之内(例如:如果分支目标地址预测装置142是包含一有效目标地址用于目前被撷取的快取列内的两分支指令的每一分支指令),并且两分支指令是被预测发生以及两分支指令的偏移266是大于指令指标222(例如:双分支是可见),则控制逻辑202使得侧选择多工器204选取具有最低偏移266值的分支指令的目标地址256。如果撷取地址162是仅命中于第一BTAC 208A与第二BTAC 208B其中之一时(例如:如果分支目标地址预测装置142是包含一有效目标地址用于目前被撷取的快取列内的仅有的一分支指令),或仅有一分支指令是被预测发生或仅有一分支指令的偏移266是小于指令指标222,则控制逻辑202使得侧选择多工器204选取有效、发生、可见的分支指令。流程结束于步骤312。
请参照图4,其为图1的分支目标地址预测装置142在被更新以回应一被决定分支指令操作的流程图。流程开始于步骤402。
在步骤402,微处理器100的管线决定一分支指令与回应产生图1的一更新请求176,其包含被决定的分支指令的地址、分支指令的被决定的目标地址以及当分支目标地址预测装置142潜在产生分支指令一被预测目标地址时,产生以管线向下输送的信息。接着执行至步骤404。
在步骤404,控制逻辑202检查更新请求176内以管线向下输送的信息以测定被决定的分支指令是否为一新分支指令,例如:是否没有BTAC 208已快取被决定分支指令的有效预测信息。如果被决定的分支指令是一新分支指令,则流程是执行至步骤408;否则,流程是执行至步骤406。
在步骤406,控制逻辑202更新在第一BTAC 208A或第二BTAC 208B内已正在快取被决定分支指令的有效信息的通道,如由更新请求176内以管线向下传输的信息所指示。例如:如果以管线向下传输的信息指示第BTAC 208B的通道1是正在快取被决定分支指令的预测信息,则控制逻辑202更新在更新请求176内分支指令地址索引274所选取的群组262的第二BTAC 208B的通道1内的入口,其中更新请求176在分支目标预测装置142的更新期间是被当成更新地址232提供给多工器216。流程结束于步骤406。
在步骤408,控制逻辑202检查更新请求176内以管线向下输送的信息以测定被决定的分支指令的撷取地址部分是否仅命中于第一BTAC 208A之内。亦即,控制逻辑202测定是否分支目标预测装置142正预测第一BTAC 208A而非第二BTAC 208B是正在含有被决定分支指令的快取列内快取一分支指令的有效预测信息,但其并非被决定的分支指令。如果不是,则流程是执行至步骤414;否则,流程是执行至步骤412。
在步骤412,控制逻辑202更换群组262的第二BTAC 208B内的最近最少使用的通道,其中群组262是由更新请求176内的分支指令地址的索引274所选取,其中更新请求176是被当成更新地址232提供给多工器216。亦即,控制逻辑202检查用于被选取群组262的LRU信息236以测定通道0或通道1是最近最少使用,并且以被决定分支指令的预测信息更换在第二BTAC 208B之内的最近最少使用的通道。因此其优点是,被选取群组262将被快取两分支指令的分支预测信息于相同快取列,使得被选取群组262依据群组262内的其它两入口2264之内容,不是一双通道组合就是一三通道组合的群组262。流程结束于步骤412。
在步骤414,控制逻辑202检查更新请求176内以管线向下输送的信息以测定被决定的分支指令的撷取地址部分是否仅命中于第二BTAC 208B之内。亦即,控制逻辑202测定是否分支目标预测装置142正预测第二BTAC 208B而非第一BTAC 208A是正在含有被决定分支指令的快取列内快取一分支指令的有效预测信息,但其并非被决定的分支指令。如果不是,则流程是执行至步骤418;否则,流程是执行至步骤416。
在步骤416,控制逻辑202更换群组262的第一BTAC 208A内的最近最少使用的通道,其中群组262是由更新请求176内的分支指令地址的索引274所选取,其中更新请求176是被当成更新地址232提供给多工器216。亦即,控制逻辑202检查用于被选取群组262的LRU信息236以测定通道0或通道1是最近最少使用,并且以被决定分支指令的预测信息更换在第一BTAC 208A之内的最近最少使用的通道。因此其优点是,被选取群组262将被快取两分支指令的分支预测信息于相同快取列,使得被选取群组262依据群组262内的其它两入口264之内容,不是一双通道组合就是一三通道组合的群组262。流程结束于步骤416。
在步骤418,控制逻辑202检查更新请求176内以管线向下输送的信息以测定被决定的分支指令的撷取地址部分是否命中于第一BTAC 208A与第二BTAC 208B两者内。亦即,控制逻辑202测定是否分支目标预测装置142正预测第二BTAC 208B与第一BTAC 208A是正在含有被决定分支指令的快取列内快取一不同分支指令的有效预测信息,但其并非被决定的分支指令。如果不是,则流程是执行至步骤424;否则,流程是执行至步骤422。
在步骤422,控制逻辑202更换群组262的BTAC208内的最近最少使用的命中通道,其中群组262是由更新请求176内的分支指令地址的索引274所选取,其中更新请求176是被当成更新地址232提供给多工器216。亦即,控制逻辑202检查用于被选取群组262的LRU信息236以测定在被选取的群组262内是第一BTAC 208A或是第BTAC 208B是最近最少使用,然后控制逻辑202检查在更新请求176内以管线向下输送的信息以测定通道0或通道1命中于最近最少使用BTAC 208内,并且以被决定分支指令的预测信息更换在BTAC 208之内的最近最少使用的通道。因此其优点是,被选取群组262仍将被快取两分支指令的分支预测信息于相同快取列内,使得被选取群组262依据群组262内的其它两入口264之内容,不是一双通道组合就是一三通道组合的群组262。流程结束于步骤422。
在步骤424,没有BTAC 208命中,例如:在更新请求176内以管线向下输送的信息指示被决定分支指令的撷取地址部分既没有在第一BTAC 208A之内命中,亦没有在第二BTAC 208B之内命中。亦即,既不是第二BTAC 208B也不是第一BTAC 208A正在含有被决定分支指令的快取列内快取一分支指令的有效预测信息。因此,控制逻辑202依据在被选取群组262内的有效入口数量与依据最近最少使用的BTAC 208,挑选一BTAC 208与通道更换。尤其,控制逻辑202是挑选群组262的最近最少使用的BTAC 208,除非一BTAC 208的双通道是有效的以及并非其它BTAC 208的双通道是有效的,在此例中,控制逻辑202更换其它BTAC 208,如下列程序码所述。流程结束于步骤424。
下列程序码是描述控制逻辑202所使用的更换方法,其是总结归纳于图4的流程图。
//
//Btac update logic
//
//Define some signals needed below
wire[1:0]xbpBtacRdHitA_W,xbpBtacRdHitB_W;
rregs #(2)rhaw(xbpBtacRdHitA_W,xbpBtacRdHitA_S,clk);
rreg s#(2)rhbw(xbpBtacRdHitB_W,xbpBtacRdHitB_S,clk);
wire xcfBtacAHit_W = |xbpBtacRdHitA_W;
wire xcfBtacBHit_W = |xbpBtacRdHitB_W;
wire xcfBtacHitAB_W = xcfBtacAHit_W & xcfBtacBHit_W;
wire[1:0]xbpBtacRdValA_W,xbpBtacRdValB_W;
rregs #(2)rvaw(xbpBtacRdValA_W,xbpBtacRdValA_S,clk);
rregs #(2)rvbw(xbpBtacRdValB_W,xbpBtacRdValBS,clk);
wire xcfBtacAFull_W = & xbpBtacRdValA_W;
wire xcfBtacBFull_W = & xbpBtacRdValB_W;
//Definition of what the 3 bits in the lru mean:
//lru data
//bit 2-side A mru
//bit 1-A way 1 mru
//bit 0-B way 1 mru
// For this 16 B
//New Branch HitA HitB Method
// 0 - - Use staged way/side
// 1 0 0 Use 3 b mru
// 1 0 1 Use 1 b A mru
// 1 1 0 Use 1 b B mru
// 1 1 1 Use 1 b side mru tochoose side,then replace way that hit
//For case of new branch,nohits for this 1 6 B.To chooseside A vs.B:
//
// Valids
// Side A Side B Method
// 2 2 A/B mru
// 2 1 Choose B
// 1 2 Choose A
// 2 0 Choose B
// 0 2 Choose A
// 1 1 A/B mru
// 1 0 A/B mru
// 0 1 A/B mru
// 0 0 A/B mru
//
//The mru bit is used for the last four cases for properbehavior for case of 2 branches
//inthe same 16 B seen close together.The btac validbits staged down for the second
//branch may not include the write of the first branch.Using the A/B mru bit allows
//for each branch to be correctly placed on opposite btacsides.
//
//Note that if,for instance,side A is marked as havingboth ways valid,while side B
//has no ways valid,then if the mru bit indicates B wasmru,one of 3 cases has
//occurred:
//1)2 branches in the same 1 6 B were seen close together.The first branch was written
//to side B,so the second branch should be written toside A,even though it will
//displace another branch.
//2)A branch on side B was mru,but it has since beeninvalidated due to aliasing or
//self-modifying code.
//3)2branches with the same index,not in the same 16 B,were seen close together.The
//first branch was written to side B,but the secondbranch should be also written to
//side B,to avoid displacing another branch.
//Case 1 should be more common than case 2,but not morecommon that case 3.So
//should choose the side that is not already full.
//lru read addr from E,lru write addr 3 cycles later
//E-read address to lru
//S-lru read,capture in xcfetch
//W-use lru data to determine replacement way,capturenew lru write data
//Z-write lru
wire[2:0] xcfBtacLruRdData_W;
rregs_io#(3)lrurd(xcfBtacLruRdData_W,btacLruRdData_P,clk);
wire xcfBtacSideAMRU_W = xcfBtacLruRdData_W[2];
wire xcfBtacAWay 1 MRU_W = xcfBtacLruRdData_W[1];
wire xcfBtacBWay 1 MRU_W = xcfBtacLruRdData_W[0];
//if this 1 6 B has no hits in either A or B,use normallru
wire xcfBtacAReplaceWay 0_W = (xcfBtacAWay 1 MRU_W &xbpBtacRdValA_W[1])|
~xbpBtacRdValA_W[0];
wire xcfBtacBReplaceWay 0_W = (xcfBtacBWay 1 MRU_W &xbpBtacRdVa1B_W[1])|
~xbpBtacRdValB_W[0];
//Choose side to write based on mru bit and valids
wire xcfBtacLruSelSideA_W = (~xcfBtacAFull_W &xcfBtacBFul1_W)|
(~xcfBtacSideAMRU_W &~(xcfBtacAFull_W &~xcfBtacBFul1_W));
wire xcfBtacBaseReplace 0_W = xcfBtacLruSelSideA_W?xcfBtacAReplaceWay 0_W:
xcfBtacBReplaceWay 0_W;
//if this 1 6 B already has a hit in either A or B,mustwrite to opposite side
wire xcfBtacForceSideA_W = ~xcfBtacAHit_W &xcfBtacBHit_W;
wire xcfBtacForceSideB_W = xcfBtacAHit_W &~xcfBtacBHit_W:
//if this 1 6 B already has a hit in both A and B,mustreplace one
wire xcfBtacReplaceHitSideA_W = xcfBtacHitAB_W &~xcfBtacSideAMRU_W:
wire xcfBtacReplaceHitSideB_W = xcfBtacHitAB_W &xcfBtacSideAMRU_W;
wire xcfBtacUseBaseReplace_W = ~xcfBtacAHit_W &~xcfBtacBHit_W:
wire xcfBtacReplaceWay 0_W = (xcfBtacForceSideA_W &xcfBtacAReplaceWay 0_W)|
(xcfBtacForceSideB_W &xcfBtacBReplaceWay 0_W)|
(xcfBtacReplaceHitSideA_W &xbpBtacRdHitA_W[0])|
(xcfBtacReplaceHitSideB_W &xbpBtacRdHitB_W[0])|
(xcfBtacUseBaseReplace_W &xcfBtacBaseReplace 0_W);
wire[1:0]xcfBtacReplaceWay_W = {~xcfBtacReplaceWay 0_W,xcfBtacReplaceWay 0_W};
wire xcfBtacReplaceA_W = xcfBtacForceSideA_W|xcfBtacReplaceHitSideA_W|
(~xcfBtacForceSideB_W & ~xcfBtacHitAB_W &xcfBtacLruSelSideA_W);
//
//Determine if this branch is already in the btac.
//if so,rewrite using the staged way and side,not thelru-chosen victim:
//Choose replacement side only for real new branches.Must qualify WrNew with
//~(Valid and MatchAB),which indicates we are actuallyre-writing an existing
//branch due to cache miss,bad target,etc.xbpBtacSelA_W handles these cases.
wire xcfBtacValidMatch_W = xbpBtacValid_W &xbpBtacMatch_W;
wire xcfBtacWrNewReal_W = xcfBtacWrNew_W &~xcfBtacValidMatch_W;
//Choose replacement side for new branch
wire xcfBtacWrQA_W = xcfBtacWrNewReal_W?xcfBtacReplaceA_W:
xbpBtacSelA_W;
//If btac was valid for the 1 6 B containing the ins,replace same way,else use
//lru-chosen victim.
wire[1:0]xcfBtacStagedWay_W = xbpBtacSelA_W?xbpBtacRdHitA_W:
xbpBtacRdHitB_W;
wire[1:0]xcfBtacWrQWay_W = xcfBtacWrNewReal_W?xcfBtacReplaceWay_W:
xcfBtacStagedWay_W;
//lru write
//lru update on both allocate and use
//write the lru if the branch was seen and predicted taken
//or when initializing
wire xcfBtacLruWrEn_W = xcfBranchT_W|xcfInitBtac_P;
rregs lrup(xcfBtacLruWrEn_P,xcfBtacLruWrEn_W,clk);
//lru data
//bit 2-side B mru
//bit 1-A way 1 mru
//bit 0-B way 1 mru
wire[2:0]xcfBtacLruWrData_W;
assign xcfBtacLruWrData_W[2] = ~xcfBtacWrQA_W;
assign xcfBtacLruWrData_W[1] = (xcfBtacWrQA_W &~xcfBtacReplaceWay 0_W)|
(~xcfBtacWrQA_W &btacLruRdData_P[1]);
assign xcfBtacLruWrData_W[0]=(~xcfBtacWrQA_W &~xcfBtacReplaceWay 0_W)|
(xcfBtacWrQA_W &btacLruRdData_P[0]);
//force 0 0 0 when initialzing
rregs #(3)lrudp(xcfBtacLruWrData_P,xcfBtacLruWrData_W&{3{~xcfInitBtac_P}},clk);
虽然本发明及其目的、特征与优点已被详细描述,然而其它实施例是被本发明所包含。例如:虽然一具有两侧且每一侧是双通道集合的组合的分支预测装置的实施例已被描述,然而其它实施例是被预期的。例如:一装置具有四侧且每一侧是一直接映像快取的一实施例是被预期的。此实施例的一优点为,其致能某些群组以预测在相同快取列内的三个分支指令的目标地址,以及在一不同快取列内的一个分支指令的目标地址,以有效获得群组的双通道组合,并且致能某些群组以预测在相同快取列内的四个分支指令的目标地址,以有效获得群组的单通道组合。此实施例对于相对大规模的快取列撷取是可能有助益的。然而,此实施例的一缺点为,其比起控制逻辑在快取列内的两个分支指令中选取第一、有效、发生、可见的分支指令,要求更多时间给控制逻辑在快取列内的三个或四个分支指令中选取第一、有效、发生、可见的分支指令。此额外的时间是可能要求处理器时脉频率减少或要求额外管线阶段。有关此实施例的额外时间成本必须权衡基于三个或四个分支指令将被包含于相同快取列内的可能性的优势,其可能随着快取列大小增加而增加。
并且,各个实施例已描述在一群组内通到的数量是为4,然而其它实施例是包含每一群组含有其它数量的入口,例如:所包含的一实施例,其中装置具有两侧且每一侧是一直接映像快取以使得每一群组是包含两入口。又例如:所包含的另一实施例,其中装置具有两侧且每一侧是四通道集合的组合快取以使得每一群组是包含8入口。又例如:所包含的另一实施例,其中装置具有四侧且每一侧是一双通道集合的组合快取以使得每一群组是包含8入口。更普遍地,所包含的实施例,其中装置具有N侧且每一侧是一M通道集合的组合快取以使得每一群组是包含M×N入口。因此某些群组是可能有效获得M×N通道组合,并且预测在M×N个不同快取列内仅有的一单一分支指令的一目标地址;其它群组是可能有效获得(M×N-1)通道组合,并且预测在(M×N-1)个不同快取列内仅有的一单一分支指令的一目标地址,以及预测在一第二不同快取列内两个分支指令的一目标地址;其它群组是可能有效获得(M×N-2)通道组合,并且预测在(M×N-2)个不同快取列内仅有的一单一分支指令的一目标地址,以及预测在一第二不同快取列内两个分支指令的一目标地址,并且预测在一第三不同快取列内两个分支指令的一目标地址;以及依上述方式进行直到最后其它群组可能有效获得N通道组合,并且预测N个不同快取列的每一快取列内M个分支指令的一目标地址。
并且,每一快取列分支指令的数量的变化组合在一特定群组组合级别是可能被达成。例如:假设一装置具有四侧且每一侧是一双通道集合的组合。一群组是可能有效获得四通道组合,藉由预测(1)四分支在一第一快取列内、两分支在一第二快取列内以及一分支在第三与第四快取列内;(2)三分支在一第一快取列内、两分支在一第二与第三快取列内以及一分支在一第四快取列内;(3)三分支在一第一快取列内、三分支在一第二快取列内以及一分支在第三与第四快取列内;或(4)两分支在四个不同快取列的每一快取列内。
尽管本发明的许多实施例已被描述如上,然而所应了解的是这些实施例是由范例的方式呈现而并非限制。对于熟习此项技艺者而言,在没有脱离本发明的精神与范畴所为的形式或细节的修改,是为显而易知。
例如:除了使用硬件(例如:在其内或耦接至一中央处理单元(CPU)、微处理器、微控制器、数字信号处理器、处理器核、系统芯片(SOC)或任何其它可程序化装置)的外,亦可嵌入软件(例如:计算机可读取码、程序码、指令及/或任何形式资料配置(例如:来源、目的或机械语言))配置实行,例如:在一计算机可使用(例如:可读取)媒体储存软件,此类软件是可致能在此所描述的装置与方法的,例如:功能、制造、模块、仿真、性质及/或测试。例如:上述是可透过使用一般程序语言(例如:C、C++)、GDSII database、硬件描述语言(HDL)包含Verilog HDL、VHDL等或其它可用的程序、数据库及/或电路(例如:图标)抓取工具而完成。此类软件是可被配置在任何已知计算机可使用的媒体内,包含半导体、磁盘、光盘(例如:CR-ROM、DVD-ROM),并且当成嵌入一计算机可使用(例如:可读取)传输媒介(例如:载波或任何其它媒介包含数字、光或模拟应用的媒介)内的一计算机资料信号。如此,软件是可透过通信网路(是包含网际网络(Internet)与内部网络(intranet))而被传输。
所应了解的是,在此所述的装置与方法可能被包含在一半导体智能财产权核心,例如:一微处理器核(例如嵌入HDL)以及在集成电路的产品被转换成硬件。此外,在此所述的装置与方法可能被嵌入做为一硬件与软件的组合。因此,本发明不应受限于上述的示范实施例,其应以下列的权利范围与其等效为准。
Claims (75)
1.一微处理器内的一装置,该装置预测每一快取列内一可变数量的分支指令的一目标地址,该每一快取列是撷取自一指令快取的一撷取地址,其特征在于,该装置包含:
一第一与一第二双通道集合组合快取存储器,每一双通道集合组合快取存储器是具有一索引输入耦合以接收一部分的指令快取撷取地址,其中该索引是选取复数个四入口群组其中之一群组,每一该群组是包含每一该第一与该第二快取存储器的每一通道内的一入口,其中每一该些入口是用以快取一先前被执行分支指令的一目标地址;以及
一置换逻辑,是耦接至该第一与该第二快取,用以选取更换该些入口其中之一入口,由此回应一分支指令的决定以使得:
(a)该微处理器在操作该复数个群组的一第一子集期间,该四入口快取在四个不同快取列的每一快取列内一分支指令的目标地址,以获得四通道群组的组合;以及
(b)该微处理器在操作该复数个群组的一第二子集期间,该四入口快取在两个不同快取列的每一快取列内一分支指令的目标地址以及在一第三不同快取列内两分支指令的目标地址,以获得三通道群组的组合。
2.如权利要求1所述的微处理器内的一装置,其特征在于,其中对该复数个群组的该第二子集,如果指令快取撷取地址是命中于该第一与该第二快取存储器两者之内时,该第一与该第二快取是提供该第三快取列内该两分支指令的该目标地址。
3.如权利要求2所述的微处理器内的一装置,其特征在于,还包含:
一侧选择多工器,是耦接至该第一与该第二快取存储器,其中该侧选择多工器是依据与该微处理器的一指令指标有关的该第三快取列内该两分支指令的每一分支指令的一位置,选取该第三快取列内该两分支指令的该些目标地址其中之一目标地址。
4.如权利要求3所述的微处理器内的一装置,其特征在于,其中该侧选择多工器是用以选取与该指令指标有关的该两分支指令其中之一第一有效、发生、可见的分支指令的该些目标地址其中之一目标地址。
5.如权利要求4所述的微处理器内的一装置,其特征在于,当该两分支指令的每一分支指令是位于该第三快取列内的该指令指标或在该指令指标之后时,该两分支指令的每一分支指令是可见。
6.如权利要求4所述的微处理器内的一装置,其特征在于,当该两分支指令的每一分支指令其所对应的该入口指示其所对应的该目标地址是有效时,该两分支指令的每一分支指令是有效。
7.如权利要求4所述的微处理器内的一装置,其特征在于,当该微处理器产生一该分支指令是否将发生的预测时,该两分支指令的每一分支指令是发生,其中该预测指示该分支指令将发生而非不发生。
8.如权利要求7所述的微处理器内的一装置,其特征在于,其中每一该些入口是更用以快取该预测。
9.如权利要求8所述的微处理器内的一装置,其特征在于,其中该第一与该第二快取存储器的每一快取存储器是包含个别储存阵列用以快取该些目标地址与该些预测。
10.如权利要求4所述的微处理器内的一装置,其特征在于,当该两分支指令中的一分支指令在该第三快取列内的位置是在该两分支指令中的另一分支指令之前时,该两分支指令的该分支指令是第一。
11.如权利要求3所述的微处理器内的一装置,其特征在于,其中每一该些入口是更用以快取该快取列内该分支指令的该位置。
12.如权利要求3所述的微处理器内的一装置,其特征在于,还包含:
一第一与一第二通道选择多工器,是分别耦接于该侧选择多工器与该第一与该第二快取存储器之间,其中该第一与该第二通道选择多工器是依据该指令快取地址命中的该些通道,分别选取该第一与该第二快取存储器的该些通道其中之一通道的该目标地址,并且提供该被选取两目标地址给该侧选择多工器。
13.如权利要求1所述的微处理器内的一装置,其特征在于,其中每一该些入口是更用以快取一快取列的一标签,该快取列是包含该分支指令。
14.如权利要求13所述的微处理器内的一装置,其特征在于,其中该置换逻辑是更用以选取更换该些入口其中之一入口,以回应一分支指令的决定,由此对该复数个群组的该第二子集内每一群组,每一该第一与该第二快取存储器是快取该第三不同快取列的该标签,其中该第三不同快取列是包含该两分支指令。
15.如权利要求13所述的微处理器内的一装置,其特征在于,当该快取列的该入口的标签是有效且匹配该撷取地址的一标签部分时,该指令快取撷取地址是命中于该第一与该第二快取存储器的该些通道其中之一通道内,其中该快取列是包含该分支指令。
16.如权利要求13所述的微处理器内的一装置,其特征在于,其中每一该第一与该第二快取存储器是包含个别储存阵列用以快取该些目标地址与该些标签。
17.如权利要求1项所述的微处理器内的一装置,其特征在于,其中在该复数个群组的该第二子集内,该两入口快取该第三不同快取列内该两分支指令的该些目标地址是在不同的该第一与该第二快取存储器内。
18.如权利要求1所述的微处理器内的一装置,其特征在于,还包含:
一置换存储器,是耦接至该置换逻辑,用以储存与每一该复数个群组有关的更换信息,该更换信息是由该置换逻辑用以选取更换该些入口其中之一入口以回应该分支指令的决定。
19.如权利要求18所述的微处理器内的一装置,其特征在于,其中如果该被决定分支指令没有其目标地址已被快取在该第一与该第二快取存储器之内,且如果该被决定分支指令的撷取地址仅命中于该第一与该第二快取存储器其中之一时,该置换逻辑是选取更换该第一与该第二快取存储器其中的另一该些通道其中之一通道。
20.如权利要求19所述的微处理器内的一装置,其特征在于,其中该更换信息是包含对每一该群组的该两集合的每一集合的该两通道是最近最少使用的一指示,其中该置换逻辑是用以选取更换该最近最少使用的通道。
21.如权利要求18所述的微处理器内的一装置,其特征在于,其中该更换信息是包含该第一与该第二快取存储器是最近最少使用的一指示,其中如果该被决定分支指令没有其目标地址已被快取在该第一与该第二快取存储器之内,且如果该被决定分支指令的撷取地址是命中于该第一与该第二快取存储器两者之内时,该置换逻辑是选取更换该第一与该第二快取存储器其中之一该最近最少使用的快取存储器。
22.如权利要求18所述的微处理器内的一装置,其特征在于,其中该更换信息是包含该第一与该第二快取存储器是最近最少使用的一指示,其中如果该被决定分支指令没有其目标地址已被快取在该第一与该第二快取存储器之内,且如果该被决定分支指令的撷取地址是没有命中于该第一与该第二快取存储器之内时,该置换逻辑是选取更换该第一与该第二快取存储器其中之一该最近最少使用的快取存储器。
23.如权利要求22所述的微处理器内的一装置,其特征在于,其中如果该被决定分支指令没有其目标地址已被快取在该第一与该第二快取存储器之内,且如果该被决定分支指令的撷取地址是没有命中于该第一与该第二快取存储器之内时,该置换逻辑是选取更换该第一与该第二快取存储器其中之一该最近最少使用的快取存储器;然而,如果该第一与该第二快取存储器其中之一的两该通道是有效且比该第一与该第二快取存储器其中的另一两该通道是有效少时,则该置换逻辑是选取更换该第一与该第二快取存储器其中的该另一快取存储器。
24.如权利要求1所述的微处理器内的一装置,其特征在于,其中该置换逻辑是更用以选取更换该些入口其中之一入口,以回应一分支指令的决定,使得:
(c)该微处理器在操作该复数个群组的一第三子集期间,该四入口快取在两个不同快取列的每一快取列内两分支指令的目标地址,以获得双通道群组的组合。
25.如权利要求24所述的微处理器内的一装置,其特征在于,其中在该复数个群组的该第三子集内,该两入口快取该两不同快取列的每一快取列内该两分支指令的该些目标地址是在不同的该第一与该第二快取存储器内。
26.如权利要求24所述的微处理器内的一装置,其特征在于,其中对该复数个群组的该第三子集,如果指令快取撷取地址是命中于该第一与该第二快取存储器两者之内时,该第一与该第二快取是用以提供该两不同快取列其中之一快取列内该两分支指令的该些目标地址。
27.如权利要求24所述的微处理器内的一装置,其特征在于,其中每一该些入口是更用以快取一快取列的一标签,该快取列是包含该分支指令,其中该置换逻辑是更用以选取更换该些入口其中之一入口以回应一分支指令的决定,以使得对该复数个群组的该第三子集内的每一群组,每一该第一与该第二快取存储器是快取该两不同快取列的每一快取列的该标签,其中该两不同快取列是包含该两分支指令。
28.如权利要求1所述的微处理器内的一装置,其特征在于,其中该置换逻辑更依据由该第一与该第二双通道集合组合快取存储器在其存取期间与含有来自指令快取的该被决定分支指令的快取列撷取短暂同时发生所提供的信息,该置换逻辑是用以选取更换该些入口其中之一入口。
29.如权利要求1所述的微处理器内的一装置,其特征在于,其中一计算机程序产品使该装置动作,该计算机程序产品是包含一计算机可使用的媒体具有计算机可读取的程序码,其中该计算机程序产品是用以与一计算机装置一起使用。
30.如权利要求1所述的微处理器内的一装置,其特征在于,其中一计算机资料信号被嵌入在一传输媒介之内是包含计算机可读取的程序码提供该装置。
31.一方法,该方法预测一微处理器内的一快取列内一可变数量的分支指令的一目标地址,该快取列是撷取自一指令快取的一撷取地址,其特征在于,该方法包含:
提供一索引给一第一与一第二双通道集合组合快取存储器以选取复数个四入口群组其中之一群组,每一群组是包含每一该第一与该第二快取存储器的每一通道内的一入口,每一该些入口快取一先前被执行分支指令的一目标地址,该索引是该指令快取撷取地址的一部分;以及
选取更换该些入口其中之一,以回应一分支指令的决定,使得:
(a)该微处理器在操作该复数个群组的一第一子集期间,该四入口快取在四个不同快取列的每一快取列内一分支指令的目标地址,以获得四通道群组的组合;以及
(b)该微处理器在操作该复数个群组的一第二子集期间,该四入口快取在两个不同快取列的每一快取列内一分支指令的目标地址以及在一第三不同快取列内两分支指令的目标地址,以获得三通道群组的组合。
32.如权利要求31所述的方法,其特征在于,还包含:
对该复数个群组的该第二子集,测定指令快取撷取地址是否命中于该第一与该第二快取存储器两者之内;以及
由每一该第一与该第二快取存储器提供在该第三快取列内该两分支指令的该目标地址。
33.如权利要求32所述的方法,其特征在于,还包含:
依据与该微处理器的一指令指标有关的该第三快取列内每一该两分支指令的一位置,选取该第三快取列内该两分支指令的该些目标地址其中之一。
34.如权利要求33所述的方法,其特征在于,其中该选取该些目标地址其中之一是包含选取与该指令指标有关的该两分支指令其中之一第一有效、发生、可见的分支指令的该些目标地址其中之一。
35.如权利要求33所述的方法,其特征在于,还包含:
快取该快取列内该分支指令的该位置于该选取之前。
36.如权利要求33所述的方法,其特征在于,还包含:
依据该指令快取撷取地址命中的该些通道,分别选取该第一与该第二快取存储器的该通道其中之一通道的该目标地址;以及
提供该被选取两目标地址给该选取该些目标地址其中之一。
37.如权利要求31所述的方法,其特征在于,还包含:
快取一快取列的一标签,该快取列是包含该分支指令。
38.如权利要求31所述的方法,其特征在于,还包含:
储存与每一该复数个群组有关的更换信息以用于该选取更换该些入口其中之一入口,以回应该分支指令的决定。
39.如权利要求38所述的方法,其特征在于,其中如果该被决定分支指令没有其目标地址已被快取在该第一与该第二快取存储器之内,且如果该被决定分支指令的该撷取地址是仅命中于该第一与该第二快取存储器其中之一时,该选取更换是包含选取更换其它的该第一与该第二快取存储器的该些通道其中之一。
40.如权利要求39所述的方法,其特征在于,其中该更换信息是包含对每一该群组的该两集合的每一集合的该两通道是最近最少使用的一指示,其中该选取更换是包含选取更换该最近最少使用的通道。
41.如权利要求38所述的方法,其特征在于,其中该更换信息是包含该第一与该第二快取存储器是最近最少使用的一指示,其中如果该被决定分支指令没有其目标地址已被快取在该第一与该第二快取存储器之内,且如果该被决定分支指令的撷取地址是命中于该第一与该第二快取存储器两者之内时,该选取更换是包含选取更换该第一与该第二快取存储器其中之一该最近最少使用的快取存储器。
42.如权利要求38所述的方法,其特征在于,其中该更换信息是包含该第一与该第二快取存储器是最近最少使用的一指示,其中如果该被决定分支指令没有其目标地址已被快取在该第一与该第二快取存储器之内,且如果该被决定分支指令的撷取地址是没有命中于该第一与该第二快取存储器之内时,该选取更换是包含选取更换该第一与该第二快取存储器其中之一该最近最少使用的快取存储器。
43.如权利要求42所述的方法,其特征在于,其中如果该被决定分支指令没有其目标地址已被快取在该第一与该第二快取存储器之内,且如果该被决定分支指令的撷取地址是没有命中于该第一与该第二快取存储器之内时,该选取更换是包含选取更换该第一与该第二快取存储器其中之一该最近最少使用的快取存储器;然而,如果该第一与该第二快取存储器其中之一的两该通道是有效且比该第一与该第二快取存储器其中的另一两该通道是有效少时,则该选取更换是包含选取更换该第一与该第二快取存储器其中的该另一。
44.如权利要求31所述的方法,其特征在于,其中该选取更换是包含选取更换该些入口其中之一入口,以回应一分支指令的决定,使得:
(c)该微处理器在操作该复数个群组的一第三子集期间,该四入口快取在两个不同快取列的每一快取列内两分支指令的目标地址,以获得双通道群组的组合。
45.如权利要求44所述的方法,其特征在于,还包含:
对该复数个群组的该第三子集,测定该指令快取撷取地址是否命中于该第一与该第二快取存储器两者之内;以及
由每一该第一与该第二快取提供该两不同快取列其中之一快取列内该两分支指令的该些目标地址。
46.一微处理器内的一装置,该装置预测一快取列内一可变数量的分支指令的一目标地址,该快取列是撷取自一指令快取的一撷取地址,其特征在于,该装置包含:
M个N通道集合组合快取存储器,每一该N通道集合组合快取存储器是具有一索引输入耦合以接收一部分的该指令快取撷取地址,其中该索引是选取复数个MxN入口群组其中之一群组,每一该群组是包含每一该M个快取存储器的每一通道内的一入口,其中每一该些入口是用以快取一先前被执行的分支指令的一目标地址;以及
一置换逻辑,是耦接至该M个快取,用以选取更换该些入口其中之一入口,由此回应一分支指令的决定,以使得:
(a)该微处理器在操作该复数个群组的一第一子集期间,该MxN入口快取在MxN个不同快取列的每一快取列内一分支指令的目标地址,以获得MxN通道群组的组合;以及
(b)该微处理器在操作该复数个群组的一第二子集期间,该MxN入口快取在(MxN-1)个不同快取列的每一快取列内一分支指令的目标地址以及在一第MxN不同快取列内两分支指令的目标地址,以获得(MxN-1)通道群组的组合。
47.如权利要求46所述的微处理器内的一装置,其特征在于,其中对该复数个群组的该第二子集,如果指令快取撷取地址是命中于该M个快取存储器其中的两者之内时,该M个快取是用以提供在该第MxN快取列内该两分支指令的该些目标地址。
48.如权利要求47所述的微处理器内的一装置,其特征在于,还包含:
一侧选择多工器,是耦接至该M个快取存储器,其中该侧选择多工器是依据与该微处理器的一指令指标有关的该第MxN快取列内的每一该两分支指令的一位置,选取该第MxN快取列内该两分支指令的该些目标地址其中之一。
49.如权利要求48所述的微处理器内的一装置,其特征在于,其中该侧选择多工器是用以选取与该指令指标有关的该两分支指令其中之一第一有效、发生、可见的分支指令的该些目标地址其中之一。
50.如权利要求48所述的微处理器内的一装置,其特征在于,还包含:
N通道选择多工器,是分别耦接于该侧选择多工器与该M个快取存储器之间,其中该N通道选择多工器是依据该指令快取撷取地址命中的该些通道,分别选取该N个快取存储器的该些通道其中之一通道的该目标地址,并且提供该被选取N个目标地址给该侧选择多工器。
51.如权利要求46所述的微处理器内的一装置,其特征在于,还包含:
一置换存储器,是耦接至该置换逻辑,该置换存储器是用以储存与每一该复数个群组有关的更换信息,该更换信息是由该置换逻辑用以选取更换该些入口其中之一入口,以回应该分支指令的决定。
52.如权利要求51所述的微处理器内的一装置,其特征在于,其中如果该被决定分支指令没有其目标地址已被快取在该M个快取存储器之内,且如果该被决定分支指令的撷取地址未命中于至少一该M个快取存储器之内时,该置换逻辑是选取更换该至少一该M个快取存储器的该些通道其中之一。
53.如权利要求52所述的微处理器内的一装置,其特征在于,其中该更换信息是包含对每一该群组的该M个集合的每一集合的该N通道是最近最少使用的一指示,其中该置换逻辑是用以选取更换该最近最少使用的通道。
54.如权利要求51所述的微处理器内的一装置,其特征在于,其中该更换信息是包含该M个快取存储器是最近最少使用的一指示,其中如果该被决定分支指令没有其目标地址已被快取在该M个快取存储器之内,且如果该被决定分支指令的撷取地址是命中于全部该M个快取存储器之内时,该置换逻辑是选取更换该M个快取存储器其中之一该最近最少使用的快取存储器。
55.如权利要求51所述的微处理器内的一装置,其特征在于,其中该更换信息是包含该M个快取存储器是最近最少使用的一指示,其中如果该被决定分支指令没有其目标地址已被快取在该M个快取存储器之内,且如果该被决定分支指令的撷取地址是没有命中于该M个快取存储器之内时,该置换逻辑是选取更换该M个快取存储器其中之一该最近最少使用的快取存储器。
56.如权利要求55所述的微处理器内的一装置,其特征在于,其中如果该被决定分支指令没有其目标地址已被快取在该M个快取存储器之内,且如果该被决定分支指令的撷取地址是没有命中于该M个快取存储器之内时,该置换逻辑是选取更换该M个快取存储器其中之一该最近最少使用的快取存储器;然而,如果一个或多个该M个快取存储器的全部该些通道是有效且比其余该M个快取存储器的全部该些通道是有效少时,则该置换逻辑是选取更换该其余该M个快取存储器。
57.如权利要求46所述的微处理器内的一装置,其特征在于,其中该置换逻辑是更用以选取更换该些入口其中之一入口,以回应一分支指令的决定,使得:
(c)该微处理器在操作该复数个群组的一第三子集期间,该MxN入口快取在(MxN-2)个不同快取列的每一快取列内一分支指令的目标地址以及在两个不同快取列的每一快取列内两分支指令的目标地址,以获得(MxN-2)通道群组的组合。
58.如权利要求46所述的微处理器内的一装置,其特征在于,其中该置换逻辑是更用以选取更换该些入口其中之一入口,以回应一分支指令的决定,使得:
(c)该微处理器在操作该复数个群组的一第三子集期间,该MxN入口快取在N个不同快取列的每一快取列内M个分支指令的目标地址,以获得N通道群组的组合。
59.如权利要求46所述的微处理器内的一装置,其特征在于,其中一计算机程序产品使该装置动作,该计算机程序产品是包含一计算机可使用的媒体具有计算机可读取的程序码,其中该计算机程序产品是用以与一计算机装置一起使用。
60.一方法,该方法预测一微处理器内的一快取列内一可变数量的分支指令的一目标地址,该快取列是撷取自一指令快取的一撷取地址,其特征在于,该方法包含:
提供一索引给M个N通道集合组合快取存储器以选取复数个MxN入口群组其中之一群组,每一群组是包含每一该M个快取存储器的每一通道内的一入口,每一该些入口快取一先前被执行分支指令的一目标地址,该索引是该指令快取撷取地址的一部分;以及
选取更换该些入口其中之一,以回应一分支指令的决定,使得:
(a)该微处理器在操作该复数个群组的一第一子集期间,该MxN入口快取在MxN个不同快取列的每一快取列内一分支指令的目标地址,以获得MxN通道群组的组合;以及
(b)该微处理器在操作该复数个群组的一第二子集期间,该MxN入口快取在(MxN-1)个不同快取列的每一快取列内一分支指令的目标地址以及在一第(MxN-1)不同快取列内两分支指令的目标地址,以获得(MxN-1)通道群组的组合。
61.如权利要求60所述的方法,其特征在于,还包含:
对该复数个群组的该第二子集,测定指令快取撷取地址是否命中于该M个快取存储器其中的两个快取存储器之内;以及
由该M个快取存储器其中的该两个快取存储器的每一快取存储器提供在该第MxN快取列内该两分支指令的该些目标地址。
62.如权利要求61所述的方法,其特征在于,还包含:
依据与该微处理器的一指令指标有关的该第MxN快取列内的每一该两分支指令的一位置,选取在该第MxN快取列内该两分支指令的该些目标地址其中之一。
63.如权利要求62所述的方法,其特征在于,其中该选取该些目标地址其中之一是包含选取与该指令指标有关的该两分支指令其中之一第一有效、发生、可见的分支指令的该些目标地址其中之一。
64.如权利要求60所述的方法,其特征在于,还包含:
储存与每一该复数个群组有关的更换信息以用于该选取更换该些入口其中之一入口,以回应该分支指令的决定。
65.如权利要求64所述的方法,其特征在于,其中如果该被决定分支指令没有其目标地址已被快取在该M个快取存储器之内,且如果该被决定分支指令的该撷取地址未命中于至少一该M个快取存储器之内时,该选取更换是包含选取更换该至少一该M个快取存储器的该些通道其中之一。
66.如权利要求65所述的方法,其特征在于,其中该更换信息是包含对每一群组的该M个集合的每一集合的该N通道是最近最少使用的一指示,其中该选取更换是包含选取更换最近最少使用的通道。
67.如权利要求64所述的方法,其特征在于,其中该更换信息是包含该M个快取存储器是最近最少使用的一指示,其中如果该被决定分支指令没有其目标地址已被快取在该M个快取存储器之内,且如果该被决定分支指令的撷取地址是命中于全部该M个快取存储器之内时,该选取更换是包含选取更换该M个快取存储器其中之一该最近最少使用的快取存储器。
68.如权利要求64所述的方法,其特征在于,其中该更换信息是包含该M个快取存储器是最近最少使用的一指示,其中如果该被决定分支指令没有其目标地址已被快取在该M个快取存储器之内,且如果该被决定分支指令的撷取地址是没有命中于该M个快取存储器之内时,该选取更换是包含选取更换该M个快取存储器其中之一该最近最少使用的快取存储器。
69.如权利要求68所述的方法,其特征在于,其中如果该被决定的分支指令没有其目标地址已被快取在该M个快取存储器之内,且如果该被决定分支指令的撷取地址是没有命中于该M个快取存储器之内时,该选取更换是包含选取更换该M个快取存储器其中之一该最近最少使用的快取存储器;然而,如果一个或多个该M个快取存储器的所有该些通道是有效且比其余该M个快取存储器的所有该些通道是有效少时,则该选取更换是包含选取更换该其余该M个快取存储器其中之一。
70.如权利要求60所述的方法,其特征在于,其中该选取更换是包含选取更换该些入口其中之一入口,以回应一分支指令的决定,使得:
(c)该微处理器在操作该复数个群组的一第三子集期间,该MxN入口快取在(MxN-2)个不同快取列的每一快取列内一分支指令的目标地址以及在两不同快取列的每一快取列内两分支指令的目标地址,以获得(MxN-2)通道群组的组合。
71.如权利要求70所述的方法,其特征在于,还包含:
对该复数个群组的该第三子集,测定该指令快取撷取地址是否命中于该M个快取存储器其中的两个快取存储器之内;以及
由该M个快取存储器其中的该两个快取存储器的每一快取存储器提供该两个不同快取列其中之一快取列内该两分支指令的该些目标地址。
72.如权利要求60所述的方法,其特征在于,其中该选取更换是包含选取更换该些入口其中之一入口,以回应一分支指令的决定,使得:
(c)该微处理器在操作该复数个群组的一第三子集期间,该MxN入口快取在N个不同快取列的每一快取列内M个分支指令的目标地址,以获得N通道群组的组合。
73.如权利要求72所述的方法,其特征在于,还包含:
对该复数个群组的该第三子集,测定该指令快取撷取地址是否命中于所有的该M个快取存储器之内;以及
由每一该M个快取提供该N个不同快取列其中之一快取列内该N个分支指令的该些目标地址。
74.一计算机程序产品,其用以与一计算机装置一起使用,其特征在于,该计算机程序产品包含:
一计算机可使用的媒体,是具有计算机可读取的程序码嵌入该媒体,用以使一微电脑内的一装置预测每一快取列内一可变数量的分支指令的一目标地址,该每一快取列是撷取自一指令快取的一撷取地址,该计算机可读取的程序码包含:
一第一程序码用以提供一第一与一第二双通道集合组合快取存储器,每一双通道集合组合快取存储器是具有一索引输入耦合接收该指令快取撷取地址的一部分,其中该索引选取复数个四入口群组其中之一群组,每一该群组是包含每一该第一与该第二快取存储器的每一通道内的一入口,其中每一该些入口快取一先前被执行分支指令的一目标地址;以及
一第二程序码用以提供置换逻辑,是耦接至该第一与该第二快取,用以选取更换该些入口其中之一入口,由此回应一分支指令的决定,使得:
(a)该微处理器在操作该复数个群组的一第一子集期间,该四入口快取在四个不同快取列的每一快取列内一分支指令的目标地址,以获得四通道群组的组合;以及
(b)该微处理器在操作该复数个群组的一第二子集期间,该四入口快取在两个不同快取列的每一快取列内一分支指令的目标地址以及在一第三不同快取列内两分支指令的目标地址,以获得三通道群组的组合。
75.如权利要求74所述的计算机程序产品,其特征在于,其中该计算机可读取的程序码还包含:
一第四程序码用以提供该置换逻辑,其中该置换逻辑是更用以选取更换该些入口其中之一入口,以回应一分支指令的决定,使得:
(c)该微处理器在操作该复数个群组的一第三子集期间,该四入口快取在两个不同快取列的每一快取列内两分支指令的目标地址,以获得双通道群组的组合。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US59886804P | 2004-08-04 | 2004-08-04 | |
US60/598,868 | 2004-08-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1821953A true CN1821953A (zh) | 2006-08-23 |
CN100388187C CN100388187C (zh) | 2008-05-14 |
Family
ID=36923343
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100919093A Active CN100388187C (zh) | 2004-08-04 | 2005-08-04 | 可变群组组合分支目标地址快取传送每一快取列多目标地址的装置和方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN100388187C (zh) |
TW (1) | TWI303777B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101887358A (zh) * | 2009-05-19 | 2010-11-17 | 威盛电子股份有限公司 | 适用于微处理器的装置及方法 |
CN106843812A (zh) * | 2016-12-23 | 2017-06-13 | 北京北大众志微系统科技有限责任公司 | 一种实现间接转移关联软件预测的方法及装置 |
EP3306467A1 (en) * | 2016-10-10 | 2018-04-11 | VIA Alliance Semiconductor Co., Ltd. | Branch predictor that uses multiple byte offsets in hash of instruction block fetch address and branch pattern to generate conditional branch predictor indexes |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI579695B (zh) * | 2011-12-28 | 2017-04-21 | 瑞昱半導體股份有限公司 | 對處理器的快取進行清除的方法以及該處理器 |
US11642768B2 (en) * | 2020-07-15 | 2023-05-09 | Snap-On Incorporated | Dead blow hammer head |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6470438B1 (en) * | 2000-02-22 | 2002-10-22 | Hewlett-Packard Company | Methods and apparatus for reducing false hits in a non-tagged, n-way cache |
US7165168B2 (en) * | 2003-01-14 | 2007-01-16 | Ip-First, Llc | Microprocessor with branch target address cache update queue |
US20020194462A1 (en) * | 2001-05-04 | 2002-12-19 | Ip First Llc | Apparatus and method for selecting one of multiple target addresses stored in a speculative branch target address cache per instruction cache line |
US7406569B2 (en) * | 2002-08-12 | 2008-07-29 | Nxp B.V. | Instruction cache way prediction for jump targets |
US7185186B2 (en) * | 2003-01-14 | 2007-02-27 | Ip-First, Llc | Apparatus and method for resolving deadlock fetch conditions involving branch target address cache |
US7152154B2 (en) * | 2003-01-16 | 2006-12-19 | Ip-First, Llc. | Apparatus and method for invalidation of redundant branch target address cache entries |
-
2005
- 2005-08-04 TW TW94126567A patent/TWI303777B/zh active
- 2005-08-04 CN CNB2005100919093A patent/CN100388187C/zh active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101887358A (zh) * | 2009-05-19 | 2010-11-17 | 威盛电子股份有限公司 | 适用于微处理器的装置及方法 |
CN101887358B (zh) * | 2009-05-19 | 2014-06-25 | 威盛电子股份有限公司 | 适用于微处理器的装置及方法 |
EP3306467A1 (en) * | 2016-10-10 | 2018-04-11 | VIA Alliance Semiconductor Co., Ltd. | Branch predictor that uses multiple byte offsets in hash of instruction block fetch address and branch pattern to generate conditional branch predictor indexes |
CN106843812A (zh) * | 2016-12-23 | 2017-06-13 | 北京北大众志微系统科技有限责任公司 | 一种实现间接转移关联软件预测的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
TW200620096A (en) | 2006-06-16 |
CN100388187C (zh) | 2008-05-14 |
TWI303777B (en) | 2008-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100351810C (zh) | 对特定指令类型的指令执行和数据访问计数的方法和系统 | |
CN1632877A (zh) | 可变延滞时间堆栈快取存储器及提供资料的方法 | |
CN1184562C (zh) | 处理器的转移指令 | |
CN1627270A (zh) | 用于对指令执行和数据访问进行计数的方法和设备 | |
CN1121014C (zh) | 具有risc结构的八位微控制器 | |
CN1934543A (zh) | 高速缓冲存储器及其控制方法 | |
CN1629801A (zh) | 产生早期指令结果的管线式微处理器、装置以及方法 | |
CN1217262C (zh) | 假想分支目标地址高速缓存中置换目标地址的装置及方法 | |
CN1208726C (zh) | 当预测路线失败时从非预测路线提供部分标记以指导搜索的高速缓存 | |
CN1220938C (zh) | 双调用/返回堆栈分支预测系统 | |
CN1260645C (zh) | 假想混合分支方向预测装置和方法 | |
CN1257452C (zh) | 假想分支目标地址高速缓存分支的装置、系统及方法 | |
CN1641607A (zh) | 页表中维护性能监测结构用于监测程序性能的方法和设备 | |
CN1387641A (zh) | 并行处理器中的多线程执行 | |
CN1397880A (zh) | 附有第二预测装置的假想分支目标地址高速缓存 | |
CN1217271C (zh) | 假想分支目标地址高速缓存 | |
CN1658154A (zh) | 早期修正分支指令预测错误的管线微处理器装置与方法 | |
CN1821953A (zh) | 可变群组组合分支目标地址快取传送每一快取列多目标地址 | |
CN1269030C (zh) | 高速缓存的快取线选取目标地址的装置及方法 | |
CN1604049A (zh) | 用于自主剖析应用程序的方法和设备 | |
CN1115631C (zh) | 具有risc结构的八位微控制器 | |
CN1898654A (zh) | 高速缓冲存储器及其控制方法 | |
CN1297905C (zh) | 高速缓存控制器、高速缓存控制方法以及计算机系统 | |
CN1035190A (zh) | 基于操作数长度和对位的微码转移 | |
CN1286005C (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 |