CN1264866A - 合并多个未完成的装入未命中指令的系统和方法 - Google Patents

合并多个未完成的装入未命中指令的系统和方法 Download PDF

Info

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
Application number
CN00102400A
Other languages
English (en)
Other versions
CN1120415C (zh
Inventor
小M·W·弗雷德里克
B·J·龙彻蒂
D·J·希彼
L·E·撒切尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1264866A publication Critical patent/CN1264866A/zh
Application granted granted Critical
Publication of CN1120415C publication Critical patent/CN1120415C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30181Instruction operation extension or modification
    • 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, look ahead
    • G06F9/3824Operand 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所述的系统,其中第一和第二结果总线把高速缓存行并行地传送到第一和第二寄存器去。
CN00102400A 1999-02-26 2000-02-25 合并多个未完成的装入未命中指令的系统和方法 Expired - Lifetime CN1120415C (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (15)

* Cited by examiner, † Cited by third party
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