利用可编程哈希地址的控制缓存访问的方法及相关缓存控制器的制造方法
【技术领域】
[0001] 本发明所公开的实施例设及访问缓冲数据(例如缓存数据),尤其设及利用可编程 哈希地址化ashing acMress)的控制缓存访问的方法及相关缓存控制器。
【背景技术】
[0002] 在现今的系统中,当与处理数据的时间相比时,将数据带入处理器的时间显得非 常的长。因此,在处理器输入处形成了瓶颈。缓存通过向处理器来回移动信息从而帮助减少 了时间。当缓存包含需求信息时,该事务被称为缓存命中。当缓存不包含所需信息时,该事 务被称为缓存缺失。通常,命中率为缓存的关键性能指标。如何提高命中率成为本领域的问 题。
[0003] 通常,缓存可W是完全关联缓存,直接映射缓存,或组关联缓存。所述组关联缓存 是介于完全关联缓存和直接映射缓存之间的混合式,并可W被认为是介于完全关联缓存和 直接映射缓存的硬件复杂性/延时之间的合理折衷。无论采用哪种缓存设计,都需要提高命 中率。例如,当缓存大小为4KB(千字节)时,所述缓存用于由32bpp(位/像素)的一个1024X 768图像中预装载一个32X32图像。在线性地址表面(图像)中,由当前扫描线中的像素(X, Y)到下一扫描线中的像素(Χ,Υ+1)的地址偏移等于图像中的图像间距的字节数。由于所述 1024 X 768图像的图像间距为1024,则图像间距的字节数为4邸。考虑所述1024 X 768图像被 分为多个箱(bin)且W逐箱(bin-的-bin)方式进行处理的情况,所述每个箱为一个32X32 图像。图像间距的字节数等于缓存大小,即,扫描线的间距为4邸,其正好为缓存容量的大小 4KB。如果我们不将图像的地址映射转变为缓存的阵列(bank)和组(set),则所有32个扫描 线将命中相同的阵列和相同的组。对于直接映射方案,32X32图像仅有一个扫描线可W被 读入缓存。所述32X32图像的下一扫描线将映射到相同的缓存线并取代缓存中当前存在的 扫描线。对于4路(4-way)联合方案,32X32图像仅有4条扫描线可W保持在缓存中。所述32 X32图像的其他28条扫描线将映射并试图取代缓存中当前的4条扫描线,所述当前的4条扫 描线包含图像的前4条扫描线数据。结果,缺失率将变高,运归因于32X32图像仅有少量扫 描线可W被保持在缓存中。此外,因为不能将32 X 32图像的全部扫描线同时保持在缓存中, 32 X 32图像的数据预装载是无效的。
[0004] 因此,需要一种创新的缓存寻址设计将箱(bin)的大部分或全部图像数据预装载 到缓存之中,因此提高命中率并减少数据处理延时。
【发明内容】
[000引根据本发明的典型的实施例,提出一种利用可编程哈希地址的控制缓存访问的方 法及相关缓存控制器来解决W上问题。
[0006]根据本发明的第一方面,公开一种用于控制缓存访问的典型的方法。所述典型的 方法包含:接收存储地址;利用哈希地址逻辑基于所述存储地址的至少一部分执行可编程 哈希函数w生成哈希地址;并至少部分地基于所述哈希地址来确定缓存索引。
[0007] 根据本发明的第二方面,公开一种用于控制缓存访问的典型的缓存控制器。所述 典型的缓存控制器包含输入接口,哈希地址逻辑,W及控制电路。输入接口配置为接收存储 地址。哈希地址逻辑配置为基于所述存储地址的至少一部分执行可编程哈希函数W生成哈 希地址。所述控制电路配置为至少部分地基于所述哈希地址来确定缓存索引。
[0008] 在阅读随后所详细描述的W不同附图形式展示的优选实施例后,对于本领域普通 技术人员而言,本发明的运些和其他目的将变得显而易见。
【附图说明】
[0009] 图1是根据本发明实施例的数据处理系统的框图。
[0010] 图2是根据本发明实施例的哈希地址位的位移操作图示,所述哈希地址位包括阵 列信息。
[0011] 图3是根据本发明实施例的哈希地址位的另一位移操作图示,所述哈希地址位包 括阵列信息。
[0012] 图4是根据本发明实施例的哈希地址位的位移操作图示,所述哈希地址位不包括 阵列信息。
[0013] 图5是根据本发明实施例的哈希地址位的另一位移操作图示,所述哈希地址位不 包括阵列信息。
【具体实施方式】
[0014] 设及特定组件的特定术语将始终在说明书和随后的权利要求中使用。本领域技术 人员将认识到,制造商可W用不同名称来指代组件。本文件无意于区分那些名称上不同但 功能相同的组件。在随后的说明书和权利要求中,术语"包含"和"包括"用于开放式类型,因 此其应当被解释为"包含,但不限于…"。同样,术语"禪合"规定为意味着间接或直接电气连 接中的任一。因此,如果一个设备与另一个设备禪合,其连接可W为直接电气连接或通过其 他设备和连接的间接电气连接。
[0015] 图1是根据本发明实施例的数据处理系统的框图。数据处理系统100可W是电子设 备的一部分。例如,数据处理系统100可W是图形处理系统。在此实施例中,数据处理系统 100包含一个或多个处理器(例如,中央处理器或图形处理单元)102_1-102_N,缓存104,缓 存控制器106,W及数据存储设备(例如,主存储器或下一级缓存)108。处理器102_1-102_N 是缓存104的请求者(request agent)。应当注意到,处理器102_1-102_加勺数据可W调整, 其取决于实际应用需求。
[0016] 缓存104是小尺寸存储设备(例如,具备较快数据访问速度的静态随机存取存储器 (SRAM)设备),并可W被应用于图形处理系统或者位于处理器和大尺寸存储设备(例如,具 备较慢数据访问速度的动态随机存取存储器(DRAM)设备)之间且需要较快信息交易的任何 应用之中。如图1所示,缓存104包含数据存储器112和标签存储器(tag memo巧)114。所述数 据存储器112可W具有多个阵列(bank) 116,每个阵列116包含多个缓存行(cache line) 118。例如,所述数据存储器112可W通过使用SRAM而应用于存储缓存数据,每个缓存行118 可W配置为具有指定的缓存行大小(例如化比特)。所述标签存储器114可W是其中存储了 多个标签项120的标签RAM。类似地,所述标签存储器114可W具有多个阵列121,每个阵列 121包含多个标签项120。由于不同阵列中的标签项可W被同时读取,因此所述缓存控制器 106可W在一个周期内获取多个标签项。
[0017] 在一个典型的设计中,数据存储器112和标签存储器114可W被分配到相同存储设 备的不同存储空间中。在另一典型的设计中,数据存储器112和标签存储器114可W被分配 到不同的存储设备中。
[0018] 在此实施例中,每个标签项120与分配到数据存储器112中的一个缓存行118相关 联,且具有多个状态位(例如,有效位(valid bit)"V"122,页面重写标志位(dirty bit)"D" 124, W及一个或多个哈希使能位化日3]16]1日1310 13;[1:)巧1"-"化"126)和标志域(1日旨;1^161(1) 128。所述标签项120由缓存控制器106进行设置。所述有效位122记录与此标签项相关联的 缓存行118是否包含有效数据。每个标签项的所述有效位122被初始化设置为表示无效状态 (即V=0)。当取自数据存储设备108的数据存储到缓存行118中,与此缓存行118相关联的相 应标签项的有效位122被设置为表示有效状态(即V= 1)。所述页面重写标志位124记录与此 标签项相关联的缓存数据是否应当被回写到主存储器。应当注意到,所述页面重写标志位 124仅由回写缓存使用。当缓存104为透写(write-trough)缓存时,可W省略每个标签项中 的页面重写标志位124。所述哈希使能位126设置为向不同的请求者(比如处理器102_1- 102_N)分配不同的进程地址空间标识符(PASID)或者处理器ID。由于缓存104由不同的请求 者共享,每个哈希使能位126设置为表示是否有一个由本发明提出的可编程哈希函数已经 为相应的请求者所产生的存储地址而启用。例如,当包含在由处理器102_1产生的写请求中 的存储地址被指定的可编程哈希函数所处理W建立指向特定标签