CN101727405A - 虚拟地址高速缓冲存储器和方法以及处理器 - Google Patents
虚拟地址高速缓冲存储器和方法以及处理器 Download PDFInfo
- Publication number
- CN101727405A CN101727405A CN200910205038A CN200910205038A CN101727405A CN 101727405 A CN101727405 A CN 101727405A CN 200910205038 A CN200910205038 A CN 200910205038A CN 200910205038 A CN200910205038 A CN 200910205038A CN 101727405 A CN101727405 A CN 101727405A
- Authority
- CN
- China
- Prior art keywords
- data
- aforementioned
- tlb
- page
- storer
- 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
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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1054—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
-
- 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/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
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
本发明提供一种虚拟地址高速缓冲存储器和方法以及处理器。该虚拟地址高速缓冲存储器具有:TLB虚拟页存储器,其保存包含进程的虚拟地址的预定高位位的虚拟页标签的条目数据,并且如果来自处理器的虚拟页标签一致,则其输出命中信号;数据存储器,其以虚拟页标签和页偏移量作为高速缓存索引,保存高速缓存数据;以及高速缓存状态存储器,其与高速缓存索引对应地保存数据存储器23中所存储的高速缓存数据的高速缓存状态。
Description
相关申请的交叉引用
本申请以2008年10月20日提交的在先日本专利申请No.2008-269940为基础并要求其优先权,该在先申请的全部内容通过引用的方式结合在此。
技术领域
本发明涉及虚拟地址高速缓冲存储器、处理器以及虚拟地址高速缓存方法,特别地,涉及支持虚拟存储的处理器所用的虚拟地址高速缓冲存储器、处理器以及虚拟地址高速缓存方法。
背景技术
以往以来,在采用虚拟存储的处理器中,为了高速地执行从虚拟地址空间向实地址空间的地址转换,装配有TLB(Translation LookasideBuffer,翻译后援缓冲器),其中虚拟地址空间是特定于进程的地址空间,实地址空间是装配有处理器的计算机***整体的地址空间,TLB是用于放置由操作***(以下,称为OS)管理的页表的副本的专用的高速缓冲存储器。
另一方面,处理器,为了隐藏存储器访问的延迟,将存储器的数据复制到高速缓冲存储器(以下,也称为高速缓存)中来使用。为了确定保存着被复制到高速缓存中的数据的存储器的数据的地址,除了保存存储器的数据的数据存储器之外,处理器还具有保存该数据的地址、该数据的状态(有效、更新了存储器内容等)等的标签(Tag)存储器。标签存储器一般以下述方式构成:以存储器地址的低位位作为高速缓存的索引,保存存储器地址的高位位(Tag)、数据的状态等作为数据。
上述的地址转换,大多成为处理器设计中的时序上的关键路径。在处理器采用分级存储器的情况下,大多是采用以下的结构的情况:处于靠近处理器的位置上的级别1高速缓存(以下,也称为L1高速缓存),使用虚拟地址被进行访问,级别2(L2高速缓存)及以后的高速缓存,由于后述的别名对策等,使用物理地址被进行访问。
地址转换,由于在利用命令的获取、加载命令、存储命令所进行的存储器访问的全部中都进行,所以TLB未命中对于性能的影响比通常的高速缓存未命中要大。因此,TLB被设计为与高速缓存不同的专用存储器。
但是,在上述的以往TLB和高速缓冲存储器的结构中,存在以下问题。
该问题是与TLB和高速缓存的标签存储器的容量有关的问题。
TLB,作为数据,保存虚拟页号和物理页号以及页属性、页状态等数据。在具有32位或32位以上的物理地址空间的处理器中,在TLB所保存的数据中,虚拟页号和物理页号所占的比例要大。TLB的大小,主要由物理地址空间的大小、最小页大小以及TLB的条目数决定。
高速缓存的标签存储器,作为数据,保存标签以及高速缓存状态等数据。在具有32位及32位以上的物理地址空间的处理器中,在高速缓存的标签存储器所保存的数据中,标签所占的比例要大。高速缓存的标签存储器的大小,主要由物理地址空间的大小、高速缓存行大小以及高速缓存容量决定。
根据“Computer Architecture-A Quantitative Approach-ThirdEdition”的图5.57以及图5.58(505页、506页),在最近的处理器中,为:
·L1大小8kB~64kB,直接映射或2路组相关联
·TLB条目数4~512,条目全相关联
·最小页大小1~64k字节。
此外,在David.A.Patterson和John L.Hennessy所著的“ComputerOrganization and Design-The Hardware/Software interface-secondedition”(1998 Morgan Kaufmann:ISBN 1-55860-428-6)中的“Integratingvirtual memory,TLB and Caches”(592页)、图7.25(593页)、图7.26(594页)以及John L.Hennessy和David.A.Patterson所著的“ComputerArchitecture-A Quantitative Approach-third edition”(2003 MorganKaufmann:ISBN 1-55860-596-7)中的“Second Hit Time ReductionTechnique:Avoiding Address Translation during Indexing of Cache”(444页)中也有同样的公开。
发明内容
根据本发明的一种方式,能够提供一种虚拟地址高速缓冲存储器,其具有:TLB虚拟页存储器,其保存包含进程的虚拟地址的预定高位位的虚拟页标签的条目数据,并且如果来自处理器的前述虚拟页标签一致,则其输出命中信号;数据存储器,其以前述虚拟页标签和页偏移量作为高速缓存索引,保存高速缓存数据;以及高速缓存状态存储器,其与前述高速缓存索引对应地保存前述数据存储器中所存储的前述高速缓存数据的高速缓存状态。
附图说明
图1是示出本发明的第1实施方式的处理器***的结构的结构图;
图2是本发明的第1实施方式的、作为虚拟地址高速缓冲存储器的高速缓冲存储器的结构图;
图3是用于说明本发明的第1实施方式的存储器读时的处理的流程的流程图;
图4是用于说明本发明的第1实施方式的TLB登记处理的流程的流程图;
图5是用于说明本发明的第1实施方式的TLB未命中处理的流程的流程图;
图6是用于说明本发明的第1实施方式的高速缓存读时的处理的流程的流程图;
图7是本发明的第4实施方式的高速缓冲存储器的结构图;
图8是本发明的第4实施方式中的共享存储器读时的流程图;
图9是本发明的第4实施方式中的共享存储器写时的流程图;
图10是本发明的第4实施方式的、TLB未命中处理时的流程图;
图11是本发明的第4实施方式的TLB登记处理时的流程图;
图12是本发明的第5实施方式的高速缓冲存储器的结构图;以及
图13是本发明的第6实施方式的高速缓冲存储器的结构图。
具体实施方式
以下,参照附图说明本发明的实施方式。
(第1实施方式)
(结构)
首先,基于图1,说明本发明的第1实施方式的处理器***的结构。图1是示出本发明的第1实施方式的处理器***的结构的结构图。
处理器***1具有以下部件而构成:中央处理装置1(以下,称为CPU)、作为虚拟地址高速缓冲存储器的级别1(L1)的高速缓冲存储器12、作为主存储器的DRAM 13。处理器***1是具有虚拟存储机构和高速缓冲存储器的处理器。高速缓冲存储器12与DRAM 13相互由总线连接。CPU 11是所谓的CPU核。
此外,在本实施方式中,虽然是1个CPU 11访问DRAM 13的例子,但是也可以是CPU 11和高速缓冲存储器12存在多对,该多对经由***总线等与1个DRAM 13连接那样的多核的结构。
进而,在本身为L1高速缓存的高速缓冲存储器12和DRAM 13之间,也可以存在L2高速缓存等。
CPU 11经由包含高速缓冲存储器控制电路的高速缓冲存储器12读出并执行存储在主存储器13中的命令或数据。如果程序的执行所需的命令或数据(以下,简称为数据)存在于高速缓冲存储器中,则CPU 11从高速缓冲存储器12读出该数据并执行该程序。
CPU11,为了指定该数据,将虚拟地址(EA)输出至高速缓冲存储器12,如果在高速缓冲存储器12中存在与所输入的虚拟地址(EA)对应的数据,则高速缓冲存储器12向CPU 11输出该数据。如果在高速缓冲存储器12中没有所存储的数据,则利用重新装入处理从DRAM 13读出该数据并写入至高速缓冲存储器12,从而输出至CPU核11。
本实施方式的高速缓冲存储器12以虚拟页为单位,进行数据替换、即高速缓存替换,并且以高速缓存行为单位、即以高速缓存块为单位进行高速缓存状态管理,其中虚拟页由管理多个进程的执行的OS所管理。在本实施方式的处理器中,对于本身为L1高速缓存的高速缓冲存储器12的访问,利用虚拟地址进行,高速缓存的一致性利用窥探方式来实现。
图2是作为虚拟地址高速缓冲存储器的高速缓冲存储器12的结构图。
高速缓冲存储器12包含以下部件而构成:TLB虚拟页存储器(TLB EP存储器)21、TLB物理页存储器(TLB RP存储器)22、数据存储器23、高速缓存状态存储器24、TLB物理页CAM存储器(TLB RP CAM存储器)25。
CPU 11向高速缓冲存储器12输出虚拟地址(EA)31,高速缓冲存储器12向DRAM 13输出物理地址32。
本实施方式的高速缓冲存储器12利用4路组相关联结构的高速缓冲存储器实现作为TLB以及L1高速缓存的功能。高速缓冲存储器12的作为L1高速缓存的容量,是256KB(千字节,以下相同)。各路的大小,虽然超过页大小,但是对于虚拟地址,不执行页着色(page coloring)。
本实施方式的高速缓冲存储器12是以下这样的4路组相关联的高速缓存:以4KB的页为单位对虚拟地址(EA)进行划分,将虚拟地址EA的高位位(31:12)作为虚拟页标签,进而将中间位(15:12)作为虚拟页索引(EP_Index),其中,中间位(15:12)是以4KB划分每一路的高速缓存容量、即64KB而得到的。也就是说,高速缓冲存储器12构成TLB和L1高速缓存。在本实施方式中,由于利用虚拟地址31访问作为L1高速缓存的高速缓冲存储器12,并且各路的大小(64KB)比页大小(4KB)大,所以如图2所示,虚拟页标签(EP_Tag)和虚拟页索引(EP_Index,以下也称为TLB索引),分别被分配虚拟地址(EA)的位(31:12)和(15:12),从而重叠。
来自CPU 11的虚拟地址31被输入至高速缓冲存储器12。虚拟地址31由32位构成,高位位(31:12)是虚拟页标签(EP_Tag),位(11:7)是页偏移量,位(6:2)是块偏移量,最低位(1:0)是字偏移量。高位位(31:12)的虚拟页标签,是虚拟地址31的虚拟页号的标签。
此外,从CPU 11,还向高速缓冲存储器12输入进程号(PID),该进程号作为用于标识进程的标识符。
然后,CPU 11从高速缓冲存储器12获取高速缓存行大小或小于等于高速缓存行大小的量的数据。在此,CPU 11,从高速缓冲存储器12获取32位的数据。
TLB虚拟页存储器21,包含每一路的TLB虚拟页存储器,各TLB虚拟页存储器可存储以下数据:表示各页的状态的“有效”(V)、“引用”(R)、“废弃”(D)等状态信息;作为用于标识进程的标识符的进程号(PID);虚拟页号(EP);以及路号(WN)等。虚拟页号(EP)是与虚拟地址(EA)中的高位位(31:12)对应的数据。此外,在本例中,由于路号(WN)使用与TLB的路号相同的值,所以既可以配备路号(WN)的字段,也可以形成为省略路号(WN)的字段从而转用TLB的路号的结构。此外,在不具有进程ID的体系结构的处理器中,不使用进程ID,而仅使用虚拟页号来进行本实施方式的工作。
TLB虚拟页存储器21的各数据,由作为TLB索引的、虚拟地址(EA)31的高位位(31:12)中的4位(15:12)指定。
设置有4个比较器21a,其对各TLB虚拟页存储器的进程号(PID)和虚拟页号(EP)与来自CPU 11的进程号(PID)和虚拟地址31中的虚拟页标签(EP_Tag)进行比较。作为TLB虚拟页存储器21的输出,4个比较器21a,在命中时输出路号(WN)作为命中信号,在未命中时输出未命中信号。
TLB物理页存储器22包括每一路的TLB物理页存储器。各TLB物理页存储器的各数据,由作为TLB索引的、虚拟地址31的高位位(31:12)中的4位(15:12)虚拟页索引(EP_Index)指定。
TLB物理页存储器22的数据、即物理页号,与TLB虚拟页存储器21的各路和虚拟页索引(EP_Index)对应,以每1页的4KB为单位管理虚拟地址空间。
TLB物理页存储器22的数据,如后面所述,在高速缓存未命中以及TLB未命中的情况下使用。TLB物理页存储器22,与各路对应地,输出4个物理地址页位(39:12)。
数据存储器23包括每一路的数据存储器。各数据存储器,以128字节为单位管理各高速缓存数据。各数据存储器的各数据,由作为高速缓存索引的虚拟地址31中的9位(15:7)、块偏移量(6:2)指定。9位(15:7)包括:作为虚拟页索引(ED_Index)的4位(15:12)和作为页偏移量的5位(11:7)。
并且,数据存储器23中的高速缓存数据的替换、即高速缓存替换,以OS所管理的虚拟页为单位进行。
各数据存储器的输出,被输入至对应的32输入1输出的多路复用器(32:1 MUX)23a。作为选择器的多路复用器23a,与各数据存储器对应地设置多个(在此是4个),其从根据虚拟页索引(EP_Index)和页偏移量选择的数据中,选择并输出根据虚拟地址数据(EA)中的块偏移量(6:2)选择的块的高速缓存数据。
高速缓存状态存储器24包括每一路的高速缓存状态存储器。与数据存储器23同样,各高速缓存状态存储器24的各数据,由虚拟地址31中的9位(15:7)指定。高速缓存状态存储器24,是用于以高速缓存行为单位(即以高速缓存块为单位),进行高速缓存的状态管理的存储器。
高速缓存状态存储器(以下,也称为状态存储器)24,为了应对多任务,例如存储基于MESI协议的高速缓存块的状态的数据。在MESI协议的情况下,存储M(Modified,修改了)、E(Exclusive,排他)、S(Shared,共享)、I(Invalid,无效)数据。
来自高速缓存状态存储器24的输出数据,是表示数据存储器23的各数据的状态、即数据的有效/无效、读出的许可与否等的数据,其被输入至未图示的控制电路,从而被使用。
TLB物理页CAM存储器25,包括每一路的TLB物理页CAM(ContentAddressable Memory,按内容寻址的存储器)。各TLB物理页CAM的各数据,包含物理页号和“Valid”的状态信息。
TLB物理页CAM 25,与TLB虚拟页存储器21的各路对应地,并且与虚拟页索引(EP_Index)对应地,存储有物理页号的数据。TLB物理页CAM 25的数据,在TLB虚拟页存储器21的数据的登记时,被登记。
如后所述,为了保持与其他处理器的数据的一致性,TLB物理页CAM25用于从物理页到虚拟页的逆向求取和用于TLB未命中时的别名检查。此外,由于登记在TLB物理页CAM 25中的物理页与登记在对应的条目号的TLB物理页存储器22中的物理页RP相同,并且TLB物理页CAM 25和TLB物理页存储器22的被访问的频度远小于TLB虚拟页存储器21,所以也可以采用将TLB物理页存储器22的功能合并在TLB物理页CAM25中的实现。
别名问题,是这样的问题:在对于比页大小大的L1高速缓存使用虚拟地址的情况下,若同一物理地址被分配不同的虚拟地址,则原本存在于高速缓存中的数据将作为不同的地址对待,从而会发生数据的不一致。
为了防止该问题,以往以来研究出了2种方法。1种是:在TLB未命中的情况下,全部检查存在出现别名的可能性的条目,在物理地址一致的情况下,刷新属于相应的虚拟页的全部高速缓存行。
另一种是以下的称为页着色的方法:借助于OS等管理虚拟地址的软件的帮助,排列多个页而制作成不会出现别名的地址空间(例如,在上述例子中,以制作成64kB/2路=32kB的区域的方式,排列8个4kB页),从而在软件上防止别名的产生。
但是,在任何一种情况下,在由多个进程共享同一页的情况下,都会存在以下的需要:与发生TLB未命中从而进行TLB条目的替换同时地,属于在原进程中使用的页的数据在高速缓存上全部无效化,从而使用新的TLB再一次进行加载。
特别地,别名问题,是与以在多个进程间共享数据为目的所进行的程序设计无关地,共享数据在高速缓存上被无效化,用新的虚拟地址将全部相同数据加载到高速缓存中这样的问题,该问题将引起相应进程以及***整体的性能下降,使功耗增大。
此外,被传送、即输出至与DRAM 13连接的总线的物理地址(RA),利用所谓的窥探方式被监视,并被输入至TLB物理页CAM 25。在该被监视的、即被输入的物理地址(RA)中,若检测出具有与登记在TLB物理页CAM 25中的物理页号相同的页号的物理地址,则改变高速缓存状态存储器24的表示状态的状态数据,该高速缓存状态存储器24是由与一致的TLB物理页CAM 25的条目号相同的条目号表示的高速缓存状态存储器24。也就是说,通过应用公知的窥探方式的高速缓存一致性机制,能够关于具有同一物理地址的全部的高速缓存行,保持表示高速缓存行的状态的高速缓存状态存储器24的状态的一致性。此外,在根据窥探,如MESI协议的“修改了”的状态那样,高速缓存具有比登记在DRAM中的数据新的数据的情况等、需要根据一致性协议从高速缓存输出数据的情况下,访问由与TLB物理页CAM 25的条目号相同的条目号所表示的数据存储器23,将数据输出至总线。这样,在保持一致性的处理中,使用该TLB物理页CAM 25。
此外,在多个进程的执行时,当在存在TLB未命中的情况下、由于存在上述的别名的问题所以存在TLB物理页存储器未命中时,使用该TLB物理页CAM 25。
TLB物理页存储器22、多路复用器23a以及高速缓存状态存储器24的输出,分别被输入至4输入1输出的多路复用器(4:1 MUX)22b、23b、24b。作为选择器的各多路复用器22b、23b、24b,分别被输入来自TLB虚拟页存储器21的路号(WN),并且选择并输出由该路号(WN)选择的数据。
此外,在本实施方式中,虽然CPU 11形成为以数据宽度32位获取数据的结构,但是能够依据处理器核的规格,取小于等于高速缓存行大小的任意的数据宽度。
(工作)
接着,说明上述的高速缓冲存储器12的工作。图3是用于说明存储器读时的处理的流程的流程图。图4是用于说明TLB登记处理的流程的流程图。图5是用于说明TLB未命中处理的流程的流程图。图6是用于说明高速缓存读时的处理的流程的流程图。
在说明图2的结构中的工作之前,使用图3~图6,说明处理器***1的整体的处理。
如图3所示,如果开始存储器读,则用虚拟索引,进行对于状态存储器24、数据存储器23和TLB虚拟页存储器21的访问(步骤S1)。在TLB虚拟页存储器21未命中时,在TLB命中的判断(步骤S2)中为“否”,从而执行读时的TLB登记处理(步骤S3)。在TLB命中时,在TLB命中的判断(步骤S2)中为“是”,从而进行该虚拟页是否可读的判断(步骤S4)。在虚拟页可读的情况下,在步骤S4中为“是”,从而进行高速缓存读(步骤S5)。在虚拟页不可读的情况下,在步骤S4中为“否”,从而利用中断处理,进行保护违反的CPU 11通知(步骤S6),从而执行由OS进行的异常处理。
如图4所示,如果开始TLB登记处理,则登记的PTE(页表条目),从DRAM 13被读出(步骤S11)。判断所读出的PTE(页表条目)是否存在于DRAM 13中(步骤S12),在不存在的情况下,在步骤S12中为“否”,从而向OS进行发生异常的通知(步骤S13)。
在所读出的PTE(页表条目)存在于DRAM 13中的情况下,在步骤S12中为“是”,从而判断TLB未命中的原因是否是加载命令(步骤S14)。在TLB未命中的原因不是加载命令的情况下,在步骤S14中为“否”,从而判断该进程是否许可写入(步骤S15)。在该进程不许可写入的情况下,在步骤S15中为“否”,从而处理前进至步骤S13。在进程许可写入的情况下,在步骤S15中为“是”,从而设定PTE(页表条目)的“废弃”位和“引用”位(步骤S16)。
然后,判断所读出的PTE(页表条目)与有效的所有TLB条目中的某一个是否物理页号一致(步骤S17)。在步骤S17,在物理页号不一致的情况下,为“否”,从而执行TLB未命中处理(步骤S18),并且登记新的PTE(页表条目)作为TLB条目(步骤S19)。
此外,在步骤S17,在物理页号一致的情况下,为“是”,从而判断一致的TLB条目其登记的条目与虚拟索引是否相同(步骤S20)。在登记的条目与虚拟索引不相同的情况下,在步骤S20为“否”,从而进行一致的TLB条目的页的高速缓存刷新(步骤S21),并且处理前进至步骤S18。
在登记的条目与虚拟索引相同的情况下,在步骤S20为“是”,从而进行物理页号一致的TLB条目的虚拟页号、进程号(PID)以及保护信息的改写(步骤S22)。
此外,在TLB未命中的原因是加载命令的情况下,在步骤S14为“是”,从而判断该进程是否许可读出(步骤S23)。在该进程不许可读出的情况下,在步骤S23为“否”,从而处理前进至步骤S13。在该进程许可读出的情况下,在步骤S23为“是”,从而设定PTE(页表条目)的“引用”位(步骤S24),并且处理前进至步骤S17。
如图5所示,如果开始TLB未命中处理,则判断对于同一虚拟索引是否存在未使用的TLB条目(步骤S31)。在存在未使用的TLB条目的情况下,在步骤S31为“是”,从而处理结束。
在不存在未使用的TLB条目的情况下,在步骤S31为“否”,从而确定清出的TLB条目(步骤S32),并且判断在清出的TLB条目中是否存在“修改了”的高速缓存行(步骤S33)。在不存在“修改了”的高速缓存行的情况下,在步骤S33为“否”,从而处理结束。
在存在“修改了”的高速缓存行的情况下,在步骤S33为“是”,从而刷新清出的页的全部“修改了”的高速缓存行(步骤S34),并且处理结束。
如图6所示,如果开始高速缓存读的处理,则利用虚拟页的偏移量和块偏移量,选择由虚拟索引指向的状态存储器24的输出(步骤S41),并且选择TLB命中了的页的高速缓存状态的输出(步骤S42)。
判断是否高速缓存命中(步骤S43),在未高速缓存命中的情况下,根据TLB的物理页号生成物理地址,从而进行存储器访问(步骤S44)。然后,将所获得的数据获取到高速缓冲存储器中(步骤S45),并且进行向CPU 11的数据的发送(步骤S46)。
在高速缓存命中了的情况下,在步骤S43为“是”,从而用来自TLB的路号(WN)选择由虚拟索引指向的数据存储器的输出,并且处理前进至步骤S46。
以上是处理器***1的处理的内容,接着,关于TLB命中和TLB未命中的情况下的工作,基于图2进行说明。
(TLB命中的情况)
首先,如上所述,从CPU 11向高速缓冲存储器12输入虚拟地址31和进程号(PID)。在TLB虚拟页存储器21中,使用所输入的虚拟地址31中的虚拟页索引(EP_Index)(15:12),选择各路的数据。并且,在所选择的数据中,在与所输入的虚拟地址31有关的进程的标识符、即进程号(PID)和所输入的虚拟地址31中的作为虚拟页标签(EA_Tag)的高位位(31:12)分别与TLB虚拟页存储器21的进程号(PID)和虚拟页(EP)一致的情况下,从TLB虚拟页存储器21的比较器21a输出一致的路号(WN),作为命中信号。在比较器21a中,对来自各TLB虚拟页存储器的4个输出与虚拟地址31的高位位(31:12)以及进程号(PID)进行比较。并且,在不一致的情况下,输出表示不一致的未命中信号。
在此,TLB虚拟页存储器21的虚拟页(EP)包含虚拟页索引(EP_Index)的原因,是为了作为虚拟标签使用。
在TLB物理页存储器22中,使用所输入的虚拟地址31中的虚拟页索引(EP_Index)(15:12),选择各路的数据、即物理地址的页号。如后所述,由于除了发生高速缓存未命中、使其他的高速缓存无效化的情况之外,保存在TLB物理页存储器22中的物理页信息都不使用,所以也可以采用在TLB物理页存储器22的信息成为需要之后,开始对于TLB物理页存储器22的访问那样的实现。
在数据存储器23中,使用上述的虚拟地址31中的9位(15:7)和块偏移量(位(6:2)),选择各路的数据、即高速缓存块的数据。也就是说,使用所输入的虚拟地址31中的块偏移量(6:2),多路复用器23a选择1块、即1行(128字节)中的1个数据(32位)。因此,从数据存储器23,从4路输出4个高速缓存块数据,从多路复用器23a,输出与4路对应的4个数据(分别为32位)。
此外,在高速缓存状态存储器24中,使用上述的虚拟地址31中的9位(15:7),选择并输出各路的高速缓存块的状态数据(高速缓存状态的数据)。
因此,若存在从作为处理器核的CPU 11对DRAM 13的存储器读访问,则如以下那样工作。
首先,以虚拟地址31中的虚拟页索引(EP_Index)(15:12)为TLB索引,访问TLB虚拟页存储器21。也就是说,在TLB虚拟页存储器21中,以虚拟地址31中的位(15:12)为TLB索引,检索虚拟地址(31:16)以及进程号(PID)与来自CPU 11的进程号(PID)以及虚拟地址31中的虚拟页索引(EP_Index)(15:12)一致的条目。
就存在该一致的条目的路的有无而言,在具有的情况下,TLB虚拟页存储器21输出该路号(WN)。在没有一致的条目的情况下,作为TLB未命中进行处理。
以下,关于存在一致的条目的情况进行描述,而关于TLB未命中的情况,则在后面进行描述。
另一方面,以虚拟地址31中的位(15:7)为高速缓存索引,访问作为L1高速缓存的数据存储器23。并且,块偏移量(6:2)被输入至多路复用器23a。
如上所述,来自数据存储器23的各路的数据被输出。在本实施方式的结构中,由于以32位宽度传送数据,所以使用虚拟地址31中的块偏移量(6:2),从各个路的输出中,利用多路复用器23a选择1个32位宽度的数据。
然后,使用从TLB虚拟页存储器21输出的路号(WN),利用作为选择器的多路复用器23b仅选择并输出命中了的路的数据。
然后,CPU 11读出所输出的128字节中的32位数据。
此外,与从数据存储器23输出数据同时地,从状态存储器24的各路输出高速缓存状态的数据。
并且,状态存储器24也使用从TLB虚拟页存储器21输出的路号(WN),利用作为选择器的多路复用器24b仅选择并输出命中了的路的数据(图6的步骤S42)。
如果从状态存储器24输出的状态(高速缓存状态)是“无效”以外的状态,则由于从作为L1高速缓存的数据存储器23输出的数据能够使用(图6的步骤S47),所以向CPU 11输出(图6的步骤S46)。如果状态(高速缓存状态)是“无效”,则进行后面描述的高速缓存未命中的处理工作(图6的步骤S44)。
这样,在TLB与高速缓存一同命中的情况下,能够仅用虚拟地址(EA)进行处理。也就是说,在TLB与高速缓存一同命中的情况下,不需要使用TLB物理页存储器22。
接着,关于高速缓存未命中的情况进行说明。
当在TLB命中时发生了高速缓存未命中的情况下,增加以下工作。所谓当在TLB命中时发生高速缓存未命中的情况,是以下的情况:虽然TLB命中,但是由于高速缓存状态是“无效”,所以需要高速缓存的数据的从DRAM 13的读出。
TLB物理页存储器22,以虚拟地址31的虚拟页索引(EP_Index)(15:12)为索引,被进行访问,TLB物理页存储器22也是4路组相关联形式的,输出4个物理页号(39:12)。
多路复用器22b使用来自TLB虚拟页存储器21的路号(WN),从所输出的物理页号中选择一个。
在该所选择的物理页号(39:12)上,结合来自CPU 11的读请求的虚拟地址31中的低位位(11:0),生成物理地址RA(39:0),在与CPU 11的总线上使用该物理地址RA,向DRAM 13发送读请求(图6的步骤S46),若得到数据,则该数据被写入至数据存储器23的对应的区域。
(TLB未命中的情况)
在TLB未命中时,增加以下工作。
从作为主存储器的DRAM 13加载记载了相应的虚拟页的PTE(页表条目)(图4的步骤S11)。然后,物理页号(real address page number)被输入至TLB物理页CAM 25,检查是否存在同一物理页号。
在不存在同一物理页号的情况下,进行以下的登记处理(图4的步骤S17及以下的步骤)。
也就是说,根据上述读出的PTE(页表条目)求出虚拟页号,进行对于TLB虚拟页存储器21、TLB物理页存储器22以及TLB物理页CAM 25的数据的登记(图4的步骤S18、图5的步骤S31)。
在存在同一物理页号的情况(即存在别名的情况)下,进行以下的处理。
由于在TLB物理页CAM 25中存在同一物理页号,所以TLB物理页CAM 25输出存在同一物理页号的虚拟页索引(EP_Index)和路号(WN)。
在所输出的虚拟页索引(EP_Index)与根据PTE(页表条目)求取的虚拟页号的虚拟页索引(EP_Index)一致的情况下,对一致的条目进行以下的改写(图4的步骤S22)。
首先,在TLB虚拟页存储器21中,改写进程号(PID)和虚拟页(EP),并设定对应的“引用”(R)的位。并且,还进行其他所需的信息的改变。
并且,TLB物理页存储器22和TLB物理页CAM 25,由于物理页号一致,所以不进行改写。
进而,高速缓存状态存储器24和数据存储器23的内容,由于采用高速缓存的内容,所以不进行改写。
在所输出的虚拟页索引(EP_Index)与根据PTE(页表条目)求取的虚拟页号的虚拟页索引(EP_Index)不一致的情况下,进行以下的处理(图4的步骤S21)。
进行与从TLB物理页CAM 25输出的虚拟页索引(EP_Index)和路号(WN)对应的条目、即产生了别名的1个TLB条目的无效化。在无效化处理中,包含对应的虚拟页的高速缓存刷新。
进而,还进行产生了别名的另一方的TLB条目的无效化。在该无效化处理中,也包含对应的虚拟页的高速缓存刷新。
在上述2个TLB条目的无效化结束之后,在根据PTE(页表条目)求取的TLB条目中,进行预定的登记处理。
具体地,向TLB虚拟页存储器21登记进程号(PID)和虚拟页(EP)。进而,进行PTE(页表条目)的“废弃”位(Dirty bit)的写入,并设定对应的“有效”(V)位、“引用”(R)位。
并且,在TLB物理页CAM 25中,在根据PTE(页表条目)求取的TLB条目中写入物理页(RP),并设定“有效”(V)位。进而,在TLB物理页存储器22中,在根据PTE(页表条目)求取的TLB条目中,写入物理页(RP)。
此外,在不存在同一物理页号的情况(即没有别名的情况)下,进行以下的处理(图4的步骤S18,图5的步骤S32)。
进行根据PTE(页表条目)求取的TLB条目的无效化。在无效化处理中,包含对应的虚拟页的高速缓存刷新。
在TLB条目的无效化结束之后,在根据PTE(页表条目)求取的TLB条目中,进行预定的登记处理(图4的步骤S19)。
具体地,向TLB虚拟页存储器21登记进程号(PID)和虚拟页(EP)。进而,进行PTE(页表条目)的“废弃”位(Dirty bit)的写入,并设定对应的“有效”(V)位、“引用”(R)位。
并且,在TLB物理页CAM 25中,在根据PTE(页表条目)求取的TLB条目中写入物理页(RP),并设定“有效”(V)位。进而,在TLB物理页存储器22中,在根据PTE(页表条目)求取的TLB条目中,写入物理页(RP)。
接着,关于高速缓存窥探进行说明。高速缓存窥探,利用作为硬件电路的窥探器,如以下那样进行。窥探器,监视高速缓冲存储器12与DRAM13之间的总线的数据。
在窥探中使用的TLB物理页CAM 25和状态存储器24,与TLB登记用、来自CPU 11的访问用共同地使用。
如果一致性事务传送到总线上,则将所检测的物理地址(39:12)输入至TLB物理页CAM 25,检查对应的虚拟页(EP)是否被登记在了TLB虚拟页存储器21中。
如果存在对应的虚拟页(EP),则获得TLB虚拟页存储器21的虚拟页索引(EP_Index)和路号(WN)。
此外,如果对应的虚拟页(EP)不存在于TLB虚拟页存储器21中,则由于数据不存在于L1高速缓存中,所以窥探处理在其后什么也不进行。
如果存在对应的虚拟页(EP),则将所获得的虚拟页索引(EP_Index)和路号(WN)输入至高速缓存状态存储器24,从而进行高速缓存状态的检查。
与所获得的高速缓存状态和事务的种类对应地,执行预定的处理。
在本实施方式中,TLB物理页CAM 25和TLB物理页存储器22被构成为不同的存储器,但是由于除了以下的3种情况之外,它们不被访问,所以它们也可以构成为在物理上包含于相同的存储器内。这3种情况是:高速缓存未命中的情况(即,仅TLB物理页存储器22被访问)、TLB未命中时(TLB物理页CAM 25被访问从而检查别名,并且在新的TLB条目登记时登记到TLB物理页CAM 25和TLB物理页存储器22中)以及窥探时(仅TLB物理页CAM 25被访问)。
进而,如果采用本实施方式的虚拟地址高速缓冲存储器,则即使是由在不同的处理器中执行的多个进程共享的存储器空间的情况,对于虚拟地址的页也没有限制。
进而,上述的本实施方式,虽然是组相关联方式的高速缓存,但是当然也能够应用于直接映射方式的高速缓存。
如上所述,如果采用上述的实施方式的高速缓冲存储器,则由于分别设置有以虚拟地址的高位位的一部分(在此,是虚拟页索引和页偏移量)为索引的高速缓存状态存储器和数据存储器,所以能够不用以往那样的复杂的电路结构,而是在高速缓冲存储器上实现TLB的功能,并且消除别名的问题。
(第2实施方式)
接着,关于本发明的第2实施方式进行说明。
第2实施方式的虚拟地址高速缓冲存储器的基本的结构,与上述的第1实施方式相同,但是检测到别名的情况下的工作不同。
在检测到别名的情况下,在第1实施方式中,如图4的步骤S17及其以后的步骤所示,进行产生了别名的TLB条目的无效化处理。
相对于此,在本实施方式中,不进行步骤S21的处理。也就是说,不进行产生了别名的TLB条目的无效化,而登记新的条目。在本实施方式中,虽然在同一处理器的高速缓存、TLB内部产生了别名,但是通过将基于窥探实现的高速缓存一致性控制也应用于同一处理器,来解决别名。也就是说,虽然产生了别名的地址在L1高速缓存内存在多个,但是通过对于产生了别名的各个高速缓存行应用一致性协议,来保持多个高速缓存行的状态的一致性。
例如,若进程B读出进程A所写入的物理地址,则进行以下那样的工作。考虑在进程A写入之后,同一处理器上的进程B要进行读出的情况。若从进程A的虚拟地址看,则高速缓存状态是“修改了”,若从进程B的虚拟地址看,则高速缓存状态是“无效”。
若从进程B看,则其地址看作为高速缓存上“无效”状态。由于是高速缓存未命中,所以前进至图6的步骤S44,进行作为主存储的DRAM的访问。
对于该针对DRAM的访问,进行窥探。也就是说,访问图2的TLB物理页CAM 25,进程A所管理的TLB条目命中。进程A写入的高速缓存行被访问,返回“修改了”响应,从而输出数据。进程A所管理的高速缓存行成为“共享”状态。CPU 11接收进程A输出的“修改了”响应和数据。获取发出了请求的进程B所管理的高速缓存行,高速缓存状态被设定为“共享”。
在本实施方式中,在同一处理器上分时执行的进程A和进程B进行如同在不同的处理器上执行的那样的工作。
此外,在本实施方式的结构的情况下,在TLB物理页CAM 25中允许多命中。具体地,TLB物理页CAM 25的命中输出,对于每一条目分配1位,并且不进行编码。此外,与TLB物理页CAM 25允许多命中的情况对应地,高速缓存状态存储器24可实现所有条目的同时访问。具体地,高速缓存状态存储器24不用SRAM,而是利用通常的逻辑电路构成。并且,来自高速缓存状态存储器24的输出,如一致的总线的状态那样用优先编码器等进行编码。对于状态的编码,也可以采用以下等方法:以对于每一状态分配1位的方式对高速缓存状态进行编码,并且获得与状态存储器24的产生了别名的全部条目的逻辑或(OR),来得到作为状态存储器24的状态。
如果采用本实施方式的虚拟地址高速缓冲存储器,则能够得到与第1实施方式的结构相同的效果,并且能够省去产生了别名的TLB条目的无效化处理。
(第3实施方式)
接着,关于本发明的第3实施方式进行说明。
第3实施方式的虚拟地址高速缓冲存储器的基本的结构,与上述的第2实施方式相同,但是在第3实施方式中,即使产生了别名的TLB虚拟页存储器21的索引与要登记的索引一致,也不改写TLB条目。即,产生了别名的TLB虚拟页存储器21的各条目成为完全独立的控制,不进行TLB中的别名处理,产生了别名的条目间的一致***付给高速缓存一致性机构来实现。
也就是说,第3实施方式,与第2实施方式结构大致相同,但在检测出了别名的情况下,不进行TLB虚拟页存储器21的索引的检查这一点不同。
在本实施方式的TLB条目登记处理中,除去图4的步骤S17、S20、S21以及S22的处理,在步骤S16以及S24的处理之后,执行步骤S18以及S19的处理。
此外,在本实施方式的结构的情况下,硬件结构上的制约与第2实施方式相同,识别TLB物理页CAM 25中的多命中,并且高速缓存状态存储器24的多个条目能够同时访问。
如果采用本实施方式,则TLB条目完全独立,在同一处理器上执行的多个进程成为与在不同的处理器上执行的完全相同的工作。
因此,本实施方式,具有与上述的第2实施方式相同的效果,并且由于在执行多个进程时各个进程的TLB条目不被无效化,所以TLB未命中的开销减小。
(第4实施方式)
接着,关于本发明的第4实施方式进行说明。
第4实施方式的虚拟地址高速缓冲存储器,是全相关联高速缓存。
图7是本实施方式的高速缓冲存储器的结构图。
如图7所示,包括以下部件而构成:TLBCAM 21A、TLB物理页存储器22A、数据存储器23A和高速缓存状态存储器24A。
例如,成为以下的结构:以4kB页大小为单位管理高速缓存容量256kB、高速缓存行大小128字节的全相关联高速缓存。假定由TLB管理的页信息具有10位,高速缓存行的状态也具有10位。
此时,若将物理地址、虚拟地址分别设定为40位、32位,则由于本实施方式的TLBCAM 21A的大小是:
物理页号40位-12位=28位;
虚拟页号32位-12位=20位;
条目数256KB/4KB=64条目,所以:
TLB大小=(物理页号+虚拟页号+状态位)*条目数
=(28+20+10)*64
=3712位。
由于限制为以页为单位进行高速缓存的替换,所以L1高速缓存的状态存储器(相当于以往的标签存储器)的大小,其条目数大幅度地减少。
也就是说,是:
条目数=256KB/4KB=64条目;
(64条目=地址6位);
索引位数=每一路的条目数=6位;
标签位数=物理地址空间-(条目数+行大小)
=40位-(6位+12位)
=40位-18位
=22位,
由于在该结构中所需的是物理页信息,而不需要虚拟页信息,所以成为:L1标签存储器大小
=(标签位数)*条目总数+(状态位数*页内的行数*条目总数)
=(22位*64)+10位*64*32)
=1408+20480位
=21888位。
因此,在以下的条件中,仅需要TLBCAM 21A约4000位,作为L1状态存储器的高速缓存状态存储器24A约22000位,合计约26000位的存储器,这些条件是:
L1大小256kB,全组相关联(但是,管理是4kB);
TLB条目数64条目,全相关联;
最小页大小4kB;
虚拟地址/物理地址大小32位/40位;
L1行大小128字节。
与以往相比,能够用少的存储器管理L1高速缓存。每容量的标签和TLB的容量减少的原因是因为通过将L1高速缓存的标签与页号相关联,可省略。
接着,若考虑性能方面的优点,则考虑以下的状况:在同一处理器(具有相互独立的虚拟地址空间)上有2个进程工作,这2个进程共享同一物理地址页而进行数据的接收传送。将2个进程分别设定为进程A、进程B,将共享的物理页设定为RP_1,将与共享的物理页对应的进程A、进程B的虚拟页设定为EP_1A、EP_1B,考虑进程B读出进程A所更新的页的情况。
对于进程A,发出了该页的写入许可,但是对于进程B,并未发出该页的写入许可。预先制作页表,直至进程A开始生成向进程B传送的数据,才使用该物理页。此外,若进程B所使用的数据生成结束,则进程A关闭,进程B被调用。此外,设定高速缓存采用写分配、回写方式。
以下,使用图8和图9,说明共享存储器读和共享存储器写。图8是本实施方式中的共享存储器读时的流程图。图9是本实施方式中的共享存储器写时的流程图。
进程A在开始生成向进程B传送的数据时,用虚拟索引访问TLB,但是由于在图9的步骤S122中发生TLB未命中,所以将物理页RP_1与虚拟页EP_1A关联起来的页表条目被调入到TLB中(步骤S123)。此时,设置TLB的“有效”位,并且页内的各高速缓存行的状态为“无效”。由于对于进程A设定了该页的“写”位,所以进程A能够对该页进行写入。此外,在进程开始时,由于对该页未进行写入,所以该页是原始的,但是由于以存储器写进行了访问,所以设定页的“废弃”位(步骤S135)。
由于是写分配方式,所以从主存储器读出被写入的高速缓存行(步骤S44),并将该高速缓存行的状态设定为“有效”、“废弃”,从而改写TLB。此后,若进程A所进行的对于高速缓存的写入高速缓存命中,则进行高速缓存上的数据的更新,若高速缓存未命中,则在从主存储器将数据分配到高速缓存中之后,进行高速缓存的更新。由于是写分配方式,所以即使仅更新高速缓存行的一部分,该高速缓存行也可保持最新的状态。
考虑进程A所进行的对于页的写入结束,从进程A切换到进程B的状态。设定这样的情况:直至进程B开始为止,物理地址RP_1都不被访问,此外,从L1高速缓存也没有清出。若进程B访问物理地址RP_1,则由于进程ID不同所以虚拟地址未命中(步骤S102),但是物理地址命中(步骤S108)。并且,TLB的页的“有效”位和“废弃”位不改写,而进行将虚拟页号从EP_1A变为EP_1B、将进程ID从进程A变为进程B、对于进程B清除“写”位等为了进程切换而所需的操作(步骤S111)。此时,改写的仅是页信息,而高速缓存行信息未改写,也不进行高速缓存刷新。
考虑进程B指定虚拟地址空间EP_1B从而访问物理地址空间RP_1的情况。如上所述,由于虽然TLB的进程ID、虚拟页信息被进行了改写,但是TLB上的页表被保持,并且L1高速缓存的内容也保持,所以进程B能够从高速缓存读出进程A所写入的信息。关于在同一页内进程A未进行写入的区域,尽管由于高速缓存行的状态是“无效”所以发生高速缓存未命中,但是通过将数据从存储器分配到高速缓存中,能够读出正确的数据。
这样,进程B不会发生不必要的高速缓存未命中、TLB未命中,而能够从高速缓存读出与进程A的共享数据。
在因为其他的TLB未命中从而RP_1成为替换对象的情况等需要将TLB设定为无效的情况下,通过进行以下的工作能够保证***进行正确的工作。图10是本实施方式中的TLB未命中处理时的流程图。图11是本实施方式中的TLB登记处理时的流程图。
如果从本实施方式的TLB条目来看,则可以理解,高速缓存行从“有效”成为“废弃”的是具有废弃的数据的高速缓存行。将该高速缓存行写回到主存储器中,并且清除该高速缓存行的“有效”位。
此外,直至在该页中没有废弃的高速缓存行为止,进行高速缓存刷新。此外,若页内的高速缓存刷新结束,则将页设定为“无效”。
将替换对象的页表条目登记在TLB中。
在本实施方式中,在TLB未命中的情况下,增加“在TLB上是否存在RP命中的条目?”的检查(步骤S108、S128),在存在的情况下,增加改写TLB条目的一部分的处理(步骤S111、S131)。以往,若发生TLB未命中,则无条件地生成TLB未命中和TLB登记这样非常严重的处理。此外,若进程B开始对于共享存储器的访问,则对于共享存储器空间必须产生进程A的TLB条目的无效化和由该条目表示的页内的高速缓存刷新这样严重的处理。相对于此,如果采用本实施方式,则改写TLB条目这样比较轻的处理被调用的可能性增高。
此外,在本实施方式中,也可以以页为单位管理高速缓存状态。在以页为单位管理高速缓存状态的情况下,并不是按每一页偏移量保存高速缓存状态存储器24A,而是形成为按页整体一组地保存的结构。也就是说,不进行页偏移量(0~31)的解码,而是按页整体一组地保存一致性协议、例如MESI的状态。在以页为单位管理高速缓存状态的情况下,数据存储器也与图7(以及后述的图12)同样,如地址(11:0)那样,将页内的偏移量提供给数据存储器从而进行访问。也就是说,高速缓存的状态存储器以外的存储器,能够用全部相同的结构实现。
如上所述,如果采用本实施方式的虚拟地址高速缓冲存储器,则即使在全相关联方式下,也能够得到与第1实施方式的结构相同的效果。
(第5实施方式)
接着,关于本发明的第5实施方式进行说明。
第5实施方式的虚拟地址高速缓冲存储器,也是全相关联高速缓存。
图12是本实施方式的高速缓冲存储器的结构图。
如图12所示,包括以下部件而构成:TLBCAM 21B、TLB物理页存储器22B、数据存储器23B和高速缓存状态存储器24B、TLB物理页CAM25B。
在本实施方式中,成为利用TLB物理页CAM 25B,进行窥探的结构。
在本实施方式中,由于使用来自处理器核侧的虚拟地址的访问,与没有窥探结构的第4实施方式大致相同,所以省略说明。若存在使用来自处理器总线的物理地址的访问,则按以下那样的步骤进行高速缓存状态的检查。
将相当于处理器总线的物理地址的页号的位(39:12)输入至TLB物理页CAM 25B。在TLB物理页CAM 25B中,如果存在匹配的物理页,则TLB物理页CAM 25B输出条目号。如果没有匹配的物理页,则窥探结束。
用条目号访问高速缓存状态存储器24B。此时,与来自CPU 11的访问竞争,使窥探优先。
在高速缓存状态存储器24B中,检查高速缓存状态。与所发出的请求和高速缓存状态对应地确定窥探响应,并更新高速缓存状态。高速缓存状态,是MESI的“修改了”等,如果需要数据传送,则进行数据传送。
对于来自CPU 11的请求,本结构的高速缓存如以下那样输出窥探请求。
用来自CPU 11的虚拟地址31中的位(11:7),访问高速缓存状态存储器24B,并且检查高速缓存状态。高速缓存由于是全相关联的,所以存在64个候补。
同时使用虚拟地址31的位(31:12)的页号以及进程号(PID),访问TLB虚拟页CAM 21B,检查是否没有一致的条目,并且在存在的情况下,输出条目号。在没有的情况下,进行TLB未命中的处理。关于TLB未命中,由于已经进行了说明,所以省略。
在TLB命中的情况下,使用TLB虚拟页CAM 21B的条目号输出,从高速缓存状态存储器24B选择高速缓存状态。在高速缓存是M或E的情况下,不需要窥探。在这以外的情况下,根据来自作为处理器核的CPU11的请求和高速缓存状态,如果需要,则发出窥探请求。
作为需要窥探的例子,是对于状态的写或处于TLB命中条件下的高速缓存未命中。
在窥探应对结构中,窥探使用TLB物理页CAM 25B检查窥探对象的地址是否存在于高速缓存中。TLB物理页CAM 25B与TLB未命中时对于在TLB中是否存在相应条目的检查共用,但是由于TLB未命中并不频发,所以即使与窥探共用,开销也小。另一方面,虽然高速缓存状态存储器24B由于在数据高速缓存访问期间被参照所以频繁地被访问,但是由于窥探在TLB物理页CAM 25B中预先排除了不需要的事务,所以由于不需要检查不应该存在于高速缓存中的事务的高速缓存状态,所以开销小。
如上所述,如果采用本实施方式的虚拟地址高速缓冲存储器,则即使在全相关联方式下,也能够得到与第1实施方式的结构相同的效果。
(第6实施方式)
接着,关于本发明的第6实施方式进行说明。
第6实施方式的虚拟地址高速缓冲存储器,也是全相关联高速缓存。
图13是本实施方式的高速缓冲存储器的结构图。
如图13所示,包括以下部件而构成:TLBCAM 21C、TLB物理页存储器22C、数据存储器23C。
在本实施方式中,成为TLB物理页存储器22C按每一条目包含高速缓存状态的信息的结构。
如上所述,在本实施方式的全相关联方式的虚拟地址高速缓冲存储器中,也能够得到与第1实施方式的结构相同的效果。
(第7实施方式)
接着,关于本发明的第7实施方式进行说明。
本实施方式的高速缓冲存储器的TLB除了一级TLB之外,还具有二级TLB。并且,二级TLB是与高速缓存不链接、或者仅用页表而不具有变换机构的存储器。
二级TLB,与一级相同,是4路或者4路以上相关联的,包括比一级多的条目数并且包括一级。并且,在二级TLB中,“废弃”、“引用”等被进行管理。
虚拟高速缓冲存储器的结构,其高速缓存是4路组相关联的,高速缓存以页为单位被进行替换管理,高速缓存状态按高速缓存行被进行管理,别名对策如以下那样进行。
例如,虚拟索引一致,TLB的PID、虚拟页号、保护等被改写。如果虚拟索引不一致,则不使产生了别名的TLB条目无效,而保持原样。
此外,虽然在不同的索引间产生了别名,但是按高速缓存行为单位进行一致性控制,条目间的一致性,使用处理器总线的一致性机构。其结果,条目间成为一致。
(第8实施方式)
接着,关于本发明的第8实施方式进行说明。
本实施方式的高速缓冲存储器,是设置有以下机制的存储器:在进行TLB登记处理时,按从低到高的优先顺序从存储器读出由所登记的TLB条目表示的页。
在按从低到高的优先顺序的访问中,若处理器进行对于相应页中的高速缓存行的访问,则其高速缓存行按从高到低的优先顺序被访问。
以上说明的各实施方式的高速缓冲存储器,可仅用硬件来实现,也可以用包含OS在内的软件,体现为通常的具有高速缓存、TLB的处理器。
如上所述,如果采用各实施方式的高速缓冲存储器,则在具有虚拟存储机构和高速缓冲存储器的处理器中,通过以虚拟存储机构的页为单位管理高速缓存,能够通过将TLB和高速缓存的标签存储器形成为共享,来削减电路量。
进而,能够减轻虚拟高速缓存中的别名的检查处理,减轻TLB未命中时的开销。
特别地,在具有TLB和高速缓冲存储器的处理器中,通过将高速缓存的标签设定为在TLB中进行管理的页单位,由于标签存储器仅保持高速缓存状态即可,所以能够减小标签存储器的容量。
此外,通过使高速缓存的状态管理以高速缓存行为单位进行,在进程启动时,由于只要对所需的部分进行初始化即可,所以启动能够加快。在对TLB进行无效化的情况等进行高速缓存刷新的情况下,由于无需刷新页整体,而只要刷新“废弃”的高速缓存行即可,所以TLB无效化的开销变小。此外,在使用一致的高速缓存并且用共享存储器进行处理器间的通信的情况下,由于能够使用一致的高速缓存的机构,所以在实现方面、性能方面效率高。
此外,可以保持TLB的物理地址的页号,而改写虚拟地址的页号,或者通过保持高速缓存状态而改写TLB的虚拟地址的页号,当在同一处理器中,使用共享存储器进行进程间通信的情况下,由于无需进行开销大的高速缓存刷新、TLB无效化处理,并且不从高速缓存清出共享数据,所以能够提高所关注的进程的性能,并且作为***整体也不会浪费总线、存储器等的带宽。
此外,如上所述,通过具有用于窥探处理器总线的标签存储器,能够利用一致的窥探高速缓存机构。
如上所述,如果采用上述的各实施方式,则能够在高速缓冲存储器上实现TLB的功能,实现能够削减电路量的虚拟地址高速缓冲存储器以及虚拟地址高速缓存方法。
本发明并不限定于上述的实施方式,在不改变本发明的主旨的范围内,能够进行各种替换、变形等。
Claims (20)
1.一种虚拟地址高速缓冲存储器,具有:
TLB虚拟页存储器,其保存包含进程的虚拟地址的预定高位位的虚拟页标签的条目数据,并且如果来自处理器的前述虚拟页标签一致,则其输出命中信号;
数据存储器,其以前述虚拟页标签或页偏移量作为高速缓存索引,保存高速缓存数据;以及
高速缓存状态存储器,其与前述高速缓存索引对应地保存前述数据存储器中所存储的前述高速缓存数据的高速缓存状态。
2.权利要求1所述的虚拟地址高速缓冲存储器,其中:
前述数据存储器,以管理前述进程的执行的操作***的虚拟页为单位,进行前述高速缓存数据的替换。
3.权利要求1所述的虚拟地址高速缓冲存储器,其中:
前述数据存储器的高速缓存状态管理,以比页大小要小的高速缓存块为单位进行。
4.权利要求1所述的虚拟地址高速缓冲存储器,具有:
用于保持前述数据存储器的前述高速缓存数据的一致性的窥探机构。
5.权利要求1所述的虚拟地址高速缓冲存储器,其中:
除了前述虚拟地址之外,还将进程标识符等虚拟地址以外的标识号作为比较的对象。
6.权利要求1所述的虚拟地址高速缓冲存储器,具有:
保存与保存在前述数据存储器中的前述高速缓存数据对应的物理地址,并检查该物理地址的数据是否保存在了前述数据存储器中的机构。
7.权利要求6所述的虚拟地址高速缓冲存储器,其中:
能够将同一个前述物理地址登记在多个条目中。
8.权利要求6所述的虚拟地址高速缓冲存储器,其中:
不能够将同一个前述物理地址登记在多个条目中。
9.权利要求1所述的虚拟地址高速缓冲存储器,其中:
选择性地将前述虚拟地址以及其他标识符等的全部或一部分作为比较对象,仅以所指定的部分的一致看作为命中。
10.权利要求3所述的虚拟地址高速缓冲存储器,具有:
与前述高速缓存状态存储器的状态相应地进行仅相应的块的数据的替换的机构。
11.权利要求6所述的虚拟地址高速缓冲存储器,其中:
使用全相关联存储器,作为保存前述物理地址的单元。
12.权利要求11所述的虚拟地址高速缓冲存储器,其中:
前述全相关联存储器,使用也能够进行基于索引的读出的全相关联存储器。
13.权利要求1所述的虚拟地址高速缓冲存储器,其中:
前述TLB虚拟页存储器,保存前述数据存储器全体。
14.权利要求1所述的虚拟地址高速缓冲存储器,其中:
前述TLB虚拟页存储器,其保存的地址的范围比前述数据存储器全体要大。
15.权利要求1所述的虚拟地址高速缓冲存储器,另外具有:
在高速缓存未命中时,保存与前述虚拟地址对应的物理页的TLB机构。
16.一种处理器,具有:
CPU;以及
高速缓冲存储器;
其中,前述高速缓冲存储器具有:
TLB虚拟页存储器,其保存包含处理器的虚拟地址的预定高位位的虚拟页标签的条目数据,并且若来自处理器的前述虚拟页标签一致,则其输出命中信号;
数据存储器,其以前述虚拟页标签或页偏移量作为高速缓存索引,保存高速缓存数据;以及
高速缓存状态存储器,其与前述高速缓存索引对应地保存前述数据存储器中所存储的前述高速缓存数据的高速缓存状态。
17.权利要求16所述的处理器,其中:
前述数据存储器,以管理前述进程的执行的操作***的虚拟页为单位,进行前述高速缓存数据的替换。
18.权利要求15所述的处理器,其中:
前述数据存储器的高速缓存状态管理,以比页大小要小的高速缓存块为单位进行。
19.权利要求15所述的处理器,具有:
用于保持前述数据存储器的前述高速缓存数据的一致性的窥探机构。
20.一种虚拟地址高速缓存方法,包括:
如果来自处理器的前述虚拟页标签与TLB虚拟页存储器中的条目数据中的、进程的虚拟地址的预定高位位的虚拟页标签一致,则输出命中信号;
如果前述命中信号被输出,则访问数据存储器和高速缓存状态存储器,数据存储器以前述虚拟页标签或页偏移量作为高速缓存索引,保存高速缓存数据,高速缓存状态存储器与前述高速缓存索引对应地保存前述数据存储器中所存储的前述高速缓存数据的高速缓存状态。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008269940A JP5300407B2 (ja) | 2008-10-20 | 2008-10-20 | 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法 |
JP269940/2008 | 2008-10-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101727405A true CN101727405A (zh) | 2010-06-09 |
CN101727405B CN101727405B (zh) | 2012-07-18 |
Family
ID=42109532
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009102050381A Expired - Fee Related CN101727405B (zh) | 2008-10-20 | 2009-10-20 | 虚拟地址高速缓冲存储器和方法以及处理器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8949572B2 (zh) |
JP (1) | JP5300407B2 (zh) |
CN (1) | CN101727405B (zh) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662860A (zh) * | 2012-03-15 | 2012-09-12 | 天津国芯科技有限公司 | 用于进程切换的旁路转换缓冲器(tlb)及在其中地址匹配的方法 |
CN103631564A (zh) * | 2012-08-27 | 2014-03-12 | 三星电子株式会社 | 保护被高速缓存盘的数据完整性的方法 |
CN104298616A (zh) * | 2013-07-15 | 2015-01-21 | 华为技术有限公司 | 数据块初始化方法、高速缓冲存储器和终端 |
CN104699633A (zh) * | 2013-12-04 | 2015-06-10 | 瑞昱半导体股份有限公司 | 虚拟物理地址转换***及其管理方法 |
CN104714899A (zh) * | 2013-12-12 | 2015-06-17 | 国际商业机器公司 | 加载通过故障机制 |
CN104899159A (zh) * | 2014-03-06 | 2015-09-09 | 华为技术有限公司 | 高速缓冲存储器Cache地址的映射处理方法和装置 |
CN105095108A (zh) * | 2014-05-06 | 2015-11-25 | 展讯通信(上海)有限公司 | 输入输出存储器管理单元及控制方法、装置 |
CN105094953A (zh) * | 2014-05-09 | 2015-11-25 | 华为技术有限公司 | 数据访问方法及装置 |
WO2016012831A1 (en) * | 2014-07-21 | 2016-01-28 | Via Alliance Semiconductor Co., Ltd. | Simultaneous invalidation of all address translation cache entries associated with x86 process context identifier |
CN106168930A (zh) * | 2015-05-18 | 2016-11-30 | 想象技术有限公司 | 转换后备缓冲器 |
CN106933749A (zh) * | 2015-12-31 | 2017-07-07 | 北京国睿中数科技股份有限公司 | 应用于缓存验证***的地址随机方法和装置 |
US9824023B2 (en) | 2013-11-27 | 2017-11-21 | Realtek Semiconductor Corp. | Management method of virtual-to-physical address translation system using part of bits of virtual address as index |
CN107818053A (zh) * | 2016-09-13 | 2018-03-20 | 晶心科技股份有限公司 | 用于存取高速缓存的方法与装置 |
CN107885596A (zh) * | 2017-06-22 | 2018-04-06 | 叶雅敏 | 用于音视频解码、编码的高频访问内存的程序优化方法 |
CN107992433A (zh) * | 2017-12-19 | 2018-05-04 | 北京云知声信息技术有限公司 | 二级缓存检测方法及装置 |
CN108710584A (zh) * | 2018-05-22 | 2018-10-26 | 郑州云海信息技术有限公司 | 一种提高tlb刷新效率的方法 |
CN110235101A (zh) * | 2017-01-13 | 2019-09-13 | 优创半导体科技有限公司 | 可变转换后备缓冲器(tlb)编索引 |
CN110291510A (zh) * | 2017-02-24 | 2019-09-27 | 超威半导体公司 | 流转换后备缓冲器 |
CN113157606A (zh) * | 2021-04-21 | 2021-07-23 | 上海燧原科技有限公司 | 一种缓存器实现方法、装置和数据处理设备 |
CN116897342A (zh) * | 2021-03-10 | 2023-10-17 | 美光科技公司 | 存储器装置的偏压控制 |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9239799B2 (en) * | 2008-06-26 | 2016-01-19 | Qualcomm Incorporated | Memory management unit directed access to system interfaces |
JP2011095852A (ja) * | 2009-10-27 | 2011-05-12 | Toshiba Corp | キャッシュメモリ制御回路 |
US8862827B2 (en) * | 2009-12-29 | 2014-10-14 | International Business Machines Corporation | Efficient multi-level software cache using SIMD vector permute functionality |
JP2011198091A (ja) | 2010-03-19 | 2011-10-06 | Toshiba Corp | 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム |
US8671245B2 (en) * | 2010-12-27 | 2014-03-11 | Lsi Corporation | Using identification in cache memory for parallel requests |
WO2012156850A1 (en) * | 2011-05-19 | 2012-11-22 | International Business Machines Corporation | Managing the translation look-aside buffer (tlb) of an emulated machine |
JP2013097416A (ja) * | 2011-10-28 | 2013-05-20 | Hitachi Ltd | 記憶装置および計算機 |
US9323691B2 (en) * | 2012-03-08 | 2016-04-26 | Freescale Semiconductor, Inc. | Multiple page size memory management unit |
CN103207844B (zh) * | 2013-04-18 | 2017-06-06 | 上海云间半导体科技有限公司 | 缓存***及缓存访问方法 |
US9593571B2 (en) * | 2013-05-30 | 2017-03-14 | Schlumberger Technology Coproration | Determining correct drill pipe length and formation depth using measurements from repeater subs of a wired drill pipe system |
JP6088951B2 (ja) | 2013-09-20 | 2017-03-01 | 株式会社東芝 | キャッシュメモリシステムおよびプロセッサシステム |
US9665372B2 (en) | 2014-05-12 | 2017-05-30 | International Business Machines Corporation | Parallel slice processor with dynamic instruction stream mapping |
US9672043B2 (en) | 2014-05-12 | 2017-06-06 | International Business Machines Corporation | Processing of multiple instruction streams in a parallel slice processor |
WO2016009247A1 (en) * | 2014-07-14 | 2016-01-21 | Via Alliance Semiconductor Co., Ltd. | Cache system with primary cache and overflow cache that use different indexing schemes |
US9760375B2 (en) | 2014-09-09 | 2017-09-12 | International Business Machines Corporation | Register files for storing data operated on by instructions of multiple widths |
US9720696B2 (en) | 2014-09-30 | 2017-08-01 | International Business Machines Corporation | Independent mapping of threads |
US9697137B2 (en) * | 2014-11-14 | 2017-07-04 | Cavium, Inc. | Filtering translation lookaside buffer invalidations |
US9684606B2 (en) * | 2014-11-14 | 2017-06-20 | Cavium, Inc. | Translation lookaside buffer invalidation suppression |
US9977678B2 (en) | 2015-01-12 | 2018-05-22 | International Business Machines Corporation | Reconfigurable parallel execution and load-store slice processor |
US10133576B2 (en) | 2015-01-13 | 2018-11-20 | International Business Machines Corporation | Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries |
US10133581B2 (en) | 2015-01-13 | 2018-11-20 | International Business Machines Corporation | Linkable issue queue parallel execution slice for a processor |
JP5974133B1 (ja) | 2015-03-20 | 2016-08-23 | 株式会社東芝 | メモリシステム |
US9983875B2 (en) | 2016-03-04 | 2018-05-29 | International Business Machines Corporation | Operation of a multi-slice processor preventing early dependent instruction wakeup |
US10037211B2 (en) | 2016-03-22 | 2018-07-31 | International Business Machines Corporation | Operation of a multi-slice processor with an expanded merge fetching queue |
US10346174B2 (en) | 2016-03-24 | 2019-07-09 | International Business Machines Corporation | Operation of a multi-slice processor with dynamic canceling of partial loads |
US10761854B2 (en) | 2016-04-19 | 2020-09-01 | International Business Machines Corporation | Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor |
US10061712B2 (en) * | 2016-05-10 | 2018-08-28 | Oracle International Corporation | Virtual memory page mapping overlays |
US10037229B2 (en) | 2016-05-11 | 2018-07-31 | International Business Machines Corporation | Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions |
US9934033B2 (en) | 2016-06-13 | 2018-04-03 | International Business Machines Corporation | Operation of a multi-slice processor implementing simultaneous two-target loads and stores |
US10042647B2 (en) | 2016-06-27 | 2018-08-07 | International Business Machines Corporation | Managing a divided load reorder queue |
US10318419B2 (en) | 2016-08-08 | 2019-06-11 | International Business Machines Corporation | Flush avoidance in a load store unit |
GB2560336B (en) * | 2017-03-07 | 2020-05-06 | Imagination Tech Ltd | Address generators for verifying integrated circuit hardware designs for cache memory |
US10831664B2 (en) * | 2017-06-16 | 2020-11-10 | International Business Machines Corporation | Cache structure using a logical directory |
US10698836B2 (en) | 2017-06-16 | 2020-06-30 | International Business Machines Corporation | Translation support for a virtual cache |
GB2571536B (en) * | 2018-02-28 | 2020-03-11 | Imagination Tech Ltd | Coherency manager |
US10846235B2 (en) | 2018-04-28 | 2020-11-24 | International Business Machines Corporation | Integrated circuit and data processing system supporting attachment of a real address-agnostic accelerator |
US11106600B2 (en) * | 2019-01-24 | 2021-08-31 | Advanced Micro Devices, Inc. | Cache replacement based on translation lookaside buffer evictions |
US10936493B2 (en) | 2019-06-19 | 2021-03-02 | Hewlett Packard Enterprise Development Lp | Volatile memory cache line directory tags |
CN112231241B (zh) * | 2019-07-15 | 2023-02-17 | 深圳市中兴微电子技术有限公司 | 一种数据读取方法和装置、计算机可读存储介质 |
US11593109B2 (en) | 2021-06-07 | 2023-02-28 | International Business Machines Corporation | Sharing instruction cache lines between multiple threads |
US11593108B2 (en) | 2021-06-07 | 2023-02-28 | International Business Machines Corporation | Sharing instruction cache footprint between multiple threads |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01288940A (ja) * | 1988-05-16 | 1989-11-21 | Nec Corp | 論理アドレスキャッシュ制御方式 |
JPH0245847A (ja) * | 1988-08-06 | 1990-02-15 | Nec Corp | 仮想アドレスキャッシュ制御装置 |
JPH02253356A (ja) | 1989-03-28 | 1990-10-12 | Toshiba Corp | 階層キャッシュメモリ装置とその制御方式 |
JPH0383150A (ja) * | 1989-08-28 | 1991-04-09 | Fujitsu Ltd | アドレス変換機構付キャッシュ装置の制御方式 |
JP2818249B2 (ja) | 1990-03-30 | 1998-10-30 | 株式会社東芝 | 電子計算機 |
EP0488819B1 (en) | 1990-11-30 | 1999-01-13 | Kabushiki Kaisha Toshiba | Conditional branch instructions execution apparatus |
JPH04235648A (ja) * | 1991-01-11 | 1992-08-24 | Nec Corp | 論理キャッシュメモリ装置 |
JPH04328655A (ja) * | 1991-04-30 | 1992-11-17 | Toshiba Corp | キャッシュメモリ |
US5634027A (en) | 1991-11-20 | 1997-05-27 | Kabushiki Kaisha Toshiba | Cache memory system for multiple processors with collectively arranged cache tag memories |
US5627987A (en) | 1991-11-29 | 1997-05-06 | Kabushiki Kaisha Toshiba | Memory management and protection system for virtual memory in computer system |
US5826057A (en) | 1992-01-16 | 1998-10-20 | Kabushiki Kaisha Toshiba | Method for managing virtual address space at improved space utilization efficiency |
US5522058A (en) | 1992-08-11 | 1996-05-28 | Kabushiki Kaisha Toshiba | Distributed shared-memory multiprocessor system with reduced traffic on shared bus |
US5530824A (en) * | 1994-04-04 | 1996-06-25 | Motorola, Inc. | Address translation circuit |
JP2005108262A (ja) * | 1994-09-09 | 2005-04-21 | Renesas Technology Corp | データ処理装置 |
JPH08185359A (ja) | 1994-10-31 | 1996-07-16 | Toshiba Corp | メモリサブシステム |
US5682495A (en) * | 1994-12-09 | 1997-10-28 | International Business Machines Corporation | Fully associative address translation buffer having separate segment and page invalidation |
US5881264A (en) | 1996-01-31 | 1999-03-09 | Kabushiki Kaisha Toshiba | Memory controller and memory control system |
JP2916420B2 (ja) | 1996-09-04 | 1999-07-05 | 株式会社東芝 | チェックポイント処理加速装置およびデータ処理方法 |
US6161166A (en) * | 1997-11-10 | 2000-12-12 | International Business Machines Corporation | Instruction cache for multithreaded processor |
US6493790B1 (en) * | 1998-01-30 | 2002-12-10 | Sun Microsystems, Inc. | Translation-lookaside buffer with current tracking reference circuit |
JP4303803B2 (ja) | 1998-04-22 | 2009-07-29 | 株式会社東芝 | キャッシュフラッシュ装置 |
US6412043B1 (en) * | 1999-10-01 | 2002-06-25 | Hitachi, Ltd. | Microprocessor having improved memory management unit and cache memory |
US6868485B1 (en) * | 2002-09-27 | 2005-03-15 | Advanced Micro Devices, Inc. | Computer system with integrated directory and processor cache |
US20040117587A1 (en) * | 2002-12-12 | 2004-06-17 | International Business Machines Corp. | Hardware managed virtual-to-physical address translation mechanism |
US7103748B2 (en) | 2002-12-12 | 2006-09-05 | International Business Machines Corporation | Memory management for real-time applications |
US20050027960A1 (en) * | 2003-07-31 | 2005-02-03 | International Business Machines Corporation | Translation look-aside buffer sharing among logical partitions |
US7093100B2 (en) * | 2003-11-14 | 2006-08-15 | International Business Machines Corporation | Translation look aside buffer (TLB) with increased translational capacity for multi-threaded computer processes |
US7562179B2 (en) * | 2004-07-30 | 2009-07-14 | Intel Corporation | Maintaining processor resources during architectural events |
US7805588B2 (en) * | 2005-10-20 | 2010-09-28 | Qualcomm Incorporated | Caching memory attribute indicators with cached memory data field |
JP2008226141A (ja) | 2007-03-15 | 2008-09-25 | Toshiba Corp | プログラムおよび情報処理装置 |
JP2008262390A (ja) | 2007-04-12 | 2008-10-30 | Toshiba Corp | プログラム |
JP2009020696A (ja) | 2007-07-11 | 2009-01-29 | Toshiba Corp | 情報処理装置及びシステム |
-
2008
- 2008-10-20 JP JP2008269940A patent/JP5300407B2/ja not_active Expired - Fee Related
-
2009
- 2009-10-16 US US12/580,732 patent/US8949572B2/en not_active Expired - Fee Related
- 2009-10-20 CN CN2009102050381A patent/CN101727405B/zh not_active Expired - Fee Related
Cited By (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662860B (zh) * | 2012-03-15 | 2015-07-01 | 天津国芯科技有限公司 | 用于进程切换的旁路转换缓冲器(tlb)及在其中地址匹配的方法 |
CN102662860A (zh) * | 2012-03-15 | 2012-09-12 | 天津国芯科技有限公司 | 用于进程切换的旁路转换缓冲器(tlb)及在其中地址匹配的方法 |
CN103631564B (zh) * | 2012-08-27 | 2017-03-22 | 三星电子株式会社 | 保护被高速缓存盘的数据完整性的方法 |
CN103631564A (zh) * | 2012-08-27 | 2014-03-12 | 三星电子株式会社 | 保护被高速缓存盘的数据完整性的方法 |
CN104298616A (zh) * | 2013-07-15 | 2015-01-21 | 华为技术有限公司 | 数据块初始化方法、高速缓冲存储器和终端 |
CN104298616B (zh) * | 2013-07-15 | 2017-10-17 | 华为技术有限公司 | 数据块初始化方法、高速缓冲存储器和终端 |
US9824023B2 (en) | 2013-11-27 | 2017-11-21 | Realtek Semiconductor Corp. | Management method of virtual-to-physical address translation system using part of bits of virtual address as index |
CN104699633A (zh) * | 2013-12-04 | 2015-06-10 | 瑞昱半导体股份有限公司 | 虚拟物理地址转换***及其管理方法 |
CN104699633B (zh) * | 2013-12-04 | 2019-04-23 | 瑞昱半导体股份有限公司 | 虚拟物理地址转换***及其管理方法 |
CN104714899A (zh) * | 2013-12-12 | 2015-06-17 | 国际商业机器公司 | 加载通过故障机制 |
CN104714899B (zh) * | 2013-12-12 | 2018-01-02 | 国际商业机器公司 | 加载通过故障机制 |
CN104899159A (zh) * | 2014-03-06 | 2015-09-09 | 华为技术有限公司 | 高速缓冲存储器Cache地址的映射处理方法和装置 |
US9984003B2 (en) | 2014-03-06 | 2018-05-29 | Huawei Technologies Co., Ltd. | Mapping processing method for a cache address in a processor to provide a color bit in a huge page technology |
CN104899159B (zh) * | 2014-03-06 | 2019-07-23 | 华为技术有限公司 | 高速缓冲存储器Cache地址的映射处理方法和装置 |
WO2015131853A1 (zh) * | 2014-03-06 | 2015-09-11 | 华为技术有限公司 | 高速缓冲存储器Cache地址的映射处理方法和装置 |
CN105095108A (zh) * | 2014-05-06 | 2015-11-25 | 展讯通信(上海)有限公司 | 输入输出存储器管理单元及控制方法、装置 |
CN105094953B (zh) * | 2014-05-09 | 2018-09-07 | 华为技术有限公司 | 数据访问方法及装置 |
CN105094953A (zh) * | 2014-05-09 | 2015-11-25 | 华为技术有限公司 | 数据访问方法及装置 |
US9727480B2 (en) | 2014-07-21 | 2017-08-08 | Via Alliance Semiconductor Co., Ltd. | Efficient address translation caching in a processor that supports a large number of different address spaces |
US9842055B2 (en) | 2014-07-21 | 2017-12-12 | Via Alliance Semiconductor Co., Ltd. | Address translation cache that supports simultaneous invalidation of common context entries |
US9760496B2 (en) | 2014-07-21 | 2017-09-12 | Via Alliance Semiconductor Co., Ltd. | Simultaneous invalidation of all address translation cache entries associated with an X86 process context identifier |
WO2016012831A1 (en) * | 2014-07-21 | 2016-01-28 | Via Alliance Semiconductor Co., Ltd. | Simultaneous invalidation of all address translation cache entries associated with x86 process context identifier |
CN106168930A (zh) * | 2015-05-18 | 2016-11-30 | 想象技术有限公司 | 转换后备缓冲器 |
CN106933749A (zh) * | 2015-12-31 | 2017-07-07 | 北京国睿中数科技股份有限公司 | 应用于缓存验证***的地址随机方法和装置 |
CN107818053A (zh) * | 2016-09-13 | 2018-03-20 | 晶心科技股份有限公司 | 用于存取高速缓存的方法与装置 |
CN107818053B (zh) * | 2016-09-13 | 2021-06-15 | 晶心科技股份有限公司 | 用于存取高速缓存的方法与装置 |
CN110235101A (zh) * | 2017-01-13 | 2019-09-13 | 优创半导体科技有限公司 | 可变转换后备缓冲器(tlb)编索引 |
CN110291510A (zh) * | 2017-02-24 | 2019-09-27 | 超威半导体公司 | 流转换后备缓冲器 |
CN110291510B (zh) * | 2017-02-24 | 2023-12-08 | 超威半导体公司 | 流转换后备缓冲器 |
CN107885596A (zh) * | 2017-06-22 | 2018-04-06 | 叶雅敏 | 用于音视频解码、编码的高频访问内存的程序优化方法 |
CN107885596B (zh) * | 2017-06-22 | 2021-06-15 | 叶雅敏 | 用于音视频解码、编码的高频访问内存的程序优化方法 |
CN107992433A (zh) * | 2017-12-19 | 2018-05-04 | 北京云知声信息技术有限公司 | 二级缓存检测方法及装置 |
CN108710584A (zh) * | 2018-05-22 | 2018-10-26 | 郑州云海信息技术有限公司 | 一种提高tlb刷新效率的方法 |
CN116897342A (zh) * | 2021-03-10 | 2023-10-17 | 美光科技公司 | 存储器装置的偏压控制 |
CN113157606A (zh) * | 2021-04-21 | 2021-07-23 | 上海燧原科技有限公司 | 一种缓存器实现方法、装置和数据处理设备 |
Also Published As
Publication number | Publication date |
---|---|
US8949572B2 (en) | 2015-02-03 |
JP2010097558A (ja) | 2010-04-30 |
CN101727405B (zh) | 2012-07-18 |
US20100100685A1 (en) | 2010-04-22 |
JP5300407B2 (ja) | 2013-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101727405B (zh) | 虚拟地址高速缓冲存储器和方法以及处理器 | |
US5369753A (en) | Method and apparatus for achieving multilevel inclusion in multilevel cache hierarchies | |
JP3281893B2 (ja) | キャッシュ・メモリ階層内で利用するキャッシュ・コヒーレンシ機構を実施するための方法およびシステム | |
US9081711B2 (en) | Virtual address cache memory, processor and multiprocessor | |
US6243794B1 (en) | Data-processing system with CC-NUMA (cache-coherent, non-uniform memory access) architecture and remote cache incorporated in local memory | |
CN101446923B (zh) | 一种响应于指令而清洗高速缓冲存储器线的装置和方法 | |
EP0062165B1 (en) | Multiprocessors including private and shared caches | |
EP0945805B1 (en) | A cache coherency mechanism | |
JP2662603B2 (ja) | 無効要求を選別する方法及び装置 | |
US6321297B1 (en) | Avoiding tag compares during writes in multi-level cache hierarchy | |
US8417915B2 (en) | Alias management within a virtually indexed and physically tagged cache memory | |
US8782348B2 (en) | Microprocessor cache line evict array | |
US11144458B2 (en) | Apparatus and method for performing cache maintenance over a virtual page | |
US8145870B2 (en) | System, method and computer program product for application-level cache-mapping awareness and reallocation | |
US8621152B1 (en) | Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access | |
JPH0340046A (ja) | キャッシュメモリ制御方式および情報処理装置 | |
US7325102B1 (en) | Mechanism and method for cache snoop filtering | |
US7461212B2 (en) | Non-inclusive cache system with simple control operation | |
US7743215B2 (en) | Cache-memory control apparatus, cache-memory control method and computer product | |
US6901450B1 (en) | Multiprocessor machine and cache control method for providing higher priority to shared cache that is accessed by multiprocessors | |
US20030033483A1 (en) | Cache architecture to reduce leakage power consumption | |
US5636365A (en) | Hierarchical buffer memories for selectively controlling data coherence including coherence control request means | |
JPH0529943B2 (zh) | ||
KR0145454B1 (ko) | 분산된 공유 메모리를 갖는 다중 프로세서 | |
JPH01226056A (ja) | アドレス変換回路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120718 Termination date: 20161020 |