CN1397887A - 一种将储存数据重新导向的虚拟集合高速缓存 - Google Patents
一种将储存数据重新导向的虚拟集合高速缓存 Download PDFInfo
- Publication number
- CN1397887A CN1397887A CN02118553A CN02118553A CN1397887A CN 1397887 A CN1397887 A CN 1397887A CN 02118553 A CN02118553 A CN 02118553A CN 02118553 A CN02118553 A CN 02118553A CN 1397887 A CN1397887 A CN 1397887A
- Authority
- CN
- China
- Prior art keywords
- virtual
- virtual set
- address
- high speed
- speed 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
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
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
本发明涉及避免虚拟集合储存错误惩罚的虚拟集合高速缓存。当一储存动作查寻期间,仅有该储存地址的未转换的物理地址位才会被用来索引该高速缓存数组。在实施例中,该物理地址位选择快取线的四个虚拟集合。在选择该虚拟集合的同时,一个转换参照缓冲器将该储存地址的虚拟部分转换为物理地址。比较器将比较该虚拟集合的所有标志与转换后的物理地址,以判断其是否匹配。如果匹配,即使并非是该储存地址的原始虚拟地址位所指定的集合,该高速缓存将显示一个命中信号。该匹配的虚拟集合、路以及状态将在更新过程中记忆并使用以储存该数据。
Description
技术领域
本发明涉及一种微处理器的高速缓存(microprocessor cache),特别涉及一种将储存数据重新导向而更正虚拟集合以避免虚拟集合储存失误的惩罚的虚拟集合高速缓存(virtual set cache)。
背景技术
由于在微处理器内存取物理内存(physical memory)须花费较长的时间,因此现今的微处理器包括了用来储存大部分最新存取数据的数据高速缓存(data cache),以避免须将数据由物理内存下载或将数据储存至物理内存中。为了效率,数据高速缓存并不会以字节为间隔基础(bytegranularity basis)的方式存取数据。相反地,数据高速缓存一般会以高速存取序列(或称为快取线)为间隔基础(cache line granularitybasis)的方式存取数据。一个典型的快取线(cache line)的大小为32个字节。
数据高速缓存的容量较物理内存小。因此,当一个数据高速缓存存取一行数据时,它也必须记住该数据的地址,以便之后当一个新的指令须在内存中执行该存取数据时,它可以比较该新数据地址与该数据的地址,或者称为标志(tag),是否匹配(match)。当新的指令欲存取一内存地址时,该数据高速缓存便将该新内存地址与其它地址或标志相对照,若可匹配,则代表内存中已储存。如果该新地址与标志之一匹配,代表该笔数据已在高速缓存中,因此该高速缓存便将该数据提供给该微处理器的请求部分(requesting portion),而非再由微处理器自内存中取得该数据。数据在数据高速缓存中的情形,称为快取命中(cache hit)。
数以百计用于快取线(cache lines)的标志被快取地储存(cached)于数据高速缓存(data cache)中。要将新的地址与储存在高速缓存内数以百计的标志做比较,将花费相当久的时间并且会使该高速缓存处理速度变慢。因此,高速缓存便以集合数组(arrays of sets)的方式排列。每一个集合包括了一个或是多个快取线。一个典型的高速缓存排列是在一个集合上包括了四个快取线。其中的每一个快取线皆以不同的存取方式进行。一个具有四个快取线(cache lines)的高速缓存通常被称为四路集合关联高速缓存(four-way set associative cache)。通常当一个新的快取线被储存至一个集合中时,该集合中近来最少使用的快取线(the leastrecently used cache line)将被选出而被该新快取线取代。
通过将高速缓存排列为一个集合的数组,将该新地址与高速缓存中已储存的地址相对照(compare)所需的时间,将减少到以下所述的可被接受的程度。当一个快取线被储存至该高速缓存中后,该高速缓存并未让该快取线储存至该数组中的任一集合。相反地,该快取线可储存的集合已因该快取线的地址而受到限制。该新地址的较低阶位被用来选择在数组中唯一的一个集合。用来从数组中选择一个集合的地址位称为索引(index)。由于高速缓存的容量较物理内存小,因此该索引仅需纪录该低阶位。意即,因为储存在高速缓存中的快取线数目远低于储存在物理内存中的快取线数目,便只需要在高速缓存中制作数目较少的地址位索引。一但高速缓存通过索引而选择了一个集合,该高速缓存便只需将被选择的集合中该快取线的标志与该新地址相对照,以判断快取命中是否发生。
该索引所需要的地址位数目决定于该数组中的集合数目。举例来说,如果该高速缓存有512个集合,则需要9个地址位来为该集合制作索引。该地址位中的哪一个将作为索引决定于快取线的尺寸。举例来说,如果该快取线的尺寸是32个字节,因为该地址中低阶的5个位仅用来选择快取线内的一个字节,因此便不会被使用。因此,对于一个内有由大小为32个字节的快取线所组成的512个集合的高速缓存,地址位13:5被用来作为索引。
现代的微处理器也支持虚拟内存的概念。在一个虚拟内存***中,程序指令利用虚拟的地址存取数据。该虚拟的地址很少与物理地址(physical address)相同,物理地址指物理内存中该数据所储存的地址。该物理地址是使用于该处理器的总线(bus)中,以用来存取物理内存。此外,当该程序指令存取被该虚拟内存地址所指定的数据时,该数据甚至可能不会在物理内存中。相反地,该数据也可能会存在一第二个储存装置中,一般为磁盘(disk drive)。
操作***管理介于磁盘储存装置与物理内存之间因执行程序指令而必要的数据交换。该操作***也管理虚拟地址对物理地址的指定工作,并维持通过微处理器将虚拟地址转换为物理地址的转换表(translationtable)。现代的微处理器包括一转换参照缓冲器(translation lookasidebuffer,TLB),其能存取最常存取的虚拟地址的物理地址的转换,以避免微处理器仍须存取该转换表来完成该转换工作。
典型的虚拟内存为分页式内存***((paging memory system)。在一分页式内存***中,物理内存分成许多页,每一页通常为4KB大小。因此,只有该虚拟地址的高位(upper bits)需要被转换成物理地址,而该虚拟地址的低位(lower bits)是不需被转换为物理地址的。即,该低位与该物理地址位是相同的,可作为该物理分页基址(base address)的物理字节偏移(physical byte offset)。该物理分页的基址由该虚拟地址的高位所转换而来。例,在一个有4KB个分页的分页式***中,该虚拟地址的低12位(位11:0)是不被转换的,其即为物理地址位。因此,若该虚拟地址为32位,则该虚拟地址的高20位(位31:12)将利用该转换表而被转换,并且将存取在转换参照缓冲器中。
虚拟内存***的另一个效果(effect),是两个不同的程序可利用两个不同的虚拟地址在内存中存取相同的物理位置,高速缓存可利用该物理位置追踪该存取数据以确保数据的一致性。意即这些物理地址即为标志,另外物理地址应被作为索引。然而,利用物理地址作为索引可能会因下述的原因而减损(detrimental)效能。
较大的高速缓存一直是我们所持续追求的目标,而微处理器集成电路在集成度上的改善,使得现今的微处理器可包括相对大容量的高速缓存。接续所述的例子,现在假设在一个分页为4KB大小的分页式***中,具有一个64KB的四路集合关联高速缓存,其快取线为32字节(byte)。在该四个快取线的集合中,每一个集合包括128字节(byte)的数据。这将在该数组形成512个集合。如我们之前所讨论的,其索引将位于地址位13:5处。然而,我们得知地址位13:12也是转换的地址位,即虚拟的地址位,而非物理的地址位。
一个解决的方法是等待该转换参照缓冲器转换虚拟地址位13:12并将该转换后的物理地址位13:12作为该索引的两个高位。然而,这个解决方式由于必须等待转换参照缓冲器完成其转换工作,以利用物理地址位13:12为高速缓存制作索引以取得或储存数据,因此将花费较久的时间而会减损效能。潜在的结果是不仅该微处理器的运作时间将增加,而且须为微处理器增加另一个步骤以顺应该额外转换参照缓冲器的查找时间,避免增长该运作时间。
为了避免由于等待该转换参照缓冲器(TLB)所需要的转换后的物理地址位来提供索引而带来的惩罚(penalty),该微处理器可利用索引中的一些虚拟位,如所述例子中的虚拟地址位13:12。利用一些虚拟地址位作为索引的高速缓存便称为虚拟集合高速缓存。该高速缓存是一虚拟的集合高速缓存,因其对一已知的快取线将储存于高速缓存数组中的哪一个集合不再具有决定性。更确切地说,该快取线因该索引中的虚拟地址位而具有指向同一个物理高速缓存线的多个数值,因此可能被储存于多个集合中的一个集合。快取线可能被储存于其内的数个集合便称作是虚拟集合。利用所述的例子,一包括01数值、物理地址位13:12的快取线能被四个不同的虚拟地址存取。意即,该快取线不只是能在13:12的虚拟地址位被存取01的数值,更可以被存取00、10以及11等数值。因此,该快取线能储存于该高速缓存中四个不同的虚拟集合中的一个集合。在该物理地址位上被选择的集合便称为物理集合。
该虚拟集合高速缓存的一个负面结果是可能造成一种所谓的虚拟集合错误(virtual set miss)。当一指令存取在高速缓存中的数据时,由于索引部分是虚拟的,因此,该索引选择除了具有该快取线存在的虚拟集合以外的一个虚拟集合,即除了物理集合以外的一个虚拟集合,则虚拟集合错误(virtual set miss)便会发生。由储存行为产生的虚拟集合错误便是虚拟集合储存错误。
本发明的发明人已测试编码纪录(code traces)并观察到:windows98操作***常常执行近200个指令中的两个指令,利用两个不同的虚拟地址来储存至同一个物理内存地址。这些指令代表了一虚拟集合储存错误在一虚拟集合高速缓存中发生的状况。因此,此处所需要的是让虚拟集合高速缓存中不会产生虚拟集合储存错误的惩罚(virtual set store misspenalty)。
发明内容
[0016]本发明提供了一个避免造成虚拟集合储存错误惩罚的虚拟集合高速缓存。因此,为了达到所述目的,本发明的特征在于提供一虚拟集合高速缓存,该虚拟集合高速缓存包括一2N个集合的快取线以及关联标志(associated tag)的数组。该虚拟集合高速缓存还包括一个与数组对应的索引(index),该索引包括储存地址中的M个未转换的物理地址位,该物理地址位自2N个集合中选择2N-M个虚拟集合。该虚拟集合还包括与该数组对应的数个比较器(comparators),其将比较该2N-M个虚拟集合中的关联标志与该储存地址的多重的转换后的物理地址位。该虚拟集合高速缓存还包括与该比较器对应的命中信号(hit signal),若该2N-M个虚拟集合的关联标志之一与该储存地址的多个转换物理地址位相匹配,则该虚拟集合高速缓存中将显示该命中信号。
[0017]另一方面,本发明的特征在提供一个微处理器,该微处理器包括一个转换参照缓冲器(TLB),其接收一个储存动作的虚拟分页号码并提供该虚拟分页号码的物理分页地址。该微处理器还包括一与转换参照缓冲器对应的虚拟集合高速缓存,其获得该储存动作的物理快取线偏移。该物理快取线偏移选择在该虚拟集合高速缓存中的多个虚拟集合。该虚拟集合高速缓存查寻该数个虚拟集合中哪一个集合具有由转换参照缓冲器所提供的物理分页地址所作的储存动作指定的快取线。该微处理器还包括一与该虚拟集合高速缓存对应的地址缓存器(address register),其储存了一匹配虚拟集合数字(matching virtual set number),该匹配虚拟集合数字由该储存动作所指定的多个虚拟集合中指定一个集合。如果该虚拟集合高速缓存显示一部分用来制作索引的虚拟分页号码,该虚拟集合高速缓存中会产生虚拟集合储存错误,则该微处理器便依据地址缓存器的匹配虚拟集合数字来更新该快取线。
[0018]另一方面,本发明的特征在于提供一种将受到储存指令地址所指定的数据储存至虚拟集合高速缓存的方法。该方法包括了在高速缓存内利用该储存指令的地址上未转换的物理地址位制作索引,以由快取线选择多个虚拟集合以及关联标志。该方法也包括将该储存指令的地址上的虚拟地址位转换为转换后的物理地址位,并比较该关联标志与该转换后的物理地址位。该方法也包括利用比较的结果,储存数个虚拟集合中的一个匹配集合的匹配虚拟集合数字。该方法也包括如果该数个虚拟集合中的一个虚拟集合,与受到该储存指令虚拟地址位指定的虚拟集合不相同的话,则利用该匹配的虚拟集合数字更新数个虚拟集合中的一个匹配集合,以在该高速缓存中制作索引。
[0019]本发明的优点在于可在不需大量的额外逻辑的情况下避免该虚拟集合储存错误惩罚。
[0020]本发明的所述及其它目的、特征及优点可由下述详细说明并配合附图说明而更得以彰显。
附图说明
图1为本发明的流水线式(pipelined)微处理器的方框图;
图2为图1中本发明的虚拟集合高速缓存的方框图;
图3为图2中本发明的虚拟集合选择位多工器的运作表格;
图4为图2中本发明的标志与状态数组的方框图;
图5为图1中本发明的虚拟集合高速缓存的运作流程图;
图6为本发明中将两个相异的虚拟储存地址,如图1中的储存地址,转换为相同的物理地址的方框图;
图7为本发明中经储存指令的三次执行动作后,在该数据高速缓存中所成功产生三个内容的方框图。图号说明:
100 流水线式微处理器 101 D阶段与G阶段
103 储存地址 104 数据高速缓存
104A 数据高速缓存 104B 数据高速缓存104C数据高速缓存 105虚拟分页号码106转换参照缓冲器 107转换后的物理地址位109物理分页偏移 111执行阶段112缓存器 113算术逻辑单元114执行阶段的缓存器 115多工器116执行阶段的缓存器 118执行阶段的缓存器119执行阶段的缓存器 121储存阶段122储存阶段的缓存器 124储存阶段的缓存器126储存阶段的缓存器 127储存阶段的缓存器128储存阶段的缓存器 129储存阶段的缓存器131回写阶段 132回写阶段的缓存器133多工器 134回写阶段的缓存器136回写阶段的缓存器 137回写阶段的缓存器138回写阶段的缓存器 139回写阶段的缓存器141储存缓冲阶段 142储存缓冲144储存缓冲阶段的缓存器 146储存缓冲阶段的缓存器147储存缓冲阶段的缓存器 148储存缓冲阶段的缓存器149储存缓冲阶段的缓存器 151写入缓冲阶段152写入缓冲 154反应缓冲155快取线数据 162总线接口单元164处理器总线 172数据174命中信号 176延迟信号182匹配虚拟集合数字信号184匹配路径数字信号 186匹配状态信号187虚拟集合储存错误指示信号189原始虚拟集合数字信号192储存数据 194重新导向路径地址位196重新导向路径位197虚拟集合储存错误指示信号198重新导向路径状态位 199原始虚拟集合数字信号202标志与状态数组 204数据数组206比较器 208控制逻辑212多工器 214多工器216多工器 222索引224物理地址位 226虚拟地址位228虚拟集合选择位 232标志与状态数值234标志 236匹配信号238状态 246控制信号248比较器 252集合0254集合N 256集合511300虚拟集合选择位多工器的运作表格502流程图方框 504流程图方框506流程图方框 508流程图方框512流程图方框 514流程图方框516流程图方框 518流程图方框522流程图方框 524流程图方框526流程图方框 528流程图方框532流程图方框 534流程图方框536流程图方框 602虚拟内存空间604物理内存空间 606物理地址位
具体实施方式
[0028]在图1中,图1为本发明的流水线式微处理器(pipelinedmicroprocessor)100。该微处理器100包括了多个阶段(stage)。图1显示该微处理器100流水线的下层阶段(lower stage)。该流水线阶段(pipeline stages)包括两个数据高速缓存的存取阶段,即D阶段与G阶段101,之后则是一执行阶段(E阶段)111,一储存阶段(S阶段)121,一回写(write-back)阶段(W阶段)131,一储存缓冲(store-buffer)阶段(SB-阶段)141,一写入缓冲(write-buffer)阶段(WB-阶段)151。该微处理器100的流水线也包括未显示出的上层阶段(upper stage),该上层阶段包括一指令抓取(instruction fetch)阶段,一指令格式化(instruction format)阶段,一指令转换(instruction translation)阶段,一缓存器档案存取(register file access)阶段,以及一地址产生(address generation)阶段。
[0029]该微处理器100在D阶段与G阶段101时包括一数据高速缓存(data cache)104。在实施例中,该数据高速缓存104包括一64KB的四路集合关联数据高速缓存(4-way set-associative data cache)。在实施例中,该数据高速缓存104包括一个具有四个32字节快取线的512个集合的数组(array),其中该集合的四路径中每一路径皆储存该集合的四个快取线中的一个快取线。
[0030]该数据高速缓存104接收一储存动作或储存指令的一储存地址(store address)103。一部分储存地址103是用来在该数据高速缓存104中集合的数组(array sets)的索引(index)。在实施例中,该储存地址103包括了32个位,表示为SA31:0。该储存地址103指定欲储存进数据高速缓存104的储存数据的地址。该储存地址103为一虚拟地址(virtual address)。该储存地址103包括了一虚拟分页号码部分(virtual page number portion)105,即虚拟地址位31:12,表示为VA31:12 105。该储存地址也包括一物理分页偏移部分(physical page offsetportion)109,即未转换的物理地址位11:0,表示为PA11:0 109。
[0031]该微处理器100在D阶段与G阶段101也包括一转换参照缓冲器(translation lookaside buffer,TLB)106。该转换参照缓冲器106获得储存地址103的虚拟分页号码VA31:12 105后,该转换参照缓冲器便查找该虚拟分页号码(virtual page number)105,如果该虚拟分页号码105已储存于该转换参照缓冲器106中,则该转换参照缓冲器便会提供转换后的物理地址位107,表示为PA31:12 107,给该数据高速缓存104。该转换后的物理地址(physical address)107也称作该物理分页地址107。
[0032]该数据高速缓存104受一动作驱使后便产生数据172。在执行阶段111的缓存器112由该数据高速缓存104获得该数据172。
[0033]该数据高速缓存104还产生一命中信号(hit signal)174。如果该储存地址103在该数据高速缓存104内,则该数据高速缓存104便在该命中信号174上产生一正确数值(true value)。意即,如果由该储存地址103所指定的该数据储存于该数据高速缓存104中,那么该数据高速缓存104便在该命中信号174上产生一正确数值,以下将详细地描述。
[0034]该数据高速缓存104还产生一延迟信号(stall signal)176。如果无法在该数据高速缓存104中找到该储存地址103,则该数据高速缓存104便在该延迟信号上产生一正确数值。意即,如果由该储存地址103所指定的该数据并不储存于该数据高速缓存104中,则该数据高速缓存104便会在该延迟信号176上产生一正确数值,以延迟该流水线(pipeline)直到由该储存地址103所指定的该快取线已由内存中抓取,以下将详细地描述。
[0035]该数据高速缓存104还产生一虚拟集合储存错误指示器(virtual set store miss indicator)187。一在该执行阶段111的缓存器117由该数据高速缓存104获得该虚拟集合储存错误指示信号187。该虚拟集合储存错误指示信号187经由传输线路(pipeline)传送,并且在该储存动作的更新过程(update pass of the store operation)时以虚拟集合错误指示器(virtual set store miss indicator)197的形式传回至该数据高速缓存104。该虚拟集合储存错误指示信号187的传送分别经过储存阶段121的缓存器127,回写阶段131的缓存器137,以及储存缓冲阶段141的缓存器147。缓存器147将该虚拟集合储存错误指示信号197传回给该数据高速缓存104。如果该储存地址103已产生一虚拟集合储存错误,则该虚拟集合储存错误指示信号197将用来把该储存数据重新导向(redirect)至数据高速缓存中一正确的虚拟集合,以下将详细地描述。
[0036]该数据高速缓存104还产生一原始虚拟集合数字信号(original virtual set number signal)189。该原始虚拟集合数字189系该储存地址103的原始虚拟地址位13:12。一在执行阶段111的缓存器119由该数据高速缓存104获得该原始虚拟集合数字189。该原始虚拟集合数字189的传送分别经过储存阶段121的缓存器129,回写阶段131的缓存器139,以及储存缓冲阶段141的缓存器149。在实施例中,该原始虚拟集合数字189包括两个位,在经过流水线的传送并且在该储存动作的更新过程时回传给该数据高速缓存104后,也称作原始虚拟地址位,表示为OVA13:12 199。缓存器149将0VA13:12 199回传给该数据高速缓存104。
[0037]该数据高速缓存104还产生一匹配的虚拟集合数字信号(matching virtual set number signal)182。在该执行阶段111的缓存器114由该数据高速缓存104处获得该匹配的虚拟集合数字182。该匹配的虚拟集合数字182的传送分别经过储存阶段121的缓存器124,回写阶段131的缓存器134,以及储存缓冲阶段141的缓存器144。在实施例中,该匹配的虚拟集合数字182包括两个位,在经过流水线的传送并且在该储存动作的更新过程时回传给该数据高速缓存104后,也称作重新导向路径地址位(redirect address bits),表示为RA13:12 194。缓存器144将RA13:12 194回传给该数据高速缓存104。
[0038]该数据高速缓存104还产生一匹配路径数字信号(matchingway number signal)184。在该执行阶段111的缓存器116由该数据高速缓存104处获得该匹配的路径数字信号184。该匹配的虚拟集合数字信号182的传送分别经过储存阶段121的缓存器126,回写阶段131的缓存器136,以及储存缓冲阶段141的缓存器146。在实施例中,该匹配的路径数字信号184包括两个位,在经过流水线的传送并且在该储存动作的更新过程时回传给该数据高速缓存104后,也称作重新导向路径位(redirectway bits)196。缓存器146将该重新导向路径位196回传给该数据高速缓存104。
[0039]该数据高速缓存104还产生一匹配状态信号(matchingstatus signal)186。在该执行阶段111的缓存器118由该数据高速缓存104处获得该匹配状态信号186。在实施例中,该匹配状态信号186包括修正、不兼容、分享以及无效(modified,exclusive,shared andinvalid MESI)位,在经过传送并且在当该储存动作的更新过程时回传给该数据高速缓存104后,也称作重新导向路径状态位(redirect waybits)198。该匹配状态信号186的传送分别经过储存阶段121的缓存器128,回写阶段131的缓存器138,以及储存缓冲阶段141的缓存器148。缓存器148将该重新导向路径状态位198回传给该数据高速缓存104。
[0040]该微处理器100在执行阶段111中还包括一算术逻辑单元(arithmetic logic unit,ALU)113。该算术逻辑单元113由缓存器112获得数据。
[0041]该微处理器100在执行阶段111中还包括一多工器(multiplexer)115。该多工器115由该算术逻辑单元113获得结果。该算术逻辑单元113的结果可能成为储存动作的储存数据。另外,该多工器115由该微处理器100中的缓存器档案,或是由一储存指令中的实时数据,获得储存数据153。由该多工器115所选择的储存数据输出的传送系分别经过储存阶段121的缓存器122,回写阶段131的缓存器132。
[0042]该微处理器100在储存阶段121中还包括一多工器133。该多工器133由缓存器122获得该储存数据。该多工器133也由在写入缓冲阶段151中的反应缓冲(response buffer,RB)154获得快取线数据155。该反应缓冲154由一总线接口单元(bus interface unit,BIU)162获得一快取线。该总线接口单元162自内存处经由一处理器总线(processorbus)164抓取快取线,该处理器总线与该总线接口单元对该内存相对应。该多工器133的输出由回写阶段131的缓存器132提供。
[0043]该微处理器100在储存缓冲阶段141中还包括一储存缓冲(store buffer,SB)142。该储存缓冲142由缓存器132获得数据。该储存缓冲142保留将提供给该数据高速缓存104并由该数据高速缓存104储存的储存数据192。该储存缓冲142中的储存数据192也在写入缓冲阶段151时提供给写入缓冲(write buffer,WB)152。该写入缓冲152保留写入数据以等待由该总线接口单元162写入该微处理器总线164上的内存。
[0044]图2为图1中该数据高速缓存104的方框图。该数据高速缓存104包括一标志与状态数组202,以及一数据数组204。在实施例中,该数组202及204各为四路径(four ways),表示为路径0,路径1,路径2以及路径3。
[0045]在实施例中,该数据数组204包括512个快取线集合。如图所示其中***性的集合,分别表示为集合0 252,集合N 254以及集合511 256。集合0 252系数组202与204的第一个或最上层的集合;集合511 256是数组202与204最后一个或最下层的集合;而集合N 254是位于数组202与204中间位置的集合。该数组202与204由索引222选择一个集合标示出。在实施例中,该索引222包括9个位,表示为索引8:0,以由512个集合中选择出一个集合。
[0046]该索引222的低7位包括图1中该储存地址103的物理地址位11:5,表示为PA11:5 224。物理地址位11:5 224也称作物理快取线偏移224。该物理快取线偏移224指定由内存中物理分页的基址所产生的32字节的快取线偏移(offset)。
[0047]该索引222的高2位包括虚拟集合选择位228。该虚拟集合选择位228系与该物理地址位PA11:5 224相连接以产生该索引222。该虚拟集合选择位228由多工器216的输出所提供。如下所述,该虚拟集合选择位228选择经由该物理地址位PA11:5 224所选出的该数据高速缓存104内四个虚拟集合中的一个集合。
[0048]该多工器216的第一次输入获得该储存地址103的虚拟地址位13:12,表示为VA13:12 226。该多工器216的第二次输入获得图1中的重新导向路径地址位RA13:12 194。该多工器的第三次输入获得图1中的原始虚拟地址位OVA13:12 199。该多工器216的控制输入由控制逻辑208获得控制信号246。该控制逻辑208获得图1的该虚拟集合储存错误指示信号197并通过该虚拟集合储存错误指示信号197产生控制信号246来控制该多工器216以选择以下所述的一个输入。
[0049]图3为图2中该虚拟集合选择位多工器的运作表格300。该表格300是两行四列的表格。第一行显示出一根据图1的数据高速缓存104所为的动作。第二行显示多工器216选择哪一个输入作为该虚拟集合选择位228。
[0050]表格300的第一列显示当一加载动作在图1的数据高速缓存104执行时,该多工器216选择图2的虚拟地址位VA13:12 226。意即,该储存地址103在加载动作时为一加载地址,并且该多工器216选择该虚拟地址位VA13:12 226以从图2的数组202与204中选出一个集合。
[0051]表格300的第二列显示当一储存查寻动作进入该数据高速缓存104时,不需考虑该多工器216选择哪一个位。一储存动作由该数据高速缓存104的两次过程方式(two-pass manner)所完成。该第一次过程称作查寻过程(query pass)。该第二次过程称作更新过程(update pass)。在该查寻过程,图2的该标志与状态数组202受到查寻以判断该储存地址103所指定的快取线是否正在该数据高速缓存104中,若是,则该数据高速缓存104中的状态及位置即为该快取线所需。以下将详细描述,在储存动作的查寻过程中,该数据高速缓存104将检验由图4的物理地址位PA11:5 224所选择的四个所有的虚拟集合。
[0052]表格300的第三列显示在储存动作的更新过程中,哪一个对应的查寻过程在该数据高速缓存104的储存地址103产生错误,该多工器选择出原始虚拟地址位OVA13:12 199。
[0053]表格300的第四列显示在储存动作的更新过程中,哪一个对应的查寻过程在该数据高速缓存104的储存地址103产生命中,该多工器选择出重新导向路径地址位RA13:12 194。
[0054]如表格300中所述,该多工器216运作的目的在于将成为本发明其余部分(remainder)更充分的证据,特别是在图5的部分。
[0055]回到图2,该数据高速缓存104也获得图1的储存数据192,重新导向路径状态位198,以及重新导向路径位196。这些数值在以下所述中将用来更新该数据高速缓存104。
[0056]该数据高速缓存104还包括一多工器(multiplexer)212。受该加载动作的作用,该多工器212获得四个快取线,一个由索引222从该数据数组204的四路中的每一个路径选择出来。该多工器212从四个快取线中选择一个快取线作为图1的加载数据172。该多工器212基于控制逻辑208所产生的控制信号242来选择一个快取线。
[0057]回应(in response to)该索引222,该标志与状态数组202产生16个标志与状态数值232。如以下所述,见图4,该16个标志与状态数值232包括一个标志与状态数值,是该索引222的物理地址位PA11:5 224自该四个虚拟集合中的四路中的每一路径所选出的。
[0058]该数据高速缓存104还包括16个比较器206。每一个比较器206将图1中经该转换参照缓冲器106所产生的物理地址位PA31:12107与其所对应的该标志与状态数组202中输出的16个标志234进行比较。这16个比较器206产生16个匹配信号236。若该比较后的标志与该物理地址位224相匹配,则匹配信号236便为一正确数值。该16个匹配信号236提供给该控制逻辑208,这样,该控制逻辑208便能判断是否虚拟集合的路径上的任何一个标志能与该物理地址位31:12 107相匹配。该控制逻辑208利用该16个匹配信号236来产生图1中的命中信号174、延迟信号176、该匹配虚拟集合数字信号182以及该匹配路径数字信号184。
[0059]该数据高速缓存104还包括一比较器248,该比较器248将比较该匹配虚拟集合数字信号182以及该原始虚拟集合数字189,以产生图1的虚拟集合储存错误指示信号187。如果该匹配虚拟集合数字信号182与该原始虚拟集合数字189不一致,则该比较器248将在该虚拟集合储存错误指示信号187上产生一正确显示。否则,该比较器248将产生一错误显示。
[0060]该数据高速缓存还包括一多工器214。该多工器214自该标志与状态数组202的输出获得16个状态238。该多工器214选择该16个状态238之一作为图1中的匹配状态186。该控制逻辑208利用该16个匹配信号236来产生控制信号244,以控制该多工器214选择该匹配状态186。
[0061]见图4,图4为图2中标志与状态数组202的方框图。在图4的实施例中,未经转换的索引位6:0,即图2中的物理地址位PA11:5 224,为0000000b,或0x00。因此,索引222的未经转换位224便选择了集合0、集合128、集合256以及集合384。集合0由于被图2的虚拟集合选择位228的数值0所选择,故称作虚拟集合0。集合128由于被图2的虚拟集合选择位228的数值1所选择,故称作虚拟集合1。集合256由于被图2的虚拟集合选择位228的数值2所选择,故称作虚拟集合2。集合384由于被图2的虚拟集合选择位228的数值3所选择,故称作虚拟集合3。图2虚拟集合选择位228的每一个可能值也显示出来,即该虚拟集合选择位228的数值00b选择虚拟集合0;该虚拟集合选择位228的数值01b选择虚拟集合1;该虚拟集合选择位228的数值10b选择虚拟集合2;该虚拟集合选择位228的数值11b选择虚拟集合3。
[0062]该四个虚拟集合中,每一个路径的标志与状态成对地依次序排列(denoted),纵坐标为该虚拟集合数字,横坐标为该路径数字。因此,举例来说,该虚拟集合1的路径2的标志与状态即表示为(1,2)。图2中的该16个标志234被提供给图2中的比较器206。该比较器将图4中依16个成双排列的每一个标志与图1的物理地址位PA31:32相比较。由该比较器206所产生的该匹配信号236(图2中)被提供给控制逻辑208(图2中)。该控制逻辑208产生两位匹配虚拟集合数字信号1:0 182,以及依照下述与图4所示的方程式得出的16个匹配信号236所产生的图1中两位匹配路径数字信号1:0 184。在该方程式中,该成对排序的数字表示由该成对排序数字所对应的标志产生的匹配信号236的数值。
匹配虚拟集合数字[1]=
(2,0)|(2,1)|(2,2)|(2,3)|
(3,0)|(3,1)|(3,2)|(3,3);
匹配虚拟集合数字[0]=
(1,0)|(1,1)|(1,2)|(1,3)|
(3,0)|(3,1)|(3,2)|(3,3);
匹配路径数字[1]=
(0,2)|(1,2)|(2,2)|(3,2)
(0,3)|(1,3)|(2,3)|(3,3);
匹配路径数字[0]=
(0,1)|(1,1)|(2,1)|(3,1)|
(0,3)|(1,3)|(2,3)|(3,3);
[0063]见图5,图5为图1中本发明的虚以集合高速缓存的运作流程图。流程开始于方框502及504。
[0064]在方框502中,一储存查寻过程开始一储存动作进行图1中的D阶段101,并且图1的该数据高速缓存104利用储存地址103(图1中)的未转换地址位PA11:5 224(图2中)作为索引位6:0 222(图2中)。地址位PA11:5 224从数据高速缓存204(图2中)的快取线中选择四个虚拟集合,以及从标志与状态数组202(图2中)中选择标志及状态,如图4中的虚拟集合0至虚拟集合3。流程由方框502进行至方框506。
[0065]在方框504中,转换参照缓冲器106(图1中)获得该储存地址103的地址位VA31:12 226(图2中),并提供转换后地址位PA31:12 107(图1中)给比较器206(图2中)。流程由方框504进行到方框506。方框502及方框504实质上(substantially)是同时进行的。意即,该储存地址103实质上是同时地(simultaneously)提供给该数据高速缓存104和该转换参照缓冲器106。特别是,该数据高速缓存104在未利用PA11:5 224选择该四个虚拟集合之前,没有等待该转换参照缓冲器106来提供PA31:12 107。
[0066]在方框506中,该比较器206比较图2中16个标志234,以及在方框504中由转换参照缓冲器106提供以产生图2中16个匹配信号236的转换后物理地址PA31:32 107。流程由方框506进行至判断方框508。
[0067]在判断方框508,该控制逻辑208检验在方框506产生的16个匹配信号236(图2)以判断该16个标志234是否与PA31:12 107相匹配、以及该16个标志234中的哪一个与PA31:12 107相匹配。如果没有一个标志能够匹配,流程将进行到方框512。否则流程将进行到方框524。
[0068]在方框512中,该控制逻辑208在图1的命中信号174产生一错误数值以显示在数据高速缓存104中的错误,并且延迟信号176(图1)产生一正确数值以迟延该微处理器100的流水线进程。流程由方框512进行到方框514。
[0069]在方框514中,图1的总线接口单元162执行图1在该微处理器总线164上的总线交换(bus transaction)以抓取图1中在反应缓冲154的错误快取线(missing cache line)。该微处理器100便把与该储存动作对应的储存数据153(图1)以及被抓取入该反应缓冲154的快取线进行合并,并且将该合并的数据置入储存缓冲142(图1)。流程由方框514进行到方框516。
[0070]在方框516中,该控制逻辑208放弃(desert)该延迟信号176以进行(unstall)该微处理器100流水线。流程由方框516进行至方框518。
[0071]在方框518中,该控制逻辑208产生控制信号246以控制图2的多工器216来选择图1地址位0VA13:12作为图2的虚拟集合选择位228。因此,该数据高速缓存104便利用关联的PA11:5 224与0VA13:12 199以形成索引位8:0 222来选择在该数据高速缓存104的集合进行更新。流程由方框518进行至方框522。
[0072]在方框522中,数据高速缓存104内在方框518中受选择的集合,由方框514中合所并入该储存缓冲142的数据更新。流程在方框522停止。
[0073]在方框524,该控制逻辑208在该命中信号174上产生一正确数值以向该流水线显示该储存地址103已在该数据高速缓存104内。特别是只要任何匹配信号236是正确的,该控制逻辑208便产生一命中信号,不论被地址位VA13:12 226所选择的相应于该虚拟集合的匹配信号236是否正确。换言之,即使会发生虚拟集合储存错误,该控制逻辑208仍然显示该数据高速缓存104内的命中信号。流程由方框524进行至方框526。
[0074]在方框526中,图1中的该原始虚拟集合数字189、虚拟集合储存错误指示信号187、匹配虚拟集合数字信号182、匹配方向路径数字信号184以及匹配状态186,分别储存于图1的缓存器119、117、114、116以及118,并且传送至储存缓冲阶段141以执行该储存动作的更新过程。流程由方框526进行至判断方框528。
[0075]在判断方框528,该控制逻辑208判断该储存动作是否会产生虚拟集合储存错误,意即,该控制逻辑208判断该虚拟集合储存错误信号197是否正确。如果为不正确,则流程进行到方框532。否则,流程进行到方框534。
[0076]在方框532中,该控制逻辑208产生控制信号246以控制图2的多工器216选择该原始虚拟地址位0VA13:12 199作为图2的虚拟集合选择位228。因此,该数据高速缓存104便利用关联的PA11:5 224与0VA13:12 199来形成索引位8:0 222以在该数据高速缓存104中选择一集合进行更新。意即,所储存位103的原始虚拟地址位13:12选择该原始虚拟集合进行更新。流程由方框532进行至方框536。
[0077]在方框534中,该控制逻辑208产生控制信号246以控制图2的多工器216选择该重新导向路径地址位RA13:12 194作为图2的虚拟集合选择位228。因此,该数据高速缓存104便利用关联的PA11:5 224与RA13:12 194来形成索引位8:0 222以在该数据高速缓存104中选择一集合进行更新。意即,该匹配虚拟集合被选择以进行更新,而非该储存地址103的原始虚拟地址位所指定的虚拟集合,因为该原始虚拟地址位13:12会产生一虚拟集合储存错误。流程由方框534进行到方框536。
[0078]在方框536中,利用从储存缓冲142中储存动作的储存数据,更新该数据高速缓存104内在方框532或方框534中被选择的集合。流程在方框536停止。
[0079]图6为本发明将两个相异的虚拟储存地址转换为相同的物理地址的方框图,如图1的储存地址103。图6所示的实施例用来显示两个储存动作如何能产生一虚拟集合储存错误条件。该实施例将结合图7来显示出在一导致虚拟集合储存错误的状态下,本发明如何产生一快取命中。
[0080]图6所显示的是图1中微处理器100的虚拟内存空间602。第一及第二虚拟内存储存地址分别为0x11111000与0x22222000。图1的第一个范例的虚拟储存地址的VA31:12位105具有提供给图1中转换参照缓冲器106的数值0x11111。在该实施例中,该转换参照缓冲器106产生图1的转换后物理地址位PA31:12 107,其数值为0x33333。在该实施例中,图1未转换物理地址位PA11:0 109的数值为0x000。该PA11:0位109与该PA31:12位107相关联以产生数值为0x33333000的物理地址位PA31:0606,其将在图1中微处理器总线164上微处理器100的物理内存空间604内指定一个位置。
[0081]同样地,该第二个范例的虚拟储存地址的VA31:12位105具有提供给转换参照缓冲器106的数值0x22222。在该实施例中,该转换参照缓冲器106产生转换后物理地址位PA31:12 107,其数值为0x33333。在该实施例中,如果该第二虚拟储存地址同为0x000,则未转换物理地址位PA11:0 109与该第一个范例的储存虚拟地址的PA11:0 109相同。因此,该PA11:0位109便与该PA31:12位107相关联以产生数值同样为0x33333000的物理地址位PA31:0 606,其与第一虚拟储存地址在微处理器100的物理内存空间604内指定相同的位置。
[0082]图7为经储存指令的三次执行动作后,在该数据高速缓存中所成功产生三个内容的方框图。该数据高速缓存104的三个内容分别表示为104A、104B以及104C,并代表储存指令的执行依时间前后排列的结果。在每一个数据高速缓存104A、104B以及104C中,一矩阵显示出图4中哪一列显示该四个快取路径,以及图4中哪一行显示出四个不同的虚拟集合,表示为VS0、VS1、VS2以及VS3。
[0083]数据高速缓存104A的内容显示在储存指令执行后,具有图6的第一个范例的虚拟储存地址,即0x11111000。该指令为ST 0x111110000xAA,即储存数值为0xAA的数据位至虚拟地址0x11111000,其将转换为物理地址0x33333000。为了解释上的简单及清楚,仅在该第一储存指令执行之前,假设该数据高速缓存104A的VS1的所有四个路径皆为空的,即皆是无效的。因此,该数据高速缓存104A的错误将根据图5的方框508而被侦测出来。该数据高速缓存104A指示出错误,该流水线延迟,该错误的快取线被抓取出,并且之后该流水线便根据图5的方框512、514以及516而开始通行。依据图5的方框518,该高速缓存104A利用图1的0VA13:12位199制作索引以选择一集合以进行更新。由于该0VA13:12位199具有数值01b,因此VS1便被选中。在该实施例中,路径2为最近最少使用的路径,因此便被选择出进行更新。依据图5的方框522,该数据高速缓存104A的VS1的路径2显示出一数据数值0xAA。此外,该数据高速缓存104A的VS1的路径2便被数值为0x33333的PA31:12位107的标志更新。最后,该数据高速缓存104A显示一修正后的状态数值,由“M”表示。
[0084]数据高速缓存104B的内容显示在储存指令执行后,具有图6的第二个范例的虚拟储存地址,即0x22222000。该指令为ST 0x222220000xBB,即储存数值为0xBB的数据位至虚拟地址0x22222000,其将转换为物理地址0x33333000。仅在该第二储存指令执行之前,假设该数据高速缓存104B的VS2的所有四个路径皆为空的,即皆是无效的。然而,由于图2的比较器206根据图5的方框506,将比较四个虚拟集合的四个路径的所有16个标志,因此该数据高速缓存104B的快取命中将根据图5的方框508而被侦测出来,并且发现VS1路径2的标志与图1的PA31:12位107及具有修正数值的快取线状态相匹配,显示数据存在。因此,该数据高速缓存104B根据图5的方框524显示一快取命中。根据图5的方框526,图1中该原始虚拟集合数字189、虚拟集合储存错误指示信号187、匹配虚拟集合数字信号182、匹配路径数字信号184以及匹配状态信号186将储存并传送至图1的储存阶段121。
[0085]依图5方框528的判断,因为一虚拟集合储存错误可能发生,所以该数据高速缓存104B根据图5的方框534,利用图1的RA13:12位194制作索引以选择一集合以进行更新。由于该RA13:12位194具有数值01b,所以VS1便被选出。依据图5的方框536,该数据高速缓存104B的VS1的路径2显示出一数据值0xBB。此外,该数据高速缓存104B的VS1的路径2便被数值为0x33333的PA31:12位107的标志更新。最后,该数据高速缓存104B的VS1的路径2显示一修正后的状态数值,由“M”表示。
[0086]数据高速缓存104C显示在第三次的储存指令后的内容,该储存命令即图6中具有第一个范例的虚拟储存地址的储存指令,即所述更新数据高速缓存104A内容的ST 0x11111000 0xAA。仅在该第三储存指令执行之前,该数据高速缓存104C的VS2的所有四个路径仍然被假设为空的,即皆是无效的。然而,由于图2的比较器206根据图5的方框506,将比较四个虚拟集合的四个路径的所有16个标志,因此该数据高速缓存104C的快取命中将根据图5的方框508而被侦测出来,并且发现VS1路径2的标志与PA31:12位107及具有修正数值的快取线状态相匹配,显示数据存在。因此,该数据高速缓存104C根据图5的方框524显示一快取命中。根据图5的方框526,该原始虚拟集合数字189,虚拟集合储存错误指示信号187、匹配虚拟集合数字182、匹配路径数字信号184以及匹配状态186将储存并传送至图1的储存阶段121。
[0087]依图5方框528的判断,因为一虚拟集合储存错误可能发生,所以该数据高速缓存104C根据图5的方框534,利用图1的RA13:12位194制作索引以选择一集合以进行更新。因为该RA13:12位194具有数值01b,所以VS1便被选出。依据图5的方框536,该数据高速缓存104C的VS1的路径2显示出一数据数值0xAA。此外,该数据高速缓存104C的VS1的路径2便被数值为0x33333的PA31:12位107的标志更新。最后,该数据高速缓存104C的VS1的路径2显示一修正后的状态数值,由“M”表示。
[0088]由图7可以得知,本发明尤其能在虚拟集合储存错误的情况下,避免该微处理器100流水线的延迟以及在该微处理器总线164上产生交换而导致的储存动作实质上的延长。
[0089]虽然本发明的目的、基本特征及优点已可经由所述的文字说明与附图说明而得以了解,但当了解的是本发明的范围并不仅局限于以上所说明的实施例。举例来说,本发明可由任何大小的虚拟集合数据高速缓存与任何大小的储存地址所替代。进一步地说,任何对该储存地址中物理与虚拟地址位数字的改变均在保护的范围内。最后,任何对该高速缓存中的高速缓存标志大小与高速缓存状态的型式的改变均在保护的范围内。
[0090]熟知该项技术者在阅读过以上的公开后可轻易加以变动及修改,然而本发明的范围并不仅局限于以上所说明的实施例,所述的修改及置换都不脱离本发明的精神范围。
Claims (33)
1.一个虚拟集合高速缓存(virtual set cache),其特征在于,该内存至少包括:
一数组,具有2N个集合的快取线(cache lines)与对应的标志(associated tag);
一索引(index),对应于所述数组,该索引包括一储存地址中M个未转换的物理地址位,用以从所述2N个集合中选择2N-M个虚拟集合的物理地址;
多个与所述数组相对应的比较器,用来比较在所述2N-M个虚拟集合中的关联标志和所述储存地址中多个已转换的物理地址,
一与所述比较器相对应命中信号(hit signal),用来显示如果在所述2N-M个虚拟集合中的所述关联标志之一与所述储存地址的多个已转换的物理地址位相匹配的话,在该虚拟集合高速缓存中有一命中,。
2.如权利要求1所述的虚拟集合高速缓存,其特征在于,所述索引还包括L个虚拟集合选择位,该虚拟集合选择位用于在2N-M个虚拟集合中选择一个集合。
3.如权利要求2所述的虚拟集合高速缓存,其特征在于,所述的L大于零。
4.如权利要求2所述的虚拟集合高速缓存,其特征在于,所述的L个虚拟集合选择位与所述M个未转换的物理地址位相结合(concatenated)以形成所述的索引。
5.如权利要求2所述的虚拟集合高速缓存,其特征在于,所述高速缓存还包括:
一多工器,包括:
一输出,对应提供给所述索引的所述虚拟集合选择位;
第一及第二地址输入;以及
一控制输入,用来自所述第一及第二地址输入选择其一以提供于所述的输出。
6.如权利要求5所述的虚拟集合高速缓存,其特征在于,所述的第一地址输入相对应以取得所述储存地址的L个虚拟地址。
7.如权利要求6所述的虚拟集合高速缓存,其特征在于,无论所述L个虚拟地址位是否自所述2N-M个虚拟集合中找到一个匹配的集合,所述命中信号显示该命中的情形。
8.如权利要求7所述的虚拟集合高速缓存,其特征在于,所述2N-M个虚拟集合中该匹配集合,具有所述2N-M个虚拟集合中与所述储存地址的该多个转换的物理地址位匹配的该关联标志之一。
9.如权利要求8所述的虚拟集合高速缓存,其特征在于,还包括:一与所述的多个比较器对应的缓存器,用来储存L个虚拟集合重新导向路径位。
10.如权利要求9所述的虚拟集合高速缓存,其特征在于,所述L个虚拟集合重新导向路径位指定(specify)所述2N-M个虚拟集合中的该匹配集合。
11.如权利要求10所述的虚拟集合高速缓存,其特征在于,所述第二地址输入对应获得所述L个虚拟集合重新导向路径位。
12.如权利要求11所述的虚拟集合高速缓存,其特征在于,如果所述命中信号显示在该虚拟集合高速缓存中已找到,则所述控制输入选择该第二输入利用所述储存地址所指定的数据更新该高速缓存。
13.如权利要求6所述的虚拟集合高速缓存,其特征在于,如果所述2N-M个虚拟集合中该关联标志没有一个与所述储存地址的多个转换物理地址位相匹配,则所述命中信号在该虚拟集合高速缓存中将显示错误(miss)。
14.如权利要求13所述的虚拟集合高速缓存,其特征在于,如果该命中信号显示在所述虚拟集合高速缓存中存在所述的错误,则所述控制输入选择该第一输入利用所述储存地址所指定的数据更新该高速缓存。
15.如权利要求1所述的虚拟集合高速缓存,其特征在于,所述索引由所述2N个集合中选择该2N-M个虚拟集合时,也同时于一转换参照缓冲器中查找该储存地址的虚拟地址位,以提供所述储存地址的该转换后物理地址位。
16.一微处理器,其特征在于,至少包括:
一转换参照缓冲器(TLB),用来获得一储存动作的一虚拟分页号码并提供其中的物理分页地址;
一与所述转换参照缓冲器对应的虚拟集合高速缓存,用来获得所述储存动作的一个物理快取线偏移以选择其中的数个虚拟集合,并且查寻(query)所述数个虚拟集合中哪一个集合具有基于该转换参照缓冲器所提供的该物理分页地址的该储存动作所指定的快取线;以及
一与所述虚拟集合高速缓存相对应的地址缓存器,用来储存一匹配虚拟集合号码,其指定受到该储存动作指定的该数个虚拟集合中的一个集合;
其中如果该虚拟集合快取线显示所述虚拟分页号码的部分用来为该虚拟集合高速缓存制作索引会产生一虚拟集合储存错误的话,该微处理器利用储存在该地址缓存器的该匹配虚拟集合号码来更新所述快取线。
17.如权利要求16所述的微处理器,其特征在于,所述物理快取线偏移在该虚拟集合高速缓存选择所述数个虚拟集合,与所述转换参照缓冲器提供该物理分页地址同时发生。
18.如权利要求16所述的微处理器,其特征在于,所述虚拟集合高速缓存包括一N路径集合关联高速缓存,其中N大于零。
19.如权利要求18所述的微处理器,其特征在于,还包括:
一与所述虚拟集合高速缓存对应的路径缓存器,用来储存一匹配路径号码,其中所述匹配路径号码指定在所述查寻上具有该快取线的该N路径集合关联高速缓存之一。
20.如权利要求19所述的微处理器,其特征在于,如果所述虚拟集合高速缓存显示所述虚拟分页数字会在该虚拟集合高速缓存产生一虚拟储存错误,则该微处理器利用储存在该路径缓存器中的所述匹配路径号码更新该虚拟集合高速缓存。
21.如权利要求16所述的微处理器,其特征在于,还包括:
一与所述虚拟集合高速缓存对应的状态缓存器,用来储存一匹配状态,其中该匹配状态在所述查寻中指定所述快取线的一快取线状态。
22.如权利要求21所述的微处理器,其特征在于,如果所述虚拟集合高速缓存显示所述虚拟分页数字会在该虚拟集合高速缓存产生一虚拟储存错误,则该微处理器利用储存在该状态缓存器中的所述快取线状态更新该虚拟集合高速缓存。
23.一种用来将由一储存指令的一地址所指定的数据储存至一虚拟高速缓存的方法,其特征在于,该方法至少包括:
利用该储存指令的该地址上的未转换的物理地址位,在该高速缓存中制作索引以选择数个快取线及关联标志的虚拟集合;
将该储存指令的该地址上的虚拟地址位转换为转换后的物理地址位;
将所述转换后的物理地址位与所述数个虚拟集合的所述关联标志相比较;
利用所述比较的结果储存所述数个虚拟集合中一匹配集合的匹配虚拟集合号码;
如果所述数个虚拟集合中该匹配虚拟集合与所述储存指令的该虚拟地址所指定的虚拟集合不相同,则利用所述匹配虚拟集合号码制作索引以更新该数个虚拟集合中的一个匹配虚拟集合。
24.如权利要求23所述的方法,其特征在于,还包括:
如果所述数个虚拟集合中该匹配集合与所述储存指令的该虚拟地址所指定的虚拟集合相同,则利用所述储存指令的虚拟地址位在该高速缓存中制作索引,以更新该数个虚拟集合中的该匹配虚拟集合。
25.如权利要求23所述的方法,其特征在于,于所述转换结束前开始时,利用所述未转换物理地址位在该高速缓存中制作索引。
26.如权利要求23所述的方法,其特征在于,利用所述未转换物理地址位在该高速缓存中制作索引与所述转换实质上同时完成。
27.如权利要求23所述的方法,其特征在于,利用所述匹配虚拟集合号码在该高速缓存中制作索引,以更新所述数个虚拟集合中的一个匹配集合,且在不延迟具有该虚拟集合高速缓存的微处理器的流水线的情形下执行(performed)。
28.如权利要求23所述的方法,其特征在于,利用所述匹配虚拟集合号码在该高速缓存中制作索引还包括利用与所述匹配虚拟集合号码相关联的该未转换的物理地址位,在该高速缓存中制作索引。
29.如权利要求23所述的方法,其特征在于,还包括:
利用该比较的结果,判断任何所述的关联标志是否与所述转换的物理地址位相匹配。
30.如权利要求29所述的方法,其特征在于,还包括:
利用该比较的结果,如果任何所述的关联标志与所述转换的物理地址位相匹配,则产生一正确命中信号。
31.如权利要求29所述的方法,其特征在于,还包括:
利用该比较的结果,如果没有任何所述的关联标志与所述转换的物理地址位相匹配,则产生一错误命中信号。
32.如权利要求29所述的方法,其特征在于,还包括:
如果没有任何所述的关联标志与所述转换的物理地址位相匹配,则延迟具有该虚拟集合高速缓存的一微处理器的流水线过程。
33.如权利要求32所述的方法,其特征在于,还包括:
利用所述储存指令的该虚拟地址位在该高速缓存中制作索引,在该延迟后更新该虚拟集合。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/930,592 | 2001-08-15 | ||
US09/930,592 US6622211B2 (en) | 2001-08-15 | 2001-08-15 | Virtual set cache that redirects store data to correct virtual set to avoid virtual set store miss penalty |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1397887A true CN1397887A (zh) | 2003-02-19 |
CN100390756C CN100390756C (zh) | 2008-05-28 |
Family
ID=25459496
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB021185530A Expired - Lifetime CN100390756C (zh) | 2001-08-15 | 2002-04-27 | 一种将储存数据重新导向的虚拟集合高速缓存 |
Country Status (3)
Country | Link |
---|---|
US (1) | US6622211B2 (zh) |
CN (1) | CN100390756C (zh) |
TW (1) | TWI228657B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1303507C (zh) * | 2003-09-03 | 2007-03-07 | 胜华科技股份有限公司 | 触控面板的多样驱动装置 |
CN100367194C (zh) * | 2004-01-16 | 2008-02-06 | 智权第一公司 | 自堆栈快取存储器进行快速推测性弹出操作方法及装置 |
CN100378650C (zh) * | 2004-01-16 | 2008-04-02 | 智权第一公司 | 微处理机与随机存取快取记忆体的快速弹出装置及其方法 |
CN102084331A (zh) * | 2008-04-06 | 2011-06-01 | 弗森-艾奥公司 | 在多处理器/多线程环境下协调存储请求的装置、***和方法 |
CN101681291B (zh) * | 2007-06-13 | 2012-04-04 | 日本电气株式会社 | 信息处理器 |
CN105938456A (zh) * | 2015-03-02 | 2016-09-14 | Arm 有限公司 | 存储器管理 |
CN105938460A (zh) * | 2015-03-02 | 2016-09-14 | Arm 有限公司 | 存储器管理 |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2395588B (en) * | 1999-12-17 | 2004-09-22 | Hewlett Packard Co | Apparatus and method for supporting multiple page sizes with address aliasing |
US7191291B2 (en) | 2003-01-16 | 2007-03-13 | Ip-First, Llc | Microprocessor with variable latency stack cache |
US7139877B2 (en) * | 2003-01-16 | 2006-11-21 | Ip-First, Llc | Microprocessor and apparatus for performing speculative load operation from a stack memory cache |
US7136990B2 (en) | 2003-01-16 | 2006-11-14 | Ip-First, Llc. | Fast POP operation from RAM cache using cache row value stack |
US7913159B2 (en) * | 2003-03-28 | 2011-03-22 | Microsoft Corporation | System and method for real-time validation of structured data files |
US7293005B2 (en) * | 2004-01-26 | 2007-11-06 | International Business Machines Corporation | Pipelined architecture for global analysis and index building |
US7424467B2 (en) | 2004-01-26 | 2008-09-09 | International Business Machines Corporation | Architecture for an indexer with fixed width sort and variable width sort |
US7499913B2 (en) * | 2004-01-26 | 2009-03-03 | International Business Machines Corporation | Method for handling anchor text |
US8296304B2 (en) | 2004-01-26 | 2012-10-23 | International Business Machines Corporation | Method, system, and program for handling redirects in a search engine |
US7461064B2 (en) | 2004-09-24 | 2008-12-02 | International Buiness Machines Corporation | Method for searching documents for ranges of numeric values |
US8417693B2 (en) | 2005-07-14 | 2013-04-09 | International Business Machines Corporation | Enforcing native access control to indexed documents |
US8631207B2 (en) * | 2009-12-26 | 2014-01-14 | Intel Corporation | Cache memory power reduction techniques |
US8311982B2 (en) * | 2010-02-11 | 2012-11-13 | Hewlett-Packard Development Company, L. P. | Storing update data using a processing pipeline |
US8635412B1 (en) * | 2010-09-09 | 2014-01-21 | Western Digital Technologies, Inc. | Inter-processor communication |
US9164886B1 (en) | 2010-09-21 | 2015-10-20 | Western Digital Technologies, Inc. | System and method for multistage processing in a memory storage subsystem |
US8358152B2 (en) | 2010-11-17 | 2013-01-22 | Apple Inc. | Integrated circuit including pulse control logic having shared gating control |
US9418018B2 (en) | 2013-12-31 | 2016-08-16 | Samsung Electronics Co., Ltd. | Efficient fill-buffer data forwarding supporting high frequencies |
EP3173935B1 (en) * | 2015-11-24 | 2018-06-06 | Stichting IMEC Nederland | Memory access unit |
US11200166B2 (en) | 2019-07-31 | 2021-12-14 | Micron Technology, Inc. | Data defined caches for speculative and normal executions |
US11048636B2 (en) * | 2019-07-31 | 2021-06-29 | Micron Technology, Inc. | Cache with set associativity having data defined cache sets |
US11194582B2 (en) | 2019-07-31 | 2021-12-07 | Micron Technology, Inc. | Cache systems for main and speculative threads of processors |
US11010288B2 (en) | 2019-07-31 | 2021-05-18 | Micron Technology, Inc. | Spare cache set to accelerate speculative execution, wherein the spare cache set, allocated when transitioning from non-speculative execution to speculative execution, is reserved during previous transitioning from the non-speculative execution to the speculative execution |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2176918B (en) * | 1985-06-13 | 1989-11-01 | Intel Corp | Memory management for microprocessor system |
US5479630A (en) * | 1991-04-03 | 1995-12-26 | Silicon Graphics Inc. | Hybrid cache having physical-cache and virtual-cache characteristics and method for accessing same |
KR19980032776A (ko) * | 1996-10-16 | 1998-07-25 | 가나이 츠토무 | 데이타 프로세서 및 데이타 처리시스템 |
US6014732A (en) * | 1997-10-22 | 2000-01-11 | Hewlett-Packard Company | Cache memory with reduced access time |
US6079003A (en) * | 1997-11-20 | 2000-06-20 | Advanced Micro Devices, Inc. | Reverse TLB for providing branch target address in a microprocessor having a physically-tagged cache |
US6079005A (en) * | 1997-11-20 | 2000-06-20 | Advanced Micro Devices, Inc. | Microprocessor including virtual address branch prediction and current page register to provide page portion of virtual and physical fetch address |
US6442666B1 (en) * | 1999-01-28 | 2002-08-27 | Infineon Technologies Ag | Techniques for improving memory access in a virtual memory system |
EP1046998A1 (en) * | 1999-04-22 | 2000-10-25 | Texas Instruments Incorporated | Digital signal processors with virtual addressing |
US6493812B1 (en) * | 1999-12-17 | 2002-12-10 | Hewlett-Packard Company | Apparatus and method for virtual address aliasing and multiple page size support in a computer system having a prevalidated cache |
US6510508B1 (en) * | 2000-06-15 | 2003-01-21 | Advanced Micro Devices, Inc. | Translation lookaside buffer flush filter |
-
2001
- 2001-08-15 US US09/930,592 patent/US6622211B2/en not_active Expired - Lifetime
- 2001-12-28 TW TW090132649A patent/TWI228657B/zh not_active IP Right Cessation
-
2002
- 2002-04-27 CN CNB021185530A patent/CN100390756C/zh not_active Expired - Lifetime
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1303507C (zh) * | 2003-09-03 | 2007-03-07 | 胜华科技股份有限公司 | 触控面板的多样驱动装置 |
CN100367194C (zh) * | 2004-01-16 | 2008-02-06 | 智权第一公司 | 自堆栈快取存储器进行快速推测性弹出操作方法及装置 |
CN100378650C (zh) * | 2004-01-16 | 2008-04-02 | 智权第一公司 | 微处理机与随机存取快取记忆体的快速弹出装置及其方法 |
CN101681291B (zh) * | 2007-06-13 | 2012-04-04 | 日本电气株式会社 | 信息处理器 |
CN102084331A (zh) * | 2008-04-06 | 2011-06-01 | 弗森-艾奥公司 | 在多处理器/多线程环境下协调存储请求的装置、***和方法 |
CN105938456A (zh) * | 2015-03-02 | 2016-09-14 | Arm 有限公司 | 存储器管理 |
CN105938460A (zh) * | 2015-03-02 | 2016-09-14 | Arm 有限公司 | 存储器管理 |
Also Published As
Publication number | Publication date |
---|---|
CN100390756C (zh) | 2008-05-28 |
TWI228657B (en) | 2005-03-01 |
US20030037201A1 (en) | 2003-02-20 |
US6622211B2 (en) | 2003-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1397887A (zh) | 一种将储存数据重新导向的虚拟集合高速缓存 | |
CN1186720C (zh) | 据物理分页指针比较结果转送数据的装置及方法 | |
CN1315060C (zh) | 储存存储器型式数据的转译旁视缓冲器 | |
CN1296827C (zh) | 一种使用数据地址增加组相关存储器的访问速度的方法 | |
CN1632877B (zh) | 可变延滞时间高速缓冲存储器及提供数据的方法 | |
CN1248118C (zh) | 以推测方式使高速缓存中的缓存行失效的方法及*** | |
US6247094B1 (en) | Cache memory architecture with on-chip tag array and off-chip data array | |
CN1123826C (zh) | 预取由转移历史引导的指令/数据的方法和装置 | |
CN1208726C (zh) | 当预测路线失败时从非预测路线提供部分标记以指导搜索的高速缓存 | |
CN1690952A (zh) | 根据多组高速缓存组预测来选择执行的指令的装置和方法 | |
CN1310134C (zh) | 具有二级分支预测高速缓存的分支预测装置 | |
US7587574B2 (en) | Address translation information storing apparatus and address translation information storing method | |
CN101523359B (zh) | 具有减小数据高速缓存访问功率的微标签阵列的处理器及其应用 | |
CN87105300A (zh) | 高速缓冲存储器的目录和控制装置 | |
CN1088215C (zh) | 不按顺序执行读写指令的存储器控制器 | |
KR100335672B1 (ko) | 메모리페이지크로싱예측주석을사용하는실제주소지정데이타기억구조로부터의빠른데이타검색 | |
CN1846200A (zh) | 在处理器中用于减少功耗的微变换检测缓冲器及微标记符 | |
KR101898322B1 (ko) | 상이한 인덱싱 방식을 사용하는 1차 캐시와 오버플로 캐시를 갖는 캐시 시스템 | |
JPH0619793A (ja) | キャッシュ・アクセスのための仮想アドレス変換予測の履歴テーブル | |
US20070094476A1 (en) | Updating multiple levels of translation lookaside buffers (TLBs) field | |
US20060047912A1 (en) | System and method for high performance, power efficient store buffer forwarding | |
CN1652092A (zh) | 不同高速缓存级上具有关联集重叠同余组的多级高速缓存 | |
JP2008545199A (ja) | メモリ内の同じページに対する多数の変換ルックアサイド緩衝器へのアクセスの防止 | |
US10698836B2 (en) | Translation support for a virtual cache | |
CN1120196A (zh) | 地址变换电路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CX01 | Expiry of patent term | ||
CX01 | Expiry of patent term |
Granted publication date: 20080528 |