具有优化读取的非易失性存储器的制作方法


具有优化读取的非易失性存储器


背景技术:



1.本技术涉及非易失性存储器设备的操作。
2.半导体存储器广泛用于各种电子设备,诸如蜂窝电话、数码相机、个人数字助理、医疗电子器件、移动计算设备、服务器、固态驱动器、非移动计算设备和其他设备。半导体存储器可以包括非易失性存储器或易失性存储器。即使当非易失性存储器未连接到电源(例如,电池)时,非易失性存储器也允许存储和保留信息。非易失性存储器的一个示例为闪存存储器(例如,nand型闪存存储器和nor型闪存存储器)。
3.许多电子设备利用包括非易失性存储器的嵌入式或连接的存储系统。包括嵌入式存储系统或连接到存储系统的电子设备通常被称为主机。存储在嵌入式或连接的存储系统中的数据可以传输到主机以供带有各种应用程序的主机使用。例如,存储系统可以将数据库存储在非易失性存储器中,所述非易失性存储器由主机上的应用程序使用以执行任何数量的任务。应用程序的性能,诸如执行任务所需的时间,对应用程序的用户很重要。为了实现高性能,应用程序需要能够无延迟地从存储系统读取数据,使得应用程序不会由于从存储系统读取数据的延迟而减慢。因此,需要提高从存储系统读取数据的速度。
附图说明
4.类似编号的元件是指不同的图中的共同部件。
5.图1a是连接到主机的存储系统的一个实施方案的框图。
6.图1b是前端处理器电路的一个实施方案的框图。
7.图1c是后端处理器电路的一个实施方案的框图。
8.图1d是存储器封装件的一个实施方案的框图。
9.图1e是与存储器控制器一起使用的易失性存储器的一个实施方案的框图。
10.图1f是pmr高速缓存的一个实施方案的框图。
11.图2a是存储器管芯的一个实施方案的功能框图。
12.图2b是集成存储器组件的一个实施方案的功能框图。
13.图3示出元块的示例。
14.图4a示出tlp读取请求消息的结构的一个实施方案。
15.图4b示出tlp读取完成消息的结构的一个实施方案。
16.图5a示出多个高速缓存区段,并且示出读取高速缓存区段的内容的示例性次序。
17.图5b示出针对图5a的实施方案发出tlp读取请求消息的次序。
18.图6是描述用于读取数据的过程的一个实施方案的流程图。
19.图7是描述用于读取数据的过程的一个实施方案的流程图。
20.图8是描述由存储系统执行的过程的一个实施方案的流程图。
21.图9是描述由主机执行以便从存储系统读取数据的过程的一个实施方案的流程图。
22.图10是描述当主机请求读取数据时存储系统执行的过程的一个实施方案的流程
图。
23.图11是描述作为读取过程的一部分由存储系统执行的过程的一个实施方案的流程图。
24.图12a示出多个高速缓存区段和读取高速缓存区段的内容的示例性次序。
25.图12b示出针对图12a的实施方案发出tlp读取请求消息的次序。
具体实施方式
26.为了提高从非易失性存储系统读取数据的速度,建议非易失性存储系统与主机共享其存储区域和/或高速缓存的结构的细节。通过感知存储区域和/或高速缓存的结构的共享细节,主机以利用非易失性存储系统内的并行性的方式布置并发出读取数据的请求。
27.在一个实施方案中,非易失性存储系统实现可由主机访问的持久性存储区域(“pmr”)。为了提高性能,非易失性存储系统还实现包括多个高速缓存区段的pmr高速缓存。在初始化期间(或在另一时间点),非易失性存储系统将高速缓存区段的大小(或关于pmr和/或pmr高速缓存的其它信息)通知给主机。当主机确定需要从pmr读取数据时,主机使用其对高速缓存区段的大小的知识来识别将使用pmr高速缓存中的哪些高速缓存区段来读取数据。主机首先针对将用于读取数据的pmr高速缓存的所识别的高速缓存区段中的每个将单个读取请求发送到非易失性存储系统。作为响应,非易失性存储系统将数据加载到pmr高速缓存的所识别的高速缓存区段中并将请求数据返回到主机。在接收到高速缓存区段的请求数据后,主机然后发送对所述相应缓存区段的附加数据的附加读取请求。以此方式,第一组读取请求中的全部或一部分彼此同时执行并且与附加数据的读取请求的全部或一部分同时执行。这种并发性改善了读取过程的性能,并且导致读取的数据在较短的时间量内递送到宿主。
28.图1a是连接到主机系统120的存储系统100的一个实施方案的框图。存储系统100可实现本文所公开的技术。许多不同类型的存储系统可与本文所公开的技术一起使用。一个示例性存储系统为固态驱动器(“ssd”);然而,也可以使用其他类型的存储系统。存储系统100包括存储器控制器102、用于存储数据的一个或多个存储器封装件104,和本地存储器(例如,dram/reram)106。存储器控制器102包括前端处理器电路(fep)110和一个或多个后端处理器电路(bep)112。在一个实施方案中,fep电路110在asic上实现。在一个实施方案中,每个bep电路112在单独asic上实现。在一个实施方案中,用于bep电路112和fep电路110中的每一者的asic在同一半导体上实现,使得存储器控制器102被制造为片上系统(“soc”)。fep110和bep112均包括其本身的处理器。在一个实施方案中,fep110和bep112按主从配置运行,其中fep110是主设备,并且每个bep112是从设备。例如,fep电路110实现闪存转换层,该闪存转换层执行存储器管理(例如,垃圾收集、损耗均衡等)、逻辑到物理地址转换、与主机的通信、dram(本地易失性存储器)的管理以及ssd(或其他非易失性存储系统)的整体操作的管理。bep电路112根据fep电路110的请求来管理存储器封装件104中的存储器操作。例如,bep电路112可以实施读取、擦除和编程过程。另外,bep电路112可执行缓冲器管理,设置fep电路110所需的特定电压电平,执行纠错(ecc),控制到存储器封装的切换模式接口等。在一个实施方案中,每个bep电路112负责其本身的一组存储器封装。存储器控制器102是控制电路的一个示例。
29.在一个实施方案中,存在多个存储器封装件104。每个存储器封装件 104可包括一个或多个存储器管芯。在一个实施方案中,存储器封装件104 中的每个存储器管芯利用nand闪存存储器(包括二维nand闪存存储器和/或三维nand闪存存储器)。在其他实施方案中,存储器封装件104可以包括其他类型的存储器;例如,存储器封装件可包括相变存储器 (pcm)或磁阻随机存取存储器(mram)。
30.在一个实施方案中,存储器控制器102使用接口130与主机系统120 通信,该接口通过pci express(pcie)实现nvm express(nvme)。为了与存储系统100一起运行,主机系统120包括经由总线128进行通信的主机处理器122、主机存储器124和pcie接口126。主机存储器124是主机的物理存储器,并且可以是dram、sram、非易失性存储器或另一类型的存储装置。主机120还可以包括连接到总线128的硬盘驱动器和/或与总线128通信的usb驱动器。用于对主机处理器122进行编程的软件(代码)可存储在主机存储器124、连接到总线128的硬盘驱动器或usb驱动器中。主机存储器124、连接到总线128的硬盘驱动器和usb驱动器是非暂态处理器可读存储介质的示例,该存储介质存储处理器可读代码,该代码当在主机处理器122上执行时,使得主机处理器122执行下述方法。
31.主机系统120在存储系统100外部并之分开。在一个实施方案中,存储系统100嵌入主机系统120中。在其它实施方案中,存储器控制器102 可经由其它类型的通信总线和/或链路与主机120通信,包括例如通过构造架构上的nvme,或通过基于加速器高速缓存一致互连(ccix)、快速链路计算(cxl)、开放式一致加速器处理器接口(opencapi)、gen-z等的高速缓存/存储器一致架构。为简单起见,将关于pcie示例描述下面的实施方案。
32.图1b是fep电路110的一个实施方案的框图。图1b示出了与主机系统120通信的pcie接口150和主机处理器152。pcie接口150包括直接存储器访问(dma)模块以执行到主机存储器124的dma传输。主机处理器152可以是本领域中已知的适于实现的任何类型的处理器。主机处理器 152与片上网络(noc)154通信。noc是集成电路上的通信子系统,通常在soc中的核心之间。noc可跨越同步和异步时钟域,或者使用非时钟的异步逻辑。noc技术将网络理论和方法应用于片上通信,并且与常规总线和交叉开关互连相比带来了显著的改善。与其他设计相比,noc提高了 soc的可扩展性以及复杂soc的电源效率。noc的导线和链路由许多信号共享。由于noc中的所有链路可在不同的数据分组上同时运行,因此实现了高度并行。因此,随着集成子系统的复杂性不断增大,与先前的通信架构(例如,专用的点对点信号线、共享总线或具有桥的分段总线)相比, noc提供增强的性能(诸如吞吐量)和可扩展性。连接到noc 154并且与 noc 154通信的是存储器处理器156、sram 160和dram控制器162。 dram控制器162用于操作dram(例如,dram 106,它是易失性存储器)并且与该dram通信。sram 160是由存储器处理器156使用的本地易失性ram存储器。存储器处理器156用于运行fep电路并且执行各种存储器操作。与noc通信的还有两个pcie接口164和166。在图1b的实施方案中,存储器控制器102包括两个bep电路112;因此,存在两个 pcie接口164/166。每个pcie接口164/166与bep电路112中的一个通信。在其他实施方案中,可存在多于或少于两个bep电路112;因此,可存在多于两个pcie接口。
33.通常,持久性存储区域(pmr)是持久性存储器的定位在存储设备 100内的区域,其可以被主机120使用标准pcie命令/传输访问(例如,读取或写入),而没有nvme典型的命令队列的任何开销。将地址范围指派给pmr以供带有标准pcie命令/传输的主机使用。在各种
实施方案中, pmr可以完全驻留在非易失性存储器104中,完全在易失性存储器(例如,dram 106或sram 160)中,或者跨非易失性存储器和易失性存储器两者。在一个实施方案中,存储设备100在非易失性存储器104内实现 pmr,如下所述。对pmr的访问由pmr管理器184(连接到noc 154) 控制,该pmr管理器可以是独立处理器(硬连线或由软件编程)。在另一实施方案中,pmr管理器184是在存储器处理器156或主机处理器152上运行的软件。pmr管理器184包括pmr主机访问管理器186和pmr高速缓存管理器188,两者均可以是专用电路、软件或两者的组合。pmr主机访问管理器186管理与主机120的通信。为了提高pmr的性能,存储器控制器102实现pmr高速缓存以在存储器控制器处本地存储pmr的子集以便更快访问。在一些实施方案中,pmr高速缓存在易失性存储器诸如 dram 106或sram 160中实现。下面将论述pmr高速缓存的更多细节。 pmr高速缓存管理器188管理pmr高速缓存,从非易失性存储器读取并写入非易失性存储器104。
34.图1c是bep电路112的一个实施方案的框图。图1c示出用于与fep 电路110通信(例如,与图1b的pcie接口164和166中的一者通信)的 pcie接口200。pcie接口200与两个noc 202和204通信。在一个实施方案中,两个noc可被组合成一个大的noc。每个noc(202/204)通过 xor引擎(224/254)、ecc引擎(226/256)连接到sram(230/260)、缓冲器(232/262)、处理器(220/250)和数据路径控制器(222/252)。
35.ecc引擎226/256用于执行纠错,如本领域所知。在本文中,ecc引擎226/256可被称为控制器ecc引擎。xor引擎224/254用于对数据执行 xor,使得可在存在编程错误的情况下以可恢复的方式组合和存储数据。在一个实施方案中,xor引擎224/254可恢复使用ecc引擎226/256无法解码的数据。
36.数据路径控制器222连接到存储器接口228,以用于经由四个信道与集成存储器组件通信。因此,顶部noc 202与用于与存储器封装通信的四个信道的存储器接口228相关联,并且底部noc 204与用于与存储器封装通信的四个附加信道的存储器接口258相关联。在一个实施方案中,每个存储器接口228/258都包括四个切换模式接口(tm接口)、四个缓冲器和四个调度器。对于每个信道,存在一个调度器、缓冲器和tm接口。处理器可以是本领域中已知的任何标准处理器。数据路径控制器222/252可以是处理器、fpga、微处理器或其他类型的控制器。xor引擎224/254和ecc 引擎226/256是专用的硬件电路,称为硬件加速器。在其他实施方案中, xor引擎224/254、ecc引擎226/256可在软件中实现。调度器、缓冲器和 tm接口是硬件电路。在其他实施方案中,存储器接口(用于与存储器管芯通信的电路)可以为与图1c所描绘不同的结构。另外,具有与图1b和图 1c不同的结构的控制器也可以与本文描述的技术一起使用。
37.图1d是存储器封装件104的一个实施方案的框图,该封装件包括连接到存储器总线(数据线和芯片使能线)318的多个存储器管芯300(存储器管芯0、存储器管芯1、存储器管芯2,

存储器管芯m)。存储器总线318 连接到切换模式接口270以用于与bep电路112的tm接口进行通信(参见例如图1c)。在一些实施方案中,存储器封装件可以包括连接到存储器总线318和tm接口270的小控制器。总之,存储器封装件104可具有8个或16个存储器管芯;然而,也可以实现其他数量的存储器管芯。本文描述的技术不限于任何特定数量的存储器管芯。在一些实施方案中,存储器封装件还可包括处理器、cpu设备,诸如risc-v cpu以及一定量的ram,以帮助实现下文所述的一些能力。本文描述的技术不限于任何特定数量的存储器
管芯。
38.图1e是与存储器控制器102一起使用的易失性存储器的一个实施方案的框图。在一个实施方案中,图1e的易失性存储器是dram 106。
39.在许多存储系统中,使用与一个或多个存储器管芯相关联的物理地址将非易失性存储器向内寻址到存储器系统。然而,主机将使用逻辑地址来寻址各种存储器位置。这使主机能够将数据分配给连续的逻辑地址,同时存储器系统空闲下来按希望的那样在一个或多个存储器管芯的位置间存储数据。为了实现这种系统,存储器控制器通常在由主机使用的逻辑地址与由存储器管芯使用的物理地址之间执行转换(“地址转换”)。一个示例性具体实施是维护识别逻辑地址与物理地址之间的当前转换的数据结构。这种数据结构的一个示例被称为l2p表。出于本文档的目的,l2p表是识别逻辑地址与物理地址之间的转换的数据结构。l2p表不需要是字面意义上的表格,并且数据结构的许多不同形式可以用作并且被称为l2p表,只要它们能够实现逻辑地址到物理地址的转换即可。出于本文档的目的,能够实现逻辑地址到物理地址的转换的一个或多个数据结构可以被称为一个 l2p表或多个l2p表。例如,数据结构可以被分解成块或其它单元。
40.在一个实施方案中,主机120可以使用逻辑块地址来寻址非易失性存储器。存储器控制器102可以使用其l2p表来在主机120使用的逻辑块地址与非易失性存储器104内使用的物理块地址之间转换。
41.通常,存储器控制器102使用dram 106来存储l2p表的全部或一部分。在一些示例中,存储器系统的存储器空间很大,使得dram 106无法保持l2p表以及dram 106用于存储的任何其它信息(除l2p表外)。在这种情况下,l2p表的整个集合被存储在非易失性存储器104中,并且l2p 表的子集被高速缓存在本地存储器(称为l2p高速缓存)中。图1e示出存储l2p高速缓存282的dram 106。
42.在一组实施方案中,存储系统100实现pmr。为了提高pmr的性能,存储器控制器102实现pmr高速缓存284以在存储器控制器处本地存储pmr的子集以便更快访问。在一些实施方案中,pmr高速缓存282驻留在dram 106中。在另一实施方案中,l2p表282和pmr高速缓存284 驻留在sram 160中。
43.图1f是分成高速缓存区段的pmr高速缓存284的一个实施方案的框图。例如,图1f示出n个高速缓存区段:高速缓存区段0、高速缓存区段 1、高速缓存区段2、

高速缓存区段n-1。每个高速缓存区段表示pmr的一部分并且存储pmr的最近访问数据。当存储器控制器102从pmr读取数据时,首先将读取的数据存储在pmr高速缓存284中,然后传输到主机。如果再次需要数据,则如果数据仍在pmr高速缓存中,则存储器控制器可以访问来自pmr高速缓存284的数据而不是从pmr本身读取。当存储器控制器102将数据写入pmr时,要写入的数据首先存储在pmr高速缓存284中,然后被传输到pmr。在一个实施方案中,每个高速缓存区段具有相同的大小,其被称为高速缓存区段大小。在另一实施方案中,高速缓存区段的子集的大小被设计为公共高速缓存区段大小,并且其它高速缓存区段可以具有不同的大小。
44.图2a是描绘可以实现本文所述技术的存储器管芯300的一个示例的框图。存储器管芯300(其可对应于图1c的存储器管芯300中的一个)包括非易失性存储器阵列302。存储器阵列302的全部或一部分用作pmr350。在一个实施方案中,pmr 350驻留在一个存储器管芯300上。在另一个实施方案中,pmr 350驻留在多个存储器管芯300上。存储器阵列302 的
阵列端子线包括组织成行的各种字线层,以及组织成列的各种位线层。然而,也可以实现其他取向。存储器管芯300包括行控制电路320,该行控制电路的输出端308连接到存储器阵列302的相应字线。行控制电路320 从系统控制逻辑电路360接收一组m行地址信号和一个或多个各种控制信号,并且通常可以包括诸如行解码器322、阵列端子驱动器324和块选择电路326等电路以用于读取操作和写入操作两者。行控制电路320还可以包括读取/写入电路。存储器管芯300还包括列控制电路310,该列控制电路包括感测放大器330,该列控制电路的输入端/输出端306连接到存储器阵列302的相应位线。尽管针对阵列302仅示出了单个块,但是存储器管芯可以包括可以被单独访问的多个阵列或多个平面。列控制电路系统310从系统控制逻辑部件360接收一组n个列地址信号和一个或多个各种控制信号,并且通常可以包括诸如列解码器312、阵列端子接收器或驱动器314、块选择电路系统316以及读/写电路系统和i/o多路复用器等电路。
45.系统控制逻辑部件360从主机120接收数据和命令,并且向控制器102 提供输出数据和状态。在一些实施方案中,系统控制逻辑部件360包括提供存储器操作的管芯级控制的状态机362。在一个实施方案中,状态机362 能够由软件编程。在其他实施方案中,状态机362不使用软件并且完全地在硬件(例如,电路)中实现。在另一个实施方案中,状态机362由微控制器或微处理器替换,其中微控制器或微处理器在存储器芯片之上或之外。系统控制逻辑部件360还可以包括功率控制模块364,该功率控制模块控制在存储器操作期间供应给存储器阵列302的行和列的功率和电压,并且可以包括用于产生调节电压的电荷泵和调节器电路。系统控制逻辑部件 360包括存储装置366,该存储装置可用于存储用于操作存储器阵列302的参数。
46.命令和数据经由存储器控制器接口368(也称为“通信接口”)在存储器控制器102与存储器管芯300之间传输。存储器控制器接口368是用于与存储器控制器102通信的电接口。存储器控制器接口368的示例包括切换模式接口和开放nand闪存接口(onfi)。也可以使用其他i/o接口。例如,存储器控制器接口368可实现切换模式接口,该切换模式接口连接到存储器控制器102的存储器接口228/258的切换模式接口。在一个实施方案中,存储器控制器接口368包括连接到存储器控制器102的一组输入和/或输出(i/o)引脚。
47.在一些实施方案中,存储器管芯300的所有元件(包括系统控制逻辑部件360)可以形成为单个管芯的一部分。在其他实施方案中,系统控制逻辑部件360中的一些或全部可以形成在不同的管芯上。
48.出于本文档的目的,短语“一个或多个控制电路”可包括存储器控制器102、状态机362、微控制器、微处理器、系统控制逻辑部件360的全部或一部分、行控制电路320、列控制电路310和/或用于控制非易失性存储器的其他类似电路中的任一者或组合。一个或多个控制电路可以仅包括硬件或者包括硬件和软件(包括固件)的组合。例如,由固件编程以执行本文描述的功能的控制器是控制电路的一个示例。控制电路可以包括处理器、fga、asic、集成电路,或其他类型的电路。
49.在一个实施方案中,存储器结构302包括非易失性存储器单元的三维存储器阵列,其中多个存储器级形成在单个衬底诸如晶圆上方。存储器结构可包括任何类型的非易失性存储器,该非易失性存储器在具有设置在硅 (或其他类型的)衬底上方的有源区域的存储器单元的一个或多个物理级中一体地形成。在一个示例中,非易失性存储器单元包括具有
电荷俘获层的垂直nand串。
50.在另一个实施方案中,存储器结构302包括非易失性存储器单元的二维存储器阵列。在一个示例中,非易失性存储器单元是利用浮动栅极的 nand闪存存储器单元。也可使用其他类型的存储器单元(例如,nor型闪存存储器)。
51.包括在存储器结构302中的存储器阵列架构或存储器单元的确切类型不限于上述示例。可以使用许多不同类型的存储器阵列架构或存储器技术来形成存储器阵列302。实现本文提出的要求保护的新实施方案不需要特定的非易失性存储器技术。用于存储器陈列(或其他类型的存储器结构)302 的存储器单元的合适技术的其他示例包括reram存储器(电阻式随机存取存储器)、磁阻式存储器(例如,mram、自旋转移矩mram、自旋轨道扭矩mram)、feram、相变存储器(例如,pcm)等。用于存储器单元架构的合适技术的示例包括二维阵列、三维阵列、交叉点阵列、堆叠二维阵列、竖直位线阵列等。
52.reram交叉点存储器的一个示例包括可逆电阻切换元件,其布置在由 x线和y线(例如,字线和位线)访问的交叉点阵列中。在另一个实施方案中,存储器单元可包括导电桥存储器元件。导电桥存储器元件也可称为可编程金属化单元。基于固体电解质内的离子的物理重新定位,导电桥存储器元件可用作状态改变元件。在一些情况下,导电桥存储器元件可包括两个固体金属电极,一个是相对惰性的(例如,钨),而另一个是电化学活性的(例如,银或铜),在两个电极之间具有固体电解质的薄膜。随着温度升高,离子的迁移率也增加,这导致导电桥存储器单元的编程阈值降低。因此,导电桥存储器元件可在整个温度范围内具有宽范围的编程阈值。
53.另一个示例是通过磁存储元件来存储数据的磁阻随机存取存储器 (mram)。这些元件由两个被薄绝缘层隔开的铁磁层形成,这两个铁磁层中的每一个铁磁层都可以保持磁化。这两个层中的一个层是被设置为特定极性的永磁体;另一个层的磁化可以被改变以匹配外磁场对存储存储器的磁化。存储器设备由此类存储器单元的网格构建。在用于编程的一个实施方案中,每个存储器单元位于一对写入线之间,该对写入线被布置成彼此成直角,与单元平行,一个在单元上方并且一个在单元下方。当电流通过它们时,产生感应磁场。下文将更详细地讨论基于mram的存储器实施方案。
54.相变存储器(pcm)利用了硫属化合物玻璃的独特性能。一个实施方案使用gete-sb2te3超晶格通过仅利激光脉冲(或来自另一个源的光脉冲)改变锗原子的配位状态来实现非热相变。因此,编程的剂量是激光脉冲。可以通过阻止存储器单元接收光来抑制存储器单元。在其他pcm实施方案中,存储器单元通过电流脉冲来编程。应当注意,在该文件中使用“脉冲”不需要矩形脉冲,但包括声音、电流、电压光或其他波的(连续或非连续)振动或脉冲串。各个可选择存储器单元或位内的这些存储器元件可以包括作为选择器的另外的串联元件,诸如双向阈值开关或金属绝缘体衬底。
55.本领域普通技术人员将认识到,本文所述的技术不限于单个特定存储器结构、存储器配置或材料构成,但涵盖了在如本文所述的以及如本领域普通技术人员所理解的技术实质与范围内的许多相关的存储器结构。
56.图2a的元件可被分组为两个部分,即存储器阵列302的结构和外围电路,该外围电路(在一些实施方案中)包括除存储器阵列302之外的所有结构即310、320和360。存储器电路的重要特性是其容量,该容量可以通过如下方式增加:增加留给存储器结构302作特定用
途的存储系统100的存储器管芯的面积;然而,这减小了可用于外围电路系统的存储器管芯的面积。这可以对这些外围元件造成相当严重的限制。例如,需要在可用区域内装配感测放大器电路,这可是对感测放大器设计架构的重大限制。相对于系统控制逻辑部件360,可用面积减小可能会限制可以在芯片上实现的可用功能。因此,在存储系统100的存储器管芯的设计中,需要对存储器结构302的专用面积量以及外围电路系统的专用面积量进行基本权衡。
57.存储器阵列302与外围电路系统通常有矛盾的另一个区域是在形成这些区域时所涉及的处理中,因为这些区域通常涉及不同的处理技术,导致在单个管芯上实施不同技术时需要进行权衡。例如,当存储器阵列302是 nand闪存时,这是nmos结构,而外围电路通常是基于cmos的。例如,诸如感测放大器电路、电荷泵、状态机中的逻辑元件和系统控制逻辑部件360中的其他周边电路等元件通常采用pmos设备。用于制造cmos 管芯的处理操作在许多方面将不同于针对nmos闪存nand存储器或其他存储器单元技术所优化的处理操作。
58.为了改进这些限制,下文所述的实施方案可将图2a的元件分离到单独形成的管芯上,然后将这些管芯接合在一起。更具体地讲,存储器阵列 302可以形成在一个管芯(存储器管芯)上,并且外围电路元件中的一些或全部(包括一个或多个控制电路)可以形成在单独的管芯(控制管芯) 上。例如,存储器管芯可以仅由存储器元件形成,诸如闪存nand存储器、mram存储器、pcm存储器、reram存储器或其他存储器类型的存储器单元阵列。然后可以将外围电路中的一些或全部电路(甚至包括诸如解码器和感测放大器等元件)移到单独的控制管芯上。这允许根据其技术单独地优化存储器管芯中的每个管芯。例如,nand存储器管芯可以针对基于nmos的存储器阵列结构进行优化,而无需担心现在已移到可以针对 cmos处理进行优化的独立外围电路系统管芯上的cmos元件。这为外围元件提供了更多空间,如果外围元件被限制于容纳了存储器单元阵列的相同管芯的边缘,则现在可结合可能不容易结合的附加能力。然后可在接合式多管芯存储器电路中将两个管芯接合在一起,其中一个管芯上的阵列连接到另一个存储器电路上的外围元件。例如,虽然下面将集中介绍一个存储器管芯和一个控制管芯的接合式存储器电路,但其他实施方案可使用更多管芯,诸如两个存储器管芯和一个外围电路管芯。
59.图2b示出图2a的另选布置,它可使用晶圆对晶圆接合来实现以提供接合管芯对。图2b描绘了集成存储器组件307的一个实施方案的功能框图。一个或多个集成存储器组件307可用于存储系统100中的存储器封装件104中。集成存储器组件307包括两种类型的半导体管芯(或更简洁地,“管芯”)。存储器管芯301包括存储器阵列302。存储器阵列302可包含非易失性存储器单元。存储器阵列302的全部或一部分用作pmr350。在一个实施方案中,pmr 350驻留在集成存储器组件307的存储器管芯301上的存储器阵列302中。在一个实施方案中,pmr 350驻留在一个存储器阵列内或一个存储器管芯内。在另一实施方案中,pmr 350驻留在多个存储器管芯300和/或多个集成存储器组件307上。
60.控制管芯311包括控制电路310、320和360(其细节在上文中讨论)。在一些实施方案中,控制管芯311被配置为连接到存储器管芯301 中的存储器阵列302。图2b示出了周边电路的示例,其包括形成于周边电路或控制管芯311中的控制电路,这些控制电路耦接到形成于存储器管芯 301中的存储器阵列302。通用部件以类似于图2a的方式标记。系统控制逻辑部件360、行控制电路320和列控制电路310位于控制管芯311中。在一些实施方案中,列控
制电路310的全部或一部分以及行控制电路320的全部或一部分位于存储器管芯301上。在一些实施方案中,系统控制逻辑部件360中的一些电路位于存储器管芯301上。
61.系统控制逻辑部件360、行控制电路320和列控制电路310可以由常规工艺(例如,cmos工艺)形成,使得添加更常见于存储器控制器102上的元件和功能诸如ecc可能需要很少的附加工艺步骤或不需要附加工艺步骤(即,用于制造控制器102的相同工艺步骤也可以用于制造系统控制逻辑部件360、行控制电路320和列控制电路310)。因此,尽管移走管芯 (诸如,存储器管芯301)中的此类电路可减少制造此类管芯所需的步骤数量,但向管芯(诸如,控制管芯311)添加此类电路可能不需要许多附加的工艺步骤。
62.图2b示出了控制管芯311上的包括感测放大器350的列控制电路 310,该列控制电路通过电路径306耦接到存储器管芯301上的存储器阵列 302。例如,电路径306可以在列解码器312、驱动电路314、块选择器316 与存储器阵列(或结构)302的位线之间提供电连接。电路径可以从控制管芯311中的列控制电路310延伸穿过控制管芯311上的焊盘,这些焊盘接合到存储器管芯301的对应焊盘,这些对应焊盘连接到存储器结构302的位线。存储器结构302的每条位线都可以在电路径306中具有对应的电路径,包括连接到列控制电路310的一对接合焊盘。类似地,行控制电路320 (包括行解码器322、阵列驱动器324和块选择器326)通过电路径308耦接到存储器阵列302。电路径308中的每条电路径可以对应于字线、虚设字线或选择栅极线。也可以在控制管芯311与存储器结构管芯301之间提供附加的电路径。
63.在一些实施方案中,集成存储器组件307中存在多于一个控制管芯 311和/或多于一个存储器管芯301。在一些实施方案中,集成存储器组件 307包括多个控制管芯311和多个存储器结构管芯301的堆叠。在一些实施方案中,每个控制管芯311附连(例如,接合)到存储器结构管芯301中的至少一个存储器结构管芯。
64.图3示出驻留在m个管芯(管芯0、管芯1、

管芯m-1)上的元块的示例。在图3的实施方案中,每个存储器管芯包括存储器单元的两个平面(平面0和平面1)。然而,在其它实施方案中,每个存储器管芯包括存储器单元的一个平面或存储器单元的多于两个平面。对于本文所述的技术,平面的确切数目没有限制。在图3的实施方案中,每个平面包括存储器单元的x+1个物理块(块0、块1、

块x)。在一个实施方案中,存储器控制器将来自每个平面的物理块分组到元块中。例如,图3示出包括来自每个平面的块4的元块420;因此,元块420包括m*2个物理块。在一个实施方案中,每个块包括连接到该块的全部nand串的一组字线。每个块还包括一组位线,使得一个位线连接到该块的nand串的子集(例如,一个位线连接到一个nand串、四个nand串、六个nand串、八个 nand串等,这取决于架构)。
65.在一个实施方案中,擦除单元是物理块。也就是说,同时擦除整个物理块。
66.在一个实施方案中,编程单元和读取单元是物理页面。也就是说,物理页面表示同时编程或读取的数据位的数目。在一个实施方案中,物理页面包括存储在相同物理块的连接到同一字线的所有存储器单元中的所有数据。在其它实施方案中,物理页面包括存储在相同物理块的连接到同一字线的所有存储器单元中的数据的子集。例如,物理页面可以包括存储在相同物理块的连接到相同字线的存储器单元的1/4(或其它部分)中的数据。在一个示例性具体实施中,物理页面等于4kb。在使用元块的一组实施方案中,存储器控制器可以将数据写入元页和从元页读取数据,使得元页包括来自元块的每个物理块的物理页面。
在其中元块420包括m*2个物理块的上述示例中,元页包括来自m*2个物理块的页面,并且因此存储 m*2*4kb的数据。如上文关于图1f所讨论的,pmr高速缓存284包括一组高速缓存区段。在一个实施方案中,每个高速缓存区段存储来自一个元页的数据。因此,每个高速缓存区段具有m*2*4kb的高速缓存区段大小。在其它实施方案中,高速缓存区段可以存储来自一个物理块、多个元页或其它量的一个页面的数据。
67.如上所述,存储系统100使用标准pcie命令来实现可由主机120访问 (例如,读取或写入)的pmr。在pcie术语中,命令包括在事务层分组 (“tlp”)中,该事务层分组是指pcie通信机构(事务层、数据链路层和物理层)的事务层。利用读取操作,包括两个分组:从主机120到存储系统100的询问后者以执行读取操作的一个tlp(例如,读取请求 tlp),以及利用数据从存储系统100返回到主机120的一个tlp(例如,完成tlp)。图4a中示出从主机120到存储系统100的询问后者以执行读取操作的tlp(读取请求tlp)。图4b中示出利用数据从存储系统100返回到主机120的tlp(完成tlp)。
68.图4a中示出的读取请求tlp由主机120(例如,主机处理器122或主机的存储器控制器芯片组或主机的另一部件)生成,其有时被称为根联合体。读取请求tlp的字段是:
69.·
预留标记为r的字段。
70.·
fmt字段与类型字段一起指示这是存储器读取请求。
71.·
对于存储器读取请求,tc字段、ep字段和attr字段被设置为零。
72.·
td位指示在tlp数据上是否存在额外的crc。
73.·
长度字段指示要读取的数据的双字(32位字)的数目。
74.·
请求者id字段识别该分组的发送者。当设置为零时,发送者是根联合体。
75.·
标签字段具有跟踪号的功能:当存储系统响应时,它必须将该值复制到完成tlp。这允许请求者/主机将完成答案与其请求匹配。
76.·
第1be字段(第1双字字节启用)允许选择第一数据双字中的四个字节中的哪一个是有效的。(例如,设置为0xf指示所有四个字节均有效)。
77.·
地址字段是从pmr中读取的地址。
78.当存储设备100(例如,存储器控制器102)接收读取请求tlp时,他以完成tlp做出响应。也就是说,存储设备100从pmr 350读取数据分块并将结果返回到主机120。结果包括图4b中示出的完成tlp。完成tlp 的字段为:
79.·
预留标记为r的字段;
80.·
fmt字段与类型字段一起指示这是带有数据的完成分组。
81.·
长度字段指示正传输的数据的双字的数目。
82.·
字节计数字段字段指示剩余的传输字节数,包括当前分组中的那些。
83.·
低位地址字段是地址的七个最低有效位,从这里读取该tlp中的第一字节。
84.·
完成者id识别该tlp的发送者。
85.·
请求者id识别该tlp的接收者。
86.·
状态字段指示完成是否成功。
87.·
除了分组源自带有pci-x的网桥时,bcm字段总是零;
88.·
该数据字段是读取并返回的数据。该数据是一组双字。图4b仅示出一个双字,但可以返回多于一个双字。
89.在一个实施方案中,主机120发送对256字节数据的读取请求tlp,该数据是64个双字,因此读取请求tlp的长度字段被设置为64。在另一个实施方案中,主机120发送对512字节数据的读取请求tlp,该数据是 128个双字,因此读取请求tlp的长度字段被设置为128。在其它实施方案中,主机可以发送对不同量的数据的读取请求。读取请求tlp所请求的数据的量在本文中被称为tlp数据单元。
90.如上所述,在一个实施方案中,pmr高速缓存284的每个高速缓存区段具有m*2*4kb的高速缓存区段大小(其中m是管芯的数目)。在元块跨越十六个管芯的示例性具体实施中,高速缓存区段大小是(16*2*4kb) 128kb,其显著大于在tlp数据单元中所请求的数据的量。在另一实施方案中,高速缓存区段大小为64kb。因此,在一些实施方案中,tlp数据单元小于高速缓存区段大小而使得多个tlp数据单元配合在一个高速缓存区段内。
91.由于读取请求tlp所请求的数据单元的大小不同于高速缓存区段的大小,因此主机通常不知道pmr高速缓存如何被结构化和操作,并且使用 pmr的主机侧应用程序不是针对如何管理非易失性存储器而优化的,主机侧应用程序可能低效地访问pmr(例如,不利用存储系统中的并行性,从而降低性能)。例如,在pmr中的大型缓冲器上迭代并在缓冲器内的每个双字上执行转换的循环将创建针对每个双字的单独存储器访问,从而使 pcie链路溢流微小的请求。由于对页面(物理页面或元页)的每个请求可以触发对非易失性存储器104的一个或多个操作,因此需要高速缓存层将小请求对准到闪存约束。类似地,在页面边界处的迭代可能导致负载效率低下。由于pcie tlp大小显著低于页面大小,因此以串行方式读取或写入可能导致队列猝发,并且当新页面在用于合并读写的高速缓存机制换入换出时,以串行方式读取或写入可能会导致pcie层中的队列猝发和溢出。
92.图5a示出多个高速缓存区段,并且提供低效地访问pmr(例如,不利用存储系统中的并行性,从而降低性能)的主机的示例(即,不使用本文提出的技术)。图5a示出四个高速缓存区段:高速缓存区段0、高速缓存区段1、高速缓存区段2和高速缓存区段3。仅出于示例目的示出四个高速缓存区段。pmr高速缓存可能具有多于四个高速缓存区段。高速缓存区段的确切数目取决于具体实施。在图5a的示例中,每个高速缓存区段存储 128个tlp数据单元的等效物。对于此示例,图5a基于主机请求tlp数据单元的次序来标记高速缓存区段中的数据。主机所请求的第一tlp数据单元被标记为dtlp0,主机所请求的第二tlp数据单元被标记为dtlp1,主机所请求的第三tlp数据单元被标记为dtlp2,...主机所请求的第五百一十二tlp数据单元被标记为dtlp511。主机请求tlp数据单元的次序由箭头470、472、474、476、478、480和482按次序图示。图5b按照读取请求tlp由主机120发出的次序示出这些读取请求,其请求图5a中示出的tlp数据单元。例如,tlp0请求dtlp0,tlp1请求dtlp1,tlp2请求 dtlp2,等等。
93.当存储系统100接收到tlp0(读取请求tlp)时,pmr主机访问管理器186将tlp0中的地址转换为lba(逻辑块地址)并将该lba发送到存储器处理器156(参见图1b),以确定非易失性存储器中的适当物理地址。控制器120将从非易失性存储器读取整个元页,并且将该元页作为 dtlp0、dtlp1、

、dtlp127存储在高速缓存区段0中。当存储高速缓存区段0中的数据时,则响应于tlp0,在完成tlp中返回(从高速缓存区段 0而不是从非易失性存储器)dtlp0。在pmr高速缓存管理器188完成将 dtlp0、dtlp1、

、dtlp127存储到高速缓存区段0之前,存储系统100 很可能已经接收到附加tlp(例如,tlp1、tlp2、tlp3,且可能更多)。在完
成将dtlp0、dtlp1、

、dtlp127存储到高速缓存区段0之前,这些附加tlp不会得到响应。主机120将继续发送tlp。存在可能待决的tlp数目的限制。当接收到tlp128时,该tlp的数据(即 dtlp128)将尚未在pmr高速缓存中;因此,存储系统100将需要从非易失性存储器读取数据并且将其加载到pmr高速缓存中。然而,如上所述,存储系统将不仅读取tlp128所请求的数据。相反,存储系统将读取数据的元页并用该元页填充缓存区段1,从而使dtlp128-dtlp255存储在高速缓存区段1中。因此,在tlp128中具体体现的读取请求将必须等待,同时加载高速缓存区段1。tlp256和tlp384将经历相同的延迟,因为它们等待要加载到pmr高速缓存中的下一个元页。因此,每次tlp穿过元页边界或高速缓存区段边界,在发送带有请求数据的完成tlp时存在暂停或延迟。此暂停减慢了读取过程性能。
94.为了克服读取过程性能的这种降低,提议存储系统100与主机共享 pmr 350和/或pmr高速缓存284的结构的细节。通过感知pmr 350和/或 pmr高速缓存284的结构的共享细节,主机120可以利用存储系统100内的并行性的方式布置和发送读取请求tlp。pmr 350和/或pmr高速缓存 284的细节的一个示例是高速缓存区段大小。如果主机120感知到高速缓存区段大小,则它可以比上文关于图5a所描述更有效的方式发送读取请求,例如,主机120可以利用内置到存储系统100中的并行性。下面关于图6 至图12b提供更多细节。
95.图6是描述用于读取数据的过程的一个实施方案的流程图。在步骤 502中,实现可由主机访问的存储区域(例如pmr)和存储区域的高速缓存(例如pmr高速缓存)的非易失性存储系统100与主机120共享存储区域和/或高速缓存的结构的细节。例如,存储系统100将高速缓存区段大小通知给主机120。注意,尽管存储区域的一个示例是pmr,但是其它类型的存储区域也可以与本文所述的技术一起使用。在步骤504中,通过感知存储区域和/或高速缓存的结构的共享细节,主机120以利用非易失性存储系统100内的并行性的方式布置并发出读取数据的请求(例如读取请求 tlp)。在步骤506中,由于主机对读取数据的请求的布置,利用存储系统 100内的并行性从存储系统100读取数据。例如,在步骤504中,主机120 可以在发送读取请求tlp的整体之前发送对不同高速缓存区段的读取请求 tlp。在一个实施方案中,当主机需要读取大量数据时,主机将最初仅对每个高速缓存区段发出单个tlp。一旦将数据的全部(或一部分)加载到高速缓存区段中,主机120将发出附加读取请求tlp。使用图5a作为示例,主机120将最初发送tlp0、tlp128、tlp 256和tlp 384到存储系统 100。在接收到tlp0,tlp128、tlp 256和tlp 384时,存储系统100将读取高速缓存区段0、高速缓存区段1、高速缓存区段2和高速缓存区段3 的数据并将数据(dtlp1.dtlp1,

dtlp511)加载到相应的高速缓存区段中。响应于tlp0,使存储系统100读取包括dtlp0、dtlp1、

、 dtlp127的完整元页,并将数据加载到高速缓存区段0中。响应于 tlp128,使存储系统100读取包括dtlp128、dtlp129、

、dtlp255的完整元页,并将数据加载到高速缓存区段1中。响应于tlp256,使存储系统100读取包括dtlp256、dtlp257、

、dtlp383的完整元页,并将数据加载到高速缓存区段2中。响应于tlp384,使存储系统100读取包括 dtlp384、dtlp385、

、dtlp511的完整元页,并将数据加载到高速缓存区段3中。在一个实施方案中,由存储系统100并行(同时)执行读取和加载高速缓存区段0、高速缓存区段1、高速缓存区段2和高速缓存区段3 的数据的过程。在另一个实施方案中,串行执行读取和加载高速缓存区段 0、高速缓存区段1、高速缓存区段2和高速缓存区段3的数据的过程。即使串行执行,高速缓存区段1的数据也可能在存储系统100接收到tlp129 之前被加载到高速缓存区段1中。
96.图7是描述用于读取数据的过程的一个实施方案的流程图。图7的过程是图6的过程的一个示例性具体实施。在一个实施方案中,图7的过程由主机120执行。在步骤550中,主机120访问非易失性存储系统100的高速缓存区段大小的指示,该非易失性存储系统实现存储区域(例如,pmr350)和存储区域的高速缓存(例如pmr高速缓存284)。高速缓存包括多个高速缓存区段,所述多个高速缓存区段的大小各自被设计为具有高速缓存区段大小。在一个示例中,存储系统100在存储系统100通电和/或初始化时将高速缓存区段大小发送到主机120。在另一个实施方案中,存储系统100周期性地或在不同于初始化的时间将高速缓存区段大小发送到主机 120。在另一个实施方案中,存储系统100响应于来自主机120的请求将高速缓存区段大小发送到主机120。在另一个实施方案中,主机120确定高速缓存区段大小应该是什么并且将该高速缓存区段大小通知给存储系统100。在另一个实施方案中,存储系统100将高速缓存区段大小的指示存储在主机120的已知位置中以供读取。也可以实现其它变型。
97.在步骤552中,基于高速缓存区段大小的指示,主机120确定所述多个高速缓存区段中将由存储系统100用于读取一组数据的的一组高速缓存区段。例如,如果主机120需要读取图5a中标记为dtlp256-dtlp390的数据,则主机120确定存储系统100将使用高速缓存区段2和高速缓存区段3来读取请求数据。通过知道高速缓存区段大小,主机120可以确定哪些高速缓存区段对应于哪些页面或数据的元页。在一个实施方案中,存储系统100还可以将高速缓存区段与pmr的地址范围之间的对应关系通知给主机120。在另一个实施方案中,不同的高速缓存区段可以具有不同的大小,且存储系统100将哪些高速缓存区段具有哪种大小通知给主机120。
98.在步骤554中,主机120发送对与来自该组数据的数据对应的该组高速缓存区段中的每个高速缓存区段的初始读取请求。例如,参见图5a,在步骤554中,主机120最初向存储系统100发送tlp0、tlp128、tlp 256 和tlp 384。在上面的示例中,主机120仅需要dtlp256-dtlp390,则主机120将在步骤554中向存储系统100发送tlp256和tlp 384。
99.在该示例中,主机120最初将在步骤554中向存储系统100发送 tlp0、tlp128、tlp256和tlp384,存储系统将通过读取dtlp0-dtlp511 的数据、将该数据加载到高速缓存区段0至高速缓存区段3中、以及向主机120发送四个完成tlp(一个完成tlp响应于tlp0、一个完成tlp响应于tlp128、一个完成tlp响应于tlp256、以及一个完成tlp响应于tlp384)来对这四个tlp做出响应。响应于tlp0的完成tlp将包括 dtlp0。响应于tlp128的完成tlp将包括dtlp128。响应于tlp256的完成tlp将包括dtlp256。响应于tlp384的完成tlp将包括dtlp384。
100.在步骤556中,在发送对该组高速缓存区段中的每个高速缓存区段的初始读取请求之后,主机120发送对与该组数据对应的高速缓存区段中的附加数据的附加读取请求。读取请求中的每个是针对数据单元(例如,tlp 数据单元)。在一些实施方案中,tlp数据单元小于高速缓存区段大小而使得多个tlp数据单元配合在一个高速缓存区段内。
101.图8至图11是一起描述用于读取数据的过程的一个实施方案的流程图。图8至图11的过程是图6的过程的一个示例性具体实施。图8至图11 的过程也是图7的过程的一个示例性具体实施。图8、图10和图11描述存储系统100的操作。图9描述主机120的操作。
102.在图8的步骤602中,将存储系统100通电和/或复位。在步骤604 中,将存储系统
100初始化。在步骤606中,存储系统与主机120共享 pmr高速缓存284的高速缓存区段大小。可以使用上述方法中的任一种来执行高速缓存区段大小的这种共享。在步骤608中,使用实现的pmr 350 操作存储系统。在一个实施方案中,pmr 350被实现为允许直接存储器级访问,而pmr 350被映射到主机存储器124,使得可以执行直接指针类型读取或写入。图9的步骤704至步骤722、图10的过程和图11的过程都作为图8的步骤608的一部分来执行。
103.图9描述在读取pmr 350时主机120的操作。图9的步骤702包括主机120接收pmr高速缓存284的高速缓存区段大小。可以使用上述方法中的任一种来执行高速缓存区段大小的这种共享。如上所述,主机120还可以接收pmr 350和pmr高速缓存284的其它细节。如上所述,主机120可以接收一个高速缓存区段大小或多个高速缓存区段大小。响应于图8的步骤606,执行图9的步骤720。
104.在图9的步骤704中,主机120确定需要从pmr 350读取一组数据,并确定这些数据在pmr中的地址。在一个实施方案中,那些地址在主机存储器地址空间中。在步骤706中,基于高速缓存区段大小,主机120确定将由存储系统100用于读取该组数据的该组高速缓存区段。步骤706类似于步骤552。
105.在步骤708中,主机120生成并发送对将由存储系统用于读取该组数据的每个缓存区段的第一读取请求tlp(读取请求tlp是读取请求的示例)。如上所述,读取请求tlp请求读取tlp数据单元,该tlp数据单元小于高速缓存区段大小而使得多个tlp数据单元配合在一个高速缓存区段内。在以上关于图5a的示例中,主机最初将tlp0、tlp128、tlp 256和 tlp 384发送到存储系统100。然而,只要主机发送对将由存储系统用于读取该组数据的每个缓存段的至少一个tlp,就可以发送不同的tlp。例如,在步骤708中,主机120还可以发送tlp0-tlp127中的任一个、 tlp128-tlp255中的任一个、tlp256-tlp383中的任一个和tlp384
‑ꢀ
tlp511中的任何一个。在一个示例中,主机120在步骤708中发送 tlp4、tlp135、tlp300和tlp414。在这些示例中的每个中,主机发送对将由存储系统用于读取该组数据的该组高速缓存区段中的每个高速缓存区段的一个读取请求。在其它实施方案中,主机发送对将由存储系统用于读取该组数据的该组高速缓存区段中的每个高速缓存区段的多于一个读取请求。
106.在步骤710中,主机120监视响应于由主机120在步骤708中发送的第一读取请求tlp而发送到主机120的完成tlp的接收。在一个实施方案中,主机120确定是否针对正在操作的当前高速缓存区段而接收完成 tlp。如果不是,主机120继续等待。如果主机120已经接收到当前高速缓存区段的完成tlp,则主机120将在步骤714至步骤716中发送当前高速缓存区段的附加读取请求tlp。例如,如果主机需要读取dtlp0-dtlp511 (步骤704)并且确定存储系统100将使用高速缓存区段0至高速缓存区段 3来读取该数据(步骤706),则在步骤708中,主机120将仅向存储系统 100发送tlp0、tlp128、tlp 256和tlp 384。在主机120发送对该组高速缓存区段中的每个高速缓存区段的一个读取请求tlp之后,主机120将发送附加读取请求(例如,tlp1-tlp127、tlp129-tlp255、tlp257
‑ꢀ
tlp383和tlp385-tlp511)。在一个实施方案中,附加读取请求tlp按顺序发送。因此,首先针对高速缓存区段0发送附加读取请求tlp。因此,针对此读取过程执行第一时间步骤714,“当前高速缓存区段”是高速缓存区段0,并且主机120确定其是否已经接收到tlp0的完成tlp(或在步骤708中发出对高速缓存区段0的哪一第一读取请求)。
107.在步骤714中,主机120生成并发送对当前高速缓存区段的下一个 tlp数据单元的附加读取请求tlp。针对此读取过程执行第一时间步骤 714,步骤714包括生成和发送tlp1。在步骤716中,主机确定针对当前高速缓存区段是否存在更多tlp数据单元要请求。如果发送的最后一个 tlp是tlp1,则答案为是,并且过程循环回到步骤714,因此可以发送 tlp2。以此类推,直到对当前高速缓存区段的所有读取请求tlp都被发送 (例如,tlp0-tlp127都被发送)。当已经发送对当前高速缓存区段的所有读取请求tlp时,则该过程在步骤718处继续,此时主机120确定是否存在更多需要从其读取的高速缓存区段。如果不是,则读取过程完成,并且将读取的数据存储在主机存储器124中(步骤722)。如果存在更多需要从其读取的高速缓存区段,则主机120将继续从下一个高速缓存区段开始读取附加数据(步骤720),并且过程循环回到步骤714以开始从新的当前高速缓存区段读取附加数据。例如,在从高速缓存区段0读取所有数据之后,主机120将继续请求从高速缓存区段1读取数据(因此,高速缓存区段1变为新的当前高速缓存区段),并且过程循环回到步骤714以开始从高速缓存区段1读取附加数据。步骤714至步骤722包括在接收到相应高速缓存区段的至少一个完成消息之后,响应于对每个高速缓存区段的初始读取请求的相应读请求,发送对该组高速缓存区段的单独高速缓存区段的附加读取请求。
108.在以上示例中,主机从高速缓存区段读取数据以从高速缓存区段0读取到高速缓存区段3。然而,主机120可以其它次序读取数据。
109.在上述实施方案中,主机120不开始发送对高速缓存区段的附加读取请求tlp,直到主机120接收到该高速缓存区段的至少一个完成tlp。这是因为当主机120接收到该高速缓存区段的至少一个完成tlp时,主机 120便知道该高速缓存区段的所有数据已被加载到pmr高速缓存中。在另一个实施方案中,不是等待直到主机120接收到该高速缓存区段的至少一个完成tlp,主机120可以实现定时器,该定时器确定从在步骤708中发送对每个高速缓存区段的第一读取请求tlp以来已经过预定时间段的时间。当已经过该预定时间段时,可以发送步骤714的附加读取请求tlp。在一个示例性具体实施中,预定时间段可以是从非易失性存储器读取所需的时间、将读取的数据加载到pmr高速缓存所需的时间以及传送完成tlp 所需的时间的总和。也可以使用其它预定时间段。例如,步骤714可以在发送对每个高速缓存区段的初始读取请求(tlp0、tlp128、tlp 256和 tlp 384)后等待预定时间段之后,开始针对高速缓存区段0和dtlp1执行。另选地,步骤714可以在发送对每个高速缓存区段0的初始读取请求 tlp0后等待预定时间段之后开始针对高速缓存区段0和dtlp1执行。
110.图10描述存储系统100的操作。图10的过程被执行多次,以便存储系统从pmr读取该组数据并将该组数据加载到该组高速缓存区段中。在步骤830中,存储系统100从主机100接收到读取请求tlp。响应于图9的步骤708,可以执行步骤830。如上所述,在一个实施方案中,图9的步骤 708可以包括发送多于一个读取请求tlp。例如,在一个实施方案中,步骤 708可以包括发送读取请求tlp0、tlp128、tlp 256和tlp 384。在这种情况下,存储系统可以同时执行图10的过程四次。也就是说,针对读取请求tlp0、tlp128、tlp 256和tlp 384中的每个通过开始同时执行的图10 的过程的四个实例来执行步骤830。出于本文档的目的,术语“同时”用于意指在至少一个共同时刻期间发生两个或更多个事件/过程/任务,即使它们在不同的时间开始和停止。例如,存储系统100可以从pmr读取第一组数据并将该第一组数据加载到高速缓存区段0中,同时存储系统100从pmr 读取第二组数据并将该第二组数据加
载到第二高速缓存区段1中,即使第一组数据的读取稍微早于第二组数据的读取开始,因为从第二组数据的读取开始直到第一组数据加载到高速缓存区段0完成,两个过程都在运行。
111.在步骤832中,存储系统100确定在步骤830中接收到的读取请求所请求的数据是否已经存储在pmr高速缓存284中。如果是,则在步骤834 中,将在步骤830中接收到的读取请求所请求的数据从pmr高速缓存284 传输到主机120作为完成tlp的一部分。如果在步骤830中接收到的读取请求所请求的数据尚未存储在pmr高速缓存284中,则(在步骤836中) 存储系统100确定在步骤830中接收到的读取请求是否是对pmr高速缓存 284中的相关高速缓存区段的第一读取请求。如果在步骤836中考虑的tlp 是对pmr 284中的相关高速缓存区段的第一读取请求,则存储系统尚未开始填充相关高速缓存区段的过程;因此,在步骤838中,存储系统将从 pmr 350读取整个高速缓存区段的数据(包括考虑在tlp中请求的数据) 并将该数据加载到适当的高速缓存区段中。在一个实施方案中,步骤838 包括存储系统读取数据的元页并且将该元页存储在高速缓存区段中。在一个实施方案中,读取元页包括存储器控制器从多个存储器管芯中的每个读取数据的物理页面并合并数据的物理页面以形成对应于数据的高速缓存区段的元页。在将步骤838中读取的数据加载到高速缓存区段中之后,在完成tlp中将正在处理的当前读取请求tlp中所请求的数据传输到主机120 作为步骤840的一部分。
112.如果在步骤836中,存储系统100确定在步骤836中考虑的tlp不是对pmr 284中的相关高速缓存区段的第一读取请求,则存储系统已经开始填充相关高速缓存区段的过程,并且不需要开始从非易失性存储器读取的另一操作。相反,存储系统100将等待直到将在步骤838中读取的数据加载到适当的高速缓存区段中,并且然后在完成tlp中将正在处理的当前读取请求tlp中所请求的数据传输到主机120作为步骤840的一部分。
113.使用图5a的元件考虑以下示例。如果通过发送tlp128执行步骤 836,则tlp128是对pmr高速缓存284中的相关高速缓存区段的第一读取请求;因此,过程继续到步骤838以从pmr 350读取包括dtlp128
‑ꢀ
dtlp255的元页并且将该数据存储在高速缓存区段1中。如果tlp129正在执行步骤836,则存储系统可以确定tlp129不是对pmr高速缓存284中的相关高速缓存区段的第一读取请求,因为已经接收到tlp128;因此,该过程继续到步骤840,使得存储系统可以等待直到高速缓存区段1被完全加载,以在完成tlp中向主机120发送dtlp129。
114.总之,图10展示当存储系统100接收到对高速缓存区段的第一读取请求时,它从非易失性存储器中的pmr读取高速缓存区段的数据,将数据加载到高速缓存区段中,并将请求数据返回给主机120。当存储系统100接收到附加读取请求之后,在对高速缓存区段的初始/第一读取请求之后,存储系统响应于附加读取请求通过从适当的高速缓存区段读取附加数据并将读取的附加数据发送到主机120,将附加数据返回给主机120。
115.图11是描述用于从非易失性存储器中的pmr 350读取数据的元页并将该元页的数据存储到pmr高速缓存284的高速缓存区段中的过程的一个实施方案的流程图。因此,图11的过程是图10的步骤838的示例性具体实施。在图11的步骤902中,pmr管理器184将来自读取请求tlp的 pmr地址转换为包括读取请求tlp中所请求的数据的所有数据的一组lba。在步骤904,将那些lba提供给存储器处理器156,该存储器处理器实现将lba转换为非易失性存储器中的物理地址的闪存转换层。在另一实施方案中,pmr 350还可以指向非易失性存储器中的物理地址而不是逻辑地址;例如,数据最初可以使用顺序模式(诸如zns)来写入,并
且因此不需要pmr级的单独逻辑寻址,因为数据在存储器管芯内总是按顺序和并行的。在步骤906中,存储器处理器156(或处理器220或另一处理器)将构建一个或多个读取命令以同时从一个或多个存储器管芯上的一个或多个平面读取元页的数据。如果存储器控制器102与非易失性存储器104之间的总线(参见用于与图1c中示出的存储器分组通信的通道)繁忙并且不可用于传输附加数据(步骤908),则存储器控制器102将等待直到总线可用。当存储器控制器102与非易失性存储器104之间的总线可用于传输附加数据时,则在步骤910中,适当的bep112将该一个或多个读取命令发送到一个或多个存储器管芯,使得同时从包括pmr的一个或多个管芯上的一个或多个平面读取元页的数据。在步骤912中,存储器控制器102接收从一个或多个管芯上的一个或多个平面感测的元页的数据。在步骤914中,对数据进行解码以去除错误校正信息(例如,额外的奇偶校验位)并恢复原始数据。在步骤916中,将对元页读取的数据加载到适当的高速缓存区段中。
116.图12a示出多个高速缓存区段,并且提供根据图8至图11的过程有效读取pmr的示例。图12a示出四个高速缓存区段:高速缓存区段0、高速缓存区段1、高速缓存区段2和高速缓存区段3。仅出于示例目的示出四个高速缓存区段。pmr高速缓存可能具有多于四个高速缓存区段。高速缓存区段的确切数目取决于具体实施。在图12a的示例中,每个高速缓存区段存储128个tlp数据单元的等效物。注意,用于高速缓存区段中的数据的参考标签与图5a的参考标签进行匹配,但是在图12a的示例中,数据的参考标签不是基于主机请求tlp数据单元的次序。主机120根据图8至图11的过程请求tlp数据单元的次序以箭头950、952、954、956、958、960、962、964、966和968示出的次序以图表形式显示。对于该示例,图12b以由主机120发出读取请求tlp的次序来示出这些读取请求。
117.在图12b中示出的tlp中的任一者之前,存储系统100将高速缓存区段大小通知给主机120(参见图9的步骤702),主机120确定需要从pmr350读取该组数据dtlp0-dtlp511(参见图9的步骤704),且主机120使用高速缓存区段大小来确定将由存储系统100用于读取该组数据的一组高速缓存区段(高速缓存区段0、高速缓存区段1、高速缓存区段2和高速缓存区段3)(参见图9的步骤706)。
118.主机120首先发送对将由存储系统用于读取该组数据的该组高速缓存区段中的每个高速缓存区段的至少一个读取请求tlp(参见图9的步骤708)。例如,图12b示出由主机120发送的前四个读取请求tlp是tlp0、tlp128、tlp256和tlp384。因此,读取请求tlp的该初始集包括将由存储系统用于读取该组数据的该组高速缓存区段中的每个高速缓存区段的恰好一个tlp。响应于读取请求tlp的初始集(tlp0、tlp128、tlp256和tlp384),存储系统100从pmr350读取该组数据的至少一部分(例如,该组数据的全部或该组数据的子集),并且响应于对该组高速缓存区段中的每个高速缓存区段的至少一个读取请求,将该组数据的该部分加载到该组高速缓存区段中。例如,响应于接收到tlp0、tlp128、tlp256和tlp384,存储系统100同时执行图10的过程四次(tlp0、tlp128、tlp256和tlp384中的每个执行一次),执行图10的过程的每个实例导致读取元页并将该元页加载到相应的高速缓存区段中(参见图10的步骤838)。例如,响应于接收到tlp0,存储系统100确定dtlp0不在pmr高速缓存284中(步骤832),并且tlp0是对pmr高速缓存区段0的第一读取请求(参见步骤836);因此,存储系统100从pmr250(在非易失性存储器中)读取dtlp0-dtlp127并将dtlp0-dtlp127加载到高速缓存区段0中(参见步骤838)。响应于接收到tlp128,存储系统100确定dtlp128
不在pmr高速缓存284中(步骤832),并且tlp128是对 pmr高速缓存区段1的第一读取请求(参见步骤836);因此,存储系统 100从pmr 250(在非易失性存储器中)读取dtlp128-dtlp255,并且将 dtlp128-dtlp255加载到高速缓存区段0中(参见步骤838)。响应于接收到tlp256,存储系统100确定dtlp256不在pmr高速缓存284中(步骤 832),并且tlp256是对pmr高速缓存区段2的第一读取请求(参见步骤 836);因此,存储系统100从pmr 250(在非易失性存储器中)读取 dtlp256-dtlp383并将dtlp256-dtlp383加载到高速缓存区段2中(参见步骤838)。响应于接收到tlp384,存储系统100确定dtlp384不在pmr高速缓存284中(步骤832),并且tlp384是对pmr高速缓存区段 3的第一读取请求(参见步骤836);因此,存储系统100从pmr 250(在非易失性存储器中)读取dtlp384-dtlp511,并且将dtlp384-dtlp511加载到高速缓存区段3中(参见步骤838)。
119.注意,在其它示例性具体实施中,读取请求tlp的初始集可以是除 tlp0、tlp128、tlp256和tlp384之外的tlp。主机需要为发送对每个相关高速缓存区段的至少一个tlp。因此,读取请求tlp的初始集可以包括例如tlp5、tlp129、tlp383和tlp440,因为该集合包括对每个相关缓存区段的至少一个tlp。
120.存储系统100响应于对该组高速缓存区段中的每个高速缓存区段的至少一个读取请求中的一个或多个,使用完成tlp将初始数据发送回主机 120。在将相应的元页加载到pmr高速缓存284的相应高速缓存区段之后,从pmr高速缓存284发送该初始数据。例如,响应于tlp0,在将 dtlp0-dtlp127加载到高速缓存区段0中之后,存储系统将dtlp0传输到主机120;响应于tlp128,在将dtlp128-dtlp255加载到高速缓存区段1 中之后,存储系统将dtlp128传输到主机120;响应于tlp256,在将 dtlp256-dtlp383加载到高速缓存区段2中之后,存储系统将dtlp256传输到主机120;并且在响应于tlp384,在dtlp384-dtlp511加载到高速缓存区段3中之后,存储系统将dtlp384传输到主机120(参见图10的步骤 840)。
121.在主机120发送对该组高速缓存区段中的每个高速缓存区段的至少一个读取请求之后,主机120发送对该组数据的附加数据的附加读取请求 tlp。在一个实施方案中,当自发送对每个高速缓存区段的第一读取请求 tlp以来经过预定时间段时,发送附加读取请求tlp。在一个实施方案中,响应于对应的完成tlp发送附加读取请求tlp(参见图9的步骤712 和步骤714)。例如,响应于接收到tlp0的完成tlp,主机120将发送 tlp1-tlp127,响应于接收到tlp128的完成tlp,主机120将发送 tlp129-tlp255,响应于接收到tlp256的完成tlp,主机120将发送 tlp257-tlp383,并且响应于接收到tlp384的完成tlp,主机120将发送 tlp385-tlp511(参见图12b)。
122.响应于附加读取请求tlp,存储系统100从相应的高速缓存区段读取附加数据(例如,dtlp1-dtlp127、dtlp129-dtlp255、dtlp257-dtlp383 和dtlp385-dtlp511)并且将这些附加数据传输到主机120(参见图10的步骤834,当针对接收到的每个读取请求tlp执行图10的过程时执行多次)。
123.已经公开了一种非易失性存储系统,其共享存储区域和/或高速缓存的结构的细节(例如,高速缓存区段大小)。通过感知存储区域和/或高速缓存的结构的共享细节,主机以利用非易失性存储系统内的并行性的方式布置并发出读取数据的请求。例如,主机可以最初每个高速缓存区段出一个读取请求,以使非易失性存储系统加载高速缓存。随后,对非易失性存储系统进行附加读取请求,其中数据已经加载(或开始加载)在高速缓存中,从而
提高性能。
124.一个实施方案包括一种方法,该方法包括:非易失性存储系统将高速缓存区段大小通知给连接到该存储系统的主机,该非易失性存储系统实现持久性存储区域(“pmr”)和包括多个高速缓存区段的pmr高速缓存,所述多个高速缓存区段各自具有高速缓存区段大小;该主机确定需要从该 pmr读取一组数据;该主机使用该高速缓存区段大小来确定将由该存储系统用于读取该组数据的一组高速缓存区段;该主机发送对将由该存储系统用于读取该组数据的该组高速缓存区段中的每个高速缓存区段的至少一个读取请求;响应于对该组高速缓存区段中的每个高速缓存区段的该至少一个读取请求,该存储系统从该pmr读取该组数据的至少一部分并且将该组数据的至少所述部分加载到该组所述高速缓存区段中;在该主机发送对该组高速缓存区段中的每个高速缓存区段的至少一个读取请求之后,该主机发送对该组数据中的附加数据的附加读取请求;以及该存储系统响应于这些附加读取请求通过从该组高速缓存区段读取该附加数据并将读取的附加数据传输到该主机,将该附加数据传输到该主机。
125.一个实施方案包括一种存储处理器可读代码的非暂态处理器可读存储介质,该处理器可读代码在处理器上执行时使该处理器执行包括以下步骤的方法:访问实现存储区域和该存储区域的高速缓存的非易失性存储系统的高速缓存区段大小的指示,该高速缓存包括多个高速缓存区段,所述多个高速缓存区段的大小各自被设定为该高速缓存区段大小;基于该高速缓存区段大小的指示,确定所述多个高速缓存区段中将由该存储系统用于读取一组数据的一组高速缓存区段;发送对与来自该组数据的数据对应的该组高速缓存区段中的每个高速缓存区段的初始读取请求;以及在发送对该组高速缓存区段中的每个高速缓存区段的所述初始读取请求之后,发送对与该组数据对应的高速缓存区段中的附加数据的附加读取请求,这些读取请求中的每个读取请求针对一个数据单元,该数据单元小于该高速缓存区段大小而使得多个数据单元配合在一个高速缓存区段内。
126.一个实施方案包括一种装置,该装置包括非易失性存储器,该非易失性存储器被配置为在该非易失性存储器中实现可由主机访问的持久性存储区域;持久性存储区域高速缓存,该持久性存储区域高速缓存包括各自为高速缓存区段大小的多个高速缓存区段;和处理器,该处理器连接到该非易失性存储器和该持久性存储区域高速缓存。该处理器被配置为与主机通信。该处理器被配置为将高速缓存区段大小传输到主机。该处理器被进一步配置为从该主机接收包括对所述多个高速缓存区段中的一组高速缓存区段的每个高速缓存区段的一个读取请求的读取请求的初始集,针对读取请求的初始集中的每个读取请求从持久性存储区域读取数据,将读取的数据存储到该组高速缓存区段中的高速缓存区段中,在接收到读取请求的初始集之后,发送带有读取请求的初始集中的每个读取请求的请求数据的完成响应,在接收到读取请求的初始集之后,响应于读取请求的初始集,接收对已经存储在该组高速缓存区段中的数据的附加读取请求,并且发送带有附加读请求中的每个附加读取请求的请求数据的完成响应,使得发送的请求数据是从该组高速缓存区段中的高速缓存区段中的一个或多个获得的。
127.出于本文件的目的,说明书中提到“实施方案”、“一个实施方案”、“一些实施方案”或“另一个实施方案”可用于描述不同的实施方案或相同的实施方案。
128.出于本文件的目的,连接可为直接连接或间接连接(例如,经由一个或多个其它部
件)。在一些情况下,当元件被提及连接或耦接到另一个元件时,该元件可直接连接至另一个元件,或者经由居间元件间接连接至另一个元件。当元件被提及直接连接至另一个元件时,则在该元件与另一个元件之间没有居间元件。如果两个设备是直接连接或间接连接的,则两个设备是“通信”的,使得它们能够在它们之间进行电子信号通信。
129.出于本文档的目的,术语“基于”可理解为“至少部分地基于”。
130.出于本文档的目的,在没有附加上下文的情况下,诸如“第一”对象、“第二”对象和“第三”对象的数字术语的使用可能不意味着对象的排序,而是可用于识别目的以识别不同的对象。
131.出于本文档的目的,对象的术语“组”可指一个或多个对象的“组”。
132.出于说明和描述的目的,已提供了上述详细描述。其并非旨在详尽的或旨在限制本发明所公开的精确形式。根据以上教导内容,很多修改和变型都是可能的。选择所述实施方案以便最好地解释所建议的技术的原理及其实际应用,从而使本领域的其他技术人员能够在各种实施方案中和适合于设想的具体使用的各种修改中最好地利用它。本发明的范围旨在由所附权利要求书限定。

技术特征:


1.一种方法,包括:非易失性存储系统将高速缓存区段大小通知给连接到所述存储系统的主机,所述非易失性存储系统实现持久性存储区域(“pmr”)和包括多个高速缓存区段的pmr高速缓存,所述多个高速缓存区段各自具有所述高速缓存区段大小;所述主机确定需要从所述pmr读取一组数据;所述主机使用所述高速缓存区段大小来确定将由所述存储系统用于读取所述一组数据的一组所述高速缓存区段;所述主机发送对将由所述存储系统用于读取所述一组数据的所述一组所述高速缓存区段中的每个高速缓存区段的至少一个读取请求;响应于对所述一组高速缓存区段中的每个高速缓存区段的所述至少一个读取请求,所述存储系统从所述pmr读取所述一组数据的至少一部分并且将所述一组数据的至少所述部分加载到所述一组所述高速缓存区段中;在所述主机发送对所述一组高速缓存区段中的每个高速缓存区段的至少一个读取请求之后,所述主机发送对所述一组数据中的附加数据的附加读取请求;并且所述存储系统响应于所述附加读取请求通过以下方式将所述附加数据传输到所述主机:从所述一组高速缓存区段读取所述附加数据并将读取的所述附加数据传输到所述主机。2.根据权利要求1所述的方法,还包括:所述存储系统响应于对所述一组高速缓存区段中的每个高速缓存区段的所述至少一个读取请求中的一个或多个读取请求而向所述主机发送回初始数据,所述初始数据来自所述pmr高速缓存,所述主机响应于接收到所述初始数据的全部或一部分而发送所述附加读取请求。3.根据权利要求1所述的方法,其中:所述多个高速缓存区段包括第一高速缓存区段和第二高速缓存区段;对将由所述存储系统用于读取所述一组数据的所述一组所述高速缓存区段中的每个高速缓存区段的所述至少一个读取请求包括对来自所述第一高速缓存区段的第一数据单元的第一读取请求和对来自所述第二高速缓存区段的第二数据单元的第二读取请求;所述存储系统从所述pmr读取所述一组数据的至少一部分并将所述一组数据的所述部分加载到所述一组所述高速缓存区段中包括:所述存储系统从所述pmr读取第一组数据,将所述第一组数据加载到所述第一高速缓存区段中,将所述第一数据单元从所述第一高速缓存区段传输到所述主机,从所述pmr读取第二组数据,将所述第二组数据加载到所述第二高速缓存区段中,并将所述第二数据单元从所述第二高速缓存区段传输到所述主机;所述第一组数据包括所述第一数据单元,所述第二组数据包括所述第二数据单元,所述第一组数据和所述第二组数据具有所述高速缓存区段大小,所述数据单元小于所述高速缓存区段大小而使得多个数据单元配合在一个高速缓存区段内;并且所述附加读取请求包括对来自所述第一高速缓存区段的附加数据的附加读取请求和对来自所述第二高速缓存区段的附加数据的附加读取请求,所述主机响应于所述存储系统传输来自所述第一高速缓存区段的所述第一数据单元而发送对来自所述第一高速缓存区段的附加数据的所述附加读取请求。
4.根据权利要求3所述的方法,其中:所述存储系统从所述pmr读取所述第一组数据并且将所述第一组数据加载到所述第一高速缓存区段中与所述存储系统从所述pmr读取所述第二组数据并将所述第二组数据加载到所述第二高速缓存区段中同时执行。5.根据权利要求1所述的方法,还包括:在所述主机发送对所述一组所述高速缓存区段中的每个高速缓存区段的至少一个读取请求之后所述主机等待预定时间段,所述主机在等待所述预定时间段之后发送所述附加读取请求。6.根据权利要求1所述的方法,其中所述存储系统从所述pmr读取所述一组数据并将所述一组数据加载到所述一组所述高速缓存区段中,并且所述存储系统响应于所述附加读取请求通过从所述一组所述高速缓存区段读取所述附加数据并且将读取的所述附加数据传输到所述主机而将所述附加数据传输到所述主机包括:所述存储系统从所述主机接收tlp;所述存储系统确定所述tlp请求的数据单元是否在所述pmr高速缓存中;响应于确定所述数据单元在所述pmr高速缓存中,将所述数据单元传输到所述主机;响应于确定所述数据单元不在所述pmr高速缓存中,确定所述tlp是否为对与所述tlp中的地址对应的pmr高速缓存区段的第一读取请求;以及响应于确定所述tlp是对与所述tlp中的所述地址对应的所述pmr高速缓存区段的第一读取请求,从所述pmr读取pmr数据,将所述pmr数据加载到所述pmr高速缓存中,并且将所述数据单元从与所述tlp中的所述地址对应的所述pmr高速缓存区段传输到所述主机。7.根据权利要求1所述的方法,其中:所述存储系统包括连接到易失性存储器和非易失性存储器的存储器控制器,所述pmr驻留在所述非易失性存储器中,所述pmr高速缓存驻留在所述易失性存储器中,所述非易失性存储器包括多个存储器管芯;所述多个高速缓存区段包括第一高速缓存区段和第二高速缓存区段;对将由所述存储系统用于读取所述一组数据的所述一组所述高速缓存区段中的每个高速缓存区段的所述至少一个读取请求包括对第一数据单元的第一读取请求和对第二数据单元的第二读取请求;并且所述存储系统从所述pmr读取所述一组数据的至少一部分并将所述一组数据的所述部分加载到所述一组所述高速缓存区段中包括所述存储器控制器从所述多个存储器管芯中的每个存储器管芯读取数据的页面,聚合数据的所述页面以形成数据的高速缓存区段并且将数据的所述高速缓存区段存储在所述第一高速缓存区段中,数据的所述高速缓存区段包括多个数据单元,所述多个数据单元包括所述第一数据单元,所述数据单元小于所述高速缓存区段大小而使得多个数据单元配合在一个高速缓存区段内。8.根据权利要求1所述的方法,其中:所述主机通过周边部件互连高速(“pcie”)连接而连接到所述存储系统;并且对所述一组所述高速缓存区段中的每个高速缓存区段的所述至少一个读取请求中的每个读取请求是请求数据单元的pcie事务层分组(“tlp”),所述数据单元小于所述高速缓存区段大小而使得多个数据单元配合在一个高速缓存区段内。
9.一种存储处理器可读代码的非暂态处理器可读存储介质,所述处理器可读代码当在处理器上执行时使所述处理器执行包括以下的方法:访问实现存储区域和所述存储区域的高速缓存的非易失性存储系统的高速缓存区段大小的指示,所述高速缓存包括多个高速缓存区段,所述多个高速缓存区段的大小各自被设定为所述高速缓存区段大小;基于所述高速缓存区段大小的所述指示,确定所述多个高速缓存区段中将由所述存储系统用于读取一组数据的一组高速缓存区段;发送对与来自所述一组数据的数据对应的所述一组高速缓存区段中的每个高速缓存区段的初始读取请求;以及在发送对所述一组高速缓存区段中的每个高速缓存区段的所述初始读取请求之后,发送对与所述一组数据对应的所述高速缓存区段中的附加数据的附加读取请求,所述读取请求中的每个读取请求针对一个数据单元,所述数据单元小于所述高速缓存区段大小而使得多个数据单元配合在一个高速缓存区段内。10.根据权利要求9所述的非暂态处理器可读存储介质,其中:所述存储区域是持久性存储区域(“pmr”);并且所述高速缓存是pmr高速缓存。11.根据权利要求9所述的非暂态处理器可读存储介质,其中:所述多个高速缓存区段包括第一高速缓存区段和第二高速缓存区段;对每个高速缓存区段的所述初始读取请求包括对来自所述第一高速缓存区段的第一数据单元的第一读取请求和对来自所述第二高速缓存区段的第二数据单元的第二读取请求;并且所述附加读取请求包括对来自所述第一高速缓存区段的附加数据的附加读取请求和对来自所述第二高速缓存区段的附加数据的附加读取请求,响应于从所述非易失性存储系统接收到所述第一数据单元而将对来自所述第一高速缓存区段的附加数据的附加读取请求发送到所述非易失性存储系统。12.根据权利要求9所述的非暂态处理器可读存储介质,其中:所述多个高速缓存区段包括第一高速缓存区段和第二高速缓存区段;对每个高速缓存区段的所述初始读取请求包括对来自所述第一高速缓存区段的第一数据单元的第一读取请求和对来自所述第二高速缓存区段的第二数据单元的第二读取请求;并且所述附加读取请求包括对来自所述第一高速缓存区段的附加数据的附加读取请求和对来自所述第二高速缓存区段的附加数据的附加读取请求,所述发送对来自所述第一高速缓存区段的附加数据的附加读取请求在发送对所述第一高速缓存区段的所述初始读取请求之后等待预定时间段之后执行。13.根据权利要求9所述的非暂态处理器可读存储介质,其中:所述发送附加读取请求包括在接收到所述相应高速缓存区段的至少一个完成消息之后,响应于对所述相应高速缓存区段的所述初始读取请求的相应读取请求,发送对所述一组高速缓存区段中的单独高速缓存区段的附加读取请求。14.根据权利要求9所述的非暂态处理器可读存储介质,其中:
所述一组数据存储在所述存储区域中一组地址处;所述确定所述多个高速缓存区段中将由所述存储系统用于读取所述一组数据的所述一组高速缓存区段包括确定所述多个高速缓存区段的哪一子组对应于所述一组地址。15.根据权利要求9所述的非暂态处理器可读存储介质,其中:所述访问所述高速缓存区段大小的所述指示包括从所述非易失性存储系统接收所述高速缓存区段大小的所述指示。16.根据权利要求9所述的非暂态处理器可读存储介质,其中:所述存储区域是持久性存储区域(“pmr”);所述高速缓存是pmr高速缓存;所述访问、确定、发送对每个高速缓存区段的所述初始读取请求和所述发送附加读取请求由通过周边部件互连高速(“pcie”)连接而连接到所述非易失性存储系统的主机计算机执行;并且每个高速缓存区段的所述初始读取请求的每个读取请求是pcie事务层分组(“tlp”)。17.一种装置,包括:非易失性存储器,所述非易失性存储器被配置为在所述非易失性存储器中实现可由主机访问的持久性存储区域;持久性存储区域高速缓存,所述持久性存储区域高速缓存包括各自为高速缓存区段大小的多个高速缓存区段;和处理器,所述处理器连接到所述非易失性存储器和所述持久性存储区域高速缓存,所述处理器被配置为与主机通信,所述处理器被配置为将所述高速缓存区段大小传输到所述主机,所述处理器被进一步配置为:从所述主机接收包括对所述多个高速缓存区段中的一组高速缓存区段中每个高速缓存区段的一个读取请求的读取请求的初始集,针对读取请求的所述初始集中的每个读取请求,从所述持久性存储区域读取数据,将读取的所述数据存储到所述一组高速缓存区段中的所述高速缓存区段中,发送带有读取请求的所述初始集中的所述读取请求中的每个读取请求的请求数据的完成响应,在接收到读取请求的所述初始集之后,响应于读取请求的所述初始集,接收对已经存储在所述一组高速缓存区段中的数据的附加读取请求,以及发送带有所述附加读取请求中的每个附加读取请求的请求数据的完成响应,使得发送的所述请求数据是从所述一组高速缓存区段中的高速缓存区段中的一个或多个高速缓存区段获得的。18.根据权利要求17所述的装置,还包括:易失性存储器,所述持久性存储区域高速缓存驻留在所述易失性存储器中,所述处理器包括存储器控制器,所述存储器控制器连接到所述易失性存储器,每个读取请求针对一个数据请求单元,所述数据请求单元小于所述高速缓存区段大小而使得多个数据请求单元配合在一个高速缓存区段内。19.根据权利要求17所述的装置,还包括:在所述非易失性存储器和所述处理器外部的计算机,所述计算机实现所述主机,所述
处理器包括用于与所述主机通信的主机接口,所述计算机连接到所述主机接口,所述主机被配置为:从所述处理器接收所述高速缓存区段大小;基于所述高速缓存区段大小和一组主机数据的地址,识别所述多个高速缓存区段中的所述一组高速缓存区段,因为所述一组高速缓存区段将由所述处理器用于读取所述一组主机数据,所述一组主机数据包括读取请求的所述初始集中每个读取请求的所述请求数据和所述附加读取请求中的每个附加读取请求的所述请求数据,发送读取请求的所述初始集;等待直到接收到读取请求的所述初始集中的一个或多个读取请求的一个或多个完成响应;以及响应于接收到所述一个或多个完成响应,发送对已经存储在所述一组高速缓存区段中的数据的所述附加读取请求。20.根据权利要求17所述的装置,其中:每个读取请求针对一个数据请求单元,所述数据请求单元小于所述高速缓存区段大小,使得多个数据请求单元配合在一个高速缓存区段内;所述一组高速缓存区段包括第一高速缓存区段、第二高速缓存区段和第三高速缓存区段;所述接收读取请求的所述初始集包括接收对所述第一高速缓存区段的一个读取请求,接收对所述第二高速缓存区段的一个读取请求以及接收对所述第三高速缓存区段的一个读取请求;并且所述接收对已经存储在所述一组高速缓存区段中的数据的附加读取请求包括接收对所述第一高速缓存区段的多个读取请求,然后接收对所述第二高速缓存区段的多个读取请求,然后接收对所述第三高速缓存区段的多个读取请求。

技术总结


本发明题为“具有优化读取的非易失性存储器”。一种实现能够由主机访问(例如,经由PCIe连接)的存储区域(例如,持久性存储区域)和该存储区域的高速缓存的非易失性存储系统共享存储区域和/或高速缓存的结构的细节(例如,高速缓存区段大小)。通过感知存储区域和/或高速缓存的结构的共享细节,主机以利用非易失性存储系统内的并行性的方式布置并发出从持久性存储区域读取数据的请求。例如,主机可以最初每个高速缓存区段发出一个读取请求,以使非易失性存储系统加载高速缓存。随后,对非易失性存储系统进行附加读取请求,其中数据已经加载(或开始加载)在高速缓存中,从而提高性能。从而提高性能。从而提高性能。


技术研发人员:

J

受保护的技术使用者:

西部数据技术公司

技术研发日:

2022.01.29

技术公布日:

2022/11/3

本文发布于:2024-09-23 01:37:25,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/7375.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:区段   高速缓存   存储器   所述
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议