CN117312194A - 空载高速缓存旁路 - Google Patents
空载高速缓存旁路 Download PDFInfo
- Publication number
- CN117312194A CN117312194A CN202310717044.5A CN202310717044A CN117312194A CN 117312194 A CN117312194 A CN 117312194A CN 202310717044 A CN202310717044 A CN 202310717044A CN 117312194 A CN117312194 A CN 117312194A
- Authority
- CN
- China
- Prior art keywords
- cache
- bypass
- memory
- read
- data
- 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
- 238000000034 method Methods 0.000 claims abstract description 36
- 230000004044 response Effects 0.000 claims description 38
- 230000003247 decreasing effect Effects 0.000 claims description 2
- 239000000872 buffer Substances 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 9
- 238000012937 correction Methods 0.000 description 8
- 238000001514 detection method Methods 0.000 description 8
- 238000012546 transfer Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000015556 catabolic process Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000006731 degradation reaction Methods 0.000 description 3
- 208000032369 Primary transmission Diseases 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000007334 memory performance Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000010355 oscillation Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000001360 synchronised 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/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- 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/0877—Cache access modes
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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/60—Details of cache memory
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
描述了与用于空载高速缓存旁路的存储器控制器相关的系统、设备和方法。示例存储器控制器可耦合到存储器装置。所述示例存储器控制器可包含高速缓存。所述高速缓存可包含高速缓存序列控制器,所述高速缓存序列控制器被配置成确定未决高速缓存查找操作的数量,确定所述数量满足空载旁路阈值,且使得执行绕过所述高速缓存并存取所述存储器装置的旁路存储器操作。
Description
技术领域
本公开大体上涉及半导体存储器和方法,且更确切地说,涉及用于空载高速缓存旁路的设备、系统和方法。
背景技术
通常将存储器装置提供为计算机或其它电子系统中的内部半导体集成电路。存在许多不同类型的存储器,包含易失性和非易失性存储器。易失性存储器可能需要功率来维持其数据(例如,主机数据、错误数据等),且包含随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)和晶闸管随机存取存储器(TRAM)等等。非易失性存储器可通过在未通电时保留所存储数据来提供持久数据,并且可包含NAND快闪存储器、NOR快闪存储器、铁电随机存取存储器(FeRAM)和电阻可变存储器,例如相变随机存取存储器(PCRAM)、电阻式随机存取存储器(RRAM)和磁阻式随机存取存储器(MRAM),例如自旋力矩转移随机存取存储器(STT RAM)等等。
存储器装置可耦合到主机(例如,主机计算装置)以存储数据、命令和/或指令以在操作计算机或电子系统时供主机使用。举例来说,数据、命令和/或指令可以在计算或其它电子系统的操作期间在主机与存储器装置之间传送。控制器可用于管理主机与存储器装置之间的数据、命令和/或指令的传送。
发明内容
在一方面中,本公开提供一种用于空载高速缓存旁路的设备,其包括:存储器装置;以及存储器控制器,其耦合到所述存储器装置且包括高速缓存序列控制器,其中所述高速缓存序列控制器被配置成:确定高速缓存的队列中的未决高速缓存查找操作的数量;以及响应于确定所述数量满足空载旁路阈值,使得执行绕过所述高速缓存并存取所述存储器装置的旁路读取操作。
在另一方面中,本公开进一步提供一种用于空载高速缓存旁路的系统,其包括:存储器装置;以及存储器控制器,其耦合到所述存储器装置且被配置成响应于与所述存储器装置相关联的主机读取请求而执行与高速缓存相关联的高速缓存查找操作,其中所述高速缓存包括:高速缓存序列控制器,其用于:基于所收集的度量,确定高速缓存的队列中的未决高速缓存查找操作的数量;确定所述数量满足空载旁路阈值;响应于主机读取请求,使得执行高速缓存查找操作;以及与执行所述高速缓存查找操作并行地使得发起旁路读取操作以从所述存储器装置读取对应于所述主机读取请求的数据。
在另一方面中,本公开进一步提供一种用于空载高速缓存旁路的方法,其包括:确定队列中与高速缓存相关联的未决高速缓存查找操作的数量;确定未决高速缓存查找操作的所述数量小于或等于空载旁路阈值;以及响应于确定未决高速缓存查找操作的所述数量小于或等于所述空载旁路阈值:响应于主机存取请求,使得执行绕过所述高速缓存并存取存储器装置的旁路读取操作;以及响应于所述主机存取请求,与所述旁路读取操作的所述执行大体同时地使得执行与所述高速缓存相关联的高速缓存查找操作。
附图说明
图1示出根据本公开的数个实施例的包含用于空载高速缓存旁路的控制器的计算系统的功能框图。
图2示出根据本公开的数个实施例的用于空载高速缓存旁路的控制器的功能框图。
图3示出根据本公开的数个实施例的示出通过用于空载高速缓存旁路的控制器的一部分的数据流的框图。
图4示出根据本公开的数个实施例的用于空载高速缓存旁路的实例方法的流程图。
图5示出根据本公开的数个实施例的用于空载高速缓存旁路的实例方法的流程图。
图6示出根据本公开的数个实施例的用于空载高速缓存旁路的实例图式。
图7示出根据本公开的数个实施例的用于空载高速缓存旁路的图的另一实例。
具体实施方式
描述了与用于空载高速缓存旁路的控制器相关的系统、设备和方法。控制器包含前端部分、中央控制器部分、后端部分和管理单元。中央控制器部分可包含高速缓存。高速缓存可存储与存储器操作相关联的数据。举例来说,高速缓存可包含易失性存储器装置,例如DRAM和/或SRAM。
高速缓存可包含用于暂时存储有可能再次使用的数据的物理存储器存储区。因此,高速缓存可存储与响应于对存储器的存取请求(例如,读取请求和/或写入请求)而执行的存储器操作(例如,读取或写入)相关联的数据。因此,高速缓存可包含已写入其中的数据条目池。
高速缓存可包含度量逻辑和/或负载遥测逻辑。度量逻辑可收集关于与存储器请求(即,存取请求)相关联的度量和/或与存储器操作的执行相关联的度量(例如,与读取/写入相关联的度量)的信息。举例来说,度量逻辑可收集与存储器请求相关联的度量和/或与对高速缓存和/或其它存储器装置执行的存储器操作相关联的度量。类似地,负载遥测逻辑可收集关于与存储器请求(即,存取请求)相关联的负载遥测和/或与存储器操作的执行相关联的负载(例如,与读取/写入相关联的负载遥测)的信息。
举例来说,度量逻辑可包含多个计数器以收集度量,例如,高速缓存线命中、高速缓存线未命中、不带回写的高速缓存线逐出、带有回写的高速缓存线替换、高速缓存读取存取和/或高速缓存写入存取的数目。在一些实施例中,高速缓存可包含高速缓存存储器以存储高速缓存线数据。如本文中所使用,“高速缓存线命中”或“高速缓存命中”是指可在被搜索的元件(例如,高速缓存)中找到所请求数据的时刻。如本文中所使用,“高速缓存线未命中”或“高速缓存未命中”是指在被搜索的元件(例如,高速缓存)中找不到所请求数据的时刻。
相比于在没有高速缓存的情况下具有存储器装置的计算系统的性能,结合存储器装置使用高速缓存通常可以增强计算系统性能。然而,用于执行产生高速缓存未命中的存储器操作的时间量和/或计算能力量可能会使计算系统性能降级。举例来说,尝试从高速缓存读取特定数据的主机发起的读取操作需要时间(例如,一定数量的时钟周期)和计算能力(例如,识别/利用特定高速缓存标签和/或与高速缓存中的相关联的其它类型的信息)来执行,然而,当产生高速缓存未命中时,不将特定数据返回给主机。因此,至少由于使用了本来可以利用的计算能力,计算系统性能可能会降级。在产生连续高速缓存未命中和/或在相对较短的时间段内产生大量/大部分的高速缓存未命中的连续的主机发起的存储器操作(例如,读取操作)的情况下,计算性能的降级可能特别明显。
这种性能降级可能是不希望的,尤其是在关键应用和/或预期非常高的存储器子系统性能的应用中。此外,在移动(例如,智能手机、物联网等)存储器部署中,可用于容纳存储器子系统的空间量与传统计算架构相比是有限的,因此性能降级可能会加剧。
本公开的各方面通过执行空载高速缓存旁路来解决以上和其它缺陷。举例来说,基于所存储度量和/或负载遥测,本文中的实施例通过更改如本文中详述的接口、存储器和/或高速缓存的操作来执行空载高速缓存旁路。与不执行空载高速缓存旁路的方法相比,基于所存储度量和/或负载遥测的此类更改可改善存储器性能。
描述了与用于空载高速缓存旁路的控制器(例如,存储器或媒体控制器部分)相关的系统、设备和方法。存储器控制器可协调操作的执行以将数据写入到高速缓存和从高速缓存读取数据。
在一些实施例中,存储器系统可为计算高速链路(CXL)兼容的存储器系统(例如,存储器系统可包含PCIe/CXL接口)。CXL是被设计成加速下一代数据中心性能的高速中央处理单元(CPU)到装置和CPU到存储器互连件。CXL技术维持CPU存储器空间与所附接装置上的存储器之间的存储器一致性,这允许资源共享以提高性能、降低软件堆栈复杂性且降低总体系统成本。
随着越来越多地使用加速器来补充CPU以支持新兴应用,例如人工智能和机器学习,CXL被设计成用于高速通信的行业开放标准接口。CXL技术建立在外围组件互连高速(PCIe)基础设施上,利用PCIe物理和电气接口以在例如输入/输出(I/O)协议、存储器协议(例如,最初允许主机与加速器共享存储器)和一致性接口等领域提供高级协议。
在本公开的以下详细描述中,参考形成本公开的一部分的附图,且附图中通过说明的方式展示可实践本公开的一或多个实施例的方式。足够详细地描述了这些实施例以使所属领域的一般技术人员能够实践本公开的实施例,且应当理解,可以利用其它实施例,且可以在不脱离本公开的范围的情况下进行过程、电和结构性改变。
还应理解,本文中所使用的术语仅仅是出于描述特定实施例的目的,且并不意图为限制性的。如本文中所使用,除非上下文另外明确规定,否则单数形式“一(a/an)”和“所述(the)”可包含单数和复数指示物两者。另外,“数个”、“至少一个”和“一或多个”(例如,数个存储器存储体)可以指一或多个存储器存储体,而“多个”意图指代多于一个此类事物。
此外,贯穿本申请案以许可意义(即,有可能、能够)而非以强制性意义(即,必须)使用词语“可能”和“可”。术语“包含”和其派生词意指“包含但不限于”。视上下文而定,术语“耦合(coupled/coupling)”意指物理上直接或间接地连接或用于存取和移动(传输)命令和/或数据。视上下文而定,术语“数据”和“数据值”在本文中可互换地使用且可具有相同含义。
图1是根据本公开的数个实施例的包含存储器控制器100的计算系统101(例如,设备)的功能框图。存储器控制器100可包含前端部分104、中央控制器部分110和后端部分119。计算系统101可包含耦合到存储器控制器100的主机103和存储器装置126-1……126-N(在本文中统称为存储器装置126)。耦合到主机103的存储器控制器100可与存储器装置126-1……126-N中的一或多个分立。
前端部分104包含用以通过输入/输出(I/O)通道102-1、102-2……102-M将存储器控制器100耦合到主机103的接口和接口管理电路系统,以及用以管理I/O通道102的电路系统。可存在任何数量的I/O通道102,例如八个、十六个或另一数量的I/O通道102。在一些实施例中,I/O通道102可被配置为单个端口。在至少一个实施例中,存储器控制器100与主机103之间的接口可为根据CXL协议操作的PCIe物理和电接口。
中央控制器部分110可响应于从主机103接收到请求而控制存储器操作的执行。存储器操作的实例包含存储器存取请求,例如从存储器装置126读取数据的读取操作或将数据写入到存储器装置126的写入操作。
中央控制器部分110可包含用以存储与存储器操作的执行相关联的数据的高速缓存112,和/或用以在数据存储在存储器装置126和/或高速缓存112(例如,图3所示的高速缓存存储器357)中之前对数据进行加密的安全组件(未示出)。安全组件的实例可包含但不限于被配置成实施数据加密、数据散列、数据掩蔽和数据令牌化的软件和电路系统。在一些实施例中,响应于从主机103接收到请求,来自主机103的数据可存储在高速缓存112的高速缓存线中。高速缓存112中的数据可写入到存储器装置126。
高速缓存112可包含高速缓存序列控制器(CSC)115。CSC 115可确定未决查找操作的数量。在一些实施例中,CSC 115可确定与高速缓存查找操作相关联的高速缓存未命中的数量。然而,其它类型的结果(例如,高速缓存命中)是可能的。
中央控制器部分110可基于从主机103接收到的数据而生成错误检测信息和/或错误校正信息。中央控制器部分110可对从主机103或从存储器装置126接收到的数据执行错误检测操作和/或错误校正操作。错误检测操作的实例为循环冗余校验(CRC)操作。CRC可被称为代数错误检测。CRC可包含使用因使用要保护的数据进行代数计算而产生的校验值。CRC可通过将与数据相关联地存储的校验值与基于数据计算出的校验值进行比较来检测数据的意外变化。错误校正操作的实例为错误校正码(ECC)操作。ECC编码是指通过将冗余位添加到数据来对数据进行编码。ECC解码是指查阅ECC编码的数据以检查数据中的任何错误。一般来说,ECC不仅可检测错误,还可校正其能够检测到的错误的子集。
后端部分119可包含媒体控制器和将存储器控制器100耦合到存储器装置126的物理(PHY)层。如本文中所使用,术语“PHY层”一般是指计算系统的开放系统互连(OSI)模型中的物理层。PHY层可为OSI模型的第一(例如,最低)层并且可用以经由物理数据传输媒体传送数据。在一些实施例中,物理数据传输媒体可包含信道125-1……125-N。信道125可包含十六个引脚数据总线和两个引脚数据掩蔽反转(DMI)总线,以及其它可能总线。后端部分119可经由数据引脚与存储器装置126交换(例如,传输或接收)数据,且经由DMI引脚与存储器装置126交换错误检测信息、RAID信息和/或错误校正信息。错误检测信息和/或错误校正信息的交换可与数据交换同时进行。
存储器装置126的实例为根据例如低功率双数据速率(LPDDRx)等协议操作的动态随机存取存储器(DRAM),其在本文中可以被称为LPDDRx DRAM装置、LPDDRx存储器等。LPDDRx中的“x”是指几代协议中的任一代(例如,LPDDR5)。
在一些实施例中,存储器控制器100可包含管理单元134以初始化、配置和/或监测存储器控制器100的特性。管理单元134可包含用以管理带外数据和/或命令的I/O总线、用以执行与初始化、配置和/或监测存储器控制器的特性相关联的指令的管理单元控制器,以及用以存储与初始化、配置和/或监测存储器控制器100的特性相关联的数据的管理单元存储器。如本文中所使用,术语“带外”一般是指不同于网络的主要传输媒体的传输媒体。举例来说,带外数据和/或命令可为使用与用于在网络内传送数据的传输媒体不同的传输媒体传送到网络的数据和/或命令。
图2示出根据本公开的数个实施例的用于空载高速缓存旁路的控制器的功能框图。如图2所示,前端部分204可包含接口206,所述接口包含多个I/O通道202-1、202-2……202-N(在本文中统称为I/O通道202),以及用以管理接口206的电路系统208。接口206的实例为外围组件高速互连(PCIe)5.0接口。在一些实施例中,控制器可包含耦合到多个I/O通道的外围组件互连高速(PCIe)5.0接口,其中控制器将根据计算高速链路协议经由PCIe5.0接口接收与高速缓存、存储器装置或其任何组合中的至少一个相关联的存取请求。
在一些实施例中,存储器控制器200可根据例如CXL协议等非确定性存储器协议经由接口206接收涉及高速缓存212和存储器装置(例如,存储器裸片)226-1、226-2……226-(N-1)、226-N(在本文中统称为存储器装置226)中的至少一个的存取请求。接口206可通过I/O通道202从主机(例如,图1所示的主机103)接收数据。接口管理电路系统208可使用例如CXL协议等非确定性协议来管理接口206,且可被称为CXL接口管理电路系统208。CXL接口管理电路系统208可经由PCIe接口206耦合到主机。
中央控制器210可(例如,经由媒体管理层(MML)211)耦合到前端204的接口管理电路系统208。在此实例中,中央控制器210包含错误管理器250,所述错误管理器包含错误校正码(ECC)组件216-1和216-2。
MML 211可执行各种功能,例如与地址映射和/或数据请求管理相关的功能。MML211可包含各种逻辑和缓冲器,以及其它可能的组件。举例来说,MML 211可包含命令处置逻辑(未示出)和/或缓冲器处置逻辑(未示出)。在一些实施例中,MML 211可包含命令处置逻辑和缓冲器处置逻辑两者。命令处置逻辑可对命令进行处置(例如,路由、排队列、确定优先级等),所述命令例如从前端204接收的那些命令。缓冲器处置逻辑可对例如读取缓冲器和/或写入缓冲器等缓冲器进行处置(例如,擦除、排队列、跟踪等)。在各种实施例中,MML 211可包含读取处置逻辑、缓冲器处置逻辑和读取缓冲器。
中央控制器210可包含高速缓存212以与存储器操作的执行相关联地存储数据。高速缓存212的实例为包含多个高速缓存线的三十二(32)路组相联高速缓存存储器。高速缓存线大小可等于或大于存储器控制器200的存取粒度(例如,用于CXL协议的64字节)。举例来说,每一高速缓存线可包含256个字节的数据。然而,实施例不限于此。高速缓存212可包含CSC 215。
如图2所示,存储器控制器200可包含后端部分219,所述后端部分包含耦合到中央控制器210的媒体控制器220。后端部分219可包含具有PHY存储器接口224-1、224-2……224-(N-1)、224-N的物理(PHY)层222。每一物理接口224被配置成耦合到相应存储器装置226。PHY层222可以是被配置成用于确定性存储器协议的存储器接口,例如LPDDRx存储器接口。
后端部分219可将PHY层部分222耦合到存储器装置226-1、226-2……226-(N-1)、226-N的存储器存储体230-1、230-2……230-(N-1)、230-N。存储器装置226各自包含至少一个存储器单元阵列。在一些实施例中,存储器装置226可为不同类型的存储器。媒体控制电路系统220可被配置成控制至少两种不同类型的存储器。举例来说,存储器装置226-1、226-2可以是根据第一协议操作的LPDDRx存储器,且存储器装置226-(N-1)、226-N可以是根据不同于第一协议的第二协议操作的LPDDRx存储器。
存储器控制器200可包含管理单元234,所述管理单元被配置成初始化、配置和/或监测存储器控制器200的特性。在一些实施例中,管理单元234包含系统管理(SM)总线238。SM总线238可管理带外数据和/或命令。SM总线238可为串行存在检测的部分。在一些实施例中,SM总线238可为出于轻量通信的目的的单端简单双线总线。管理单元234可包含CPU子系统240,所述CPU子系统可充当管理单元的控制器以执行与初始化、配置和/或监测存储器控制器200的特性相关联的指令。
管理单元234可包含混杂电路系统242,例如存储与管理和/或监测存储器控制器200的特性相关联的代码和/或数据的本地存储器。管理单元234的端点可暴露于主机系统(例如,图1所示的主机103)以管理数据。在一些实施例中,由管理单元234监测的特性可包含供应到存储器控制器200的电压和/或由外部传感器测量的温度。管理单元234可包含互连件236,例如高级高性能总线(AHB)以耦合管理单元234的不同组件。
管理单元234可包含用以管理带内数据(例如,经由网络(例如,局域网(LAN))内的主传输媒体传送的数据)的电路系统。在一些实施例中,CPU子系统240可为满足联合测试行动小组(JTAG)标准且根据内部集成电路(I2C或I3C)协议和辅助I/O电路系统操作的控制器。JTAG一般是指用于在制造之后验证设计和测试印刷电路板的行业标准。I2C一般是指用于双线接口以连接如同微控制器、I/O接口和嵌入系统中的其它类似外围设备等低速装置的串行协议。在一些实施例中,辅助I/O电路系统可将管理单元234耦合到存储器控制器200。此外,用于操作管理单元的固件可存储在混杂电路系统242中。在一些实施例中,混杂电路系统242可为快闪存储器,例如快闪NOR存储器或其它持久性快闪存储器装置。
图3示出根据本公开的数个实施例的示出通过用于空载高速缓存旁路的控制器的一部分的数据流的框图。所述部分可以是控制器(例如,控制器100或200)的中央控制器部分。控制器的部分包含MML 311、错误管理器350和高速缓存312,所述高速缓存包含CSC315、高速缓存控制器347、高速缓存存储器357。
如所提及,MML 311可包含各种逻辑和缓冲器,以及其它可能的组件。举例来说,如图3所示,MML可包含命令(CMD)处置逻辑343、缓冲器处置逻辑344和读取缓冲器345。
高速缓存控制器347可耦合到高速缓存存储器357以管理高速缓存存储器357和CSC 315的各个方面。举例来说,高速缓存控制器347可包含被配置成管理高速缓存的逻辑和/或电路系统。
如所提及,错误管理器350可包含错误检测和/或错误校正电路系统。错误管理器350可包含各种队列,例如读取命令队列352和写入命令队列354。
如所提及,CSC 315可确定未决高速缓存查找操作的数量。如图3所示,CSC 315可包含队列,例如未决高速缓存查找队列365、高速缓存命中队列(未示出)和/或高速缓存未命中队列(未示出)。在一些实施例中,例如未决高速缓存查找队列365等队列的队列深度可基于空载旁路阈值而配置。举例来说,在一些实施例中,未决高速缓存查找队列365的队列深度可等于空载旁路阈值,以及其它可能性。
在362-1,可将高速缓存查找操作(例如,读取命令(RD CMD))从MML 311传输到开关346。开关346可包含被配置成执行与选择性地绕过高速缓存存储器357相关的各个方面的逻辑和/或电路系统。
在364,可由高速缓存控制器364传输写入命令(WR CMD)。高速缓存查找操作(例如,读取命令)和/或写入命令可从主机发送到MML 311,且随后从MML 311发送到存储器装置。
在362-2,可将读取命令传输到高速缓存控制器347。高速缓存控制器347可随后传输高速缓存命中和/或高速缓存未命中命令。
在362-3,可将旁路读取命令传输到错误管理器350。举例来说,开关346可耦合到CSC 315,以基于CSC 315确定未决高速缓存查找操作的数量满足(例如,小于或等于)空载旁路阈值而选择性地绕过高速缓存存储器357,如本文中详述。因此,高速缓存控制器347和高速缓存存储器357可完全被读取旁路命令绕过。举例来说,旁路读取命令可传输到错误管理器,且准许在不利用与高速缓存相关联的任何高速缓存标签的情况下从存储器装置获得数据。在经历低高速缓存命中率时,绕过高速缓存控制器347和高速缓存存储器357可及时且高效地获取来自存储器装置的所请求数据。也就是说,未决高速缓存查找操作的数量满足空载旁路阈值可指示低高速缓存命中率。
在362-4,可将高速缓存未命中命令(READ CMD)传输到错误管理器350和/或存储器装置。举例来说,可将旁路命令和高速缓存未命中命令两者传输到开关348。举例来说,当启用高速缓存旁路且未决查找操作的数量满足空载旁路阈值时,可将旁路命令传输到开关348。当停用高速缓存旁路时和/或当未决查找操作的数量不满足空载旁路阈值时,可在不存在旁路命令传输的情况下将高速缓存未命中命令传输到开关,以及其它可能性。开关348可包含被配置成执行空载高速缓存旁路的各方面的逻辑和/或电路系统。在362-5,开关348可将旁路命令和/或高速缓存未命中命令传送到错误管理器350。错误管理器350可随后将旁路命令和/或高速缓存未命中命令传送到存储器装置(例如,DRAM存储器装置和/或NAND存储器装置)。
在362-6,可将读取数据提供到高速缓存存储器357和/或仲裁器360。仲裁器360是指被配置成将例如指示高速缓存命中(例如,读取命中)或高速缓存未命中(例如,读取未命中)的数据等数据传输到MML 311的逻辑和/或硬件。仲裁器可协调高速缓存命中数据和/或高速缓存未命中数据的传输,例如,以避免冲突和/或以其它方式确保及时且有效地传达命中和/或未命中。举例来说,可在将高速缓存未命中命令和/或旁路读取命令传输到存储器装置之后将高速缓存未命中数据提供到高速缓存存储器和/或仲裁器360。
在362-8,可将高速缓存命中命令(READ HIT CMD)传输到高速缓存存储器357和/或CSC 315。CSC 315可包含多个计数器367以对例如高速缓存未命中和/或高速缓存命中的数量等结果进行计数。举例来说,高速缓存命中的数量和/或高速缓存未命中的数量和/或未决高速缓存查找操作的数量可存储为计数器中的相应计数(例如,“1”的相应数量或“0”)。举例来说,可通过比较逻辑/电路系统369将存储在计数器中的未决高速缓存查找操作的数量与空载旁路阈值368(例如,“1的THR”)进行比较。
在366,可执行回写操作以将更新的数据从高速缓存写入到存储器装置。举例来说,可执行回写操作以经由错误管理器350将指示更新的数据的信令从高速缓存传送到存储器装置。当高速缓存查找产生高速缓存未命中并且所述高速缓存未命中被确定为脏高速缓存未命中时,可执行回写操作,如本文中详述。
图4示出根据本公开的数个实施例的用于空载高速缓存旁路的实例方法470的流程图。类似地,图5示出根据本公开的数个实施例的用于空载高速缓存旁路的实例方法580的流程图。方法470、580可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。虽然以特定顺序或次序示出,但除非另外规定,否则可修改过程的次序。因此,所示实施例应仅作为实例理解,并且所示过程可以不同次序执行,并且一些过程可并行执行。另外,可以在各种实施例中省略一个或多个过程。因此,并非每一个实施例中都需要所有过程。其它过程流程是可能的。
在471,方法470可包含接收与存储器装置相关联的存取请求。在一些实施例中,存储器装置为动态随机存取存储器(DRAM)装置或低时延RAM存储器装置中的一个。存储器请求可从主机发送到中央控制器部分。在一些实施例中,中央控制器部分可以32GT/s的速率接收存储器请求。
在472,方法470可包含响应于接收到存取请求而对高速缓存执行高速缓存查找操作。举例来说,控制器可存取高速缓存以确定与存取请求相关联的所请求数据是否存储在高速缓存中。如果数据存储在高速缓存中,那么高速缓存可处理存取请求且提供所请求数据。在一些实施例中,可将数据从主机写入到高速缓存,随后将数据写入到存储器装置。也就是说,可在不使用存储器装置的情况下从高速缓存存取数据。在一些实施例中,与从存储器装置存取数据相比,从高速缓存存取数据可提高存取数据的速度。举例来说,可在接收到存取请求之后将数据写入到高速缓存。类似地,当在接收到存取请求之后执行高速缓存查找操作时,可从高速缓存读取数据。也就是说,高速缓存可包含高速缓存控制器以作为存取请求的结果将读取命令发送到存储器装置且将数据从存储器装置写入到高速缓存。另外,作为存取请求的结果,高速缓存控制器可将读取命令发送到高速缓存且将数据从高速缓存写入到存储器装置。
在473,方法470可包含收集与执行高速缓存查找操作相关联的度量。举例来说,可在阈值时间量内收集度量。阈值时间量可以是固定的或可变的。举例来说,在一些实施例中,阈值时间量可基于与高速缓存相关联的高速缓存查找操作的命中率或未命中率而变化。
高速缓存可收集包含通过中央控制器部分中的度量逻辑收集的度量的信息。度量逻辑可用于监测计算系统的行为,因为其涉及存储器操作(例如,对读取/写入到存储器的请求)。举例来说,度量逻辑可包含多个计数器以收集度量,例如,高速缓存线命中、高速缓存线未命中、不带回写的高速缓存线逐出、带有回写的高速缓存线替换、高速缓存读取存取和/或高速缓存写入存取的数目。在一些实施例中,高速缓存可包含高速缓存存储器以存储高速缓存线数据。
在一些实施例中,度量逻辑可包含命中计数器、未命中计数器或其组合中的至少一个。举例来说,度量逻辑可包含用以在读取数据时对高速缓存线命中数进行计数的高速缓存命中计数器、用以在写入数据时对高速缓存线命中数进行计数的写入命中计数器、用以在读取数据时对高速缓存线未命中数进行计数的高速缓存未命中计数器、用以在写入数据时对高速缓存线未命中数进行计数的写入未命中计数器、用以对不带回写的高速缓存线逐出的数目进行计数的替换计数器、用以对带有回写的高速缓存线替换的数目进行计数的回写计数器、用以对高速缓存读取存取的数目进行计数的总读取存取计数器,和/或用以对高速缓存写入存取的数目进行计数的总写入存取计数器。在一些实施例中,度量逻辑可为组相联高速缓存中的每一组收集计数。度量逻辑可使用为组相联高速缓存中的每一组收集的计数来确定最常存取的组。在一些实施例中,确定最常存取的计数器可帮助确定应更改计算系统的哪些特性。
在一些实施例中,高速缓存可收集包含通过中央控制器部分中的负载遥测逻辑收集的负载遥测的信息。负载遥测逻辑可用于计算主机和/或存储器装置在计算系统中发生的读取路径负载和写入路径负载。在一些实施例中,负载遥测逻辑可包含多个遥测计数器以对计算系统中发生的写入路径负载和读取路径负载进行计数。负载遥测逻辑可基于接收到的负载遥测(例如,写入路径负载和读取路径负载)而确定负载值。负载值可由减少来自主机的业务振荡所花费的时间的平均值来确定。遥测比率是通过将遥测计数器的负载遥测除以负载值来计算(例如,测量)的。
在一些实施例中,高速缓存可将所收集的信息存储在存储区域中。存储区域可以是任何类型的易失性存储器和/或非易失性存储器。举例来说,存储区域可为随机存取存储器(RAM)、NOR快闪,以及其它可能性。在一些实施例中,度量逻辑可在每一度量存储事件之后将来自每一计数器的计数存储在存储区域中。在一些实施例中,计数器可将计数存储为绝对值和/或将计数存储为百分比(例如,命中/未命中占存取请求总数的百分比)。
举例来说,高速缓存可将由负载遥测逻辑收集的负载遥测和由度量逻辑收集的度量存储在存储区域中。在一些实施例中,负载遥测逻辑可在阈值时间量之后将来自遥测计数器的负载遥测计数和遥测比率存储到存储区域。在一些实施例中,度量逻辑可将计数从每一相应计数器存储到存储区域。度量逻辑可使得每一计数器在阈值时间量之后将相应计数存储到存储区域。在一些实施例中,度量逻辑的每一相应计数器的计数可在一段时间、一定数量的周期之后和/或响应于输入以及其它可能性而复位为初始值。另外,在度量存储事件之后,可将中断请求发送到互连件以警告互连件在存储区域中存储了新度量。
度量逻辑可包含未决高速缓存查找操作计数器,其被配置成在检测到未决高速缓存查找操作时增大且在未决高速缓存查找操作完成时(例如,在确定与高速缓存查找操作相关联的高速缓存命中或高速缓存未命中时)减小,例如本文中关于图7详述。
度量逻辑可包含被配置成在检测到高速缓存命中时增大的高速缓存命中计数器,以及被配置成在检测到高速缓存未命中时增大的高速缓存未命中计数器。举例来说,计数器可包含被配置成在检测到高速缓存命中时增大的高速缓存命中计数器,和/或被配置成在检测到高速缓存未命中时增大的高速缓存未命中计数器。在一些实施例中,计数器可包含被配置成在检测到高速缓存命中时增大的高速缓存命中计数器和被配置成在检测到高速缓存未命中时增大的高速缓存未命中计数器两者。在一些实施例中,每一计数器可被配置成在使用存储区域存储相应计数之后和/或在已经过阈值时间量之后复位为初始值。
在一些实施例中,存储区域可包含多个行以存储度量逻辑的每一计数器和负载遥测逻辑的每一遥测计数器的计数。也就是说,每一计数器和遥测计数器可具有指定行以将相应计数存储到存储区域中。在一些实施例中,每一行可包含多个槽。度量逻辑可在每一度量存储事件之后将计数存储到指定行内的不同槽。类似地,负载遥测逻辑可在阈值时间量之后将来自遥测计数的计数存储到指定行内的不同槽。将每一计数存储到指定行内的不同槽可允许计算系统跟踪存储器操作随时间的行为。在一些实施例中,跟踪计算系统中的存储器操作和/或高速缓存查找操作的行为可例如通过准许如本文中详述的空载高速缓存旁路来改进计算系统。
在474,可确定未决高速缓存查找操作的数量。如本文中所使用,未决高速缓存查找操作是指已发起但尚未完成的与存取请求相关联的高速缓存查找操作(例如,与高速缓存查找操作相关联的高速缓存命中或高速缓存未命中尚未确定)。举例来说,基于所收集的度量,可确定未决高速缓存查找操作的数量。也就是说,在一些实施例中,可确定例如读取队列等队列中与高速缓存相关联的未决高速缓存查找操作的数量。高速缓存可被配置成根据可确定的先进先出高速缓存(FIFO)替换策略进行操作。然而,采用其它类型的高速缓存替换策略的实施例是可能的。
在475,可将未决高速缓存查找操作的数量与空载旁路阈值进行比较。因此,可确定未决高速缓存查找操作的数量满足(例如,小于或等于)空载旁路阈值,如本文中详述。
空载旁路阈值可以是固定数量或可变数量。举例来说,在一些实施例中,空载旁路阈值可以是基于与高速缓存相关联的高速缓存操作的高速缓存命中率或高速缓存未命中率而变化的可变空载旁路阈值。举例来说,空载旁路阈值可基于高速缓存命中率高于目标命中率而减小,且可基于高速缓存命中率低于目标命中率而增大。因此,可调谐空载旁路阈值以促进高速缓存命中率(或高速缓存未命中率)变得更接近和/或等于目标命中率(或目标未命中率)。
如本文中所使用,目标命中率是指使得从高速缓存获取数据的高速缓存查找操作的百分比或其它指示符(高速缓存命中),而目标未命中率是指不使得从高速缓存获取数据的高速缓存查找操作的百分比或其它指示符(高速缓存未命中)。目标命中率和/或目标未命中率可以是固定的或可变的(例如,可基于系统条件和/或从主机接收的命令而变化)。目标命中率和/或目标未命中率可存储在查找表或其它数据结构中。
在476,可响应于确定未决高速缓存查找操作的数量满足空载旁路阈值而执行旁路操作。举例来说,可响应于确定未决高速缓存查找操作的数量小于或等于空载旁路阈值而执行旁路读取操作。在一些实施例中,旁路操作可包含多个旁路读取操作。举例来说,可响应于在未决查找操作的数量满足空载旁路阈值时接收到的多个主机请求而执行多个旁路操作。
响应于确定未决高速缓存查找操作的数量不满足空载旁路阈值,可省略(不执行)旁路读取操作。举例来说,响应于确定未决高速缓存查找操作的数量大于空载旁路阈值,可省略(不执行)旁路读取操作。也就是说,当未决高速缓存查找操作的数量大于空载旁路阈值时,可将高速缓存指定为处于负载状态。
在一些实施例中,响应于高速缓存不再处于负载状态(例如,未决高速缓存操作的数量小于或等于旁路阈值且因此将高速缓存指定为处于空载状态),可启用和/或执行高速缓存旁路。然而,在一些实施例中,响应于高速缓存被指定为处于负载状态,直到未决查找操作的数量小于退出阈值才执行旁路操作。退出阈值可小于空载旁路阈值。因此,直到未决高速缓存查找操作的数量小于退出阈值且因此远小于空载旁路阈值才执行和/或启用旁路操作。换句话说,在各种实施例中,控制器可放弃执行旁路读取操作,直到未决查找操作的数量小于退出阈值。
图5示出根据本公开的数个实施例的用于空载高速缓存旁路的实例方法580的流程图。在581,方法580可包含接收与存储器装置相关联的读取请求。如所提及,读取请求可为从主机发送到中央控制器部分的主机读取请求。
在582,方法580可包含响应于接收到主机读取请求而对高速缓存(例如,中央控制器部分的高速缓存)执行高速缓存查找操作。
在583,方法580可包含在阈值时间量内收集与对高速缓存执行高速缓存查找操作相关联的信息。举例来说,高速缓存可收集包含通过中央控制器部分中的度量逻辑收集的度量的信息。度量逻辑可用于监测计算系统的行为,因为其涉及高速缓存查找操作和/或存储器操作(例如,对读取/写入到存储器的请求)。
在584,方法580可包含确定未决高速缓存查找操作的数量,如本文中详述。在585,方法580可包含确定未决高速缓存查找操作的数量满足(例如,小于或等于)空载旁路阈值,如本文中详述。
在586,方法580可使得执行旁路存储器操作,如本文中详述。举例来说,在一些实施例中,可响应于主机读取请求而发起(例如,执行)旁路读取操作以绕过高速缓存并存取存储器装置。
如所提及,响应于来自主机的存取请求,可与旁路存储器操作(例如,旁路读取)的执行大体同时地使得执行与高速缓存相关联的高速缓存查找操作。举例来说,可并行地发起高速缓存查找操作和旁路读取操作,使得在至少一些情况下,旁路读取操作在高速缓存查找操作发生时发生。举例来说,响应于确定满足空载旁路阈值,可响应于主机读取请求而与旁路读取操作并行地执行高速缓存查找操作,所述旁路读取操作被发起以从存储器装置读取对应于主机读取请求的数据。如本文中详述,大体同时执行例如旁路读取操作和高速缓存查找操作等旁路存储器操作可以通过取决于高速缓存查找操作的结果选择性地利用来自存储器装置的数据或来自高速缓存的数据来增强性能。
旁路读取操作可在启用高速缓存旁路时发生。在一些情况下,可响应于高速缓存度量(例如,高速缓存查找操作的高速缓存命中率)满足特定准则(例如,具有给定数量的未决高速缓存查找操作、低于给定高速缓存命中率阈值和/或高于给定高速缓存未命中率阈值等)而启用高速缓存旁路。举例来说,当未决高速缓存查找操作的数量小于或等于空载旁路阈值时,可启用高速缓存旁路。
相反,可响应于例如未决高速缓存查找操作的数量大于空载旁路阈值等高速缓存度量而停用高速缓存旁路。当停用高速缓存旁路时,即使在满足空载高速缓存旁路阈值的情况下也不执行旁路存储器操作。
图6示出根据本公开的数个实施例的用于空载高速缓存旁路的实例图式690。虽然图6是关于读取操作描述的,即关于读取旁路操作描述的,但本公开不限于此。举例来说,空载高速缓存旁路的各方面可用例如写入操作等其它存储器操作来实现。
在692-1,可确定读取队列中与高速缓存相关联的未决高速缓存查找操作的数量,如本文中所描述。在692-2,可将读取队列中与高速缓存相关联的未决高速缓存查找操作的数量与空载旁路阈值进行比较以确定未决高速缓存查找操作的数量是否小于或等于空载旁路阈值,如本文中详述。
在一些实施例中,空载旁路阈值可等于未决高速缓存查找操作的非零数量。举例来说,非零数量可等于未决高速缓存查找操作的数量,即等于1、2、3、4、5、6、7、8、9、10,或等于在高速缓存的队列(例如,读取队列)中未决的未决高速缓存查找操作的其它可能数量。然而,在一些实施例中,空载旁路阈值可等于零个未决高速缓存查找操作。
响应于确定未决高速缓存查找操作的数量不满足(例如,大于)空载旁路阈值,流程可前进到692-3。在692-3,可执行高速缓存查找操作以从高速缓存读取数据(如果存在),如本文中详述。在692-3的高速缓存查找操作可在不存在旁路操作的情况下发生,并且因此避免带来原本将与旁路操作的执行相关联的任何不必要的计算开销和/或总线业务等。
响应于确定未决高速缓存查找操作的数量满足(例如,小于或等于空载旁路阈值,流程可前进到692-4。在692-4,执行旁路读取操作,并且可执行高速缓存查找操作以从高速缓存读取数据(如果存在),如本文中详述。在一些实施例中,可与高速缓存查找操作大体同时地执行旁路读取操作,如本文中详述。举例来说,可与高速缓存查找操作并行地发起和/或执行旁路读取操作。
在692-5,可确定高速缓存查找操作(如在692-4执行)是产生高速缓存未命中还是产生高速缓存命中。所述确定可由存储器控制器的中央控制器部分(例如,包含在中央控制器部分中的高速缓存控制器)以及其它可能性进行。
响应于确定高速缓存查找操作产生高速缓存命中,流程可前进到692-6。在692-6,可丢弃来自旁路存储器操作的数据。因此,来自旁路存储器操作的数据并不响应于确定高速缓存查找操作产生高速缓存命中而高速缓存入或存储在高速缓存中。这样从旁路存储器操作丢弃数据确保了冗余数据(例如,从高速缓存读取的数据的复制)不会高速缓存入或存储在高速缓存中,和/或避免了对执行带来任何不必要的影响,所述影响原本可能归因于旁路数据存储在高速缓存中。
响应于确定高速缓存查找操作产生高速缓存未命中,流程可前进到692-7。在692-7,可确定高速缓存是否为干净的。也就是说,高速缓存可被配置成根据高速缓存管理策略(即,高速缓存策略)(例如,直写策略或回写策略)进行操作。“回写策略”一般是指数据写入到高速缓存而所述数据不会同时写入到例如NAND存储器装置等对应存储器装置的高速缓存策略。因此,写入到根据回写策略操作的高速缓存(例如,易失性存储器装置)的数据可能不具有例如NAND存储器装置等对应存储器装置中的对应数据项。因此,将数据识别为脏数据和/或将包含此类数据的高速缓存线识别为脏高速缓存线。因此,如本文中所使用,术语“脏高速缓存线”一般是指含有自从存储在高速缓存中的数据已写入到存储器装置时起已更新的数据的高速缓存线。
相反,“干净高速缓存线”一般是指不具有自从存储在高速缓存中的数据已写入到存储器装置时起已更新的数据的高速缓存线。在各种实施例中,高速缓存是否干净的确定可确定高速缓存中的一些或所有高速缓存线是否为干净高速缓存线。举例来说,可确定高速缓存中的所有高速缓存线是否为干净高速缓存线。
响应于确定高速缓存是干净的,流程可前进到692-8。在692-8,可将旁路数据(由执行与存储器装置相关联的旁路读取操作产生)高速缓存入或存储在高速缓存中,和/或提供到主机。举例来说,在一些实施例中,旁路数据可高速缓存入高速缓存中且可传播到主机。因此,在具有高的高速缓存未命中率的情况下(例如,当未决高速缓存查找操作的数量满足(例如,小于或等于)旁路阈值时),主机可及时地直接从存储器装置接收所请求数据,而非引发与最初尝试从高速缓存读取数据、确定高速缓存中不存在数据(例如,遇到高速缓存未命中)以及随后响应于遇到高速缓存未命中而从存储器装置获得数据相关联的计算开销和延迟。
响应于确定高速缓存是脏的(例如,当一或多个高速缓存线是脏的时),流程可前进到692-9。在692-9,可将旁路数据(由执行与存储器装置相关联的旁路读取操作产生)高速缓存入或存储在高速缓存中,和/或传播到主机。
图7示出根据本公开的数个实施例的用于空载高速缓存旁路的图794的另一实例。如图7所示,高速缓存的队列(例如,未决高速缓存查找队列365)中的未决高速缓存查找操作的数量可随时间变化,如轴线797(表示各种时间)所表示。也就是说,轴线797表示与未决高速缓存查找操作的不同数量相关联的各种时间。
举例来说,在第一时间795-1,可接收高速缓存查找操作(例如,高速缓存读取命令),且未决高速缓存读取队列中的未决高速缓存查找操作的数量可等于“1”,如图7所示。在第二时间795-2,可接收高速缓存查找操作(例如,高速缓存写入命令),且未决高速缓存读取队列中的未决高速缓存查找操作的数量仍等于“1”。在接收到高速缓存写入命令之后,读取队列计数器不递增。
在第三时间795-3,可接收高速缓存查找操作(例如,高速缓存读取命令),且未决高速缓存读取队列中的未决高速缓存查找操作的数量可保持为“1”。也就是说,在第三时间795-3接收到高速缓存查找操作之前,已完成先前的高速缓存查找操作(例如,在第一时间795-1)。
在第四时间795-4,可接收高速缓存查找操作(例如,高速缓存读取命令),且未决高速缓存读取队列中的未决高速缓存查找操作的数量可递增到“2”。在第一时间795-1、第二时间795-2、第三时间795-3和第四时间795-4,未决查找操作的数量小于或等于空载旁路阈值(例如,等于三个未决查找操作的空载旁路阈值)。因此,在第一时间795-1、第二时间795-2、第三时间795-3和第四时间795-4,将高速缓存指定为空载,且启用和/或执行高速缓存旁路。也就是说,在第一时间795-1、第二时间795-2、第三时间795-3和第四时间795-4的未决查找操作的相应数量各自满足(例如,小于或等于)空载旁路阈值。
然而,在第五时间795-N,可接收高速缓存查找操作(例如,高速缓存读取命令),且未决高速缓存读取队列中的未决高速缓存查找操作的数量可递增到等于旁路阈值“THR”的值,“例如3”。在第六时间795-N+1,可接收高速缓存查找操作(例如,高速缓存读取命令),且未决高速缓存读取队列中的未决高速缓存查找操作的数量可递增到大于旁路阈值“THR”的值,“例如4”。在第七时间795-N+2,可接收高速缓存查找操作(例如,高速缓存读取命令),且未决高速缓存读取队列中的未决高速缓存查找操作的数量可递增到大于旁路阈值“THR”的值,“例如5”。因此,在第五时间795-N、第六时间795-N+1、第七时间795-N+2停用和/或不执行空载高速缓存旁路。
另外,在一些实施例中,可保持停用和/或不执行高速缓存旁路,直到未决高速缓存查找操作的数量小于退出阈值(例如,等于2个未决高速缓存查找操作的退出阈值)。因此,在第八时间795-N+3,保持停用和/或不执行空载高速缓存旁路,此时可接收高速缓存查找操作(例如,高速缓存读取命令)且未决高速缓存读取队列中的未决高速缓存查找操作的数量可递增到小于或等于旁路阈值但大于或等于退出阈值的值,“例如2”。
在第九时间795-N+4,可接收高速缓存查找操作(例如,高速缓存写入命令),且未决高速缓存读取队列中的未决高速缓存查找操作的数量可递增到小于旁路阈值且小于退出阈值的值,“例如1”。类似地,在第十时间795-N+5,可接收高速缓存查找操作(例如,高速缓存读取命令),且未决高速缓存读取队列中的未决高速缓存查找操作的数量可递增到小于或等于旁路阈值的值,“例如1”。因此,在第九时间795-N+4和第十时间795-N+5,启用和/或执行空载高速缓存旁路。举例来说,在第九时间795-N+4,启用且执行高速缓存旁路。虽然本文中的一些方法描述了启用/停用高速缓存旁路(例如,选择性地准许高速缓存旁路),但在一些实施例中,高速缓存旁路可保持启用,但仅在未决查找操作的数量满足空载旁路阈值时执行。
本文中的图遵循编号惯例,其中前一或多个数字对应于图式编号,且其余的数字标识图中的元件或组件。可通过使用类似数字来标识不同图式之间的类似元件或组件。举例来说,104在图1中可指代元件“04”,且类似元件可在图2中表示为204。通常在本文中可用单个元件编号指代一组或多个类似元件或组件。举例来说,多个参考元件216-1到216-N可大体上称为216。如应了解,可添加、交换和/或去除本文中的各种实施例中展示的元件,以便提供本公开的数个额外实施例。另外,图中提供的元件的比例和/或相对尺度意图说明本公开的某些实施例,并且不应被视作限制性意义。
虽然已经在本文中说明并描述了具体实施例,但是所属领域的一般技术人员将了解,经计算以实现相同结果的布置可以替代所示的具体实施例。本公开旨在涵盖本公开的一或多个实施例的修改或变化。应理解,以上描述已以说明性方式而非限制性方式进行。在审阅以上描述之后,以上实施例的组合和本文中未具体描述的其它实施例对于所属领域的技术人员将是显而易见的。本公开的一或多个实施例的范围包含使用以上结构及过程的其它应用。因此,本公开的一或多个实施例的范围应参考所附权利要求书以及此类权利要求被赋予的等效物的完整范围来确定。
在前述具体实施方式中,出于简化本公开的目的而将一些特征一起分组在单个实施例中。本公开的这一方法不应被理解为反映以下意图:本公开的所公开实施例必须使用比每项权利要求中明确陈述的特征更多的特征。实际上,如所附权利要求书所反映,本发明主题在于所公开的单个实施例的不到全部的特征。因此,所附权利要求书特此并入于具体实施方式中,其中每项权利要求独自作为单独实施例。
Claims (15)
1.一种用于空载高速缓存旁路的设备(101),其包括:
存储器装置(126);以及
存储器控制器(100),其耦合到所述存储器装置且包括高速缓存序列控制器(115),其中所述高速缓存序列控制器被配置成:
确定高速缓存(112)的队列(365)中的未决高速缓存查找操作的数量;并且
响应于确定所述数量满足空载旁路阈值,使得执行绕过所述高速缓存并存取所述存储器装置的旁路读取操作。
2.根据权利要求1所述的设备,其中所述存储器控制器被配置成与所述旁路读取操作的所述执行大体同时地使得执行与所述高速缓存相关联的高速缓存查找操作。
3.根据权利要求2所述的设备,其中所述高速缓存查找操作的执行产生高速缓存命中,并且其中所述存储器控制器进一步用以与所述旁路读取操作相关联地丢弃从所述存储器装置读取的数据。
4.根据权利要求2所述的设备,其中所述高速缓存查找操作的执行产生高速缓存未命中。
5.根据权利要求4所述的设备,其中所述高速缓存未命中为干净高速缓存未命中,并且其中所述高速缓存序列控制器进一步用以与所述旁路读取操作相关联地高速缓存入从所述存储器装置读取的数据。
6.根据权利要求4所述的设备,其中所述高速缓存未命中是脏高速缓存未命中,并且其中:
所述高速缓存序列控制器进一步用以与所述旁路读取操作相关联地高速缓存入从所述存储器装置读取的数据;并且
所述存储器控制器用以使得执行高速缓存回写操作以将数据从所述高速缓存写入到所述存储器装置。
7.根据权利要求1至6中任一权利要求所述的设备,其中所述高速缓存进一步包括高速缓存存储器(357)和高速缓存控制器(347)。
8.一种用于空载高速缓存旁路的系统(101),其包括:
存储器装置(126);以及
存储器控制器(100),其耦合到所述存储器装置并且被配置成响应于与所述存储器装置相关联的主机(103)读取请求而执行与高速缓存(112)相关联的高速缓存查找操作,其中所述高速缓存包括:
高速缓存序列控制器(115),其用以:
基于所收集的度量,确定高速缓存(112)的队列(365)中的未决高速缓存查找操作的数量;
确定所述数量满足空载旁路阈值;
响应于主机读取请求,使得执行高速缓存查找操作;并且
与执行所述高速缓存查找操作并行地使得发起旁路读取操作以从所述存储器装置读取对应于所述主机读取请求的数据。
9.根据权利要求8所述的系统,其中所述高速缓存被配置成根据先进先出FIFO高速缓存替换策略进行操作。
10.根据权利要求8或9所述的系统,其中所述高速缓存序列控制器用以在所述队列中的所述未决高速缓存查找操作的所述数量小于或等于所述空载旁路阈值时,使得执行多个旁路读取操作。
11.根据权利要求8或9所述的系统,其进一步包括小于所述空载旁路阈值的退出阈值,并且其中所述高速缓存序列控制器用以放弃执行所述旁路读取操作,直到所述未决查找操作的所述数量小于所述退出阈值。
12.根据权利要求8所述的系统,其中所述空载旁路阈值是可变的,并且其中所述空载旁路阈值基于与所述高速缓存相关联的高速缓存查找操作的高速缓存命中率而变化,并且其中:
所述空载旁路阈值基于所述高速缓存命中率高于目标命中率而减小;并且
所述空载旁路阈值基于所述高速缓存命中率低于目标命中率而增大。
13.一种用于空载高速缓存旁路的方法(470),其包括:
确定队列(365)中与高速缓存(112)相关联的未决高速缓存查找操作的数量;
确定未决高速缓存查找操作的所述数量小于或等于空载旁路阈值;以及
响应于确定未决高速缓存查找操作的所述数量小于或等于所述空载旁路阈值:
响应于主机(103)存取请求,使得执行绕过所述高速缓存并存取存储器装置(126)的旁路读取操作;并且
响应于所述主机存取请求,与所述旁路读取操作的所述执行大体同时地使得执行与所述高速缓存相关联的高速缓存查找操作。
14.根据权利要求13所述的方法,其中与所述旁路读取操作的所述执行相关联的数据是基于所述高速缓存查找操作的结果的类型而选择性地利用的。
15.根据权利要求13或14所述的方法,其中所述空载旁路阈值等于:
未决高速缓存查找操作的非零数量;或
零个未决高速缓存查找操作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202263356378P | 2022-06-28 | 2022-06-28 | |
US63/356,378 | 2022-06-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117312194A true CN117312194A (zh) | 2023-12-29 |
Family
ID=89280032
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310717044.5A Pending CN117312194A (zh) | 2022-06-28 | 2023-06-16 | 空载高速缓存旁路 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20230418755A1 (zh) |
CN (1) | CN117312194A (zh) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4858111A (en) * | 1983-07-29 | 1989-08-15 | Hewlett-Packard Company | Write-back cache system using concurrent address transfers to setup requested address in main memory before dirty miss signal from cache |
JP3438650B2 (ja) * | 1999-05-26 | 2003-08-18 | 日本電気株式会社 | キャッシュメモリ |
US6922753B2 (en) * | 2002-09-26 | 2005-07-26 | International Business Machines Corporation | Cache prefetching |
US7500062B2 (en) * | 2005-11-17 | 2009-03-03 | International Business Machines Corporation | Fast path memory read request processing in a multi-level memory architecture |
JP2007257441A (ja) * | 2006-03-24 | 2007-10-04 | Fujitsu Ltd | プロセッサおよびプロセッサ制御方法 |
CN104169892A (zh) * | 2012-03-28 | 2014-11-26 | 华为技术有限公司 | 并发访问的组相联溢出缓存 |
US20190042451A1 (en) * | 2018-02-20 | 2019-02-07 | Intel Corporation | Efficient usage of bandwidth of devices in cache applications |
US10776276B2 (en) * | 2018-11-30 | 2020-09-15 | Hewlett Packard Enterprise Development Lp | Bypass storage class memory read cache based on a queue depth threshold |
-
2023
- 2023-06-16 CN CN202310717044.5A patent/CN117312194A/zh active Pending
- 2023-06-27 US US18/215,115 patent/US20230418755A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230418755A1 (en) | 2023-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200314011A1 (en) | Flexible scheme for adding rules to a nic pipeline | |
US8489792B2 (en) | Transaction performance monitoring in a processor bus bridge | |
TWI525426B (zh) | 於低電壓操作期間之快取部分的停用 | |
US10593380B1 (en) | Performance monitoring for storage-class memory | |
Feehrer et al. | The Oracle Sparc T5 16-core processor scales to eight sockets | |
US11314635B1 (en) | Tracking persistent memory usage | |
TWI506444B (zh) | 改良mmio請求處置之處理器及方法 | |
JP5328792B2 (ja) | プロセッサの非常にアソシエティビティの高いキャッシュメモリ用のセカンドチャンス置換機構 | |
US9965350B2 (en) | Maintaining cyclic redundancy check context in a synchronous I/O endpoint device cache system | |
US11249907B1 (en) | Write-back cache policy to limit data transfer time to a memory device | |
US20210303477A1 (en) | Management of distributed shared memory | |
US20150046648A1 (en) | Implementing dynamic cache enabling and disabling based upon workload | |
US12093566B2 (en) | Memory controller for managing raid information | |
US8341355B2 (en) | Reducing energy consumption of set associative caches by reducing checked ways of the set association | |
US8402320B2 (en) | Input/output device including a mechanism for error handling in multiple processor and multi-function systems | |
US20230214323A1 (en) | Selectable cache writing policies for cache management | |
US20230418755A1 (en) | Unloaded cache bypass | |
US20230418756A1 (en) | Cache bypass | |
US7603522B1 (en) | Blocking aggressive neighbors in a cache subsystem | |
CN114265809A (zh) | 用于控制结构中的业务的系统、装置和方法 | |
KR20170059373A (ko) | 시스템 및 그것의 동작 방법 | |
US12124729B2 (en) | Controller to alter systems based on metrics and telemetry | |
EP4227790B1 (en) | Systems, methods, and apparatus for copy destination atomicity in devices | |
US20240330191A1 (en) | Descriptor cache eviction for multi-queue direct memory access | |
CN116361206A (zh) | 一种可配置容量的地址转换缓冲标记控制器及其应用方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |