CN105630703A - 利用可编程哈希地址的控制缓存访问的方法及相关缓存控制器 - Google Patents
利用可编程哈希地址的控制缓存访问的方法及相关缓存控制器 Download PDFInfo
- Publication number
- CN105630703A CN105630703A CN201510808903.7A CN201510808903A CN105630703A CN 105630703 A CN105630703 A CN 105630703A CN 201510808903 A CN201510808903 A CN 201510808903A CN 105630703 A CN105630703 A CN 105630703A
- Authority
- CN
- China
- Prior art keywords
- address
- hash
- buffer memory
- image
- cache
- 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/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
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/082—Associative directories
-
- 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/1009—Address translation using page tables, e.g. page table structures
- G06F12/1018—Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
-
- 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
- G06F2212/1021—Hit rate 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/60—Details of cache memory
- G06F2212/6032—Way prediction in set-associative cache
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
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
技术领域
本发明所公开的实施例涉及访问缓冲数据(例如缓存数据),尤其涉及利用可编程哈希地址(hashingaddress)的控制缓存访问的方法及相关缓存控制器。
背景技术
在现今的***中,当与处理数据的时间相比时,将数据带入处理器的时间显得非常的长。因此,在处理器输入处形成了瓶颈。缓存通过向处理器来回移动信息从而帮助减少了时间。当缓存包含需求信息时,该事务被称为缓存命中。当缓存不包含所需信息时,该事务被称为缓存缺失。通常,命中率为缓存的关键性能指标。如何提高命中率成为本领域的问题。
通常,缓存可以是完全关联缓存,直接映射缓存,或组关联缓存。所述组关联缓存是介于完全关联缓存和直接映射缓存之间的混合式,并可以被认为是介于完全关联缓存和直接映射缓存的硬件复杂性/延时之间的合理折衷。无论采用哪种缓存设计,都需要提高命中率。例如,当缓存大小为4KB(千字节)时,所述缓存用于由32bpp(位/像素)的一个1024×768图像中预装载一个32×32图像。在线性地址表面(图像)中,由当前扫描线中的像素(X,Y)到下一扫描线中的像素(X,Y+1)的地址偏移等于图像中的图像间距的字节数。由于所述1024×768图像的图像间距为1024,则图像间距的字节数为4KB。考虑所述1024×768图像被分为多个箱(bin)且以逐箱(bin-by-bin)方式进行处理的情况,所述每个箱为一个32×32图像。图像间距的字节数等于缓存大小,即,扫描线的间距为4KB,其正好为缓存容量的大小4KB。如果我们不将图像的地址映射转变为缓存的阵列(bank)和组(set),则所有32个扫描线将命中相同的阵列和相同的组。对于直接映射方案,32×32图像仅有一个扫描线可以被读入缓存。所述32×32图像的下一扫描线将映射到相同的缓存线并取代缓存中当前存在的扫描线。对于4路(4-way)联合方案,32×32图像仅有4条扫描线可以保持在缓存中。所述32×32图像的其他28条扫描线将映射并试图取代缓存中当前的4条扫描线,所述当前的4条扫描线包含图像的前4条扫描线数据。结果,缺失率将变高,这归因于32×32图像仅有少量扫描线可以被保持在缓存中。此外,因为不能将32×32图像的全部扫描线同时保持在缓存中,32×32图像的数据预装载是无效的。
因此,需要一种创新的缓存寻址设计将箱(bin)的大部分或全部图像数据预装载到缓存之中,因此提高命中率并减少数据处理延时。
发明内容
根据本发明的典型的实施例,提出一种利用可编程哈希地址的控制缓存访问的方法及相关缓存控制器来解决以上问题。
根据本发明的第一方面,公开一种用于控制缓存访问的典型的方法。所述典型的方法包含:接收存储地址;利用哈希地址逻辑基于所述存储地址的至少一部分执行可编程哈希函数以生成哈希地址;并至少部分地基于所述哈希地址来确定缓存索引。
根据本发明的第二方面,公开一种用于控制缓存访问的典型的缓存控制器。所述典型的缓存控制器包含输入接口,哈希地址逻辑,以及控制电路。输入接口配置为接收存储地址。哈希地址逻辑配置为基于所述存储地址的至少一部分执行可编程哈希函数以生成哈希地址。所述控制电路配置为至少部分地基于所述哈希地址来确定缓存索引。
在阅读随后所详细描述的以不同附图形式展示的优选实施例后,对于本领域普通技术人员而言,本发明的这些和其他目的将变得显而易见。
附图说明
图1是根据本发明实施例的数据处理***的框图。
图2是根据本发明实施例的哈希地址位的位移操作图示,所述哈希地址位包括阵列信息。
图3是根据本发明实施例的哈希地址位的另一位移操作图示,所述哈希地址位包括阵列信息。
图4是根据本发明实施例的哈希地址位的位移操作图示,所述哈希地址位不包括阵列信息。
图5是根据本发明实施例的哈希地址位的另一位移操作图示,所述哈希地址位不包括阵列信息。
具体实施方式
涉及特定组件的特定术语将始终在说明书和随后的权利要求中使用。本领域技术人员将认识到,制造商可以用不同名称来指代组件。本文件无意于区分那些名称上不同但功能相同的组件。在随后的说明书和权利要求中,术语“包含”和“包括”用于开放式类型,因此其应当被解释为“包含,但不限于…”。同样,术语“耦合”规定为意味着间接或直接电气连接中的任一。因此,如果一个设备与另一个设备耦合,其连接可以为直接电气连接或通过其他设备和连接的间接电气连接。
图1是根据本发明实施例的数据处理***的框图。数据处理***100可以是电子设备的一部分。例如,数据处理***100可以是图形处理***。在此实施例中,数据处理***100包含一个或多个处理器(例如,中央处理器或图形处理单元)102_1-102_N,缓存104,缓存控制器106,以及数据存储设备(例如,主存储器或下一级缓存)108。处理器102_1-102_N是缓存104的请求者(requestagent)。应当注意到,处理器102_1-102_N的数据可以调整,其取决于实际应用需求。
缓存104是小尺寸存储设备(例如,具备较快数据访问速度的静态随机存取存储器(SRAM)设备),并可以被应用于图形处理***或者位于处理器和大尺寸存储设备(例如,具备较慢数据访问速度的动态随机存取存储器(DRAM)设备)之间且需要较快信息交易的任何应用之中。如图1所示,缓存104包含数据存储器112和标签存储器(tagmemory)114。所述数据存储器112可以具有多个阵列(bank)116,每个阵列116包含多个缓存行(cacheline)118。例如,所述数据存储器112可以通过使用SRAM而应用于存储缓存数据,每个缓存行118可以配置为具有指定的缓存行大小(例如1K比特)。所述标签存储器114可以是其中存储了多个标签项120的标签RAM。类似地,所述标签存储器114可以具有多个阵列121,每个阵列121包含多个标签项120。由于不同阵列中的标签项可以被同时读取,因此所述缓存控制器106可以在一个周期内获取多个标签项。
在一个典型的设计中,数据存储器112和标签存储器114可以被分配到相同存储设备的不同存储空间中。在另一典型的设计中,数据存储器112和标签存储器114可以被分配到不同的存储设备中。
在此实施例中,每个标签项120与分配到数据存储器112中的一个缓存行118相关联,且具有多个状态位(例如,有效位(validbit)"V"122,页面重写标志位(dirtybit)"D"124,以及一个或多个哈希使能位(hashenablebit)"H1"-"HN"126)和标志域(tagfield)128。所述标签项120由缓存控制器106进行设置。所述有效位122记录与此标签项相关联的缓存行118是否包含有效数据。每个标签项的所述有效位122被初始化设置为表示无效状态(即V=0)。当取自数据存储设备108的数据存储到缓存行118中,与此缓存行118相关联的相应标签项的有效位122被设置为表示有效状态(即V=1)。所述页面重写标志位124记录与此标签项相关联的缓存数据是否应当被回写到主存储器。应当注意到,所述页面重写标志位124仅由回写缓存使用。当缓存104为透写(write-trough)缓存时,可以省略每个标签项中的页面重写标志位124。所述哈希使能位126设置为向不同的请求者(比如处理器102_1-102_N)分配不同的进程地址空间标识符(PASID)或者处理器ID。由于缓存104由不同的请求者共享,每个哈希使能位126设置为表示是否有一个由本发明提出的可编程哈希函数已经为相应的请求者所产生的存储地址而启用。例如,当包含在由处理器102_1产生的写请求中的存储地址被指定的可编程哈希函数所处理以建立指向特定标签项120的缓存索引时,特定标签项120的哈希使能位H1设置为表示使能状态(即H1=1);当包括含在由处理器102_1产生的写请求中的存储地址以典型方式处理来建立指向特定标签项120的缓存索引时,哈希使能位H1设置为表示禁用状态(即H1=0)。对于标志域128,其包含由原始存储地址的一部分产生的标签地址,所述标签地址相当于存储在与此标签项相关联的缓存行118中的数据。
所述缓存控制器106耦合于数据存储器112和标签存储器114之间,且其设置为控制缓存104的访问。例如,缓存控制器106可以监听处理器102_1-102_N的总线活动,并确定请求数据的存储地址是否导致缓存命中或缓存缺失。当缓存控制器106鉴别到缓存命中时,缓存控制器106由一个缓存行118中取出请求数据并将所述请求数据回送至发出请求的处理器102_1-102_N之一。当缓存控制器106鉴别到缓存缺失时,缓存控制器106根据替代规则来更新一个缓存行118并关联标签项,以及将由数据存储设备108中取出的请求数据回送至发出请求的处理器102_1-102_N之一。
当缓存缺失发生时,所述请求数据不得不由数据存储设备108中重新取回,因此增加了数据访问延时。如上所述,当图像(例如,32bpp的1024×768图像)间距的字节数等于缓存大小(例如4KB)时,部分图像(例如,32bpp的32×32图像)的少量扫描线可以保持在缓存中,因此导致高缓存缺失率。为了增加缓存命中率,本申请提出根据图像的图像间距来调整由请求者(例如处理器)产生的原始存储地址的一部分,所述图像的至少一部分图像被装载到缓存中。以此方式,对部分图像的扫描线生成的缓存索引(例如组地址)可以彼此不同。即,归因于所提出的可编程哈希函数,部分图像的全部扫描线可以不命中相同的阵列和相同的组。此外,由于哈希函数是可编程的,所提出的缓存地址方案可以满足不同需求(例如不同的图像大小)。所提出的缓存地址方案的细节将在下文描述。
在此实施例中,所述缓存控制器106包含多个电路块,例如输入接口132,哈希地址逻辑134,以及控制电路136。所述输入接口132配置为接收包含在由处理器102_1-102_N产生的读/写请求中的存储地址ADDR_1-ADDR_N。例如,输入接口132可以具有仲裁/调度能力,并一次输出一个接收到的存储地址ADDR至哈希地址逻辑134以用于进一步的处理。所述哈希地址逻辑134配置为基于存储地址ADDR的至少一部分执行可编程哈希函数以生成哈希地址ADDR_H。所述控制电路136配置为根据由存储地址产生的标签和由哈希地址ADDR_H产生的索引Index'来控制缓存104的访问。例如,所述控制电路136参考索引Index'来寻找标签存储器14中的标签项120,并根据由存储地址产生的标签和利用索引Index'找到的在标签项120中记载的标签来执行标签比较。此外,控制电路136进一步基于数据存储器112和标签存储器114执行数据管理。例如,控制电路136为不同的PASID或处理器ID设置每个标签项的哈希使能位126。此外,当缓存缺失发生时,控制电路136将更新一个缓存行和一个相关标签项。
如上所述,哈希地址逻辑134负责生成用于确定缓存索引(例如组地址)的哈希地址ADDR_H。在此实施例中,哈希地址逻辑134所采用的可编程哈希函数可以具有针对不同图像大小(例如不同图像间距)的不同哈希函数设置(例如不同的比特位置移位/旋转数目)。例如,当至少一部分图像(例如32×32图像)被装载到缓存104中的图像具有第一图像大小(例如1024×768)时,哈希地址逻辑134可以采用配置为第一哈希函数设置的可编程哈希函数;当至少一部分图像(例如32×32图像)被装载到缓存104中的图像具有不同于第一图像大小的第二图像大小(例如1920×1080)时,哈希地址逻辑134可以采用配置为不同于第一哈希函数设置的第二哈希函数设置的可编程哈希函数。以此方式,所述可编程哈希函数可以基于图像大小而适应性设置,由此防止图像中部分图像的多个扫描线命中缓存器104的相同阵列和相同组。
在典型的设计中,可编程哈希函数为例如逻辑位移操作或循环位移操作(或称为位元旋转)的位移操作,依据位移操作的比特位置移位/旋转数目可以由哈希地址逻辑134基于至少一部分图像被装载到缓存器104中的图像的图像大小适应性地设置,和/或依据位移操作实际上移位/旋转的地址位数目由哈希逻辑134至少部分地基于缓存104的缓存大小(即,缓存104的数据存储器112中所有缓存行118的数据量)适应性地设置。为了更好地理解哈希逻辑地址的技术特征,下文给出几个位移操作的实例。
图2是根据本发明实施例的哈希地址位的位移操作图示,所述哈希地址位包括阵列信息。在此实施例中,缓存104的数据存储器112可以具有4个阵列116,每个阵列116可以具有8个缓存行118,每个缓存行118可以为1K比特(即128字节)。因此,缓存104的缓存大小等于4K字节(即,8K比特×4)。对于32bpp线性地址表面(图像),有一个1024×768图像,且所述1024×768图像的每个箱为一个32×32图像。图像间距的字节数为4K字节(即1024×4字节),其等于缓存104的缓存大小。此外,缓存104可以采用直接映射方案,且处理器102_1-102_N中的每个可以为32位处理器。
由于缓存行大小为128字节(即27字节),包含在由处理器102_1-102_N之一发出的原始请求中的32位存储地址ADDR的7个地址位[6:0]被用作偏移。由于缓存104中缓存行的数目为32(即25),包含在由处理器102_1-102_N之一发出的原始请求中的32位存储地址ADDR的5个地址位[11:7]用作索引(例如组地址),索引用于寻找标签存储器114中的标签项120,其中地址位[8:7]还可以充当阵列地址,所述阵列地址用于选择标签存储器114中的阵列121之一。剩余的32位存储地址ADDR(即地址位[31:12])充当用于标签比较以确定何处存在缓存命中或缓存缺失的标签。由于图像间距的字节数为4K字节,每个扫描线的寻址以4K字节分开。换句话说,由当前扫描线中的像素(X,Y)到下一扫描线中的像素(X,Y+1)的地址偏移等于4K字节(即212字节)。4K可以按照十六进制表示法表示为0x1000,或者按照二进制表示法表示为0001000000000000。因此,一个4K字节的地址偏移仅影响32位存储地址ADDR的地址位[12],而不影响索引(即地址位[11:7])。在典型缓存寻址设计中,32×32图像的多个扫描线具有相同的缓存索引,因此命中相同阵列和相同组。为了使得缓存索引针对每个4K字节地址偏移而改变,因此所提出的哈希地址逻辑136基于32位存储地址ADDR的至少一部分执行位移操作。例如,所提出的哈希地址逻辑136可以使得由32×32图像的所有扫描线的地址位[11:7]表示的地址看上去像是连续的。因此,32×32图像的所有扫描线可以被成功地预装载至缓存104中。
所述哈希地址逻辑134可以参考缓存104的缓存大小来适应性地设置可编程位移操作所要处理的地址位数目,所述地址位数目选自32位存储地址ADDR。在此实例中,缓存104的数据存储器112具有4个阵列116,每个阵列116具有8个缓存行118,每个缓存行118为1K比特(即128字节)。由于缓存104的缓存大小等于4K字节(即8K比特×4),则存在32个128比特的缓存行。选自32位存储地址ADDR并由可编程位移操作进行处理的地址位数目可以设置为不小于5的值(即Log232=5)。例如,当箱大小较大时,选自32位存储地址ADDR并由可编程位移操作进行处理的地址位数目可以设置为较大的值;当箱大小较小时,选自32位存储地址ADDR并由可编程位移操作进行处理的地址位数目可以设置为较小的值。应当注意到,当缓存控制器106用于控制具有不同缓存大小的另一缓存访问时,选自原始存储地址并由可编程位移操作进行处理的地址位数目可以相应地调整。
如上所述,地址位[6:0]被用作偏移,且一个4K字节的地址偏移(即0x1000)仅影响地址位[12],可编程位移操作可以将选定地址位[16:12]向右旋转(ror)5个(即12-7)比特位置,从而生成由旋转地址位组成的哈希地址ADDR_H。特别地,关于一个4K字节的地址偏移(即0x1000),最低比特位置上的非零地址位为地址位[12]。为了使得缓存索引针对每个4K字节的地址偏移而改变,地址位[12]需要被移位/旋转到地址位[7]所处的比特位置。如图2所示,原始存储地址ADDR中的地址位[16:12]因而分别被向右旋转到地址位[11:7]所处的比特位置。
所述控制电路136配置为至少部分地基于哈希地址ADDR_H来确定缓存104的索引Index'。在此实例中,控制电路136可以提取向右移位/旋转到地址位[11:7]的比特位置的地址位[16:12]作为索引Index'。换句话说,原始存储地址ADDR中的地址位[11:7]实际上并不用于充当缓存索引。反而,缓存控制器106使用源自哈希地址ADDR_H的索引Index'在标签存储器114中寻找标签项120。应当注意到,用于标签比较的标签地址仍然源自原始存储地址ADDR。即,控制电路136配置为将原始存储地址ADDR中的地址位[31:12]与利用索引Index'找到的存储在标签项120标志域中的标签地址进行比较。
32bpp的1024×768图像中每个扫描线的存储地址可以由基地址与偏移相加来表示。让我们忽略基地址而仅考虑偏移。下表中列出了为32bpp的1024×768图像的所有扫描线生成的缓存索引Index'。
表1
应当注意到,由可编程位移操作移位或旋转的比特位置数目是由哈希地址逻辑134基于图像的图像大小而适应性设置的,所述图像的至少一部分图像被装载到缓存104中。换句话说,当图像间距改变时,比特位置移位/旋转的数目将相应调整。
图3是根据本发明实施例的哈希地址位的另一位移操作图示,所述哈希地址位包括阵列信息。在此实施例中,缓存104的数据存储器112可以具有4个阵列116,每个阵列116可以具有8个缓存行118,每个缓存行118可以为1K比特(即128字节)。因此,缓存大小等于4K字节(即,8K比特×4)。对于32bpp线性地址表面(图像),其为800×600图像,且800×600图像的每个箱为32×32图像。图像间距的字节数为3.2K字节(即800×4字节),其不同于上文所述的1024×768图像的图像间距的字节数。此外,缓存104可以采用直接映射方案,且每个处理器102_1-102_N可以为32位处理器。
由于缓存行大小为128字节(即27字节),包含在由处理器102_1-102_N之一发出的原始请求中的32位存储地址ADDR的7个地址位[6:0]被用作偏移。由于缓存104中缓存行的数目为32(即25),包含在由处理器102_1-102_N之一发出的原始请求中的32位存储地址ADDR的5个地址位[11:7]用作索引(例如组地址),索引用于寻找标签存储器114中的标签项120,其中地址位[8:7]还可以充当阵列地址,所述阵列地址用于选择标签存储器114中的阵列121之一。剩余的32位存储地址ADDR(即地址位[31:12])充当用于标签比较以确定是否存在缓存命中或缓存缺失。
由于图像间距的字节数为3.2K字节,每个扫描线的寻址以3.2K字节分开。换句话说,由当前扫描线中的像素(X,Y)到下一扫描线中的像素(X,Y+1)的地址偏移等于3.2K字节。3.2K可以按照十六进制表示法表示为0xc80,或者按照二进制表示法表示为110010000000。因此,一个3.2K字节的地址偏移仅影响32位存储地址ADDR的地址位[7],地址位[10]和地址位[11]。
如上所述,所述哈希地址逻辑134可以参考缓存104的缓存大小来适应性地设置可编程位移操作所要处理的地址位数目,所述地址位数目选自32位存储地址ADDR。在此实例中,缓存104的缓存大小等于4K字节(即8K比特×4),则存在32个128比特的缓存行。选自32位存储地址ADDR并由可编程位移操作进行处理的地址位数目可以设置为不小于5的值(即Log232=5)。例如,当箱大小较大时,选自32位存储地址ADDR并由可编程位移操作进行处理的地址位数目可以设置为较大的值;当箱大小较小时,选自32位存储地址ADDR并由可编程位移操作进行处理的地址位数目可以设置为较小的值。
此外,地址位[6:0]被用作偏移,且3.2K字节的地址偏移(即0xc80)影响地址位[7],位移操作所移位或旋转的比特位置数目被设置为0(即7-7)。特别地,关于一个3.2K字节的地址偏移(即0xc80),最低比特位置上的非零地址位为地址位[7]。因此,缓存索引针对每个3.2K字节的地址偏移而改变,且无需对地址位旋转/移位。如图3所示,原始存储地址ADDR中的地址位[11:7]并不被哈希地址逻辑134所移位/旋转,因此由地址位[11:7]组成的哈希地址ADDR_H位于原始比特位置处。
所述控制电路136配置为至少部分地基于哈希地址ADDR_H来确定缓存104的索引Index'。在此实例中,控制电路136可以提取原始比特位置处的地址位[11:7]作为索引Index'。换句话说,原始存储地址ADDR中的地址位[11:7]实际上用于充当缓存索引(其源自哈希地址ADDR_H以在标签存储器114中寻找标签项120)。应当注意到,用于标签比较的标签地址仍然源自原始存储地址ADDR。即,控制电路136配置为将原始存储地址ADDR中的地址位[31:12]与利用索引Index'找到的存储在标签项120标志域中的标签地址进行比较。
如上所述,可编程位移操作应用于地址位[11:7],包括地址位[8:7]在内最初用于标引缓存104的标签存储器114中的阵列121之一。因此,原始阵列信息归因于比特的移位/旋转而不被保存。为了简化缓存寻址设计,哈希地址逻辑134可以被修改以基于原始存储地址的一部分执行位移操作,所述原始存储地址不包含初始用作阵列地址的地址位(例如[8:7])。
图4是根据本发明实施例的哈希地址位的位移操作图示,所述哈希地址位不包括阵列信息。在此实施例中,原始阵列信息(即,原始存储地址ADDR中的地址位[8:7])被保持。换句话说,可编程位移操作并不将地址位[8:7]用作其输入。所述哈希地址逻辑134可以参考缓存104的缓存大小来适应性地设置可编程位移操作所要处理的地址位数目,所述地址位数目选自32位存储地址ADDR。在此实例中,缓存104的缓存大小等于4K字节(即8K比特×4),则存在32个128比特的缓存行。选自32位存储地址ADDR并由可编程位移操作进行处理的地址位数目可以设置为5(即Log232=5)。此外,如上所述,位移操作所移位或旋转的比特位置数目被设置为0(即7-7),这归因于32bpp的800×600图像的图像间距所导致的3.2K字节地址偏移。因此,所提出的哈希地址逻辑136配置为处理包括地址位[13:9]的存储地址ADDR的一部分。如图4所示,原始存储地址ADDR中的地址位[13:9]并未移位,因此哈希地址ADDR_H由原始比特位置处的地址位[13:9]组成。
所述控制电路136配置为至少部分地基于哈希地址ADDR_H来确定缓存104的索引Index'。在此实例中,控制电路136可以提取原始比特位置处的地址位[13:9]作为索引Index'。换句话说,原始存储地址ADDR中的地址位[13:9]实际上用于充当缓存索引(其源自哈希地址ADDR_H以在标签存储器114中寻找标签项120)。应当注意到,用于标签比较的标签地址仍然源自原始存储地址ADDR。即,缓存控制器106将原始存储地址ADDR中的地址位[31:12]与利用索引Index'找到的存储在标签项120标志域中的标签地址进行比较。
所述哈希地址逻辑134可以参考缓存的缓存大小来适应性地设置可编程位移操作所要处理的地址位数目,所述地址位数目选自原始存储地址。当缓存控制器106用于装备了具有不同缓存大小的缓存的另一电子设备时,所选择的用于可编程位移操作处理的地址位数目将相应调整。
图5是根据本发明实施例的哈希地址位的另一位移操作图示,所述哈希地址位不包括阵列信息。在此实施例中,缓存104的数据存储器112可以具有4个阵列116,每个阵列116可以具有128个缓存行118,每个缓存行118可以为1K比特(即128字节)。因此,缓存大小等于64K字节(即,128K比特×4)。对于32bpp线性地址表面(图像),其为800×600图像,且800×600图像的每个箱为32×32图像。图像间距的字节数为3.2K字节(即800×4字节)。此外,缓存104可以采用直接映射方案,且处理器102_1-102_N的每一个可以为32位处理器。由于缓存104的数据存储器112中缓存行118的数目为512(即29),所选择的用于可编程位移操作处理的地址位数目可以设置为9(即Log2512=9)。此外,如上所述,位移操作所移位或旋转的比特位置数目被设置为0(即7-7),这归因于32bpp的800×600图像的图像间距所导致的3.2K字节地址偏移。在此实例中,原始阵列信息(即原始存储地址ADDR中的地址位[8:7])被保持。因此,所提出的哈希地址逻辑136配置为处理包括地址位[17:9]的存储地址ADDR的一部分。如图5所示,原始存储地址ADDR中的地址位[17:9]并未移位,因此哈希地址ADDR_H由原始比特位置处的地址位[17:9]组成。
控制电路136可以提取原始比特位置处的地址位[17:9]作为索引Index'。应当注意到,用于标签比较的标签地址仍然源自原始存储地址ADDR。即,所述缓存控制器106配置为将原始存储地址ADDR中的地址位[31:16]与利用缓存索引Index'找到的存储在标签项120标志域中的标签地址进行比较。
32bpp的800×600图像中每个扫描线的存储地址可以由基地址与偏移相加来表示。让我们忽略基地址而仅考虑偏移。下表中列出了为32bpp的800×600图像的所有扫描线生成的缓存索引Index'。
表2
在上述实例中,参考哈希地址ADDR_H来生成直接映射缓存的缓存索引(例如组地址)。然而,其仅出于展示目的,并不意味着对本发明的限制。在阅读以上段落后,本领域技术人员应该容易认识到,所提出的缓存寻址方案可以应用于组相联缓存。此外,利用按位旋转操作来执行可编程哈希函数仅仅是出于展示目的,并不意味着对本发明的限制。能够使得缓存索引针对源于图像间距的每个地址偏移而改变的任何公式都可以被可编程哈希函数所采用。这些替代设计均落入本发明的范围之内。
本领域技术人员将容易地观察到,可以根据本发明的教导对设备和方法进行许多修改和改变。因此,以上所披露的应当被理解为仅对待决权利要求的公认范围的限制。
Claims (20)
1.一种用于控制缓存访问的方法,包括:
接收存储地址;
利用哈希地址逻辑基于所述存储地址的至少一部分执行可编程哈希函数以生成哈希地址;以及
至少部分地基于所述哈希地址确定缓存索引。
2.根据权利要求1所述的方法,其中,执行所述可编程哈希函数的步骤包括:
当至少一部分图像被装载到缓存中的图像具有第一图像大小时,通过第一哈希函数设置来配置所述可编程哈希函数;
当至少一部分所述图像被装载到缓存中的图像具有不同于所述第一图像大小的第二图像大小时,通过不同于所述第一哈希函数设置的第二哈希函数设置来配置所述可编程哈希函数。
3.根据权利要求1所述的方法,其中,所述可编程哈希函数为位移操作。
4.根据权利要求3所述的方法,其中,所述位移操作配置为向右移位或向右旋转。
5.根据权利要求3所述的方法,其中,基于图像的图像大小来适应性地设置通过所述位移操作而移位或旋转的比特位置数目,所述图像的至少一部分图像被装载到所述缓存中。
6.根据权利要求1所述的方法,其中,执行可编程哈希函数的步骤包括:
参考所述缓存的缓存大小来适应性地设置选自存储地址的地址位数目,以充当所述存储地址的至少一部分。
7.根据权利要求1所述的方法,其中,所述缓存具有包含多个阵列的标签存储器,所述存储地址的至少一部分包含最初用于标引阵列之一的至少一个地址位,哈希地址包含实际上用于标引阵列之一的至少一个地址位。
8.根据权利要求1所述的方法,其中,缓存具有包含多个阵列的标签存储器,存储地址包含实际上用于标引阵列之一的至少一个地址位,存储地址的至少一部分不包含所述至少一个地址位。
9.根据权利要求1所述的方法,其中,存储地址由请求者产生,所述方法进一步包括:
在缓存内的缓存行的标签项中设置哈希使能位,所述哈希使能位用
来表示可编程哈希函数已经为所述存储地址而启用。
10.根据权利要求1所述的方法,进一步包括:
在缓存内的缓存行的标签项中为多个不同的请求者分别设置多个哈希使能位;
其中,每个哈希使能位表示指定的可编程哈希函数是否已经为相应的请求者所产生的存储地址而启用。
11.一种控制缓存访问的缓存控制器,包括:
输入接口,配置为接收存储地址;
哈希地址逻辑,配置为基于所述存储地址的至少一部分执行可编程哈希函数以生成哈希地址;
控制电路,配置为至少部分地基于所述哈希地址来确定缓存索引。
12.根据权利要求11所述的缓存控制器,其中,当至少一部分图像被装载到缓存中的图像具有第一图像大小时,所述哈希地址逻辑执行通过第一哈希函数设置来配置的可编程哈希函数;当至少一部分所述图像被装载到缓存中的图像具有不同于所述第一图像大小的第二图像大小时,所述哈希地址逻辑执行通过不同于所述第一哈希函数设置的第二哈希函数设置来配置的可编程哈希函数。
13.根据权利要求11所述的缓存控制器,其中,所述可编程哈希函数为位移操作。
14.根据权利要求13所述的缓存控制器,其中,所述位移操作配置为向右移位或向右旋转。
15.根据权利要求13所述的缓存控制器,其中,所述哈希地址逻辑基于图像的图像大小来适应性地设置通过所述位移操作而移位或旋转的比特位置数目,所述图像的至少一部分图像被装载到缓存中。
16.根据权利要求11所述的缓存控制器,其中,所述哈希地址逻辑配置为参考缓存的缓存大小来适应性地设置选自存储地址的地址位数目以充当存储地址的至少一部分。
17.根据权利要求11所述的缓存控制器,其中,缓存具有包含多个阵列的标签存储器,存储地址的至少一部分包含最初用于标引阵列之一的至少一个地址位,哈希地址包含实际上用于标引阵列之一的至少一个地址位。
18.根据权利要求11所述的缓存控制器,其中,缓存具有包含多个阵列的标签存储器,存储地址包含实际上用于标引阵列之一的至少一个地址位,存储地址的至少一部分不包含所述至少一个地址位。
19.根据权利要求11所述的缓存控制器,其中,存储地址由请求者产生,所述缓存控制器进一步包括:
控制电路,配置为在缓存内的缓存行的标签项中设置哈希使能位,
所述哈希使能位用来表示可编程哈希函数已经为存储地址而启用。
20.根据权利要求11所述的缓存控制器,进一步包括:
控制电路,配置为在缓存内的缓存行的标签项中为多个不同的请求者分别设置多个哈希使能位;
其中,每个哈希使能位表示指定的可编程哈希函数是否已经为相应的请求者所产生的存储地址而启用。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/549,556 US9760492B2 (en) | 2014-11-21 | 2014-11-21 | Method for controlling access of cache through using programmable hashing address and related cache controller |
US14/549,556 | 2014-11-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105630703A true CN105630703A (zh) | 2016-06-01 |
CN105630703B CN105630703B (zh) | 2018-10-09 |
Family
ID=56010353
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510808903.7A Active CN105630703B (zh) | 2014-11-21 | 2015-11-20 | 利用可编程哈希地址的控制缓存访问的方法及相关缓存控制器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9760492B2 (zh) |
CN (1) | CN105630703B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106980469A (zh) * | 2017-03-07 | 2017-07-25 | 记忆科技(深圳)有限公司 | 一种提高固态硬盘顺序写缓存效率的方法 |
CN107579916A (zh) * | 2016-07-04 | 2018-01-12 | 新华三技术有限公司 | 转发表项访问方法及装置 |
CN111259203A (zh) * | 2020-01-08 | 2020-06-09 | 上海兆芯集成电路有限公司 | 数据压缩器以及数据压缩方法 |
TWI750243B (zh) * | 2017-01-25 | 2021-12-21 | 南韓商三星電子股份有限公司 | 非揮發性記憶體儲存裝置 |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10445229B1 (en) | 2013-01-28 | 2019-10-15 | Radian Memory Systems, Inc. | Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies |
US11249652B1 (en) | 2013-01-28 | 2022-02-15 | Radian Memory Systems, Inc. | Maintenance of nonvolatile memory on host selected namespaces by a common memory controller |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US9542118B1 (en) * | 2014-09-09 | 2017-01-10 | Radian Memory Systems, Inc. | Expositive flash memory control |
US10698827B2 (en) * | 2014-12-14 | 2020-06-30 | Via Alliance Semiconductor Co., Ltd. | Dynamic cache replacement way selection based on address tag bits |
US10037164B1 (en) | 2016-06-29 | 2018-07-31 | EMC IP Holding Company LLC | Flash interface for processing datasets |
US10089025B1 (en) | 2016-06-29 | 2018-10-02 | EMC IP Holding Company LLC | Bloom filters in a flash memory |
US10055351B1 (en) | 2016-06-29 | 2018-08-21 | EMC IP Holding Company LLC | Low-overhead index for a flash cache |
US10146438B1 (en) | 2016-06-29 | 2018-12-04 | EMC IP Holding Company LLC | Additive library for data structures in a flash memory |
US10331561B1 (en) * | 2016-06-29 | 2019-06-25 | Emc Corporation | Systems and methods for rebuilding a cache index |
US10261704B1 (en) | 2016-06-29 | 2019-04-16 | EMC IP Holding Company LLC | Linked lists in flash memory |
EP3534265A4 (en) | 2016-11-16 | 2019-10-30 | Huawei Technologies Co., Ltd. | MEMORY ACCESS TECHNIQUE |
US10810133B1 (en) * | 2017-11-15 | 2020-10-20 | Amazon Technologies, Inc. | Address translation and address translation memory for storage class memory |
US10762137B1 (en) | 2017-11-15 | 2020-09-01 | Amazon Technologies, Inc. | Page table search engine |
US10754789B1 (en) * | 2017-11-15 | 2020-08-25 | Amazon Technologies, Inc. | Address translation for storage class memory in a system that includes virtual machines |
KR20200052528A (ko) * | 2018-11-07 | 2020-05-15 | 에스케이하이닉스 주식회사 | 비트 카운터를 이용하는 컴퓨팅 시스템 및 방법 |
US11188341B2 (en) | 2019-03-26 | 2021-11-30 | Intel Corporation | System, apparatus and method for symbolic store address generation for data-parallel processor |
US10896141B2 (en) * | 2019-03-26 | 2021-01-19 | Intel Corporation | Gather-scatter cache architecture having plurality of tag and data banks and arbiter for single program multiple data (SPMD) processor |
US11243775B2 (en) | 2019-03-26 | 2022-02-08 | Intel Corporation | System, apparatus and method for program order queue (POQ) to manage data dependencies in processor having multiple instruction queues |
US11399006B2 (en) * | 2020-08-31 | 2022-07-26 | Nokia Solutions And Networks Oy | Address generation |
US11636047B2 (en) | 2021-08-31 | 2023-04-25 | Micron Technology, Inc. | Hash operations in memory for data sharing |
US20240061784A1 (en) * | 2022-08-18 | 2024-02-22 | Samsung Electronics Co | System and method for performing caching in hashed storage |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5515522A (en) * | 1994-02-24 | 1996-05-07 | Hewlett-Packard Company | Coherence index generation for use by an input/output adapter located outside of the processor to detect whether the updated version of data resides within the cache |
CN1498369A (zh) * | 2001-03-30 | 2004-05-19 | 使用带有软高速缓存的芯片上***的***与方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7054999B2 (en) * | 2002-08-02 | 2006-05-30 | Intel Corporation | High speed DRAM cache architecture |
US8990505B1 (en) * | 2007-09-21 | 2015-03-24 | Marvell International Ltd. | Cache memory bank selection |
US8832464B2 (en) * | 2009-03-31 | 2014-09-09 | Oracle America, Inc. | Processor and method for implementing instruction support for hash algorithms |
US8745307B2 (en) * | 2010-05-13 | 2014-06-03 | International Business Machines Corporation | Multiple page size segment encoding |
-
2014
- 2014-11-21 US US14/549,556 patent/US9760492B2/en active Active
-
2015
- 2015-11-20 CN CN201510808903.7A patent/CN105630703B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5515522A (en) * | 1994-02-24 | 1996-05-07 | Hewlett-Packard Company | Coherence index generation for use by an input/output adapter located outside of the processor to detect whether the updated version of data resides within the cache |
CN1498369A (zh) * | 2001-03-30 | 2004-05-19 | 使用带有软高速缓存的芯片上***的***与方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107579916A (zh) * | 2016-07-04 | 2018-01-12 | 新华三技术有限公司 | 转发表项访问方法及装置 |
US11038797B2 (en) | 2016-07-04 | 2021-06-15 | New H3C Technologies Co., Ltd. | Forwarding table entry access |
TWI750243B (zh) * | 2017-01-25 | 2021-12-21 | 南韓商三星電子股份有限公司 | 非揮發性記憶體儲存裝置 |
CN106980469A (zh) * | 2017-03-07 | 2017-07-25 | 记忆科技(深圳)有限公司 | 一种提高固态硬盘顺序写缓存效率的方法 |
CN111259203A (zh) * | 2020-01-08 | 2020-06-09 | 上海兆芯集成电路有限公司 | 数据压缩器以及数据压缩方法 |
CN111259203B (zh) * | 2020-01-08 | 2023-08-25 | 上海兆芯集成电路股份有限公司 | 数据压缩器以及数据压缩方法 |
Also Published As
Publication number | Publication date |
---|---|
US9760492B2 (en) | 2017-09-12 |
US20160147669A1 (en) | 2016-05-26 |
CN105630703B (zh) | 2018-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105630703B (zh) | 利用可编程哈希地址的控制缓存访问的方法及相关缓存控制器 | |
US11537531B2 (en) | Cache memory that supports tagless addressing | |
CN109983536B (zh) | 响应标签匹配命令的存储电路 | |
CN107430550B (zh) | 非对称集组合的高速缓存 | |
US6233647B1 (en) | Hashed direct-mapped texture cache | |
US10423534B2 (en) | Cache memory | |
US20130111167A1 (en) | Uncached Static Short Address Translation Table in the Cache Coherent Computer System | |
EP2866148B1 (en) | Storage system having tag storage device with multiple tag entries associated with same data storage line for data recycling and related tag storage device | |
US20160210243A1 (en) | Memory Paging for Processors using Physical Addresses | |
US20220398198A1 (en) | Tags and data for caches | |
EP3382558B1 (en) | Apparatus, method and system for just-in-time cache associativity | |
US11822483B2 (en) | Operating method of memory system including cache memory for supporting various chunk sizes | |
CN117389914B (zh) | 缓存***、缓存写回方法、片上***及电子设备 | |
US7797492B2 (en) | Method and apparatus for dedicating cache entries to certain streams for performance optimization | |
US7865691B2 (en) | Virtual address cache and method for sharing data using a unique task identifier | |
US10042562B2 (en) | Apparatus and method for a non-power-of-2 size cache in a first level memory device to cache data present in a second level memory device | |
US9251070B2 (en) | Methods and apparatus for multi-level cache hierarchies | |
US20240220415A1 (en) | Tiered memory caching | |
KR20240014431A (ko) | 스토리지 장치를 위한 적응형 캐시 인덱싱 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |