CN1514373A - 对高速缓存界线进行更名的装置与方法 - Google Patents

对高速缓存界线进行更名的装置与方法 Download PDF

Info

Publication number
CN1514373A
CN1514373A CNA2003101197574A CN200310119757A CN1514373A CN 1514373 A CN1514373 A CN 1514373A CN A2003101197574 A CNA2003101197574 A CN A2003101197574A CN 200310119757 A CN200310119757 A CN 200310119757A CN 1514373 A CN1514373 A CN 1514373A
Authority
CN
China
Prior art keywords
speed cache
boundary line
cache boundary
instruction
computing
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
CNA2003101197574A
Other languages
English (en)
Other versions
CN100504815C (zh
Inventor
E
罗德尼·E·胡克
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.)
INTELLIGENCE FIRST CO
Original Assignee
INTELLIGENCE FIRST 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 INTELLIGENCE FIRST CO filed Critical INTELLIGENCE FIRST CO
Publication of CN1514373A publication Critical patent/CN1514373A/zh
Application granted granted Critical
Publication of CN100504815C publication Critical patent/CN100504815C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Abstract

本发明涉及一种能够对高速缓存界线进行排他性分配与更名的微处理器装置及方法。该装置包含转译逻辑和执行逻辑。该转译逻辑将一分配与更名的指令转译为一微指令序列,用以命令一微处理器分配一第一高速缓存界线于排他状态,并将一第二高速缓存界线中的内容复制至该第一高速缓存界线。该执行逻辑耦接至该转译逻辑,该执行逻辑接收该微指令序列,并对内存总线发布要求该第一高速缓存界线为排他状态的作业。在得到排他权的授权后,该执行逻辑将该第二高速缓存界线中的内容复制至该第一高速缓存界线。

Description

对高速缓存界线进行更名的装置与方法
技术领域
本发明涉及一种有关微电子学(Microelectronics)的领域,尤其是一种使程序员得以命令微处理器对其内部高速缓存(Internal Cache)中的高速缓存界线(Cache Line)进行更名(Rename)的装置和方法。
背景技术
在今日的微处理器,其内部逻辑区段(logic block)间的数据传输速度远超过于其与外部内存的存取速度。在一个x86桌上型计算机系统中,其总线(bus)与系统内存之间的界面运作速率是以兆赫(megahertz)的百倍计,但是其内部微处理器时脉速率却已接近数十倍的千兆赫(gigahertz)。因此,近年来已发展出一个阶层式的高速缓存架构,此架构使得高效能微处理器得以高速运作,而不必在每次读取(read)或写入(write)数据时停滞(stall),以等待在一个缓慢的内存总线(memory bus)上执行作业(transaction)。
一个机载(on-board)或区域(local)高速缓存在一个管线化(pipeline)微处理器中是一个独立的单位,在本质上,其运作方式对于在管线化微处理器中流动的指令而言是透明(transparent)的,以确保一个应用程序(application program)中的指令所需要的数据已经存在于其高速缓存内,且得以用管线速度存取,而非以内存总线速度。不同的技术使用不同的高速缓存架构,有些是由多层(multiple levels)高速缓存所组成:第一层高速缓存是非常接近处理器的执行逻辑(execution logic),第二层高速缓存可以是芯片上(on-chip)或非芯片上,是用来储存较不常存取的数据,第三层高速缓存则可能是在存储卡(memory card)上,以此类推。不论应用那一种架构,熟悉此领域技术人员将发现使用高速缓存的目的,在于排除当对一缓慢的内存总线发布总线作业时,微处理器管线中指令的停滞(stall);此总线作业是为了取得一待决的(pending)读取或写入运算所需的数据,当此状况发生,程序的执行将产生令人难以忍受的暂停(halt),直到得到所需数据为止。
今日计算机系统装置(device)间共享内存区域的现象使得情况更为复杂。举例而言,主微处理器(primary microprocessor)与通讯微处理器(communications microprocessor)之间的通讯,藉由对一指定内存区域中读取及写入数据以相互联络;另一个常见的例子,便是视频装置(video device)上显示数据予操作员(operator)的视频卡(video card)的微处理器与主微处理器共享一些被称之为视频缓冲器(video buffers)的内存区域。
在共享内存系统中,可能发生来自一个共享区域(region)的数据存在于两个不同微处理器的区域(local)高速缓存中,或是存在于连结到同一个内存总线的不同装置上。若所有装置只是单纯的读取数据,则允许它们将数据常驻于其区域高速缓存结构,并不会造成任何伤害。但是当它们均被允许修改(modify)存在于其区域高速缓存的数据时,即可能造成不可预期的后果。
为防止此情况发生,系统设计者开发了高速缓存一致性协议以标示高速缓存中数据的状态,其中MESI是最普遍使用的协议。依照MESI来维护区域高速缓存可以确保同一数据的两个副本不会在同一时间被修改。MESI共享状态告知区域高速缓存一特定区段的数据是否为共享(shared)状态。如为共享状态,则区域处理器在经由一较慢的内存总线上执行作业取得排他许可(exclusivepermission)之前,不得修改数据。若欲修改数据,处理器需先取得数据的排他所有权。
本发明在此强调的问题是有关于欲将数据写入内存时,所导致发生在应用程序内的延迟。熟悉此领域技术人员将发现高速缓存并无合理的方法以得知何时对一特定内存区域有首次需求,因此当该特定内存区域第一次被加载到区域高速缓存时,总是会引起内存总线延迟。认知此项事实,本发明提供了一可在微处理器上执行的预取指令。然而,预取指令并不能直接在微处理器的指令管线中运作。确切的说,预取指令命令区域高速缓存从内存上加载操作数(operand)到该高速缓存以备未来之用。而且因为高速缓存单元与内存间的运作方式,对一微处理器管线内的指令流程而言,是透明的,因此审慎地在需用数据之前发出预取指令,使得高速缓存可以在需用数据之前,利用与主程序流程(primaryprogram flow)中其它指令的执行平行处理的方式,从内存提取数据。然后当执行至随后的指令(subsequence instruction),并且需要存取已预取的数据时,此数据已经在高速缓存中立即可存取(readily accessible),所以程序的执行不会因为等待从内存提取数据而停滞。已预取的数据在高速缓存中立即可存取是仅指其将要被读取而已。如果此预取的数据会被随后的指令所修改,则程序的执行或许必须延迟以等待高速缓存单元到总线去请求共享数据的排他所有权,而后区域处理器始可改动此数据。
如上所述,今日的运算系统中广泛地运用共享内存区域,以达成各装置间的通讯。其中内存复制是一极为常见的运算,几乎在所有现今的应用中都会遇到。内存复制运算是将一内存位置中的内容复制到另一内存位置。举例而言,一即将为提供显示而传送数据的视频缓冲器,经常是由一些较小的缓冲器(Buffer)所组成。一第一较小的缓冲器为了提供显示而设定其内容,并复制到一第二内存位置,该第二内存假定是监视器显示画面的四个象限之一。在设定该显示象限之后,其内存位置的内容就会被复制到第三内存位置,该位置存放整个监视器显示画面的内容。熟悉此领域技术人员将发现显示缓冲器的数据产生,只是应用程序执行将数据由一内存位置,复制至另一内存位置的许多不同类型工作之一。
内存复制运算看来好象相当直观,但以今日运用阶层式快取架构的微处理器观点而言,这样的运算在实际上有相当的困难。考虑一存在于今日的高速缓存中做为来源(SRC)的第一数据结构,且其已被分配(allocate)并修改,为实现一内存复制运算,后续必需执行的运算为:(一)分配一做为目的地(DEST)的第二数据结构以供复制来源(SRC)中的内容,并确保目的地(DEST)拥有排他所有权,和(二)更改目的地(DEST)中的内容使其与来源(SRC)中的内容相符合。如前所述,若目的地(DEST)之前并未被于快取中分配过,或是目的地(DEST)已被分配,但其内容正被共享中,则为确保目的地(DEST)的排他所有权,应用程序须停滞以配合内存总线进行适当的总线执行作业,而这会是一个问题。
发明内容
因此,需要一装置及方法,使得程序员得以命令微处理器取得一第一高速缓存界线的排他所有权,并由一第二高速缓存界线以平行于后续程序指令执行的方式,将数据复制至该第一高速缓存界线。
此外,亦需要一装置和方法,使得程序员得以命令微处理器将该第一高速缓存界线的数据写回内存中。
本发明为解决其它应用中一些问题,以及公知技术未能妥善处理的部分。本发明提供一较佳的技术,针对将数据由一高速缓存中的高速缓存界线,复制到一高速缓存中的第二高速缓存界线,并与应用程序中的后续指令平行地执行。在一实施例中,有一微处理器装置,该微处理器装置包含转译逻辑与执行逻辑。该转译逻辑将一分配并更名指令(allocate and rename instruction)转译为一微指令序列,以命令微处理器分配一第一高速缓存界线于排他状态,并将一第二高速缓存界线中的内容复制至该第一高速缓存界线。该执行逻辑接收该微指令序列,并对内存总线发布第一高速缓存界线为排他状态的执行作业。在得到排他权的授权后,该执行逻辑将该第二高速缓存界线中的内容复制至该第一高速缓存界线。
一方面而言,本发明提供一种微处理器中针对实现一高速缓存界线更名运算的装置,该装置包含一分配并更名指令与一转译器。该分配并更名指令命令微处理器分配一第一高速缓存界线于排他状态,并将一第二高速缓存界线的内容复制至该第一高速缓存界线。该转译器接收该分配并更名指令,并将该分配并更名指令转译为相对应的微指令,这些相对应的微指令命令微处理器中的执行逻辑对一内存总线发布复数的总线执行作业,以要求该第一总线的排他所有权,且将该第二高速缓存界线中的内容复制至该第一高速缓存界线。
另一方面,本发明提供一种实现一高速缓存界线内存复制运算的方法。该方法包含提取(Retrieving)一分配并更名指令,将该分配并更名指令转译为一微指令序列,此微指令序列是用以命令微处理器分配一第一总线于排他状态,将该第二高速缓存界线中的内容复制至该第一高速缓存界线,并响应这些微指令序列,对一内存总线发布复数的总线执行作业,以要求分配该第一总线于排他状态,且将该第二高速缓存界线中的内容复制至该第一高速缓存界线。
本发明的前述与其它目的、特征及优点,在配合下列说明及附图后,将可获得更好的理解。
附图说明
图1为一方块图,说明现有的微处理器中几个重要的管线阶段(PipelineStage)。
图2为一方块图,描述一高速缓存单元与内存的接口,以于图1中的微处理器实现一预取的运算。
图3A及图3B为一时脉图,说明于图1、图2中的微处理器为实现预取的运算,对内存总线发布执行作业时,两种可能的作业模式。
图4为一方块图,显示根据本发明的一延伸预取指令。
图5为一表格,说明一图4中的延伸预取指令中,一延伸地址指定域的编码方式,该编码是用以命令微处理器预取一高速缓存界线于排他性MESI状态。
图6为一方块图,详述根据本发明,实现一意图进行储存运算的预取的一种微处理器。
图7为一方块图,描述一高速缓存单元与内存的接口,以于图6中的微处理器实现一意图进行储存运算的预取。
图8为一时脉图,说明于图6、图7中的微处理器为实现意图进行储存运算的预取,对内存总线发布执行作业时的情形。
图9为一方块图,显示根据本发明的一延伸区段预取指令。
图10为一方块图,描述一高速缓存单元与内存的接口,以于图6中的微处理器实现一区段预取并储存的运算。
图11为一时脉图,说明于图6、图10中的微处理器为实现区段预取并储存的运算,对内存总线发布执行作业时的情形。
图12为一流程图,说明根据本发明的一方法,用以实现一意图进行储存运算的预取。
图13为一流程图,说明根据本发明的一方法,用以实现一意图进行储存运算的区段预取。
图14为一表格,说明一图4中的延伸预取指令中,一可替代的延伸地址指定域的编码方式,该编码是用以命令微处理器将一高速缓存界线分配并更名。
图15为一方块图,描述一高速缓存单元与内存的接口,以于图6中的微处理器中分配并更名一高速缓存界线。
图16为一流程图,表现根据本发明的一方法,用以分配并更名一高速缓存界线。
图17为一方块图,描述一高速缓存单元与内存的接口,以于图6中的微处理器中分配并更名一高速缓存界线区段。
图18为一流程图,表现根据本发明的一方法,用以分配并更名一高速缓存界线区段。
其中,附图标记说明如下:
100管线化微处理器             101提取阶段
102转译阶段                   103暂存阶段
104寻址阶段                   105执行阶段
106执行逻辑                   107数据高速缓存
108存储器                     109高速缓存总线
110内存总线                   120程序流程
120~123宏指令
200高速缓存单元界面           201微处理器
202宏指令                     210转译器
211微指令                     220高速缓存单元
221记录逻辑                   222数据高速缓存
223停滞信号                   230总线单元
240系统内存总线               241总线组件
242数据存储器
301~302作业指令集
303~304总线作业
400延伸预取宏指令             401前置码
402预取运算码                 403延伸地址指定元
600微处理器                   601提取逻辑
602指令高速缓存               603指令存储器
604指令队列                   606转译逻辑
607延伸转译逻辑               608微指令队列
609执行逻辑                   610延伸高速缓存单元
611数据高速缓存               612延伸记录逻辑
613总线单元                   614数据存储器
615内存总线
700方块图                   701微处理器
702宏指令                   710延伸转译器
711微指令                   720延伸高速缓存单元
721延伸记录逻辑             722数据高速缓存
723停滞讯号                 730总线单元
740总线                     741总线组件
742数据存储器
800时脉图                   801~802总线作业
900延伸区段预取指令         901前置码
902预取运算码               903延伸地址指定元
1000方块图                  1001微处理器
1002宏指令                  1010延伸转译器
1011微指令序列              1012架构缓存器ECX
1013影子计数缓存器          1020延伸高速缓存单元
1021延伸区段记录逻辑        1022数据高速缓存
1023停滞信号                1030总线单元
1040内存总线                1041总线组件
1042数据存储器
1100时脉图                  1101~1102总线作业
1200~1220意图进行储存运算的预取的方法的流程
1300~1328意图进行储存运算的区段预取的方法的流程
1500方块图                  1501微处理器
1502宏指令                  1505架构缓存器EDI
1510延伸转译器              1511微指令
1520延伸高速缓存单元        1521延伸记录逻辑
1522数据高速缓存            1523停滞讯号
1524来源高速缓存界线        1525目的高速缓存界线
1530总线单元                1540总线
1541总线组件                1542数据存储器
1600~1624更名一高速缓存界线的方法的流程
1700方块图                  1701微处理器
1702宏指令                  1705架构缓存器EDI
1710延伸转译器              1711微指令
1712架构缓存器ECX           1713影子计数缓存器
1720延伸高速缓存单元        1721延伸记录逻辑
1722数据高速缓存            1523停滞讯号
1724来源高速缓存界线        1725目的高速缓存界线
1730总线单元                1740总线
1741总线组件                1742数据存储器
1800~1830更名一高速缓存界线区段的方法的流程
具体实施方式
以下的说明,是在一特定实施例及其必要条件的情况下而提供,可使一般熟悉此项技术人员能够利用本发明。然而,各种对该较佳实施例所作的修改,对熟悉此项技术人员而言乃是显而易见,并且,在此所讨论的一般原理,亦可应用至其它实施例。因此,本发明并不限于此处所展出与叙述的特定实施例,而是具有与此处所揭示的原理与新颖特征相符的最大范围。
前文已针对现有的管线化微处理器如何执行预取运算,作了背景技术的讨论,有鉴于此,在图1至图3,将呈现一强调现有预取技术的限制的例子。紧接着,在图4至图18,将呈现本发明的讨论。本发明使得程序员得以命令微处理器分配一第一高速缓存界线于排他性MESI状态,并将一第二高速缓存界线的数据复制至该第一高速缓存界线,从而避免因执行储存指令来进行数据复制,所可能造成的程序延迟。
请参阅图1,其为一方块图,用以说明在今日管线化微处理器100内的重要管线阶段101-105。此微处理器100有一个提取阶段101,一个转译阶段102,一个暂存阶段103,一个寻址阶段104,及一个执行阶段105。
在运算时,该提取阶段101由系统内存的指令区中提取宏指令121-123,以供微处理器100执行。该宏指令121-123接着被送至转译阶段102,该转译阶段102将宏指令121-123转译为相对应的微指令(或称原生指令,图中未显示),以命令微处理器100执行由指令121-123所指定的运算。该微指令同步于管线时脉(图中未显示),通过管线后续阶段103-105,与产品通过一生产线上连续站点的方式类似。接着,将微指令送至缓存器阶段103,若有一特定的微指令于此缓存器阶段指定一存于缓存器中的操作数,则其逻辑电路便会存取缓存器,将该操作数撷取并与该微指令一同前馈至寻址阶段104。该寻址阶段104包含产生地址的逻辑电路,藉以用来存取储存在数据存储器108中的操作数。如同于缓存器阶段103一般,该寻址阶段104将产生的地址与其相关的微指令前馈至执行阶段105。
该执行阶段105实现由该微指令所指定的运算,在现今的微处理器100中,运算的型态会因指令集架构而不同,但是熟悉此领域技术人员将发现这些运算一般可以分为几个类别,例如逻辑运算、算数运算、和内存存取运算(也就是数据读取运算和数据写入运算)。上述这些运算所产生的结果,若不是于缓存器阶段103将数据存回缓存器,就是将数据写入数据存储器108中的位置。
熟悉此领域技术人员将发现现有的管线化微处理器100可能包含比图1所示101-105外更多的阶段,因为藉分割管线中的主要工作以增加一管线中的阶段数目,已被证明可增加管线对指令121-123的吞吐量。然而,为简明起见,图1中所示一现今微处理器100的管线阶段101-105,表示其主要的功能分组,已足以详细说明公知技术的短处,而令读者不受较无关的细节干扰。
值得注意的是,现今的微处理器100在执行阶段105中提供一数据高速缓存107及一执行逻辑106,该数据高速缓存107以与执行指令的管线阶段101-105平行的方式运作,以确保当一数据存取的微指令(也就是读取内存微指令或储存内存微指令)前进到执行阶段105时,应用程序的指令121-123所需存取的数据,有很高的机率已存在高速缓存107,该执行逻辑106能以一、两个管线时脉速度执行数据存取,而不必因等待经由内存总线110于数据存储器108执行数据存取,面临可能是数百个时脉的程序延迟。在一有效率的高速缓存系统架构中,数据的加载和储存运算主要经由一高速缓存总线,发生于执行逻辑106与数据高速缓存107之间,且数据高速缓存是以一种对于走过管线阶段101-105的微指令而言为透明的方式运作,以确保高速缓存中备份的数据项,能保持与系统内存108的同步和一致。
在一共享内存108区域的系统架构中,该普遍使用以确保高速缓存内容的一致性的协议,就是众所周知的MESI(MESI是下列文字的缩写:Modified-修改、Exclusive-排他、Shared-共享、及Invalid-无效)。虽然图1中并未提及,然于一计算系统架构中,因运算同一份数据的目的,其它的装置(图中未显示)亦可能共享某一区域的内存108。举例而言,一视频卡可能与微处理器100共享内存108中的一区域,以存取由微处理器100产出的监视器显示数据。在另一个例子中,多个系统总线110上的装置,可能借着对内存108上的共享区域写入一数据或读取一数据彼此联络。架构性研究的详细叙述以提供使用MESI协议的动机并不在本发明的应用领域;此处只需了解MESI如同标准高速缓存管理协议般,在确定系统内存108与区域(local)高速缓存结构107之间数据的一致性的领域中普遍应用。
因内存总线110上的作业需要花上数百个时脉,所以数据是自数据高速缓存107来回传递,该数据高速缓存包含数个区段,每区段由数个字节所组成,这些区段又称为高速缓存界线。虽然高速缓存界线的宽度(也就是高速缓存界线的大小,以字节为单位)因架构而有所不同,然而,系统架构中使用32字节线宽、或64字节线宽、或128字节线宽,于今日而言并不少见。
即便是最有效率的高速缓存结构107,也必会遇到因初始时将数据自内存108,经由内存总线110转移至高速缓存107时所造成的延迟,不过,一旦一高速缓存界线已被提供给该高速缓存107,接着在对高速缓存界线中的数据项进行存取时,便不至于有明显的延迟,因为高速缓存107与高速缓存总线109能以与其它微处理器109内的逻辑(例如执行逻辑106)执行速度相当的速度运作。
根据MESI,一区域数据高速缓存107中的高速缓存界线可能在下列四种状态之一:修改、排他、共享、和无效。一修改状态的高速缓存界线是指已执行过区域储存运算,但尚未与主存储器108同步(即写回主存储器)。一区域高速缓存107需负责监视其它装置(也被称作总线组件,Bus Agent)于内存总线110上的存储器操作,以便于当他们要求一位于更新的高速缓存界线上的数据,该区域高速缓存107可提供更新过的数据给发出要求的总线组件。这样的监测被称做总线窥视模式(Bus Snooping)。
一排他状态的高速缓存界线是指区域高速缓存107得以进行储存运算,该排他状态意味着区域高速缓存107拥有该高速缓存界线的排他所有权,而微处理器100也被允许更改其中的内容。
一共享状态的高速缓存界线是指存在于总线110上,二或多个装置的区域高速缓存107中的高速缓存界线,因此,每一个装置可以自共享的高速缓存界线读取数据,但都不被允许对其内容进行改动,若要改动共享高速缓存界线上数据(即进行一储存运算),一装置100需在改动其内容前,于内存总线与其它总线组件上进行适当的操作,以取得该高速缓存界线的排他所有权。一旦取得该高速缓存界线的排他所有权,接着便可以执行储存运算,然后该高速缓存界线的状态就会改为修改状态。于公告(Post)储存运算前,需先索取一高速缓存界线的排他所有权,如此可借着同一时间中只有一装置100有权更改高速缓存界线的内容,以保证数据的一致性。
当该区域高速缓存107监测(或窥视)到于内存总线上有一写入作业,或是总线110上其它的装置进行一总线作业,以取得该高速缓存界线的排他所有权,则该高速缓存界线的状态会被更新为无效状态。使一高速缓存界线无效指出其中的数据不能被读取或写入,因为此时期数据很有可能已经失去了与内存108的一致性。
为妥善利用数据高速缓存107运算与微处理器管线的指令流程平行,设计人员已提供一预取指令122,使程序员得以命令微处理器100将所需数据于一程序流程120存取前,加载至一高速缓存107,以克服直接于程序流程120执行一加载指令,才由内存108抓取数据至该高速缓存107,所会造成的延迟。一般于程序流程120中提供一预取宏指令122,于执行指令同时,命令区域数据高速缓存平行地自内存108加载一高速缓存界线,使得在程序流程120中,该高速缓存界线能适时地存在于高速缓存107中,使一指令123能自该高速缓存界线存取数据。在图1的例子中,一预取指令122-PREFETCHTO[EAX]-命令将一由缓存器EAX所寻址的高速缓存界线加载高速缓存107中,如此其内容将可供后续于程序流程120中所执行的数据存取指令123-MOV EBX,[EAX]-所用,以命令微处理器100自缓存器EAX中所记载的地址读取数据,并将之移动至缓存器EBX。为了简明起见,因x86指令集已相当广泛地为人所知,故我们以x86指令集架构来描述在程序流程中该预取指令122和移动指令123。然而,熟悉此领域技术人员将发现,还有其它许多不同的指令集架构提供预取指令122,以命令微处理器100自内存108中读取一高速缓存界线并加载至一区域数据高速缓存107,如此一随后的指令123,要求自该高速缓存界线进行数据读取运算时,便不会遭受延迟。若是将预取指令122审慎小心地至于程序流程120之中,该指令便能有效地解决有关于数据高速缓存中初始存取数据所造成的延迟,并且能实在地增加程序执行速度。当内存总线110上的预取操作完成时,该被要求的高速缓存界线便会以排他状态(若区域高速缓存107拥有该高速缓存界线唯一的一份副本)或是共享状态(若其它装置亦拥有该要求的高速缓存界线的快取副本)存在于高速缓存107之中。在上述二状态中的任一状态时,该高速缓存界线中的数据项都可为立即读取存取动作所用,然而如上所述,必须有排他所有权才能将数据写入一高速缓存界线(也就是执行一储存运算),因而,若预取的结果使该高速缓存界线以排他状态分配,则一待决的储存动作便可立刻公告给该高速缓存界线。但是若总线110提供该高速缓存界线的是共享状态,则一待决的储存动作便必须被停滞,使高速缓存单元107能于此时对总线110发布一执行作业,以获取该高速缓存界线完整的排他所有权,而在该高速缓存界线被以排他状态提供给高速缓存107后,该待决的储存作业方能被公告出去。
现请参阅图2,其为一方块图200,说明一高速缓存单元与内存的接口,用以于如图1所示的微处理器中实现一预取运算。该方块图200显示微处理器201中用以实现该预取运算的逻辑,该微处理器201包含一转译器210,用以接收一连串的指令202,并转译该宏指令202成为相对应的微指令211。该微指令211接着被提供给一高速缓存单元220,以指示自内存242读取数据运算和储存数据运算。该高速缓存单元220包含一记录逻辑(Fill Logic)221和一数据高速缓存222,该记录逻辑221耦接至总线单元230,该总线单元230则担当该数据存储器242与其它相连接的总线组件间的接口。
一范例流程宏指令202用来说明如何指定一预取运算,和如何利用预取的数据来进行后续的读取及储存运算处理。桌上型计算机中一关于此运算序列的常见范例,为读取并累加一内存中的计数器。一连串的预取、读取、和储存的运算,需要在一高速缓存界线中处理一数据读取和一连续的数据修改。因此,一第一宏指令202-PREFETCH[EAX]-在范例流程中命令微处理器20 1根据缓存器EAX内容中所记录的地址,预取一高速缓存界线。第二宏指令202-MOV EBX,[EAX]-命令微处理器201自缓存器EAX中所记载的地址读取数据,并将其内容写入至缓存器EBX。第三宏指令202-INC EBX-命令微处理器201将缓存器EBX的内容累加。第四宏指令202-MOV[EAX],EBX-命令微处理器201将缓存器EBX中的内容,储存至对应于缓存器EAX内容中所记载的内存位置。上述的预取、读取、和储存运算的细节,只是根据EAX所提供的地址累加一数值至内存中。需注意为有效率地安排预取指令202,该指令需有效地在第二宏指令202-MOV EBX,[EAX]-之前被提供,如此因加载EAX内容中要求的高速缓存界线所造成的延迟,便可以于平行执行介于此二指令中间的指令202时吸收,然而为了简明起见,方块图200中并未对该介于中间的指令加以描述。
该转译器210将预取宏指令202转译为一相对应的微指令211-PREFETCH[EAX]-并提供给高速缓存单元220。该纪录逻辑221询问数据高速缓存222以判断是否所要求的高速缓存界线已经存在于数据高速缓存222中且有效(即不为无效状态)。若否,则纪录逻辑221命令总线单元230对系统内存总线240公告动作,以自内存242获取所要求的高速缓存界线。此时若无其它的总线组件拥有该要求高速缓存界线的副本,则纪录逻辑211提供该要求的高速缓存界线于排他状态给数据高速缓存222。若同时有一或多个总线组件有该要求高速缓存界线的区域副本,则该纪录逻辑221将该高速缓存界线以共享方式写入高速缓存222。无论是上述何种状态,该要求的高速缓存界线已存在于高速缓存222并可供后续存取运算之用。
该转译器210将该第二宏指令202转译为一加载微指令211-LD EBX,[EAX]-,命令微处理器依缓存器EAX内容中所记录的内存地址,将其内容加载缓存器EBX。如先前于图1中所讨论,微处理器201中的执行逻辑(此处未显示)从高速缓存单元220中要求该内存地址所包含的内容,因为预取运算的结果,包含这些内容的高速缓存界线已经存在于数据高速缓存222中,该内容可即刻被使用,而该加载微指令211也可以不受延迟地执行。
第三宏指令202被转译为一相对应的累加微指令211-INC EBX-,命令执行逻辑将缓存器EBX中的内容累加。此时既无新数据的要求,故不需提供加载微指令211给高速缓存单元220。
最后,在流程中的第四个宏指令202被转译成一储存微指令211-ST[EAX],EBX-,此指令命令执行逻辑去执行一数据储存运算,依缓存器EAX内容所指定的地址,将缓存器EBX的内容写入该内存位置。该储存微指令211从而以待决的储存运算型式被送到其高速缓存单元220。因此,记录逻辑221监测到以待决的储存运算为目标的高速缓存界线存在于该数据高速缓存222。若该高速缓存界线是处于排他状态,则此待决的储存可立刻被公告并将该高速缓存界线的状态变更为修改状态。另一方面,若该高速缓存界线是处于共享状态,则该高速缓存单元220宣告一停滞讯号223以暂停该微指令211在微处理器201的管线阶段中的进行,同时该执行逻辑221则命令其总线单元230,经由其内存总线240,执行作业以取得该高速缓存界线的排他所有权。一旦取得排他所有权,即允许待决的储存对该高速缓存界线公告其数据,并且终止停滞讯号,从而继续程序的执行。
现在考虑一种运算形式,不需先读取数据而只是单纯的写入数据到内存中,或是一种运算型式是会先读取数据,但是此型式确定预期随后会公告一储存运算。在这些案例中,只有对那些须先读取数据的案例执行预先的预取指令是确定可以将程序延迟减到最小。并且在这种案例中,若预取的结果使所要求的高速缓存界线处于排他状态,则可排除因储存运算所导致的程序延迟。但是若预取的结果使所要求的高速缓存界线处于共享状态,则因储存运算所导致的程序延迟将不可避免。这问题是因为今日的指令集架构并未提供一方法以命令微处理器201去排他地预取一高速缓存界线到数据高速缓存222。虽然响应一预取运算的高速缓存界线可以是排他的,但是并不能保证每次响应都为此状态。这是因为预取宏指令202于架构上推定其预取的数据是会被读取,而造成不论其结果是否处于共享状态,都会提取由系统总线240的作业所要求的该高速缓存界线。举例来说,在x86架构中,一x86预取指令的执行结果便是经由总线240发出一数据读取运算作业。该数据读取运算要求一高速缓存界线的副本,并不管其是处于何种状态。
现请参阅图3,其显示一时脉图,用以描述由图1及图2所示的微处理器201所发出的301、302两个可能的总线作业模式,此总线作业是经由内存总线240发出以执行一预取与随后的储存运算。此二作业模式301,302包括在微处理器201内的从总线单元230到内存总线240的请求作业303,与同样在微处理器201内从内存总线240回到总线单元230的响应作业304。作业模式301描述那些当响应一预取运算的高速缓存界线是排他状态时所执行的作业303-304。作业模式302描述那些当响应一预取运算的高速缓存界线是MESI共享状态时所执行的作业303-304。如同图2所述,当执行一预取指令时,记录逻辑221命令其总线单元230对其内存总线240发出一数据读取请求303-DATA READ[EAX]-,要求由缓存器EAX所指定的高速缓存界线被送到其区域高速缓存222。该数据读取请求303在作业模式301是于时间点A发出,在作业模式302则是于时间点D发出。该内存总线240于是对包括该所要求的高速缓存界线的总线单元230,发出数据响应304。若该高速缓存界线是在排他状态,则在作业模式301的数据响应304-DATA RESP[EAX].E-,在时间点B被送回到总线单元230。若该高速缓存界线是在共享状态,则在作业模式302的数据响应304-DATA RESP[EAX].S-,在时间点E被送回到总线单元230。在这时,数据可从高速缓存222读取而不会导致总线作业延迟。
当一随后的储存运算面对该上述作业提供的高速缓存界线时,作业模式302的剧本说明为了能公告该储存运算所必然发生的作业303、304。在作业模式301中,因为高速缓存界线起始即是排他状态,欲公告该储存运算只须在时间点C发出一数据写入作业303-DATA WRITE[EAX]-,经由总线240将数据写入到内存242。但是如作业模式302所示,在时间点H的数据写入作业303可以被发出之前,必须先执行时间点F及G的作业303及304,以便能将高速缓存界线的所有权状态由共享提升到排他。在时间点F,总线单元230发出一数据读取与无效请求303-DATA READ/INV[EAX]-,用以要求该共享状态高速缓存界线的排他所有权。在数百时脉之后的时间点G,从总线240接收到一响应请求304-DATA RESP[EAX].E-,以将该高速缓存界线的状态升级到排他状态。在时间点G接收到响应请求304之后,接着在时间点H始可对总线240公告该数据写入作业303。
值得注意的是图3中的作业模式301、302是以一般性的方式表示,因为不同的微处理器架构应用不同的语义来说明总线作业303、304。除此之外,值得注意为了简明起见,在图3的时脉图中已经省略了先取得对数据总线240存取(例如BUS REQUEST,BUS GRANT等等)的所有的作业。
本发明观察到现有的数据预取指令受限于其并不支持确定预期的储存运算,因此,不论对该高速缓存界线内容的读取是否先于对该高速缓存界线公告一储存运算,无法因为明确意图进行对该高速缓存界线执行一储存运算而有利的预取一高速缓存界线到高速缓存222-一意图进行储存运算的预取-。若细查作业模式302中的作业303、304,很明显的只有在该高速缓存界线的读取会早于对其公告一储存运算的情况下,预取一处于共享状态的高速缓存界线才有帮助。若是一储存运算将对该共享的高速缓存界线公告,则程序的执行必须被延迟以便将该高速缓存界线的状态从共享提升到排他。
程序员虽然了解现有预取指令的限制,然而仍应用它们为作意图进行储存情况下的预取,因为此预取指令可能(即使并非时常)于响应一数据读取请求时,仅只于无其它总线组件拥有该要求的高速缓存界线的副本,可取得一高速缓存界线的排他所有权。然而,更理想的情况则是避免预取一处于共享状态的高速缓存界线,而是命令一微处理器201去预取一处于排他状态的高速缓存界线。本发明是指向一种装置与方法,用以预取一第一高速缓存界线的排他所有权、将数据由一第二高速缓存界线复制至该第一高速缓存界线、以及选择性地将第二高速缓存界线中的数据写回内存,从而释放高速缓存中的资源。本发明现将参照图4至图18进行讨论。
请参阅图4,其是一方块图,显示依据本发明的一延伸预取指令400。该延伸预取指令包括一选用的多重前置码实体401,其后为一预取运算码402,再其后则为一延伸地址指定元403。在一具体实施例中,每一个前置码及延伸地址实体401、403都是8位大小,而预取运算码实体402则为一或二个字节大小,除非本文中另有修订,所有的实体401-403均与x86的指令集架构一致。
在运作上,该预取运算码402为一特定的运算码数值,用以命令一相符的微处理器执行一预取运算。在一x86的具体实施例中,其运算码实体401的特定数值为0F18H。一个或数个选用的前置码实体401可用来命令一相符的微处理器执行某些类型的附加运算,例如由一计数器界定次数的重复运算(例如在x86架构中的REP前置码),强迫执行一不可分割运算(例如在x86架构中的LOCK前置码)等等。延伸地址指定元403是用以指定该特定类型的预取运算的执行。在一x86的具体实施例中,所熟知的延伸地址指定元403是ModR/M字节403。
依据本发明,当微处理器监测到一预取宏指令400时,该微处理器被命令依照由延伸地址指定元403内容所指定的指示数值,去执行从内存预取数据到高速缓存,其范例将在图5中进行讨论。
图5是一表格500,其为图4的延伸预取指令内的延伸地址指定元字段403的一具体实施例,解说依据本发明该延伸地址指定元字段403如何编码以命令微处理器执行预取一处于排他MESI状态的高速缓存界线。为了说明本发明起见,此处使用符合x86架构的ModR/M位字段,然而,可以预期的是本发明包含任何提供将一预取-排他指示编码到指令400的机制的架构。虽然图5的例子指向将预取-排他(或是意图进行储存的预取)指示编码到一延伸地址指定元403,熟悉此项技术人员将发现该预取指示也可以被编码成一在运算码字段401内的一指定运算码数值。
在此编码范例中,一x86 ModR/M字节使用该ModR/M字节的5:3位对一由预取运算码401所指定型式的预取运算进行编码。今日,该x86预取指令使用数值000,001,010,及011以规定意图进行读取运算的预取指示。所有这四个数值000-011为命令一x86微处理器,在不同程度的接近度下,预取数据到其高速缓存。举例来说,一个T0指示(即数值001),命令微处理器预取一高速缓存界线到高速缓存阶层体系的所有层级,而一NTA指示命令微处理器预取一高速缓存界线到一非暂时性高速缓存结构,并且进入一接近处理器的位置,同时将高速缓存污染(cache pollution)减至最低程度。但是x86预取指示000-011编码的普遍特征是一经由总线出的数据读取请求以要求一高速缓存界线的副本,而不在乎该高速缓存界线是处于何种MESI状态。本发明的一具体实施例将一额外的指示加以编码至延伸地址指定元中,用以命令微处理器依据本发明利用一排他(.S)指示去预取一指定的高速缓存界线。图5显示一用x86ModR/M字节的5:3位编码成数值100的预取-排他指示。当该prefetch.s指示依据本发明编码到一预取指令时,则一相符的微处理器会被命令对一内存总线发出作业以预取处于排他MESI状态的数据。在一x86的具体实施例中,如前述图3B所示,其响应于预取指令400的prefetch.s指示而发出的特定作业是一数据读取与无效作业。在图3B的例子中,该数据读取与无效作业是用以将高速缓存界线从共享状态提升至排他状态。
在x86指令集架构中,数值100的5:3位编码在此之前是被宣告为非法的,同表格500中所示数值101-111的5:3位编码亦同。一非法的ModR/M字节编码会造成一例外处理(exception)。但是依据本发明,在一x86的具体实施例中,该改善一预取-排他指示的额外编码是合法的,并且将令前述的总线作业预取一处于排他状态的高速缓存界线。
众人皆知因为高速缓存结构与内存间的互动是不存在于微处理器管线的指令流程中,所以预取指令400只能依据所提供的指示要求执行预取。若一高速缓存现在并不被内存存取所占用时,则可执行预取运算。但若一高速缓存正被占用,则预取运算须被延迟。
现请参阅图6,其是一方块图,详述依据本发明的执行一意图进行储存运算的预取的微处理器600。该微处理器600有三个值得注意的阶段范畴:提取,转译,及执行。在提取阶段的提取逻辑601是用以从一指令内存603中提取宏指令到一指令高速缓存602。该被提取的宏指令然后经由一指令队列604被送到转译阶段。该转译阶段的转译逻辑606是耦接至一微指令队列608。该转译逻辑606包括延伸转译逻辑607。执行阶段的执行逻辑609包括一延伸高速缓存单元610。该延伸高速缓存单元610有一数据高速缓存611,此数据高速缓存611是耦接至延伸记录逻辑612。该延伸记录逻辑612是耦接至一总线单元613。该总线单元613是耦接至一数据存储器614。
在运作上,提取逻辑601从指令内存603中提取依据本发明格式化的指令到指令高速缓存602,然后将此宏指令依执行顺序送到指令队列604。该宏指令被从指令队列604依序的提取后,被送到转译逻辑606。该转译逻辑606将每一送到此处的宏指令转译成对应的微指令序列,该微指令序列是用以命令微处理器600执行由该宏指令所指定的运算。延伸转译逻辑607则监测依据本发明的延伸预取宏指令,并且为将其转译成对应的延伸前置码及地址指定元实体作准备。在一x86的具体实施例中,该延伸转译逻辑607被组态成监测一x86预取指令,并且依据图4及图5所述的规则将该x86预取指令的ModR/M字节转译成一预取微指令序列,该序列是用以命令微处理器600去排他地预取一高速缓存界线到数据高速缓存611。
该微指令然后从微指令队列608传送到其执行逻辑609,在该执行逻辑中的延伸高速缓存单元610则依据本发明被组态为执行一排他的预取运算。当该执行逻辑609执行一预取微指令序列时,其延伸记录逻辑612命令总线单元613,经由内存总线605,发布执行作业到内存614,以要求在排他的MESI状态下预取一指定的高速缓存界线到数据高速缓存611内。
熟悉此项技术人员将发现图6所描述的微处理器600只是一个依据本发明所简化之后的一管线化微处理器600的代表。事实上,如前所述,今日的管线化微处理器包含许多管线阶段,然而这些阶段均可被概括的归纳成如图6的方块图所示的三个阶段群组,因此图6的方块图可视为实现上述本发明的具体化所需的必要成分的说明。为了简明起见,凡微处理器600中无关于本发明的成分均不在此描述。
请参阅图7,其为一方块图700,用以描述在图6的微处理器内执行一预取与储存运算的一界面至内存的高速缓存单元。该方块图700显示在微处理器600内被应用为执行预取运算的逻辑。微处理器701的延伸转译器710接收一连串的宏指令702,并将该宏指令702转译成对应的微指令711。微指令711在命令对内存742做数据加载与储存运算之后,随后即被送到一延伸高速缓存单元720。该延伸高速缓存单元720包括延伸记录逻辑721及一数据高速缓存722。该延伸记录逻辑721是耦接至一总线单元730。该总线单元730是界面至一系统内存总线740,此系统内存总线740又与数据存储器742及其它总线组件741耦接。
宏指令的示范流程702说明如何指定一预取指令,及如何可在此预取的数据上执行随后的读取与储存运算。如同图2的叙述,一有关于此运算序列的桌上型计算机的常见范例是内存内计数器的读取及增加。但是与图1及图2的微处理器201不同的是,当依据本发明的一微处理器701被命令去排他的预取一高速缓存界线时,不论此预取的数据是否会被中介的指令读取,均可有效率的消除会关连到随后的储存运算的总线作业延迟。在图7的宏指令的示范流程702中预期一数据读取运算发生早于在预取的数据上执行一储存运算,但是熟悉此项技术人员将发现,没有此一中介的数据读取运算,数据也可以被排他的预取且随后的被写入。
因此,示范流程的一延伸预取指令702-PREFETCH.S[EAX]-命令微处理器701去排他的预取其地址对应于缓存器EAX内容的高速缓存界线。第二个宏指令702-MOV EBX,[EAX]-命令微处理器701去读取一地址为缓存器EAX所指定的内存位置的内容,并将该内容写入缓存器EBX。第三个宏指令-INC EBX-命令微处理器701增加缓存器EBX的内容。第四个宏指令-MOVEAX,[EBX]-命令微处理器701在对应于缓存器EAX内容的内存位置上储存缓存器EBX的内容。值得注意的是为了要有效率的利用排他预取指令702-PREFETCH.S[EAX]-,必须在第二个宏指令702-MOV EBX,[EAX]-之前充分执行排他预取指令702,使得因为加载由EAX的内容所指定的高速缓存界线所造成的延迟,可以被中介的宏指令702的平行执行所吸收。但是,为了简明起见,该中介的宏指令202的执行并未在方块图700中叙述。
转译器710将该延伸预取宏指令702转译成对应的排他预取微指令711-PREFETCH.S[EAX]-,然将此微指令送到延伸高速缓存单元720。该延伸记录逻辑721询问数据高速缓存722以决定所要求的高速缓存界线是否已存在并且有效(即非处于无效状态)于其数据高速缓存722内。若答案为否,则该延伸记录逻辑721命令总线单元730,经由系统内存总线740,发出作业以从内存742取得该所要求的高速缓存界线于MESI排他状态。若其它的总线组件741均无该所要求的高速缓存界线的副本,则延伸记录逻辑721即将所要求的高速缓存界线以排他状态送到其数据高速缓存722。若有一总线组件741拥有该要求的处于排他状态的高速缓存界线的区域副本时,则依照所应用的特定总线作业协议,此协议窥视在总线740上的作业以请求该高速缓存界线并将其区域副本变更成无效。若该区域副本已被修改,则其总线组件将修改的数据写入到其总线740,使得微处理器701可以取得该高速缓存界线的排他所有权。若有数个总线组件共享此高速缓存界线,则这些总线组件均将其区域副本变更成无效,使得该高速缓存界线可以在排他状态下被送到微处理器701。在上述任一情况,该所要求的高速缓存界线均可在排他状态下被送到高速缓存722,并且可被随后的储存运算所使用。
转译器710将第二个宏指令702转译成一加载微指令711-LDEBX,[EAX]-,此微指令是命令微处理器加载地址为缓存器EAX所指定的内存的内容到缓存器EBX。因为意图进行储存运算的预取的结果,该高速缓存界线所有的内容已经存在于该数据高速缓存722中,所以该高速缓存界线立即可用,并且使得该加载微指令711的执行无任何延迟。
第三个宏指令702被转译成一对应的增加微指令271-INC EBX-,此指令是命令执行逻辑将缓存器EBX的内容增加。因为不需要新的数据,所以该加载微指令711不会被送到其延伸高速缓存单元720。
最后,在流程中的第四个宏指令702被转译成一储存微指令711-ST[EAX],EBX-,此指令命令执行逻辑去执行一数据储存运算,以将缓存器EBX的内容写入到地址由缓存器EAX内容所指定的内存位置。该储存微指令711从而以待决的储存运算型式被送到其高速缓存单元720。于是,记录逻辑721监测到以待决的储存运算为目标的高速缓存界线存在于其数据高速缓存722,并且由于排他的预取的结果,该高速缓存界线是处于排他状态,于是该储存可不被延迟的立刻被公告。与图2的微处理器201不同的是,依据本发明的延伸高速缓存单元720不需宣告一停滞讯号723以公告该待决的储存,因为该目标高速缓存界线已被排他地预取。
现请参阅图8,其显示一时脉图800,用以描述依据本发明由图6及图7所示的微处理器所发出的总线作业模式801、802,此总线作业是经由内存总线740以执行意图进行预取的储存运算。此二作业模式801、802包括在微处理器701内的从总线单元730到内存总线740的请求作业801,与同样在微处理器701内的从内存总线740回到总线单元730的响应作业802。时脉图800是描述当一被要求且处于排他状态的高速缓存界线,为依据本发明的预取-排他宏指令所指定的意图进行储存运算的预取的响应时,所执行的作业模式801、802。根据上面的叙述,当执行一预取-排他指令时,延伸记录逻辑721命令其总线单元730对其内存总线740发出一数据读取与无效请求801-DATA READ/INV[EAX]-,要求将被缓存器EAX所指定的高速缓存界线以排他的MESI状态送到其区域高速缓存722。该数据读取与无效请求801是于时间点A发出。若所要求的高速缓存界线是处于排他的MESI状态,则在时间点B,该内存总线740响应发出数据响应请求802-DATA RESP[EAX].E-回到总线单元230。在这时,一储存运算的数据可从该高速缓存222读取或写入到该高速缓存222,而不会导致总线作业延迟。
同图3所示,图8中的作业集801,802是以一般性的方式表示,因为不同的微处理器架构应用不同的语义来说明总线作业801,802。图8中描述的作业集801,802大体上依照x86的惯例,但此描述只是意图进行说明本发明。此惯例并不会限定本发明只适用于此特定指令集架构。除此之外,值得注意的是,为了简明起见,在时脉图800中已经省略了为先取得对数据总线740的存取(例如BUS REQUEST,BUS GRANT等等)的所有的作业。
本发明不只是考虑排他的预取一单一高速缓存界线,同时也包含需修改一个区段的数据的情况。因此,图9至图11将具体指向排他的预取一个区段的数据的讨论。
请参阅图9,其为依据本发明用以显示一延伸区段预取指令900的方块图。该延伸区段预取指令900包括一选用的多重前置码实体901,其一为一重复前置码901。该前置码实体901之后为一预取运算码902,其后则为一延伸地址指定元903。在一具体实施例中,每一个前置码及延伸地址实体901、903都是8位大小,而预取运算码实体902则为一或二个字节大小,除非本文中另有修订,所有的实体901-903均与x86的指令集架构一致。在此具体实施例中,该x86的重复前置码(REP)901被用来标示一区段预取运算。
在运作上,该预取运算码902为一特定运算码数值,此特定运算码数值是用以命令一相符的微处理器执行一预取运算。在一x86的具体实施例中,运算码实体901的特定数值为0F18H。延伸地址指定元903是用以指定执行该特定类型的预取运算的执行。在一x86的具体实施例中,该延伸地址指定元903是ModR/M字节903。
同图4所示,依据本发明,当微处理器监测到一预取宏指令900时,该微处理器被命令依据由延伸地址指定元403内容所指定的指示(hint)数值,去执行从内存预取数据到高速缓存。图5的编码范例也适用于描述在区段延伸地址指定元903的前置码指示的编码。但是若微处理器在该延伸预取指令内监测到一重复前置码901,则微处理器会试图预取一指定数量在排他状态下的高速缓存界线到其区域高速缓存内,而此高速缓存界线的数量是由微处理器内的一架构缓存器指定。在一具体实施例中,高速缓存界线的数量是由x86兼容的微处理器内的缓存器ECX所指定。
请参阅图10,其为一方块图1000,用以描述在图6的微处理器600内执行区段预取与储存运算的一界面至内存的高速缓存单元。图10的微处理器1001内的组件的认证与运算类似于图7的微处理器701内的相似组件,只要将图7的百位数图号7用10来取代即可。为依据本发明以改进此区段预取运算,本发明使用一延伸转译器1010将有一重复前置码1002的延伸预取运算转译成微指令序列1011,用以命令执行一排他区段预取运算。除此之外,亦使用一影子计数缓存器1013以加载自架构缓存器内的1012被预取的高速缓存界线的数量计数。并且使用延伸区段记录逻辑(extended block fill logic)1021以命令其总线单元1030要求排他地预取该指定区段的高速缓存界线,并将之送到其数据高速缓存1022。
为初始一排他的区段预取运算,第一个宏指令1002-MOVECX,COUNT-是用以将架构缓存器ECX内被排他的预取的区段内的高速缓存界线的数量计数初始化。延伸转译器1010将该第一个宏指令转译成加载微指令1011-LD ECX,COUNT-,此微指令命令微处理器将计数(count)加载ECX。当该计数被加载到ECX后,此计数亦被透明地复制到影子计数缓存器1013-SHECX-。同时,其它的指令1002则可在不干扰到预取运算的计数的情况下,修改其架构缓存器1012。
在计数被初始化之后,该延伸转译器1010转译一延伸区段预取指令1002-REP.PREF.S[EAX]-,此指令命令微处理器1001预取被ECX所指定数量的排他状态的高速缓存界线到其区域高速缓存,而该被预取的第一个高速缓存界线的地址是由缓存器EAX所指定。响应一命令该排他预取运算的微指令序列1011,该延伸区段记录逻辑1021命令其总线单元1030经由其内存总线1040发出总线要求以要求该地址是由缓存器EAX所指定的处于排他状态的高速缓存界线。该记录逻辑1021在接收到这些高速缓存界线后,即将之配置到其数据高速缓存1022。一旦以排他状态进入到该高速缓存,任一或是全部的被预取的高速缓存界线均可被修改而不会造成额外的延迟。
现请参阅图11,其显示一时脉图1100,用以描述依据本发明由图6及图10所示的微处理器1001所发出的总线作业模式1101、1102,此总线作业是经由内存总线1040以执行区段预取与储存运算。为解说方便起见,图11范例的系统组态使用32字节高速缓存界线。但是,熟悉此领域技术人员将从下述的例证中发现本发明的应用包括所有可预期的系统组态的高速缓存界线行宽。此二作业模式1101、1102包括在微处理器1001内的从总线单元1030到内存总线1040的请求作业1101,与同样在微处理器1001内的从内存总线1040回到总线单元1030的响应作业。时脉图1000是描述当一被要求且处于排他状态的一区段的高速缓存界线,是为依据本发明的包括一重复前置码的预取-排他宏指令指定的意图进行储存运算的一区段预取的响应时,所执行的作业模式11001、1002。根据上面的叙述,当执行一区段预取-排他指令时,该延伸记录逻辑1021命令其总线单元1030发出一多重的数据读取与无效请求1101,此请求并且对应于架构缓存器内所指定数量的高速缓存界线。该多重的请求包括该高速缓存界线区段内的所有高速缓存界线的地址,其地址为架构缓存器EAX的内容所起始指定。虽然该总线请求1101使用递增的地址次序,值得注意的是本发明亦包括递减的排序、随机的排序、及参差的排序,以符合不同的内存总线协议的规范。第一个数据读取与无效请求1101是在时间点A发出,第二个请求1101是在时间点B发出,以此类推,直到最后的请求在时间点D发出。在许多种架构中,总线请求1102是被标记的,以致于该请求开始于时间点C早于其最后的请求的完成。在时间点C,至少有在该区段内的一高速缓存界线是可被一待决的储存所使用。但是,为确保将延迟减到最小,最好是将该区段的高速缓存界线的储存运算推延至时间点E,此时所有的响应1102均已到达且处于排他状态。
该内存总线1040于是在时间点B对总线单元1030发出数据响应802-DATA RESP[EAX].E-,以提供该所要求处于排他状态的高速缓存界线。此时,一储存运算的数据可从其高速缓存1022中读取或写入,而不会导致总线作业延迟。如图8中所讨论,一后续的写入指令1101-DATA WRITE[EAX]-,因已取得区段高速缓存界线的排他状态,而不得不被延迟地以后续的储存运算方式被执行。
现请参阅图12,其为描述依据本发明执行一意图进行储存运算的预取方法的流程图1200。
流程开始于方块1202,在此处,依据本发明,一连串的宏指令被送到一指令队列。流程接着进行到方块1204。
于方块1204中,一个随后的宏指令被从该指令队列中提取,并将之送到一延伸转译器。流程接着进行到判断方块1206。
于判断方块1206中,将进行一项检查用以判断该随后的宏指令是否为一延伸预取指令。若答案为是,则流程进行到方块1208。若答案为否,则流程进行到方块1210。
于方块1208中,一被侦测到的延伸预取指令被转译成一意图进行储存运算的预取的微指令序列,此微指令序列是用以命令微处理器去预取处于排他状态的一指定的高速缓存界线。流程接着进行到方块1212。
于方块1210中,该宏指令被转译成一对应的微指令序列,此微指令序列是用以命令微处理器去执行一指定的运算。流程接着进行到方块1212。
于方块1212中,一个随后的微指令序列被送到微处理器内的执行逻辑。流程接着进行到判断方块1214。
于判断方块1214中,将进行一项检查用以判断随后的微指令序列是否为一意图进行储存运算的预取的微指令序列。若答案为是,则流程进行到方块1216。若答案为否,则流程进行到方块1218。
于方块1216中,响应意图进行储存运算的预取的微指令序列,总线作业请求被发出到一内存总线以要求一指定高速缓存界线的排他所有权。随后该高速缓存界线以排他MESI状态被送到微处理器,因此可为储存运算所使用而不会发生因为提升该高速缓存界线至可被修改的状态所导致的延迟。流程接着进行到方块1220。
于方块1218中,执行该随后的微指令序列。流程接着进行到方块1220。
于方块1220中,本方法完成。
现请参阅图13,其为描述依据本发明执行一意图进行储存运算的区段预取方法的流程图1300。
流程开始于方块1302,在此处,依据本发明,一连串的宏指令被送到一指令队列。流程接着进行到方块1304。
于方块1304中,一个随后的宏指令被从该指令队列中提取,并将之送到一延伸转译器。流程接着进行到判断方块1306。
于判断方块1306中,将进行一项检查用以判断该随后的宏指令是否为一延伸区段预取指令。若答案为是,则流程进行到方块1310。若答案为否,则流程进行到方块1308。
于方块1310中,一被监测到的延伸区段预取指令被转译成一意图进行储存运算的区段预取的微指令序列,此微指令序列是用以命令微处理器去预取处于排他状态一指定数量的高速缓存界线。流程接着进行到方块1312。
于方块1308中,宏指令被转译成一对应的微指令序列,此微指令序列是用以命令微处理器去执行一指定的运算。流程接着进行到方块1312。
于方块1312中,一个随后的微指令序列被送到微处理器内的执行逻辑。流程接着进行到判断方块1314。
于判断方块1314中,将进行一项检查用以判断随后的微指令序列是否为一意图进行储存运算的预取的微指令序列。若答案为是,则流程进行到方块1318。若答案为否,则流程进行到方块1316。
于方块1316中,执行该随后的微指令序列。流程接着进行到方块1328。
于方块1318中,响应意图进行储存运算的该区段预取的微指令序列,初始一暂时的计数器为数值0以监控将被发出的总线作业的数量,此总线作业是要求一区段的高速缓存界线的排他所有权。流程接着进行到方块1320。
于方块1320中,第一高速缓存界线地址被指定给第一个数据读取与无效总线作业。该第一高速缓存界线地址来自于由该延伸区段预取指令所指定的地址,然后再加上一乘以方块1318的计数的高速缓存界线行宽。由于该计数初始为零,所以该第一高速缓存界线地址等同于该延伸区段预取指令所指定的地址。流程接着进行到方块1322。
于方块1322中,发出一经由内存总线的数据读取与无效作业以预取该处于排他MESI状态的该第一高速缓存界线。流程接着进行到方块1324。
于方块1324中,将该计数增加后,流程接着进行到方块1326。
于判断方块1326中,将进行一项检查用以判断该增加的计数是否等同于被预取的高速缓存界线的数量,该高速缓存界线线的数量是储存于一影子缓存器(shadow register)中。若答案为否,则流程进行到方块1320,于其中执行另一个叠代(iteration)以提取下一高速缓存界线。若计数等同于该影子缓存器的内容,则发出所有总线作业,同时流程进行到方块1328。
于方块1328中,本方法完成。
本发明可广泛地适用于程序指令流程中,许多包含预期进行数据修改运算而与高速缓存相关的问题。同时考虑在另一实施例中,程序员希望能命令微处理器,以获得对一单一高速缓存界线或一区段高速缓存界线的排他所有权,并同时表达对改写其中包含数据的意图。在这样的案例中,完全不需要将高速缓存界线预取至区域高速缓存中,仅需要将该高速缓存界线于在区域高速缓存中分配并指定为排他状态。本发明注意到,许多内存总线架构支持一可用来分配处于排他状态高速缓存界线的总线执行作业,而不需要额外地由内存将高速缓存界线的内容转移至高速缓存中。此总线执行作业一般被称做零长度读取与无效(zero-length read-and-invalid)执行作业。该零长度读取与无效作业命令所有拥有该指定高速缓存界线的区域副本的总线组件,将其状态修改为无效状态。而读取作业为零长度则是因为并不需要真的响应一数据转移动作。这种执行作业303能于时间点F执行,以要求对EAX于图3的例子中所指定的高速缓存界线的排他所有权,因为在此时数据已经被读取过了。而于图8范例中的时间点A和图11范例中的时间点A、B、及D,则预期必须对指定高速缓存界线进行预取,同时获取高速缓存界线的排他所有权。于下面的实施例中,将针对因程序员只意图修改指定高速缓存界线的内容,故只需要获取排他所有权的案例。
如前所述,在今日的应用中普遍地运用着内存复制运算,特别是对于配置视频缓冲器。略微重述要点,一大面积的视频显示可由数个较小面积的视频显示来共同配置,当一特定的小面积视频缓冲器完成配置,其内容将被复制到较大面积视频缓冲器中相对应的部分,并依应用的复杂度不同,而运用各种阶层式递增面积的视频缓冲器。熟悉此领域技术人员发现于执行内存复制时,因为许多高速缓存结构并不需要真的将第一部份高速缓存的内容复制至第二部分高速缓存中,而只需要改变第一部份高速缓存(也就是来源位置)的地址(也被称做卷标,tag),使其与内存中的目的地址一致即可,故内存复制在区域微处理器中能有效率地执行。设计人员称此于区域高速实现内存复制的技术为更名运算(rename)。于是乎当一高速缓存界线被更名,其意指此高速缓存界线的地址或卷标被修改成另一不同的内存地址,而其内容却未被更改。于本发明的另一实施例中,特别适合程序员根据本发明,利用平行运作于后续程序指令执行的延伸预取指令,以命令微处理器对单一高速缓存界线或一区段高速缓存界线进行更名,并获致功能上的优势。
请参阅图14,图14是一表格1400,解说依据本发明该延伸地址指定元字段如何编码,以分配与更名一区域数据高速缓存界线中的高速缓存界线。如同于图5中所讨论的编码实施例,为了说明本发明起见,此处使用符合x86架构的ModR/M位字段,然而,可以预期的是本发明包含任何提供将一分配与更名编码到延伸预取指令400的机制的架构。虽然图14的例子指出将分配与更名指示编码到一延伸地址指定元403,熟悉此项技术者将发现该更名指示也可以被编码成一在运算码字段401内的一指定运算码数值。
在图14的另一编码实施例中,根据本发明扩大微处理器600的功能,以允许规格中所隐含着对分配为排他状态的高速缓存界线进行内存复制运算。在此所述的分配与更名运算,因除了储存指令以外,其余用来更名单一或区段高速缓存界线所需的指令,均可自程序流程中移除,故能相当有效地增加应用程序的执行速度。图14显示一用x86 ModR/M字节的5:3位编码成数值100的分配与更名指示。当该分配与更名指示依据本发明编码到一预取指令400时,则一相符的微处理器会被命令对一内存总线发出作业以分配处于排他MESI状态的高速缓存界线,而不需预取其内容。如同于图5中所讨论的编码实施例,在一x86的具体实施例中,该编码将被视为合法,并且能产生一零长度读取与无效总线作业,在不必然要转移其内容的情况下,取得一排他状态的高速缓存界线。
请参阅图15,其为一方块图1500,用以描述在图6的微处理器内执行分配与更名运算的一界面至内存的高速缓存单元。于此实施例中,于一预取的排他状态高速缓存界线上执行一更名运算,并响应一根据图14编码的分配与更名指令。方块图1500中显示微处理器1501中用以实现分配与更名运算的执行逻辑。该微处理器1501包含一延伸转译器1510,以接收一连串的宏指令1502并将之转译为相对应的微指令1511。宏指令1500接着被送至延伸高速缓存单元1520,该宏指令1500是用以命令自内存1542加载数据与储存数据运算。该延伸高速缓存单元1520包含一延伸高速缓存逻辑1521,以及一数据高速缓存1522。该延伸高速缓存逻辑耦接至一总线单元1530。该总线单元1530为至系统内存总线1540、数据存储器1542、及其它相耦接的总线组件1541的接口。
宏指令的示范流程1502说明如何指定一根据图14的编码100而得的分配与更名指令,及于区域高速缓存1522中如何执行其隐含的指向目标高速缓存界线1525储存运算,以使其内容与来源高速缓存界线1524相符,因此能于后续的程序指令执行时,同时于区域高速缓存1522中平行地进行着内存复制或更名运算。
因此,一宏指令1502-MOV EDI,#DEST-被解译器解译为一微指令1511-LD EDI,#DEST-,用以命令微处理器1501将数值DEST加载至架构缓存器EDI-1505。DEST是一第一高速缓存界线1525的地址,一第二高速缓存界线1524(地址为SRC)的内容将被复制至该第一高速缓存界线中。LDEDI,#DEST被送至执行逻辑(未显示)以将DEST加载至EDI-1505。接着,转译器1510将范例流程中一延伸分配与更名指令1502-PREF.R[SRC]-转译为一延伸分配与更名微指令1511-PREF.R[SRC]-,以命令微处理器1501获取由缓存器EDI内容所寻址的高速缓存界线1525的排他存取权,并于区域高速缓存1522中进行复制,将来源(SRC)高速缓存界线1524的内容复制至目的地(DEST)高速缓存界线1525。在一可选用的实施例中,该延伸分配与更名指令-PREF.R[SRC]1502-与其相对的微指令1511命令微处理器1501额外地将来源(SRC)高速缓存界线1524的内容写回(又称清回,flush),以释放高速缓存1522中的资源。该可选用的实施例是用以克服棘手的「最少最近使用(1east-recently-used)算法」,以免于该算法中,当程序员意图释放该资源时,来源(SRC)高速缓存界线1524仍被标示为最近使用。
该分配与更名微指令被送至延伸高速缓存单元1520,于此,延伸高速缓存逻辑1521命令总线单元1530对系统内存总线1540发布一零长度读取与无效执行作业,以自内存1542获取该要求的高速缓存界线1525的排他所有权。当被同意授与所要求高速缓存界线1525的排他所有权,延伸高速缓存逻辑1521命令高速缓存1522将来源(SRC)1524区域更名为EDI-1505所指定的目的地址,并将其MESI状态标示为修改状态。于另一实施例中,考虑于高速缓存1522中进行一实际复制运算而非更名运算,以当获得授予目的地(DEST)1525的排他所有权时,即刻实际复制来源(SRC)高速缓存界线1524中的内容至目的地(DEST)高速缓存界线1525。于该可选用的实施例中,一旦更名运算完成,该延伸高速缓存逻辑1521命令总线单元1530对总线1540发布一作业,以将来源(SRC)1524区域中的内容清回内存1524,藉此释放高速缓存1522中的储存区域。
现请参阅图16,其为描述依据本发明于一高速缓存界线上执行一分配与更名运算方法的流程图1600。
流程开始于方块1602,在此处,依据本发明,一连串的宏指令被送到一指令队列。流程接着进行到方块1604。
于方块1604中,一个随后的宏指令被从该指令队列中提取,并将之送到一延伸转译器。流程接着进行到判断方块1606。
于判断方块1606中,将进行一项检查用以判断该随后的宏指令是否为一用以指定分配与更名运算的延伸预取指令。若答案为是,则流程进行到方块1608。若答案为否,则流程进行到方块1610。
于方块1608中,一被侦测到的延伸预取指令被转译成一分配与更名运算的微指令序列,此微指令序列是用以命令微处理器去获取第一指定高速缓存界线的排他所有权,以复制一第二高速缓存界线的内容至该第一高速缓存界线。该第一高速缓存界线的地址储存于微处理器中的一架构缓存器,另外,也可能该分配与更名微指令序列命令微处理器将该第二高速缓存界线清回内存。流程接着进行到方块1612。
于方块1610中,宏指令被转译成一对应的微指令序列,此微指令序列是用以命令微处理器去执行一指定的运算。流程接着进行到方块1612。
于方块1612中,一个随后的微指令序列被送到微处理器内的执行逻辑。流程接着进行到判断方块1614。
于判断方块1614中,将进行一项检查用以判断随后的微指令序列是否为一分配与更名运算的微指令序列。若答案为是,则流程进行到方块1616。若答案为否,则流程进行到方块1618。
于方块1616中,响应分配与更名运算的微指令序列,发布总线作业至内存总线以要求指定高速缓存界线的排他所有权,而总线将以授予指定高速缓存界线的排他存取权作为响应。流程接着进行到方块1620。
于方块1620中,延伸高速缓存逻辑根据本发明,将第二高速缓存界线(来源,SRC)的内容被复制至第一高速缓存界线(目的地,DEST)。此外,亦有可能该第二高速缓存界线根据指示第一高速缓存界线的卷标被更名。流程接着进行到方块1624。亦可选择性地进入方块1622。
于方块1618中,执行该随后的微指令序列。流程接着进行到方块1624。
于可选择性的方块1622中,该第二高速缓存界线(目的地,DEST)被清回内存。流程接着进行到方块1624。
于方块1624中,本方法完成。
请参阅图17,其为一方块图1700,用以描述在图6的微处理器1701内执行区段分配与更名运算的一界面至内存的高速缓存单元。图17的微处理器1701内的组件的认证与运算类似于图15的微处理器1501内的相似组件,只要将图15的百位数图号5用7来取代即可。为依据本发明以改进此区段分配与更名运算,本发明使用一延伸转译器1710将类似图9中所说明的一有重复前置码1702的延伸预取运算转译成微指令序列1711,用以命令执行一区段分配与更名运算。除此之外,亦使用一影子计数缓存器1713以加载自架构缓存器内ECX-1712被分配与更名的高速缓存界线的数量计数。并且使用延伸区段记录逻辑(extended block fill logic)1721以命令其总线单元1730要求数据高速缓存1722中指定区段目的地(DEST)高速缓存界线1725的排他所有权,并将之更名以使其内容与来源区段来源(SRC)高速缓存界线1724相符,并可选择性的于内存复制完成之后,命令总线单元将来源区段高速缓存界线1724清回内存1724。
为初始一分配与更名运算,第一个宏指令1702-MOV ECX,#COUNT-是用以将架构缓存器ECX-1712内被分配与更名的区段内的高速缓存界线的数量计数初始化。延伸转译器1710将该第一个宏指令1702转译成加载微指令1711-LD ECX,#COUNT-,此微指令命令微处理器将计数(count)加载ECX-1712。当该计数被加载到ECX-1712后,此计数亦被透明地复制到影子计数缓存器1713-SHECX。同时,其它的指令1702则可在不干扰到分配与更名运算的计数的情况下,修改其架构缓存器ECX-1712。
在计数被初始化之后,一第二宏指令1702-MOV EDI,#DEST-被解译器1710解译以命令微处理器1701将一特定地址DEST加载至架构缓存器EDI-1705。解译器1710解译该第二宏指令为一微指令1711-LD EDI,#DEST-,用以命令微处理器1701将数值DEST加载至架构缓存器EDI-1705。
在DEST被加载至架构缓存器EDI-1705之后,一区段分配与更名指令1702-REP.PREF.R[EAX]-被延伸解译器1710解译,此区段分配与更名指令1702命令微处理器1701分配与更名被ECX所指定数量的排他状态的高速缓存界线到其区域高速缓存,包含由EDI内容所指定的高速缓存界线。响应一命令该区段分配与更名运算的微指令序列1711,该延伸高速缓存区段逻辑1721命令其总线单元1730经由其内存总线1740发出总线要求以要求该由DEST指定地址的高速缓存界线的排他所有权。当获授予排他所有权,该延伸高速缓存区段逻辑1721于数据快取1722中分配每一计数的高速缓存界线,并且将来源位置(SRC)1724的内容复制进去。于区段分配与更名运算完成后,亦可选择性的将来源位置(SRC)1724的内容清回内存1742,藉以释放内部高速缓存的资源。
现请参阅图18,其为描述依据本发明执行一高速缓存数据区段分配与更名方法的流程图1800。
流程开始于方块1802,在此处,依据本发明,一连串的宏指令被送到一指令队列。流程接着进行到方块1804。
于方块1804中,一个随后的宏指令被从该指令队列中提取,并将之送到一延伸转译器。流程接着进行到判断方块1806。
于判断方块1806中,将进行一项检查用以判断该随后的宏指令是否为一区段分配与更名指令。若答案为是,则流程进行到方块1810。若答案为否,则流程进行到方块1808。
于方块1810中,一被监测到的区段分配与更名指令被转译成一区段分配与更名的微指令序列,此微指令序列是用以命令微处理器去获取一指定数量第一高速缓存界线的排他所有权,并修改其位于目的地址的第一高速缓存界线的内容,使其相同于一位于来源地址的第二高速缓存界线。流程接着进行到方块1812。
于方块1808中,宏指令被转译成一对应的微指令序列,此微指令序列是用以命令微处理器去执行一指定的运算。流程接着进行到方块1812。
于方块1812中,一个随后的微指令序列被送到微处理器内的执行逻辑。流程接着进行到判断方块1814。
于判断方块1814中,将进行一项检查用以判断随后的微指令序列是否为一区段分配与更名的微指令序列。若答案为是,则流程进行到方块1818。若答案为否,则流程进行到方块1816。
于方块1816中,执行该随后的微指令序列。流程接着进行到方块1830。
于方块1818中,响应区段分配与更名的微指令序列,初始一暂时的计数器为数值0以监控将被发出的总线作业的数量,此总线作业为对一区段做排他性的分配与更名。流程接着进行到方块1820。
于方块1820中,为一第一分配与更名运算指定第一来源高速缓存界线地址SRCADDR与第一目的高速缓存界线地址DESTADDR。该第一目的高速缓存界线地址DSTADDR是由先前加载架构缓存器的内容决定,其缓存器内容并经高速缓存界线宽度与方块1818计数的乘积累加。因为计数器的初始值为零,故第一笔高速缓存界线地址即等于架构缓存器预先所填入的值。流程接着进行到方块1822。
于方块1822中,发出一经由内存总线的数据读取与无效作业,以分配一位于DSTADDR的第一高速缓存界线于排他MESI状态。流程接着进行到方块1824。
于方块1824中,位于DSTADDR的排他性分配高速缓存界线被修改,使其内容成为该位于SRCADDR的第一来源高速缓存界线的内容。在另一实施例中,DSTADDR被更名而为SRCADDR。在一可选择性的实施例中,SRCADDR的内容会额外地被清回内存。流程接着进行到方块1826。
于方块1826中,将该计数增加后,流程接着进行到方块1828。
于判断方块1828中,将进行一项检查用以判断该增加的计数是否等同于被分配与更名的高速缓存界线的数量,该高速缓存界线线的数量是储存于一影子缓存器中。若答案为否,则流程进行到方块1820,于其中执行另一个叠代以分配与更名下一目的高速缓存界线。若计数等同于该影子缓存器的内容,则所有欲处理区段高速缓存界线的分配与更名运算均已完成,流程进行到方块1830。
于方块1830中,本方法完成。
虽然本发明及其目的、特征与优点已详细叙述,其它具体实施例仍涵盖在本发明的范围内。例如,在此描述了依照MESI协议时,本发明对于待决的储存运算所具有的优点。选择MESI作为本发明的例子是因为其在本技术领域中的广泛应用。但是,值得注意的是本发明提供预取的数据到一区域高速缓存,该数据的型式或状态使得该数据可立即被一待决的储存运算所修改,而不需发出作业到一内存总线。该型式或状态是否依照MESI并不重要。
如前所述,不同的架构使用不同的高速缓存界线行宽。在桌上型计算机系统中,今日普遍使用32-字节的高速缓存界线。但是在本发明中使用的叙述并不限制本发明不能应用于32-、64-、128-、或甚至于256-字节的高速缓存界线。相反的,本发明预期可应用在任何限制其区域高速缓存界线的修改,且需依靠总线作业以取得修改许可而不提供直接预取这些高速缓存界线以供立即性修改的系统架构。
此外,本发明使用相符于x86架构的具体实施例作为例证。无疑的,x86-兼容的微处理器可以从应用本发明得到好处,但值得注意的是本发明的应用范畴并不只限于x86-兼容的环境,因为仍有许多不同的架构所应用的预取指令亦不能保证其结果为排他的数据。
最后,值得注意的是,虽然在此处应用一地址指定元以指定被预取的高速缓存界线的地址,此种指定方式并不需是明示的(explicit)。一个依据本发明的预取指令的具体实施例可以隐含的(implicitly)指定一包含该地址的架构缓存器,此处是由一先前执行的指令将该地址加载到该架构缓存器。
总之,以上所述,仅为本发明的较佳实施例而已,当不能以之限定本发明所实施的范围。凡依本发明权利要求所作的均等变化与修饰,皆应仍属于本发明专利涵盖的范围内。

Claims (15)

1.一种微处理器装置,用以实现一内存复制运算,此装置包含:
一转译逻辑,组态成将一分配与更名指令转译成一微指令序列,用以命令一微处理器分配一处于排他状态的第一高速缓存界线,并将一第二高速缓存界线的内容复制至该第一高速缓存界线;以及
一执行逻辑,是耦接至该转译逻辑,组态成接收该微指令序列,并且组态成发出作业至一内存总线,以要求处于该排他状态的该第一高速缓存界线且组态成复制该第二高速缓存界线的该内容至该第一高速缓存界线。
2.如权利要求1所述的微处理器装置,其中该内存复制运算与一应用程序的程序流程中随后的指令执行平行。
3.如权利要求2所述的微处理器装置,其中该内存复制运算排除了对应于执行该随后的储存指令的一程序延迟,该随后的储存指令原本会于该程序流程中复制该第二高速缓存界线的内容至该第一高速缓存界线。
4.如权利要求1所述的微处理器装置,其中该分配与更名指令包含对在一现存指令集内的一现存预取指令的修改,并且其中该现存预取指令原本不提供分配与更名该第一高速缓存界线。
5.如权利要求1所述的微处理器装置,其中,响应于该微指令序列,该执行逻辑命令一总线单元经由该内存总线发出这些作业。
6.如权利要求5所述的微处理器装置,其中这些作业包含一多重的零长度数据读取与无效作业,这些作业是要求该第一高速缓存界线的排他所有权。
7.如权利要求1所述的微处理器装置,其中该执行逻辑将该第二高速缓存界线的内容清回内存。
8.一种微处理器中的装置,是用以执行一更名运算,此装置包含:
一分配与更名指令,是组态成命令该微处理器分配一处于排他状态的第一高速缓存界线,并将一第二高速缓存界线的内容复制至该第一高速缓存界线;以及
一转译器,是组态成接收该分配与更名指令,并将该分配与更名指令转译成相关的微指令,在其中该相关的微指令命令在微处理器内的执行逻辑经由一内存总线发出总线作业,以要求该第一高速缓存界线的排他所有权,并将该第二高速缓存界线的内容复制至该第一高速缓存界线。
9.如权利要求8所述的微处理器装置,其中,响应于该对应的微指令,该执行逻辑命令一总线单元经由该内存总线发出这些作业。
10.一种内存复制运算的方法,此方法包含:
提取一分配与更名宏指令;
将该分配与更名宏指令转译成微指令序列,该微指令序列是用以命令该微处理器分配一处于排他状态的第一高速缓存界线,并将一第二高速缓存界线的内容复制至该第一高速缓存界线;以及
响应该微指令序列,经由一内存总线发出总线作业,以要求分配一处于排他状态的第一高速缓存界线,并将该第二高速缓存界线的内容复制至该第一高速缓存界线。
11.如权利要求10所述的方法,其中该发出动作包含:
许可该微处理器平行的执行该发出的作业与随后的指令。
12.如权利要求10所述的方法,其中该提取动作包含:
提供该分配与更名指令作为对在一现存指令集内的一现存预取指令的修改,其中该现存预取指令原本不提供分配处于该排他状态的该第一高速缓存界线,以将该第二高速缓存界线中的内容复制至该第一高速缓存界线。
13.如权利要求12所述方法,其中该提供动作包含:
修改一x86预取指令以致能指定一内存复制运算。
14.如权利要求10所述的方法,其中该发出动作包含:
提供经由内存总线的一多重的零长度数据读取与无效作业,这些作业是要求该第一高速缓存界线的排他所有权。
15.如权利要求10所述的方法,更包含:
将该第二高速缓存的内容清回内存。
CNB2003101197574A 2003-06-19 2003-12-03 对高速缓存界线进行更名的装置与方法 Expired - Lifetime CN100504815C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/464,353 US7188215B2 (en) 2003-06-19 2003-06-19 Apparatus and method for renaming a cache line
US10/464,353 2003-06-19

Publications (2)

Publication Number Publication Date
CN1514373A true CN1514373A (zh) 2004-07-21
CN100504815C CN100504815C (zh) 2009-06-24

Family

ID=33517284

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2003101197574A Expired - Lifetime CN100504815C (zh) 2003-06-19 2003-12-03 对高速缓存界线进行更名的装置与方法

Country Status (3)

Country Link
US (1) US7188215B2 (zh)
CN (1) CN100504815C (zh)
TW (1) TWI235918B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112286577A (zh) * 2020-10-30 2021-01-29 上海兆芯集成电路有限公司 处理器及其操作方法

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658552B1 (en) * 1998-10-23 2003-12-02 Micron Technology, Inc. Processing system with separate general purpose execution unit and data string manipulation unit
US7472227B2 (en) * 2005-08-11 2008-12-30 International Business Machines Corporation Invalidating multiple address cache entries
US20070038984A1 (en) * 2005-08-12 2007-02-15 Gschwind Michael K Methods for generating code for an architecture encoding an extended register specification
US7664924B2 (en) * 2005-12-01 2010-02-16 Drive Sentry, Inc. System and method to secure a computer system by selective control of write access to a data storage medium
US10503418B2 (en) 2005-12-01 2019-12-10 Drive Sentry Limited System and method to secure a computer system by selective control of write access to a data storage medium
US20100153671A1 (en) * 2005-12-01 2010-06-17 Drive Sentry Inc. System and method to secure a computer system by selective control of write access to a data storage medium
WO2008036833A2 (en) * 2006-09-20 2008-03-27 Drive Sentry, Inc. Selective control of write access to a data storage medium
US8122195B2 (en) 2007-12-12 2012-02-21 International Business Machines Corporation Instruction for pre-fetching data and releasing cache lines
US8266381B2 (en) * 2008-02-01 2012-09-11 International Business Machines Corporation Varying an amount of data retrieved from memory based upon an instruction hint
US8250307B2 (en) * 2008-02-01 2012-08-21 International Business Machines Corporation Sourcing differing amounts of prefetch data in response to data prefetch requests
US8176254B2 (en) * 2009-04-16 2012-05-08 International Business Machines Corporation Specifying an access hint for prefetching limited use data in a cache hierarchy
US8234450B2 (en) * 2009-07-10 2012-07-31 Via Technologies, Inc. Efficient data prefetching in the presence of load hits
TWI414994B (zh) 2009-09-24 2013-11-11 Ind Tech Res Inst 可重組態處理裝置及其系統
US9886734B2 (en) * 2013-04-25 2018-02-06 Intel Corporation Techniques for graphics data prefetching
US10114755B2 (en) * 2013-06-14 2018-10-30 Nvidia Corporation System, method, and computer program product for warming a cache for a task launch
US10761925B2 (en) * 2015-03-24 2020-09-01 Nxp Usa, Inc. Multi-channel network-on-a-chip
US11853237B2 (en) * 2021-11-19 2023-12-26 Micron Technology, Inc. Input/output sequencer instruction set processing

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4959777A (en) * 1987-07-27 1990-09-25 Motorola Computer X Write-shared cache circuit for multiprocessor system
JP2500101B2 (ja) * 1992-12-18 1996-05-29 インターナショナル・ビジネス・マシーンズ・コーポレイション 共用変数の値を更新する方法
JP2765433B2 (ja) 1993-06-10 1998-06-18 ヤマハ株式会社 記憶再生装置
US5903911A (en) * 1993-06-22 1999-05-11 Dell Usa, L.P. Cache-based computer system employing memory control circuit and method for write allocation and data prefetch
US5892970A (en) * 1996-07-01 1999-04-06 Sun Microsystems, Inc. Multiprocessing system configured to perform efficient block copy operations
US5966734A (en) * 1996-10-18 1999-10-12 Samsung Electronics Co., Ltd. Resizable and relocatable memory scratch pad as a cache slice
US6018763A (en) * 1997-05-28 2000-01-25 3Com Corporation High performance shared memory for a bridge router supporting cache coherency
US5944815A (en) * 1998-01-12 1999-08-31 Advanced Micro Devices, Inc. Microprocessor configured to execute a prefetch instruction including an access count field defining an expected number of access
US6014735A (en) 1998-03-31 2000-01-11 Intel Corporation Instruction set extension using prefixes
US6088789A (en) * 1998-05-13 2000-07-11 Advanced Micro Devices, Inc. Prefetch instruction specifying destination functional unit and read/write access mode
US6253306B1 (en) * 1998-07-29 2001-06-26 Advanced Micro Devices, Inc. Prefetch instruction mechanism for processor
US6289420B1 (en) * 1999-05-06 2001-09-11 Sun Microsystems, Inc. System and method for increasing the snoop bandwidth to cache tags in a multiport cache memory subsystem
US6266744B1 (en) * 1999-05-18 2001-07-24 Advanced Micro Devices, Inc. Store to load forwarding using a dependency link file
US6470444B1 (en) * 1999-06-16 2002-10-22 Intel Corporation Method and apparatus for dividing a store operation into pre-fetch and store micro-operations
US6557084B2 (en) * 1999-07-13 2003-04-29 International Business Machines Corporation Apparatus and method to improve performance of reads from and writes to shared memory locations
US6460132B1 (en) * 1999-08-31 2002-10-01 Advanced Micro Devices, Inc. Massively parallel instruction predecoding
JP2001222466A (ja) * 2000-02-10 2001-08-17 Nec Corp マルチプロセッサ・システムと共有メモリ制御システム及び方法並びに記録媒体
US6751710B2 (en) * 2000-06-10 2004-06-15 Hewlett-Packard Development Company, L.P. Scalable multiprocessor system and cache coherence method
US6845008B2 (en) * 2001-03-30 2005-01-18 Intel Corporation Docking station to cool a notebook computer
US6915415B2 (en) * 2002-01-07 2005-07-05 International Business Machines Corporation Method and apparatus for mapping software prefetch instructions to hardware prefetch logic
US7089371B2 (en) * 2002-02-12 2006-08-08 Ip-First, Llc Microprocessor apparatus and method for prefetch, allocation, and initialization of a block of cache lines from memory
US7080211B2 (en) 2002-02-12 2006-07-18 Ip-First, Llc Microprocessor apparatus and method for prefetch, allocation, and initialization of a cache line from memory
US7380103B2 (en) * 2002-04-02 2008-05-27 Ip-First, Llc Apparatus and method for selective control of results write back
US6832296B2 (en) 2002-04-09 2004-12-14 Ip-First, Llc Microprocessor with repeat prefetch instruction

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112286577A (zh) * 2020-10-30 2021-01-29 上海兆芯集成电路有限公司 处理器及其操作方法

Also Published As

Publication number Publication date
CN100504815C (zh) 2009-06-24
TW200500853A (en) 2005-01-01
US7188215B2 (en) 2007-03-06
TWI235918B (en) 2005-07-11
US20040260877A1 (en) 2004-12-23

Similar Documents

Publication Publication Date Title
CN1297885C (zh) 高速缓存数据区段的配置与初始化机制
CN1514374A (zh) 变更高速缓存数据区段的方法与装置
CN1514373A (zh) 对高速缓存界线进行更名的装置与方法
CN1186729C (zh) 从虚地址计算页表索引的方法和装置
CN1272714C (zh) 数据处理系统内分配和访问存储映像工具的方法、设备和系统
CN1262942C (zh) 利用无数据事务获得全局促进工具的方法、设备和系统
CN1542626A (zh) 用于实现文件的写入时复制的方法和系统
CN100340975C (zh) 计算机系统、编译器装置以及编译方法
CN1315060C (zh) 储存存储器型式数据的转译旁视缓冲器
CN1114859C (zh) 数据共享方法和计算机体系结构
CN1175341C (zh) 异步更新共享资源的接口系统和方法
TWI537831B (zh) 多核心處理器、用於執行處理程序切換之方法、用於保全一記憶體區塊之方法、用於致能使用一多核心裝置之異動處理之設備、以及用於執行記憶體異動處理之方法
CN1127016C (zh) 计算机处理装置和方法
CN1514352A (zh) 多重高速缓冲存储器线写回和作废技术
CN1630849A (zh) 安全执行模式下信任客户使用安全核心系统
CN1225690C (zh) 快取线配置与初始化之装置及方法
CN1265285C (zh) 预取区段内存以进行储存的装置及方法
CN1387649A (zh) 并行处理器结构
CN1881183A (zh) 信息处理装置、进程控制方法及其计算机程序
CN1445680A (zh) 内部存储器型抗篡改处理器及保密方法
CN1399736A (zh) 用于处理器的转移指令
CN1947107A (zh) 用于在存储器间传输数据的装置
CN1243311C (zh) 实现重叠操作的方法和系统
CN1095133C (zh) 多处理器计算机系统中共享结果数据的方法,装置和系统
CN1292366C (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: 20090624

CX01 Expiry of patent term