CN115408311A - 微处理器中的控制器及其进行的方法 - Google Patents
微处理器中的控制器及其进行的方法 Download PDFInfo
- Publication number
- CN115408311A CN115408311A CN202211034768.1A CN202211034768A CN115408311A CN 115408311 A CN115408311 A CN 115408311A CN 202211034768 A CN202211034768 A CN 202211034768A CN 115408311 A CN115408311 A CN 115408311A
- Authority
- CN
- China
- Prior art keywords
- memory
- controller
- memory regions
- cache
- cache lines
- 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
Images
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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- 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
- 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/1024—Latency reduction
-
- 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/1028—Power efficiency
-
- 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/1041—Resource optimization
- G06F2212/1044—Space efficiency 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/30—Providing cache or TLB in specific location of a processing system
- G06F2212/305—Providing cache or TLB in specific location of a processing system being part of a memory device, e.g. cache DRAM
-
- 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/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
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
本发明提供微处理器中的控制器及其进行的方法。在一个实施例中,一种微处理器中的控制器,所述控制器被配置为管理对动态随机存取存储器(DRAM)的访问,所述控制器包括:第一表,其被配置为针对多个第一存储器区域跟踪已被写入零的高速缓存线;以及第二表,其被配置为跟踪多个第二存储器区域的已被写入零的高速缓存线,其中多个第二存储器区域中的各个第二存储器区域包括多个第一存储器区域的组,其中所述组内的多个第一存储器区域中的各个第一存储器区域内的所有高速缓存线已被写入零。
Description
技术领域
本发明一般涉及存储器管理,特别涉及管理微处理器和系统存储器之间的访问。
背景技术
大多数现代计算机系统包括进行执行软件程序所需的计算的微处理器。计算机系统还包括连接到微处理器(或在微处理器内部)的其他装置,诸如存储器等。存储器存储由微处理器执行的软件程序指令。存储器还存储由程序指令操纵以实现程序的期望功能的数据。
计算机系统中的在微处理器外部(或在处理器核外部)的装置(诸如存储器等)通过处理器总线直接或间接地连接到微处理器(或核)。处理器总线包括使微处理器能够以相对大的组块(chunk)传送数据的信号集合。当微处理器执行对存储器中存储的数据进行计算的程序指令时,微处理器使用处理器总线将数据从存储器提取到微处理器中。类似地,微处理器使用处理器总线将计算结果写回到存储器。
从存储器提取数据或将数据写入存储器所需的时间比微处理器对数据进行计算所需的时间长许多倍。因此,微处理器低效率地等待空闲以从存储器中提取出数据。为了减少这个问题,现代微处理器包括至少一个高速缓冲存储器。高速缓冲存储器或高速缓存是微处理器(或处理器核)内部的存储器,其通常比系统存储器小得多,并且其存储系统存储器中的数据的子集。当微处理器执行引用数据的指令时,微处理器检查以查看数据是否存在于高速缓存中以及是否是有效的。如果是,则因为数据已经存在于高速缓存中,因此与必须从系统存储器检索数据相比,可以更快地执行指令。也就是说,当使用处理器总线将数据从存储器提取到高速缓存时,微处理器不必等待。微处理器检测出数据存在于高速缓存中并且有效的状况通常被称为高速缓存命中。所引用的数据不存在于高速缓存中的状况通常被称为高速缓存未命中。当所引用的数据已经在高速缓冲存储器中时,通过避免从外部存储器检索数据所需的额外时钟周期,实现了显著的时间节省。
在一些微处理器中,高速缓存实际上由多个高速缓存组成。多个高速缓存被布置在多个级别的层级中。例如,微处理器可以具有两个高速缓存,称为第一级(L1)高速缓存和第二级(L2)高速缓存。L1高速缓存比L2高速缓存更靠近微处理器的计算元件。也就是说,L1高速缓存能够比L2高速缓存更快地向计算元件提供数据。L2高速缓存通常比L1高速缓存更大并且具有更多的存储资源。一些微处理器可以具有第三高速缓存(L3),其可以大于L2高速缓存。L3高速缓存有时被称为末级高速缓存(LLC),并且是可由微处理器的所有核完全访问和利用的共用高速缓存。尽管高速缓存层级结构在减少与对存储器的访问相关联的数据延迟方面是有用的,但是需要其他措施来减少存储器访问。
一个用于减少存储器访问的技术必须处理零值数据。并非所有数据都以均匀的规律性出现,并且实际上,零是常见的。例如,操作系统在对应用程序进行第一次分配时将整个页清零。与非零写入相比,具有零写入是相对常见的。然而,向系统存储器(在下文中,也称为动态随机存取存储器或DRAM)发送写入请求或读取请求是高成本的,特别是因为对DRAM的物理读取或写入耗费电力。规避或减轻对零值数据的这样的写入或读取,使得能够减少DRAM访问带宽、功耗以及减少从DRAM进行读取的延迟成本。此外,一旦数据存储在DRAM中,就需要定期刷新任意给定的存储单元处的电流值(例如,因为DRAM单元包括晶体管和电容器,其中电容器泄漏电荷)。对于零值单元,可以实现刷新优化以选择性地刷新DRAM的零值的部分,这也节省了电力。简而言之,对DRAM的物理读取或写入耗费电力。
在标题为“Sanitize-Aware DRAM Controller”的美国专利9,972,375中描述了减少DRAM访问的基于零值的措施以及其他益处,该专利通过引用并入本文。描述了用于控制DRAM的控制器,其包括多个块。块是DRAM中的一个或多于一个存储单元,其中针对该一个或多于一个存储单元,DRAM控制器可以选择性地启用或禁用刷新。DRAM控制器包括各自用于与DRAM的块中的块相关联的标志。清除控制器确定要清除的块(例如,用零写入),并且作为响应,设置与该块相关联的标志并禁用刷新该块。响应于随后接收到从块中的位置读取数据的请求,如果消除了标志,则DRAM控制器读取该位置并返回从其读取的数据。如果设置了标志,则DRAM控制器抑制读取DRAM并返回零值。实际上,当进程(例如,程序等)要求将零写入DRAM的零值的某区域(例如,64字节存储器组块)时,如果设置了清除位,则不需要物理地写入DRAM的该区域。此外,当查阅了清除位的表并且存在针对该特定存储器区域的命中时,可以通过简单地返回零来处理尝试读取DRAM的内容的任意后续加载访问,从而避免访问DRAM的需要。因此,通过使用该清除位的表,可以避免对DRAM的更新。
发明内容
在一个实施例中,一种微处理器中的控制器,所述控制器被配置为管理对动态随机存取存储器即DRAM的访问,所述控制器包括:第一表,其被配置为针对多个第一存储器区域跟踪已被写入零的高速缓存线;以及第二表,其被配置为跟踪多个第二存储器区域的已被写入零的高速缓存线,其中所述多个第二存储器区域中的各个第二存储器区域包括所述多个第一存储器区域的组,其中该组内的所述多个第一存储器区域中的各个第一存储器区域内的所有高速缓存线已被写入零。
本发明的其它系统、方法、特征和优点对于本领域技术人员来说,在研究了以下附图和详细的说明书之后将是明显的或变得明显。所有这样的附加系统、方法、特征和优点旨在被包括在该说明书内、本发明范围内,并且由所附权利要求保护。
附图说明
参考以下附图可以更好地理解本发明的各种方面。附图中的组件不一定按比例绘制,而是将重点放在清楚地说明本发明的原理上。此外,在附图中,相同的附图标记在若干个视图中表示对应的部分。
图1是示出实现高速缓存线零跟踪方法的实施例的示例微处理器的框图。
图2是示出用于实现高速缓存线零跟踪方法的实施例的示例控制器和协作表的实施例的示意图。
图3A和3B是示出根据本发明的实施例的用于跟踪每页高速缓存线零的示例第一表和用于跟踪多个或一组被跟踪页的高速缓存线零的第二示例表的示意图,其中在该组中所有位被设置。
图4是示出示例高速缓存线零跟踪方法的实施例的流程图。
具体实施方式
公开了多核微处理器的高速缓存线零跟踪方法以及相关联的系统和装置的某些实施例,其通过将高速缓存线零跟踪控制器(在下文中,也简称为控制器)与多个表(例如,第一表和第二表)一起使用来增强使用零值知识来减轻系统存储器访问的系统的功能性,其中第一表用于跟踪给定的存储器区域或存储器页的零值高速缓存线,并且第二表填充有用于各个被跟踪的存储器页的信息(其中每页的所有高速缓存线都是零值),以使得能够跟踪零值的一组或多个页的每行。
简而言之,由于高速缓存线的清零可能发生在多个块上(例如一次若干兆字节),因此在单个查找表中存储用于构成多个或一组页的许多高速缓存线的信息或状态(例如,12兆字节的信息或元数据)的成本可能抵消与减轻对系统存储器的访问(例如,动态随机存取或DRAM)相关联的益处。相反,高速缓存线零跟踪方法的某些实施例利用不同粒度的多个表,该多个表在减轻DRAM访问的同时促进信息的高效率存储和访问。
已经总结了本发明的高速缓存线零跟踪方法的某些特征,现在将详细参考如附图所示的高速缓存线零跟踪方法的说明书。虽然将结合这些附图描述高速缓存线零跟踪方法,但是并不旨在将其限制于本文公开的一个或多于一个实施例。也就是说,虽然本发明易于进行各种修改和替代形式,但是其具体实施例在附图中以示例的方式示出,并且将在本文中详细描述,足以使本领域技术人员理解。然而,应当理解,附图及其详细说明书并不旨在将本发明限制于所公开的特定形式。相反,本发明旨在涵盖落入由所附权利要求限定的本发明的精神和范围内的所有修改、等同物和替代物。如贯穿本申请所使用的,词语“可以”以允许的意义(即,意味着具有可能)而不是强制意义(即,意味着必须)使用。类似地,词语“包括”(并且类似于“包含”)意指包括(包含),但不限于此。
各种单元、模块、电路、逻辑或其他组件可以被描述为“被配置为”进行一个或多于一个任务。在这样的上下文中,“被配置为”是结构的广泛叙述,一般意味着“具有电路或其他物理结构”,所述电路或其他物理结构在操作期间进行或能够进行一个或多于一个任务。电路可以是专用电路,或在编码指令的控制下操作的更通用的处理电路。也就是说,在描述本发明的各种实施例的某些方面或特征时,可以在本文中使用如“单元”、“模块”、“电路”、“逻辑”和“组件”等的术语。本领域技术人员将理解,无论所述电路是专用电路还是在微编码指令控制下操作的更通用的电路,对应特征都是利用电路实现的。
此外,单元/模块/电路/逻辑/组件可以被配置为即使当单元/模块/电路/逻辑/组件当前未在操作中时也进行任务。对被配置为进行一个或多于一个任务的单元/模块/电路/逻辑/组件的叙述明确地不旨在视为针对该单元/模块/电路/逻辑/组件的功能性限定(美国专利法典第35编第112(f)款)。在这方面,本领域普通技术人员将理解,电路元件的特定结构或互连通常将由设计自动化工具的编译器(诸如寄存器传送语言(RTL)编译器)确定。RTL编译器对与汇编语言代码非常类似的脚本进行操作,以将该脚本编译成用于最终电路的布局或制造的形式。
也就是说,使用更高级的软件工具来设计集成电路(诸如本发明的集成电路),以对电路的期望功能操作进行建模。众所周知,“电子设计自动化”(或EDA)是用于设计诸如集成电路等的电子系统的一类软件工具。EDA工具还用于将设计功能性编程到现场可编程门阵列(FPGA)中。如Verilog和超高速集成电路(例如,VHDL)等的硬件描述符语言(HDL)用于创建电路的高级表示,从中可以导出低级表示和最终的实际布线。实际上,由于现代半导体芯片可以具有数十亿个组件,因此EDA工具被认为是其设计所必需的。在实践中,电路设计者使用如C/C++等的编程语言来指定操作功能。EDA软件工具将指定的功能性转换为RTL。然后,硬件描述符语言(例如Verilog)将RTL转换为门的离散网表。该网表定义了由例如代工厂生产的实际电路。实际上,这些工具因其在促进电子和数字系统的设计过程中的作用和用途而众所周知和被理解,因此不需要在本文中描述。
图1是示出实现高速缓存线零跟踪方法的实施例的示例多核微处理器100的框图。如本文将描述的,本发明涉及用于通过使用不同粒度的多个表来跟踪高速缓存线零的改进机制,其在跟踪一组存储器页时与单个表相比减轻了DRAM访问并降低了成本。本领域普通技术人员从本文提供的说明书可以理解,本发明可以以各种电路配置和架构来实现,并且图1所示的架构仅仅是许多合适的架构中的一个。具体地,在图1所示的实施例中,微处理器100是八核处理器,其中核被枚举为核0 110_0至核7 110_7。在所示实施例中,省略了许多电路组件和细节,这些组件和细节与理解本发明没有密切关系。如本领域普通技术人员将理解的,各个处理核(110_0至110_7)包括在整个微处理器100中复制的某些关联或伴随电路。各个这样的相关子电路在所示实施例中表示为片(slice)。在八个处理核110_0至110_7的情况下,对应地存在八个片102_0至102_7。本文未描述的其他电路仅表示为“其他片逻辑”140_0至140_7。
在所示实施例中,采用三级高速缓存系统,其包括一级(L1)高速缓存、二级(L2)高速缓存和三级(L3)高速缓存(也称为末级高速缓存(LLC))。L1高速缓存被分成数据高速缓存和指令高速缓存这两者,分别表示为L1D和L1I。L2高速缓存也驻留在核上,这意味着L1高速缓存和L2高速缓存这两者都在与各个片的核相同的电路中。也就是说,各个片的各个核具有其自身的专用L1D、L1I和L2高速缓存。L3高速缓存在核外部但在各个片内。在一个实施例中,L3高速缓存130_0至130_7(在本文中也统称为130)是分布式高速缓存,这意味着在该示例八核架构中,L3高速缓存的1/8驻留在片0 102_0中,L3高速缓存的1/8驻留在片1 102_1中,等等。在一个实施例中,各个L1高速缓存的大小为32k,各个L2高速缓存的大小为256k,并且L3高速缓存的各个片的大小为2兆字节。因此,L3高速缓存的总大小是16兆字节。注意,在一些实施例中可以使用其他单独或聚合高速缓存大小。
在各个片中提供总线接口逻辑120_0至120_7,以管理不同片之间的来自各种电路组件的通信。如图1所示,通信总线190(也称为高速缓存一致性互连,其可以实现为环或网格)用于允许各种电路片之间以及与非核电路160的通信。非核电路160仅表示在处理器芯片上的附加电路,但不是与各个片相关联的核电路系统的一部分。与各个所示的片一样,非核电路160包括总线接口电路(非核总线接口)162,其为各个核和/或L3高速缓存片以及其他组件提供到互连190的接口。还示出了存储器控制器164,在本文中也称为DRAM控制器,用于与处理器外(片外)存储器180(例如,DRAM)接合。最后,其他非核逻辑166由块广义地表示,其表示可以被包括为非核处理器电路的一部分的其他电路(并且再次地,不需要为了理解本发明而对其进行描述)。
为了更好地说明一些电路组件的某些内部和外部通信,将呈现以下示例。该示例示出了与核6高速缓存中的假设的加载未命中相关联的通信。也就是说,该假设假定了处理核6 110_6正在执行请求加载假设地址1000处的数据的代码。当遇到这样的加载请求时,系统首先在L1D 114_6中进行查找以查看该数据是否存在于L1D高速缓存中。假定数据不在L1D高速缓存中,则在L2高速缓存112_6中进行查找。再次地,假定数据不在L2高速缓存中,则进行查找以查看数据是否存在于L3高速缓存中。如上所述,L3高速缓存是分布式高速缓存,因此如果数据实际上驻留在L3高速缓存中,则系统首先需要确定数据应该驻留在L3高速缓存的哪个片中。众所周知,可以使用仅仅是位的异或(exclusive OR)的散列函数来进行该处理,以获得三位地址(足以识别数据存储在哪个片(片0至片7)中)。
与该示例一致,假定该散列函数导致数据(如果存在于L3高速缓存中)将存在于L3高速缓存的驻留在片7中的该部分中的指示。然后,通过总线接口120_6和120_7从片6 102_6的L2高速缓存到存在于片7 102_7中的L3高速缓存进行通信。该通信在图中由带圆圈的数字1表示。如果数据存在于L3高速缓存中,则该数据将从L3高速缓存130_7通信回L2高速缓存112_6。然而,并且在该示例中,假定数据也不在L3高速缓存中,导致高速缓存未命中。因此,通过存储器控制器164,从L3高速缓存130_7通过总线接口7 120_7通过非核总线接口162到片外存储器180进行通信。该通信在图中由带圆圈的数字2表示。然后,在一个实施例中,包括驻留在地址1000处的数据的高速缓存线从片外存储器180通过存储器控制器164和非核总线接口162通信回到L3高速缓存130_7中。该通信在图中由带圆圈的数字3表示。在将该数据写入L3高速缓存之后,然后通过总线接口120_7和120_6将其通信到请求核(核6110_6)。该通信在图中由带圆圈的数字4表示。此时,一旦完成了加载请求,在一个实施例中,该数据将驻留在高速缓存L3、L2和L1D中的每一个中。注意,上面针对图1暗示的包含策略仅仅是说明,并且在一些实施例中,高速缓存层级可以使用非包含性策略、排他性策略或者策略的变型或混合,包括非包含性高速缓存、包含性目录(NCID)架构。
已经一般性地描述了可以实现高速缓存线零跟踪方法的实施例的示例环境,请注意图2,其示出了来自图1所示的微处理器100的选择特征以及附加特征。例如,示出了核110和L3高速缓存(片)130,它们耦接到互连190,互连190耦接到存储器控制器164。如已知的,微处理器100的核110执行程序,该程序包括系统软件(诸如操作系统)和/或系统固件(诸如基本输入/输出系统(BIOS)或可扩展固件)以及实用程序和应用程序。
如上所述,存储器控制器164耦接到DRAM 180,并且控制对DRAM 180的访问。存储器控制器164包括高速缓存线零跟踪控制器200(在下文中,简称为控制器200),该控制器200可以被实现为状态机或微控制器。存储器控制器164还包括多个(例如,两个)表(包括表1 202和表2 204),表1 202和表2 204如下所述具有不同的跟踪粒度。如下面进一步描述的,控制器200与表1 202和表2 204一起用于分别以每存储器区域(或存储器页)以及存储器区域组(多个存储器页)的高速缓存线的粒度来跟踪零高速缓存线。在一些实施例中,可以使用附加表。DRAM 180被布置为多个DRAM块206。在一个实施例中,DRAM块206的大小对应于微处理器100虚拟存储器系统所支持的最小页的大小,尽管在一些实施例中,可使用其它大小的块。除了别的之外,系统软件还清除DRAM 180的包括整个DRAM块206的部分。操作系统可以以页的粒度(例如,4KB)来清除存储器,该页的大小根据微处理器100所支持的虚拟存储器系统来确定。此外,如本领域普通技术人员应当理解的,操作系统可以根据包括如下组的多个页共同地清除(sanitize)存储器,该组的大小可以是2MB、16MB、1GB等。在下面的说明书中,表1 202被称为4千字节(KB)表,并且表2 204被称为2兆字节(MB)表,4KB和2MB的值与相应表的各个条目跟踪的存储器区域的高速缓存线相对应。注意,4KB和2MB是用于说明的示例值,并且在一些实施例中,其他值可以用于这些相应表。
图3A是示出(与控制器200一起)用于跟踪每存储器页高速缓存线零的4KB表1 202的示意图,并且图3B是示出(与控制器200一起)用于跟踪2MB表2 204中的条目中的给定标记或物理地址内所包含的各个组或多个页的高速缓存线零的2MB表2 204的示意图,其中各个组中的所有被跟踪的高速缓存线都是零值。4KB表1 202和2MB表2 204可以统称为零高速缓存。简而言之,跟踪高速缓存线零的一个方式是简单地使单个高速缓存线表具有大的粒度,尽管出于实际目的,这样的表将相当笨拙。也就是说,这样的单个大规模表将抵消在减少DRAM访问方面的任何有意义的性能或电力益处。表越大,其消耗的面积和电力越大,因此具有对被写入零的各个高速缓存线进行跟踪的巨大表是不切实际的。认识到常见的用例是将整个4KB页写入零(这是常见的操作系统范例),4KB表1 202被组织成行与4KB区域相对应而不是行与高速缓存线相对应。然而,一个挑战是仅这样的表仍然不够大,因为操作系统并非仅使用4KB页。例如,操作系统可以使用2MB页、千兆字节页等。因此,如果4KB表202是唯一的表,并且如果操作系统将整个2MB页清零,则4KB表需要非常大(许多行或条目),其中,需要昂贵的比较器来存储多个页的状态(再次地,从实际的角度来看,这是笨拙的),其中行以512页的倍数增长。另一方面,代替使用4KB表,一个方式可以是使用单个2MB页表。然而,这样的表需要512×64位来跟踪高速缓存线,这也是笨拙的。
因此,高速缓存线零跟踪方法的某些实施例利用两个表(4KB表1 202和2MB表2204),这两个表表示上述方式的某种程度的混合。参考图3A,4KB表1 202包括多个条目或行300,各个条目包括标记302和位掩码304。4KB表1 202利用从物理地址位12(4KB边界)开始的物理地址位来被编索引。行或条目300利用指定完整4KB页所需的剩余高物理地址位来被标记(标记302)。4KB表1 202的各行还具有位掩码304,在一个实施例中,位掩码304包括已被写入零的高速缓存线的64位映射。4KB表1 202通过来自(一致性)互连190(图2)的写入而被填充,其中观察到数据完全为零(0)。
关于图3B,2MB表2 204利用从物理地址21(2MB边界)开始的物理地址位来被编索引。2MB表2 204的行或条目306利用指定连续的2MB区域所需的剩余高物理地址位来被标记(标记308)。2MB表2 204的行也具有位掩码310,该位掩码包括已完全被写入零的4KB页的512位映射。当写入完全完成4KB区域时(例如,设置了对应的4KB表行300的所有位),2MB表2204通过来自(一致性)互连190(图2)的写入而被填充,其中观察到数据完全为零(0)。
来自互连190的读取请求发起在4KB表1 202和2MB表2 204这两者中的查找。如果在任一表202、204中存在命中(例如,页具有行并且对应的位被设置),则存储器控制器164在不进行DRAM访问的情况下立即返回零数据。此外,当从任一表202、204逐出行时,状态机(例如,控制器200)在设置位上进行迭代并向DRAM 180发出对应的零写入。
进一步解释存储器控制器164,4KB表1 202包括4KB区域的表,其中各个行或条目300用于针对零跟踪到高速缓存线中,然后一旦整个行300(例如,整个4KB区域)被清零,如位掩码304所指示的,就从4KB表1 202中移除该行,并且将其信息迁移(例如,成为新行)到2MB表2 204中,其中512位中的仅一个位被设置。当操作系统继续将下一相邻4KB页或相同2MB区域中的其他4KB页清零时,则从4KB表1 202中移除该行,并且将其信息迁移到2MB表204(例如,设置2MB表2 204的行中的与该相同2MB区域相对应的对应位)。注意,最初,表202、204是空的。当4KB表1 202的各行被移除(例如,在行中所有位被设置以移除该行)时,行信息作为新行(如果不包含在2MB表2 204的现有2MB区域内,而是新条目)而被迁移,或者当位置包含在现有2MB区域内时,该信息作为对512位映射(位掩码310)中的对应位的更新(位设置)而被迁移。
考虑到上述说明,本领域普通技术人员应当理解,由微处理器中的控制器进行的方法的一个实施例,该控制器被配置为管理对动态随机存取存储器(DRAM)的访问,该方法在图4中表示为方法400,包括:在第一表中针对多个第一存储器区域跟踪已被写入零的高速缓存线(402);以及在第二表中跟踪多个第二存储器区域的已被写入零的高速缓存线,其中多个第二存储器区域中的各个第二存储器区域包括多个第一存储器区域的组,其中所述组内的多个第一存储器区域中的各个第一存储器区域内的所有高速缓存线已被写入零(404)。这些表与控制器一起使用以进行跟踪,以及进行迁移和位设置。
如本公开的领域的技术人员将理解的,流程图中的任意处理描述或框应当被理解为表示包括用于实现处理中的特定逻辑功能或步骤的一个或多于一个可执行指令的代码的模块、段、逻辑或部分,并且在实施例的范围内包括替代的实现,其中可以与所示出或讨论的顺序不同地(包括基本上同时或以不同的顺序)执行功能,或者可以省略一个或多于一个框,这取决于所涉及的功能性。例如,图4中的方法400一般可以由微处理器进行,并且特别地,由高速缓存线零跟踪控制器进行,或者在一些实施例中,由包括高速缓存线零跟踪控制器的功能性的存储器控制器进行,其中高速缓存线零跟踪控制器可以包括状态机和/或微控制器。在一些实施例中,高速缓存线零追踪控制器和表202、204可以耦接在互连与存储器控制器164之间。
虽然已经在附图和前述说明中详细图示和描述了本发明,但是这样的图示和说明被认为是说明性或示例性的而非限制性的;本发明不限于所公开的实施例。通过研究附图、公开内容和所附权利要求,本领域技术人员在实践所要求保护的发明时可以理解和实现所公开的实施例的其他变型。
注意,可以使用所公开的实施例的各种组合,并且因此对实施例或一个实施例的引用并不意味着排除来自该实施例的特征与来自其他实施例的特征一起使用。在权利要求中,词语“包括”不排除其他元件或步骤,并且不定冠词“a”或“an”不排除多个。
Claims (20)
1.一种微处理器中的控制器,所述控制器被配置为管理对动态随机存取存储器即DRAM的访问,所述控制器包括:
第一表,其被配置为针对多个第一存储器区域跟踪已被写入零的高速缓存线;以及
第二表,其被配置为跟踪多个第二存储器区域的已被写入零的高速缓存线,其中所述多个第二存储器区域中的各个第二存储器区域包括所述多个第一存储器区域的组,其中该组内的所述多个第一存储器区域中的各个第一存储器区域内的所有高速缓存线已被写入零。
2.根据权利要求1所述的控制器,其中,所述第一表包括与所述多个第一存储器区域相对应的多个条目,其中各个条目包括与所述多个第一存储器区域中的一个第一存储器区域的地址相对应的标记、以及与所述多个第一存储器区域中的该一个第一存储器区域内的各个高速缓存线相对应的位掩码。
3.根据权利要求2所述的控制器,其中,当所述高速缓存线中的一个高速缓存线被写入零时,设置位掩码的对应的各位。
4.根据权利要求2所述的控制器,其中,所述多个第一存储器区域中的各个第一存储器区域包括存储器页。
5.根据权利要求4所述的控制器,其中,所述标记包括指定完整存储器页的高物理地址位,以及其中所述位掩码是基于存储器页的大小和各个高速缓存线的大小的。
6.根据权利要求2所述的控制器,其中,基于与所述多个第一存储器区域中的所述一个第一存储器区域内的各个高速缓存线相对应的所述位掩码的所有位被设置,将对应条目的信息迁移到所述第二表中。
7.根据权利要求2所述的控制器,其中,所述第二表包括与所述多个第二存储器区域相对应的多个条目,其中各个条目包括位掩码以及与所述多个第二存储器区域中的一个第二存储器区域的地址相对应的标记。
8.根据权利要求7所述的控制器,其中,所述第二表的各个条目的位掩码对应于与该条目相关联的第二存储器区域内所包含的所述多个第一存储器区域的组,以及其中该组的位掩码的所有位被设置。
9.根据权利要求8所述的控制器,其中,所述组包括针对多于一个存储器页所设置的高速缓存线。
10.根据权利要求9所述的控制器,其中,所述标记包括指定完整且连续的N兆字节即NMB的区域的高物理地址位,其中N是足以用于多于一个存储器页的存储,其中所述位掩码是基于所述第一存储器区域的数量的。
11.一种由微处理器中的控制器进行的方法,所述控制器被配置为管理对动态随机存取存储器即DRAM的访问,所述方法包括:
在第一表中针对多个第一存储器区域跟踪已被写入零的高速缓存线;以及
在第二表中跟踪多个第二存储器区域的已被写入零的高速缓存线,其中所述多个第二存储器区域中的各个第二存储器区域包括所述多个第一存储器区域的组,其中该组内的所述多个第一存储器区域中的各个第一存储器区域内的所有高速缓存线已被写入零。
12.根据权利要求11所述的方法,其中,所述第一表包括与所述多个第一存储器区域相对应的多个条目,其中各个条目包括与所述多个第一存储器区域中的一个第一存储器区域的地址相对应的标记、以及与所述多个第一存储器区域中的该一个第一存储器区域内的各个高速缓存线相对应的位掩码。
13.根据权利要求12所述的方法,还包括:当所述高速缓存线中的一个高速缓存线被写入零时,设置位掩码的对应的各位。
14.根据权利要求12所述的方法,其中,所述多个第一存储器区域中的各个第一存储器区域包括存储器页。
15.根据权利要求14所述的方法,其中,所述标记包括指定完整存储器页的高物理地址位,以及其中所述位掩码是基于存储器页的大小和各个高速缓存线的大小的。
16.根据权利要求12所述的方法,还包括:基于与所述多个第一存储器区域中的所述一个第一存储器区域内的各个高速缓存线相对应的所述位掩码的所有位被设置,将对应条目的信息迁移到所述第二表中。
17.根据权利要求12所述的方法,其中,所述第二表包括与所述多个第二存储器区域相对应的多个条目,其中各个条目包括位掩码以及与所述多个第二存储器区域中的一个第二存储器区域的地址相对应的标记。
18.根据权利要求17所述的方法,其中,所述第二表的各个条目的位掩码对应于与该条目相关联的第二存储器区域内所包含的所述多个第一存储器区域的组,以及其中该组的位掩码的所有位被设置。
19.根据权利要求18所述的方法,其中,所述组包括针对多于一个存储器页所设置的高速缓存线。
20.根据权利要求19所述的方法,其中,所述标记包括指定完整且连续的N兆字节即NMB的区域的高物理地址位,其中N是足以用于多于一个存储器页的存储,其中所述位掩码是基于所述第一存储器区域的数量的。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/581,110 | 2022-01-21 | ||
US17/581,110 US20230236985A1 (en) | 2022-01-21 | 2022-01-21 | Memory controller zero cache |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115408311A true CN115408311A (zh) | 2022-11-29 |
Family
ID=84161834
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211034768.1A Pending CN115408311A (zh) | 2022-01-21 | 2022-08-26 | 微处理器中的控制器及其进行的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230236985A1 (zh) |
CN (1) | CN115408311A (zh) |
TW (1) | TW202331536A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11847459B2 (en) * | 2022-04-12 | 2023-12-19 | Microsoft Technology Licensing, Llc | Direct swap caching with zero line optimizations |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6009504A (en) * | 1996-09-27 | 1999-12-28 | Intel Corporation | Apparatus and method for storing data associated with multiple addresses in a storage element using a base address and a mask |
US7516264B2 (en) * | 2005-02-09 | 2009-04-07 | International Business Machines Corporation | Programmable bank/timer address folding in memory devices |
US20120290793A1 (en) * | 2011-05-10 | 2012-11-15 | Jaewoong Chung | Efficient tag storage for large data caches |
US9652230B2 (en) * | 2013-10-15 | 2017-05-16 | Mill Computing, Inc. | Computer processor employing dedicated hardware mechanism controlling the initialization and invalidation of cache lines |
WO2016097809A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Multiple data prefetchers that defer to one another based on prefetch effectiveness by memory access type |
US9972375B2 (en) * | 2016-04-15 | 2018-05-15 | Via Alliance Semiconductor Co., Ltd. | Sanitize-aware DRAM controller |
US11561906B2 (en) * | 2017-12-12 | 2023-01-24 | Advanced Micro Devices, Inc. | Rinsing cache lines from a common memory page to memory |
-
2022
- 2022-01-21 US US17/581,110 patent/US20230236985A1/en active Pending
- 2022-08-26 CN CN202211034768.1A patent/CN115408311A/zh active Pending
- 2022-10-17 TW TW111139190A patent/TW202331536A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
US20230236985A1 (en) | 2023-07-27 |
TW202331536A (zh) | 2023-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7562191B2 (en) | Microprocessor having a power-saving instruction cache way predictor and instruction replacement scheme | |
US11132300B2 (en) | Memory hierarchy using page-based compression | |
CN102483719B (zh) | 基于块的非透明高速缓存 | |
US8001330B2 (en) | L2 cache controller with slice directory and unified cache structure | |
US9811456B2 (en) | Reliable wear-leveling for non-volatile memory and method therefor | |
US20220222180A1 (en) | Adaptive Cache | |
US7590802B2 (en) | Direct deposit using locking cache | |
US11474951B2 (en) | Memory management unit, address translation method, and processor | |
US9477605B2 (en) | Memory hierarchy using row-based compression | |
US10402338B2 (en) | Method and apparatus for erase block granularity eviction in host based caching | |
CN107771322B (zh) | 可编程集成电路中存储器资源的管理 | |
US20200301840A1 (en) | Prefetch apparatus and method using confidence metric for processor cache | |
US10884927B2 (en) | Cache architecture using way ID to reduce near memory traffic in a two-level memory system | |
US7596665B2 (en) | Mechanism for a processor to use locking cache as part of system memory | |
CN115408311A (zh) | 微处理器中的控制器及其进行的方法 | |
US11526449B2 (en) | Limited propagation of unnecessary memory updates | |
US9983874B2 (en) | Structure for a circuit function that implements a load when reservation lost instruction to perform cacheline polling | |
US8533396B2 (en) | Memory elements for performing an allocation operation and related methods | |
WO2023113942A1 (en) | Cache probe transaction filtering | |
US11467972B2 (en) | L1D to L2 eviction | |
Li et al. | Baryon: Efficient hybrid memory management with compression and sub-blocking | |
US11934310B2 (en) | Zero bits in L3 tags | |
CN107957927B (zh) | 微控制器和相关的存储器管理方法 | |
US11144476B2 (en) | Least recently used ranking in a multi-port cache | |
US20140059283A1 (en) | Controlling a memory array |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |