CN1728088A - 在具有限制性存储器模型的***中多存储缓冲器转发的***和方法 - Google Patents
在具有限制性存储器模型的***中多存储缓冲器转发的***和方法 Download PDFInfo
- Publication number
- CN1728088A CN1728088A CNA2005100965833A CN200510096583A CN1728088A CN 1728088 A CN1728088 A CN 1728088A CN A2005100965833 A CNA2005100965833 A CN A2005100965833A CN 200510096583 A CN200510096583 A CN 200510096583A CN 1728088 A CN1728088 A CN 1728088A
- Authority
- CN
- China
- Prior art keywords
- processor
- data
- memory block
- multiple store
- address
- 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
- 239000000872 buffer Substances 0.000 title claims abstract description 78
- 238000000034 method Methods 0.000 title abstract description 18
- 238000003860 storage Methods 0.000 claims description 83
- 239000013598 vector Substances 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000002093 peripheral effect Effects 0.000 description 6
- 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 5
- 230000014759 maintenance of location Effects 0.000 description 4
- 238000005457 optimization Methods 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 102100022595 Broad substrate specificity ATP-binding cassette transporter ABCG2 Human genes 0.000 description 1
- 101000823298 Homo sapiens Broad substrate specificity ATP-binding cassette transporter ABCG2 Proteins 0.000 description 1
- VYPSYNLAJGMNEJ-UHFFFAOYSA-N Silicium dioxide Chemical compound O=[Si]=O VYPSYNLAJGMNEJ-UHFFFAOYSA-N 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001052 transient effect Effects 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 or look ahead
-
- 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/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/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 or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及具有限制性存储器模型的微处理器***中的多存储缓冲器转发的应用。根据本发明的实施例,***和方法允许被两个或更多存储操作覆盖的加载操作通过存储缓冲器转发以保留限制性存储器模型的副作用的方式接收数据,从而提高处理器的性能而不背离限制性存储器模型。根据本发明的实施例,用在具有限制性存储器模型的***中的多存储缓冲器转发的方法包括执行多存储指令,执行加载指令,确定由加载指令寻址的存储区匹配存储器中的高速缓存线地址,确定由多存储指令存储的数据完全覆盖由加载指令寻址的存储区,并发送存储转发OK信号。
Description
发明领域
本发明涉及在微处理器中的存储缓冲器转发(forwarding),更具体的,涉及具有限制性存储器模型的微处理器***中的存储缓冲器转发。
背景
许多现代微处理器实施一种存储缓冲器转发,它是一种机制,该机制通过使用来自较旧的(older)、完全重叠的存储操作的数据完成较新的(younger)相关的加载操作来改善微处理器性能。当存储操作是推测性的(speculative)或者已经经过推测点并且是提交的(committed)机器状态的一部分的同时,这能够发生。在任一种的情况下,当加载操作执行可以直接从缓冲器中读出它的数据而不需要等待所述数据变为全局可见的(globally observed)(GO)时,加载操作执行是延时最小的。对于多存储操作,现有的处理器,例如IntelPentiumIII,以及在这些处理器上运行的相关的指令集体系结构(ISA)停止加载操作的执行,直到较旧的多存储操作变为全局可见的。IntelPentiumIII由加利福尼亚的Santa Clara的Intel公司制造。
因为存储缓冲器转发具有隐含的顺序,在多线程或多处理器***中的所有进程按照上述的顺序观察其它进程的存储操作,所以处理器的体系结构必须仔细规定哪种存储缓冲器转发可能在其下发生的规则。例如,Intel32位ISA(IA-32)体系结构的产品家族已经基本实现了来自加利福尼亚的Santa Clara的SPARC国际有限公司TM的可伸缩(scalable)处理器结构(SPARC)总存储顺序(total store order)(TSO)存储器模型。
TSO存储器模型具有两个关于存储缓冲器转发的限制:
1.较新的加载操作只能从单个较旧的存储缓冲器条目接收转发的数据;以及
2.较旧的存储缓冲器条目必须完全覆盖处于较新的加载操作读取之中的存储区域。
许多现有的IA-32代码序列产生在其中这两个TSO限制显著降低处理器的性能的情况。当典型的IA-32处理器执行遇到上面所列的条件之一的加载操作时,处理器就停止加载操作的执行,直到该超规的条件清除为止。尽管在等待存储缓冲器条目的内容变为GO,但是所述加载操作和依赖所述加载操作的所有指令却是停止的,由此降低了处理器的性能。
附图简要说明
图1是根据本发明的实施例,用于提供多存储缓冲器转发的方法的流程图。
图2是根据本发明的实施例,可以在其中实现多存储缓冲器转发的写入组合缓冲器配置的原理框图。
图3是根据本发明的实施例,可以在其中实现多存储缓冲器转发的计算机***的框图。
详细介绍
在根据本发明的实施例中,***和方法提供了一种新颖的机制,该机制使完全被两个或多个存储操作所覆盖的加载操作能够通过存储缓冲器转发以保留两个TSO限制的副作用的方式来接收数据,从而提高处理器的性能而不背离限制性存储器模型。为了更加清楚,用某些样例程序的执行来介绍该问题。
Archetypical存储缓冲器转发的例子
下面样例代码段说明TSO存储器模型所特别允许的存储缓冲器转发的类型:
MOV EBX,0x1000 ;建立基地址
MOV[EBX],0x00001234;向存储单元0x1000存入个4字节(0x00001234)
… ;零或多个其它指令
MOV EAX,[EBX] ;从存储单元0x1000加载4个字节
在本例中,存储缓冲器转发的硬件允许绕过存储数据值(0x00001234)直接到达较新的加载操作,即使在其它处理器观察所述存储数据值之前。注意,上面的单个存储操作的数据完全重叠,即,覆盖,加载操作所参考的存储区。换句话说,在本例中,在存储器中被存储操作作为存储数据值使用的相同的四个字节也被加载操作使用。
不允许的存储缓冲器转发的例子
该样例代码段说明IA-32限制性存储器模型(TSO)所不允许的存储缓冲器转发的类型:
MOV EBX,0x1000 ;建立基地址
MOV[EBX],0x0000 ;向存储单元0x1000存入2个字节(0x0000)
MOV[EBX]+2,0x1234;向存储单元0x1002存入2个字节(0x1234)
… ;零或多个其它指令
MOV EAX,[EBX] ;从存储单元0x1000加载4个字节
在本例中,因为每个存储操作只提供加载操作所需要的数据的一半,所以希望将存储数据从两个存储操作转发到单个加载操作。不幸的是,在TSO存储器模型中这种多存储缓冲器转发被特别禁止,因此,加载操作必须等待直到两个存储操作变为全局可见的(GO)才能完成。多存储缓冲器转发被TSO存储器模型禁止,以保证这样的可靠和一致的顺序,按照这种顺序存储操作对于***中的其它处理器能够全局可见。
从多个存储缓冲器条目中存储转发的问题用下面在多处理器***中在两个独立的处理器上执行的代码序列进行说明:
处理器0:
P0_1)MOV EBX,0x1000 ;建立基地址
P0_2)MOV[EBX],0x0102 ;向存储单元0x0102存入2个字节(0x0102)
P0_3)MOV[EBX]+2,0x0304;向存储单元0x0304存入2个字节(0x0304)
P0_4)MOV EAX,[EBX] ;从存储单元0x1000加载4个字节
P0_5)MOV EAX,[EBX] ;从存储单元0x1000加载4个字节
处理器1:
P1_1)MOV EBX,0x1000 ;建立基地址
P1_2)MOV[EBX],0xFFFFFFFF;向位置0x1000存入4个字节(0xFFFFFFFF)
样例执行1
在本例中,处理器0具有两个加载操作P0_4和P0_5,根据TSO,它们必须等待两个较旧的存储缓冲器条目,P0_2和P0_3变为GO,才可以执行加载操作。在以该限制实现TSO的***中,下面的总顺序,即,两个处理器操作在时间上发生的顺序是可能的:
事件 | 存储缓冲器内容(如果存储的话) | 结果(如果加载) | 存储器内容 |
在存储器的存储单元0x1000的初始条件 | 00 00 00 00 | ||
P0_2 | 01 02 xx xx | 00 00 00 00 | |
P0_2变为GO | 01 02 00 00 | ||
P0_3 | xx xx 03 04 | 01 02 00 00 | |
P0_3变为GO | 01 02 03 04 | ||
P0_4 | 01 02 03 04(来自存储器) | 01 02 03 04 | |
P1_2 | FF FF FF FF | 01 02 03 04 | |
P1_2变为GO | FF FF FF FF | ||
P0_5 | FF FF FF FF(来自存储器) | FF FF FF FF |
该样例的执行结果与TSO存储器模型相一致,原因在于加载P0_4或P0_5都没有直接从处理器0的存储缓冲器中接收数据。
样例执行2
下面样例的执行代表在允许从多个存储缓冲器条目进行存储缓冲器转发的另一种可能的总顺序,但是却不能在本发明中实现。
事件 | 存储缓冲器内容(如果存储) | 结果(如果加载) | 存储器内容 |
在存储器的存储单元0x1000的初始条件 | 00 00 00 00 | ||
P0_2 | 01 02 xx xx | 00 00 00 00 | |
P0_3 | xx xx 03 04 | 00 00 00 00 | |
P0_4 | 01 02 03 04(来自存储缓冲器) | 00 00 00 00 | |
P0_2变为GO | 01 02 00 00 | ||
P1_2 | FF FF FF FF | 01 02 00 00 | |
P1_2变为GO | FF FF FF FF | ||
P1_3变为GO | FF FF 03 04 | ||
P0_5 | FF FF 03 04(来自存储器) | FF FF 03 04 |
注意,加载操作P0_5的结果与加载P0_4的结果不一致。如果加载P0_4看到值0x01020304,则加载P0_5应当已经看到该值或0xFFFFFFFF中的一个。加载P0_5实际看到的结果0xFFFF0304使得其表现为好像存储P0_3发生了两次。
样例执行3
如果存储P0_2和P0_3已经在相同的时间点变为全局可见(即,原子地),则就不会出现样例执行2中所示的情况。根据本发明的实施例,下面的样例执行表示在实施本发明的***中可能的总顺序。
事件 | 存储缓冲器内容(如果存储) | 结果(如果加载) | 存储器内容 |
在存储器的存储单元0x1000的初始条件 | 00 00 00 00 | ||
P0_2 | 01 02 xx xx | 00 00 00 00(存储没有GO) | |
P0_3 | xx xx 03 04 | 00 00 00 00(存储没有GO) | |
P0_4 | 01 02 03 04(来自 | 00 00 00 00 |
存储缓冲器) | |||
P1_2 | FF FF FF FF | 00 00 00 00 | |
P0_2、P0_3原子地变为GO | 01 02 03 04 | ||
P1_2变为GO | FF FF FF FF | ||
P0_5 | FF FF FF FF(来自存储器) | FF FF FF FF |
如上所示,加载操作P0_5现在看到与TSO存储器模型相一致的结果。因此,本发明的实施例提供这样一种机制,该机制采用本发明能保证存储缓冲器项在单个时间点更新***存储器(即,变为全局可见)的方式从多个存储缓冲器条目转发数据。
根据本发明的实施例,***和方法可以利用写入组合缓冲器(WCB)。WCB是这样一种结构,该结构通常包含对数据的几个高速缓存线(cacheline)的缓冲和使各个存储操作能够“组合”为更大单元的数据的控制逻辑,所述更大单元的数据大小一般等于高速缓存线的大小。当该数据单元被写回***存储器或处理器高速缓存器时,它是原子地通过单个事务来实现的。这就通过节省总线事务和高速缓存器的带宽改善了处理器性能,原因在于,如果没有WCB,每一单个的存储操作就会不得不单独访问***总线或高速缓存器端口。这比在大量存储操作能够被预先分组为单个事务的情况下使用***资源的效率要低些。
图1是根据本发明的实施例,用于提供多存储缓冲器转发的方法的流程图。在图1中,通常执行多存储指令100将来自多存储指令的数据值组合为单个值。根据本发明的实施例,该单个值可以组合为处理器存储器的条目,例如在WCB中的条目,该条目对于***中的所有其它的处理器是不可见的,直到所有的多存储指令都已完成执行。执行加载指令120,以便从连接到***的存储器中加载数据。可以执行检查以确定由加载指令寻址的存储区是否与任何存储在WCB中的高速缓存线相匹配130。如果发现匹配,则执行检查以确定是否所有由加载指令寻址的所有存储区被多存储指令所存储的数据覆盖140。如果所有的存储区都被来自多存储指令的数据覆盖,则可以产生存储转发“OK”信号150。此时,加载指令可以通过从WCB条目读取所述数据而完成执行。
如果未发现匹配,则不需要该方法,并结束该方法。如果不是所有的存储区都被来自多存储指令的数据覆盖,则该方法返回到再次执行120加载指令。通常,在再次执行加载指令之前,以前的加载指令的执行120和所有随后的相关指令被从***中冲掉。
根据本发明的实施例,可以将新的硬件加到WCB中以实现允许从多存储操作的存储转发所要求的功能而不背离IA-32 TSO存储器模型的精神和目的。通常,实现该功能所必需的两个要求包括:
1.存储操作必须完全覆盖由较新的加载操作寻址的存储区;以及
2.将数据转发到加载操作的存储操作必须同时(即,原子地)变为全局可见。
根据本发明的实施例,该***通过在WCB缓冲器中添加将由加载操作寻址的存储区与WCB中可用的存储数据进行以字节为基础的比较的硬件能够实现第一要求。如果允许转发数据,则读出数据以满足加载操作。根据本发明的其它实施例,可以从任何包含所述数据的存储器,例如,WCB、存储缓冲器、其它缓冲器、寄存器、存储器和高速缓存器中读取数据。图2是根据本发明的实施例,可以在其中实现多存储缓冲器转发的写入组合缓冲器配置的原理框图。
在图2中,高速缓存线地址比较元件205可以连接到WCB地址和数据缓冲器210。可以配置高速缓存线地址比较元件205以接收新来的加载操作202,并将在新来的加载操作202中的高速缓存线地址与WCB地址和数据缓冲器210中的现有的条目的高速缓存线地址进行比较。WCB地址和数据缓冲器210可以连接到指示在WCB地址和数据缓冲器210中已经被存储操作写过的数据字节的WCB数据有效位矢量缓冲器220。在本发明的实施例中,在WCB地址和数据缓冲器210和WCB数据有效位矢量缓冲器220中的数据条目通常具有相同的大小,例如,每个条目64个数据字节。WCB数据有效位矢量缓冲器220可以连接到多路器230,可以配置多路器230以从WCB数据有效位矢量缓冲器220接收数据有效位矢量,并且可以配置多路器230以从新来的加载操作202中接收加载操作地址位。例如,多路器230可以是4∶1多路器,可以配置多路器230以选择在从加载操作地址位指定的8位边界的数据有效位矢量中的16个存储字节有效位的组。多路器230可以连接到比较电路240,可以配置比较电路240以便接收线232上的16个存储字节有效位的组和线235上的新来的加载操作字节屏蔽,并且如果存储指令数据完全覆盖由新来的加载操作所引用的WCB条目,则产生“存储转发OK”信号。在比较电路240中的粗线表示16位数据通路。比较电路240包括连接到第一16位与—或逻辑250的16位反相器逻辑242。可以配置反相器242,接收由多路器230选择的在线232上的16个存储字节有效位的组,并将反相后的16个存储字节有效位的组输出到线244上。可以用16个与门实现16位与或逻辑,与门可被配置用于接收或者来自232上的16个存储字节有效位的组或者线244上的自16个存储字节有效位的组反相的位中的一个位以及线235上的新来的加载操作字节屏蔽中的一个位。可以配置第一16位与—或逻辑250,以便接收线244上的反相的16个存储字节有效位,并且可以连接到与非门270,可以配置第一16位与—或逻辑250,以便接收线235上的新来的加载操作字节屏蔽。第二与—或16位逻辑260也可以连接到与非门270,并且可以配置第二16位与—或逻辑260,以便接收线232上由多路器230选择的16个存储字节有效位的组和线235上新来的加载操作字节屏蔽。可以配置与非门270,以便分别接收线262和252上来自第一和第二16位与或逻辑260和250的信号,如果存储指令数据完全覆盖由新来的加载操作所引用的WCB条目,则产生“存储转发OK”信号。
本发明通过利用每个WCB的大小被定为与***一致性的粒度(即,高速缓存线的大小)相匹配的事实的优点来满足第二个要求。组合到单个WCB条目条目的所有的单个存储操作同时变为全局可见。本发明的实施例利用该事实使在具有限制性存储器模型的***中能够进行多存储缓冲器转发,由此,提高了***的性能。
本发明的实施例可以显著改善在其中加载操作依赖于两个或更多暂时结束的存储操作的具有高度并发的指令序列的代码的性能。现有的IA-32处理器以及具有限制性存储器模型的其它处理器,往往停止加载操作的执行,直到超规的的存储操作离开存储缓冲器并变为全局可见的为止。在本发明的一个实施例中,通过只在存储操作被WCB接受之前停止加载操作来改进该方法,这就取消了在加载操作能够得到满足之前存储操作必须变为全局可见(能够花费许多数以百计的周期的进程)的限制。
这不仅是理论上的性能改善,因为许多编译器产生的情况本发明可能有利。例如,编译器通常可以提供优化,以便尽可能多的去掉停止加载操作的情况。不幸的是,这些优化通常导致程序占用更大的存储器需求容量,以及更慢的执行时间,这导致编译器优化不能总是处于使用之中。因此,采用本发明的实施例可以产生更快的、更有效的和紧凑的程序。
一个显然的编译器不能优化掉的问题的情况是在多媒体代码中,多媒体代码有规律地产生具有两个32位存储操作随后紧跟着一个完全重叠的64位加载操作的代码序列。该序列用来将数据从整数寄存器文件移到MMX(浮点)寄存器文件中。本发明具有能够极大的提高用户的“因特网体验(Internet experience)”并增强其它多媒体应用的潜力。
图3是适于实现本发明的计算机***100的框图。在图3中,计算机***100包括连接到可以连接到***逻辑330的处理器总线320的一个或多个处理器310(1)-310(n)。一个或多个处理器310(1)-310(n)中的每一个为N位处理器并包括一个或多个N位寄存器(未示出)。***逻辑330可以通过总线350连接到***存储器340,并通过***总线360连接到非易失性存储器370以及连接到一个或多个***设备380(1)-380(m)。***总线360代表,例如,一个或多个***部件互连(PCI)总线(PCI特别兴趣组(SIG)PCI局部总线规范,版本2.2,1998年12月18日出版);工业标准体系结构(ISA)总线;扩展ISA(EISA)总线(BCRP服务公司EISA规范,版本3.12,1992,1992年出版);通用串行总线(USB),(USB规范,版本1.1,1998年9月23日出版);以及类似的***总线。非易失性存储器370可以是例如只读存储器(ROM)或快闪存储器等静态存储器件。***设备380(1)-380(m)包括,例如,键盘;鼠标或其它指向装置;大容量存储设备,例如硬盘驱动器,光盘(CD)驱动器,光盘以及数字视频盘(DVD)驱动器;显示器等。
根据本发明的实施例,用在具有限制性存储器模型的***中的多存储缓冲器转发的方法包括执行多存储指令,执行加载指令,确定由加载指令寻址的存储区匹配存储器中的高速缓存线地址,确定由多个存储指令存储的数据完全覆盖由加载指令寻址的存储区,以及发送存储转发OK信号。
根据本发明的实施例,上面存储了用在具有限制性存储器模型的***中的多存储缓冲器转发的多个可执行指令的机器可读介质,多个指令包括:执行多个存储的指令,执行加载的指令,确定由加载指令寻址的存储区匹配存储器中的高速缓存线地址,确定由多个存储指令存储的数据完全覆盖由加载指定的在存储器中的存储单元,以及发送存储转发OK信号。
根据本发明的实施例,处理器***包括处理器,连接到处理器的***存储器,以及连接到处理器的非易失性存储器,其中存储包括适于处理器执行的指令的制造物品,当编码在指令集中的指令执行时,允许在具有限制性存储器模型的***中的多存储缓冲器转发。制造物品包括指令,用来:执行多个存储指令,执行加载指令,确定由加载指令寻址的存储区匹配存储器中的高速缓存线地址,确定由多个存储指令存储的数据完全覆盖由加载指令指定的在存储器中的存储单元,并发送存储转发OK信号。
当然,应当理解,虽然本发明主要以微处理器和基于多处理器的个人计算机为主进行了介绍,但是本领域的技术人员应当认识到本发明的原理可以方便地用在涉及其它集成处理器芯片和计算机***的其它实施例中。因此,所有落在附带的权利要求书的精神和范围中的实现将被本发明包含。
Claims (10)
1.一种多存储缓冲器转发设备,包括:
具有写入组合缓冲器的处理器,以及
与所述处理器相连接的非易失性存储器,所述非易失性存储器存储指令,当所述处理器执行所述指令时,使得该处理器:
执行引用第一存储区的多条存储指令;
执行引用第二存储区的加载指令;
确定第二存储区匹配缓速缓存线地址;
确定第一存储区完全覆盖第二存储区以及
发送存储转发OK信号。
2.如权利要求1所述的多存储缓冲器转发设备,其中所写入组合缓冲器包括:
比较器,用于接收第二存储区的地址并且将其与所述写入组合缓冲器中所有现有的高速缓存线地址相比较;
连接到所述比较器的地址和数据缓冲器;
连接到所述地址和数据缓冲器的数据有效位缓冲器;
连接到所述数据有效位缓冲器的多路器;以及
连接到所述多路器的比较电路。
3.如权利要求2所述的多存储缓冲器转发设备,其中所述多路器:
从所述数据有效位缓冲器接收字节有效矢量;
从所述加载操作接收地址位;
从所述字节有效矢量中选择一个有效位组;以及
输出所述有效位组。
4.如权利要求3所述的多存储缓冲器转发设备,其中所述比较电路:
接收所述有效位组;
接收新来的加载操作字节屏蔽;
确定使用所述有效位组和所述新来的加载操作字节屏蔽来转发所述数据是可接受的;以及
产生转发OK信号。
5.如权利要求1所述的多存储缓冲器转发设备,其中所述处理器被实施为多处理器,所述多处理器中的每个处理器与独立的硬件资源集相关联。
6.一种多存储缓冲器转发设备,包括:
存储器;
连接到所述存储器并且具有写入组合缓冲器的处理器,所述处理器:
执行引用所述存储器的第一存储区的多条存储指令;
执行引用所述存储器的第二存储区的加载指令;
确定第二存储区匹配缓速缓存线地址;
确定第一存储区完全覆盖第二存储区;以及
发送一表明存储缓冲器转发被授权的信号。
7.如权利要求6所述的多存储缓冲器转发设备,其中所写入组合缓冲器包括:
比较器,用于接收第二存储区的地址并且将其与所述写入组合缓冲器中所有现有的高速缓存线地址相比较;
连接到所述比较器的地址和数据缓冲器;
连接到所述地址和数据缓冲器的数据有效位缓冲器;
连接到所述数据有效位缓冲器的多路器;
连接到所述多路器的比较电路;以及
连接到所述多路器的比较电路。
8.如权利要求6所述的多存储缓冲器转发设备,其中所述多路器:
从所述数据有效位缓冲器接收字节有效矢量;
从所述加载操作接收地址位;
从所述字节有效矢量中选择一个有效位组;以及
输出所述有效位组。
9.如权利要求8所述的多存储缓冲器转发设备,其中所述比较电路:
接收所述有效位组;
接收新来的加载操作字节屏蔽;
确定使用所述有效位组和所述新来的加载操作字节屏蔽来转发所述数据是可接受的;以及
产生一表明存储转发是可接受的信号。
10.如权利要求6所述的多存储缓冲器转发设备,其中所述处理器被实施为多处理器,所述多处理器中的每个处理器与独立的硬件资源集相关联。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/740803 | 2000-12-21 | ||
US09/740,803 US6678807B2 (en) | 2000-12-21 | 2000-12-21 | System and method for multiple store buffer forwarding in a system with a restrictive memory model |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB018209548A Division CN1307537C (zh) | 2000-12-21 | 2001-12-18 | 在具有限制性存储器模型的***中多存储缓冲器转发的***和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1728088A true CN1728088A (zh) | 2006-02-01 |
CN100530080C CN100530080C (zh) | 2009-08-19 |
Family
ID=24978145
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100965833A Expired - Fee Related CN100530080C (zh) | 2000-12-21 | 2001-12-18 | 用于在一***中进行多存储缓冲器转发的*** |
CNB018209548A Expired - Fee Related CN1307537C (zh) | 2000-12-21 | 2001-12-18 | 在具有限制性存储器模型的***中多存储缓冲器转发的***和方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB018209548A Expired - Fee Related CN1307537C (zh) | 2000-12-21 | 2001-12-18 | 在具有限制性存储器模型的***中多存储缓冲器转发的***和方法 |
Country Status (7)
Country | Link |
---|---|
US (2) | US6678807B2 (zh) |
KR (1) | KR100577827B1 (zh) |
CN (2) | CN100530080C (zh) |
AU (1) | AU2002231202A1 (zh) |
HK (1) | HK1067742A1 (zh) |
TW (1) | TW563021B (zh) |
WO (1) | WO2002050668A2 (zh) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6678807B2 (en) * | 2000-12-21 | 2004-01-13 | Intel Corporation | System and method for multiple store buffer forwarding in a system with a restrictive memory model |
US6880154B2 (en) * | 2001-06-29 | 2005-04-12 | Intel Corporation | Alias-free test for dynamic array structures |
US6938127B2 (en) * | 2001-09-25 | 2005-08-30 | Intel Corporation | Reconfiguring memory to reduce boot time |
US7814488B1 (en) * | 2002-09-24 | 2010-10-12 | Oracle America, Inc. | Quickly reacquirable locks |
US7197670B2 (en) * | 2003-12-31 | 2007-03-27 | Intel Corporation | Methods and apparatuses for reducing infant mortality in semiconductor devices utilizing static random access memory (SRAM) |
US7957428B2 (en) | 2004-05-21 | 2011-06-07 | Intel Corporation | Methods and apparatuses to effect a variable-width link |
US7376817B2 (en) * | 2005-08-10 | 2008-05-20 | P.A. Semi, Inc. | Partial load/store forward prediction |
US20070288725A1 (en) * | 2006-06-07 | 2007-12-13 | Luick David A | A Fast and Inexpensive Store-Load Conflict Scheduling and Forwarding Mechanism |
US7461238B2 (en) | 2006-06-07 | 2008-12-02 | International Business Machines Corporation | Simple load and store disambiguation and scheduling at predecode |
US7743231B2 (en) * | 2007-02-27 | 2010-06-22 | International Business Machines Corporation | Fast sparse list walker |
US7721066B2 (en) * | 2007-06-05 | 2010-05-18 | Apple Inc. | Efficient encoding for detecting load dependency on store with misalignment |
US8627047B2 (en) * | 2008-02-15 | 2014-01-07 | International Business Machines Corporation | Store data forwarding with no memory model restrictions |
US8209525B2 (en) * | 2008-08-15 | 2012-06-26 | Apple Inc. | Method and apparatus for executing program code |
US20100049952A1 (en) * | 2008-08-25 | 2010-02-25 | Via Technologies, Inc. | Microprocessor that performs store forwarding based on comparison of hashed address bits |
US20100250850A1 (en) * | 2009-03-25 | 2010-09-30 | Faraday Technology Corp. | Processor and method for executing load operation and store operation thereof |
US9128725B2 (en) | 2012-05-04 | 2015-09-08 | Apple Inc. | Load-store dependency predictor content management |
US9600289B2 (en) | 2012-05-30 | 2017-03-21 | Apple Inc. | Load-store dependency predictor PC hashing |
US9361103B2 (en) * | 2012-11-02 | 2016-06-07 | Advanced Micro Devices, Inc. | Store replay policy |
US9244684B2 (en) * | 2013-03-15 | 2016-01-26 | Intel Corporation | Limited range vector memory access instructions, processors, methods, and systems |
US9710268B2 (en) | 2014-04-29 | 2017-07-18 | Apple Inc. | Reducing latency for pointer chasing loads |
US10514925B1 (en) | 2016-01-28 | 2019-12-24 | Apple Inc. | Load speculation recovery |
US10437595B1 (en) | 2016-03-15 | 2019-10-08 | Apple Inc. | Load/store dependency predictor optimization for replayed loads |
CN106557437A (zh) * | 2016-11-22 | 2017-04-05 | 上海联影医疗科技有限公司 | 一种生数据的高速存储方法和*** |
US20200401412A1 (en) * | 2019-06-24 | 2020-12-24 | Intel Corporation | Hardware support for dual-memory atomic operations |
US11989286B2 (en) | 2021-05-07 | 2024-05-21 | Ventana Micro Systems Inc. | Conditioning store-to-load forwarding (STLF) on past observations of STLF propriety |
US11989285B2 (en) * | 2021-05-07 | 2024-05-21 | Ventana Micro Systems Inc. | Thwarting store-to-load forwarding side channel attacks by pre-forwarding matching of physical address proxies and/or permission checking |
US11836080B2 (en) | 2021-05-07 | 2023-12-05 | Ventana Micro Systems Inc. | Physical address proxy (PAP) residency determination for reduction of PAP reuse |
US11841802B2 (en) | 2021-05-07 | 2023-12-12 | Ventana Micro Systems Inc. | Microprocessor that prevents same address load-load ordering violations |
US11481332B1 (en) | 2021-05-07 | 2022-10-25 | Ventana Micro Systems Inc. | Write combining using physical address proxies stored in a write combine buffer |
US11860794B2 (en) | 2021-05-07 | 2024-01-02 | Ventana Micro Systems Inc. | Generational physical address proxies |
US11868263B2 (en) | 2021-05-07 | 2024-01-09 | Ventana Micro Systems Inc. | Using physical address proxies to handle synonyms when writing store data to a virtually-indexed cache |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS58133696A (ja) * | 1982-02-03 | 1983-08-09 | Hitachi Ltd | 記憶制御方式 |
US5265233A (en) * | 1991-05-17 | 1993-11-23 | Sun Microsystems, Inc. | Method and apparatus for providing total and partial store ordering for a memory in multi-processor system |
US5878245A (en) * | 1993-10-29 | 1999-03-02 | Advanced Micro Devices, Inc. | High performance load/store functional unit and data cache |
US5588126A (en) * | 1993-12-30 | 1996-12-24 | Intel Corporation | Methods and apparatus for fordwarding buffered store data on an out-of-order execution computer system |
US5671444A (en) * | 1994-02-28 | 1997-09-23 | Intel Corporaiton | Methods and apparatus for caching data in a non-blocking manner using a plurality of fill buffers |
US6272595B1 (en) * | 1994-08-05 | 2001-08-07 | Intel Corporation | N-way set-associative cache memory which includes a store hit buffer for improved data access |
US5854914A (en) * | 1996-02-13 | 1998-12-29 | Intel Corporation | Mechanism to improved execution of misaligned loads |
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 |
US6141747A (en) * | 1998-09-22 | 2000-10-31 | Advanced Micro Devices, Inc. | System for store to load forwarding of individual bytes from separate store buffer entries to form a single load word |
US6334171B1 (en) * | 1999-04-15 | 2001-12-25 | Intel Corporation | Write-combining device for uncacheable stores |
US6473832B1 (en) * | 1999-05-18 | 2002-10-29 | Advanced Micro Devices, Inc. | Load/store unit having pre-cache and post-cache queues for low latency load memory operations |
US6266744B1 (en) * | 1999-05-18 | 2001-07-24 | Advanced Micro Devices, Inc. | Store to load forwarding using a dependency link file |
US6338128B1 (en) * | 1999-05-20 | 2002-01-08 | International Business Machines Corp. | System and method for invalidating an entry in a translation unit |
US6678807B2 (en) * | 2000-12-21 | 2004-01-13 | Intel Corporation | System and method for multiple store buffer forwarding in a system with a restrictive memory model |
US6922745B2 (en) * | 2002-05-02 | 2005-07-26 | Intel Corporation | Method and apparatus for handling locks |
-
2000
- 2000-12-21 US US09/740,803 patent/US6678807B2/en not_active Expired - Lifetime
-
2001
- 2001-12-17 TW TW090131219A patent/TW563021B/zh not_active IP Right Cessation
- 2001-12-18 CN CNB2005100965833A patent/CN100530080C/zh not_active Expired - Fee Related
- 2001-12-18 WO PCT/US2001/049759 patent/WO2002050668A2/en active IP Right Grant
- 2001-12-18 CN CNB018209548A patent/CN1307537C/zh not_active Expired - Fee Related
- 2001-12-18 AU AU2002231202A patent/AU2002231202A1/en not_active Abandoned
- 2001-12-18 KR KR1020037007695A patent/KR100577827B1/ko not_active IP Right Cessation
-
2003
- 2003-07-17 US US10/620,555 patent/US20040019753A1/en not_active Abandoned
-
2005
- 2005-01-03 HK HK05100004A patent/HK1067742A1/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR100577827B1 (ko) | 2006-05-12 |
WO2002050668A3 (en) | 2002-10-31 |
US6678807B2 (en) | 2004-01-13 |
CN100530080C (zh) | 2009-08-19 |
TW563021B (en) | 2003-11-21 |
US20020120813A1 (en) | 2002-08-29 |
CN1307537C (zh) | 2007-03-28 |
CN1511280A (zh) | 2004-07-07 |
US20040019753A1 (en) | 2004-01-29 |
WO2002050668A2 (en) | 2002-06-27 |
HK1067742A1 (en) | 2005-04-15 |
AU2002231202A1 (en) | 2002-07-01 |
KR20030064807A (ko) | 2003-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1728088A (zh) | 在具有限制性存储器模型的***中多存储缓冲器转发的***和方法 | |
US8688917B2 (en) | Read and write monitoring attributes in transactional memory (TM) systems | |
CN107003837B (zh) | 用于推测性编译器优化的轻量级受限事务存储器 | |
KR101291016B1 (ko) | 사용자 핸들러 등록 장치, 프로세서, 시스템 및 방법 | |
US7284092B2 (en) | Digital data processing apparatus having multi-level register file | |
US6801997B2 (en) | Multiple-thread processor with single-thread interface shared among threads | |
CN1304962C (zh) | 转译后备缓冲器清除滤波器 | |
JP5416223B2 (ja) | トランザクショナルメモリシステム内でのハードウェア属性のメモリモデル | |
CN1945525A (zh) | 从队列处理指令刷新的生存期计数器设计的***和方法 | |
JPH0778738B2 (ja) | ディジタル・コンピュータ・システム | |
US9135005B2 (en) | History and alignment based cracking for store multiple instructions for optimizing operand store compare penalties | |
CN101154192A (zh) | 管理计算机存储器高速缓存中的访问冲突的方法和装置 | |
WO2000033183A9 (en) | Method and structure for local stall control in a microprocessor | |
EP2542973A1 (en) | Gpu support for garbage collection | |
CN1196997C (zh) | 不按序执行指令的装置和检测不按序指令的方法 | |
US5778248A (en) | Fast microprocessor stage bypass logic enable | |
Belayneh et al. | A discussion on non-blocking/lockup-free caches | |
US20030014612A1 (en) | Multi-threaded processor by multiple-bit flip-flop global substitution | |
US7519794B2 (en) | High performance architecture for a writeback stage | |
KR100861701B1 (ko) | 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍시스템 및 방법 | |
Talla et al. | Mediabreeze: a decoupled architecture for accelerating multimedia applications | |
US6477637B1 (en) | Method and apparatus for transporting store requests between functional units within a processor | |
US20230153114A1 (en) | Data processing system having distrubuted registers | |
US20130046961A1 (en) | Speculative memory write in a pipelined processor | |
JPH103389A (ja) | 並列計算機 |
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: 20090819 Termination date: 20171218 |
|
CF01 | Termination of patent right due to non-payment of annual fee |