CN107818053A - 用于存取高速缓存的方法与装置 - Google Patents
用于存取高速缓存的方法与装置 Download PDFInfo
- Publication number
- CN107818053A CN107818053A CN201611215570.8A CN201611215570A CN107818053A CN 107818053 A CN107818053 A CN 107818053A CN 201611215570 A CN201611215570 A CN 201611215570A CN 107818053 A CN107818053 A CN 107818053A
- Authority
- CN
- China
- Prior art keywords
- prediction
- instruction
- address
- bits
- virtual address
- 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
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
-
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/507—Control mechanisms for virtual memory, cache or TLB using speculative control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6026—Prefetching based on access pattern detection, e.g. stride based prefetch
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
技术领域
本发明涉及一种内存存取技术,且尤其涉及一种用于存取高速缓存的方法与装置。
背景技术
一般来说,将中央处理器缓存(CPU cache)应用于计算机的中央处理器是很常见的做法。当中央处理器欲从中央处理器的主存储器中存取数据时,中央处理器首先会检查所要求的数据是否保存于中央处理器缓存中。若所要求的数据保存于中央处理器缓存中,中央处理器可以直接从此缓存中获得所需的数据。若所要求的数据未保存于中央处理器缓存中,所要求的数据会被加载至中央处理器缓存中,然后中央处理器再从此缓存中存取数据。然而,中央处理器从缓存中存取数据的速度可能大幅地高于从主存储器中存取数据的速度。
图1A是传统中央处理器的缓存存取结构。请参照图1A,传统的缓存存取结构是由指令执行单元(instruction execution unit,IEU)11、内存管理单元(memory managementunit,MMU)12及加载/储存单元(load/store unit,LSU)13组成。在指令执行单元11中,算术逻辑单元(arithmetic logic unit,ALU)111会根据来自中央处理器的指示存取高速缓存(cache memory)131的指令(instruction)而产生一个虚拟地址(virtual address),然后此虚拟地址会被储存在虚拟地址缓存器(register)112中。内存管理单元12会读取转译后备缓冲区(translation lookaside buffer,TLB)121以将此虚拟地址转换为实体地址(physical address)并且将此实体地址储存在实体地址缓存器122中。然后,加载/储存单元13会从上述实体地址中获得一个缓存索引(index)并使用此缓存索引来存取高速缓存131。最后,标签(tag)验证电路132会基于上述实体地址中的标签来验证从高速缓存131读取的数据。若验证成功,标签验证电路132会发出一个“缓存符合(Hit)”信息并且所述从高速缓存131读取的数据会被传送给中央处理器。然而,若验证失败,标签验证电路132会发出一个“缓存失误(Miss)”信息并且所述从高速缓存131读取的数据会被舍弃。须注意的是,在图1A的结构中,由于用于存取高速缓存131的缓存索引是从内存管理单元12产生的实体地址中获得,因此后续对于高速缓存131的存取必然是在内存管理单元12实例化地址之后才得以执行,从而导致存取高速缓存的效率低落。为了改进上述缺陷,一个修改后的缓存存取架构也被提出。
图1B是中央处理器的修改后的缓存存取架构。在如图1B所示的缓存存取架构中,在指令执行单元11获得虚拟地址之后,加载/储存单元13所执行的缓存存取操作与内存管理单元12执行的地址转译操作可同步进行。也即,在加载/储存单元13所执行的缓存存取操作中,一个缓存索引可以直接地从虚拟地址(即,从虚拟地址的虚拟页偏移(virtual pageoffset))中获得并且可立即被用于存取高速缓存131;并且同一时间,内存管理单元12可执行上述将虚拟地址转换为实体地址的地址转译操作。相较于图1A的架构,图1B的修改后的架构可简单地基于虚拟地址来执行缓存存取操作而不需等待地址转译操作的完成,故中央处理器的缓存存取效率可被提升。但是,须注意的是,图1B的架构所支持的高速缓存的最大容量是有限制的。
随着高速缓存的容量增加,用于存取高速缓存的缓存索引可能会进一步包含从虚拟地址转换而得的实体地址中特定部分的至少一个位。因此,除了图1A的架构对于高速缓存的存取效率不佳之外,图1B的架构则无法满足扩张高速缓存的使用容量的需求。
发明内容
有鉴于此,本发明提供一种用于存取高速缓存的方法与装置,可改善高速缓存的数据存取效率。
本发明的一实施例提供一种用于存取高速缓存的方法,其包括:由位预测单元产生对应于一指令的预测位,其中所述指令来自于中央处理器并指示存取所述高速缓存;由指令执行单元产生对应于所述指令的虚拟地址;根据所述预测位与所述虚拟地址的一部分的虚拟页偏移,由加载/储存单元产生预测缓存索引;以及由所述加载/储存单元使用所述预测缓存索引从所述高速缓存读取数据。
在本发明的一实施例中,所述方法还包括:由所述加载/储存单元使用所述预测缓存索引从所述高速缓存读取实体标签;由内存管理单元将所述虚拟地址转换为实体地址;由所述加载/储存单元判断所述预测位是否相同于所述实体地址中的特定位;由所述加载/储存单元判断所述实体标签是否相同于所述实体地址中的特定标签;以及若所述预测位相同于所述实体地址中的所述特定位且所述实体标签相同于所述实体地址中的所述特定标签,将从所述高速缓存中读取的所述数据传送给所述中央处理单元。
在本发明的一实施例中,由所述位预测单元产生对应于所述指令的所述预测位的步骤包括:产生对应于所述指令的预测虚拟地址;根据所述预测虚拟地址读取转译后备缓冲区;判断第一预测位是否通过读取所述转译后备缓冲区而获得;若所述第一预测位未通过读取所述转译后备缓冲区而获得,由替代位产生器提供第二预测位;以及根据所述第一预测位与所述第二预测位的其中之一产生所述预测位。
在本发明的一实施例中,产生对应于所述指令的所述预测虚拟地址的步骤包括:从所述指令中获得缓存器编号;以及提供所述缓存器编号所对应的基底缓存器的基地址作为所述预测虚拟地址。
在本发明的一实施例中,产生对应于所述指令的所述预测虚拟地址的步骤包括:从所述指令中获得缓存器编号;判断所述缓存器编号是否符合阴影缓存器列表;以及若所述缓存器编号符合所述阴影缓存器列表,将对应于所述缓存器编号的基地址加上所述指令所指示的偏移值以产生所述预测虚拟地址。
在本发明的一实施例中,产生对应于所述指令的所述预测虚拟地址的步骤还包括:若所述缓存器编号不符合所述阴影缓存器列表,使用所述指令所对应的程序计数器的至少一位读取参考预测表格;若从所述参考预测表格获得步幅值(stride value)与对应于所述程序计数器的虚拟地址,将所述步幅值加上对应于所述程序计数器的所述虚拟地址,以获得所述预测虚拟地址;以及若未从所述参考预测表格获得所述步幅值与对应于所述程序计数器的所述虚拟地址,从对应于所述缓存器编号的基底缓存器获得所述预测虚拟地址。
在本发明的一实施例中,由所述替代位产生器提供所述第二预测位的步骤包括:提供替代位作为所述第二预测位,其中所述替代位为具有常数值的位或来自于先前加载/存取指令且作为预测位使用的位。
在本发明的一实施例中,由所述替代位产生器提供所述第二预测位的步骤包括:通过使用对应于所述指令的历史表格索引来读取历史表格以提供作为所述第二预测位的替代位。
在本发明的一实施例中,所述方法还包括:若所述第一预测位未通过读取所述转译后备缓冲区而获得,根据所述内存管理单元对应于所述虚拟地址产生的所述实体地址更新所述历史表格。
在本发明的一实施例中,更新所述历史表格的步骤包括:对所述指令所对应的基地址与所述指令所指示的偏移值执行逻辑操作,以产生所述历史表格索引;以及记录所述历史表格索引与所述实体地址中的所述特定位之间的映射关系于所述历史表格中。
本发明的另一实施例提供一种用于存取高速缓存的装置,其包括位预测单元、指令执行单元及加载/储存单元。所述位预测单元用以产生对应于一指令的预测位,其中所述指令来自于中央处理器并指示存取所述高速缓存。所述指令执行单元耦接至所述位预测单元并且用以产生对应于所述指令的虚拟地址。所述加载/储存单元耦接至所述位预测单元并且用以根据所述预测位与所述虚拟地址的一部分的虚拟页偏移产生预测缓存索引。此外,所述加载/储存单元还用以使用所述预测缓存索引从所述高速缓存读取数据。
在本发明的一实施例中,所述装置还包括内存管理单元,其耦接至所述指令执行单元与所述加载/储存单元并且用以将所述虚拟地址转换为实体地址。所述加载/储存单元还用以使用所述预测缓存索引从所述高速缓存读取实体标签。所述加载/储存单元还用以判断所述预测位是否相同于所述实体地址中的特定位。所述加载/储存单元还用以判断所述实体标签是否相同于所述实体地址中的特定标签。若所述预测位相同于所述实体地址中的所述特定位且所述实体标签相同于所述实体地址中的所述特定标签,所述加载/储存单元还用以将从所述高速缓存中读取的所述数据传送给所述中央处理单元。
在本发明的一实施例中,所述位预测单元产生对应于所述指令的所述预测位的操作包括:产生对应于所述指令的预测虚拟地址;根据所述预测虚拟地址读取转译后备缓冲区;判断第一预测位是否通过读取所述转译后备缓冲区而获得;若所述第一预测位未通过读取所述转译后备缓冲区而获得,由替代位产生器提供第二预测位;以及根据所述第一预测位与所述第二预测位的其中之一产生所述预测位。
在本发明的一实施例中,所述位预测单元还用以从所述指令中获得缓存器编号并提供所述缓存器编号所对应的基底缓存器的基地址作为所述预测虚拟地址。
在本发明的一实施例中,所述位预测单元包括第一地址预测器。所述第一地址预测器用以从所述指令中获得缓存器编号。所述第一地址预测器还用以判断所述缓存器编号是否符合阴影缓存器列表。若所述缓存器编号符合所述阴影缓存器列表,所述第一地址预测器还用以将对应于所述缓存器编号的基地址加上所述指令所指示的偏移值以产生所述预测虚拟地址。
在本发明的一实施例中,所述位预测单元还包括第二地址预测器。若所述缓存器编号不符合所述阴影缓存器列表,所述第二地址预测器用以使用所述指令所对应的程序计数器的至少一位读取参考预测表格。若从所述参考预测表格获得步幅值与对应于所述程序计数器的虚拟地址,所述第二地址预测器还用以将所述步幅值加上对应于所述程序计数器的所述虚拟地址,以获得所述预测虚拟地址。若未从所述参考预测表格获得所述步幅值与对应于所述程序计数器的所述虚拟地址,所述位预测单元还用以从对应于所述缓存器编号的基底缓存器获得所述预测虚拟地址。
在本发明的一实施例中,所述替代位产生器提供所述第二预测位的操作包括:提供替代位作为所述第二预测位,其中所述替代位为具有常数值的位或来自于先前加载/存取指令且作为预测位使用的位。
在本发明的一实施例中,所述替代位产生器提供所述第二预测位的操作包括:通过使用对应于所述指令的历史表格索引来读取历史表格以提供作为所述第二预测位的替代位。
在本发明的一实施例中,若所述第一预测位未通过读取所述转译后备缓冲区而获得,所述替代位产生器还用以根据所述内存管理单元对应于所述虚拟地址产生的所述实体地址更新所述历史表格。
在本发明的一实施例中,所述替代位产生器包括逻辑电路。所述逻辑电路用以对所述指令所对应的基地址与所述指令所指示的偏移值执行逻辑操作,以产生所述历史表格索引。所述替代位产生器还用以记录所述历史表格索引与所述实体地址中的所述特定位之间的映射关系于所述历史表格中。
基于上述,在接收到来自于中央处理器的指示存取高速缓存的指令之后,一个虚拟地址与对应于此指令的一或多个预测位会被产生。然后,根据此预测位与此虚拟地址中一部分的虚拟页偏移,一个预测的缓存索引会被产生并且被用于从高速缓存中读取数据。借此,高速缓存的最大容量可以被增加,且对于高速缓存的存取效率可被维持。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。
附图说明
图1A是传统中央处理器的缓存存取结构。
图1B是中央处理器的修改后的缓存存取架构。
图2是根据本发明的一实施例所示出的用于存取高速缓存的装置的示意图。
图3是根据本发明的一实施例所示出的虚拟地址、实体地址及预测缓存索引的示意图。
图4是根据本发明的一实施例所示出的地址预测器的示意图。
图5是根据本发明的一实施例所示出的对于基底缓存器的读取操作的示意图。
图6是根据本发明的一实施例所示出的替代位产生器的示意图。
图7是根据本发明的一实施例所示出的用于存取高速缓存的方法的流程图。
图8是根据本发明的另一实施例所示出的用于存取高速缓存的方法的流程图。
附图标号说明:
11、23:指令执行单元;
111、231:算术逻辑单元;
112、232:虚拟地址缓存器;
12、24:内存管理单元;
121、201:转译后备缓冲区;
122、241:实体地址缓存器;
13、22:加载/储存单元;
131、200:高速缓存;
132、222:标签验证电路;
20:用于存取高速缓存的装置;
202:基底缓存器;
21:位预测单元;
211、212:地址预测器;
213、214:多工器;
215:替代位产生器;
221:结合电路;
223:预测验证电路;
301:虚拟地址;
302:实体地址;
303:缓存索引;
401、501:指令;
402:阴影缓存器列表;
403:加法器电路;
51:操作数提取单元;
502:缓存器文件夹;
601:哈希电路;
602:历史表格;
S701~S709、S801~S811:步骤。
具体实施方式
以下将以多个实施例搭配附图来说明本发明的具体细节。凡可能之处,相同的索引编号用于表示附图中相同或相似的组件。
本发明的实施例可能会包含发明内容和/或附图所描述的一或多个新颖特征。在此处使用的“至少一”、“一或多”以及“和/或”皆为开放式的表达,并且可以是指组件的单独或合并。例如,“A、B及C中的至少一者”、“A、B或C中的至少一者”、“A、B及C中的一或多者”、“A、B或C中的一或多者”、以及“A、B和/或C”中的任一种表达,皆可用以表示单独的A、单独的B、单独的C、A与B两者、A与C两者、B与C两者、或者A、B及C三者。
须注意的是,以下使用的“一”一词是泛指一或多个。借此,“一”、“一或多”以及“至少一”等用词皆可以彼此互换。
图2是根据本发明的一实施例所示出的用于存取高速缓存的装置的示意图。
请参照图2,用于存取高速缓存200的装置20包括位预测单元21、加载/储存单元22、指令执行单元23及内存管理单元24。位预测单元21用以产生对应于指示存取高速缓存200的指令的预测位,其中所述指令例如是由一个中央处理器(CPU)发出。例如,用于存取高速缓存的装置20、高速缓存200及此中央处理器可以是设置于一芯片或一电路板上。指令执行单元23耦接至位预测单元21与内存管理单元24并且用以产生对应于此指令的一虚拟地址。加载/储存单元22耦接至位预测单元21与内存管理单元24并且用以根据所述预测位与所述虚拟地址的一部分的虚拟页偏移来产生一个预测的缓存索引(也称为预测缓存索引)。加载/储存单元22还用以使用此预测缓存索引来从高速缓存200读取数据。此外,内存管理单元24则用以将所述虚拟地址转换为实体地址。
图3是根据本发明的一实施例所示出的虚拟地址、实体地址及预测缓存索引的示意图。
请参照图2与图3,虚拟地址301可被中央处理器(例如,中央处理器中的应用)使用以从高速缓存200中加载数据或将数据存入高速缓存200中。虚拟地址301包括第一部分(也称为虚拟页编号)与第二部分(也称为虚拟页偏移),其中虚拟地址301包含m个位,虚拟页编号包含(m-q)个位,而虚拟页偏移包含q个位。通过读取转译后备缓冲区201,虚拟地址301可以被转换(也称为转译)为实体地址302,其中实体地址302也包含m个位。在本实施例中,将虚拟地址301转换为实体地址302的地址转译操作是由内存管理单元24执行。
在本实施例中,实体地址302可以被视为符合两种数据结构。从内存管理单元24的角度来看,实体地址302包括第一部分(也称为实体页编号)与第二部分(也称为实体页偏移(physical page offset)),其中实体页编号包含(m-q)个位,而实体页偏移则包含q个位。须注意的是,实际上在地址转译操作中,只有虚拟页编号的(m-q)个位是被转译后备缓冲区201转换以产生相应的(m-q)个位的实体页编号,而实体页偏移则可通过复制(copy)虚拟页偏移而获得。
从另一角度(即,缓存或加载/储存单元22的角度)来看,实体地址302包括第一部分(也称为标签)、第二部分(也称为索引,例如用于存取高速缓存200的缓存索引)及第三部分(也称为区块大小),其中标签包含(m-p-q)个位,索引包含(p+q-b)个位,并且区块大小包括b个位。在某些情况下,索引中的(q-b)个位可以表示高速缓存的所有地址(即,p等于0,且整个索引字段被完整地包含于虚拟页偏移或实体页偏移中),因此索引可以直接地从虚拟地址301的虚拟页偏移或实体地址302的实体页偏移中获得。
然而,在本实施例中,索引中的(q-b)个位不足以表示高速缓存200的所有地址,因此索引被扩展为包含(p+q-b)个位,其中p为正整数,例如p可为1、2或3等等,并且此p个位是实体地址302的实体页编号的一部分。因此,若加载/储存单元22欲在内存管理单元24完整地获得“真正的”实体地址302之前进行高速缓存200的存取,具有(p+q-b)个位的索引30会基于虚拟地址301而先被预测并且被用于存取高速缓存200。
如图3所示,所预测的缓存索引303包括第一部分(也称为预测位)与第二部分(即,虚拟地址301的一部分的虚拟页偏移)。在本实施例中,p个位的预测位是由位预测单元21提供,而所预测的缓存索引303的第二部分则是由加载/储存单元22从虚拟地址301的虚拟页偏移中获得。
请回到图2,位预测单元21包括地址预测器211、地址预测器212、多工器213、多工器214及替代位产生器215。当接收到指示存取高速缓存200的一指令时,位预测单元21会先产生对应于此指令的一预测的虚拟地址(也称为预测虚拟地址)。例如,响应于此指令,此预测虚拟地址可从地址预测器211、地址预测器212或基底缓存器202获得。其中基底缓存器202的缓存器编号例如是由此指令所指示,而多工器213则会输出此预测虚拟地址。此外,此预测虚拟地址的数据长度也是m个位。
在获得预测虚拟地址之后,位预测单元21会根据此预测虚拟地址来读取转译后备缓冲区201并判断一第一预测位是否可通过读取转译后备缓冲区201而获得。例如,若此预测虚拟地址(或,此预测虚拟地址中的虚拟页编号)与某一实体地址(或,此实体地址的实体页编号)之间的映射关系有记录于转译后备缓冲区201中(也称为TLB hit),则此第一预测位可从此读取结果中获得(例如,从此预测虚拟地址所映像的实体地址的实体页编号中获得)。
然而,若此预测虚拟地址(或,此预测虚拟地址的虚拟页编号)与任一实体地址(或,任一实体地址的实体页编号)之间的映射关系皆未记录于转译后备缓冲区201中(也称为TLB miss),表示第一预测位无法通过读取转译后备缓冲区201而获得,因此替代位产生器215会提供一第二预测位。其中,第一预测位与第二预测位分别包括p个位。根据从转译后备缓冲区201接收到的第一预测位或从替代位产生器215接收到的第二预测位,多工器214会输出相应的预测位。
指令执行单元23包括算术逻辑单元231与虚拟地址缓存器232,其中虚拟地址缓存器232耦接至算术逻辑单元231。响应于来自中央处理器的上述指令,算术逻辑单元231会从基底缓存器202接收一个基地址以及上述指令所指示的一个偏移值并且通过将此基地址加上此偏移值来产生对应于此指令的“真正的”虚拟地址。然后,所产生的虚拟地址会被存入虚拟地址缓存器232中。
在预测位与“真正的”虚拟地址被产生之后,加载/储存单元22会从位预测单元21接收预测位并且内存管理单元24会从指令执行单元23接收虚拟地址。然后,加载/储存单元22所执行的缓存存取操作以及内存管理单元24所执行的地址转译操作可同步地进行。具体来看,加载/储存单元22包括结合电路221、标签验证电路222及预测验证电路223。在缓存存取操作中,结合电路221会从位预测单元21(例如,多工器214)接收预测位(例如,所预测的缓存索引303的第一部分)并且从指令执行单元23(例如,虚拟地址缓存器232)接收虚拟地址的一部分的虚拟页偏移(例如,所预测的缓存索引303的第二部分)。结合电路221会结合此预测位与所述虚拟地址中一部分的虚拟页偏移并且据以产生预测缓存索引(例如,所预测的缓存索引303)。然后,加载/储存单元22会使用此预测缓存索引来从高速缓存200中读取数据与一实体标签。
须注意的是,上述缓存存取操作与上述地址转译操作可同步地执行。在地址转译操作中,内存管理单元24会使用从指令执行单元23接收的虚拟地址(或,此虚拟地址中的虚拟页编号)来读取转译后备缓冲区201并且据以将此虚拟地址转换为实体地址。然后,所获得的实体地址会被存入实体地址缓存器241。
此外,为了验证从高速缓存200中读取的数据是否是相应指令所请求的“正确的”数据,标签验证电路222会执行一标签验证操作并且预测验证电路223则会执行一预测验证操作。在标签验证操作中,标签验证电路222会接收从高速缓存200中读取的实体标签并且从内存管理单元24(例如,实体地址缓存器241)接收实体地址的一特定标签。例如,所述实体地址的特定标签即为此实体地址中的所述标签(例如,图3的实体地址302中(m-p-q)个位的标签)。然后,标签验证电路222会比较此实体标签与此特定标签并且据以判断此实体标签是否相同于此特定标签。若判定此实体标签非相同于此特定标签(即,标签验证操作失败),标签验证电路222会发出“缓存失误(Miss)”信息并且所述从高速缓存200读取的数据会被舍弃。换言之,“缓存失误”即是指上述指令所请求的数据当前并不存在于高速缓存200中。例如,响应于所述“缓存失误”信息,中央处理器会发出另一请求给下一级内存阶层(next-level memory hierarchy)以请求此无法从高速缓存200读取的数据。
另一方面,在预测验证操作中,预测验证电路223会从位预测单元21(例如,多工器214)接收预测位并且从内存管理单元24(例如,实体地址缓存器241)接收实体地址的一特定位。例如,所述实体地址的特定位可以是图3所示的p个位,其同时属于实体地址302的实体页编号与缓存索引。然后,预测验证电路223会比较此预测位与此特定位并且判断此预测位是否相同于此特定位。若判定此预测位非相同于此特定位(即,预测验证操作失败),预测验证电路223会发出“预测失误”信息并且所述从高速缓存200中读取的数据会被舍弃。例如,若所述“预测失误”信息被发出,加载/储存单元22会进一步使用实体地址缓存器241所储存的实体地址中所包含的“真正的”缓存索引(例如,图3的实体地址302中的缓存索引)来再次存取高速缓存200并且将所读取的数据传送给中央处理器。
换言之,所述预测验证操作是用于判断用于存取高速缓存200的预测位是否是错的(即,不同于包含在转译而得的实体地址中“真正的”缓存索引中的特定位)。无论预测验证操作是否成功,所述标签验证操作皆是用于判断基于预测位而从高速缓存200中读取的数据是否是“所请求的”数据。此外,在另一实施例中,标签验证操作也可能仅在预测验证操作成功时执行。
然而,若判定预测位相同于所述实体地址的特定位(即,预测验证操作成功)且实体标签相同于所述实体地址的特定标签(即,标签验证操作成功),加载/储存单元22会判定由位预测单元21所预测的预测位是正确的且从高速缓存200读取的数据确实是中央处理器所请求的数据。因此,此数据会被传送给中央处理器。至此,响应于来自中央处理器的指令而从高速缓存中读取所请求的数据的操作完成。以下进一步说明关于位预测单元21执行的位预测操作的相关细节。
在一实施例中,在接收到指示存取高速缓存200的指令之后,地址预测器211会先从所述指令中获得一缓存器编号并且判断此缓存器编号是否符合(也称为击中(hit))一阴影缓存器列表(shadow register list)。若此缓存器编号符合此阴影缓存器列表,地址预测器211会将对应于此缓存器编号的一基地址加上所述指令所指示的一偏移值以产生预测虚拟地址。也即,在此情况下,多工器213会从地址预测器211接收所欲输出的预测虚拟地址。
图4是根据本发明的一实施例所示出的地址预测器的示意图。
请参照图4,地址预测器211包括阴影缓存器列表402与加法器电路403。在接收到指令401之后,地址预测器211会获得指令401中的缓存器编号与偏移。地址预测器211会使用此缓存器编号来读取阴影缓存器列表402并判断是否获得相应的一基地址BA。例如,若基地址BA可通过读取阴影缓存器列表402而获得,表示此缓存器编号符合此阴影缓存器列表402;反之,若没有相应的基地址可通过读取阴影缓存器列表402而获得,表示此缓存器编号不符合此阴影缓存器列表402。若此缓存器编号符合此阴影缓存器列表402,加法器电路403会将基地址BA加上所述偏移的一偏移值offset以产生预测虚拟地址。
请回到图2,若判定缓存器编号不符合阴影缓存器列表,地址预测器212会判断对应于所述指令的一程序计数器(program counter)(或,此程序计数器的至少一个位)是否符合一参考预测表格。若此程序计数器(或,此程序计数器的至少一个位)符合此参考预测表格(例如,此程序计数器与相应的虚拟地址之间的映射关系有记录于此参考预测表格中),地址预测器212会根据一虚拟地址与一步幅值(两者皆是从此参考预测表格中读取)来产生预测虚拟地址。也即,在此情况下,多工器213会从地址预测器212接收所欲输出的预测虚拟地址。
然而,若地址预测器211与地址预测器212皆无法提供预测虚拟地址,所述指令所指示的缓存器编号所对应的基底缓存器202会被定位并且基底缓存器202的基地址会被读取以作为所述预测虚拟地址。也即,在此情况下,多工器213会从基底缓存器202接收所欲输出的预测虚拟地址。
图5是根据本发明的一实施例所示出的对于基底缓存器的读取操作的示意图。
请参照图5,在一实施例中,位预测单元21还包括操作数提取单元(operand fetchunit,OFU)51。当位预测单元21欲直接从基底缓存器202获得预测虚拟地址时,操作数提取单元51会获得指令501所指示的缓存器编号并且使用此缓存器编号来读取缓存器文件夹502。通过读取缓存器文件夹502,后续基底缓存器202的基地址可被获得。
在本实施例中,某些记录有不常(not frequently)改变的基地址的基底缓存器会被记录在地址预测器211的阴影缓存器列表中。若某一个缓存器编号符合此阴影缓存器列表,相应的基地址(例如,图4的基地址BA)会被加上指令所指示的偏移值以产生所需的预测虚拟地址。须注意的是,所述由地址预测器211产生预测虚拟地址的操作是会在算术逻辑单元231产生“真正的”虚拟地址之前执行。此外,由地址预测器211提供的预测虚拟地址可能会最接近算术逻辑单元231产生的对应于指令的“真正的”虚拟地址。
然而,若地址预测器211无法提供预测虚拟地址,表示基底缓存器202并非是被定义为储存有不常改变的基地址的基底缓存器,因此地址预测器212会接续查询参考预测表格以尝试产生预测虚拟地址,其中此参考预测表格可以是使用所述指令或所述指令所指示存取的内存的任意特性来建立。例如,此参考预测表格可能会记录分别对应于一个虚拟地址的多个步幅值,其中每一个虚拟地址是由一个程序计数器作为索引。在读取参考预测表格之前,地址预测器212会获得对应于所述指令的一程序计数器,其中此程序计数器包含所述指令的内存地址。地址预测器212会使用此程序计数器的至少一个位作为索引来读取此参考预测表格。若此程序计数器与某一虚拟地址之间的映射关系有记录于此参考预测表格中,地址预测器212会从此参考预测表格中获得此虚拟地址与对应于此虚拟地址的步幅值。例如,此虚拟地址可能是同一个指令先前所存取过的虚拟地址。若获得此虚拟地址与对应于此虚拟地址的步幅值,地址预测器212会将此步幅值加上相应的虚拟地址以产生预测虚拟地址。在一些情况下,一个指令可能会连续地存取多个内存地址,其中任两个连续存取的内存地址之间的差值是一个常数步幅值(例如,一个偏移值)。因此,若地址预测器212可从此参考预测表格中获得一个虚拟地址与相应的步幅值,则将其相加即可产生预测虚拟地址。由地址预测器212提供的预测虚拟地址也会有较高的机率与算术逻辑单元231产生的虚拟地址相同。
然而,若地址预测器212仍无法提供预测虚拟地址,一个剩余的方式是去读取基底缓存器202的基地址(如图5所示),然后直接使用此基地址作为预测虚拟地址。即便预测虚拟地址是以此种方式产生,仍然有很高的机率可以在后续操作中产生正确的预测位并且借此从高速缓存200中读取到所请求的数据。
须注意的是,在另一实施例中,基底缓存器202的输出也可以直接提供作为预测虚拟地址,和/或地址预测器211与地址预测器212中任一者可能没有被使用或致能。例如,在一实施例中,在从中央处理器接收到所述指令之后,地址预测器212会直接被致能以提供预测虚拟地址,而未先致能地址预测器211。或者,在一实施例中,在从中央处理器接收到所述述指令之后,基底缓存器202的基地址可直接被读取并且作为预测虚拟地址使用,而未致能地址预测器211与地址预测器212。借此,预测虚拟地址可以更快速的被产生并减少延迟。
此外,在由位预测单元21所执行的位预测操作中,若TLB miss事件发生(即,预测虚拟地址与相应的实体地址之间的映射关系未记录于转译后备缓冲区201中),多工器214会自动切换至从替代位产生器215接收第二预测位以产生预测位。替代位产生器215会提供替代位作为第二预测位,其中此替代位例如是具有常数值的位或由先前的加载/储存指令所存取的内存地址中的位的值。例如,所述先前的加载/储存指令可以是早于当前的指令接收并且最接近当前指令的一加载/储存指令。或者,所述先前的加载/储存指令也可以是同样指示存取高速缓存200的任意指令。
更进一步,在一实施例中,替代位产生器215会通过使用对应于所述指令的历史表格索引来读取历史表格以提供替代位。例如,若第一预测位未通过读取转译后备缓冲区201而获得且第二预测位被用以作为预测位,则在内存管理单元24实例化地址之后,替代位产生器215会根据内存管理单元24产生的实体地址来更新此历史表格。
图6是根据本发明的一实施例所示出的替代位产生器的示意图。
请参照图6,替代位产生器215可包括哈希(hash,或称散列)电路601与历史表格602。哈希电路601会接收对应于一指令的基地址BA(例如,基底缓存器202的基地址)以及由同一指令所指示的偏移值offset并且对基地址BA与偏移值offset执行一逻辑操作(例如,异或(XOR)等哈希操作)以产生历史表格索引index。然后,此历史表格索引与所述由内存管理单元24产生的实体地址的特定位(在图6中也称为历史位)之间的映射关系会被记录在此历史表格中。例如,此特定位是图2中从内存管理单元24传输至预测验证电路223的p个位。稍后,若接收到指示存取高速缓存200的另一指令且TLB miss事件再次发生在位预测单元21中,哈希电路601会使用对应于此另一指令的相同的基地址BA以及由此另一指令指示的偏移值来产生历史表格索引并且使用此历史表格索引来读取此历史表格。借此,先前记录的特定位(或,历史位)即可被获得并且作为第二预测位使用。此外,所获得的特定位也可进一步提供给加载/储存单元23来用于产生预测缓存索引。借此,从高速缓存200中读取到“真正”所请求的数据的成功率也可被提升。
图7是根据本发明的一实施例所示出的用于存取高速缓存的方法的流程图。
请参照图2与图7,在步骤S701中,位预测单元21产生预测位,其对应于指示存取高速缓存200的一指令。在步骤S702中,指令执行单元23产生对应于此指令的虚拟地址。在步骤S703中,加载/储存单元22根据所述预测位与所述虚拟地址的一部分的虚拟页偏移产生预测的缓存索引。在步骤S704中,加载/储存单元22使用所预测的缓存索引从高速缓存200中读取实体标签与数据。在步骤S705中,内存管理单元24将所述虚拟地址转译为实体地址。须注意的是,步骤S704与S705可平行地(或,同步地)执行。在步骤S706中,判断预测验证操作是否成功。若预测验证操作成功,在步骤S707中,判断标签验证操作是否成功。若预测验证操作不成功(即,失败),在步骤S708中,执行预测失误处理。例如,加载/储存单元22可使用从内存管理单元25产生的实体地址中获得的“真正的”缓存索引来再次存取高速缓存200,并且将所读取的数据传送至中央处理器。若标签验证操作不成功,在步骤S709中,执行缓存失误处理。例如,中央处理器可发出一个请求给下一级内存阶层以请求此无法从高速缓存200读取的所请求的数据。若标签验证操作成功,从高速缓存200中读取的数据会被传送给中央处理器以响应接收到的指令。然而,更多像是更新一或多个表格(例如,阴影缓存器列表、参考预测表格或历史表格)等操作也可在步骤S708和/或S709中执行,在此便不赘述。
图8是根据本发明的另一实施例所示出的用于存取高速缓存的方法的流程图。
请参照图2与图8,在步骤S801中,第一地址预测器(例如,地址预测器211)从一指令中获得缓存器编号。在步骤S802中,判断此缓存器编号是否符合阴影缓存器列表。若此缓存器编号符合阴影缓存器列表,在步骤S803中,第一地址预测器通过将基地址加上所述指令指示的偏移值以产生预测的虚拟地址。若此缓存器编号不符合阴影缓存器列表,在步骤S804中,第二地址预测器(例如,地址预测器212)尝试使用一参考预测表格来预测虚拟地址。在步骤S805中,判断第二地址预测器是否预测出虚拟地址。若一虚拟地址在步骤S804中被预测出来,则在步骤S806中,第二地址预测器提供所预测的虚拟地址。若没有虚拟地址在步骤S804中被预测出来,则在步骤S807中,位预测单元21提供基底缓存器202的基地址作为所预测的虚拟地址。在步骤S808中,多工器213接收所预测的虚拟地址并使用此预测虚拟地址来读取转译后备缓冲区201。在步骤S809中,判断转译后备缓冲区201是否可产生第一预测位。若否,在步骤S810中,替代位产生器215提供第二预测位。若是,进入步骤S811。在步骤S811中,多工器214接收第一预测位或第二预测位并且据以产生用于后续高速缓存的存取操作的预测位。
然而,图7与图8中各步骤已详细说明如上,在此便不再赘述。值得注意的是,图7与图8中各步骤可以实作为多个程序代码或是电路,本发明不加以限制。此外,图7与图8的方法可以搭配以上范例实施例使用,也可以单独使用,本发明不加以限制。
综上所述,在从中央处理器接收到指示存取高速缓存的指令后,对应于此指令,一个虚拟地址以及一或多个预测位会被产生。例如,上述实施例中提及的至少三种方式可单独或合并使用以提供预测的虚拟地址并且第一预测位可相应地产生以作为所需的预测位。此外,若发生TLB miss事件而无法获得第一预测位,则由替代位产生器所提供的第二预测位也可作为所需的预测位。然后,根据此预测位以及上述虚拟地址的虚拟页偏移的一部分数据,一个预测的缓存索引会被产生并且进一步用于从高速缓存中读取数据。借此,高速缓存的最大容量将可以被增加,同时存取高速缓存的效率也可被维持。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (20)
1.一种用于存取高速缓存的方法,包括:
由位预测单元产生对应于指令的预测位,其中所述指令来自于中央处理器并指示存取所述高速缓存;
由指令执行单元产生对应于所述指令的虚拟地址;
根据所述预测位与所述虚拟地址的部分的虚拟页偏移,由加载/储存单元产生预测缓存索引;以及
由所述加载/储存单元使用所述预测缓存索引从所述高速缓存读取数据。
2.根据权利要求1所述的方法,还包括:
由所述加载/储存单元使用所述预测缓存索引从所述高速缓存读取实体标签;
由内存管理单元将所述虚拟地址转换为实体地址;
由所述加载/储存单元判断所述预测位是否相同于所述实体地址中的特定位;
由所述加载/储存单元判断所述实体标签是否相同于所述实体地址中的特定标签;以及
若所述预测位相同于所述实体地址中的所述特定位且所述实体标签相同于所述实体地址中的所述特定标签,将从所述高速缓存中读取的所述数据传送给所述中央处理单元。
3.根据权利要求2所述的方法,其中由所述位预测单元产生对应于所述指令的所述预测位的步骤包括:
产生对应于所述指令的预测虚拟地址;
根据所述预测虚拟地址读取转译后备缓冲区;
判断第一预测位是否通过读取所述转译后备缓冲区而获得;
若所述第一预测位未通过读取所述转译后备缓冲区而获得,由替代位产生器提供第二预测位;以及
根据所述第一预测位与所述第二预测位的其中之一产生所述预测位。
4.根据权利要求3所述的方法,其中产生对应于所述指令的所述预测虚拟地址的步骤包括:
从所述指令中获得缓存器编号;以及
提供所述缓存器编号所对应的基底缓存器的基地址作为所述预测虚拟地址。
5.根据权利要求3所述的方法,其中产生对应于所述指令的所述预测虚拟地址的步骤包括:
从所述指令中获得缓存器编号;
判断所述缓存器编号是否符合阴影缓存器列表;以及
若所述缓存器编号符合所述阴影缓存器列表,将对应于所述缓存器编号的基地址加上所述指令所指示的偏移值以产生所述预测虚拟地址。
6.根据权利要求5所述的方法,其中产生对应于所述指令的所述预测虚拟地址的步骤还包括:
若所述缓存器编号不符合所述阴影缓存器列表,使用所述指令所对应的程序计数器的至少一位读取参考预测表格;
若从所述参考预测表格获得步幅值与对应于所述程序计数器的虚拟地址,将所述步幅值加上对应于所述程序计数器的所述虚拟地址,以获得所述预测虚拟地址;以及
若未从所述参考预测表格获得所述步幅值与对应于所述程序计数器的所述虚拟地址,从对应于所述缓存器编号的基底缓存器获得所述预测虚拟地址。
7.根据权利要求3所述的方法,其中由所述替代位产生器提供所述第二预测位的步骤包括:
提供替代位作为所述第二预测位,
其中所述替代位为具有常数值的位或来自于先前加载/存取指令且作为预测位使用的位。
8.根据权利要求3所述的方法,其中由所述替代位产生器提供所述第二预测位的步骤包括:
通过使用对应于所述指令的历史表格索引来读取历史表格以提供作为所述第二预测位的替代位。
9.根据权利要求8所述的方法,还包括:
若所述第一预测位未通过读取所述转译后备缓冲区而获得,根据所述内存管理单元对应于所述虚拟地址产生的所述实体地址更新所述历史表格。
10.根据权利要求9所述的方法,其中更新所述历史表格的步骤包括:
对所述指令所对应的基地址与所述指令所指示的偏移值执行逻辑操作,以产生所述历史表格索引;以及
记录所述历史表格索引与所述实体地址中的所述特定位之间的映射关系于所述历史表格中。
11.一种用于存取高速缓存的装置,包括:
位预测单元,用以产生对应于指令的预测位,其中所述指令来自于中央处理器并指示存取所述高速缓存;
指令执行单元,耦接至所述位预测单元并且用以产生对应于所述指令的虚拟地址;以及
加载/储存单元,耦接至所述位预测单元并且用以根据所述预测位与所述虚拟地址的部分的虚拟页偏移产生预测缓存索引,
其中所述加载/储存单元还用以使用所述预测缓存索引从所述高速缓存读取数据。
12.根据权利要求11所述的装置,还包括:
内存管理单元,耦接至所述指令执行单元与所述加载/储存单元并且用以将所述虚拟地址转换为实体地址,
其中所述加载/储存单元还用以使用所述预测缓存索引从所述高速缓存读取实体标签,
其中所述加载/储存单元还用以判断所述预测位是否相同于所述实体地址中的特定位,
其中所述加载/储存单元还用以判断所述实体标签是否相同于所述实体地址中的特定标签,
其中若所述预测位相同于所述实体地址中的所述特定位且所述实体标签相同于所述实体地址中的所述特定标签,所述加载/储存单元还用以将从所述高速缓存中读取的所述数据传送给所述中央处理单元。
13.根据权利要求12所述的装置,其中所述位预测单元产生对应于所述指令的所述预测位的操作包括:
产生对应于所述指令的预测虚拟地址;
根据所述预测虚拟地址读取转译后备缓冲区;
判断第一预测位是否通过读取所述转译后备缓冲区而获得;
若所述第一预测位未通过读取所述转译后备缓冲区而获得,由替代位产生器提供第二预测位;以及
根据所述第一预测位与所述第二预测位的其中之一产生所述预测位。
14.根据权利要求13所述的装置,其中所述位预测单元还用以从所述指令中获得缓存器编号并提供所述缓存器编号所对应的基底缓存器的基地址作为所述预测虚拟地址。
15.根据权利要求13所述的装置,其中所述位预测单元包括第一地址预测器,
其中所述第一地址预测器用以从所述指令中获得缓存器编号,
其中所述第一地址预测器还用以判断所述缓存器编号是否符合阴影缓存器列表,
其中若所述缓存器编号符合所述阴影缓存器列表,所述第一地址预测器还用以将对应于所述缓存器编号的基地址加上所述指令所指示的偏移值以产生所述预测虚拟地址。
16.根据权利要求15所述的装置,其中所述位预测单元还包括第二地址预测器,
其中若所述缓存器编号不符合所述阴影缓存器列表,所述第二地址预测器用以使用所述指令所对应的程序计数器的至少一位读取参考预测表格,
其中若从所述参考预测表格获得步幅值与对应于所述程序计数器的虚拟地址,所述第二地址预测器还用以将所述步幅值加上对应于所述程序计数器的所述虚拟地址,以获得所述预测虚拟地址,
其中若未从所述参考预测表格获得所述步幅值与对应于所述程序计数器的所述虚拟地址,所述位预测单元还用以从对应于所述缓存器编号的基底缓存器获得所述预测虚拟地址。
17.根据权利要求13所述的装置,其中所述替代位产生器提供所述第二预测位的操作包括:
提供替代位作为所述第二预测位,
其中所述替代位为具有常数值的位或来自于先前加载/存取指令且作为预测位使用的位。
18.根据权利要求13所述的装置,其中所述替代位产生器提供所述第二预测位的操作包括:
通过使用对应于所述指令的历史表格索引来读取历史表格以提供作为所述第二预测位的替代位。
19.根据权利要求18所述的装置,其中若所述第一预测位未通过读取所述转译后备缓冲区而获得,所述替代位产生器还用以根据所述内存管理单元对应于所述虚拟地址产生的所述实体地址更新所述历史表格。
20.根据权利要求19所述的装置,其中所述替代位产生器包括逻辑电路,
其中所述逻辑电路用以对所述指令所对应的基地址与所述指令所指示的偏移值执行逻辑操作,以产生所述历史表格索引,
其中所述替代位产生器还用以记录所述历史表格索引与所述实体地址中的所述特定位之间的映射关系于所述历史表格中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/263,383 | 2016-09-13 | ||
US15/263,383 US10579522B2 (en) | 2016-09-13 | 2016-09-13 | Method and device for accessing a cache memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107818053A true CN107818053A (zh) | 2018-03-20 |
CN107818053B CN107818053B (zh) | 2021-06-15 |
Family
ID=59367660
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611215570.8A Active CN107818053B (zh) | 2016-09-13 | 2016-12-26 | 用于存取高速缓存的方法与装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10579522B2 (zh) |
CN (1) | CN107818053B (zh) |
TW (1) | TWI582592B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110362509A (zh) * | 2018-04-10 | 2019-10-22 | 北京忆恒创源科技有限公司 | 统一地址转换与统一地址空间 |
CN110769273A (zh) * | 2018-07-27 | 2020-02-07 | 晨星半导体股份有限公司 | 高速缓存存取*** |
CN112783805A (zh) * | 2019-11-05 | 2021-05-11 | 晶豪科技股份有限公司 | 内存芯片,内存模块以及用来假性存取其记忆库的方法 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10860319B2 (en) * | 2018-03-30 | 2020-12-08 | Intel Corporation | Apparatus and method for an early page predictor for a memory paging subsystem |
TWI756616B (zh) * | 2020-01-14 | 2022-03-01 | 瑞昱半導體股份有限公司 | 處理器電路以及資料處理方法 |
TWI774474B (zh) * | 2021-07-15 | 2022-08-11 | 瑞昱半導體股份有限公司 | 處理器電路以及資料處理方法 |
US20240202197A1 (en) * | 2022-12-16 | 2024-06-20 | Microsoft Technology Licensing, Llc | Distributed data storage using materialized intermediate partitions |
CN117056157B (zh) * | 2023-10-11 | 2024-01-23 | 沐曦集成电路(上海)有限公司 | 一种寄存器层次化验证方法、存储介质和电子设备 |
CN117931693A (zh) * | 2024-03-22 | 2024-04-26 | 摩尔线程智能科技(北京)有限责任公司 | 一种内存管理方法及内存管理单元 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5956752A (en) * | 1996-12-16 | 1999-09-21 | Intel Corporation | Method and apparatus for accessing a cache using index prediction |
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 |
US6745313B2 (en) * | 2002-01-09 | 2004-06-01 | International Business Machines Corporation | Absolute address bits kept in branch history table |
CN1820258A (zh) * | 2002-12-12 | 2006-08-16 | 国际商业机器公司 | 用于实时应用程序的改进的存储器管理 |
CN101727405A (zh) * | 2008-10-20 | 2010-06-09 | 株式会社东芝 | 虚拟地址高速缓冲存储器和方法以及处理器 |
CN101894010A (zh) * | 2009-08-24 | 2010-11-24 | 威盛电子股份有限公司 | 微处理器及适用于微处理器的操作方法 |
CN102298554A (zh) * | 2010-06-24 | 2011-12-28 | 英特尔公司 | 用于降低存储设备功耗的方法和*** |
CN102722451A (zh) * | 2012-06-25 | 2012-10-10 | 杭州中天微***有限公司 | 采用物理地址预测访问高速缓存的装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5148538A (en) | 1989-10-20 | 1992-09-15 | International Business Machines Corporation | Translation look ahead based cache access |
US5392410A (en) | 1992-04-30 | 1995-02-21 | International Business Machines Corporation | History table for prediction of virtual address translation for cache access |
US6813699B1 (en) | 1995-06-02 | 2004-11-02 | Transmeta Corporation | Speculative address translation for processor using segmentation and optional paging |
US6138215A (en) | 1998-04-30 | 2000-10-24 | International Business Machines Corporation | Method for absolute address history table synonym resolution |
US6138223A (en) | 1998-04-30 | 2000-10-24 | International Business Machines Corporation | Absolute address history table index generation for predicting instruction and operand cache accesses |
US6647464B2 (en) * | 2000-02-18 | 2003-11-11 | Hewlett-Packard Development Company, L.P. | System and method utilizing speculative cache access for improved performance |
TWI506434B (zh) * | 2010-03-29 | 2015-11-01 | Via Tech Inc | 預取單元、資料預取方法、電腦程式產品以及微處理器 |
US8914581B2 (en) * | 2010-05-20 | 2014-12-16 | Telefonaktiebolaget L M Ericsson (Publ) | Method and apparatus for accessing cache memory |
US9384131B2 (en) * | 2013-03-15 | 2016-07-05 | International Business Machines Corporation | Systems and methods for accessing cache memory |
US9792222B2 (en) * | 2014-06-27 | 2017-10-17 | Intel Corporation | Validating virtual address translation by virtual machine monitor utilizing address validation structure to validate tentative guest physical address and aborting based on flag in extended page table requiring an expected guest physical address in the address validation structure |
-
2016
- 2016-09-13 US US15/263,383 patent/US10579522B2/en active Active
- 2016-10-28 TW TW105135053A patent/TWI582592B/zh active
- 2016-12-26 CN CN201611215570.8A patent/CN107818053B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5956752A (en) * | 1996-12-16 | 1999-09-21 | Intel Corporation | Method and apparatus for accessing a cache using index prediction |
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 |
US6745313B2 (en) * | 2002-01-09 | 2004-06-01 | International Business Machines Corporation | Absolute address bits kept in branch history table |
CN1820258A (zh) * | 2002-12-12 | 2006-08-16 | 国际商业机器公司 | 用于实时应用程序的改进的存储器管理 |
CN101727405A (zh) * | 2008-10-20 | 2010-06-09 | 株式会社东芝 | 虚拟地址高速缓冲存储器和方法以及处理器 |
CN101894010A (zh) * | 2009-08-24 | 2010-11-24 | 威盛电子股份有限公司 | 微处理器及适用于微处理器的操作方法 |
CN102298554A (zh) * | 2010-06-24 | 2011-12-28 | 英特尔公司 | 用于降低存储设备功耗的方法和*** |
CN102722451A (zh) * | 2012-06-25 | 2012-10-10 | 杭州中天微***有限公司 | 采用物理地址预测访问高速缓存的装置 |
Non-Patent Citations (3)
Title |
---|
C.F. CHEN: "Accurate and complexity-effective spatial pattern prediction", 《10TH INTERNATIONAL SYMPOSIUM ON HIGH PERFORMANCE COMPUTER ARCHITECTURE (HPCA"04)》 * |
时雨夏凪: "Cache页着色小结", 《HTTPS://BLOG.CSDN.NET/INSSWER/ARTICLE/DETAILS/17201799》 * |
黄涛: "末级高速缓存性能优化关键技术研究", 《中国博士学位论文全文数据库信息科技辑》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110362509A (zh) * | 2018-04-10 | 2019-10-22 | 北京忆恒创源科技有限公司 | 统一地址转换与统一地址空间 |
CN110362509B (zh) * | 2018-04-10 | 2024-04-12 | 北京忆恒创源科技股份有限公司 | 统一地址转换方法与统一地址空间 |
CN110769273A (zh) * | 2018-07-27 | 2020-02-07 | 晨星半导体股份有限公司 | 高速缓存存取*** |
CN112783805A (zh) * | 2019-11-05 | 2021-05-11 | 晶豪科技股份有限公司 | 内存芯片,内存模块以及用来假性存取其记忆库的方法 |
CN112783805B (zh) * | 2019-11-05 | 2023-11-21 | 晶豪科技股份有限公司 | 内存芯片,内存模块以及用来假性存取其记忆库的方法 |
Also Published As
Publication number | Publication date |
---|---|
TWI582592B (zh) | 2017-05-11 |
US20180074957A1 (en) | 2018-03-15 |
CN107818053B (zh) | 2021-06-15 |
TW201810046A (zh) | 2018-03-16 |
US10579522B2 (en) | 2020-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107818053A (zh) | 用于存取高速缓存的方法与装置 | |
JP3799050B2 (ja) | 階層化された記憶項目とキャッシュタグを単一キャッシュアレイ構造に格納するキャッシュメモリ装置及び方法 | |
JP2618175B2 (ja) | キャッシュ・アクセスのための仮想アドレス変換予測の履歴テーブル | |
US11403222B2 (en) | Cache structure using a logical directory | |
US8185692B2 (en) | Unified cache structure that facilitates accessing translation table entries | |
TWI698745B (zh) | 快取記憶體、用於操作快取記憶體之方法及其之非暫時性電腦可讀媒體 | |
US11775445B2 (en) | Translation support for a virtual cache | |
US10810134B2 (en) | Sharing virtual and real translations in a virtual cache | |
CN105814548A (zh) | 具有使用不同编索引方案的主高速缓存器和溢出高速缓存器的高速缓存器*** | |
CN115269454A (zh) | 数据访问方法、电子设备和存储介质 | |
US20050027960A1 (en) | Translation look-aside buffer sharing among logical partitions | |
US6810473B2 (en) | Replacement algorithm for a replicated fully associative translation look-aside buffer | |
US8595465B1 (en) | Virtual address to physical address translation using prediction logic | |
CN112527395A (zh) | 数据预取方法和数据处理装置 | |
US20140013054A1 (en) | Storing data structures in cache | |
US10140217B1 (en) | Link consistency in a hierarchical TLB with concurrent table walks | |
CN111133424A (zh) | 开放寻址的探测屏障 | |
US6226731B1 (en) | Method and system for accessing a cache memory within a data-processing system utilizing a pre-calculated comparison array | |
JPH10105458A (ja) | キャッシュメモリシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |