CN117632794A - 调用待决高速缓存行逐出 - Google Patents
调用待决高速缓存行逐出 Download PDFInfo
- Publication number
- CN117632794A CN117632794A CN202310787873.0A CN202310787873A CN117632794A CN 117632794 A CN117632794 A CN 117632794A CN 202310787873 A CN202310787873 A CN 202310787873A CN 117632794 A CN117632794 A CN 117632794A
- Authority
- CN
- China
- Prior art keywords
- call
- queue
- memory
- request
- cache line
- 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 57
- 238000000034 method Methods 0.000 claims abstract description 47
- 238000012545 processing Methods 0.000 claims description 44
- 230000008569 process Effects 0.000 claims description 17
- 230000005540 biological transmission Effects 0.000 claims description 15
- 230000008859 change Effects 0.000 claims description 12
- 238000004891 communication Methods 0.000 description 15
- 239000000872 buffer Substances 0.000 description 10
- 230000003068 static effect Effects 0.000 description 6
- 238000007726 management method Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 3
- 238000012913 prioritisation Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000000903 blocking effect Effects 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
- 239000002245 particle Substances 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 241000321453 Paranthias colonus Species 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000004458 analytical method 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
- 230000008901 benefit Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000000295 complement 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
- 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
- 230000000670 limiting effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 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
- 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
- 230000000717 retained effect Effects 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
- 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/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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
-
- 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
- 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
Abstract
本文中描述调用未决高速缓存行逐出的系统及技术。为高速缓存行保持包含延期存储器请求的队列。所述队列的元数据存储于高速缓存行标签中。当需要调用时,所述元数据从所述标签写入到由存储器请求ID引用的第一调用存储装置。在所述调用请求被传输之后,所述存储器请求ID被写入到由所述调用请求的消息ID引用的第二调用存储装置。在接收到对所述调用请求的响应之后,所述高速缓存行的所述队列可通过使用所述响应中的所述消息ID以从所述第二调用存储装置查找所述存储器请求ID、接着使用所述存储器请求ID从所述第一调用存储装置查找所述元数据及接着将所述元数据写入到所述高速缓存行的所述标签中来还原。
Description
关于政府支持的声明
本发明根据第DE-NA0003525号协议在美国政府的支持下完成,由SANDIA II授予。美国政府对本发明享有一定权利。
技术领域
本文中描述的实施例大体上涉及计算机存储器,且更明确来说,涉及调用待决高速缓存行逐出。
背景技术
计算机或其它电子装置的存储器装置可被分类为易失性及非易失性存储器。易失性存储器使用电力来维持其数据(例如,被周期性地刷新),且包含随机存取存储器(RAM)、动态随机存取存储器(DRAM)或同步动态随机存取存储器(SDRAM)等。非易失性存储器大体上在没有电源时留存所存储数据,且包含快闪存储器、只读存储器(ROM)、电可擦除可编程ROM(EEPROM)、静态RAM(SRAM)、可擦除可编程ROM(EPROM)、电阻可变存储器、相变存储器、存储类存储器、电阻随机存取存储器(RRAM)及磁阻性随机存取存储器(MRAM)等。持久存储器是其中存储于媒体中的数据在系统复位或电力循环之后可用的系统的架构性质。在实例中,非易失性存储器媒体可用于构建具有持久存储器模型的系统。
存储器装置可耦合到主机(例如主机计算装置)以存储数据、命令及/或指令以供主机在计算机或电子系统正操作时使用。举例来说,数据、命令或指令可在计算或其它电子系统的操作期间在主机与存储器装置之间传送。
可应用各种协议或标准以促进主机与一或多个其它装置(例如存储器缓冲器、加速器或其它输入/输出装置)之间的通信。在实例中,无序协议(例如计算快速链路(CXL))可用于提供高带宽及低延时连接性。
发明内容
本公开的一个方面提供一种设备,其包括:高速缓存,其包含高速缓存行;到外部实体的接口;及处理电路系统,其经配置以:维持所述高速缓存行的队列,所述队列包含在当前与所述高速缓存行相关联的存储器地址上操作的延期存储器请求,所述队列的元数据存储于所述高速缓存行的标签中;确定需要调用以处理所述延期存储器请求,所述调用是对所述高速缓存行的控制从所述外部实体改变;响应于需要所述调用的所述确定,将所述队列的所述元数据从所述标签写入到对应于所述高速缓存行的第一调用存储装置,所述第一调用存储装置由对应于所述延期存储器请求的存储器请求ID引用;经由所述接口将包含消息ID的调用请求传输到所述外部实体;响应于所述调用请求的传输,将所述存储器请求ID写入到由所述消息ID引用的第二调用存储装置;及基于对所述调用请求的响应及所述高速缓存行的逐出,从所述第一调用存储装置还原所述高速缓存行的所述队列,所述响应包含所述消息ID,所述消息ID用于从所述第二调用存储装置检索所述存储器请求ID,且所述存储器请求ID用于引用所述第一调用存储装置。
本公开的另一方面提供一种方法,其包括:在存储器装置中维持高速缓存行的队列,所述队列包含在当前与所述高速缓存行相关联的存储器地址上操作的延期存储器请求,所述队列的元数据存储于所述高速缓存行的标签中;确定需要调用以处理所述延期存储器请求,所述调用是对所述高速缓存行的控制改变到所述存储器装置;响应于需要所述调用的所述确定,将所述队列的所述元数据从所述标签写入到对应于所述高速缓存行的第一调用存储装置,所述第一调用存储装置由对应于所述延期存储器请求的存储器请求ID引用;传输包含消息ID的调用请求;响应于所述调用请求的传输,将所述存储器请求ID写入到由所述消息ID引用的第二调用存储装置;及基于对所述调用请求的响应及所述高速缓存行的逐出,从所述第一调用存储装置还原所述高速缓存行的所述队列,所述响应包含所述消息ID,所述消息ID用于从所述第二调用存储装置检索所述存储器请求ID,且所述存储器请求ID用于引用所述第一调用存储装置。
本公开的另一方面提供一种包含指令的非暂时性机器可读媒体,所述指令在由处理电路系统执行时致使所述处理电路系统执行包括以下的操作:在存储器装置中维持高速缓存行的队列,所述队列包含在当前与所述高速缓存行相关联的存储器地址上操作的延期存储器请求,所述队列的元数据存储于所述高速缓存行的标签中;确定需要调用以处理所述延期存储器请求,所述调用是对所述高速缓存行的控制改变到所述存储器装置;响应于需要所述调用的所述确定,将所述队列的所述元数据从所述标签写入到对应于所述高速缓存行的第一调用存储装置,所述第一调用存储装置由对应于所述延期存储器请求的存储器请求ID引用;传输包含消息ID的调用请求;响应于所述调用请求的传输,将所述存储器请求ID写入到由所述消息ID引用的第二调用存储装置;及基于对所述调用请求的响应及所述高速缓存行的逐出,从所述第一调用存储装置还原所述高速缓存行的所述队列,所述响应包含所述消息ID,所述消息ID用于从所述第二调用存储装置检索所述存储器请求ID,且所述存储器请求ID用于引用所述第一调用存储装置。
附图说明
在不一定按比例绘制的图中,相似的元件符号可描述不同视图中的类似组件。具有不同字母后缀的相似附图标记可表示类似组件的不同例子。图式通常通过实例而非通过限制说明本文件中论述的各个实施例。
图1说明根据实施例的包含用于调用待决高速缓存行逐出的系统的环境的实例。
图2说明根据实施例的连接到CXL装置的主机的实例。
图3说明根据实施例的存储器装置的实例组件。
图4说明根据实施例的关联高速缓存的实例。
图5说明根据实施例的包含若干高速缓存路延期队列及指向所述延期队列的高速缓存标签的存储器的实例。
图6说明根据实施例的在调用期间逐出的路的队列管理实例。
图7说明根据实施例的在调用期间实施队列管理的电路系统的实例。
图8说明根据实施例的用于调用待决高速缓存行逐出的方法的实例的流程图。
图9说明可用其实施一或多个实施例的机器的实例。
具体实施方式
计算快速链路(CXL)是经配置用于主机装置与其它装置(例如加速器、存储器缓冲器或智能输入-输出(I/O)装置)之间的高带宽、低延时连接性的开放标准互连。CXL经设计以通过支持异构处理及存储器系统促进高性能计算工作负载。CXL在基于PCI快速(PCIe)的I/O语义之上提供用于高速缓存一致性的存储器语义及机制,以优化性能。
CXL可用于例如人工智能、机器学习、分析学、云基础设施、边缘计算装置、通信系统的应用中及其它地方,以为主机处理器平台提供到存储器或加速器的灵活连接性。此类应用中的数据处理可使用各种标量、向量、矩阵或空间架构,其可部署于可使用CXL链路耦合的CPU、GPU、FPGA、智能NIC或其它加速器中。附近存储器加速器(其中加速器与存储器共同定位)提供低延时处理,同时扩展系统能力。
CXL支持使用包含I/O(CXL.io、基于PCIe)、高速缓存(CXL.cache)及存储器(CXL.memory)语义的一组协议进行动态多路复用。在实例中,CXL可用于在CPU(例如主机装置或主机处理器)与由CXL装置管理(例如,在CXL装置处)的任何存储器之间维持统一一致的存储器空间(例如,高速缓存一致性)。此配置使CPU及其它装置能共享资源且在相同存储器区上操作以实现更高性能、减少数据移动且降低软件栈复杂度。在实例中,CPU主要负责维持或管理CXL环境中的一致性。因此,CXL可用于帮助降低装置成本及复杂度以及传统上与跨I/O链路的一致性相关联的开销。
包含存储器及加速器两者的CXL装置可称为“CXL类型-2”装置。尽管此类装置的加速器可由其本身通过CXL接口使用,但通常,这些加速器提供近存储器计算以减小到主机处理器的往返延时。根据当前CXL标准,CXL存储器请求(例如外部请求)优先于其它请求,例如片上网络(NOC)或其它内部请求。此优先级要求CXL存储器请求独立于任何其它装置活动(例如由加速器进行的活动)向前推进。即,CXL存储器请求不能无限期地阻止等待非CXL存储器请求完成。在作出CXL及非CXL请求两者时在此限制下单独管理存储器控制器工作流可为一个复杂的过程。
为了解决CXL(或其它外部)请求与加速器(或其它内部请求)之间的复杂度,为延期请求维持单独处理队列。未延期的请求在其到达存储器控制器中后立即进行,因为不存在资源争用。因此,在这些情况中,例如内部请求没有机会阻止外部请求前进。然而,当存在资源争用时,请求将延期直到解决掉争用。管理外部及内部请求的不同处理优先级的精妙解决方案包含在单独延期队列中将每一请求排队,由此外部请求的优先级可通过优先从外部队列提取请求来容易地维持。此外,在存储器地址上进行的操作的顺序可通过明智地从所有外部及内部队列选择请求来维持,同时防止内部请求阻止外部请求(例如,防止外部请求的向前推进)。
在一些CXL装置加速器中,为了数据完整性或正确程序执行,维护请求的顺序(例如读取请求与写入请求)通常很重要。如本文中所述,高速缓存路列表及高速缓存组用于保持延期请求。通过控制将请求放入到哪些列表或队列,可确保正确的请求过程顺序。举例来说,如果针对特定存储器路的请求在组延期请求列表(例如,通用高速缓存组队列或通用延期队列)中,那么可将针对所述路的所有未来请求推入到延期请求列表中。类似地,如果针对存储器路的请求在路延期请求列表(例如,特定于高速缓存行或高速缓存路的队列)中,那么可将针对所述路的所有未来请求推入到延期请求列表中。本文中提供了各种其它条件排队场景。在实例中,根据高速缓存中命中的高速缓存标签状态来确定条件。
通过有效地将与相应高速缓存行或高速缓存组中的组关联路相关联的标签高速缓存中的待决请求排队,实现一种处理循序输入请求队列的方式,且仅当组关联路可用于逐出或处理后续请求时才重试待决请求。此通过限制非生产性高速缓存存取循环的数目而提供性能优势。在实例中,指向基于目录的存储结构的指针的链表用于将仅具有索引或标识符的存储器请求细节存储到各种队列中使用的目录结构中,从而减小对队列的数据需求且减小在队列之间移动存储器请求的内部带宽。在实例中,队列的链表头指针及尾指针可存储于标签高速缓存中。
CXL一致性机制为CXL及主机装置中的高速缓存元素提供控制语义。可能出现的问题涉及CXL装置中从主机请求对高速缓存行的控制所需的时间及主机何时将控制授权给CXL装置。举例来说,由CXL装置管理的存储器地址可反映于CXL存储器装置的高速缓存路以及主机处理器的高速缓存路中。为了由CXL装置修改高速缓存路,从主机处理器请求对高速缓存路的控制以使主机处理器能对由主机处理器管理的高速缓存执行高速缓存维护。此程序可称为高速缓存行的“调用”,使得对高速缓存行的控制被调用给CXL装置。术语“偏置翻转”也将此程序引用为在程序成功完成之后从主机到CXL装置的偏置翻转。在实例中,主机表明在CXL接口的CXL元状态中交换对高速缓存行的控制。
当内部请求指定受主机控制的存储器线(例如,非装置偏置)时,必须向主机发送调用或偏置翻转请求。偏置翻转请求状态可被记录于标签状态中-例如,使用偏置状态待决旗标或位-阻止装置上的资源存取行,直到偏置翻转由CXL.mem REQ事务完成为止。如果在高速缓存组(例如,一组高速缓存行或路)中,所有路都从主机调用,那么必须逐出具有待决调用的路以确保向前推进。因此,如果在使对行的控制返回到装置的调用期间,外部请求到达,那么可立即逐出行。因此,可指定路以用于逐出,以使CXL.mem(例如外部存储器)请求能向前推进。
如果有内部请求在逐出的路延期队列中排队,那么可能会出现排序问题。因为高速缓存组队列有可能包含针对逐出的路的请求-作为顺序保留机制-如果仅仅移动到高速缓存组队列,那么延期队列的当前内容将被无序执行。此外,由于处于偏置翻转或调用未决状态中的路的状态被保持于路标签中,因此路的逐出将潜在地消除此状态信息。
为了解决这些问题,延期队列及被逐出的路的一些或全部标签数据被保留于调用数据结构中。当调用请求被应答(例如,由主机)时,对调用请求的响应可与调用数据结构中的条目匹配以确定路的标签数据及延期队列。以此方式,当内部请求的处理不会干扰外部请求时,可还原状态。这些系统及技术对围绕在调用待决状态下实现高速缓存行的逐出的必要性的问题提供精妙的解决方案,以确保CXL规范所要求的CXL.mem事务的向前推进。下文提供额外细节及实例。
图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)或非冯·诺依曼(non-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)装置-可展现磁滞特性,例如3-D交叉(3D XP)存储器装置或其组合。
在实例中,接口120可包含使信息能在处理器110或主机装置105的其它装置与存储器系统125之间传送的任何类型的通信路径、总线、互连或类似物。接口的非限制性实例可包含外围组件互连(PCI)接口、外围组件互连快速(PCIe)接口、串行高级技术附接(SATA)接口、通用串行总线(USB)接口、雷电接口或微型串行高级技术附接(mSATA)接口等。在实例中,接口120包含符合计算快速链路(CXL)协议标准的PCIe 5.0接口。因此,在一些实施例中,接口120支持至少32GT/s的传送速度。
CXL是经设计以增强计算性能的高速中央处理单元(CPU)到装置及CPU到存储器互连。CXL维持CPU存储器空间(例如,由处理器110维持的主机存储器115或高速缓存)与经附接装置或加速器上的存储器(例如第一存储器装置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可包含电路系统以执行一些或全部这些操作。控制器130经配置以经由排队系统使外部请求(例如主机请求、CXL存储器请求等)优先于内部请求(例如加速器请求),所述排队系统在两种类型的请求之间作出区分。明确来说,控制器130经配置以维持单独外部请求队列及内部请求队列。在无需复杂操作分析或优先级逻辑的情况下,将优先化给予外部请求队列。图3、图4、图5、图6及图7说明此多队列系统的各个方面。简而言之,当接收到请求时,关于请求中的地址是否映射到高速缓存组的当前路作出确定。因为高速缓存组表示远远超过路的数目的地址范围,因此请求的存储器地址有可能不映射到当前路。如果请求映射到当前路且所述路不忙碌,那么执行请求。如果所述路忙碌,那么将请求放置到用于那个路的两个高速缓存路队列中的一者中;如果请求是外部请求,那么是高速缓存路外部队列,或如果请求是内部请求,那么是高速缓存路内部队列。随着路变成空闲(例如,因为先前请求完成而不忙碌),来自高速缓存路队列的下一请求弹出以在所述路上执行。通常,在来自高速缓存路内部队列的下一请求弹出之前清空高速缓存路外部队列,从而确保没有内部请求阻止外部请求的向前推进。
如果当前没有匹配请求的路,那么请求被放置于高速缓存组外部队列或高速缓存组内部队列中,取决于请求是外部请求还是内部请求。通常,一旦路空闲(例如,不忙碌且具有空的高速缓存路队列),就可逐出所述路,且来自高速缓存组队列(再次,通常首先是高速缓存组外部队列)的下一请求弹出。对应于最新弹出请求的存储器行被加载到路中,且请求可执行。以此方式,鉴于外部请求优于内部请求的优先级,可维持正确的执行顺序及阻止。
调用待决高速缓存路逐出是指当高速缓存路被逐出同时等待主机处理器110向存储器系统125授权对高速缓存路的控制时的情况。通常,调用请求由存储器系统125在路上没有未完成的外部请求时作出。来自主机处理器110的调用请求及后续响应使实体能一致地修改存储器。
如本文中描述,内部请求可依其达到路队列中的顺序进行存储。在调用请求待决时—例如,请求被发送到主机处理器110与从主机处理器110接收到响应之间的时间—内部请求保持延期。通常,当接收到对调用请求的响应时,可排空内部队列,且按顺序处理请求。在例如在CXL中发生的情况中,可能出现其中优先化请求(例如外部或CXL请求)在调用请求待决时到达的情况。如果没有可用的路,那么路将需要被逐出以处置此新请求。可进行优先化,其中没有待决调用请求的路首先被逐出。然而,如果因为所有路都忙碌或都具有待决调用请求而使这个不可行时,那么可使用调用待决高速缓存行逐出。此处,控制器130(或高速缓存140)经配置以维持调用特定数据结构跟踪待决调用路状态。接着,此状态可在稍后时间在调用请求由主机处理器110授权时还原。
控制器130经配置以维持用于路的队列。此队列包含引起由存储器系统125针对路的调用请求的延期存储器请求,以在当前与路相关联的存储器地址上操作。路还具有标签,所述标签拥有所述路具有待决调用请求且在存储器系统125与外部实体(例如主机处理器110)之间改变控制正在进行的指示。在实例中,队列是路内部队列(例如内部接口队列)。
控制器130经配置以检测指示高速缓存行被逐出的条件。如上所述,此条件可在新外部请求到达且没有空闲或非调用待决路时出现。在实例中,外部接口队列为空。此条件辨别出最新到达的外部请求将不会取代所述路处的原有待决外部请求。因此,在此实例中,对于处于将引起逐出的条件中的任何请求,非空的队列必须是较低优先级队列。在实例中,检测条件包含接收针对当前不与高速缓存行相关联的存储器地址的外部存储器请求。此实例说明新请求将要求逐出路,而不是能够使用当前路。
控制器130经配置以将队列的队列元数据从路的标签复制到对应于路的存储位置。存储位置(例如RAM的部分、寄存器等)由提示调用请求的延期存储器请求识别(例如,加索引)。因此,队列元数据可从具有延期存储器请求ID的存储位置检索。可使用其它关键字,例如路地址的散列或类似者,但延期请求ID是方便且可用的,无需额外硬件或处理。
在实例中,队列元数据是指向队列的头或尾指针。这些实例提供专属于路硬件的特定存储装置。此可为用于此目的的共同RAM中的范围,或其可为专用于路的寄存器组。在任一情况中,除了维持队列元数据的每一路外,还存在存储组。图7说明其中调用RAM维持此数据的硬件布置的实例。
控制器130经配置以接收控制已在存储器系统125与外部实体之间切回的指示。因此,在CXL中,此将是对来自主机处理器110的调用请求的响应。在实例中,指示是标识符(ID)。在CXL中,ID可为CQID。CQID可从分配给存储器系统125的池获取且在其被发送到主机处理器110时与调用请求一起被包含。响应将使用同一CQID来启用存储器系统125以连接请求与响应。因为CQID在调用请求被发送时提供,因此控制器130可使CQID与逐出的路的标签数据相关。因此,控制器130经配置以记录数据结构条目中的ID以及延期存储器请求(例如,在路内部队列中的内部请求)。在实例中,在存储器请求使用目录来存储存储器请求的细节的情况下,条目仅包含延期存储器请求ID,接着,其可用于存取目录。在实例中,保持队列元数据的存储位置是与用于存储数据结构的硬件不同的硬件。
控制器130经配置以使用ID(例如CQID)从存储位置还原路的队列以找出使ID与延期存储器请求ID相关的条目。接着,控制器130可使用来自条目的延期存储器请求ID以从存储部分检索元数据。
图2说明根据实施例的连接到CXL装置的主机的实例。图2大体上说明CXL系统200的实例,CXL系统200使用CXL链路206以分别经由主机物理层PCIE接口208及CXL客户端物理层PCIE接口210连接主机装置202及CXL装置204。在实例中,主机装置202包括或对应于主机装置105,且CXL装置204包括或对应于来自图1中的系统的实例的存储器系统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(例如,使用PCIe PHY层)调制通信的主机多路复用器216。协议多路复用确保延时敏感协议(例如,CXL.cache及CXL.memory)具有与本机处理器到处理器链路相同或类似的延时。在实例中,CXL对延时敏感协议定义响应时间的上限以帮助确保装置性能不会不利地受到实施一致性及存储器语义的不同装置之间的延时的变化的影响。
在实例中,语义高速缓存一致性协议可能难以在主机处理器之间实施,因为不同架构可使用不同解决方案,不同解决方案又可损害向后兼容性。CXL可通过例如使用一致性及存储器电路系统218在主机装置202处合并一致性功能来解决此问题。
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存储器(CM)请求的向前推进)的内部(例如,来自近存储器加速器)及外部(例如,经由CXL链路从主机接收到)请求差异的元件。
如所说明,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调用的响应。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。标签数据的实例可包含脏位(dirty bit)以指示路是否与后备存储器不同步、是否存在使路与主机存储器同步(例如,主机调用在进行中)的操作或CXL元状态、请求状态等。在实例中,无论请求的来源(例如,内部或外部)是否影响存储器控制器的操作,标签数据都可包含请求是内部还是外部以及例如请求是内部且延期还是外部且延期的指定。
以下是用于保持应用到整个高速缓存组(例如,非特定于高速缓存组中的单个路)的标签数据的数据结构(例如,C样式结构)的实例:
以下是用于保持高速缓存组中的给定路的标签数据的数据结构(例如,C样式结构)的实例:
图5说明根据实施例的包含若干高速缓存路延期队列及指向所述延期队列的高速缓存标签525的存储器500的实例。如所说明,存储器500用于实施若干队列。队列各自占用存储器500的连续范围,其中队列的特定边界由头及尾指针界定。在此实例中,队列经实施为链表或双链表。链表实现从头开始遍历,然而排队仅可通过用新的尾位置更新尾元素并将新项目放置在新的尾位置来完成。双链表实现列表从头或尾遍历。
队列通过将头及尾指针存储于标签数据中而对应于高速缓存路。因此,在高速缓存组530中,路零标签535维持队列505的头及尾指针(说明为保持请求一)。空条目510是对应于队列505的连续存储器范围的部分。因此,如果第二请求在排队,那么尾指针将移动到条目510。类似地,路一标签540保持队列515的头及尾指针,且路N标签545维持队列520的头及尾指针。
队列的替代配置可利用(如果其存在)请求目录条目(例如,如图3的元件330中说明)。此处,队列仅仅是指向目录以标示队列中的第一请求的头指针及指向目录以标示队列中的最后请求的尾指针。在此实例中,队列是链表,其中元素(例如,请求的目录条目)指向彼此。在简单实施方案中,链接是从头到尾的单路。因此,列表中每一元素的目录条目链接到列表中的下一元素。为了添加新元素,由尾指针指示的目录条目中的“下一元素”指针更新到新条目,且尾指针也更新到新条目。在实例中,链表可为双向的,其中每一目录条目具有指向前一元素以及下一元素的指针。通过使用头指针进入队列例如以到达目录条目来遍历队列。接着,下一元素指针可用于到达队列的下一元素。此过程可重复直到下一元素指针为空,从而指示队列结束。
图6说明根据实施例的在调用期间逐出的路的队列管理的实例。所说明的实施例假定具有存储器侧高速缓存的CXL类型-2装置。此处,存储器侧高速缓存使用基于目录的请求结构,且其维持有序请求的队列组(例如,在高速缓存标签状态中),如上文(例如,关于图3、图4或图5)描述。当起始调用(例如偏置翻转)操作时,路的标签中的当前队列头或尾指针可被复制到由请求的目录指针加索引的调用结构600。因此,条目605保持请求一的目录指针且条目610保持第X请求的目录指针。
当将翻转偏置状态的CXL.cache事务被指派CXL定义的CQID时,接着,第二调用结构615用于记录由经指派CQID加索引的原始请求的目录指针,如条目620中说明。
当任何后续装置资源请求存取相同路时,新的尾指针值将更新第一调用结构600的尾指针值。为了促进此,原始请求的目录指针与偏置翻转待决状态一起被记录于高速缓存625的标签状态640中。举例来说,高速缓存组630的路零标签635包含第一请求的索引指针。在实例中,此指针仅在调用待决状态被断言(例如,设置)时才有效。来自高速缓存行标签的此指针将用于对第一调用结构加索引以更新尾指针值。当要求逐出时,无需另一动作来维持调用待决状态,因为所述信息已被记录于调用结构600及615中。
当主机用CXL.mem REQ事务对原始调用请求作出响应时,主机返回原始请求的CQID。接着,此CQID可用作到第二调用结构615中的索引以检索原始请求的目录指针。一旦获得了原始请求的目录指针,目录指针就可用作到第一调用结构600中的索引以检索队列头及尾指针。接着,这些队列头及尾指针可被写回到路标签635中,以在逐出之前还原原始标签状态。
图7说明根据实施例的在调用期间实施队列管理的电路系统的实例。事务处理电路系统或TP块705、第一调用结构RAM 710、第二调用结构指针存储装置720、待决调用队列725及CQID空闲列表730结构以所说明的方式交互。在说明中使用以下缩写:
ADR:地址
CMI:CXL存储器接口(也指外部接口)
CQID:CXL定义的事务标识符(例如,在对调用请求的响应中使用)
Curr:当前
EN:启用
HD:头
LL:链表
NI:片上网络(NOC)接口(也指内部接口)
NXT:下一
PTR:指针
RD:读取
RDY:就绪
R_LL:读取链表
RQ:请求
STRUC:结构
VLD:有效
WR:写入
而且,根据队列命名法,弹出是移除链表头部处的元素,且推入是将元素放在链表尾部处。
以下是可用于此上下文中的组关联标签(例如路标签)位的实例:
图8说明根据实施例的用于调用待决高速缓存行逐出的方法800的实例的流程图。方法800的操作由计算硬件执行,例如上文或下文描述的计算硬件(例如处理电路系统)。
在操作805处,为高速缓存行维持队列。此处,队列包含在当前与高速缓存行相关联的存储器地址上操作的延期存储器请求。而且,队列的元数据被存储于高速缓存行的标签中。在实例中,队列是内部接口队列;且队列中的条目来自存储器装置的内部接口。在实例中,队列是包含作为外部接口队列的第二队列的多个队列中的一者。此处,外部接口队列中的条目来自存储器装置的外部接口。在实例中,外部接口符合计算快速链路(CXL)标准。
在操作810处,作确定需要调用以处理延期存储器请求。调用是对高速缓存行的控制改变到存储器装置。
在操作815处,响应于确定需要调用(操作810),将队列的元数据从标签写入到对应于高速缓存行的第一调用存储装置。此处,第一调用存储装置由对应于延期存储器请求的存储器请求ID引用。在实例中,队列元数据是指向队列的头或尾指针。在实例中,写入队列的元数据包含将存储器请求ID写入到高速缓存行的标签中。
在操作820处,传输包含消息ID的调用请求。在实例中,消息ID是CXL CQID。在实例中,传输调用请求包含验证外部接口队列是空的。在实例中,传输调用请求包含将调用待决指示写入到高速缓存行的标签。在实例中,标签中的存储器请求ID仅在待决调用指示被设置的情况下才有效。
在操作825处,响应于调用请求的传输(操作820),将存储器请求ID写入到由消息ID引用的第二调用存储装置。在实例中,第一调用存储装置是专用于高速缓存行的第一硬件,且第二调用存储装置是专用于存储器装置的高速缓存行的第二硬件。
在操作830处,基于对调用请求的响应及高速缓存行的逐出,还原高速缓存行的队列。队列还原使用利用包含于对调用请求的响应中的消息ID从第二调用存储装置检索的存储器请求ID从第一调用存储装置发生。在实例中,还原队列包含将头或尾指针复制到高速缓存行的标签中。
在实例中,方法800的操作可包含在还原高速缓存行的队列之前接收存储器请求。接着,存储器请求可在队列中排队。接着,更新第一调用存储装置中的队列的元数据。
图9说明本文中论述的技术(例如方法)中的任何一或多者可用其执行的实例机器900的框图。如本文中描述,实例可包含机器900中的逻辑或数个组件或机构或可由机器900中的逻辑或数个组件或机构操作。电路系统(例如处理电路系统)是实施于包含硬件(例如简单电路、门、逻辑等)的机器900的有形实体中的电路集合。电路系统成员关系可随时间灵活变化。电路系统包含在操作时可单独或组合执行指定操作的成员。在实例中,电路系统的硬件可经不变地设计以实施特定操作(例如硬连线)。在实例中,电路系统的硬件可包含可变连接的物理组件(例如执行单元、晶体管、简单电路等),包含物理上经修改(例如,磁性、电、不变质量粒子的可移动放置等)以对特定操作的指令进行编码的机器可读媒体。在连接物理组件时,硬件构成的基本电性质(例如)从绝缘体变为导体,或反之亦然。指令使嵌入式硬件(例如执行单元或加载机构)能够经由可变连接在硬件中创建电路系统的成员以在操作中实施特定操作的部分。因此,在实例中,机器可读媒体元件是电路系统的部分或当装置在操作时通信地耦合到电路系统的其它组件。在实例中,物理组件中的任何者可用于多于一个电路系统的多于一个成员中。例如,在操作下,执行单元可在一时间点用于第一电路系统的第一电路中,且在不同时间由第一电路系统中的第二电路或第二电路系统中的第三电路再用。关于机器900的这些组件的额外实例如下。
在替代实施例中,机器900可作为独立装置操作或可连接(例如,联网)到其它机器。在联网部署中,机器900在服务器-客户端网络环境中可以服务器机器、客户端机器或两者的身份操作。在实例中,机器900可充当对等(P2P)(或其它分布式)网络环境中的对等机器。机器900可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、移动电话、网络设备、网络路由器、交换机或桥接器或能够(循序或以其它方式)执行指定由机器采取的动作的指令的任何机器。此外,虽然仅说明单个机器,但术语“机器”还应被视为包含个别或联合执行一组(或多组)指令以执行本文中论述的方法中的任何一或多者的机器的任何集合,例如云计算、软件即服务(SaaS)、其它计算机集群配置。
机器(例如计算机系统)900可包含硬件处理器902(例如中央处理单元(CPU)、图形处理单元(GPU)、硬件处理器核心或其任何组合)、主存储器904、静态存储器(例如用于固件的存储器或存储装置、微代码、基本输入-输出(BIOS)、统一可扩展固件接口(UEFI)等)906及大容量存储装置908(例如硬盘驱动器、磁带驱动器、快闪存储装置或其它块装置),其中一些或所有可经由互链(例如总线)930彼此通信。机器900可进一步包含显示器单元910、字母数字输入装置912(例如键盘)及用户接口(UI)导航装置914(例如鼠标)。在实例中,显示器单元910、输入装置912及UI导航装置914可为触摸屏显示器。机器900可另外包含存储装置(例如驱动单元)908、信号产生装置918(例如扬声器)、网络接口装置920及一或多个传感器916,例如全球定位系统(GPS)传感器、指南针、加速度计或其它传感器。机器900可包含输出控制器928,例如用于通信或控制一或多个外围装置(例如打印机、读卡器等)的串行(例如通用串行总线(USB))、并行或其它有线或无线(例如红外(IR)、近场通信(NFC)等)连接。
处理器902、主存储器904、静态存储器906或大容量存储装置908的寄存器可为或包含机器可读媒体922,其上存储体现本文中描述的技术或功能中的任何一或多者或由本文中描述的技术或功能中的任何一或多者利用的一或多组数据结构或指令924(例如软件)。指令924还可在其由机器900执行期间完全或至少部分驻留于处理器902、主存储器904、静态存储器906或大容量存储装置908的寄存器中的任何者内。在实例中,硬件处理器902、主存储器904、静态存储器906或大容量存储装置908中的一者或任何组合可构成机器可读媒体922。虽然将机器可读媒体922说明为单个媒体,但术语“机器可读媒体”可包含经配置以存储一或多个指令924的单个媒体或多个媒体(例如集中式或分布式数据库或相关联高速缓存及服务器)。
术语“机器可读媒体”可包含能够存储、编码或携载由机器900执行的指令且致使机器900执行本公开的技术中的任何一或多者或能够存储、编码或携载由此类指令使用或与此类指令相关联的数据结构的任何媒体。非限制性机器可读媒体实例可包含固态存储器、光学媒体、磁性媒体及信号(例如射频信号、其它基于光子的信号、声音信号等)。在实例中,非暂时性机器可读媒体包括具有含不变(例如静止)质量的多个粒子的机器可读媒体且因此是物质组合物。因此,非暂时性机器可读媒体是不包含暂时性传播信号的机器可读媒体。非暂时性机器可读媒体的特定实例可包含:非易失性存储器,例如半导体存储器装置(例如电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM))及快闪存储器装置;磁盘,例如内部硬盘及可装卸磁盘;磁光盘;及CD-ROM及DVD-ROM磁盘。
在实例中,存储或以其它方式提供于机器可读媒体922上的信息可表示指令924,例如指令924本身或可从其导出指令924的格式。可从其导出指令924的此格式可包含源代码、编码指令(例如呈压缩或加密形式)、包装指令(例如,分成多个包)或类似物。表示机器可读媒体922中的指令924的信息可由处理电路系统处理成用于实施本文中论述的任何操作的指令。举例来说,从信息导出指令924(例如,由处理电路系统处理)可包含:编译(例如,从源代码、目标代码等)、解译、加载、组织(例如,动态或静态链接)、编码、解码、加密、解密、包装、解包装或以其它方式将信息操纵成指令924。
在实例中,指令924的导出可包含信息的汇编、编译或解译(例如,通过处理电路系统)以从由机器可读媒体922提供的一些中间或预处理格式创建指令924。信息在以多个部分提供时可经组合、解包及修改以创建指令924。举例来说,信息可在一或若干远程服务器上的多个压缩源代码包(或目标代码或二进制可执行代码等)中。如果必要的话,源代码包可在经由网络输送时被加密及解密、解压缩、汇编(例如链接),并在本地机器处进行编译或解译(例如编译或解译成库、独立可执行程序等)且由本地机器执行。
指令924可进一步利用数个传送协议(例如帧中继、因特网协议(IP)、传输控制协议(TCP)、用户数据报协议(UDP)、超文本传送协议(HTTP)等)中的任一者经由网络接口装置920使用传输媒体通过通信网络926发射或接收。实例通信网络可包含局域网(LAN)、广域网(WAN)、分组数据网络(例如因特网)、LoRa/LoRaWAN或卫星通信网络、移动电话网络(例如,蜂窝网络,例如符合3G、4G LTE/LTE-A或5G标准的蜂窝网络)、普通老式电话(POTS)网络及无线数据网络(例如电气及电子工程师协会(IEEE)802.11系列标准(称为)、IEEE802.15.4系列标准、对等(P2P)网络等。在实例中,网络接口装置920可包含一或多个物理插孔(例如以太网、同轴或电话插孔)或一或多个天线以连接到通信网络926。在实例中,网络接口装置920可包含多个天线以使用单输入多输出(SIMO)、多输入多输出(MIMO)或多输入单输出(MISO)技术中的至少一者进行无线通信。术语“传输媒体”应被视为包含能够存储、编码或携载由机器900执行的指令的任何无形媒体,且包含用于促进此软件通信的数字或模拟通信信号或其它无形媒体。传输媒体是机器可读媒体。
额外注释及实例
实例1是一种用于调用待决高速缓存行逐出的设备,所述设备包括:高速缓存,其包含高速缓存行;到外部实体的接口;及处理电路系统,其经配置以:维持所述高速缓存行的队列,所述队列包含在当前与所述高速缓存行相关联的存储器地址上操作的延期存储器请求,所述队列的元数据存储于所述高速缓存行的标签中;确定需要调用以处理所述延期存储器请求,所述调用是对所述高速缓存行的控制从所述外部实体改变;响应于需要所述调用的所述确定,将所述队列的所述元数据从所述标签写入到对应于所述高速缓存行的第一调用存储装置,所述第一调用存储装置由对应于所述延期存储器请求的存储器请求ID引用;经由所述接口将包含消息ID的调用请求传输到所述外部实体;响应于所述调用请求的传输,将所述存储器请求ID写入到由所述消息ID引用的第二调用存储装置;及基于对所述调用请求的响应及所述高速缓存行的逐出,从所述第一调用存储装置还原所述高速缓存行的所述队列,所述响应包含所述消息ID,所述消息ID用于从所述第二调用存储装置检索所述存储器请求ID,且所述存储器请求ID用于引用所述第一调用存储装置。
在实例2中,根据实例1所述的主题,其中所述处理电路系统经配置以:在还原所述高速缓存行的所述队列之前接收存储器请求;使所述存储器请求在所述队列中排队;及更新所述第一调用存储装置中的所述队列的所述元数据。
在实例3中,根据实例1到2中的任何实例所述的主题,其中所述队列的所述元数据是指向所述队列的头或尾指针。
在实例4中,根据实例3所述的主题,其中为了还原所述队列,所述处理电路系统经配置以将所述头或所述尾指针复制到所述高速缓存行的标签中。
在实例5中,根据实例1到4中的任何实例所述的主题,其包括内部接口,其中所述队列是内部接口队列,且所述队列中的条目来自所述内部接口。
在实例6中,根据实例5所述的主题,其中所述队列是包含作为外部接口队列的第二队列的多个队列中的一者,所述外部接口队列中的所述条目来自所述接口。
在实例7中,根据实例6所述的主题,其中所述接口符合计算快速链路(CXL)标准。
在实例8中,根据实例7所述的主题,其中为了传输所述调用请求,所述处理电路系统经配置以验证所述外部接口队列是空的。
在实例9中,根据实例1到8中的任何实例所述的主题,其中为了写入所述队列的所述元数据,所述处理电路系统经配置以将所述存储器请求ID写入到所述高速缓存行的所述标签中。
在实例10中,根据实例9所述的主题,其中为了传输所述调用请求,所述处理电路系统经配置以将调用待决指示写入到所述高速缓存行的所述标签。
在实例11中,根据实例10所述的主题,其中所述标签中的所述存储器请求ID仅在所述调用待决指示被设置的情况下才有效。
在实例12中,根据实例1到11中的任何实例所述的主题,其中所述第一调用存储装置是专用于所述高速缓存行的第一硬件,且所述第二调用存储装置是专用于所述高速缓存行的第二硬件。
实例13是一种用于调用待决高速缓存行逐出的方法,所述方法包括:在存储器装置中维持高速缓存行的队列,所述队列包含在当前与所述高速缓存行相关联的存储器地址上操作的延期存储器请求,所述队列的元数据存储于所述高速缓存行的标签中;确定需要调用以处理所述延期存储器请求,所述调用是对所述高速缓存行的控制改变到所述存储器装置;响应于需要所述调用的所述确定,将所述队列的所述元数据从所述标签写入到对应于所述高速缓存行的第一调用存储装置,所述第一调用存储装置由对应于所述延期存储器请求的存储器请求ID引用;传输包含消息ID的调用请求;响应于所述调用请求的传输,将所述存储器请求ID写入到由所述消息ID引用的第二调用存储装置;及基于对所述调用请求的响应及所述高速缓存行的逐出,从所述第一调用存储装置还原所述高速缓存行的所述队列,所述响应包含所述消息ID,所述消息ID用于从所述第二调用存储装置检索所述存储器请求ID,且所述存储器请求ID用于引用所述第一调用存储装置。
在实例14中,根据实例13所述的主题,其包括:在还原所述高速缓存行的所述队列之前接收存储器请求;使所述存储器请求在所述队列中排队;及更新所述第一调用存储装置中的所述队列的所述元数据。
在实例15中,根据实例13到14中的任何实例所述的主题,其中所述队列的所述元数据是指向所述队列的头或尾指针。
在实例16中,根据实例15所述的主题,其中还原所述队列包含将所述头或所述尾指针复制到所述高速缓存行的标签中。
在实例17中,根据实例13到16中的任何实例所述的主题,其中所述队列是内部接口队列,且所述队列中的条目来自所述存储器装置的内部接口。
在实例18中,根据实例17所述的主题,其中所述队列是包含作为外部接口队列的第二队列的多个队列中的一者,所述外部接口队列中的所述条目来自所述存储器装置的外部接口。
在实例19中,根据实例18所述的主题,其中所述外部接口符合计算快速链路(CXL)标准。
在实例20中,根据实例19所述的主题,其中传输所述调用请求包含验证所述外部接口队列是空的。
在实例21中,根据实例13到20中的任何实例所述的主题,其中写入所述队列的所述元数据包含将所述存储器请求ID写入到所述高速缓存行的所述标签中。
在实例22中,根据实例21所述的主题,其中传输所述调用请求包含将调用待决指示写入到所述高速缓存行的所述标签。
在实例23中,根据实例22所述的主题,其中所述标签中的所述存储器请求ID仅在所述调用待决指示被设置的情况下才有效。
在实例24中,根据实例13到23中的任何实例所述的主题,其中所述第一调用存储装置是专用于所述高速缓存行的第一硬件,且所述第二调用存储装置是专用于所述高速缓存行的第二硬件。
实例25是一种包含用于调用待决高速缓存行逐出的指令的机器可读媒体,所述指令在由处理电路系统执行时致使所述处理电路系统执行包括以下的操作:在存储器装置中维持高速缓存行的队列,所述队列包含在当前与所述高速缓存行相关联的存储器地址上操作的延期存储器请求,所述队列的元数据存储于所述高速缓存行的标签中;确定需要调用以处理所述延期存储器请求,所述调用是对所述高速缓存行的控制改变到所述存储器装置;响应于需要所述调用的所述确定,将所述队列的所述元数据从所述标签写入到对应于所述高速缓存行的第一调用存储装置,所述第一调用存储装置由对应于所述延期存储器请求的存储器请求ID引用;传输包含消息ID的调用请求;响应于所述调用请求的传输,将所述存储器请求ID写入到由所述消息ID引用的第二调用存储装置;及基于对所述调用请求的响应及所述高速缓存行的逐出,从所述第一调用存储装置还原所述高速缓存行的所述队列,所述响应包含所述消息ID,所述消息ID用于从所述第二调用存储装置检索所述存储器请求ID,且所述存储器请求ID用于引用所述第一调用存储装置。
在实例26中,根据实例25所述的主题,其中所述操作包括:在还原所述高速缓存行的所述队列之前接收存储器请求;使所述存储器请求在所述队列中排队;及更新所述第一调用存储装置中的所述队列的所述元数据。
在实例27中,根据实例25到26中的任何实例所述的主题,其中所述队列的所述元数据是指向所述队列的头或尾指针。
在实例28中,根据实例27所述的主题,其中还原所述队列包含将所述头或所述尾指针复制到所述高速缓存行的标签中。
在实例29中,根据实例25到28中的任何实例所述的主题,其中所述队列是内部接口队列,且所述队列中的条目来自所述存储器装置的内部接口。
在实例30中,根据实例29所述的主题,其中所述队列是包含作为外部接口队列的第二队列的多个队列中的一者,所述外部接口队列中的所述条目来自所述存储器装置的外部接口。
在实例31中,根据实例30所述的主题,其中所述外部接口符合计算快速链路(CXL)标准。
在实例32中,根据实例31所述的主题,其中传输所述调用请求包含验证所述外部接口队列是空的。
在实例33中,根据实例25到32中的任何实例所述的主题,其中写入所述队列的所述元数据包含将所述存储器请求ID写入到所述高速缓存行的所述标签中。
在实例34中,根据实例33所述的主题,其中传输所述调用请求包含将调用待决指示写入到所述高速缓存行的所述标签。
在实例35中,根据实例34所述的主题,其中所述标签中的所述存储器请求ID仅在所述调用待决指示被设置的情况下才有效。
在实例36中,根据实例25到35中的任何实例所述的主题,其中所述第一调用存储装置是专用于所述高速缓存行的第一硬件,且所述第二调用存储装置是专用于所述高速缓存行的第二硬件。
实例37是一种用于调用待决高速缓存行逐出的系统,所述系统包括:用于在存储器装置中维持高速缓存行的队列的构件,所述队列包含在当前与所述高速缓存行相关联的存储器地址上操作的延期存储器请求,所述队列的元数据存储于所述高速缓存行的标签中;用于确定需要调用以处理所述延期存储器请求的构件,所述调用是对所述高速缓存行的控制改变到所述存储器装置;用于响应于需要所述调用的所述确定而将所述队列的所述元数据从所述标签写入到对应于所述高速缓存行的第一调用存储装置的构件,所述第一调用存储装置由对应于所述延期存储器请求的存储器请求ID引用;用于传输包含消息ID的调用请求的构件;用于响应于所述调用请求的传输将所述存储器请求ID写入到由所述消息ID引用的第二调用存储装置的构件;及用于基于对所述调用请求的响应及所述高速缓存行的逐出从所述第一调用存储装置还原所述高速缓存行的所述队列的构件,所述响应包含所述消息ID,所述消息ID用于从所述第二调用存储装置检索所述存储器请求ID,且所述存储器请求ID用于引用所述第一调用存储装置。
在实例38中,根据实例37所述的主题,其包括:用于在还原所述高速缓存行的所述队列之前接收存储器请求的构件;用于使所述存储器请求在所述队列中排队的构件;及用于更新所述第一调用存储装置中的所述队列的所述元数据的构件。
在实例39中,根据实例37到38中的任何实例所述的主题,其中所述队列的所述元数据是指向所述队列的头或尾指针。
在实例40中,根据实例39所述的主题,其中所述用于还原所述队列的构件包含用于将所述头或所述尾指针复制到所述高速缓存行的标签中的构件。
在实例41中,根据实例37到40中的任何实例所述的主题,其中所述队列是内部接口队列,且所述队列中的条目来自所述存储器装置的内部接口。
在实例42中,根据实例41所述的主题,其中所述队列是包含作为外部接口队列的第二队列的多个队列中的一者,所述外部接口队列中的所述条目来自所述存储器装置的外部接口。
在实例43中,根据实例42所述的主题,其中所述外部接口符合计算快速链路(CXL)标准。
在实例44中,根据实例43所述的主题,其中所述用于传输所述调用请求的构件包含用于验证所述外部接口队列是空的构件。
在实例45中,根据实例37到44中的任何实例所述的主题,其中所述用于写入所述队列的所述元数据的构件包含用于将所述存储器请求ID写入到所述高速缓存行的所述标签中的构件。
在实例46中,根据实例45所述的主题,其中所述用于传输所述调用请求的构件包含用于将调用待决指示写入到所述高速缓存行的所述标签的构件。
在实例47中,根据实例46所述的主题,其中所述标签中的所述存储器请求ID仅在所述调用待决指示被设置的情况下才有效。
在实例48中,根据实例37到47中的任何实例所述的主题,其中所述第一调用存储装置是专用于所述高速缓存行的第一硬件,且所述第二调用存储装置是专用于所述高速缓存行的第二硬件。
实例49是至少一种包含指令的机器可读媒体,所述指令在由处理电路系统执行时致使所述处理电路系统执行实施实例1到48中的任何者的操作。
实例50是一种包括用于实施实例1到48中的任何者的构件的设备。
实例51是一种用于实施实例1到48中的任何者的系统。
实例52是一种用于实施实例1到48中的任何者的方法。
上文详细描述包含参考构成详细描述的一部分的附图。图式通过说明方式展示可实践的特定实施例。这些实施例在本文中也称为“实例”。此类实例可包含除所展示或描述的元件之外的元件。然而,本发明人还考虑其中仅提供所展示或描述的那些元件的实例。此外,本发明人还考虑使用关于特定实例(或其一或多个方面)或关于本文中展示或描述的其它实例(或其一或多个方面)展示或描述的那些元件的任何组合或排列的实例(或其一或多个方面)。
在本文件中提及的所有公开案、专利及专利文件以其全文引用方式并入本文中,就好像通过引用个别地并入。在本文件与通过引用所并入的这些文件之间用法不一致的情况下,并入的参考案中的用法应被认为是本文件的用法的补充;对于不可调和的不一致性,以本文件中的用法为准。
在本文件中,如专利文件中常见,术语“一”或“一个”用于包含一个或多于一个,其独立于“至少一个”或“一或多个”的任何其它例子或使用。在本文件中,术语“或”用于指“非排他性或”,使得“A或B”包含“A但非B”、“B但非A”及“A及B”,除非另有指示。在所附权利要求书中,术语“包含”及“其中(in which)”用作相应术语“包括”及“其中(wherein)”的普通英语等效形式。而且,在所附权利要求书中,术语“包含”及“包括”是开放式的,即,包含除权利要求中此术语之后所列的元件之外的元件的系统、装置、物品或过程仍被认为落于所述权利要求的范围内。此外,在所附权利要求书中,术语“第一”、“第二”及“第三”等仅用作标记且不希望对其对象强加数字要求。
上文描述意在说明而非限制。举例来说,上述实例(或其一或多个方面)可彼此组合使用。例如所属领域的一般技术人员在检视上文描述之后可使用其它实施例。摘要使读者能快速确定技术公开内容的性质,且应理解,提交摘要将不会用于解译或限制权利要求书的范围或含义。而且,在上文具体实施方式中,各种特征可分组在一起以简化本公开。此不应被解译为希望未主张的公开特征是任何权利要求必不可少的。确切来说,发明主题可在于少于特定公开实施例的所有特征。因此,所附权利要求书特此并入到具体实施方式中,其中每一权利要求自身作为单独实施例。应参考所附权利要求书连同此权利要求书所赋予的等效物的全范围来确定实施例的范围。
Claims (24)
1.一种设备,其包括:
高速缓存,其包含高速缓存行;
到外部实体的接口;及
处理电路系统,其经配置以:
维持所述高速缓存行的队列,所述队列包含在当前与所述高速缓存行相关联的存储器地址上操作的延期存储器请求,所述队列的元数据存储于所述高速缓存行的标签中;
确定需要调用以处理所述延期存储器请求,所述调用是对所述高速缓存行的控制从所述外部实体改变;
响应于需要所述调用的所述确定,将所述队列的所述元数据从所述标签写入到对应于所述高速缓存行的第一调用存储装置,所述第一调用存储装置由对应于所述延期存储器请求的存储器请求ID引用;
经由所述接口将包含消息ID的调用请求传输到所述外部实体;
响应于所述调用请求的传输,将所述存储器请求ID写入到由所述消息ID引用的第二调用存储装置;及
基于对所述调用请求的响应及所述高速缓存行的逐出,从所述第一调用存储装置还原所述高速缓存行的所述队列,所述响应包含所述消息ID,所述消息ID用于从所述第二调用存储装置检索所述存储器请求ID,且所述存储器请求ID用于引用所述第一调用存储装置。
2.根据权利要求1所述的设备,其中所述处理电路系统经配置以:
在还原所述高速缓存行的所述队列之前接收存储器请求;
使所述存储器请求在所述队列中排队;及
更新所述第一调用存储装置中的所述队列的所述元数据。
3.根据权利要求1所述的设备,其中所述队列的所述元数据是指向所述队列的头或尾指针。
4.根据权利要求3所述的设备,其中为了还原所述队列,所述处理电路系统经配置以将所述头或所述尾指针复制到所述高速缓存行的标签中。
5.根据权利要求1所述的设备,其中为了写入所述队列的所述元数据,所述处理电路系统经配置以将所述存储器请求ID写入到所述高速缓存行的所述标签中。
6.根据权利要求5所述的设备,其中为了传输所述调用请求,所述处理电路系统经配置以将调用待决指示写入到所述高速缓存行的所述标签。
7.根据权利要求6所述的设备,其中所述标签中的所述存储器请求ID仅在所述调用待决指示被设置的情况下才有效。
8.根据权利要求1所述的设备,其中所述第一调用存储装置是专用于所述高速缓存行的第一硬件,且所述第二调用存储装置是专用于所述高速缓存行的第二硬件。
9.一种方法,其包括:
在存储器装置中维持高速缓存行的队列,所述队列包含在当前与所述高速缓存行相关联的存储器地址上操作的延期存储器请求,所述队列的元数据存储于所述高速缓存行的标签中;
确定需要调用以处理所述延期存储器请求,所述调用是对所述高速缓存行的控制改变到所述存储器装置;
响应于需要所述调用的所述确定,将所述队列的所述元数据从所述标签写入到对应于所述高速缓存行的第一调用存储装置,所述第一调用存储装置由对应于所述延期存储器请求的存储器请求ID引用;
传输包含消息ID的调用请求;
响应于所述调用请求的传输,将所述存储器请求ID写入到由所述消息ID引用的第二调用存储装置;及
基于对所述调用请求的响应及所述高速缓存行的逐出,从所述第一调用存储装置还原所述高速缓存行的所述队列,所述响应包含所述消息ID,所述消息ID用于从所述第二调用存储装置检索所述存储器请求ID,且所述存储器请求ID用于引用所述第一调用存储装置。
10.根据权利要求9所述的方法,其包括:
在还原所述高速缓存行的所述队列之前接收存储器请求;
使所述存储器请求在所述队列中排队;及
更新所述第一调用存储装置中的所述队列的所述元数据。
11.根据权利要求9所述的方法,其中所述队列的所述元数据是指向所述队列的头或尾指针。
12.根据权利要求11所述的方法,其中还原所述队列包含将所述头或所述尾指针复制到所述高速缓存行的标签中。
13.根据权利要求9所述的方法,其中写入所述队列的所述元数据包含将所述存储器请求ID写入到所述高速缓存行的所述标签中。
14.根据权利要求13所述的方法,其中传输所述调用请求包含将调用待决指示写入到所述高速缓存行的所述标签。
15.根据权利要求14所述的方法,其中所述标签中的所述存储器请求ID仅在所述调用待决指示被设置的情况下才有效。
16.根据权利要求9所述的方法,其中所述第一调用存储装置是专用于所述高速缓存行的第一硬件,且所述第二调用存储装置是专用于所述高速缓存行的第二硬件。
17.一种包含指令的非暂时性机器可读媒体,所述指令在由处理电路系统执行时致使所述处理电路系统执行包括以下的操作:
在存储器装置中维持高速缓存行的队列,所述队列包含在当前与所述高速缓存行相关联的存储器地址上操作的延期存储器请求,所述队列的元数据存储于所述高速缓存行的标签中;
确定需要调用以处理所述延期存储器请求,所述调用是对所述高速缓存行的控制改变到所述存储器装置;
响应于需要所述调用的所述确定,将所述队列的所述元数据从所述标签写入到对应于所述高速缓存行的第一调用存储装置,所述第一调用存储装置由对应于所述延期存储器请求的存储器请求ID引用;
传输包含消息ID的调用请求;
响应于所述调用请求的传输,将所述存储器请求ID写入到由所述消息ID引用的第二调用存储装置;及
基于对所述调用请求的响应及所述高速缓存行的逐出,从所述第一调用存储装置还原所述高速缓存行的所述队列,所述响应包含所述消息ID,所述消息ID用于从所述第二调用存储装置检索所述存储器请求ID,且所述存储器请求ID用于引用所述第一调用存储装置。
18.根据权利要求17所述的非暂时性机器可读媒体,其中所述操作包括:
在还原所述高速缓存行的所述队列之前接收存储器请求;
使所述存储器请求在所述队列中排队;及
更新所述第一调用存储装置中的所述队列的所述元数据。
19.根据权利要求17所述的非暂时性机器可读媒体,其中所述队列的所述元数据是指向所述队列的头或尾指针。
20.根据权利要求19所述的非暂时性机器可读媒体,其中还原所述队列包含将所述头或所述尾指针复制到所述高速缓存行的标签中。
21.根据权利要求17所述的非暂时性机器可读媒体,其中写入所述队列的所述元数据包含将所述存储器请求ID写入到所述高速缓存行的所述标签中。
22.根据权利要求21所述的非暂时性机器可读媒体,其中传输所述调用请求包含将调用待决指示写入到所述高速缓存行的所述标签。
23.根据权利要求22所述的非暂时性机器可读媒体,其中所述标签中的所述存储器请求ID仅在所述调用待决指示被设置的情况下才有效。
24.根据权利要求17所述的非暂时性机器可读媒体,其中所述第一调用存储装置是专用于所述高速缓存行的第一硬件,且所述第二调用存储装置是专用于所述高速缓存行的第二硬件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/899,171 US11940919B2 (en) | 2022-08-30 | 2022-08-30 | Recall pending cache line eviction |
US17/899,171 | 2022-08-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117632794A true CN117632794A (zh) | 2024-03-01 |
Family
ID=89999792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310787873.0A Pending CN117632794A (zh) | 2022-08-30 | 2023-06-29 | 调用待决高速缓存行逐出 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11940919B2 (zh) |
CN (1) | CN117632794A (zh) |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7594080B2 (en) * | 2003-09-12 | 2009-09-22 | International Business Machines Corporation | Temporary storage of memory line while waiting for cache eviction |
US20080270708A1 (en) | 2007-04-30 | 2008-10-30 | Craig Warner | System and Method for Achieving Cache Coherency Within Multiprocessor Computer System |
US9015399B2 (en) | 2007-08-20 | 2015-04-21 | Convey Computer | Multiple data channel memory module architecture |
US8561037B2 (en) | 2007-08-29 | 2013-10-15 | Convey Computer | Compiler for generating an executable comprising instructions for a plurality of different instruction sets |
US8095735B2 (en) | 2008-08-05 | 2012-01-10 | Convey Computer | Memory interleave for heterogeneous computing |
US8156307B2 (en) | 2007-08-20 | 2012-04-10 | Convey Computer | Multi-processor system having at least one processor that comprises a dynamically reconfigurable instruction set |
US9710384B2 (en) | 2008-01-04 | 2017-07-18 | Micron Technology, Inc. | Microprocessor architecture having alternative memory access paths |
US8122229B2 (en) | 2007-09-12 | 2012-02-21 | Convey Computer | Dispatch mechanism for dispatching instructions from a host processor to a co-processor |
US8972958B1 (en) | 2012-10-23 | 2015-03-03 | Convey Computer | Multistage development workflow for generating a custom instruction set reconfigurable processor |
US8205066B2 (en) | 2008-10-31 | 2012-06-19 | Convey Computer | Dynamically configured coprocessor for different extended instruction set personality specific to application program with shared memory storing instructions invisibly dispatched from host processor |
US20100115233A1 (en) | 2008-10-31 | 2010-05-06 | Convey Computer | Dynamically-selectable vector register partitioning |
US8423745B1 (en) | 2009-11-16 | 2013-04-16 | Convey Computer | Systems and methods for mapping a neighborhood of data to general registers of a processing element |
US10430190B2 (en) | 2012-06-07 | 2019-10-01 | Micron Technology, Inc. | Systems and methods for selectively controlling multithreaded execution of executable code segments |
US9569367B1 (en) * | 2014-03-04 | 2017-02-14 | EMC IP Holding Company LLC | Cache eviction based on types of data stored in storage systems |
WO2019089816A2 (en) | 2017-10-31 | 2019-05-09 | Micron Technology, Inc. | System having a hybrid threading processor, a hybrid threading fabric having configurable computing elements, and a hybrid interconnection network |
EP3746902B1 (en) | 2018-01-29 | 2023-09-27 | Micron Technology, Inc. | Memory controller |
US11461527B2 (en) | 2018-02-02 | 2022-10-04 | Micron Technology, Inc. | Interface for data communication between chiplets or other integrated circuits on an interposer |
WO2019191738A1 (en) | 2018-03-31 | 2019-10-03 | Micron Technology, Inc. | Backpressure control using a stop signal for a multi-threaded, self-scheduling reconfigurable computing fabric |
EP3776237A1 (en) | 2018-03-31 | 2021-02-17 | Micron Technology, Inc. | Multiple types of thread identifiers for a multi-threaded, self-scheduling reconfigurable computing fabric |
KR102446702B1 (ko) | 2018-03-31 | 2022-09-26 | 마이크론 테크놀로지, 인크. | 멀티 스레드, 자체 스케줄링 재구성 가능한 컴퓨팅 패브릭의 루프 스레드 순서 실행 제어 |
EP3776188A1 (en) | 2018-03-31 | 2021-02-17 | Micron Technology, Inc. | Conditional branching control for a multi-threaded, self- scheduling reconfigurable computing fabric |
EP3776239A1 (en) | 2018-03-31 | 2021-02-17 | Micron Technology, Inc. | Loop execution control for a multi-threaded, self-scheduling reconfigurable computing fabric using a reenter queue |
WO2019191739A1 (en) | 2018-03-31 | 2019-10-03 | Micron Technology, Inc. | Efficient loop execution for a multi-threaded, self-scheduling reconfigurable computing fabric |
US11074078B2 (en) | 2018-05-07 | 2021-07-27 | Micron Technology, Inc. | Adjustment of load access size by a multi-threaded, self-scheduling processor to manage network congestion |
US11126587B2 (en) | 2018-05-07 | 2021-09-21 | Micron Technology, Inc. | Event messaging in a system having a self-scheduling processor and a hybrid threading fabric |
US11513840B2 (en) | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Thread creation on local or remote compute elements by a multi-threaded, self-scheduling processor |
US11513838B2 (en) | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Thread state monitoring in a system having a multi-threaded, self-scheduling processor |
US11132233B2 (en) | 2018-05-07 | 2021-09-28 | Micron Technology, Inc. | Thread priority management in a multi-threaded, self-scheduling processor |
US11119782B2 (en) | 2018-05-07 | 2021-09-14 | Micron Technology, Inc. | Thread commencement using a work descriptor packet in a self-scheduling processor |
US11513839B2 (en) | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Memory request size management in a multi-threaded, self-scheduling processor |
US11513837B2 (en) | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Thread commencement and completion using work descriptor packets in a system having a self-scheduling processor and a hybrid threading fabric |
US11068305B2 (en) | 2018-05-07 | 2021-07-20 | Micron Technology, Inc. | System call management in a user-mode, multi-threaded, self-scheduling processor |
US11119972B2 (en) | 2018-05-07 | 2021-09-14 | Micron Technology, Inc. | Multi-threaded, self-scheduling processor |
US11573834B2 (en) | 2019-08-22 | 2023-02-07 | Micron Technology, Inc. | Computational partition for a multi-threaded, self-scheduling reconfigurable computing fabric |
US11150900B2 (en) | 2019-08-28 | 2021-10-19 | Micron Technology, Inc. | Execution or write mask generation for data selection in a multi-threaded, self-scheduling reconfigurable computing fabric |
US11836524B2 (en) | 2019-08-29 | 2023-12-05 | Micron Technology, Inc. | Memory interface for a multi-threaded, self-scheduling reconfigurable computing fabric |
-
2022
- 2022-08-30 US US17/899,171 patent/US11940919B2/en active Active
-
2023
- 2023-06-29 CN CN202310787873.0A patent/CN117632794A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11940919B2 (en) | 2024-03-26 |
US20240070078A1 (en) | 2024-02-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9043498B2 (en) | Automatic pinning and unpinning of virtual pages for remote direct memory access | |
CN107077441B (zh) | 用于提供使用rdma和主动消息的异构i/o的方法和装置 | |
US9092275B2 (en) | Store operation with conditional push of a tag value to a queue | |
US8930596B2 (en) | Concurrent array-based queue | |
US11863469B2 (en) | Utilizing coherently attached interfaces in a network stack framework | |
US10423563B2 (en) | Memory access broker system with application-controlled early write acknowledgment support and identification of failed early write acknowledgment requests to guarantee in-order execution of memory requests of applications | |
US20150074316A1 (en) | Reflective memory bridge for external computing nodes | |
US11940919B2 (en) | Recall pending cache line eviction | |
US11914516B1 (en) | Memory side cache request handling | |
US20240070082A1 (en) | Evicting a cache line with pending control request | |
US20240070060A1 (en) | Synchronized request handling at a memory device | |
US20210271536A1 (en) | Algorithms for optimizing small message collectives with hardware supported triggered operations | |
US11960403B2 (en) | Variable execution time atomic operations | |
US20240069800A1 (en) | Host-preferred memory operation | |
US20240070083A1 (en) | Silent cache line eviction | |
US11960768B2 (en) | Memory-side cache directory-based request queue | |
US20240143184A1 (en) | Reducing index update messages for memory-based communication queues | |
US20240069795A1 (en) | Access request reordering across a multiple-channel interface 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 | |
CN115933973B (zh) | 远程更新数据的方法、rdma系统及存储介质 | |
US20240069804A1 (en) | Control parameter address virtualization | |
CN117992125A (zh) | 减少用于基于存储器的通信队列的索引更新消息 | |
WO2023235003A1 (en) | Command fencing for memory-based communication queues |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |