具有每扇区高速缓存驻留控件的高速缓存存储器的制作方法
未命名
09-29
阅读:143
评论:0
1.各种实施例总体上涉及计算存储器架构,并且更具体地,涉及具有每扇区高速缓存驻留控件的高速缓存存储器。
背景技术:
2.除其他外,计算系统通常包括一个或更多个处理单元,例如中央处理单元(cpu)和/或图形处理单元(gpu),以及一个或更多个存储器系统。处理单元执行用户模式软件应用程序,该应用程序提交和启动计算任务,执行包括在处理单元中的一个或更多个计算引擎。处理单元包括一个多层存储器系统,以在从存储器加载数据和将数据存储到存储器时提高性能。
3.多层存储器系统包括相对较大且性能相对较低的系统存储器,用于存储用户模式软件应用程序中包括的大量程序指令以及用户模式软件应用程序在执行期间随时间访问的数据。此外,多层存储器系统包括相对较小且性能相对较高的高速缓存存储器,用于存储用户模式软件应用当前或即将可访问的那些程序指令和数据。高速缓存控制器在使用时或就在使用之前将来自系统存储器的指令和数据加载到高速缓存存储器中。结果,处理单元能够比从较低性能的系统存储器更频繁地从用于指令和数据的高性能高速缓存存储器加载指令和数据。处理单元由此相对于仅具有系统存储器的非分层存储器系统实现了改进的存储器性能。
4.处理单元还可以将数据存储到高速缓存存储器。例如,可以将高速缓存存储器组织为一组高速缓存行,其中每个高速缓存行包括数十或数百字节的数据。当高速缓存控制器最初用系统存储器中的数据加载高速缓存行时,该高速缓存行被认为是干净的,因为高速缓存行中的数据与系统存储器的相应部分中的数据相同。如果处理单元将一个或更多个新的或更新的数据字节存储到高速缓存行中,则高速缓存行中的数据不再与系统存储器的相应部分中的数据相同。这样的高速缓存行被标记为脏。高速缓存控制器最终将脏高速缓存行写入系统存储器并将高速缓存行标记为干净。
5.通常,系统存储器和高速缓存存储器之间的可用存储器传输带宽是有限的。因此,可以通过减少系统存储器和高速缓存存储器之间的数据传输流量来提高高速缓存存储器性能。减少这种数据传输流量的一种技术是防止某些脏高速缓存行从高速缓存存储器回写到系统存储器。如果软件应用程序知道该软件应用程序不再需要某个范围的存储器地址,则该软件应用程序可以使包含该存储器地址范围内的数据的任何高速缓存行无效。高速缓存控制器被禁止将无效的高速缓存行写回存储器,即使对于包括脏数据的无效高速缓存行也是如此,这会导致系统存储器和高速缓存存储器之间的传输流量减少。此外,这种使高速缓存行无效的方法可能导致语义不连贯(例如可能永久丢失的脏数据)。即便如此,不再需要有效高速缓存行中的数据的软件应用程序可以明确地允许高速缓存行无效的这种方法。
6.这种用于减少传输流量的技术的一个问题是,被软件应用程序无效的存储器地址的范围可能与对应的高速缓存行的地址不对齐。例如,高速缓存行可以具有落入被无效的
存储器地址范围内的第一部分和落入该范围之外的第二部分。如果高速缓存行的第二部分包含任何脏数据,则高速缓存行需要在失效之前写回存储器。在扇区高速缓存中,每个高速缓存行被划分为一组扇区,只有脏扇区需要在失效之前写回存储器。在任何一种情况下,在失效之前要求回写都可能首先破坏失效的目的。或者,软件应用程序可以生成跟踪每个高速缓存行的跟踪数据结构,识别每个高速缓存行的哪些部分是有效的以及哪些部分是无效的。然而,这种跟踪数据结构本身存储在高速缓存存储器中,从而消耗了系统存储器和高速缓存存储器之间的存储器传输带宽,这与降低存储器传输带宽的目标相悖。
7.如前所述,本领域需要用于管理计算系统中的高速缓存存储器的更有效的技术。
技术实现要素:
8.本公开的各种实施例阐述了一种用于管理计算系统中的高速缓存存储器的计算机实现的方法。该方法包括检测使高速缓存存储器的第一高速缓存行中的第一扇区无效的指令。该方法还包括确定第一扇区在高速缓存存储器中的位置。该方法还包括基于位置识别与第一扇区相关联的第一状态指示符。该方法进一步包括修改第一状态指示符同时维持第一高速缓存行中的第二扇区的状态指示符,其中修改后的第一状态指示符使第一扇区无效。
9.其他实施例包括但不限于实现所公开技术的一个或更多个方面的系统,以及包括用于执行所公开技术的一个或更多个方面的指令的一个或更多个计算机可读介质,以及用于执行所公开技术的一个或更多个方面的方法。
10.所公开的技术相对于现有技术的至少一个技术优势在于,利用所公开的技术,高速缓存存储器可以在比整个高速缓存行更精细的分辨率下使高速缓存存储器无效。结果,相对于只能使整个高速缓存行无效的先前方法,脏高速缓存行的回写减少了,从而提高了高速缓存存储器性能以及更快地执行软件应用程序。这些优点代表了对现有技术方法的一项或更多项技术改进。
附图说明
11.为了更详细地理解上述各种实施例的相关特征,可以通过参考各种实施例(其中一些已在附图中说明)对上述简要概括的本发明概念进行更具体的描述。但是,需要注意的是,所附的附图只说明发明概念的典型实施例,因此并不是以任何方式限制范围,还存在其他同样有效的实施例。
12.图1是被配置成用于实施各个实施例的一个或更多个方面的计算机系统的框图;
13.图2是根据各个实施例的包括在图1的加速器处理子系统中的并行处理单元(ppu)的框图;
14.图3是根据各个实施例的包括在图2的并行处理单元(ppu)中的通用处理集群(gpc)的框图;
15.图4是根据各种实施例的包括在图1的cpu和/或图2的ppu中的高速缓存存储器系统的框图;
16.图5是根据各种实施例的图4的高速缓存标志存储器的框图;以及
17.图6是根据各种实施例的用于管理诸如图1的cpu和/或图2的ppu的处理单元的高
速缓存存储器的方法步骤的流程图。
具体实施方式
18.在以下描述中,阐述了许多具体细节以便提供对不同实施例的更彻底的理解。然而,对于本领域技术人员将显而易见的是,可以在没有这些具体细节中的一个或更多个的情况下实践本发明构思。
19.系统概述
20.图1为示出被配置为实现各个实施例的一个或更多个方面的计算机系统100的框图。如图所示,计算机系统100包括但不限于中央处理单元(cpu)102、系统存储器104,其经由存储器桥105和通信路径113耦连至加速器处理子系统112。存储器桥105进一步地经由通信路径106耦连至i/o(输入/输出)桥107,i/o桥107又耦连至交换机116。
21.在操作中,i/o桥107被配置为从输入设备108(诸如键盘或鼠标)接收用户输入信息,并经由通信路径106和存储器桥105将输入信息转发给cpu 102进行处理。在一些示例中,输入设备108用于查证一个或更多个用户的身份,以允许授权用户访问计算机系统100并且拒绝未授权用户访问计算机系统100。交换机116被配置为在i/o桥107和计算机系统100的其他组件(如网络适配器118和各种附加卡120和121)之间提供连接。在一些示例中,网络适配器118用作主要或专用输入设备以接收输入数据以通过所公开的技术进行处理。
22.还如图所示,i/o桥107耦合至系统盘114,系统盘114可以被配置为存储内容、应用程序和数据,以供cpu 102和加速器处理子系统112使用。一般来说,系统盘114为应用程序和数据提供非暂时性存储器,可包括固定的或可移除的硬盘驱动器、闪存设备和cd-rom(光盘只读存储器)、dvd-rom(数字多功能盘-rom)、蓝光、hd-dvd(高清dvd)或其他磁、光或固态存储设备。最后,虽然未明确示出,其他组件(诸如通用串行总线或其他端口连接、光盘驱动器、数字多功能盘驱动器、胶片录制设备等)也可以连接到i/o桥107。
23.在各个实施例中,存储器桥105可以是北桥芯片,i/o桥107可以是南桥芯片。此外,可以用任何技术上合适的协议(包括但不限于外围组件互连高速(pcie)、超文本传输(hypertransport)或本领域公知的任何其他总线或点对点通信协议)在计算机系统100内实现通信路径106和113以及其他通信路径。
24.在一些实施例中,加速器处理子系统112包括图形子系统,该图形子系统向显示装置110输送像素,该显示装置可以是任何常规的阴极射线管、液晶显示器、发光二极管显示器等。在这种实施例中,加速器处理子系统112合并了针对图形和视频处理优化的电路,包括例如视频输出电路。如下图2中更详细地描述的,此类电路可以跨加速器处理子系统112中包括的一个或更多个加速器合并。加速器包括可以执行指令的任何一个或更多个处理单元,例如中央处理单元(cpu)、图2-4的并行处理单元(ppu)、图形处理单元(gpu)、智能处理单元(ipu))、神经处理单元(nau)、张量处理单元(tpu)、神经网络处理器(nnp)、数据处理单元(dpu)、视觉处理单元(vpu)、专用集成电路(asic)、
–
现场可编程门阵列(fpga)等。
25.在一些实施例中,加速器处理子系统112包括两个处理器,在本文中称为主处理器(通常为cpu)和辅助处理器。通常,主处理器是cpu,辅助处理器是gpu。附加地或替代地,主处理器和辅助处理器中的每一个可以是本文公开的以任何技术上可行的组合的任何一种或更多种类型的加速器。辅助处理器通过不安全的通信路径从主处理器接收安全命令。辅
助处理器访问存储器和/或其他存储系统,例如系统存储器104、compute express link(cxl)存储器扩展器、存储器管理的磁盘存储、片上存储器等。辅助处理器通过不安全的连接访问该存储器和/或其他存储系统。主处理器和辅助处理器可以经由gpu到gpu通信通道,例如nvidia link(nvlink)相互通信。此外,主处理器和辅助处理器可以经由网络适配器118相互通信。通常,不安全通信路径和安全通信路径之间的区别取决于应用。特定应用程序通常认为管芯或封装内的通信是安全的。通过标准通信通道(例如pcie)进行未加密数据的通信被认为是不安全的。
26.在一些实施例中,加速器处理子系统112合并了针对通用和/或计算处理而优化的电路。同样,此类电路可以跨加速器处理子系统112中包括的一个或更多个加速器合并,这些加速器被配置为执行此类通用和/或计算操作。在其他实施例中,加速器处理子系统112中包括的一个或更多个加速器可配置为执行图形处理、通用处理和计算处理操作。系统存储器104包括至少一个设备驱动器103,该驱动程序配置为管理加速器处理子系统112中的一个或更多个加速器的处理操作。
27.在各种实施例中,加速器处理子系统112可与图1的一个或更多个其他元素集成,以形成单个系统。例如,加速器处理子系统112可以与cpu 102和其他连接电路集成在单个芯片上,以形成片上系统(“soc”)。
28.应理解,本文所示的系统是说明性的,并且变化和修改是可能的。连接拓扑(包括网桥的数量和布置、cpu 102的数量和加速器处理子系统112的数量)可以根据需要进行修改。例如,在一些实施例中,系统存储器104可以直接连接到cpu 102,而不是通过存储器桥105连接到cpu 102,并且其他设备将经由存储器桥105和cpu 102与系统存储器104进行通信。在其他替代拓扑中,加速器处理子系统112可以连接到i/o桥107或直接连接到cpu 102,而不是连接到存储器桥105。在其他实施例中,i/o桥107和存储器桥105可以集成到单个芯片中,而不是作为一个或更多个分立器件存在。最后,在某些实施例中,图1所示的一个或更多个组件可以不存在。例如,可以消除交换机116,网络适配器118和附加卡120、121会直接连接到i/o桥107。
29.图2是根据各个实施例的图1的加速器处理子系统112中包括的并行处理单元(ppu)202的框图。尽管图2描述了一个ppu 202,如上文所述,但加速器处理子系统112可以包括任意数量的ppu 202。此外,图2的ppu 202是包括在图1的加速器处理子系统112中的加速器的一个示例。替代的加速器包括但不限于cpu、gpu、ipu、npu、tpu、nnp、dpu、vpu、asic、fpga,和/或类似的。图2-4中公开的关于ppu 202的技术以任何组合同样适用于包括在加速器处理子系统112内的任何类型的加速器。如图所示,ppu 202耦合到本地并行处理(pp)存储器204。ppu 202和pp存储器204可采用一个或更多个集成电路器件实现,例如可编程处理器、应用专用集成电路(asic)或存储器设备,或者任何其他技术上可行的方式。
30.一些实施例中,ppu 202包括图形处理单元(“gpu”),该gpu可配置为实现图形渲染管线,以基于cpu 102和/或系统存储器104提供的图形数据执行与生成像素数据相关的各种操作。在处理图形数据时,pp存储器204可用作存储一个或更多个常规帧缓冲区(如果需要,还可以存储一个或更多个其他渲染目标)的图形存储器。除其他事项外,pp存储器204可用于存储和更新像素数据,并将最终像素数据或显示帧传输至显示设备110以进行显示。在一些实施例中,ppu 202也可以配置为通用处理和计算操作。
31.在操作中,cpu 102是计算机系统100的主处理器,控制和协调其他系统组件的操作。特别是,cpu 102发出控制ppu 202操作的命令。在一些实施例中,cpu 102将用于ppu 202的命令流写入数据结构(图1或图2未明确示出)中,该数据结构可以位于系统存储器104、pp存储器204或cpu 102和ppu 202两者可访问的另一个存储位置。另外或替代地,除了cpu 102之外的处理器和/或加速器可以将用于ppu 202的一个或更多个命令流写入数据结构。指向数据结构的指针被写入推送缓冲区以发起对数据结构中命令流的处理。ppu 202从推送缓冲区读取命令流,然后相对于cpu 102的操作异步地执行命令。在生成多个推送缓冲区的实施例中,应用程序可以经由设备驱动器103为每个推送缓冲区指定执行优先级,以控制不同推送缓冲区的调度。
32.还如图所示,ppu 202包括i/o(输入/输出)单元205,其经由通信路径113和存储器桥105与计算机系统100的其余部分进行通信。i/o单元205生成数据包(或其他信号)以在通信路径113上传输,并且还从通信路径113接收所有传入数据包(或其他信号),将传入数据包定向到ppu 202的相应组件。例如,与处理任务相关的命令可定向到主机接口206,而与存储器操作相关的命令(例如,从pp存储器204读取或写入pp存储器204)可以定向到交叉开关单元210。主机接口206读取每个推送缓冲区,并将存储在推送缓冲区中的命令流发送到前端212。
33.如上结合图1所述,ppu 202与计算机系统100的其余部分的连接可以变化。在一些实施例中,加速器处理子系统112(其包括至少一个ppu 202)作为附加卡实现,其可插入计算机系统100的扩展槽中。在其他实施例中,ppu 202可采用总线桥集成在单个芯片上,诸如存储器桥105或i/o桥107。同样,在其他实施例中,ppu 202的一些或全部元件可与cpu 102一起被包括在单个集成电路或片上系统(soc)中。
34.在操作中,前端212将从主机接口206接收的处理任务发送到任务/工作单元207内的工作分配单元(未示出)。工作分配单元接收指向处理任务的指针,这些任务被编码为任务元数据(tmd)并存储在存储器中。指向tmd的指针包括在命令流中,该命令流存储为推送缓冲区,并由前端212从主机接口206接收。可以编码为tmd的处理任务包括与要处理的数据相关联的索引,以及定义如何处理数据的状态参数和命令。例如,状态参数和命令可以定义要对数据执行的程序。任务/工作单元207从前端212接收任务,并确保在发起每个tmd指定的处理任务之前将gpc 208配置为有效状态。可以为每个tmd指定优先级,该优先级用于调度处理任务的执行。处理任务也可以从处理集群阵列230接收。可选地,tmd可以包括控制是否将tmd添加到处理任务列表(或指向处理任务的指针列表)的头部或尾部,从而提供对执行优先级的另一级控制的参数。
35.ppu 202基于处理集群阵列230有利地实现了高度并行处理体系架构,处理集群阵列230包括一组c个通用处理集群(gpc)208,其中c≥1。每个gpc 208能够同时执行大量(例如数百或数千个)线程,其中每个线程都是程序的实例。在各种应用中,可以分配不同的gpc 208来处理不同类型的程序或执行不同类型的计算。gpc 208的分配可根据每种类型的程序或计算产生的工作负载而不同。
36.存储器接口214包括一组d个分区单元215,其中d≥1。每个分区单元215耦合到驻留在pp存储器204内的一个或更多个动态随机存取存储器(dram)220。在一个实施例中,分区单元215的数量等于dram 220的数量,每个分区单元215耦合到不同的dram 220。在其他
实施例中,分区单元215的数量可以与dram 220的数量不同。本领域普通技术人员可以认识到,dram 220可更换为任何其他技术上合适的存储设备。在操作中,各种渲染目标(诸如纹理映射和帧缓冲区)可以跨dram 220存储,允许分区单元215并行写入每个渲染目标的部分,从而有效地使用pp存储器204的可用带宽。
37.给定的gpc 208可以处理要写入pp存储器204中的任何dram 220的数据。交叉开关单元210被配置为将每个gpc 208的输出路由到任何分区单元215的输入或任何其他gpc 208以进行进一步处理。gpc 208经由交叉开关单元210与存储器接口214通信,以从各个dram 220读取或写入各个dram 220。在一个实施例中,交叉开关单元210除了经由存储器接口214连接到pp存储器204之外,还连接到i/o单元205,从而使不同gpc 208中的处理核能够与系统存储器104或非ppu 202本地的其他存储器进行通信。在图2的实施例中,交叉开关单元210与i/o单元205直接连接。在各种实施例中,交叉开关单元210可以使用虚拟通道分隔gpc 208和分区单元215之间的业务流。
38.同样,gpc 208可以被编程为执行与各种应用相关的处理任务,包括但不限于线性和非线性数据变换、视频和/或音频数据的过滤、建模操作(例如,应用物理定律以确定对象的位置、速度和其他属性)、图像渲染操作(例如,曲面细分着色程序、顶点着色程序、几何着色程序和/或像素/片段着色程序)、通用计算操作等。在操作中,ppu 202被配置为将数据从系统存储器104和/或pp存储器204传输到一个或更多个片上存储器单元,处理该数据,并将结果数据写回系统存储器104和/或pp存储器204。然后,其他系统组件(包括cpu 102、加速器处理子系统112中的另一ppu 202或计算机系统100中的另一加速器处理子系统112)可以访问该结果数据。
39.如上所述,加速器处理子系统112中可包括任意数量的ppu 202。例如,单个附加卡上可提供多个ppu 202,或者多个附加卡可以连接到通信路径113,或者一个或更多个ppu 202可以集成到桥芯片中。多ppu系统中的ppu 202可彼此相同或不同。例如,不同的ppu 202可能具有不同数量的处理核和/或不同数量的pp存储器204。在存在多个ppu 202的实现方式中,这些ppu可以并行操作,以比采用单个ppu 202所可能的吞吐量更高的吞吐量处理数据。包括一个或更多个ppu 202的系统可以以各种配置和形式因素实现,包括但不限于台式机、笔记本电脑、手持式个人计算机或其他手持设备、服务器、工作站、游戏机、嵌入式系统等。
40.图3是根据各个实施例的图2的并行处理单元(ppu)202中包括的通用处理集群(gpc)208的框图。在操作中,gpc 208可以被配置为并行执行大量线程以执行图形、通用处理和/或计算操作。如本文所用,“线程”是指在特定输入数据集上执行的特定程序的实例。在一些实施例中,单指令多数据(simd)指令发出技术用于支持大量线程的并行执行,而无需提供多个独立的指令单元。在其他实施例中,单指令多线程(simt)技术用于使用被配置为向gpc 208中的一组处理引擎发出指令的通用指令单元来支持大量通常同步的线程的并行执行。与simd执行体系(其中所有处理引擎通常执行相同的指令)不同,simt执行允许不同的线程更容易通过给定程序遵循不同的执行路径。本领域普通技术人员应当认识到,simd处理体系表示simt处理体系的功能子集。
41.gpc 208的操作经由管线管理器305控制,该管线管理器将从任务/工作单元207内的工作分配单元(未示出)接收的处理任务分配到一个或更多个流式多处理器(sm)310。管
线管理器305还可以配置为通过指定sm 310输出的经处理的数据的目的地来控制工作分配交叉开关330。
42.在一个实施例中,gpc 208包括一组m个sm 310,其中m≥1。此外,每个sm 310包括一组功能执行单元(未示出),诸如执行单元和加载存储单元。特定于任何功能执行单元的处理操作都可以是管线化的,这样就使得能够在前面的指令完成执行之前发出新的指令以执行。可以提供给定sm 310中功能执行单元的任何组合。在各种实施例中,功能执行单元可被配置为支持各种不同的操作,包括整数和浮点算术(例如,加法和乘法)、比较运算、布尔运算(例如,and、or、xor)、位移位,以及计算各种代数函数(例如,平面插值和三角函数、指数函数和对数函数等)。有利的是,相同的功能执行单元可以被配置为执行不同的操作。
43.在操作中,每个sm 310被配置为处理一个或更多个线程组。如本文所用,“线程组(thread group)”或“线程束(warp)”是指对不同的输入数据同时执行同一程序的一组线程,其中组中的一个线程被指派给sm 310中的不同执行单元。线程组可以包括比sm 310中的执行单元的数量更少的线程,在这种情况下,当正在处理该线程组时,某些执行在周期期间可处于空闲。线程组还可包括比sm 310中的执行单元的数量更多的线程,在这种情况下,处理可发生在连续的时钟周期中。由于每个sm 310可以同时支持多达g个线程组,因此,在任何给定时间都可以在gpc 208中执行多达g*m个线程组。
44.此外,多个相关线程组在sm 310中可以同时是活动的(处于不同的执行阶段)。该线程组的集合在本文中被称为“协作线程阵列”(“cta”)或“线程阵列”。特定cta的大小等于m*k,其中k是线程组中同时执行的线程的数量,这通常是sm 310中执行单元数量的整数倍,m是sm 310内同时活动的线程组的数量。在各个实施例中,以计算统一设备架构(cuda)编程语言编写的软件应用描述在gpc 208上执行的线程的行为和操作,包括任何上述行为和操作。可在cuda程序中指定给定处理任务,使得sm 310可被配置为执行和/或管理通用计算操作。
45.尽管图3未示出,但每个sm 310包括一级(l1)高速缓存,或使用sm 310外部的相应l1高速缓存中的空间来支持执行单元执行的加载和存储操作等。每个sm 310还可以访问在ppu 202中的所有gpc 208之间共享的二级(l2)高速缓存(未示出)。l2高速缓存可用于在线程之间传输数据。最后,sm 310还可以访问片外“全局”存储器,其可包括pp存储器204和/或系统存储器104。需要理解的是,ppu 202外部的任何存储器都可以用作全局存储器。此外,如图3所示,gpc 208中可包括1.5级(l1.5)高速缓存335,并且其被配置为接收和保存sm 310经由存储器接口214从存储器请求的数据。这种数据可以包括但不限于指令、统一数据和常量数据。在gpc 208内具有多个sm 310的实施例中,sm 310可以有益地共享高速缓存在l1.5高速缓存335中的公共指令和数据。
46.每个gpc 208可具有关联的存储器管理单元(mmu)320,其被配置为将虚拟地址映射到物理地址。在各个实施例中,mmu 320可以驻留在gpc 208或存储器接口214内。mmu 320包括一组页表条目(pte),用于将虚拟地址映射到图块(tile)或存储器页的物理地址,可选地映射到高速缓存行索引。mmu 320可包括地址转换后备缓冲区(tlb)或驻留在sm 310、一个或更多个l1高速缓存或gpc 208内的高速缓存。
47.在图形和计算应用程序中,可以配置gpc 208,使每个sm 310耦合到纹理单元315,以执行纹理映射操作,例如确定纹理采样位置、读取纹理数据和过滤纹理数据。
48.在操作中,每个sm 310将经处理的任务发送到工作分配交叉开关330,以便将经处理的任务提供给另一gpc 208以进行进一步处理,或将经处理的任务存储在l2高速缓存(未示出)、并行处理存储器204中或经由交叉开关单元210存储在系统存储器104中。此外,预光栅操作(“prerop”)单元325被配置为接收来自sm 310的数据,将数据定向到分区单元215中的一个或更多个光栅操作(rop)单元,执行颜色混合的优化,组织像素颜色数据,并执行地址转换。
49.应理解,本文描述的核心架构是说明性的,并且可以进行变型和修改。除其他事项外,gpc 208中可包括任意数量的处理单元,诸如sm 310、纹理单元315或prerop单元325。此外,如上结合图2所述,ppu 202可以包括任意数量的gpc 208,这些gpc 208被配置为在功能上彼此相似,使得执行行为不依赖于哪个gpc 208接收特定的处理任务。此外,每个gpc 208独立于ppu 202中的其他gpc 208操作,以执行一个或更多个应用程序的任务。鉴于上述情况,本领域普通技术人员应理解,图1-图3中描述的架构绝不限制本公开的各个实施例的范围。
50.请注意,如在此使用的,对共享存储器的引用可以包括任何一个或更多个技术上可行的存储器,包括但不限于由一个或更多个sm 310共享的本地存储器或经由存储器接口214可访问的存储器,如高速缓存存储器、并行处理存储器204或系统存储器104。还请注意,如本文所使用的,对高速缓存存储器的引用可以包括任何一个或更多个技术上可行的存储器,包括但不限于l1高速缓存、l1.5高速缓存和l2高速缓存。
51.管理具有每扇区驻留控件的高速缓存存储器
52.各种实施例包括用于管理计算系统中的扇区化的高速缓存存储器的技术,其中高速缓存存储器具有每扇区高速缓存驻留控件。扇区化的高速缓存存储器为软件应用程序提供了一种以比整个高速缓存行更细的粒度使存储在高速缓存存储器中的数据项无效的机制。在所公开的技术之前,如果软件应用程序将数据项存储在显著小于高速缓存行大小的高速缓存存储器中,则软件应用程序可能无法利用高速缓存行无效。为了以随机顺序使各个项目无效,软件应用程序可以生成跟踪数据结构来跟踪每个高速缓存行上的各个数据项的有效性。当软件应用程序确定给定高速缓存行上的所有数据项都已无效时,软件应用程序可以使整个高速缓存行无效。然而,这种跟踪数据结构本身会消耗额外的高速缓存容量和存储器传输带宽,这抵消了通过失效进行显式高速缓存容量管理的一些好处。
53.相比之下,所公开的技术为软件应用程序提供了一种机制,以在逐个扇区的基础上直接使存储在高速缓存存储器中的数据项无效,其中扇区小于高速缓存行。当高速缓存行中的所有扇区都已失效时,高速缓存行本身会隐式失效,从而释放高速缓存行以重新分配用于其他目的。在要无效的数据项可以与扇区边界对齐的情况下,所公开的技术有效地使用高速缓存标志存储器中的每扇区有效和/或脏位作为软件应用程序否则必须单独管理的跟踪结构。因此,所公开的技术由此实现了用于使小于高速缓存行的各个数据项无效的低开销解决方案,而无需管理额外的跟踪数据结构并且不消耗额外的存储器传输带宽。
54.所公开的技术还包括用于通过单个事务使扇区序列无效的机制。此外,所公开的技术包括用于从高速缓存存储器加载扇区作为原子操作的一部分、使扇区无效以作为同一原子操作的一部分,以及将数据返回给执行程序的机制。这种机制消除了对单独的加载和无效操作的需要。取决于用例,这种机制还可以消除在无效扇区之间执行排序操作(例如存
储器屏障)以及随后为其他目的重新分配扇区的需要。
55.图4是根据各种实施例的包括在图1的cpu 102和/或图2的ppu 202中的高速缓存存储器系统400的框图。如图所示,高速缓存存储器系统400包括但不限于后备存储区410、高速缓存存储器420、高速缓存标志存储器430、下一级高速缓存存储器440和高速缓存控制器470。
56.高速缓存存储器420可以包括本文描述的任何一个或更多个技术上可行的存储器,包括但不限于l1高速缓存、l1.5高速缓存或l2高速缓存。高速缓存存储器420维护从后备存储区410加载的高速缓存行422。
57.后备存储区410可包括本文所述的任何一个或更多个技术上可行的存储器,包括但不限于系统存储器104或pp存储器204。另外或备选地,后备存储区410可包括相对于高速缓存存储器420远离cpu 102和/或ppu 202的高速缓存存储器。在一些示例中,高速缓存存储器420可以是l2高速缓存并且后备存储区410可以是系统存储器104或pp存储器204。高速缓存存储器420可以是l1.5高速缓存,后备存储区410可以是l2高速缓存。高速缓存存储器420可以是l1高速缓存,并且后备存储区410可以是l1.5高速缓存,等等。
58.除非高速缓存存储器420是最靠近cpu 102和/或ppu 202的高速缓存存储器,否则下一级高速缓存存储器440包括相对于高速缓存存储器420更靠近cpu 102和/或ppu 202的高速缓存存储器。在一些示例中,高速缓存存储器420可以是l2高速缓存并且下一级高速缓存存储器440可以是l1.5高速缓存。高速缓存存储器420可以是l1.5高速缓存,并且下一级高速缓存存储器440可以是l1高速缓存,等等。
59.在操作中,高速缓存控制器470管理高速缓存存储器420。高速缓存控制器470向高速缓存存储器420的高速缓存行422或其部分加载从后备存储区410加载的数据。通常,高速缓存控制器470在处理单元使用时或就在处理单元使用时之前,加载高速缓存存储器420的高速缓存行422或其部分。总的来说,高速缓存存储器420包括n+1高速缓存行422、编号高速缓存行422(0)、高速缓存行422(1)、高速缓存行422(2)、
…
高速缓存行422(n)。每个高速缓存行422包括四个扇区,分别存储在扇区0存储器424(0)、扇区1存储器424(1)、扇区2存储器424(2)和扇区3存储器424(3)中。更一般地,每个高速缓存行422可以包括任何技术上可行数量的扇区。在一些示例中,每个高速缓存行422中的扇区数量是2的幂,例如每个高速缓存行422两个扇区、每个高速缓存行422四个扇区、每个高速缓存行422八个扇区,等等。当加载高速缓存行422时,高速缓存控制器470可以加载高速缓存行的单个扇区存储器424或者可以加载高速缓存行422的2个、3个或所有4个扇区存储器。
60.在一些示例中,每个高速缓存行422包括128字节并且每个高速缓存行422包括四个扇区,导致每个高速缓存行422的128字节除以每个高速缓存行422的四个扇区,等于每个扇区32字节。后备存储区410和高速缓存存储器420之间的通信通道450可以具有与扇区相同的数据宽度,即32字节。
61.为了在高速缓存行422中加载一个或更多个扇区存储器424,高速缓存控制器470从软件应用程序的虚拟地址空间内的虚拟地址开始。高速缓存控制器470将虚拟地址划分为多个部分,包括高速缓存行标志、扇区号和扇区偏移。扇区号和扇区偏移一起形成高速缓存行偏移。对于具有128(或27)字节的高速缓存行422的高速缓存存储器420,高速缓存行偏移是虚拟地址的七个最低有效位(lsb)。相应地,在一些示例中,高速缓存行标志是虚拟地
址中除了七个lsb之外的部分。对于具有由四个(或22个)扇区组成的高速缓存行422的高速缓存存储器420,高速缓存行偏移的两个最高有效位(msb)是扇区号。此外,由于每个扇区包括32(或25)个字节,扇区偏移量是高速缓存行偏移量的五个lsb。
62.如果正在加载整个高速缓存行422,则高速缓存控制器470通过通信通道450生成四个加载事务以检索每个32字节的四个扇区并将这四个扇区存储在高速缓存行422的四个扇区存储器424中。如果正在加载高速缓存行422的单个扇区,则高速缓存控制器470将寻址后备存储区410中128个字节的开头的物理地址与2位扇区号组合以识别后备存储区410中的扇区的地址的开头。高速缓存控制器470通过通信通道450生成单个加载事务以检索32字节扇区并将该扇区存储在高速缓存行422的相应扇区存储器424中。以这种方式,高速缓存控制器470可以通过分别生成两个32字节加载事务或三个32字节加载事务来加载高速缓存行的两个或三个扇区。高速缓存控制器470将高速缓存行标志连同状态指示符一起存储在高速缓存标志存储器430中,以指示所加载的扇区是有效且干净的(非脏的)。当处理单元随后访问一个或更多个有效扇区中包含的数据时,存储器管理访问高速缓存标志存储器430中的高速缓存行标志以通过通信通道452访问高速缓存行422的对应扇区存储器424。类似地,下一级高速缓存存储器440可以通过在通信通道454上生成加载事务以将来自高速缓存存储器420的数据加载到下一级高速缓存存储器440中来加载整个高速缓存行或其扇区。
63.图5是根据各种实施例的图4的高速缓存标志存储器430的框图。如图所示,高速缓存标志存储器430包括但不限于n+1个高速缓存行标志510、编号高速缓存行标志510(0)、高速缓存行标志510(1)、高速缓存行标志510(2)、...,高速缓存行标志510(n)。在一些示例中,高速缓存行标志510与高速缓存存储器420中的高速缓存行422具有一一对应关系。在这样的示例中,高速缓存行标志510(0)对应于高速缓存行422(0),高速缓存行标志510(1)对应于高速缓存行422(1),高速缓存行标志510(2)对应于高速缓存行422(2),依此类推。附加地或替代地,高速缓存行标志510与高速缓存存储器420中的高速缓存行422不具有一一对应关系。在这样的示例中,每个高速缓存行标志510可以对应于高速缓存存储器420中的任何高速缓存行422。每个高速缓存行标志510与一个高速缓存行地址(图5中未显示)相关联,该高速缓存行地址标识与相应高速缓存行标志510相关联的高速缓存行422。
64.每个高速缓存行标志510与由高速缓存行标志510表示的每个扇区的状态指示符相关联。在特定示例中,高速缓存行标志510(0)与扇区0有效指示符522(0)和扇区0脏指示符523(0)相关联。高速缓存行标志510(0)还与扇区1有效指示符524(0)和扇区1脏指示符525(0)相关联。高速缓存行标志510(0)还与扇区2有效指示符526(0)和扇区2脏指示符527(0)相关联。高速缓存行标志510(0)还与扇区3有效指示符528(0)和扇区3脏指示符529(0)相关联。高速缓存标志存储器430中的其他高速缓存行标志510分别与扇区0、1、2和3的有效指示符和脏指示符相关联。
65.合起来,有效指示符和脏指示符指示对应扇区的三个潜在状态条件之一。首先,如果有效指示符指示该扇区无效,则无论脏指示符的状态如何,都不能依赖存储在相应扇区存储器424中的数据。因此,当软件应用程序访问这样的无效扇区时,从后备存储区410中检索对应于无效扇区的数据。其次,如果有效指示符指示该扇区是有效的并且脏指示符指示该扇区是干净的(即,不脏),则高速缓存行422的相应扇区存储器424包含有效数据。此外,数据是干净的,表示处理单元尚未将新数据写入尚未写入后备存储区410的扇区存储器。第
三,如果有效指示符指示扇区有效并且脏指示符指示如果该扇区是脏的,则高速缓存行422的相应扇区存储器424包含有效数据。然而,扇区存储器中的数据包括尚未写入后备存储区410的新数据。因此,扇区存储器424中的数据与后备存储区410中的相应数据不匹配。在将来的某个时间,高速缓存控制器470将来自高速缓存存储器420的有效的脏扇区写入后备存储区410,使得后备存储区410中的数据与扇区存储器424中的数据相匹配。直到写回发生,当访问相应数据时,处理单元访问高速缓存行422的扇区存储器424,以确保处理单元访问数据的更新版本。
66.当高速缓存控制器470最初从后备存储区410加载高速缓存行422的扇区存储器424时,高速缓存控制器470修改高速缓存标志存储器430中的相应状态指示符以指示该扇区是有效且干净的。如果处理单元将新的和/或更新的数据存储到扇区的一个或更多个字节,则高速缓存控制器470修改高速缓存标志存储器430中的脏指示符以指示该扇区有效且脏。高速缓存控制器470调度该扇区以在未来时间对后备存储区410进行回写操作。通常,包含脏数据的高速缓存行422的无效意味着在无效发生之前将脏数据写回或刷新到后备存储区410。没有首先将脏数据写入后备存储区410的无效会导致数据不一致,其中高速缓存行422中的脏数据永久丢失。但是,在软件应用程序明确指示不再需要脏数据并且可以丢弃的情况下,这种不一致可能是可以接受的。
67.更具体地,刷新脏数据和/或使脏数据无效可以通过各种技术来实现。在第一种技术中,高速缓存行422和/或其扇区中的脏数据在失效之前被刷新到后备存储区410。在第二技术中,包括脏数据的高速缓存行422和/或其扇区被无效,而不将高速缓存行422和/或扇区刷新到后备存储区410。在第三技术中,高速缓存行422中的脏数据和/或其扇区,在无效之前被刷新到后备存储区410,其中经由原子操作执行刷新和无效。在第四种技术中,将数据从后备存储区加载到高速缓存行422和/或其扇区中,并且使高速缓存行422和/或扇区无效,其中经由原子操作执行加载和无效,如本文所述。在一些示例中,如果数据在存储器系统中的一个级别的相干点小于或等于高速缓存存储器420的当前级别,或者如果数据的生命周期已经到期,并且如果该条件适用于整个高速缓存行422和/或扇区,则可以使该高速缓存行422和/或扇区无效,而无需首先刷新高速缓存行422和/或扇区中包含的脏数据。
68.在一些情况下,软件应用程序可以确定存储在存储器地址范围中的数据不再被软件应用程序需要。结果,存储存储器范围内的数据的高速缓存行422中的扇区存储器424可以被释放并被重新分配用于其他目的。为了释放这些扇区,软件应用程序发出指令以指示指定的存储器地址范围无效。通过指示指定的存储器地址范围无效,软件应用程序同意存储在存储器地址范围内的数据不再可靠地保存软件应用程序先前访问的数据。在检测到该指令时,高速缓存控制器470确定高速缓存存储器420中的哪些扇区存储器424存储指定地址范围内的数据。对于每个这样的扇区存储器424,高速缓存控制器470修改有效指示符和/或脏指示符以禁止将扇区存储器424中的数据写回到后备存储区410。
69.高速缓存控制器470可以通过至少两种技术禁止将扇区存储器424中的数据写回到后备存储区410。在第一种技术中,高速缓存控制器470修改有效指示符以将扇区识别为无效。因此,软件应用程序不能依赖于存储在相应扇区存储器424中的任何数据。因为扇区存储器424中的数据是无效的,所以扇区存储器424不被写入后备存储区410。使用该第一种技术,软件应用程序和高速缓存标志存储器430将扇区存储器424中的数据识别为无效。在
第二种技术中,高速缓存控制器470修改脏指示符以指示扇区中的数据是干净的并且保持有效指示符不变。因为扇区中的数据被识别为干净的,所以扇区存储器424不被写入后备存储区410。利用第二种技术,软件应用程序将扇区存储器424中的数据识别为无效,但是高速缓存标志存储器430将扇区存储器424中的数据识别为有效且干净。即使如此,软件应用程序也不依赖扇区存储器424中的数据,因为软件应用程序认为数据无效。此外,高速缓存控制器470禁止将扇区存储器424中的数据写回到后备存储区410,因为高速缓存控制器470认为数据是干净的。因此,该第二种技术的结果与第一种技术等效。对于每种技术,软件应用程序不依赖于存储在受影响的扇区存储器424中的数据,并且高速缓存控制器470禁止将扇区存储器424中的数据写回到后备存储区410。
70.为了利用每扇区无效,软件应用程序可以将数据项打包到整数个扇区中。软件应用程序可以将单个数据项放入单个扇区。附加地或替代地,软件应用程序可以将多个相关数据项放置到单个扇区中。附加地或替代地,软件应用程序可以将单个数据项或多个相关数据项放入整数个扇区中,例如两个扇区、三个扇区、四个扇区等等。为了使一个数据项或多个相关数据项无效,软件应用程序发出指令以使地址范围无效,该地址范围包括包含要无效的数据项的扇区。作为响应,高速缓存控制器470修改对应扇区存储器424的状态指示符以防止扇区存储器424回写到后备存储区410到后备存储区。以这种方式,软件应用程序有效地维护数据项和扇区之间的映射,而不必维护单独的跟踪数据结构,即使扇区以随机顺序和/或明显随机顺序被无效。尽管每个数据项可以具有任意大小,但是当被无效的数据项的大小接近整数个扇区时,可以实现效率。
71.通常,包含脏数据的有效扇区可以在任何时间以任何组合和/或顺序存储到后备存储区410,并标记为干净。如果不再需要扇区中的脏数据,则可以将该扇区标记为无效或有效且干净,从而禁止将脏数据写回后备存储区410。高速缓存行422的各个扇区可以因此在不同的时间点以任何组合和/或顺序标记。因此,高速缓存行422的各个扇区可以由不同的异步代理标记,例如由在ppu 202内的不同sm 310上执行的不同线程标记。高速缓存标志存储器430中的现有扇区有效位可以跟踪每个高速缓存行422的哪些单独扇区已被无效和/或标记为有效和干净,以及每个高速缓存行422的哪些单独扇区被标记为有效和脏。
72.每扇区无效还与高速缓存行逐出和重新分配策略兼容。由于软件应用程序和高速缓存控制器470使各个扇区无效,特定的高速缓存行422可以以任意组合包括无效扇区、有效干净扇区和有效脏扇区。只要高速缓存行422具有至少一个有效的脏扇区,那么在逐出高速缓存行422之前和在重新分配高速缓存行422用于不同目的和/或具有不同的高速缓存行标志510之前,高速缓存行422被写回至后备存储区410。高速缓存行422可以仅包括无效扇区和有效的干净扇区,因为高速缓存行的扇区在第一实例中未被加载,高速缓存行的扇区被加载但未被处理单元更新,和/或如本文所述使高速缓存行的扇区无效,以任何组合。一旦高速缓存行422仅包括无效扇区和/或有效的干净扇区,高速缓存控制器470就可以逐出高速高速缓存行422而不回写到后备存储区410。高速缓存控制器470可以在确定要逐出哪些高速缓存行422时利用每扇区无效来实现高速缓存行逐出和替换策略。在这方面,高速缓存控制器470可以优选地选择高速缓存行422用于逐出,其仅包括高速缓存行422上的无效扇区和/或有效清洁扇区,该高速缓存行422包括至少一个有效脏扇区。当逐出包括至少一个有效脏扇区的高速缓存行422时,高速缓存控制器470可以将回写限制为仅有效和脏的扇
区。
73.在一些示例中,存储器系统可以包括实现本文描述的技术的任意数量的多个高速缓存存储器。例如,实现所公开技术的l1高速缓存可以耦合到也实现所公开技术的l2高速缓存。在这种情况下,l1高速缓存可以具有带有特定高速缓存行标记的高速缓存行,而l2高速缓存也可以具有带有相同的特定高速缓存行标记的高速缓存行。l1高速缓存中的高速缓存行和l2高速缓存中的高速缓存行在各自的高速缓存存储器中可以处于相同的相对位置,也可以不处于相同的相对位置。进一步地,l1高速缓存中的高速缓存行的扇区和l2高速缓存中的高速缓存行的对应扇区可以具有相同的状态指示符,也可以具有不同的状态指示符,可以任意组合。
74.此外,l1高速缓存中的高速缓存行和l2高速缓存中的高速缓存行可以具有相同的字节数和/或相同的扇区大小,或者可以具有不同的字节数和/或不同的扇区大小,以任何组合。在这方面,一个高速缓存存储器中的高速缓存行可以映射到另一个高速缓存存储器中的多个高速缓存行,反之亦然。此外,一个高速缓存存储器中的多个高速缓存行可以以任意组合存储来自另一高速缓存存储器中的给定高速缓存行的一个或更多个相同扇区。
75.在一些示例中,软件应用程序可以通过指定扇区的基地址和将要无效的整数个扇区来发出命令来使一组连续的扇区无效。该一组连续的扇区可以在单个高速缓存行422中或者可以跨越两个或更多个高速缓存行422。在第一示例中,软件应用可以发出命令,该命令指定高速缓存行422的扇区0的基地址并指定三个扇区是无效的。作为响应,高速缓存控制器470使高速缓存行422的扇区0存储器424(0)、扇区1存储器424(1)和扇区2存储器424(2)无效,但使高速缓存行422的扇区3存储器424(3)保持原样。
76.在第二示例中,软件应用程序可以发出指定高速缓存行422的扇区3的基地址并指定三个扇区无效的命令。作为响应,高速缓存控制器470执行两个无效操作。这两个无效操作可以是原子的或非原子的。第一无效操作使高速缓存行422的扇区3存储器424(3)无效并且使高速缓存行422的剩余扇区存储器424保持原样。第二无效操作利用与第一无效操作的高速缓存行标志510连续的高速缓存行标志510来识别高速缓存行422。第二无效操作使连续高速缓存行422的扇区0存储器424(0)和扇区1存储器424(1)无效并且使连续高速缓存行422的剩余扇区存储器424保持原样。
77.在一些示例中,软件应用程序可以发出单个原子指令,该指令执行单个扇区的加载操作并使该扇区作为一个未划分的操作无效。在一个示例中,加载操作将32字节扇区从高速缓存存储器420加载到包括在处理单元中的八个4字节寄存器。这种指令的一个示例用例是软件应用程序将大数据块加载到存储器中,然后以随机顺序和/或明显随机顺序对大数据块内的扇区执行一次读取操作。因为每个扇区在加载操作之后和原子操作完成之前都无效,所以一旦同一高速缓存行上的所有其他扇区也可以重新分配,则被无效的扇区就有资格进行重新分配。如果没有这样的指令,软件应用程序通常会分别发出加载操作和无效操作。随后,软件应用程序将发出存储器排序指令,例如存储器屏障,以确保先前的无效操作已经完成并且可以重新分配扇区。加载和无效原子指令访问高速缓存存储器420一次,而不是对于两次单独的指令访问两次,从而将存储器传输带宽减少一半。此外,取决于用例,单个加载和无效原子指令可以消除执行存储器屏障或其他存储器排序指令的需要。
78.应当理解,这里所示的系统是说明性的并且变化和修改是可能的。在此描述的技
术是在具有128字节的高速缓存行422和每个高速缓存行422的四个32字节的扇区存储器424的高速缓存存储器420的上下文中。然而,所公开的技术可以与任何大小的高速缓存行422、每个高速缓存行422的任何数量的扇区和/或任何大小的扇区存储器424一起使用。本文描述的技术可以以任何组合应用于高速缓存存储器系统中的任何一个或更多个高速缓存级别。在这方面,每个高速缓存级别的高速缓存行大小、扇区数量和扇区存储器大小可以以任何组合彼此相同或不同。本文描述的技术在包括一个或更多个存储器管理单元(mmu)和高速缓存控制器470的计算机系统100的上下文中。在这方面,后备存储区410、高速缓存存储器420和/或下一级高速缓存存储器440可以通过任何技术上可行的虚拟地址空间和/或物理存储器空间来访问。一个或更多个mmu可以根据需要执行任何虚拟地址到物理地址的转换和/或物理地址到虚拟地址的转换。更一般地,在本公开的范围内,无论用于访问后备存储区410、高速缓存存储器420和/或下一级高速缓存存储器440的特定地址空间如何,都可以执行所公开的技术。
79.本文描述的技术是在后备存储区410和高速缓存存储器420之间的通信通道450的上下文中,通信通道450具有与扇区存储器424相同的数据宽度,即,32字节。然而,后备存储区410和高速缓存存储器420之间的通信通道450可以具有任何大小的数据宽度,包括比扇区存储器424具有更少字节的数据宽度或具有比扇区存储器424更多字节的数据宽度。类似地,高速缓存存储器420和下一级高速缓存存储器430之间的通信通道454可以具有任何大小的数据宽度,包括比扇区存储器424具有更少字节的数据宽度或具有比扇区存储器424更多字节的数据宽度。此外,本文描述的技术可以以任何组合应用于任何cpu 102、ppu 202和/或任何其他处理单元。
80.图6是根据各种实施例的用于管理诸如图1的cpu 102和/或图2的ppu 202之类的处理单元的高速缓存存储器的方法步骤的流程图。附加地或替代地,方法步骤可以由一个或更多个替代加速器执行,包括但不限于cpu、gpu、ipu、npu、tpu、nnp、dpu、vpu、asic、fpga和/或类似物,以任何组合。尽管结合图1-5的系统描述了方法步骤,但是本领域普通技术人员将理解,被配置为以任何顺序执行方法步骤的任何系统都在本公开的范围内。
81.如图所示,方法600开始于步骤602,其中高速缓存控制器470检测由软件应用程序发出的使高速缓存存储器中的一个或更多个扇区无效的命令。在一些示例中,软件应用程序可以发出指示指定存储器地址范围无效的指令。通过指示指定的存储器地址范围无效,软件应用程序同意存储在存储器地址范围内的数据不再可靠地保存软件应用程序先前访问的数据。存储器地址范围可以包括在单个高速缓存行422中的扇区或跨越两个或更多个高速缓存行422的扇区。在一些示例中,软件应用程序可以通过指定扇区的基地址和将要无效的整数个扇区来发出命令以使一组顺序扇区无效。该组顺序扇区可以在单个高速缓存行422中或可以跨越两个或更多高速缓存行422。
82.在步骤604,高速缓存控制器470确定扇区的位置。如果高速缓存控制器470正在处理要被无效化的第一扇区,则高速缓存控制器470基于在由软件应用发出的指令中指定的虚拟地址来确定高速缓存行标志510。高速缓存控制器470将虚拟地址划分为多个部分,包括高速缓存行标志510、扇区号和扇区偏移。扇区号和扇区偏移一起形成高速缓存行偏移。对于具有128字节(或27字节)的高速缓存行422的高速缓存存储器420,高速缓存行偏移是虚拟地址的七个最低有效位(lsb)。相应地,高速缓存行标志510是虚拟地址中除了七个lsb
之外的部分。对于具有由四个(或22个)扇区组成的高速缓存行422的高速缓存存储器420,高速缓存行偏移的两个最高有效位(msb)是扇区号。此外,因为每个扇区包括32个字节(或25个字节),所以扇区偏移量是高速缓存行偏移量的五个lsb。
83.高速缓存控制器470在高速缓存标志存储器430中查找高速缓存行标志510,以便确定高速缓存存储器420中包括扇区的高速缓存行422。高速缓存控制器470基于扇区号识别高速缓存行422内的扇区存储器424。
84.在步骤606,高速缓存控制器470通过两种技术之一修改扇区的状态指示符。在第一种技术中,高速缓存控制器470修改有效指示符以将扇区识别为无效。因此,软件应用程序不能依赖于存储在相应扇区存储器424中的任何数据。因为扇区存储器424中的数据是无效的,所以扇区存储器424不被写入后备存储区410。使用第一种技术,软件应用程序和高速缓存标志存储器430将扇区存储器424中的数据识别为无效。在第二种技术中,高速缓存控制器470修改脏指示符以指示扇区中的数据是干净的并且保持有效指示符不变。因为扇区中的数据被识别为干净的,所以扇区存储器424不被写入后备存储区410。利用第二种技术,软件应用程序将扇区存储器424中的数据识别为无效,但是高速缓存标志存储器430将扇区存储器424中的数据识别有效且干净。即使如此,软件应用程序也不依赖扇区存储器424中的数据,因为软件应用程序认为数据无效。此外,高速缓存控制器470禁止将扇区存储器424中的数据回写到后备存储区410,因为高速缓存控制器470认为数据是干净的。因此,该第二种技术的结果与第一种技术等效。对于每种技术,软件应用程序不依赖于存储在受影响的扇区存储器424中的数据,并且高速缓存控制器470禁止将扇区存储器424中的数据写回到后备存储区410。
85.在步骤608,高速缓存控制器470确定同一高速缓存行422中的附加扇区是否要无效。如果软件应用程序发出的指令指示指定的存储器地址范围无效,则高速缓存控制器470确定存储器地址范围是否包括具有比当前被无效扇区更高的存储器地址的扇区。如果软件应用程序发出的指令指示基存储器地址和若干扇区,则高速缓存控制器470确定当前扇区是否是要无效的若干扇区中的最后一个扇区。在任一情况下,高速缓存控制器470进一步确定下一个要无效的扇区是否与当前扇区在同一高速缓存行422中。通常,除非当前扇区是高速缓存行422的最后一个扇区,否则下一个要无效的扇区与当前扇区在同一高速缓存行422中。如果要使同一高速缓存行422中的其他扇区无效,则方法600进行到如上所述的步骤606。
86.然而,如果同一高速缓存行422中的附加扇区不被无效,则方法600前进到步骤610,在该步骤中高速缓存控制器470确定不同高速缓存行422中的附加扇区是否要被无效。如果软件应用程序发出的指令指示指定的存储器地址范围无效,则高速缓存控制器470确定存储器地址范围是否包括具有比当前被无效扇区更高的存储器地址的扇区。如果软件应用程序发出的指令指示基存储器地址和若干扇区,则高速缓存控制器470确定当前扇区是否是要无效的若干扇区中的最后一个扇区。在任一情况下,高速缓存控制器470进一步确定下一个要无效的扇区与当前扇区在不同的高速缓存行422中。通常,如果当前扇区是高速缓存行422的最后一个扇区,则下一个要无效的扇区与当前扇区在不同的高速缓存行422中。如果要使不同高速缓存行422中的附加扇区无效,则方法600进行到如上所述的步骤604。
87.在这样做时,高速缓存控制器470通过用与包括当前扇区的高速缓存行标志510连
续的高速缓存行标志510来识别高速缓存行422来确定下一个要无效的扇区的位置。下一个要无效的扇区的位置是高速缓存行422的第一个扇区,其具有与包括当前扇区的高速缓存行标志510连续的高速缓存行标志510。
88.返回到步骤610,如果不同高速缓存行422中的附加扇区没有要被无效的,则方法600终止。或者,方法600进行到步骤602以检测使高速缓存存储器中的附加扇区无效的附加指令。
89.总之,各种实施例包括用于管理包括扇区化的高速缓存存储器的计算系统中的高速缓存存储器的技术。扇区化的高速缓存存储器为软件应用程序提供了一种以比整个高速缓存行更细的粒度使存储在高速缓存存储器中的数据项无效的机制。在所公开的技术之前,如果软件应用程序将数据项存储在显着小于高速缓存行的大小的高速缓存存储器中,则软件应用程序可能无法利用高速缓存行无效。为了以随机顺序使各个项目无效,软件应用程序可以生成跟踪数据结构来跟踪每个高速缓存行上各个数据项的有效性。当软件应用程序确定给定高速缓存行上的所有数据项都已无效时,软件应用程序可以使整个高速缓存行无效。然而,这种跟踪数据结构本身会消耗额外的高速缓存容量和存储器传输带宽,这抵消了通过无效进行显式高速缓存存储器容量管理的一些好处。
90.相比之下,所公开的技术为软件应用程序提供了一种机制,以在逐个扇区的基础上直接使存储在高速缓存存储器中的数据项无效,其中扇区小于高速缓存行。当高速缓存行中的所有扇区都已失效时,高速缓存行本身会隐式失效,从而释放高速缓存行以重新分配用于其他目的。在要无效的数据项可以与扇区边界对齐的情况下,所公开的技术有效地使用高速缓存标志存储器中的每扇区有效和/或脏位作为软件应用程序否则必须单独管理的跟踪结构。因此,所公开的技术由此实现了用于使小于高速缓存行的各个数据项无效的低开销解决方案,而无需额外的跟踪数据结构或消耗额外的存储器传输带宽。
91.所公开的技术还包括用于通过单个事务使扇区序列无效的机制。此外,所公开的技术包括用于从高速缓存存储器加载扇区作为原子操作的一部分、使扇区无效作为同一原子操作的一部分以及将数据返回给执行程序的机制。这种机制消除了对单独的加载和无效操作的需要,并且还可以消除在无效扇区之间执行排序操作(例如存储器屏障)以及随后为其他目的重新分配扇区的需要。
92.所公开的技术相对于现有技术的至少一个技术优势在于,利用所公开的技术,高速缓存存储器可以在比整个高速缓存行更精细的分辨率下使高速缓存存储器无效。结果,相对于只能使整个高速缓存行无效的先前方法,脏高速缓存行的回写减少了,从而提高了高速缓存存储器性能以及更快地执行软件应用程序。这些优点代表了对现有技术方法的一项或更多项技术改进。
93.以任何方式记载在任何权利要求中的任何权利要求元素和/或本技术中描述的任何元素的任何和所有组合均落入本公开和保护的范围内。
94.出于说明目的已经呈现了各个实施例的描述,但并不意图穷尽为或限制为所公开的实施例。在不偏离所述实施例的范围和精神的情况下,对于本领技术人员来讲,许多修改和变化将是显而易见的。
95.本实施例的方面可体现为系统、方法或计算机程序产品。因此,本公开的方面可采取完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)或组合软件和硬件方
面的实施例的形式,本文中全部统称为“模块”或“系统”。此外,本公开的方面可采用一种或多种计算机可读介质中体现的计算机程序产品的形式,该计算机可读介质上包含计算机可读程序代码。
96.可以使用一种或更多种计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。例如,计算机可读存储介质包括但不限于电子、磁、光、电磁、红外或半导体系统、装置或设备,或上述任何适当的组合。计算机可读存储介质的更具体的示例(非穷尽列举)可包括:具有一根或更多根电线的电气连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、光纤、便携式光盘只读存储器(cd-rom)、光存储设备、磁存储设备或上述任何合适的组合。在本文档的上下文中,计算机可读存储介质可以是任何有形介质,其可以包括或存储程序,以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合使用。
97.本公开的方面参照根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图进行了描述。应理解,流程图和/或框图中的每个框,以及流程图和/或框图中的框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令使得能够实现流程图和/或框图的一个或更多个框中指定的功能/动作。此类处理器可以是但不限于通用处理器、专用处理器、特定于应用程序的处理器或现场可编程门阵列。
98.图中的流程图和框图示出了根据本公开的各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这方面,流程图或框图中的每个框可以表示代码的模块、段或部分,代码包括用于实现一个或更多个指定逻辑功能的一个或更多个可执行指令。还应指出,在一些替代实施例中,框中指出的功能可不按图中指出的顺序发生。例如,连续显示的两个框实际上可以大致同时执行,或者这些框有时可以相反的顺序执行,这取决于所涉及的功能。还应注意,框图和/或流程图中的每个框,以及框图和/或流程图中框的组合,可以由基于专用硬件的系统实现,该基于专用硬件的系统执行指定功能或动作或专用硬件和计算机指令的组合。
99.虽然前述内容是针对本公开的实施例,本公开的其他和进一步实施例可以在不偏离其基本范围的情况下设计,其范围由所附权利要求确定。
技术特征:
1.一种用于管理计算系统中的高速缓存存储器的计算机实现的方法,所述方法包括:检测使高速缓存存储器的第一高速缓存行中的第一扇区无效的指令;确定所述第一扇区在所述高速缓存存储器中的位置;基于所述位置识别与所述第一扇区相关联的第一状态指示符;以及修改所述第一状态指示符以生成修改后的第一状态指示符,同时保持用于所述第一高速缓存行中的第二扇区的状态指示符,其中所述修改后的第一状态指示符使所述第一扇区无效。2.根据权利要求1所述的计算机实现的方法,其中所述指令包括要被无效的存储器地址范围,并且所述方法还包括:确定所述存储器地址范围包括与所述第二扇区相关联的存储器地址;以及修改与所述第二扇区相关联的第二状态指示符,其中所述第二状态指示符使所述第二扇区无效。3.根据权利要求1所述的计算机实现的方法,其中所述指令包括第一存储器地址和要被无效的若干扇区,并且所述方法还包括:确定所述第二扇区包括在所述若干扇区中;以及修改与所述第二扇区相关联的第二状态指示符,所述第二状态指示符使所述第二扇区无效。4.根据权利要求1所述的计算机实现的方法,其中所述指令包括要被无效的存储器地址范围,并且所述方法还包括:确定所述存储器地址范围包括与所述高速缓存存储器的第二高速缓存行中的第三扇区相关联的存储器地址;以及修改与所述第三扇区相关联的第二状态指示符,其中所述第二状态指示符使所述第三扇区无效。5.根据权利要求1所述的计算机实现的方法,其中所述指令包括第一存储器地址和要被无效的若干扇区,并且所述方法还包括:确定所述高速缓存存储器的第二高速缓存行中的第三扇区包括在所述若干扇区中;以及修改与所述第三扇区相关联的第二状态指示符,所述第二状态指示符使所述第三扇区无效。6.根据权利要求1所述的计算机实现的方法,其中修改所述第一状态指示符包括修改与所述第一扇区相关联的指示符以指示所述第一扇区包含无效数据。7.根据权利要求1所述的计算机实现的方法,其中修改所述第一状态指示符包括修改与所述第一扇区相关联的指示符以指示所述第一扇区不包含要存储在后备存储区中的数据。8.根据权利要求1所述的计算机实现的方法,其中所述第一高速缓存行包括128字节,并且包括在所述第一高速缓存行中的每个扇区包括32字节。9.根据权利要求1所述的计算机实现的方法,其中所述高速缓存存储器包括一级l1高速缓存、1.5级l1.5高速缓存或二级l2高速缓存。10.根据权利要求1所述的计算机实现的方法,其中所述指令包括原子操作,所述原子
操作将数据从所述第一扇区原子地加载到一个或更多个寄存器,同时修改与所述第一扇区相关联的所述第一状态指示符。11.根据权利要求1所述的计算机实现的方法,其中所述指令由软件应用程序发出。12.一种系统,包括:高速缓存存储器;和高速缓存控制器,其耦合到所述高速缓存存储器并被配置为:检测使高速缓存存储器的第一高速缓存行中的第一扇区无效的指令;确定所述第一扇区在所述高速缓存存储器中的位置;基于所述位置识别与所述第一扇区相关联的第一状态指示符;以及修改所述第一状态指示符以生成修改后的第一状态指示符,同时保持用于所述第一高速缓存行中的第二扇区的状态指示符,其中所述修改后的第一状态指示符使所述第一扇区无效。13.根据权利要求12所述的系统,其中所述指令包括要被无效的存储器地址范围,并且其中所述高速缓存控制器还被配置为:确定所述存储器地址范围包括与所述第二扇区相关联的存储器地址;以及修改与所述第二扇区相关联的第二状态指示符,其中所述第二状态指示符使所述第二扇区无效。14.根据权利要求12所述的系统,其中所述指令包括第一存储器地址和要被无效的若干扇区,并且其中所述高速缓存控制器还被配置为:确定所述第二扇区被包括在所述若干扇区中;以及修改与所述第二扇区相关联的第二状态指示符,其中所述第二状态指示符使所述第二扇区无效。15.根据权利要求12所述的系统,其中所述指令包括要被无效的存储器地址范围,并且其中所述高速缓存控制器还被配置为:确定所述存储器地址范围包括与所述高速缓存存储器的第二高速缓存行中的第三扇区相关联的存储器地址;以及修改与所述第三扇区相关联的第二状态指示符,其中所述第二状态指示符使所述第三扇区无效。16.根据权利要求12所述的系统,其中所述指令包括第一存储器地址和要被无效的若干扇区,并且其中所述高速缓存控制器还被配置为:确定所述高速缓存存储器的第二高速缓存行中的第三扇区包括在所述若干扇区中;以及修改与所述第三扇区相关联的第二状态指示符,其中所述第二状态指示符使所述第三扇区无效。17.根据权利要求12所述的系统,其中为了修改所述第一状态指示符,所述高速缓存控制器被配置为修改与所述第一扇区相关联的指示符以指示所述第一扇区包含无效数据。18.根据权利要求12所述的系统,其中为了修改所述第一状态指示符,所述高速缓存控制器被配置为修改与所述第一扇区相关联的指示符以指示所述第一扇区不包含要存储在后备存储区中的数据。
19.根据权利要求12所述的系统,其中所述第一高速缓存行包括128字节,并且包括在所述第一高速缓存行中的每个扇区包括32字节。20.根据权利要求12所述的系统,其中所述指令包括原子操作,所述原子操作将数据从所述第一扇区原子地加载到一个或更多个寄存器,同时修改与所述第一扇区相关联的所述第一状态指示符。
技术总结
本公开涉及具有每扇区高速缓存驻留控件的高速缓存存储器。各种实施例包括用于管理计算系统中的高速缓存存储器的技术。计算系统包括扇区化的高速缓存存储器,为软件应用程序提供逐扇区地直接使存储在高速缓存存储器中的数据项无效的机制,其中扇区小于高速缓存行。当高速缓存行中的所有扇区都已被无效时,高速缓存行隐式无效,释放高速缓存行以重分配用于其他目的。在待无效数据项可与扇区边界对齐的情况下,公开的技术有效使用高速缓存标志存储器中的状态指示符跟踪哪些扇区和相应数据项已被软件应用程序无效。因此,公开的技术由此实现用于使小于高速缓存行的各个数据项无效的低开销解决方案,无需额外跟踪数据结构或消耗额外存储器传输带宽。耗额外存储器传输带宽。耗额外存储器传输带宽。
技术研发人员:M
受保护的技术使用者:辉达公司
技术研发日:2022.10.14
技术公布日:2023/9/25
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/