CN102968294B - 用于低复杂性指令预取系统的方法和设备 - Google Patents

用于低复杂性指令预取系统的方法和设备 Download PDF

Info

Publication number
CN102968294B
CN102968294B CN201210397919.XA CN201210397919A CN102968294B CN 102968294 B CN102968294 B CN 102968294B CN 201210397919 A CN201210397919 A CN 201210397919A CN 102968294 B CN102968294 B CN 102968294B
Authority
CN
China
Prior art keywords
instruction
cache
order line
address
line
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.)
Active
Application number
CN201210397919.XA
Other languages
English (en)
Other versions
CN102968294A (zh
Inventor
迈克尔·威廉·莫罗
詹姆斯·诺里斯·迪芬德尔弗尔
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.)
Qualcomm Inc
Original Assignee
Qualcomm 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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN102968294A publication Critical patent/CN102968294A/zh
Application granted granted Critical
Publication of CN102968294B publication Critical patent/CN102968294B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • 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
    • 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
    • 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
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes

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

本发明涉及用于低复杂性指令预取系统的方法和设备。当指令高速缓冲存储器中发生未命中时,使用使未命中率、存储器存取带宽和功率使用最小化的预取技术。所述预取技术中的一种预取技术在发生未命中时操作。接收获取地址在指令高速缓冲存储器中未命中的通知。分析引起所述未命中的所述获取地址以确定所述获取地址的属性,且基于所述属性,预取指令线。所述属性可指示所述获取地址是非循序操作的目标地址。另一个属性可指示所述获取地址是非循序操作的目标地址,且所述目标地址有大于X%进入高速缓冲存储器线中。其它属性可指示所述获取地址是所述指令高速缓冲存储器中的偶地址。可组合此些属性以确定是否进行预取。

Description

用于低复杂性指令预取系统的方法和设备
分案申请的相关信息
本案是分案申请。该分案的母案是国际申请日为2007年12月3日、申请号为200780044777.6、发明名称为“用于低复杂性指令预取系统的方法和设备”的专利申请。
技术领域
本发明大体上涉及指令高速缓冲存储器的领域,且更具体来说,涉及在指令高速缓冲存储器中有未命中时的指令预取。
背景技术
许多便携式产品(例如,手机、膝上型计算机、个人数据助理(PDA)等)利用执行程序(例如,通信和多媒体程序)的处理器。用于此些产品的处理系统包括用于存储指令和数据的处理器与存储器复合体。与处理器循环时间相比,大容量主存储器通常具有较慢的存取时间。因此,常规上基于高速缓冲存储器的容量和性能来按层级组织存储器复合体,其中最高性能和最低容量的高速缓冲存储器位于最接近于处理器处。举例来说,1级指令高速缓冲存储器和1级数据高速缓冲存储器将一般直接附接到处理器。而2级统一高速缓冲存储器连接到1级(L1)指令和数据高速缓冲存储器。另外,系统存储器连接到2级(L2)统一高速缓冲存储器。1级指令高速缓冲存储器通常以处理器速度来操作,且2级统一高速缓冲存储器比1级高速缓冲存储器操作得慢,但具有比系统存储器的存取时间快的存取时间。替代性存储器组织除了L1和L2高速缓冲存储器外大量存在(例如)具有3级高速缓冲存储器的存储器层级。另一个存储器组织可仅使用1级高速缓冲存储器和系统存储器。
为何可使用指令高速缓冲存储器的存储器层级背后的原理之一为倾向于从存储器中的循序位置来存取指令。通过通过使高速缓冲存储器保存最近所使用的代码段,处理器可以较高性能水平执行。由于程序还含有分支、调用和返回类型的指令,且支持其它非循序操作(例如,中断),所以可仅针对相当短的代码段维持循序位置的原理。归因于此些非循序操作,对指令高速缓冲存储器的指令获取可未命中,使得将指令取响应用于在较高存储器容量和较慢存取时间下操作的下一较高级存储器。未命中可使处理器中止以等待指令。为了使处理器性能保持较高,高速缓冲存储器未命中率应为低。
指令高速缓冲存储器通常由位于指令高速缓冲存储器中的单个地址处的多个指令构成。此多个指令通常被称为高速缓冲存储器线或简称为线。未命中可发生于高速缓冲存储器线中任何地方的指令存取时。当未命中发生时,不再仅获取所需指令,而是还可获取高速缓冲存储器线的剩余部分,即,从所未命中指令到高速缓冲存储器线的末端。在一些系统中,将此种预取技术进一步扩展到在未命中时总是预取高速缓冲存储器线的剩余部分和下一个高速缓冲存储器线。此种总是预取下一个高速缓冲存储器线的常规技术是基于下一个高速缓冲存储器线含有不久将需要的指令的假定。对使用下一个高速缓冲存储器线中的指令的此设想保持有效,即使是(例如)在所述线中遇到条件分支且条件致使所述分支流沦为下一个循序指令。通过一直预取下一个高速缓冲存储器线,可减少未命中。
当然,在程序中的某点处,对指令的循序存取的位置原理失败,且未命中确实归因于由分支、调用和返回等引起的非循序操作而发生。举例来说,当在高速缓冲存储器线的末端处获取指令,且下一个循序指令(其应驻存在下一个循序指令高速缓冲存储器线中)不驻存在高速缓冲存储器中时,还可发生归因于循序存取的未命中。举例来说,当遇到分支指令且所述分支使程序地址改变为新的位置且新位置处的指令不驻存在高速缓冲存储器中时,可发生归因于非循序存取的未命中。一直预取下一个高速缓冲存储器线的常规技术获取可能会不使用的指令且因此引起存储器存取带宽的不必要损失、增加的功率使用和较低处理器性能。
发明内容
本发明认识到,当未命中发生时,需要减少未命中率、存储器存取带宽和功率使用的预取技术。本发明的一个实施例提供一种用于指令预取的方法。当未命中发生时,接收在指令高速缓冲存储器中未命中获取地址的通知。确定引起未命中的获取地址属性,且基于所述属性,预取指令线。
本发明的另一个实施例针对指令高速缓冲存储器和预取系统。指令高速缓冲存储器经配置以产生未命中获取地址的通知。预取决策逻辑经配置以确定引起未命中的获取地址属性,且预取逻辑经配置以基于所述属性来预取指令线。
本发明的另一个实施例针对一种存储器系统。所述存储器系统使用经配置以产生未命中获取地址的通知的指令高速缓冲存储器。预取决策逻辑经配置以确定引起未命中的获取地址属性且基于未命中的获取地址和所述属性来产生未命中信息。系统存储器层级经配置以用与所未命中获取地址相关联的指令来响应于所述未命中信息。
本发明的另一个实施例针对一种用于指令预取的方法,其包含:接收获取地址在指令高速缓冲存储器中未命中的通知;以及确定引起所述未命中的所述获取地址的属性;其特征在于还包括:当所述属性指示下列中的一个或者多个时,将与所述获取地址相关联的下一连续指令线预取入所述指令高速缓冲存储器中:所述获取地址为非循序操作的目标地址;所述获取地址为非循序操作的目标地址并且所述目标地址为进入高速缓冲存储器线中大于或等于阈值X%的地址;以及所述获取地址为所述指令高速缓冲存储器中的偶地址。
本发明的另一个实施例针对一种用于指令预取的设备,其包含:用于接收获取地址在指令高速缓冲存储器中未命中的通知的装置;用于确定引起所述未命中的所述获取地址的属性的装置;以及其特征在于还包括:用于在所述属性指示下列中的一个或者多个时,将与所述获取地址相关联的下一连续指令线预取入所述指令高速缓冲存储器中的装置:所述获取地址为非循序操作的目标地址;所述获取地址为非循序操作的目标地址并且所述目标地址为进入高速缓冲存储器线中大于或等于阈值X%的地址;以及所述获取地址为所述指令高速缓冲存储器中的偶地址。
应理解,通过以下详细描述,所属领域的技术人员将容易明白本发明的其它实施例,其中以说明的方式来展示并描述本发明的各个实施例。如将认识到的,本发明能够具有其它且不同的实施例,且其若干细节能够在各个其它方面受到修改,所述其它且不同实施例和对其的修改均不脱离本发明。因此,图式和详细描述将被视为本质上为说明性的而非限制性的。
附图说明
图1说明无线通信系统;
图2为处理器与存储器复合体的功能框图,其中可基于对存储器有效操作的试探来调适对指令高速缓冲存储器线的预取;和
图3为展示低复杂性预取过程的流程图。
具体实施方式
在下文结合附图陈述的详细描述意欲作为对本发明的各种示范性实施例的描述且不意欲表示可实践本发明的唯一实施例。所述详细描述包括特定细节以便达成提供对本发明的彻底理解的目的。然而,所属领域的技术人员将明白,可在无这些特定细节的情况下实践本发明。在一些情况下,以框图形式来展示众所周知的结构和组件以便避免混淆本发明的概念。
图1说明示范性无线通信系统100,其中,可有利地采用本发明的实施例。出于说明的目的,图1展示三个远程单元120、130和150和两个基站140。将认识到,典型无线通信系统可具有许多更多远程单元和基站。远程单元120、130和150包括分别由组件125A、125C和125B表示的硬件组件、软件组件或其两者,如下文中进一步所论述,其已被调适以实施本发明。图1展示从基站140到远程单元120、130和150的前向链路信号180和从远程单元120、130和150到基站140的反向链路信号190。
在图1中,将远程单元120展示为移动电话,将远程单元130展示为便携式计算机,和将远程单元150展示为无线本地回路系统中的固定位置远程单元。举例来说,所述远程单元可或者为手机、寻呼机、对讲机、手持式个人通信系统(PCS)单元、例如个人数据助理的便携式数据单元,或例如仪表读取装备的固定位置数据单元。虽然图1说明根据本发明的教示的示范性远程单元,但本发明不限于这些示范性的所说明单元。本发明可适于用在具有带有指令高速缓冲存储器和系统存储器的处理器的任何装置中。
图2为处理器与存储器复合体200的功能框图,其中可基于对存储器有效操作的试探来调适对指令高速缓冲存储器线的预取。处理器与存储器复合体200包括处理器202;直接映射1级(L1)指令高速缓冲存储器(Icache)203,其包含L1 Icache线阵列204和L1Icache控制单元206;和系统存储器层级208。如可用在各种类型的高速缓冲存储器(例如,组相关联高速缓冲存储器)中,L1Icache控制单元206可包括预取逻辑和用于指令标签匹配的指令内容可寻址存储器。出于论述清楚起见,不展示可连接到处理器复合体的外围装置。处理器与存储器复合体200可适于用在用于执行存储于L1Icache203和系统存储器层级208中的程序代码的组件125A到125C中。
L1Icache线阵列204可包括多个线,例如高速缓冲存储器线210和211。每一线分别由多个指令(I0、I1、……、I7)212到219组成。标签220和线状态(LS)221(例如,有效位)与每一线相关联。高速缓冲存储器线210和211分别驻存在L1 Icache线阵列204中的线地址222和223处。L1Icache控制单元206含有对经由指令地址(IA)接口225接收到的IA224作出响应的地址控制逻辑以存取高速缓冲存储器线。IA 224可由标签226、线地址228、指令“I”字段232和字节“B”字段234组成。线地址228由“line+”字段229和偶数“E”位230组成。
为了获取在处理器与存储器复合体200中的指令,处理器202产生待获取的所要指令的指令地址(IA)224且将获取地址发送到L1Icache控制单元206。基于接收到的IA224,L1Icache控制单元206查看所述指令是否存在于L1Icache线阵列204中。举例来说,通过使用比较逻辑来完成此检查,所述比较逻辑检查由IA224所选的线210中的匹配标签236。还通过验证线状态位(LS)221(例如,有效位238)来做出关于线是否含有有效指令的确定。当存在所述指令时,匹配或命中发生,且L1Icache控制单元206指示所述指令存在于L1Icache203中。如果所述指令不存在,那么将不发现匹配或未命中,且L1Icache控制单元206提供所述指令不存在于Icache203中的未命中指示。
如果所述指令存在,那么从L1Icache线阵列204选择在指令获取地址处的指令。接着在指令输出总线240上将所述指令发送到处理器202。
如果所述指令不存在于指令高速缓冲存储器中,那么经由未命中信号路径242将指示未命中已发生的未命中信息提供给系统存储器层级208。在1级Icache203中检测到未命中后,处理器与存储器复合体200试图获取所要指令,且如在下文更详细地描述,可从系统存储器的较高级预取额外指令。举例来说,可从位于系统存储器层级208中的2级(L2)统一高速缓冲存储器来预取指令。在存储器数据总线接口244上从系统存储器层级208提供归因于所述未命中的所要指令和任何预取的指令。
当未命中发生时,可确定引起未命中的与获取地址相关联的一个或一个以上属性。举例来说,可将获取地址归类为循序存取或非循序存取的目标。举例来说,可根据地址是否有大于X%进入高速缓冲存储器线中来对获取地址作进一步归类。还可基于获取地址在指令高速缓冲存储器中是否为偶地址来对获取地址进行归类。这些和其它归类界定可以试探形式组合以智能地确定何时进行预取的属性。通过智能地预取,可节省功率,可改进存储器带宽,可减少未命中率,且通常可改进处理器和系统性能。
可从获取地址动态地确定引起未命中的与获取地址相关联的属性。举例来说,通过监视获取地址,可确定循序获取地址或非循序获取地址。基于获取地址和高速缓冲存储器线长度,可动态地确定在高速缓冲存储器线中的存取位置。举例来说,当所确定位置的比较等于或超过X%阈值时,此属性为相关的。而且,基于获取地址和高速缓冲存储器线长度,可使用获取地址中的位来确定是对偶数高速缓冲存储器线还是奇数高速缓冲存储器线进行存取。在下文更详细地描述这些属性。
在一个实施例中,在指令高速缓冲存储器中有未命中时,如果未命中属性中的一者或一者以上为相关的,那么预取来自存储器层级的下一级的下一连续高速缓冲存储器线。如果未命中属性中的一者或一者以上为不相关的,那么不预取下一连续高速缓冲存储器线。请注意,一般来说,可预取不连续的高速缓冲存储器线。对预取高速缓冲存储器线的确定可基于未命中属性、程序属性或此些属性的组合。举例来说,可使用来自分支历史表或分支预测逻辑的信息来提供程序的执行流的属性,所述属性可用以确定是预取连续的指令线还是非连续的指令线。
在另一个实施例中,如果指令高速缓冲存储器中的未命中是归因于非循序未命中(例如,到不存在于指令高速缓冲存储器中的指令的地址的分支、子例行程序调用等),那么预取来自存储器层级的下一级的指令线。如果指令高速缓冲存储器中的未命中是归因于循序未命中(例如,对不存在于指令高速缓冲存储器中的指令的循序存取),那么不进行预取操作。还请注意,预取操作的地址可为连续或非连续的指令线。
在另一个实施例中,如果指令高速缓冲存储器中的未命中发生在指令高速缓冲存储器中为偶数的地址处,那么预取来自存储器层级的下一级的指令线。如果指令高速缓冲存储器中的未命中发生在指令高速缓冲存储器中为奇数的地址处,那么不进行预取。
在另一个实施例中,如果指令高速缓冲存储器中的未命中是归因于在有大于或等于X%进入高速缓冲存储器线中的地址处的非循序未命中,那么预取来自存储器层级的下一级的指令线。如果指令高速缓冲存储器中的未命中是归因于有小于X%进入高速缓冲存储器线中的地址处的未命中或为循序未命中,那么不进行预取。举例来说,如果未命中发生在高速缓冲存储器线的末端附近的获取地址(例如,75%进入高速缓冲存储器线中)处,那么从存储器层级的下一级预取指令线。进入高速缓冲存储器线中的百分数X可固定为通过实验手段选择的值或可为可编程的,从而允许在操作中X%适于程序。举例来说,如果对于图2的示范性说明来说,X%为62.5%,那么在具有八个指令线210的情况下,所述线的62.5%与I4216相关联,五个指令进入所述线中。如果未命中发生在I4216或更大的获取地址处,那么启用预取操作。如果未命中发生在I3215或更小的获取地址处,那么不启用预取操作。在替代性实施方案中,如果指令高速缓冲存储器中的未命中是归因于有大于X%进入高速缓冲存储器线中的地址处的未命中,那么进行预取。对于X%=62.5%的上述实例来说,如果未命中发生在I5217或更大的获取地址处,那么启用预取。否则,如果未命中处于小于或等于I4216进入高速缓冲存储器线中的地址处,那么不进行预取。
在另一个实施例中,可组合未命中属性以确定是否进行预取。举例来说,如果指令高速缓冲存储器中的未命中是归因于非循序未命中(例如,到不存在于指令高速缓冲存储器中的指令的地址的分支、子例行程序调用等),或如果指令高速缓冲存储器中的未命中发生在指令高速缓冲存储器中为偶数的地址处,那么预取来自存储器层级的下一级的指令线。否则,在未命中时,不进行预取。
用预取决策逻辑246来完成对是否进行预取的确定,预取决策逻辑246可与高速缓冲存储器存取探针并行操作以确定所寻址的指令是否处于高速缓冲存储器中。预取决策逻辑246可将未命中指示248、非循序操作(例如,分支、调用或返回操作)引起未命中的非循序指示250、X%值252作为输入,且可包括(例如)所获取指令的IA224。未命中指示248、非循序指示250和X%值252由L1Icache控制单元206提供。未命中与非循序获取操作的获取地址相关联的确定可从来自处理器202的控制254获得。可进一步从用于与指令相关联的非循序操作256(例如,分支、调用、返回等)的逻辑获得控制254。或者,L1Icache控制单元206可将当前获取指令地址与先前获取指令地址进行比较以确定获取是否与非循序操作相关联。请注意,预取决策逻辑246可位于指令高速缓冲存储器外部,在需要时用信号进行连接。举例来说,预取决策逻辑可与产生指令地址224的处理器202更紧密地相关联。
其它属性(例如,确定获取地址是否为偶地址高速缓冲存储器线)可基于偶数“E”位230,其中对于偶数高速缓冲存储器线来说,E=0。“E”位230地址位位置或值可依据指令高速缓冲存储器线阵列204中的线长度而变化。如图2所说明,两个位的B字段234指示字中的多达四个字节,且三个位的I字段232指示线中的多达八个字。在此布置下,“E”位230每八个字(对于32字节高速缓冲存储器线进行寻址的八个字)便改变状态。
在其它实施例中,预取决策逻辑246可使高速缓冲存储器的探针确定待预取的高速缓冲存储器线是否已经处于指令高速缓冲存储器中。如果与预取目标相关联的高速缓冲存储器线已经处于高速缓冲存储器中,那么停止或阻止预取操作开始。
一旦已通过与指令高速缓冲存储器相关联的预取逻辑起始预取且由存储器层级的较高级作出响应,那么可经由存储器数据总线(例如,存储器数据总线244)将多个指令线转移到L1Icache。依据存储器数据总线接口244的物理总线宽度和所实施的信令协议,可以固定大小数量或包(例如,32个字节、64个字节、128个字节、256个字节、512个字节等等)来转移数据。通常,短数据包的多次转移通常比具有较大包大小的突发转移的效率低,此归因于配置和发送数据过程中的额外开销。因此,在另一个实施例中,当作出替代预取两个指令线而是(例如)在两个个别数据转移中进行预取的决策时,请求长数据转移。与在较短独立转移中发送指令相比,在预取时的长数据转移使总转移时间最小化。
图3为展示低复杂性预取过程300的流程图。通过描述来自处理器存储器复合体200的元件可如何合适地协作以执行方法300来指示图3的方框与图2的元件之间的示范性关系。
在方框302中,处理器(例如,处理器202)获取指令。在决策方框304中,确定正获取的指令是否驻存在指令高速缓冲存储器中。举例来说,L1Icache控制单元206检查确认指令是否存在。如果指令处于指令高速缓冲存储器中,那么过程300在方框306中在高速缓冲存储器中获取指令且接着返回到方框302以等待下一个指令获取。举例来说,将选定指令放置于指令输出总线240上且在处理器202中接收。
如果指令不处于指令高速缓冲存储器中,那么已检测到未命中情形。过程300前进到决策方框308,其中,确定与当前指令地址相关联的下一个连续线是否已存在于指令高速缓冲存储器中。可在不必直接存取L1Icache线阵列204的情况下在L1Icache控制单元206中完成此确定。如果下一个连续线已处于L1Icache中,那么在方框310中将获取发布到当前指令地址的存储器层级(例如,系统存储器层级208)。过程300接着返回到方框302以等待下一个指令获取。并行地,在方框312中确定引起未命中的获取地址属性。可在预取决策逻辑246中合适地完成此确定。
如果下一个连续线不处于高速缓冲存储器中,那么所述过程前进到决策方框314,其中,确定在方框312中确定的未命中属性中的一者或一者以上是否相关。虽然可确定多个属性,但固定或可编程功能可选择应用所述属性的子集或全部。如果未命中属性为相关的,那么过程300前进到方框316以获取指令和来自下一级存储器的所确定预取高速缓冲存储器线且返回到方框302以等待下一个指令获取。因此,当在决策方框314中达到进行预取的决策时,不再(例如)以两次个别数据转移预取两个指令线,而是请求长数据转移。如果未命中属性不相关,那么在方框318中将获取发布到当前指令地址的存储器层级(例如,系统存储器层级208)。过程300接着返回到方框302以等待下一个指令获取。
通过直接映射的高速缓冲存储器实施方案来说明对本文中所揭示的实施例的示范性论述。请注意,可认为直接映射的高速缓冲存储器是组相关联高速缓冲存储器的特殊情况(例如,单路组相关联高速缓冲存储器)。本文中所描述的原理还适用于N路组相关联高速缓冲存储器(例如,4路组相关联高速缓冲存储器实施方案)。以类似方式,本文中所描述的原理适用于全相关联高速缓冲存储器实施方案。
可通过通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑组件、离散门或晶体管逻辑、离散硬件组件,或其经设计以执行本文中所描述的功能的任何组合来实施或执行结合本文中所揭示的实施例而描述的各种说明性逻辑区块、模块、电路、元件和/或组件。通用处理器可为微处理器,但在替代实施方案中,所述处理器可为任何常规处理器、控制器、微控制器或状态机。还可将处理器实施为计算组件的组合,例如,DSP与微处理器的组合、多个微处理器的组合、一个或一个以上微处理器与DSP核心的联合,或任何其它此类配置。
结合本文中所揭示的实施例而描述的方法可直接以硬件、由处理器执行的软件模块或以所述两者的组合来实施。软件模块可驻存在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移除盘、CD-ROM,或此项技术中已知的任何其它形式的存储媒体中。存储媒体可耦合到处理器,使得处理器可从存储媒体读取信息以及将信息写入到存储媒体。在替代实施方案中,存储媒体可与处理器整合。
虽然在实施例的上下文中揭示本发明,但将认识到,所属领域的技术人员可采用与上文的论述和下文的权利要求一致的广泛多种实施方案。举例来说,主要在1级指令高速缓冲存储器的上下文中揭示实施例。将了解,实施例还可使用2级指令高速缓冲存储器、用于预取指令的2级统一高速缓冲存储器,或在存储器层级的对于处理器存储器复合体来说为适当的其它级处。还将了解,指令高速缓冲存储器可与处理器核心整合或在处理器核心外部。

Claims (19)

1.一种用于指令预取的方法,其包含:
接收指令的获取地址在第一指令高速缓冲存储器中未命中的指示,其中所述指令的所述获取地址由第一操作产生并对应于第二操作;以及
响应于所述指示:
基于所述获取地址获取包括来自第二高速缓冲存储器的所述指令的第一指令线,并以所述第一操作为非循序操作为条件而从所述第二高速缓冲存储器预取第二指令线;以及
基于所述获取地址从所述第二高速缓冲存储器获取所述第一指令线而不响应于所述第一操作为循序操作从所述第二高速缓冲存储器获取所述第二指令线。
2.根据权利要求1所述的方法,其中预取进一步包含:
通过将对所述第一指令线的获取和对所述第二指令线的预取组合来启用长数据转移。
3.根据权利要求1所述的方法,其中通过耦合到所述第一指令高速缓冲存储器的处理器中的逻辑来识别所述第一操作为非循序操作。
4.根据权利要求1所述的方法,其中通过将所述指令的所述获取地址与先前获取地址进行比较来识别所述第一操作为非循序操作。
5.根据权利要求1所述的方法,其中所述第一操作为非循序操作且包括分支操作、子例行程序调用操作或返回操作。
6.根据权利要求1所述的方法,其中以所述指令在所述第一指令线中的位置关于所述第一指令线中的预定阈值位置为条件而预取所述第二指令线。
7.根据权利要求1所述的方法,其中以下述为条件而预取所述第二指令线:
所述获取地址对应于所述第一指令高速缓冲存储器的偶地址。
8.根据权利要求1所述的方法,其中所述第二指令线不连续于所述第一指令线。
9.一种用于指令预取的系统,其包含:
指令高速缓冲存储器,其经配置以产生指令的获取地址在所述指令高速缓冲存储器中未命中的通知,其中所述指令的所述获取地址由第一操作产生并对应于第二操作;
获取逻辑,其经配置以基于所述获取地址而从第二高速缓冲存储器获取第一指令线,其中所述第一指令线包括所述指令;以及
预取决策逻辑,其经配置以响应于所述通知:
以所述第一操作为非循序存取为条件而从所述第二高速缓冲存储器预取第二指令线;以及
避免响应于所述第一操作为循序存取而从所述第二高速缓冲存储器预取所述第二指令线。
10.根据权利要求9所述系统,还包括:
高速缓冲存储器控制单元,其经配置以确定所述第一操作是否为非循序的。
11.根据权利要求9所述系统,其中所述经预取的第二指令线在突发转移中提供到所述指令高速缓冲存储器。
12.根据权利要求9系统,其中所述第二指令线连续于所述第一指令线。
13.根据权利要求9系统,其中所述第二指令线不连续于所述第一指令线。
14.一种用于指令预取的方法,其包含:
接收指令的获取地址在第一指令高速缓冲存储器中未命中的通知,其中所述指令的所述获取地址由第一操作产生并对应于第二操作;
响应于所述通知:
基于所述获取地址获取包括来自第二高速缓冲存储器的所述指令的第一指令线,并以所述第一操作为非循序的以及获取地址高速缓冲存储器线位置超过阈值高速缓冲存储器线位置为条件而从所述第二高速缓冲存储器预取第二指令线,其中所述获取地址高速缓冲存储器线位置与所述指令的所述获取地址相关并且所述阈值高速缓冲存储器线位置与所述第一指令线相关;以及
基于所述获取地址从所述第二高速缓冲存储器获取所述第一指令线而不响应于所述第一操作为非循序操作以及所述获取地址高速缓冲存储器线位置没有超过所述阈值高速缓冲存储器线位置而预取所述第二指令线。
15.根据权利要求14所述的方法,进一步以下述为条件而预取所述第二指令线:
所述获取地址对应于所述第一指令高速缓冲存储器的偶地址。
16.根据权利要求14所述的方法,其中第二指令线不连续于所述第一指令线。
17.一种用于指令预取的方法,其包括:
接收指令的获取地址在第一指令高速缓冲存储器中未命中的指示,其中所述获取地址由第一操作产生并对应于第二操作;以及
响应于所述指示:
基于所述获取地址获取包括来自第二高速缓冲存储器的所述指令的第一指令线,并以所述获取地址对应于所述第一指令高速缓冲存储器的偶地址而从所述第二高速缓冲存储器预取第二指令线;以及
基于所述获取地址从所述第二高速缓冲存储器获取所述第一指令线而避免响应于所述获取地址对应于所述第一指令高速缓冲存储器的奇地址从所述第二高速缓冲存储器预取第二指令线。
18.根据权利要求17所述的方法,其中所述第二指令线连续于所述第一指令线。
19.根据权利要求17所述的方法,其中所述第二指令线不连续于所述第一指令线。
CN201210397919.XA 2006-12-08 2007-12-03 用于低复杂性指令预取系统的方法和设备 Active CN102968294B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/608,309 2006-12-08
US11/608,309 US8060701B2 (en) 2006-12-08 2006-12-08 Apparatus and methods for low-complexity instruction prefetch system
CN2007800447776A CN101548266B (zh) 2006-12-08 2007-12-03 用于低复杂性指令预取系统的方法和设备

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN2007800447776A Division CN101548266B (zh) 2006-12-08 2007-12-03 用于低复杂性指令预取系统的方法和设备

Publications (2)

Publication Number Publication Date
CN102968294A CN102968294A (zh) 2013-03-13
CN102968294B true CN102968294B (zh) 2015-07-22

Family

ID=39226565

Family Applications (2)

Application Number Title Priority Date Filing Date
CN2007800447776A Active CN101548266B (zh) 2006-12-08 2007-12-03 用于低复杂性指令预取系统的方法和设备
CN201210397919.XA Active CN102968294B (zh) 2006-12-08 2007-12-03 用于低复杂性指令预取系统的方法和设备

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN2007800447776A Active CN101548266B (zh) 2006-12-08 2007-12-03 用于低复杂性指令预取系统的方法和设备

Country Status (7)

Country Link
US (1) US8060701B2 (zh)
EP (1) EP2097809B1 (zh)
JP (2) JP5859185B2 (zh)
KR (1) KR101095204B1 (zh)
CN (2) CN101548266B (zh)
AT (1) ATE513261T1 (zh)
WO (1) WO2008073741A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7917731B2 (en) * 2006-08-02 2011-03-29 Qualcomm Incorporated Method and apparatus for prefetching non-sequential instruction addresses
US20110231634A1 (en) * 2010-03-22 2011-09-22 Fishel Liran System and method for grouping alternative possibilities in an unknown instruction path
WO2013101121A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Managed instruction cache prefetching
US10175987B2 (en) 2016-03-17 2019-01-08 International Business Machines Corporation Instruction prefetching in a computer processor using a prefetch prediction vector
US20210081323A1 (en) * 2019-09-12 2021-03-18 Marvell International Ltd. Method of improving l1 icache performance with large programs
CN111399913B (zh) * 2020-06-05 2020-09-01 浙江大学 一种基于预取的处理器加速取指方法
US11561796B2 (en) 2020-07-15 2023-01-24 International Business Machines Corporation Linked miss-to-miss instruction prefetcher
CN112416438A (zh) * 2020-12-08 2021-02-26 王志平 一种流水线预分支的实现方法
US11822922B2 (en) 2021-12-31 2023-11-21 International Business Machines Corporation Miss-driven instruction prefetching
CN115480826B (zh) * 2022-09-21 2024-03-12 海光信息技术股份有限公司 分支预测器、分支预测方法、装置和计算设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0772123A2 (en) * 1995-11-06 1997-05-07 International Business Machines Corporation Data processing system with instruction prefetch
CN1484788A (zh) * 2000-12-29 2004-03-24 英特尔公司 根据未命中距离将数据预取到高速缓存器中的系统和方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS615357A (ja) * 1984-06-07 1986-01-11 Fujitsu Ltd デ−タ処理装置
JPS63146143A (ja) * 1986-12-10 1988-06-18 Hitachi Ltd 記憶装置の転送制御方式
JP2786886B2 (ja) * 1989-05-17 1998-08-13 富士通株式会社 プリフェッチ制御方法およびプリフェッチ制御装置
JPH0588891A (ja) * 1991-09-30 1993-04-09 Toshiba Corp キヤツシユメモリ制御装置
JP3590427B2 (ja) * 1994-08-30 2004-11-17 株式会社ルネサステクノロジ 先行読出機能付命令キャッシュメモリ
US6119222A (en) * 1996-12-23 2000-09-12 Texas Instruments Incorporated Combined branch prediction and cache prefetch in a microprocessor
US6728839B1 (en) * 1998-10-28 2004-04-27 Cisco Technology, Inc. Attribute based memory pre-fetching technique
JP2000242557A (ja) * 1999-02-25 2000-09-08 Nec Corp キャッシュプリフェッチ装置
JP2000347934A (ja) * 1999-06-02 2000-12-15 Matsushita Electric Ind Co Ltd キャッシュメモリ装置
JP2001142698A (ja) * 1999-11-12 2001-05-25 Mitsubishi Electric Corp メモリアクセス方式
US20030105926A1 (en) * 2001-12-03 2003-06-05 International Business Machies Corporation Variable size prefetch cache
US7032076B2 (en) * 2002-09-16 2006-04-18 Intel Corporation Prefetching data in a computer system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0772123A2 (en) * 1995-11-06 1997-05-07 International Business Machines Corporation Data processing system with instruction prefetch
CN1484788A (zh) * 2000-12-29 2004-03-24 英特尔公司 根据未命中距离将数据预取到高速缓存器中的系统和方法

Also Published As

Publication number Publication date
US20080140996A1 (en) 2008-06-12
EP2097809A1 (en) 2009-09-09
US8060701B2 (en) 2011-11-15
JP2010512580A (ja) 2010-04-22
JP2015122094A (ja) 2015-07-02
CN102968294A (zh) 2013-03-13
ATE513261T1 (de) 2011-07-15
CN101548266A (zh) 2009-09-30
CN101548266B (zh) 2012-12-05
KR101095204B1 (ko) 2011-12-16
KR20090095633A (ko) 2009-09-09
EP2097809B1 (en) 2011-06-15
WO2008073741A1 (en) 2008-06-19
JP5859185B2 (ja) 2016-02-10
JP6030160B2 (ja) 2016-11-24

Similar Documents

Publication Publication Date Title
CN102968294B (zh) 用于低复杂性指令预取系统的方法和设备
CN102693187B (zh) 用以减少多级高速缓冲存储器层级中的掷出的设备和方法
US8443162B2 (en) Methods and apparatus for dynamically managing banked memory
KR101710116B1 (ko) 프로세서, 메모리 관리 장치 및 방법
CN102112966B (zh) 用于推测式中断向量预取的设备及方法
CN101371224B (zh) 高效存储器层级管理的方法及设备
US8458447B2 (en) Branch target buffer addressing in a data processor
KR20110025188A (ko) 스토어 할당 캐시 미스에서 에러 복구를 위한 스토어 버퍼 사용
CN102306092B (zh) 超标量处理器实现指令缓存路选择的方法及装置
CN101809547B (zh) 使用n路高速缓冲存储器的系统和方法
CN103198026A (zh) 指令高速缓存功耗降低
KR20120086363A (ko) 연산 처리 장치
CN105095104A (zh) 数据缓存处理方法及装置
CN117609314A (zh) 一种缓存数据处理方法、缓存控制器、芯片及电子设备
CN101699391B (zh) 提高Java处理器取指令带宽的字节码缓冲装置及使用方法
CN108399146B (zh) Flash控制器、取指令方法及计算机可读存储介质
CN117099086A (zh) 用于通过存储器接口的合并多播数据传输的系统和方法
CN115587052A (zh) 一种缓存性能的处理方法及其相关设备
CN114090080A (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