CN100388186C - 用排序向量实施存储器排序模型的方法与设备 - Google Patents

用排序向量实施存储器排序模型的方法与设备 Download PDF

Info

Publication number
CN100388186C
CN100388186C CNB2005100910883A CN200510091088A CN100388186C CN 100388186 C CN100388186 C CN 100388186C CN B2005100910883 A CNB2005100910883 A CN B2005100910883A CN 200510091088 A CN200510091088 A CN 200510091088A CN 100388186 C CN100388186 C CN 100388186C
Authority
CN
China
Prior art keywords
ordering
input
storage
memory
storage operation
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
Application number
CNB2005100910883A
Other languages
English (en)
Other versions
CN1728087A (zh
Inventor
G·赫里索斯
U·埃切若
苗其昌
J·瓦施
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 CN1728087A publication Critical patent/CN1728087A/zh
Application granted granted Critical
Publication of CN100388186C publication Critical patent/CN100388186C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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 or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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 or look ahead
    • G06F9/3824Operand accessing
    • 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 or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching

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)
  • Advance Control (AREA)
  • Memory System (AREA)

Abstract

在本发明的一个实施例中,一种方法包括生成第一排序向量,该向量与一个操作排序队列中的一个第一输入相对应,而该输入与第一存储器操作相对应,以及避免在完成第一存储器操作之前完成随后的存储器操作。在这种方法中,该操作排序队列,可以是例如一个装入队列或一个存储队列。可以相似地为基于第二操作排序队列中诸输入的第一操作排序队列的一个输入生成一个排序向量。此外,该输入可以包括识别第二操作排序队列中的一个输入的字段。一个归并缓冲器可以耦合到第一操作排序队列并在所有优先写入变为可见时产生一个信号。

Description

用排序向量实施存储器排序模型的方法与设备
技术领域
本发明涉及存储器排序,尤其涉及根据一个存储器排序模型去处理存储器操作。
背景技术
存储器的处理指令必须根据目标指令集结构(ISA)存储器排序模型来进行操作。可供参考的有Intel公司的两个主要的ISA:
Figure C20051009108800061
结构(IA-32或×86)及Intel的
Figure C20051009108800062
处理器族(IPF),它们具有非常不同的存储器排序模型。在IA-32中,装入(load)及存储操作在程序排序中必须是可见的(visible)。在IPF结构中,它们并不普遍如此,而是编程器会在必要时对其中有些特殊的指令进行强制性排队(例如获得装入(此中称为“获得装入”释放存储(此中称为“释放存储”,存储器栅栏及信号量)。
一种保持存储器操作有秩序的简单但低性能的策略是不允许存储器指令在前一条存储器指令已经取得它的数据(对装入而言)或通过高速缓存相干性协议确认已得到占有权(对存储而言)之前访问一存储器体系。
然而,软件应用程序越来越依赖于有序的存储器操作,也就是说,越来越依赖于强制对其它存储器操作及自己进行排序的存储器操作。当单片式多处理器(CMP)执行并行线程时,可在不同软件线程或单个应用程序的多项处理之间的同步与通信中使用有序存储器指令。事务处理与管理实时环境都依赖有序的存储器指令去发挥有效的作用。此外,当一个二进制译码器从一个较强的存储器模型ISA(如×86)向一个较弱的存储器排序模型ISA(如IPF)进行译码时,假定所编译的应用程序依赖于由较强的存储器排序模型所强制的排序。因此,在编译二进制码时,它们必须用排序的装入存储取代装入和存储,以确保程序的正确性。
随着越来越多使用有序存储器操作,有序存储器操作的性能就变得更为重要。在当前的×86处理器中,无序(out-of-order)处理有序存储器操作对其性能而言已是关键性的,因为所有的存储器操作都是有序的操作。实施强的存储器排序模型的无序的处理器能按推测执行无序的装入,然后检查以保证在把装入指令提交至机器状态之前没有出现任何顺序冲突。这可以通过追踪装入队列中已执行了但尚未提交的装入地址并监视由其它中央处理器(CPU)或高速缓存相干代理服务器的写入来实现。如果另一CPU将装入队列中的一个装入向同一地址写入,则该CPU能捕捉并再重新进行匹配的装入(和除去随后的所有非提交的装入),然后再执行该装入及所有随后的装入,保证在旧的一个装入前没有更新的符合的装入。
然而正常的CPU在装入指令把它们的数据返回寄存器文件之前就能提交装入指令。在这类CPU中,一旦传送了它们所有的故障检查(例如数据译码缓冲器(DTB)失灵(miss)及没对准的访问)以及数据检索之前,就会提交装入。一旦退出装入指令,就不能再执行它们了。因此,当装入根据以上所描述的从其它CPU的监视写入而退出时,就不能再选择捕捉、重取或重新执行装入。
因此,需要改进有序存储器操作的性能,尤其是在使用弱的存储器排序模型的处理器中。
发明内容
一种根据本发明的用于在多任务系统环境中实施存储器排序模型的方法,包括:生成与操作排序队列中的第一输入相关联的排序向量,所述第一输入与系统的第一操作相对应,其中所述排序向量包括多个位,每个位分别对应于操作排序队列中的相关联的输入,所述第一输入还包括与第一操作相关联的排序位,用于指示随后的比第一操作较新的存储器操作是否需要被参照第一操作进行排序;以及基于所述排序向量,在和所述多个位相关联的优先存储器操作完成之前避免处理所述第一操作。
一种根据本发明的用于在多任务系统环境中实施存储器排序模型的方法,包括:生成与第一操作排序队列内的输入相关联的排序向量,所述输入与存储器操作相对应,所述排序向量具有多个位,每个位与第二操作排序队列内的输入对应;以及基于所述排序向量,在和所述多个位相关联的优先存储器操作完成之前避免存储器操作处理。
一种根据本发明的用于在多任务系统环境中实施存储器排序模型的设备,包括:第一缓冲器,用于存储多项输入,所述各项输入与存储器操作相对应,多项输入中的各项都有与之相关联的排序向量,用于经由对优先存储器操作的追踪指明与之相对应的存储器操作相对于第一缓冲器中的其它输入的优先存储器操作的相对顺序,并且多项输入中的各项都有一个排序位,用于指明随后的比第一操作较新的存储器操作是否要参照相应的存储器操作进行排序。
一种根据本发明的用于在多任务系统环境中实施存储器排序模型的系统,包括:处理器,它具有用于存储多项输入的第一缓冲器,其中各项输入都与存储器操作相对应,多项输入中的各项都有与之相关联的排序向量,用于指明相应的存储器操作的相对顺序,并且多项输入中的各项都有一个排序位,用于指明随后的比第一操作较新的存储器操作是否要参照相应的存储器操作进行排序,其中,所述排序向量被用于在具有设置于排序向量中的标记的优先操作被完成之前避免存储器操作;以及与处理器相耦合的动态随机存取存储器。
附图说明
图1是依据本发明一个实施例的部分系统的方框图。
图2是根据本发明一个实施例处理一个装入指令的方法的流程图。
图3是根据本发明一个实施例处理一个装入数据的方法的流程图。
图4是根据本发明一个实施例处理一个存储指令的方法的流程图。
图5是根据本发明一个实施例处理一个存储器栅栏的方法的流程图。
图6是依据本发明的一个实施例的系统的方框图。
具体实施方式
参考图1,所示的是依据本发明一个实施例的部分系统的方框图。更具体地说,如图1所示,系统10可以是一个信息处理系统,例如,一台个人计算机(例如,台式计算机,笔记本计算机,服务器计算机,等等)。如图1所示,系统10可以包含各种处理器资源,例如,装入队列20,存储队列30及归并(即,写入组合)缓冲器40。在某些实施例中,这些队列和缓冲器可以在系统的处理器,例如,中央处理器(CPU)内。例如,在某些实施例中,该CPU可以与IA-32或IPF的结构一样,虽然本发明的范围并不只限于此。在其它实施例中,装入队列20和存储队列30也可以组合成一个单独的缓冲器。
包含这些处理器资源的处理器可以使用这些资源作为在系统内执行各种存储器操作的临时存储器。例如,装入队列20可以用来暂时存储特定存储器操作的输入(entry),比如装入操作的输入,并追踪在给定存储器的操作本身完成之前所必须完成的优先装入或其它存储器的操作。相似地,存储队列30可以用来存储存储器的操作,例如,存储操作,并追踪在给定存储器,操作本身能提交之前所完成的优先的存储器的操作(通常是装入)。在不同的实施例中,归并缓冲器40可以用作一个缓冲器去暂时存储与一个存储器操作相对应的数据,直至存储器操作(例如,一个存储或信号量)完成或提交的时候。
采用弱存储器排队模型(如,IPF处理器)的ISA可以包含需要严格存储器排序的显式指令(例如,获得装入,释放存储,存储栅栏及信号量),而多数的正规装入和存储并不会对严格的存储器排序产生影响。在一个采用强存储器排序模型的ISA(如,IA-32 ISA)中,每条装入或存储指令都会遵循严格的存储器排序规则。因此,例如,从IA-32环境编译成IPF环境的程序,就会对强存储器排序产生影响,以便于通过用取得装入来代替所有的装入并用释放存储来代替所有的存储从而确保适当的程序行为。
当依据本发明一个实施例的处理器处理获得装入(load acquire)时,它要确保该获得装入在随后的装入及存储得到处理之前就已经达到全局可见。这样,如果获取装入在第一级的数据高速缓存中失误,则随后的装入就不能更新寄存器文件,即使它们已经进入了数据高速缓存,而随后的存储就一定要测试,只有该获得装入将它的数据送回寄存器文件之后才写入的数据块的占有权。它就不可能有占有权。为了做到这一点,处理器就要强制所有比未完成的获得装入较新的全部装入错过数据高速缓存中而进入到装入队列,即,失误请求队列(MRQ),以确保正常的排序。
当根据本发明一个实施例的处理器处理释放存储(store release)时,它要确保所有优先的装入和存储都已达到全局可见。因此,在释放存储能使它的写入全局可见之前,所有优先的装入必须已经把数据送回寄存器文件内,并且全部优先的存储必须通过高速缓存相干协议达到占有权可见。
存储器栅栏操作和信号量操作可具有获得装入和释放存储两种语义的元素。
仍参考图1,示出的装入队列20(也称之为“MRQ 20”)包括MRQ输入25,它是相当于一个特定的存储器操作(即,装入)的输入。尽管为了说明,示出的只包括一个单个的输入25,但是可以有多个这样的输入。与MRQ输入25相关联的是一个由多位组成的排序向量26。排序向量26的每个位都对应于装入队列20中的一个输入,用以指示优先的存储器操作是否已完成。于是,排序向量26可以在相关联的存储器操作完成之前追踪有待完成的优先装入。
同样与MRQ输入25相关联结的是一个排序位(0-位)27,它可以用来指明存储在装入队列20中所存储着的随后存储器操作是对照MRQ输入25来排序的。此外,还可以有一个有效位28。如图1所示的,MRQ输入25还可以包括一个排序存储缓冲器标识符(ID)29,它可以用来标识存储缓冲器中对应于MRQ输入的存储器操作的一个输入。
相似地,存储队列30(也称之为“STB 30”)也可以包含多个输入。为了说明,图1只示出了一个单个的STB输入35。STB输入可以对应于一个给定的存储器操作(即,存储)。如图1所示,STB输入35可以有一个与此相关联的排序向量36。该排序向量可以指明与STB输入35对应的存储器操作在装入队列20内相对于以前的存储器操作的相对排序,并且在某些实施例中,还可以选择存储队列30。这样,排序向量36可以追踪那些在相关的存储器操作能提交之前所必须完成的MRQ 20的优先的存储器操作(通常,是装入)。尽管在图1没有示出,但在某些实施例中,STB30可提供一个STB提交通知(例如,给MRQ)用来指明一个优先的存储器操作(通常,是STB中的存储)现在已提交了。
在各种实施例中,归并缓冲器40可以发出一个信号45(即,一个“所有优先的写入可见”信号),它可以用来指明所有优先的写入操作都已达到可见了。在该实施例中,信号45可以用来通知提交曾被延迟的STB30里的释放语义的存储器操作(通常,是一个释放存储,存储器栅栏或释放信号量)一旦现在接收到信号45就可以立即提交了。信号45的使用将在下面讨论。
这些机构合在一起,可以由发出的存储器操作的语义根据需要来加强存储器的排序。这种机构可以提高性能,作为根据某些实施例的处理器,可以利用基于弱存储器模型的本机二进制机构,仅仅在需要时来加强实施排序约束。
此外,在各种实施例中,适用于装入的排序向量检查可以尽可能地推迟。这有两个含义。第一,关于流水线存储器访问,需要排序约束的装入可正常地访问高速缓存层(除非受强制错过主数据高速缓存)。这允许一个装入在它的排序约束受检之前可访问第二级和第三级高速缓存及其它处理器套接高速缓存和存储器。只有当装入数据准备写入寄存器文件、排序向量已受检查才确保所有的约束相符合。例如,如果一个获取装入错过主要数据高速缓存,则一个随后的装入(它必须等候获取装入完成之后)可以在获取装入的阴影之下发出的请求。如果那个获取装入在随后的装入返回数据之前返回数据,随后的装入不会遭受因排序约束而造成的性能恶化。因此,最好情况下,在装入操作得到完全流水化时,排序可以得到加强。
其次,关于数据的预取,如果一个随后的装入尝试在前一个获取装入之前返回数据,它可以有效地把它已访问的块预取入CPU高速缓存。在获取装入返回了数据之后,随后的装入会从装入队列中再试,并从高速缓存得到它的数据。排序可得到维持,因为一个插入的全局可见写入使高速缓存线失效,导致预取的高速缓存块可得到一个更新了的复制品。
现在参考图2,所示的是根据本发明一个实施例处理一个装入指令的方法的流程图。该装入指令可以是装入或获得装入的指令。如图2中所示,方法100可以从收到装入指令(椭圆102)开始。该指令可以在处理器中用存储器排序规则来执行,其中一个获得装入指令要在任何一个随后的装入操作或存储操作变成为全局可见之前成为全局可见。另一种情况是,装入指令在某些处理器环境中不需要排队。图2所示的方法可以用来处理装入指令,而在其它实施例中,类似的流程也可以用来处理其它存储器操作,只要它符合其它处理器的存储器排序规则,其中第一存储器操作必须在随后的存储器操作之前变成为可见的。
接着,仍参考图2,要判定装入队列中是否有任何优先的已排队的操作尚未完成(菱形105)。这些操作可以包括获得装入指令,存储器栅栏等等。如果这些指令是未完成的,该装入可以存储在一个装入队列(方框170)中。此外,可根据以前输入的排序位生成与装入队列中的输入相对应的排序向量(方框180)。即在所生成的排序向量有供可排序操作,如获得装入、存储器栅栏等使用的排序位。在一个实施例中,MRQ输入可以复制所有以前的MRQ输入的0位来生成它的排序向量。例如,有5个以前的输入,它们每一个都还有待于变成为全局可见,则第六个输入的排序向量可以包含5个以前的MRQ输入各自都有的1值。然后,控制会转入菱形115,这将在下面进一步讨论。虽然图2示出当前的输入可以取决于在存储队列中的优先的排序操作,该当前输入也取决于在存储队列中优先的排序操作,并因此它也由存储队列中是否具有这样的操作所决定。
代之,如果在菱形105判定了装入队列中没有未完成的优先排序操作,则可由在数据高速缓存中是否具有数据来决定的(菱形110)。如果是有数据,则可以从数据高速缓存取得数据(方框118),并可以继续进行正常的处理。
在菱形115,可以决定指令是不是获得装入操作。如果它不是,控制转入到图3以便得到数据(椭圆195)。反之,如果在菱形115,它被判定是获得装入操作,则控制转入到方框120,在那里随后的装入可强制错过数据高速缓存(方框120)。于是,该MRQ输入在生成时也可以设置它本身的0位(方框150)。随后的MRQ输入可以使用该排序位来决定怎样参照当前现有的MRQ输入设置它们排序向量。换句话说,随后的装入可通过相应地在它的排序向量中设置一个相对应的位来提出一个MRQ输入的0位。接着,控制会转入到椭圆195,它对应于下面所讨论的图3。
尽管在图2中没有示出,在某些实施例中,随后的装入指令可以存储在一个MRQ输入中并生成一个0-位以及一个与此相对应的排序向量。于是,随后的装入可以通过复制现存的MRQ输入的0位来决定怎样去设置它们的排序向量(即,一个随后的装入会通过设置在它的MRQ输入的排序向量中的相应的位来提示该获得装入的0-位)。尽管在图2中没有示出,不言自明,随后的(即,没有释放的)存储可以决定怎样去按照装入的相同方法,根据MRQ输入的0位来设置它们的排序向量。
现在,参考图3,示出的是根据本发明一个实施例的一个装入数据的方法的流程图。如图3中所示,方法200可以从装入数据操作(椭圆205)开始。接着,可以从与装入指令相对应的存储器层次中接收数据(方框210)。该数据可以保存在存储器层上边的不同位置中,例如,系统存储器或与之相关联的高速缓存或与处理器相关联的芯片上或芯片外的高速缓存之中。当从存储器层次中接收到数据,可以把它存储在数据高速缓存或其它暂存位置中。
然后,分析与装入指令相对应的排序向量(方框220)。例如,在装入队列中与该装入指令相对应的一个MRQ输入有一个与此相关联的排序向量。分析该排序向量,籍以判定该排序向量是否已被清零(菱形230)。在图3所示的实施例中,如果排序向量所有的位都已被清零,则这可以指明所有优先的存储器操作都已完成了。如果该排序向量没有清零,这指出这种优先的操作还未完成,相应地,数据还没有返回。反之,则装入操作在装入队列内进入休眠(方框240),等待优先的存储器操作,例如,以前的获得装入操作取得进展。
如果代替该排序向量在菱形230被判定是已被清零的,则控制会转入到方框250,其中,数据可以被写入到寄存器文件。接着,与装入指令相对应的输入可重新分配(方框260)。最后,在方框70处,与已完成的(即,已重新分配的)装入操作的排序位可从装入队列和存储队列中所有的随后输入中被列清零。按这种方式,排序向量会随着当前操作的完成状态而更新。
如果一个存储操作准备尝试达到全局可见(例如,从存储缓冲器向归并缓冲器进行复制,并为它的高速缓存块要求占有权),则它会首先去检查以确保它的排序向量已被清零。如果不是这样,则操作就会推迟到排序向量被完全清零。
现在,参考图4,示出的是按照本发明的一个实施例处理一个存储指令的方法的流程图。该存储指令可以是存储或释放存储指令。在某些实施例中,存储指令是不需要排序的。然而,在一些使用特定处理器的实施例中,存储器排序规则命令在释放存储操作本身变成为全局可见之前所有优先的装入或存储操作须变成为全局可见。尽管图4所示的实施例中讨论的只涉及存储指令,不言自明,这样的流程或类似的流程也可以用来处理在给定的操作变成为可见的之前那些需要优先的存储器操作变成为可见的类似存储器排序操作。
仍参考图4,方法400可以从接收存储指令开始(椭圆405)。在方框410,将该存储指令插入到存储队列中的一个输入中。接着,是判定该操作是不是一个释放存储操作(菱形415)。如果它不是,则基于装入队列中所有优先的未完成的已排序操作的输入(用它们的排序位组)来生成一个排序向量(方框425)。因为该存储指令不是一个已排序的指令,所以这样的排序向量不用它的排序位就可以生成。然后,把控制可转入到菱形430,下面将进一步讨论。
反之,如果在菱形415中判定有一个释放存储指令,接着可根据装入队列中有关所有优先的未完成的可排序操作的信息为输入生成一个排序向量(方框420)。正如上面所讨论的,该排序向量可包括对应于暂停(pending)存储操作(例如,MRQ中未完成的装入,以及存储器栅栏及其它类似的操作)的位。
在菱形430,可以判定排序向量是否已被清零。如果排序向量未被清零,则可执行循环直至排序向量已被清零。当排序向量已成为清了零的,则可以判定该操作是不是一个释放操作(菱形435)。如果它不是,控制可直接转入到方框445,正如下面所讨论的。反之,如果判定是一个释放操作,则要判定所有优先的写入是不是已全部达到可见(菱形440)。例如,在一个实施例中,当与指令相对应的数据已出现在给定的缓冲器或其它存储位置中,则存储是可见的。否则,菱形440可自己循环回去直至所有的优先写入都变成为可见的。当达到了可见,则控制可转入到方框445。
这时,该存储会为写入请求通往它的高速缓存的可见性。尽管图4没有示出,在允许存储请求可见性的时间内,数据可以存储在归并缓冲器内。在一个实施例中,如果所有优先的存储都已达到可见,则可以请求一个归并缓冲器可见性信号。该信号指明正如归并缓冲器所指明的那样,所有优先的存储器操作都已达到全局可见。在一个实施例中,可以询问(query)高速缓存相干协议以达到这种可见性。这种可见性可以在高速缓存相干协议向存储缓冲器提供一个通知时达到。
在某些实施例中,供释放存储操作所用的高速缓存块可能早已在归并缓冲器(MGB)中存在,一旦释放存储准备好就可得到可见性时就占有。如果在供这些块使用的MGB中存在着合理数量的归并,则MGB就会为释放存储的码流(例如,在所有的存储都是释放存储的编码分段中)维持高性能。
如果该存储已达到可见,则可在归并缓冲器中为存储数据置一个确认位。MGB可包括为每个有效的高速缓存块所设置的确认位,这也称之为占有权或无效位(dirty bit)。在该实施例中,MGB然后可对它所有的有效输入实施或(OR)操作。如果任何有效输入没得到确认,则“所有的优先写入可见”信号就会被取消。这个确认位一旦被置位,则该输入就变成全局可见的。在这种情况下,存储或释放存储指令就达到可见了(方框460)。不言自明,在不同的实施例中,至少由图4所提出的某些作用可按其它的顺序来执行。例如,在某个实施例中,当与该指令相对应的数据已存在于给定的缓冲器或其它的存储位置时,则优先的写入就可以是可见的。
现在,参考图5,示出的是根据本发明一个实施例处理一个存储器栅栏(MF)操作的方法的流程图。在图5所示的实施例中,存储器栅栏是在处理器内受处理。该处理器具有一些存储器排序规则,它们命令,对存储器栅栏来说,在任何一个随后的装入或存储变成为可见的之前必须把所有优先的装入和存储都变造成为可见的。在某个实施例中,该处理器可以是IPF处理器,IA-32处理器或其它这类处理器。
如图5所示,可以由处理器发出存储器栅栏指令(椭圆505)。接着,在装入队列和存储队列中都可以用与输入相对应的排序向量生成一个输入(方框510)。更具体地说,该排序向量可与装入队列中所有优先的可排序操作相对应。在组成MRQ输入时,可以在装入队列输入的存储顺序识别(ID)字段中插入一个与存储队列输入对应的输入数量(方框520)。具体地说,MRQ可记录在“OrderSTB ID”字段中由存储器栅栏所占用的STB输入。接着,设置与装入队列输入对应的顺序位(方框530)。存储器栅栏的MRQ输入可设置它的0-位,从而使随后的装入或存储把存储器栅栏登记在它们的排序向量中。
然后,可以判定是不是所有优先的存储都已是可见的以及存储队列中输入的排序向量现在是否已被清零(菱形535)。如果没有,则可执行循环直至该存储都已变成为可见的并且排序向量已被清零。发生这种情况时,则控制输入到方框550,在那里,存储器栅栏输入可从存储队列重新得到分配。
正如释放存储处理一样,STB可防止MF被重新分配,直至它的排序向量被清零并从归并缓冲器接收到“所有优先的写入可见”信号。存储器栅栏一旦由STB重新分配后,存储栅栏的存储顺序队列ID就被传送到装入队列(方框560)。相应地装入队列就可见到已重新分配的存储的存储队列ID,并对所有输入的排序存储队列ID字段进行按内容寻址存储器(CAM)操作。另外,装入队列中的存储器栅栏。
然后,从装入队列和存储队列所有其它的输入(即随后的装入和存储)中对与装入及队列输入对应的顺序位进行列清零(方框570),允许它们完成以及从装入队列中重新分配存储器栅栏。
根据本发明一个实施例的排序硬件也可以基于其它原因来控制存储器的次序或其它处理器操作。例如,可以用它来使用一个能提供某些但不是全部装入的数据的优先存储去给装入排序(部分击中);它能用来通过存储器强制写后读(RAW)、读后写(WAR)及写后写(WAW)的数据相关冒险;并且它也可用于避免数据从某些操作局部旁通至其它操作(例如,从信号量至装入,或从存储至信号量)。此外,在某些实施例中,信号量也可以使用相同的硬件去强制正确的次序。
现在,参考图6,示出的是根据本发明一个实施例的典型的计算机系统600的方框图。如图6所示,计算机系统600包括处理器601a。在一个实施例中,处理器601a可以通过存储系统互连620耦合到高速缓存相干共享存储器系统(“相干存储器630”)630。在一个实施例中,相干存储器630可以包括动态随机存取存储器(DRAM),并且还可以包括相干存储器控制器逻辑,以便在处理器601a和601b之间共享相干存储器630。
不言自明,在其它实施例中,还可以把其它这类处理器耦合到相干存储器630上。此外,在某些实施例中,相干存储器630可以分部实施并展开使得系统600内处理器的子系统与相干存储器630的某部分相联系,而其它的处理器与相干存储器630的其它部分相联系。
如图6所示,根据本发明一个实施例的处理器601a可以包括存储队列30a,装入队列20a及归并缓冲器40a,还有,在某些实施例中,示出的是一个可归并缓冲器40a提供到存储队列30a的可见性信号45a。再有,可将2级(L2)高速缓存607耦合到处理器601a。图6还示出,处理器601b中还可以免招类似的处理器部件,它可以是多处理器系统的第二内核处理器。
相干存储器630还可以耦合到(通过集线器链路)输入/输出(I/O)集线器635,它再耦合到I/O扩展总线655及外围设备总线650。在各种实施例中,I/O扩展总线655可以耦合到各种I/O设备如键盘及鼠标等其它设备上。外围设备总线650可以耦合到各种部件如外围设备670,它可以是一个存储设备如闪存、插入卡等等。虽然本说明只引用了系统600的一些具体的部件,但是所说明的实施例还可以有许多改动。
实施例可以存储于存储媒体中的计算机程序来实施,该媒体具有多种指令以便于计算机系统可以程序方式实现实施例。存储媒体可以包括,但不只限于任何类型的盘,包括软盘、光盘,小型光盘只读存储器(CD-ROM),小型磁盘可读写存储器(CD-RW)及磁光盘,半导体设备如只读存储器(ROM),随机存取存储器(RAM)如动态和静态RAM,可擦除可编只读存储器(EPROM),电擦除可编程只读存储器(EEPROM),闪存,磁或光卡,或任何一种适合于存储电子指令的媒体。其它实施例也可以由可编程控制器件可执行的软件模块方式来执行。
尽管本发明只用了有限的实施例来加以说明,但本领域的技术人员都会意识到,由之可以引出许多修改和变化。我们意图是由后附的权利要求覆盖在本发明真正精神和范围内所有的这种改动和变化。

Claims (27)

1.一种用于在多任务系统环境中实施存储器排序模型的方法,其特征在于,包括:
生成与操作排序队列中的第一输入相关联的排序向量,所述第一输入与系统的第一操作相对应,其中所述排序向量包括多个位,每个位分别对应于操作排序队列中的相关联的输入,所述第一输入还包括与第一操作相关联的排序位,用于指示随后的比第一操作较新的存储器操作是否需要被参照第一操作进行排序;以及
基于所述排序向量,在和所述多个位相关联的优先存储器操作完成之前避免处理所述第一操作。
2.如权利要求1所述方法,其特征在于,还包括基于排序向量中指示未完成的优先操作的位避免操作处理。
3.如权利要求1所述方法,其特征在于,还包括在完成相对应的优先操作时对排序向量的指定位清零。
4.如权利要求1所述方法,其特征在于,还包括对与获取语义存储器操作相对应的操作排序队列内的输入的排序位进行置位。
5.如权利要求1所述方法,其特征在于,所述生成排序向量包含把与优先的未完成的存储器操作相对应的排序位复制到排序向量中。
6.如权利要求1所述方法,其特征在于,还包括强制随后的比第一操作较新的存储器操作错过数据高速缓存。
7.如权利要求1所述方法,其特征在于,还包括对与所述第一操作对应的所述排序位进行置位。
8.如权利要求7所述方法,其特征在于,还包括在所述第一操作完成时对所述排序位清零。
9.如权利要求7所述方法,其特征在于,还包括生成一个与随后操作相对应的第二排序向量,且所述第二排序向量包含所述排序位。
10.如权利要求1所述的方法,其特征在于:如果与操作对应的排序向量指出至少有一个优先存储器操作尚未完成,则避免存储器操作在第一时间发生。
11.如权利要求10所述的方法,其特征在于,还包括使系统在至少有一个优先的存储器操作得到完成时就更新排序向量。
12.如权利要求10所述的方法,其特征在于,还包括使系统去强制随后的比第一操作较新的存储器操作错过高速缓存。
13.如权利要求10所述的方法,其特征在于,还包括使系统对存储器操作的排序位进行置位。
14.一种用于在多任务系统环境中实施存储器排序模型的方法,其特征在于,包括:
生成与第一操作排序队列内的输入相关联的排序向量,所述输入与存储器操作相对应,所述排序向量具有多个位,每个位与第二操作排序队列内的输入对应;以及
基于所述排序向量,在和所述多个位相关联的优先存储器操作完成之前避免存储器操作处理。
15.如权利要求14所述方法,其特征在于,基于排序向量中指示第二操作排序队列内未完成的优先存储器操作的位来避免处理。
16.如权利要求15所述方法,其特征在于,还包括在完成相应的优先存储器操作时对排序向量的指定位清零。
17.如权利要求14所述方法,其特征在于,所述第一操作排序队列包括一个存储队列,以及所述第二操作排序队列包括一个装入队列。
18.如权利要求17所述方法,其特征在于,所述排序向量包含一个与装入队列中各个输入相关联的排序位。
19.如权利要求18所述方法,其特征在于,还包括对与获得语义操作相对应的装入队列中的输入的排序位进行置位。
20.一种用于在多任务系统环境中实施存储器排序模型的设备,其特征在于,包括:
第一缓冲器,用于存储多项输入,所述各项输入与存储器操作相对应,多项输入中的各项都有与之相关联的排序向量,用于经由对优先存储器操作的追踪指明与之相对应的存储器操作相对于第一缓冲器中的其它输入的优先存储器操作的相对顺序,并且多项输入中的各项都有一个排序位,用于指明随后的比第一操作较新的存储器操作是否要参照相应的存储器操作进行排序。
21.如权利要求20所述的设备,其特征在于,还包括第二缓冲器,用于存储多项输入,其中各项输入与第二存储器操作相对应,所述多项输入中的各项都有一个与之相关联的排序向量,用于经由对优先存储器操作的追踪指明与之相对应的第二存储器操作相对于第一缓冲器中的其它输入优先存储器操作的相对顺序,其中第一缓冲器是存储缓冲器而第二缓冲器是装入缓冲器。
22.如权利要求20所述的设备,其特征在于,还包括,与第一缓冲器相耦合的归并缓冲器,如果优先的存储器操作是可见的就产生一个信号。
23.一种用于在多任务系统环境中实施存储器排序模型的系统,其特征在于,包括:
处理器,它具有用于存储多项输入的第一缓冲器,其中各项输入都与存储器操作相对应,多项输入中的各项都有与之相关联的排序向量,用于指明相应的存储器操作的相对顺序,并且多项输入中的各项都有一个排序位,用于指明随后的比第一操作较新的存储器操作是否要参照相应的存储器操作进行排序,其中,所述排序向量被用于在具有设置于排序向量中的标记的优先操作被完成之前避免存储器操作;以及
与处理器相耦合的动态随机存取存储器。
24.如权利要求23所述的系统,其特征在于,还包括第二缓冲器,用于存储与第二存储器操作相对应的多项输入,所述多项输入中的各项都有一个与之相关联的排序向量,用于经由追踪优先存储器操作指明相应的第二存储器操作相对于第一缓冲器中的其它输入的优先操作的相对顺序,其中第一缓冲器是存储缓存器而第二缓冲器是装入缓冲器。
25.如权利要求23所述的系统,其特征在于,还包括与第一缓冲器要耦合的归并缓冲器,如果优先的存储器操作是可见的就产生一个信号。
26.如权利要求23所述的系统,其特征在于,所述处理器具有一种用于根据弱存储器排序模型处理装入指令的指令集结构。
27.如权利要求23所述的系统,其特征在于,所述处理器具有一种用于根据弱存储器排序模型处理存储指令的指令集结构。
CNB2005100910883A 2004-07-30 2005-08-01 用排序向量实施存储器排序模型的方法与设备 Expired - Fee Related CN100388186C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/903,675 US20060026371A1 (en) 2004-07-30 2004-07-30 Method and apparatus for implementing memory order models with order vectors
US10/903,675 2004-07-30

Publications (2)

Publication Number Publication Date
CN1728087A CN1728087A (zh) 2006-02-01
CN100388186C true CN100388186C (zh) 2008-05-14

Family

ID=35721659

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100910883A Expired - Fee Related CN100388186C (zh) 2004-07-30 2005-08-01 用排序向量实施存储器排序模型的方法与设备

Country Status (4)

Country Link
US (1) US20060026371A1 (zh)
JP (1) JP4388916B2 (zh)
CN (1) CN100388186C (zh)
DE (1) DE102005032949A1 (zh)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7606998B2 (en) * 2004-09-10 2009-10-20 Cavium Networks, Inc. Store instruction ordering for multi-core processor
US7907673B2 (en) * 2006-10-26 2011-03-15 Telefonaktiebolaget L M Ericsson (Publ) Robust and low-complexity combined signal power estimation
KR101084228B1 (ko) * 2007-06-20 2011-11-17 후지쯔 가부시끼가이샤 정보 처리 장치, 캐시 메모리 제어 장치 및 메모리 액세스 순서 보증 방법
US8250336B2 (en) * 2008-02-25 2012-08-21 International Business Machines Corporation Method, system and computer program product for storing external device result data
US8615647B2 (en) 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
JP5541491B2 (ja) * 2010-01-07 2014-07-09 日本電気株式会社 マルチプロセッサ、これを用いたコンピュータシステム、およびマルチプロセッサの処理方法
US8412888B2 (en) * 2011-01-06 2013-04-02 International Business Machines Corporation Cache-based speculation of stores following synchronizing operations
FR2982683B1 (fr) * 2011-11-10 2014-01-03 Sagem Defense Securite Procede de sequencement sur un processeur multicoeur.
EP2862062B1 (en) 2012-06-15 2024-03-06 Intel Corporation A virtual load store queue having a dynamic dispatch window with a distributed structure
CN104583942B (zh) * 2012-06-15 2018-02-13 英特尔公司 乱序加载的基于锁的和基于同步的方法
CN104583957B (zh) 2012-06-15 2018-08-10 英特尔公司 具有无消歧乱序加载存储队列的重新排序的推测性指令序列
KR101996462B1 (ko) 2012-06-15 2019-07-04 인텔 코포레이션 명확화 없는 비순차 load store 큐
WO2013188565A1 (en) * 2012-06-15 2013-12-19 Soft Machines, Inc. A semaphore method and system with out of order loads in a memory consistency model that constitutes loads reading from memory in order
CN107748673B (zh) 2012-06-15 2022-03-25 英特尔公司 包括虚拟加载存储队列的处理器和系统
CN104823168B (zh) 2012-06-15 2018-11-09 英特尔公司 用于实现从由加载存储重新排序和优化导致的推测性转发遗漏预测/错误中恢复的方法和系统
EP2862069A4 (en) 2012-06-15 2016-12-28 Soft Machines Inc DEFINING INSTRUCTIONS TO REORDER AND OPTIMIZE LOADING AND STORAGE
CN104583939B (zh) * 2012-06-15 2018-02-23 英特尔公司 用于选择指令的系统和方法
WO2013188311A1 (en) * 2012-06-15 2013-12-19 Soft Machines, Inc. A load store buffer agnostic to threads implementing forwarding from different threads based on store seniority
US9218289B2 (en) 2012-08-06 2015-12-22 Qualcomm Incorporated Multi-core compute cache coherency with a release consistency memory ordering model
US9875185B2 (en) * 2014-07-09 2018-01-23 Intel Corporation Memory sequencing with coherent and non-coherent sub-systems
US11281481B2 (en) 2014-07-25 2022-03-22 Intel Corporation Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture
US9733909B2 (en) 2014-07-25 2017-08-15 Intel Corporation System converter that implements a reordering process through JIT (just in time) optimization that ensures loads do not dispatch ahead of other loads that are to the same address
US20160026486A1 (en) * 2014-07-25 2016-01-28 Soft Machines, Inc. An allocation and issue stage for reordering a microinstruction sequence into an optimized microinstruction sequence to implement an instruction set agnostic runtime architecture
EP3172667A4 (en) 2014-07-25 2018-03-21 Intel Corporation System for an instruction set agnostic runtime architecture
US10353680B2 (en) 2014-07-25 2019-07-16 Intel Corporation System converter that implements a run ahead run time guest instruction conversion/decoding process and a prefetching process where guest code is pre-fetched from the target of guest branches in an instruction sequence
US20160026484A1 (en) * 2014-07-25 2016-01-28 Soft Machines, Inc. System converter that executes a just in time optimizer for executing code from a guest image
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US10140057B2 (en) * 2016-02-18 2018-11-27 Micron Technology, Inc. Apparatuses and methods for multiple address registers for a solid state device
CN105808654A (zh) * 2016-02-29 2016-07-27 湖南蚁坊软件有限公司 一种针对流数据的二级排序方法
US10474461B2 (en) * 2016-09-22 2019-11-12 Qualcomm Incorporated Instruction-based synchronization of operations including at least one SIMD scatter operation
US11113065B2 (en) 2019-04-03 2021-09-07 Advanced Micro Devices, Inc. Speculative instruction wakeup to tolerate draining delay of memory ordering violation check buffers
CN112486638A (zh) * 2019-09-11 2021-03-12 百度时代网络技术(北京)有限公司 用于执行处理任务的方法、装置、设备和存储介质
US11494306B2 (en) * 2019-09-20 2022-11-08 Micron Technology, Inc. Managing data dependencies in a transfer pipeline of a hybrid dimm
US11531622B2 (en) 2019-09-20 2022-12-20 Micron Technology, Inc. Managing data dependencies for out of order processing in a hybrid DIMM

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH096759A (ja) * 1995-06-16 1997-01-10 Kofu Nippon Denki Kk ベクトル処理装置
JPH09120383A (ja) * 1995-10-25 1997-05-06 Fujitsu Ltd データ入出力方法及びそのためのデータ入出力装置
WO1999031594A1 (en) * 1997-12-16 1999-06-24 Intel Corporation System for ordering load and store instructions that performs out-of-order multithread execution
CN1241752A (zh) * 1998-07-15 2000-01-19 北京多思科技工业园股份有限公司 指令控制排序方法及其装置
US6065105A (en) * 1997-01-08 2000-05-16 Intel Corporation Dependency matrix
CN1383511A (zh) * 1998-11-16 2002-12-04 因芬尼昂技术股份公司 通过重排序存储器请求提高总线利用率的存储器控制器
WO2003098392A2 (en) * 2002-05-14 2003-11-27 Micron Technology, Inc. Out of order dram sequencer

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5689679A (en) * 1993-04-28 1997-11-18 Digital Equipment Corporation Memory system and method for selective multi-level caching using a cache level code
EP0679990B1 (en) * 1994-04-28 2000-03-01 Hewlett-Packard Company A computer apparatus having a means to force sequential instruction execution
US6260131B1 (en) * 1997-11-18 2001-07-10 Intrinsity, Inc. Method and apparatus for TLB memory ordering
US6182210B1 (en) * 1997-12-16 2001-01-30 Intel Corporation Processor having multiple program counters and trace buffers outside an execution pipeline
US6484254B1 (en) * 1999-12-30 2002-11-19 Intel Corporation Method, apparatus, and system for maintaining processor ordering by checking load addresses of unretired load instructions against snooping store addresses

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH096759A (ja) * 1995-06-16 1997-01-10 Kofu Nippon Denki Kk ベクトル処理装置
JPH09120383A (ja) * 1995-10-25 1997-05-06 Fujitsu Ltd データ入出力方法及びそのためのデータ入出力装置
US6065105A (en) * 1997-01-08 2000-05-16 Intel Corporation Dependency matrix
WO1999031594A1 (en) * 1997-12-16 1999-06-24 Intel Corporation System for ordering load and store instructions that performs out-of-order multithread execution
CN1241752A (zh) * 1998-07-15 2000-01-19 北京多思科技工业园股份有限公司 指令控制排序方法及其装置
CN1383511A (zh) * 1998-11-16 2002-12-04 因芬尼昂技术股份公司 通过重排序存储器请求提高总线利用率的存储器控制器
WO2003098392A2 (en) * 2002-05-14 2003-11-27 Micron Technology, Inc. Out of order dram sequencer

Also Published As

Publication number Publication date
JP4388916B2 (ja) 2009-12-24
JP2006048696A (ja) 2006-02-16
US20060026371A1 (en) 2006-02-02
CN1728087A (zh) 2006-02-01
DE102005032949A1 (de) 2006-02-23

Similar Documents

Publication Publication Date Title
CN100388186C (zh) 用排序向量实施存储器排序模型的方法与设备
CN104598397B (zh) 使用缓冲存储加速事务的机构
CN100576170C (zh) 连续流程处理器流水线
US8832415B2 (en) Mapping virtual addresses to different physical addresses for value disambiguation for thread memory access requests
US6085294A (en) Distributed data dependency stall mechanism
CN1327336C (zh) 用于使用记录板机制处理加载锁定指令的方法
CN102016808B (zh) 将检查点数据存储于非易失性存储器中
CN102483704B (zh) 具有高效的高速缓存支持的事务内存系统
US20080010417A1 (en) Read/Write Permission Bit Support for Efficient Hardware to Software Handover
TWI526829B (zh) 電腦系統、用於存取儲存裝置之方法及電腦可讀儲存媒體
US7284102B2 (en) System and method of re-ordering store operations within a processor
CN100530080C (zh) 用于在一系统中进行多存储缓冲器转发的系统
CN108292221A (zh) 事务结束加上持续性提交指令、处理器、方法和系统
CN104813278B (zh) 对二进制转换的自修改代码以及交叉修改代码的处理
EP2641171B1 (en) Preventing unintended loss of transactional data in hardware transactional memory systems
CN108351830A (zh) 用于存储器损坏检测的硬件装置和方法
CN101788922B (zh) 基于辅助线程实现事务存储系统的方法和装置
CN100440174C (zh) 使用锁定高速缓冲存储器用于直接存入的系统和方法
US20100312968A1 (en) Arithmetic processing apparatus and method of controlling the same
CN108710582A (zh) 用于基于局部性的指令处理的选择性启用的系统、设备和方法
US6539457B1 (en) Cache address conflict mechanism without store buffers
US7080209B2 (en) Method and apparatus for processing a load-lock instruction using a relaxed lock protocol
US10970077B2 (en) Processor with multiple load queues including a queue to manage ordering and a queue to manage replay
US20200192800A1 (en) An apparatus and method for managing capability metadata
CN100480996C (zh) 在冗余多线程系统中管理外部存储器更新的方法和设备

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: 20080514

Termination date: 20150801

EXPY Termination of patent right or utility model