CN1466716A - 以辅助处理器预取用于主要处理器的指令的方法和装置 - Google Patents

以辅助处理器预取用于主要处理器的指令的方法和装置 Download PDF

Info

Publication number
CN1466716A
CN1466716A CNA018162746A CN01816274A CN1466716A CN 1466716 A CN1466716 A CN 1466716A CN A018162746 A CNA018162746 A CN A018162746A CN 01816274 A CN01816274 A CN 01816274A CN 1466716 A CN1466716 A CN 1466716A
Authority
CN
China
Prior art keywords
executable code
instruction
processor unit
main processor
simple version
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
CNA018162746A
Other languages
English (en)
Other versions
CN1207659C (zh
Inventor
S
S·乔杜里
���˹�����ײ�˹
M·特伦布莱
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of CN1466716A publication Critical patent/CN1466716A/zh
Application granted granted Critical
Publication of CN1207659C publication Critical patent/CN1207659C/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • 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
    • 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/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明的一个实施例提供了一种系统,其通过使用一个辅助处理器在一个主要处理器之前执行预取操作来预取指令。通过在该主要处理器上执行可执行代码且同时在该辅助处理器上执行一个简化版本的可执行代码来操作该系统。这个简化版本的可执行代码比该可执行代码执行更加迅速,并且在该主要处理器需要该指令之前,为该主要处理器执行预取操作。该系统也存储该预取指令到一个由该主要处理器可访问的高速缓存,从而无需从主内存取回该预取指令,该主要处理器即能够访问该预取指令。在本发明的一个实施例中,在执行该可执行代码之前,该系统编译源代码为用于该主要处理器的可执行代码。然后,该系统对该可执行代码进行程序概要分析以产生该可执行代码频繁涉及部分的指令追踪。然后,该系统通过产生预取指令而将该指令追踪部分预取到一个该主要处理器可访问的高速缓存中,产生用于该辅助处理器的可执行代码的简化版本。该系统也插入通信指令到用于主要处理器的该可执行代码和用于辅助处理器的可执行代码的简化版本中,以从该主要处理器传送进展信息给该辅助处理器。这个进展信息触发该辅助处理器执行预取操作。

Description

以辅助处理器预取用于主要处理器的指令的方法和装置
背景资料
发明领域
本发明涉及用于改善计算机系统性能的技术。更具体地说,本发明涉及一种在主要处理器开始操作之前通过用辅助处理器执行预取操作而从内存中预取指令的方法和装置。
相关技术
由于半导体集成密度提高,允许更多的晶体管被集成在一个微处理器芯片上,计算机设计师正在研究以不同的方法使用这些晶体管以提高计算机系统性能。为此目的,计算机设计者正在着手合并多个中央处理单元(CPU)为单个半导体芯片。这可以导致用于计算任务的性能增益,该计算任务可以被并行化(分解)为可同时执行的独立的部分。
令人遗憾的是,在许多包含固有的代码串行部分的应用中,得自并行化的性能增益会受到限制。对于这些固有的代码串行部分,由于内存延迟问题,性能受到进一步限制。
随着处理器时钟速度持续以指数速度改善,内存延迟问题正在变得更加恶化。以现在的处理器时钟速度,要用多达200个处理器时钟周期从主要内存拉出一个高速缓存线(cache line)。
计算机设计者们目前使用许多技术降低内存延迟:(1)可利用乱序执行(out-of-order)计划加载和存储,从而尽可能地隐藏内存延迟。令人遗憾的是,乱序执行典型地受限于隐藏少许的内存延迟的时钟周期。(2)当地址无效时可利用无故障加载(non-faulting load)指令推测性地加载一个数据值而不引起故障。(3)可利用导引加载(steeringload)指令推测地加载一个数据值进入二级缓存(L2 cache)而非一级缓存(L1 cache),以使得一级缓存不会被未用过的数据值所污染。令人遗憾的是,使用无故障加载和导引加载可能导致不必要的加载。这会浪费指令高速缓存空间并且占用寄存器。(4)某些研究人员已经试验使用硬件预取引擎,但是这些硬件预取引擎典型地对于不规则的内存存取模式是无效的。
在指令取出操作期间,内存延迟也可能成为一个问题。请注意,一个指令高速缓存失误可能引起与数据数据高速缓存失误一样多的延迟。也请注意,推算下一个很可能要执行的指令是非常困难的,因为通常要有许多的分支和功能调用分散到以现代编程语言编写的程序代码中。
现在需要的是一种在指令取出操作期间减少内存延迟的方法和装置。
发明内容
本发明的一个实施例提供了一种系统,该系统通过使用一个辅助处理器而在一个主要处理器之前执行预取操作来预取指令。通过在该主要处理器上执行可执行代码,并且同时在该辅助处理器上执行一个简化版本的可执行代码来操作该系统。这个简化版本的可执行代码比该可执行代码执行起来更加迅速,并且在该主要处理器需要指令之前,为该主要处理器执行预取操作。该系统也将该预取指令存储到一个可由该主要处理器访问的高速缓存中,从而无需从主要内存取回该预取指令,该主要处理器就能够访问该预取指令。
在本发明的一个实施例中,在执行该可执行代码之前,该系统将源代码编译成用于该主要处理器的可执行代码。然后,该系统对该可执行代码进行概要程序分析(profile),以产生用于该可执行代码频繁涉及部分的指令追踪。然后,该系统通过产生预取指令而将该指令追踪部分预取到一个该主要处理器可访问的高速缓存中,产生用于该辅助处理器的可执行代码的简化版本。该系统也将通信指令插入到该可执行代码(其用于主要处理器)和可执行代码的简化版本(其用于辅助处理器)中,以将进展信息从该主要处理器传送给该辅助处理器。这个进展信息触发该辅助处理器执行该预取操作。
在本发明的一个实施例中,编译源代码的过程和产生可执行代码的简化版本的过程是由一个编译器执行的。
在本发明的一个实施例中,如果给辅助处理器的该进展信息表示该辅助处理器已经沿着错误的路径预取指令,该可执行代码的简化版本使得该辅助处理器中断预取。
在本发明的一个实施例中,该可执行代码的简化版本被配置为从专用的硬件读取控制流程历史信息,该专用硬件记录分支历史信息和调用历史信息。然后,该可执行代码的简化版本基于该控制流程历史信息构成一个经由该可执行代码推算的路径,然后执行沿着该推算路径的预取操作,以便预取用于该主要处理器的指令。
在本发明的一个实施例中,产生该可执行代码的简化版本,包括构成一个用于该可执行代码的控制流程图。在这样操作时,该系统从该控制流程图中除去循环,并且除去与该控制流程图无关的可执行代码指令。该系统也将该预取指令插入到该可执行代码的简化版本中,以从该可执行代码中预取用于该主要处理器的指令。
在本发明的一个实施例中,执行预取操作包括预取包含用于该主要处理器的多个指令的高速缓存模块。
在本发明的一个实施例中,该系统经由一个单向通信信道周期性地从该主要处理器发送该进展信息给该辅助处理器。
在本发明的一个实施例中,该主要处理器和该辅助处理器驻留在相同的半导体芯片上。
在本发明的一个实施例中,该主要处理器和该辅助处理器驻留在不同的半导体芯片上。
在本发明的一个实施例中,该辅助处理器是该主要处理器的一个简化版本。
附图简要说明
图1举例说明一个按照本发明实施例的计算机系统。
图2举例说明按照本发明一个实施例的编译过程。
图3是一个流程图,举例说明按照本发明一个实施例产生可执行代码的简化版本的过程。
图4举例说明按照本发明一个实施例用以简化可执行代码的结构例子。
图5是一个流程图,举例说明按照本发明一个实施例如何去构成可执行代码的简化版本的细节。
图6是一个流程图,举例说明按照本发明的一个实施例,当确定已经沿着错误的路线进行的时候,如何弹射出(bail out)可执行代码的简化版本。
图7是一个流程图,举例说明按照本发明的一个实施例,如何通过从专用的硬件读取控制流量历史信息而操作该可执行代码的简化版本。
图8举例说明按照本发明的一个实施例的用于存储控制流量历史信息的专用硬件。
图9举例说明按照本发明的一个实施例的简化可执行代码的范例部分。
详细说明
给出以下说明书以使得所有的所属技术领域的专业人员能够实现和使用本发明,并且在上下文中提供了特定的应用及其要求。对那些本领域技术人员来说,显然易于对所公开的实施例作各种各样的修改,并且在此处所规定的原理可以适用于其他的实施例和应用,且无需脱离本发明的精神和范围。因此,本发明并非意在受限于所示实施例,而是要求有与在此公开的原理和特点一致的最宽范围。
在这个详细的说明书中描述的数据结构和代码典型地存储于计算机可读存储介质上,该计算机可读存储介质可以是任何存储供计算机系统使用的代码和/或数据的设备或者介质。这包括(但不局限于)磁性和光存储设备,诸如磁盘驱动器、磁带、CD(光盘)和DVD(数字视频磁盘),计算机指令信号包含在传输媒介中(当该信号被调制时有或者没有载波)。例如,该传输媒介可以包括一个通信网络,诸如因特网。计算机系统
图1举例说明一个按照本发明实施例的计算机系统101。计算机系统101包括一个主要处理器102和一个辅助处理器104。所有的这些构件驻留于硅片100上(虽然在本发明的其它实施例中它们可以驻留于多个硅片上)。
处理器102和104包括指令高速缓存112和120,其分别包括由处理器102和104执行的指令。
处理器102和104还另外包括加载缓冲器114和122以及存储缓冲器116和124,分别用于缓冲与数据高速缓存107和106的通信。更具体地说,主要处理器102包括加载缓冲器114(用于缓冲从数据高速缓存107接收的加载)和存储缓冲器116(用于对数据高速缓存107缓冲存储)。类似地,辅助处理器104包括加载缓冲器122(用于缓冲从数据高速缓存106接收的加载)和存储缓冲器124(用于缓冲对数据高速缓存106所做存储)。
处理器102和104另外通过单向通信信道128~129而连接在一起,单向通信信道128~129便于在主要处理器102和辅助处理器104之间进行快速通信。请注意,通信信道128允许主要处理器102去写入在辅助处理器104内的寄存器126。类似地,通信信道129允许辅助处理器104去写入在主要处理器102内的寄存器127。
与使用共享内存通信机构不同,写入寄存器126(或者127)不会引起高速缓存失误或者相关业务量。此外,主要处理器102没有必要等到辅助处理器104接收到该通信才继续处理。相比之下,如果主要处理器102经由内存与辅助处理器104进行通信,为了通信该系统将必须等候存储缓冲器116被清除。
在本发明的一个实施例中,数据高速缓存106和107是16K字节、带有32字节高速缓存线的4路相关设置数据高速缓存。
数据高速缓存106、数据高速缓存107、指令高速缓存112以及指令高速缓存120经由开关110被连接至二级缓存113。开关110可以包括用于转换信号线路的任何类型的电路。在本发明的一个实施例中,开关110是一个纵横开关。
二级缓存是一个很大的合成一体的高速缓存,用于存储主要处理器102和辅助处理器104两者的指令和数据。二级缓存113被连接至存储控制器111,存储控制器111自身连接至动态随机存取存储器(DRAM)108(其位于芯片之外)。
DRAM 108包含用于主要处理器102的可执行代码130。在系统操作期间,可执行代码130经由存储控制器111、二级缓存113和开关110被加载进主要处理器102的指令高速缓存112中。DRAM 108还包括用于辅助处理器104的简化的可执行代码132。简化的可执行代码132是可执行代码130的简化版本,其产生与可执行代码130相同的存储参考模式。在系统操作期间,简化的可执行代码132经由存储控制器111、二级缓存113和开关110被加载进辅助处理器104的指令高速缓存120中。DRAM 108另外包含数据134,其经由存储控制器111、二级缓存113和开关110而往返传送于数据高速缓存106~107。
请注意,本发明可以在包含多个处理器的所有计算机系统中使用,并且不局限于举例说明的计算机系统结构。
也请注意,在本发明的一个实施例中,辅助处理器104用于在主要处理器102使用指令之前对该指令进行存取。在这个实施例中,辅助处理器104不必实际执行在程序中指定的所有计算,辅助处理器104只需要执行足够的计算,以允许辅助处理器104去确定该程序的指令存取模式。因此,辅助处理器104可以是主要处理器102的远为简单的版本,除去不是为执行指令地址计算所必需的电路(例如除法器和乘法器电路)。编译过程
图2举例说明按照本发明一个实施例的编译过程。在该编译过程期间,源代码202通过编译器204馈给,以产生用于主要处理器102的可执行代码130。可执行代码130然后通过简化模块208而馈给,以产生用于辅助处理器104的简化可执行代码132。请注意,简化模块208可以是编译器204的一部分,或者可以是从编译器204分离出来。
在本发明的一个实施例中,在运行时间之前进行该编辑和简化过程。在另一个实施例中,在运行时间期间进行该编辑和简化过程,同时执行该程序。产生简化的可执行代码
图3是一个流程图,举例说明按照本发明一个实施例而在简化模块208内产生简化的可执行代码132的过程。该系统开始通过对可执行代码130进行程序概要分析(模拟执行)以标识热点,其中内存延迟导致延迟(步骤302)。该系统使用在该程序概要分析过程期间获得的信息而在可执行代码130中建立热点指令踪迹。在本发明的一个实施例中,该系统构成大约2000个指令的每个大约100个离散的踪迹。该系统然后相关这些踪迹,返回至相应的源代码(步骤304)。
接着,该系统通过产生用以预取该踪迹的代码而产生简化的可执行代码132(步骤306)。在下面参考图4、5和9更详细地描述这个过程。
该系统还将处理器至处理器通信代码插入到可执行代码130和简化可执行代码132两者之中(步骤308)。这个通信代码使主要处理器102去交换进展信息给辅助处理器104。这个进展信息能够使辅助处理器104确定是否它沿着正确路径预取指令、以及是否它提前主要处理器102过远去继续预取指令。
请注意,辅助处理器104提前主要处理器102过远去预取指令是不合乎需要的,因为提前过远而预取的指令很少会为主要处理器102使用,并且可能替换主要处理器102更直接需要的数据。很少可能使用的预取指令会占用存储带宽,并且可能导致高速缓存污染,其降低计算机系统性能。因此,在启动预取指令之前,希望辅助处理器104等待,直至主要处理器102的执行路径接近于在辅助处理器104中相应的代码为止。
也请注意,单个预取操作典型地恢复包括多个指令的整个高速缓存线。例如,一个预取的高速缓存线可以包含64字节,其中包含16个4字节指令。
如果这个进展信息表示辅助处理器104沿着错误的路线通过可执行代码130预取指令,该系统可能引起辅助处理器104弹射出预取指令追踪。
图4举例说明按照本发明一个实施例的用于简化的可执行代码132可能结构。在这个实施例中,简化的可执行代码132被构成为一个循环。该代码首先开始于读取一个变量“val”,该变量“val”可以位于共享内存中或者在图1所示的寄存器126内。如果该val不等于零,该系统基于包含在val中的值而执行一个开关语句,该开关语句执行包含预取操作的代码的特定部分。通过这种方法,主要处理器102可以经由该变量val交换进展信息给辅助处理器104。这个进展信息使特定的预取指令被执行,以便辅助处理器104在主要处理器102需要该指令时提前预取指令。该代码然后重新设置val为零,并且继续该循环。请注意,对于val读和写不是同时发生的。
图5是一个流程图,举例说明按照本发明一个实施例如何构成该简化的可执行代码132的细节。该系统开始于构成一个用于可执行代码130的控制流程图(步骤502)。然后,该系统从该控制流程图除去小的循环(步骤504),因为小的循环假定被预取进入二级缓存113中。因此,一旦小的循环被预取,其执行直至该循环完成。该系统还从可执行代码130中除去与该控制流程图无关的所有的指令(步骤506)。这可以被做,因为该无关的程序代码不会影响经由程序代码的该执行路径,由此将不会对需要的预取操作有影响。例如,可以除去执行数学计算确定的程序代码。
接着,该系统将预取指令插入到简化的可执行代码132以预取用于可执行代码130的相应部分的指令(步骤508)。弹射出过程
图6是一个流程图,举例说明按照本发明的一个实施例,当确定已经沿着错误的路线进行的时候,简化的可执行代码132如何弹射出。当在辅助处理器104上执行简化的可执行代码132的时候,该系统开始读取由主要处理器102写入的进展信息(步骤602)。这个进展信息表示主要处理器102的执行路径已经在可执行代码130内到达何处。
如果这个进展信息表示辅助处理器104沿着错误的路线进行,辅助处理器104中断预取该踪迹(步骤604)。辅助处理器可以选择性地开始对应于正确路径的预取。
请注意,在该预取指令过程期间,辅助处理器104可以决定只沿着支路的一边预取,且主要处理器102可以实际上决定沿着该支路的另外一边进行。在这种情况下,辅助处理器104已经采取了错误的路线。
还请注意,辅助处理器104并非一定要弹射出。沿着错误的路线预取指令的唯一的不利结果是高速缓存污染和不必要的存储内容转储,其对于很小的踪迹也许并非重要因素。用于存储历史信息的专用硬件
图7是一个流程图,举例说明按照本发明一个实施例简化如何操作可执行代码132。该系统开始于从专用的硬件读取控制流程历史信息,该专用硬件记录可执行代码130的控制流程历史信息(步骤702)。例如,这个控制流程历史信息可以包含一个采用的分支记录和其执行的功能调用。然后,该系统基于该控制流程历史信息构成一个经由可执行代码130推算的路径(步骤704)。例如,该推算的路径可以基于经由可执行代码130采用的上一次的路径确定,或者基于经由可执行代码130采用的最频繁的路径确定。接着,简化的可执行代码132使得辅助处理器104沿着该推算的路径执行预取操作(步骤706)。
图8举例说明按照本发明的一个实施例,用于存储控制流程历史信息的专用硬件。在这个实施例中,该专用硬件存储用于功能调用和返回的调用地址。对于每个调用,该硬件存储一个是否连续的分支被采用或未采用的记录。例如,第一行指定一个驻留在地址“X”的功能调用,继之以一个采用的分支,一个未采用的分支,然后是三个采用的分支。第二行指定一个驻留在地址“Y”的功能调用,然后没有分支。第三行指定一个从功能调用返回至地址“Y+4”。最后,第四行指定一个驻留在地址“Z”的功能调用,继之以二个采用的分支和一个未采用的分支。简化的可执行代码的范例
图9举例说明按照本发明的一个实施例的简化的可执行代码132的范例部分,其包含预取指令。
图9的左手侧举例说明可执行代码130的部分结构。这个部分被分成多个模块902、904、906、908、910和912,每个模块是64字节长,并且可以在单个预取操作中被预取。请注意,可执行代码130首先执行模块902,其执行一个或者到模块904或者到模块906的分支。模块904和906两者执行对模块908的功能调用。模块908然后执行一个或者到模块910或者到模块912的分支。
图9的右手侧举例说明简化的可执行代码132的部分的相应结构。简化的可执行代码132首先预取模块902、904和906。然后,变量“addr”随着功能调用的目标地址而加载,然后简化的可执行代码132预取模块908、910和912。
请注意,简化的可执行代码132沿着在可执行代码130中分支的两侧预取。在本发明的另一个实施例中,为了消除不必要的指令加载和指令高速缓存污染,简化的可执行代码132只沿着推算的支路预取。
还请注意,该预取操作将可执行代码130模块传送到图1中的二级缓存113。做为选择,该预取操作可以使得被预取的指令直接进入用于主要处理器102的指令高速缓存112。
仅为了说明和描述起见,上文的说明书已经介绍了发明的实施例。说明书并非意图穷举本发明或将本发明限制于所公开的形式。因此,对于本领域专业技术人员来说许多的修改和变化将是显而易见的。另外,以上所述的公开不意在限制本发明。本发明的范围由所附的权利要求限定。

Claims (25)

1.一种通过用辅助处理器在主要处理器开始之前执行预取操作来预取指令的方法,包括:
在该主要处理器上执行可执行代码;
同时在该辅助处理器上执行一个该可执行代码的简化版本,其中该可执行代码的简化版本比该可执行代码执行更加迅速,并且在该主要处理器需要该指令之前,为该主要处理器执行预取操作;和
将所预取的指令存储到一个该主要处理器可访问的高速缓存中,使得无需从主内存取回该预取指令,该主要处理器即能访问该预取指令。
2.根据权利要求1的方法,进一步包括在执行该可执行代码之前:
编译源代码为用于该主要处理器的可执行代码;
对该可执行代码进行程序概要分析以产生用于该可执行代码频繁涉及部分的指令追踪;
通过产生预取指令而将该指令追踪部分预取到一个该主要处理器可访问的高速缓存中,产生用于该辅助处理器的该可执行代码的简化版本,和
将通信指令插入到用于该主要处理器的该可执行代码,和插入到用于该辅助处理器的该可执行代码的简化版本,以从该主要处理器传送进展信息给该辅助处理器;
其中该进展信息触发该辅助处理器以执行该预取操作。
3.根据权利要求2的方法,其中该编译源代码的过程和该产生可执行代码的简化版本的过程是由一个编译器执行的。
4.根据权利要求2的方法,其中如果给该辅助处理器的该进展信息表示该辅助处理器已经沿着错误的路径预取指令,该可执行代码的简化版本使得该辅助处理器中断预取。
5.根据权利要求1的方法,其中将该可执行代码的简化版本配置为:
从记录分支历史信息和调用历史信息的专用的硬件读取控制流程历史信息;
基于该控制流程历史信息,构成一个经由该可执行代码推算的路径;和
沿着该推算的路径执行预取操作,以预取用于该主要处理器的指令。
6.根据权利要求1的方法,其中产生该可执行代码的简化版本包括:
构成一个用于该可执行代码的控制流程图;
从该控制流程图除去循环;
除去与该控制流程图无关的可执行代码指令;和
将该预取指令插入到该可执行代码的简化版本中,以从该可执行代码预取用于该主要处理器的指令。
7.根据权利要求1的方法,其中执行该预取操作包括预取包含用于该主要处理器的多个指令的高速缓存模块。
8.根据权利要求1的方法,进一步包括经由一个单向通信信道周期性地从该主要处理器发送该进展信息给该辅助处理器。
9.一种存储指令的计算机可读存储介质,当该指令由计算机执行的时候,通过使用一个辅助处理器在主要处理器之前执行预取操作,使得该计算机实施一种用于预取指令的方法,包括:
在该主要处理器上执行可执行代码;
同时在该辅助处理器上执行一个该可执行代码的简化版本,其中该可执行代码的简化版本比该可执行代码执行更加迅速,并且在该主要处理器需要该指令之前,为该主要处理器执行预取操作;和
将所预取的指令存储到一个该主要处理器可访问的高速缓存中,使得无需从主内存取回该预取指令,该主要处理器即能访问该预取指令。
10.根据权利要求9的计算机可读存储介质,其中在执行该可执行代码之前,该方法进一步包括:
编译源代码为用于该主要处理器的可执行代码;
对该可执行代码进行程序概要分析以产生用于该可执行代码频繁涉及部分的指令追踪;
通过产生预取指令而将该指令追踪部分预取到一个该主要处理器可访问的高速缓存中,产生用于该辅助处理器的该可执行代码的简化版本,和
将通信指令插入到用于该主要处理器的该可执行代码,和插入到用于该辅助处理器的该可执行代码的简化版本,以从该主要处理器传送进展信息给该辅助处理器;
其中该进展信息触发该辅助处理器以执行该预取操作。
11.根据权利要求10的计算机可读存储介质,其中该编译源代码的过程和该产生可执行代码的简化版本的过程是由一个编译器执行的。
12.根据权利要求10的计算机可读存储介质,其中如果给该辅助处理器的该进展信息表示该辅助处理器已经沿着错误的路径预取指令,该可执行代码的简化版本使得该辅助处理器中断预取。
13.根据权利要求9的计算机可读存储介质,其中将该可执行代码的简化版本配置为:
从记录分支历史信息和调用历史信息的专用的硬件读取控制流程历史信息;
基于该控制流程历史信息,构成一个经由该可执行代码推算的路径;和
沿着该推算的路径执行预取操作,以预取用于该主要处理器的指令。
14.根据权利要求9的计算机可读存储介质,其中产生该可执行代码的简化版本包括:
构成一个用于该可执行代码的控制流程图;
从该控制流程图除去循环;
除去与该控制流程图无关的可执行代码指令;和
将该预取指令插入到该可执行代码的简化版本中,以从该可执行代码预取用于该主要处理器的指令。
15.根据权利要求9的计算机可读存储介质,其中执行该预取操作包括预取包含用于该主要处理器的多个指令的高速缓存模块。
16.根据权利要求9的计算机可读存储介质,其中该方法进一步包括经由一个单向通信信道周期性地从该主要处理器发送该进展信息给该辅助处理器。
17.一种利于从内存进行预取的装置,包括:
一个配置用以执行可执行代码的主要处理器;
一个配置用以同时执行该可执行代码的简化版本的辅助处理器,其中该可执行代码的简化版本比该可执行代码执行更加迅速,并且在该主要处理器需要该指令之前,为该主要处理器执行预取操作;和
一个高速缓存,其可为该主要处理器访问并且配置用以存储所预取的指令,使得无需从主内存取回该预取指令,该主要处理器即能访问该预取指令。
18.根据权利要求17的装置,进一步包括一个编译结构,该编译结构配置用以:
编译源代码为用于该主要处理器的可执行代码;
对该可执行代码进行程序概要分析以产生用于该可执行代码频繁涉及部分的指令追踪;
通过产生预取指令以预取该指令追踪部分进入一个由该主要处理器可访问的高速缓存,产生用于该辅助处理器的该可执行代码的简化版本;和
将通信指令插入到用于主要处理器的该可执行代码,和插入到用于辅助处理器的该可执行代码的简化版本,以从该主要处理器传送进展信息给该辅助处理器;
其中该进展信息触发该辅助处理器以执行该预取操作。
19.根据权利要求18的装置,其中如果给该辅助处理器的该进展信息表示该辅助处理器已经沿着错误的路径预取指令,该可执行代码的简化版本使得该辅助处理器中断预取。
20.根据权利要求17的装置,进一步包括记录用于该可执行代码的分支历史信息和调用历史信息的专用的硬件,并且其中该可执行代码的简化版本被配置为:
从记录分支历史信息和调用历史信息的专用的硬件读取控制流程历史信息;
基于该控制流程历史信息,构成一个经由该可执行代码推算的路径;和
沿着该推算的路径执行预取操作,以预取用于该主要处理器的指令。
21.根据权利要求17的装置,其中在产生该可执行代码的简化版本方面,该编译结构被配置为:
构成一个用于该可执行代码的控制流程图;
从该控制流程图除去循环;
除去与该控制流程图无关的可执行代码指令;和
将该预取指令插入到该可执行代码的简化版本中,以从该可执行代码预取用于该主要处理器的指令。
22.根据权利要求17的装置,其中该预取操作被配置为预取包含用于该主要处理器的多个指令的高速缓存模块。
23.根据权利要求17的装置,其中该主要处理器和该辅助处理器驻留在相同的半导体芯片上。
24.根据权利要求17的装置,其中该主要处理器和该辅助处理器驻留在不同的半导体芯片上。
25.根据权利要求17的装置,其中该辅助处理器是该主要处理器的简化版本,该主要处理器无需与内存存取操作无关的硬件。
CNB018162746A 2000-09-08 2001-08-30 以辅助处理器预取用于主要处理器的指令的方法和装置 Expired - Lifetime CN1207659C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US23145200P 2000-09-08 2000-09-08
US60/231,452 2000-09-08

Publications (2)

Publication Number Publication Date
CN1466716A true CN1466716A (zh) 2004-01-07
CN1207659C CN1207659C (zh) 2005-06-22

Family

ID=22869286

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB018162746A Expired - Lifetime CN1207659C (zh) 2000-09-08 2001-08-30 以辅助处理器预取用于主要处理器的指令的方法和装置

Country Status (9)

Country Link
US (1) US6681318B2 (zh)
EP (1) EP1316015B1 (zh)
JP (1) JP4808910B2 (zh)
KR (1) KR100792320B1 (zh)
CN (1) CN1207659C (zh)
AT (1) ATE493704T1 (zh)
AU (1) AU2001287222A1 (zh)
DE (1) DE60143757D1 (zh)
WO (1) WO2002021268A2 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101957773A (zh) * 2009-07-15 2011-01-26 国际商业机器公司 用于多轮次动态概要分析的方法及其系统
CN102103485A (zh) * 2009-12-16 2011-06-22 英特尔公司 用于x86中动态二进制优化的两阶段提交区域
CN102736956A (zh) * 2005-10-19 2012-10-17 英特尔公司 线程通信和同步技术
CN103927266A (zh) * 2013-01-15 2014-07-16 想象力科技有限公司 预取流量的改进控制

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1387259B1 (en) * 2002-07-31 2017-09-20 Texas Instruments Incorporated Inter-processor control
US7155575B2 (en) * 2002-12-18 2006-12-26 Intel Corporation Adaptive prefetch for irregular access patterns
US20040186960A1 (en) * 2003-03-20 2004-09-23 Sun Microsystems, Inc. Computer processor data prefetch unit
CN100489813C (zh) * 2003-04-21 2009-05-20 智慧第一公司 可选择性撤回预取的方法
JP2006268487A (ja) * 2005-03-24 2006-10-05 Nec Corp エミュレーション装置及びエミュレーション方法、並びに、エミュレーションプログラム
US7472256B1 (en) 2005-04-12 2008-12-30 Sun Microsystems, Inc. Software value prediction using pendency records of predicted prefetch values
KR101360221B1 (ko) * 2007-09-13 2014-02-10 삼성전자주식회사 인스트럭션 캐시 관리 방법 및 그 방법을 이용하는프로세서
FR2928753B1 (fr) 2008-03-14 2012-09-21 Pierre Fiorini Architecture de traitement informatique accelere.
US8527707B2 (en) * 2009-12-25 2013-09-03 Shanghai Xin Hao Micro Electronics Co. Ltd. High-performance cache system and method
CN102117198B (zh) 2009-12-31 2015-07-15 上海芯豪微电子有限公司 一种分支处理方法
JP5541491B2 (ja) * 2010-01-07 2014-07-09 日本電気株式会社 マルチプロセッサ、これを用いたコンピュータシステム、およびマルチプロセッサの処理方法
US10896130B2 (en) * 2016-10-19 2021-01-19 International Business Machines Corporation Response times in asynchronous I/O-based software using thread pairing and co-execution
US11755333B2 (en) 2021-09-23 2023-09-12 Apple Inc. Coprocessor prefetcher

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4991080A (en) 1986-03-13 1991-02-05 International Business Machines Corporation Pipeline processing apparatus for executing instructions in three streams, including branch stream pre-execution processor for pre-executing conditional branch instructions
KR920006770B1 (ko) * 1988-12-27 1992-08-17 후지쓰 가부시끼가이샤 명령을 페치(fetch)하기 위한 제어 시스템
US5392391A (en) 1991-10-18 1995-02-21 Lsi Logic Corporation High performance graphics applications controller
GB9426155D0 (en) 1994-12-23 1995-02-22 Univ Manchester Dual processor decoupling
US5787285A (en) 1995-08-15 1998-07-28 International Business Machines Corporation Apparatus and method for optimizing applications for multiple operational environments or modes
US5961631A (en) 1997-07-16 1999-10-05 Arm Limited Data processing apparatus and method for pre-fetching an instruction in to an instruction cache
US6205544B1 (en) 1998-12-21 2001-03-20 Intel Corporation Decomposition of instructions into branch and sequential code sections
US6415356B1 (en) * 2000-01-14 2002-07-02 Sun Microsystems, Inc. Method and apparatus for using an assist processor to pre-fetch data values for a primary processor
KR100463642B1 (ko) * 2003-03-06 2004-12-29 한국과학기술원 보조프로세서를 이용한 멀티미디어 처리를 위한 가속장치

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102736956A (zh) * 2005-10-19 2012-10-17 英特尔公司 线程通信和同步技术
CN101957773A (zh) * 2009-07-15 2011-01-26 国际商业机器公司 用于多轮次动态概要分析的方法及其系统
CN101957773B (zh) * 2009-07-15 2014-10-29 国际商业机器公司 用于多轮次动态概要分析的方法及其系统
US9946523B2 (en) 2009-07-15 2018-04-17 International Business Machines Corporation Multiple pass compiler instrumentation infrastructure
CN102103485A (zh) * 2009-12-16 2011-06-22 英特尔公司 用于x86中动态二进制优化的两阶段提交区域
CN102103485B (zh) * 2009-12-16 2015-04-22 英特尔公司 用于x86中动态二进制优化的两阶段提交区域
CN103927266A (zh) * 2013-01-15 2014-07-16 想象力科技有限公司 预取流量的改进控制
CN103927266B (zh) * 2013-01-15 2018-11-09 美普思技术有限责任公司 用于预取流量的改进控制的方法和系统
US10754778B2 (en) 2013-01-15 2020-08-25 MIPS Tech, LLC Control of pre-fetch traffic

Also Published As

Publication number Publication date
JP2004517383A (ja) 2004-06-10
KR100792320B1 (ko) 2008-01-07
WO2002021268A2 (en) 2002-03-14
EP1316015B1 (en) 2010-12-29
CN1207659C (zh) 2005-06-22
ATE493704T1 (de) 2011-01-15
EP1316015A2 (en) 2003-06-04
DE60143757D1 (de) 2011-02-10
JP4808910B2 (ja) 2011-11-02
US6681318B2 (en) 2004-01-20
WO2002021268A3 (en) 2002-06-06
AU2001287222A1 (en) 2002-03-22
KR20030034172A (ko) 2003-05-01
US20020095563A1 (en) 2002-07-18

Similar Documents

Publication Publication Date Title
CN1207659C (zh) 以辅助处理器预取用于主要处理器的指令的方法和装置
US7707393B2 (en) Microprocessor with high speed memory integrated in load/store unit to efficiently perform scatter and gather operations
JP2505086B2 (ja) アドレス生成機構及びデ―タの事前取り出し方法
US20080133882A1 (en) Wavescalar architecture having a wave order memory
Gornish et al. Compiler-directed data prefetching in multiprocessors with memory hierarchies
US6185668B1 (en) Method and apparatus for speculative execution of instructions
US7398484B2 (en) Memory efficient array transposition via multi pass tiling
JP4987882B2 (ja) スレッドに最適化されたマルチプロセッサアーキテクチャ
JP3739491B2 (ja) プリフェッチ命令を用いるハーバードアーキテクチャキャッシュメモリの調和したソフトウェア制御
CN1470019A (zh) 用于在一个分布式存储器、高速缓存相干的多处理器系统中把有序的输入/输出事务流水线处理到相干存储器的方法和装置
US8997071B2 (en) Optimized division of work among processors in a heterogeneous processing system
JP2000250808A (ja) 構造データをプリフェッチするための処理装置を動作させる方法
CN1561480A (zh) 用提示缓冲器隐藏存储器访问等待时间
Lee The effectiveness of caches and data prefetch buffers in large-scale shared memory multiprocessors
US6516462B1 (en) Cache miss saving for speculation load operation
US8359435B2 (en) Optimization of software instruction cache by line re-ordering
CN1896971A (zh) 操作系统辅助磁盘高速缓存系统和方法
Torrellas et al. The Illinois aggressive coma multiprocessor project (I-ACOMA)
EP0890148A1 (en) Cache multi-block touch mechanism for object oriented computer system
Zhang Improving Data Movement Efficiency in the Memory Systems for Irregular Applications
JP3341662B2 (ja) 情報処理装置及び多ポートレジスタファイル
US20050251795A1 (en) Method, system, and program for optimizing code
CN1193777A (zh) 非顺序处理系统中的低执行时间指令发送
Annavaram Prefetch mechanisms that acquire and exploit application specific knowledge
CN117290280A (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
CX01 Expiry of patent term

Granted publication date: 20050622