基于硬件的相干性检查技术
1.交叉引用
2.本专利申请案要求由李(li)在2020年3月4日提交的标题为“基于硬件的相干性检查技术(hardware
‑
based coherency checking techniques)”的第16/809,036号美国专利申请案的优先权,所述美国专利申请案让与给本受让人且明确地以全文引用的方式并入本文中。
技术领域
3.技术领域与基于硬件的相干性检查技术相关。
背景技术:
4.一种存储器子系统可包含存储数据的一或多个存储器装置。存储器装置可为例如非易失性存储器装置和易失性存储器装置。一般来说,主机系统可利用存储器子系统以在存储器装置处存储数据且从存储器装置检索数据。
技术实现要素:
5.描述了一种系统。系统可包含多个存储器组件和与所述多个存储器组件以操作方式耦合的处理装置,所述处理装置接收指示所述多个存储器组件的第一逻辑地址的第一命令,识别与第一逻辑地址相关联的第一槽标识,响应于第一命令而锁定与第一槽标识相关联的相干性记录的第一条目,在相干性记录的第一条目经锁定之后接收与相干性记录的第一条目相关联的写入操作完成的指示,且响应于所述指示而释放相干性记录的第一条目。
6.描述了一种系统。所述系统可包含多个存储器组件和与所述多个存储器组件以操作方式耦合的处理装置,所述处理装置接收指示所述多个存储器组件的第一槽标识的相干性检查命令,确定与第一槽标识相关联的一或多个逻辑地址在相干性记录处锁定,且输出第一槽标识经锁定的指示和与第一槽标识相关联的所述一或多个逻辑地址。
7.描述了一种方法。所述方法可包含接收指示与存储器子系统控制器耦合的多个存储器组件的第一逻辑地址的第一命令,识别与第一逻辑地址相关联的第一槽标识,响应于第一命令而锁定与第一槽标识相关联的相干性记录的第一条目,在相干性记录的第一条目经锁定之后接收与相干性记录的第一条目相关联的写入操作完成的指示,且响应于所述指示而释放相干性记录的第一条目。
附图说明
8.根据下文给出的详细描述和本公开的各种实施例的附图,将更充分地理解本公开。然而,图式不应视为将本公开限制于具体实施例,而是仅用于解释和理解。
9.图1说明根据本公开的一些实例的包含存储器子系统的计算系统的实例。
10.图2是根据本公开的一些实例的基于硬件的相干性检查技术的实例方法的流程图。
11.图3是根据本公开的一些实例的存储器子系统的相干性硬件的实例。
12.图4是根据本公开的一些实例的具有相干性检查硬件的处理装置的实例。
13.图5是其中可操作本公开的实例的实例计算机系统的框图。
具体实施方式
14.本公开的方面是针对基于硬件的相干性检查技术。存储器子系统可以是存储装置、存储器模块,或存储装置和存储器模块的混合。下文结合图1描述存储装置和存储器模块的实例。一般来说,主机系统可利用包含一或多个组件(例如,存储数据的存储器装置)的存储器子系统。主机系统可提供数据以存储于存储器子系统处,且可请求从存储器子系统检索数据。
15.存储器装置可为非易失性存储器装置。非易失性存储器装置是一或多个裸片的封装。非易失性存储器装置的一个实例是与非(nand)存储器装置。下文结合图1描述非易失性存储器装置的其它实例。封装中的裸片可指配给一或多个通道以用于与存储器子系统控制器通信。每个裸片可由一或多个平面组成。平面可分组成逻辑单元(lun)。对于一些类型的非易失性存储器装置(例如,nand存储器装置),每一平面由一组物理块组成,所述物理块是用于存储数据的存储器单元的群组。单元是存储信息的电子电路。下文中,块是指用以存储数据的存储器装置的单元,且可以包含一组存储器单元、字线群组、字线或个别存储器单元。
16.每一块由页集合组成。每一页由存储数据位的存储器单元集合组成。对于一些存储器装置,例如nand装置,块是可擦除的最小区域,且块内的页无法个别地擦除。对于此类装置,一次一个块地执行擦除操作。多个块可包含于单个平面中,且多个平面可包含于存储器裸片中(例如,lun)。在一些存储器子系统中,逻辑块可与一或多个硬件块相关联,且可对应于主机传送单元(tu)的最小大小,其中tu可包含一或多个逻辑块。逻辑块可通过逻辑块地址(lba)来寻址。
17.在存储器子系统的传统存取操作中,与不同存取操作(例如,读取操作、写入操作等)相关联的命令可恒定地由主机系统传输且由存储器子系统接收。举例来说,可针对具有待写入的数据的一或多个tu传输写入命令。此外,可传输从一或多个tu请求数据的读取命令。常规地,在接收到写入命令之后,在存储器子系统处的固件可即刻更新映射表由关联物理存储器位置与tu,并且接着将数据写入到存储器装置(例如,nand存储器装置)。因为映射表是在数据实际上物理上写入到nand存储器之前经更新,所以传统上此类固件将执行相干性操作以防止在数据实际上写入到nand存储器位置之前从nand存储器位置读取数据。
18.举例来说,如果第一写入命令横跨第一组tu,且接收针对与第一组tu重叠的第二组tu的读取命令,那么相干性操作防止重叠的tu在它们实际上依据写入命令被写入之前从nand存储器读取。因此,对于每一写入操作,固件执行操作以更新用于tu的映射表,锁定用于tu的相干性,执行对物理存储器装置的写入,且释放相干性锁定。此外,对于每一读取操作,固件执行操作以检查待读取的相关联tu的相干性。由固件执行的此类相干性操作因此消耗处理器的用以执行相干性操作的若干处理循环。因此,传统的相干性操作可导致系统资源用于相干性锁定、解锁和检查,这会增加待在存储器子系统处执行的其它操作的时延。因此,有效地在硬件等级管理相干性的系统可为有益的。
19.本公开的方面通过提供具有基于硬件的相干性检查的存储器子系统来解决上述和其它缺陷,其中相干性块维持相干性锁定且在写入命令的完成之后即刻释放相干性。例如本文所提供的基于硬件的相干性检查可大体上减少与相干性检查的固件实施方案相关联的处理开销。举例来说,存储器子系统可包含允许处理装置处的固件简单地提供对相干性块的写入的指示的相干性硬件,且相干性硬件执行操作以锁定与写入命令相关联的相干性,监视对存储器装置的写入的完成,释放相干性锁定,且更新用以监视与写入命令相关联的相干性的一或多个记录。因此,处理装置可在相干性硬件正执行相干性相关操作的同时执行各种其它任务,这可增强系统效率和性能。此外,在一些实例中,来自处理装置的相干性命令可通过专用硬件桥提供,例如通过与处理装置和相干性硬件耦合的零级高速缓冲存储器的桥,这可通过允许相干性命令的直接写入和相干性状态的直接读取而不是通过总线间接提供相干性命令来进一步增强性能。
20.因此,如本公开的各种方面中所描述的基于硬件的相干性检查允许处理装置提供单个相干性命令而不是典型的基于固件的相干性操作:提供相干性锁定,确定相关联写入操作完成,响应于写入操作完成而释放相干性锁定,且释放与写入操作相关联的相关联缓冲器和/或地址位置。将单个命令提供到相干性硬件可因此大体上减少处理装置的与相干性操作相关联的处理开销。
21.此外,在处理装置可通过专用硬件桥(例如,零级高速缓冲存储器)提供单个相干性命令的实例中,由于处理器不必格式化命令以用于在耦合处理器与相干性硬件的总线上的传输,可进一步减少处理开销。实际上,处理器可经由专用硬件桥异步地发出相干性命令。另外,此专用硬件桥可允许处理器不必等待总线存取且因此异步地发出相干性命令,这可减少与相干性锁定和写入操作相关联的时延。因此,经由专用硬件桥到相干性硬件的单个相干性命令避免了若干不同相干性操作的处理开销以及与总线存取和格式化操作有关的相关联时间和处理开销。
22.首先在如参考图1所描述的计算环境的上下文中描述本公开的特征。在具有如参考图2至4所描述的基于硬件的相干性组件的方法图式和子系统的上下文中描述本公开的特征。进一步通过如参考图5所描述的提供基于硬件的相干性检查的计算机系统来说明且参考所述计算机系统来描述本公开的这些和其它特征。
23.图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含介质,例如一或多个非易失性存储器装置(例如,存储器装置130)、一或多个易失性存储器装置(例如,存储器装置140),或其组合。
24.存储器子系统110可为存储装置、存储器模块,或存储装置和存储器模块的混合。存储装置的实例包含固态驱动器(ssd)、快闪驱动器、通用串行总线(usb)快闪驱动器、嵌入式多媒体控制器(emmc)驱动器、通用快闪存储(ufs)驱动器、安全数字(sd)卡和硬盘驱动器(hdd)。存储器模块的实例包含双列直插式存储器模块(dimm)、小外形dimm(so
‑
dimm)及各种类型的非易失性dimm(nvdimm)。
25.计算系统100可以是计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、运载工具(例如,飞机、无人机、火车、汽车或其它运输工具)、支持物联网(iot)的装置、嵌入式计算机(例如,包含在运载工具、工业设备或联网市售装置中的计算机),或这类包含存储器和处理装置的计算装置。
26.计算系统100可包含与一或多个存储器子系统110耦合的主机系统105。在一些实例中,主机系统105与不同类型的存储器子系统110耦合。图1说明与一个存储器子系统110耦合的主机系统105的一个实例。如本文中所使用,“耦合到”或“与耦合”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如不具有介入组件),无论有线还是无线,包含例如电连接、光学连接、磁性连接等连接。
27.主机系统105可包含处理器芯片组及由处理器芯片组执行的软件堆叠。处理器芯片组可包含一或多个核心、一或多个高速缓冲存储器、存储器控制器(例如,nvdimm控制器),和存储协议控制器(例如,pcie控制器、sata控制器)。主机系统105使用存储器子系统110,例如,将数据写入到存储器子系统110以及从存储器子系统110读取数据。
28.主机系统105可经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附件(sata)接口、外围组件互连高速(pcie)接口、通用串行总线(usb)接口、光纤信道、串行附接scsi(sas)、小型计算机系统接口(scsi)、双数据速率(ddr)存储器总线、双列直插式存储器模块(dimm)接口(例如,支持双数据速率(ddr)的dimm套接接口)、开放nand快闪接口(onfi)、双数据速率(ddr)、低功率双数据速率(lpddr)或任何其它接口。物理主机接口可用于在主机系统105与存储器子系统110之间传输数据。在存储器子系统110通过pcie接口与主机系统105耦合时,主机系统105可进一步利用非易失性存储器快速(nvme)接口来存取组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子系统110与主机系统105之间传送控制、地址、数据和其它信号的接口。图1说明存储器子系统110作为实例。一般来说,主机系统105可经由同一通信连接、多个单独通信连接和/或通信连接的组合存取多个存储器子系统。
29.存储器装置130、140可包含不同类型的非易失性存储器装置及/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可以是但不限于随机存取存储器(ram),例如动态ram(dram)和同步dram(sdram)。
30.非易失性存储器装置(例如存储器装置130)的一些实例包含“与非”(nand)型快闪存储器和就地写入存储器,例如三维交叉点(“3d交叉点”)存储器装置,其是非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列而基于体电阻的改变来进行位存储。另外,与许多基于闪存的存储器对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。
31.存储器装置130中的每一个可包含一或多个存储器单元阵列。一种类型的存储器单元,例如,单层级单元(slc)可存储一个位每单元。其它类型的存储器单元,例如多电平单元(mlc)、三电平单元(tlc)、四电平单元(qlc)和五电平单元(plc)可每单元存储多个位。在一些实施例中,存储器装置130中的每一个可包含一或多个存储器单元阵列,例如slc、mlc、tlc、qlc或此类存储器单元阵列的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的slc部分,和mlc部分、tlc部分或qlc部分。存储器装置130的存储器单元可分组为页,所述页可指用于存储数据的存储器装置的逻辑单元。对于一些类型的存储器(例如,nand),页可进行分组以形成块。
32.虽然描述例如nand型快闪存储器(例如,2d nand、3d nand)和3d交叉点非易失性存储器单元阵列等非易失性存储器组件,但存储器装置130可基于任何其它类型的非易失
性存储器,例如只读存储器(rom)、相变存储器(pcm)、自选存储器、其它基于硫族化物的存储器、铁电晶体管随机存取存储器(fetram)、铁电随机存取存储器(feram)、磁随机存取存储器(mram)、自旋转移力矩(stt)
‑
mram、导电桥接ram(cbram)、电阻性随机存取存储器(rram)、基于氧化物的rram(oxram)、或非(nor)快闪存储器,和电可擦除可编程只读存储器(eeprom)。
33.存储器子系统控制器115(或简称为控制器115)可与存储器装置130通信以执行操作,例如在存储器装置130处读取数据、写入数据或擦除数据,及其它这类操作。存储器子系统控制器115可以包含硬件,例如一或多个集成电路和/或离散组件、缓冲存储器或其组合。硬件可包含具有专用(即,硬译码)逻辑的数字电路以执行本文所描述的操作。存储器子系统控制器115可为微控制器、专用逻辑电路(例如,现场可编程门阵列(fpga)、专用集成电路(asic)、数字信号处理器(dsp)),或其它合适的处理器。
34.存储器子系统控制器115可包含经配置以执行存储于本地存储器125中的指令的处理器120(例如,处理装置)。在所说明实例中,存储器子系统控制器115的本地存储器125包含经配置以存储指令(例如固件)的嵌入式存储器,所述指令用于执行控制存储器子系统110的操作(包含处置存储器子系统110与主机系统105之间的通信)的各种过程、操作、逻辑流程以及例程。
35.在一些实例中,本地存储器125可包含存储存储器指针、所获取数据等的存储器寄存器。本地存储器125还可包含用于存储微码的rom。虽然在图1中的实例存储器子系统110已说明为包含存储器子系统控制器115,但在本公开的另一个实例中,存储器子系统110不包含存储器子系统控制器115,而是可依靠外部控制(例如,由外部主机或由与存储器子系统分开的处理器或控制器提供)。
36.一般来说,存储器子系统控制器115可从主机系统105接收命令或操作,并且可将所述命令或操作转换成指令或适当命令以实现对存储器装置130和/或存储器装置140的所要存取。存储器子系统控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ecc)操作、加密操作、高速缓存操作和与存储器装置130相关联的逻辑地址(例如,逻辑块地址(lba)、名字空间)和物理地址(例如,物理块地址)之间的地址转译。存储器子系统控制器115可另外包含主机接口电路系统以经由物理主机接口与主机系统105通信。主机接口电路可将从主机系统接收的命令转换为命令指令以存取存储器装置130和/或存储器装置140,以及将与存储器装置130和/或存储器装置140相关联的响应转换为用于主机系统105的信息。
37.存储器子系统110还可包含未说明的额外电路或组件。在一些实例中,存储器子系统110可包含高速缓冲存储器或缓冲器(例如,dram)以及地址电路(例如,行解码器和列解码器),所述地址电路可从存储器子系统控制器115接收地址,并对地址进行解码以存取存储器装置130。
38.在一些实施例中,存储器装置130包含本地介质控制器135,其与存储器子系统控制器115结合操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如,存储器子系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行介质管理操作)。在一些实施例中,存储器装置130是受管理存储器装置,其为与本地控制器(例如,本地控制器135)组合以在同一存储器装置封装内进行介质管理的原始存储器装置。受
管理存储器装置的实例是受管理nand(mnand)装置。
39.存储器子系统110包含相干性管理器150和相干性硬件155,它们执行用于例如读取或写入操作等存取操作的相干性功能。举例来说,相干性管理器150可提供相干性命令以锁定存储器装置130内的逻辑地址的相干性作为用于所述逻辑地址的写入操作的部分(例如,可映射到存储器装置130的512字节lba的systag)。相干性管理器150可将相干性命令提供到相干性硬件155,所述相干性硬件可随后执行若干相干性操作而无需涉及相干性管理器150或处理器120。举例来说,相干性硬件155在接收到逻辑地址之后可即刻识别与逻辑地址相关联的槽标识(例如,可包含逻辑地址的4096字节槽或tu)。相干性硬件155可识别相干性记录中的条目(例如,基于在相干性索引或systag分配块中提供的映射),且锁定相干性记录中所识别的条目。此锁定可通过更新相干性记录以指示所识别条目经锁定而提供(例如,通过将systag索引放置于systag表中)。与写入命令相关联的数据可在正写入到存储器装置130的同时放置于槽缓冲器中,且当对存储器装置130的写入完成时,槽缓冲器可提供相干性硬件155可用来释放相干性记录中的条目的指示。
40.在存储器子系统110处接收到读取命令的情况下,存储器子系统控制器115可检查读取命令的逻辑地址(例如,读取命令的lba)的相干性。举例来说,处理器120可从相干性管理器150请求相干性状态。相干性管理器在此情况下可检查相干性记录以确定逻辑地址被锁定。在相干性硬件155处未锁定逻辑地址的情况下,相干性未中可为指示,且读取命令可被传递到存储器装置130以读取存储于逻辑地址处的数据。在相干性硬件155处锁定逻辑地址的情况下,可指示相干性命中,其可致使处理器120等待或确定读取的数据是否可从另一源获得。
41.在一些实例中,存储器子系统控制器115包含相干性管理器150的至少一部分。举例来说,存储器子系统控制器115可包含处理器120(例如,处理装置),其经配置以执行存储在本地存储器125中的用于执行本文中所描述的操作的指令。在一些实例中,相干性管理器150是主机系统105、应用程序或操作系统的部分。关于相干性管理器150和相干性硬件的操作的另外细节在下文描述。
42.图2是根据本公开的一些实例的基于硬件的相干性检查技术的实例方法200的流程图。方法200可由存储器子系统控制器的处理逻辑执行,其可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实例中,方法200由图1的相干性管理器150和相干性硬件155执行。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,所说明实例应仅作为实例理解,并且所说明过程可以不同次序执行,并且一些过程可并行执行。另外,可在各种实例中省略一或多个过程。因此,在每个实例中并不需要所有过程。其它过程流程也是可能的。
43.在操作205处,处理逻辑可接收指示与存储器子系统控制器耦合的存储器组件的第一逻辑地址(例如,lba)的第一命令。在一些实例中,第一命令是具有将在存储器组件的第一逻辑地址处写入的相关联数据的写入命令。在一些实例中,第一逻辑地址可由映射到存储器组件的lba(例如,由systag分配组件编索引的512字节lba)的systag识别。
44.在一些实例中,处理逻辑可接收相干性硬件内的相干性块的命令队列中的第一命令。在一些实例中,第一命令可由相干性管理器响应于接收到写入命令而提供。在一些实例
中,命令队列可位于与相干性块和处理逻辑耦合的零级高速缓冲存储器中。在此类实例中,处理逻辑可相对于经由与处理逻辑耦合的系统总线的传输异步地将第一命令写入到命令队列。
45.在操作210处,处理逻辑可识别与第一逻辑地址相关联的第一槽标识。在一些实例中,第一槽标识是由处理逻辑的槽索引块提供的缓冲器槽索引。在一些实例中,第一逻辑地址可由处理逻辑的逻辑地址分配块(例如,与tu相关联的systag分配块)提供,且可在处理逻辑的逻辑地址记录存储块(例如,systag表)中维持相干性记录。
46.在操作215处,处理装置可响应于第一命令而锁定与第一槽标识相关联的相干性记录的第一条目。在一些实例中,相干性记录可包含表(例如,systag表)中的指示与第一槽标识相关联的索引值的条目。
47.在一些实例中,处理装置可在相干性记录的第一条目经锁定之后且在相干性记录的第一条目的释放之前接收与第一槽标识相关联的相干性检查,且可响应于相干性检查而输出第一槽标识经锁定的指示和第一逻辑地址。在一些实例中,第一槽标识经锁定的指示和第一逻辑地址提供到定位于与相干性块和处理装置耦合的零级高速缓冲存储器中的相干性块的状态队列。
48.在操作220处,处理装置可在相干性记录的第一条目经锁定之后从槽缓冲器接收与相干性记录的第一条目相关联的写入操作完成的指示。在一些实例中,每一槽标识可与可包含多个逻辑地址的4096字节槽相关联,且槽缓冲器可在槽写入到存储器装置时提供用于每一槽标识的指示。
49.在操作225处,处理装置可响应于来自槽缓冲器的指示而释放相干性记录的第一条目。在一些实例中,相干性块可从槽缓冲器接收指示,且识别与第一槽标识相关联的包含第一逻辑地址的一或多个逻辑地址,且更新与第一逻辑地址相关联的状态以指示相干性针对所述一或多个逻辑地址解锁。在一些实例中,处理装置可在相干性记录的第一条目被释放之后接收指示与第一槽标识相关联的相干性检查的第二命令,且输出针对第一槽标识的相干性未中的指示。
50.图3说明根据本公开的一些实例的用于基于硬件的相干性检查的存储器子系统300的实例。存储器子系统300可包含存储器子系统控制器305和一或多个存储器装置340。在一些实例中,存储器子系统控制器305可从主机系统345接收存储器命令。在一些实例中,存储器子系统控制器305可为图1的存储器子系统控制器115的实例,且可执行例如参考图2所描述的操作。
51.在图3的实例中,存储器子系统控制器305可包含可根据固件320中的指令操作的处理装置310。存储器子系统控制器305在此实例中还包含相干性硬件315。在一些实例中,相干性硬件315可基于由固件320提供的单个相干性命令而执行相干性操作。举例来说,相干性硬件315内的相干性块325可从根据固件320中的指令操作的处理装置310的中央处理单元(cpu)接收相干性命令。在相干性命令提供到相干性硬件315之后,固件320可前进到执行与特定相干性命令不相关的其它功能,这与其中固件包含将用于写入的相干性锁定添加到写入操作、释放相干性锁定、释放与写入相关联的缓冲器以及释放与写入相关联的逻辑地址的操作的传统系统相比可实现消耗更少的cpu循环用于相干性操作。因此,本公开的各种方面的单个相干性命令可相对于其中固件包含处置所有相干性相关操作的指令的情况
大体上减少处理开销。
52.在图3的实例中,相干性块325与相干性记录330和槽缓冲器335耦合。在一些实例中,主机系统345可发出在存储器子系统控制器305处接收的写入命令。如所指示,固件320可致使处理装置310将相干性命令提供到相干性硬件315。在这些情况下,相干性块325可接收相干性命令,所述相干性命令可包含与写入操作相关联的逻辑地址。在一些实例中,相干性块325可基于逻辑地址与槽地址之间的映射存取相干性记录330,所述槽地址表示可对存储器装置340写入和从其读取的槽(例如,由分配块提供的映射或逻辑地址与槽地址之间的索引)。相干性块325可更新相干性记录330以指示与逻辑地址相关联的槽地址经锁定。槽缓冲器335可管理读取和写入操作,且在一些实例中可当针对槽地址的写入完成时向相干性块325提供指示。基于针对槽地址的写入完成的指示,相干性块325可更新相干性记录330以指示槽地址不再锁定。相干性块325也可对状态队列提供状态更新,即固件320可致使处理装置310检查是否接收到新读取命令。
53.在一些实例中,如果在槽缓冲器335指示针对槽地址的写入完成之前接收到新读取命令,那么相干性块325可提供指示与读取命令相关联的槽地址、逻辑地址或这两者经锁定的状态。在一些实例中,如果读取命令与不同于造成槽地址锁定的逻辑地址的逻辑地址相关联,那么存储器子系统控制器305可继续从所述不同逻辑地址提供数据。在一些实例中,如果在槽缓冲器335指示针对槽地址的写入完成之后接收到新读取命令,那么相干性块325可提供指示与读取命令相关联的槽地址、逻辑地址或这两者经解锁的状态(即,可指示相干性未中),且处理装置可继续读取操作以从存储器装置340读取数据。
54.图4说明根据本公开的一些实例的具有用于基于硬件的相干性检查的相干性检查硬件的处理装置400的实例。处理装置400可包含若干组件,且在此实例中包含总线410、cpu 415、相干性块420、槽缓冲器425、相干性索引450组件、相干性记录455组件,和可充当cpu 415与相干性块420之间的桥的零级高速缓冲存储器435。在一些实例中,处理装置400可为图1的存储器子系统控制器115的实例,且可执行例如参考图2所描述的操作。
55.在一些实例中,处理装置400可根据固件(例如,图3的固件320)中的指令操作。在此实例中,相干性块420包含可接收相干性命令且可输出相干性状态的命令/状态输入/输出接口430。在一些实例中,相干性命令和相干性状态可通过可与cpu 415耦合的零级高速缓冲存储器435输入和输出。举例来说,命令/状态输入/输出接口430可包含命令队列440和状态队列445。在此类实例中,当发出相干性命令(例如,基于一或多个相关联存储器装置处的写入操作)时,cpu 415可将命令放置到命令队列440中,所述命令队列可为零级高速缓冲存储器435中的经指派区域。同样,当提供相干性状态时,相干性块420可将状态放置到状态队列445中,所述状态队列可为零级高速缓冲存储器435中的经指派区域。因此,在此类实例中,零级高速缓冲存储器435可用以交换命令和状态信息,且因此避免在总线410(例如,高级高性能总线(ahb)或高级外围总线(apb))上提供命令和状态信息。通过避免使用总线410,相对于使用总线410的情况可减小与相干性命令和状态相关联的时延(例如,由于与总线存取相关联的时延),并且还可通过减少与相干性命令和状态相关联的业务而增强总线410的效率,这可进一步增强处理装置400的效率。
56.此外,在一些实例中,相干性操作可基于由cpu 415(例如,经由零级高速缓冲存储器435)提供到命令队列440的单个相干性命令。举例来说,相干性块420可经由命令队列440
和命令/状态输入/输出接口430从cpu 415接收相干性命令。在相干性命令提供到相干性块420之后,cpu 415可前进到执行与特定相干性命令不相关的其它功能。在图4的实例中,相干性块420与相干性索引450、相干性记录455和槽缓冲器425耦合。相干性块420也可与总线410耦合。此外,此架构可允许cpu 415相对于经由总线410的命令传输异步地将相干性命令写入到命令队列440。
57.相干性块420可接收相干性命令,所述相干性命令可为在相干性块420处接收的第一命令的实例。在一些实例中,相干性命令可包含与写入操作相关联的逻辑地址。在一些实例中,相干性块420可存取相干性索引450(例如,systag分配块),所述相干性索引可提供逻辑地址与槽地址之间的映射,所述槽地址表示可对存储器写入和从存储器读取的槽。举例来说,可为槽索引块或逻辑地址分配块的实例的相干性索引450可提供槽地址作为缓冲器槽索引。
58.在一些实例中,相干性块420可更新相干性记录455以指示与逻辑地址相关联的槽地址经锁定。与逻辑地址相关联的槽地址可为相干性记录455的第一条目的实例。在一些实例中,相干性记录455可包含systag表,所述表包含具有在槽缓冲器425处的相关联写入操作的槽地址、逻辑地址或其组合的条目。相干性记录455可为处理装置400的逻辑地址记录存储块的实例。槽缓冲器425可基于槽地址管理读取和写入操作,且在一些实例中可当针对槽地址的写入完成时向相干性块420提供指示。基于针对槽地址的写入完成的指示,相干性块420可更新相干性记录455以指示槽地址不再锁定,且进而释放相干性记录455中的相关联条目。相干性块420也可对状态队列445提供状态更新,即cpu 415可检查以确定相干性是否针对逻辑地址、槽地址或这两者经锁定。
59.在一些实例中,如果在槽缓冲器425指示针对槽地址的写入完成之前接收到新读取命令,那么相干性块420可提供指示与读取命令相关联的槽地址、逻辑地址或这两者经锁定的状态(例如,在状态队列445处)。在一些实例中,如果读取命令与不同于造成槽地址锁定的逻辑地址的逻辑地址相关联,那么cpu 415可继续从所述不同逻辑地址提供数据。在一些实例中,如果在槽缓冲器425指示针对槽地址的写入完成之后接收到新读取命令,那么相干性块420可提供指示与读取命令相关联的槽地址、逻辑地址或这两者经解锁的状态(即,可指示相干性未中),且cpu 415可继续读取操作以从存储器读取数据。
60.图5说明根据本文所公开的实例的支持基于硬件的相干性检查的计算机系统500的实例机器。计算机系统500可包含用于致使机器执行本文中所描述的技术中的任何一或多种的指令集。在一些实例中,计算机系统500可对应于主机系统(例如,参考图1或2描述的主机系统105),其包含、耦合或利用存储器子系统(例如,参考图1所描述的存储器子系统110)或可用以执行控制器的操作(例如,执行操作系统以执行操作来将相干性命令提供到参考图1所描述的相干性管理器150)。在一些实例中,机器可与局域网(lan)、内联网、外联网及/或因特网中的其它机器连接(例如,联网)。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而以客户端
‑
服务器网络环境中的服务器或客户端机器的容量进行操作。
61.机器可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂巢式电话、网络器具、服务器、网络路由器、交换机或桥接器,或能够(依序或以其它方式)执行指定将由所述机器采取的动作的一组指令的任何机器。另外,虽然说明单个机器,但还应认为
术语“机器”包含机器的任何总集,所述总集单独地或共同地执行一(或多个)指令集以执行本文中所论述的方法中的任何一或多种。
62.实例计算机系统500可包含处理装置505、主存储器510(例如,rom、快闪存储器、例如sdram或rambus dram(rdram)等dram、静态存储器515(例如快闪存储器、静态ram(sram)等),以及数据存储系统525,其经由总线545彼此通信。
63.处理装置505表示一或多个通用处理装置,例如微处理器、中央处理单元等等。更特定来说,处理装置可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置505也可以是一或多个专用处理装置,例如asic、fpga、dsp、网络处理器等等。处理装置505经配置以执行指令535,且包含用于执行本文所论述的操作和步骤的相干性管理器550硬件。计算机系统500可进一步包含网络接口装置520以在网络540上通信。
64.数据存储系统525可包含机器可读存储介质530(也称为计算机可读介质),其上存储有一或多组指令535或体现本文中所描述的方法或功能中的任何一或多种的软件。指令535还可在由计算机系统500执行期间完全或至少部分地驻留在主存储器510内和/或处理装置505内,主存储器510和处理装置505也构成机器可读存储介质。数据存储系统525、主存储器510或这两者可包含可执行本文所描述的方法或功能中的任何一或多个的相干性管理器550硬件。机器可读存储介质530、数据存储系统525及/或主存储器510可对应于存储器子系统。
65.在一个实例中,指令535包含实施对应于相干性管理器550硬件(例如,参考图1所描述的相干性管理器150、参考图3所描述的处理装置310、参考图4所描述的处理装置400,或其组合)的功能性的指令。虽然机器可读存储介质530示出为单个介质,但术语“机器可读存储介质”可包含存储一或多个指令集的单个介质或多个介质。术语“机器可读存储介质”还可包含能够存储或编码供机器执行的指令集合且致使机器执行本公开的方法中的任何一或多种的任何介质。术语“机器可读存储介质”可包含但不限于固态存储器、光学介质和磁性介质。
66.已在针对计算机存储器内的数据位的操作的算法和符号表示方面呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其他技术人员的方式。算法在此一般地被设想为得到所要结果的自一致性操作序列。操作是要求对物理量进行物理操纵的操作。通常(但未必),这些量采用能够存储、组合、比较以及以其它方式操纵的电或磁信号的形式。已经证实,主要出于常用的原因,将这些信号称为位、值、元素、符号、字符、项、编号等等有时是便利的。
67.然而,应牢记,所有这些和类似术语将与适当物理量相关联,且仅仅为应用于这些量的便利标记。本公开可涉及将计算机系统的寄存器和存储器内的表示为物理(电子)量的数据操纵和变换为计算机系统的存储器或寄存器或其它这类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
68.本发明还涉及用于执行本文中的操作的设备。此设备可具体经构造用于既定目的,或其可包含由存储于计算机中的计算机程序选择性激活和再配置的通用计算机。此计算机程序可存储在计算机可读存储介质中,例如但不限于任何类型的盘,包含软盘、光盘、cd
‑
rom及磁光盘、rom、ram、eprom、eeprom、磁卡或光卡,或适合于存储电子指令并且各自耦
合到计算机系统总线的任何类型的介质。
69.本文中呈现的算法和显示在本质上并不与任何特定计算机或其它设备相关。各种通用系统可以与根据本文中的教示的程序一起使用,或可以证明构造用以执行所述方法更加专用的设备是方便的。将如下文描述中所阐述的那样来呈现各种这些系统的结构。另外,本公开不是参考任何特定编程语言来描述。应了解,可使用各种编程语言来实施如本文中所描述的本公开的教示内容。
70.本公开可提供作为计算机程序产品或软件,其可包含其上存储有指令的机器可读介质,所述指令可用以对计算机系统(或其它电子装置)进行编程以执行根据本公开的过程。机器可读介质包含用于以机器(例如,计算机)可读的形式存储信息的任何机制。在一些实例中,机器可读(例如,计算机可读)介质包含机器(例如,计算机)可读存储介质,例如rom、ram、磁盘存储介质、光学存储介质、快闪存储器组件等。
71.在前述说明书中,已参考其特定实例描述了本公开的实例。将显而易见的是,可在不脱离如所附权利要求书中所阐述的本公开的实例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书及图式。