CN1264866A - 合并多个未完成的装入未命中指令的系统和方法 - Google Patents
合并多个未完成的装入未命中指令的系统和方法 Download PDFInfo
- Publication number
- CN1264866A CN1264866A CN00102400A CN00102400A CN1264866A CN 1264866 A CN1264866 A CN 1264866A CN 00102400 A CN00102400 A CN 00102400A CN 00102400 A CN00102400 A CN 00102400A CN 1264866 A CN1264866 A CN 1264866A
- Authority
- CN
- China
- Prior art keywords
- load
- cache
- cache line
- data
- packing
- 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
Links
Images
Classifications
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/30181—Instruction operation extension or modification
-
- 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, look ahead
- G06F9/3824—Operand accessing
Abstract
在一个装入存储单元内完成管道和并行执行多个装入指令。当第一个装入指令遇到高速缓存未击中、继而从系统存储体系中取回该装入数据时,要访问相同装入数据的第二个装入指令将与第一个装入指令合并,这样,从系统存储体系中返回的数据就被送至与第一和第二两个装入指令相关的寄存器文件。结果,第二个装入指令就没有必要等到该装入数据被写入数据高速缓存且在其中被验证。
Description
技术领域
本发明一般涉及数据处理系统,特别涉及在一个处理器中执行装入指令。
背景信息
为了提高微处理器的运行速度,微处理器的结构已经按下述方式设计和实现:允许在微处理器中执行多个并行的装入指令。为能基本上实现并行执行,指令管道准许发出多于一个指令。当发出第一个装入指令去执行、却遇上高速缓存未命中后,又发出第二个装入指令去执行,而它要装入与第一个装入指令相同的高速缓存行(cache line)时,与这种过程相关的一个问题就发生了。一般,在这种情况下,第二个装入指令不得不重执行,或者至少要等到装入数据从第一个装入指令取回至第一数据高速缓存,且在第二个装入指令能够完成之前被验证。
结果,在技术上就有一种需要,对在一个处理器中执行管道化装入指令的过程进行改进。
发明概述
本发明把在某些情况下访问相同高速缓存的多对装入指令合并起来,以此解决上述需要。本发明提供了一个装入存储单元。它接收原先在高速缓存中未命中的装入指令到一个高速缓存行。一个装入未命中队列保持着为处理前面在高速缓存未命中的装入指令所需要的信息。当随后一个装入指令试图装入前面在高速缓存中未命中的相同的高速缓存行时,装入未命中队列将负责处理第二个装入指令。当该高速缓存行返回到数据高速缓存时,所要求的数据就通过第一总线传送到第一个装入指令的寄存器去,第二个装入指令所要求的数据就通过第二总线传送到第二个装入指令的寄存器去。这样,访问相同高速缓存行的两个装入指令的每一个操作数都由相同的未命中操作来提供。
上面已经粗略地概述了本发明的特征和技术优点,以便能更好地理解随后对本发明所作的详细说明。本发明的其它特性和优点将在下面叙述,由此形成了本发明权利要求的主题。
附图的简单说明
为更完整地理解本发明及其优点,要结合这些附图来参阅下面的描述,其中:
图1图解了根据本发明构成的一个数据处理系统;
图2A和图2B图解了根据本发明构成的一个装入/存储单元;和
图3图解了根据本发明的一个流程图。
详细描述
在下面的描述中作了大量具体的详细说明,诸如具体的字长和字节长等,以便能彻底地理解本发明。但是,很明显,对本领域的技术人员来说,没有这些具体的详细说明就能实施本发明。另外,众所周知的电路只用方块图方式表示,以免用不必要的详细使本发明难以理解。对大部分而言,涉及到定时考虑等等的细节都被省略了,因为像这样的细节对完整地理解本发明并非必要,而且这些都在相关技术领域技术人员的个人常规技术之内。
现在谈及这些附图,其中列出的元件都没必要画出其规模,相象或相似的元件通过几种形式用相同的参数指明。
为实现本发明的一种代表性的硬件环境画在图1上,它图解了本发明的工作站113的一种典型的硬件结构,它有一个中央处理单元(CPU)110,以及一些通过系统总线112相互连接的其它单元。CPU110包括了一个如下面将要描述的本发明的装入/存储单元201。工作站113包括了随机存储器(RAM)114,只读存储器(ROM)116,以及输入/输出(I/0)适配器118,它连接诸如磁盘单元120、磁带驱动器140等外围设备至总线112,用户接口适配器122,它连接键盘124、鼠标126、和/或诸如触摸屏设备(未画出)等其它用户接口设备至总线112,通讯适配器134,它连接工作站113至数据处理网络,以及显示适配器136。它连接总线112至显示设备138。CPU110还可能包括一些其它电路(除装入/存储单元201之外),在此图中没有画出,它将包括那些在一个微处理器中都能发现的电路,例如执行单元,总线接口单元,算术逻辑单元,等等。CPU110也可能处于一个单一的集成电路中。
图20(图2A和图2B)图解了根据本发明构成的装入/存储(L/S)单元201。L/S单元201位于CPU110之内,它可以根据典型的微处理器结构构成。
L/S单元201有二个管道,所以每个机器周期可以发出两个装入或存储指令。寄存器202-205按现有技术众所周知的方式接收来自定点单元(FXU)0和1(未画出)的指令。64位的加法器206将接收来自寄存器202和203的操作数相加,与此同时,64位加法器207将接收来自寄存204和205的操作数相加,以产生一对64位有效地址。这些有效地址被分别输出至寄存器208和209。寄存器208和209获取该有效地址(EA)。然后他们两者送到LMQ218、LRQ220和SRQ222,它们都需要有效地址的一部分,加上来自寄存器216和217的实地址,以完成地址检验。此外,有效地址被解码以访问标记阵列210和211,用来制定在L1高速缓存236中是一个命中,还是一个未命中。如果是一个未命中,那么该地址就通过寄存器212和213传递并送到L2高速缓存去(未画出)。
进一步,有效地址从加法器206和207发出,分别被解码,并用来访问有效实地址转换器(ERAT)阵列214和215,通过寄存器216和217输出变换地址。
而且,来自加法器206和207的有效地址访问L1高速缓存236,以便经过位于L1高速缓存器236内的解码器解码后进行装入操作。如果在L1高速缓存236中有一个命中,则数据从L1高速缓存236读出至寄存器237、238,由格式器240、241格式化,并返回到结果总线,送至寄存器文件(RegFile)(未画出)。由L1高速缓存236读出的高速缓存行也返回到寄存器202-205,进行依赖于操作数结果的操作。
基本上,在L/S201中完成的三个周期是执行周期(完成相加),访问周期(完成访问阵列),和结果周期(完成数据的格式化和转发)。
如果在高速缓存中有一个未命中,则请求被向下送至L2高速缓存(未画出)。装入未命中队列(LMQ)218要等待装入数据从L2高速缓存(未画出)返回。与那个高速缓存行相关的数据被装入L1高速缓存236。
这些装入操作可以被冒风险地完成,会发生紊乱。存储指令也被紊乱地执行。存储指令贯穿转换器214、215的变换操作,然后被插入至存储数据队列(SDQ)221中去,在该指令完成后存储到L1高速缓存236中去。因此,虽然存储指令被紊乱地执行,但却按序地被写入L1高速缓存236。
存储重排序队列(SRQ)222保持着已经执行过的存储指令的轨迹。SRQ222维持在队列中的存储指令,并判定:什么时候在存储数据队列(SDQ)221中的数据是可用的,以及什么时候该存储指令是下一个要完成的。然后完成向L1高速缓存236的存储。
许多寄存器223,225-229和237-238是用作定时的。
在L1高速缓存236中,高速缓冲行是基于高速缓存的有效地址来访问的。RA标记阵列保存着一个高速缓存行被写入L1高速缓存处的轨迹。格式方块231从SDQ221中取出数据并适当地循环移位,以便在执行存储指令时写入到L1高速缓存中正确的字节位置。循环移位方块224和230被用于存储转发。因此,如果有一个存储指令正处于存储队列、但因为它不是下一个要完成的而尚未写入队列时,则一个需要该数据的更加新的装入指令被接收,数据将被转发至这个正被执行的装入指令。
循环移位方块239影响L1高速缓存未命中循环移位从L2高速缓存(未画出)接收的数据,把该数据从L2高速缓存转发至结果总线,再转发至适当的寄存器文件。
方块219包括有许多特殊目的寄存器,用来存放作为特殊目的寄存器指令结果的数据,以及从这些寄存器读出数据,使它们能进入正常的管道。
寄存器235实现定时存储来自L2高速缓存(未示出)的数据。格式化方块240和241格式化(移位)高速缓存数据以进入适当的字节位置,将结果装入寄存器文件。
装入存储单元201包含一个如上所述的装入未命中队列(LMQ)218,它处理那些在L1高速缓存236中未命中的装入指令。LMQ218控制着从下流存储器(第二或L2高速缓存,L3高速缓存,系统存储器等)重新装入L1数据高速缓存行。当数据从存储体系返回时,LMQ218控制转发临界装入数据无结果总线280、281和送至寄存器文件。
LMQ218具有八个入口,它允许同时进行高达8个不同的尚未完成的高速缓存行的请求(每个入口一个高速缓存行未命中)。同时,8个LMQ入口中的任一个都能转发临界数据至两个装入指令(正如下面所叙述的,这个第二个装入指令已被“合并”到现存的入口)。因此,LMQ218可以潜在地同时为16个装入指令服务。
本发明完成一个“装入-命吕-重装入合并”功能,它把一个输入指令在执行时间合并入正在等待重新装入数据的一个现已存在的LMQ218的入口。
当数据从存储体系返回时,该临界数据就在结果总线280、281上被传发至寄存器文件。这些临界数据的转发具有最高的优先权,它可以超越刚刚正要发出的其它装入或存储指令而发生。请注意:装入存储单元具有二个执行管道,因此它也有两条结果总线280、281。用合并的方法,本发明运用了这二个管道的优点,即当数据从存储体系返回的时候,它把装入数据返回到每个结果总线280、281上去。
请参阅图3。在301步由发送单元271发出第一个装入指令。在302步,要作出一个判断:该第一个装入指令要访问的数据(高速缓存行)是不是处于L1高速缓存236中。如果是,流程就进入303步,把要访问的装入数据从L1高速缓存236返回到结果总线280、281。
如果要访问的高速缓存行不在L1高速缓存236中,流程将从302步进入304步,去判断:该高速缓存行的地址是不是与现存的LMQ218某一入口的一个地址相符合。如果不是,流程将进入305步,去判断:LMQ218是不是满的。如果不是,将为该高速缓存未命中创建一个新的LMQ218入口,而且对该高速缓存行的请求被向下送到系统存储体系,在这种情况下,可能是向L2高速缓存请求,如306步。在311步,该第一个装入指令将等待装入数据从L2高速缓存返回。在此时,第二个装入指令可能由发送单元271发出,在装入存储单元中执行(301步)。针对本例的目的,假设该第二个装入指令正请求由第一个装入指令所访问的相同的高速缓存中的数据。因此,该第二个装入指令像第一个装入指令一样也访问相同的高速缓存行。在302步,将会判定:由第二个装入指令请求的高速缓冲行不在L1数据高速缓存236中,因为这个高速缓存行对第一个装入指令是无效的。请注意:这种情景在本发明中可能是真的,因为本发明用装入存储单元201执行多个并行装入指令。如果该高速缓存行已经由L2高速缓存返回到L1数据高速缓存236,并验证过,则在302步将会判定有一个L1命中,而且第二个装入指令将拥有在303步中返回到结果总线280、281上的数据。不过,如上所述,我们曾经设第一个装入指令还一直在等待所请求的高速缓存行返回(311步)。
在304步,因为相同的高速缓存行正被第一个和第二个装入指令访问,流程将进入307步,去决定存储槽位置是不是已满。换句话说,去判断为第一个装入指令创建的LMQ入口是不是已经和另一个第三个装入指令合并。如果是,该第二装入指令在308步中被拒绝。但是,如果槽没有满,流程将进入309步,去判断该高速缓存行是不是正处于返回到装入存储单元去的过程中。如果是,该第二个装入指令将在308步中被拒绝。在309步中的判断可以用观察一个L2高速缓存判断信号来做出。
如果数据尚未返回,流程将进入310步,把该第二个装入指令合并到对应于第一个装入指令的现存的LMQ218的入口中去。LMQ218包含有许多入口。每个入口都具有一组二进制位,作为发生装入未命中的高速缓存行的地址。每个入口的第二组二进制位适用地控制判断被返回和存储的数据格式的信息。在304步中,将第二个装入指令的地址和在LMQ入口指明的第一个装入指令的地址进行比较。
每个LMQ入口也包含了另外一些二进制位,适用于控制判断被取回和存储的数据格式但是对应于一个被合并的装入指令的信息。在第307步中,如果这第二组二进制位已被来自上一次合并所占据,那么该第二个装入指令在308步中被拒绝。但是,如果不是,则在301步中完成合并操作,形成控制信息,使第二个装入指令存储在对应于第一个装入指令的LMQ入口。
因此,在311步中,该第二个装入指令也将等待返回的装入数据。
一但装入数据返回,它将被送到两个结果总线上去,并送到与第一个和第二个装入指令相对应的寄存器文件,如合并的LMQ218入口指明的那样。
本发明的优点是:将第二个装入指令和第一个装入指令合并,当数据从存储体系返回时,它允许装入存储单元201把临界装入数据转发至结果总线280、281。如果第二个装入指令还没有与第一个装入指令合并,该第二个装入指令就不得不等到所有数据(高速缓存行)写入L1数据高速缓存236且在第二个装入指令可能得到这些数据之前这些高速缓存行得到验证。合并第二个装入指令提供了一个性能优点,一但装入数据对装入存储单元有效时就立即返回它。尽快地返回数据将允许执行相关联的指令。
尽管本发明及其优点已经详细说明,但还应该进一步了解:在不偏离如附录的权利要求所定义的本发明的精神和范畴的情况下,对本发明所作的各种变化、替代和更换。
Claims (19)
1.一种在一个处理器中执行装入指令的方法,它由下列步骤组成:
发送第一个装入指令以执行;
判断由第一个装入指令所访问的数据不在主高速缓存中;
从系统存储器取回这个数据;
发送第二个装入指令以执行,其中第二个装入指令访问同一个数据;和
把该数据返回至第一和第二的两个装入指令。
2.如权利要求1所述的方法,其中系统存储器包括了一个第二高速缓存。
3.如权利要求1所述的方法,其中判断步骤进一步包括下述步骤:
在装入未命中队列中分配一个对应于第一个装入指令的一个入口。
4.如权利要求3所述的方法,其中装入未命中队列中的入口包括了该数据的一个地址。
5.如权利要求4所述的方法,其中返回步骤进一步包括下述步骤:
将第二个装入指令的地址与在存储未命中队列中的数据的地址进行比较。
6.如权利要求5所述的方法,其中返回步骤进一步包括下述步骤:
把第二个装入指令与第一个装入指令合并。
7.一种处理器,由下列单元组成:
一个装入/存储单元;
一个指令发送单元,它发送第一个装入指令至装入/存储单元,其中第一个装入指令访问一个高速缓存行;
用以判断所访问的高速缓存行是不是在与装入/存储单元相连接的数据高速缓存中的电路;
一个存储未命中队列,当判断出所访问的高速缓存行不在与装入/存储单元相连接的数据高速缓存中时,该队列存储一个对应第一个装入指令的入口;
用以从数据高速缓存下游的存储器中请求所访问的高速缓存行的电路;
将为在装入存储单元中执行而接收的第二个装入指令的高速缓存的地址与装入未命中队列的入口进行比较的电路;
把第二个装入指令与对应第一个装入未命中队列的入口相合并的电路;
一个第一结果总线,将从下游存储器接收到的要访问的高速缓存行传送到与第一个装入指令相关的一个寄存器去;
一个第二结果总线,将从下游存储器接收到的要访问的高速缓存行传送到与第二个装入指令相关的一个寄存器去。
8.如权利要求7所述的处理器,其中第二个装入指令在处理第一个装入指令的同时得到处理,而没有必要重发第二个装入指令。
9.如权利要求7所述的处理器,其中第一个装入指令接收要访问的高速缓存行,而没有必要等到该高速缓存行被存储到数据高速缓存中去。
10.如权利要求9所述的处理器,其中第二个装入指令接到要访问的高速缓存行,而没有必要等到该高速缓存行被存储到数据高速缓存中且被验证。
11.在一个处理器中执行装入指令的系统,由下列电路组成:
发送第一个装入指令到装入/存储单元中执行的电路;
判断第一个装入指令要访问的高速缓存行不在与装入/存储单元相连接的主高速缓存中的电路;
从连接到处理器的第二高速缓存中取回该高速缓存行的电路;
发送第二个装入指令到装入/存储单元中执行的电路,其中第二个装入指令也访问该高速缓存行;和
把该高速缓存行返回到第一和第二两个装入指令的电路。
12.如权利要求11所述的系统,其中第二个装入指令接收高速缓存行,没有必要等到该高速缓存行被存储到主高速缓存中去。
13.如权利要求11所述的系统,其中第二个装入指令接收高速缓存行。没有必要等到该高速缓存行被存储到主高速缓存中去且被验证。
14.如权利要求12所述的系统,其中判断电路进一步包括:
一个电路,它在装入未命中队列中分配一个对应于第一个装入指令的一个入口。
15.如权利要求14所述的系统,其中在装入未命中队列中的入口包括该高速缓存行的一个地址。
16.如权利要求15所述的系统,其中返回电路进一步包括:
一个电路,它比较第二装入指令的地址和装入未命中队列中的高速缓存行的地址。
17.如权利要求16的系统,其中返回电路进一步包括:
一个电路,它把第二个装入指令与装入未命中队列中对应于第一个装入指令的入口相合并。
18.如权利要求16所述的系统,其中返回电路进一步包括:
一个第一结果总线,它把从第二高速缓存接收的高速缓存行传送到与第一个装入指令相关的第一寄存器去,和
一个第二结果总线,它把从第二高速缓存接收的高速缓存行传送到与第二个装入指令相关的第二寄存器去。
19.如权利要求17所述的系统,其中第一和第二结果总线把高速缓存行并行地传送到第一和第二寄存器去。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/259139 | 1999-02-26 | ||
US09/259,139 US6336168B1 (en) | 1999-02-26 | 1999-02-26 | System and method for merging multiple outstanding load miss instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1264866A true CN1264866A (zh) | 2000-08-30 |
CN1120415C CN1120415C (zh) | 2003-09-03 |
Family
ID=22983691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN00102400A Expired - Lifetime CN1120415C (zh) | 1999-02-26 | 2000-02-25 | 合并多个未完成的装入未命中指令的系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US6336168B1 (zh) |
JP (1) | JP4045062B2 (zh) |
CN (1) | CN1120415C (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1299201C (zh) * | 2001-08-29 | 2007-02-07 | 模拟设备公司 | 通过响应高速缓存缺失而切换任务来提高基于高速缓存的嵌入式处理器的处理能力的方法和装置 |
CN100390738C (zh) * | 2005-10-18 | 2008-05-28 | 中国科学院计算技术研究所 | 一种基于数据流分析的访存合并优化方法 |
CN104583956A (zh) * | 2012-06-15 | 2015-04-29 | 索夫特机械公司 | 用于实现加载存储重新排序和优化的指令定义 |
CN104657145A (zh) * | 2015-03-09 | 2015-05-27 | 上海兆芯集成电路有限公司 | 用于微处理器的重发停靠的系统和方法 |
US9904552B2 (en) | 2012-06-15 | 2018-02-27 | Intel Corporation | Virtual load store queue having a dynamic dispatch window with a distributed structure |
US9928121B2 (en) | 2012-06-15 | 2018-03-27 | Intel Corporation | Method and system for implementing recovery from speculative forwarding miss-predictions/errors resulting from load store reordering and optimization |
US9965277B2 (en) | 2012-06-15 | 2018-05-08 | Intel Corporation | Virtual load store queue having a dynamic dispatch window with a unified structure |
US10019263B2 (en) | 2012-06-15 | 2018-07-10 | Intel Corporation | Reordered speculative instruction sequences with a disambiguation-free out of order load store queue |
US10048964B2 (en) | 2012-06-15 | 2018-08-14 | Intel Corporation | Disambiguation-free out of order load store queue |
CN109669881A (zh) * | 2018-12-11 | 2019-04-23 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于Cache空间预约算法的计算方法 |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6542988B1 (en) * | 1999-10-01 | 2003-04-01 | Sun Microsystems, Inc. | Sending both a load instruction and retrieved data from a load buffer to an annex prior to forwarding the load data to register file |
US6901540B1 (en) * | 1999-11-08 | 2005-05-31 | International Business Machines Corporation | TLB parity error recovery |
US6725358B1 (en) * | 2000-06-22 | 2004-04-20 | International Business Machines Corporation | Processor and method having a load reorder queue that supports reservations |
US7743223B2 (en) * | 2003-08-18 | 2010-06-22 | Cray Inc. | Decoupling of write address from its associated write data in a store to a shared memory in a multiprocessor system |
US7519771B1 (en) * | 2003-08-18 | 2009-04-14 | Cray Inc. | System and method for processing memory instructions using a forced order queue |
US7543133B1 (en) | 2003-08-18 | 2009-06-02 | Cray Inc. | Latency tolerant distributed shared memory multiprocessor computer |
US20050138290A1 (en) * | 2003-12-23 | 2005-06-23 | Intel Corporation | System and method for instruction rescheduling |
US7257699B2 (en) * | 2004-07-08 | 2007-08-14 | Sun Microsystems, Inc. | Selective execution of deferred instructions in a processor that supports speculative execution |
US7302527B2 (en) * | 2004-11-12 | 2007-11-27 | International Business Machines Corporation | Systems and methods for executing load instructions that avoid order violations |
JP4837305B2 (ja) * | 2005-05-10 | 2011-12-14 | ルネサスエレクトロニクス株式会社 | マイクロプロセッサ及びマイクロプロセッサの制御方法 |
US20080282034A1 (en) * | 2005-09-19 | 2008-11-13 | Via Technologies, Inc. | Memory Subsystem having a Multipurpose Cache for a Stream Graphics Multiprocessor |
US20070067567A1 (en) * | 2005-09-19 | 2007-03-22 | Via Technologies, Inc. | Merging entries in processor caches |
US7627735B2 (en) * | 2005-10-21 | 2009-12-01 | Intel Corporation | Implementing vector memory operations |
JP5040121B2 (ja) * | 2006-02-24 | 2012-10-03 | 日本電気株式会社 | 情報処理装置、キャッシュ制御方法及びプログラム |
US20090113182A1 (en) * | 2007-10-24 | 2009-04-30 | Abernathy Christopher M | System and Method for Issuing Load-Dependent Instructions from an Issue Queue in a Processing Unit |
US7991979B2 (en) * | 2008-09-23 | 2011-08-02 | International Business Machines Corporation | Issuing load-dependent instructions in an issue queue in a processing unit of a data processing system |
US9323679B2 (en) * | 2012-08-14 | 2016-04-26 | Nvidia Corporation | System, method, and computer program product for managing cache miss requests |
US9983875B2 (en) | 2016-03-04 | 2018-05-29 | International Business Machines Corporation | Operation of a multi-slice processor preventing early dependent instruction wakeup |
US10037211B2 (en) * | 2016-03-22 | 2018-07-31 | International Business Machines Corporation | Operation of a multi-slice processor with an expanded merge fetching queue |
US10346174B2 (en) | 2016-03-24 | 2019-07-09 | International Business Machines Corporation | Operation of a multi-slice processor with dynamic canceling of partial loads |
US10761854B2 (en) | 2016-04-19 | 2020-09-01 | International Business Machines Corporation | Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor |
US10037229B2 (en) | 2016-05-11 | 2018-07-31 | International Business Machines Corporation | Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions |
US9934033B2 (en) | 2016-06-13 | 2018-04-03 | International Business Machines Corporation | Operation of a multi-slice processor implementing simultaneous two-target loads and stores |
US10042647B2 (en) | 2016-06-27 | 2018-08-07 | International Business Machines Corporation | Managing a divided load reorder queue |
US10318419B2 (en) | 2016-08-08 | 2019-06-11 | International Business Machines Corporation | Flush avoidance in a load store unit |
US10572260B2 (en) * | 2017-12-29 | 2020-02-25 | Intel Corporation | Spatial and temporal merging of remote atomic operations |
EP3812892B1 (en) * | 2019-10-21 | 2022-12-07 | ARM Limited | Apparatus and method for handling memory load requests |
GB2594732B (en) | 2020-05-06 | 2022-06-01 | Advanced Risc Mach Ltd | Adaptive load coalescing |
US11249757B1 (en) * | 2020-08-14 | 2022-02-15 | International Business Machines Corporation | Handling and fusing load instructions in a processor |
US20220374237A1 (en) * | 2021-05-21 | 2022-11-24 | Telefonaktiebolaget Lm Ericsson (Publ) | Apparatus and method for identifying and prioritizing certain instructions in a microprocessor instruction pipeline |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5155832A (en) * | 1989-07-05 | 1992-10-13 | Hewlett-Packard Company | Method to increase performance in a multi-level cache system by the use of forced cache misses |
US5826109A (en) * | 1994-01-04 | 1998-10-20 | Intel Corporation | Method and apparatus for performing multiple load operations to the same memory location in a computer system |
US5745729A (en) * | 1995-02-16 | 1998-04-28 | Sun Microsystems, Inc. | Methods and apparatuses for servicing load instructions |
-
1999
- 1999-02-26 US US09/259,139 patent/US6336168B1/en not_active Expired - Lifetime
-
2000
- 2000-02-23 JP JP2000046172A patent/JP4045062B2/ja not_active Expired - Fee Related
- 2000-02-25 CN CN00102400A patent/CN1120415C/zh not_active Expired - Lifetime
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1299201C (zh) * | 2001-08-29 | 2007-02-07 | 模拟设备公司 | 通过响应高速缓存缺失而切换任务来提高基于高速缓存的嵌入式处理器的处理能力的方法和装置 |
CN100390738C (zh) * | 2005-10-18 | 2008-05-28 | 中国科学院计算技术研究所 | 一种基于数据流分析的访存合并优化方法 |
US10019263B2 (en) | 2012-06-15 | 2018-07-10 | Intel Corporation | Reordered speculative instruction sequences with a disambiguation-free out of order load store queue |
US9904552B2 (en) | 2012-06-15 | 2018-02-27 | Intel Corporation | Virtual load store queue having a dynamic dispatch window with a distributed structure |
US9928121B2 (en) | 2012-06-15 | 2018-03-27 | Intel Corporation | Method and system for implementing recovery from speculative forwarding miss-predictions/errors resulting from load store reordering and optimization |
US9965277B2 (en) | 2012-06-15 | 2018-05-08 | Intel Corporation | Virtual load store queue having a dynamic dispatch window with a unified structure |
US9990198B2 (en) | 2012-06-15 | 2018-06-05 | Intel Corporation | Instruction definition to implement load store reordering and optimization |
CN104583956A (zh) * | 2012-06-15 | 2015-04-29 | 索夫特机械公司 | 用于实现加载存储重新排序和优化的指令定义 |
US10048964B2 (en) | 2012-06-15 | 2018-08-14 | Intel Corporation | Disambiguation-free out of order load store queue |
CN104583956B (zh) * | 2012-06-15 | 2019-01-04 | 英特尔公司 | 用于实现加载存储重新排序和优化的指令定义 |
US10592300B2 (en) | 2012-06-15 | 2020-03-17 | Intel Corporation | Method and system for implementing recovery from speculative forwarding miss-predictions/errors resulting from load store reordering and optimization |
CN104657145A (zh) * | 2015-03-09 | 2015-05-27 | 上海兆芯集成电路有限公司 | 用于微处理器的重发停靠的系统和方法 |
CN104657145B (zh) * | 2015-03-09 | 2017-12-15 | 上海兆芯集成电路有限公司 | 用于微处理器的重发停靠的系统和方法 |
CN109669881A (zh) * | 2018-12-11 | 2019-04-23 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于Cache空间预约算法的计算方法 |
CN109669881B (zh) * | 2018-12-11 | 2023-04-14 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于Cache空间预约算法的计算方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2000250810A (ja) | 2000-09-14 |
CN1120415C (zh) | 2003-09-03 |
US6336168B1 (en) | 2002-01-01 |
JP4045062B2 (ja) | 2008-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1264866A (zh) | 合并多个未完成的装入未命中指令的系统和方法 | |
US7707393B2 (en) | Microprocessor with high speed memory integrated in load/store unit to efficiently perform scatter and gather operations | |
US6496902B1 (en) | Vector and scalar data cache for a vector multiprocessor | |
JP3618385B2 (ja) | データをバッファリングする方法およびそのシステム | |
EP0352633B1 (en) | A pipeline having an integral cache for computer processors | |
US5848432A (en) | Data processor with variable types of cache memories | |
JP3509067B2 (ja) | ストア命令転送方法およびプロセッサ | |
US7213126B1 (en) | Method and processor including logic for storing traces within a trace cache | |
IE990754A1 (en) | An apparatus for software initiated prefetch and method therefor | |
US8046568B2 (en) | Microprocessor with integrated high speed memory | |
JP2000089953A (ja) | 命令履歴キャッシングを使用して推測的に命令を実行する回路および方法 | |
WO2002017086A2 (en) | Method and apparatus for pipelining ordered input/output transactions in a cache coherent, multi-processor system | |
KR100335744B1 (ko) | 로드/로드 검출 및 재정렬 방법 | |
US6684319B1 (en) | System for efficient operation of a very long instruction word digital signal processor | |
KR100618248B1 (ko) | 실행 엔진으로부터 다중 데이터 소스까지 다중 로드 및 기억 요구를 지원하는 장치 및 방법 | |
JP3407808B2 (ja) | コンピュータシステム | |
US6240507B1 (en) | Mechanism for multiple register renaming and method therefor | |
JP2000515276A (ja) | スーパースカラマイクロプロセッサのための非ブロッキングロードを実現するロード/ストアユニットおよびロード/ストアバッファから非ブロッキング的にロードを選択する方法 | |
US20050015552A1 (en) | System for supporting unlimited consecutive data stores into a cache memory | |
US4737908A (en) | Buffer memory control system | |
US20080282050A1 (en) | Methods and arrangements for controlling memory operations | |
EP0271187B1 (en) | Split instruction and operand cache management | |
US20080282051A1 (en) | Methods and arrangements for controlling results of memory retrival requests | |
US10963255B2 (en) | Implied fence on stream open | |
EP0912929B1 (en) | A data address prediction structure and a method for operating the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CX01 | Expiry of patent term | ||
CX01 | Expiry of patent term |
Granted publication date: 20030903 |