CN101539853B - 信息处理单元、执行方法和指令序列生成方法 - Google Patents
信息处理单元、执行方法和指令序列生成方法 Download PDFInfo
- Publication number
- CN101539853B CN101539853B CN2009100060393A CN200910006039A CN101539853B CN 101539853 B CN101539853 B CN 101539853B CN 2009100060393 A CN2009100060393 A CN 2009100060393A CN 200910006039 A CN200910006039 A CN 200910006039A CN 101539853 B CN101539853 B CN 101539853B
- Authority
- CN
- China
- Prior art keywords
- instruction
- address
- information
- memory access
- hardware prefetch
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 169
- 230000010365 information processing Effects 0.000 title abstract 3
- 238000003860 storage Methods 0.000 claims abstract description 65
- 238000012545 processing Methods 0.000 claims abstract description 24
- 230000008569 process Effects 0.000 claims description 140
- 238000004321 preservation Methods 0.000 claims description 21
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 claims description 20
- 230000000694 effects Effects 0.000 claims description 10
- 230000015572 biosynthetic process Effects 0.000 description 70
- 238000010586 diagram Methods 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 5
- 230000006872 improvement Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000033228 biological regulation Effects 0.000 description 4
- 238000007634 remodeling Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000010010 raising Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
- G06F9/3455—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
公开了一种信息处理单元、程序和指令序列生成方法。一种信息处理单元包括:至少一个高速缓存存储器(12,13),其设置在指令执行部分(15)与存储部分(11)之间;以及控制部分(25),其基于由硬件预取请求发出部分(22a)针对存储器存取而请求的地址与保存于地址信息保存部分(21)中的地址信息之间的比较处理结果来控制地址信息内容,其中当控制部分(25)使地址信息保存部分(21)保存地址信息或者更新地址信息保存部分(21)中的地址信息时,将对地址信息的覆写处理禁止预定时段。
Description
技术领域
这里所讨论的实施例是适合于在信息处理单元中执行的预取过程中使用的技术。
背景技术
按照常规,计算机在中央处理单元(CPU)与主存储装置之间至少具有一层高速缓存存储器,以隐藏主存储装置的存取等待时间并提高不充分的吞吐量。
存储器***的性能改进速度较CPU的速度/性能增强而言是低的,因此在近年来变得越来越有必要提高高速缓存存储器的命中率并隐藏高速缓存未命中等待时间。
作为应对这些问题的一种解决手段,使用了预取(prefetch)技术,以将预期在不远的将来使用的数据提前读取到高速缓存存储器中。
预取的实现方法可以大致地划分成两种方法:通过软件的软件预取和通过硬件的硬件预取。
在软件预取中,编译器或者编程器通过预先将预取指令显式地***到指令序列中来执行预取。
另一方面,在硬件预取中,既往地址模式(address pattern)如存储器存取地址和高速缓存器未命中地址存储于预取地址队列中,而当根据既往地址模式来执行连续存储器存取时,预取预期地址。
按照常规,关于硬件预取,已知一种用以确定用于预取的跨值(stride value)的技术和一种与用以从存储器预取指令以便存储于高速缓存中的指令高速缓存装置有关的技术(参见例如PCT申请第2006-510082号的公布日文翻译和日本专利申请公开第HEI 11-306028号)。
在常规软件预取中,预取指令被预先***到指令序列中,这导致灵活的控制。然而,对于软件预取而言难以根据动态行为如高速缓存未命中的 发生和地址计算结果来***必要的预取指令。
另外,软件预取有实际上***不必要的冗余预取指令的问题,因为对于软件预取而言,难以在执行预取的高速缓存行单元中***必要的最小单个预取指令,这导致预取指令频繁***到所有高速缓存行中。
另一方面,在常规硬件预取中,如果同时发生超过可以作为地址模式在预取地址队列中记录的条目的数目的多个连续存取序列,则基于LRU(最近最少使用)控制、用与连续存取有关的新地址模式来覆写现有条目。
然而,由于多个连续存取序列同时发生,因此可能在多个序列之间发生覆写,这产生以下问题:不能检测到连续存取,使得未生成硬件预取。
例如,图10示出了在预取地址队列100中保存的预取地址模式通过常规LRU控制的变化。预取地址队列100具有条目0至3这四个条目,并且可以记录四个地址模式。
图10还示出了当五个不同序列(这里为存储器地址A至E)的存储器存取同时发生时预取地址队列100的地址模式变化。这里,图10中的竖直方向示出了时间。
首先,在时间t1至t4相继地登记序列A至D的地址模式。这里,作为一般的硬件预取机制,在存取地址之后的高速缓存行地址A+1至D+1被分别登记在预取地址队列的条目0至3作为地址模式。
也就是说,根据序列A的存取在时间t1的发生,在条目0登记地址模式A+1。另外,根据序列B的存取在时间t2的发生,在条目1登记地址模式B+1。另外,根据序列C的存取在时间t3的发生,在条目2登记地址模式C+1。然后,根据序列D的存取在时间t4的发生,在条目3登记地址模式D+1。
因而,使用了预取地址队列100的所有条目0至3。
当连续存取进一步进行并且在时间t5发生后续序列E的存取时,通过LRU控制来覆写最旧条目0的地址模式A+1,以在条目0登记地址模式E+1。
然后,当在时间t6发生序列A的连续存取时,已经通过在时间t5进行覆写而删除了在条目0的在时间t4以前登记的地址模式A+1。因此,即使在该时间点发生序列A的连续存取,也不能发出序列A的预取请求。
然后在时间点,利用地址模式A+2来执行条目1的地址模式B+1的 覆写处理。
此后,如图10中所示,与序列A相似,即使在时间t7至t9发生序列B至D的连续存取,也不能发出序列B至D的预取请求。
根据常规LRU控制,如以上所述,如果同时发生比预取地址队列100的条目数目更多的序列的存取,则在预取地址队列100中相互覆写相应序列的地址模式。结果引起不能发出预取请求的问题。
另外,硬件预取根据实施为电路的算法来操作,因此执行预取的定时和提前多远距离来预取地址是固定的,这导致不如软件预取那么灵活的控制。
另外,硬件预取常规上对于编译器和编程器而言是不可见的,因此硬件预取和软件预取独立地被优化。因此有优化效率较低的问题,比如通过硬件预取和软件预取来预取同一地址。
发明内容
鉴于上述问题而提出了本发明,并且其目的在于通过预取来实现有效的性能改进。
为了实现上述目的,本发明的信息处理单元包括:至少一个高速缓存存储器,其设置在指令执行部分与存储部分之间;以及控制部分,其基于由硬件预取请求发出部分针对存储器存取而请求的地址与保存于地址信息保存部分中的地址信息之间的比较处理结果来控制地址信息内容,其中当控制部分使地址信息保存部分保存地址信息时、或者当地址信息保存部分中的地址信息被更新时,将对地址信息的覆写处理禁止预定时段。
另外,为了实现上述目的,本发明的信息处理单元包括:硬件预取目标指示部分,其向存储器存取指令附加指示信息,所述指示信息指示存储器存取指令是否为硬件预取请求发出部分的硬件预取请求发出目标,其中硬件预取请求发出部分基于该指示信息来执行硬件预取请求的比较处理和发出处理。
另外,为了实现上述目的,需要本发明的一种程序,以使计算机作为硬件预取目标指示部分来工作。
另外,为了实现上述目的,本发明的一种指令序列生成方法根据存取信息保存部分能够保存的地址信息条目的数目,向存储器存取指令附加指 示信息,所述指示信息指示存储器存取指令是否为硬件预取请求发出部分的硬件预取请求发出目标,并且所述方法禁止与指示硬件预取请求发出目标的指示信息所附加到的存储器存取指令有关的软件预取指令的生成,而生成与指示不是硬件预取请求发出目标的指示信息所附加到的存储器存取指令有关的软件预取指令,以将该软件预取指令***到指令序列中。
根据上述信息处理单元,如以上所述,当使地址信息保存部分保存地址信息或者地址信息保存部分中的地址信息被更新时,控制部分将对地址信息的覆写处理禁止预定时段。因此,可以禁止标识连续存取的有效地址信息紧接在被登记或者被更新之后,如常规LRU控制那样通过覆写处理被删除。也就是说,即使发生超过条目数目的多个序列的连续存取,也可以可靠地防止多个序列的存储器存取相互覆写登记的地址信息。结果,可以有效地使用地址信息保存部分,并且可以高效地发出针对连续存取的预取请求,以使得可以通过预取来实现本发明的信息处理单元的有效性能改进。
另外,根据上述程序和指令序列生成方法,由于预取目标指示部分将指示存储器存取指令是否为预取请求发出目标的指示信息附加到存储器存取指令,因此可以从软件预取侧来确定是否要执行硬件预取,以使得可以使软件预取和硬件预取的在效率方面相一致。结果,可以通过预取来实现有效的性能改进。
根据本发明的一个方面,提供了一种信息处理单元,包括:指令执行部分,其执行存储器存取指令;存储部分,其保存与由所述指令执行部分执行的存储器存取指令有关的数据;至少一个高速缓存存储器,其设置在所述指令执行部分与所述存储部分之间;地址信息保存部分,其基于由所述指令执行部分执行的存储器存取指令的地址来保存地址信息;硬件预取请求发出部分,其基于由所述指令执行部分针对存储器存取而请求的地址与保存于所述地址信息保存部分中的地址信息之间的比较处理结果,向所述高速缓存存储器发出硬件预取请求;以及控制部分,其基于所述比较处理结果来控制由所述地址信息保存部分保存的地址信息内容,其中:当使所述地址信息保存部分保存地址信息时或者当所述地址信息保存部分中的地址信息被更新时,所述控制部分将对所述地址信息的覆写处理禁止预定时段。
根据本发明的另一方面,提供了一种信息处理单元,包括:指令执行部分,其执行存储器存取指令;存储部分,其保存与由所述指令执行部分 执行的存储器存取指令有关的数据;至少一个高速缓存存储器,其设置在所述指令执行部分与所述存储部分之间;地址信息保存部分,其基于由所述指令执行部分执行的存储器存取指令的地址来保存地址信息;硬件预取请求发出部分,其基于由所述指令执行部分针对存储器存取而请求的地址与保存于所述地址信息保存部分中的地址信息之间的比较处理结果,向所述高速缓存存储器发出硬件预取请求;以及硬件预取目标指示部分,其向所述存储器存取指令附加指示信息,所述指示信息指示所述存储器存取指令是否为所述硬件预取请求发出部分的硬件预取请求发出目标,其中:所述硬件预取请求发出部分基于所述指示信息来执行硬件预取请求的比较处理和发出处理。
根据本发明的另一方面,提供了一种用以执行对信息处理单元中的高速缓存存储器的预取的方法,所述信息处理单元具有:指令执行部分,其执行存储器存取指令;存储部分,其保存与由所述指令执行部分执行的存储器存取指令有关的数据;至少一个高速缓存存储器,其设置在所述指令执行部分与所述存储部分之间;以及地址信息保存部分,其基于由所述指令执行部分执行的存储器存取指令的地址来保存地址信息,其中所述方法包括:基于由所述指令执行部分针对存储器存取而请求的地址与保存于所述地址信息保存部分中的地址信息之间的比较处理结果,向所述高速缓存存储器发出硬件预取请求;基于所述比较处理结果来控制由所述地址信息保存部分保存的地址信息内容;以及当使所述地址信息保存部分保存地址信息时或者当所述地址信息保存部分中的地址信息被更新时,将对所述地址信息的覆写处理禁止预定时段。
根据本发明的另一方面,提供了一种用以执行向信息处理单元中的高速缓存存储器的预取的方法,所述信息处理单元具有:指令执行部分,其执行存储器存取指令;存储部分,其保存与由所述指令执行部分执行的存储器存取指令有关的数据;至少一个高速缓存存储器,其设置在所述指令执行部分与所述存储部分之间;地址信息保存部分,其基于由所述指令执行部分执行的存储器存取指令的地址来保存地址信息;以及硬件预取请求发出部分,其基于由所述指令执行部分针对存储器存取而请求的地址与保存于所述地址信息保存部分中的地址信息之间的比较处理结果,向所述高速缓存存储器发出硬件预取请求,其中所述方法包括:向所述存储器存取指令附加指示信息,所述指示信息指示所述存储器存取指令是否为所述硬件预取请求发出部分的硬件预取请求发出目标。
根据本发明的另一方面,提供了一种在信息处理单元中生成指令序列的指令序列生成方法,所述信息处理单元具有:指令执行部分,其执行存储器存取指令;存储部分,其保存与由所述指令执行部分执行的存储器存取指令有关的数据;至少一个高速缓存存储器,其设置在所述指令执行部分与所述存储部分之间;地址信息保存部分,其基于由所述指令执行部分执行的存储器存取指令的地址来保存地址信息;以及硬件预取请求发出部分,其基于由所述指令执行部分针对存储器存取而请求的地址与保存于所述地址信息保存部分中的地址信息之间的比较处理结果,向所述高速缓存存储器发出硬件预取请求,其中:根据所述地址信息保存部分能够保存的地址信息条目的数目,将指示信息附加到所述存储器存取指令,所述指示信息指示所述存储器存取指令是否为所述硬件预取请求发出部分的硬件预取请求发出目标;并且在生成与指示不是硬件预取请求发出目标的指示信息所附加到的存储器存取指令有关的软件预取指令、以将所述软件预取指令***到指令序列中时,禁止与指示硬件预取请求发出目标的指示信息所附加到的存储器存取指令有关的软件预取指令的生成。
本发明(实施例)的另外的目的和优点将部分地在以下描述中阐述,并且将部分地根据该描述而变得清楚,或者可以通过对本发明的实践来知悉。将借助在所附权利要求中特别指出的元素和组合来实现和达到本发明的目的和优点。
应理解,以上总体描述和以下具体描述仅为示例性和说明性的,而不是限制所要求保护的本发明。
附图说明
图1是示出了作为实施例的信息处理单元的配置的框图;
图2是图示了作为实施例的信息处理单元的配置的示图;
图3是示出了用于作为实施例的信息处理单元的硬件预取控制装置的操作过程的流程图;
图4是出了用于作为实施例示的信息处理单元的硬件预取控制装置的预取地址队列更新部分的操作过程的流程图;
图5是示出了当发生超过作为实施例的信息处理单元的硬件预取控制装置中的预取地址队列的条目数目的连续存取时、预期地址队列中保存的地址模式的变化示例的示图;
图6是示出了用于作为实施例的信息处理单元的处理器单元的编译部分的操作过程的流程图;
图7示出了作为实施例的信息处理单元的硬件预取控制装置中的预取地址队列中保存的地址模式的变化示例;
图8示出了作为实施例的信息处理单元的硬件预取控制装置中的预取地址队列中保存的地址模式的变化示例;
图9是示出了用于作为改型的信息处理单元的硬件预取控制装置的预取地址队列更新部分的操作过程的流程图;以及
图10示出了在预取地址队列中保存的地址模式通过常规LRU控制的变化。
具体实施方式
下文将参照附图来描述实施例。
[1]实施例
首先将参照图1中所示的功能框图来描述作为本发明实施例的信息处理单元1的配置。
如图1中所示,信息处理单元1具有编译部分2、处理器单元(指令发出部分/指令执行部分)10、主存储装置(存储部分)11、主高速缓存12、次高速缓存13以及硬件预取控制装置20。信息处理单元1以由编译器生成的程序指令序列作为输入,并且该程序由指令发出部分/指令执行部分10执行。
编译部分2由编译器实现,并且将用编程语言编写的源代码转换成处理器单元10可执行的形式。
如图2中所示,编译器是软件,而在由编程器生成程序之后,由通过编译器实现的编译部分2生成程序指令序列。
编程器的程序生成可以包括随后描述的软件预取指令和硬件预取目标指示的生成/***。
编译部分2的指令序列生成处理包括通过编译部分2具有的预取目标指示部分(硬件预取目标指示部分)3的硬件预取目标指示和通过编译部分2具有的存储器存取指令生成部分4的软件预取指令***处理。
以这一方式,由编译部分2实现软件预取。
与作为软件的编译器对比,处理器单元10、主存储装置11、主高速缓存存储器12a、次高速缓存存储器13a以及硬件预取控制装置20是硬件。
图2中的示例是在处理器单元10内部提供主高速缓存存储器12a(也就是主高速缓存12)和硬件预取控制装置20的示例,但是在本发明中,设置主高速缓存12、次高速缓存13以及硬件预取控制装置20的位置不受限制。
当预取目标指示部分3基于转换的指令序列来识别连续存取时,预取目标指示部分3针对导致连续存取的存储器存取指令,基于硬件预取来确定是否执行预取。
也就是说,预取目标指示部分3确定导致连续存取的存储器存取指令是否为硬件预取控制装置20的随后描述的硬件预取请求发出部分22a的硬件预取请求发出目标(下文称为预取请求发出目标)。然后,预取目标指示部分3向存储器存取指令附加指示信息(硬件预取目标指示),该指示信息指示存储器存取指令是否为硬件预取请求发出部分22a的预取请求发出目标。
也就是说,指示信息是指示是否导致硬件预取请求发出部分22a发出硬件预取请求的信息。
存储器存取指令生成部分4生成与导致连续存取的存储器存取指令有关的软件预取指令,并且将软件预取指令***到指令序列中。编译部分2输出指令序列,由存储器存取指令生成部分生成的软件预取指令被***到该输出指令序列以作为存储器存取指令。
更具体而言,存储器存取指令生成部分4禁止与由预取目标指示部分3附加了指示信息的存储器存取指令有关的软件预取指令的生成,所述指示信息指示预取请求发出目标。
另一方面,存储器存取指令生成部分4针对以下存储器存取指令来生成用以执行软件预取的软件预取指令,并且将软件预取指令***到指令序列中,所述存储器存取指令由预取目标指示部分3确定为导致连续存取,并且被附加有指示不是预取请求发出目标(也就是非预取发出目标)的指示信息。
处理器单元10执行计算处理,并且具有指令解码部分14和指令执行部分15。
指令解码部分14将由编译部分2生成的程序指令序列(或者简称为指令序列)解码成指令执行部分15可执行的形式。
指令执行部分15执行由指令解码部分14解码的存储器存取指令,并且向存储器高速缓存12进行存储器存取请求。在以下描述中,与存储器存取请求有关的存储器存取请求地址将称为存取地址。
从指令执行部分15到主高速缓存12的存储器存取请求(存取地址)还与由预取目标表示部分3附加的硬件预取目标指示一起被输入到硬件预取控制装置20的随后描述的存取模式监视部分22。
主存储装置11存储与由指令执行部分15执行的存储器存取指令有关的数据。
主高速缓存12具有存取速度快的主高速缓存存储器12a及其控制装置12b。主高速缓存12的控制单元为例如64B(字节)。
次高速缓存13具有存取速度比主存储装置11的存取速度更快并且容量比主高速缓存12的主高速缓存存储器12a的容量更大的次高速缓存存储器13a及其控制装置13b。次高速缓存13的控制单元为例如256B。
响应于来自处理器单元10的存储器存取请求,如果主高速缓存12保存存取地址的数据(见图1中的“存储器存取数据”),则主高速缓存12将该数据作为提取数据而输出到处理器单元。
另一方面,如果主高速缓存12未保存存取地址的数据,则主高速缓存12向次高速缓存13请求数据(见图1中的“主高速缓存登记(registration)请求”)。
如果次高速缓存13保存由主高速缓存12请求的数据,则次高速缓存13以该数据(见图1中的“主高速缓存登记数据”)向主高速缓存12做出响应。
然而,如果次高速缓存13未保存所请求的数据,则次高速缓存13向主存储装置11请求数据(见图1中的“次高速缓存登记请求”)。然后,主存储装置11以该数据对次高速缓存13做出响应(见图1中的“次高速缓存登记数据”)。
然后,数据从主存储装置11经由次高速缓存13和主高速缓存12而输出到处理器单元10。
硬件预取控制装置20基于登记的既往地址模式与用以发出对高速缓存块的硬件预取请求的后续存储器存取指令的存取地址的比较处理结果来检测连续存取。
然后,硬件预取控制装置20具有预取地址队列(地址信息保存部分)21、地址模式监视部分22、主高速缓存预取请求发出部分23、次高速缓存预取请求发出部分24和预取地址队列更新部分(控制部分)25。
预取地址队列21基于由指令执行部分15执行的存储器存取指令的存取地址来保存地址模式(地址信息)。
这里,预取地址队列21具有条目0至N的(N+1)个条目,并且例如在条目0至N中的每个条目保存继存取地址之后的高速缓存行地址作为地址信息。
预取地址队列21的内容由预取地址队列更新部分25控制。
预取地址队列21还具有用以指示是否在条目0至N中的各条目登记了地址模式的标志。
另外,预取地址队列21具有与多个条目0至N中的各条目对应的多个计数器21a-0至N(在图1中表示为标号21a)。
计数器21a-0至N(在不具体区别时,下文简称为计数器21a)针对多个条目0至N中的每个条目,对在新保存或者更新地址模式之后的时钟周期数目进行计数。
这里,时钟周期是信息处理单元1(例如处理器单元10)的时钟周期。
存取模式监视部分22执行从处理器单元10的指令执行部分15进行的存储器存取请求所针对的存取地址与保存于预取地址队列21中的地址模式的比较处理。
这里,如果指示信息指示存储器存取请求是预取请求发出目标,则存取模式监视部分22基于向存储器存取请求附加的指示信息来执行上述比 较处理。
然而,如果指示信息指示存储器存取请求不是预取请求发出目标,则存取模式监视部分22不执行上述比较处理。也就是说,在这一情况下,存取模式监视部分22通过禁止执行比较处理来禁止预取请求发出处理。
因此,硬件预取控制装置20不响应于以下存储器存取请求来操作,该存储器存取请求的指示信息指示存储器存取请求不是预取请求发出目标。
然后,如果比较处理的结果是存取地址与保存于预取地址队列21中的地址模式匹配,则存取模式监视部分22使主高速缓存预取请求发出部分23或者次高速缓存预取请求发出部分24发出预取请求。
也就是说,如果作为比较处理的结果,既往存取过相邻地址(即在预取地址队列21中登记了地址模式)并且检测到进行中的连续存取,则存取模式监视部分22认为连续存取在不远的将来进一步继续,并且使预取请求发出部分发出预取请求。
是使主高速缓存预取请求发出部分23还是次高速缓存预取请求发出部分24发出预取请求在本发明中不受限制,并且例如按照硬件预取控制装置20的规定来决定。
主高速缓存预取请求发出部分23根据来自存取模式监视部分22的指令向主高速缓存12发出预取请求。
更具体而言,主高速缓存预取请求发出部分23发出用以使主高速缓存12预取地址模式、也就是继存取地址之后的高速缓存行的1块数据的请求。
主高速缓存预取请求发出部分23或者次高速缓存预取请求发出部分24请求预取的块的数目和提前多远来预取高速缓存行的数据在本发明中不受限制,并且例如按照硬件预取控制装置20的规定来决定。
次高速缓存预取请求发出部分24根据来自存取模式监视部分22的指令向次高速缓存13发出预取请求。
这里,与主高速缓存预取请求发出部分23相似,次高速缓存预取请求发出部分24预取继存取地址之后的高速缓存行的数据。
因此,存取模式监视部分22、主高速缓存预取请求发出部分23和次高速缓存预取请求发出部分24作为硬件预取请求发出部分22a来工作, 所述硬件预取请求发出部分22a基于从指令执行部分15进行的存储器存取请求所针对的存取地址与保存于预取地址队列21中的地址模式的比较处理结果,向主高速缓存12或者次高速缓存13发出预取请求。
预取地址队列更新部分25(下文简称为更新部分25)基于存取模式监视部分22的比较处理结果来更新和控制保存于预取地址队列21中的地址模式内容。
更具体而言,如果作为存取模式监视部分22的比较处理结果,未发现在预取地址队列21中登记了存取地址,则更新部分25将基于存取地址的地址模式新登记到预取地址队列21中。
然而,新登记假设指示不是预取发出目标的指示信息未附加到存取地址、另外存在可以在预取地址队列21中登记的空条目0至N或者可被覆写的条目0至N。
另一方面,如果作为存取模式监视部分22的比较处理结果,发现在预取地址队列21中登记了存取模式,则更新部分25将地址模式内容设置为下一高速缓存行的地址以进行更新。
如果更新部分25使预取地址队列21保存(也就是新登记)地址模式或者更新预取地址队列21中的地址模式内容,则更新部分25将对地址模式的覆写处理禁止预定时段。
这里,更新部分25将与登记地址模式的各条目0至N对应的计数器21a的值取得预定值识别为预定时段,并且禁止通过删除在各条目0至N的地址模式来登记另一地址模式,直至计数器21a的值取得预定值。
将参照以下描述的图4来描述更新部分25的控制处理细节。
另外,更新部分25具有用以对预取地址队列21的计数器21a进行控制的计数器控制部分26。
当在条目0至N保存了地址模式时,计数器控制部分26根据***时钟将对应计数器21a的值以一为单位递增。
当在条目0至N中的任何一个条目登记新地址模式或者更新在条目0至N中任何一个条目保存的地址模式时,计数器控制部分26将对应计数器21a的值重置为0。
这里,将参照图3中所示流程图(步骤S1至S4)来提供用于硬件预取控制装置20的操作过程的概述。
首先,当来自处理器单元10的指令执行部分15的存储器存取指令存取主高速缓存(步骤S1)时,硬件预取控制装置20的存取模式监视部分22确定向存储器存取指令附加的指示信息是否为硬件预取目标指示(步骤S2)。也就是说,存取模式监视部分22确定指示信息是否指示预取请求发出目标。
这里,如果存取模式监视部分22确定存储器存取指令包含硬件预取目标指示(在步骤S2的“是”路径),则硬件预取控制装置20根据图4示出的过程,使用存储器存取地址来操作硬件预取机构(步骤S3)。
也就是说,存取模式监视部分22通过执行比较处理来检测连续存取,而硬件预取机构发出预取并且更新预取地址队列21。
另一方面,如果作为存取模式监视部分22的比较处理结果,在预取地址队列21中发生命中错误,则在预取地址队列21中新登记存储器存取地址。
对照而言,如果存取模式监视部分22确定存储器存取指令不含硬件预取目标指示(在步骤S2的“否”路径),则硬件预取控制装置20不针对存储器存取地址操作硬件预取机构(步骤S4)。
也就是说,存取模式监视部分22的比较处理和在预取地址队列21中的新登记/更新处理均不执行。
接着,将参照图4中所示流程图(步骤S10至S18)来描述用于更新部分25的处理过程。
首先,当根据存取模式监视部分22的比较结果和指示信息而发生与硬件预取操作目标的存储器存取请求有关的地址模式的新登记请求时,更新部分25基于预取地址队列21的各条目0至N的标志来确定在条目0至N中是否有无效条目、也就是未登记地址模式的条目(步骤S11)。
这里,如果更新部分25确定没有无效条目(在步骤S11的“否”路径),则更新部分25接着确定在条目0至N中是否有未禁止(禁止)覆写处理的条目(步骤S12)。
也就是说,在这里,更新部分25确定是否有其计数器21a具有预定值的条目。
然后,如果没有未禁止覆写处理的条目(在步骤S12的“否”路径),则更新部分25不新登记与发生的登记请求所针对的存储器存取请求有关 的地址模式(步骤S13),并且终止处理。
也就是说,由于计数器21a的值尚未达到预定值,因此更新部分25禁止在条目0至N对地址模式的覆写处理。
另一方面,如果有未禁止覆写处理的条目(在步骤S12的“是”路径),则更新部分25从条目0至N中选择可以执行覆写处理的一个条目,并且通过覆写处理来新登记地址模式(步骤S14)。
在此时,如果在条目0至N中有其计数器21a具有同一值的多个条目,则更新部分25选择例如多个条目中最旧的条目来进行覆写处理。
然后,在执行了更新部分25对新地址模式的覆写处理之后,计数器控制部分26将与覆写的条目对应的计数器21a的值设置(重置)为0(步骤S15)。随后,计数器控制部分26在每个循环中向计数器加1(步骤S15)。
在步骤S11,如果在条目0至N中有无效条目(在步骤S11的“是”路径),则更新部分25选择无效条目并且登记与发生的新登记请求所针对的存取地址有关的地址模式(步骤S16)。
然后,计数器控制部分26将与无效条目对应的计数器21a的值重置为0,并且随后在每个循环中向计数器加1(步骤S15)。
如果在示出了硬件预取操作目标(也就是信息所指示的预取发出目标)的存储器存取过程中,按照存取模式监视部分22的比较处理的匹配结果检测到连续存取(步骤S17),则存取模式监视部分22向主高速缓预取请求发出部分23或者次高速缓存预取请求发出部分24发出对下一高速缓存行的硬件预取。在此时,更新部分25更新在对应条目的地址模式(步骤S18)。
然后,计数器控制部分26将对应条目的计数器21a的值重置为0,并且随后在每个循环中向计数器加1(步骤S15)。
这里,图5示出了当发生超过预取地址队列21中的条目数目(条目最大数目)的连续存取时保存于预取地址队列21中的地址模式的示例。
在随后描述的图5和图7、图8中所示的示例中,假设预取地址队列21具有条目0至3这四个条目,使得可以记录四个地址模式。随后描述的图5和图7、图8中的竖直方向示出了时间。
首先,当发生针对存取地址A至D的存储器存取请求时,在时间t1至t4相继地登记这些序列A至D的地址模式。这里,作为一种硬件预取 机制,分别在预取地址队列的条目0至3登记继存取地址之后的高速缓存行地址A+1至D+1作为地址模式。
也就是说,更新部分25根据序列A的存取在时间t1的发生,在条目0新登记地址模式A+1。另外,更新部分25根据序列B的存取在时间t2的发生,在条目1新登记地址模式B+1。另外,更新部分25根据序列C的存取在时间t3的发生,在条目2新登记地址模式C+1。然后,更新部分25根据序列D的存取在时间t4的发生,在条目3新登记地址模式D+1。
因而,使用了预取地址队列21的所有条目0至3。
接着,当在时间t5发生针对存取地址E的存储器存取请求时,更新部分25以图4中的步骤S10、S11、S12和S13的顺序来执行处理,并且在结束时禁止在条目0至3对条目的覆写处理,使得未新登记序列E的地址模式。
也就是说,与条目0至3对应的计数器21a在时间t5分别示出了“4”、“3”、“2”和“1”,并且未达到预定值“8”,使得更新部分25禁止覆写处理。
随后,当在时间t6至t9发生针对存取地址A+1至D+1的存储器存取请求时,存取模式监视部分22、主高速缓存预取请求发出部分23或者次高速缓存预取请求发出部分24在各时间t6至t9进行地址A+2至D+2的预取请求。
然后,更新部分25执行更新处理,以在对应条目0至3登记这些地址A+2至D+2作为地址模式。
接着,将参照图6中所示流程图(步骤S20至S26)来描述编译部分2(预取目标指示部分3和存储器存取指令生成部分4)的操作过程的示例。
首先,编译部分2的预取目标指示部分3确定编译的存储器存取指令是否为连续存取(步骤S20)。
这里,如果预取目标指示部分3确定存储器存取指令为连续存取(在步骤S20的“是”路径),则预取目标指示部分3接着确定每一高速缓存行的高速缓存命中率是否等于或小于预设的预定值M(步骤S21)。预定值M视硬件(CPU等)而定。
通过以下公式(1)来确定高速缓存命中率:
高速缓存命中率=[高速缓存命中的次数]/[最大的高速缓存命中次数] (1)
高速缓存命中的次数示出了在循环了一圈时高速缓存命中发生多少次,并且通过以下公式(2)来确定,而最大的高速缓存命中次数通过以下公式(3)来确定:
高速缓存命中的次数=[一个高速缓存行的大小]/[每一循环的更新宽度](2)
最大的高速缓存命中次数=[一个高速缓存行的大小]/[存储器存取类型](3)
然后,如果高速缓存命中率等于或者大于预定值M(在步骤S21的“否”路径),则预取目标指示部分3确定同时导致连续存取的存储器序列的数目是否等于或大于预取地址队列21能够记录的条目的最大数目(这里为N)(步骤S22)。同时导致连续存取在这里并不意味着存储器存取完全同时发生,而是存取序列在同一时间段中由编译部分2编译,并且检测到连续存取。
然后,如果存取序列的数目等于或者小于预取地址队列21的条目的最大数目(在步骤S22的“否”路径),则预取目标指示部分3确定存储器存取指令是硬件预取目标,并且向存储器存取指令附加指示预取请求发出目标的指示信息(步骤S23)。预取目标指示部分3由此在终止处理之前指示存储器存取指令为硬件预取目标。
另一方面,如果预取目标指示部分3在步骤S21确定高速缓存命中率小于M(在步骤S21的“是”路径)或者在步骤S22确定同时发生的存取序列的数目大于预取地址队列21的最大条目数目(在步骤S22的“是”路径),则预取目标指示部分3指示存储器存取指令为非硬件预取目标(步骤S24)。
也就是说,在这些情况下,预取目标指示部分3向存储器存取指令附加指示不是预取请求发出目标的指示信息。
另外,预取目标指示部分3向在步骤S20确定为不是连续存取(在步骤S20的“否”路径)的存储器存取指令附加指示不是预取请求发出目标的指示信息(步骤S24)。
然而,如果存储器存取指令是否为连续存取是未知的,则预取目标指示部分3可以在步骤S24提供非硬件预取目标指示或者提供硬件预取目标指示(步骤S23)。
接着,预取目标指示部分3确定是否针对在步骤S24被提供了非硬件预取目标指示的存储器存取指令来执行软件预取(步骤S25)。
然后,如果预取目标指示部分3确定执行软件预取(在步骤S25的“是”路径),则存储器存取指令生成部分4为存储器存取指令生成软件预取指令,并且在终止处理之前将软件预取指令***到指令序列中(步骤S26)。
另一方面,如果预取目标指示部分3确定不执行软件预取(在步骤S25的“否”路径),则存储器存取指令生成部分4终止处理而不执行在步骤S26的处理。
存储器存取指令生成部分4禁止针对在步骤S23被提供了硬件预取目标指示的存储器存取指令来生成软件预取指令。
因此,当同时发生多个序列的连续存取时,编译部分2的预取目标指示部分3根据预取地址队列21能够保存的地址模式的条目数目N+1来附加指示信息。
更具体而言,如果同时导致连续存取的指令序列的数目超过条目数目N+1,则预取目标指示部分3将指示不是预取请求发出目标的指示信息附加到指令序列中与超过条目数目一样多数目的存储器存取指令。
然后,在此时,存储器存取指令生成部分4生成与指示不是预取请求发出目标的指示信息所附加到的存储器存取指令有关的软件预取指令,并且将软件预取指令***到指令序列中。
这里,图7示出了根据指示信息(硬件预取目标指示)而保存于预取地址队列21中的地址模式内容的示例。
首先,当在时间t1至t3发生针对指示硬件预取目标的存取地址A至C的存储器存取请求时,更新部分25在条目0至2相继地登记序列A至C的地址模式A+1至C+1。
随后,当在时间t4和t5发生针对指示非硬件预取目标的存取地址D和E的存储器存取请求时,存取模式监视部分22禁止比较处理。另外,虽然条目3是无效条目(空条目),但是更新部分25也禁止在预取地址队列21中登记存取地址D和E的地址模式。
类似地,更新部分25也不在预取地址队列21中登记在时间t8发生的存取地址F的地址模式。
另一方面,更新部分25针对在时间t6、t7和t9发生的序列A和B 的存储器存取请求来执行地址模式的更新处理。另外,由存取模式监视部分22、主高速缓存预取请求发出部分23或者次高速缓存预取请求发出部分24发出预取请求。
图8示出了当指令执行部分15执行软件预取指令时保存于预取地址队列21中的地址模式内容的示例。
如图8中所示,当在时间t5请求存取地址D+8的软件预取指令时,存取模式监视部分22禁止对存取地址D+8的比较处理,因为其指示信息指示非硬件预取目标。另外,尽管条目3是无效条目(空条目),但是更新部分25也禁止在预取地址队列21中登记存取地址D+8的地址模式。
在图8中,在时间t4、t9和t10发出针对指示非硬件预取目标的存取地址D、D+1和D+9的存储器存取请求,并且针对这些请求也禁止存取模式监视部分22的比较处理和更新部分25的登记处理。
根据作为本发明实施例的信息处理单元1,如以上所述,如果更新部分25使预取地址队列21在预取地址队列21中保存(新登记)地址模式或者更新地址模式,则将对地址模式的覆写处理禁止预定时段。
因此,可以禁止标识连续存取的有效地址信息紧接在被登记或者被更新之后、如常规LRU控制那样通过覆写处理被删除。也就是说,即使发生超过预取地址队列21的条目数目N+1的多个序列的连续存取,也仍然可靠地防止多个序列的存储器存取相互覆写所登记的地址模式。
结果,可以有效地使用预取地址队列21,并且可以高效地发出针对连续存取的预取请求。也就是说,可以通过预取来实现有效的性能改进,比如隐藏高速缓存未命中等待时间和提高吞吐量。
更具体而言,更新部分25将对在保存或者更新地址信息之后的时钟周期数目进行计数的计数器21a的值达到预定值识别为预定时段。因此,禁止更新部分25对对应条目的地址模式的覆写处理,直至计数器21a计到预定的时钟周期数目,以使得可以可靠地实现上述效果。
预取目标指示部分3向存储器存取指令附加指示存储器存取指令是否为硬件预取请求发出目标的指示信息,并且硬件预取控制装置20基于指示信息来执行预取请求的比较处理和发出处理。因此,可以从编译部分2这一侧、也就是软件预取侧来确定是否导致执行硬件预取,使得可以使软件预取和硬件预取在效率方面相一致。
也就是说,存储器存取指令生成部分4可以通过与以下存储器存取指 令有关的软件预取指令的生成,来可靠地禁止针对同一存储器存取指令执行软件预取和硬件预取,所述存储器存取指令由预取目标指示部分3附加了指示预取请求发出目标的指示信息。结果,不会从软件预取侧和硬件预取侧发出同一预取请求,使得可以可靠地禁止发出冗余预取请求。
更具体而言,当同时发生多个序列的连续存取时,预取目标指示部分3根据预取地址队列21能够保存的条目数目N+1来附加指示信息。因此,可以执行根据硬件预取控制装置20的硬件配置的处理,使得可以更高效地使用预取地址队列21、并且也可以使关于连续存取的预取请求更高效。
也就是说,如果同时导致连续存取的指令序列的数目超过条目数目N+1,则预取目标指示部分3将指示不是预取请求发出目标的指示信息附加到指令序列中的与超过条目数目的数目一样多的存储器存取指令。然后,存储器存取指令生成部分4生成与指示不是预取请求发出目标的指示信息所附加到的存储器存取指令有关的软件预取指令,并且将软件预取指令***到指令序列中。因此,可以将数目超过预取地址队列21的条目数目N+1的地址模式的登记处理的发生禁止到最少。另外,可以通过软件预取来可靠地保护指令序列中超过条目数目N+1的一部分,使得可以更可靠和高效地发出预取请求。另外,在硬件预取与软件预取之间共享所处理的预取请求,使得可以使硬件预取和软件预取在效率方面相一致。
[2]其它实施例
本发明不限于上述实施例,并且可以在不脱离本发明精神的情况下以各种改型来实现本发明。
例如,通过考虑在处理器单元10与主存储装置11之间设置了两个高速缓存***(高速缓存12和13)的情况作为示例来描述上述实施例。然而,本发明不限于此,并且在处理器单元10与主存储装置11之间设置的至少一个高速缓存存储器是足够的。
另外,通过考虑硬件预取控制装置20监视向处理器单元10的主高速缓存12的存储器存取请求的情况作为示例来描述上述实施例。也就是说,通过考虑存取模式监视部分22获取向处理器单元10的存储器高速缓存12的存储器存取请求及其指示信息并且执行比较处理的情况作为示例来描述上述实施例。然而,本发明不限于此,并且存取模式监视部分22可以根据信息处理单元1的规定来监视主高速缓存12向次高速缓存13的存储器存取请求。或者存取模式监视部分22可以监视次高速缓存13向主存 储装置11的存储器存取请求。
另外,通过考虑包括以下特征的情况作为示例来描述上述实施例,一个特征在于:处理器单元10的编译部分2具有预取目标指示部分3、并且基于目标指示来执行与预取有关的处理,而另一特征在于:更新部分25基于计数器21a,将覆写禁止处理执行预定时段。然而,本发明不需要必然同时包括这两个特征,而是可以包括两个特征之一。
另外,通过考虑计数器21a对时钟周期数目进行计数的情况作为示例来描述上述实施例。然而,本发明不限于此,并且例如作为本实施例的改型,计数器21a可以对在对应条目0至N保存地址或者更新地址模式之后、禁止更新部分25对地址模式的覆写处理的次数进行计数。
在这一情况下,更新部分25将计数器值达到预定值识别为禁止覆写处理的预定时段。也就是说,更新部分25禁止对应条目的覆写处理,直至将覆写处理禁止与预定次数一样多次。
更新部分25在这一情况下的处理过程作为流程图(步骤S10至S18、S13’)在图9中示出。在图9中,与图4中所示标号相同的标号指示与图4中所示处理相同的处理或者基本上相同的处理,因此这里省略其具体描述。
如图9中所示,当更新部分25在步骤S13不执行新登记、也就是禁止对登记的地址模式的覆写处理时,计数器控制部分26向各登记条目的计数器(禁止覆写处理的次数)加1(步骤S13’)。
因而,也可以实现与上述实施例中的操作效果相同的操作效果。
也通过考虑以下情况作为示例来描述上述实施例,在该情况下,当计数器控制部分26重置计数器21a时,无论条目0至N的类型如何都将计数器21a重置为0。然而,本发明不限于此,并且例如更新部分25可以将用于预取地址队列21中更新的地址模式的预定时段设置为长于用于由预取地址队列21新保存的地址模式的预定时段。
更具体而言,例如,如果更新部分25的覆写处理的禁止控制在计数器21a的值为8时被取消,并且登记新地址模式,则计数器控制部分26将该值重置为4。另一方面,如果检测到连续存取并且更新地址模式,则计数器控制部分26将计数器值重置为0。
因而,更新部分25将用于更新的地址模式的预定时段设置为长于用于由预取地址队列21新保存的地址模式的预定时段。
因此,可以施加控制,以通过将更新的并且表现为连续存取的地址模式的覆写处理禁止时段设置为长于新登记的地址模式的覆写处理禁止时段,来使预取地址队列21优先保存表现为连续存取的地址模式。结果,可以更可靠地发出预取请求,以便对处理器单元10的性能改进、也就是隐藏高速缓存未命中等待时间和提高吞吐量有帮助。
另外,通过考虑以下情况来描述上述实施例,在该情况下,当发生数目超过预取地址队列21的条目数目N+1的序列的连续存取时,预取目标指示部分3执行软件预取。然而,本发明不限于此,例如,如果硬件预取控制装置20的预取距离(这里为与下一高速缓存行的间距)不合适并且距离过长/过短、也就是说距离在预定范围之外,则预取目标指示部分3可以附加指示序列的存储器存取指令不是预取请求发出目标的指示信息。然后在此时,存储器存取指令生成部分4生成存储器存取指令的软件预取指令。
也就是说,在软件预取控制装置20中,与提前多远来预取高速缓存行受电路中实施的算法和设计变化程度所限制有关的规定少。
另一方面,可以用各种方式来改***件预取中的预取距离,因此如果硬件预取控制装置20的硬件预取距离不在预定范围内、并且在执行硬件预取之后高速缓存命中率和吞吐量均未提高,则停止硬件预取,并且替代地,基于软件预取而在最优预取距离执行预取。
也就是说,确定硬件预取控制装置20是否从硬件预取中获得超过预定值的比如高速缓存命中率和吞吐量这样的硬件预取效果。如果确定未获得超过预定值的硬件预取效果,则预取目标指示部分3向相关存储器存取指令附加指示不是预取请求发出目标的指示信息。另外,存储器存取指令生成部分4生成与存储器存取指令有关的软件预取指令,并且将软件预取指令***到指令序列中。
另一方面,如果确定获得超过预定值的硬件预取效果,则预取目标指示部分3继续执行硬件预取,并且存储器存取指令生成部分4不生成与存储器存取指令有关的软件预取指令。也就是说,预取目标指示部分3向相关存储器存取指令附加指示硬件预取请求发出目标的指示信息。
因而,可以更可靠地获得上述实施例中的操作效果。
信息处理单元1的操作者可以使用各种现有方法或者自动确定硬件预取效果。
另外,在上述改型和一个实施例中的编译部分2的部分或者所有处理可以由编程器实现。
上述编译部分2、计数器21a、存取模式监视部分22、主高速缓存预取请求发出部分23、次高速缓存预取请求发出部分24和预取地址队列更新部分25的功能可以由计算机(包括CPU、信息处理单元和各种终端)执行的预定应用程序(预取控制程序)实现。
以其中记录程序的计算机可读记录介质的形式提供程序,该介质比如是软盘、CD(比如CD-ROM、CD-R和CD-RW)和DVD(比如DVD-ROM、DVD-RAM、DVD-R、DVD-RW、DVD+R和DVD+RW)。在这一情况下,计算机从记录介质读取预取控制程序,并且在使用程序之前传送和在内部存储装置或者外部存储装置中存储程序。在存储装置中存储程序之后,也可以经由通信路径从存储装置(记录介质)如磁盘、光盘和磁光盘提供程序到计算机。
这里,计算机是包括硬件和操作***(OS)的概念,并且意味着在OS的控制之下操作的硬件。如果不需要OS并且应用程序单独操作硬件,则硬件本身对应于计算机。硬件至少包括微处理器如CPU和用于读取记录于记录介质中的计算机程序的装置。
作为预取控制程序的应用程序包括用以使前述计算机实现作为编译部分2、计数器21a、存取模式监视部分22、主高速缓存预取请求发出部分23、次高速缓存预取请求发出部分24和预取地址队列更新部分25的功能的程序代码。部分功能可以由OS而不是应用程序实现。
这里记载的所有示例和条件语言旨在于教导目的,以帮助读者理解本发明的原理和发明人为了促进本领域发展而贡献的概念,并且应理解为不限于这样具体记载的示例和条件,而这样的示例在说明书中的组织也不涉及本发明优劣的展现。虽然已经具体描述了本发明的实施例,但是应当理解,在不脱离本发明的精神和范围情况下可以对实施例进行各种变化、替换和更改。
Claims (20)
1.一种信息处理单元,包括:
指令执行部分(15),其执行存储器存取指令;
存储部分(11),其保存与由所述指令执行部分(15)执行的存储器存取指令有关的数据;
至少一个高速缓存存储器(12,13),其设置在所述指令执行部分(15)与所述存储部分(11)之间;
地址信息保存部分(21),其基于由所述指令执行部分(15)执行的存储器存取指令的地址来保存地址信息;
硬件预取请求发出部分(22a),其基于由所述指令执行部分(15)针对存储器存取而请求的地址与保存于所述地址信息保存部分(21)中的地址信息之间的比较处理结果,向所述高速缓存存储器(12,13)发出硬件预取请求;以及
控制部分(25),其基于所述比较处理结果来控制由所述地址信息保存部分(21)保存的地址信息内容,其中:
当使所述地址信息保存部分(21)保存地址信息时或者当所述地址信息保存部分(21)中的地址信息被更新时,所述控制部分(25)将对所述地址信息的覆写处理禁止预定时段。
2.根据权利要求1所述的信息处理单元,还包括:计数器(21a),其对在保存或者更新所述地址信息之后的时钟周期的数目进行计数,其中:
所述控制部分(25)将所述计数器(21a)的值达到预定值识别为所述预定时段。
3.根据权利要求1所述的信息处理单元,还包括:计数器(21a),其对在保存或者更新所述地址信息之后禁止所述控制部分(25)对所述地址信息的覆写处理的次数进行计数,其中:
所述控制部分(25)将所述计数器(21a)的值达到预定值识别为所述预定时段。
4.根据权利要求1所述的信息处理单元,其中所述控制部分(25)将与所述更新的地址信息有关的所述预定时段设置为长于由所述地址信息保存部分(21)新保存的地址信息的预定时段。
5.根据权利要求1至4中任何一项权利要求所述的信息处理单元,还包括:硬件预取目标指示部分(3),其向所述存储器存取指令附加指示信息,所述指示信息指示所述存储器存取指令是否为所述硬件预取请求发出部分(22a)的硬件预取请求发出目标,其中:
所述硬件预取请求发出部分(22a)基于所述指示信息来执行硬件预取请求的比较处理和发出处理。
6.一种信息处理单元,包括:
指令执行部分(15),其执行存储器存取指令;
存储部分(11),其保存与由所述指令执行部分(15)执行的存储器存取指令有关的数据;
至少一个高速缓存存储器(12,13),其设置在所述指令执行部分(15)与所述存储部分(11)之间;
地址信息保存部分(21),其基于由所述指令执行部分(5)执行的存储器存取指令的地址来保存地址信息;
硬件预取请求发出部分(22a),其基于由所述指令执行部分(15)针对存储器存取而请求的地址与保存于所述地址信息保存部分(21)中的地址信息之间的比较处理结果,向所述高速缓存存储器(12,13)发出硬件预取请求;以及
硬件预取目标指示部分(3),其向所述存储器存取指令附加指示信息,所述指示信息指示所述存储器存取指令是否为所述硬件预取请求发出部分(22a)的硬件预取请求发出目标,其中:
所述硬件预取请求发出部分(22a)基于所述指示信息来执行硬件预取请求的比较处理和发出处理。
7.根据权利要求6所述的信息处理单元,其中所述硬件预取请求发出部分(22a)在所述指示信息指示是硬件预取请求发出目标时执行硬件预取请求的比较处理和发出处理,而在所述指示信息指示不是硬件预取请求发出目标时禁止执行硬件预取请求的比较处理和发出处理。
8.根据权利要求6所述的信息处理单元,还包括:存储器存取指令生成部分(4),其生成与导致连续存取的存储器存取指令有关的软件预取指令,以将所述软件预取指令***到指令序列中,其中:
所述存储器存取指令生成部分(4)禁止与由所述硬件预取目标指示部分(3)附加了指示信息的存储器存取指令有关的软件预取指令的生成,所述指示信息指示硬件预取请求发出目标。
9.根据权利要求6至8中任何一项权利要求所述的信息处理单元,其中当发生多个序列的连续存取时,所述硬件预取目标指示部分(3)根据所述地址信息保存部分(21)能够保存的地址信息条目的数目来附加所述指示信息。
10.根据权利要求9所述的信息处理单元,其中当导致连续存取的指令序列的数目大于所述条目的数目时,所述硬件预取目标指示部分(3)将指示不是硬件预取请求发出目标的指示信息附加到所述指令序列中与超过所述条目的数目的数目一样多的所述存储器存取指令;并且
所述存储器存取指令生成部分(4)生成与指示不是硬件预取请求发出目标的所述指示信息所附加到的所述存储器存取指令有关的软件预取指令,并且将所述软件预取指令***到指令序列中。
11.根据权利要求8所述的信息处理单元,其中当硬件预取的距离在预定范围之外时,所述硬件预取目标指示部分(3)向与所述地址信息有关的存储器存取指令附加指示不是硬件预取请求发出目标的指示信息,而所述存储器存取指令生成部分(4)生成与所述存储器存取指令有关的软件预取指令。
12.一种用以执行对信息处理单元中的高速缓存存储器(12,13)的预取的方法,所述信息处理单元具有:指令执行部分(15),其执行存储器存取指令;存储部分(11),其保存与由所述指令执行部分(15)执行的存储器存取指令有关的数据;至少一个高速缓存存储器(12,13),其设置在所述指令执行部分(15)与所述存储部分(11)之间;以及地址信息保存部分(21),其基于由所述指令执行部分(15)执行的存储器存取指令的地址来保存地址信息,其中所述方法包括:
基于由所述指令执行部分(15)针对存储器存取而请求的地址与保存于所述地址信息保存部分(21)中的地址信息之间的比较处理结果,向所述高速缓存存储器(12,13)发出硬件预取请求;
基于所述比较处理结果来控制由所述地址信息保存部分(21)保存的地址信息内容;以及
当使所述地址信息保存部分(21)保存地址信息时或者当所述地址信息保存部分(21)中的地址信息被更新时,将对所述地址信息的覆写处理禁止预定时段。
13.一种用以执行向信息处理单元中的高速缓存存储器(12,13)的预取的方法,所述信息处理单元具有:指令执行部分(15),其执行存储器存取指令;存储部分(11),其保存与由所述指令执行部分(15)执行的存储器存取指令有关的数据;至少一个高速缓存存储器(12,13),其设置在所述指令执行部分(15)与所述存储部分(11)之间;地址信息保存部分(21),其基于由所述指令执行部分(15)执行的存储器存取指令的地址来保存地址信息;以及硬件预取请求发出部分(22a),其基于由所述指令执行部分(15)针对存储器存取而请求的地址与保存于所述地址信息保存部分(21)中的地址信息之间的比较处理结果,向所述高速缓存存储器(12,13)发出硬件预取请求,其中所述方法包括:
向所述存储器存取指令附加指示信息,所述指示信息指示所述存储器存取指令是否为所述硬件预取请求发出部分(22a)的硬件预取请求发出目标。
14.根据权利要求13所述的方法,还包括:
生成与导致连续存取的存储器存取指令有关的软件预取指令,以将所述软件预取指令***到指令序列中;以及
禁止与附加了指示硬件预取请求发出目标的所述指示信息的存储器存取指令有关的软件预取指令的生成,并且还生成与附加了指示不是硬件预取请求发出目标的所述指示信息的存储器存取指令有关的软件预取指令,以将所述软件预取指令***到指令序列中。
15.根据权利要求13或者14所述的方法,其中当发生多个序列的连续存取时,根据所述地址信息保存部分(21)能够保存的地址信息条目的数目来附加所述指示信息。
16.根据权利要求15所述的方法,其中当发生多个序列的连续存取时,在所述条目的数目的范围内向所述存储器存取指令附加指示硬件预取请求发出目标的指示信息,而当超过所述条目的数目时,将指示不是硬件预取请求发出目标的指示信息附加到指令序列中与超过所述条目的数目的数目一样多的所述存储器存取指令。
17.一种在信息处理单元中生成指令序列的指令序列生成方法,所述信息处理单元具有:指令执行部分(15),其执行存储器存取指令;存储部分(11),其保存与由所述指令执行部分(15)执行的存储器存取指令有关的数据;至少一个高速缓存存储器(12,13),其设置在所述指令执行部分(15)与所述存储部分(11)之间;地址信息保存部分(21),其基于由所述指令执行部分(15)执行的存储器存取指令的地址来保存地址信息;以及硬件预取请求发出部分(22a),其基于由所述指令执行部分(15)针对存储器存取而请求的地址与保存于所述地址信息保存部分(21)中的地址信息之间的比较处理结果,向所述高速缓存存储器(12,13)发出硬件预取请求,其中:
根据所述地址信息保存部分(21)能够保存的地址信息条目的数目,将指示信息附加到所述存储器存取指令,所述指示信息指示所述存储器存取指令是否为所述硬件预取请求发出部分(22a)的硬件预取请求发出目标;并且
在生成与指示不是硬件预取请求发出目标的指示信息所附加到的存储器存取指令有关的软件预取指令、以将所述软件预取指令***到指令序列中时,禁止与指示硬件预取请求发出目标的指示信息所附加到的存储器存取指令有关的软件预取指令的生成。
18.根据权利要求17所述的指令序列生成方法,其中当发生多个序列的连续存取时,在所述条目的数目的范围内将指示硬件预取请求发出目标的指令信息附加到所述存储器存取指令,而当超过所述条目的数目时,将指示不是硬件预取请求发出目标的指示信息附加到与超过所述条目的数目的数目一样多的所述存储器存取指令。
19.根据权利要求17或者18所述的指令序列生成方法,其中当硬件预取的距离在预定范围之外时,将指示不是硬件预取请求发出目标的指示信息附加到与所述地址信息有关的存储器存取指令,并且生成与所述存储器存取指令有关的软件预取指令。
20.根据权利要求17或者18所述的指令序列生成方法,其中确定所述硬件预取请求发出部分(22a)是否通过硬件预取而获得等于或者高于预定水平的硬件预取效果,并且如果确定未获得等于或者高于所述预定水平的硬件预取效果,则将指示不是硬件预取请求发出目标的指示信息附加到所述存储器存取指令,并且生成与所述存储器存取指令有关的软件预取指令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008-073863 | 2008-03-21 | ||
JP2008073863A JP2009230374A (ja) | 2008-03-21 | 2008-03-21 | 情報処理装置,プログラム,及び命令列生成方法 |
JP2008073863 | 2008-03-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101539853A CN101539853A (zh) | 2009-09-23 |
CN101539853B true CN101539853B (zh) | 2012-08-22 |
Family
ID=40790602
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100060393A Expired - Fee Related CN101539853B (zh) | 2008-03-21 | 2009-01-22 | 信息处理单元、执行方法和指令序列生成方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8166250B2 (zh) |
EP (2) | EP2299356A1 (zh) |
JP (1) | JP2009230374A (zh) |
KR (1) | KR100976433B1 (zh) |
CN (1) | CN101539853B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI506434B (zh) * | 2010-03-29 | 2015-11-01 | Via Tech Inc | 預取單元、資料預取方法、電腦程式產品以及微處理器 |
JP2012014417A (ja) * | 2010-06-30 | 2012-01-19 | Toshiba Corp | 命令制御装置、及び命令制御方法 |
US8977819B2 (en) * | 2010-09-21 | 2015-03-10 | Texas Instruments Incorporated | Prefetch stream filter with FIFO allocation and stream direction prediction |
CN102378971B (zh) * | 2011-08-05 | 2014-03-12 | 华为技术有限公司 | 数据读取的方法和存储器控制器 |
US9239793B2 (en) * | 2011-12-13 | 2016-01-19 | Ati Technologies Ulc | Mechanism for using a GPU controller for preloading caches |
US9811341B2 (en) * | 2011-12-29 | 2017-11-07 | Intel Corporation | Managed instruction cache prefetching |
US9043579B2 (en) * | 2012-01-10 | 2015-05-26 | International Business Machines Corporation | Prefetch optimizer measuring execution time of instruction sequence cycling through each selectable hardware prefetch depth and cycling through disabling each software prefetch instruction of an instruction sequence of interest |
US9442727B2 (en) * | 2013-10-14 | 2016-09-13 | Oracle International Corporation | Filtering out redundant software prefetch instructions |
JP6252348B2 (ja) | 2014-05-14 | 2017-12-27 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
JP6265041B2 (ja) * | 2014-05-15 | 2018-01-24 | 富士通株式会社 | コンパイルプログラム、コンパイル方法およびコンパイル装置 |
US20160103612A1 (en) * | 2014-10-12 | 2016-04-14 | Qualcomm Incorporated | Approximation of Execution Events Using Memory Hierarchy Monitoring |
JP6458682B2 (ja) * | 2015-08-24 | 2019-01-30 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
CN108255517B (zh) * | 2016-12-29 | 2020-05-05 | 展讯通信(上海)有限公司 | 处理器及请求指令缓存数据的方法 |
CN109308280B (zh) * | 2017-07-26 | 2021-05-18 | 华为技术有限公司 | 数据处理方法和相关设备 |
US10474578B2 (en) * | 2017-08-30 | 2019-11-12 | Oracle International Corporation | Utilization-based throttling of hardware prefetchers |
CN111475203B (zh) * | 2020-04-03 | 2023-03-14 | 小华半导体有限公司 | 一种用于处理器的指令读取方法以及相应的处理器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6510494B1 (en) * | 1999-06-30 | 2003-01-21 | International Business Machines Corporation | Time based mechanism for cached speculative data deallocation |
US6981099B2 (en) * | 2002-12-16 | 2005-12-27 | Sun Microsystems, Inc. | Smart-prefetch |
CN101078979A (zh) * | 2007-06-29 | 2007-11-28 | 东南大学 | 具有多通道指令预取功能的存储控制电路 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0449540B1 (en) * | 1990-03-27 | 2000-05-17 | Digital Equipment Corporation | Memory system and method with prefetch buffer |
US5737565A (en) * | 1995-08-24 | 1998-04-07 | International Business Machines Corporation | System and method for diallocating stream from a stream buffer |
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 |
JP3913895B2 (ja) | 1998-04-17 | 2007-05-09 | 富士通株式会社 | 命令キャッシュ制御装置および記録媒体 |
JP3968914B2 (ja) | 1999-06-02 | 2007-08-29 | 株式会社日立製作所 | ディスクアレイ装置 |
US6460115B1 (en) | 1999-11-08 | 2002-10-01 | International Business Machines Corporation | System and method for prefetching data to multiple levels of cache including selectively using a software hint to override a hardware prefetch mechanism |
US6542982B2 (en) * | 2000-02-24 | 2003-04-01 | Hitachi, Ltd. | Data processer and data processing system |
US6578130B2 (en) * | 2001-10-18 | 2003-06-10 | International Business Machines Corporation | Programmable data prefetch pacing |
US6823428B2 (en) * | 2002-05-17 | 2004-11-23 | International Business | Preventing cache floods from sequential streams |
KR20040038548A (ko) * | 2002-11-01 | 2004-05-08 | 삼성전자주식회사 | 높은 히트율을 갖는 캐쉬 메모리 시스템 및 그의 데이터캐슁 방법 |
EP1576465A1 (en) | 2002-12-12 | 2005-09-21 | Koninklijke Philips Electronics N.V. | Counter based stride prediction for data prefetch |
WO2005091146A1 (ja) * | 2004-03-24 | 2005-09-29 | Matsushita Electric Industrial Co., Ltd. | キャッシュメモリ及びその制御方法 |
US20060174228A1 (en) | 2005-01-28 | 2006-08-03 | Dell Products L.P. | Adaptive pre-fetch policy |
US7380066B2 (en) | 2005-02-10 | 2008-05-27 | International Business Machines Corporation | Store stream prefetching in a microprocessor |
US7519776B2 (en) * | 2005-07-26 | 2009-04-14 | Invensys Systems, Inc. | Method and system for time-weighted cache management |
US7533242B1 (en) * | 2005-10-31 | 2009-05-12 | Sun Microsystems, Inc. | Prefetch hardware efficiency via prefetch hint instructions |
US7493451B2 (en) * | 2006-06-15 | 2009-02-17 | P.A. Semi, Inc. | Prefetch unit |
US7739478B2 (en) * | 2007-03-08 | 2010-06-15 | Hewlett-Packard Development Company, L.P. | Multiple address sequence cache pre-fetching |
US7908439B2 (en) * | 2007-06-25 | 2011-03-15 | International Business Machines Corporation | Method and apparatus for efficient replacement algorithm for pre-fetcher oriented data cache |
US7991956B2 (en) * | 2007-06-27 | 2011-08-02 | Intel Corporation | Providing application-level information for use in cache management |
-
2008
- 2008-03-21 JP JP2008073863A patent/JP2009230374A/ja not_active Withdrawn
- 2008-12-15 US US12/334,795 patent/US8166250B2/en not_active Expired - Fee Related
- 2008-12-17 EP EP10187472A patent/EP2299356A1/en not_active Withdrawn
- 2008-12-17 EP EP08171949A patent/EP2131276A3/en not_active Withdrawn
- 2008-12-30 KR KR1020080136801A patent/KR100976433B1/ko not_active IP Right Cessation
-
2009
- 2009-01-22 CN CN2009100060393A patent/CN101539853B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6510494B1 (en) * | 1999-06-30 | 2003-01-21 | International Business Machines Corporation | Time based mechanism for cached speculative data deallocation |
US6981099B2 (en) * | 2002-12-16 | 2005-12-27 | Sun Microsystems, Inc. | Smart-prefetch |
CN101078979A (zh) * | 2007-06-29 | 2007-11-28 | 东南大学 | 具有多通道指令预取功能的存储控制电路 |
Also Published As
Publication number | Publication date |
---|---|
EP2299356A1 (en) | 2011-03-23 |
KR20090101072A (ko) | 2009-09-24 |
EP2131276A3 (en) | 2010-04-07 |
EP2131276A2 (en) | 2009-12-09 |
US20090240887A1 (en) | 2009-09-24 |
US8166250B2 (en) | 2012-04-24 |
JP2009230374A (ja) | 2009-10-08 |
CN101539853A (zh) | 2009-09-23 |
KR100976433B1 (ko) | 2010-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101539853B (zh) | 信息处理单元、执行方法和指令序列生成方法 | |
US6584549B2 (en) | System and method for prefetching data into a cache based on miss distance | |
US7424578B2 (en) | Computer system, compiler apparatus, and operating system | |
US6959435B2 (en) | Compiler-directed speculative approach to resolve performance-degrading long latency events in an application | |
JP3888508B2 (ja) | キャッシュ・データ管理方法 | |
US6782454B1 (en) | System and method for pre-fetching for pointer linked data structures | |
KR100474622B1 (ko) | 마이크로컴퓨터 | |
US6996821B1 (en) | Data processing systems and method for batching tasks of the same type in an instruction cache | |
US6968429B2 (en) | Method and apparatus for controlling line eviction in a cache | |
CN101131671A (zh) | 控制对非易失性存储器的访问 | |
US6668307B1 (en) | System and method for a software controlled cache | |
JP2005302034A (ja) | メモリを管理するためのシステムおよび方法 | |
US20050091456A1 (en) | Determining an arrangement of data in a memory for cache efficiency | |
US20170364679A1 (en) | Instrumented versions of executable files | |
JPH09120372A (ja) | プリフェッチ命令を用いるハーバードアーキテクチャキャッシュメモリの調和したソフトウェア制御 | |
KR20000069797A (ko) | 캐시 메모리에서의 프리페치 관리 장치 | |
US20110265072A1 (en) | Dynamic Installation of Files for Running Programs | |
CN103608768A (zh) | 一种数据预取方法、相关装置及*** | |
KR20100005539A (ko) | 캐시 메모리 시스템 및 캐시의 프리페칭 방법 | |
US20060037013A1 (en) | Program update apparatus, method, and medium | |
CN101107591B (zh) | 计算机***和用于启动其中的基本程序的方法 | |
KR100871185B1 (ko) | 전용 캐시 메모리 | |
JP2022046413A (ja) | 記憶デバイスのための改良された先読み能力 | |
US6851025B2 (en) | Cache management system using cache control instructions for controlling the operation of cache | |
WO1997036234A1 (en) | Cache multi-block touch mechanism for object oriented computer system |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120822 Termination date: 20160122 |
|
EXPY | Termination of patent right or utility model |