CN1334938A - 有多执行实体的系统中的缓冲存储管理 - Google Patents
有多执行实体的系统中的缓冲存储管理 Download PDFInfo
- Publication number
- CN1334938A CN1334938A CN99816091.1A CN99816091A CN1334938A CN 1334938 A CN1334938 A CN 1334938A CN 99816091 A CN99816091 A CN 99816091A CN 1334938 A CN1334938 A CN 1334938A
- Authority
- CN
- China
- Prior art keywords
- cache
- memory
- instruction
- entity
- buffer
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 117
- 238000000034 method Methods 0.000 claims abstract description 24
- 230000008569 process Effects 0.000 claims abstract description 15
- 238000003860 storage Methods 0.000 claims description 29
- 238000012545 processing Methods 0.000 claims description 3
- 239000003550 marker Substances 0.000 claims 1
- 238000013507 mapping Methods 0.000 description 10
- 102100037250 EP300-interacting inhibitor of differentiation 1 Human genes 0.000 description 5
- 102100037245 EP300-interacting inhibitor of differentiation 2 Human genes 0.000 description 5
- 101000881670 Homo sapiens EP300-interacting inhibitor of differentiation 1 Proteins 0.000 description 5
- 101000881675 Homo sapiens EP300-interacting inhibitor of differentiation 2 Proteins 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000003760 hair shine Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000002560 therapeutic procedure Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0848—Partitioned cache, e.g. separate instruction and operand caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
Landscapes
- Engineering & Computer Science (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
一种系统包括多个执行实体(例如任务,进程,线程等)(258,260)和一个有多个区(102,104,106)的高速缓存器存储器(100)。每个执行实体被分配一个标识符。执行实体(258,260)之一的一条指令与相关标识符一起被取回并被解码。与指令相关的信息根据标识符被存储于高速缓存器区(102,104,106)之一。
Description
发明背景
本发明涉及有多个执行实体的系统中的缓冲存储器管理。
一个缓冲存储器可以是被置于一个存储器和另外一个可以访问该存储器的设备之间相对很小,快速的存储器。缓冲存储器的一个例子是位于处理器和(通常是相对较大且慢的)系统存储器之间的高速缓冲存储器(cache),它可以减少处理器从系统存储器得到信息所需要的有效访问时间。在一些系统中,一个多级高速缓存器系统可以被用来进一步提高性能。一个一级高速缓存器(L1高速缓存器)可以在处理器自身当中实现,而一个二级高速缓存器,通常是一个更大点的高速缓存器,则是从外部连接至处理器。
此外,在一些传统的存储系统中,一个高速缓存器存储器可能包含单独的指令和数据高速缓存器单元,一个用来存储指令,另一个用来存储数据。在操作中,处理器可以从系统存储器中取出指令并把它存储到指令高速缓存器单元中。被这些指令处理的数据可以被存储在数据高速缓存器单元中。如果处理器所需的像指令和数据这样的信息已经被存储在高速缓存器存储器中,这时就说一个高速缓存器命中已经发生了。一个高速缓存器存储器命中减少了处理器访问存储在存储器中的信息所需要的时间,这提高了处理器性能。
然而,如果处理器所需信息没有被存储在高速缓存器中,这时就说一个高速缓存器未命中发生了。当一个高速缓存器未命中发生时,处理器不得不访问系统存储器以得到所请求的信息,当处理器等待较慢的系统存储器对请求做出反应时这会导致一个存储器的访问时间性能的降低。为了减少高速缓存器未命中,采用了几种不同的高速缓存器管理策略。几种映射方案中的一种可能被选中,例如,包括一个直接映射方案或者一个组相联高速缓存器映射方案。一个实现了K-路相联映射的组相联高速缓存器存储器,例如2-路相联映射、4-路相联映射等等,通常可以提供比直接映射的高速缓存器存储器更高的命中率。也可以指定几种替换策略之一以提高高速缓存器存储器的命中率,包括先进先出(FIFO)策略和最近最少使用(LRU)策略。高速缓存器存储器另一个可配置的特征是高速缓存器存储器更新策略,它规定了当一个写操作改变了高速缓存器中的内容时系统存储器怎样被更新。更新策略包括写直达(write-through)策略和写回(write-back)策略。
传统上,一个系统,例如一台计算机,可能包含几个应用程序和其他有不同数据流需要的软件层。举例来说,一个程序执行实体,像与一个多媒体应用联系在一起的一个进程、任务或线程,可能传送大块通常不被重用的数据(例如视频数据)。这样,对这些类型的数据的访问会导致高速缓存器被这些很可能不被重用的大块数据填满。
在填充一个高速缓存器存储器时,被一个执行实体所用的数据可能会替换另一个执行实体所用的数据,这种现象被称为数据高速缓存器污染。由一个执行实体的活动引起的数据高速缓存器污染可能会提高另一个执行实体高速缓存器未命中的可能性,这会降低整个系统的性能。
这样需要提供改良性能的存储器体系。
发明概述
总体上,根据一个实施方案,一种系统包括一个处理器和多个在处理器上可执行的执行实体。系统中的缓冲存储器有多个缓冲区(buffer section)。每个缓冲区用于存储与从多个执行实体中对应的一个发出的请求相联系的信息。
其他特征通过下面的描述和权利要求将变得清楚。
附图说明
图1是根据本发明一个实施方案的有多个区的缓冲区或高速缓存器存储器的一部分的方框图。
图2是包括图1中高速缓存器存储器的系统的一个实施方案的方框图。
图3示出图1中的高速缓存器存储器中每个模块的组件。
图4是一个包括了图1中的高速缓存器存储器以及相关控制逻辑的一个处理器的方框图。
图5是一个在图4的处理器中被执行的指令执行顺序流程图。
图6是在图2所示系统中的一个开放系统的流程图,它依照一个实施方案设置了一个高速缓存器存储器。
发明详述
在下面的描述中,描述了大量的细节以提供对本发明的理解。然而,对那些本领域的技术人员来说应该可以理解在没有这些细节的情况下也可以实现本发明并且从所描述的方案而来的大量更改和变体都是可能的。
本发明的一些实施方案包括一个有一缓冲存储器的系统,该缓冲存储器包含几个处于存储器体系中一个层次上的独立的缓冲区。每个缓冲区可以是一个单独的缓冲模块或者是一个缓冲存储器中可以被单独定址的一个部分(也就是说,存储器被分成几个单独的地址空间)。独立的缓冲区可以被单独配置并且可以被分配来存储系统中不同程序执行实体的信息。
在一些实施方案中,缓冲存储器可能包括一个在任何不同应用程序中使用的高速缓存器存储器,例如处理器子系统、外围设备控制器(像视频控制器、硬盘驱动控制器等等)以及其它类型的控制设备。包含这样的高速缓存器存储器的系统可以包括通用或专用计算机,手持电子设备(例如电话、日历系统、电子游戏设备等),装置(appliance),置顶盒以及其它电子系统。有多个高速缓存器区的高速缓存器存储器可以被称为多单元高速缓存器存储器。一个高速缓存器存储器区可以包括一个单独的高速缓存器模块或者是高速缓存器存储器中可以被单独可寻址的一个部分。下面描述的实施例包括一个计算机它有多个带有独立的高速缓存器模块的多单元高速缓存存储器,然而,可以理解的是,进一步的实施方案可以包括带有其他独立配置的高速缓存器节的多单元高速缓存器存储器的计算机或有缓冲存储器的其他类型的系统。
依照这些实施方案,多单元高速缓存器存储器中每个独立的高速缓存器模块的属性可以被单独配置。这些属性包括每个高速缓存器模块的大小,组织方式(例如,直接映射或组相联映射),替换策略,更新策略等等。这样,举例来说,一个高速缓存器模块可以被配置成一个直接映射高速缓存器,而其他高速缓存器模块可以被配置成一个K-路组相联高速缓存器。高速缓存器模块也可以被配置成有不同的更新策略,包括写直达策略和写回策略。对不同的高速缓存器模块来说其他属性也可以被设为不同,如下面所进一步描述的。
一些处理器可以从多执行实体中接收请求以处理。举例来说,一个处理器可能包括一个通用或专用微处理器,一个微控制器或者像应用程序专用集成电路(ASIC)那样的其他类型的控制设备,可编程门阵列(PGA)等。根据一个实施方案的程序执行实体可能是被装入系统中的软件和固件层的基本工作单元。这些基本工作单元可以包括进程、任务、线程或者其他单元,像依照不同系统可定义的那样。例如,在一些操作系统中,像微软公司的特定的Windows操作系统,系统中与进程相关的多线程可以被处理器执行以执行不同的任务。另一提供多线程或多任务功能的操作系统是BE有限公司的Be操作系统(BeOS),如在BE操作系统产品数据表(1998年在http://www.be.com上发布)中所描述的那样。
在这些操作系统中,与不同软件和固件层相联系的多个执行实体在某个时刻可以是活动的。从这些执行实体发出的请求被操作系统按照预先定义的优先级协议进行调度,例如轮转法(round robin)等。这样的操作系统被称为多任务或多线程操作系统。为了利用一个系统的多任务或多线程能力,多单元高速缓存器存储器中独立的高速缓存器模块可以被分配来存储相应执行实体的信息。这样,举例来说,一个多媒体应用中的执行实体可以被分配到一个高速缓存器模块上,而其它应用程序的执行实体可以被分配到多单元高速缓存器存储器中的不同高速缓存器模块上。为此,依照一个实施方案,从每个执行实体发出的请求可以被分配一个不同的执行实体标识符(EID)。这样,从第一个应用的执行实体发出的请求可以被分配一个EID,从另一个执行实体发出的请求可以被分配另一个EID。这样,依照这个实施方案,一个高速缓存器模块可以被配置用于一个已分配的应用程序的通用数据使用行为。
在另一实施方案中,由一个软件或固件层创建的执行实体可以被进一步细分以有多个EID。例如,一个应用程序可以创建按照不同的时间和空间位置特性来处理数据的执行实体。例如,一些执行实体比由相同应用程序创建的其它执行实体更可能重用数据。这样,有利于进一步将这些不同的执行实体单独地分配到多单元高速缓存器存储器中不同的高速缓存器模块。这样,在一个替代实施方案中,从一个应用程序的不同执行实体发出的请求可以被分配超过一个的EID以使不同的高速缓存器模块可以被利用。另外,不同应用程序的执行实体也可以被分配同样的EID。这样,举例来说,一个多媒体应用的第一个执行实体可以被分配EID1,而该应用的第二个执行实体可以被分配EID2。在同一系统中,一个电子制表应用软件的与上述多媒体应用的第二个执行实体有相似数据使用特性的执行实体也可以被分配EID2。
在进一步的实施方案中,可采用其他不同的方案给执行实体的请求分配EID。基于与一条指令相关联的EID,用于高速缓存器存储器的一个高速缓存器控制器可以跟踪多单元高速缓存器存储器中的哪一个存储模块将被用来存储被指令访问的数据。由于单独的高速缓存器模块可以被配置来利用系统中不同执行实体的数据使用特性,因此,可能提高高速缓存器利用率。例如,一个多媒体应用通常可能生成传送大块不被重用数据的请求。被分配给这些类型请求的一个高速缓存器模块可以被配置来实现FIFO替换策略和写直达更新策略。被分配给其它类型请求的高速缓存器模块可能有不同的配置。
因为执行实体在系统中被创建,EID标识符可以被操作系统分配给这些执行实体。参见图6,依照一个实施方案,如果一个新的执行实体被检测到(502),操作系统可以访问(504)在操作系统初始化时被装载的配置信息以决定EID标识符怎样被分配。操作系统随后给执行实体分配(506)适当的EID。例如,操作系统可以分配三个EID对应于一个多单元高速缓存器存储器中的三个高速缓存器模块。有第一个通用数据使用特性的执行实体可以被分配第一个EID标识符,有第二个通用数据使用特性的执行实体可以被分配第二个EID标识符。一个缺省的EID标识符可以被分配给那些没有被特地分给另外两个标识符之一的执行实体。
另外,基于配置信息,操作系统也分配(508)多单元高速缓存器存储器中每一个高速缓存器模块的属性。这些属性可能包括更新,替换和放置策略。操作系统也可以为多单元高速缓存器存储器中的缺省高速缓存器模块分配属性。在替代实施方案中,EID标识符和高速缓存器属性可以被一个独立于操作系统的软件层按照上面所描述的进行分配。
在一个例子中,一个传送大量通常不被重用数据的多媒体应用程序的执行实体可以被分配一个EID标识符以使这些数据被存储在第一个高速缓存器模块中,该模块被按照这些执行实体的高速缓存器数据使用特性而配置。算术运算密集的执行实体,像压缩应用,可以被分配另一个EID标识符以使数据被存储在另一个高速缓存器模块中,该模块按照增加空间位置特征的高速缓存器数据操作来配置。
在一些实施方案中,一个有多个高速缓存器模块的多单元高速缓存器存储器可以被实现在一个有多个级别高速缓存器(例如L1高速缓存器和L2高速缓存器)的多级高速缓存器存储器中。这样一个高速缓存器存储器可以被称为多级、多单元高速缓存器存储器,其中至少有一级包括一个多单元高速缓存器存储器。这样,举例来说,一个有两级的多级、多单元高速缓存器存储器可以下列方式构造:第一级是一个多单元高速缓存器,第二级是一个传统高速缓存器;第一级是一个多单元高速缓存器且第二级也是一个多单元高速缓存器;或者第一级是一个传统高速缓存器但第二级是一个多单元高速缓存器。
一个多单元高速缓存器中的独立高速缓存器模块可以被归类为P-高速缓存器。这样,举例来说,一个多单元高速缓存器存储器可以包括几种P-高速缓存器,包括P0-高速缓存器,P1-高速缓存器,P2-高速缓存器等等。不同的P-高速缓存器可以被实现成单独的存储部件或模块,例如,多个静态随机访问存储(SRAM)或者多个动态随机访问存储(DRAM)设备。或者,多个P-高速缓存器可以在一个存储设备中实现,它相应于不同的P-高速缓存器被细分为单独的节。另外,多单元高速缓存器存储器可以被集成在另外一个设备中,例如,处理器或者系统中的其它控制设备。或者,多单元高速缓存器存储器也可以是可被控制设备访问以获取缓存数据的单独的单元。在进一步的实施方案中,多单元高速缓存器存储器的一部分可能被放置在一个集成设备中而另一部分被放置在另一设备中。
在本发明的一些实施方案中,多单元高速缓存器系统中每一个单独的P-高速缓存器模块可以有不同的属性,包括高速缓存器大小、组织方式和高速缓存器更新、放置以及替换策略。放置策略可以被规定为对每个P-高速缓存器来决定信息怎样被放进高速缓存器中没被占用的部分。高速缓存器替换策略被规定为管理每个P-高速缓存器中所存储信息的替换。替换策略的范例包括先进先出策略(FIFO),最近最少使用策略(LRU)或者其他类型的替换策略。高速缓存器更新策略管理当写操作对高速缓存器发生时信息将怎样被更新,包括写直达和写回策略。
参照图1,依照实施方案的多单元高速缓存器存储器100包括几个P-高速缓存器,示为一个P0-高速缓存器102,一个P1-高速缓存器104和一个P2-高速缓存器106。一个高速缓存器控制器108和P0-高速缓存器102,P1-高速缓存器104,P2-高速缓存器106联系在一起。在一个实施方案中,单独的地址和数据总线被连结到高速缓存器模块102,104,106中的每一个以使这些高速缓存器模块可以被同时访问。或者,一个通用地址和数据总线可以被连结到高速缓存器模块上。高速缓存器控制器108给P-高速缓存器102-106中的每一个提供控制信号。
高速缓存器控制器108包括存储部件118,它是寄存器或类似的形式,可以被操作系统编程以规定与每个P-高速缓存器相关联的EID标识符。当多单元高速缓存器存储器100被访问时,高速缓存器控制器108根据由访问请求提供的EID与存储在存储部件118中的EID值的比较来选择一个P-高速缓存器。
高速缓存器控制器108也包括一个替换和更新控制模块120以按照存储部件118中编制好的控制信息所定义的来控制三个单独的高速缓存器模块的替换和更新策略。例如,存储元件118可以被编程从而为一个P-高速缓存器指示一个FIFO替换策略并为另一个P-高速缓存器指示一个LRU替换策略。
高速缓存器控制器108也包括一个标志比较模块122从而对一个传入请求的标志与被选中的一个或多个P-高速缓存器的标志进行比较以确定是否已经发生一个高速缓存器命中。更进一步,如果需要主存储器储器206(图2)的更新,一个写回缓冲器124存储一个P-高速缓存器的高速缓存器行以传送给主存储器206或一个L2高速缓存器204(图2)。
为了确认高速缓存器数据完整性,高速缓存器控制器108也包括一个高速缓存器一致性模块126,它确定一个高速缓存器模块的一个已被访问的位置是否有效。在一个实施方案中,每一个高速缓存器模块可以存储一个有效/无效位。或者,一个更优化的一致性协议可以被实现,像已修改,专用,共享和无效协议(MESI)。
其他可能被提供给高速缓存器控制器的控制信号包括一个高速缓存器禁止信号和一个高速缓存器冲洗(flush)信号。另外,其他高速缓存器相关信号像监听(snoop)信号也可以提供给高速缓存器控制器108。
参照图2,多单元高速缓存器系统100可以在系统10中一些不同的位置(例如,处理器子系统,桥控制器,外转设备控制器,存储设备控制器等)实现。在一个实施方案中,系统10包括一台计算机,虽然在替代方案中系统10可以是其他任一种高速缓存器或缓冲存储器可以在其中实现的电子设备。
系统10包括一个中央处理单元(CPU)200,它可能包括一个处理器或者其它适合的控制设备,有一级或多级高速缓存器存储器。例如,像图中所示,CPU200可以包括一个内部高速缓存器,一个一级(L1)高速缓存器202。另外,CPU200可以通过一个主机总线被连接到并访问一个外部高速缓存器,即一个二级(L2)高速缓存器204。L1高速缓存器202可以包括一个代码部件(为了存储指令)和一个数据部件(以存储数据)。同样地,L2高速缓存器也可以包括代码和数据部件。这样,从主存储器206中取出的指令和数据被分别存储在L1高速缓存器202或者L2高速缓存器204的代码和数据部件中。在其它实施方案中未实现单独的代码和数据高速缓存器部件。
在一些实施方案中,多单元高速缓存器存储器100(图1)可以在L1高速缓存器202,L2高速缓存器204或者这两者之中实现。为了讨论的目的,假定图1中的多单元高速缓存器存储器在CPU200的内部高速缓存器L1高速缓存器202中实现。然而可以理解的是已描述的多单元高速缓存器存储器或这样一个高速缓存器存储器的改进形式也可以在L2高速缓存器204或系统中的其他控制器之中实现,像视频控制器或磁盘控制器。另外,在这个实施方案中,多单元高速缓存器存储器100构成了L1高速缓存器202的数据高速缓存器部件。
主存储器206由存储器集线器208中的一个存储控制器207来控制,该集线器通过一个主机总线203被连接到CPU200上。另外,存储器集线器可以包括一个被有效连接到L2高速缓存器204上的高速缓存器控制器205。存储器集线器也包括一个图形接口211,它通过链路209被连接到图形控制器210上它再与显示器212相连。例如,一个图形界面可以对应于加速图形端口(A.G.P)接口标准,修订本2.0在1998年5月被发布。
存储器集线器208也可以被连接到输入/输出(I/O)集线器214,它包括分别被连接到系统总线216和一个二级总线224的桥控制器215和223。例如,系统总线可以是一个外围设备互连(PCI)总线,像PCI本地总线标准定义的那样,产品版本,修订本2.1在1995年七月被发布。系统总线216可以被连接到一个控制对一个或多个海量存储器(包括硬盘驱动器、密致盘(CD)驱动器或数字视频光盘(DVD)驱动器)访问的存储控制器218上。在一个替代实施方案中,存储控制器218可以像其它控制功能那样被集成在I/O集线器中214中。系统总线216也可以被连接到其它部件上,例如包括一个被连接到一个网络端口上(没有显示出来)的网络控制器222。
在二级总线224上,附加设备226可以像存储加电例程的非易失型存储器228那样被连接,如基本输入输出系统(BIOS)例程。二级总线224也可以包括连接到外围设备的接口。虽然这种描述参考了系统10中不同层的特殊配置和结构,可以预期所描述的实施方案的大量更改和变化也是可能的。例如,取代存储器和I/O集线器,主机桥控制器和一个系统桥控制器也可以提供等价的功能,用连接在CPU200和系统总线216之间的主机桥控制器和连接在系统总线216和二级总线224之间的系统桥控制器224。另外,可采用多种总线协议中的任一种。
多种不同程序执行实体可在系统10中由CPU200执行。如图所示,对应于一个实施方案,多个进程252,254和256在操作系统下被装载,操作系统可以是Windows操作系统。每个进程可以产生一个或多个执行实体,它们构成系统中的基本工作单元。在一个例子中,执行实体可以是线程;如图2所示,进程252可以包括线程258和260,进程254可以包括一个线程262,进程256可以包括线程264和266。
多种软件或固件(例如以模块,程序或其它层的形式),包括应用程序、操作系统模块或程序、设备驱动程序、BIOS模块或例程以及中断处理器可以被存储或在系统中的一个或多个存储介质中实施。适合实施软件和固件指令的存储介质可以包括不同形式的存储形式包括如动态或静态随机存储器这样的半导体存储器,可擦可编程的只读存储器(EPROM),电可擦可编程只读存储器(EEPROM)和闪存储器;磁盘如固定磁盘、软盘和可移动磁盘;其他磁介质包括磁带;以及光介质如CD或DVD盘。当存储在这些介质中的指令被执行时引起系统10执行编制好的动作。
软件和固件可以以多种不同方式中的一种被装入系统10。例如,存储在存储介质上或者通过网络接口卡、调制解调器或其它接口机制传送过来的指令或其他代码段可以被装入系统10并被执行以执行编制好的动作。在装入或传送过程中,实施为载波的数据信号可以向系统10传递指令或代码段(通过电话线,网线,无线链路,电缆或类似设备传送)。
执行实体(在此是线程)适于执行不同的操作。例如,一个电子表格进程可以创建第一个线程以执行用户输入的计算,创建第二个线程把计算完的数据传送主存储器206。每个线程或执行实体能够产生请求,它被作为指令存储在主存储器206中。这些指令被CPU200从主存储器206取回以执行。
依照一些实施方案,一个执行实体标识符(EID)可以被分配给每一个在系统10中运行的执行实体。每个执行实体的EID可以由操作系统分配。在一个实施方案中,当一个调度器270调度从执行实体发出的请求以由CPU200进行处理时,与每个执行实体相关联的EID与一个或多个相应的指令一起被存储。在这个实施方案中,CPU200取出指令与相关EID。
在一个替代方案中,EID不与指令一起被存储在存储器206。取而代之,多个指令存储区域可以在存储器206中被定义以符合不同的EID。与来自有第一个EID的执行实体的请求相关联的指令可以存储在第一个指令存储区域。与来自有第二个EID的执行实体的请求相联系的指令可以被存储在第二个指令存储区域;等等。在这个替代方案中,CPU200从存储器206中取得指令而没有相关的EID。然而,根据指令在哪一个指令存储器区中被取出,CPU200可以确定指令的EID。
然而在更进一步的实施方案中,其中EID同样不与指令一起被存储,CPU200可以包括被分配给不同线程的多个微定序器。这样,一个微定序器可以得到与一个线程相关联的指令,另一个微定序器可以得到与另一个线程相关联的指令,等等。每个微定序器可以被配置以知道相应执行实体的指令的位置。在这个实施方案中,一个指令的EID可以根据哪个微定序器取出了这个指令来被确定。已确定的指令这时被存储在CPU中。
获得的或确定的EID被高速缓存器控制器108或者其它一些合适的解码器解码以在指令请求一个数据访问时标识哪一个P-高速缓存器将被使用。高速缓存器控制器108访问P-高速缓存器中的一个以取出或存储被相应指令处理的数据。用图1中的配置例子,与有EID0的指令相关联的数据可以被存储在P0-高速缓存器102中,与有EID1的指令相关联的数据可以被存储在P1-高速缓存器104中,与有EID2的指令相关联的数据可以被存储在P2-高速缓存器106中。在一些实施方案中,一个P-高速缓存器可以与超过一个的EID相关联。更进一步,来自不同的应用和软件层的执行实体可以被分配相同的EID。
参照图3,示出了P-高速缓存器之一的通用结构。在图3所示的例子中,示出了一个4-路组相联高速缓存器。其它配置也是可能的,包括直接映射高速缓存器或其它K-路组相联高速缓存器。每一个P-高速缓存器可以包括一个状态阵列160,一个标志阵列162和一个数据阵列164。像图示那样,状态阵列160,标志阵列162和数据阵列164中的每一个因为被分成4个不同的区用于4-路组相联的组织方式。
状态阵列160包含下列域中的一个或多个:一个EID标识符;被替换和更新模块所用于替换一个高速缓存器行的替换选择位(RPS);高速缓存器一致性协议位。例如,P-高速缓存器模块的每一块可以与一个有效/无效位相关联以指示相应高速缓存器位置是有效或无效。或者,状态阵列160可以存储MESI位。替换选择位RPS可以被用来指示哪个高速缓存器行将被替换。RPS位可以被用来跟踪最近最少使用的高速缓存器行(用于LRU替换)或最先进入的高速缓存器行(用于FIFO替换)。
高速缓存器控制器108可以实现成一个集成单元或几个单独的控制单元。像讨论过的那样,当一个指令被取出以执行时,与之相关联的EID也被取向。基于这个EID值,P-高速缓存器中适当的一个被选取以从中取出数据或向其写入数据。根据是否有相关数据的一个有效拷贝被存储在所选中的P-高速缓存器模块中,可以返回一个命中或未命中信息。
一个依照一些实施方案有可独立配置高速缓存器模块的多单元高速缓存器系统可能有下面的优势中的一个或多个。由于每个P-高速缓存器模块的放置、替换和更新策略以及高速缓存器大小和组织方式可被设置来为相应的执行实体提高高速缓存器利用率,可以得到更高的高速缓存器管理灵活性。高速缓存器性能可以通过配置高速缓存器模块以利用不同执行实体的不同高速缓存器使用特征(来存储数据或指令)而被提高。由系统10中不同的活动执行实体引起的数据高速缓存器污染可以被减少,这可以提高高速缓存器命中率。另外,既然P-高速缓存器模块可以被同时访问,多单元高速缓存器系统可以通过为一个多线程或多任务处理器提高并行性来提供高访问带宽。这样的并发数据高速缓存器访问有助于减小数据高速缓存器延迟以帮助满足高性能处理器要求的数据访问带宽。
在其它实施方案中,针对不同应用程序的编译器可以动态地重新配置多单元高速缓存器存储器的属性以进一步增强高速缓存器性能。举例来说,在操作中,与不同执行实体相关联的静态信息可以被收集并存储。根据收集到的静态信息,每一个P-高速缓存器模块的属性可以被改变。例如,如果一个FIFO替换策略被确认为对一个特定的P-高速缓存器模块来说不够高效,高速缓存器控制器108可以被通知去改变这个替换策略为LRU或其它的替换策略。这个替代实施方案可以提供为适应系统10中的执行实体怎样在执行而动态改变单个P-高速缓存器模块的配置的灵活性。
参照图4,在一个实施方案中,CPU200包括多单元L1高速缓存器存储器202和相关的逻辑。多单元L1高速缓存器存储器包括三个数据高速缓存器模块:P0-高速缓存器102,P1-高速缓存器104和P2-高速缓存器106。P0-高速缓存器102可以被指定为缺省的数据高速缓存器,它被用于存储与那些没有被明确分配给L1高速缓存器中其它高速缓存器模块之一的执行实体相关联的数据。例如,这些执行实体可以由操作系统分配一个缺省的EID0。P1-和P2-高速缓存器被分配来分别为从有EID1和2的执行实体发出的请求存储数据。在一个实施方案中,由于是缺省高速缓存器,P0-高速缓存器可以是一个比P1-或P2-高速缓存器更大的高速缓存器。
依照一个配置例子的CPU200的其它部件被显示在图4中。一个总线前部单元(BFU)404构成了到前端或主机总线的接口。BFU404可以包括地址驱动器和接收器,写缓冲区,数据总线收发器,总线控制逻辑,总线主控制以及奇偶生成和控制。
下面首先描述指令路径。由BFU404从主存储器206或L2高速缓存器204取得的指令可以存储在一个指令高速缓存器406中,它是L1高速缓存器202的一部分。内部指令高速缓存器可以保持最近最频繁使用指令的拷贝。依照一些实施方案,从主存储器206或L2高速缓存器204中与EID一起被取出的指令被存储在指令高速缓存器406中。一个指令缓冲器和解码逻辑408中解析一条从指令高速缓存器406选中的指令及相关EID并产生一个或多个微操作以及相应的EID。
在一个替代实施方案中,指令依照不同的EID被存储在存储器206的不同存储区域。然而在这个实施方案中,EID并不和指令一起被存储。当CPU200取出一条指令时,相应的EID并不被取出。代之以由CPU200根据指令存储的地址位置来确定所取出指令的EID。例如这可以由解码逻辑408执行。这样一条指令的EID由它从哪个指令存储区域被取出来决定。一旦指令的EID被CPU200确定,它可以被附在已解码的微操作上并且被存储在指令队列412中。
然而在一个更进一步的实施方案中,其中EID并不与指令一起存储在存储器中,多个指令计数器和微定序器可以包含在CPU200中,它们被分配给相应的线程。这种实施方案在下面将被进一步阐述。
指令缓冲区和解码逻辑408的输出端口可以被连接到一个指令队列412上,它存储了微操作和相关的EID。指令队列412的输出端口被发送到一个定序器414。定序器414可以包括多个对应于不同EID的微定序器单元430,432和434。例如,微定序器430可以被配置以处理与EID0相关联的微操作,微定序器432可以被配置以处理与EID1相关联的微操作,微定序器434可以被配置以处理与EID2相关联的微操作。由微定序器430,432和434处理的微操作是从指令队列412接收的。依照一个实施方案,微定序器430,432和434可以同时操作以处理与不同EID相关联的微操作。微定序器430,432和434的操作由定序器414中的一个控制逻辑436来控制。
在一个实施方案中,与微操作相关联的EID最初是与不同执行实体的指令一起从存储器中获得的。在一个更进一步的实施方案中,其中EID并不与指令一起被存储,每个微定序器可以被独立配置以取出与相应执行实体相关联的指令。这样,第一个微定序器取出与第一个执行实体相关联的指令,第二个微定序器取出与第二个执行实体相关联的指令,等等。这样一条被取出的指令的EID可以根据是哪个微定序器取出了它来确定。
一个执行实体一般包括多个按一些程序顺序执行的指令。缺省情况下,指令地址被简单地增加以取出下一条指令。如果一个无条件转移或其它条件转移发生了,目标地址就被指定为下一条指令的地址。这样下一条指令所在存储器位置的地址就知道了。一个程序计数器可以被用来追踪指令的程序顺序。一个微定序器与一个程序计数器结合在一起工作以执行指令。为了取回指令,微定序器可以让(例如位于BFU404中的)取回单元取回与程序计数器中存储的地址相关的一条指令。这样,既然微定序器已经知道(从程序计数器)下一条指令的地址,取出的指令可以被标识为属于一个执行实体。
举例来说,假定一个有几个线程的系统,可以使用两个或多个独立的程序计数器。例如,三个程序计数器PC0,PC1和PC2可以分别与三个微定序器430,432和434相关联。操作系统可以装入程序计数器PC0,PC1和PC2的初始状态以使这些程序计数器可以取得与不同线程相关联的指令。PC0与微定序器430的结合跟踪第一个线程的程序顺序,PC1与第二个微定序器的结合跟踪第二个线程的程序顺序,等等。当一个由PC0指向的指令被取出时,CPU200知道它属于有EID,例如0,的第一个线程。于是这个EID被附到CPU200中的指令上,随后被附到由定序器414中的微定序器430,432和434产生的存储在指令队列412中以执行的微操作上。
如图4所示,定序器414的输出端口被提供给一个流水线后端模块415,它包括多个功能模块,如提前分支执行单元416,快速解码器418,算术/逻辑单元420和一个地址生成器单元422。在由定序器414对一个或多个微操作的执行中,这些功能单元可以被访问以执行所请求的操作。
流水线后端模块415也包括寄存器文件424,426和428。CPU200中的寄存器文件424,426和428对应于三个EID群EID0,EID1和EID2。寄存器文件424,426和428每个也包括控制寄存器,状态寄存器,标记寄存器和通用寄存器。寄存器文件424,426和428在操作中由流水线后端模块415中的功能单元来进行更新。依照一个实施方案,寄存器文件424,426和428也可以被独立和同时访问。
在所阐述的实施方案中,假如请求之间没有从属性并且多个请求不需要使用相同的功能单元416,418,420和422,那么与不同EIDs相关联的请求可以被同时处理。在微定序器430,432和434的当前操作中,寄存器文件424,426和428以及多单元高速缓存器存储器中的高速缓存器模块可以被同时访问和更新。
在CPU200的数据路径中,一个存储缓冲器450(对写操作)和一个载入缓冲器452(对读操作)分别存储那些从BFU404取得的数据和以BFU404为目标的数据。存储和载入缓冲器450和452被连接到一个内部数据总线上,该内部数据总线被连接到几个单元上,包括P0-高速缓存器102,P1-高速缓存器104,P2-高速缓存器106,流水线后端模块415和一个地址转换后备缓冲器(TLB)456。
指令高速缓存器406中的指令的地址被送到TLB456,它基本上是CPU200中的一个高速存储器来把从指令高速缓存器406来的虚拟地址转换成物理地址以访问数据高速缓存器模块102,104和106。
基于多单元数据高速缓存器的可用性,微代码定序器414中的控制逻辑436可以通过微定序器430,432和434中的一个来为处理选择一个适当的指令。如果需要数据访问,微定序器430,432和434可以同时访问多单元数据高速缓存器中的几个高速缓存器模块。
这样,为了提高系统性能,依靠同时访问L1多单元高速缓存器中的数据,多个指令可以在CPU200中执行。
在一些实施方案中,定序器414的控制逻辑436也可以考虑可能载入/存储排序,未完成的数据高速缓存器重装以及其它问题。例如,在一个实施方案中,与一个被确定为有高命中率的请求相关联的指令可以被首先调度,一个有高优先级受实时限制的执行实体的指令也可以这样。
参照图5,示出了依照一个实施方案的指令执行顺序的通用流程。指令由CPU通过主机总线203从主存储器206或L2高速缓存器中取得(302)。在一个实施方案中,相关EID与指令一起被取回。在另一实施方案中,相关EID并未被存储也就不能被取回。取回的指令随即被解码段408翻译成内部微操作(304),并将一个相应的EID附到每一个微操作上。该EID可以是与指令一起被取回的或是由CPU200根据指令的地址位置或根据哪一个微定序器取回了这条指令来确定的。接着,翻译出的微操作被存储在指令队列412中(306)。微操作随即被传送到微定序器430,432,434中的一个以执行(308)。微操作的执行可以引起一个数据高速缓存器访问请求被产生(310),这种情况下根据所附的EIDP-高速缓存器模块中相应的一个被访问。这个EID被高速缓存器控制器108解码且一个适当的请求被送到一个相应的P-高速缓存器(102,104或106)。之后数据访问请求就在所分配的P-高速缓存器中完成(312)。
当所描述的实施方案包括一个多单元高速缓存器存储器来存储数据时,可以预期在进一步的实施方案中多单元高速缓存器存储器可以被修改以存储不同执行实体的指令。在这样的实施方案中,存储在多单元高速缓存器存储器中的信息包括指令自身。
虽然本发明相对于几种有限的实施方案被公开,但本领域的技术人员应理解从其中所做的大量更改和变化。意味着所附权利要求覆盖了所有属于本发明真实精神和范围的更改和变化。
Claims (20)
1.一种系统包括:
一个处理器;
在处理器上可执行的多个执行实体;
以及一个有多个缓冲区的缓冲存储器,每个缓冲区用于存储与来自多个缓冲区中相应的一个的请求相关联的信息。
2.权利要求1的系统,进一步包括一个用于给执行实体分配标识符和给每个缓冲区分配一个标识符的软件层。
3.权利要求2的系统,进一步包括一个被可操作连接到缓冲存储器的控制器从而根据与来自一个执行实体的请求相关联的标识,选择一个缓冲区
4.权利要求1的系统,其中执行实体包括进程。
5.权利要求1的系统,其中执行实体包括线程。
6.权利要求1的系统,其中缓冲存储器包括一个有多个高速缓存器节的高速缓存器存储器。
7.权利要求6的系统,其中高速缓存器节被配置以有不同的属性。
8.权利要求7的系统,其中属性包括高速缓存器行替换策略。
9.权利要求7的系统,其中属性包括高速缓存器更新策略。
10.权利要求7的系统,其中属性包括高速缓存器组织方式。
11.权利要求6的系统,其中高速缓存器存储器包括一个多级高速缓存器存储器,其中至少有一级包括一个有多个高速缓存器节的多单元高速缓存器存储器。
12.权利要求1的系统,其中执行实体依照不同的时间和空间位置特征处理数据,且每一个缓冲区根据时间和空间位置特征进行配置。
13.一种在有多个执行实体的系统中使用的高速缓存器存储器,包括:
一个高速缓存器控制器;和
多个缓冲区,高速缓存器控制器用于根据信息与哪个执行实体相关联,将信息存储于高速缓存器节中的一个。
14.权利要求13的高速缓存器存储器,其中高速缓存器控制器包括带标识符的可编程存储部件以标识与每个高速缓存器节相关联的一个或多个执行实体。
15.一种设置有多个高速缓存区的高速缓存器存储器的方法,高速缓存器存储器位于一个有多个执行实体的系统中,方法包括:
根据哪一个高速缓存器节将为执行实体所用而为每个执行实体分配一个标识符;和
根据分配给该高速缓存器节的一个或多个执行实体的高速缓存器使用特征,配置每一个高速缓存器节。
16.权利要求15的方法,其中配置包括设置每个高速缓存器节的属性。
17.权利要求16的方法,其中属性设置包括为每一个高速缓存器节设置一个替换策略。
18.权利要求16的方法,其中属性设置包括为每一个高速缓存器节设置一个更新策略。
19.一种在带有多个产生指令的执行实体的系统中的存储器子系统,包括:
一个控制器;和
一个有多个缓冲区的多单元缓冲存储器,
控制器用于根据哪一个执行实体产生了该指令来选择一个缓冲区以存储与指令相关联的信息。
20.权利要求19的存储器子系统,其中控制器包括对应于每一个缓冲区的存储部件,它们对标识执行实体的值是可编程的。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/207,278 | 1998-12-08 | ||
US09/207,278 US6349363B2 (en) | 1998-12-08 | 1998-12-08 | Multi-section cache with different attributes for each section |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1334938A true CN1334938A (zh) | 2002-02-06 |
CN1179276C CN1179276C (zh) | 2004-12-08 |
Family
ID=22769873
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB998160911A Expired - Fee Related CN1179276C (zh) | 1998-12-08 | 1999-09-22 | 配置不同的高速缓存分区以具有不同属性的系统和方法 |
Country Status (7)
Country | Link |
---|---|
US (2) | US6349363B2 (zh) |
CN (1) | CN1179276C (zh) |
AU (1) | AU6497199A (zh) |
DE (1) | DE19983793B4 (zh) |
GB (1) | GB2359163B (zh) |
HK (1) | HK1036662A1 (zh) |
WO (1) | WO2000034870A1 (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100465922C (zh) * | 2003-12-31 | 2009-03-04 | 英特尔公司 | 高速缓冲存储器、处理器、系统、及高速缓冲分配方法 |
CN1777875B (zh) * | 2003-02-24 | 2010-04-28 | Nxp股份有限公司 | 指令高速缓存管理的方法、高速缓冲存储器以及集成电路 |
CN101515295B (zh) * | 2009-03-23 | 2010-12-01 | 浙江大学 | 片上硬件数据库的高速缓冲器支持实现方法 |
CN101911013A (zh) * | 2008-01-11 | 2010-12-08 | 国际商业机器公司 | 提取高速缓存属性工具及其指令 |
CN101095112B (zh) * | 2004-12-30 | 2011-05-25 | 英特尔公司 | 仿真os隔离定序器上的用户级多线程处理的机制 |
CN101903847B (zh) * | 2007-12-21 | 2012-10-03 | 索尼公司 | 用于远程控制的触敏无线导航设备 |
CN102906715A (zh) * | 2010-05-17 | 2013-01-30 | 汤姆森特许公司 | 优化缓存存储器管理的方法和对应装置 |
CN104424119A (zh) * | 2013-08-26 | 2015-03-18 | 联想(北京)有限公司 | 存储空间配置方法和装置 |
CN106649139A (zh) * | 2016-12-29 | 2017-05-10 | 北京奇虎科技有限公司 | 一种基于多个缓存的数据淘汰方法及装置 |
Families Citing this family (139)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3133004B2 (ja) * | 1996-11-21 | 2001-02-05 | 株式会社日立製作所 | ディスクアレイ装置およびその制御方法 |
JP2000010860A (ja) * | 1998-06-16 | 2000-01-14 | Hitachi Ltd | キャッシュメモリ制御回路及びプロセッサ及びプロセッサシステム及び並列プロセッサシステム |
US6378066B1 (en) * | 1999-02-04 | 2002-04-23 | Sun Microsystems, Inc. | Method, apparatus, and article of manufacture for developing and executing data flow programs, and optimizing user input specifications |
EP1098249A1 (en) * | 1999-11-05 | 2001-05-09 | Emc Corporation | Segmenting cache to provide varying service levels |
US6457102B1 (en) * | 1999-11-05 | 2002-09-24 | Emc Corporation | Cache using multiple LRU's |
US6760743B1 (en) * | 2000-01-04 | 2004-07-06 | International Business Machines Corporation | Instruction memory system for multi-processor environment and disjoint tasks |
US6832378B1 (en) * | 2000-06-20 | 2004-12-14 | International Business Machines Corporation | Parallel software processing system |
US6791555B1 (en) * | 2000-06-23 | 2004-09-14 | Micron Technology, Inc. | Apparatus and method for distributed memory control in a graphics processing system |
US6889291B1 (en) * | 2000-06-30 | 2005-05-03 | Intel Corporation | Method and apparatus for cache replacement for a multiple variable-way associative cache |
AU2001286410A1 (en) * | 2000-07-31 | 2002-02-13 | Morphics Technology, Inc. | Method and apparatus for time-sliced and multi-threaded data processing in a communication system |
EP1215583A1 (en) * | 2000-12-15 | 2002-06-19 | Texas Instruments Incorporated | Cache with tag entries having additional qualifier fields |
ATE548695T1 (de) | 2000-08-21 | 2012-03-15 | Texas Instruments France | Softwaregesteuerte cache-speicherkonfiguration |
US6684298B1 (en) * | 2000-11-09 | 2004-01-27 | University Of Rochester | Dynamic reconfigurable memory hierarchy |
US7937655B2 (en) | 2000-12-22 | 2011-05-03 | Oracle International Corporation | Workflows with associated processes |
US8015600B2 (en) | 2000-12-22 | 2011-09-06 | Oracle International Corporation | Employing electronic certificate workflows |
US7802174B2 (en) | 2000-12-22 | 2010-09-21 | Oracle International Corporation | Domain based workflows |
US7085834B2 (en) | 2000-12-22 | 2006-08-01 | Oracle International Corporation | Determining a user's groups |
US7711818B2 (en) | 2000-12-22 | 2010-05-04 | Oracle International Corporation | Support for multiple data stores |
US6675261B2 (en) * | 2000-12-22 | 2004-01-06 | Oblix, Inc. | Request based caching of data store data |
US6684297B2 (en) * | 2001-04-11 | 2004-01-27 | Sun Microsystems, Inc. | Reverse directory for facilitating accesses involving a lower-level cache |
US6701417B2 (en) * | 2001-04-11 | 2004-03-02 | Sun Microsystems, Inc. | Method and apparatus for supporting multiple cache line invalidations per cycle |
US6883066B2 (en) * | 2001-09-14 | 2005-04-19 | Seagate Technology Llc | Method and system for cache management algorithm selection |
US6965970B2 (en) * | 2001-09-27 | 2005-11-15 | Intel Corporation | List based method and apparatus for selective and rapid cache flushes |
US7225256B2 (en) | 2001-11-30 | 2007-05-29 | Oracle International Corporation | Impersonation in an access system |
US6772276B2 (en) * | 2002-01-04 | 2004-08-03 | Intel Corporation | Flash memory command abstraction |
US7840658B2 (en) | 2002-05-15 | 2010-11-23 | Oracle International Corporation | Employing job code attributes in provisioning |
US6857937B2 (en) * | 2002-05-30 | 2005-02-22 | Komag, Inc. | Lapping a head while powered up to eliminate expansion of the head due to heating |
US7133972B2 (en) * | 2002-06-07 | 2006-11-07 | Micron Technology, Inc. | Memory hub with internal cache and/or memory access prediction |
US7103722B2 (en) * | 2002-07-22 | 2006-09-05 | International Business Machines Corporation | Cache configuration for compressed memory systems |
US7200024B2 (en) * | 2002-08-02 | 2007-04-03 | Micron Technology, Inc. | System and method for optically interconnecting memory devices |
US7117316B2 (en) * | 2002-08-05 | 2006-10-03 | Micron Technology, Inc. | Memory hub and access method having internal row caching |
US7254331B2 (en) * | 2002-08-09 | 2007-08-07 | Micron Technology, Inc. | System and method for multiple bit optical data transmission in memory systems |
US6754117B2 (en) | 2002-08-16 | 2004-06-22 | Micron Technology, Inc. | System and method for self-testing and repair of memory modules |
US7149874B2 (en) * | 2002-08-16 | 2006-12-12 | Micron Technology, Inc. | Memory hub bypass circuit and method |
US7836252B2 (en) * | 2002-08-29 | 2010-11-16 | Micron Technology, Inc. | System and method for optimizing interconnections of memory devices in a multichip module |
US6820181B2 (en) | 2002-08-29 | 2004-11-16 | Micron Technology, Inc. | Method and system for controlling memory accesses to memory modules having a memory hub architecture |
US7102907B2 (en) * | 2002-09-09 | 2006-09-05 | Micron Technology, Inc. | Wavelength division multiplexed memory module, memory system and method |
US7076609B2 (en) * | 2002-09-20 | 2006-07-11 | Intel Corporation | Cache sharing for a chip multiprocessor or multiprocessing system |
US6711635B1 (en) * | 2002-09-30 | 2004-03-23 | Western Digital Technologies, Inc. | Disk drive employing thresholds for cache memory allocation |
US6823430B2 (en) * | 2002-10-10 | 2004-11-23 | International Business Machines Corporation | Directoryless L0 cache for stall reduction |
US7190367B2 (en) * | 2003-03-25 | 2007-03-13 | Mitsubishi Electric Research Laboratories, Inc. | Method, apparatus, and system for rendering using a progressive cache |
US7245145B2 (en) * | 2003-06-11 | 2007-07-17 | Micron Technology, Inc. | Memory module and method having improved signal routing topology |
US7120727B2 (en) * | 2003-06-19 | 2006-10-10 | Micron Technology, Inc. | Reconfigurable memory module and method |
US7107415B2 (en) * | 2003-06-20 | 2006-09-12 | Micron Technology, Inc. | Posted write buffers and methods of posting write requests in memory modules |
US7260685B2 (en) * | 2003-06-20 | 2007-08-21 | Micron Technology, Inc. | Memory hub and access method having internal prefetch buffers |
US7428644B2 (en) * | 2003-06-20 | 2008-09-23 | Micron Technology, Inc. | System and method for selective memory module power management |
US7389364B2 (en) * | 2003-07-22 | 2008-06-17 | Micron Technology, Inc. | Apparatus and method for direct memory access in a hub-based memory system |
US7210059B2 (en) * | 2003-08-19 | 2007-04-24 | Micron Technology, Inc. | System and method for on-board diagnostics of memory modules |
US7133991B2 (en) * | 2003-08-20 | 2006-11-07 | Micron Technology, Inc. | Method and system for capturing and bypassing memory transactions in a hub-based memory system |
US20050050237A1 (en) * | 2003-08-28 | 2005-03-03 | Jeddeloh Joseph M. | Memory module and method having on-board data search capabilities and processor-based system using such memory modules |
US7136958B2 (en) * | 2003-08-28 | 2006-11-14 | Micron Technology, Inc. | Multiple processor system and method including multiple memory hub modules |
US20050050455A1 (en) * | 2003-08-29 | 2005-03-03 | Yee Sunny K. | Method and apparatus for supporting object caching in a web presentation architecture |
US7310752B2 (en) * | 2003-09-12 | 2007-12-18 | Micron Technology, Inc. | System and method for on-board timing margin testing of memory modules |
US7194593B2 (en) | 2003-09-18 | 2007-03-20 | Micron Technology, Inc. | Memory hub with integrated non-volatile memory |
US20050076291A1 (en) * | 2003-10-01 | 2005-04-07 | Yee Sunny K. | Method and apparatus for supporting page localization management in a Web presentation architecture |
US7882132B2 (en) | 2003-10-09 | 2011-02-01 | Oracle International Corporation | Support for RDBMS in LDAP system |
US7904487B2 (en) | 2003-10-09 | 2011-03-08 | Oracle International Corporation | Translating data access requests |
US7120743B2 (en) | 2003-10-20 | 2006-10-10 | Micron Technology, Inc. | Arbitration system and method for memory responses in a hub-based memory system |
US7234070B2 (en) * | 2003-10-27 | 2007-06-19 | Micron Technology, Inc. | System and method for using a learning sequence to establish communications on a high-speed nonsynchronous interface in the absence of clock forwarding |
CN1879092B (zh) * | 2003-11-12 | 2010-05-12 | 松下电器产业株式会社 | 高速缓冲存储器及其控制方法 |
US7330992B2 (en) | 2003-12-29 | 2008-02-12 | Micron Technology, Inc. | System and method for read synchronization of memory modules |
US7216196B2 (en) * | 2003-12-29 | 2007-05-08 | Micron Technology, Inc. | Memory hub and method for memory system performance monitoring |
US7173863B2 (en) * | 2004-03-08 | 2007-02-06 | Sandisk Corporation | Flash controller cache architecture |
US7356651B2 (en) * | 2004-01-30 | 2008-04-08 | Piurata Technologies, Llc | Data-aware cache state machine |
US7188219B2 (en) | 2004-01-30 | 2007-03-06 | Micron Technology, Inc. | Buffer control system and method for a memory system having outstanding read and write request buffers |
US7412574B2 (en) * | 2004-02-05 | 2008-08-12 | Micron Technology, Inc. | System and method for arbitration of memory responses in a hub-based memory system |
US7788451B2 (en) | 2004-02-05 | 2010-08-31 | Micron Technology, Inc. | Apparatus and method for data bypass for a bi-directional data bus in a hub-based memory sub-system |
US7181584B2 (en) * | 2004-02-05 | 2007-02-20 | Micron Technology, Inc. | Dynamic command and/or address mirroring system and method for memory modules |
US7797492B2 (en) * | 2004-02-20 | 2010-09-14 | Anoop Mukker | Method and apparatus for dedicating cache entries to certain streams for performance optimization |
US7366864B2 (en) * | 2004-03-08 | 2008-04-29 | Micron Technology, Inc. | Memory hub architecture having programmable lane widths |
US20050206648A1 (en) * | 2004-03-16 | 2005-09-22 | Perry Ronald N | Pipeline and cache for processing data progressively |
US7257683B2 (en) | 2004-03-24 | 2007-08-14 | Micron Technology, Inc. | Memory arbitration system and method having an arbitration packet protocol |
US7120723B2 (en) * | 2004-03-25 | 2006-10-10 | Micron Technology, Inc. | System and method for memory hub-based expansion bus |
US7213082B2 (en) * | 2004-03-29 | 2007-05-01 | Micron Technology, Inc. | Memory hub and method for providing memory sequencing hints |
US7447240B2 (en) * | 2004-03-29 | 2008-11-04 | Micron Technology, Inc. | Method and system for synchronizing communications links in a hub-based memory system |
US6980042B2 (en) * | 2004-04-05 | 2005-12-27 | Micron Technology, Inc. | Delay line synchronizer apparatus and method |
US7590797B2 (en) * | 2004-04-08 | 2009-09-15 | Micron Technology, Inc. | System and method for optimizing interconnections of components in a multichip memory module |
US7162567B2 (en) * | 2004-05-14 | 2007-01-09 | Micron Technology, Inc. | Memory hub and method for memory sequencing |
US7222213B2 (en) * | 2004-05-17 | 2007-05-22 | Micron Technology, Inc. | System and method for communicating the synchronization status of memory modules during initialization of the memory modules |
US7363419B2 (en) | 2004-05-28 | 2008-04-22 | Micron Technology, Inc. | Method and system for terminating write commands in a hub-based memory system |
US7519788B2 (en) * | 2004-06-04 | 2009-04-14 | Micron Technology, Inc. | System and method for an asynchronous data buffer having buffer write and read pointers |
US7310748B2 (en) * | 2004-06-04 | 2007-12-18 | Micron Technology, Inc. | Memory hub tester interface and method for use thereof |
US7873776B2 (en) * | 2004-06-30 | 2011-01-18 | Oracle America, Inc. | Multiple-core processor with support for multiple virtual processors |
US7685354B1 (en) * | 2004-06-30 | 2010-03-23 | Sun Microsystems, Inc. | Multiple-core processor with flexible mapping of processor cores to cache banks |
US7392331B2 (en) * | 2004-08-31 | 2008-06-24 | Micron Technology, Inc. | System and method for transmitting data packets in a computer system having a memory hub architecture |
US7590803B2 (en) * | 2004-09-23 | 2009-09-15 | Sap Ag | Cache eviction |
US20060074872A1 (en) * | 2004-09-30 | 2006-04-06 | International Business Machines Corporation | Adaptive database buffer memory management using dynamic SQL statement cache statistics |
US7472224B1 (en) | 2004-10-01 | 2008-12-30 | Advanced Micro Devices, Inc. | Reconfigurable processing node including first and second processor cores |
US7257678B2 (en) * | 2004-10-01 | 2007-08-14 | Advanced Micro Devices, Inc. | Dynamic reconfiguration of cache memory |
US8090983B2 (en) * | 2004-10-25 | 2012-01-03 | Robert Bosch Gmbh | Method and device for performing switchover operations in a computer system having at least two execution units |
US7703082B2 (en) * | 2004-12-07 | 2010-04-20 | International Business Machines Corporation | Controlling user intervention in a multi-processing computer system |
US7580915B2 (en) * | 2004-12-14 | 2009-08-25 | Sap Ag | Socket-like communication API for C |
US7600217B2 (en) * | 2004-12-14 | 2009-10-06 | Sap Ag | Socket-like communication API for Java |
US7882299B2 (en) * | 2004-12-21 | 2011-02-01 | Sandisk Corporation | System and method for use of on-chip non-volatile memory write cache |
US20060143398A1 (en) * | 2004-12-23 | 2006-06-29 | Stefan Rau | Method and apparatus for least recently used (LRU) software cache |
US7971001B2 (en) * | 2004-12-28 | 2011-06-28 | Sap Ag | Least recently used eviction implementation |
US7539821B2 (en) * | 2004-12-28 | 2009-05-26 | Sap Ag | First in first out eviction implementation |
US7694065B2 (en) | 2004-12-28 | 2010-04-06 | Sap Ag | Distributed cache architecture |
US7552153B2 (en) * | 2004-12-28 | 2009-06-23 | Sap Ag | Virtual machine monitoring using shared memory |
US20060143256A1 (en) * | 2004-12-28 | 2006-06-29 | Galin Galchev | Cache region concept |
US8204931B2 (en) | 2004-12-28 | 2012-06-19 | Sap Ag | Session management within a multi-tiered enterprise network |
US20060143389A1 (en) * | 2004-12-28 | 2006-06-29 | Frank Kilian | Main concept for common cache management |
US7552284B2 (en) * | 2004-12-28 | 2009-06-23 | Sap Ag | Least frequently used eviction implementation |
US7451275B2 (en) * | 2004-12-28 | 2008-11-11 | Sap Ag | Programming models for storage plug-ins |
US7437516B2 (en) * | 2004-12-28 | 2008-10-14 | Sap Ag | Programming models for eviction policies |
US7512737B2 (en) * | 2004-12-28 | 2009-03-31 | Sap Ag | Size based eviction implementation |
US7685372B1 (en) | 2005-01-13 | 2010-03-23 | Marvell International Ltd. | Transparent level 2 cache controller |
US8347034B1 (en) | 2005-01-13 | 2013-01-01 | Marvell International Ltd. | Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access |
US20060168407A1 (en) * | 2005-01-26 | 2006-07-27 | Micron Technology, Inc. | Memory hub system and method having large virtual page size |
US7743233B2 (en) * | 2005-04-05 | 2010-06-22 | Intel Corporation | Sequencer address management |
US7516277B2 (en) * | 2005-04-28 | 2009-04-07 | Sap Ag | Cache monitoring using shared memory |
US7581066B2 (en) * | 2005-04-29 | 2009-08-25 | Sap Ag | Cache isolation model |
US7831634B2 (en) | 2005-04-29 | 2010-11-09 | Sap Ag | Initializing a cache region using a generated cache region configuration structure |
US7966412B2 (en) * | 2005-07-19 | 2011-06-21 | Sap Ag | System and method for a pluggable protocol handler |
US7788243B2 (en) * | 2006-09-08 | 2010-08-31 | Sybase, Inc. | System and methods for optimizing data transfer among various resources in a distributed environment |
US8136119B2 (en) * | 2006-11-30 | 2012-03-13 | Dell Products L.P. | Method, apparatus and media for managing information model jobs |
US7831772B2 (en) * | 2006-12-12 | 2010-11-09 | Sybase, Inc. | System and methodology providing multiple heterogeneous buffer caches |
US8074274B2 (en) * | 2006-12-29 | 2011-12-06 | Intel Corporation | User-level privilege management |
US20080163063A1 (en) * | 2006-12-29 | 2008-07-03 | Sap Ag | Graphical user interface system and method for presenting information related to session and cache objects |
TWI384488B (zh) * | 2007-12-24 | 2013-02-01 | Skymedi Corp | Nonvolatile storage device and its data writing method |
GB2473356B (en) * | 2008-03-27 | 2012-08-29 | Hewlett Packard Development Co | Raid array access by a raid array-unaware operating system |
US8166229B2 (en) * | 2008-06-30 | 2012-04-24 | Intel Corporation | Apparatus and method for multi-level cache utilization |
US8499120B2 (en) * | 2008-10-17 | 2013-07-30 | Seagate Technology Llc | User selectable caching management |
JP5785357B2 (ja) * | 2009-06-25 | 2015-09-30 | スパンション エルエルシー | リコンフィグ演算装置を備えるコンピュータシステムおよびリコンフィグ演算装置 |
US8825685B2 (en) * | 2009-11-16 | 2014-09-02 | Symantec Corporation | Selective file system caching based upon a configurable cache map |
US8589627B2 (en) * | 2010-08-27 | 2013-11-19 | Advanced Micro Devices, Inc. | Partially sectored cache |
US8868843B2 (en) | 2011-11-30 | 2014-10-21 | Advanced Micro Devices, Inc. | Hardware filter for tracking block presence in large caches |
US9152626B2 (en) * | 2011-12-19 | 2015-10-06 | Sap Se | Transactional-consistent cache for database objects |
US9223709B1 (en) | 2012-03-06 | 2015-12-29 | Marvell International Ltd. | Thread-aware cache memory management |
US20140095716A1 (en) * | 2012-09-28 | 2014-04-03 | International Business Machines Corporation | Maximizing resources in a multi-application processing environement |
US9235513B2 (en) * | 2012-10-18 | 2016-01-12 | International Business Machines Corporation | Cache management based on physical memory device characteristics |
US9251070B2 (en) * | 2012-12-19 | 2016-02-02 | Advanced Micro Devices, Inc. | Methods and apparatus for multi-level cache hierarchies |
CN105094686B (zh) * | 2014-05-09 | 2018-04-10 | 华为技术有限公司 | 数据缓存方法、缓存和计算机系统 |
US9983914B2 (en) * | 2015-05-11 | 2018-05-29 | Mentor Graphics Corporation | Memory corruption protection by tracing memory |
TWI584121B (zh) * | 2015-08-19 | 2017-05-21 | 旺宏電子股份有限公司 | 快取記憶體元件與控制方法及其應用系統 |
US20170083441A1 (en) * | 2015-09-23 | 2017-03-23 | Qualcomm Incorporated | Region-based cache management |
US10152237B2 (en) | 2016-05-05 | 2018-12-11 | Micron Technology, Inc. | Non-deterministic memory protocol |
US10534540B2 (en) | 2016-06-06 | 2020-01-14 | Micron Technology, Inc. | Memory protocol |
US20180292991A1 (en) * | 2017-04-11 | 2018-10-11 | Micron Technology, Inc. | Memory protocol with programmable buffer and cache size |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4928239A (en) * | 1986-06-27 | 1990-05-22 | Hewlett-Packard Company | Cache memory with variable fetch and replacement schemes |
US4905141A (en) * | 1988-10-25 | 1990-02-27 | International Business Machines Corporation | Partitioned cache memory with partition look-aside table (PLAT) for early partition assignment identification |
US5875464A (en) * | 1991-12-10 | 1999-02-23 | International Business Machines Corporation | Computer system with private and shared partitions in cache |
US5479636A (en) | 1992-11-16 | 1995-12-26 | Intel Corporation | Concurrent cache line replacement method and apparatus in microprocessor system with write-back cache memory |
JP2583010B2 (ja) * | 1993-01-07 | 1997-02-19 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 多層インデックス構造におけるローカルインデックステーブル及び大域インデックステーブルの間の一貫性を維持する方法 |
JPH06282488A (ja) * | 1993-03-25 | 1994-10-07 | Mitsubishi Electric Corp | キャッシュ記憶装置 |
US5809524A (en) | 1994-01-04 | 1998-09-15 | Intel Corporation | Method and apparatus for cache memory replacement line identification |
US5680573A (en) * | 1994-07-12 | 1997-10-21 | Sybase, Inc. | Method of buffering data objects in a database |
US5960194A (en) * | 1995-09-11 | 1999-09-28 | International Business Machines Corporation | Method for generating a multi-tiered index for partitioned data |
US5701432A (en) * | 1995-10-13 | 1997-12-23 | Sun Microsystems, Inc. | Multi-threaded processing system having a cache that is commonly accessible to each thread |
GB2311880A (en) * | 1996-04-03 | 1997-10-08 | Advanced Risc Mach Ltd | Partitioned cache memory |
EP0856797B1 (en) | 1997-01-30 | 2003-05-21 | STMicroelectronics Limited | A cache system for concurrent processes |
US5963972A (en) * | 1997-02-24 | 1999-10-05 | Digital Equipment Corporation | Memory architecture dependent program mapping |
US6058456A (en) * | 1997-04-14 | 2000-05-02 | International Business Machines Corporation | Software-managed programmable unified/split caching mechanism for instructions and data |
US6092149A (en) * | 1997-05-28 | 2000-07-18 | Western Digital Corporation | Disk drive cache system using a dynamic priority sequential stream of data segments continuously adapted according to prefetched sequential random, and repeating types of accesses |
US6161166A (en) * | 1997-11-10 | 2000-12-12 | International Business Machines Corporation | Instruction cache for multithreaded processor |
US6112280A (en) * | 1998-01-06 | 2000-08-29 | Hewlett-Packard Company | Method and apparatus for distinct instruction pointer storage in a partitioned cache memory |
US6205519B1 (en) * | 1998-05-27 | 2001-03-20 | Hewlett Packard Company | Cache management for a multi-threaded processor |
US6269425B1 (en) * | 1998-08-20 | 2001-07-31 | International Business Machines Corporation | Accessing data from a multiple entry fully associative cache buffer in a multithread data processing system |
-
1998
- 1998-12-08 US US09/207,278 patent/US6349363B2/en not_active Expired - Lifetime
-
1999
- 1999-09-22 GB GB0111896A patent/GB2359163B/en not_active Expired - Fee Related
- 1999-09-22 AU AU64971/99A patent/AU6497199A/en not_active Abandoned
- 1999-09-22 CN CNB998160911A patent/CN1179276C/zh not_active Expired - Fee Related
- 1999-09-22 DE DE19983793T patent/DE19983793B4/de not_active Expired - Fee Related
- 1999-09-22 WO PCT/US1999/021249 patent/WO2000034870A1/en active Application Filing
-
2001
- 2001-10-24 HK HK01107440A patent/HK1036662A1/xx not_active IP Right Cessation
- 2001-11-09 US US10/007,594 patent/US6470422B2/en not_active Expired - Lifetime
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1777875B (zh) * | 2003-02-24 | 2010-04-28 | Nxp股份有限公司 | 指令高速缓存管理的方法、高速缓冲存储器以及集成电路 |
CN100465922C (zh) * | 2003-12-31 | 2009-03-04 | 英特尔公司 | 高速缓冲存储器、处理器、系统、及高速缓冲分配方法 |
CN102147749A (zh) * | 2004-12-30 | 2011-08-10 | 英特尔公司 | 仿真os隔离定序器上的用户级多线程处理的机制 |
CN102147749B (zh) * | 2004-12-30 | 2014-01-15 | 英特尔公司 | 仿真os隔离定序器上的用户级多线程处理的机制 |
CN101095112B (zh) * | 2004-12-30 | 2011-05-25 | 英特尔公司 | 仿真os隔离定序器上的用户级多线程处理的机制 |
CN101903847B (zh) * | 2007-12-21 | 2012-10-03 | 索尼公司 | 用于远程控制的触敏无线导航设备 |
CN101911013A (zh) * | 2008-01-11 | 2010-12-08 | 国际商业机器公司 | 提取高速缓存属性工具及其指令 |
CN101911013B (zh) * | 2008-01-11 | 2013-07-31 | 国际商业机器公司 | 计算机系统和操作计算机的方法 |
CN101515295B (zh) * | 2009-03-23 | 2010-12-01 | 浙江大学 | 片上硬件数据库的高速缓冲器支持实现方法 |
CN102906715A (zh) * | 2010-05-17 | 2013-01-30 | 汤姆森特许公司 | 优化缓存存储器管理的方法和对应装置 |
US10691598B2 (en) | 2010-05-17 | 2020-06-23 | Interdigital Ce Patent Holdings | Method of optimization of cache memory management and corresponding apparatus |
CN104424119A (zh) * | 2013-08-26 | 2015-03-18 | 联想(北京)有限公司 | 存储空间配置方法和装置 |
CN104424119B (zh) * | 2013-08-26 | 2018-07-06 | 联想(北京)有限公司 | 存储空间配置方法和装置 |
CN106649139A (zh) * | 2016-12-29 | 2017-05-10 | 北京奇虎科技有限公司 | 一种基于多个缓存的数据淘汰方法及装置 |
CN106649139B (zh) * | 2016-12-29 | 2020-01-10 | 北京奇虎科技有限公司 | 一种基于多个缓存的数据淘汰方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
GB2359163B (en) | 2003-07-30 |
US6349363B2 (en) | 2002-02-19 |
GB2359163A (en) | 2001-08-15 |
CN1179276C (zh) | 2004-12-08 |
US6470422B2 (en) | 2002-10-22 |
AU6497199A (en) | 2000-06-26 |
GB0111896D0 (en) | 2001-07-04 |
DE19983793T1 (de) | 2001-11-29 |
US20020046325A1 (en) | 2002-04-18 |
WO2000034870A1 (en) | 2000-06-15 |
HK1036662A1 (en) | 2002-01-11 |
DE19983793B4 (de) | 2013-02-07 |
US20010049770A1 (en) | 2001-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1179276C (zh) | 配置不同的高速缓存分区以具有不同属性的系统和方法 | |
US10963387B2 (en) | Methods of cache preloading on a partition or a context switch | |
US9921972B2 (en) | Method and apparatus for implementing a heterogeneous memory subsystem | |
US6957306B2 (en) | System and method for controlling prefetching | |
US5829025A (en) | Computer system and method of allocating cache memories in a multilevel cache hierarchy utilizing a locality hint within an instruction | |
US5778434A (en) | System and method for processing multiple requests and out of order returns | |
KR100996753B1 (ko) | 시퀀서 어드레스를 관리하기 위한 방법, 맵핑 관리자 및 멀티 시퀀서 멀티스레딩 시스템 | |
JP3197866B2 (ja) | キャッシュの操作を改良する方法及びコンピュータ・システム | |
US10901908B2 (en) | Storing data into a memory | |
WO2006071792A2 (en) | Method for programmer-controlled cache line eviction policy | |
US8544008B2 (en) | Data processing system and method for cache replacement using task scheduler | |
CN102985910A (zh) | 对无用存储单元收集的gpu支持 | |
US8874853B2 (en) | Local and global memory request predictor | |
US11256625B2 (en) | Partition identifiers for page table walk memory transactions | |
US6434671B2 (en) | Software-controlled cache memory compartmentalization | |
US8266379B2 (en) | Multithreaded processor with multiple caches | |
US5983322A (en) | Hardware-managed programmable congruence class caching mechanism | |
KR19980079707A (ko) | 명령 및 데이터에 대한 하드웨어-관리 프로그래머블 통합/분할된 캐싱 메카니즘 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
C10 | Entry into substantive examination | ||
PB01 | Publication | ||
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: 20041208 Termination date: 20150922 |
|
EXPY | Termination of patent right or utility model |