CN1728088A - 在具有限制性存储器模型的系统中多存储缓冲器转发的系统和方法 - Google Patents

在具有限制性存储器模型的系统中多存储缓冲器转发的系统和方法 Download PDF

Info

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
Application number
CNA2005100965833A
Other languages
English (en)
Other versions
CN100530080C (zh
Inventor
L·塔特彻尔
B·D·波尔特勒特
R·帕特尔
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of CN1728088A publication Critical patent/CN1728088A/zh
Application granted granted Critical
Publication of CN100530080C publication Critical patent/CN100530080C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • 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
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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
    • G06F9/3834Maintaining memory consistency

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所述的多存储缓冲器转发设备,其中所述处理器被实施为多处理器,所述多处理器中的每个处理器与独立的硬件资源集相关联。
CNB2005100965833A 2000-12-21 2001-12-18 用于在一系统中进行多存储缓冲器转发的系统 Expired - Fee Related CN100530080C (zh)

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
CNB018209548A Expired - Fee Related CN1307537C (zh) 2000-12-21 2001-12-18 在具有限制性存储器模型的系统中多存储缓冲器转发的系统和方法
CNB2005100965833A Expired - Fee Related CN100530080C (zh) 2000-12-21 2001-12-18 用于在一系统中进行多存储缓冲器转发的系统

Family Applications Before (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) CN1307537C (zh)
AU (1) AU2002231202A1 (zh)
HK (1) HK1067742A1 (zh)
TW (1) TW563021B (zh)
WO (1) WO2002050668A2 (zh)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
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
US7461238B2 (en) 2006-06-07 2008-12-02 International Business Machines Corporation Simple load and store disambiguation and scheduling at predecode
US20070288725A1 (en) * 2006-06-07 2007-12-13 Luick David A A Fast and Inexpensive Store-Load Conflict Scheduling and Forwarding Mechanism
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
US8131979B2 (en) * 2008-08-15 2012-03-06 Apple Inc. Check-hazard instructions for processing vectors
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
US11860794B2 (en) 2021-05-07 2024-01-02 Ventana Micro Systems Inc. Generational physical address proxies
US11841802B2 (en) 2021-05-07 2023-12-12 Ventana Micro Systems Inc. Microprocessor that prevents same address load-load ordering violations
US11836080B2 (en) 2021-05-07 2023-12-05 Ventana Micro Systems Inc. Physical address proxy (PAP) residency determination for reduction of PAP reuse
US11481332B1 (en) 2021-05-07 2022-10-25 Ventana Micro Systems Inc. Write combining using physical address proxies stored in a write combine buffer
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
US20220358209A1 (en) * 2021-05-07 2022-11-10 Ventana Micro Systems Inc. Thwarting Store-to-Load Forwarding Side Channel Attacks by Pre-Forwarding Matching of Physical Address Proxies and/or Permission Checking

Family Cites Families (15)

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

Also Published As

Publication number Publication date
WO2002050668A3 (en) 2002-10-31
US6678807B2 (en) 2004-01-13
KR20030064807A (ko) 2003-08-02
US20040019753A1 (en) 2004-01-29
KR100577827B1 (ko) 2006-05-12
CN1307537C (zh) 2007-03-28
WO2002050668A2 (en) 2002-06-27
CN1511280A (zh) 2004-07-07
TW563021B (en) 2003-11-21
US20020120813A1 (en) 2002-08-29
AU2002231202A1 (en) 2002-07-01
CN100530080C (zh) 2009-08-19
HK1067742A1 (en) 2005-04-15

Similar Documents

Publication Publication Date Title
CN1728088A (zh) 在具有限制性存储器模型的系统中多存储缓冲器转发的系统和方法
US8688917B2 (en) Read and write monitoring attributes in transactional memory (TM) systems
KR101291016B1 (ko) 사용자 핸들러 등록 장치, 프로세서, 시스템 및 방법
CN107003837B (zh) 用于推测性编译器优化的轻量级受限事务存储器
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) トランザクショナルメモリシステム内でのハードウェア属性のメモリモデル
US20080276072A1 (en) System and Method for using a Local Condition Code Register for Accelerating Conditional Instruction Execution in a Pipeline Processor
JPH0778738B2 (ja) ディジタル・コンピュータ・システム
CN101154192A (zh) 管理计算机存储器高速缓存中的访问冲突的方法和装置
US9135005B2 (en) History and alignment based cracking for store multiple instructions for optimizing operand store compare penalties
WO2000033183A9 (en) Method and structure for local stall control in a microprocessor
WO2011109191A1 (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
JPH103389A (ja) 並列計算機
WO2009156920A1 (en) Method, register file system, and processing unit device enabling substantially direct cache memory access

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