CN108121671A - 集成电路 - Google Patents
集成电路 Download PDFInfo
- Publication number
- CN108121671A CN108121671A CN201710212204.5A CN201710212204A CN108121671A CN 108121671 A CN108121671 A CN 108121671A CN 201710212204 A CN201710212204 A CN 201710212204A CN 108121671 A CN108121671 A CN 108121671A
- Authority
- CN
- China
- Prior art keywords
- mentioned
- address
- group
- cache memory
- row
- 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.)
- Pending
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
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/142—Reconfiguring to eliminate the error
- G06F11/1423—Reconfiguring to eliminate the error by reconfiguration of paths
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
-
- 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/0877—Cache access modes
-
- 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/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/601—Reconfiguration of cache memory
-
- 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/608—Details relating to cache mapping
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开提供一种集成电路。上述集成电路包括一高速缓冲存储器与一地址译码器。上述高速缓冲存储器划分成多群。上述地址译码器根据一存取地址而提供一实体地址。当上述存取地址是对应于上述高速缓冲存储器的上述多群的一特定群时,上述地址译码器改变上述存取地址,以提供上述实体地址,以及当上述存取地址是对应于上述高速缓冲存储器中上述特定群之外的上述群的一者时,上述地址译码器指派上述存取地址为上述实体地址。本公开提供的集成电路可以延长存储单元的使用期限。
Description
技术领域
本发明实施例涉及集成电路技术领域,具体而言,涉及一种集成电路的高速缓冲存储器。
背景技术
高速缓冲存储器通常被用于缩短主存储器的存取时间,从而提高处理器的处理性能。由于存储器存取的局部性,高速缓冲是有效的。有两种类型的局部性。首先是空间局部性,其中彼此相邻的数据和码容易被同时存取。另一者为时间局部性,其中通常存取的数据和码可以被高速缓冲在较小的存储器中,以供进一步存取。
芯片上高速缓冲存储器的广泛使用对于维持处理器的存储器频宽的需求和减少存储器存取的平均延迟(latency)已成为必要的。半导体技术的进步和特征尺寸的连续缩小为单芯片上的额外功能创造了额外的空间。使用这些额外空间的最普通方式是将具有高容量的高速缓冲存储器(或者高速缓冲的阶层(hierarchy))整合在内,使得处理器能执行更好。
发明内容
本发明实施例提供一种集成电路。上述集成电路包括一高速缓冲存储器与一地址译码器。上述高速缓冲存储器划分成多个群。上述地址译码器根据一存取地址而提供一实体地址。当上述存取地址是对应于上述高速缓冲存储器的上述多群的一特定群时,上述地址译码器改变上述存取地址,以提供上述实体地址,以及当上述存取地址是对应于上述高速缓冲存储器中上述特定群之外的上述群的一者时,上述地址译码器指派上述存取地址为上述实体地址。
附图说明
图1是显示根据本发明一些实施例所述的集成电路;
图2是显示根据本发明一些实施例所述的高速缓冲存储器;
图3是显示根据本发明一些实施例所述的高速缓冲存储器;
图4是显示根据本发明一些实施例所述的高速缓冲存储器(例如图1之高速缓冲存储器)的映射方法;
图5是显示根据本发明一些实施例所述的高速缓冲存储器的地址译码器;
图6A是显示当对图5中非指派群进行存取时集合地址与行线信号之间的关系示范表;
图6B是显示当存取图5中特定群(所指派的群)时集合地址与行线信号之间的关系示范表;
图7是显示根据本发明一些实施例所述的高速缓冲存储器的地址译码器;
图8A是显示当对图7中所指派的群进行存取且移位值为“0001”时集合地址与行线信号之间的关系示范表;
图8B是显示当对图7中所指派的群进行存取且移位值为“0010”时集合地址与行线信号之间的关系示范表;
图8C是显示当对图7中所指派的群进行存取且移位值为“0100”时集合地址与行线信号之间的关系示范表;以及
图8D是显示当对图7中所指派的群进行存取且移位值为“1000”时集合地址与行线信号之间的关系示范表。
附图标记说明:
100~集成电路;
110~处理器;
120、200、300~高速缓冲存储器;
130、500、700~地址译码器;
140~存储器;
210~标签目录;
220~数据阵列;
510、710~控制器;
520~NAND阵列;
525_0-525_15、725_0-725_15~NAND逻辑门
530~计数器;
540~加法器;
550~多工器;
730~移位暂存器
740_0-740_3~XOR逻辑门
ADDR~存取地址;
ADDR_map~映射地址;
ADDR_phy~实体地址;
ADDR_set~集合地址;
G_0-G_(k-1)~群;
Int~数值
row_0-row_(n-1)~行;
row~行线信号
Scond、Sctrl1、Sctrl2、Sctrl3~控制信号;
set_0-set_1023~集合;
SR~移位值;
S410-S450~操作;
way_0-way_(m-1)~通道
具体实施方式
为让本公开的上述和其他目的、特征、和优点能更明显易懂,下文特举出优选实施例,并配合说明书附图,作详细说明如下:
以下公开内容提供了许多用于实现在此所提供的标的不同部件的不同实施例或范例。以下描述组件和排列的具体范例以简化本发明的实施例。当然,这些仅仅是范例,而不在于限制本发明的保护范围。例如,在以下描述中,在第二部件上方或其上形成第一部件,可以包含第一部件和第二部件以直接接触的方式形成的实施例,并且也可以包含在第一部件和第二部件之间形成额外的部件,使得第一部件和第二部件可以不直接接触的实施例。此外,本发明的实施例可在各个范例中重复参考标号及/或字母。此重复是为了简单和清楚的目的,其本身并非用于指定所讨论的各个实施例及/或配置之间的关系。
下文描述实施例的各种变化。通过各种视图与所示出的的实施例,类似的元件标号用于标示类似的元件。应可理解的是,额外的操作步骤可实施于所述方法之前、之间或之后,且在所述方法的其他实施例中,可以取代或省略部分的操作步骤。
随着半导体制程技术的进步,越来越多的高速缓冲存储器可实施在具有处理器(例如中央处理单元(CPU)、图形处理单元(GPU)或应用处理单元(APU))的芯片上,以减少存储器延迟(latency)与频宽压力。高速缓冲存储器是使用集合相关(set-associative)结构,其中在使用期限中集合地址映射是固定的。再者,高速缓冲存储器的某个集合可能是热门的。也就是说,这些集合会经常被使用,而会对高速缓冲存储器中一些存储单元造成不均匀磨损,因而减少高速缓冲存储器的使用期限。
高速缓冲存储器是快速且昂贵的。传统上,高速缓冲存储器是以“层级(level)”来分类,而层级是描述高速缓冲存储器对处理器的接近性和可存取性。
层级1(L1)高速缓冲存储器的速度相当快,但尺寸相对较小,且L1高速缓冲存储器可以嵌入在处理器(例如CPU、GPU、APU等)内。
层级2(L2)高速缓冲存储器具有比L1高速缓冲存储器更大的容量。L2高速缓冲存储器可位于处理器、单独芯片或是具有将L2高速缓冲存储器互连到处理器的高速替代系统总线的协处理器(coprocessor)内。
层级3(L3)高速缓冲存储器是用于提高L1高速缓冲存储器和/或L2高速缓冲存储器的效能的专门存储器。L3高速缓冲存储器的速度明显慢于L1或L2高速缓冲存储器,但通常比DRAM快。
高速缓冲存储器的配置持续发展,而高速缓冲存储器传统上操作在三种不同的配置:直接映射(mapping)、完全相关(fully-associative)映射和集合相关(set-associative)映射。
对直接映射而言,每一区域会被确切地映射到高速缓冲存储器的一个位置。概念上,高速缓冲存储器的每一行(row)会被划分为三列(columns):包括所提取和储存的实际数据的数据区域或是高速缓冲线(cache line)、包括所提取的数据的全部或部分地址的标签(tag)、以及用以表示在行(row)直接映射的数据的有效位的存在的旗标位(flag bit)。
对完全相关映射而言,其结构相似于直接映射。再者,其允许将区域映射到任何高速缓冲位置上,而非映射到预先指定的高速缓冲位置(如直接映射的情况)。
对集合相关映射而言,其可以是直接映射和完全关联映射之间的折衷,且每一区域会被映射到一个集合的高速缓冲位置。有时候,其被称为N通道(N-way)集合相关映射,用以提供用于将主存储器中的位置高速缓冲至L1高速缓冲存储器中任何“N”个位置中。
高速缓冲存储器被划分为多个集合,其中每一集合包括多条高速缓冲线,即N通道。此外,每一存储器地址会被指派给一集合,且可以被高速缓冲在该集合中所述位置中的任何一者。因此,在高速缓冲存储器中所给定的存储器位置可能会有“N”个可能的地方。标签RAM地址译码器用于识别来自主存储器的哪一数据目前储存在每一高速缓冲线中。储存在标签RAM中的数值会用于确定高速缓冲查找(lookup)结果是否命中或未命中。
图1是显示根据本发明一些实施例所述的集成电路100。集成电路100包括处理器110、高速缓冲存储器120、地址译码器130以及存储器140。在此实施例中,存储器140是集成电路100的主存储器。再者,存储器140的储存容量大于高速缓冲存储器120的储存容量。
高速缓冲存储器120是处理器110可快速存取的随机存取存储器(RAM)。高速缓冲存储器120用于储存处理器110所频繁使用的数据的复本(copy),而这些数据是储存在存储器140中。因此,处理器110可与高速缓冲存储器120共同来执行操作或任务,以减少集成电路的操作时间或耗电量。具体而言,在操作期间经常被处理器110重新参考的程序指令及/或数据可以储存在高速缓冲存储器120中,因此可增加整体的操作速度。在一些实施例中,存储器140的存储器类型(例如SRAM)是不同于高速缓冲存储器120的存储器类型(例如DRAM)。在一些实施例中,存储器140的存储器类型是相同于高速缓冲存储器120的存储器类型。
在集成电路100中,处理器110可经由地址译码器130来存取高速缓冲存储器120。地址译码器130能将来自处理器110的地址解码成高速缓冲存储器120的实体位置。再者,地址译码器130还能将地址映射到不同于对应于所解码的地址的存储器的实体位置的存储器的其他实体位置,于是可避免正在被存取的高速缓冲存储器120的高速缓冲线总是到达相同的实体位置。假如存取(来自地址的)是热门的,若所对应的存储单元具有耐受性(endurance)限制,则更频繁地存取特定实体位置将会造成可能的挑战。通过在高速缓冲存储器120的存储单元之间均匀地分布存取,可保护高速缓冲存储器120的存储单元在其使用期间免于大量循环。因此,高速缓冲存储器120的耐受性会增加。例如,当处理器110执行操作以处理数据时,处理器110会先在高速缓冲存储器120中查看数据。假如处理器110在高速缓冲存储器120中找到数据,则处理器110不必更为耗时地进一步存取来自集成电路100中的较大存储器(例如存储器140)或是其他数据储存装置的数据。
图2是显示根据本发明一些实施例所述的高速缓冲存储器200。高速缓冲存储器200包括由多存储单元所形成的存储器阵列,而存储单元是安排在多行与多列中。再者,高速缓冲存储器200是划分成两部分:标签(TAG)目录210与数据(DATA)阵列220。如先前所描述,标签目录210包括全部或部分的所提取(fetch)的数据的地址,而数据阵列220包括所提取和储存的实际数据。
高速缓冲存储器200是安排成集合相关(set-associative)结构,而集合相关结构包括多个集合set_0至set_1023。在此实施例中,每一集合是被安排在个别的行(row)中。此外,每一集合包括对应的标签目录210和对应的数据阵列220。对每一集合而言,对应的标签目录210包括多个通道(way)way_0到way_(m-1),而对应的数据阵列220亦包括多个通道way_0到way_(m-1)。值得注意的是,集合的数量以及通道的数量仅作为示范例,并非用以限制本发明。
每一通道是具有多个位(例如64B)的特定大小的高速缓冲线。以具有高速缓冲线大小512B和4通道的集合相关组织的32KB尺寸的高速缓冲存储器作为例子来说明,高速缓冲存储器总共有512条线,以及总共有128个集合,且在每一集合具有4条线(4通道集合相关)。
在一些实施例中,当存取高速缓冲存储器200时,可相应于来自处理器(例如处理器110)的存取地址ADDR而决定对应于所存取的集合的集合地址ADDR_set。接着,首先找查对应于所存取的集合的标签目录210,以查看是否为高速缓冲命中,例如判断在所存取的集合的标签目录210是否有任一通道与存取地址ADDR的标签信息相匹配。若为高速缓冲命中,则找查对应于所存取的集合的数据阵列220,以便得到储存在对应于高速缓冲命中的数据阵列220的通道的高速缓冲数据。
例如,假如存取地址ADDR是指示欲对集合set_2进行存取,则储存在集合set_2的通道way_0至way_(m-1)的多个标签TAG0至TAG(m-1)会被读出,以判断标签TAG0至TAG(m-1)的一者是否等于存取地址ADDR的标签信息。若判断出所读取的通道way_(m-1)的标签TAG(m-1)是等于存取地址ADDR的标签信息,则储存在集合set_2中数据阵列220的通道way_(m-1)的数据DATA(m-1)会被读出。
图3是显示根据本发明一些实施例所述的高速缓冲存储器300。高速缓冲存储器300包括由多存储单元所形成的存储器阵列,而存储单元是安排在多行与多列中。相似地,高速缓冲存储器300包括标签目录310以及数据阵列320。
在高速缓冲存储器300中,多个集合(或行)划分成多个群G_0至G_(k-1)。群G_0至G_(k-1)各包括安排在阵列中从row_0至row_(n-1)的n个连续行(row)中的存储单元。在此实施例中,群G_0至G_(k-1)具有相同数量的集合,例如每一群具有N个集合。在一些实施例中,群G_0至G_(k-1)具有不同数量的集合。
当存取高速缓冲存储器300时,会从群G_0至G_(k-1)中指派或是选择一特定群。同时地,会调整特定群中的集合配置(configuration),使得调整后的集合配置会不同于非特定群的每一群中的常规集合配置。在一些实施例中,特定群的集合配置会周期性地改变。
在高速缓冲存储器300中,一次只会指派一个群。在一些实施例中,群G_0至G_(k-1)是依顺序或是轮流而分别指派。例如,在第一时间周期P1是指派群G_0、在第二时间周期P2是指派群G_1、…、以及在第k个时间周期Pk是指派群G_(k-1)。在指派群G_(k-1)(例如最后群)之后,在第(k+1)个时间周期P(k+1)时指派群G_0、在第(k+2)个时间周期P(k+2)时指派群G_1。以此类推。在一些实施例中,全部的群G_0到G_(k-1)会被轮流指派,使得所有实体位置将会被周期性地映射。
对所指派的群而言,集合是以第一集合顺序或是可调整的集合顺序进行排列。反之,在非指派的群中(即特定群之外的群),集合是以第二集合顺序或是固定的集合顺序进行排列,例如按序从set_0到set_(n-1)的常规顺序,而第二集合顺序是不同于第一集合顺序。因此,在所指派的群中,集合地址映射配置是可以改变的,即所指派的群的集合顺序是可以设定的。
在图3中,假设在高速缓冲存储器300中指派了群G_1,则群G_1为所指派的群,而群G_0以及G_2至G_(k-1)为非指派的群。在非指派的群中,集合是以按序从set_0到set_(n-1)的常规顺序进行排列。在所指派的群G_1中,集合是以从set_3到set_2的顺序进行排列,例如set_3、set_4、set_5、…、set_(n-1)、set_0、set_1、set_2的顺序。具体而言,所指派的群G_1的集合地址为可映射。
图4是显示根据本发明一些实施例所述的高速缓冲存储器(例如图1的高速缓冲存储器120)的映射方法。
在操作S410,高速缓冲存储器的多个集合(或是行)被划分成多个群。在一些实施例中,群具有相同数量的集合。在一些实施例中,群具有不同数量的集合。
在操作S420,一次只指派多个群中的一特定群,以便调整特定群(即所指派的群)的集合的配置。再者,特定群之外的任一群为非指派群。
通过对特定群的集合地址进行映射,可改变特定群内集合的配置。此外,只有特定群被映射,因为只需要刷新(flush)所指派的群的内容,而非所有的群,因此可减少对性能的影响。在一些实施例中,高速缓冲存储器的全部群会轮流被指派。值得注意的是,群的指派是根据实际应用所决定。
在一些实施例中,一次可指派多个群,以调整所指派的群的集合的配置。
在操作S430,当存取高速缓冲存储器时,判断存取地址ADDR是否对应于在操作S420中所指派的特定群。
假如判断出存取地址ADDR没有对应于特定群,即存取地址ADDR是对应于非指派群,则对存取地址ADDR而言,集合地址ADDR_set将不会被映射,接着可根据集合地址ADDR_set来存取高速缓冲存储器(操作S440)。如先前所描述,在每一非指派群中,集合是依照第二集合顺序或是固定的集合顺序而排列。因此,在非指派群中,集合的配置是相同的。
反之,假如判断出存取地址ADDR是对应于特定群,则对存取地址ADDR而言,集合地址ADDR_set将会被映射以得到映射地址ADDR_map,接着可根据映射地址ADDR_map来存取高速缓冲存储器(操作S450)。如先前所描述,在所指派的群中,集合是依照第一集合顺序或是可调整的集合顺序而排列。因此,在所指派的群中的集合配置是不同于在非指派群中的集合配置。
图5是显示根据本发明一些实施例所述的高速缓冲存储器的地址译码器500。在高速缓冲存储器中,全部的集合会被划分成多个群。在此实施例中,每一群包括16个集合。相似地,每一群包括从row_0至row_15的16个连续行。值得注意的是,每一群的集合数量仅作为示范例,并非用以限定本发明。如先前所描述,高速缓冲存储器一次只有一特定群会被指派,而特定群中集合的配置是不同于特定群之外的群(即非指派群)中集合的配置。
地址译码器500包括控制器510、NAND阵列520、计数器530、加法器540以及多工器(MUX)550。当处理器(例如图1的处理器110)提供存取地址ADDR对高速缓冲存储器(例如图1的高速缓冲存储器120)进行存取时,控制器510会根据存取地址ADDR而得到对应于欲被存取的群的4位的集合地址ADDR_set[3:0]。值得注意的是,在高速缓冲存储器中欲被存取的群的集合地址ADDR_set的位数仅是示范例,并非用以限定本发明。
在一些实施例中,高速缓冲存储器的每一群内集合的数量是根据集合地址ADDR_set所决定。例如,集合地址ADDR_set[3:0]的位数是4,而每一群中集合的数量是等于16,即2的四次方(24=16)。
根据存取地址ADDR,控制器510还提供控制信号Sctrl1来指示存取地址ADDR是否对应于特定群(即所指派的群)。相应于控制信号Sctrl1,多工器550会选择性地提供集合地址ADDR_set[3:0]或是映射地址ADDR_map[3:0]作为实体地址ADDR_phy[3:0]。
在一些实施例中,当控制信号Sctrl1指示存取地址ADDR是对应于非指派群时,多工器550会提供集合地址ADDR_set[3:0]作为实体地址ADDR_phy[3:0],即不需要对集合地址ADDR_set[3:0]进行映射。因此,集合地址ADDR_set[3:0]会直接提供至NAND阵列520,而不需经过计数器530与加法器540。反之,当控制信号Sctrl1指示存取地址ADDR是对应于特定群时,多工器550会提供映射地址ADDR_map[3:0]作为实体地址ADDR_phy[3:0],即需要对集合地址ADDR_set[3:0]进行映射。
根据控制信号Scond,控制器510可提供控制信号Sctrl2至计数器530。在一些实施例中,控制信号Scond是由处理器所提供,以及控制信号Scond用于指示特定条件的存在。在一些实施例中,特定条件是表示达到特定时间周期(例如一天、一个月或是一季)或是特定程序被执行。在一些实施例中,控制器510可实施在处理器内。
在一些实施例中,计数器530可计数特定条件发生的次数,并根据所记数的次数而提供数值Int。在图5中,数值Int是1和15之间的整数。在一些实施例中,计数器530可相应于控制信号Scond而将数值Int加上一。再者,数值Int的初始值可根据控制信号Scond而决定。
在一些实施例中,计数器530可以是格雷计数器(Gray counter)、数字产生器或是二进位计数器。
加法器540可将数值Int与集合地址ADDR_set[3:0]进行相加,以提供映射地址ADDR_map[3:0]。于是,集合地址ADDR_set[3:0]会映射为映射地址ADDR_map[3:0]。NAND阵列520为解码器,能对实体地址ADDR_phy[3:0]进行解码以得到16位的行线信号row[15:0]。
行线信号row[15:0]的每一位能控制欲被存取的群的所对应的行线。当行线信号row[15:0]的一位被使能时,则对应于行线信号中已使能位的行(row)可以被存取。例如,行线信号row[0]是用来控制所存取的群中的行row_0、行线信号row[1]是用来控制所存取的群中的行row_1、…、以及行线信号row[15]是用来控制所存取的群中的行row_15。值得注意的是,在高速缓冲存储器的所有群中行(row)的配置是相同的,例如按顺序从row_0到row_15。
在此实施例中,NAND阵列520包括16个NAND逻辑门525_0至525_15。每一NAND逻辑门具有四个输入,用以分别接收实体地址ADDR_phy[3:0]的位,而每一NAND逻辑门具有一输出,用以提供行线信号row[15:0]的个别位。值得注意的是,NAND阵列520的NAND逻辑门525_0至525_15仅作为示范例来说明NAND阵列520的功能,而并非用以限定本发明。
在一些实施例中,可省略掉多工器550。当判断出存取地址ADDR是对应于非指派群时,控制器510会提供控制信号Sctrl2至计数器530,以便控制计数器530来提供具有零值的数值Int,即Int=0。由于数值Int为零,映射地址ADDR_map[3:0]会相同于集合地址ADDR_set[3:0],即ADDR_map=ADDR_set+0。在一些实施例中,当判断出存取地址ADDR是对应于所指派的群时,控制信号Scond更会通知计数器530特定条件已存在。因此,计数器530会计数特定条件发生的次数,以便提供具有对应于所发生的次数的整数的数值Int,如先前所描述。
在一些实施例中,高速缓冲存储器的每一群具有个别的地址译码器,例如地址译码器500。因此,对应于非指派群的每一地址译码器可提供集合地址ADDR_set来做为实体地址ADDR_phy,以便存取非指派群。再者,对应于所指派的群的地址译码器能映射集合地址ADDR_set,以提供实体地址ADDR_phy,以便存取所指派的群。
图6A是显示当对图5中非指派群进行存取时集合地址ADDR_set[3:0]与行线信号row[15:0]之间的关系示范表。在此实施例中,集合是以常规顺序排列。例如,集合set_0是安排在行row_0、集合set_1是安排在行row_1,以此类推。再者,集合地址ADDR_set[3:0]不会被映射,即ADDR_phy[3:0]=ADDR_set[3:0]。如先前所描述,在一些实施例中,通过使用至少一逻辑单元,例如多工器(例如图5之多工器550),可直接提供集合地址ADDR_set[3:0]来作为实体地址ADDR_phy[3:0]。在一些实施例中,通过将集合地址ADDR_set[3:0]加上零值“0”,则可得到实体地址ADDR_phy[3:0]。
图6B是显示当存取图5中特定群(所指派的群)时集合地址ADDR_set[3:0]与行线信号row[15:0]之间的关系示范表。在此实施例中,通过将数值Int与集合地址ADDR_set[3:0]相加,以得到映射地址ADDR_map[3:0](即ADDR_map[3:0]=ADDR_set[3:0]+Int),特定群的集合是以可调整的顺序排列。在4位地址的示范例中,数值Int可以是0与15(2的4次方减一)之间的整数。在图6B中,数值Int为整数“1”。再者,相应于图4的控制信号Sctrl2,可改变可调整的顺序。在此实施例中,假设数值Int为1,而集合set_0是安排在行row_1、集合set_1是安排在行row_2、…、以及集合set_15是安排在行row_0。
图7是显示根据本发明一些实施例所述的高速缓冲存储器的地址译码器700。在高速缓冲存储器中,全部的集合会划分成多个群。在此实施例中,每一群包括16个集合。相似地,每一群包括从row_0至row_15的16个连续行(row)。值得注意的是,每一群中集合的数量仅作为示范例,并非用以限定本发明。如先前所描述,高速缓冲存储器一次只有一特定群会被指派,而特定群中集合的配置是不同于特定群之外的群(即非指派群)中集合的配置。
地址译码器700包括控制器710、NAND阵列720、移位暂存器(shiftregister)730以及多个XOR逻辑门740_0至740_3。为了简化说明,将省略描述多工器(即图5的多工器550)。
当处理器(例如图1的处理器110)提供存取地址ADDR对高速缓冲存储器(例如图1的高速缓冲存储器120)进行存取时,控制器710会根据存取地址ADDR而得到欲被存取的群的4位的集合地址ADDR_set[3:0]。值得注意的是,在高速缓冲存储器中欲被存取的群的集合地址ADDR_set的位数仅是示范例,并非用以限定本发明。
在一些实施例中,高速缓冲存储器的每一群内集合的数量是根据集合地址ADDR_set所决定。例如,集合地址ADDR_set[3:0]的位数是4,而每一群中集合的数量是等于16,即2的四次方(24=16)。
根据存取地址ADDR,控制器710还提供控制信号Sctrl3来指示存取地址ADDR是否对应于特定群(即所指派的群)。在一些实施例中,控制信号Scond是由处理器所提供,以及控制信号Scond用于指示特定条件的存在。在一些实施例中,特定条件是表示达到特定时间周期(例如一天、一个月或是一季)或是特定程序被执行。在一些实施例中,控制器710可实施在处理器内。
假如控制信号Sctrl3指示存取地址ADDR是对应于特定群(即所指派的群),则移位暂存器730会提供移位值SR[3:0]至XOR逻辑门740_0至740_3。每一XOR逻辑门740_0至740_3具有第一输入用以接收集合地址ADDR_set[3:0]的个别位,以及第二输入用以接收移位值SR[3:0]的个别位。
在此实施例中,移位值SR[3:0]仅会有一位是在高逻辑电平,而移位值SR[3:0]的剩余位会在低逻辑电平,即移位暂存器730会将一位“1”进行移位。具体而言,集合地址ADDR_set[3:0]一次只会有一个位被反相。因此,XOR逻辑门740_0至740_3会根据移位值SR[3:0]来映射集合地址ADDR_set,以得到映射地址ADDR_map。
根据控制信号Scond,控制器710还提供控制信号Sctrl3至移位暂存器730。在一些实施例中,控制信号Scond是由处理器所提供,而控制信号Scond用于指示特定条件的存在。在一些实施例中,特定条件是表示达到特定时间周期(例如一天、一个月或是一季)或是特定程序被执行。
假如控制信号Sctrl3指示存取地址ADDR是对应于非指派群,则移位值SR[3:0]会被重置,而零值“0”会提供至置XOR逻辑门740_0至740_3,即SR[3:0]=0。因此,XOR逻辑门740_0至740_3不会对集合地址ADDR_set进行映射,即映射地址ADDR_map是相同于集合地址ADDR_set。
行线信号row[15:0]的每一位能控制欲被存取的群的所对应的行(row)。当行线信号row[15:0]的一位被使能时,则对应于行线信号中已使能位的行(row)可以被存取。例如,行线信号row[0]是用来控制所存取的群中的行row_0、行线信号row[1]是用来控制所存取的群中的行row_1、…、以及行线信号row[15]是用来控制所存取的群中的行row_15。值得注意的是,在高速缓冲存储器的所有群中行(row)的配置是相同的,例如按顺序从row_0到row_15。
在此实施例中,NAND阵列720包括16个NAND逻辑门725_0至725_15。每一NAND逻辑门具有四个输入,用以分别分别接收映射地址ADDR_map[3:0]的位,而每一NAND逻辑门具有一输出,用以提供行线信号row[15:0]的个别位。值得注意的是,NAND阵列720的NAND逻辑门725_0至725_15仅作为示范例来说明NAND阵列720的功能,而并非用以限定本发明。
在一些实施例中,高速缓冲存储器的每一群具有个别的地址译码器,例如地址译码器700。因此,对应于非指派群的每一地址译码器可提供集合地址ADDR_set来做为实体地址ADDR_phy,以便存取非指派群。再者,对应于所指派的群的地址译码器能映射集合地址ADDR_set,而提供实体地址ADDR_phy,以便存取所指派的群。
值得注意的是,有许多不同的方式可映射集合地址ADDR_set。此外,可对用于实现完整地址映射以及解码器逻辑以映射和解码的最佳化电路进行组合和减少。
图8A是显示当对图7中所指派的群进行存取且移位值SR[3:0]为“0001”时集合地址ADDR_set[3:0]与行线信号row[15:0]之间的关系示范表。在此实施例中,集合set_0是安排在行row_1,而集合set_1是安排在行row_0。再者,集合set_2是安排在行row_3,而集合set_3是安排在行row_2,以此类推。
图8B是显示当对图7中所指派的群进行存取且移位值SR[3:0]为“0010”时集合地址ADDR_set[3:0]与行线信号row[15:0]之间的关系示范表。在此实施例中,集合set_0是安排在行row_2,而集合set_1是安排在行row_3。再者,集合set_2是安排在行row_0,而集合set_3是安排在行row_1,以此类推。
图8C是显示当对图7中所指派的群进行存取且移位值SR[3:0]为“0100”时集合地址ADDR_set[3:0]与行线信号row[15:0]之间的关系示范表。在此实施例中,集合set_0是安排在行row_4,而集合set_1是安排在行row_5。再者,集合set_2是安排在行row_6,而集合set_3是安排在行row_7,以此类推。
图8D是显示当对图7中所指派的群进行存取且移位值SR[3:0]为“1000”时集合地址ADDR_set[3:0]与行线信号row[15:0]之间的关系示范表。在此实施例中,集合set_0是安排在行row_8,而集合set_1是安排在行row_9。再者,集合set_2是安排在行row_10,而集合set_3是安排在行row_11,以此类推。
根据本发明实施例,可动态地改变高速缓冲存储器的集合地址的映射。高速缓冲存储器会划分成多个群,而每一群包括多个集合。多个群中每次只有一个群会被指派。在所指派的群中,集合地址映射功能是可改变的。因此,所指派群的集合的集合顺序是不同于非指派群的集合顺序。在这些群中会轮流一次指派一个群。根据本发明的实施例,动态地映射高速缓冲存储器的集合地址可分散集合的子群的存取量,以避免“热集合”的发生,而热集合会降低存储单元的使用期限。再者,根据本发明的实施例,群的动态映射可实施在集成电路中的不同类型的存储器,例如静态随机存取存储器(Static Random Access Memory,SRAM)、磁阻式随机存取存储器(Magnetoresistive Random Access Memory,MRAM)等。
在一些实施例中,提供了一种集成电路。上述集成电路包括一高速缓冲存储器与一地址译码器。上述高速缓冲存储器划分成多个群。上述地址译码器根据一存取地址而提供一实体地址。当上述存取地址是对应于上述高速缓冲存储器的上述多群的一特定群时,上述地址译码器改变上述存取地址,以提供上述实体地址,以及当上述存取地址是对应于上述高速缓冲存储器中上述特定群之外的上述群的一者时,上述地址译码器指派上述存取地址为上述实体地址。
在一些实施例中,上述高速缓冲存储器为一集合相关高速缓冲存储器,而每一上述群包括多个集合。
在一些实施例中,上述高速缓冲存储器的上述特定群的上述集合是以一第一集合顺序所安排,而除了上述特定群之外的每一上述群的上述集合是以不同于上述第一集合顺序的一第二集合顺序所安排。
在一些实施例中,上述高速缓冲存储器包括安排在一阵列的多存储单元,以及每一上述群包括安排在上述阵列中N个连序行的上述存储单元,其中上述群的每一行具有个自的实体地址。
在一些实施例中,上述地址译码器对上述实体地址进行解码,以提供具有多个位的一行线信号至对应于上述存取地址的上述群,其中上述群的每一行是由上述行线信号的个别位所控制。
在一些实施例中,上述地址译码器包括一数字产生器以及一加法器。上述数字产生器产生一整数,其中上述整数小于N。当上述存取地址对应于上述高速缓冲存储器的上述特定群时,上述加法器将上述整数以及上述存取地址进行相加,以提供上述实体地址。
在一些实施例中,当一特定条件存在时,上述数字产生器会调整上述整数的数值。
在一些实施例中,上述地址译码器包括多个XOR逻辑门以及一移位暂存器。每一上述XOR逻辑门具有一第一输入用以接收上述存取地址的个别位、一第二输入以及一输出用以提供上述实体地址的特别位。上述移位暂存器提供一高逻辑信号至上述XOR逻辑门的一者的上述第二输入,以及提供多个低逻辑信号至剩余的上述XOR逻辑门的上述第二输入。
在一些实施例中,当一特定条件存在时,上述移位暂存器提供上述高逻辑信号至上述XOR逻辑门的另一者的上述第二输入,以及提供上述低逻辑信号至剩余的上述XOR逻辑门的上述第二输入。
在一些实施例中,提供一种集成电路。上述集成电路包括一高速缓冲存储器、一处理器与一地址译码器。上述高速缓冲存储器划分成多个群。上述处理器提供一控制信号,而依一特定顺序来指派上述群的一者。上述地址译码器接收一存取地址,并根据上述控制信号而选择性地上述存取地址或是一映射地址至上述高速缓冲存储器。当上述存取地址是对应于上述高速缓冲存储器的已指派的上述群时,上述地址译码器提供上述映射地址至上述高速缓冲存储器中已指派的上述群。当上述存取地址是对应于上述高速缓冲存储器中非指派的上述群时,上述地址译码器提供上述存取地址至上述高速缓冲存储器中非指派的上述群。非指派的上述群是上述高速缓冲存储器中除了已指派的上述群之外的上述群的一者。
在一些实施例中,上述高速缓冲存储器为一集合相关高速缓冲存储器,而每一上述群包括多个集合。
在一些实施例中,上述高速缓冲存储器的已指派的上述群的上述集合是以一第一集合顺序所安排,而非指派的每一上述群的上述集合是以不同于上述第一集合顺序的一第二集合顺序所安排。
在一些实施例中,上述高速缓冲存储器包括安排在一阵列的多个存储单元,以及每一上述群包括安排在上述阵列中N个连序行的上述存储单元,其中非指派的上述群的每一行具有个自的实体地址,而已指派的上述群的每一行具有个自的映射地址。
在一些实施例中,上述地址译码器包括一数字产生器以及一加法器。上述数字产生器根据来自上述处理器的上述控制信号而产生一整数,其中上述整数小于N。当上述存取地址对应于上述高速缓冲存储器的已指派的上述群时,上述加法器将上述整数以及上述存取地址进行相加,以提供上述实体地址。
在一些实施例中,当一特定条件存在时,上述数字产生器会调整上述整数的数值。
在一些实施例中,上述地址译码器包括多个XOR逻辑门以及一移位暂存器。每一上述XOR逻辑门具有一第一输入用以接收上述存取地址的个别位、一第二输入以及一输出用以提供上述映射地址的特别位。上述移位暂存器提供一高逻辑信号至上述XOR逻辑门的一者的上述第二输入,以及提供多个低逻辑信号至剩余的上述XOR逻辑门的上述第二输入。上述XOR逻辑门的该者是根据上述控制信号所决定。
在一些实施例中,当一特定条件存在时,上述移位暂存器提供上述高逻辑信号至上述XOR逻辑门的另一者的上述第二输入,以及提供上述低逻辑信号至剩余的上述XOR逻辑门的上述第二输入。
在一些实施例中,提供一种高速缓冲存储器的地址映射方法。地址映射方法包括:将一高速缓冲存储器划分成多个群。轮流地指派上述群的一者。当上述存取地址是对应于上述高速缓冲存储器的已指派的上述群时,根据一存取地址而提供上述映射地址至上述高速缓冲存储器中已指派的上述群。当上述存取地址是对应于上述高速缓冲存储器中非指派的上述群时,提供上述存取地址至上述高速缓冲存储器中非指派的上述群。非指派的上述群是上述高速缓冲存储器中除了已指派的上述群之外的上述群的一者。
在一些实施例中,上述高速缓冲存储器为一集合相关高速缓冲存储器,而每一上述群包括多个集合。
在一些实施例中,依照一第一集合顺序,安排上述高速缓冲存储器的已指派的上述群的上述集合。依照不同于上述第一集合顺序的一第二集合顺序,安排上述高速缓冲存储器的非指派的上述群的上述集合。
虽然本公开已以优选实施例公开如上,然其并非用以限定本公开,任何所属技术领域中包括通常知识者,在不脱离本公开的构思和范围内,当可作些许的变动与润饰,因此本公开的保护范围当视权利要求所界定者为准。
Claims (1)
1.一种集成电路,包括:
一高速缓冲存储器,划分成多群;以及
一地址译码器,根据一存取地址而提供一实体地址,
其中当上述存取地址是对应于上述高速缓冲存储器的上述多群的一特定群时,上述地址译码器改变上述存取地址,以提供上述实体地址,以及当上述存取地址是对应于上述高速缓冲存储器中上述特定群之外的上述群的一者时,上述地址译码器指派上述存取地址为上述实体地址。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662427069P | 2016-11-28 | 2016-11-28 | |
US62/427,069 | 2016-11-28 | ||
US15/370,113 US10503649B2 (en) | 2016-11-28 | 2016-12-06 | Integrated circuit and address mapping method for cache memory |
US15/370,113 | 2016-12-06 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108121671A true CN108121671A (zh) | 2018-06-05 |
Family
ID=62190821
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710212204.5A Pending CN108121671A (zh) | 2016-11-28 | 2017-04-01 | 集成电路 |
Country Status (3)
Country | Link |
---|---|
US (3) | US10503649B2 (zh) |
CN (1) | CN108121671A (zh) |
TW (1) | TW201824270A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113196247A (zh) * | 2018-12-21 | 2021-07-30 | 美光科技公司 | 存储器装置中的信号开发高速缓冲存储 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10503649B2 (en) * | 2016-11-28 | 2019-12-10 | Taiwan Semiconductor Manufacturing Co., Ltd. | Integrated circuit and address mapping method for cache memory |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7376807B2 (en) * | 2006-02-23 | 2008-05-20 | Freescale Semiconductor, Inc. | Data processing system having address translation bypass and method therefor |
JP2009104687A (ja) * | 2007-10-22 | 2009-05-14 | Fujitsu Ltd | 記憶装置及び制御回路 |
US9396135B2 (en) * | 2011-05-18 | 2016-07-19 | University Of North Texas | Method and apparatus for improving computer cache performance and for protecting memory systems against some side channel attacks |
US9348743B2 (en) * | 2013-02-21 | 2016-05-24 | Qualcomm Incorporated | Inter-set wear-leveling for caches with limited write endurance |
US9529673B2 (en) | 2013-07-30 | 2016-12-27 | Taiwan Semiconductor Manufacturing Company, Ltd. | Memory device having adjustable refresh period and method of operating the same |
WO2015086846A2 (fr) * | 2013-12-12 | 2015-06-18 | Commissariat A L'energie Atomique Et Aux Energies Alternatives | Systeme de gestion de l'usure d'une memoire electronique |
US10248571B2 (en) * | 2016-08-11 | 2019-04-02 | Hewlett Packard Enterprise Development Lp | Saving position of a wear level rotation |
US10503649B2 (en) * | 2016-11-28 | 2019-12-10 | Taiwan Semiconductor Manufacturing Co., Ltd. | Integrated circuit and address mapping method for cache memory |
-
2016
- 2016-12-06 US US15/370,113 patent/US10503649B2/en active Active
-
2017
- 2017-04-01 CN CN201710212204.5A patent/CN108121671A/zh active Pending
- 2017-04-06 TW TW106111519A patent/TW201824270A/zh unknown
-
2019
- 2019-10-29 US US16/667,054 patent/US10977178B2/en active Active
-
2021
- 2021-04-09 US US17/227,063 patent/US11567875B2/en active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113196247A (zh) * | 2018-12-21 | 2021-07-30 | 美光科技公司 | 存储器装置中的信号开发高速缓冲存储 |
US11934703B2 (en) | 2018-12-21 | 2024-03-19 | Micron Technology, Inc. | Read broadcast operations associated with a memory device |
CN113196247B (zh) * | 2018-12-21 | 2024-04-23 | 美光科技公司 | 存储器装置中的信号开发高速缓冲存储 |
US11989450B2 (en) | 2018-12-21 | 2024-05-21 | Micron Technology, Inc. | Signal development caching in a memory device |
Also Published As
Publication number | Publication date |
---|---|
US20180150398A1 (en) | 2018-05-31 |
TW201824270A (zh) | 2018-07-01 |
US10503649B2 (en) | 2019-12-10 |
US20210224193A1 (en) | 2021-07-22 |
US10977178B2 (en) | 2021-04-13 |
US11567875B2 (en) | 2023-01-31 |
US20200065248A1 (en) | 2020-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11507516B2 (en) | Adaptive cache partitioning | |
US8103894B2 (en) | Power conservation in vertically-striped NUCA caches | |
US7774578B2 (en) | Apparatus and method of prefetching data in response to a cache miss | |
US7516275B2 (en) | Pseudo-LRU virtual counter for a locking cache | |
CN1307561C (zh) | 不同高速缓存级上具有关联集重叠同余组的多级高速缓存 | |
CN103218208B (zh) | 用于实施成形的存储器访问操作的系统和方法 | |
US8171220B2 (en) | Cache architecture with distributed state bits | |
CN101918925B (zh) | 用于处理器的高关联性高速缓存的第二次机会取代机制 | |
US9317448B2 (en) | Methods and apparatus related to data processors and caches incorporated in data processors | |
CN110018971A (zh) | 缓存替换技术 | |
Mittal et al. | EqualWrites: Reducing intra-set write variations for enhancing lifetime of non-volatile caches | |
US11567875B2 (en) | Integrated circuit and address mapping method for cache memory | |
US20060143400A1 (en) | Replacement in non-uniform access cache structure | |
US9348766B2 (en) | Balanced P-LRU tree for a “multiple of 3” number of ways cache | |
Mittal | Using cache-coloring to mitigate inter-set write variation in non-volatile caches | |
JPWO2006038258A1 (ja) | データプロセッサ | |
Zhang et al. | Design and optimization of large size and low overhead off-chip caches | |
Hameed et al. | A novel hybrid DRAM/STT-RAM last-level-cache architecture for performance, energy, and endurance enhancement | |
Peir et al. | Functional implementation techniques for CPU cache memories | |
Cha et al. | Morphable DRAM cache design for hybrid memory systems | |
US8756362B1 (en) | Methods and systems for determining a cache address | |
Peir et al. | Implementation issues in modern cache memory | |
Lee et al. | Dirty-block tracking in a direct-mapped DRAM cache with self-balancing dispatch | |
US20240070073A1 (en) | Page cache and prefetch engine for external memory | |
Chongala et al. | Optimization of Intercache Traffic Entanglement in Tagless Caches With Tiling Opportunities |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180605 |
|
WD01 | Invention patent application deemed withdrawn after publication |