CN117632784A - 静默高速缓存行逐出 - Google Patents
静默高速缓存行逐出 Download PDFInfo
- Publication number
- CN117632784A CN117632784A CN202310781890.3A CN202310781890A CN117632784A CN 117632784 A CN117632784 A CN 117632784A CN 202310781890 A CN202310781890 A CN 202310781890A CN 117632784 A CN117632784 A CN 117632784A
- Authority
- CN
- China
- Prior art keywords
- metadata
- cache line
- memory
- data
- 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.)
- Pending
Links
- 230000004044 response Effects 0.000 claims abstract description 58
- 238000000034 method Methods 0.000 claims abstract description 31
- 238000012545 processing Methods 0.000 claims description 40
- 230000008859 change Effects 0.000 claims description 12
- 238000004891 communication Methods 0.000 description 16
- 239000000872 buffer Substances 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 239000002245 particle Substances 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 210000004027 cell Anatomy 0.000 description 2
- QVFWZNCVPCJQOP-UHFFFAOYSA-N chloralodol Chemical compound CC(O)(C)CC(C)OC(O)C(Cl)(Cl)Cl QVFWZNCVPCJQOP-UHFFFAOYSA-N 0.000 description 2
- 238000013479 data entry Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000001152 differential interference contrast microscopy Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 239000012212 insulator Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- APTZNLHMIGJTEW-UHFFFAOYSA-N pyraflufen-ethyl Chemical compound C1=C(Cl)C(OCC(=O)OCC)=CC(C=2C(=C(OC(F)F)N(C)N=2)Cl)=C1F APTZNLHMIGJTEW-UHFFFAOYSA-N 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 101150060058 tag-335 gene Proteins 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3816—Instruction alignment, e.g. cache line crossing
-
- 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/72—Details relating to flash memory management
- G06F2212/7209—Validity control, e.g. using flags, time stamps or sequence numbers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本文描述一种用于静默高速缓存行逐出的系统和技术。存储器装置从主机接收存储器操作。所述存储器操作在接收后在所述存储器装置的高速缓存行中建立数据和元数据。所述元数据存储在对应于所述高速缓存行的存储器元件中。随后,标识用以逐出所述高速缓存行的逐出触发事件。接着,响应于所述逐出触发事件,比较所述高速缓存行的当前元数据与所述存储器元件中的所述元数据以确定所述元数据是否已改变。响应于所述元数据未改变,可逐出所述高速缓存行而不写入到后备存储器。
Description
关于政府支持的声明
本发明是在政府支持下依据SANDIA II授予的第DE-NA0003525号协定完成。政府拥有本发明的某些权利。
技术领域
本文中所描述的实施例大体上涉及计算机存储器,且更具体地说,涉及静默高速缓存行逐出。
背景技术
用于计算机或其它电子装置的存储器装置可分类为易失性和非易失性存储器。易失性存储器使用电力来维持其数据(例如,被周期性地刷新),且包含随机存取存储器(RAM)、动态随机存取存储器(DRAM)或同步动态随机存取存储器(SDRAM)等。非易失性存储器通常在没有电源的情况下保留所存储数据,且包含快闪存储器、只读存储器(ROM)、电可擦除可编程ROM(EEPROM)、静态RAM(SRAM)、可擦除可编程ROM(EPROM)、电阻可变存储器、相变存储器、存储类存储器、电阻式随机存取存储器(RRAM)和磁阻随机存取存储器(MRAM)等。持久性存储器为系统的架构属性,其中存储在媒体中的数据在系统复位或电力循环之后可用。在实例中,非易失性存储器媒体可用于建构具有持久性存储器模型的系统。
存储器装置可耦合到主机(例如,主机计算装置)以存储数据、命令或指令以在计算机或电子系统正操作时供主机使用。举例来说,数据、命令或指令可在计算系统或另一电子系统的操作期间在主机与存储器装置之间传送。
可应用各种协议或标准以促进主机与例如存储器缓冲器、加速器或其它输入/输出装置等一或多个其它装置之间的通信。在实例中,可使用例如计算高速链路(CXL)等无序协议来提供高带宽和低时延连接性。
发明内容
根据本公开的一方面,提供一种设备。所述设备包括:接口,其经配置以从外部实体接收存储器操作;高速缓存,其包含高速缓存行;以及处理电路系统,其经配置以:经由所述接口接收存储器操作,所述存储器操作在所述高速缓存行中建立数据和元数据;将所述元数据存储在对应于所述高速缓存行的存储器元件中;标识用以逐出所述高速缓存行的逐出触发事件;响应于所述逐出触发事件,比较所述高速缓存行的当前元数据与所述存储器元件中的所述元数据以确定所述元数据是否已改变;以及响应于所述元数据未改变,逐出所述高速缓存行而不写入到后备存储器。
根据本公开的另一方面,提供一种方法。所述方法包括:在存储器装置处从主机接收存储器操作,所述存储器操作在所述存储器装置的高速缓存行中建立数据和元数据;将所述元数据存储在对应于所述高速缓存行的存储器元件中;标识用以逐出所述高速缓存行的逐出触发事件;响应于所述逐出触发事件,比较所述高速缓存行的当前元数据与所述存储器元件中的所述元数据以确定所述元数据是否已改变;以及响应于所述元数据未改变,逐出所述高速缓存行而不写入到后备存储器。
根据本公开的又一方面,提供一种非暂时性机器可读媒体。所述非暂时性机器可读媒体包含指令,所述指令在由处理电路系统执行时使所述处理电路系统执行包括以下各项的操作:在存储器装置处从主机接收存储器操作,所述存储器操作在所述存储器装置的高速缓存行中建立数据和元数据;将所述元数据存储在对应于所述高速缓存行的存储器元件中;标识用以逐出所述高速缓存行的逐出触发事件;响应于所述逐出触发事件,比较所述高速缓存行的当前元数据与所述存储器元件中的所述元数据以确定所述元数据是否已改变;以及响应于所述元数据未改变,逐出所述高速缓存行而不写入到后备存储器。
附图说明
在不一定是按比例绘制的图中,相同数字可描述不同视图中的类似组件。具有不同字母后缀的相同数字可表示类似组件的不同例子。各图通过举例而非限制性地总体上说明本文件中所论述的各种实施例。
图1说明根据实施例的包含用于静默高速缓存行逐出的系统的环境的实例。
图2说明根据实施例的连接到CXL装置的主机的实例。
图3说明根据实施例的存储器装置的实例组件。
图4说明根据实施例的关联高速缓存的实例。
图5说明根据实施例的无回写的高速缓存元状态变换的实例。
图6说明根据实施例的用于静默高速缓存行逐出的方法的实例的流程图。
图7说明可实施一或多个实施例的机器的实例。
具体实施方式
计算高速链路(CXL)是被配置成用于主机装置与例如加速器、存储器缓冲器或智能输入输出(I/O)装置等其它装置之间的高带宽、低时延连接性的开放标准互连。CXL经设计以通过支持异构处理和存储器系统来促进高性能计算工作负载。CXL在基于PCI Express(PCIe)的I/O语义之上提高速缓存一致性供用于高速缓存一致性的存储器语义和机制,以优化性能。
CXL可用于例如人工智能、机器学习、分析、云基础设施、边缘计算装置、通信系统等应用,以为主机处理器平台提供与存储器或加速器的灵活连接。此类应用中的数据处理可使用可部署在CPU、GPU、FPGA、智能NIC或可使用CXL链路耦合的其它加速器中的各种标量、向量、矩阵或空间架构。加速器与存储器并置的近存储器加速器在扩展系统能力的同时提供低时延处理。
CXL支持使用一组协议的动态多路复用,所述协议包含I/O(基于PCIe的CXL.io)、高速缓存(CXL.cache)和存储器(CXL.memory)语义。在实例中,CXL可用于在CPU(例如,主机装置或主机处理器)与CXL装置管理的(例如,在CXL装置处的)任何存储器之间维持统一、一致的存储器空间(例如,高速缓存一致性)。此配置使得CPU和另一装置能够共享资源且在同一存储器区上操作以提高性能、减少数据移动且降低软件堆栈复杂性。在实例中,CPU主要负责维持或管理CXL环境中的一致性。因此,可利用CXL来帮助降低装置成本和复杂性,以及传统上与跨I/O链路的一致性相关联的开销。
包含存储器和加速器两者的CXL装置可被称为“CXL类型2”装置。虽然此类装置的加速器自身可通过CXL接口使用,但这些加速器经常提供近存储器计算以减少到主机处理器的往返时延。根据当前CXL标准,CLX存储器请求(例如,外部请求)优先于其它请求,例如片上网络(NOC)请求或其它内部请求。此优先级要求CXL存储器请求独立于例如加速器的活动等任何其它装置活动而向前推进。即,CXL存储器请求无法无限地阻止等待非CXL存储器请求完成。当正作出CXL请求和非CXL请求两者时以此限制单独地管理存储器控制器工作流可为复杂的过程。
为了解决CXL(或其它外部)请求与加速器(或其它内部请求)之间的复杂性,针对经推迟请求维持单独处理队列。未经推迟的请求在它们一到达存储器控制器中时就继续行进,因为不存在资源争用。因此,在这些情况下举例来说,内部请求没有机会阻止外部请求的进程。然而,当存在资源争用时,所述请求将被推迟直到解决争用。管理外部请求和内部请求的不同处理优先级的精致解决方案包含将每一请求在单独推迟的队列中排队,由此可通过优先化来自外部队列的请求的提取而容易地维持外部请求的优先级。此外,可通过明智选择来自所有外部和内部队列的请求同时防止内部请求阻挡外部请求(例如,阻止关于外部请求的向前推进)维持对存储器地址的操作的次序。
CXL一致性机制提供了用于CXL和主机装置中的高速缓存元件的控制语义。一个此类机制是使用CXL元状态。CXL元状态是由主机设置的数据结构,其通知所附接的装置关于CXL连接的各种元件的当前状态。元状态的一个此类方面包含哪个实体——例如,主机或存储器装置——对高速缓存行具有控制权。一般来说,CXL存储器装置可将与CXL标准相关联的CXL元状态逐存储器行保存,以改善主机处理器高速缓存一致性性能。读取或写入元状态可能有时导致显著开销。举例来说,朴素实施方案可导致消耗不必要的存储器带宽。
当执行写入时,高速缓存行通常被标记为脏的。在此情况下,术语“脏”指示高速缓存行中的数据与后备存储器中的对应存储器行之间存在不一致性。为了“清洁”高速缓存行,将数据回写到存储器行以使这两个数据位置一致。因此,如果当从高速缓存逐出所述行时所述数据(例如,高速缓存行)是脏的,则将所述数据回写到存储器。元状态处理的朴素实施方案通常与所述数据相同地处置,其中脏位或其它指示用以跟踪元状态在对存储器的写入之间何时改变。然而,这在例如元状态在逐出事件发生之前恢复到存储器内值时可导致对存储器的不必要元状态写入。
为了解决从高速缓存到后备存储器不必要的元状态写入,与当前元状态分开地跟踪存储器状态的原始(例如,存储器一致)版本。当前元状态表示元状态中的上一个改变。当发生逐出事件时,将原始元状态与当前元状态相比较。如果它们相同,则元状态不会引发高速缓存行的存储器回写。在实例中,如果数据被标记为脏的,则不发生比较且发生回写,而无论原始和当前元状态不同还是相同,因为将仅发生回写以使数据一致。然而,如果数据不是脏的(例如,仅发生读取以设置高速缓存行)且原始元状态等同于当前元状态,则可逐出高速缓存行而无回写到后备存储器。与其它元状态实施方案相比,此情况可极大地减少不必要的回写、减少存储器带宽和功耗,且因此增加总体系统性能。下文提供额外细节和实例。
图1说明根据实施例的包含用于静默高速缓存行逐出的系统的环境的实例。系统包含主机装置105和存储器系统125。主机装置105包含处理器110(例如,中央处理单元(CPU))和主机存储器115。在实例中,主机装置105是主机系统或主机系统的一部分,例如服务器计算机、工作站、个人笔记本计算机、台式计算机、数码相机、智能手机、存储卡读卡器或具物联网功能的装置等。处理器110可包含一或多个处理器核心、并行处理器系统或其它CPU布置。
存储器系统125包含控制器130、缓冲器135(例如,内部状态存储器)、高速缓存140和第一存储器装置145。第一存储器装置145可包含例如一或多个存储器模块(例如,单列直插式存储器模块、双列直插式存储器模块等)。第一存储器装置145可包含易失性存储器或非易失性存储器。第一存储器装置145可包含多芯片装置,其包括一或多个不同的存储器类型或模块。在实例中,所述系统包含与存储器系统125和主机装置105介接的第二存储器装置150。
主机装置105可包含系统背板,且可包含数个处理资源(例如,一或多个处理器、微处理器或某一其它类型的控制电路系统)。所述系统可任选地包含用于主机装置105、存储器系统125、控制器130、缓冲器135、高速缓存140、第一存储器装置145、第二存储器装置150的单独集成电路,其中的任何一或多者可包括可连接且一起使用的相应小芯片。在实例中,所述系统包含服务器系统或高性能计算(HPC)系统或其一部分。主机装置105的实施例可在冯·诺依曼(Von Neumann)或非冯·诺依曼架构中实施,所述架构可包含通常与冯·诺依曼架构相关联的一或多个组件(例如,CPU、ALU等),或可省略这些组件。
在实例中,第一存储器装置145可提供用于系统的主存储器,或第一存储器装置145可包括供系统使用的辅助存储器或存储装置。在实例中,第一存储器装置145或第二存储器装置150包含一或多个存储器单元阵列,例如易失性或非易失性存储器单元。举例来说,阵列可以是具有NAND架构的快闪阵列。实施例不限于特定类型的存储器装置。例如,存储器装置可包含RAM、ROM、DRAM、SDRAM、PCRAM、RRAM和快闪存储器等。
在第一存储器装置145包含永久性或非易失性存储器的实施例中,第一存储器装置145可包含快闪存储器装置,例如NAND或NOR快闪存储器装置。第一存储器装置145可包含其它非易失性存储器装置,例如非易失性随机存取存储器装置(例如,NVRAM、ReRAM、FeRAM、MRAM、PCM)。一些存储器装置,例如包含铁电电容器的铁电RAM(FeRAM)装置,可呈现滞后特性,例如3D交叉点(3D XP)存储器装置或其组合。
在实例中,接口120可包含使得信息能够在处理器110或主机装置105的其它装置与存储器系统125之间传送的任何类型的通信路径、总线、互连件等。接口的非限制性实例可包含外围组件互连(PCI)接口、外围组件互连高速(PCIe)接口、串行高级技术附件(SATA)接口、通用串行总线(USB)接口、雷电接口或微型串行高级技术附件(mSATA)接口等。在实例中,接口120包含符合计算高速链路(CXL)协议标准的PCIe 5.0接口。因此,在一些实施例中,接口120支持至少32GT/s的传送速度。
CXL是经设计以提高计算性能的高速中央处理单元(CPU)到装置和CPU到存储器的互连件。CXL维持CPU存储器空间(例如,主机存储器115或由处理器110维持的高速缓存)与附接的装置或加速器上的存储器(例如,第一存储器装置145或第二存储器装置150)之间的存储器一致性。与其它互连布置相比,此布置使得能够以更高的性能、降低的软件堆栈复杂性和更低的总体系统成本进行资源共享。CXL是用于向加速器的高速通信的行业开放标准接口,越来越多地使用所述加速器来补充CPU以支持新兴的富含数据且计算密集的应用,例如人工智能和机器学习。存储器系统125说明为具有原子处理电路系统155作为加速器以便执行近存储器操作。通常,由原子处理电路系统155执行的原子存储器操作(AMO)包含小操作,例如递增存储器地址处的数字或将两个存储器地址中的数字相乘等等。虽然AMO通常用于此类操作,但存储器的操控不受此限制。举例来说,现代的人工神经网络架构通常涉及跨越大量的人工神经元应用小的加法或乘法运算或阈值处理。因为计算通常简单但数据较大,所以在说明的架构的情况下,此类操作的近存储器执行是可能的且有益的。
在实例中,控制器130包括媒体控制器,例如非易失性存储器高速(NVMe)控制器。控制器130可经配置以对第一存储器装置145执行例如复制、写入、读取、错误校正等操作。在实例中,控制器130可包含特定用途的电路系统或指令以执行各种操作。即,在一些实施例中,控制器130可包含电路系统或可经配置以执行指令以控制数据或与数据相关联的地址例如在缓冲器135、高速缓存140或第一存储器装置145或第二存储器装置150之间的移动。
在实例中,处理器110或控制器130中的至少一者包括用于存储器系统125的命令管理器(CM)。CM可例如从主机装置105接收用于第一存储器装置145或第二存储器装置150中的特定逻辑行地址的读取命令。在实例中,CM可至少部分地基于存储在控制器130的寄存器中的指针而确定逻辑行地址与第一行相关联。在实例中,CM可从主机装置105接收针对逻辑行地址的写入命令,且所述写入命令可与第二数据相关联。在实例中,CM可经配置以向非易失性存储器且在发出读取命令与写入命令之间发出与第一存储器装置145或第二存储器装置150相关联的存取命令。在实例中,CM可向非易失性存储器且在发出读取命令与写入命令之间发出与第一存储器装置145或第二存储器装置150相关联的存取命令。
在实例中,缓冲器135包括数据缓冲器电路,其包含物理存储器中用于例如当数据从一个位置移动到另一位置时临时存储数据的区域。缓冲器135可包含先入先出(FIFO)队列,其中首先处理最早(例如,先入)的数据。在一些实施例中,缓冲器135包含硬件移位寄存器、循环缓冲器或列表。
在实例中,高速缓存140包括物理存储器中用于临时存储来自第一存储器装置145或第二存储器装置150的特定数据的区域。通常,高速缓存提供比后备存储器更快的数据存取。高速缓存140可包含数据条目池。在实例中,高速缓存140可经配置以根据回写策略操作,在所述回写策略中,数据被写入到高速缓存而不被同时写入到第一存储器装置145。因此,在一些实施例中,写入到高速缓存140的数据在第一存储器装置145中不具有对应的数据条目。这可在例如数据被写入到高速缓存且在触发回写以将数据写入到第一存储器装置145中之前删除时发生。
在实例中,高速缓存140实施为多路关联高速缓存。此处,高速缓存条目由存储器地址的某一部分(例如,设定数目的有效位)分割。在本文中称为高速缓存集合的一组高速缓存条目(例如,高速缓存行或路)可与来自存储器地址的同一位集合共同相关联。通常,高速缓存集合中的路的数目小于与路相关联的存储器地址的总数目。因此,可逐出一个路以与各种点处的范围内的新存储器地址相关联。图4说明了这种类型的关联高速缓存的一些元素。
在实例中,控制器130可接收涉及高速缓存140的写入请求,且使与写入请求中的每一者相关联的数据写入到高速缓存140。控制器130可类似地接收读取请求,且使存储在例如第一存储器装置145或第二存储器装置150中的数据被检索且经由接口120写入到例如主机装置105。在实例中,控制器130通过高速缓存140处理对其控制的存储器的所有请求。因此,读取请求将首先检查高速缓存140以确定数据是否已被高速缓存。如果不是,则对第一存储器装置145进行读取以检索数据。然后将数据写入到高速缓存140。在实例中,接着从高速缓存140读取数据且将所述数据传输到处理器110。专门通过高速缓存工作可以一点时延为代价简化控制器130硬件的一些元件。
为简单起见,从控制器130的角度描述以下配置。然而,高速缓存140可包含用以执行这些操作中的一些或全部的电路系统。通过避免从高速缓存140到后备存储器(例如,第一存储器装置145)的不必要回写而获得的效率可通过跟踪高速缓存行的当前元状态和高速缓存行的原始元状态两者来实现。原始元状态表示已经存储于后备存储器中的元状态。如果逐出高速缓存行,且元状态的两个版本匹配——至少基于阈值足够匹配——则可假设第一存储器装置145已具有当前元状态的适当版本,且不需要写入来使第一存储器装置145与高速缓存140中的元状态一致。因此,可避免此写入。
为了实施上述内容,控制器130经配置以例如从主机处理器110接收存储器操作。在实例中,存储器操作在存储器系统125的高速缓存行(例如,路)中建立(例如,包含、限定、指示等)数据和元数据。所述建立来自请求——可如写入存储器请求的情况——或来自读取中的后备存储器。通常,在根据请求供应高速缓存行数据和元数据时,将需要把行写入到后备存储器,因为将设置数据脏指示。在此情况下,高速缓存行将很可能写入到后备存储器以保存数据,且因此元数据将写入作为所述写入的部分。然而,可能出现其中在高速缓存行被逐出之前未完成写入的情况。此处,可能不需要基于数据自身执行回写。在实例中,元数据是主机处理器110与存储器系统125之间的接口120的连接元数据。在其中接口为CXL互连件的实例中,元数据为CXL元状态。
控制器130经配置以将元数据存储在对应于高速缓存行的存储器元件中。元数据的这种存储也被称作“原始”元数据,因为所存储的元数据不可变,直到逐出高速缓存行为止。如下文所解释,此原始元数据提供判定当前元数据的依据,以基于元数据确定是否将执行对后备存储器的写入。例如通过与主机处理器110的各种交互而改变的当前元数据由高速缓存140例如维持在高速缓存行的标签数据中(例如,如图4中所说明)。在实例中,高速缓存140包含用于每个高速缓存行的额外结构(例如寄存器)以维持元数据。
控制器130经配置以标识逐出高速缓存行的逐出触发事件。此类触发事件可包含需要将新存储器行加载到高速缓存行以推进未决请求、时间段到期、来自主机处理器110的命令,或将通常引起高速缓存行与后备存储器一致的另一条件。在标识逐出触发事件后,控制器130经配置以比较高速缓存行的当前元数据与存储器元件中的原始元数据。如之前所指出,所述比较衡量元数据是否已改变以及改变到何种程度。如果不存在改变,则没必要将元数据数据写入到后备存储器。然而,由于高速缓存行标签数据作为高速缓存行数据写入的部分写入,因此当高速缓存行数据将被写入时,没有理由避免写入元数据。因此,在实例中,为比较高速缓存行的当前元数据与存储器元件中的元数据,控制器130经配置以确定高速缓存行的脏标记的状态。在实例中,首先检查脏标记,且如果标记为清洁,则进行原始元数据与当前元数据的比较。这在逐出将无论如何会引起写入时减少了操作的数目。
原始元数据与当前元数据之间的比较可逐位、逐值、逐字段等执行。在实例中,所述比较使得确定两个元数据之间的对应受关注元素在彼此的预定义阈值内。因此,如果时间戳在毫秒内,则其可等同于在阈值下。可完全避免一些字段用于比较。举例来说,如果存在对于给定时间段重要但通常不相关的诊断信息,则可从比较的字段或数据省略此类信息。
当进行元数据的多个改变时,产生比较原始元数据与当前元数据的目的。由于任何一个改变可由元数据的脏标记涵盖,因此存在多个原因使比较成为必要。因此,控制器130经配置以在存储器操作的接收与逐出触发事件之间接收高速缓存行的元数据的多个更新,每个更新将先前更新替换为当前元数据的值。
当原始元数据与当前元数据的比较结果为等同时,则高速缓存行被逐出而不写入到后备存储器。这有时被称作静默逐出,因为高速缓存行的数据仅被覆写。在实例中,响应于脏标记未设置,将高速缓存行逐出而不写入到后备存储器。此处,如上所指出,高速缓存行数据是清洁的(例如,与后备存储器中相同)。在数据脏的情况下,将很可能在不考虑比较原始元数据与当前元数据的结果的情况下发生对后备存储器的写入。
图2说明根据实施例的连接到CXL装置的主机的实例。图2大体说明CXL系统200的实例,所述系统使用CXL链路206以分别经由主机物理层PCIE接口208和CXL客户端物理层PCIE接口210连接主机装置202和CXL装置204。在实例中,根据图1中的系统的实例,主机装置202包括或对应于主机装置105,且CXL装置204包括或对应于存储器系统125。存储器系统命令管理器可包括主机装置202或CXL装置204的一部分。在实例中,CXL链路206可使用高速缓存(例如,CXL.cache)、存储器存取(例如,CXL.mem)和数据输入/输出事务(例如,CXL.io)的多路复用协议来支持通信。CXL.io可包含基于PCIe的协议,其用于例如装置发现、配置、初始化、I/O虚拟化和使用非一致加载-存储、生产者-消费者语义的直接存储器存取(DMA)的功能。CXL.cache可使得装置能够使用请求和响应协议高速缓存来自主机存储器(例如,从主机存储器212)的数据。CXL.memory可使得主机装置202能够例如在虚拟化存储空间中或使用虚拟化存储空间使用附接到CXL装置204的存储器。在实例中,CXL.memory事务可以是在主机装置202的下游或外部运行的存储器加载和存储操作。
在图2的实例中,主机装置202包含主机处理器214(例如,包括一或多个CPU或核心)和IO装置228。主机装置202可包括或可耦合到主机存储器212。主机装置202可包含经配置以促进与CXL装置204进行基于CXL的通信和事务的各种电路系统(例如,逻辑)。举例来说,主机装置202可包含经配置以根据CXL.cache和CXL.mem语义实施事务的一致性和存储器电路系统218,且主机装置202可包含经配置以根据CXL.io语义实施事务的PCIe电路系统220。在实例中,主机装置202可经配置以使用例如其一致性和存储器电路系统218管理高速缓存于CXL装置204处的数据的一致性。
主机装置202可进一步包含经配置以调制CXL链路206上的通信(例如,使用PCIePHY层)的主机多路复用器216。协议的多路复用确保时延敏感协议(例如,CXL.cache和CXL.memory)具有与本机处理器间链路相同或类似的时延。在实例中,CXL限定了时延敏感协议的响应时间的上限,以帮助确保装置性能不会受到实施一致性和存储器语义的不同装置之间的时延变化的不利影响。
在实例中,对称高速缓存一致性协议可能难以在主机处理器之间实施,因为不同架构可能使用不同解决方案,这又可能损害后向兼容性。CXL可通过合并主机装置202处的一致性功能来解决这一问题,例如使用一致性和存储器电路系统218。
CXL装置204可包含加速器装置,其包括各种加速器电路系统222。在实例中,CXL装置204可包括或可耦合到CXL装置存储器226。CXL装置204可包含经配置以使用CXL链路206来促进与主机装置202的基于CXL的通信和事务的各种电路系统。举例来说,加速器电路系统222可经配置以根据CXL.cache、CXL.mem和CXL.io语义实施事务。CXL装置204可包含经配置以控制CXL链路206上的通信的CXL装置多路复用器224。加速器电路系统222可以是可执行一或多个任务的一或多个处理器。加速器电路系统222可以是通用处理器或经设计以加速一或多个特定工作负载的处理器。
图3说明根据实施例的存储器装置的实例组件。所说明的组件是存储器控制器的部分,例如实施存储器侧高速缓存(MSC)的上文描述的那些存储器控制器(例如,图1所说明的存储器控制器130)。所说明的组件包含用于解决用以维持CXL协议要求的内部(例如,来自近存储器加速器)和外部(例如,经由CXL链路从主机接收)请求差异的元件,例如维持CXL存储器(CM)请求的向前推进。
如所说明,CM指代CXL存储器或其它外部请求,且NI指代来自NOC接口的请求或其它内部请求。来自CXL.mem的请求被写入到CM请求信息表305。请求写入到的CM请求信息表305中的条目从CM请求信息表池310获得。CM请求信息表池310维持指向可用的CM请求信息表条目(例如,空闲,或未使用的)的索引的列表。来自装置内的加速器的请求使用可用条目索引的NI请求信息表池320写入到NI请求信息表315。所述两个池,CM请求信息表池310和NI请求信息表池320,经配置以使得加速器请求(例如,内部请求)无法消耗所有表条目。因此,举例来说,如果额外NI请求到达且不存在NI请求信息表池320中指示的空闲条目,则请求失败。
来自CM队列325的CXL.mem请求是以比NI队列327中的NI请求高的优先级选择,以确保CM请求的向前推进。在实例中,如所说明,当请求选自CM队列325或NI队列327时,请求信息写入到NI+CM请求信息表325中。随后,通过针对NI+CM请求信息表330的条目的标识符(例如,索引)在各种队列中表示每个请求。此布置可减少在控制器中的不同处理点在各种队列之间传送请求信息时的存储要求和带宽。当处理点需要请求的一方面时,例如用于读取的地址,标识符用以参考NI+CM请求信息表330中的条目且检索对应于所需要方面的请求的字段。如同CM请求信息表305和NI请求信息表315,条目的空闲列表或池可用以快速确定哪些条目可用于存储NI+CM请求信息表330中的请求信息。
当选择请求时,检查用于对应于请求中的地址的高速缓存行(例如,高速缓存路)的高速缓存标签335,以确定所述请求是否将推迟(例如,较晚处理)。当不存在用于请求中的地址的高速缓存集合中的空闲路行条目时,通常需要推迟请求。如果没有推迟将发生,则高速缓存数据可被读取340或修改345(例如,对于写入),且路标签可被修改350。修改标签350或高速缓存数据345可例如在写入标签数据355和高速缓存路数据360时分别写入到后备存储器。
当请求被推迟时,请求条目标识符(例如,来自NI+CM请求信息表330)被推送到CM或NI推迟队列365。当存在对应于请求中的地址的路但所述路正忙碌时使用路推迟队列365(例如,等待另一命令完成)。当不存在对应于地址的路时使用集合推迟队列365。所述请求保持排队,直到路可用(例如,不忙碌)为止。在实例中,存在用于高速缓存内的每个高速缓存集合的单独CM和NI推迟队列365。
外部控制队列370管理对高速缓存的外部响应,例如对后备存储器的读取或写入的响应、存储器控制器(MC)请求、或CXL召回(recall)。CXL召回是存储器装置为了从主机重新获得对高速缓存路的控制所作的请求。召回是对主机进行请求,且例如在CXL元状态中,主机将高速缓存路的控制传送到存储器控制器。此程序可称为偏置翻转,因为用于高速缓存路的控制偏置从主机翻转到控制器,反之亦然。此技术用以实现任何主机高速缓存与存储器装置之间的高速缓存一致性。
命令队列375通过多种处理点跟踪请求,例如是否从推迟队列365推送或弹出请求、是否发起CXL召回、存储器控制器请求、执行命令、或执行原子存储器操作(AMO)。对长AMO的参考是无法在单个执行循环(例如,时钟循环)内完成的AMO。AMO是由存储器控制器的加速器完成的近存储器操作。
说明的控制和数据路径经配置以使得单独的存储、排队和请求优先级排序实现在存在NI请求时执行的同时在CM请求上的向前推进。因此,CM请求将不被NI请求延迟。
图4说明根据实施例的关联高速缓存400的实例。此处,关联高速缓存400包含四个高速缓存集合,即高速缓存集合零405、高速缓存集合一410、高速缓存集合二415和高速缓存集合三420。应注意,每个高速缓存集合对应于存储器地址范围。因此,高速缓存集合一对应于具有前缀为00的地址的所有存储器元件,而高速缓存集合三415对应于具有前缀为10的地址的所有存储器元件。每个高速缓存集合内的高速缓存行表示针对存储器中的元件设定大小的存储元件(例如,寄存器)。每个高速缓存行还可称为“路”。因此,如所说明,相关联高速缓存400是四路关联高速缓存,因为四个路可用于每个高速缓存集合。一般来说,地址在一个高速缓存集合中的存储器请求将加载一路,直到所有的路被使用为止。在另一存储器请求到达的情况下,可进行逐出一路以加载新数据的过程以释放所述路用于新存储器请求。
关联高速缓存400可维持路的元数据。因此,如所说明,关联高速缓存400除了路数据之外还包含标签(例如,元数据),从而得到路零标签和数据425、路一标签和数据430、路二标签和数据435,以及路三标签和数据440。标签数据的实例可包含脏位,用以指示路是否与后备存储器不同步、是否存在使路与主机存储器同步的操作(例如,主机召回在进行中)、或CXL元状态、请求状态等。在实例中,无论请求的源(例如,内部或外部)是否影响存储器控制器的操作,标签数据都可包含请求是内部还是外部以及例如请求是内部且经推迟还是外部且经推迟的标示。
以下是用以保持适用于整个高速缓存集合(例如,并不特定于高速缓存集合中的单个路)的标签数据的数据结构(例如,C型结构)的实例:
以下是用以保持用于高速缓存集合中的给定路的标签数据的数据结构(例如,C型结构)的实例:
图5说明根据实施例的无回写的高速缓存元状态变换的实例。如所说明,数据结构525包含具有若干路的高速缓存集合530。所述路包含标签数据和图4中所说明的数据。另外,每个方式包含额外存储器元件(例如,寄存器、状态放置存储器(place in statememory)等)以保持路的初始元数据状态。在实例中,存储器元件是标签数据中的另一字段。因此,路零具有存储器元件535以在首次写入路零时(例如,在初始化之后)保持原始元状态。类似地,单独存储器元件540跟踪路一的原始元状态,且存储器元件545保持第n路的原始元状态。
在实例中,用于每个存储器行的高速缓存标签含有用于存储器(例如,存储器元件535-545)中的元状态值的两个位以及用于当前元状态值的两个位。当逐出高速缓存行时,比较当前元状态和存储器元状态值以确定存储器中的元状态是否需要写入。一般来说,在当前元状态和存储器元状态不同时,需要写入元状态。取决于配置,此处的相同可在元状态字段的子集上。因此,两个值不必逐位相同,而是等同的一组指定(例如,预定义)元状态字段的值使得确定当前元状态和存储器元状态相同。
以下实例说明跟踪原始元状态且将其与当前元状态比较可为有用的情况。考虑使用CXL.mem从CxL装置读取存储器行的主机。存储器侧高速缓存不具有高速缓存的所请求行,因此从存储器读取所述行,且将所述行放置于高速缓存中,其中例如存储器元状态标记为无效。CXL.mem读取指示正针对写入操作请求所述行,且将当前元状态标记为“主机存取用于写入操作”。接着,CXL存储器装置上的装置加速器(例如,AMU)发布对所述行的读取存取,从而使所述行从主机召回。此处,召回是存储器装置对主机将行的控制权交给存储器装置的请求。这也称为偏置翻转。
主机返回所述行,指示所述行未写入——高速缓存中未修改数据——且归因于召回,由主机将当前元状态设置成无效。完成加速器读取操作,从而在响应中返回已读取的数据。此时,在高速缓存中存取不同地址,从而使先前存储器行被逐出。此处,所述逐出是静默逐出,不需要将数据或元状态回写到存储器,因为存储器元状态被标记为无效,且当前元状态也被标记为无效。因此,避免到存储器的回写。
流程550提供以上情境的更通用表示。将元状态写入到高速缓存行标签(操作555)且单独地写入到存储器元件(例如,存储器元件535)以跟踪原始元状态(操作560)。一些操作使得接收到对元状态的更新(操作565)且将其写入(操作570)到当前元状态。对元状态的另一更新被接收(操作575)且写入(操作580)到当前元状态。当逐出所述路时,将在操作560中写入的原始元状态与当前元状态进行比较(操作585)。如果它们相同,则归因于元状态而无需对存储器的回写(操作590)。在所说明的实例中,在操作575处接收的元状态匹配在操作560处写入的原始元状态。
图6说明根据实施例的用于静默高速缓存行逐出的方法600的实例的流程图。方法600的操作由例如上文或下方描述的计算硬件(例如,处理电路系统)执行。
在操作605,在存储器装置处从主机接收存储器操作。在实例中,存储器操作在存储器装置的高速缓存行(例如,路)中建立(例如,包含、限定、指示等)数据和元数据。在实例中,元数据是主机与存储器装置之间的接口的连接元数据。在实例中,所述接口是计算高速链路(CXL)互连件。在实例中,元数据是CXL元状态。
在实例中,针对高速缓存行中的数据维持脏标记。此处,响应于高速缓存行中的数据的改变而设置脏标记。
在操作610,将元数据存储在对应于高速缓存行的存储器元件中。在实例中,元数据存储在高速缓存行的标签存储区中。在实例中,所述存储器元件是专用于高速缓存行的寄存器。
在操作615处,标识用以逐出高速缓存行的逐出触发事件。
在操作620处,响应于逐出触发事件,将高速缓存行的当前元数据与存储器元件中的元数据进行比较以确定元数据是否已改变。在实例中,比较高速缓存行的当前元数据与存储器元件中的元数据包含确定脏标记的状态。
在实例中,方法600可包含在存储器操作的接收与逐出触发事件之间接收对高速缓存行中的元数据的多个更新的操作。
在操作625,响应于所述元数据基于操作620中的比较未改变,逐出所述高速缓存行而不写入到后备存储器。在实例中,响应于脏标记未设置,将高速缓存行逐出而不写入到后备存储器。
方法600可包含额外操作以处理产生对后备存储器的回写的改变的元状态。举例来说,可接收在存储器装置的第二高速缓存行中建立第二数据和第二元数据的主机的第二存储器操作。第二元数据可存储在对应于第二高速缓存行的第二存储器元件中。当标识用以逐出第二高速缓存行的第二逐出触发事件时,可将第二高速缓存行的第二当前元数据与第二存储器元件相比较以确定第二元数据是否已改变。随后可响应于第二元数据被改变而将第二数据和第二元数据写入到后备存储器。
图7说明实例机器700的框图,本文所论述的任何一或多种技术(例如方法)可结合所述机器执行。如本文中所描述,实例可包含机器700中的逻辑或多个组件或机构,或可由其操作。电路系统(例如,处理电路系统)是在机器700的有形实体中实施的电路集合,所述实体包含硬件(例如,简单电路、门、逻辑等)。电路系统成员资格可随时间推移而灵活变化。电路系统包含可在操作时单独或以组合方式执行指定操作的部件。在实例中,可将电路系统的硬件不变地设计成执行特定操作(例如,硬连线)。在实例中,电路系统的硬件可包含可变地连接的物理组件(例如,执行单元、晶体管、简单电路等),所述物理组件包含以物理方式修改(例如,不变集结粒的磁性、电气可移动放置等)以编码特定操作的指令的机器可读媒体。在连接物理组件时,硬件成分的基础电学性质例如从绝缘体改变成导体,或反之亦然。这些指令使嵌入式硬件(例如,执行单元或加载机构)能够经由可变连接在硬件中形成电路系统的部件,以便在操作时执行特定操作的部分。因此,在实例中,机器可读媒体元件是电路系统的一部分或在装置操作时以通信方式耦合到电路系统的其它组件。在实例中,物理组件中的任一者可用于多于一个电路系统中的多于一个部件中。举例来说,在操作下,执行单元可在一个时间点用于第一电路系统中的第一电路,且在不同时间由第一电路系统中的第二电路重新使用,或由第二电路系统中的第三电路重新使用。以下是这些组件关于机器700的额外实例。
在替代实施例中,机器700可用作独立装置或可连接(例如,联网)到其它机器。在联网部署中,机器700可在服务器-客户端网络环境中以服务器机器、客户端机器或这两者的能力操作。在实例中,机器700可充当对等(P2P)(或其它分布式)网络环境中的对等机器。机器700可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、移动电话、网络设备、网络路由器、交换机或网桥,或能够(顺序或以其它方式)执行指定待由所述机器采取的动作的指令的任何机器。此外,虽然仅说明单个机器,但术语“机器”还应视为包含个别地或共同地执行一组(或多组)指令以执行本文所论述的任何一或多种方法(如,云计算、软件即服务(SaaS)、其它计算机集群配置)的任何机器集合。
机器(例如,计算机系统)700可包含硬件处理器702(例如,中央处理单元(CPU)、图形处理单元(GPU)、硬件处理器核心或其任何组合)、主存储器704、静态存储器(例如,固件、微码的存储器或存储装置、基本输入输出(BIOS)、统一可扩展固件接口(UEFI)等)706,以及大容量存储装置708(例如,硬盘驱动器、磁带机、快闪存储装置或其它块装置),其中的一些或全部可经由互连件(例如,总线)730彼此通信。机器700还可包含显示单元710、字母数字输入装置712(例如,键盘)和用户界面(UI)导航装置714(例如,鼠标)。在实例中,显示单元710、输入装置712和UI导航装置714可以是触摸屏显示器。机器700可另外包含存储装置(例如,驱动单元)708、信号生成装置718(例如,扬声器)、网络接口装置720和一或多个传感器716,例如全球定位系统(GPS)传感器、指南针、加速度计或其它传感器。机器700可包含输出控制器728,例如串行(例如,通用串行总线(USB)、并行或其它有线或无线(例如,红外(IR)、近场通信(NFC)等)连接,以连通或控制一或多个外围装置(例如,打印机、读卡器等)。
处理器702、主存储器704、静态存储器706或大容量存储装置708的寄存器可为或包含上面存储有一或多组数据结构或指令724(例如,软件)的机器可读媒体722,所述数据结构或指令体现本文中描述的任一或多种技术或功能,或被所述技术或功能利用。指令724还可在其由机器700执行期间完全或至少部分地驻存在处理器702、主存储器704、静态存储器706或大容量存储装置708的寄存器中的任一者内。在实例中,硬件处理器702、主存储器704、静态存储器706或大容量存储装置708中的一者或任何组合可构成机器可读媒体722。虽然机器可读媒体722被说明为单个媒体,但术语“机器可读媒体”可包含经配置以存储一或多个指令724的单个媒体或多个媒体(例如,集中式或分布式数据库,或相关联高速缓存和服务器)。
术语“机器可读媒体”可包含能够存储、编码或承载供机器700执行且使机器700执行本公开的技术中的任何一或多者的指令的任何媒体,或能够存储、编码或承载由此类指令使用或与此类指令相关联的数据结构的任何媒体。非限制性机器可读媒体实例可包含固态存储器、光学媒体、磁性媒体和信号(例如,射频信号、其它基于光子的信号、声音信号等)。在实例中,非暂时性机器可读媒体包括具有多个粒子的机器可读媒体,所述粒子具有不变(例如,静止)质量,且因此为物质组成。因此,非暂时性机器可读媒体是不包含暂时性传播信号的机器可读媒体。非暂时性机器可读媒体的特定实例可包含:非易失性存储器,例如半导体存储器装置(例如,电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM))和快闪存储器装置;磁盘,例如内部硬盘和可装卸盘;磁光盘;以及CD-ROM和DVD-ROM盘。
在实例中,存储或以其它方式提供在机器可读媒体722上的信息可表示指令724,例如指令724本身或可从中导出指令724的格式。可从中导出指令724的此格式可包含源代码、已编码指令(例如,呈压缩或加密形式)、打包指令(例如,拆分成多个包)等。表示机器可读媒体722中的指令724的信息可由处理电路系统处理成指令以实施本文中所论述的操作中的任一者。举例来说,从信息导出指令724(例如,由处理电路系统处理)可包含:编译(例如,从源代码、目标代码等)、解译、加载、组织(例如,动态地或静态地链接)、编码、解码、加密、解密、打包、解包或以其它方式将信息操控到指令724中。
在实例中,指令724的导出可包含(例如,通过处理电路系统)对信息的汇编、编译或解译以从由机器可读媒体722提供的一些中间或预处理格式形成指令724。信息在以多个部分提供时可组合、解包和修改以形成指令724。举例来说,信息可在一个或若干个远程服务器上的多个压缩源码包(或目标代码,或二进制可执行代码等)中。源代码包可在经由网络传输时加密,且在必要时解密、解压缩、汇编(例如,链接),且在本地机器处编译或解译(例如,到可独立执行的库中等),且由本地机器执行。
还可利用数个传送协议中的任一者(例如,帧中继、互联网协议(IP)、传输控制协议(TCP)、用户数据报协议(UDP)、超文本传输协议(HTTP)等)经由网络接口装置720使用传输媒体在通信网络726上传输或接收指令724。实例通信网络可包含局域网(LAN)、广域网(WAN)、分组数据网络(例如,互联网)、LoRa/LoRaWAN或卫星通信网络、移动电话网络(例如,蜂窝网络,例如符合3G、4G LTE/LTE-A或5G标准的那些蜂窝网络)、普通老式电话(POTS)网络和无线数据网络(例如,称为的电气电子工程师学会(IEEE)802.11系列标准、IEEE 802.15.4系列标准、对等(P2P)网络等)。在实例中,网络接口装置720可包含一或多个物理插口(例如,以太网、同轴或电话插口)或一或多个天线以连接到通信网络726。在实例中,网络接口装置720可包含多个天线以使用单输入多输出(SIMO)、多输入多输出(MIMO)或多输入单输出(MISO)技术中的至少一者进行无线通信。术语“传输媒体”应视为包含能够存储、编码或承载供机器700执行的指令的任何无形媒体,且包含数字或模拟通信信号或用以促进此类软件的通信的其它无形媒体。传输媒体是机器可读媒体。
额外注释和实例
实例1为一种用于静默高速缓存行逐出的设备,所述设备包括经配置以从外部实体接收存储器操作的接口、包含高速缓存行的高速缓存,以及处理电路系统,所述处理电路系统经配置以:经由所述接口接收存储器操作,所述存储器操作在所述高速缓存行中建立数据和元数据;将所述元数据存储在对应于所述高速缓存行的存储器元件中;标识用以逐出所述高速缓存行的逐出触发事件;响应于所述逐出触发事件,比较所述高速缓存行的当前元数据与所述存储器元件中的所述元数据以确定所述元数据是否已改变;以及响应于所述元数据未改变,逐出所述高速缓存行而不写入到后备存储器。
在实例2中,根据实例1所述的主题,其中所述元数据是所述主机与所述存储器装置之间的接口的连接元数据。
在实例3中,根据实例2所述的主题,其中所述接口是计算高速链路(CXL)互连件。
在实例4中,根据实例3所述的主题,其中所述元数据是CXL元状态。
在实例5中,根据实例1-4中任一者所述的主题,其中针对所述高速缓存行中的所述数据维持脏标记,且其中响应于所述高速缓存行中的数据的改变而设置所述脏标记。
在实例6中,根据实例5所述的主题,其中,为比较所述高速缓存行的所述当前元数据与所述存储器元件中的所述元数据,所述处理电路系统经配置以确定所述脏标记的状态,且其中响应于所述脏标记未设置,执行逐出所述高速缓存行而不写入到所述后备存储器。
在实例7中,根据实例1-6中任一者所述的主题,其中所述处理电路系统经配置以在所述存储器操作的接收与所述逐出触发事件之间接收对所述高速缓存行中的所述元数据的多个更新。
在实例8中,根据实例1-7中任一者所述的主题,其中所述处理电路系统经配置以:经由所述接口接收所述主机的第二存储器操作,所述第二存储器操作在所述存储器装置的第二高速缓存行中建立第二数据和第二元数据;将所述第二元数据存储在对应于所述第二高速缓存行的第二存储器元件中;标识用以逐出所述第二高速缓存行的第二逐出触发事件;响应于所述第二逐出触发事件,比较所述第二高速缓存行的第二当前元数据与所述第二存储器元件以确定所述第二元数据是否已改变;以及响应于所述第二元数据已改变,将所述第二数据和所述第二元数据写入到所述后备存储器。
在实例9中,根据实例1-8中任一者所述的主题,其中所述元数据存储在所述高速缓存行的标签存储区中。
在实例10中,根据实例1-9中任一者所述的主题,其中所述存储器元件是专用于所述高速缓存行的寄存器。
实例11是一种用于静默高速缓存行逐出的方法,所述方法包括:在存储器装置处从主机接收存储器操作,所述存储器操作在所述存储器装置的高速缓存行中建立数据和元数据;将所述元数据存储在对应于所述高速缓存行的存储器元件中;标识用以逐出所述高速缓存行的逐出触发事件;响应于所述逐出触发事件,比较所述高速缓存行的当前元数据与所述存储器元件中的所述元数据以确定所述元数据是否已改变;以及响应于所述元数据未改变,逐出所述高速缓存行而不写入到后备存储器。
在实例12中,根据实例11所述的主题,其中所述元数据是所述主机与所述存储器装置之间的接口的连接元数据。
在实例13中,根据实例12所述的主题,其中所述接口是计算高速链路(CXL)互连件。
在实例14中,根据实例13所述的主题,其中所述元数据是CXL元状态。
在实例15中,根据实例11-14中任一者所述的主题,其中针对所述高速缓存行中的所述数据维持脏标记,且其中响应于所述高速缓存行中的数据的改变而设置所述脏标记。
在实例16中,根据实例15所述的主题,其中,比较所述高速缓存行的所述当前元数据与所述存储器元件中的所述元数据包含确定所述脏标记的状态,且其中响应于所述脏标记未设置,执行逐出所述高速缓存行而不写入到所述后备存储器。
在实例17中,根据实例11-16中任一者所述的主题,包括在所述存储器操作的接收与所述逐出触发事件之间接收对所述高速缓存行中的所述元数据的多个更新。
在实例18中,根据实例11-17中任一者所述的主题,包括:接收所述主机的第二存储器操作,所述第二存储器操作在所述存储器装置的第二高速缓存行中建立第二数据和第二元数据;将所述第二元数据存储在对应于所述第二高速缓存行的第二存储器元件中;标识用以逐出所述第二高速缓存行的第二逐出触发事件;响应于所述第二逐出触发事件,比较所述第二高速缓存行的第二当前元数据与所述第二存储器元件以确定所述第二元数据是否已改变;以及响应于所述第二元数据已改变,将所述第二数据和所述第二元数据写入到所述后备存储器。
在实例19中,根据实例11-18中任一者所述的主题,其中所述元数据存储在所述高速缓存行的标签存储区中。
在实例20中,根据实例11-19中任一者所述的主题,其中所述存储器元件是专用于所述高速缓存行的寄存器。
实例21为一种包含用于静默高速缓存行逐出的指令的机器可读媒体,所述指令在由处理电路系统执行时使所述处理电路系统执行包括以下各项的操作:在存储器装置处从主机接收存储器操作,所述存储器操作在所述存储器装置的高速缓存行中建立数据和元数据;将所述元数据存储在对应于所述高速缓存行的存储器元件中;标识用以逐出所述高速缓存行的逐出触发事件;响应于所述逐出触发事件,比较所述高速缓存行的当前元数据与所述存储器元件中的所述元数据以确定所述元数据是否已改变;以及响应于所述元数据未改变,逐出所述高速缓存行而不写入到后备存储器。
在实例22中,根据实例21所述的主题,其中所述元数据是所述主机与所述存储器装置之间的接口的连接元数据。
在实例23中,根据实例22所述的主题,其中所述接口是计算高速链路(CXL)互连件。
在实例24中,根据实例23所述的主题,其中所述元数据是CXL元状态。
在实例25中,根据实例21-24中任一者所述的主题,其中针对所述高速缓存行中的所述数据维持脏标记,且其中响应于所述高速缓存行中的数据的改变而设置所述脏标记。
在实例26中,根据实例25所述的主题,其中,比较所述高速缓存行的所述当前元数据与所述存储器元件中的所述元数据包含确定所述脏标记的状态,且其中响应于所述脏标记未设置,执行逐出所述高速缓存行而不写入到所述后备存储器。
在实例27中,根据实例21-26中任一者所述的主题,其中所述操作包括在所述存储器操作的接收与所述逐出触发事件之间接收对所述高速缓存行中的所述元数据的多个更新。
在实例28中,根据实例21-27中任一者所述的主题,其中所述操作包括:接收所述主机的第二存储器操作,所述第二存储器操作在所述存储器装置的第二高速缓存行中建立第二数据和第二元数据;将所述第二元数据存储在对应于所述第二高速缓存行的第二存储器元件中;标识用以逐出所述第二高速缓存行的第二逐出触发事件;响应于所述第二逐出触发事件,比较所述第二高速缓存行的第二当前元数据与所述第二存储器元件以确定所述第二元数据是否已改变;以及响应于所述第二元数据已改变,将所述第二数据和所述第二元数据写入到所述后备存储器。
在实例29中,根据实例21-28中任一者所述的主题,其中所述元数据存储在所述高速缓存行的标签存储区中。
在实例30中,根据实例21-29中任一者所述的主题,其中所述存储器元件是专用于所述高速缓存行的寄存器。
实例31是一种用于静默高速缓存行逐出的系统,所述系统包括:用于在存储器装置处从主机接收存储器操作的构件,所述存储器操作在所述存储器装置的高速缓存行中建立数据和元数据;用于将所述元数据存储在对应于所述高速缓存行的存储器元件中的构件;用于标识用以逐出所述高速缓存行的逐出触发事件的构件;用于响应于所述逐出触发事件而比较所述高速缓存行的当前元数据与所述存储器元件中的所述元数据以确定所述元数据是否已改变的构件;以及用于响应于所述元数据未改变而逐出所述高速缓存行而不写入到后备存储器的构件。
在实例32中,根据实例31所述的主题,其中所述元数据是所述主机与所述存储器装置之间的接口的连接元数据。
在实例33中,根据实例32所述的主题,其中所述接口是计算高速链路(CXL)互连件。
在实例34中,根据实例33所述的主题,其中所述元数据是CXL元状态。
在实例35中,根据实例31-34中任一者所述的主题,其中针对所述高速缓存行中的所述数据维持脏标记,且其中响应于所述高速缓存行中的数据的改变而设置所述脏标记。
在实例36中,根据实例35所述的主题,其中,用于比较所述高速缓存行的所述当前元数据与所述存储器元件中的所述元数据的构件包含用于确定所述脏标记的状态的构件,且其中响应于所述脏标记未设置,执行逐出所述高速缓存行而不写入到所述后备存储器。
在实例37中,根据实例31-36中任一者所述的主题,包括用于在所述存储器操作的接收与所述逐出触发事件之间接收对所述高速缓存行中的所述元数据的多个更新的构件。
在实例38中,根据实例31-37中任一者所述的主题,包括:用于接收所述主机的第二存储器操作的构件,所述第二存储器操作在所述存储器装置的第二高速缓存行中建立第二数据和第二元数据;用于将所述第二元数据存储在对应于所述第二高速缓存行的第二存储器元件中的构件;用于标识用以逐出所述第二高速缓存行的第二逐出触发事件的构件;用于响应于所述第二逐出触发事件而比较所述第二高速缓存行的第二当前元数据与所述第二存储器元件以确定所述第二元数据是否已改变的构件;以及用于响应于所述第二元数据已改变而将所述第二数据和所述第二元数据写入到所述后备存储器的构件。
在实例39中,根据实例31-38中任一者所述的主题,其中所述元数据存储在所述高速缓存行的标签存储区中。
在实例40中,根据实例31-39中任一者所述的主题,其中所述存储器元件是专用于所述高速缓存行的寄存器。
实例41是至少一种包含指令的机器可读媒体,所述指令在由处理电路系统执行时使所述处理电路系统执行操作以实施实例1-40中的任一者。
实例42是一种设备,其包括用以实施实例1-40中任一者的构件。
实例43是一种系统,其用以实施实例1-40中的任一者。
实例44是一种方法,其用以实施实例1-40中的任一者。
实例45为至少一种机器可读存储媒体,其包括表示指令的信息,所述指令在由处理电路系统执行时使所述处理电路系统执行实例1-40中的任一者所述的操作。
以上详细描述包含对附图的参考,所述附图形成详细描述的部分。各图借助于说明来展示可实践的具体实施例。这些实施例在本文中也称作“实例”。此类实例可包含除了所展示或描述的那些要素之外的要素。然而,本发明人还预期其中仅提供所展示或描述的那些要素的实例。此外,本发明人还预期使用相对于特定实例(或其一或多个方面)或相对于本文展示或描述的其它实例(或其一或多个方面)而展示或描述的那些要素的任何组合或排列的实例(或其一或多个方面)。
在此文献中参考的所有公开案、专利和专利文献以全文引用的方式并入本文中,就如同以引用的方式个别地并入一般。在此文献与以引用的方式并入的那些文献之间发生用法不一致的情况下,所并入的参考文献中的用法应被视为补充此文献的用法;对于不可调和的不一致,此文献中的用法起主导作用。
在本文件中,如专利文件中常见,使用术语“一”以包含一个或多于一个,这与“至少一个”或“一或多个”的任何其它例子或用法无关。在本文件中,术语“或”用于指代非排它性或,使得除非另有指示,否则“A或B”包含“A而非B”、“B而非A”以及“A和B”。在所附权利要求书中,用语“包含”和“其中”用作相应用语“包括”和“在其中”的简明等效用语。另外,在所附权利要求书中,用语“包含”和“包括”是开放的,即,包含除了权利要求项中列在此类用语后的那些要素之外的要素的系统、装置、物件或过程仍被认为处于所述权利要求项的范围内。此外,在所附权利要求书中,用语“第一”、“第二”和“第三”等仅用作标记,且并非旨在对其对象施加数字要求。
以上描述旨在进行说明而非限制。举例来说,上述实例(或其一或多个方面)可彼此组合使用。例如所属领域的技术人员在查阅以上描述后可使用其它实施例。摘要是为了使读者能够快速确定技术公开的本质,且在理解所述摘要不会用于解释或限制权利要求的范围或含义的情况下提交。另外,在以上具体实施方式中,可将各种特征分组在一起以简化本公开。此情况不应解释为期望未要求的公开特征对任何权利要求来说是必需的。实际上,本发明主题可在于比特定公开的实施例的所有特征要少。因此,所附权利要求书特此并入于具体实施方式中,其中每个权利要求就其自身而言作为单独实施例。实施例的范围应参考所附权利要求书以及此类权利要求被赋予的等同物的完整范围而确定。
Claims (24)
1.一种设备,其包括:
接口,其经配置以从外部实体接收存储器操作;
高速缓存,其包含高速缓存行;以及
处理电路系统,其经配置以:
经由所述接口接收存储器操作,所述存储器操作在所述高速缓存行中建立数据和元数据;
将所述元数据存储在对应于所述高速缓存行的存储器元件中;
标识用以逐出所述高速缓存行的逐出触发事件;
响应于所述逐出触发事件,比较所述高速缓存行的当前元数据与所述存储器元件中的所述元数据以确定所述元数据是否已改变;以及
响应于所述元数据未改变,逐出所述高速缓存行而不写入到后备存储器。
2.根据权利要求1所述的设备,其中所述元数据是所述主机与所述存储器装置之间的接口的连接元数据。
3.根据权利要求2所述的设备,其中所述接口是计算高速链路CXL互连件。
4.根据权利要求3所述的设备,其中所述元数据是CXL元状态。
5.根据权利要求1所述的设备,其中针对所述高速缓存行中的所述数据维持脏标记,且其中响应于所述高速缓存行中的数据的改变而设置所述脏标记。
6.根据权利要求5所述的设备,其中,为比较所述高速缓存行的所述当前元数据与所述存储器元件中的所述元数据,所述处理电路系统经配置以确定所述脏标记的状态,且其中响应于所述脏标记未设置,执行逐出所述高速缓存行而不写入到所述后备存储器。
7.根据权利要求1所述的设备,其中所述处理电路系统经配置以在所述存储器操作的接收与所述逐出触发事件之间接收对所述高速缓存行中的所述元数据的多个更新。
8.根据权利要求1所述的设备,其中所述处理电路系统经配置以:
经由所述接口接收所述主机的第二存储器操作,所述第二存储器操作在所述存储器装置的第二高速缓存行中建立第二数据和第二元数据;
将所述第二元数据存储在对应于所述第二高速缓存行的第二存储器元件中;
标识用以逐出所述第二高速缓存行的第二逐出触发事件;
响应于所述第二逐出触发事件,比较所述第二高速缓存行的第二当前元数据与所述第二存储器元件以确定所述第二元数据是否已改变;以及
响应于所述第二元数据已改变,将所述第二数据和所述第二元数据写入到所述后备存储器。
9.一种方法,其包括:
在存储器装置处从主机接收存储器操作,所述存储器操作在所述存储器装置的高速缓存行中建立数据和元数据;
将所述元数据存储在对应于所述高速缓存行的存储器元件中;
标识用以逐出所述高速缓存行的逐出触发事件;
响应于所述逐出触发事件,比较所述高速缓存行的当前元数据与所述存储器元件中的所述元数据以确定所述元数据是否已改变;以及
响应于所述元数据未改变,逐出所述高速缓存行而不写入到后备存储器。
10.根据权利要求9所述的方法,其中所述元数据是所述主机与所述存储器装置之间的接口的连接元数据。
11.根据权利要求10所述的方法,其中所述接口是计算高速链路CXL互连件。
12.根据权利要求11所述的方法,其中所述元数据是CXL元状态。
13.根据权利要求9所述的方法,其中针对所述高速缓存行中的所述数据维持脏标记,且其中响应于所述高速缓存行中的数据的改变而设置所述脏标记。
14.根据权利要求13所述的方法,其中,比较所述高速缓存行的所述当前元数据与所述存储器元件中的所述元数据包含确定所述脏标记的状态,且其中响应于所述脏标记未设置,执行逐出所述高速缓存行而不写入到所述后备存储器。
15.根据权利要求9所述的方法,其包括在所述存储器操作的接收与所述逐出触发事件之间接收对所述高速缓存行中的所述元数据的多个更新。
16.根据权利要求9所述的方法,其包括:
接收所述主机的第二存储器操作,所述第二存储器操作在所述存储器装置的第二高速缓存行中建立第二数据和第二元数据;
将所述第二元数据存储在对应于所述第二高速缓存行的第二存储器元件中;
标识用以逐出所述第二高速缓存行的第二逐出触发事件;
响应于所述第二逐出触发事件,比较所述第二高速缓存行的第二当前元数据与所述第二存储器元件以确定所述第二元数据是否已改变;以及
响应于所述第二元数据已改变,将所述第二数据和所述第二元数据写入到所述后备存储器。
17.一种非暂时性机器可读媒体,其包含指令,所述指令在由处理电路系统执行时使所述处理电路系统执行包括以下各项的操作:
在存储器装置处从主机接收存储器操作,所述存储器操作在所述存储器装置的高速缓存行中建立数据和元数据;
将所述元数据存储在对应于所述高速缓存行的存储器元件中;
标识用以逐出所述高速缓存行的逐出触发事件;
响应于所述逐出触发事件,比较所述高速缓存行的当前元数据与所述存储器元件中的所述元数据以确定所述元数据是否已改变;以及
响应于所述元数据未改变,逐出所述高速缓存行而不写入到后备存储器。
18.根据权利要求17所述的非暂时性机器可读媒体,其中所述元数据是所述主机与所述存储器装置之间的接口的连接元数据。
19.根据权利要求18所述的非暂时性机器可读媒体,其中所述接口是计算高速链路CXL互连件。
20.根据权利要求19所述的非暂时性机器可读媒体,其中所述元数据是CXL元状态。
21.根据权利要求17所述的非暂时性机器可读媒体,其中针对所述高速缓存行中的所述数据维持脏标记,且其中响应于所述高速缓存行中的数据的改变而设置所述脏标记。
22.根据权利要求21所述的非暂时性机器可读媒体,其中比较所述高速缓存行的所述当前元数据与所述存储器元件中的所述元数据包含确定所述脏标记的状态,且其中响应于所述脏标记未设置,执行逐出所述高速缓存行而不写入到所述后备存储器。
23.根据权利要求17所述的非暂时性机器可读媒体,其中所述操作包括在所述存储器操作的接收与所述逐出触发事件之间接收对所述高速缓存行中的所述元数据的多个更新。
24.根据权利要求17所述的非暂时性机器可读媒体,其中所述操作包括:
接收所述主机的第二存储器操作,所述第二存储器操作在所述存储器装置的第二高速缓存行中建立第二数据和第二元数据;
将所述第二元数据存储在对应于所述第二高速缓存行的第二存储器元件中;
标识用以逐出所述第二高速缓存行的第二逐出触发事件;
响应于所述第二逐出触发事件,比较所述第二高速缓存行的第二当前元数据与所述第二存储器元件以确定所述第二元数据是否已改变;以及
响应于所述第二元数据已改变,将所述第二数据和所述第二元数据写入到所述后备存储器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/823,408 US20240070083A1 (en) | 2022-08-30 | 2022-08-30 | Silent cache line eviction |
US17/823,408 | 2022-08-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117632784A true CN117632784A (zh) | 2024-03-01 |
Family
ID=89999768
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310781890.3A Pending CN117632784A (zh) | 2022-08-30 | 2023-06-29 | 静默高速缓存行逐出 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20240070083A1 (zh) |
CN (1) | CN117632784A (zh) |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5860105A (en) * | 1995-11-13 | 1999-01-12 | National Semiconductor Corporation | NDIRTY cache line lookahead |
US5924121A (en) * | 1996-12-23 | 1999-07-13 | International Business Machines Corporation | Adaptive writeback of cache line data in a computer operated with burst mode transfer cycles |
US6185658B1 (en) * | 1997-12-17 | 2001-02-06 | International Business Machines Corporation | Cache with enhanced victim selection using the coherency states of cache lines |
US7380070B2 (en) * | 2005-02-17 | 2008-05-27 | Texas Instruments Incorporated | Organization of dirty bits for a write-back cache |
WO2007041392A2 (en) * | 2005-09-30 | 2007-04-12 | Unisys Corporation | Cache coherency in an extended multiple processor environment |
US7752180B1 (en) * | 2006-12-12 | 2010-07-06 | Network Appliance, Inc. | File system group consistency point |
US20230401311A1 (en) * | 2022-06-13 | 2023-12-14 | Rambus Inc. | Determining integrity-driven error types in memory buffer devices |
-
2022
- 2022-08-30 US US17/823,408 patent/US20240070083A1/en active Pending
-
2023
- 2023-06-29 CN CN202310781890.3A patent/CN117632784A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20240070083A1 (en) | 2024-02-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3920034B1 (en) | Systems and methods for scalable and coherent memory devices | |
US8572614B2 (en) | Processing workloads using a processor hierarchy system | |
US11023410B2 (en) | Instructions for performing multi-line memory accesses | |
US10642727B1 (en) | Managing migration events performed by a memory controller | |
US8930596B2 (en) | Concurrent array-based queue | |
US10459662B1 (en) | Write failure handling for a memory controller to non-volatile memory | |
US20220027327A1 (en) | Distributed vfs with shared page cache | |
CN117631974A (zh) | 跨越基于存储器的通信队列的多信道接口的存取请求重新排序 | |
US20240028390A1 (en) | Methods and systems for communications between hardware components | |
US11853216B2 (en) | High bandwidth gather cache | |
US20240070083A1 (en) | Silent cache line eviction | |
US12013788B2 (en) | Evicting a cache line with pending control request | |
US11914516B1 (en) | Memory side cache request handling | |
US11960403B2 (en) | Variable execution time atomic operations | |
US20240070060A1 (en) | Synchronized request handling at a memory device | |
US11940919B2 (en) | Recall pending cache line eviction | |
US20240069800A1 (en) | Host-preferred memory operation | |
US11960768B2 (en) | Memory-side cache directory-based request queue | |
US12008243B2 (en) | Reducing index update messages for memory-based communication queues | |
US20240069805A1 (en) | Access request reordering for memory-based communication queues | |
US20240069802A1 (en) | Method of submitting work to fabric attached memory | |
US20240069804A1 (en) | Control parameter address virtualization | |
US20240028526A1 (en) | Methods and systems for requesting atomic operations in a computing system | |
WO2023235003A1 (en) | Command fencing for memory-based communication queues |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |