CN1804792B - 在长等待时间指令执行期间允许存储转发的方法和系统 - Google Patents
在长等待时间指令执行期间允许存储转发的方法和系统 Download PDFInfo
- Publication number
- CN1804792B CN1804792B CN2005101191558A CN200510119155A CN1804792B CN 1804792 B CN1804792 B CN 1804792B CN 2005101191558 A CN2005101191558 A CN 2005101191558A CN 200510119155 A CN200510119155 A CN 200510119155A CN 1804792 B CN1804792 B CN 1804792B
- Authority
- CN
- China
- Prior art keywords
- data
- storage
- instruction
- period
- stored
- 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 43
- 230000015572 biosynthetic process Effects 0.000 claims description 19
- 239000000872 buffer Substances 0.000 claims description 15
- 238000001514 detection method Methods 0.000 claims description 2
- 230000006870 function Effects 0.000 claims description 2
- 230000001052 transient effect Effects 0.000 claims description 2
- 238000013507 mapping Methods 0.000 claims 1
- 238000005516 engineering process Methods 0.000 abstract description 7
- 238000012545 processing Methods 0.000 abstract description 4
- 230000008520 organization Effects 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 5
- 230000008878 coupling Effects 0.000 description 5
- 238000010168 coupling process Methods 0.000 description 5
- 238000005859 coupling reaction Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 241001269238 Data Species 0.000 description 3
- 238000010276 construction Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 239000012160 loading buffer Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000005728 strengthening Methods 0.000 description 1
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/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- 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
- G06F9/3834—Maintaining memory consistency
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
Abstract
一种技术,允许在高等待时间指令处理期间满足独立加载。本发明的实施例涉及这样的技术:其中在处理高等待时间指令过程中,当满足独立加载指令时,存储结构用于按照程序顺序保存存储操作。在处理高等待时间指令之后,能够按照程序顺序恢复存储操作而无需查找存储结构。
Description
技术领域
本发明的实施例涉及微处理器和微处理器系统。更为具体地,本发明的实施例涉及能够存储要转发的数据,以便加载指令必须搜索队列以查找要转发的存储的的技术。
背景技术
当执行加载和存储指令时,通常现有技术微处理器依赖于包含内容可编址存储器(CAM)逻辑的可查找队列,以增强存储器操作间的排序,并且在高等待时间指令从存储器存取数据时(“未决”)用于将与存储指令相对应的数据转发到加载指令。如果相应数据没有出现在相对较快的存储结构中、例如高速缓存,那么必须借助于具有相对较慢的存取时间的存储器结构如动态随机存取存储器(DRAM)的指令,可能产生高延迟指令。在特定存储结构中缺少所需数据通常称为“未命中”,而存储结构中存在所述数据通常称为“命中”。
图1说明现有技术处理器结构体系,包括用于执行指令的逻辑,所述指令独立于高等待时间指令(high-latency instruction)。图1的现有技术结构体系能够不断地执行指令而不用停止处理器,包括独立于长等待时间指令的指令,诸如从相对较慢的存储资源(例如DRAM)存取数据的加载。特别地,由指令解码器解码的指令以及由分配和寄存器换名单元分配的寄存器都作为微指令(uop)存储在微指令队列中,从微指令队列中调度这些微指令用于由功能单元执行并将这些微指令发送至寄存器文件。
图1的现有技术结构体系允许独立于未命中的指令通过强制长等待时间指令来使用寄存器文件和调度程序资源,并且那些指令依赖于长等待时间指令来缓和调度和寄存器文件资源,直到未命中能够能得到服务。这使得独立于未命中的指令执行和完成,而不被长等待时间指令或他们的从属指令阻塞。
在图1中,依赖于长等待时间指令的指令暂时存储在等待缓冲器中,而独立指令在长等待时间指令的未决期间得到服务。然而,为了确保正确的存储排序,必须在长等待时间指令的未决期间存储所有并行进行(“在处理”)中的存储指令,通常需要大的存储队列(例如,L1和L2存储队列)。这些存储队列能够随指令处理的增多而增大。
而且,为了查找这些存储队列,诸如CAM逻辑之类的额外逻辑是必需的。特别是,加载操作(查找具有数据的相应存储操作以满足加载操作)通常利用随队列大小而增长的CAM逻辑来查找相对较大的存储队列。
查找具有CAM逻辑的大存储队列能够潜在增加周期时间或增加存取存储队列所花费的周期数量。而且,在处理长等待时间指令过程中,当正在处理的指令数量增加的时候,使用可查找存储队列将存储数据转发到合适的加载指令会变得日益困难,例如服务未命中的加载。而且,诸如CAM逻辑之类的、通常与可查找存储队列相关联的查找逻辑为了在未决长等待时间操作期间满足独立的加载操作可能需要额外的能量、芯片空间和处理周期。
发明内容
一种装置,包括第一存储设备,用于在高等待时间操作从第二存储设备存取数据期间记录多个存储操作的程序顺序。
一种方法,包括:发出高等待时间指令;将按照程序顺序在高等待时间指令之后的多个存储指令存储在先入先出队列中;在高等待时间指令检索数据时,利用独立于高等待时间指令的存储指令的数据来满足独立于高等待时间指令的加载指令。
一种系统,包括:存储器,用于存储第一数据;处理器,用于执行高等待时间指令以检索第一数据;队列,用于在高等待时间操作检索第一数据时,按照程序顺序存储多个存储指令;高速缓存,用于暂时包括与多个存储指令中的至少一个相对应的存储数据,存储数据满足独立于高等待时间操作的加载指令;组相关加载缓冲器,用于存储与加载指令相对应的存储地址,存储地址要与存储指令的目标地址相比较。
一种机器可读介质,具有存储在其上的一组指令,如果由机器执行指令,则使机器执行一种方法,该方法包括:响应需要执行多于最小时间的存储器存取指令,将多个存储操作按照程序顺序存储在先入先出(FIFO)队列中;响应存储器存取指令的完成,从FIFO队列中检索多个存储操作并将它们的数据按 照程序顺序存储在数据高速缓存中而不必查找FIFO队列。
附图说明
通过举例而非限定的方式说明本发明的实施例,附图中相同的标记表示相似的元件,其中:
图1示出微处理器内的现有技术体系结构,用于在未决长等待时间存储器存取操作(诸如加载操作)期间满足独立操作。
图2示出根据本发明一个实施例的体系结构,使得满足独立操作而不使用可查找存储结构。
图3是示出可以包含在本发明一个实施例中的操作的流程图。
图4示出根据一个实施例的体系结构,包括弱检测过滤器(loose-checkfilter),使得满足独立操作而不使用可查找存储结构。
图5是共享总线计算机系统,在其中可以使用本发明的一个实施例。
图6是点对点计算机系统,在其中可以使用本发明的一个实施例。
图7示出根据一个实施例的体系结构,使用加载缓冲器来存储与匹配存储地址相对应的加载地址。
图8示出根据一个实施例的图7的加载缓冲器的条目。
具体实施方式
本发明的实施例涉及向独立于高等待时间指令(high-latency instruction)(诸如存取DRAM来检索加载数据的加载指令)的指令提供服务的技术。更为具体地,本发明的实施例涉及在高等待时间操作未决时,将存储数据匹配于加载操作,而不使用可查找存储设备的技术。
本发明的至少一个实施例替换了具有相关内容可寻址存储器(CAM)逻辑的第二级(“L2”)队列而支持先入先出(FIFO)队列,所述FIFO队列在特定时间正执行的一个或多个长等待时间操作的影响下保持存储操作(从属的和独立的)。FIFO队列很可能使用更少的能量,因为FIFO队列不需要像一般的CAM结构那样的查找以及相关的查找逻辑。而且在至少一个实施例中,独立加载从L1数据高速缓存转发数据以有助于保持性能。
图2示例了本发明的一个实施例,其中FIFO队列用于由于高速缓存未命 中而在一个或多个操作正存取相对较慢存取存储器(例如动态随机存取存储器(DRAM))时进行存储。更为具体地,图2示例了第一级(“L1”)存储队列201,其中存储了各种指令或微操作。如果诸如指令或微操作之类的操作不能从相对较快存取存储器(例如数据高速缓存)中检索到所需要的数据,从而创建高速缓存未命中条件,那么可以借助于其他存储器如DRAM或更高级别并通常更慢的高速缓存来检索数据。下文中对相对较慢存取存储资源(例如DRAM)进行存取的操作(例如命令或微操作)称为“高等待时间”操作、指令或微操作。在高等待时间操作试图检索另一源中的存储器期间,独立于高等待时间操作的操作(下文称为“独立操作”)不应该由高等待时间操作或依赖于高等待时间操作的操作(下文称为“从属操作”)选通,但应该允许独立操作完成,因为它们不依赖于高等待时间操作。
相应地,图2示出以程序顺序存储在长等待时间操作之后发生的操作的再存储逻辑(SRL)(store redo log)205。不象现有技术,SRL不包含CAM逻辑或者查找SRL所需的任何其他逻辑,而是SRL按照独立和从属存储操作在程序中出现的顺序对它们进行存储,这样在需要时可按程序顺序将它们读出。在一个实施例中,SRL是FIFO队列。而在其他实施例中,SRL可以是为了从存储结构中检索出指令或微操作而不必对其查找的其他存储结构。
在本发明的一个实施例中,通过将所需的独立存储数据存储在L1存储队列或存储在L1数据高速缓存210中,在满足高等待时间操作之前,可以通过L1存储队列201或者L1数据高速缓存210中的独立存储操作来满足独立加载操作。数据高速缓存能够作为要由独立加载操作使用的数据的暂时存储位置,并且取决于程序顺序,在长等待时间操作结束之后,可以由对应于长等待时间操作或从属操作的数据替换。而且,之前存储在数据高速缓存中的位置上的由独立存储操作写入的任何数据(“脏块”)都能够被存储至其他存储结构中,例如L2高速缓存,并且在长等待时间操作结束之后返回至数据高速缓存。
图2也示例了等待缓冲器,在高等待时间操作仍未决时存储从属操作。在一些实施例中等待缓冲器可以是FIFO。然而在其他实施例中,等待缓冲器可以是其他类型的存储结构。在满足了高等待时间操作之后,在数据高速缓存中以程序顺序重新装配从属和独立数据(包括已经写入数据高速缓存中以满足加载操作的数据)。在本发明的一个实施例中,通过将SRL的数据按照程序顺序 写入并在数据高速缓存中重新装配数据。在将与高等待时间操作对应的数据写入数据高速缓存中的适当位置之后,存储在SRL中的存储操作的数据可以被顺序地从SRL中读出并存储至数据高速缓存中的适当位置,而不必搜索SRL以查找适当的数据。
因为与独立和从属操作对应的所有数据都能从SRL中顺序地读出,所以相对于使用诸如L2存储队列的存储结构来存储独立和从属指令或微操作的现有技术而言,能够更快检索到数据并且消耗更少的能量。而且,SRL可以小于现有技术的结构,因为SRL不包含诸如CAM逻辑的查找逻辑。
图3是示出可以在本发明一个实施例中使用以实现实施例(如图2实施例)的一系列操作的流程图。在操作301,遇到高等待时间指令或者微操作,使得指令借助于相对较高等待时间存储器(例如DRAM)来检索指令或微操作需要的数据。当高等待时间指令或微操作存取它需要的数据(即指令或者微操作“未决”)时,在操作305,依赖于高等待时间指令的指令或微操作都存储在等待缓冲器中,而依赖于和独立于高等待时间指令或微操作的存储指令或微操作存储于SRL中。
在操作310,独立于高等待时间指令的指令或微操作可以将适当数据暂时地写入数据高速缓存中,独立指令或者微操作可以从该数据高速缓存读取数据。如果在操作315与独立指令相对应的数据被写入脏块中,那么在操作320,脏块中的数据被暂时存储至其他存储器中,例如L2高速缓存。在操作325,在高等待时间指令已经检索到它的数据之后,可以通过将来自等待缓冲器中存储的指令或者微操作的数据拷贝到SRL中其适当的位置而按照程序顺序重新装配独立数据和从属数据,接着将SRL中存储的存储指令或者微操作的数据写入数据高速缓存中的相应位置,使得以程序顺序存储数据。
图4示例了本发明的一个实施例,其中使用弱检测过滤器(LCF)403来识别SRL 405是否包含具有满足特定加载操作的数据的指令或者微操作。LCF的输出连接到多路复用器407,多路复用器407能够直接从SRL中选择数据而不必如图3所说明的实施例那样首先将数据拷贝到数据高速缓存410。如图3的实施例,数据可以经由多路复用器413从L1队列401或者数据高速缓存中被选择并被写入寄存器文件(未示出)。
在本发明的一个实施例中,LCF是按存储地址的散列函数索引的、直接映 射非标记计数器数组。将存储操作插入到SRL中使相应的LCF计数器递增,而从SRL中删除存储操作使LCF计数器递减。非零LCF计数器值意味着SRL中可能匹配的存储操作,而零LCF计数值保证没有匹配的存储操作。通过允许加载操作通过LCF匹配SRL中的数据,加载操作可以只停止在与非零值的LCF匹配上。
LCF可以导致一些加载操作没有必要地停止,但是为了减少这种停止情况,可以在SRL中使用索引的转发。因为许多停止的加载操作是最近获取的在高等待时间操作之后出现的加载操作,但是在SRL中的所有存储操作都已经将其数据存储在数据高速缓存中之前,SRL中的转发存储操作通常是最后插入到SRL中的匹配存储操作。因此,在一个实施例中,LCF被扩展以存储与相应LCF计数器相关联的最后插入的存储操作的SRL索引。在该实施例中,需要对应于SRL中的存储操作的存储数据的到达的加载操作能够快速地在SRL中定位最后可能匹配的存储数据条目。加载操作能够读取该条目并且执行完全的地址和年限检测,而不需要经由CAM逻辑或者一些其他逻辑查找SRL。而且,在该实施例中整个SRL只需要一个地址比较器。
在一些情况下,加载可以被预测为独立于高等待时间指令,但是可以最终依赖于从属存储指令。例如,如果高等待时间指令是加载指令,那么不依赖于高等待时间加载指令的后来的加载指令可能依赖于从属存储指令。在这种情况下,如果存在按照程序顺序出现在符合的加载指令之前的、比符合加载的数据具有符合加载指令的更新数据的从属存储操作,那么由独立存储指令的数据满足的加载指令可能会由错误的数据来满足。
图7示例了本发明的一个实施例,具有加载缓冲器来存储加载指令的目标地址,所述加载指令的目标地址可以与正在处理中的的并将被存储到SRL705或队列701中的存储指令的目标地址相比较,以确定符合的加载指令是否真正具有最新的存储数据。具体而言,加载缓冲器703用于存储与加载操作相对应的目标加载地址,并且能够将目标加载地址与发送到SRL或者队列的存储指令的目标存储地址相比较,有效地“监听”正在处理中的存储目标地址。
将加载缓冲器中存储的目标地址与发送到SRL或者队列的存储指令的目标地址相比较,并且按照程序顺序在存储指令之后、共享相同目标地址的加载缓冲器内的匹配条目指示加载指令从数据高速缓存中检索的数据不能使它得到 满足。在一个实施例中,加载缓冲器是组相关缓冲器,而在其他实施例中也可以使用其他存储结构。
如果在SRL内遇到这样的存储:与加载操作从数据高速缓存中检索的存储数据不对应,并且按照程序顺序在与从数据高速缓存检索的数据对应的指令之后而按照程序顺序在加载操作之前,那么可以使用错误预测恢复机制来检索最新存储数据。在一个实施例中,SRL中最新存储数据可能使加载指令得到满足,通过将指令的处理管线冲刷回执行顺序中由加载缓冲器内存储在条目中的检验点指示的特定点,从而将加载指令与最新存储数据对应。
图8示出根据一个实施例的加载缓冲器的条目,其中每个加载缓冲器条目都包含物理地址标记801,物理地址标记801与SRL中的存储操作的相应地址字段相比较。每个条目还包括:有效位805,指示该条目是否包含有效加载地址;标识字段810,指示在加载操作错误地满足于数据高速缓存中的存储数据之后执行重新开始的位置(“检验点”);以及存储缓冲器标识字段815,指示按照程序顺序与加载指令最近的前一存储指令的地址;以及存储缓冲器标识字段817,指示以前满足了加载的存储。
在本发明的一个实施例中,在要满足的每个加载操作从数据高速缓存读取数据之前,相对于SRL中存储的存储操作检验加载缓冲器条目。在其他实施例中,该检验是在加载操作从数据高速缓存中检索数据之后实现的。由于加载缓冲器是组相关的,而不是全相关的,例如至少一个实施例能够相对较快地将加载地址和SRL中的相应存储地址相比较,这样该比较就可以在高等待时间加载操作的存储器存取周期期间进行。
图5示例了前端总线(FSB)计算机系统,在其中可以使用本发明的一个实施例。处理器205从一级(L1)高速缓存510和主存储器515中存取数据。在本发明的其他实施例中,高速缓存可以是计算机系统存储层次中的二级(L2)高速缓存或者其他存储器。而且,在一些实施例中,图5的计算机系统可以既包括L1高速缓存又包括L2高速缓存,所述L1和L2高速缓存包括内含的高速缓存层次,其中相干数据在L1和L2高速缓存之间共享。
图5的处理器内示例的是本发明的一个实施例506。在一些实施例中,图5的处理器可以是多内核处理器。
主存储器可以由各种存储器源实现,例如动态随机存取存储器(DRAM)、 硬盘驱动器(HDD)520或者包含各种存储设备和技术的、经由网络接口530远离计算机系统设置的存储器资源。高速缓存可以设置在处理器内或者处理器的邻近处,例如在处理器的本地总线507上。而且,高速缓存可以包含相对较快的存储器单元,例如六晶体管(6T)单元或者大约相同或者更快存取速度的其他存储器单元。
图5的计算机系统可以是总线代理例如微处理器的点对点(PtP)网络,总线代理经由专用于PtP网络上每个代理的总线信号进行通信。本发明506的至少一个实施例在每个总线代理内或者至少与每个总线代理相关联,这样在总线代理之间能够以迅速的方式便于存储操作。
图6示例了以点对点(PtP)配置设置的计算机系统。特别地,图6显示了这样的系统,其中处理器、存储器和输入/输出设备由多个点对点接口互连。
图6的系统也可以包括多个处理器,为了简洁只示出了两个处理器670、680。处理器670、680每个可以包括本地存储控制器集线器(MCH)672、682来连接存储器62、64。处理器670、680可以使用PtP接口电路678、688经由点对点(PtP)接口650交换数据。处理器670、680均可以使用点对点接口电路676、694、686、698经由各个PtP接口652、654与芯片组690交换数据。芯片组690也可以经由高性能图形接口639与高性能图形电路638交换数据。
本发明的至少一个实施例可以设置在处理器670、680内。然而本发明的其他实施例可以存在于图6的系统中的其他电路、逻辑单元、或者设备之中。而且,本发明的其他实施例可以分布在图6所示的多个电路、逻辑单元或者设备。
本文所描述的本发明的多个实施例可以利用使用互补金属氧化物半导体设备或者“硬件”的电路、或者使用介质中存储的一组指令(当由机器例如处理器执行时,执行与本发明实施例相关联的操作)或者“软件”来实现。或者,本发明的实施例可以使用硬件和软件的组合来实现。
虽然已经参照实施例描述了本发明,但是该描述并不意味着限制意义。对于本发明所属领域的技术人员而言显而易见的是,对示出实施例以及其他实施例的各种修改都被认为是落入本发明的精神和范围之内。
Claims (18)
1.一种在长等待时间指令执行期间允许存储转发的方法,包括:
发出高等待时间指令;
将按照程序顺序在所述高等待时间指令之后的多个存储指令存储在先入先出队列中;
在所述高等待时间指令检索数据时,通过独立于所述高等待时间指令的加载指令来从由独立于所述高等待时间指令的存储指令存储的数据中读取要被加载的加载数据。
2.根据权利要求1所述的方法,进一步包括在所述高等待时间指令检索数据时将所述加载数据暂时存储在数据高速缓存或1级L1存储队列中,使得所述加载指令能够读取所述暂时存储的加载数据。
3.根据权利要求2所述的方法,进一步包括在所述高等待时间指令检索数据时将从属存储指令存储在等待缓冲器中。
4.根据权利要求3所述的方法,进一步包括在所述数据高速缓存中按照程序顺序重新装配与所述等待缓冲器中存储的所述从属存储指令相关联的数据以及与所述先入先出队列中存储的存储指令相关联的数据。
5.根据权利要求1所述的方法,其中所述先入先出队列按照程序顺序存储独立和从属存储指令,使得可将所述队列的内容按照程序顺序存储在数据高速缓存中。
6.根据权利要求5所述的方法,其中所述高等待时间指令从动态随机存取存储器中检索数据。
7.根据权利要求2所述的方法,其中如果所述存储的数据被存储到与之前存储的有效数据相对应的所述数据高速缓存的区域,那么所述之前存储的有效数据被暂时存储在另一个存储位置,并且在所述高等待时间指令完成执行后所述有效数据被恢复到所述数据高速缓存的区域。
8.根据权利要求2所述的方法,其中要被所述加载指令加载的所述数据是存储在所述1级L1存储队列中的与所述指令相对应的数据。
9.根据权利要求8所述的方法,其中具有用于所述加载指令的加载数据的所述先入先出队列中存储的所述指令独立于所述高等待时间指令。
10.一种在长等待时间指令执行期间允许存储转发的系统,包括:
存储器,用于存储第一数据;
处理器,用于执行高等待时间指令以从所述存储器检索所述第一数据;
队列,用于在所述高等待时间指令检索所述第一数据时,按照程序顺序存储多个存储指令;
数据高速缓存,用于暂时包括与所述多个存储指令中的至少一个相对应的存储数据,所述存储数据为独立于所述高等待时间指令的加载指令提供加载数据;
组相关加载缓冲器,用于存储与所述加载指令相对应的、将与所述存储指令的目标地址进行比较的地址。
11.根据权利要求10所述的系统,其中所述数据高速缓存在所述高等待时间指令完成执行之后并在已经从所述队列中读取出所述多个存储指令之后按照程序顺序存储与所述存储指令相对应的多个数据。
12.根据权利要求11所述的系统,进一步包括弱检测过滤器,以允许所述加载操作从存储在所述队列中的数据中检索加载数据,而不是从所述数据高速缓存中读取所述存储的数据。
13.根据权利要求12所述的系统,进一步包括等待缓冲器,用于存储依赖于所述高等待时间指令的指令。
14.根据权利要求13所述的系统,其中存储第一数据的存储器包括动态随机存取存储器。
15.根据权利要求14所述的系统,其中所述队列是先入先出队列。
16.根据权利要求15所述的系统,其中所述弱检测过滤器包括按存储器地址的散列函数索引的直接映射非标记计数器数组。
17.根据权利要求16所述的系统,其中如果存储指令存储在所述队列之中,则使所述弱检测过滤器中的相应计数器递增。
18.根据权利要求17所述的系统,其中所述队列、所述数据高速缓存、所述等待缓冲器以及所述弱检测过滤器都包含在微处理器内。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/015874 | 2004-12-16 | ||
US11/015,874 US7900023B2 (en) | 2004-12-16 | 2004-12-16 | Technique to enable store forwarding during long latency instruction execution |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1804792A CN1804792A (zh) | 2006-07-19 |
CN1804792B true CN1804792B (zh) | 2011-01-26 |
Family
ID=36866831
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005101191558A Expired - Fee Related CN1804792B (zh) | 2004-12-16 | 2005-12-15 | 在长等待时间指令执行期间允许存储转发的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7900023B2 (zh) |
CN (1) | CN1804792B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7827360B2 (en) * | 2007-08-02 | 2010-11-02 | Freescale Semiconductor, Inc. | Cache locking device and methods thereof |
US9632954B2 (en) * | 2011-11-07 | 2017-04-25 | International Business Machines Corporation | Memory queue handling techniques for reducing impact of high-latency memory operations |
EP2862062B1 (en) * | 2012-06-15 | 2024-03-06 | Intel Corporation | A virtual load store queue having a dynamic dispatch window with a distributed structure |
US10391270B2 (en) | 2014-04-07 | 2019-08-27 | Boehringer Ingelheim International Gmbh | Method, electronic device, inhalation training system and information storage medium for practicing and/or controlling an inhalation process of a patient |
WO2015154865A2 (en) | 2014-04-07 | 2015-10-15 | Boehringer Ingelheim International Gmbh | Inhalation training device and system for practicing of an inhalation process of a patient |
CN106537331B (zh) * | 2015-06-19 | 2019-07-09 | 华为技术有限公司 | 指令处理方法及设备 |
US11099846B2 (en) * | 2018-06-20 | 2021-08-24 | Advanced Micro Devices, Inc. | Apparatus and method for resynchronization prediction with variable upgrade and downgrade capability |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6021485A (en) * | 1997-04-10 | 2000-02-01 | International Business Machines Corporation | Forwarding store instruction result to load instruction with reduced stall or flushing by effective/real data address bytes matching |
US5878242A (en) * | 1997-04-21 | 1999-03-02 | International Business Machines Corporation | Method and system for forwarding instructions in a processor with increased forwarding probability |
US6675287B1 (en) * | 2000-04-07 | 2004-01-06 | Ip-First, Llc | Method and apparatus for store forwarding using a response buffer data path in a write-allocate-configurable microprocessor |
-
2004
- 2004-12-16 US US11/015,874 patent/US7900023B2/en not_active Expired - Fee Related
-
2005
- 2005-12-15 CN CN2005101191558A patent/CN1804792B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20090063773A1 (en) | 2009-03-05 |
CN1804792A (zh) | 2006-07-19 |
US7900023B2 (en) | 2011-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10877766B2 (en) | Embedded scheduling of hardware resources for hardware acceleration | |
US7992051B2 (en) | Method, apparatus, and computer program product in a processor for dynamically during runtime allocating memory for in-memory hardware tracing | |
US7979750B2 (en) | Synchronizing triggering of multiple hardware trace facilities using an existing system bus | |
US8255633B2 (en) | List based prefetch | |
US7941584B2 (en) | Data processing apparatus and method for performing hazard detection | |
CN1804792B (zh) | 在长等待时间指令执行期间允许存储转发的方法和系统 | |
US7844860B2 (en) | Apparatus and computer program product in a processor for performing in-memory tracing using existing communication paths | |
US7913123B2 (en) | Concurrently sharing a memory controller among a tracing process and non-tracing processes using a programmable variable number of shared memory write buffers | |
US8190825B2 (en) | Arithmetic processing apparatus and method of controlling the same | |
US20060184837A1 (en) | Method, apparatus, and computer program product in a processor for balancing hardware trace collection among different hardware trace facilities | |
CN103198025A (zh) | 用于近邻数据高速缓存共享的方法和系统 | |
JP2007323192A (ja) | キャッシュメモリ装置および処理方法 | |
US10152275B1 (en) | Reverse order submission for pointer rings | |
CN105242963A (zh) | 执行机构间的切换控制 | |
US8645588B2 (en) | Pipelined serial ring bus | |
EP1039377B1 (en) | System and method supporting multiple outstanding requests to multiple targets of a memory hierarchy | |
US10740029B2 (en) | Expandable buffer for memory transactions | |
US9507725B2 (en) | Store forwarding for data caches | |
US7296167B1 (en) | Combined system responses in a chip multiprocessor | |
US20100095071A1 (en) | Cache control apparatus and cache control method | |
US6397297B1 (en) | Dual cache with multiple interconnection operation modes | |
US20240152459A1 (en) | Method for managing memory write request in cache device | |
US9189380B2 (en) | Systems and methods to save and restore a write gather pipe |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110126 Termination date: 20181215 |