CN1514374A - 变更高速缓存数据区段的方法与装置 - Google Patents

变更高速缓存数据区段的方法与装置 Download PDF

Info

Publication number
CN1514374A
CN1514374A CNA200410001593XA CN200410001593A CN1514374A CN 1514374 A CN1514374 A CN 1514374A CN A200410001593X A CNA200410001593X A CN A200410001593XA CN 200410001593 A CN200410001593 A CN 200410001593A CN 1514374 A CN1514374 A CN 1514374A
Authority
CN
China
Prior art keywords
line taking
fast line
section
instruction
microprocessor
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
CNA200410001593XA
Other languages
English (en)
Other versions
CN100461135C (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 CN1514374A publication Critical patent/CN1514374A/zh
Application granted granted Critical
Publication of CN100461135C publication Critical patent/CN100461135C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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
    • 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/0877Cache access modes
    • G06F12/0879Burst mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

本发明提供一种变更高速缓存数据区段的方法与装置,该装置为对内存内一区段的快取线执行排他的配置与更名的微处理器装置。该装置包含转译逻辑与执行逻辑。该转译逻辑将区段配置与更名指令转译成一微指令序列,用以命令一微处理器将一快取线第一区段配置成排他状态,并且将一快取线第二区段的内容复制到该快取线第一区段。该执行逻辑耦接至该转译逻辑。该执行逻辑接收该微指令序列发出作业至要求处于该排他状态的快取线第一区段的一内存总线上,而在取得该快取线第一区段的排他所有权之后,该执行逻辑即将该快取线第二区段的内容复制到该快取线第一区段。

Description

变更高速缓存数据区段的方法与装置
技术领域
本发明涉及微电子学的领域,尤指一种装置及方法使程序员得以命令微处理器在其内部高速缓存(cache)上执行变更一个区段(block)快取线(cacheline)档名的更名运算(rename),即涉及变更高速缓存数据区段的方法与装置。
背景技术
本申请与下列同在申请中的美国专利申请有关,并且具有相同的申请人与发明人,美国申请号:10/364911,申请日:2/11/2003,名称:意图进行储存的预取机制;美国申请号:10/364919,申请日:2/11/2003,名称:区段内存的意图进行储存的预取机制。
在现今的微处理器,其内部逻辑区段(logic block)间的数据传输速度远超过于其与外部内存的存取速度。举例来说,在一个x86桌上型计算机组态中,其总线(bus)与系统内存之间的接口运作速率是以百万赫(megahertz)的百倍计,但是其内部微处理器时脉速率却已接近数十倍的十兆赫(gigahertz)。因此,近年来已发展出一个高速缓存结构的层级体系,此体系使得高效能微处理器不必在每次读取(read)或写入(write)数据时,不致于因为必须在一个缓慢的内存总线(memory bus)上执行作业(transaction)而发生停滞(stall),而更能发挥其效能。
一个机载(on-board)或区域(local),高速缓存在一个管线化(pipeline)微处理器中是一个独立的单位,在本质上,其运作方式对于在管线化微处理器中流动的指令而言是透明(transparent)的,此方式确保一个应用程序(applicationprogram)中的指令所需要的数据已经常驻在其高速缓存内,而可以用管线速率存取,而不是以内存总线速率。不同的技术使用不同的高速缓存架构,有些是由多层(multiple levels)高速缓存所组成:第一层高速缓存是非常接近处理器的执行逻辑(execution logic),第二层高速缓存可以是芯片上(on-chip)或非芯片上,是用来储存较不常存取的数据,第三层高速缓存则可在记忆卡(memory card)上,以此类推。不论应用那一种架构,熟悉本领域的技术人员将发现使用高速缓存的目的在于排除当总线作业经由一个缓慢的内存总线所发出时的微处理器管线中指令的停滞(stalled),此总线作业是为了取得一待决的(pending)读取或写入运算所需的数据。当此状况发生,程序的执行将产生令人难以忍受的暂停(halt),直到得到所需数据为止。
现今计算机系统组件(device)间共享内存区域的现象使得情况更为复杂。举例而言,主微处理器(primary microprocessor)与通信微处理器(communications microprocessor)之间的通信是经由在一指定内存区域上的读取及写入数据。视讯组件(video device)上显示数据予操作员(operator)的视讯卡(video card)的微处理器与主微处理器共享一些被称之为视讯缓冲器(videobuffers)的内存区域,也是很常见的情形。
在共享内存系统中,可能发生来自一个共享区域(region)的数据同时存在于两个不同微处理器的区域(local)高速缓存中,或是存在于连结到同一个内存总线的不同组件上。若所有组件只是单纯的读取数据,则允许它们将数据常驻于其区域高速缓存结构,并不会造成任何伤害。但是当它们均被允许改动(modify)存在于其区域高速缓存的数据时,即会造成不可预期的后果。
为防止此情况发生,系统设计者开发了高速缓存一致性协议以标示高速缓存中数据的状态。MESI是最普遍使用的协议。依照MESI来维护区域高速缓存可以确保同一数据的两个副本不会在同一时间被改动。MESI共享状态告知区域高速缓存一特定区段的数据是否为共享(shared)。如是共享,则区域处理器在经由一较慢的内存总线上执行作业以取得数据区段的排他许可(exclusive permission)之前,不得改动该数据区段。若欲改动数据,处理器需先取得数据的排他所有权。
本发明在此强调的问题是有关于欲将数据写入内存时所导致的发生在应用程序内的延迟。熟悉本领域的技术人员将发现高速缓存并无合理的方法以得知何时一特定内存区域会最先被需要,因此当该特定内存区域第一次被加载到区域高速缓存时,总是会引起内存总线延迟。认知此项事实,设计者开发了可在微处理器上执行的一内建在应用程序内的预取指令。但是该预取指令并不能在程序流程的操作数上运作。确切的说,预取指令命令区域高速缓存从内存上加载操作数到该高速缓存以备未来之用。而且因为高速缓存单元与内存间的互动方式,对一微处理器管线内的指令流程而言,是透明的,因此审慎的方式是在需用数据之前先发出预取指令,使得高速缓存可以在需用数据之前,从内存提取数据-与在主程序流程(primary program flow)中其它指令的执行平行处理。然后当执行一随后的指令(subsequence instruction),并且需要存取已预取的数据时,此数据已经在高速缓存中立即可存取(readilyaccessible),所以程序的执行不会因为等待从内存提取数据而停滞。已预取的数据在高速缓存中立即可存取仅指其将要被读取而已。如果此预取的数据会被随后的指令所改动,则程序的执行将必须延迟以等待高速缓存单元到总线去请求该数据的排他所有权。
如前所示,共享内存区域被广泛的应用在现今计算机系统,以提供各组件间的信息通信之用。内存复制(copy)即为一在现今的应用程序中极为常见的运算。内存复制运算为将一内存位置的内容复制到另一内存位置上。以一将被转移作为显示之用的视讯缓冲器为例,该视讯缓冲器通常是由数个小缓冲器所组成,当一第一小缓冲器被组态完成作为显示之用,其在第一小缓冲器的内容即被复制到一第二内存位置,该第二内存位置为四个画面象限之一,并且在该第二内存位置的画面象限被组态完成之后,在该第二内存位置的内容即被复制到第三内存位置,该第三内存位置常驻有整个画面的内容。熟悉此项技术者将发现上述视讯缓冲器数据的产生仅为应用程序执行的许多将数据从一位置复制到下一位置的不同作业的一范例。
内存复制运算虽然看似简单易行,但在现今的微处理器的层级化高速缓存架构之下,该些内存复制运算实际上却是非常麻烦的。就以在一现今高速缓存内的一已配置(allocated)并已修改(modified)的第一数据结构SRC而论,欲完成一内存复制运算所必须要的运算包括:(1)配置并且确保一第二数据结构DEST的排他所有权,以将该第一数据结构SRC的内容复制到该第二数据结构DEST;以及(2)修改DEST的内容,使得该DEST的内容匹配SRC的内容。但是,如前所述,问题在于若是该DEST并未预先配置在高速缓存中,或者该DEST为已配置,但其状态为共享时,则欲确保DEST的排他所有权,必须要先停止应用程序的执行以等待经由内存总线发出适当的总线作业。
再者,上述的问题会随着所欲复制的内存范围的加大而恶化。举例来说,欲取得100个快取线的排他所有权,其所导致的程序停滞时间将会远大于欲取得单一快取线的排他所有权所导致的程序停滞时间。
因此,需要一种装置及方法使得程序员得以命令微处理器取得快取线的一第一区段的排他所有权,并且将快取线的一第二区段复制到该第一区段,而该数据复制是平行于随后的程序指令的执行。
除此之外,也需要一种装置及方法使得程序员得以命令微处理器将快取线的该第一区段的数据写回到内存。
发明内容
本发明如同前述的其它申请案,是为了克服上述及其它公知技术的问题与缺点,本发明提供一种更好的技术以复制在一高速缓存内的快取线的一区段到该高速缓存内的快取线的一第二区段,并且该复制运算是平行于一应用程序随后的指令执行。在一具体实施例中,本发明提供一种微处理器装置。该微处理装置包括转译逻辑与执行逻辑。转译逻辑将一区段配置及更名指令转译成一微指令序列,此微指令序列是用以命令微处理器将快取线的一第一区段配置为排他状态,并且将快取线的一第二区段的内容复制到该第一区段。执行逻辑耦接至该转译逻辑。该执行逻辑接收前述微指令序列,然后经由内存总线发出作业,要求快取线处于排他状态的该第一区段,在取得该第一区段的排他所有权后,该执行逻辑即将快取线的第二区段的内容复制到该第一区段。
本发明的一个目的是提供一种微处理器装置以执行一区段更名运算。此装置包含一区段配置与更名指令及一转译器。该区段配置与更名指令命令微处理器将快取线的一第一区段配置为排他状态,并且将快取线的一第二区段的内容复制到该第一区段。转译器则是接收区段配置与更名指令,并将此区段配置与更名指令转译成相关的微指令,此相关的微指令命令在微处理器内的执行逻辑经由一内存总线发出复数个总线作业,该些总线作业要求该快取线的第一区段的排他所有权及将该快取线第二区段的内容复制到该第一区段。
本发明的另一目的,在于提供一种执行区段内存复制的方法。此方法包括提取(retrieving)一区段配置与更名宏指令;转译该区段配置与更名宏指令成一微指令序列,此微指令序列是用以命令一微处理器将快取线的一第一区段配置为排他状态,并且将快取线的一第二区段的内容复制到该第一区段;而且,响应此微指令序列,经由内存总线发出总线作业以将快取线的该第一区段配置为排他状态,并且将快取线的该第二区段的内容复制到该第一区段。
附图说明
本发明的前述与其它目的、特征及优点,在配合下列说明及附图后,将可获得更好的理解:
图1为一解说当今微处理器的有效管线化阶段的方框图;
图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    预取运算码
904       延伸地址指定元
1000      方框图                   1001    微处理器
1002      宏指令                   1010    延伸转译器
1011      微指令序列               1012    架构缓存器
1013      影子计数缓存器
1020        伸高速缓存单元
1021        延伸区段记录逻辑
1022        数据高速缓存
1023        停滞讯号                 1030       总线单元
1040        内存总线
1041        总线组件总线组件
1042        数据存储器
1100        时脉图                   1101~1102 总线作业
1200~1220  意图进行储存运算的预取的方法的流程
1300~1328  意图进行储存运算的区段预取的方法的流程
1500        方框图                   1501       微处理器
1502        宏指令                   1510       延伸转译器
1505        架构缓存器               1511       微指令
1520        延伸高速缓存单元
1521        延伸高速缓存逻辑
1522        数据高速缓存             1523       停滞讯号
1524        来源区域SRC              1525       目的区域DEST
1530        总线单元
1540        系统内存总线
1541        总线组件                 1542       数据存储器
1600~1622  快取线更名方法的流程
1700        方框图                   1701       微处理器
1702        宏指令                   1710       延伸转译器
1705        架构缓存器               1711       微指令
1712        架构缓存器               1713       影子计数缓存器
1720        延伸高速缓存单元
1721        延伸区段高速缓存逻辑
1722        数据高速缓存              1723       停滞讯号
1730        总线单元                  1740       内存总线
1741         总线组件总线组件        1742    数据存储器
1800~1830   高速缓存数据区段更名方法的流程
具体实施方式
以下的说明,是在一特定实施例及其必要条件的脉络下而提供,可使一般熟悉本领域的技术人员能够利用本发明。然而,各种对该较佳实施例所作的修改,对熟悉本领域的技术人员而言是显而易见,并且,在此所讨论的一般原理,也可应用至其它实施例。因此,本发明并不限于此处所展出与叙述的特定实施例,而是具有与此处所揭示的原理与新颖特征相符的最大范围。
前文已针对现今的管线化微处理器如何执行预取运算,作了背景的讨论,有鉴于此,在图1至图3B,将呈现一强调现有预取技术的限制的例子。紧接着,在图4至图18,将呈现本发明的讨论。本发明使得程序员得以命令微处理器将其高速缓存内的快取线一第一区段配置为排他MESI状态,并且将快取线的一第二区段的内容复制到该第一区段,因此,得以避免因为随后的储存运算执行数据的复制所造成的任何程序延迟。
请参阅图1,其为一方框图,用以说明在现今管线化微处理器100内的有效管线阶段101-105。此微处理器有一个提取阶段101,一个转译阶段102,一个暂存阶段103,一个寻址阶段104,及一个执行阶段105。
于运作时,该提取阶段101从系统内存的一指令范围120中提取(retrieve)宏指令121-123以供微处理器100执行。该宏指令121-123接着被送至转译阶段102。该转译阶段102将宏指令121-123转译成对应的微指令(或称原生指令)序列(未显示),此微指令序列为命令微处理器100执行宏指令121-123指定的运算。非常类似于工厂产品在装配在线流经连续的工作站的方式,该微指令也同步于管线时脉讯号(未显示)的流经在管线中随后的阶段103-105。根据前述方式,微指令被送至暂存阶段103。如果有一特定微指令指定一操作数被储存于暂存阶段103的缓存器内,则逻辑在那一点上可存取该缓存器以提取该操作数,并且将随同该特定微指令一起送至寻址阶段104。寻址阶段104包含用以产生地址以存取储存在数据存储器108内的操作数的逻辑。相似于暂存阶段103,该寻址阶段104也将所产生的地址,随着相应的微指令,传送至执行阶段105。
执行阶段105执行该微指令所指定的运算。在当今的微处理器100,运算的形式是由指令集架构(instruction set architecture)所决定,但是熟悉此项技术者将发现这些运算不会超出一般的范畴,例如逻辑运算,算术运算,及内存存取运算(换言之,数据读取与数据写入运算)。由执行指定的运算所产生的结果,若不是储存于暂存阶段103的缓存器内,即是被写入到数据存储器108内的内存位置。
熟悉此项技术者将发现现今的管线化微处理器100也许会有比图1的101-105更多的阶段,因为,经由分解管线中的主函数以增加管线中阶段的数目是种经证实可增加管线(pipeline)中指令121-123的产出量的技术。为了简明起见,如图1所示的当今微处理器100的管线化阶段101-105已经足以说明现有技术的缺点,而不需以不相关的细节增加读者的负担。
值得注意的是在当今微处理器100中,其执行阶段105除了有一数据高速缓存107之外,还有执行逻辑106。该数据高速缓存107的运作是与在管线化阶段101-105中指令的执行平行,此运作方式确保那些有高度可能性被一应用程序的指令121-123所存取的数据已经存在于高速缓存107,因此当数据存取微指令(换言之,加载内存或储存内存微指令)进行到执行阶段105时,该执行逻辑106能够在一或两个管线时脉周期的内执行该数据的存取,而不是造成可能数以百计的时脉周期的程序延迟,只因为等待经由内存总线110到数据存储器108以执行该数据的存取。在一有效的高速缓存系统组态中,数据的加载与储存绝大部份发生在经由高速缓存总线109的执行逻辑106与数据高速缓存107之间,并且数据高速缓存107的运作方式是相对的透明于流经管线化阶段102-105的微指令流程,此运作方式确保数据实体的快取副本与系统内存108是同步且一致的。
MESI(修改,排他,共享,无效)(modified,exclusive,shared,invalid)是个普遍使用的协议,此协议是用以在一系统组态的内存108的共享区域内确保其高速缓存项目的一致性。虽然并未在图1中描述,但是为了使用同一数据运算的目的,在一计算机系统组态中的其它组件(未显示)是可以共享内存108的一些区域。举例而言,视讯卡可以与微处理器100共享内存108的一个区域,以便于存取微处理器100所产生的监视器显示数据。另一例则是在系统总线110上的多重组件可以经由从数据存储器108中的共享区域的数据读取及数据写入来彼此连络。架构性研究的详细叙述以提供使用MESI协议的动机并不在本发明的应用领域;此处只需了解MESI在确定系统内存108与区域高速缓存结构107的间数据的一致性的普遍应用。
因为经由内存总线110的作业需要数以百计的时脉周期才能完成,所以数据被以包含数个字节的区段形态在数据高速缓存107中移进及移出。这些区段称的为快取线。虽然快取线行宽(换言之,快取线的字节大小)会因不同的架构而改变,在现今的系统架构非常常见的有32-字节行宽,或64-字节行宽,或甚至128-字节行宽。
即使是最有效率的高速缓存结构107在从内存108,经由内存总线110,到高速缓存107的进行数据转移,不可避免地会有所延迟。但是在提供一快取线予高速缓存107之后,其随后的对该快取线内的数据实体的存取即不会发生重大的延迟,因为高速缓存107及其高速缓存总线109的速度是与微处理器100内其它逻辑的速度(例如执行逻辑106)相近的。
依照MESI协议,在区域数据高速缓存107内的快取线可处于下述任一四种状态中:修改,排他,共享,及无效。一修改状态的快取线是指在该快取在线执行一区域储存运算后,但是尚未与主存储器108同步化的快取线。监测来自其它组件(也称为总线组件的经由其内存总线110的内存作业是区域高速缓存107的责任,因此如果总线组件从一修改状态的快取线要求数据,则区域高速缓存107会将该修改过的数据送至该要求数据的总线组件。此种对总线110的监测称为总线窥视模式(bus snooping)。
一排他状态的快取线是指其区域高速缓存107可以在该快取在线执行储存运算的快取线。排他状态暗示其区域高速缓存107拥有对该快取线的排他所有权;微处理器100因此被许可修改其内容。
一共享状态的快取线是指存在于两个或数个在总线110上组件的区域高速缓存107内的快取线。因此,任一组件均可从共享的快取线读取数据,但均不被许可去修改其内容。为能在共享的快取在线修改数据(换言之,执行储存运算),在修改其内容之前,组件100需先经由内存总线110与其它组件实施适当的作业以取得该快取线的排他所有权(换言之,读取处于排他MESI状态的快取线到其区域高速缓存107)。一旦取得该快取线的排他所有权,即可执行储存运算,并且将该快取线状态变更为修改状态。在公告(posting)储存运算之前,先行要求快取线的排他所有权可以保证数据的一致性,因为在任一时间点,均只有一个组件100可以修改其快取线的内容。
当区域高速缓存107侦测到(经由窥视模式)经由内存总线110至其快取线的写入作业,或是当另一组件经由内存总线110发出总线作业以取得该快取线的排他所有权时,该快取线状态即变更为无效状态。将一快取线标示为无效表示其内的数据与内存108不一致而无法被读取或写入。
因为一高速缓存107的运作是与在微处理器管线中的指令流程平行,在程序流程120中,设计者需在数据的存取被要求之前,先提供预取宏指令122以加载该数据到一高速缓存107,因此得以克服数据必须起始的从内存108提取至高速缓存107所导致的延迟的缺点。在程序流程120中通常有一预取指令122以命令其区域高速缓存107从内存108加载一快取线,而此预取指令122与随后指令的执行是平行的,因此当程序流程120的指令123要从该快取线存取数据的时候,该快取线已经存于其高速缓存107中。在图1的例子中,一预取指令122,PREFETCHTO[EAX],命令由缓存器EAX的内容所定位的快取线被加载到高速缓存107,使得其内容可被随后的数据存取指令123,MOV EBX,[EAX],在数据流120中被执行时所使用,此数据存取指令123命令微处理器100从由缓存器EAX指定的地址读取数据,并且将其移至缓存器EBX。因为x86指令已被广泛的认知,为了简明起见,传统上前述数据流120内的预取指令122及数据存取指令123的描述是根据x86的指令集架构。但是熟悉此项技术者将发现,在许多其它的指令集架构也提供预取指令122以命令微处理器100从内存108读取一快取线至一区域高速缓存107,使得随后的指令123从该快取线执行一指定的数据读取运算不会发生延迟。如果预取指令是很明智的置于数据流120内,则可以有效的克服因为在高速缓存107的起始存取数据所造成的延迟,因此显著的改进程序的执行速度。当完成预取运算的一经由内存总线110的作业后,其所需求的快取线不是以排他状态(若是该区域高速缓存107拥有该快取线的唯一快取副本时),即是以共存状态(若是其它组件也拥有该需求快取线的快取副本时)存在于高速缓存107内。不论其在那一状态,在该快取线内的数据实体是可被立即读取(read)存取的。但是如前述所指明,为将数据写入到一快取线(换言之,执行一储存运算),需要拥有该快取线的排他所有权。因此,如果该预取运算导致快取处于排他状态的快取线,则一待决的储存即可立刻对此快取线公告。但是若该来自总线110的快取线是于共享状态,则一待决的储存必须被停滞(stalled),以等待该高速缓存单元107经由总线110发出作业以取得该快取线的排他所有权。在该快取线在排他状态下被送至高速缓存107之后,则该待决的储存即可被公告。
现请参阅图2,其为一方框图200,用以描述在图1的微处理器内执行预取运算的一接口至内存的高速缓存单元。该方框图200显示在微处理器201内被应用为执行预取运算的逻辑。该微处理器201内有一转译器210以接受一宏指令流程202并将其转译成对应的微指令211。用以命令对内存242作数据加载及储存运算的微指令211随后即被送到一高速缓存单元220。该高速缓存单元220包括记录逻辑221及一数据高速缓存222。该记录逻辑221耦接至一总线单元230。该总线单元230接口到一系统内存总线240,该系统内存总线并且与系统内存242及其它总线组件241耦接。
宏指令的示范流程202说明如何指定一预取运算及如何可在此预取的数据上执行随后的读取与储存运算。一个关于此运算序列在桌上型计算机上的常见范例是内存内计数器的读取及增加。一序列的预取,读取,及储存运算需要既可以在快取线内读取数据,也可以在快取线内修改数据。因此,示范流程的第一个宏指令202,PREFETCH[EAX],命令微处理器201去预取一地址对应于缓存器EAX内容的快取线。第二个宏指令202,MOVEBX,[EAX],命令微处理器201去读取一地址为缓存器EAX所指定的内存位置的内容,并将该内容写入缓存器EBX。第三个宏指令202,INC EBX,命令微处理器201增加缓存器EBX的内容。第四个宏指令202,MOVEAX,[EBX],命令微处理器201在对应于缓存器EAX内容的内存位置上储存该缓存器EBX的内容。上述详细的预取,读取,及储存运算仅仅是增加一个数值到地址由缓存器EAX所指定的内存。值得注意的是为了要有效的利用该预取指令202,必须在第二个宏指令202,MOV EBX,[EAX]之前提供充分的该预取指令202,使得因为加载由EAX的内容所指定的快取线的所造成的延迟,可以被中介的宏指令202的平行执行所吸收。但是,为了简明起见,该中介的宏指令202并未在方框图200中叙述。
转译器210将该预取宏指令202转译成一对应的预取微指令211,PREFETCH[EAX],然后送到高速缓存单元220。记录逻辑221询问数据高速缓存222以决定所要求的快取线是否已存在并且有效(换言之,即非处于无效状态)于数据高速缓存222内。若答案为否,则该记录逻辑221命令其总线单元230,经由其系统内存总线240,发出作业以从内存242取得所要求的快取线。若其它的总线组件241均无该所要求的快取线的副本时,则该记录逻辑221即将所要求的快取线以排他状态送到数据高速缓存222。若一或数个总线组件241拥有该要求的快取线的区域副本时,则该记录逻辑221即将该快取线以共享状态写入到数据高速缓存222。在前述任一状态,该所要求的快取线均存在于高速缓存222内以备随后的存取运算使用。
转译器210将第二个宏指令202转译成一加载微指令211,LDEBX,[EAX],命令微处理器加载地址为缓存器EAX所指定的内存的内容到缓存器EBX。如前图1所讨论的,微处理器内的执行逻辑(未显示)从高速缓存单元220要求该内存地址的内容。因为该快取线所有的内容,由于预取运算的结果已经存在于该数据高速缓存222中,所以其立即可用并且加载微指令211的执行不会有任何延迟。
第三个宏指令202被转译成一对应的增加微指令211,INC EBX,此指令命令执行逻辑将缓存器EBX的内容增加。因为不需要新的数据,所以该加载微指令211不会被送到高速缓存单元220。
最后,在流程中的第四个宏指令202被转译成一储存微指令211,ST[EAX],EBX,此指令命令执行逻辑去执行一数据储存运算,以将缓存器EBX的内容写入到地址由缓存器EAX内容所指定的内存位置。该储存微指令211从而以待决的储存运算形式被送到其高速缓存单元220。于是,记录逻辑221侦测到以待决的储存运算为目标的快取线存在于该数据高速缓存222。若该快取线是处于排他状态,则此待决的储存可立刻被公告并将该快取线的状态变更为修改状态。另一方面,若该快取线是处于共享状态,则该高速缓存单元220确定一停滞讯号223以暂停该微指令211在微处理器201的管线阶段中的进行,同时该执行逻辑221则命令其总线单元230,经由其内存总线240,执行作业以取得该快取线的排他所有权。一旦取得排他所有权,则可许可待决的储存对该快取线公告其数据,并且终止停滞讯号,从而继续程序的执行。
现在考虑一种运算形式只是单纯的写入数据到内存中而不需先读取数据,或是一种运算形式是会先读取数据,但是此形式确定预期有一储存运算会随后被公告。在这些案例中,只有对那些须先读取数据的案例执行预先的预取指令是确定可以将程序延迟减到最小。并且在这种案例中,若预取的结果使所要求的快取线处于排他状态,则可排除因储存运算所导致的程序延迟。但是若预取的结果使所要求的快取线处于共享状态,则因储存运算所导致的程序延迟将不可避免。这是个问题,因为现今的指令集架构并未提供一方法以命令微处理器201去排他的预取一快取线到数据高速缓存222。虽然响应一预取运算的快取线可以是排他的,但是此状态并不能保证。这是因为预取宏指令架构化的推定其预取的数据是会被读取,并且其结果经由系统总线的作业要求该快取线被提取,不论其是否处于共享状态。举例来说,在x86架构中,一x86预取指令的执行结果的经由总线240发出的作业是一数据读取运算。该数据读取运算要求一快取线的副本,并不管其是处于何种状态。
现请参阅图3A及3B,其显示一时脉图,用以描述由图1及图2所示的微处理器201所发出的两个可能的总线作业集301,302,此总线作业是经由内存总线240发出以执行一预取与随后的储存运算。此二作业集301,302包括在微处理器201内的从总线单元230到内存总线240的请求作业303,与同样在微处理器201内从内存总线240回到总线单元230的响应作业304。作业集301描述那些当回应一预取运算的快取线是排他状态时所执行的作业303-304。作业集302描述那些当回应一预取运算的快取线是共享状态时所执行的作业303-304。如同图2所述,当执行一预取指令时,记录逻辑221命令其总线单元230对其内存总线240发出一数据读取请求303,DATA READ[EAX],要求被缓存器EAX所指定的快取线被送到其区域高速缓存222。该数据读取请求303在作业集301是于时间点A发出,在作业集302则是于时间点D发出。该内存总线240于是响应发出一包括该所要求的快取线的数据响应请求304回到总线单元230。若该快取线是在排他状态,则在作业集301的数据响应请求304,DATA RESP[EAX].E,在时间点B被送回到总线单元230。若该快取线是在共享状态,则在作业集302的数据响应请求304,DATARESP[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该数据写入作业303始可对总线240公告。
值得注意的是图3A及3B中的作业集301,302是以一般性的方式表示,因为不同的微处理器架构应用不同的语义来说明总线作业303,304。除此之外,值得注意为了简明起见,在图3A及3B的时脉图中已经省略了先取得对数据总线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的指定数值为OF18H。一个或数个选用的前置码实体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微处理器,在不同程度的接近度下,预取数据到其高速缓存。举例来说,一个TO指示(换言之,数值001),命令微处理器预取一快取线到高速缓存层级体系的所有层级,而一NTA指示命令微处理器预取一快取线到一非暂时性高速缓存结构,并且进入一接近处理器的位置,同时将高速缓存污染减至最低程度。但是x86预取指示000-011编码的普遍特征是一经由总线发出的数据读取请求以要求一快取线的副本,并不会在乎该快取线是处于何种MESI状态。本发明的一具体实施例将一额外的指示编码进延伸地址指定元中,用以命令微处理器依据本发明利用一排他(.S)指示去预取一指定的快取线。图5显示一用x86 ModR/M字节的5:3位编码成数值100的预取-排他指示。当该prefetch.s指示依据本发明编码到一预取指令400时,则一相符的微处理器会被侦测到经由一内存总线发出作业以预取处于排他MESI状态的数据。在一x86的具体实施例中,如前述图3B所示,其响应于预取指令400的prefetch.s指示而发出的特定作业是一数据读取与无效作业。在图3B的例子中,该数据读取与无效作业是用以将快取线从共享状态提升至排他状态。
在x86指令集架构中,数值100的5:3位编码在此之前是被宣告为非法的,同表格500中数值101-111的5:3位编码所示。一非法的ModR/M字节编码造成一异常。但是依据本发明,在一x86的具体实施例中,该改善一预取-排他指示的额外编码是合法的,并且将导致前述的总线作业预取一处于排他状态的快取线。
众所周知,因为高速缓存构与内存间的互动是不存在于微处理器管线的指令流程中,所以延伸预取指令4400只能要求的预取是依据所提供的指示来执行。若一快取线现在并不被内存存取所占用时,则可执行预取运算。但若一快取线正被占用,则预取运算须被推迟,直到完成内存的存取。
现请参阅图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的内容。第四个宏指令,MOV EAX,[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取得该所要求的快取线。若其它的总线组件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,DATAREAD/INV[EAX],要求将被缓存器EAX所指定的快取线以排他的MESI状态送到其区域高速缓存722。该数据读取与无效请求801是于时间点A发出。若所要求的快取线是处于排他的MESI状态,则在时间点B,该内存总线740响应发出数据响应请求802,DATA RESP[EAX].E,回到总线单元230。在这时,一储存运算的数据可从该高速缓存222读取或写入到该高速缓存222,而不会导致总线作业延迟。如图8的时脉图800所示,当程序流内的一随后的储存指令命令微处理器修改该处于排他状态的快取线时,即在时间点C会发生一数据写入作业801,DATA WRITE[EAX],熟悉此项技术者将发现该数据写入作业801完全多余,因为该作业801并非取得一快取线的排他所有权所必须的作业。
同图3A及3B所示,图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的特定数值为OF18H。延伸地址指定元903是用以指定执行该特定类型的预取运算的执行。在一x86的具体实施例中,该延伸地址指定元903是ModR/M字节903。
同图4所示,依据本发明,当微处理器侦测到一预取宏指令900时,该微处理器被命令依据由延伸地址指定元403内容所指定的指示数值,去执行从内存预取数据到高速缓存。图5的编码范例也适用于描述在区段延伸地址指定元903的前置码指示的编码。但是若微处理器在该延伸预取指令内侦测到一重复前置码901,则微处理器会试图预取一指定数量在排他状态下的快取线到其区域高速缓存内,而此快取线的数量是由微处理器内的一架构缓存器指定。在一具体实施例中,快取线的数量是由x86兼容的微处理器内的缓存器ECX所指定。
请参阅图10,其为一方框图1000,用以描述在图6的微处理器600内执行区段预取与储存运算的一接口至内存的高速缓存单元。图10的微处理器1001内的组件的认证与运算类似于图7的微处理器701内的相似组件,只要将图7的百位数图号7用10来取代即可。为依据本发明以改进此区段预取运算,本发明使用一延伸转译器1010将有一重复前置码1002的延伸预取运算转译成微指令序列1011,用以命令执行一排他区段预取运算。除此之外,也使用一影子计数缓存器1013以加载自架构缓存器内的1012被预取的快取线的数量计数。并且使用延伸区段记录逻辑(extended block filllogic)1021以命令其总线单元1030要求排他的预取该指定区段的快取线,并将其送到其数据高速缓存1022。
为初始一排他的区段预取运算,第一个宏指令1002,MOV ECX,COUNT,是用以将架构缓存器ECX内被排他的预取的区段内的快取线的数量计数初始化。延伸转译器1010将该第一个宏指令转译成加载微指令1011,LDECX,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是描述当一被要求且处于排他状态的一区段的快取线,为依据本发明的包括一重复前置码的预取-排他宏指令所指定的意图进行储存运算的一区段预取的响应时,所执行的作业集1001,1002。根据上面的叙述,当执行一区段预取-排他指令时,该延伸记录逻辑1021命令其总线单元1030发出一多重的数据读取与无效请求1101,此请求并且对应于架构缓存器内所指定数量的快取线。该多重的请求包括该快取线区段内的所有快取线的地址,其地址为架构缓存器EAX的内容所起始指定。虽然该总线请求1101使用递增的地址次序,值得注意的是考虑到传统上不同的内存总线协议,本发明也包括递减的排序,随机的排序,及参差的排序。第一个数据读取与无效请求1101是在时间点A发出,第二个请求1101是在时间点B发出,以此类推,直到最后的请求在时间点D发出。在许多种架构中,总线请求1102是被标记的,以致于该请求开始于时间点C早于其最后的请求的完成。在时间点C,至少有在该区段内的一快取线是可被一待决的储存所使用。但是,为确保将延迟减到最小,最好是将该区段的快取线的储存运算推延至时间点E,此时所有的响应1102均已到达且处于排他状态。
若所要求的快取线是处于排他的MESI状态,则在时间点B,该内存总线740响应发出一数据响应请求802,DATA RESP[EAX].E,回到其总线单元230。在这时,一储存运算的数据可从其高速缓存222读取或写入到其高速缓存222,而不会导致总线作业延迟。请参阅前述有关图8的叙述,伴随一随后的储存指令所导致的一数据写入作业801,DATA WRITE[EAX],其执行并不会有作业延迟的现象,然而,该数据写入作业801并非起因于排他区段预取指令的执行。
现请参阅图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中,将进行一项检查用以判断该增加的计数是否等同于被预取的快取线的数量,该快取线线的数量储存于一影子缓存器(shadowregister)中。若答案为否,则流程进行到方框1320,于其中执行另一个重复(iteration)以提取一下一快取线。若计数等同于该影子缓存器的内容,则发出所有总线作业,同时流程进行到方框1328。
于方框1328中,本方法完成。
本发明可广泛的应用在解决相关于数据修改运算的高速缓存的问题。本发明也针对于程序员的希望能指令一微处理器以取得一快取线或一区段的快取线的排他所有权提供不同的具体实施例,并且该排他所有权的取得是意图为能重写(overwrite)数据于该已存有数据的该快取线或该区段的快取线。在该些情形下,完全不需要将快取线预取到区域高速缓存,只须将在该区域高速缓存内的该快取线配置成排他状态即可。本发明者也发现有许多内存总线架构均包括有一可被用以将快取线配置成排他状态的总线作业,并且该总线作业不须要有用以将快取线数据额外的从内存传输至区域高速缓存的附加信息,该总线作业称为零长度读取与无效作业(zero-length read andinvalidate transaction)。该零长度读取与无效作业命令所有拥有一特定快取线副本的总线组件将其状态转换成无效状态,该读取作业被称为零长度是因为没有任何数据会被转移以响应此作业。在图3A及3B的范例的时间点F时,因为数据已被读取,所以可以应用作业303以要求被EAX所指定的快取线的排他所有权。在图8的范例的时间点A,及在图11的范例的时间点A与B时,预取该特定快取线的内容与取得该特定快取线的排他所有权均为必须。但是在下述本发明的具体实施例中,因为程序员仅意图修改该些特定快取线的内容,故仅讨论取得排他所有权的范例。
如前所述,内存复制运算普遍的被应用在现今的应用程序,特别是用于组态视讯缓冲器。为翻新起见,大范围的影像显示是由数个小范围影像显示所组态而成,当一小范围影像显示组态完成后,其内容即被复制到该大范围影像显示的相对位置,并且可依据该应用程序的复杂程度,而决定一层级体系的递增范围大小。熟悉此项技术者将发现该些内存复制运算可在一区域微处理器高速缓存中,被非常有效的执行,因为大多数的区域高速缓存结构,并不需要实际将该高速缓存的一第一部份复制到该高速缓存的一第二部份以完成一内存复制;而只需更改该高速缓存第一部份的地址(换言之,来源位置),使其符合内存中一目的位置即可。可将此执行一内存复制的技术称为”更名”或”更名运算”。因此,一快取线被更名即为修改该快取线的地址或卷标以指向另一内存位置,而此同时并不会该变该快取线的内容。本发明的具体实施例显示本发明可提供程序员命令一微处理器经由延伸预取指令以将单一快取线或区段快取线更名的能力,并且该延伸预取指令的执行是平行于随后的程序指赠的执行。
现请参阅图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显示在微处理器1500内被应用为执行配置与更名运算的逻辑。微处理器1501的延伸转译器1510接收宏指令流程1502,并将该宏指令流程1502转译成对应的微指令1511。微指令1511在命令对内存1542做数据加载与储存运算之后,即被送到一延伸高速缓存单元1520。该延伸高速缓存单元1520包括延伸高速缓存逻辑1521及一数据高速缓存1522。该延伸高速缓存逻辑1521耦接至一总线单元1530。该总线单元1530系接口至一系统内存总线1540,此系统内存总线1540又与数据存储器1542及其它总线组件1541耦接。
宏指令的示范流程1502说明如何依照图14的编码100来指定一配置与更名运算,及如何对在区域高速缓存1522的一目的区域1525上执行隐含的储存运算,以促使该目的区域1525的内容得以匹配一来源区域1524的内容,因此得以完成一内存复制,或是完成一平行于随后的程序指令的执行的在区域高速缓存1522内的更名运算。
因此,转译器1510将一MOV EDI,#DEST宏指令1502转译成一LDEDI,#DEST微指令,此微指令用以命令微处理器1501将数值DEST加载到架构缓存器EDI 1505,其中,”DEST”为一第一快取线的地址,该第一快取线的地址是用以将一第二快取线SRC的内容复制于其上。该LD EDI,#DEST被送到执行逻辑(未显示),此执行逻辑将DEST加载到EDI 1505。紧接着,该转译器1510将一在此示范流程内的延伸配置与更名指令1502,PREF.R[SRC],转译成配置与更名微指令1511,PREF.R[SRC],此微指令是命令微处理器1501取得一快取线的排他存取权,该快取线的地址是由缓存器EDI1505所指定,并且在该区域高速缓存1522内执行一的更名运算,以将快取线SRC 1524的内容复制到快取线DEST 1525。在一选用具体实施例中,该延伸配置与更名指令1502,PREF.R[SRC],与其对应的微指令1511是命令该微处理器1501更进一步将快取线SRC 1524的内容写回(换言之,即清除),以释放出数据高速缓存的资源。该选用具体实施例是组态成可客克服使用”最近最少被使用者”(least-recently-used,LRU)算法做为管理高速缓存的缺陷,该LRU算法的缺陷当程序员意图释出快取线SRC 1524的资源时,该算法会指其违反最近最少被使用法则而无法释出。
该配置与更名微指令1511然后被送到其延伸高速缓存单元1520。在此延伸高速缓存单元1520中,延伸高速缓存逻辑1521命令总线单元1530经由系统内存总线1540发出零长度读取与无效作业,以取得要求自内存1542的快取线的排他所有权。当取得该被的快取线的排他所有权之后,该延伸高速缓存逻辑1521即命令该数据高速缓存1522将来源区域SRC 1524更名为EDI 1505所指定的目的地址,并且标明其MESI状态为修改。本发明的另一具体实施例则考虑在该高速缓存1522内的一复制运算,该复制运算为在取得该DEST的排他所有权之后,实际将SRC 1524的内容复制到DEST 1525的运算,而不是上述的更名运算。在该具体实施例中,一旦该更名运算完成后,该延伸高速缓存逻辑1521即命令总线单元1530经由系统内存总线1540发出数据写入作业,以清除(flush)SRC 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),或是将该第二快取线的高速缓存卷标更名为一指向对应的第一快取线的标签。流程接着可选择性的进行到选用方框1622,或是流程直接进行到方框1624。
于方框1618中,执行该随后的微指令序列。流程接着进行到方框1624。
于选用方框1622中,清除该第二快取线DEST的内容,以将其释回到内存。流程接着进行到方框1624。
于方框1624中,本方法完成。
图17为一方框图1700,用以描述在图6的微处理器1701内执行区段配置与更名运算的一接口至内存的高速缓存单元。图17的微处理器1701内的组件的认证与运算类似于图15的微处理器1501内的相似组件,只要将图15的百位数图号5用7来取代即可。依据本发明以改进此区段配置与更名运算,本发明使用一延伸转译器1710将一如图9所述的有重复前置码1702的延伸配置与更名指令转译成微指令序列1711,此微指令序列1711是用以命令执行区段预取与初始化运算。除此之外,也使用一影子计数缓存器1713,用以加载从架构缓存器1712 ECX配置与更名的快取线的数量计数。并且使用延伸区段高速缓存逻辑1721命令其总线单元1730要求一指定区段的快取线DEST 1725的排他所有权,并在取得该排他所有权后,即对该些在数据高速缓存1722内的快取线进行更名运算,以使其内容可匹配区段来源快取线SRC1724的内容,并且在内存复制运算完成之后,可以选择性的命令该总线单元清除该区段来源快取线SRC 1724的内容,以将其释回至内存1742。
为初始一区段配置与更名运算,第一个宏指令1002,MOVECX,#COUNT,是用以将架构缓存器ECX内将配置与更名的区段1725内的快取线的数量计数初始化。延伸转译器1710将该第一个宏指令转译成加载微指令1711,LD ECX,#COUNT,此微指令命令微处理器1701将计数加载ECX 1712。当该计数被加载到ECX 1712后,此计数也被透明的复制到影子计数缓存器1713,SHECX。同时,其它的指令1702则可在不干扰到配置与更名运算的计数的情况下,修改其架构缓存器1712的内容。
在计数被初始化之后,第二个宏指令1702,MOV EDI,#DEST被送到转译器1710,此宏指令1702是用以命令微处理器1701将一指定地址,DEST,加载到架构缓存器EDI 1705。转译器1710将第二个宏指令1702转译成一加载微指令,LD EDI,#DEST微指令,此微指令用以命令微处理器1701将数值DEST加载到EDI 1705。
在将数值数值DEST载入到EDI 1705之后,紧接着,该延伸转译器1710转译一区段配置与更名指令1702,REP.PREF.R[SRC],此指令命令微处理器1701将被ECX所指定数量的处于排他状态的快取线配置与更名到区域高速缓存,该配置与更名到区域高速缓存的快取线包括该些被EDI 1705的内容所指定的快取线。以响应命令该排他区域配置与更名运算的微指令序列1711,该延伸区段高速缓存逻辑1721命令其总线单元1730经由其内存总线1740要求包括地址为DEST的该些快取线的排他所有权,而在取得该排他所有权的后,该延伸区段高速缓存逻辑1721即将每一被其所计数的快取线配置到数据高速缓存1722,并且将地址SRC 1724的内容复制到该些被计数的快取线。在完成该配置与更名运算后,也可选择性的将地址SRC 1724的内容清除,以释放出资源予内部高速缓存。
现请参阅图18,其为描述依据本发明执行一高速缓存数据区段配置与更名运算方法的流程图1800。
流程开始于方框1802,在此处,依据本发明,一连串的宏指令被送到一指令队列。流程接着进行到方框1804。
于方框1804中,一个随后的宏指令被从该指令队列中提取,并将其送到一延伸转译器。流程接着进行到判断方框1806。
于判断方框1806中,将进行一项检查用以判断该随后的宏指令是否为一区段配置与更名指令。若答案为是,则流程进行到方框1810。若答案为否,则流程进行到方框1808。
于方框1810中,一侦测到的区段配置与更名指令被转译成一区段配置与更名微指令序列,此微指令序列是用以命令微处理器去取得一指定数量的第一快取线的排他所有权,并且将该第一快取线的一目的地址的内容修改成与第二快取线的一来源地址的内容相同。流程接着进行到方框1812。
于方框1808中,该宏指令被转译成一对应的微指令序列,此微指令序列用以命令微处理器去执行一指定的运算。流程接着进行到方框1812。
于方框1812中,一个随后的微指令序列被送到微处理器内的执行逻辑。流程接着进行到判断方框1814。
于判断方框1814中,将进行一项检查用以判断该随后的微指令序列是否为一区段配置与更名微指令序列。若答案为是,则流程进行到方框1818。若答案为否,则流程进行到方框1816。
于方框1816中,执行该随后的微指令序列。流程接着进行到方框1830。
于方框1818中,为响应该区段配置与更名微指令序列,将一暂时的计数器初始化成数值零以监测该将被排他的配置与更名的一区段快取线内快取线的数量。流程接着进行到方框1820。
于方框1820中,第一来源快取线地址SRCADDR及第一目的快取线地址DSTADDR是由一第一配置与更名运算所指定。该第一目的快取线地址DSTADDR来自于一已预先加载的架构缓存器的内容,再加上一乘以方框1818的计数的快取线行宽。由于该计数初始为零,所以该第一快取线地址等同于该架构缓存器所指定的地址。流程接着进行到方框1822。
于方框1822中,经由内存总线发出一数据读取与无效作业,用以将该地址为DSTADDR的第一快取线配置为处于排他的MESI状态。流程接着进行到方框1824。
于方框1824中,该配置为处于排他的MESI状态的地址为DSTADDR的第一快取线将被修改以包括该地址为SRCADDR的第一来源快取线的内容,在本发明的一具体实施例中,SRCADDR的内容是被复制到该DSTADDR。在本发明的另一具体实施例中,DSTADDR更名为SRCADDR。在本发明的另一选择性具体实施例中,SRCADDR的内容更进一步被清除以将其释回到内存。流程接着进行到方框1826。
于方框1826中,将该计数增加后,流程接着进行到方框1828。
于判断方框1828中,将进行一项检查用以判断该增加后的计数是否等同于被配置与更名的快取线的数量,该快取线的数量是储存于影子缓存器中。若答案为否,则流程进行到方框1820,于此处再进行另一个迭代(iteration)以配置与更名一下一快取线。若计数等同于该影子缓存器的内容,则对该区段快取线的所有配置与更名运算均已完成,流程进行到方框1830。
于方框1830中,本方法完成。
虽然本发明及其目的、特征与优点已详细叙述,其它具体实施例仍涵盖在本发明的范围内。例如,在此描述了依照MESI协议时,本发明对于待决的储存运算或消除的(eliminating)储存运算所具有的优点。选择MESI作为本发明的例子是因为其在本技术领域中的广泛应用。但是,值得注意的是本发明提供预取的数据到一区域高速缓存,其形式或状态使得该数据可立即被修改,而不需发出作业到内存总线。该形式或状态是否依照MESI并不重要。
如前所述,不同的架构使用不同的快取线行宽。在桌上型计算机系统中,现今普遍使用32-字节的快取线。但是在本发明中使用的叙述并不限制本发明应用于32-,64-,128-,或甚至于256-字节的快取线。相反的,本发明预期可应用在任何限制其区域快取线的修改且不提供直接预取这些快取线的系统架构,以至于该快取线可立即被修改而不必需依靠总线作业以取得修改许可。
此外,本发明使用相符于x86架构的具体实施例作为例证。无疑的,x86-兼容的微处理器可以从应用本发明得到益处,但值得注意的是本发明的应用范畴并不只限于x86-兼容的环境,因为仍有许多不同的架构所应用的预取指令也不能保证其结果为排他的数据。
最后,值得注意的是,虽然在此处应用一地址指定元以指定被配置与更名的快取线的地址,此种指定方式并不需是显示的(explicit)。一个依据本发明的配置与更名指令的具体实施例可以隐含的(implicitly)指定一包含该地址的架构缓存器,此处是由一先前执行的指令将该地址加载到该架构缓存器。
总之,以上所述仅为本发明的较佳实施例而已,当不能以此限定本发明所实施的范围。凡依本发明权利要求所作的均等变化与修饰,皆应属于本发明专利涵盖的范围内。

Claims (22)

1.一种微处理器装置,用以执行一区段内存复制运算,该装置包含:
一转译逻辑,组态成将一区段配置与更名指令转译成一微指令序列,用以命令一微处理器将一快取线第一区段配置为一排他状态,并且将一快取线第二区段的内容复制到该快取线第一区段;以及
一执行逻辑,其耦接至该转译逻辑,组态成接收该微指令序列,并发出作业至要求处于该排他状态的该快取线第一区段的一内存总线上,并将该快取线第二区段的内容复制到该快取线第一区段。
2.如权利要求1所述的微处理器装置,其中该区段配置与更名指令包含对在一现存指令集内的一现存预取指令的修改,并且其中该现存预取指令原本不提供该快取线第一区段的配置与更名。
3.如权利要求2所述的微处理器装置,其中该现存指令集包含x86指令集,并且其中该现存预取指令包含此x86的预取指令。
4.如权利要求2所述的微处理器装置,其中该区段配置与更名指令包含在一延伸地址指定元实体的一重复前置码与一预取运算码字段,其中该预取运算码字段的一指定数值命令该微处理器将一第一目的快取线配置成该排他状态,并将一第一来源快取线的内容复制到该第一目的快取线,且其中该预取运算码字段的其它数值命令该微处理器依照该现存指令集执行其它类型的预取运算。
5.如权利要求4所述的微处理器装置,其中该预取运算码字段包含在一x86预取指令的ModR/M字节内的5:3位。
6.如权利要求5所述的微处理器装置,其中该重复前置码字段命令该微处理器配置与更名一指定数量的快取线,并且其中该指定数量的快取线包含该第一目的快取线。
7.如权利要求6所述的微处理器装置,其中该指定数量是由该微处理器内的一架构缓存器的内容所指定。
8.如权利要求1所述的微处理器装置,其中,为响应该微指令序列,该执行逻辑命令一总线单元经由该内存总线发出该些作业。
9.如权利要求7所述的微处理器装置,其中该些作业包含一多重的零长度读取与无效作业,该些作业要求该快取线第一区段的排他所有权。
10.如权利要求1所述的微处理器装置,其中还包括一架构缓存器,该架构缓存器内容包含该快取线第一区段的快取线数量,该快取线数量透明的复制到一影子缓存器,并且此处该执行逻辑应用该影子缓存器以执行该区段内存复制运算。
11.如权利要求1所述的微处理器装置,其中该执行逻辑清除该快取线第二区段的内容,以将该快取线第二区段释回到内存。
12.一种微处理器中的装置,用以执行一区段更名运算,该装置包含:
一区段配置与更名指令,组态成命令微处理器将一快取线第一区段配置成一排他状态,并且将一快取线第二区段的内容复制到该快取线第一区段;以及
一转译器,组态成接收该区段配置与更名指令,并将该区段配置与更名指令转译成相关的微指令,在其中该相关的微指令命令在微处理器内的执行逻辑经由一内存总线发出多重的总线作业,用以要求该快取线第一区段的排他所有权,并且将该快取线第二区段的内容复制到该快取线第一区段。
13.如权利要求12所述的微处理器中的装置,其中该区段配置与更名指令包含对在一现存指令集内的一现存预取指令的修改,并且其中该现存预取指令原本不提供该区段更名运算。
14.如权利要求12所述的微处理器中的装置,其中,为响应该相关的微指令,该执行逻辑命令一总线单元经由该内存总线发出该些总线作业。
15.如权利要求14所述的微处理器中的装置,其中该些总线作业包含一多重的零长度读取与无效作业。
16.如权利要求12所述的微处理器中的装置,其中还包括一架构缓存器,该架构缓存器内容包含该快取线第一区段的快取线数量,该快取线数量是透明的复制到一影子缓存器,并且此处该执行逻辑应用该影子缓存器以执行该区段内存复制运算。
17.一种执行一区段内存复制运算的方法,包含:
提取一区段配置与更名的宏指令;
将此区段配置与更名宏指令转译成微指令序列,其中该微指令序列用以命令一微处理器将一快取线第一区段配置成排他状态,并且将一快取线第二区段的内容复制到该快取线第一区段;以及
响应此微指令序列,经由内存总线发出总线作业将该快取线第一区段配置成排他状态,并且将该快取线第二区段的内容复制到该快取线第一区段。
18.如权利要求17所述的方法,其中该发出动作包含:
致能该微处理器平行地执行该发出动作与随后的指令。
19.如权利要求17所述的方法,其中该提取包含:
提供该区段配置与更名指令作为对在一现存指令集内的一现存预取指令的修改,其中该现存预取指令原本不提供将该快取线第一区段配置成排他状态,并且将该快取线第二区段的内容复制到该快取线第一区段。
20.如权利要求17所述的方法,其中该发出动作包含:
提供经由内存总线的一多重的零长度读取与无效作业,该些作业要求该快取线第一区段排他所有权。
21.如权利要求17所述的方法,还包含:
透明的复制一架构缓存器的内容到一影子缓存器,该架构缓存器包含该区段内存复制运算的快取线数量。
22.如权利要求17所述的方法,其中该复制动作包含:
清除该快取线第二区段的内容,以将该快取线第二区段释回到内存。
CNB200410001593XA 2003-04-02 2004-01-14 变更高速缓存数据区段的方法与装置 Expired - Lifetime CN100461135C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/405,980 US7111125B2 (en) 2002-04-02 2003-04-02 Apparatus and method for renaming a data block within a cache
US10/405,980 2003-04-02

Publications (2)

Publication Number Publication Date
CN1514374A true CN1514374A (zh) 2004-07-21
CN100461135C CN100461135C (zh) 2009-02-11

Family

ID=32850634

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB200410001593XA Expired - Lifetime CN100461135C (zh) 2003-04-02 2004-01-14 变更高速缓存数据区段的方法与装置

Country Status (4)

Country Link
US (1) US7111125B2 (zh)
EP (1) EP1465077B1 (zh)
CN (1) CN100461135C (zh)
TW (1) TWI257067B (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 (28)

* 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
US20070038984A1 (en) * 2005-08-12 2007-02-15 Gschwind Michael K Methods for generating code for an architecture encoding an extended register specification
US9367465B2 (en) * 2007-04-12 2016-06-14 Hewlett Packard Enterprise Development Lp Method and system for improving memory access performance
US8122195B2 (en) 2007-12-12 2012-02-21 International Business Machines Corporation Instruction for pre-fetching data and releasing cache lines
US9164690B2 (en) * 2012-07-27 2015-10-20 Nvidia Corporation System, method, and computer program product for copying data between memory locations
US9547553B1 (en) 2014-03-10 2017-01-17 Parallel Machines Ltd. Data resiliency in a shared memory pool
US9781027B1 (en) 2014-04-06 2017-10-03 Parallel Machines Ltd. Systems and methods to communicate with external destinations via a memory network
US9690713B1 (en) 2014-04-22 2017-06-27 Parallel Machines Ltd. Systems and methods for effectively interacting with a flash memory
US9529622B1 (en) 2014-12-09 2016-12-27 Parallel Machines Ltd. Systems and methods for automatic generation of task-splitting code
US9477412B1 (en) 2014-12-09 2016-10-25 Parallel Machines Ltd. Systems and methods for automatically aggregating write requests
US9753873B1 (en) 2014-12-09 2017-09-05 Parallel Machines Ltd. Systems and methods for key-value transactions
US9639473B1 (en) 2014-12-09 2017-05-02 Parallel Machines Ltd. Utilizing a cache mechanism by copying a data set from a cache-disabled memory location to a cache-enabled memory location
US9781225B1 (en) 2014-12-09 2017-10-03 Parallel Machines Ltd. Systems and methods for cache streams
US9690705B1 (en) 2014-12-09 2017-06-27 Parallel Machines Ltd. Systems and methods for processing data sets according to an instructed order
TWI590053B (zh) * 2015-07-02 2017-07-01 威盛電子股份有限公司 選擇性預取實體接續快取線至包含被載入分頁表之快取線
US10140052B2 (en) 2015-11-05 2018-11-27 International Business Machines Corporation Memory access in a data processing system utilizing copy and paste instructions
US9996298B2 (en) 2015-11-05 2018-06-12 International Business Machines Corporation Memory move instruction sequence enabling software control
US10241945B2 (en) 2015-11-05 2019-03-26 International Business Machines Corporation Memory move supporting speculative acquisition of source and destination data granules including copy-type and paste-type instructions
US10042580B2 (en) 2015-11-05 2018-08-07 International Business Machines Corporation Speculatively performing memory move requests with respect to a barrier
US10126952B2 (en) 2015-11-05 2018-11-13 International Business Machines Corporation Memory move instruction sequence targeting a memory-mapped device
US10067713B2 (en) 2015-11-05 2018-09-04 International Business Machines Corporation Efficient enforcement of barriers with respect to memory move sequences
US10331373B2 (en) * 2015-11-05 2019-06-25 International Business Machines Corporation Migration of memory move instruction sequences between hardware threads
US10346164B2 (en) 2015-11-05 2019-07-09 International Business Machines Corporation Memory move instruction sequence targeting an accelerator switchboard
US10152322B2 (en) * 2015-11-05 2018-12-11 International Business Machines Corporation Memory move instruction sequence including a stream of copy-type and paste-type instructions
CN111782273B (zh) * 2020-07-16 2022-07-26 中国人民解放军国防科技大学 一种提高重复程序执行性能的软硬件协同缓存装置
US20220197656A1 (en) * 2020-12-22 2022-06-23 Intel Corporation Instruction and logic for code prefetching
US11853237B2 (en) * 2021-11-19 2023-12-26 Micron Technology, Inc. Input/output sequencer instruction set processing
CN117640262B (zh) * 2024-01-26 2024-04-09 杭州美创科技股份有限公司 数据资产隔离方法、装置、计算机设备及存储介质

Family Cites Families (33)

* 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
GB8814633D0 (en) * 1987-11-18 1988-07-27 Ibm Bus flow control mechanism
EP0375883A3 (en) 1988-12-30 1991-05-29 International Business Machines Corporation Cache storage system
GB2263565B (en) * 1992-01-23 1995-08-30 Intel Corp Microprocessor with apparatus for parallel execution of instructions
JP2737820B2 (ja) * 1992-09-24 1998-04-08 インターナショナル・ビジネス・マシーンズ・コーポレイション メモリアクセス方法およびシステム
JP2500101B2 (ja) * 1992-12-18 1996-05-29 インターナショナル・ビジネス・マシーンズ・コーポレイション 共用変数の値を更新する方法
US5694564A (en) * 1993-01-04 1997-12-02 Motorola, Inc. Data processing system a method for performing register renaming having back-up capability
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
US5435001A (en) * 1993-07-06 1995-07-18 Tandem Computers Incorporated Method of state determination in lock-stepped processors
JPH09205342A (ja) 1996-01-26 1997-08-05 Matsushita Electric Ind Co Ltd 弾性表面波フィルタ
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
US5960169A (en) * 1997-02-27 1999-09-28 International Business Machines Corporation Transformational raid for hierarchical storage management system
US6018763A (en) * 1997-05-28 2000-01-25 3Com Corporation High performance shared memory for a bridge router supporting cache coherency
US6587931B1 (en) * 1997-12-31 2003-07-01 Unisys Corporation Directory-based cache coherency system supporting multiple instruction processor and input/output caches
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
US6842830B2 (en) * 2001-03-31 2005-01-11 Intel Corporation Mechanism for handling explicit writeback in a cache coherent multi-node architecture
CN1142485C (zh) * 2001-11-28 2004-03-17 中国人民解放军国防科学技术大学 流水线控制相关延迟消除方法
US6915415B2 (en) * 2002-01-07 2005-07-05 International Business Machines Corporation Method and apparatus for mapping software prefetch instructions to hardware prefetch logic
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
EP1465077A3 (en) 2007-12-05
EP1465077B1 (en) 2018-05-09
EP1465077A2 (en) 2004-10-06
US20030229763A1 (en) 2003-12-11
TW200421175A (en) 2004-10-16
US7111125B2 (en) 2006-09-19
CN100461135C (zh) 2009-02-11
TWI257067B (en) 2006-06-21

Similar Documents

Publication Publication Date Title
CN1514374A (zh) 变更高速缓存数据区段的方法与装置
CN1297885C (zh) 高速缓存数据区段的配置与初始化机制
CN1186729C (zh) 从虚地址计算页表索引的方法和装置
CN1514373A (zh) 对高速缓存界线进行更名的装置与方法
CN1175341C (zh) 异步更新共享资源的接口系统和方法
CN1304960C (zh) 用于实现文件的写入时复制的方法和系统
CN1197014C (zh) 内部存储器型抗篡改处理器及保密方法
CN1225690C (zh) 快取线配置与初始化之装置及方法
CN1266589C (zh) 多重高速缓冲存储器线写回和作废技术
CN1630849A (zh) 安全执行模式下信任客户使用安全核心系统
CN1399736A (zh) 用于处理器的转移指令
CN1265285C (zh) 预取区段内存以进行储存的装置及方法
CN1399739A (zh) 并行处理器结构的sram控制器
CN1387649A (zh) 并行处理器结构
CN1178942A (zh) 利用寄存器更名实现自并行化
CN101031888A (zh) 用于直接存储器存取地址转换的错误处理
CN1387644A (zh) 并行处理器体系结构的sdram控制器
CN1218222A (zh) 数据序列产生方法及设备、转换方法及计算机
CN1243311C (zh) 实现重叠操作的方法和系统
CN1967506A (zh) 高速缓存存储器处理器中的合并入口
CN1095133C (zh) 多处理器计算机系统中共享结果数据的方法,装置和系统
CN1726460A (zh) 提高控制推测的性能的机制
US20140173244A1 (en) Filtering requests for a translation lookaside buffer
CN1266588C (zh) 意图进行存储的预取机制
CN1504902A (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: 20090211

CX01 Expiry of patent term