一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

使用内容可寻址存储器的双地址命令管理的制作方法

2023-03-20 06:22:50 来源:中国专利 TAG:


1.本公开的实施例大体上涉及存储器子系统,且更确切地说,涉及使用存储器子系统中的内容可寻址存储器(cam)的双地址命令。


背景技术:

2.存储器子系统可包含存储数据的一或多个存储器装置。存储器装置可例如为非易失性存储器装置和易失性存储器装置。一般来说,主机系统可利用存储器子系统以在存储器装置处存储数据且从存储器装置检索数据。


技术实现要素:

3.在一个方面中,本公开涉及一种系统,其包括:存储器装置;及处理装置,其以操作方式与所述存储器装置耦合,用于执行包括以下的操作:响应于接收到存储器存取命令,确定所述存储器存取命令为包括源地址和目的地地址的双地址命令;产生与所述双地址命令的读取命令相关联的第一内容可寻址存储器(cam)条目,其中所述第一cam条目参考所述源地址;产生与所述双地址命令的写入命令相关联的第二cam条目,其中所述第二cam条目参考所述目的地地址;将所述第一cam条目和所述第二cam条目插入到cam中;及将与所述第一cam条目相关联的所述读取命令发布到所述存储器装置。
4.在另一方面中,本公开涉及一种方法,其包括:产生参考移动命令的源地址的第一内容可寻址存储器(cam)条目;产生与参考所述移动命令的目的地地址相关联的第二cam条目;及将所述第一cam条目和所述第二cam条目插入到cam中。
5.在又一方面中,本公开涉及一种存储指令的非暂时性机器可读存储媒体,所述指令在由处理装置执行时使得所述处理装置执行包括以下的操作:响应于接收到存储器存取命令,确定所述存储器存取命令为包括源地址和目的地地址的双地址命令;产生与所述双地址命令的读取命令相关联的第一内容可寻址存储器(cam)条目,其中所述第一cam条目参考所述源地址;产生与所述双地址命令的写入命令相关联的第二cam条目,其中所述第二cam条目参考所述目的地地址;将所述第一cam条目和所述第二cam条目插入到cam中;及将与所述第一cam条目相关联的所述读取命令发布到存储器装置。
附图说明
6.将从下文给出的实施方式和从本公开的各种实施例的附图更充分地理解本公开。
7.图1说明根据本公开的一些实施例的包含存储器子系统的实例计算系统。
8.图2为根据本公开的一些实施例的包含存储器存取命令管理(dcm)组件的实例系统的框图。
9.图3为根据本公开的一些实施例的说明存储器存取命令的队列的实例的图。
10.图4为根据本公开的一些实施例的内容可寻址存储器(cam)元数据的框图。
11.图5为根据本公开的一些实施例的实施数据一致性管理的实例方法的流程图。
12.图6为根据本公开的一些实施例的实施数据一致性管理的实例方法的流程图。
13.图7为本公开的实施例可在其中操作的实例计算机系统的框图。
具体实施方式
14.本公开的各方面涉及使用存储器子系统中的内容可寻址存储器(cam)的双地址命令管理。存储器子系统可为存储装置、存储器模块,或存储装置与存储器模块的混合。下文结合图1描述存储装置和存储器模块的实例。一般来说,主机系统可利用包含一或多个组件(例如存储数据的存储器装置)的存储器子系统。主机系统可提供要存储在存储器子系统处的数据,且可请求要从存储器子系统检索的数据。
15.存储器子系统可包含高密度非易失性存储器装置,其中当没有电力被供应到存储器装置时需要数据的保持。非易失性存储器装置的一个实例为与非(nand)存储器装置。下文结合图1描述非易失性存储器装置的其它实例。非易失性存储器装置为一或多个裸片的封装。每一裸片可由一或多个平面组成。对于一些类型的非易失性存储器装置(例如,nand装置),每一平面由一组物理块组成。每一块由一组页组成。每一页由一组存储器单元(“单元”)组成。所述单元为存储信息的电子电路。取决于单元类型,单元可存储二进制信息的一或多个位,且具有与所存储的位数相关的各种逻辑状态。逻辑状态可由二进制值(例如,“0”和“1”)或此类值的组合表示。
16.存储器装置可由按二维或三维网格布置的位组成。存储器单元以列(下文也称为位线)和行(下文也称为字线)阵列的形式蚀刻到硅晶片上。字线可指存储器装置的存储器单元的一或多个行,所述一或多个行与一或多个位线一起使用以产生存储器单元中的每一者的地址。位线和字线的相交点构成存储器单元的地址。下文中,块是指用于存储数据的存储器装置的单元,并且可包含存储器单元群组、字线群组、字线或个别存储器单元。可将一或多个块分组在一起以形成存储器装置的平面,以便允许在每一平面上进行并发操作。存储器装置可包含执行两个或更多个存储器平面的并发存储器页存取的电路系统。举例来说,存储器装置可包含可由存储器装置的平面共享的多个存取线驱动器电路和电力电路,以促进两个或更多个存储器平面的包含不同页类型的页的并发存取。为易于描述,这些电路通常可称为独立的平面驱动器电路。取决于所采用的存储架构,可跨越存储器平面(即,在条带中)存储数据。因此,读取数据的片段(例如,对应于一或多个数据地址)的一个请求可产生对存储器装置的存储器平面中的两者或更多者执行的读取操作。
17.存储器存取命令请求存储器装置执行存储器存取操作。存储器存取命令通常可被分类为相应类别,例如读取命令、写入命令、擦除命令、移动命令等。存储器子系统控制器可将所接收的存储器存取命令分配到存储器子系统中的多个队列中的一者。说明性地,队列可呈包含头部和尾部的链表的形式,其中从队列检索存储器存取命令且以先进先出(fifo)方式执行。由于来自队列中的仅一者的存储器存取命令可同时执行,因此存储器子系统控制器可使用定序器以根据调度方案服务于队列内识别的命令。
18.存储器存取命令可指定识别存储器装置上的存储器位置(例如,管理单元)的地址。举例来说,地址可为物理块地址(pba)。媒体控制器架构(例如,3d交叉点媒体控制器架构)可包含命令管理组件和实现媒体控制器架构与存储器装置之间的多信道通信的一组通信信道(“信道”)。命令管理组件可基于条目的时间(例如,fifo命令执行命令方案)而处置
数据完整性和命令次序。一组信道中的每一信道可实施内容可寻址存储器(cam)以接收存储器装置上的特定存储器位置的命令,且将命令放置到维持于cam上的队列中(例如,对于fifo命令执行方案,将新存储器存取命令附加到队列的尾部)。因此,每一cam可用于确保在对应信道内按顺序处理特定存储器位置的存储器存取命令。
19.cam为某些极高速搜索应用程序(例如识别符(id)和模式匹配)中常用的存储器装置类型。通常,通过将输入搜索数据与所存储的数据条目的表进行比较来搜索cam,并返回匹配表中的数据的存储器地址。cam频繁地实施于动态随机存取存储器(dram)或同步随机存取存储器(sram)中。然而,dram和sram这两者均具有有限的存储器容量,这会限制常规cam实施方案中可存储和搜索的数据量。
20.移动命令为包含两个地址的存储器存取命令;源地址和目的地地址。确切地说,移动命令可用于将数据从一个地址移动到另一地址。举例来说,移动命令可执行指示存储器装置对源地址执行读取存取操作的读取存取命令,及指示存储器装置将从源地址读取的数据写入(编程)到目的地地址的写入存取命令。移动命令可例如在耗损均衡操作中使用以防止存储器装置的一个部分被过度使用且经历过早故障。
21.在一些存储器子系统中,存储器子系统控制器将单独命令插入到cam以处理移动命令。确切地说,存储器子系统控制器可将读取命令插入到cam中,将所检索数据存储在高速缓冲存储器中,且接着将写入命令插入到cam中以将所检索数据编程到存储器装置上。然而,此过程是相对费时的,这增加了存储器子系统系统等待时间且降低了性能。
22.本公开的各方面通过提供能够执行移动命令的内容可寻址存储器(cam)来解决以上和其它不足。在一些实施例中,存储器子系统可利用实施于nand型快闪存储器装置中的cam架构来提供快速和高容量搜索能力。根据此架构,存储器子系统控制器可采用一或多个cam,其中每一cam将存储用于存储器存取操作的识别符的队列维持在驻存于存储器装置上的特定存储器位置(例如,pba)处。在一些实施例中,队列可由识别指定特定存储器位置的存储器存取命令的序列的链表实施。队列可具有对应于由cam针对特定存储器位置接收到的最旧存储器存取命令的头部命令,以及对应于待由cam针对特定存储器位置接收到的最新存储器存取命令的尾部。插入到cam中的每一存储器存取命令可被称为cam条目。每一cam条目可包含指示存储器存取命令的不同参数和特性的元数据。在一些实施例中,元数据可包含:“命令类型”识别符,其用于指示cam条目的命令类型(例如,单地址命令或双地址命令);“地址”识别符,其用于识别存储器存取命令所参考的物理块地址(pba)(和/或逻辑块地址(lba));“目的地地址”识别符,其用于指示移动命令的目的地地址;“目的地头部”识别符,其用于指示cam条目是移动命令目的地地址的链表中的头部;“移动读取”识别符,其用于指示cam条目是移动命令的读取命令部分;“移动写入”识别符,其用于指示cam条目是移动命令的写入命令部分;及“保持标签”识别符,其用于指示移动命令的读取命令部分中哪个cam条目是移动命令的写入命令部分。举例来说,保持标签可在移动命令的读取命令部分的cam条目元数据中指示cam条目5为移动命令的对应写入部分。
23.当cam具有自由条目时,存储器子系统控制器可选择(来自队列或高速缓冲存储器的)存储器存取命令以插入到cam中。为了执行插入,存储器子系统控制器可首先确定存储器存取命令是单地址命令(例如,写入命令、读取命令、擦除命令)还是双地址命令(例如,移动命令)。如果存储器存取命令为双地址命令,那么存储器子系统控制器可产生两个cam条
目;用于移动命令的读取命令部分的cam条目,及用于移动命令的写入命令部分的cam条目。存储器子系统控制器可进一步搜索每一有效cam条目的元数据以确定每一相关存储器存取命令所参考的pba和/或lba。响应于存储器子系统控制器确定移动命令的读取命令部分所参考的源地址和移动命令的写入命令部分所参考的目的地地址两者与两个或更多个待决cam条目所参考的地址匹配,存储器子系统控制器可将读取命令部分附加到队列的参考与读取命令部分相同地址的尾部,且将写入命令部分附加到队列的参考与写入命令部分相同地址的尾部。存储器子系统控制器可进一步经由元数据指示两个cam条目的对应参数(例如,cam条目是移动命令的读取命令部分还是移动命令的写入命令部分,哪一cam条目是移动命令的写入命令部分等)。响应于确定移动命令所参考的源地址与cam条目中的一或多者所参考的地址而非移动命令所参考的目的地地址匹配,存储器子系统控制器可将读取命令部分附加到队列的参考与读取命令部分相同地址的尾部,且插入写入命令部分作为头部存储器存取命令。存储器子系统控制器可进一步经由元数据指示两个cam条目的对应参数。响应于确定移动命令所参考的目的地地址与cam条目中的一或多者所参考的地址而非移动命令所参考的源地址匹配,存储器子系统控制器可将写入命令部分附加到队列的参考与读取命令部分相同地址的尾部,且插入读取命令部分作为头部存储器存取命令。存储器子系统控制器可进一步经由元数据指示两个cam条目的对应参数。响应于确定移动命令所参考的源地址和目的地地址与cam条目所参考的地址中的任一者不匹配,存储器子系统控制器可插入读取命令部分和写入命令部分中的每一者作为头部存储器存取命令。存储器子系统控制器可进一步经由元数据指示两个cam条目的对应参数。
24.本公开的优点包含但不限于存储器子系统中改进的性能。确切地说,本公开使得存储器子系统能够维持用于单地址存储器存取命令和双地址存储器存取命令两者的存储器存取命令排序。因此,本公开改进存储器存取命令等待时间和服务质量(qos)、数据事务同步,且降低硬件实施复杂性。另外,利用较少存储器子系统控制器资源来实施本公开的功能性,这可降低存储器子系统中的成本和电力利用。
25.图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130),或此类媒体的组合。
26.存储器子系统110可为存储装置、存储器模块,或存储装置与存储器模块的混合。存储装置的实例包含固态驱动器(ssd)、快闪驱动器、通用串行总线(usb)快闪驱动器、嵌入式多媒体控制器(emmc)驱动器、通用快闪存储(ufs)驱动器、安全数字(sd)卡以及硬盘驱动器(hdd)。存储器模块的实例包含双列直插式存储器模块(dimm)、小型dimm(so-dimm),及各种类型的非易失性双列直插式存储器模块(nvdimm)。
27.计算系统100可为计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、运载工具(例如,飞机、无人机、火车、汽车或其它运输工具)、支持物联网(iot)的装置、嵌入式计算机(例如,运载工具、工业设备或联网商业装置中包含的嵌入式计算机),或包含存储器和处理装置的此类计算装置。
28.计算系统100可包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。图1说明耦合到一个存储器子系统110的主机系统120的一个实例。如本文中所使用,“耦合到”或“与
……
耦合”通常是指组
件之间的连接,其可以是间接通信连接或直接通信连接(例如,没有中间组件),无论是有线还是无线的,包含例如电连接、光学连接、磁连接等连接。
29.主机系统120可包含处理器芯片组和由处理器芯片组执行的软件堆栈。处理器芯片组可包含一或多个核心、一或多个高速缓存器、存储器控制器(例如,nvdimm控制器),以及存储协议控制器(例如,pcie控制器、sata控制器)。主机系统120使用存储器子系统110以例如将数据写入到存储器子系统110和从存储器子系统110读取数据。
30.主机系统120可经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附件(sata)接口、外围组件互连高速(pcie)接口、通用串行总线(usb)接口、光纤通道、串行连接的scsi(sas)、双数据速率(ddr)存储器总线、小型计算机系统接口(scsi)、双列直插式存储器模块(dimm)接口(例如,支持双数据速率(ddr)的dimm套接接口)等。物理主机接口可用于在主机系统120与存储器子系统110之间传输数据。当存储器子系统110通过物理主机接口(例如,pcie主线)与主机系统120耦合时,主机系统120可进一步利用nvm高速(nvme)接口、开放nand快闪接口(onfi)接口,或某一其它接口来存取组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子系统110与主机系统120之间传送控制、地址、数据和其它信号的接口。图1说明存储器子系统110作为实例。一般来说,主机系统120可经由同一通信连接、多个单独通信连接和/或通信连接的组合存取多个存储器子系统。
31.存储器装置130、140可包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可为但不限于随机存取存储器(ram),例如动态随机存取存储器(dram)和同步动态随机存取存储器(sdram)。
32.非易失性存储器装置(例如,存储器装置130)的一些实例包含与非(nand)型快闪存储器和就地写入存储器,例如三维交叉点(“3d交叉点”)存储器装置,其是非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来执行位存储。另外,与许多基于快闪的存储器形成对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。nand型快闪存储器包含例如二维nand(2dnand)和三维nand(3d nand)。
33.存储器装置130中的每一者可包含一或多个存储器单元阵列。一种类型的存储器单元,例如,单层级单元(slc)可每单元存储一个位。其它类型的存储器单元,例如,多层级单元(mlc)、三层级单元(tlc)、四层级单元(qlc)和五层级单元(plc),可每单元存储多个位。在一些实施例中,存储器装置130中的每一者可包含一或多个存储器单元阵列,例如slc、mlc、tlc、qlc或此类存储器单元阵列的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的slc部分,以及mlc部分、tlc部分、qlc部分或plc部分。存储器装置130的存储器单元可分组为可指用于存储数据的存储器装置的逻辑单元的页。对于一些类型的存储器(例如,nand),页可经分组以形成块。
34.虽然描述了非易失性存储器组件,例如3d交叉点非易失性存储器单元阵列和nand型快闪存储器(例如,2d nand、3d nand),但存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(rom)、相变存储器(pcm)、自选存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(fetram)、铁电随机存取存储器(feram)、磁随机存取存
储器(mram)、自旋转移力矩(stt)-mram、导电桥接ram(cbram)、电阻性随机存取存储器(rram)、基于氧化物的rram(oxram)、或非(nor)快闪存储器、电可擦除可编程只读存储器(eeprom)。
35.存储器子系统控制器115(或为简单起见,控制器115)可与存储器装置130通信以执行操作,例如在存储器装置130处读取数据、写入数据或擦除数据和其它此类操作。存储器子系统控制器115可包含硬件,例如一或多个集成电路和/或离散组件、缓冲存储器或其组合。硬件可包含具有用以执行本文中所描述的操作的专用(即,硬译码)逻辑的数字电路系统。存储器子系统控制器115可为微控制器、专用逻辑电路系统(例如,现场可编程门阵列(fpga)、专用集成电路(asic)等等)或其它合适的处理器。
36.存储器子系统控制器115可为处理装置,其包含经配置以执行存储在本地存储器119中的指令的一或多个处理器(例如,处理器117)。在所示的实例中,存储器子系统控制器115的本地存储器119包含经配置以存储指令的嵌入式存储器,所述指令用于执行控制存储器子系统110的操作(包含处理存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流程和例程。
37.在一些实施例中,本地存储器119可包含存储存储器指针、所提取数据等等的存储器寄存器。本地存储器119还可包含用于存储微码的只读存储器(rom)。虽然在图1中的实例存储器子系统110已说明为包含存储器子系统控制器115,但在本公开的另一实施例中,存储器子系统110不包含存储器子系统控制器115,而是可依靠外部控制(例如,由外部主机或由与存储器子系统分开的处理器或控制器提供)。
38.一般来说,存储器子系统控制器115可从主机系统120接收命令或操作,且可将所述命令或操作转换成指令或适当命令以实现对存储器装置130的所需存取。存储器子系统控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ecc)操作、加密操作、高速缓存操作以及与存储器装置130相关联的逻辑地址(例如,逻辑块地址(lba)、名称空间)与物理地址(例如,物理块地址)之间的地址转换。存储器子系统控制器115还可包含主机接口电路系统,以经由物理主机接口与主机系统120通信。主机接口电路系统可将从主机系统接收到的命令转换成命令指令以存取存储器装置130以及将与存储器装置130相关联的响应转换成用于主机系统120的信息。
39.存储器子系统110还可包含未说明的额外电路系统或组件。在一些实施例中,存储器子系统110可包含高速缓冲存储器或缓冲器(例如,dram)和地址电路系统(例如,行解码器和列解码器),所述地址电路系统可从存储器子系统控制器115接收地址并解码所述地址以存取存储器装置130。
40.在一些实施例中,存储器装置130包含本地媒体控制器135,其结合存储器子系统控制器115操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如,存储器子系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器子系统110为受管理存储器装置,其包含具有裸片上的控制逻辑(例如,本地媒体控制器135)和用于相同存储器装置封装内的媒体管理的控制器(例如,存储器子系统控制器115)的原始存储器装置130。受管理存储器装置的实例为受管理nand(mnand)装置。
41.存储器子系统110包含数据一致性管理(dcm)组件113。在一些实施例中,存储器子
系统控制器115包含dcm组件113的至少一部分。在一些实施例中,dcm组件113为主机系统110、应用程序或操作系统的部分。在其它实施例中,本地媒体控制器135包含dcm组件113的至少一部分并且经配置以执行本文中所描述的功能性。
42.在一些实施例中,dcm组件113可通过控制传入存储器存取命令的服务程度来强制执行存储器装置的数据一致性,以防止发生不同步情况。为实现这一点,dcm组件113可基于存储器存取命令是单地址命令(例如,写入命令、读取命令、擦除命令)还是双地址命令(例如,移动命令)而管理传入存储器存取命令。如果传入存储器存取命令为双地址命令,那么dcm组件113可将两个存储器存取命令(写入命令和读取命令)插入到cam中,且执行一组操作以防止写入命令和/或读取命令与其它待决存储器存取命令不同步地处理。下文将参考图2描述关于dcm组件113的进一步细节。
43.图2为根据本公开的一些实施例的包含数据一致性管理(dcm)组件113的实例系统200的框图。dcm组件113可包含于存储器子系统控制器(例如存储器子系统控制器115)内。dcm组件113可包含于根据本文中所描述的实施例的任何合适的存储器子系统中。举例来说,dcm组件113可包含在对应于3dxp存储器装置(例如,图1的存储器装置130)的存储器子系统内。
44.如所展示,dcm组件113可包含命令管理器220和数个cam 230-1到230-n。命令管理器220可发布供cam 230-1到230-n处理的命令以处理数据完整性和命令次序(例如,fifo命令执行方案)。举例来说,由命令管理器220发布的存储器存取命令基于由存储器存取命令指定的存储器位置而路由到cam 230-1到230-n中的一者。cam230-1到230-n中的每一者可存储由对应的cam条目值识别的多个命令条目。cam230-1到230-n中的每一者可维持已由命令管理器220发布的存储器存取命令的队列,其中每一队列包含对应于特定存储器位置(例如,pba)的存储器存取命令。在一些实施例中,存储器存取命令的每一队列包含按时间排序的存储器存取命令的链表。因此,队列可用于按时间次序(例如,fifo次序)处理特定存储器位置的存储器存取命令。存储器存取操作的链表的实例在下文参考图3描述,且关于可由dcm组件113执行以实施数据一致性管理的过程的进一步细节将在下文参考图5和6进行描述。
45.图3为根据本公开的一些实施例的说明存储器存取命令的队列的实例的图300。图300展示对应于驻存在存储器装置上的第一存储器位置(例如,物理块地址(pba))的第一队列310-a、对应于驻存在存储器装置上的第二存储器位置的第二队列310-b以及对应于驻存在存储器装置上的第三存储器位置的第三队列310-c。第一队列310-a包含四个存储器存取命令,包含头部存储器存取命令312-a和尾部存储器存取命令314-a。第二队列310-b包含三个存储器存取命令,包含头部存储器存取命令312-b和尾部存储器存取命令314-b。第三队列310-c包含存储器存取命令312-c,其可为头部存储器存取命令和尾部存储器存取命令两者。
46.在一些实施例中,队列310-a到310-c中的每一者呈链表形式。传入存储器存取命令可附加到链表的尾部(例如,fifo次序)。举例来说,头部存储器存取命令312-a到312-c可对应于其相应队列310-a到310-c中剩余的最旧存储器存取命令,且尾部存储器存取命令314-a到314-c可对应于其相应队列310-a到310-c中剩余的最早存储器存取命令。在头部存储器存取命令312-a到312-c中的一者完成之后,从其对应的队列删除头部存储器存取命
令,且链接到头部存储器存取命令的任何下一存储器存取命令变为新头部存储器存取命令(如果所述链接到头部存储器存取命令的任何下一存储器存取命令存在的话)。如果不存在链接到头部存储器存取命令的下一存储器存取命令(例如,相对于单一存储器存取命令312-c在队列310-c中展示),那么在存储器位置处的新存储器存取命令之前,不针对对应的存储器位置执行额外存储器存取命令。
47.图4为根据本公开的一些实施例的说明与插入到cam(例如,插入到每一cam条目)中的每一存储器存取命令相关的实例元数据的图400。图4说明包含一组cam字段410和对应值420的实例元数据表405。每一cam条目可包含识别使存储器存取命令相关的不同参数和/或特性的一组元数据。在一些实施例中,元数据可包含cam条目值。可由dcm组件113将cam条目值用作cam条目识别符。在一些实施例中,元数据可包含“有效的”识别符以指示cam条目是否有效(例如,cam条目是否已由存储器装置处理)。举例来说,dcm组件113可使用二进制值1来指示存储器存取命令为有效的,且使用二进制值0来指示存储器存取命令为无效的。在一些实施例中,元数据可包含用以指示cam条目的命令类型(例如,单地址命令或双地址命令)的“命令类型”识别符。在一些实施例中,元数据可包含用以指示cam条目是否为头部存储器存取命令的“头部”识别符。举例来说,dcm组件113可使用二进制值1来指示存储器存取命令为头部存储器存取命令,且使用二进制值0来指示存储器存取命令不是头部存储器存取命令。在一些实施例中,元数据可包含用以指示cam条目是否为尾部存储器存取命令的“尾部”识别符。举例来说,dcm组件113可使用二进制值1来指示存储器存取命令为尾部存储器存取命令,且使用二进制值0来指示存储器存取命令不是尾部存储器存取命令。在一些实施例中,元数据可包含用以识别存储器存取命令所参考的物理块地址(pba)(和/或逻辑块地址(lba))的“地址”识别符。移动命令可被称为两个单独的cam条目(例如,参考源地址的读取命令部分和参考目的地地址的写入命令部分)。在一些实施例中,地址识别符可与移动命令的读取命令部分所参考的源地址相关,且地址识别符可与移动命令的写入命令部分所参考的目的地地址相关。在一些实施例中,元数据可包含用以指示哪一cam条目为对应链表中的后续条目的“下一”识别符。举例来说,队列可包含2个存储器存取命令,包含作为cam条目2的头部存储器存取命令,及作为cam条目5的尾部存储器存取命令。dcm组件113可设置cam条目2的元数据的下一指示符以将cam条目5识别为链表的后续存储器存取命令。
48.在一些实施例中,元数据可包含用以指示cam条目为移动命令目的地地址的链表中的头部的“目的地头部”识别符。在一些实施例中,元数据可包含用以指示移动命令的目的地地址的“目的地地址”识别符。在一些实施例中,元数据可包含用以指示cam条目为移动命令的读取命令部分的“移动读取”识别符。在一些实施例中,元数据可包含用以指示cam条目为移动命令的写入命令部分的“移动写入”识别符。在一些实施例中,元数据可包含用以在移动命令的读取命令部分中指示哪一cam条目为移动命令的写入命令部分的“保持标签”识别符。举例来说,保持标签可在读取命令部分的cam条目元数据中指示cam条目6为对应写入部分。
49.图5为根据本公开的一些实施例的实施数据一致性管理的实例方法500的流程图。方法500可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法500由图1和2的dcm组件113执行。虽然以特定顺
序或次序来展示,但是除非另外指定,否则可修改过程的次序。因此,所说明的实施例应理解为仅作为实例,且所说明的过程可以不同次序执行,并且一些过程可并行执行。另外,可在各种实施例中省略一或多个过程。因此,并非在每个实施例中需要所有过程。其它过程流程是可能的。
50.在操作502处,处理逻辑可选择存储器存取命令以插入到cam(例如,cam 230-1到230-n)中。举例来说,响应于cam具有自由条目,处理逻辑可基于存储器存取命令的优先级(例如,主机启动命令或控制器启动命令)、队列或高速缓冲存储器所接收到的位置(例如,fifo、后进先出(lifo)等)或任何其它方式中的至少一者而从队列或高速缓冲存储器选择存储器存取命令。存储器存取命令可指定驻存于存储器装置上的存储器位置。存储器位置可与任何合适的存储器装置相关联。在一些实施例中,存储器位置为pba。
51.在操作504处,处理逻辑确定存储器存取命令是单地址命令(例如,写入命令、读取命令、擦除命令)还是双地址命令(例如,移动命令)。响应于存储器存取命令为单地址命令,处理逻辑进行到操作506。响应于存储器存取命令为双地址命令,处理逻辑进行到操作514。
52.在操作506处,处理逻辑确定cam中的cam条目所参考的地址。在一些实施例中,处理逻辑可搜索与每一cam条目相关的元数据以确定每一存储器存取命令所参考的pba(和/或lba)。在一些实施例中,处理逻辑可仅搜索有效的cam条目(例如,包含设置成1的二进制值的“有效的”识别符)。
53.在操作508处,处理逻辑确定cam条目中的任一者是否与存储器存取命令所参考的地址匹配。举例来说,处理逻辑可确定存储器存取命令所参考的pba是否与cam条目中的任一者所参考的pba相同。响应于处理逻辑确定cam条目中无一者参考与存储器存取命令相同的地址,处理逻辑进行到操作510。响应于处理逻辑确定cam条目中的一或多者参考与存储器存取命令相同的地址,处理逻辑进行到操作512。
54.在操作510处,处理逻辑产生新链表且将存储器存取命令插入到cam中。举例来说,处理逻辑可将(与所插入的存储器存取命令的cam条目相关的元数据的)头部识别符和目的地头部识别符设置为值1,以指示存储器存取命令为头部存储器存取命令。处理逻辑接着可发布存储器存取命令。
55.在操作512处,处理逻辑可插入存储器存取命令作为与匹配地址相关联的链表的尾部存储器存取命令。举例来说,处理逻辑可将头部识别符设置为二进制值0且将目的地头部识别符设置为二进制值1。
56.在操作514处,处理逻辑确定cam中的cam条目所参考的地址。在一些实施例中,处理逻辑可搜索与插入到cam中的每一存储器存取命令相关的元数据以确定每一存储器存取命令所参考的pba(和/或lba)。在一些实施例中,处理逻辑可仅搜索有效的cam条目。
57.在操作516处,处理逻辑确定双地址命令(例如,移动命令)所参考的源地址和目的地地址是否均与cam条目中的两者或更多者所参考的地址相同。响应于确定存储器存取命令所参考的源地址和目的地地址均与cam中的cam条目中的两者或更多者所参考的地址相同,处理逻辑进行到操作518且将移动命令插入到与匹配地址相关联的链表的尾部。举例来说,处理逻辑可将移动命令的读取命令部分作为尾部存储器存取命令插入到参考移动命令的源地址的链表,且将移动命令的写入命令部分作为尾部存储器存取命令插入到参考移动命令的目的地地址的链表。处理逻辑可针对移动命令的两个部分将头部识别符设置为二进
制值0且将目的地头部识别符设置为二进制值0。
58.响应于确定移动命令所参考的源地址和目的地地址均与cam条目中的两者或更多者所参考的地址不同(例如,不匹配),处理逻辑进行到操作520。
59.在操作520处,处理逻辑确定移动命令所参考的源地址是否与cam条目中的一或多者所参考的地址匹配。响应于确定移动命令所参考的源地址与cam条目中的一或多者所参考的地址匹配(且移动命令的目的地地址与cam条目中的一或多者所参考的地址不匹配),处理逻辑进行到操作522且将移动命令的读取命令部分作为尾部存储器存取命令插入到参考移动命令的源地址的链表,且插入移动命令的写入命令部分作为头部存储器存取命令。对于移动命令的读取命令部分,处理逻辑可将头部识别符设置为二进制值0且将目的地头部识别符设置为二进制值1。处理逻辑接着可将移动命令的写入命令部分插入到作为另一cam条目的cam中,且将保持标签识别符设置为二进制值1以指示与移动命令的写入命令部分相关的cam条目链接到与移动命令的读取命令部分相关的cam条目。
60.响应于确定移动命令所参考的源地址与cam条目中的一或多者所参考的地址不匹配,处理逻辑进行到操作524。
61.在操作524处,处理逻辑确定移动命令所参考的目的地地址是否与cam条目中的一或多者所参考的地址匹配。响应于确定移动命令所参考的目的地地址与cam条目中的一或多者所参考的地址匹配(且移动命令的源地址与cam条目中的一或多者所参考的地址不匹配),处理逻辑进行到操作526且将移动命令的写入命令部分作为尾部存储器存取命令插入到存储器存取命令的目的地地址的链表,且插入移动命令的读取命令部分作为头部存储器存取命令。对于移动命令的读取命令部分,处理逻辑可将头部识别符设置为二进制值1且将目的地头部识别符设置为二进制值0。处理逻辑接着可将移动命令的写入命令部分插入到作为另一cam条目的cam中,且将保持标签识别符设置为二进制值1以指示与移动命令的写入命令部分相关的cam条目链接到与移动命令的读取命令部分相关的cam条目。处理逻辑可进一步针对移动命令的写入部分将尾部识别符设置为1,将尾部识别符设置为链表的先前cam条目中的0,且将链表的先前cam条目中的下一识别符设置为移动命令的写入命令部分的cam条目id。
62.响应于确定移动命令所参考的源地址和目的地地址与cam中的cam条目中的一或多者所参考的地址不匹配,处理逻辑进行到操作528。在操作528处,处理逻辑产生新链表且将移动命令插入到cam中。确切地说,处理逻辑插入移动命令的读取命令部分作为一个cam条目,且插入写入命令部分作为另一cam条目。对于移动命令的读取命令部分,处理逻辑可将头部识别符和目的地头部识别符设置为值1,以指示存储器存取命令为头部存储器存取命令。处理逻辑接着可发布存储器存取命令。对于移动命令的写入命令部分,处理逻辑可将保持标签识别符设置为二进制值1以指示与移动命令的写入命令部分相关的cam条目链接到与移动命令的读取命令部分相关的cam条目。
63.图6为根据本公开的一些实施例的实施数据一致性管理的实例方法600的流程图。方法600可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法600由图1和2的dcm组件113执行。虽然以特定顺序或次序来展示,但是除非另外指定,否则可修改过程的次序。因此,所说明的实施例应理解为
仅作为实例,且所说明的过程可以不同次序执行,并且一些过程可并行执行。另外,可在各种实施例中省略一或多个过程。因此,并非在每个实施例中需要所有过程。其它过程流程是可能的。
64.在操作602处,响应于接收到存储器装置完成存储器存取命令的指示,处理逻辑确定与完成的存储器存取命令相关的cam条目值。举例来说,处理逻辑可接收与读取存取命令相关联的读取数据,或与写入存取命令相关联的写入数据经编程的指示。处理逻辑可使用元数据、数据结构、识别符等来确定cam条目值。
65.在操作604处,处理逻辑使cam条目无效(例如,将有效识别符设置为二进制值0)且指示cam条目自由接收另一存储器存取命令。
66.在操作606处,响应于尾部识别符指示对应链表中存在后续cam条目,处理逻辑针对后续cam条目设置头部识别符以指示后续cam条目为头部存储器存取命令(例如,将头部识别符设置为二进制值1)。在一些实施例中,响应于后续cam条目被指示为头部存储器存取命令和目的地头部存储器存取命令,存储器子系统控制器可发布后续cam条目。
67.在操作608处,处理逻辑确定cam条目是否涉及移动命令的单地址命令或读取命令部分。响应于cam条目与单地址命令相关,方法600结束。响应于cam条目与移动命令的读取命令部分相关,处理逻辑进行到操作610。
68.在操作610处,处理逻辑识别并发布与写入命令部分相关的cam条目。举例来说,处理逻辑可使用保持标签识别符以识别与写入命令部分相关的cam条目。处理逻辑接着可将写入命令发布到存储器装置。
69.在操作612处,响应于接收到存储器装置完成写入命令的指示,处理逻辑使与写入命令部分相关的cam条目无效(例如,将有效识别符设置为二进制值0)且指示cam条目自由接收另一存储器存取命令。处理逻辑可进一步响应于尾部识别符指示对应链表中存在后续cam条目而执行操作606。
70.图7说明计算机系统700的实例机器,在所述计算机系统内可执行用于使得机器执行本文中所论述的方法中的任何一或多种的一组指令。在一些实施例中,计算机系统700可对应于主机系统(例如,图1的主机系统120),所述主机系统包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)或可用于执行控制器的操作(例如,执行操作系统以执行对应于图1的dcm组件113的操作)。在替代实施例中,机器可连接(例如联网)到lan、内联网、外联网和/或因特网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而以客户端-服务器网络环境中的服务器或客户端机器的能力进行操作。
71.机器可为个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝式电话、网络器具、服务器、网络路由器、交换机或桥接器,或能够(依序或以其它方式)执行将由所述机器采取的指定动作的一组指令的任何机器。此外,虽然说明单个机器,但应认为术语“机器”还包含机器的任何集合,所述机器单独地或共同地执行一组(或多组)指令以执行本文中所论述的方法中的任何一或多种。
72.实例计算机系统700包含处理装置702、主存储器704(例如,只读存储器(rom)、快闪存储器、动态随机存取存储器(dram),例如同步dram(sdram)或rambus dram(rdram)等)、静态存储器706(例如快闪存储器、静态随机存取存储器(sram)等),以及数据存储系统718,
其经由总线730彼此通信。
73.处理装置702表示一或多个通用处理装置,例如微处理器、中央处理单元等。更确切地说,处理装置可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器,或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置702也可为一或多个专用处理装置,例如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器等。处理装置702经配置以执行用于执行本文中所论述的操作和步骤的指令726。计算机系统700可进一步包含网络接口装置708以经由网络720进行通信。
74.数据存储系统718可包含机器可读存储媒体724(也称为计算机可读媒体,例如非暂时性计算机可读媒体),其上存储有一或多组指令726或体现本文中所描述的方法或功能中的任一或多种的软件。指令726还可在其由计算机系统700执行期间完全或至少部分地驻存在主存储器704内和/或处理装置702内,主存储器704和处理装置702也构成机器可读存储媒体。机器可读存储媒体724、数据存储系统718,和/或主存储器704可对应于图1的存储器子系统110。
75.在一个实施例中,指令726包含用以实施对应于图1的dcm组件113的功能性的指令。尽管在实例实施例中将机器可读存储媒体724展示为单个媒体,但是应认为术语“机器可读存储媒体”包含存储一或多组指令的单个媒体或多个媒体。还应认为术语“机器可读存储媒体”包含能够存储或编码供机器执行的一组指令且使得机器执行本公开的方法中的任何一或多种的任何媒体。因此,应认为术语“机器可读存储媒体”包含但不限于固态存储器、光学媒体和磁性媒体。
76.已依据计算机存储器内的数据位的操作的算法和符号表示呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给本领域的其他技术人员的方式。本文的算法通常是指产生所要结果的操作的自洽序列。操作为要求对物理量进行物理控制的操作。这些量通常但未必呈能够被存储、组合、比较和以其它方式操控的电或磁信号的形式。主要出于通用的原因,已经证明将这些信号称为位、值、元件、符号、字符、术语、数字等有时是便利的。
77.然而,应牢记,所有这些和类似术语应与适当物理量相关联,且仅为应用于这些量的方便标签。本公开可以指操控和变换计算机系统的寄存器和存储器内的表示为物理(电子)量的数据为计算机系统存储器或寄存器或其它此类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
78.本公开还涉及用于执行本文的操作的设备。此设备可出于预期目的而专门构造,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的盘,包含软盘、光盘、cd-rom和磁性光盘、只读存储器(rom)、随机存取存储器(ram)、eprom、eeprom、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,其各自耦合到计算机系统总线。
79.本文中所呈现的算法和显示本质上不与任何特定计算机或其它设备相关。各种通用系统可与根据本文中的教示的程序一起使用,或其可证明构造用以执行所述方法更加专用的设备是便利的。将如下文描述中所示呈现用于多种这些系统的结构。另外,不参考任何特定编程语言描述本公开。将了解,可使用各种编程语言来实施如本文中所描述的本公开
的教示。
80.本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以执行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机制。在一些实施例中,机器可读(例如计算机可读)媒体包含机器(例如计算机)可读存储媒体,例如只读存储器(“rom”)、随机存取存储器(“ram”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等等。
81.在前述说明书中,已参考本公开的特定实例实施例描述本公开的实施例。将显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本发明进行各种修改。因此,说明书和图式应被视为说明性的而非限制性的。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献