本发明专利技术涉及一种执行重复预取指令(REP PRE-FETCH)的微处理器及预取快取线至其高速缓存的方法。该重复预取指令预取多条快取线,其中快取线的数量可于指令中指定。该指令是由Pentium Ⅲ PREFETCH运算码所指定,运算码前则有REP字符串指令前置码。程序员于ECX缓存器中知道所要预取快取线的计数值,类似于REP字符串指令的重复计数值。第一条快取线的有效地址,则以类似常见PREFETCH指令的方式来指定。若当前预取的快取线的地址未命中TLB,或者当前处理器级缓存器中的当前特权级改变,则停止REP PREFETCH指令的执行。此外,只有在自由响应缓冲器的数量大于一可程序化的门槛值时,才预取一快取线。该预取动作时在比其它需要存取高速缓存或TLB的动作还低的优先权下执行。(*该技术在2022年保护过期,可自由使用*)
【技术实现步骤摘要】
本专利技术涉及微处理器的预取指令(prefetch instruction)的领域,尤指一,该预取指令是可预取一特定数量的快取线(cache line)。
技术介绍
现代的微处理器皆包含高速缓存。高速缓存储存了一部份存于计算机系统的其它内存的数据。当处理器执行一需参照数据的指令时,处理器首先检查该数据是否存于高速缓存中。若是,则既然数据已存在高速缓存中,该指令便可立即执行。否则,该指令必须等到数据从其它内存提取至高速缓存时,才能执行。数据的提取可能得花相当长的时间一一在某些情况下,所花时间是处理器执行指令所需的一个数量级以上。许多在微处理器上执行的软件程序需要处理大量的连续数据。例如,这大量的连续数据可能介于一百到一百万个字节之间。此种程序的例子如多媒体相关的音频或视频程序,其处理大量的数据,像是视频数据或波形文件(Wave file)数据。一般大量的数据都存在外部的内存,诸如系统内存或视频页框缓冲器(video frame buffer)。为了让处理器能处理数据,必须将数据从外部内存提取至处理器。若所需的一部分数据不在高速缓存中,则由于数据的提取及处理所需时间并不相同,便可能造成一种情形,即处理器已准备好执行另一个指令以处理数据,但却无法动作,而须坐等数据被提取至处理器。如此处理器的使用便缺乏效率,并可能导致如多媒体系统效能的降低。在解决这项问题上,现代的微处理器已觉察到在很多时候,程序员会在实际处理数据的指令执行前,像是算术指令(arithmetic instruction),便已知道他需要这些数据。因此,现代的微处理器已将预取指令加入或包含在其指令集中,这些预取指令是在数据被需要前,即提取该数据的一快取线至处理器的高速缓存中。快取线是能在高速缓存与其它内存间移转的最小单位数据。此种具预取指令的微处理器的一例即英特尔(Intel)Pentium III处理器。PentiumIII在其串流SIMD延伸(Streaming SIMD Extensions,SSE)指令集中,包含了PREFETCH指令。在许多软件应用程序中,程序员知道他将要处理到大量的连续数据,即许多快取线。因此,程序员在其程序中加入预取指令,像是Pentium III的PREFETCH,以预取一快取线。程序员在实际要执行快取线数据的算术或逻辑运算的指令的多个指令前,加入预取指令。因此,程序可能有许多预取指令呈点状分布其间。所加入的这些预取指令使得程序代码以及所需执行的指令数都增加了。再者,在常见的方法中,程序员不仅使预取指令呈点状分布于程序代码中,还需努力将其放至适当位置,使其执行能最佳化。也就是,程序员必须尝试去决定预取指令的执行时机,以使得数据在指令需要用到时,就已经在高速缓存中了。特别是,程序员在将预取指令放进程序代码时,要尝试使其不会相互干扰。即,在现有的处理器中,若一预取指令正在执行且一后续的预取指令随之出现,则其中一预取指令可能会被视为虚拟操作指令(no-op instruction),只耗费脉冲而未实际执行预取。这样就无法完成程序员想做的,且很可能使效能变得较差。程序员靠自己动手加入预取指令时,所面临的一项问题是,核心/总线脉冲比(core/bus clock ratio)是不固定的。在许多现代的微处理器中,连接处理器与系统其它部分的处理器总线,其脉冲频率不同于处理器内部逻辑运作的脉冲频率,后者一般称为核心脉冲频率。核心/总线脉冲比即为处理器核心脉冲频率对处理器总线脉冲频率的比率。核心脉冲与处理器总线脉冲频率的差异,部分要归固于在分类所生产的处理器时,常依据一已知集成电路所能稳定维持的核心脉冲频率。因此,情况可能是,一种已知的处理器设计可能会被分到四个不同核心脉冲频率的类别中,像是800MHz、900MHz、1GHz以及1.2GHz。然而,所有这些处理器类别皆必须在设计为以一或二个固定总线脉冲频率,如100MHz或133MHz来在主机板上运作。所以,在上例中,就可能产生八种不同的核心/总线脉冲比。因此,要完成一典型的预取动作,其所需的核心脉冲有八种不同的可能值。要完成一典型的预取动作,其所需核心脉冲是存在一变动范围的这个事实,使得程序员很难有效地自己动手加入常见的预取指令。假定最高的核心/总线脉冲比是12,并假设一典型的预取指令要花约10个总线脉冲或约120个核心脉冲。假定程序员正在写一个循环(loop),其用来处理单一快取线的数据,并花大约60个核心脉冲执行,而且除了预取指令所产生的总线动作外,不需要依靠其它总线的动作。在此例中,程序员可能选择每重复(iteration)一次该循环,即每120个核心脉冲就执行一预取指令,以顾及最高核心/总线脉冲比的情形。在脉冲比为12时,程序员的这项选择可能运作得很好。然而,若使用者系统的脉冲比为6,一典型的预取指令仅需约60个核心脉冲,这只重复一次循环而已。在此情况下,预取指令只有一半的时间有在运作,如此可能导致处理器停顿下来,等待数据被提取至高速缓存中。因此,我们所需要的是一种具备可有效进行预取的预取指令的微处理器,并且,该预取指令可有效地置入Pentium III的运算码空间。
技术实现思路
本专利技术提供一种微处理器,其支持一种可允许程序员指定快取线预取数量的预取指令。于是,为达到前述目的,本专利技术的一项特征是,提供一种微处理器,其执行一预取指令,该预取指令指定一组快取线,以便将其从一系统内存预取至该微处理器的一高速缓存中。该微处理器包括一预取计数缓存器(prefetch count register),以储存所余的待预取快取线的一计数。该微处理器也包括一通用缓存器(general purposeregister),耦接至该预取计数缓存器,用以储存该计数的一初始值。该初始值由先于该预取指令执行的一指令加载该通用缓存器。该微处理器也包括一控制逻辑电路(control logic),耦接至该预取计数缓存器,用以将该初始值从通用缓存器复制至预取计数缓存器,以响应译码该预取指令的动作。该微处理器还包括一预取地址缓存器,耦接至该控制逻辑电路,用以储存该组快取线中,所要预取的下一条快取线地址;一比较器,耦接至该控制逻辑电路,用以在存取该组快取线之前,判断微处理器中自由响应缓冲器的数量是否大于一门槛值;一仲裁器,耦接至该控制逻辑电路,用以决定在有其它要求者的情形下,该预取指令是否被允许存取该高速缓存;一重新执行缓冲器,耦接至该控制逻辑电路,在该仲裁器不允许该预取指令存取该高速缓存的情况下,用以储存关联于该预取指令的状态;其中,所述的控制逻辑电路是在预取该组快取线前,将该计数的该初始值从通用缓存器复制至预取计数缓存器。另一方面,本专利技术的一项特征是,提供一种微处理器。该微处理器包括一指令译码器(instruction decoder),其译码-指令集中的指令。该指令集包含由一英特尔Pentium III处理器所定义的一多个指令的集合。该指令集也包括一重复预取指令。该重复预取指令包含一Pentium III PREFETCH指令运算码。一位在该运算码前的Pentium III REP字符串指令前置码(prefix)以及指定预取快取线数量的一计数。另一方面,本专利技术的一项特征是,提供一种用于具一系本文档来自技高网...
【技术保护点】
一种具有预取指令的微处理器,其特征在于,它包含:一指令译码器,用以译码一指令集中的指令,该指令集至少包含由一英特尔PentiumⅢ处理器所定义的一多个指令的集合,该指令集还包含一重复预取指令;以及该重复预取指令包含: 一PentiumⅢPREFETCH指令运算码;一位在该运算码前的PentiumⅢREP字符串指令前置码;以及一指定所要预取快取线的数量的计数。
【技术特征摘要】
US 2002-4-9 10/119,4351.一种具有预取指令的微处理器,其特征在于,它包含一指令译码器,用以译码一指令集中的指令,该指令集至少包含由一英特尔Pentium III处理器所定义的一多个指令的集合,该指令集还包含一重复预取指令;以及该重复预取指令包含一Pentium III PREFETCH指令运算码;一位在该运算码前的Pentium III REP字符串指令前置码;以及一指定所要预取快取线的数量的计数。2.如权利要求1所述的微处理器,其特征在于,它还包括一缓存器档案,耦接至该指令译码器,该缓存器档案包含一ECX缓存器,其中该计数是储存于该ECX缓存器中。3.如权利要求2...
【专利技术属性】
技术研发人员:罗德尼虎克,
申请(专利权)人:智慧第一公司,
类型:发明
国别省市:US[美国]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。