著录项信息
专利名称 | 具有预取指令的微处理器及预取至其高速缓存的方法 |
申请号 | CN02140501.8 | 申请日期 | 2002-07-05 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2003-04-16 | 公开/公告号 | CN1410893 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F12/00 | IPC分类号 | G;0;6;F;1;2;/;0;0;;;G;0;6;F;9;/;3;8查看分类表>
|
申请人 | 智慧第一公司 | 申请人地址 | 美国加利福尼亚
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 智慧第一公司 | 当前权利人 | 智慧第一公司 |
发明人 | 罗德尼·虎克 |
代理机构 | 北京市柳沈律师事务所 | 代理人 | 黄小临 |
摘要
本发明涉及一种执行重复预取指令(REP PREFETCH)的微处理器及预取快取线至其高速缓存的方法。该重复预取指令预取多条快取线,其中快取线的数量可于指令中指定。该指令是由Pentium III PREFETCH运算码所指定,运算码前则有REP字符串指令前置码。程序员于ECX缓存器中知道所要预取快取线的计数值,类似于REP字符串指令的重复计数值。第一条快取线的有效地址,则以类似常见PREFETCH指令的方式来指定。若当前预取的快取线的地址未命中TLB,或者当前处理器级缓存器中的当前特权级改变,则停止REPPREFETCH指令的执行。此外,只有在自由响应缓冲器的数量大于一可程序化的门槛值时,才预取一快取线。该预取动作时在比其它需要存取高速缓存或TLB的动作还低的优先权下执行。
1.一种具有预取指令的微处理器,该预取指令指定一组快取线,以将其 从一系统内存预取至该微处理器的一高速缓存中,其特征在于,该微处理器 包含:
一预取计数缓存器,以储存所余的待预取快取线的一计数;
一通用缓存器,耦接至该预取计数缓存器,用以储存该计数的一初始值, 该初始值由先于该预取指令执行的一指令加载于该通用缓存器中;
一控制逻辑电路,耦接至该预取计数缓存器,用以将该初始值从通用缓 存器复制至预取计数缓存器,以响应对该预取指令进行译码的动作;
一预取地址缓存器,耦接至该控制逻辑电路,用以储存该组快取线中所 要预取的下一条快取线地址;
一比较器,耦接至该控制逻辑电路,用以在存取该组快取线之前,判断 微处理器中自由响应缓冲器的数量是否大于一门槛值;
一仲裁器,耦接至该控制逻辑电路,用以决定在有其它要求者的情形下, 该预取指令是否被允许存取该高速缓存;
一重新执行缓冲器,耦接至该控制逻辑电路,在该仲裁器不允许该预取 指令存取该高速缓存的情况下,用以储存关联于该预取指令的状态;
其中,所述的控制逻辑电路是在预取该组快取线前,将该计数的该初始 值从通用缓存器复制至预取计数缓存器。
2.如权利要求1所述的微处理器,其特征在于所述的控制逻辑电路在预 取该组快取线的每一条后,即更新预取计数缓存器中的该计数。
3.如权利要求1所述的微处理器,其特征在于所述的预取指令包含一预 取运算码,该预取运算码前是有一重复字符串前置码。
4.如权利要求1所述的微处理器,其特征在于,在进行寻址时若该组快 取线其中一快取线产生一转换参照缓冲器未命中,则该控制逻辑电路中止预 取该组快取线。
5.如权利要求1所述的微处理器,其特征在于,若微处理器的一当前特 权级改变时,则该控制逻辑电路中止预取该组快取线。
6.如权利要求1所述的微处理器,其特征在于,若该组快取线的其中一 快取线命中该高速缓存,则控制逻辑电路不预取该快取线。
7.一种具有预取指令的微处理器,用于具一系统内存的系统中,其特征 在于,该微处理器包含:
一指令译码器,用以译码一预取指令,该预取指令指定了从该系统内存 所要预取快取线的一计数及该快取线在系统内存中的一地址;
一地址缓存器,耦接至该指令译码器,用以储存该预取指令所指定的该 地址;
一计数缓存器,耦接至指令译码器,用以储存指定于该预取指令的该计 数;以及
一控制逻辑电路,耦接至该地址缓存器,组态为控制微处理器从该系统 内存预取指定于该地址缓存器与该计数缓存器中的该快取线至微处理器的一 高速缓存中。
8.如权利要求7所述的微处理器,其特征在于,它还包括:
一递增器,耦接至该地址缓存器,用以递增存于该地址缓存器的该地址, 以响应预取每一该快取线的动作。
9.如权利要求8所述的微处理器,其特征在于所述的递增器将存于地址 缓存器的该地址,递增该快取线其中之一的大小。
10.如权利要求7所述的微处理器,其特征在于,它还包括:
一递减器,耦接至该计数缓存器,用以递减该计数,以响应预取每一该 快取线的动作。
11.如权利要求10所述的微处理器,其特征在于所述的控制逻辑电路持 续预取该快取线,直至存于计数缓存器的该计数被该递减器递减至零为止。
12.如权利要求7所述的微处理器,其特征在于,它还包括:
一地址产生器,耦接至该地址缓存器,用以依据该预取指令所指定的操 作数,产生存于地址缓存器的该地址。
13.如权利要求7所述的微处理器,其特征在于所述的控制逻辑电路以一 背景模式执行预取该快取线的动作,而不会使当前非预取指令的执行受到影 响。
14.如权利要求7所述的微处理器,其特征在于,它还包括:
一重新执行缓冲器,耦接至该控制逻辑电路,用来储存在一预定条件下 该预取指令的一状态,借以在未来该预定条件终止后,使该预取指令能恢复 执行。
15.如权利要求7所述的微处理器,其特征在于,它还包括:
一转换参照缓冲器,耦接为从该地址缓存器接受该地址,用以储存页码 表信息,其中若该转换参照缓冲器指出存于该地址缓存器中的该地址未命中 于该转换参照缓冲器,则控制逻辑电路即停止预取该快取线。
16.如权利要求7所述的微处理器,其特征在于,若微处理器改变其当前 特权级,则控制逻辑电路停止预取该快取线。
17.如权利要求7所述的微处理器,其特征在于,若该地址命中该高速缓 存,则控制逻辑电路递减存于该计数缓存器的该计数,而不需预取由存于地 址缓存器的该地址所指定的该快取线其中之一。
18.一种微处理器预取指令至其高速缓存的方法,其特征在于,该方法 包含:
(a)侦测一重复预取指令,该重复预取指令是指定快取线的一计数,以 从一系统内存地址预取该快取线;
(b)将该计数从微处理器的一通用缓存器复制至一预取计数缓存器;
(c)储存该地址于一预取地址缓存器中;
(d)预取该预取地址缓存器所指定的一快取线至该高速缓存;
(e)递减该预取计数缓存器中的计数;
(f)递增该预取地址缓存器中的地址;以及
(g)重复步骤(d)、(e)及(f),直到该预取计数缓存器的值为零。
19.如权利要求18所述的方法,其特征在于,它还包括:
若当前处理器级缓存器中的当前特权级改变,则终止步骤(d)至(g) 的执行。
20.如权利要求18所述的方法,其特征在于,它还包括:
在进行寻址时若该地址未命中转换参照缓冲器,则终止步骤(d)至(g) 的执行。
21.如权利要求18所述的方法,其特征在于,它还包括:
若微处理器的自由响应缓冲器的一数量小于储存在微处理器的一门槛缓 存器的一门槛值,则暂停该预取动作,直至该自由响应缓冲器的数量大于该 门槛值。
22.如权利要求18所述的方法,其特征在于,它还包括:
在进行寻址时若该地址命中该高速缓存,则略过步骤(d)。
23.如权利要求18所述的方法,其特征在于,它还包括:
若该预取指令具有最低的优先权,则暂停该预取动作,直至具较高优先 权的资源未再要求该高速缓存的存取权。
技术领域\n本发明涉及微处理器的预取指令(prefetch instruction)的领域,尤指一 具有预取指令的微处理器及预取至其高速缓存的方法,该预取指令是可预取 一特定数量的快取线(cache line)。\n背景技术\n现代的微处理器皆包含高速缓存。高速缓存储存了一部份存于计算机系统 的其它内存的数据。当处理器执行一需参照数据的指令时,处理器首先检查该 数据是否存于高速缓存中。若是,则既然数据已存在高速缓存中,该指令便可 立即执行。否则,该指令必须等到数据从其它内存提取至高速缓存时,才能执 行。数据的提取可能得花相当长的时间一一在某些情况下,所花时间是处理器 执行指令所需的一个数量级以上。\n许多在微处理器上执行的软件程序需要处理大量的连续数据。例如,这大 量的连续数据可能介于一百到一百万个字节之间。此种程序的例子如多媒体相 关的音频或视频程序,其处理大量的数据,像是视频数据或波形文件(Wave file) 数据。一般大量的数据都存在外部的内存,诸如系统内存或视频页框缓冲器 (video frame buffer)。为了让处理器能处理数据,必须将数据从外部内存 提取至处理器。\n若所需的一部分数据不在高速缓存中,则由于数据的提取及处理所需时间 并不相同,便可能造成一种情形,即处理器已准备好执行另一个指令以处理数 据,但却无法动作,而须坐等数据被提取至处理器。如此处理器的使用便缺乏 效率,并可能导致如多媒体系统效能的降低。\n在解决这项问题上,现代的微处理器已觉察到在很多时候,程序员会在实 际处理数据的指令执行前,像是算术指令(arithmetic instruction),便已 知道他需要这些数据。因此,现代的微处理器已将预取指令加入或包含在其指 令集中,这些预取指令是在数据被需要前,即提取该数据的一快取线至处理器 的高速缓存中。快取线是能在高速缓存与其它内存间移转的最小单位数据。此 种具预取指令的微处理器的一例即英特尔(Intel)Pentium III处理器。Pentium III在其串流SIMD延伸(Streaming SIMD Extensions,SSE)指令集中,包 含了PREFETCH指令。\n在许多软件应用程序中,程序员知道他将要处理到大量的连续数据,即许 多快取线。因此,程序员在其程序中加入预取指令,像是Pentium III的 PREFETCH,以预取一快取线。程序员在实际要执行快取线数据的算术或逻辑 运算的指令的多个指令前,加入预取指令。因此,程序可能有许多预取指令呈 点状分布其间。所加入的这些预取指令使得程序代码以及所需执行的指令数都 增加了。\n再者,在常见的方法中,程序员不仅使预取指令呈点状分布于程序代码中, 还需努力将其放至适当位置,使其执行能最佳化。也就是,程序员必须尝试去 决定预取指令的执行时机,以使得数据在指令需要用到时,就已经在高速缓存 中了。特别是,程序员在将预取指令放进程序代码时,要尝试使其不会相互干 扰。即,在现有的处理器中,若一预取指令正在执行且一后续的预取指令随之 出现,则其中一预取指令可能会被视为虚拟操作指令(no-op instruction),只 耗费脉冲而未实际执行预取。这样就无法完成程序员想做的,且很可能使效能 变得较差。\n程序员靠自己动手加入预取指令时,所面临的一项问题是,核心/总线 脉冲比(core/bus clock ratio)是不固定的。在许多现代的微处理器中, 连接处理器与系统其它部分的处理器总线,其脉冲频率不同于处理器内部逻辑 运作的脉冲频率,后者一般称为核心脉冲频率。核心/总线脉冲比即为处理器 核心脉冲频率对处理器总线脉冲频率的比率。\n核心脉冲与处理器总线脉冲频率的差异,部分要归固于在分类所生产的处 理器时,常依据一已知集成电路所能稳定维持的核心脉冲频率。因此,情况可 能是,一种已知的处理器设计可能会被分到四个不同核心脉冲频率的类别中, 像是800MHz、900MHz、1GHz以及1.2GHz。然而,所有这些处理器类别皆必须 在设计为以一或二个固定总线脉冲频率,如100MHz或133MHz来在主机板上 运作。所以,在上例中,就可能产生八种不同的核心/总线脉冲比。因此,要完 成一典型的预取动作,其所需的核心脉冲有八种不同的可能值。\n要完成一典型的预取动作,其所需核心脉冲是存在一变动范围的这个事 实,使得程序员很难有效地自己动手加入常见的预取指令。假定最高的核心/ 总线脉冲比是12,并假设一典型的预取指令要花约10个总线脉冲或约120 个核心脉冲。假定程序员正在写一个循环(loop),其用来处理单一快取线的 数据,并花大约60个核心脉冲执行,而且除了预取指令所产生的总线动作 外,不需要依靠其它总线的动作。\n在此例中,程序员可能选择每重复(iteration)一次该循环,即每120个核 心脉冲就执行一预取指令,以顾及最高核心/总线脉冲比的情形。在脉冲比为 12时,程序员的这项选择可能运作得很好。然而,若使用者系统的脉冲比为 6,一典型的预取指令仅需约60个核心脉冲,这只重复一次循环而已。在此 情况下,预取指令只有一半的时间有在运作,如此可能导致处理器停顿下来, 等待数据被提取至高速缓存中。\n因此我们所需要的是一种具备可有效进行预取的预取指令的微处理器, 并且,该预取指令可有效地置入Pentium III的运算码空间。\n发明内容\n本发明提供一种微处理器,其支持一种可允许程序员指定快取线预 取数量的预取指令。于是,为达到前述目的,本发明的一项特征是,提 供一种微处理器,其执行一预取指令,该预取指令指定一组快取线,以 便将其从一系统内存预取至该微处理器的一高速缓存中。该微处理器包 括一预取计数缓存器(prefetch count register),以储存所余的待预取快 取线的一计数。该微处理器也包括一通用缓存器(general purpose register),耦接至该预取计数缓存器,用以储存该计数的一初始值。该 初始值由先于该预取指令执行的一指令加载该通用缓存器。该微处理器也 包括一控制逻辑电路(control logic),耦接至该预取计数缓存器,用以将该 初始值从通用缓存器复制至预取计数缓存器,以响应译码该预取指令的动 作。该微处理器还包括一预取地址缓存器,耦接至该控制逻辑电路,用以储 存该组快取线中,所要预取的下一条快取线地址;一比较器,耦接至该控制 逻辑电路,用以在存取该组快取线之前,判断微处理器中自由响应缓冲器的 数量是否大于一门槛值;一仲裁器,耦接至该控制逻辑电路,用以决定在有 其它要求者的情形下,该预取指令是否被允许存取该高速缓存;一重新执行 缓冲器,耦接至该控制逻辑电路,在该仲裁器不允许该预取指令存取该高速 缓存的情况下,用以储存关联于该预取指令的状态;其中,所述的控制逻辑 电路是在预取该组快取线前,将该计数的该初始值从通用缓存器复制至预取 计数缓存器。\n另一方面,本发明的一项特征是,提供一种微处理器。该微处理器包括一 指令译码器(instruction decoder),其译码一指令集中的指令。该指令集包 含由一英特尔Pentium III处理器所定义的一多个指令的集合。该指令集也包 括一重复预取指令。该重复预取指令包含一Pentium III PREFETCH指令运算 码。一位在该运算码前的Pentium III REP字符串指令前置码(prefix)以及 指定预取快取线数量的一计数。\n另一方面,本发明的一项特征是,提供一种用于具一系统内存的系统中的 微处理器。该微处理器包括一用以译码一预取指令的指令译码器,该预取指令 指定了从系统内存所要预取快取线的一计数及该快取线在系统内存中的一地 址。该微处理器也包括一地址缓存器(address register),耦接至该指令译 码器,用以储存该预取指令所指定的地址。该微处理器也包括一计数缓存器, 耦接至指令译码器,用以储存指定于该预取指令的该计数。该微处理器也包括 一控制逻辑电路,耦接至该地址缓存器,用以控制微处理器从系统内存预取地 址缓存器与计数缓存器中所指定的快取线至微处理器的一高速缓存中。\n另一方面,本发明的一项特征是,提供一种微处理器预取指令或者快取线 至其高速缓存的方法。该方法包括侦测一重复预取指令,该重复预取指令是指 定一计数值的快取线,以从一系统内存地址进行预取,并将该计数值从微处理 器的一通用缓存器复制至一预取计数缓存器,以及储存该地址于一预取地址缓 存器中。该方法也包括预取该预取地址缓存器所指定的一快取线至该高速缓存, 递减该预取计数缓存器中的计数,以及递增该预取地址缓存器中的地址。该方 法也包括重复该预取递减及递增的步骤,直到预取计数缓存器的值为零。\n本发明的一个优点是,其可向下兼容于现有的x86指令集架构。此因 Pentium III在一REP前置码位于PREFETCH指令之前时,不会产生异常 (exception)。因而,依据本发明,包含本发明的重复预取指令的软件程序, 可在一支持重复预取指令的微处理器上执行得更有效率,且该程序也能在一 Pentium III处理器上正确执行。\n本发明的另一个优点是,通过再使用PREFETCH运算码与REP前置码组合 起来,以虚拟地产生新的运算码,而保留x86的运算码空间。再一个优点则是, 相较于常见的单一快取线预取指令,本发明潜在地缩短了软件程序代码,此因 程序所需的预取指令更少了。还有一个优点是,本发明通过较常见方法更有效 率地使用处理器总线,而潜在地增进系统的效能。再有一个优点则是,本发明 由于减轻了可能存在不同的核心/总线脉冲比所带来的问题,而能较常见方法 将数据更有效率地移入微处理器的高速缓存中,借以潜在地促进处理效能。\n本发明的其它特征与优点,与考察本说明书其余部分与附图后,将可更加 明白。\n附图说明\n图1为本发明的一微处理器的方块图;\n图2为相关技术的Pentium III PREFETCH指令的方块图;\n图3为相关技术的附有一REP字符串运算前置码的Pentium III字符串指 令的方块图;\n图4为本发明的一重复预取指令的方块图;\n图5为依本发明解说图1的微处理器如何执行图4的重复预取指令的运作 流程图;\n图6为依本发明进一步解说图1的微处理器如何执行图4的重复预取指令 的运作流程图。\n具体实施方式\n现请参阅图1,其显示本发明的一微处理器100的方块图。微处理器100 包含一指令译码器102,其从一指令高速缓存(未显示于图中)接收指令字节。 在一具体实施例中,该指令字节包含x86架构的指令字节。指令译码器102译 码该指令字节,尤其,指令译码器102依据本发明,组态为译码一重复预取指 令,此将在关于图4部分叙述。在叙述图4的重复预取指令前,以下关于图2 与图3部份,将先叙述Pentium III的PREFETCH与REP字符串指令。\n现请参阅图2,其显示一相关技术的Pentium III PREFETCH指令200的 方块图。Pentium III处理器的指令集包括一PREFETCH指令,其将一快取线 从系统内存提取至处理器的快取层级体(cache hierarchy)中一位置。Pentium III PREFETCH指令是详述于IA-32Intel Architecture Software Developer’s Manual,Volume 2:Instruction Set Reference,2001的3-600至3- 601页,通过参照可将此数据并入本说明书。\nPREFETCH指令200包含一PREFETCH运算码202。PREFETCH运算码202具 一默认值0x0F18,以便将PREFETCH指令200与Pentium III指令集的其它指 令区分开来。PREFETCH指令200也包含一Mod R/M字节204。PREFETCH 指令200也包含地址操作数(address operands)206,其指定系统内存中一字节 的地址。PREFETCH指令200从系统内存预取含有指定字节的快取线至处理器 的快取层级体。\nMod R/M字节204在PREFETCH指令200中执行两项功能。第一项功能是 指定一寻址模式(addressing mode)。该寻址模式决定了地址操作数206将如 何用于产生包含所要预取快取线的字节的一有效地址。该有效地址可用不同的 方式指定。例如,有效地址操作数206可在处理器的缓存器档案(registerfile) 的缓存器中,像是DS:ESI缓存器,以节区:偏移量(segment:offset)的格 式来指定。依照该寻址模式,附加的字节,诸如SIB字节、位移(displacement) 及/或直接(immediate)字节,可能包含用于产生有效地址的地址操作数 206。Pentium III指令的一般格式以及该寻址模式的解释是详述于IA-32 Intel Arehitecture Software Developer’s Manual,Volume 2:Instruction Set Reference,2001的2-1至2-7页,通过参照可将此数据并入本说明书。\nPREFETCH指令200的Mod R/M字节204的第二项功能是指定一位置指示 (locality hint)。该位置指示指明要将所指定的快取线预取至Pentium III 处理器的快取层级体中哪个位置。由每一位置指示204默认值所指明的快取 层级体的位置,是因处理器不同而改变。\nPentium III PREFETCH指令200的一项缺点是,其不允许程序员一指定 多条所要预取的快取线,而只能确保单一快取线的预取功能。\n现请参阅图3,其显示一相关技术的附有一REP字符串运算前置码的 Pentium III字符串指令300的方块图。x86架构的指令集,包括Pentium III 处理器包含了执行字节、字组或双字组(duble-words)数据演算的字符串 运算指令。此种运算的例子()从一连接埠输入、输出至一连接端口、从内 存一位置移至另一位置、从内存加载至处理器的缓存器、从处理器的缓存器储 存到内存中、比较或搜寻。字符串运算是由一字符串指令运算码304所指定, 其包含于REP字符串指令300。REP字符串指令300包含一REP前置码302, 可指示处理器重复执字符串指令运算码304所指定的字符串运算,其重复次数 则由REP字符串指令300一计数306来指定。REP前置码302具下面两个默认 值其中的一:0xF2或0xF3,其视所要重复执行的特定字符串指令而定。程序 员在执行REP字符串指令300前,即将计数300加载Pentium III缓存器档案 盼ECX缓存器中。REP字符串运算前置码指令300详述于IA-32Intel Architecture Soft()are Developer’s Manual,Volume 2:I()truction Set Reference,2001的3-677至3-679页,通过参照可将此数据并入本说 明书。\n现请参阅图4,其显示本发明的一重复预取指令(REP PREMTCH)400的 方块图。重复预取指令400包含一REP前置码402,其后则有一PREFETCH运 算码404、一Mod R/M字节406、地址操作数408以及一计数412。REP前置 码402类似于图3的REP前置码302。重复预取指令400中REP前置码402 的存在,显示将要预取多条快取线。在一具体实施例中,所要预取快取线的数 量,即计数412,是由图1的ECX缓存器106所指定。PREFETCH运算码404 类似于图2的PREFETCH运算码202,而ModR/M字节406则类似于图2的Mod R/M字节204。同样地,地址操作数408类似于图2的地址操作数206。有利 地,重复预取指令400使程序员能指定预取多条快取线。重复预取指令400 的其它优点将叙述于后。\n请再参阅图1,微处理器100也包含耦接至指令译码器102的控制逻辑电 路144。在译码图4的重复预取指令400后,指令译码器102即告知控制逻辑 电路144,一重复预取指令400已被译码。\n微处理器100也包含一缓存器档案104,耦接至指令译码器102。在一具 体实施例中,缓存器档案104包含实质上近似于Pentium III缓存器档案的缓 存器。尤其,缓存器档案104包含类似于Pentium III缓存器档案的ECX缓 存器的一ECX缓存器106。在执行重复预取指令400之前,ECX缓存器106加 载了重复预取指令400所要预取快取线的计数值。缓存器档案104也包含其它 用来储存图4重复预取指令400的地址操作数408的缓存器该地址操作数408 是用以计算重复预取指令400的有效地址。在译码重复预取指令400后,指令 译码器102及/或缓存器档案104即提供地址操作数408至地址产生器114。\n微处理器100也包含一地址产生器114,耦接至缓存器档案104。地址产生 器114从缓存器档案104及/或指令译码器102接收地址操作数408,并依据地 址操作数408产生一有效地址108。\n微处理器100也包含一多任务器116,耦接至地址产生器114。多任务器 116的第一输入端从地址产生器114接收有效地址108。多任务器116的第二 输入端接收一递增器(incrementer)126的输出。多任务器116依据由控制 逻辑电路144而来的一控制信号,选取两输入端其中之一。\n微处理器100也包含一重复预取地址(RPA)缓存器122,耦接至多任务 器116的输出端。RPA缓存器122储存及输出一重复预取地址(RPA)186, 其是所要预取的快取线的当前地址(current address)。一开始,RPA缓存器 122储存了地址产生器114所产生的有效地址108。RPA186则由RPA缓存器 122输出至递增器126。递增器126将RPA186递增一快取线的大小,并将递增 后的地址送回至多任务器116的第二输入端以使得每次预取一快取线时,RPA 缓存器122中的RPA186可以被更新。在一具体实施例中,一快取线的大小为 32字节。\n微处理器100也包含一第二多任务器146,耦接至RPA缓存器122。多任务 器146从RPA缓存器122接收RPA186。多任务器146也从地址产生器114接 收有效地址108。多任务器146也接收一重新执行缓冲地址(replay buffer address)132、储存缓冲(SB)地址134。表格扫描地址(table walk address) 136以及响应缓冲(RB)地址138。\n微处理器100也包含一耦接至多任务器146的高速缓存154,其由多任务 器146的输出来寻址。高速缓存154是代表微处理器100的快取层级体。在一 具体实施例中,高速缓存154包含一一阶(level-1)数据高速缓存与一二阶 (level-2)数据高速缓存。重复预取指令400从系统内存所预取的快取线 则提取至高速缓存154。\n微处理器100也包含一标志数组152,或目录152,耦接至多任务器146。 标志数组152也由多任务器146的输出加以寻址。标志数组152储存了关联于 存在高速缓存154中的快取线的标志与状态。标志数组152产生一快取命中信 号(cache hit signal)162。若多任务器的输出吻合于存于标志数组152的 一有效标志,则标志数组152产生一真值的快取命中信号162。否则,标志数 组152产生一假值的快取命中信号162。快取命中信号162是被送至控制逻辑 电路144。\n微处理器100也包含一耦接至多任务器146的转换参照缓冲器 (translation lookaside buffer,TLB)156。TLB156也由多任务器146的 输出来寻址。TLB156快取了页码表(page table)目录信息,以减少转换页 码所需的时间。TLB156产生一TLB命中信号164。若关联于多任务器146所 输出地址的有效页码目录信息是存在于TLB156则TLB156产生一真值的TLB 命中信号164。反的,则TLB156产生一假值的TLB命中信号164,且必须执 行表格扫描以获得所要的页码目录信息。TLB命中信号164则被送至控制逻辑 电路144。\n微处理器100也包含一耦接至ECX缓存器106的第三多任务器118,其在 一第一输入端从ECX缓存器106接收图4的重复预取指令400的计数值412。 多任务器118在上第二输入端接收一递减器(decrementer)128的输出。多任 务器118依据由控制逻辑电路144而来的一控制信号,选取两输入端其中之一。\n微处理器100也包含一重复预取计数(RPC)缓存器124,耦接至多任务 器118的输出。RPC缓存器124储存并输出一重复预取计数(RPC)188,其 为重复预取指令400当前所余的预取快取线的数量。一开始,RPC缓存器124 储存了存于ECX缓存器106的重复预取指令400的计数值412。RPC 188则由 RPC缓存器124输出至递减器128。递减器128将RPC 188递减一,并将递减 后的计数值送回至多任务器118的第二输入端,以使得每次预取一快取线时, RPC缓存器124中的RPC 188可以被更新。RPC 188也由RPC缓存器124送 至控制逻辑电路144。\n微处理器100也包含一重复预取有效(RPV)缓存器142,耦接至控制逻 辑电路144。RPV缓存器142储存及输出一重复预取有效(RPV)位184。若 一重复预取指令400将要执行,则RPV位184为真,如下文关于图5及图6 部分所述。\n微处理器100也包含一耦接至多任务器146的仲裁器(arbiter)148,其从 RPV缓存器142接受RPV位184。仲裁器148也与控制逻辑电路144进行沟通。 仲裁器148在微处理器100内的各项资源间进行仲裁,这些资源是要求存取高 速缓存154。标志数组152及/或TLB 156。在一具体实施例中,这些资源包 括重复预取指令400、表格扫描逻辑电路、储存缓冲器、响应缓冲器166及一 重新执行缓冲器158。依据RPV位184及来自控制逻辑电路144的信息(如下 所述),仲裁器148控制多任务器146选取多任务器146前述的其中一输入端, 以使得其中一项资源可以存取高速缓存154、标志数组152及/或TLB 156的 内容。在一具体实施例中,在竞逐高速缓存154、标志数组152及/或TLB 156 的存取权的各项资源中,重复预取指令400所具的优先权为最低的。\n微处理器100也包含一耦接至控制逻辑电路144的重新执行缓冲器158。 当一重复预取指令400未赢得仲裁器148对高速缓存154、标志数组152及/或 TLB 156存取权的仲裁,重新执行缓冲器158便用来储存该重复预取指令400 的某些状态。重新执行缓冲器158有利地使该重复预取指令400能持续其寿命。 这特别重要,因为重复预取指令400很少能赢得足够时间的存取权,以在一具 更高优先权的资源先取得存取权前,完成计数412所指定的全部快取线的预取 动作。\n微处理器100也包含一耦接至控制逻辑电路144的当前处理器级(current processor level,CPL缓存器112,其储存了微处理器100的CPL。CPL指定 了微处理器100的一当前特权级(current privilege level)。CPL通常被操 作系统用来作为一种保护系统的工具。例如,特权级不足的程序可能无法执行 某些特定指令,例如输入/输出指令。在一具体实施例中,CPL包含一范围由 0到3的值,实际对应至Pentium III处理器的第0至第3环层级(ring level)。\n微处理器100也包含一耦接至控制逻辑电路144的总线接口单元(bus interface unit)172,其将微处理器100耦接至一处理器总线174,微处理 器乃借以从系统内存提取数据。在本说明书中,系统内存是指微处理器100 的高速缓存154外的内存,像是系统的DRAM或视频页框缓冲器。尤其,总线 接口单元172从系统内存预取了一重复预取指令400所指定的多条快取线。\n微处理器100也包含一耦接至总线接口单元172的响应缓冲器(RB)166。 响应缓冲器166通过总线接口单元172接收从系统内存提取的数据。尤其,响 应缓冲器166从系统内存接收由重复预取指令400所指定预取的快取线。储存 于响应缓冲器166的预取快取线被送至高速缓存154以存于其中。在一具体实 施例中,除了重复预取指令400,响应缓冲器166也由从处理器总线174提取 数据的其它指令所共享。因此,重复预取指令400与其它可能具更高优先权的 指令竟逐响应缓冲器166资源的使用权。在一具体实施例中,有八个响应缓冲 器166。\n微处理器100也包含一耦接至控制逻辑电路144的自由响应缓冲器(free RB)缓存器168。每次有一响应缓冲器166被配置或释出,控制逻辑电路144 即以自由响应缓冲器166的数量更新自由RB缓存器168的值。\n微处理器100也包含一响应缓冲器门槛(RB threshold)缓存器182,其储 存下文会提及的一门槛值。在一具体实施例中,该门槛值是预定的。在另一具 体实施例中,该门槛值则可由系统程序员以程控。在又一具体实施例中,该门 槛值则可由微处理器100的一外在输入端加以控制。\n微处理器100也包含一比较器(comparator)178,耦接至自由RB缓存 器168及RB门槛缓存器182。比较器178将门槛值182与自由响应缓冲器166 的数量做比较,并响应地产生一结果信号192。在一具体实施例中,若自由响 应缓冲器166的数量比门槛值182还大,则比较器178产生一真值的信号192。 否则,比较器178产生一假值的信号192。结果信号192接着被送至控制逻辑 电路144。\n现请参阅图5,其为依本发明解说图1的微处理器100如何执行图4的重 复预取指令400的运作流程图。在执行重复预取指令400之前,另一个指令加 载图1ECX缓存器106中的计数值。流程开始于方块502。\n于方块502中,图1的指令译码器102侦测出图4的REP前置码字节402, 其后则为图4的PREFETCH运算码404。也就是,指令译码器102译码了图4 的重复预取指令400流程则自方块502进行到方块504。\n于方块504中,图1的地址产生器114依据图4的Mod R/M字节406与 地址操作数408,产生重复预取指令400的图1的有效地址108。流程则自方 块504进行到方块506。\n于方块506中,控制逻辑电路144将ECX缓存器106中的计数值复制至 RPC缓存器124,并将有效地址108复制至图1的RPA缓存器122。ECX缓存 器106中的计数值由重复预取指令400前的一指令加载。流程则自方块506进 行到方块508。\n于方块508中,控制逻辑电路144设定图1RPV缓存器142的RPV位184 的值为真,以向图1的仲裁器148指明,一有效的重复预取指令400已准备好 取得图1高速缓存154的存取权,以执行快取线的预取动作。流程则自方块508 进行到判断方块(decision block)512。\n于方块512中,仲裁器148确定RPV位184的值是否被设定为真。若是, 流程则进行至判断方块514。否则,流程即结束。\n于判断方块514中,仲裁器148决定了重复预取指令400是否赢得了对图 1的高速缓存154、标志数组152及/或TLB I56存取权的仲裁。若否,流 程进行至方块516。否则,流程进行至方块518。\n于方块516中,控制逻辑电路144将重复预取指令400的状态存入图1的 重新执行缓冲器158,以使得重复预取指令400未来一旦赢得存取权时,能继 续执行。流程从方块516返回至判断方块512,以尝试继续进行重复预取指令 400。在流程返回至判断方块512后,若一重复预取指令于方块514中赢得了存 取权的仲裁,则该重复预取指令400即从重新执行缓冲器回复原来状态,以便 于该重复预取指令400可继续执行。\n于方块518中,RPA 186被送至TLB 156,以便在TLB 156中查询RPA 186,产生图1的TLB命中信号164。流程则自方块518进行到判断方块522。\n于判断方块522中,控制逻辑电路144确定TLB命中信号164的值是否为 真。若否,则流程进行至方块524。否则,流程进行至方块526。\n于方块524中,控制逻辑电路144清除RPV缓存器142的RPV位184, 以显示重复预取指令400不再有效,即重复预取指令400不再要求存取图1 的高速缓存154、标志数组152及/或TLB 156。本发明的优点是,若未命中 TLB 156,则重复预取指令400即停止预取快取线,因为将需要执行一页码表 格扫描。通过不增加处理器总线174额外的流量,而可执行完成重复预取指令 400所必须的页码表格扫描,如此潜在地增进了微处理器100及/或系统的效 率。流程即结束于方块524。\n于方块526中,RPA 186被送至标志数组152,以便在标志数组152中查 询RPA186,而产生图1的快取命中信号162。流程则自方块526进行到判断 方块528。\n于方块528中,控制逻辑电路144确定快取命中信号162的值是否为真。 若是,则流程进行至方块532。否则,流程进行至判断方块536。\n于方块532中,发生一快取命中。结果是,由RPA186指定的快取线即不 需被预取,因为其已存在于高速缓存154。因此,控制逻辑电路144递增RPA 186 及递减RPC 188,具有不执行不必要的快取线预取动作的好处,此种预取动作 会造成处理器总线174上非必要的流量,而借以潜在地增加微处理器100及/ 或系统的效率。流程则自方块532进行到判断方块534。\n于判断方块534中,控制逻辑电路144判断RPC 188的值是否为0,以确 定重复预取指令400所指定的全部快取线是否皆已被预取。若否,流程返回至 判断方块512以预取另一快取线。否则,流程结束。\n于判断方块536中,控制逻辑电路144判断由图1比较器178产生的图1 结果信号192,是否指示出图1自由响应缓冲器缓存器168的值大于图1门槛 缓存器182所存的值。若否,流程进行至方块516。否则,流程进行至方块538。 为了预取一快取线,控制逻辑电路144必须配置某一响应缓冲器166,这可能 导致后续一具高优先权的指令无法配置其急需的响应缓冲器166。本发明的优 点是,通过在自由响应缓冲器166不足时即不预取快取线,可潜在地增加微处 理器100的效率。\n于方块538中,重复预取指令400要预取下一快取线的所有条件皆已符合。 因此,控制逻辑电路144配置一响应缓冲器166,并指示图1的总线接口单元 172从系统内存提取RPA 186所指定的快取线至所配置的响应缓冲器166。当 总线接口单元172将该快取线提取至响应缓冲器166时,该快取线即依据图4 Mod R/M字节406所指定的位置指示而被写入高速缓存154。流程则自方块 538进行至方块532,以递增RPA 186及递减RPC 188,若有需要且所有条件 皆符合,则预取下一条快取线。\n现请参阅图6,其为依本发明进一步解说图1的微处理器100如何执行图4 的重复预取指令400的运作流程图。流程开始于方块602。\n于方块602中,图1的控制逻辑电路144侦测出存于图1CPL缓存器112 的CPL产生变化。CPL的变化可能是异步地产生,诸如由于微处理器的中断或 异常。流程自方块602进行到判断方块604。\n于方块604中,控制逻辑电路144清除图1的RPV位184,如此即能有效 地中止重复预取指令400,因为下次流程再进行至图5的判断方块512时,重 复预取指令400将被停止。在一具体实施例中,控制逻辑电路144只有在方 块602中所侦测的CPL的变化,是从低优先权至高优先权的情况下,才清除 RPV位184。有利地本发明通过在一具高优先权的工作或程控了微处理器100 的情形下,中止重复预取指令的执行,而得以潜在地增进微处理器100的效率。 流程则结束于方块604。\n从前述可看出,本发明有利地提供一种重复预取指令,处理器本身可用一 有效率的方式,借以控制大方块数据的预取动作,而不用靠程序员手动地加入 单一快取线的预取指令,后者是受制于例如可能存在有不同的核心/总线脉冲比 所造成的无效率。\n虽然本发明及其目的、特征与优点已详细叙述了,其它具体实施例仍涵盖 在本发明的范围内。例如,本发明可适用于具有不同指令集与快取层级架构的 微处理器中。\n虽然本发明已以较佳实施例公开如上,然其并非用以限定本发明,任何本 领域普通技术人员,在不脱离本发明的精神和范围内,当可作等效变化与修改, 因此本发明的保护范围以权利要求为准。
法律信息
- 2022-07-22
专利权有效期届满
IPC(主分类): G06F 12/00
专利号: ZL 02140501.8
申请日: 2002.07.05
授权公告日: 2006.08.09
- 2006-08-09
- 2003-07-02
- 2003-04-16
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有引用任何外部专利数据! |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 1 | | 2010-01-27 | 2010-01-27 | | |