CN1728087A - 用排序向量实施存储器排序模型的方法与设备 - Google Patents
用排序向量实施存储器排序模型的方法与设备 Download PDFInfo
- Publication number
- CN1728087A CN1728087A CN200510091088.3A CN200510091088A CN1728087A CN 1728087 A CN1728087 A CN 1728087A CN 200510091088 A CN200510091088 A CN 200510091088A CN 1728087 A CN1728087 A CN 1728087A
- Authority
- CN
- China
- Prior art keywords
- ordering
- input
- storage
- storage operation
- ordering vector
- 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
- 239000013598 vector Substances 0.000 title claims abstract description 68
- 230000015654 memory Effects 0.000 title claims abstract description 65
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000003860 storage Methods 0.000 claims description 135
- 238000012856 packing Methods 0.000 claims description 67
- 230000015572 biosynthetic process Effects 0.000 claims description 45
- 230000008569 process Effects 0.000 claims description 12
- 238000012545 processing Methods 0.000 claims description 9
- 238000012163 sequencing technique Methods 0.000 claims 9
- 238000005755 formation reaction Methods 0.000 description 33
- 230000001427 coherent effect Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000007599 discharging Methods 0.000 description 4
- 230000008676 import Effects 0.000 description 4
- 230000014759 maintenance of location Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000005059 dormancy Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000013011 mating Effects 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
- 230000008520 organization Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000013024 troubleshooting 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 or 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- 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
-
- 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/383—Operand 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)
- Memory System (AREA)
- Advance Control (AREA)
Abstract
在本发明的一个实施例中,一种方法包括生成第一排序向量,该向量与一个操作排序队列中的一个第一输入相对应,而该输入与第一存储器操作相对应,以及避免在完成第一存储器操作之前完成随后的存储器操作。在这种方法中,该操作排序队列,可以是例如一个装入队列或一个存储队列。可以相似地为基于第二操作排序队列中诸输入的第一操作排序队列的一个输入生成一个排序向量。此外,该输入可以包括识别第二操作排序队列中的一个输入的字段。一个归并缓冲器可以耦合到第一操作排序队列并在所有优先写入变为可见时产生一个信号。
Description
技术背景
本发明涉及存储器排序,尤其涉及根据一个存储器排序模型去处理存储器操作。
存储器的处理指令必须根据目标指令集结构(ISA)存储器排序模型来进行操作。可供参考的有Intel公司的两个主要的ISA:Intel结构(IA-32或×86)及Intel的ITANIUM处理器族(IPF),它们具有非常不同的存储器排序模型。在IA-32中,装入(load)及存储操作在程序排序中必须是可见的(visible)。在IPF结构中,它们并不普遍如此,而是编程器会在必要时对其中有些特殊的指令进行强制性排队(例如获得装入(此中称为“获得装入”释放存储(此中称为“释放存储”,存储器栅栏及信号量)。
一种保持存储器操作有秩序的简单但低性能的策略是不允许存储器指令在前一条存储器指令已经取得它的数据(对装入而言)或通过高速缓存相干性协议确认已得到占有权(对存储而言)之前不得访问一存储器体系。
然而,软件应用程序越来越依赖于有序的存储器操作,也就是说,越来越依赖于强制对其它存储器操作及自己进行排序的存储器操作。当单片式多处理器(CMP)执行并行线程时,可在不同软件线程或单个应用程序的多项处理之间的同步与通信中使用有序存储器指令。事务处理与管理实时环境都依赖有序的存储器指令去发挥有效的作用。此外,当一个二进制译码器从一个较强的存储器模型ISA(如×86)向一个较弱的存储器排序模型ISA(如IPF)进行译码时,假定所编译的应用程序依赖于由较强的存储器排序模型所强制的排序。因此,在编译二进制码时,它们必须取代装入及用排序的装入存储,而且以确保程序的正确性的方式进行存储。
随着越来越多使用有序存储器操作,有序存储器操作的性能就变得更为重要。在当前的×86处理器中,处理有序存储器操作中的无序对其性能而言已是关键性的,因为所有的存储器操作都是有序的操作。实施强的存储器排序模型的无序的处理器能按推测执行无序的装入,然后检查以保证在把装入指令提交至机器状态之前没有出现任何破坏顺序的情况。这可以通过追踪装入队列中已执行了但尚未提交的装入地址并监视由其它中央处理器(CPU)或高速缓存相干代理服务器的写入来实现。如果另一CPU将装入队列中的一个装入向同一地址写入,则该CPU能捕捉并再重新进行匹配的装入(和除去随后的所有非提交的装入),然后再执行该装入及所有随后的装入,保证在旧的一个装入前没有更新的符合的装入。
然而正常的CPU在装入指令把它们的数据返回寄存器文件之前就能提交装入指令。在这类CPU中,一旦传送了它们所有的故障检查(例如数据译码缓冲器(DTB)失灵及没对准的访问)以及数据检索之前,就会提交装入。一旦退出装入指令,就不能再执行它们了。因此,当装入根据以上所描述的从其它CPU的监视写入而退出时,就不能再选择捕捉、重取或重新执行装入。
因此,需要改进有序存储器操作的性能,尤其是在使用弱的存储器排序模型的处理器中。
附图的简述
图1是依据本发明一个实施例的部分***的方框图。
图2是根据本发明一个实施例处理一个装入指令的方法的流程图。
图3是根据本发明一个实施例处理一个装入数据的方法的流程图。
图4是根据本发明一个实施例处理一个存储指令的方法的流程图。
图5是根据本发明一个实施例处理一个存储器栅栏的方法的流程图。
图6是依据本发明的一个实施例的***的方框图。
详细说明
参考图1,所示的是依据本发明一个实施例的部分***的方框图。更具体地说,如图1所示,***10可以是一个信息处理***,例如,一台个人计算机(例如,台式计算机,笔记本计算机,服务器计算机,等等)。如图1所示,***10可以包含各种处理器资源,例如,装入队列20,存储队列30及归并(即,写入组合)缓冲器40。在某些实施例中,这些队列和缓冲器可以在***的处理器,例如,中央处理器(CPU)内。例如,在某些实施例中,该CPU可以与IA-32或IPF的结构一样,虽然本发明的范围并不只限于此。在其它实施例中,装入队列20和存储队列30也可以组合成一个单独的缓冲器。
包含这些处理器资源的处理器可以使用这些资源作为在***内执行各种存储器操作的临时存储器。例如,装入队列20可以用来暂时存储特定存储器的操作,例如,装入操作的输入并追踪在给定存储器的操作本身完成之前所必须完成的优先装入或其它存储器的操作。相似地,存储队列30可以用来存储存储器的操作,例如,存储操作,并追踪在给定存储器,操作本身能提交之前所完成的优先的存储器的操作(通常是装入)。在不同的实施例中,归并缓冲器40可以用作一个缓冲器去暂时存储与一个存储器操作相对应的数据,直至存储器操作(例如,一个存储或信号量)完成或提交的时候。
采用弱存储器排队模型(如,IPF处理器)的ISA可以包含需要严格存储器排序的显式指令(例如,获得装入,释放存储,存储栅栏及信号量),而多数的正规装入和存储并不会对严格的存储器排序产生影响。在一个采用强存储器排序模型的ISA(如,IA-32ISA)中,每条装入或存储指令都会遵循严格的存储器排序规则。因此,例如,从IA-32环境编译成IPF环境的程序,就会对强存储器排序产生影响,以便于通过用取得装入来代替所有的装入并用释放存储来代替所有的存储从而确保适当的程序行为。
当依据本发明一个实施例的处理器处理获得装入时,它要确保该获得装入在随后的装入及存储得到处理之前就已经达到全局可见。这样,如果获取装入在第一级的数据高速缓存中失误,则随后的装入就不能更新寄存器文件,即使它们已经进入了数据高速缓存,而随后的存储就一定要测试,只有该获得装入将它的数据送回寄存器文件之后才写入的数据块的占有权。它就不可能有占有权。为了做到这一点,处理器就要强制所有比未完成的获得装入较新的全部装入错过数据高速缓存中而进入到装入队列,即,失误请求队列(MPQ),以确保正常的排序。
当根据本发明一个实施例的处理器处理释放存储时,它要确保所有优先的装入和存储都已达到全局可见。因此,在释放存储能使它的写入全局可见之前,所有优先的装入必须已经把数据送回寄存器文件内,并且全部优先的存储必须通过高速缓存相干协议达到占有权可见。
存储器栅栏操作和信号量操作可具有获得装入和释放存储两种语义的元素。
仍参考图1,示出的装入队列20(也称之为“MRQ 20”)包括MQR输入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)。正如上面所讨论的,该排序向量可包括对应于暂停存储操作(例如,MRQ中未完成的装入,以及存储器栅栏及其它类似的操作)的位。
在菱形430,可以判定排序向量是否已被清零。如果排序向量未被清零,则可执行循环直至排序向量已被清零。当排序向量已成为清了零的,则可以判定该操作是不是一个释放操作(菱形435)。如果它不是,控制可直接转入到方框445,正如下面所讨论的。反之,如果判定是一个释放操作,则要判定所有优先的写入是不是已全部达到可见(菱形440)。例如,在一个实施例中,当与指令相对应的数据已出现在给定的缓冲器或其它存储位置中,则存储是可见的。否则,菱形440可自己循环回去直至所有的优先写入都变成为可见的。当达到了可见,则控制可转入到方框445。
这时,该存储会为写入请求通往它的高速缓存的可见性。尽管图4没有示出,在允许存储请求可见性的时间内,数据可以存储在归并缓冲器内。在一个实施例中,如果所有优先的存储都已达到可见,则可以请求一个归并缓冲器可见性信号。该信号指明正如归并缓冲器所指明的那样,所有优先的存储器操作都已达到全局可见。在一个实施例中,可以采用高速缓存相干协议加以排队以达到这种可见性。这种可见性可以在高速缓存相干协议向存储缓冲器提供一个通知时达到。
在某些实施例中,供释放存储操作所用的高速缓存块可能早已在归并缓冲器(MGB)中存在,一旦释放存储准备好就可得到可见性时就占有。如果在供这些块使用的MGB中存在着合理数量的归并,则MGB就会为释放存储的码流(例如,在所有的存储都是释放存储的编码分段中)维持高性能。
如果该存储已达到可见,则可在归并缓冲器中为存储数据置一个确认位。MGB可包括为每个有效的高速缓存块所设置的确认位,这也称之为占有权或无效位。在该实施例中,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 (30)
1.一种方法,其特征在于,包括:
生成与操作排序队列中的输入相关联的排序向量,该输入与***的操作相对应;以及
避免基于所述排序向量的操作处理。
2.如权利要求1所述方法,其特征在于,所述排序向量包含多个位,各位与操作排序队列中相交取的输入相对应。
3.如权利要求2所述方法,其特征在于,还包括避免基于排序向量中指示未完成的优先操作的位的处理。
4.如权利要求2所述方法,其特征在于,还包括在完成相对应的优先操作时对排序向量的对定位清零。
5.如权利要求1所述方法,其特征在于,所述排序向量包含一个与操作排序队列中的各个输入相关联的排序位。
6.如权利要求5所述方法,其特征在于,还包括对操作排序队列内与获取语义存储器操作相对应的排序位进行置位。
7.如权利要求5所述方法,其特征在于,所述生成的排序向量包含把与优先的未完成的存储器操作相对应的排序位复制到排序向量中。
8.如权利要求1所述方法,其特征在于,还包括强制随后的存储器操作描述数据高速缓存里失灵。
9.如权利要求1所述方法,其特征在于,还包括大小与该操作对应的第一排序位进行置位。
10.如权利要求9所述方法,其特征在于,还包括在所述操作完成时对第一排序位清零。
11.如权利要求9所述方法,其特征在于,还包括生成一个与一个随后操作相对应的第二排序向量,且所述第二排序向量包含第一排序位。
12.一种方法,其特征在于,包括:
生成与第一操作排序队列内的输入相关联的排序向量,所述输入与存储器操作相对应,所述排序向量具有多个位,各位与第二操作排序队列内的输入对应;以及
避免基于所述排序向量的存储器操作处理。
13.如权利要求12所述方法,其特征在于,还包括避免基于排序向量中指示第二操作排序队列内未完成的优先存储器操作位的处理。
14.如权利要求13所述方法,其特征在于,还包括在完成相应的优先存储器操作时对排序向量的对定位清零。
15.如权利要求12所述方法,其特征在于,所述第一操作排序队列包括一个存储队列,以及所述第二操作排序队列包括一个装入队列。
16.如权利要求15所述方法,其特征在于,所述排序向量包含一个与装入队列中各个输入相关联的排序位。
17.如权利要求16所述方法,其特征在于,还包括对与获得语义操作相对应的装入队列中的输入的排序位进行置位。
18.一种包括机器可存取存储媒体的物品,其特征在于,它包含一些指令,如果执行这些指令可以使***:
避免存储器操作在与存储器操作对应的排序向量指出至少有一个优先存储器操作尚未完成时的第一时间发生。
19.如权利要求18所述的物品,其特征在于,还包括一些指令,如果执行这些指令可使***在至少有一个优先的存储器操作得到完成时就更新排序向量。
20.如权利要求18所述的物品,其特征在于,还包括一些指令,如果执行这些指令可使***去强制随后的存储器操作错过高速缓存。
21.如权利要求18所述的物品,其特征在于,还包括一些指令,执行这些指令可使***对存储器操作的排序位进行置位。
22.一种设备,其特征在于,包括:
第一缓冲器,用于存储多项输入,所述各项输入与存储器操作相对应,各项输入中的各项都有与之相关联的排序向量,用于指明与之相对应的存储器操作的相对顺序。
23.如权利要求22所述的设备,其特征在于,还包括第二缓冲器,用于存储多项输入的各项输入,与一个存储器操作相对应,各项输入中的各项都有一个与相关联的排序向量,用于指明与之相对应的存储器操作的相对顺序。
24.如权利要求22所述的设备,其特征在于,还包括,与第一缓冲器相耦合的归并缓冲器,如果优先的存储器操作是可见的就产生一个信号。
25.如权利要求22所述的设备,其特征在于,多项输入中的各项都包括一个排序位,用于指明随后的存储器操作是不是要参照相应的存储器操作进行排序。
26.一种***,其特征在于,包括:
处理器,它具有用于存储多项输入的第一缓冲器,其中各项输入都与存储器操作相对应,多项输入中的各项都有与之相关联的排序向量,用于指明相应的存储器操作的相对顺序;以及
与处理器相耦合的动态随机存取存储器。
27.如权利要求26所述的***,其特征在于,还包括第二缓冲器,用于存储与存储器操作相对应的多项输入,各项输入中的各项都有一个与之相关联的排序向量,用于指明相应的存储器操作的相对顺序。
28.如权利要求26所述的***,其特征在于,还包括与第一缓冲器要耦合的归并缓冲器,如果优先的存储器操作是可见的就产生一个信号。
29.如权利要求26所述的***,其特征在于,所述处理器具有一种用于处理尚未排序的装入指令的指令集结构。
30.如权利要求26所述的***,其特征在于,所述处理器具有一种用于处理尚未排序的存储指令的指令集结构。
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 true CN1728087A (zh) | 2006-02-01 |
CN100388186C 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) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104040502A (zh) * | 2011-11-10 | 2014-09-10 | 萨热姆防务安全公司 | 用于在多核处理器上排序的方法 |
CN104620223A (zh) * | 2012-06-15 | 2015-05-13 | 索夫特机械公司 | 对于基于存储资历实现从不同线程进行转发的线程不可知的加载存储缓冲器 |
CN105320494A (zh) * | 2014-07-09 | 2016-02-10 | 英特尔公司 | 带有一致的和非一致的子***的存储器排序 |
CN105808654A (zh) * | 2016-02-29 | 2016-07-27 | 湖南蚁坊软件有限公司 | 一种针对流数据的二级排序方法 |
US9904552B2 (en) | 2012-06-15 | 2018-02-27 | Intel Corporation | Virtual load store queue having a dynamic dispatch window with a distributed structure |
US9928121B2 (en) | 2012-06-15 | 2018-03-27 | Intel Corporation | Method and system for implementing recovery from speculative forwarding miss-predictions/errors resulting from load store reordering and optimization |
US9965277B2 (en) | 2012-06-15 | 2018-05-08 | Intel Corporation | Virtual load store queue having a dynamic dispatch window with a unified structure |
US9990198B2 (en) | 2012-06-15 | 2018-06-05 | Intel Corporation | Instruction definition to implement load store reordering and optimization |
US10019263B2 (en) | 2012-06-15 | 2018-07-10 | Intel Corporation | Reordered speculative instruction sequences with a disambiguation-free out of order load store queue |
US10048964B2 (en) | 2012-06-15 | 2018-08-14 | Intel Corporation | Disambiguation-free out of order load store queue |
Families Citing this family (24)
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 |
JP4983919B2 (ja) * | 2007-06-20 | 2012-07-25 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
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 |
CN104583939B (zh) * | 2012-06-15 | 2018-02-23 | 英特尔公司 | 用于选择指令的***和方法 |
KR102248470B1 (ko) * | 2012-06-15 | 2021-05-06 | 인텔 코포레이션 | 메모리로부터 순차적으로 판독하는 load들을 구성하는 메모리 일관성 모델에서 비순차 load들을 갖는 세마포어 방법 및 시스템 |
CN104583942B (zh) * | 2012-06-15 | 2018-02-13 | 英特尔公司 | 乱序加载的基于锁的和基于同步的方法 |
US9218289B2 (en) * | 2012-08-06 | 2015-12-22 | Qualcomm Incorporated | Multi-core compute cache coherency with a release consistency memory ordering model |
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 |
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 |
WO2016014866A1 (en) | 2014-07-25 | 2016-01-28 | Soft Machines, Inc. | System for an instruction set agnostic runtime architecture |
US11281481B2 (en) | 2014-07-25 | 2022-03-22 | Intel Corporation | Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture |
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 |
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 |
Family Cites Families (12)
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 |
DE69423206T2 (de) * | 1994-04-28 | 2000-09-07 | Hewlett-Packard Co., Palo Alto | Rechnervorrichtung mit Mitteln zum Erzwingen der Ausführung von Befehlen in regelmässiger Folge |
JP3005456B2 (ja) * | 1995-06-16 | 2000-01-31 | 甲府日本電気株式会社 | ベクトル処理装置 |
JPH09120383A (ja) * | 1995-10-25 | 1997-05-06 | Fujitsu Ltd | データ入出力方法及びそのためのデータ入出力装置 |
US6065105A (en) * | 1997-01-08 | 2000-05-16 | Intel Corporation | Dependency matrix |
US6260131B1 (en) * | 1997-11-18 | 2001-07-10 | Intrinsity, Inc. | Method and apparatus for TLB memory ordering |
US6463522B1 (en) * | 1997-12-16 | 2002-10-08 | Intel Corporation | Memory system for ordering load and store instructions in a processor that performs multithread execution |
US6182210B1 (en) * | 1997-12-16 | 2001-01-30 | Intel Corporation | Processor having multiple program counters and trace buffers outside an execution pipeline |
CN1111297C (zh) * | 1998-07-15 | 2003-06-11 | 北京多思科技工业园股份有限公司 | 指令控制排序方法及其装置 |
US6385708B1 (en) * | 1998-11-16 | 2002-05-07 | Infineon Technologies Ag | Using a timing-look-up-table and page timers to determine the time between two consecutive memory accesses |
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 |
US7149857B2 (en) * | 2002-05-14 | 2006-12-12 | Micron Technology, Inc. | Out of order DRAM sequencer |
-
2004
- 2004-07-30 US US10/903,675 patent/US20060026371A1/en not_active Abandoned
-
2005
- 2005-07-14 DE DE102005032949A patent/DE102005032949A1/de not_active Ceased
- 2005-07-29 JP JP2005221620A patent/JP4388916B2/ja not_active Expired - Fee Related
- 2005-08-01 CN CNB2005100910883A patent/CN100388186C/zh not_active Expired - Fee Related
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104040502B (zh) * | 2011-11-10 | 2017-11-14 | 萨热姆防务安全公司 | 用于在多核处理器上排序的方法 |
CN104040502A (zh) * | 2011-11-10 | 2014-09-10 | 萨热姆防务安全公司 | 用于在多核处理器上排序的方法 |
US9965277B2 (en) | 2012-06-15 | 2018-05-08 | Intel Corporation | Virtual load store queue having a dynamic dispatch window with a unified structure |
US9990198B2 (en) | 2012-06-15 | 2018-06-05 | Intel Corporation | Instruction definition to implement load store reordering and optimization |
US10592300B2 (en) | 2012-06-15 | 2020-03-17 | Intel Corporation | Method and system for implementing recovery from speculative forwarding miss-predictions/errors resulting from load store reordering and optimization |
CN104620223B (zh) * | 2012-06-15 | 2018-11-16 | 英特尔公司 | 对于基于存储资历实现从不同线程进行转发的线程不可知的加载存储缓冲器 |
US9904552B2 (en) | 2012-06-15 | 2018-02-27 | Intel Corporation | Virtual load store queue having a dynamic dispatch window with a distributed structure |
US9928121B2 (en) | 2012-06-15 | 2018-03-27 | Intel Corporation | Method and system for implementing recovery from speculative forwarding miss-predictions/errors resulting from load store reordering and optimization |
CN104620223A (zh) * | 2012-06-15 | 2015-05-13 | 索夫特机械公司 | 对于基于存储资历实现从不同线程进行转发的线程不可知的加载存储缓冲器 |
TWI637320B (zh) * | 2012-06-15 | 2018-10-01 | 英特爾股份有限公司 | 根據儲存資歷實施來自不同執行緒轉送的執行緒不可知之載入儲存緩衝區 |
US10019263B2 (en) | 2012-06-15 | 2018-07-10 | Intel Corporation | Reordered speculative instruction sequences with a disambiguation-free out of order load store queue |
US10048964B2 (en) | 2012-06-15 | 2018-08-14 | Intel Corporation | Disambiguation-free out of order load store queue |
CN105320494B (zh) * | 2014-07-09 | 2018-10-26 | 英特尔公司 | 用于操作处理的方法、***和设备 |
US9875185B2 (en) | 2014-07-09 | 2018-01-23 | Intel Corporation | Memory sequencing with coherent and non-coherent sub-systems |
US10261904B2 (en) | 2014-07-09 | 2019-04-16 | Intel Corporation | Memory sequencing with coherent and non-coherent sub-systems |
CN105320494A (zh) * | 2014-07-09 | 2016-02-10 | 英特尔公司 | 带有一致的和非一致的子***的存储器排序 |
CN105808654A (zh) * | 2016-02-29 | 2016-07-27 | 湖南蚁坊软件有限公司 | 一种针对流数据的二级排序方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2006048696A (ja) | 2006-02-16 |
US20060026371A1 (en) | 2006-02-02 |
CN100388186C (zh) | 2008-05-14 |
JP4388916B2 (ja) | 2009-12-24 |
DE102005032949A1 (de) | 2006-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1728087A (zh) | 用排序向量实施存储器排序模型的方法与设备 | |
CN100576170C (zh) | 连续流程处理器流水线 | |
CN102483704B (zh) | 具有高效的高速缓存支持的事务内存*** | |
CN102016808B (zh) | 将检查点数据存储于非易失性存储器中 | |
CN104598397B (zh) | 使用缓冲存储加速事务的机构 | |
TWI526829B (zh) | 電腦系統、用於存取儲存裝置之方法及電腦可讀儲存媒體 | |
US6085294A (en) | Distributed data dependency stall mechanism | |
CA1200318A (en) | Central processor | |
CN113853593A (zh) | 支持清空写入未命中条目的受害者高速缓存 | |
US20080010417A1 (en) | Read/Write Permission Bit Support for Efficient Hardware to Software Handover | |
CN108351830A (zh) | 用于存储器损坏检测的硬件装置和方法 | |
CN103383672B (zh) | 高速缓存控制以减少事务回滚 | |
CN107102955A (zh) | 用于存储子***的关联和原子回写高速缓冲存储***和方法 | |
CN1425154A (zh) | 高速缓冲存储器线清洗微结构执行方法和*** | |
US9672298B2 (en) | Precise excecution of versioned store instructions | |
US11231930B2 (en) | Methods and systems for fetching data for an accelerator | |
CN113924625B (zh) | 非易失性存储器***中的操作一致性 | |
KR20130018742A (ko) | 가비지 콜렉션을 위한 gpu 서포트 | |
CN1510567A (zh) | 用于使用记录板机制处理加载锁定指令的方法和装置 | |
CN107278296A (zh) | 用于响应于事务执行生成跟踪数据的装置和方法 | |
CN108710582A (zh) | 用于基于局部性的指令处理的选择性启用的***、设备和方法 | |
CN103635877A (zh) | 乱序处理器中的分支目标存储与检索 | |
US11947821B2 (en) | Methods and systems for managing an accelerator's primary storage unit | |
US6105108A (en) | Method and apparatus for releasing victim data buffers of computer systems by comparing a probe counter with a service counter | |
CN107111548A (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 |