CN114450673B - Iod ssd的独立集数据通道 - Google Patents
Iod ssd的独立集数据通道 Download PDFInfo
- Publication number
- CN114450673B CN114450673B CN202080067546.2A CN202080067546A CN114450673B CN 114450673 B CN114450673 B CN 114450673B CN 202080067546 A CN202080067546 A CN 202080067546A CN 114450673 B CN114450673 B CN 114450673B
- Authority
- CN
- China
- Prior art keywords
- regions
- controller
- ipc
- data channel
- volatile memory
- 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.)
- Expired - Fee Related
Links
- 230000015654 memory Effects 0.000 claims abstract description 116
- 238000000034 method Methods 0.000 claims abstract description 88
- 238000004891 communication Methods 0.000 claims description 19
- 238000012545 processing Methods 0.000 claims description 18
- 239000007787 solid Substances 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 description 51
- 238000003860 storage Methods 0.000 description 50
- 238000002955 isolation Methods 0.000 description 22
- 238000013507 mapping Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 13
- 230000000875 corresponding effect Effects 0.000 description 12
- 230000000694 effects Effects 0.000 description 5
- 238000005192 partition Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 4
- 238000000638 solvent extraction Methods 0.000 description 4
- 239000000872 buffer Substances 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013403 standard screening design Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000001276 controlling effect Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000012005 ligant binding assay Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 241000370092 Actiniopteris Species 0.000 description 1
- 241000246142 Chamaecytisus Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000002939 deleterious effect Effects 0.000 description 1
- CWHBCTLVWOCMPQ-UHFFFAOYSA-L disodium;2-[(3,5-diiodo-4-oxidophenyl)-(3,5-diiodo-4-oxocyclohexa-2,5-dien-1-ylidene)methyl]benzoate Chemical compound [Na+].[Na+].[O-]C(=O)C1=CC=CC=C1C(C=1C=C(I)C([O-])=C(I)C=1)=C1C=C(I)C(=O)C(I)=C1 CWHBCTLVWOCMPQ-UHFFFAOYSA-L 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本文中所描述的各种实施方案涉及用于针对非易失性存储器的多个区域中的每一者启用数据通道来传递消息的系统及方法。所述多个区域中的每一者包含多个裸片。经由所述数据通道传递针对所述多个区域中的每一者的所述消息。
Description
相关申请案的交叉参考
本申请案主张2019年7月26日提出申请的美国申请案第16/523,925号的优先权,所述美国申请案的内容以全文引用的方式并入本文中。
技术领域
本公开一般来说一般来说涉及用于提供输入/输出(I/O)确定性(IOD)固态驱动器(SSD)的系统及方法。
背景技术
SSD包含若干个非易失性存储器装置,例如但不限于,NAND快闪存储器装置,NAND快闪存储器装置由控制器控制使得NAND快闪存储器装置行为上像单个驱动器。NAND快闪存储器装置经受起源于主机的I/O操作,例如读取及写入存储于NAND快闪存储器装置中的数据,所述I/O操作可起源于在一或多个主机上运行的多个相异应用程序。NAND快闪存储器装置可仅在任一时间处理单个I/O操作,且将多个NAND快闪装置连接到存储器控制器的存储器总线/信道可仅在任一时间传送针对单个存储器装置的数据。传统上,尝试从SSD读取数据或向SSD写入数据的主机应用程序因此通常由于必须与其它应用程序共享对存储器装置的存取而经历不同等级的等待时间。此外,由于不同应用程序的I/O活动通常不同步或相关,因此单个应用程序所经历的等待时间是不可预测的。在其中一主机驻存于具有大量SSD及运行多个相异应用程序来存储及检索数据的主机的数据中心内的实例中,所述主机在请求SSD针对一应用程序执行I/O操作时由于其它主机及应用程序的同时且无关联的活动而无法控制SSD的不可预测的等待时间。在其中主机对SSD运行时间敏感应用程序(例如,实时数据收集、实时数据分配等)的情境中,主机体验可进一步恶化。
在尝试限制对另一应用程序所经历的I/O等待时间具有有害效应的一个应用程序的效应的过程中,非易失性存储器存储装置的NVM ExpressTM v1.4基本协议规范引入了“非易失性存储器(NVM)集”的概念,其中将非易失性存储装置划分成若干可单独寻址的区域。这些区域是存储器的逻辑上及/或物理上单独的区,这使得单独主机应用程序能够排他地存取存储器的单独区而不必彼此共享存储器资源。然而,仍需要使SSD中的NAND快闪存储器控制器具有针对主机应用程序以确定且可预测的I/O等待时间(也称为I/O确定性,IOD)处置多个相异主机应用程序对多个NVM集的I/O的能力及关于对SSD的I/O操作改进主机应用程序的体验。
发明内容
在某些方面中,SSD装置的本发明实施方案针对于用于提供独立数据通道来支持SSD装置的IOD特征的系统及方法。
附图说明
图1A展示根据一些实施方案的实例SSD的框图;
图1B是根据一些实施方案支持低等待时间操作的SSD架构的框图;
图2是根据一些实施方案包含多个独立数据通道的SSD架构的框图;
图3是图解说明根据一些实施方案的过程间流程的框图;
图4是图解说明根据一些实施方案用于启用一或多个数据通道的实例过程的流程图;及
图5是图解说明根据一些实施方案操作地耦合到两个处理器的IPC的长度的框图。
具体实施方式
在其它方面当中,IOD驱动器是指实施本文中所描述的IOD特征的SSD。IOD驱动器的物理空间物理上分割成各种区域或存储空间的隔离区域(“岛”),称为NVM集。物理分割可由IOD驱动器的NAND快闪存储器装置的物理块及/或裸片执行。每一NVM集是逻辑上独立于IOD驱动器的其它NVM集的逻辑来管理。即,IOD驱动器的每一物理分割均映射到IOD驱动器的逻辑分割。IOD驱动器可独立地管理对每一NVM集执行的逻辑且为每一NVM集分配适当存储空间及带宽。相对于NVM集的I/O操作被保障以来自所述NVM集的独立于其它NVM集的特定带宽水平,因此允许主机可预测等待时间,因为主机知晓受保障带宽。主机可因此在预期受保障带宽的情况下使用IOD驱动器执行存储及计算功能,所述预期可总是由于IOD驱动器的特性而得以满足。可在2017年11月1日提出申请的标题为“支持低等待时间操作的SSD架构(SSD ARCHITECTURE SUPPORTING LOW LATENCY OPERATION)”的美国专利公开案第US2019/0042150号中找到IOD驱动器的实例架构,所述美国专利公开案特此以全文引用的方式并入。
在常规的非IOD SSD的所谓的“嘈杂邻居”情境中,第一应用程序的I/O操作可影响第二应用程序所经历的操作及等待时间。利用IOD驱动器,即使由主机执行的第一应用程序与对第一NVM集而非第二NVM集的I/O操作有关,仍可因IOD驱动器的物理上不恰当的分割而导致“嘈杂邻居”现象。另外,尽管IOD驱动器是物理上及逻辑上分割成多个NVM集,但由于执行且控制逻辑功能的控制器在NVM集之间对计算及/或硬件资源的共享,所述控制器可由于IOD驱动器的一个NVM集的I/O操作而导致IOD驱动器的另一NVM集的I/O操作的延迟。如此,逻辑上管理IOD驱动器的多个NVM集的控制器可变成所述多个NVM集的I/O操作的瓶颈,因此尽管有分配给IOD驱动器中的NVM集的非易失性存储装置的物理分割仍导致“嘈杂邻居”现象。
用于执行IOD驱动器的I/O操作的控制器内的过程流称为I/O路径。在一些情形中,I/O路径包含多个控制流且通常在多个处理器及/或控制器上在多个过程之间通信。I/O路径包含I/O路径的一端上的主机、I/O路径的另一端上的NAND快闪存储器装置,及主机与NAND快闪存储器装置之间的多个过程及/或处理器。过程间通信(IPC)可帮助过程及/或处理器之间的通信,所述IPC中的每一者对应于彼此通信的两个过程/处理器之间的通信链路。可在过程之间在IPC上传送多个消息类型。针对IOD驱动器,在将数据写入到IOD驱动器的NAND快闪存储器装置或从所述NAND快闪存储器装置读取数据之前,IPC在I/O路径中载运每一NVM集的消息。虽然处理器及过程的数目可在控制器上保持不变,但IPC基础设施及传统固件的调度会导致在IOD驱动器的多个NVM集之间发生冲突及资源瓶颈。
在非IOD驱动器中使用的传统IPC方案不适合对IOD驱动器的实施方案,因为那些IPC方案缺乏避免在同一类型的IPC消息之间发生资源竞争及颠倒的优先级的能力,其中所述IPC消息属于多个NVM集。在其中处理器当前正处置集0的IPC S0-A且所述处理器在所述处理器正处置IPC S0-A时接收到来自集1的IPC S1-A并在接收到S1-A之后接收到来自集2的IPC S2-A的实例中,根据传统IPC方案,S0-A、S1-A及S2-A将在所述处理器上以所述次序被处置。S0-A、S1-A及S2-A属于同一消息类型且由同一处理器处置。如果NAND快闪存储器装置正忙于集0或集0的控制器资源不可用,那么处理S0-A将花费更长时间。S0-A的长处理时间可使S1-A及S2-A的处理进一步延迟,这是因为S0-A、S1-A及S2-A是以所述次序顺序地处理。因此,传统IPC方案由于集0上的业务状况而增加集1及集2的IPC消息上的等待时间,因此导致“嘈杂邻居”现象。此问题因控制器内用于I/O操作的大量过程及控制路径而加剧。
本文中所公开的实施例涉及用于提供在具有IOD特征的驱动器的控制器上实施的低等待时间IPC方案的系统、设备、方法及非暂时性计算机可读媒体。所述IPC方案经实施以连接过程、处理器、硬件、控制器、主机及所述驱动器的NAND快闪存储器装置。固件经配置以建立且管理IOD驱动器的每一NVM集的独立数据通道。每一独立数据通道包含一或多个IPC及相关联处理程序。
在一些实施方案中,IOD驱动器可例如通过避免在IOD驱动器的不同NVM集当中发生I/O冲突及开销而为SSD提供可预测的等待时间。在一些实施例中,IOD驱动器可确保一个NVM集上的业务分布及负载不影响同一驱动器(例如,同一SSD)内的其它NVM集上的等待时间。即,IOD驱动器经配置以通过在控制器中隔离每一经配置NVM集而防止“嘈杂邻居”现象。即,除形成经隔离区域(为了隔离每一NVM集的NAND操作)的物理NAND分区外,SSD固件还可经配置以通过能够为SSD的每一NVM集提供独立数据通道而确保控制器内的I/O处置针对每一IOD NVM集是隔离开的。
图1A是根据一些实施方案的SSD 100的结构的框图。如图1A中所展示,控制器120通过主机接口110与主机101通信。主机101可为一或多个一或多个主机装置或主机应用程序。主机101可包含任何适合装置,例如但不限于,计算装置、存储器具等。在一些实例中,主机101可为由用户操作的用户装置。在一些实施方案中,主机101及SSD 100驻存于数据中心(未展示)中。数据中心包含多个平台,所述多个平台中的每一者可支持多个主机(例如但不限于,主机101)及SSD装置(例如但不限于,SSD 100)。
SSD 100包含易失性存储器130及非易失性存储器140。易失性存储器装置130及非易失性存储器140与控制器120通信。
在一些实施方案中,非易失性存储器140可为非易失性存储器裸片阵列,如所展示。非易失性存储器140包含可布置于连接到控制器120的一或多个存储器通信信道中的非易失性存储器裸片142a到142d、144a到144d、146a到146d及148a到148d。举例来说,裸片142a到d可配置于一个存储器信道上,裸片144a到d可配置于另一存储器信道上,以此类推。虽然图1A中展示16个非易失性存储器裸片142a到142d、144a到144d、146a到146d及148a到148d,但SSD 100的非易失性存储器140可包含布置于与控制器120通信的一或多个信道中的任何适合数目个非易失性存储器裸片。
在一个实施方案中,非易失性存储器裸片142a到142d、144a到144d、146a到146d及148a到148d包含NAND快闪存储器。NAND快闪存储器包含快闪存储器。举例来说,每一NAND快闪存储器装置包含一或多个个别NAND快闪裸片,所述一或多个个别NAND快闪裸片是能够在无电力的情况下保留数据的非易失性存储器装置。非易失性存储器裸片142a到142d、144a到144d、146a到146d及148a到148d中的每一者具有一或多个平面。每一平面具有多个块,且每一块具有多个页。数据可以连续次序写入到块中的页,一旦所有页均被写入便不再写入数据直到块被擦除,在块被擦除后可即刻再次以连续次序向页写入新数据,以此类推。
在一些实施方案中,易失性存储器装置130包含易失性存储器DRAM缓冲器。易失性存储器装置130可为单一类型的单个装置或能够为SSD 100提供易失性存储器缓冲器的不同类型的多个装置。
控制器120可组合非易失性存储器裸片142a到142d、144a到144d、146a到146d及148a到148d中的原始数据存储,使得那些非易失性存储器裸片142a到142d、144a到144d、146a到146d及148a到148d像单个存储装置一样起作用。控制器120可包含微控制器、缓冲器、错误校正功能性、快闪翻译层(FTL)、快闪接口层(FTL)、快闪控制器、快闪管理层软件、地址映射表及用于实施此类功能的固件,如本文中进一步描述。在一些布置中,软件/固件可存储于非易失性存储器140中或任何其它适合计算机可读存储媒体中。
控制器120包含用于执行本文中所描述的功能以及其它功能的适合处理及存储器能力。举例来说,控制器120包含用于实施SSD 100的各种功能的一或多个处理器(例如,中央处理单元(CPU))。如所描述,控制器120管理非易失性存储器裸片142a到142d、144a到144d、146a到146d及148a到148d的各种特征,包含但不限于,I/O处置、读取、写入、擦除、监视、日志记录、错误处置、垃圾收集、损耗均衡、逻辑到物理(L2P)地址映射等。
图1B是根据一些实施方案支持低等待时间操作的SSD架构150的框图。参考图1A及1B,SSD架构150可由SSD的非易失性存储器(例如但不限于,非易失性存储器140)配置而成。如图1B中所展示,SSD架构150包含跨越8个信道(CH0到CH7)布置的32个非易失性存储器裸片的阵列,其中有4个非易失性存储器裸片耦合到每一信道。换句话说,SSD架构150包含NAND快闪存储器装置阵列。非易失性存储器裸片中的每一者具有一或多个平面。所属领域的普通技术人员可了解,任何适合数目个裸片可操作地耦合到任何适合数目个信道。SSD架构150中的非易失性存储器裸片中的每一者可为非易失性存储器裸片142a到142d、144a到144d、146a到146d及148a到148d中的一者。信道CH0到CH7可为物理信道或逻辑信道。
SSD架构150包含通过从同一信道及邻近信道(由相同阴影表示)上的非易失性存储器裸片中的每一者选择所有物理块而形成的超级块,而不是通过从跨越所有8个信道的非易失性存储器裸片中的每一者选择物理块而形成的超级块。这些超级块中的每一者在SSD内形成隔离区域(例如,与其它区域隔离的区域),所述隔离区域不受对SSD的其它区域的信道I/O活动影响,这是因为每一区域是经由不与其它区域共享的信道来存取。每一隔离区域可称为NVM集。因此,在SSD架构150中,隔离区域102包含两个信道CH0及CH1上的非易失性存储器裸片的物理块。隔离区域104包含两个信道CH2及CH3上的非易失性存储器裸片的物理块。隔离区域106包含两个信道CH4及CH5上的非易失性存储器裸片的物理块。隔离区域108包含两个信道CH6及CH7上的非易失性存储器裸片的物理块。
通过仅使用来自固定数目个单独信道中的非易失性存储器裸片的物理块配置超级块以形成隔离区域(例如图1B中所展示),可最小化或完全避免在非易失性存储器裸片及信道控制器处发生I/O操作冲突,从而允许SSD的较低等待时间、较大可预测性及较一致I/O性能。如所展示,隔离区域102到108中的每一者包含耦合到多个(例如,两个)信道的非易失性存储器裸片,因此每隔离区域利用多个信道控制器来处置主机I/O操作以提高每隔离区域的吞吐量。替代地,隔离区域可包含耦合到一个信道的非易失性存储器裸片。因此,SSD架构150的裸片可经选择及布置以形成隔离区域102到108,但原理上可使用任何数目个信道来形成隔离区域,其中单独隔离区域不共享信道。
虽然图1B图解说明操作地耦合到同一信道的所有裸片位于同一隔离区域中,但用于形成隔离区域的其它方法允许耦合到同一信道的裸片位于单独隔离区域中。举例来说,来自信道CH0到CH3中的每一者的两个裸片可形成第一隔离区域,而来自信道CH0到CH3中的每一者的另两个裸片可形成第二隔离区域。每隔离区域的大量信道提高了隔离区域的吞吐量,然而当在区域之间共享信道时,做出了关于隔离能力的折衷,这是因为具有独有裸片但共享信道的两个区域的隔离程度将不像具有完全单独的信道的区域那样大。
图2是根据一些实施方案包含多个独立数据通道的SSD架构200的框图。参考图1A到2,SSD架构200包含控制器220及非易失性存储装置240。控制器220可为控制器120的实例实施方案。控制器220包含易失性存储器230,易失性存储器230可为例如但不限于易失性存储器130的易失性存储器。非易失性存储装置240可为非易失性存储器,例如但不限于,非易失性存储器140或具有架构150的非易失性存储器。
非易失性存储装置240包含跨越8个信道(例如,CH0到CH7)布置的非易失性存储器裸片的阵列,其中有三个非易失性存储器裸片耦合到每一信道。换句话说,非易失性存储装置240包含NAND快闪存储器装置阵列。为了清晰起见,未展示到个别裸片的信道连接。非易失性存储器裸片中的每一者具有多个平面。所属领域的普通技术人员可了解,任何适合数目个裸片可操作地耦合到任何适合数目个信道。信道CH0到CH7可为物理信道或逻辑信道。
非易失性存储装置240的非易失性存储器裸片形成隔离区域(物理上隔离的区域)或NVM集260到263。属于同一NVM集的裸片由相同阴影表示。举例来说,操作地耦合到信道CH0及CH1的裸片形成NVM集260。操作地耦合到信道CH2及CH3的裸片形成NVM集261。操作地耦合到信道CH4及CH5的裸片形成NVM集262。操作地耦合到信道CH6及CH7的裸片形成NVM集263。
控制器220包含经配置以执行控制器220的各种过程的各种处理器。举例来说,FTL处理器242(例如,FTL接口模块)可处理地址映射表248(例如,L2P映射表)。地址映射表248是保持逻辑地址与物理地址之间的对应性记录的映射表。举例来说,地址映射表248可将关于逻辑块的读取及写入命令(从主机接收)翻译成参考物理块的低级命令。在一些实例中,从主机接收的读取或写入命令至少包含逻辑块地址(LBA)。LBA是识别可为扇区中的区域的逻辑块的逻辑地址。在一些实例中,写入命令还可包含数据将被写入到的区域/扇区的数目。地址映射表248存储每一逻辑地址与所述逻辑地址的数据被存储在的一或多个物理地址(例如,存储器裸片的页)之间的映射。
FTL处理器242可基于地址映射表248执行L2P操作。举例来说,FTL处理器242可将LBA翻译成物理地址,因此分辨对应于LBA的物理地址。响应于接收到来自主机的写入或读取命令(其中含有LBA),FTL处理器242可通过使用地址映射表248查找对应于LBA的物理地址以便向所述物理地址写入或从所述物理地址读取。地址映射表248可存储于非易失性存储装置240、易失性存储器230或控制器220的适合存储器中的一或多者中。
在一些实施方案中,控制器220包含快闪管理层(FML)处理器246。FML处理器242管理快闪存储器裸片,将裸片内的存储器块布置成称作逻辑块的若干最优群组,确定要为用户数据分配的下一逻辑块、要为垃圾收集及元数据(例如映射查找表)选择的下一逻辑块。FML还监视写入命令的进展且提前准备下一块进行写入并管理用于检查先前存储的数据的保留可靠性的触发器。
在一些实施方案中,控制器220包含快闪接口层(FIL)处理器250a及250b。FIL处理器250a及250b提供FTL与快闪控制器(分别地,FC 255a/b及255c/d)之间的接口。FIL处理命令队列(为了清晰起见未展示)中来自FTL的传入快闪命令,以最优方式将其调度到所述命令的目的地物理存储器组(裸片)的适当快闪控制器。来自命令的响应是从FC处置且存储于响应队列(为了清晰起见未展示)中,从而向FTL指示命令的成功或失败。如所展示,FIL处理器250a及250b中的每一者位于NVM集260到263中的两者的I/O路径中。举例来说,FIL处理器250a位于NVM集260到261的I/O路径中。FIL处理器250b位于NVM集262到263的I/O路径中。
在一些实施方案中,控制器220进一步包含快闪控制器(FC)255a到255d。FC 255a到255d从FIL获取存储器命令且在个别存储器信道上调度所述命令,执行必要存储器总线控制信令及向存储器裸片的数据传送,并针对命令成功还是失败检查存储器裸片状态。如所展示,NVM集260到263中的每一者具有FC 255a到255d中的一个不同FC。例如,FC255a位于NVM集260的I/O路径中。FC 255b位于NVM集261的I/O路径中。FC 255c位于NVM集262的I/O路径中。FC 255d位于NVM集263的I/O路径中。
在一些实施方案中,处理器242、246、250a到250b及255a到255d中的每一者可为单独处理器(例如,CPU)、处理电路或微控制器。换句话说,处理器242、246、250a到250b及255a到255d中的每一者是指可在制造后保持不变的单独硬件组件。在替代实施方案中,处理器242、246、250a到250b及255a到255d中的两者或更多者可实施于同一处理器、处理电路或微控制器上。控制器220(包含处理器242、246、250a到250b及255a到255d、易失性存储器230及地址映射表248(如果存储于控制器的存储器中))可使用例如但不限于系统单芯片(SoC)的硬件实施。如本文中进一步详细地描述,处理器242、246、250a到250b及255a到255d、易失性存储器230及地址映射表248在其上运行的固件可用于配置给定数目个数据通道。固件处置且管理非易失性存储装置240、I/O操作及SSD架构200的后台操作。
IPC用于SSD架构200的两个组件(例如,在处理器上运行的两个过程)之间的通信。IPC对应于经由从发送方处理器或过程到接收方处理器或过程的通信链路的信令。例如,IPC可提供允许在发送方处理器或过程与接收方处理器或过程之间传递指令、消息及任务的通信协议。指令、消息及任务中的每一者载运将由接收方处理器或过程执行的任务的指示及上下文识别符或对在任务中使用的数据的参考。在一些实施方案中,每一IPC对应于经配置软件/固件,例如但不限于,软件队列、消息队列、共享存储器或使用发送方过程与接收方过程之间的适合协议配置的邮箱。在一些实施方案中,每一IPC对应于由控制器220建立以用于发送方过程与接收方过程之间的通信的通信端口,例如但不限于,因特网协议(IP)端口或插口。替代地,每一IPC是物理通信链路,例如但不限于,总线(例如,外围组件互连(PCI))、串行通信链路、物理IPC端口、信道等。
控制器220的固件可配置来自非易失性存储装置240中的裸片的任何适合数目个NVM集且可配置相同数目个独立数据通道。换句话说,控制器220的固件可针对每一经配置NVM集配置独立数据通道,使得所述NVM集的所有指令、消息及任务可使用对应独立数据通道来载运,且对应独立数据通道不载运另一NVM集的任何指令、消息或任务。
如所展示,沿着NVM集260的I/O路径提供第一独立数据通道。第一独立数据通道包含多个IPC/链路212a、212b、212c、212d及212e。IPC 212a用于将指令、消息及任务从易失性存储器230载运到FTL处理器242。IPC 212b用于在FTL处理器242与FIL处理器250a之间载运指令、消息及任务。IPC 212c用于在FIL处理器250a与FC 255a之间载运指令、消息及任务。链路212d是用于在FC 255a与NVM集260的操作地耦合到信道CH0的裸片之间载运命令/操作、数据及消息的快闪存储器信道。链路212e是用于在FC 255a与NVM集260的操作地耦合到信道CH1的裸片之间载运命令/操作、数据及消息的快闪存储器信道。鉴于FC 255a到非易失性存储装置240中的NVM集260之间的链路是信道特定的,第一独立数据通道从FC 255a到NVM集260包含两个链路212d及212e。第一独立数据通道仅针对NVM集260且不针对另一NVM集载运命令/操作、数据及消息。
沿着NVM集261的I/O路径提供第二独立数据通道。第一独立数据通道包含多个IPC/链路214a、214b、214c、214d及214e。IPC 214a用于将指令、消息及任务从易失性存储器230载运到FTL处理器242。IPC 214b用于在FTL处理器242与FIL处理器250a之间载运指令、消息及任务。IPC 214c用于在FIL处理器250a与FC 255b之间载运指令、消息及任务。链路214d是用于在FC 255b与NVM集261的操作地耦合到信道CH2的裸片之间载运命令/操作、数据及消息的快闪存储器信道。链路214e是用于在FC 255b与NVM集260的操作地耦合到信道CH3的裸片之间载运命令/操作、数据及消息的快闪存储器信道。鉴于FC 255b到非易失性存储装置240中的NVM集261之间的链路是信道特定的,第一独立数据通道从FC 255b到NVM集261包含两个链路214d及214e。第二独立数据通道仅针对NVM集261且不针对另一NVM集载运命令/操作、数据及消息。
沿着NVM集262的I/O路径提供第三独立数据通道。第三独立数据通道包含多个IPC/链路216a、216b、216c、216d及216e。IPC 216a用于将指令、消息及任务从易失性存储器230载运到FTL处理器242。IPC 216b用于在FTL处理器242与FIL处理器250b之间载运指令、消息及任务。IPC 216c用于在FIL处理器250b与FC 255c之间载运指令、消息及任务。链路216d是用于在FC 255c与NVM集262的操作地耦合到信道CH4的裸片之间载运命令/操作、数据及消息的快闪存储器信道。链路216e是用于在FC 255c与NVM集262的操作地耦合到信道CH5的裸片之间载运命令/操作、数据及消息的快闪存储器信道。鉴于FC 255c到非易失性存储装置240中的NVM集262之间的链路是信道特定的,第三独立数据通道从FC 255c到NVM集262包含链路IPC 216d及216e。第三独立数据通道仅针对NVM集262且不针对另一NVM集载运命令/操作及消息。
沿着NVM集263的I/O路径提供第四独立数据通道。第四独立数据通道包含多个IPC/链路218a、218b、218c、218d及218e。IPC 218a用于将指令、消息及任务从易失性存储器230载运到FTL处理器242。IPC 218b用于在FTL处理器242与FIL处理器250b之间载运指令、消息及任务。IPC 218c用于在FIL处理器250b与FC 255d之间载运指令、消息及任务。链路218d是用于在FC 255d与NVM集263的操作地耦合到信道CH6的裸片之间载运命令/操作、数据及消息的快闪存储器信道。链路218e是用于在FC 255d与NVM集263的操作地耦合到信道CH7的裸片之间载运命令/操作、数据及消息的快闪存储器信道。鉴于FC 255d到非易失性存储装置240中的NVM集263之间的链路是信道特定的,第四独立数据通道从FC 255d到NVM集263包含两个链路218d及218e。第四独立数据通道仅针对NVM集263且不针对另一NVM集载运命令/操作及消息。
沿着IPC 212a到212c、214a到214c、216a到216c及218a到218c或在其中展示的方框是指在IPC 212a到212c、214a到214c、216a到216c及218a到218c中的对应者中载运的指令、消息及任务。具有与NVM集260到263中的对应一者的阴影相同的阴影的方框是指与对应NVM集且不与另一NVM集相关的指令、消息及任务。
虽然处理器242、246、250a到250b及255a到255d以及存储装置230及240被展示为实体的实例使得可针对每一NVM集建立那些实体中的两者之间的IPC及快闪信道,但每NVM集的IPC及快闪信道方案可同样地针对额外处理器(例如,主机接口110)及存储装置来实施。
如图2中所展示,可在发送方过程与接收方过程之间经由固件建立各自用于NVM集260到263中的不同一者的多个IPC,而不是用于所有NVM集260到263的一个IPC。鉴于每一处理器执行一或多个专用功能(或“工作”或“任务”),针对相同功能建立各自用于NVM集260到263中的不同一者的多个IPC。如此,SSD架构200及特定来说控制器220的布置减少或防止控制器220处因同一IPC中多个NVM集的消息、指令及任务的夹压导致的瓶颈。因此,在所公开实施方案中,当关于NVM集260到263中的一者发生延迟时,仅对应于被延迟NVM集的数据通道受影响。
图3是图解说明根据一些实施方案的过程间流程300的框图。参考图1A到3,过程间流程300可使用系统及架构100、150及200实施。P1 302、P2 304及P3 306各自是指例如但不限于控制器120及220的控制器的任何处理器。在一些实例中,P1 302、P2 304及P3 306中的每一者可为处理器242、246、250a到250b及255a到255d中的一者。
在过程间流程300中,建立三个独立数据通道。每一独立数据通道对应于在非易失性存储装置(例如但不限于,非易失性存储器140、架构150及非易失性存储装置240)中建立的三个NVM集(未展示)中的不同一者。举例来说,用于第一NVM集的第一独立数据通道包含IPC 321a、IPC 321b,及一或多个额外IPC(未展示)。用于第二NVM集的第二独立数据通道包含IPC 323a、IPC 323b,及一或多个额外IPC(未展示)。用于第三NVM集的第三独立数据通道包含IPC 325a、IPC 325b,及一或多个额外IPC(未展示)。IPC 321a、323a及325a在P1 302与P2 304之间传达指令、消息及任务。IPC 321b、323b及325b在P2 304与P3 306之间传达指令、消息及任务。
P1 302是可由控制器的固件配置以经由专用于第一NVM集的IPC 321a将第一NVM集的指令、消息及任务322a及322b推送到P2 304的发送方处理器或过程。P1 302可由控制器的固件配置以经由专用于第二NVM集的IPC 323a将第二NVM集的指令、消息及任务324a及324b推送到P2 304。P1 302可由控制器的固件配置以经由专用于第三NVM集的IPC 325a将第三NVM集的指令、消息及任务326a及326b推送到P2 304。P2 304是可处理指令、消息及任务322a、322b、324a、324b、326a及326b的处理器。在一些实例中,鉴于使用同一处理器P2304来处理指令、消息及任务322a、322b、324a、324b、326a及326b,那些指令、消息及任务322a、322b、324a、324b、326a及326b属于同一类型。
P2 304是可由控制器的固件配置以经由IPC 321b将第一NVM集的指令、消息及任务322a及322b推送到P3 306的发送方处理器或过程。P2 304可由控制器的固件配置以经由IPC 323b将第二NVM集的指令、消息及任务324a及324b推送到P3 306。P2 304可由控制器的固件配置以经由IPC 325b将第三NVM集的指令、消息及任务326a及326b推送到P3306。
P2 304可基于独立数据通道顺序地处理指令、消息及任务322a、322b、324a、324b、326a及326b,例如,处理第一NVM集在IPC 321a中(例如,在软件队列中)的任务中的一者,接着处理第二NVM集在IPC 323a中(例如,在软件队列中)的任务中的一者,接着处理第三NVM集在IPC 325a中(例如,在软件队列中)的任务中的一者,且当已处理来自IPC 321a、323a及325a中的每一者的一个任务时,P2 304开始处理第一NVM集在IPC 321a中的下一任务,以此类推。替代地,可由P2 304同时处理独立数据通道中的两个或更多个或所有独立数据通道的指令、消息及任务。指令、消息及任务322a、322b、324a、324b、326a及326b可具有统一大小,如标题为“IOD SSD的IPC上的最优传送与处理单位(OPTIMAL TRANSFER ANDPROCESSING UNIT ON IPC FOR IOD SSD)”的代理人案卷第117441-0127号中进一步详细地论述,所述代理人案卷特此以全文引用的方式并入。标题为“用于固态驱动器中的输入输出确定性的两层确定性过程间通信调度器(TWO-LAYERED DETERMINISTIC INTER-PROCESSCOMMUNICATION SCHEDULER FOR INPUT OUTPUT DETERMINISM IN SOLID STATE DRIVES)”的代理人案卷第117441-0128号中论述关于处理指令、消息及任务的方式的其它细节,所述代理人案卷特此以全文引用的方式并入。
在一些实例中,指令、消息及任务322a、322b、324a、324b、326a及326b可为I/O操作(例如,读取及写入)、后台操作(例如,垃圾收集、压缩、损耗均衡、断电保护及数据刷新)、开始/停止I/O等的部分。
过程间流程300图解说明针对在两个过程之间传递的每一NVM集的所有指令、消息及任务建立独立IPC,且用于每一NVM集的此类IPC中的两者或更多者可形成用于每一NVM集的独立数据通道。用于I/O操作(以及后台操作)的此类独立数据通道最小化或消除由于一个NVM集上的拥塞影响其它NVM集。举例来说,如果NAND正忙于第一NVM集或用于第一NVM集的控制器资源不可用,那么P2 304可在处理指令、消息及任务322a及322b中的一者或两者之前处置其它NVM集的指令、消息及任务324a、324b、326a及326b。如此,第二及第三NVM集上的等待时间保持不受第一NVM集上的拥塞影响。
图4是图解说明根据一些实施方案用于启用一或多个数据通道的实例过程400的流程图。参考图1A到4,过程400可由系统及架构100、150或200上的控制器120或220的固件实施。不管数目还是功能,硬件(例如,设置于SoC上的处理器/存储装置230、242、246、248、250a、250b、255a到255d及302到306)一旦被制造便保持不变。控制硬件的固件可配置硬件以取决于SSD的客户针对同一硬件期望非IOD SSD配置还是IOD SSD解决方案而建立任何数目个数据通道。在一个实例中,固件可在非IOD配置中在控制器中针对非易失性存储装置(例如,非易失性存储器140)建立一个数据通道(非易失性存储器的区域不被隔离以形成隔离区域或NVM集)。在另一实例中,固件可在IOD配置中在控制器中针对非易失性存储装置(例如,非易失性存储装置240或使用架构150的非易失性存储装置)的所有NVM集建立一个数据通道。在又一实例中,固件可在IOD配置中在控制器中针对非易失性存储装置的NVM集中的每一者建立一个数据通道,例如参考图2及3所描述。如此,鉴于SSD产品可需要IOD及非IOD解决方案两者,同一硬件是可在制造后通过固件配置的,以基于客户偏好实现每NVM集一个独立数据通道或另一其它数据通道配置。
在410处,SSD(例如,其控制器)执行第一通电序列。第一通电序列是SSD制造后的第一个通电序列,且在第一通电序列之前未执行其它通电序列。在一些实施方案中,在第一通电序列期间执行数据通道配置。在其它实施方案中,在另一时间执行数据通道配置(例如,框420及430)。
在420处,控制器确定待配置的至少一个数据通道的数目。举例来说,所述数目可为用于针对未隔离的非易失性存储装置(常规非IOD SSD)或隔离成多个NVM集的非易失性存储装置(IOD SSD)传递数据的一个数据通道,或用于每一NVM集(IOD SSD)的一个独立数据通道。数据通道的数目可为高达数据通道的最大配置数目的数目。所述数目是单个参数。数据通道的数目还等于隔离以配置SSD的IOD特征的NVM集的数目。
可基于主机或客户偏好而确定所述数目。在一些实例中,如果主机操作地耦合到控制器,那么可在第一通电序列期间从主机接收数据通道的数目。在一些实例中,通过检查SSD的装置配置文件而确定数据通道的数目。在第一通电序列期间检查装置配置文件或简档以设置SSD,包含数据通道。数据通道的数目的主机或客户偏好可含于装置配置文件中。装置配置文件可存储于控制器的任何适合存储器装置中或可从另一装置接收。
在430处,控制器启用至少一个数据通道中的所述数目个数据通道。每一数据通道包含用于沿着所述数据通道的每一对发送方/接收方处理器或过程的IPC。这意味着可基于所要NVM集的数目按比例增加IPC。在其中数据通道的数目是1的实例中,启用一个数据通道来在非IOD情形中操作地耦合到非易失性存储装置或在IOD情形中操作地耦合到非易失性存储装置的NVM集。在其中数据通道的数目是多于一个且等于NVM集的数目(例如,每NVM集一个独立数据通道)的实例中,启用一个数据通道来在IOD情形中操作地耦合到非易失性存储装置的多个NVM集中的每一者。
每一IPC可经由软件定义为软件队列、消息队列或邮箱。在一些实施方案中,当固件在过程中使用先进先出(FIFO)创建NVM集时,每一IPC可由于缺少物理端口而为纯软件IPC。例如,在于共同队列上接收到IPC消息后,即刻基于IPC消息中的NVM集识别符重新组织IPC消息且按FIFO将IPC消息排队。此外,每一IPC可经由硬件定义,使得每一IPC可为物理总线、物理IPC端口、物理信道等。控制器可具有给定数目个可用物理总线、IPC端口及/或物理信道。可使用所有可用物理总线、IPC端口及/或物理信道中的在420处确定的数目个物理总线、IPC端口及/或物理信道。如此,每一IPC可通过连接两个处理器上的两个物理端口来界定。此外,针对每一NVM集相同的共享存储器旗标、共享存储器位图或共享存储器结构可经实施使得发送方过程设定由另一过程轮询的值以触发独立于其它NVM集的共享存储器内容的任务。
在一些实施方案中,可识别等待时间关键IPC消息,使得可针对每一NVM集建立单独IPC来载运等待时间关键IPC消息。在一些实施方案中,执行I/O相关操作(例如但不限于,读取及写入(例如,确定要从其读取或向其写入的逻辑地址、基于逻辑地址确定要从其读取或向其写入的物理地址等))的处理器/存储装置是等待时间关键的,而后台操作(例如,垃圾收集、压缩、损耗均衡、断电保护及数据刷新)是非等待时间关键的。在一些实施方案中,非等待时间关键IPC消息可针对所有NVM集经由同一IPC路由。
在其中易失性存储器230与FTL 242之间的IPC消息预定为等待时间关键的一个实例中,建立IPC 212a、214a、216a及218a来分别针对NVM集260到263载运消息。在其中FTL242与FIL 250a及250b之间的IPC消息预定为等待时间关键的另一实例中,建立IPC 212b、214b、216b及218b来分别针对NVM集260到263载运消息。
在一些实例中,NVM集识别符可包含于经由独立数据通道或独立IPC发送的每一指令、消息或任务(例如,指令、消息或任务322a、322b、324a、324b、326a及326b中的每一者)中。集识别符可为指令、消息或任务的元数据的一部分。发送方处理器或过程及接收方处理器或过程可使用NVM集识别符来识别对应于指令、消息及任务的NVM集。举例来说,发送方处理器或过程可通过读取NVM集识别符而确定应通过哪一IPC发送或推送指令、消息及任务。接收方处理器或过程可出于处理指令、消息及任务的目的而识别对应于指令、消息及任务的NVM集。接收方处理器或过程可将不同算法应用于且将不同带宽分配给不同NVM集的指令、消息及任务。因此,NVM集识别符用于发送方处理器或过程与接收方处理器或过程之间的握手。
在440处,控制器经由在430处配置的数据通道传递指令、消息及任务。在其中启用一个总数据通道的实例中,经由所述一个数据通道传递针对非易失性存储装置(在非IOD情形中)或针对非易失性存储装置的NVM集(在IOD情形中)的指令、消息及任务。在其中针对每一NVM集启用一个独立数据通道的实例中,经由所建立的多个独立数据通道中的对应一者传递针对多个NVM集中的每一者的所有指令、消息及任务。
在涉及具有多个经隔离NVM集的IOD SSD的一些实例中,在430处启用至少一个数据通道中的所述数目个数据通道(其包含一或多个IPC)进一步包含基于接收方处理器的最大处理能力或带宽及总NVM集的数目确定及调整每一独立IPC的深度。图5是图解说明根据一些实施方案操作地耦合到处理器P1 501及P2 502的IPC 510到517的长度的框图。
参考图1A到5,P1 501及P2 502各自是指例如但不限于控制器120及220的控制器的任何处理器或过程。在一些实例中,P1 501及P2 502中的每一者可为处理器242、246、250a到250b及255a到255d、易失性存储器230及地址映射表248中的一者。可以本文中所描述的方式针对八个NVM集中的相应一者建立IPC 510到517中的每一者。IPC 510到517中的每一者可为用于八个NVM集中的相应一者的独立数据通道的一部分。
常规IPC可为软件队列,例如但不限于布局发布请求队列。如本文中所描述,针对非易失性存储器的所有指令、消息及任务是经由同一常规IPC传递。常规IPC的深度基于接收方处理器或过程(P2 502)的处理能力、存储器要求及带宽。常规IPC越深(例如,可排队的指令、消息及任务越多),接收方处理器或过程具有的处理能力、存储器及带宽越大。举例来说,常规布局发布请求队列的深度(例如,链接发送方处理器/存储装置与接收方处理器/存储装置的仅一个布局发布请求队列)等于查找表(LUT)更新完成队列。常规布局发布请求队列的实例深度是48,这意味着P2 502可在1ms内处理且完成48个任务。
在启用多个IPC来将指令、消息及任务从发送方处理器或过程P1 501载运到接收方处理器或过程P2 502(例如,IPC被按比例增加)时,鉴于增加P2 502的处理能力、存储器要求及带宽可为高成本的,维持P2 502的处理能力、存储器要求及带宽可为优选的。如此,当在430处启用所述数目个数据通道时,可通过将P1 501与P2 502之间的常规IPC的深度(例如,48)除以NVM集的总数目(例如,8)而确定P1 501与P2 502之间的IPC 510到517中的每一者的深度。如所展示,IPC 510到517中的每一者具有深度6,这意味着6个指令、消息或任务可在用于P2 502的IPC 510到517n中的每一者中排队来处理。如此,P2 502仍可使用IPC 510到517在1ms内执行48个任务。
8个IPC 510到517n中的每一方框是指指令、消息或任务在队列中的位置或定位。所述位置/定位可使用索引(例如IPC布局发布索引IPC_LYT_REL)来确定。NVM集n(其中0<n<8)中的指令m(其中0<m<IPC_DEPTH-1)(例如,对应于指令520IPC 513的m=2、n=3)的IPC布局发布索引可使用以下表达式确定:
IPC_LYT_REL[INSm,SETn]=m+IPC[SET0]+(n×IPCDEPTH);
其中IPC[SET0]是指用于集0的IPC 510中的第一指令的索引,且IPC_DEPTH是指IPC510到517n中的每一者中的项目(例如,指令、消息或任务)的深度,其是6。
因此,本文中所描述的实施方案涉及控制器内的固件管理的独立NVM集数据通道,其用以实现低等待时间过程间通信方案以避免IOD驱动器中的“嘈杂邻居”效应、解决导致多个NVM集的I/O之间的冲突的控制器问题,多个NVM集的I/O之间的冲突又导致I/O等待时间,即使NAND被分割成经隔离NVM集。
同一固件可提供IOD SSD的各种不同配置及对针对通用非IOD SSD设计的控制器内用于每一IOD NVM集的I/O路径的管理。此类实施方案允许针对每一NVM集独立地按比例扩展固件的设计,以避免竞争的方式划分控制器资源(例如但不限于,CPU、硬件组件、存储器等),这将NVM集中的任一者上的I/O工作负载的等待时间与性能折衷。
本文中所描述的独立数据通道可用于流及非流隔离以避免由于对非流的后台操作对多个流造成性能影响。独立IPC方案可扩展到许多解决方案,例如但不限于对四电平单元(QLC)NAND及任何未来NAND产品的IOD解决方案、具有混合IOD与流的主机管理的方案的驱动器、在NAND上具有多个隔离分区并要求隔离分区之间的等待时间改进的任何驱动器等。
提供先前说明以使得所属领域的技术人员能够实践本文中所描述的各种方面。所属领域的技术人员将容易明了对这些方面的各种修改,且本文中所定义的通用原理可应用于其它方面。因此,权利要求书并不打算限于本文中所展示的方面,而是应被赋予与语言权利要求相一致的全部范围,其中以单数形式对元素的参考并不打算意指“一个且仅一个”(除非具体如此陈述),而是意指“一或多个”。除非另有具体陈述,否则术语“一些”是指一或多个。所属领域的普通技术人员已知的或后来知晓的在先前说明通篇描述的各种方面的元素的所有结构及功能等效物明确地以引用的方式并入本文中且打算由权利要求书涵盖。此外,本文中所公开的任何内容均不打算致力于公共的,而不管此公开是否明确地叙述于权利要求书中。任何权利要求元素均不应被视为构件加功能,除非使用短语“用于…的构件”明确地表达所述元素。
应理解,所公开的过程中的步骤的特定次序或层次是说明性方法的实例。基于设计偏好,应理解,可在保持于先前说明的范围内的同时重新布置过程中的步骤的特定次序或层次。所附方法权利要求以样品次序呈现各种步骤的元素,且并不意在限于所呈现的特定次序或层次。
提供所公开实施方案的先前说明以使得所属领域的技术人员能够制作或使用所公开的标的物。所属领域的技术人员将易于明了对这些实施方案的各种修改,且在本文中所定义的通用原理可在不背离先前说明的精神或范围的情况下应用于其它实施方案。因此,先前说明不打算限于本文中所展示的实施方案,而是应被赋予与本文中所公开的原理及新颖特征一致的最宽广范围。
所图解说明及描述的各种实例仅提供为实例以图解说明权利要求书的各种特征。然而,关于任一给定实例所展示及描述的特征不必限于相关联实例且可与所展示及描述的其它实例一起使用或与其组合。此外,权利要求书不打算受任一实例限制。
前述方法说明及过程流程图仅提供为说明性实例且不打算要求或暗示各种实例的步骤必须以所呈现的次序执行。所属领域的技术人员将了解,前述实例中步骤的次序可以任何次序执行。例如“此后”、“接着”、“接下来”等词语不打算限制步骤的次序;这些词语仅用于引导读者贯穿对方法的说明。此外,以单数形式(例如,使用冠词“一(a)”、“一(an)”或“所述(the)”)对权利要求元素的任何参考不应解释为将所述元素限制为单数。
结合本文中所公开的实例描述的各种说明性逻辑块、模块、电路及算法步骤可实施为电子硬件、计算机软件或两者的组合。为了清楚地图解说明硬件与软件的此可互换性,上文大体就各种说明性组件、块、模块、电路及步骤的功能性对其进行了描述。此功能性是实施为硬件还是软件取决于特定应用及对总体系统强加的设计约束。所属领域的技术人员可针对每一特定应用以各种方式实施所描述功能性,但此类实施方案决策不应解释为导致背离本公开的范围。
用于结合本文中所公开的实例实施所描述的各种说明性逻辑、逻辑块、模块及电路的硬件可利用以下各项来实施或执行:经设计以执行本文中所描述的功能的通用处理器、DSP、ASIC、FPGA或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件或其任一组合。通用处理器可为微处理器,但在替代方案中,处理器可为任何常规处理器、控制器、微控制器或状态机。处理器也可实施为计算装置的组合,例如,DSP与微处理器的组合、多个微处理器的组合、一或多个微处理器联合DSP核心的组合,或任何其它此类配置。替代地,一些步骤或方法可由特定于给定功能的电路系统执行。
在一些示范性实例中,所描述的功能可以硬件、软件、固件或其任一组合实施。如果以软件实施,那么所述功能可作为一或多个指令或代码存储在非暂时性计算机可读存储媒体或非暂时性处理器可读存储媒体上。本文中所公开的方法或算法的步骤可以可驻存于非暂时性计算机可读或处理器可读存储媒体上的处理器可执行软件模块体现。非暂时性计算机可读或处理器可读存储媒体可为可由计算机或处理器存取的任何存储媒体。通过实例但非限制的方式,此类非暂时性计算机可读或处理器可读存储媒体可包含RAM、ROM、EEPROM、快闪存储器、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置或者可用于以指令或数据结构的形式存储所要程序代码且可由计算机存取的任何其它媒体。如本文中所使用,磁盘及光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字通用光盘(DVD)、软磁盘及蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘借助激光以光学方式再现数据。以上各项的组合也包含于非暂时性计算机可读及处理器可读媒体的范围内。另外,方法或算法的操作可作为代码及/或指令中的一者或任一组合或者集驻存于可并入到计算机程序产品中的非暂时性处理器可读存储媒体及/或计算机可读存储媒体上。
对所公开实例的前述说明经提供以使得所属领域的技术人员能够制作或使用本公开。所属领域的技术人员将容易地明了对这些实例的各种修改,且本文中所定义的通用原理可在不背离本公开的精神或范围的情况下应用于一些实例。因此,本公开不打算限于本文中所展示的实例,而是应被赋予与所附权利要求书以及本文中所公开的原理及新颖特征一致的最宽广范围。
Claims (20)
1.一种用于提供固态驱动器(SSD)的方法,其包括:
由所述SSD的控制器针对非易失性存储器的多个区域而启用多个数据通道来传递消息,所述多个区域中的每一者包括多个裸片;
识别所述SSD的所述控制器中的多个处理器,其中启用包括配置每个数据通道以独立于所有其他数据通道而传递所述控制器中的所述处理器中的每一者之间以及所述处理器中的每一者与所述非易失性存储器之间的消息;及
由所述控制器针对所述多个区域经由所述数据通道传递所述消息。
2.根据权利要求1所述的方法,其中
所述非易失性存储器是非易失性存储器裸片阵列或NAND快闪存储器装置阵列;
所述非易失性存储器裸片中的每一者具有至少一个平面;
所述非易失性存储器裸片中的两者或更多者耦合到多个信道中的同一信道;且
所述多个区域中的每一者包括耦合到所述多个信道中的至少一者的所述非易失性存储器裸片中的一些非易失性存储器裸片。
3.根据权利要求1所述的方法,其进一步包括确定是针对所述多个区域中的每一者的对应一者而启用所述数据通道中的一个数据通道来传递所述消息还是针对所有所述多个区域而启用所述一个数据通道来传递所述消息。
4.根据权利要求3所述的方法,其进一步包括,响应于针对所有所述多个区域启用所述一个数据通道来传递所述消息,针对所述多个区域经由所述数据通道传递所述消息。
5.根据权利要求1所述的方法,其中所述多个数据通道中的每一者操作地耦合到所述多个区域中的对应一者。
6.根据权利要求5所述的方法,其中针对所述多个区域经由所述数据通道传递所述消息包括:针对所述多个区域中的每一者经由所述多个数据通道中的对应一者传递所有消息。
7.根据权利要求1所述的方法,其中通过配置所述控制器的固件来启用所述数据通道。
8.根据权利要求1所述的方法,其中在所述SSD的第一通电序列期间执行启用所述数据通道。
9.根据权利要求1所述的方法,其中启用所述数据通道包括:
确定待启用的数据通道的数目;及
基于所述数目启用所述数据通道。
10.根据权利要求9所述的方法,其中所述多个区域中的每一者是非易失性存储器(NVM)集。
11.根据权利要求1所述的方法,其中
每个数据通道包括至少一个过程间通信(IPC);且
所述至少一个IPC对应于所述控制器的两个处理器之间的通信链路。
12.根据权利要求11所述的方法,其中所述至少一个IPC中的每一者包括软件队列。
13.根据权利要求11所述的方法,其中所述至少一个IPC中的每一者包括物理IPC端口。
14.根据权利要求1所述的方法,其中针对所述多个区域中的每一者的所述消息中的每一者包括区域识别符,所述区域识别符识别所述多个区域中被传递所述消息中的每一者的一个区域。
15.根据权利要求1所述的方法,其中针对所述多个区域启用所述数据通道来传递所述消息包括:
启用所述控制器的发送方处理器与所述控制器的接收方处理器之间的多个过程间通信(IPC),所述多个IPC中的每一者对应于所述多个区域中的不同一者;及
基于所述接收方处理器的处理能力及所述多个区域的总数目确定所述多个IPC中的每一者的深度。
16.一种固态驱动器(SSD),其包括:
非易失性存储器,其具有多个区域,所述多个区域中的每一者包括多个裸片;及
控制器,其经配置以:
针对所述多个区域启用多个数据通道来传递消息;
识别所述控制器中的多个处理器,其中启用包括配置每个数据通道以独立于所有其他数据通道而传递所述控制器中的所述多个处理器之间以及所述处理器中的每一者与所述非易失性存储器之间的消息;及
针对所述多个区域经由所述数据通道传递所述消息。
17.根据权利要求16所述的SSD,其中所述控制器进一步经配置以确定是针对所述多个区域中的对应一者而启用所述数据通道中的一个数据通道来传递所述消息还是针对所有所述多个区域而启用所述一个数据通道来传递所述消息。
18.根据权利要求16所述的SSD,其中
所述多个数据通道操作地耦合到所述多个区域;
所述多个数据通道中的每一者操作地耦合到所述多个区域中的对应一者;且
针对所述多个区域经由所述数据通道传递所述消息包括:针对所述多个区域中的每一者经由所述多个数据通道中的对应一者传递所有消息。
19.根据权利要求16所述的SSD,其中
所述数据通道中的每一者包括至少一个过程间通信(IPC);
所述至少一个IPC中的每一者对应于所述控制器的两个处理器之间的通信链路;且
所述至少一个IPC中的每一者包括软件队列或物理IPC端口。
20.一种非暂时性计算机可读媒体,其存储计算机可读指令,使得在被执行时致使固态驱动器(SSD)的控制器进行以下操作:
针对非易失性存储器的多个区域而启用多个数据通道来传递消息,所述多个区域中的每一者包括多个裸片;
识别所述控制器中的多个处理器,其中启用包括配置每个数据通道以独立于所有其他数据通道而传递所述控制器的所述处理器之间以及所述处理器中的每一者与所述非易失性存储器之间的消息;及
针对所述多个区域经由所述数据通道传递所述消息。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/523,925 | 2019-07-26 | ||
US16/523,925 US11704056B2 (en) | 2019-07-26 | 2019-07-26 | Independent set data lanes for IOD SSD |
PCT/IB2020/056930 WO2021019377A1 (en) | 2019-07-26 | 2020-07-23 | Independent set data lanes for iod ssd |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114450673A CN114450673A (zh) | 2022-05-06 |
CN114450673B true CN114450673B (zh) | 2023-04-11 |
Family
ID=74189852
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080067546.2A Expired - Fee Related CN114450673B (zh) | 2019-07-26 | 2020-07-23 | Iod ssd的独立集数据通道 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11704056B2 (zh) |
CN (1) | CN114450673B (zh) |
WO (1) | WO2021019377A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114047877A (zh) * | 2021-11-09 | 2022-02-15 | 山东华芯半导体有限公司 | 一种应用于SSD的NVM Set分配方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5805873A (en) * | 1994-11-30 | 1998-09-08 | Hitachi Micro Systems, Inc. | Phase linking of output clock with master clock in memory architecture |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8285919B2 (en) * | 2008-05-27 | 2012-10-09 | Initio Corporation | SSD with improved bad block management |
TW201009577A (en) * | 2008-08-27 | 2010-03-01 | Phison Electronics Corp | Data transfer method for flash memory and flash memory storage system and controller using the same |
US10073627B2 (en) * | 2015-01-13 | 2018-09-11 | Sandisk Technologies Llc | Addressing, interleave, wear leveling, and initialization schemes for different chip enables and memory arrays of different types |
US10140036B2 (en) * | 2015-10-29 | 2018-11-27 | Sandisk Technologies Llc | Multi-processor non-volatile memory system having a lockless flow data path |
US10198215B2 (en) * | 2016-06-22 | 2019-02-05 | Ngd Systems, Inc. | System and method for multi-stream data write |
JP6765322B2 (ja) * | 2017-02-28 | 2020-10-07 | キオクシア株式会社 | メモリシステムおよび制御方法 |
KR102322740B1 (ko) * | 2017-04-24 | 2021-11-09 | 에스케이하이닉스 주식회사 | 복수의 프로세서를 포함하는 컨트롤러 및 컨트롤러의 동작방법 |
JP6779838B2 (ja) | 2017-06-28 | 2020-11-04 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US11294594B2 (en) | 2017-08-07 | 2022-04-05 | Kioxia Corporation | SSD architecture supporting low latency operation |
KR102369402B1 (ko) * | 2017-09-20 | 2022-03-02 | 삼성전자주식회사 | 스토리지 장치, 이의 동작 방법 및 스토리지 장치를 포함하는 스토리지 시스템 |
-
2019
- 2019-07-26 US US16/523,925 patent/US11704056B2/en active Active
-
2020
- 2020-07-23 CN CN202080067546.2A patent/CN114450673B/zh not_active Expired - Fee Related
- 2020-07-23 WO PCT/IB2020/056930 patent/WO2021019377A1/en active Application Filing
-
2023
- 2023-07-17 US US18/353,515 patent/US20230359401A1/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5805873A (en) * | 1994-11-30 | 1998-09-08 | Hitachi Micro Systems, Inc. | Phase linking of output clock with master clock in memory architecture |
Also Published As
Publication number | Publication date |
---|---|
US11704056B2 (en) | 2023-07-18 |
US20230359401A1 (en) | 2023-11-09 |
WO2021019377A1 (en) | 2021-02-04 |
CN114450673A (zh) | 2022-05-06 |
US20210026563A1 (en) | 2021-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107885456B (zh) | 减少io命令访问nvm的冲突 | |
JP6321682B2 (ja) | ソリッドステートメモリにおける動作のモードを構成するシステム及び方法 | |
US8769190B1 (en) | System and method for reducing contentions in solid-state memory access | |
CN113795828B (zh) | 多功能装置的服务类别 | |
JP2019185596A (ja) | メモリシステムおよび制御方法 | |
US11307768B2 (en) | Namespace auto-routing data storage system | |
KR20160123930A (ko) | Sr-iov 기반 비휘발성 메모리 컨트롤러 및 그 비휘발성 메모리 컨트롤러에 의해 큐에 리소스를 동적 할당하는 방법 | |
US20180253391A1 (en) | Multiple channel memory controller using virtual channel | |
US11016829B2 (en) | Two-layered deterministic interprocess communication scheduler for input output determinism in solid state drives | |
CN108197039B (zh) | 一种ssd控制器混合流数据的传输方法和系统 | |
CN111065997A (zh) | 用于存储介质的协同数据迁移 | |
US20170031829A1 (en) | Advance Cache Allocator | |
US20230359401A1 (en) | Independent set data lanes for iod ssd | |
US20200409846A1 (en) | Dual controller cache optimization in a deterministic data storage system | |
CN107885667B (zh) | 降低读命令处理延迟的方法与装置 | |
CN114521252B (zh) | Iod ssd的传送与处理单位 | |
US20200133506A1 (en) | Method, apparatus and computer program product for managing storage device | |
US9058113B2 (en) | Storage region providing device, storage region providing method, and recording medium | |
US20220276804A1 (en) | Information processing apparatus | |
JP4983133B2 (ja) | 入出力制御装置およびその制御方法、並びにプログラム | |
US20220342837A1 (en) | Peripheral component interconnect express device and operating method thereof | |
US11620083B2 (en) | Method for implementing predictable latency mode feature in SSD, and non-volatile memory (NVM) based storage device | |
CN110568991B (zh) | 降低锁引起的io命令冲突的方法与存储设备 | |
US20240311291A1 (en) | Memory system and method of controlling the memory system | |
US20220083222A1 (en) | Storage device and control method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20230411 |