在混合式DIMM中管理数据相依性以用于无序处理的制作方法

文档序号:30234823发布日期:2022-06-01 08:34阅读:82来源:国知局
在混合式DIMM中管理数据相依性以用于无序处理的制作方法
在混合式dimm中管理数据相依性以用于无序处理
技术领域
1.本公开的实施例大体上涉及存储器子系统,且更确切地说,涉及在混合式双列直插式存储器模块(dimm)中管理数据相依性以用于无序处理。


背景技术:

2.存储器子系统可以包含存储数据的一或多个存储器装置。存储器装置可为例如非易失性存储器装置和易失性存储器装置。一般来说,主机系统可利用存储器子系统以在存储器装置处存储数据且从存储器装置检索数据。
附图说明
3.根据下文给出的具体实施方式和本公开的各种实施例的附图将更加充分地理解本公开。
4.图1说明根据本公开的一些实施例的包含存储器子系统的实例计算系统。
5.图2为根据本公开的一些实施例的用于响应于检测数据相依性情境而执行操作的实例方法的流程图。
6.图3为根据本公开的一些实施例的用于响应于检测数据相依性情境而执行操作的另一实例方法的流程图。
7.图4为根据本公开的一些实施例的用于响应于检测先读后写情境而执行操作的实例方法的流程图。
8.图5为其中本公开的实施例可操作的实例计算机系统的框图。
具体实施方式
9.本公开的各方面涉及在混合式双列直插式存储器模块中管理数据相依性以用于无序处理。存储器子系统可以是存储装置、存储器模块,或存储装置和存储器模块的混合。下文结合图1描述存储装置和存储器模块的实例。一般来说,主机系统可利用存储器子系统,所述存储器子系统包含一或多个组件,例如存储数据的存储器装置。主机系统可提供数据以存储于存储器子系统处,且可请求从存储器子系统检索数据。
10.存储器子系统可包含非易失性和易失性存储器装置两者。非易失性存储器装置的一个实例为与非(nand)存储器装置。另一实例为三维交叉点(“3d交叉点”)存储器装置,其为非易失性存储器单元的交叉点阵列。下文结合图1描述非易失性存储器装置的其它实例。非易失性存储器装置为一或多个裸片的封装。封装中的裸片可分配给一或多个通道以用于与存储器子系统控制器通信。每一裸片可包含一组存储器单元(“单元”)。单元是存储信息的电子电路。取决于单元类型,单元可存储一或多个二进制信息位,且具有与所存储的位数相关的各种逻辑状态。逻辑状态可由二进制值(例如“0”和“1”)或这种值的组合表示。
11.非易失性存储器装置可包含作为非易失性存储器单元的交叉点阵列的三维交叉点(“3d交叉点”)存储器装置,且可与可堆叠交叉网格化数据存取阵列结合基于体电阻的改
变而执行位存储。另外,与许多基于快闪的存储器对比,3d交叉点存储器装置可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。此类非易失性存储器装置可在裸片和通道上将页分组以形成管理单元(mu)。
12.存储器子系统可为混合式dimm,其在单个dimm封装中包含第一类型的存储器装置(例如,3d交叉点媒体)和第二类型的存储器装置(例如,动态随机存取存储器(dram))。第一类型的存储器装置(即,第一存储器类型)可具有较大存储容量但具有高存取时延,而第二类型的存储器装置(即,第二存储器类型)具有更小量的易失性存储器但具有更低存取时延。高速缓存管理器可管理数据进出第一类型的存储器装置和第二类型的存储器装置的检索、存储和递送。第一类型的存储器装置(例如,3d交叉点)与第二类型的存储器装置(例如,dram)之间的数据传送需要更多时间来进行处理,相比于高速缓存管理器处理来自主机系统的数据存取请求(例如,读取存取请求和写入存取请求)的处理速度。
13.高速缓存管理器允许第二类型的存储器充当第一存储器类型的高速缓冲存储器。因此,如果高速缓存命中率高,那么第一存储器类型的高时延可被第二存储器类型的低时延掩蔽。举例来说,dram存储器装置或其它易失性存储器可用作3d交叉点存储器装置或其它非易失性存储器装置(例如,存储类存储器(scm))的高速缓冲存储器。主机系统可利用混合式dimm来检索并将数据存储于3d交叉点存储器处。混合式dimm可通过总线接口(例如,dimm连接器)与主机系统耦合。dimm连接器可为混合式dimm与主机系统之间的同步或异步接口。当主机系统提供数据存取请求,例如读取存取请求时,对应数据可从3d交叉点存储器或从混合式dimm的作为用于3d交叉点存储器的高速缓冲存储器的另一存储器装置传回到主机系统。
14.在常规存储器系统中,主机系统可将读取存取请求和/或写入存取请求发送到存储器子系统。这些数据存取请求(例如,读取存取请求和写入存取请求)可以通过存储器子系统接收到的次序(例如,先进先出,下文为“fifo”)经列队和处理以防止与数据相依性相关的问题。数据相依性为数据存取请求是指通过先前数据存取请求操作的数据的情形。举例来说,存储器子系统控制器可从物理地址接收对存储在相同物理地址处的数据的写入存取请求,接着是对所述数据的读取存取请求。如果读取存取请求在写入存取请求之前执行,那么读取存取请求将不正确的数据传回到主机系统,因为写入存取请求尚未经处理。然而,以接收到的次序对数据存取请求进行列队和处理可为不合需要的,因为并非所有数据存取请求均具有数据相依性且大多数数据存取请求可无序地发出和完成。无序地完成数据存取请求可减小在读取与写入操作频繁切换和在对不同块或裸片的未完成的数据存取请求仍经列队时切换到所述块或裸片所经历的时延。
15.本公开的各方面通过实施管理数据相依性的一组方案来解决以上和其它缺陷。在说明性实例中,第二类型的存储器装置(例如,dram)可构造为高速缓冲存储器,其存储最近存取和/或高度存取的数据,使得此类数据可由主机系统迅速存取。对高速缓冲存储器中的数据的读取存取请求和写入存取请求可大体上无序地处理(例如,存储器子系统不需要处理在第二请求之前所接收的第一请求),除非存在数据相依性,例如当多个数据存取请求对应于同一数据(例如,存储在同一物理地址处的数据)时。数据相依性的实例包含在写入存取请求之后的读取存取请求(raw)、在读取存取请求之后的写入存取请求(war),和在写入存取请求之后的写入存取请求(waw)。写入存取内容可寻址存储器(cam)可用于在写入存取
请求的数据传送完成之前跟踪所有未完成的写入存取请求。读取存取cam可用于跟踪所有未完成的读取存取请求,且war cam可用于跟踪在其之前具有读取存取请求的所有写入存取请求。当接收到读取存取请求或写入存取请求时,写入cam查找可由高速缓存管理器执行以确定在新接收的读取存取请求或写入存取请求之前是否存在对相同物理地址的任何未完成的写入存取请求。另外,对于接收到的每一写入存取请求,可执行读取存取cam查找以确定是否在新写入存取请求之前执行对相同物理地址的任何未完成的读取存取请求。响应于确定写入存取cam和/或读取存取cam包含对应于与接收到的读取或写入存取请求相关联的地址的未完成的数据(读取或写入)存取请求的指示,高速缓存管理器可确定存在哪种类型的数据相依性情境并执行与所确定数据相依性情境相关联的操作。取决于检测到哪种类型的数据相依性情境,高速缓存管理器可相应地对所接收数据存取请求和/或未完成的数据存取请求重新排序。
16.本公开的优点包含但不限于产生用于主机系统的更高服务质量的混合式dimm的改进性能。举例来说,第一存储器装置与第二存储器装置之间的高速缓存操作可在混合式dimm内部。因此,当数据从3d交叉点存储器传输以存储在dram数据高速缓冲存储器处时,数据的传输将不利用在接收和传输写入操作和读取操作时也由主机系统使用的外部总线或接口。另外,本公开允许由高速缓存管理器无序地服务读取命令和写入命令,同时仍允许在最小时延增加的情况下维持任何数据相依性。
17.图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130)或此类存储器装置的组合。
18.存储器子系统110可为存储装置、存储器模块,或存储装置和存储器模块的混合。存储装置的实例包含固态驱动器(ssd)、快闪驱动器、通用串行总线(usb)快闪驱动器、嵌入式多媒体控制器(emmc)驱动器、通用快闪存储(ufs)驱动器、安全数字(sd)卡和硬盘驱动器(hdd)。存储器模块的实例包含双列直插式存储器模块(dimm)、小型dimm(so-dimm),和各种类型的非易失性双列直插式存储器模块(nvdimm)。
19.计算系统100可以是计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、运载工具(例如,飞机、无人机、火车、汽车或其它运输工具)、支持物联网(iot)的装置、嵌入式计算机(例如,包含在运载工具、工业设备或联网市售装置中的计算机),或这类包含存储器和处理装置的计算装置。
20.计算系统100可包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。图1说明耦合到一个存储器子系统110的主机系统120的一个实例。如本文中所使用,“耦合到”或“与...耦合”大体上是指组件之间的连接,其可为间接通信连接或直接通信连接(例如,不具有中间组件),无论有线还是无线,包含例如电连接、光学连接、磁性连接等连接。
21.主机系统120可包含处理器芯片组和由处理器芯片组执行的软件堆叠。处理器芯片组可包含一或多个核心、一或多个高速缓冲存储器、存储器控制器(例如,nvdimm控制器),和存储协议控制器(例如,pcie控制器、sata控制器)。主机系统120使用存储器子系统110,例如,将数据写入到存储器子系统110以及从存储器子系统110读取数据。
22.主机系统120可经由物理主机接口耦合到存储器子系统110。物理主机接口的实例
包含但不限于串行高级技术附件(sata)接口、外围组件互连高速(pcie)接口、通用串行总线(usb)接口、光纤通道、串行附接的scsi(sas)、双数据速率(ddr)存储器总线、小型计算机系统接口(scsi)、双列直插式存储器模块(dimm)接口(例如,支持双数据速率(ddr)的dimm套接接口)等。物理主机接口可用于在主机系统120与存储器子系统110之间传输数据。在存储器子系统110通过物理主机接口(例如,pcie总线)与主机系统120耦合时,主机系统120可进一步利用nvm高速(nvme)接口来存取组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子系统110与主机系统120之间传递控制、地址、数据和其它信号的接口。图1说明存储器子系统110作为实例。一般来说,主机系统120可经由同一通信连接、多个单独通信连接和/或通信连接的组合存取多个存储器子系统。
23.存储器装置130、140可包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可以是但不限于随机存取存储器(ram),例如动态随机存取存储器(dram)和同步动态随机存取存储器(sdram)。
24.非易失性存储器装置(例如,存储器装置130)的一些实例包含与非(nand)类型快闪存储器和就地写入存储器,例如三维交叉点(“3d交叉点”)存储器装置,其为非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列而基于体电阻的改变来执行位存储。另外,与许多基于快闪的存储器对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。nand类型快闪存储器包含例如二维nand(2d nand)和三维nand(3d nand)。
25.存储器装置130中的每一个可包含一或多个存储器单元阵列。一种类型的存储器单元,例如,单层级单元(slc)每单元可存储一个位。其它类型的存储器单元,例如多层级单元(mlc)、三层级单元(tlc)、四层级单元(qlc)和五层级单元(plc)每单元可以存储多个位。在一些实施例中,存储器装置130中的每一个可包含一或多个存储器单元阵列,例如slc、mlc、tlc、qlc、plc或其任何组合。在一些实施例中,特定存储器装置可包含存储器单元的slc部分,以及mlc部分、tlc部分、qlc部分或plc部分。存储器装置130的存储器单元可分组为页,所述页可指用于存储数据的存储器装置的逻辑单元。对于一些类型的存储器(例如,nand),页可进行分组以形成块。
26.虽然描述了例如非易失性存储器单元的3d交叉点阵列和nand类型快闪存储器(例如,2d nand、3d nand)等非易失性存储器组件,但存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(rom)、相变存储器(pcm)、自选存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(fetram)、铁电随机存取存储器(feram)、磁随机存取存储器(mram)、自旋转移力矩(stt)-mram、导电桥接ram(cbram)、电阻性随机存取存储器(rram)、基于氧化物的rram(oxram)、或非(nor)快闪存储器,和电可擦除可编程只读存储器(eeprom)。
27.存储器子系统控制器115(或简称为控制器115)可与存储器装置130通信以执行操作,例如在存储器装置130处读取数据、写入数据或擦除数据,及其它这类操作。存储器子系统控制器115可以包含硬件,例如一或多个集成电路和/或离散组件、缓冲存储器或其组合。硬件可包含具有专用(即,硬译码)逻辑的数字电路系统以执行本文所描述的操作。存储器子系统控制器115可以为微控制器、专用逻辑电路系统(例如,现场可编程门阵列(fpga)、专
用集成电路(asic)等)或其它合适的处理器。
28.存储器子系统控制器115可为处理装置,其包含被配置成执行存储在本地存储器119中的指令的一或多个处理器(例如,处理器117)。在所说明的实例中,存储器子系统控制器115的本地存储器119包含被配置成存储指令的嵌入式存储器,所述指令用于执行控制存储器子系统110的操作的各种过程、操作、逻辑流程和例程,包含处置存储器子系统110与主机系统120之间的通信。
29.在所说明的实例中,存储器子系统控制器115的本地存储器119包含被配置成存储指令的嵌入式存储器,所述指令用于执行控制存储器子系统110的操作(包含处置存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流程和例程。
30.在一些实施例中,本地存储器119可包含存储存储器指针、所获取数据等的存储器寄存器。本地存储器119还可包含用于存储微码的只读存储器(rom)。尽管图1中的实例存储器子系统110已经说明为包含存储器子系统控制器115,但在本公开的另一实施例中,存储器子系统110不包含存储器子系统控制器115,且可替代地依赖于外部控制(例如,由外部主机或与存储器子系统分离的处理器或控制器提供)。
31.一般来说,存储器子系统控制器115可以从主机系统120接收命令或操作,且可将所述命令或操作转换为指令或适当命令以实现对存储器装置130的所需存取。存储器子系统控制器115可以负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测及错误校正码(ecc)操作、加密操作、高速缓存操作,以及与存储器装置130相关联的逻辑地址(例如,逻辑块地址(lba)、名字空间)与物理地址(例如,物理mu地址、物理块地址)之间的地址翻译。存储器子系统控制器115可进一步包含主机接口电路系统以经由物理主机接口与主机系统120通信。主机接口电路系统可以将从主机系统接收到的命令转换成存取存储器装置130的命令指令,以及将与存储器装置130相关联的响应转换成用于主机系统120的信息。
32.存储器子系统110还可包含未说明的额外电路系统或组件。在一些实施例中,存储器子系统110可以包含高速缓存或缓冲器(例如,dram)和地址电路系统(例如,行解码器和列解码器),其可从存储器子系统控制器115接收地址且对地址进行解码以存取存储器装置130。
33.在一些实施例中,存储器装置130包含本地媒体控制器135,其与存储器子系统控制器115结合操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如,存储器子系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器子系统110是受管理存储器装置,其包含具有裸片上的控制逻辑(例如,本地控制器132)和用于相同存储器装置封装内的媒体管理的控制器(例如,存储器子系统控制器115)的原始存储器装置130。受管理存储器装置的实例是受管理nand(mnand)装置。
34.在一个实施例中,存储器子系统110包含高速缓存管理器113,其可用于跟踪和管理存储器装置130和存储器装置140中的数据,以及从主机系统120接收到的数据存取命令(例如,读取存取命令、写入存取命令等)。在一些实施例中,存储器子系统控制器115包含高速缓存管理器113的至少一部分。在一些实施例中,高速缓存管理器113是主机系统120、应用或操作系统的一部分。在其它实施例中,本地媒体控制器135包含高速缓存管理器113的至少一部分,且被配置成执行本文中所描述的功能性。高速缓存管理器130可经由同步接口
与存储器装置130和140直接通信。此外,可在不存取主机系统120的情况下在存储器子系统110内完成存储器装置130与存储器装置140之间的数据的传送。
35.存储器装置140可包含数据高速缓冲存储器,其存储来自存储器装置130的数据使得可更快地服务对数据的未来请求。高速缓存线为用于高速缓存存储的基本单元且可含有数据的多个字节和/或单词。更小高速缓存线大小具有更高命中率,但相较于较大高速缓存线大小需要更多标签存储器。标签为可用于区分映射存储器的不同区域的一组数据的唯一标识符。
36.在一些实施例中,由存储器子系统110存储的所有数据可存储在存储器装置130处。存储在存储器装置130处的某些数据还可存储在存储器装置140的数据高速缓冲存储器处。举例来说,确定为由主机系统120更频繁或更近存取的数据可存储在数据高速缓冲存储器处以供更快主机存取。当主机系统120提供对存储在数据高速缓冲存储器(即,高速缓存命中)处的数据的读取存取命令时,相较于从存储器装置130检索,可从数据高速缓冲存储器检索数据。在数据高速缓冲存储器处检索数据的带宽或能力可快于在存储器装置130处检索数据的带宽或能力。
37.高速缓存管理器113可包含实施组件和模块中的一或多个的可执行代码并且可实施于控制器115、硬件、固件或其组合内。高速缓存管理器113可包含读取存取内容可寻址存储器(cam)152、写入存取cam 154,和先读后写(war)cam 156。cam为特殊类型的计算机存储器,其可将输入搜索数据(例如,标签)与存储数据表进行比较并传回匹配数据的地址。确切地说,可通过搜索内容自身来存取存储在cam上的数据,且高速缓存管理器113可检索找到所述内容的地址。
38.除非存在数据相依性,否则高速缓存管理器113可从一或多个队列(例如,fifo队列)无序地执行对高速缓冲存储器(例如,存储器装置140)中的数据的多个读取存取请求和/或写入存取请求。读取存取请求可列队于读取队列(例如,读取fifo)中。写入存取请求可列队于写入队列(例如,写入fifo)中。高速缓存管理器113可从读取队列或写入队列选择以供处理。数据相依性的实例包含但不限于在写入存取请求之后的读取存取请求(下文为“raw”)、在读取存取请求之后的写入存取请求(下文为“war”),和在现有写入存取请求之后的写入存取请求(下文为“waw”)。当发生此类数据相依性时,其可被称为数据相依性情境(例如,raw情境、war情境和waw情境)。
39.写入存取cam 154可包含写入队列,且可在写入存取请求的数据传送被执行之前跟踪存储于写入队列中的所有未完成的写入存取请求。写入存取cam 154的大小可通过可由高速缓冲存储器所支持的未完成的写入存取请求的总数目确定。每一写入存取请求可接着被分配写入存取识别(wid)。高速缓存管理器113可使用写入存取cam 154以识别和寻址未完成的写入存取请求之后的任何读取或写入存取请求,如下文将更详细地解释。
40.读取存取cam 152可包含读取队列,且可跟踪存储于读取队列中的所有未完成的读取存取请求。读取存取cam 152还可跟踪数据管线中(例如,次序fifo与读取fifo之间)的所有未完成的读取存取请求。次序fifo以由主机发出的次序存储写入请求和读取请求。数据管线为串联连接的一组数据处理元件,其中一个元件的输出为下一元件的输入。读取存取cam 152的大小可通过可由高速缓冲存储器所支持的未完成的读取存取请求的总数目确定。每一读取存取请求可接着被分配读取存取识别(rid)。
41.war cam 156可用于跟踪在其之前具有读取存取请求的所有写入存取请求。war cam的大小可通过可由高速缓冲存储器所支持的未完成的写入存取请求的总数目确定。
42.高速缓存管理器113可从例如主机系统120接收数据存取请求(读取存取请求和写入存取请求)。响应于从主机系统120接收到数据存取请求,高速缓存管理器113可在写入存取cam 154中执行查找以确定正由数据存取请求存取的物理地址是否具有未完成的写入存取请求。如果写入存取cam 154查找命中且数据存取请求为读取存取请求(例如,raw情境),那么高速缓存管理器113可在执行读取存取请求之前执行写入存取请求。如果写入存取cam 154查找命中且数据存取请求为写入存取请求(例如,waw情境),那么写入存取cam 154查找命中的wid可存储于单独的命中wid队列中且被忽略而非执行。在一些实施例中,响应于写入存取cam 154查找命中或未命中,wid可写入到写入存取cam 154中以变为未完成的写入存取请求,且未命中指示也可存储于命中wid队列中。
43.应注意,可使用未命中指示,因为写入存取地址和写入存取数据可在不同时间与写入存取地址之后几个时钟循环的写入存取数据一起发送。写入存取数据可通过错误检查过程,其中错误检查信息存储在错误检查队列中。写入存取请求可因数据错误而失效,且高速缓存管理器113可使用错误检查队列中所存储的错误检查信息以移除写入存取cam 154查找命中的命中wid(与写入存取请求相关联)。一旦执行写入存取请求的传送,高速缓存管理器113就可移除存储于写入存取cam 154中的未完成的写入存取请求,如通过释放其wid所指示。当未完成的写入存取请求正从写入存取cam 154移除时,不执行写入存取cam 154查找。这意味着高速缓存队列中的读存取请求或写入存取请求可比高速缓存管理器113选择命中wid以供处理时早发生至少一个循环。在另一实例中,高速缓存管理器113甚至在写入存取请求失效时执行写入存取cam 154查找。这意味着写入存取cam 154查找延迟可小于或等于写入高速缓存查找延迟。
44.在raw情境中,响应于来自读取存取请求的写入存取cam 154查找命中,高速缓存管理器113可使用写入缓冲器中写入存取请求的数据以服务于读取存取请求。对与写入cam查找命中相关联的读取存取请求的高速缓存查找可因高速缓存管理器113失效。一旦发生写入存取cam 154查找命中,高速缓存管理器113就可将数据从写入缓冲器(其中存储有所有写入存取请求的数据)传送到读取缓冲器(其中所有读取存取请求的数据在由主机系统120读取之前经存储)。高速缓存管理器113可在执行写入存取请求之后从写入存取cam 154再循环(或释放)命中wid。应注意,写入存取请求的执行可花费比读取存取请求的执行更长的时间。
45.在raw情境的一些实施例中,高速缓存管理器113将命中wid发送到写入缓冲器,使得高速缓存管理器113知晓将对哪一位置进行读取。高速缓存管理器113还可将rid发送到写入缓冲器,使得rid和写入缓冲器数据读取可共同发送到主机系统120。高速缓存管理器113可使用fifo队列以指示读取存取请求是命中还是未命中(通过查找写入存取cam 154)。响应于命中,当读取存取请求由高速缓存管理器113服务时,读取存取请求将因为其已经发送到写入缓冲器而被舍弃。
46.对于在写入存取请求之后的写入存取请求(waw情境),高速缓存管理器113可设置用于命中wid的删除旗标。当写入存取请求由高速缓存管理器113服务时,高速缓存管理器113可检查相关联删除旗标是否经设置。如果经设置,那么将释放命中wid。高速缓存管理器
113还可检查写入存取请求是否与命中wid相关联。如果是,那么高速缓存管理器113将清除命中wid的删除旗标。另外,高速缓存管理器113可将对相同物理地址的在写入存取请求之后的读取存取请求发送到写入缓冲器,直到执行先前写入存取请求为止。举例来说,当发生raw情境时,高速缓存管理器113可检索写入存取cam 154查找命中的数据,并传回写入缓冲器中命中写入存取请求的数据以用于读取存取请求。因为写入存取请求的数据可为当前数据,所以从写入缓冲器检索提供具有更快存取时间的正确数据。数据可在写入cam 154命中发生之后从写入缓冲器移动到读取缓冲器,使得可在执行写入存取请求之前迅速读取数据。当发生waw情境时,高速缓存管理器113可删除写入存取cam 154中命中的写入存取请求。新写入存取请求可具有最新版本的数据,且因此,高速缓存管理器113可忽略先前未完成的写入存取请求。
47.在一实施例中,当高速缓存管理器113在无错误指示的情况下读取写入队列中的wid时,高速缓存管理器113可将删除wid表中的删除wid旗标设置在由命中wid索引的位置处。当将要发生命中wid写入存取请求的数据传送时,可检查旗标。如果删除wid旗标经设置,那么高速缓存管理器113可使数据传送失效且释放wid。响应于高速缓存管理器113执行写入存取请求,高速缓存管理器113可清除与写入存取请求相关联的删除wid旗标。
48.高速缓存管理器113可在读取存取cam 152中执行对接收到的所有写入存取请求的查找以确定写入存取请求是否正存取与任何未完成的读取存取请求相同的物理地址(例如,war情境)。如果写入存取请求具有读取存取cam 152查找命中,那么写入存取请求可连同命中指示一起存储于读取队列和写入队列中。命中指示可防止写入存取请求超过其所取决于的未完成的读取存取请求。写入存取请求还可存储于war cam 156中,因此具有相同物理地址的下一写入存取请求可在其war cam 156查找命中时存储于读取队列中。具有war cam 156查找命中的写入存取请求还可替代war cam 156中命中的条目。
49.在一些实施例中,来自写入队列的写入存取请求可仅在其写入数据错误状态可用时由高速缓存管理器113选择以供处理。然而,可不选择与war cam 156查找命中相关联的写入存取请求以供高速缓存管理器113处理,但其错误状态可存储于war队列中。可不选择在读取队列之外的写入存取请求以供高速缓存管理器113处理。替代地,读取存取请求可存储到另一war队列中。当两个war队列具有可用数据时,高速缓存管理器113可选择写入存取请求以供处理。
50.图2为根据本公开的一些实施例的说明响应于检测数据相依性情境而执行的过程的实例方法200的流程图。方法200可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法200由图1的高速缓存管理器113执行。虽然以特定顺序或次序来展示,但是除非另有指定,否则过程的次序可以修改。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序执行,且一些过程可并行地执行。另外,在各个实施例中可以省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。
51.在操作210处,处理逻辑可以第一次序接收一组数据存取请求。数据存取请求可包含一或多个读取存取请求、一或多个写入存取请求或其任何组合。第一次序可为连续次序且对应于存储器子系统110接收到所述一组数据存取请求中的各种请求的时间。举例来说,
在第一次序中,可在第一时间接收第一数据存取请求,且可在第二时间接收第二数据存取请求,其中第二时间发生在第一时间之后。在一个实施例中,在存储器子系统110处从主机系统,例如主机系统120接收所述一组数据存取请求。在另一实施例中,所述一组数据存取请求包含关于存储器管理操作(例如,垃圾收集、耗损均衡等)的一或多个请求,所述存储器管理操作例如通过存储器子系统控制器115或一些其它组件在存储器子系统110内产生。
52.在操作220处,处理逻辑可以第二次序执行所述一组数据存取请求。第二次序可为非连续次序。举例来说,处理逻辑可以后进先出(lifo)次序执行所述一组数据存取请求,可首先执行读取存取请求,可首先执行写入存取请求,等等。因此,即使在第一请求之后接收到所述一组数据存取请求中的第二请求,如上文所描述,在一个实施例中,也可在第一请求经处理之前处理第二请求。在另一实施例中,第二次序与第一次序相同。
53.在操作230处,处理逻辑可识别所述一组数据存取请求中的延迟数据存取请求。延迟数据存取请求可为不是所述一组数据存取请求中接收到的第一数据存取请求的任何数据存取请求。举例来说,如果所述一组数据存取请求包含多个数据存取请求,其中第一数据存取请求包含以第一次序接收到的第一数据存取请求,那么以第一次序接收到的第二、第三、第四等数据存取请求中的任一者可被视为延迟数据存取请求。
54.在操作240处,处理逻辑可确定与处理装置相关联的本地存储器中的数据结构是否包含对应于与延迟数据存取请求相关联的物理地址的先前未完成的数据存取请求的指示。数据结构可为读取存取cam 152、写入存取cam 154、war cam 156或其任何组合中的至少一个。在一实例中,处理逻辑可执行读取存取cam 152、写入存取cam 154或war cam 156中的至少一个的查找以确定由数据存取请求正存取的物理地址是否具有未完成的数据存取请求。举例来说,数据结构可具有多个条目,每一条目对应于先前未完成的数据存取请求,且各自具有相关联物理地址。在一个实施例中,高速缓存管理器113可将延迟数据存取请求的物理地址和与数据结构中的每一条目相关联的物理地址进行比较。当延迟数据存取请求的物理地址匹配与数据结构中的条目中的至少一个相关联的物理地址时,高速缓存管理器113可确定延迟数据存取请求的物理地址具有未完成的数据存取请求。
55.在操作250处,处理逻辑可响应于确定数据结构不包含先前未完成的数据存取请求而将延迟数据存取请求插入到数据结构中以作为新的未完成的数据存取请求。举例来说,可将延迟数据存取请求放置到cam 152、写入存取cam 154、war cam 156或其任何组合中的一或多个中。
56.在操作260处,处理逻辑可响应于确定数据结构包含先前未完成的数据存取请求而识别与先前未完成的数据存取请求相关联的数据相依性(例如,数据相依性情境)的类型并执行与数据相依性的类型相关联的一或多个操作。数据相依性情境可包含raw情境、waw情境或war情境。raw情境发生在延迟数据存取请求为读取存取请求且未完成的数据存取请求为写入存取请求时。waw情境发生在延迟数据存取请求为写入存取请求且未完成的数据存取请求为写入存取请求时。war情境发生在延迟数据存取请求为写入存取请求且未完成的数据存取请求为读取存取请求时。
57.取决于检测到哪种类型的数据相依性情境,处理逻辑可相应地对延迟数据存取请求和/或未完成的数据存取请求重新排序。在war情境的情况下,处理逻辑可将延迟数据存取请求置于队列中以在先前未完成的数据存取请求之后执行。在raw情境的情况下,处理逻
辑可在执行延迟读取存取请求之前通过从数据结构读取与先前未完成的数据存取请求相关联的数据而执行延迟数据存取请求。在waw情境的情况下,处理逻辑可删除先前未完成的数据存取请求并将延迟数据存取请求插入到数据结构中以作为新的未完成的数据存取请求。
58.图3为根据本公开的一些实施例的说明响应于检测数据相依性情境而执行的过程的实例方法300的流程图。方法300可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法300由图1的高速缓存管理器113执行。虽然以特定顺序或次序来展示,但是除非另有指定,否则过程的次序可以修改。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序执行,且一些过程可并行地执行。另外,在各个实施例中可以省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。
59.在操作310处,处理逻辑可将一组读取存取请求维持于第一数据结构中。在一实例中,第一数据结构可为读取存取cam 152。在操作320处,处理逻辑可将一组写入存取请求维持于第二数据结构中。在一实例中,第二数据结构可为写入存取cam 154。所述一组读取请求和所述一组写入请求可分别以第一次序维持于读取存取cam 152和写入存取cam 154中。第一次序可为连续次序且对应于存储器子系统110接收到各种数据存取请求的时间。举例来说,在第一次序中,可在第一时间接收第一数据存取请求,且可在第二时间接收第二数据存取请求,其中第二时间发生在第一时间之后。在一个实施例中,在存储器子系统110处从主机系统,例如主机系统120接收所述一组数据存取请求。在另一实施例中,所述一组数据存取请求包含关于存储器管理操作(例如,垃圾收集、耗损均衡等)的一或多个请求,所述存储器管理操作例如通过存储器子系统控制器115或一些其它组件在存储器子系统110内产生。
60.处理逻辑可以第二次序执行所述一组读取存取请求和所述一组写入存取请求。第二次序可为非连续次序。举例来说,处理逻辑可以后进先出(lifo)次序执行所述一组数据存取请求,可首先执行读取存取请求,可首先执行写入存取请求,等等。因此,即使在第一请求之后接收到所述一组数据存取请求中的第二请求,如上文所描述,在一个实施例中,也可在第一请求经处理之前处理第二请求。在另一实施例中,第二次序与第一次序相同。
61.在操作330处,处理逻辑可从主机系统120接收新数据存取请求。新数据存取请求可为读取存取请求或写入存取请求。新数据存取请求可为不是第一数据结构中的所述一组读取存取请求或第二数据结构中的写入存取请求中的第一数据存取请求的任何数据存取请求。举例来说,如果第一数据结构和/或第二数据结构中的所述一组数据存取请求包含多个数据存取请求,其中第一数据存取请求包含以第一次序接收到的第一数据存取请求,那么以第一次序接收到的第二、第三、第四等数据存取请求中的任一者可被视为新数据存取请求。
62.在操作340处,处理逻辑可确定对应于与新数据存取请求相关联的地址的未完成的数据存取请求是否列队于第一数据结构或第二数据结构中的至少一个中。举例来说,处理逻辑可执行读取存取cam 152或写入存取cam 154中的至少一个的查找以确定由数据存取请求正存取的物理地址是否具有未完成的数据存取请求。举例来说,第一数据结构和第
二数据结构可具有多个条目,每一条目对应于先前未完成的数据存取请求,且各自具有相关联物理地址。在一个实施例中,高速缓存管理器113可将新数据存取请求的物理地址和与第一数据结构和/或第二数据结构中的每一条目相关联的物理地址进行比较。当新数据存取请求的物理地址匹配与第一数据结构或第二数据结构中的条目中的至少一个相关联的物理地址时,高速缓存管理器113可确定新数据存取请求的物理地址具有未完成的数据存取请求。
63.在操作350处,响应于确定第一数据结构和第二数据结构并不包含未完成的数据存取请求,处理逻辑可在新数据存取请求为读取存取请求时将新数据存取请求插入到第一数据结构中,或在新数据存取请求为写入存取请求时将新数据存取请求插入到第二数据结构中。
64.在操作360处,响应于确定第一数据结构和/或第二数据结构包含未完成的数据存取请求,处理逻辑可识别与未完成的数据存取请求相关联的数据相依性(例如,数据相依性情境)的类型并执行与数据相依性的类型相关联的一或多个操作。数据相依性情境可包含raw情境、waw情境或war情境。raw情境发生在新数据存取请求为读取存取请求且未完成的数据存取请求为写入存取请求时。waw情境发生在新数据存取请求为写入存取请求且未完成的数据存取请求为写入存取请求时。war情境发生在新数据存取请求为写入存取请求且未完成的数据存取请求为读取存取请求时。
65.取决于检测到哪种类型的数据相依性情境,处理逻辑可相应地对新数据存取请求和/或未完成的数据存取请求重新排序。在某些实施例中,响应于确定新数据存取请求为写入存取请求且检测到第一数据结构中的未完成的数据存取请求,处理逻辑可将新数据存取请求置于队列中以在未完成的数据存取请求之后执行。响应于确定新数据存取请求为读取存取请求且检测到第二数据结构中的未完成的数据存取请求,处理逻辑可在执行新读取存取请求之前通过从第二数据结构读取与未完成的数据存取请求相关联的数据而执行新数据存取请求。响应于确定新数据存取请求为写入存取请求且检测到第二数据结构中的未完成的数据存取请求,处理逻辑可删除未完成的数据存取请求并将新数据存取请求插入到第二数据结构中以作为新的未完成的数据存取请求。
66.图4为根据本公开的一些实施例的说明响应于检测war情境执行的过程的实例方法400的流程图。方法400可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法400由图1的高速缓存管理器113执行。虽然以特定顺序或次序来展示,但是除非另有指定,否则过程的次序可以修改。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序执行,且一些过程可并行地执行。另外,在各个实施例中可以省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。
67.在操作410处,处理逻辑可在读取存取cam 152中对接收到的所有写入存取请求执行查找以确定写入存取请求是否正存取与任何未完成的读取存取请求相同的物理地址。响应于具有读取存取cam 152查找命中的写入存取请求,在操作420处,处理逻辑可将写入存取请求连同命中指示一起存储于读取cam 152的读取队列和写入cam 154的写入队列中。命中指示可防止写入存取请求超过其所取决于的未完成的读取存取请求。
68.在操作430处,处理逻辑可将写入存取请求存储于war cam 156中。这在其war cam 156查找命中时使得具有相同物理地址的下一写入存取请求能够存储于读取队列中。处理逻辑还可使用与war cam 156查找命中相关联的写入存取请求替代war cam156中命中的条目。
69.图5说明计算机系统500的实例机器,所述实例机器内可执行用于使得所述机器执行本文中所论述的方法中的任何一或多种的一组指令。在一些实施例中,计算机系统500可以对应于主机系统(例如,图1的主机系统120),所述主机系统包含或利用存储器子系统(例如,图1的存储器子系统110)或可用于执行控制器的操作(例如,执行操作系统以执行对应于图1的高速缓存管理器113的操作)。在替代性实施例中,机器可连接(例如,联网)到lan、内联网、外联网和/或因特网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而以客户端-服务器网络环境中的服务器或客户端机器的容量进行操作。
70.所述机器可为个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝电话、网络器具、服务器、网络路由器、交换机或桥接器,或能够执行(依序或以其它方式)指定待由所述机器采取的动作的一组指令的任何机器。另外,尽管说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述集合单独地或共同地执行一(或多)组指令以执行本文中所论述的方法中的任何一或多种。
71.实例计算机系统500包含处理装置502、主存储器504(例如,只读存储器(rom)、快闪存储器、例如同步dram(sdram)或rambus dram(rdram)等动态随机存取存储器(dram))、静态存储器506(例如,快闪存储器、静态随机存取存储器(sram)等),以及数据存储系统518,其经由总线530彼此通信。处理装置502表示一或多个通用处理装置,例如,微处理器、中央处理单元等。更特定来说,处理装置可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置502也可以是一或多个专用处理装置,例如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器等。处理装置502被配置成执行指令526以用于执行本文中所论述的操作和步骤。计算机系统500可进一步包含网络接口装置508以通过网络520通信。
72.数据存储系统518可包含机器可读存储媒体524(也称为计算机可读媒体),在所述机器可读存储媒体上存储有一或多组指令526或体现本文中所描述的方法或功能中的任何一或多个的软件。指令526还可在其由计算机系统500执行期间完全或至少部分地驻留在主存储器504内和/或处理装置502内,主存储器504和处理装置502还构成机器可读存储媒体。机器可读存储媒体524、数据存储系统518和/或主存储器504可以对应于图1的存储器子系统110。
73.在一个实施例中,指令526包含用于实施对应于图1的高速缓存管理器113的功能性的指令。尽管在实例实施例中机器可读存储媒体524展示为单个媒体,但是应认为术语“机器可读存储媒体”包含存储一或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的一组指令且使得机器执行本公开的方法中的任何一或多种的任何媒体。因此应认为术语“机器可读存储媒体”包含但不限于固态存储器、光学媒体和磁性媒体。
74.已在针对计算机存储器内的数据位的操作的算法和符号表示方面呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其它技术人员的方式。在本文中,且一般将算法构想为产生所要结果的操作的自洽序列。操作是要求对物理量进行物理操纵的操作。通常(但未必),这些量采用能够存储、组合、比较以及以其它方式操纵的电或磁信号的形式。已经证实,主要出于常用的原因,将这些信号称为位、值、元素、符号、字符、项、编号等有时是便利的。
75.然而,应牢记,所有这些和类似术语将与适当物理量相关联,且仅仅为应用于这些量的便利标记。本公开可以指将计算机系统的寄存器和存储器内的表示为物理(电子)数量的数据操纵和变换为计算机系统存储器或寄存器或其它这类信息存储系统内的类似地表示为物理数量的其它数据的计算机系统或类似电子计算装置的动作和过程。
76.本公开还涉及用于执行本文中的操作的设备。这一设备可以出于所需目的而专门构造,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。这种计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的盘,包含软盘、光盘、cd-rom以及磁性光盘、只读存储器(rom)、随机存取存储器(ram)、eprom、eeprom、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,其各自耦合到计算机系统总线。
77.本文中呈现的算法和显示器在本质上并不与任何特定计算机或其它设备相关。各种通用系统可以与根据本文中的教示的程序一起使用,或可以证明构造用以执行所述方法更加专用的设备是方便的。将如下文描述中所阐述的那样来呈现各种这些系统的结构。另外,未参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施如本文中所描述的本公开的教示内容。
78.本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以执行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读取的形式存储信息的任何机制。举例来说,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“rom”)、随机存取存储器(“ram”)、磁盘存储媒体、光学存储媒体、快闪存储器装置等。
79.在前述说明书中,本公开的实施例已经参考其特定实例实施例进行描述。将显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书及图式。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1