CN111722792B - 存储器*** - Google Patents

存储器*** Download PDF

Info

Publication number
CN111722792B
CN111722792B CN201910847002.7A CN201910847002A CN111722792B CN 111722792 B CN111722792 B CN 111722792B CN 201910847002 A CN201910847002 A CN 201910847002A CN 111722792 B CN111722792 B CN 111722792B
Authority
CN
China
Prior art keywords
descriptor
command
buffer
memory controller
stored
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.)
Active
Application number
CN201910847002.7A
Other languages
English (en)
Other versions
CN111722792A (zh
Inventor
芳贺琢哉
渡边秀一
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Kioxia Corp filed Critical Kioxia Corp
Publication of CN111722792A publication Critical patent/CN111722792A/zh
Application granted granted Critical
Publication of CN111722792B publication Critical patent/CN111722792B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

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)
  • Memory System (AREA)
  • Read Only Memory (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

实施方式使存储器***的动作高速化。实施方式的存储器***包括半导体存储装置和存储器控制器。存储器控制器具有命令缓冲器和描述符缓冲器。存储器控制器将从外部接收到的第一命令存储在命令缓冲器中,根据所存储的第一命令从主机设备获取第一描述符,将所获取的第一描述符存储在描述符缓冲器中,将从外部接收到的第二命令存储在命令缓冲器中,将未使用的第一描述符的一部分从描述符缓冲器中废弃,根据所存储的第二命令从主机设备获取第二描述符,在存储有所废弃的第一描述符的一部分的地址存储所获取的第二描述符。

Description

存储器***
相关申请
本申请主张以日本专利申请第2019-50674号(申请日:2019年3月19日)为基础申请的优先权。本申请通过引用该基础申请而包含该基础申请的全部内容。
技术领域
本发明的实施方式涉及存储器***。
背景技术
已知有能够以非易失方式存储数据的NAND型闪存。
发明内容
实施方式使存储器***的动作高速化。
实施方式的存储器***包括半导体存储装置和存储器控制器。存储器控制器控制半导体存储装置和外部的主机设备之间的数据传输,具有命令缓冲器和描述符缓冲器。存储器控制器将从外部接收到的第一命令存储在所述命令缓冲器中,根据所存储的所述第一命令从所述主机设备获取第一描述符,将所获取的所述第一描述符存储在所述描述符缓冲器中,将从外部接收到的第二命令存储在所述命令缓冲器中,将未使用的所述第一描述符的一部分从所述描述符缓冲器中废弃,根据所存储的所述第二命令从主机设备获取第二描述符,在存储有所废弃的所述第一描述符的一部分的地址存储所获取的所述第二描述符。
附图说明
图1是有关实施方式的存储器***的框图。
图2是有关实施方式的存储器***具有的半导体存储装置的框图。
图3是有关实施方式的存储器***具有的半导体存储装置所包含的存储器单元阵列的框图。
图4是有关实施方式的存储器***具有的存储器控制器所包含的主机接口电路的框图。
图5是表示有关实施方式的存储器***的动作执行序列的一例的流程图。
图6是表示在有关实施方式的存储器***中使用PRP(Physical Region Page,物理区域页)时的动作序列的一例的示意图。
图7是表示在有关实施方式的存储器***中使用SGL(Scatter Gather List,分散聚合表)时的动作序列的一例的示意图。
图8是表示有关实施方式的存储器***中的缓冲器释放动作的一例的流程图。
图9是表示有关实施方式的存储器***中的缓冲器释放动作的一例的流程图。
图10是表示有关实施方式的存储器***中基于描述符数的缓冲器释放动作的一例的示意图。
图11是表示有关实施方式的存储器***中基于描述符数的缓冲器释放动作的一例的示意图。
图12是表示有关实施方式的存储器***中基于NLB(Number of Logical Blocks,逻辑块数)的缓冲器释放动作的一例的示意图。
图13是表示有关实施方式的存储器***中基于命令类别的缓冲器释放动作的一例的示意图。
图14是表示有关实施方式的存储器***中基于优先度的缓冲器释放动作的一例的示意图。
标号说明
1…存储器***;2…主机设备;10…半导体存储装置;11…存储器单元阵列;12…命令寄存器;13…地址寄存器;14…定序器;15…驱动器模块;16…行解码器模块;17…读出放大器模块;30…存储器控制器;31…CPU;32…RAM;33…主机接口电路;34…NAND接口电路;35…DRAM接口电路;40…命令缓冲器;41…描述符缓冲器;42…高速缓存;43…DMA控制器;BLK…块;SU…串单元;BL…位线;WL…字线;SGD…选择栅极线;SGS…选择栅极线;MT…存储器单元晶体管;ST1…选择晶体管;ST2…选择晶体管。
具体实施方式
下面,参照附图对实施方式进行说明。实施方式示例了用于具体实现发明的技术思想的装置和方法。附图是示意性或者概念性的图,各图的尺寸及比率等不一定与实际的尺寸及比率相同。在本说明书中,所谓“连接”表示被电连接,不排除中间经由其它元件的情况。
另外,在下面的说明中,对具有大致相同的功能及结构的构成要素赋予相同的标号。构成参照标号的文字的后面的数字用于区分利用包含相同文字的参照标号进行参照的、而且具有相同结构的各个要素。同样地,构成参照标号的数字的后面的文字用于区分利用包含相同数字的参照标号进行参照的、而且具有相同结构的各个要素。在不需要相互区分用包含相同的文字或数字的参照标号表示的要素的情况下,这些要素分别利用仅包含的文字或数字的参照标号进行参照。
[实施方式]
下面,对有关实施方式的存储器***1进行说明。
[1]结构
[1-1]存储器***1的整体结构
图1表示有关实施方式的存储器***1的结构例。有关实施方式的存储器***1例如是SSD(Solid State Drive,固态驱动器),能够以非易失的方式保存数据。有关实施方式的存储器***1可以与外部的主机设备2进行通信,根据来自主机设备2的命令执行各种动作。有关实施方式的存储器***1例如包括半导体存储装置10A及10B、DRAM(DynamicRandom Access Memory,动态随机存取存储器)20、以及存储器控制器30。
半导体存储装置10A及10B分别是以非易失的方式存储数据的NAND型闪存。存储器***1所包含的半导体存储装置10的个数可以设计为任意的个数。关于半导体存储装置10的具体结构在后面进行说明。
DRAM20是被用作存储器控制器30的存储区域的非易失性存储器。DRAM20例如临时存储从主机设备2接收到的写入数据。DRAM20也可以被内置于存储器控制器30或主机设备2等中。
存储器控制器30例如是SoC(System on Chip,片上***),响应来自主机设备2的命令,对半导体存储装置10A及10B分别命令读出、写入及擦除等。并且,存储器控制器30例如包括CPU(Central Processing Unit,中央处理单元)31、RAM(Random Access Memory,随机存取存储器)32、主机接口电路(主机I/F)33、NAND接口电路(NAND I/F)34、及DRAM接口电路(DRAM I/F)35。
CPU31是控制存储器控制器30整体的动作的中央运算处理装置。CPU31例如响应从主机设备2接收到的写入指令来发行写入命令。并且,CPU31例如执行耗损均衡(wearleveling)等用于管理半导体存储装置10的存储器空间的各种处理。
RAM32例如是SRAM(Static Random Access Memory,静态随机存储器)等易失性存储器。RAM32被用作CPU31的作业区域,例如保存用于管理半导体存储装置10的固件或各种管理表等。
主机接口电路33是经由主机总线与主机设备2连接并且发送及接收存储器控制器30及主机设备2之间的数据、命令及地址的电路。主机接口电路33例如可以支持SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SAS(Serial AttachedSCSI,串行连接小型计算机***接口)、PCIe(PCI Express)(注册商标)、NVMe(NVMExpress)等通信接口标准。关于主机接口电路33的具体结构在后面进行说明。
NAND接口电路34是发送及接收存储器控制器30及半导体存储装置10之间的数据、命令及地址的电路。NAND接口电路34支持NAND接口标准。
DRAM接口电路35是与DRAM20连接,进行存储器控制器30和DRAM20之间的通信的电路。DRAM接口电路35支持DRAM接口标准。
与以上说明的存储器***1连接的主机设备2例如包括提交队列SQ、描述符存储器DM及传输区域TA。
提交队列SQ是存储部,能够以所谓队列的形式保存主机设备2使存储器***1执行的动作。描述符存储器DM是保存通过存储器***1所使用的多个描述符的存储部。传输区域TA是在半导体存储装置10和主机设备2之间的数据的传输中使用的临时存储区域。
[1-2]半导体存储装置10的结构
图2表示有关实施方式的存储器***1所包含的半导体存储装置10的结构例。半导体存储装置10例如包括存储器单元阵列11、命令寄存器12、地址寄存器13、定序器14、驱动器模块15、行解码器模块16及读出放大器模块17。
存储器单元阵列11包括多个块BLK0~BLK(k-1)(k为1以上的整数)。块BLK是可以以非易失的方式存储数据的多个存储器单元的集合,例如被用作数据的擦除单位。并且,在存储器单元阵列11设有多条位线及多条字线。各存储器单元例如与一条位线和一条字线建立关联。
命令寄存器12保存半导体存储装置10从存储器控制器30接收到的命令CMD。命令CMD例如包括使定序器14执行读出动作、写入动作、擦除动作等的命令。
地址寄存器13保存半导体存储装置10从存储器控制器30接收到的地址信息ADD。地址信息ADD例如包括块地址BA、页地址PA及列地址CA。例如,块地址BA、页地址PA及列地址CA分别在块BLK、字线及位线的选择时使用。
定序器14控制半导体存储装置10整体的动作。例如,定序器14根据在命令寄存器12保存的命令CMD控制驱动器模块15、行解码器模块16及读出放大器模块17等,执行读出动作、写入动作、擦除动作等。
驱动器模块15生成在读出动作、写入动作、擦除动作等中使用的电压。并且,驱动器模块15例如根据在地址寄存器13保存的页地址PA,向与所选择的字线对应的信号线施加所生成的电压。
行解码器模块16根据在地址寄存器13保存的块地址BA选择对应的存储器单元阵列11内的一个块BLK。并且,行解码器模块16例如将施加给与所选择的字线对应的信号线的电压传输给所选择的块BLK内的所选择的字线。
读出放大器模块17在写入动作中,根据从存储器控制器30接收到的写入数据DAT,向各位线施加期望的电压。并且,读出放大器模块17在读出动作中,根据位线的电压判定在存储器单元存储的数据,将判定结果作为读出数据DAT传输给存储器控制器30。
[1-3]存储器单元阵列11的电路结构
图3抽取存储器单元阵列11所包含的多个块BLK中的一个块BLK,表示有关实施方式的半导体存储装置10所包含的存储器单元阵列11的电路结构的一例。块BLK例如包括4个串(string)单元SU0~SU3。
各串单元SU包括与位线BL0~BL(L-1)(L为1以上的整数)分别建立关联的多个NAND串NS。各NAND串NS例如包括存储器单元晶体管MT0~MT7以及选择晶体管ST1及ST2。存储器单元晶体管MT包括控制栅极及电荷蓄积层,以非易失的方式保存数据。选择晶体管ST1及ST2分别在各种动作时的串单元SU的选择时使用。
在各NAND串NS中,存储器单元晶体管MT0~MT7被串联连接。选择晶体管ST1的漏极与所关联的位线BL连接,选择晶体管ST1的源极与被串联连接的存储器单元晶体管MT0~MT7的一端连接。选择晶体管ST2的漏极与被串联连接的存储器单元晶体管MT0~MT7的另一端连接。选择晶体管ST2的源极与源极线SL连接。
在同一个块BLK中,存储器单元晶体管MT0~MT7的控制栅极分别与字线WL0~WL7共同连接。串单元SU0~SU3内的选择晶体管ST1的栅极分别与选择栅极线SGD0~SGD3共同连接。串单元SU0~SU3内的选择晶体管ST2的栅极分别与选择栅极线SGS0~SGS3共同连接。
在以上说明的存储器单元阵列11的电路结构中,位线BL由各串单元SU中被分配了相同的列地址的NAND串NS共用。源极线SL例如在多个块BLK之间被共用。
在一个串单元SU内与共同的字线WL连接的多个存储器单元晶体管MT的集合,例如被称为单元格单元(cell unit)CU。例如,将分别包括存储1比特数据的存储器单元晶体管MT的单元格单元CU的存储容量定义为“1页数据”。单元格单元CU根据存储器单元晶体管MT存储的数据的比特数,可以具有2页数据以上的存储容量。
另外,有关实施方式的半导体存储装置10所包含的存储器单元阵列11的电路结构不限于以上说明的结构。例如,各NAND串NS包含的存储器单元晶体管MT以及选择晶体管ST1及ST2的个数可以分别设计为任意的个数。各块BLK包含的串单元SU的个数可以设计为任意的个数。
[1-4]主机接口电路33的结构
图4表示有关实施方式的存储器控制器30所包含的主机接口电路33的结构例。主机接口电路33例如包括命令缓冲器40、描述符缓冲器41、高速缓存42及DMA(Direct MemoryAccess,直接存储器存取)控制器43。
命令缓冲器40保存基于主机设备2的提交队列SQ的命令。命令缓冲器40例如包括缓冲区域CB0~CB(m-1)(m为1以上的整数)。例如,缓冲区域CB分别保存一个命令。存储器***1根据在命令缓冲器40保存的命令,执行读出动作、写入动作、擦除动作等。命令的尺寸例如是64字节。
描述符缓冲器41保存基于在命令缓冲器40保存的命令的描述符。描述符缓冲器41例如包括缓冲区域DB0~DB(n-1)(n为1以上的整数)。例如,缓冲区域DB分别保存一个描述符。存储器***1根据在描述符缓冲器41保存的描述符,在主机设备2的传输区域TA内分配存储器***1及主机设备2之间的数据传输所使用的存储区域。
高速缓存42例如是SRAM等易失性存储器。高速缓存42例如被用作存储器***1和主机设备2之间的数据传输中的临时性的存储区域。DMA控制器43控制存储器***1及主机设备2之间的数据传输。使用了DMA控制器43的数据传输,不经由CPU31的控制即被执行。
另外,实施方式中的存储器控制器30所包含的主机接口电路33的结构不限于此以上说明的结构。例如,只要高速缓存42或DMA控制器43至少包含在存储器控制器30内即可。另外,也可以省略DMA控制器43。在这种情况下,存储器控制器30及主机设备2之间的数据传输由CPU31控制。
[2]动作
[2-1]存储器***1的动作执行序列
下面,使用图5对有关实施方式的存储器***1的动作执行序列进行说明。图5是表示有关实施方式的存储器***1的动作执行序列的一例的流程图。
在与使存储器***1执行的规定的动作对应的至少一个命令被存储于提交队列SQ时,主机设备2通知存储器***1已存储命令(步骤S10)。存储器控制器30当被通知在提交队列SQ中存储有命令时,向主机设备2请求命令的传输(步骤S11)。
在被请求命令的传输时,主机设备2将在提交队列SQ存储的命令传输给存储器控制器30(步骤S12)。存储器控制器30在从主机设备2接收到命令时,将该命令存储在命令缓冲器40中(步骤S13)。
然后,存储器控制器30根据需要执行缓冲器释放动作(步骤S14)。步骤S14中的缓冲器释放动作例如是在描述符缓冲器41的空闲区域不足时执行。另一方面,在描述符缓冲器41的空闲区域充足的情况下,步骤S14中的缓冲器释放动作被跳过。关于缓冲器释放动作的具体情况在后面进行说明。
然后,存储器控制器30根据通过步骤S13的处理被存储于命令缓冲器40的命令,向主机设备2请求描述符的传输(步骤S15)。存储器控制器30使用通过缓冲器释放动作而空出的区域获取与满足规定的条件的命令对应的描述符。即,CPU31将与满足规定的条件的命令对应的描述符,替代优先度较低的描述符而存储在描述符缓冲器41中。在被请求描述符的传输时,主机设备2将在描述符存储器DM存储的多个描述符中由存储器控制器30请求的描述符,传输给存储器控制器30(步骤S16)。存储器控制器30在从主机设备2接收到描述符时,将该描述符存储在描述符缓冲器41中(步骤S17)。
并且,存储器控制器30执行基于在描述符缓冲器41存储的描述符的动作(步骤S18)。在步骤S18中,存储器控制器30根据在描述符缓冲器41存储的描述符,指示主机设备2分配在存储器***1及主机设备2之间的数据传输中使用的存储区域(传输区域TA内的数据区域)。
然后,存储器控制器30执行基于在命令缓冲器40存储的命令和在描述符缓冲器41存储的描述符的动作。换言之,存储器控制器30使用根据在描述符缓冲器41存储的描述符而在传输区域TA内所分配的数据区域,执行基于在命令缓冲器40存储的命令的动作(例如读出动作、写入动作等)(步骤S19)。
例如,当在步骤S19中执行读出动作的情况下,存储器控制器30向与在描述符缓冲器41存储的描述符对应的传输区域TA,发送由半导体存储装置10读出的数据。当在步骤S19中执行写入动作的情况下,存储器控制器30接收与在描述符缓冲器41存储的描述符对应的传输区域TA所保存的数据,使半导体存储装置10执行写入动作。即,存储器控制器30对半导体存储装置10和主机设备2之间的数据传输进行中继。
在以上说明的动作执行序列中,存储器控制器30在执行基于NVMe标准的动作的情况下,对在数据传输中使用的存储区域的分配使用PRP(Physical Region Page,物理区域页)或者SGL(Scatter Gather List,分散聚合表)。至于使用PRP及SGL哪一方,根据在命令缓冲器40保存的命令决定。下面,简洁地说明在有关实施方式的存储器***1中使用了PRP时的动作序列和使用了SGL时的动作序列的概况。
(使用了PRP时的动作序列)
在PRP中,对除开头和末尾以外的描述符一律分配相同尺寸的存储区域。在使用了PRP时的动作序列中,存储器控制器30根据描述符对传输区域TA分配的数据区域的尺寸,例如一律被指定为页尺寸。图6是表示在有关实施方式的存储器***1中使用PRP时的动作序列的一例的示意图。图6所示的“S12”及“S16”分别对应于使用图5说明的步骤S12及S16的处理。
图6中的命令包括指示PRP的使用的命令和数据指针PRP1及PRP2。
另外,在PRP中,在步骤S18的处理之前,数据指针PRP1所包含的描述符被从命令缓冲器40传输给描述符缓冲器41。其结果是,描述符缓冲器41存储从命令缓冲器40所传输的PRP条目(entry)ENT0、和根据数据指针PRP2从描述符存储器DM所传输的PRP列表。
PRP条目及PRP列表是指定在数据传输中使用的存储区域的描述符。PRP条目ENT0包括对传输区域TA分配的数据区域的开头的地址信息。PRP列表包括对传输区域TA分配的数据区域之后的地址信息。PRP列表例如在所对应的命令中的数据的传输量在PRP条目ENT0不足的情况下使用。PRP列表例如包括表示继PRP条目ENT0之后的地址信息的PRP条目ENT1及ENT2。
另外,PRP条目ENT0、PRP条目ENT1及PRP条目ENT2分别指定传输区域TA的地址“A”、地址“B”及地址“C”。在传输区域TA中被分配了基于PRP条目ENT0的4KB的数据区域A、基于PRP条目ENT1的4KB的数据区域B、和基于PRP条目ENT2的4KB的数据区域C。
另外,在以上的说明中示例了PRP列表具有两个PRP条目的情况,但不限于此。PRP列表所包含的PRP条目的数量可以设定为任意的数量。当在一个PRP列表中不能确保传输区域TA所需要的数据区域的情况下,PRP列表还可以包含用于指定下一个PRP列表的信息。
(使用了SGL时的动作序列)
在SGL中对一个描述符分配任意尺寸的存储区域。在使用了SGL时的动作序列中,存储器控制器30根据描述符对传输区域TA分配的数据区域的尺寸可以分别单独指定。图7是表示在有关实施方式的存储器***1中使用SGL时的动作序列的一例的示意图。图7所示的“S12”及“S16”分别对应于使用图5说明的步骤S12及S16的处理。
基于数据指针SGL1的描述符包括SGL扇区SEG0。SGL扇区是指定在数据传输中使用的区域的描述符。SGL扇区SEG0包括对传输区域TA分配的数据区域的开头的地址信息和在传输区域TA中确保的数据长度的信息(例如3KB)。SGL扇区SEG0有时包括表示下一个的SGL扇区SEG1的信息。
在SGL扇区SEG0包括表示下一个的SGL扇区SEG1的信息的情况下,存储器控制器30指示主机设备2传输与SGL扇区SEG1对应的描述符。SGL扇区SEG1例如包括指定继SGL扇区SEG0之后的地址的地址信息、在传输区域TA中确保的数据长度的信息(例如16KB)、和表示下一个的SGL扇区SEG2的信息。
在SGL扇区SEG1包括表示下一个的SGL扇区SEG2的信息的情况下,存储器控制器30指示主机设备2传输与SGL扇区SEG2对应的描述符。SGL扇区SEG2例如包括指定继SGL扇区SEG1之后的地址的地址信息、在传输区域TA中确保的数据长度的信息(例如4KB)。存储器控制器30接收到的SGL扇区SEG1及SEG2分别被存储在描述符缓冲器41中。
在图7的例子中,SGL扇区SEG2相当于与SGL扇区SEG1建立关联的最后的SGL扇区SEG。SGL扇区SEG0、SEG1及SEG2分别指定传输区域TA的地址“A”、地址“B”及地址“C”。在传输区域TA中例如被分配了基于SGL扇区SEG0的3KB的数据区域A、基于SGL扇区SEG1的16KB的数据区域B、和基于SGL扇区SEG2的4KB的数据区域C。
另外,在以上的说明中,示例了根据数据指针SGL1传输SGL扇区SEG1、根据数据指针SGL1传输SGL扇区SEG2的情况,但不限于此。根据数据指针SGL1而传输的SGL扇区SEG的数量,可以根据该命令所需要的数据尺寸设定为任意的数量。
[2-2]缓冲器释放动作
有关实施方式的存储器***1,当在命令缓冲器40存储有多个命令的情况下,相对于与这些命令对应的描述符的总数,有时描述符缓冲器41的容量不足。针对此情况,有关实施方式的存储器***1能够执行缓冲器释放动作。缓冲器释放动作是从在描述符缓冲器41已存储的多个描述符中,将满足规定的条件的描述符废弃的动作。
图8是表示有关实施方式的存储器***1的缓冲器释放动作的一例的流程图。另外,在下面的说明中,将根据在命令缓冲器40存储的命令被存储于描述符缓冲器41的描述符称为已获取(fetch)的描述符。将根据在描述符缓冲器41存储的描述符在传输区域TA确保的存储区域,称为已获取的数据区域。
存储器控制器30判定在描述符缓冲器41中是否具有空闲区域(步骤S20)。
当判定为在描述符缓冲器41中具有空闲区域的情况下(步骤S20:是),存储器控制器30结束缓冲器释放动作(结束)。当判定为在描述符缓冲器41中没有空闲区域的情况下(步骤S20:否),存储器控制器30确认最近刚刚接收到的命令的属性(步骤S21)。命令的属性包括在后述的规定的条件下使用的参数及信息。
存储器控制器30判定最近刚刚接收到的命令的属性是否满足规定的条件(步骤S22)。当判定为最近刚刚接收到的命令的属性不满足规定的条件的情况下(步骤S22:否),存储器控制器30待机一直到描述符缓冲器41空闲为止(步骤S23),并结束缓冲器释放动作(结束)。当判定为最近刚刚接收到的命令的属性满足规定的条件的情况下(步骤S22:是),存储器控制器30将已获取的描述符中优先度较低的描述符的组废弃(步骤S24)。关于步骤S22中的规定的条件的具体情况在后面进行说明。
图9是表示有关实施方式的存储器***1的完成处理的一例的流程图。通过步骤S19的处理,在与一个命令对应的动作完成时,存储器控制器30执行完成处理。
存储器控制器30将在命令缓冲器40存储的动作已完成的命令废弃(步骤S30)。
在步骤S30的处理之后,存储器控制器30判定在命令缓冲器40存储的全部命令的处理是否完成(步骤S31)。
在步骤S31的处理中,当判定为在命令缓冲器40存储的全部命令的处理已完成的情况下(步骤S31:是),存储器控制器30结束完成处理,进入待机状态(结束)。
在步骤S31的处理中,当判定为在命令缓冲器40存储的全部命令的处理未完成的情况下(步骤S31:否),存储器控制器30判定在命令缓冲器40存储的命令中是否包含被设为缓冲器释放动作的对象的命令(步骤S32)。
在步骤S32的处理中,当判定为不包含被设为缓冲器释放动作的对象的命令的情况下(步骤S32:否),存储器控制器30进入步骤S19的处理。
当判定为包含被设为缓冲器释放动作的对象的命令的情况下(步骤S32:是),存储器控制器30判定描述符缓冲器41是否空出必要容量(步骤S33)。即,存储器控制器30判定是否能够将与通过缓冲器释放动作而废弃的描述符相同的描述符、存储在通过最近的步骤S30的处理刚刚形成的描述符缓冲器41的空闲区域中。
在步骤S33的处理中,当判定为描述符缓冲器41未空出必要容量的情况下(步骤S33:否),存储器控制器30进入步骤S19的处理。
在步骤S33的处理中,当判定为描述符缓冲器41空出必要容量的情况下(步骤S33:是),存储器控制器30对与所废弃的描述符相同的描述符进行获取。具体地,主机设备2根据存储器控制器30的请求,从在描述符存储器DM保存的多个描述符中,将在由该命令指示的地址保存的描述符再次传输给存储器控制器30。换言之,主机设备2将对应某一命令已传输的描述符再次传输给存储器控制器30。
如上所述,在有关实施方式的存储器***1中,与成为缓冲器释放动作的对象的命令对应的描述符,可以从主机设备2向存储器控制器30传输多次。并且,存储器控制器30顺序地执行自步骤S16起的动作。然后,存储器控制器30反复执行上述的动作,一直到在步骤S31的处理中在命令缓冲器40存储的命令的处理全部完成为止。
下面,对步骤S22中的规定的条件的一例进行说明。作为步骤S22中的规定的条件,例如可以举出描述符数、NLB(Number of Logical Block,逻辑块数)、命令类别、优先度信息。
(基于描述符数的缓冲器释放动作)
首先,对基于描述符数的缓冲器释放动作进行说明。有关实施方式的存储器***1在执行基于描述符数的缓冲器释放动作的情况下,将已获取的描述符数较多的命令作为缓冲器释放动作的对象。
图10及图11是表示有关实施方式的存储器***1中基于描述符数的缓冲器释放动作的一例的示意图。另外,在下面的说明所参照的相同的附图中,为了简化说明,假设描述符缓冲器41仅具有缓冲区域DB0~DB7。另外,在图10及图11所示的一例中适用了PRP。
存储器控制器30根据通过步骤S13的处理而在命令缓冲器40存储的命令对描述符进行获取,有时描述符缓冲器41已满(步骤S20:否)。在图10(1)所示的例子中,与命令CMD0对应的描述符CMD0_D0~CMD0_D4分别被存储在缓冲区域DB0~DB4中,与命令CMD1对应的描述符CMD1_D0~CMD1_D2分别被存储在缓冲区域DB5~DB7中。并且,各描述符的传输量被固定为4KB。
存储器控制器30在接收到命令CMD2时(图10(2)),通过步骤S21的处理,确认所接收到的命令的属性(在本例中是指描述符数)。并且,作为规定的条件,存储器控制器30例如确认基于命令CMD2的描述符数是否比对应的描述符数最多的命令的描述符数少(步骤S22)。另外,在本处理中,关于是否满足规定的条件,至少根据描述符数进行判定即可。
然后,存储器控制器30在满足规定的条件的情况下(步骤S22:是),通过步骤S24的处理,将与已获取的描述符数较多的命令对应的描述符的一部分废弃。在图10(3)所示的例子中,在缓冲区域DB3及DB4存储的命令CMD0的描述符的一部分即CMD0_D3及CMD0_D4被废弃。
然后,存储器控制器30通过步骤S15的处理,向主机设备2请求基于命令CMD2的描述符的传输,主机设备2通过步骤S16的处理,将所请求的描述符传输给存储器控制器30(图10(4))。并且,存储器控制器30通过步骤S17的处理,将与命令CMD2对应的描述符CMD2_D0及CMD2_D1分别存储在缓冲区域DB3及DB4中。然后,存储器控制器30通过步骤S18的处理,指示主机设备2分配与描述符CMD2_D0及CMD2_D1对应的数据区域。然后,存储器控制器30通过步骤S19的处理,执行基于命令CMD2及描述符CMD2_D0~1的动作,即,根据描述符CMD2_D0及CMD2_D1并使用在传输区域TA内所分配的数据区域执行基于命令CMD2的动作(图10(5))。
在基于命令CMD2及描述符CMD2_D0~1的动作完成时,存储器控制器30执行步骤S30的处理中的动作的完成处理(图11(6))。在这种情况下,在缓冲区域DB3及DB4存储的命令CMD2的描述符CMD2_D0及CMD2_D1被废弃。由此,在描述符缓冲器41中形成空闲区域,因而存储器控制器30对与所废弃的描述符相同的描述符进行获取(图11(7))。具体地,存储器控制器30根据命令CMD0以及未被废弃而保留的命令CMD0的描述符CMD0_D0~2,向主机设备2再次请求CMD0_D3及CMD0_D4的传输。换言之,存储器控制器30从主机设备2对与通过缓冲器释放动作而废弃的描述符的一部分相同的描述符进行获取。并且,将所接收到的描述符CMD0_D3及CMD0_D4再次存储在缓冲区域DB3及DB4中。然后,存储器控制器30开始执行基于命令CMD0及描述符CMD0_D0~4的动作,即,开始根据描述符CMD0_D0~CMD0_D4并使用在传输区域TA内所分配的数据区域执行基于命令CMD0的动作(图11(8))。
另外,在以上的说明中,示例了与通过缓冲器释放动作而废弃的描述符相同的描述符被存储于在描述符缓冲器41内与被废弃前相同的地址的情况,但不限于此。用于存储与所废弃的描述符相同的描述符的地址,只要是描述符缓冲器41内的空闲地址即可,可以是任何的地址。
(基于NLB的缓冲器释放动作)
下面,对基于NLB的缓冲器释放动作进行说明。NLB表示根据已获取的描述符而传输的数据量。有关实施方式的存储器***1在执行基于NLB的缓冲器释放动作的情况下,将在已获取的描述符中NLB较大的命令作为缓冲器释放动作的对象。
图12是表示有关实施方式的存储器***1中基于NLB的缓冲器释放动作的一例的示意图。并且,在图12所示的一例中适用了SGL。若存储器控制器30根据通过步骤S13的处理而在命令缓冲器40存储的命令对描述符进行获取,则有时描述符缓冲器41已满(步骤S20:否)。在图12(1)所示的例子中,描述符CMD0_D0~CMD0_D4各自的传输量被设定为1KB,描述符CMD1_D0~CMD1_D2的传输量分别被设定为32KB、4KB、4KB。
存储器控制器30在接收到命令CMD2时(图12(2)),通过步骤S21的处理,确认所接收到的命令的属性(在本例中是指NLB)。并且,作为规定的条件,存储器控制器30例如确认基于命令CMD2的NLB是否比对应的NLB最大的命令的NLB小(步骤S22)。另外,在本处理中,关于是否满足规定的条件,至少根据NLB进行判定即可。
然后,存储器控制器30在满足规定的条件的情况下(步骤S22:是),通过步骤S24的处理,将与NLB较大的命令对应的描述符的一部分废弃(缓冲器释放动作)。在图12(3)所示的例子中,在缓冲区域DB6及DB7存储的命令CMD1的描述符CMD1_D1及CMD1_D2被废弃。
然后,存储器控制器30通过步骤S15的处理,向主机设备2请求基于命令CMD2的描述符的传输,主机设备2通过步骤S16的处理,将所请求的描述符传输给存储器控制器30(图12(4))。并且,存储器控制器30通过步骤S17的处理,将与命令CMD2对应的描述符CMD2_D0及CMD2_D1分别存储在缓冲区域DB6及DB7中。描述符CMD2_D0及CMD2_D1的数据传输量分别被设定为16KB、8KB,数据传输量大于所废弃的描述符。然后,存储器控制器30通过步骤S18的处理,指示主机设备2分配与描述符CMD2_D0及CMD2_D1对应的数据区域。然后,存储器控制器30通过步骤S19的处理,执行基于命令CMD2及描述符CMD2_D0~1的动作,即,根据描述符CMD2_D0及CMD2_D1并使用在传输区域TA内所分配的数据区域执行基于命令CMD2的动作(图12(5))。其它的动作与基于描述符数的缓冲器释放动作相同,因而省略说明。
(基于命令类别的缓冲器释放动作)
下面,对基于命令类别的缓冲器释放动作进行说明。命令类别表示根据该命令而执行的动作的类型。例如,命令类别与读出动作、写入动作等中的任一种动作对应。
有关实施方式的存储器***1在执行基于命令类别的缓冲器释放动作的情况下,将在已获取的描述符中基于与优先度较低的命令类别对应的命令的描述符作为缓冲器释放动作的对象。
图13是表示有关实施方式的存储器***1中基于NLB的缓冲器释放动作的一例的示意图。若存储器控制器30根据通过步骤S13的处理而在命令缓冲器40存储的命令对描述符进行获取,则有时描述符缓冲器41已满(步骤S20:否)。在图13(1)所示的例子中,描述符CMD0_D0~CMD0_D4的命令类别被设定为写入(Write),描述符CMD1_D0~CMD1_D2的命令类别被设定为读出(Read)。并且,写入(Write)被设定为优先度较低,读出(Read)被设定为优先度较高。
存储器控制器30在接收到命令CMD2时(图13(2)),通过步骤S21的处理,确认所接收到的命令的属性(在本例中是指命令类别)。并且,作为规定的条件,存储器控制器30确认命令CMD2的命令类别的优先度是否比已获取的命令CMD0及CMD1的命令类别高(步骤S22)。另外,在本处理中,关于是否满足规定的条件,至少根据命令类别进行判定即可。
然后,存储器控制器30在满足规定的条件的情况下(步骤S22:是),通过步骤S24的处理,存储器控制器30将根据属于优先度较低的命令类别的命令而获取的描述符的一部分废弃(缓冲器释放动作)。在图13(3)所示的例子中,在缓冲区域DB3及DB4存储的命令CMD0的描述符CMD0_D3及CMD0_D4被废弃。
然后,存储器控制器30通过步骤S15的处理,向主机设备2请求基于命令CMD2的描述符的传输,主机设备2通过步骤S16的处理,将所请求的描述符传输给存储器控制器30(图13(4))。并且,存储器控制器30通过步骤S17的处理,将与命令CMD2对应的描述符CMD2_D0及CMD2_D1分别存储在缓冲区域DB6及DB7中。描述符CMD2_D0及CMD2_D1的命令类别被设定为读出。然后,存储器控制器30通过步骤S18的处理,指示主机设备2分配与描述符CMD2_D0及CMD2_D1对应的数据区域。然后,存储器控制器30通过步骤S19的处理,执行基于命令CMD2及描述符CMD2_D0~1的动作,即,根据描述符CMD2_D0及CMD2_D1并使用在传输区域TA内所分配的数据区域执行基于命令CMD2的动作(图13(5))。其它的动作与基于描述符数的缓冲器释放动作相同,因而省略说明。
(基于优先度信息的缓冲器释放动作)
下面,对基于优先度信息的缓冲器释放动作进行说明。作为优先度信息,例如能够利用写入的优先度设定、数据的传输方法、延迟时间信息、数据集管理的值等所有参数。
在此,对优先度信息中的优先度的设定方法的一例进行说明。存储器***1有时通过由描述符缓冲器41保存与多个命令CMD分别对应的多组的描述符,进行对多个半导体存储装置10的并行处理。并且,存储器***1保存多组所需描述符数较少的命令CMD进行并行处理的可能性,大于保存所需描述符数较多的命令CMD的可能性。因此,作为优先度的设定方法,考虑使所需描述符数较少的命令CMD的优先度高于所需描述符数较多的命令CMD的优先度。
作为具体例,对使用数据的传输方法作为优先度信息时的优先度的设定例进行简洁说明。作为数据的传输方法,可以举出序列性传输和随机传输。并且,序列性传输由于指定的地址的数量少于随机传输,因而具有以比随机传输少的描述符数即可完成的倾向。因此,在使用数据的传输方法作为优先度信息的情况下,例如序列性传输的优先度被设定为高(High),随机传输被设定为低(Low)。
有关实施方式的存储器***1在执行基于优先度信息的缓冲器释放动作的情况下,将在已获取的描述符中基于与优先度较低的动作对应的命令的描述符作为缓冲器释放动作的对象。
图14是表示有关实施方式的存储器***1中基于优先度的缓冲器释放动作的一例的示意图。存储器控制器30根据通过步骤S13的处理而在命令缓冲器40存储的命令对描述符进行获取,有时描述符缓冲器41已满(步骤S20:否)。在图14(1)所示的例子中,描述符CMD0_D0~CMD0_D4的优先度被设定为较低,描述符CMD1_D0~CMD1_D2的优先度被设定为较高。具体地,例如优先度较低的描述符CMD0_D0~CMD0_D4对应于随机传输,优先度较高的描述符CMD1_D0~CMD1_D2对应于序列性传输。
然后,存储器控制器30在接收到命令CMD2时(图14(2)),通过步骤S21的处理,确认所接收到的命令的属性(在本例中是指优先度信息)。并且,作为规定的条件,存储器控制器30确认命令CMD2的基于优先度信息的优先度是否比已获取的命令CMD0及CMD1高(步骤S22)。另外,在本处理中,关于是否满足规定的条件,至少根据优先度信息进行判定即可。
然后,存储器控制器30在满足规定的条件的情况下(步骤S22:是),通过步骤S24的处理,将与优先度较低的命令对应的描述符的一部分废弃。在图14(3)所示的例子中,在缓冲区域DB3及DB4存储的命令CMD0的描述符CMD0_D3及CMD0_D4被废弃。
然后,存储器控制器30向主机设备2请求基于命令CMD2的描述符的传输(图14(4))。并且,存储器控制器30将与命令CMD2对应的描述符CMD2_D0及CMD2_D1分别存储在缓冲区域DB6及DB7中。描述符CMD2_D0及CMD2_D1被设定为优先度较高,使成为优先度比被废弃的描述符高的设定。然后,存储器控制器30执行基于命令CMD2及描述符CMD2_D0~1的动作,即,根据描述符CMD2_D0及CMD2_D1并使用在传输区域TA内所分配的数据区域执行基于命令CMD2的动作(图14(5))。其它的动作与基于描述符数的缓冲器释放动作相同,因而省略说明。
[3]实施方式的效果
根据有关实施方式的存储器***1,能够使存储器***1的动作高速化。下面,对有关实施方式的存储器***1的具体效果进行说明。
SSD等存储器***1在执行基于主机设备2的指示的动作时,向主机设备2请求基于所执行的命令的描述符的传输。然后,主机设备2将由存储器***1请求的描述符传输给存储器***。在NVMe中,作为这种基于命令的描述符的传输方式,使用PRP及SGL。PRP及SGL分别能够进行Scatter/Gather的传输,因而构成描述符链。
与PRP及SGL对应的描述符被存储在主机设备2内的描述符存储器DM中。因此,存储器控制器30需要在进行主机设备2和存储器***1之间的数据传输前,进行在描述符存储器DM存储的描述符的获取(预取:prefetch)。存储器控制器30将预取的数据存储在例如描述符缓冲器41中。
考虑对描述符缓冲器41例如按照每个命令分配固定区域的情况。在这种情况下,描述符缓冲器41中的区域的管理容易进行,可以同时执行的命令的数量始终固定(在描述符缓冲器41可以存储的最大的命令数)。
另一方面,关于需要比固定区域大的区域的命令,对一个命令分配多个固定区域。在这种情况下,在所分配的固定区域内可能产生未使用的区域。另外,在被分配了多个固定区域的命令中,在对应的描述符的传输尺寸较小的情况下,基于在描述符缓冲器41存储的描述符的合计的传输尺寸减小。即,存储器***1及主机设备2之间的数据传输量减少,存储器***1的传输性能有可能降低。并且,在需要多个固定区域的命令增多时,存储器***1可以进行预取的命令的数量减少。在这种情况下,有可能产生在存储器***1不能预取可以并行处理的命令的可能性。
另外,说明对描述符缓冲器41按照每个命令分配所需要的区域的情况。在这种情况下,对描述符缓冲器41的使用区域较大的命令分配适当的区域。因此,存储器控制器30能够管理描述符缓冲器41的区域使得空闲区域减少,并能够抑制预取的命令的数量减少。另一方面,说明描述符缓冲器41的使用区域较大、而且预取不能进行并行处理的多个命令的情况。在这种情况下,存储器***1及主机设备2之间的数据传输量减少,存储器***1的传输性能有可能降低。
针对如上所述的存储器分配方法,为了抑制传输性能的降低,还考虑增大描述符缓冲器41的容量的情况。但是,在增大描述符缓冲器41的容量的情况下,需要较大的电路面积,存储器***1的制造成本有可能升高。
因此,有关实施方式的存储器***1动态地释放描述符缓冲器41,并执行再分配。换言之,有关实施方式的存储器***1通过将优先度较低的动作的描述符临时废弃,使优先处理优先度较高的动作。
具体地,有关实施方式的存储器***1接收新的命令,在描述符缓冲器41的空闲区域充足的情况下,执行描述符的获取。另外,有关实施方式的存储器***1接收新的命令,在描述符缓冲器41的空闲区域不足的情况下,从描述符缓冲器41中将未使用描述符临时废弃,将其区域用于新的命令的描述符的获取。
在有关实施方式的存储器***1中,在描述符缓冲器41存储的描述符的再分配的算法可以使用各种各样的方法。例如,有关实施方式的存储器***1根据描述符数、NLB、命令类别或优先度信息等,执行描述符缓冲器41的缓冲器释放动作。
例如,读出动作由于内部延迟(latency)时间较大,因而针对多个半导体存储装置10可以并行执行的命令数比写入动作多。因此,在新的命令对应于读出动作、在已获取的描述符中包含与写入动作对应的描述符的情况下,将与写入动作对应的已获取的描述符废弃,获取与读出动作对应的描述符比较有效。
其结果是,有关实施方式的存储器***1能够灵活地优化传输性能,能够在有限的存储器容量下有效地发挥传输性能。即,有关实施方式的存储器***1能够提高多个半导体存储装置10的利用效率。另外,有关实施方式的存储器***1在利用其它算法的情况下,也能够获得相同的效果。各种算法可以适当定制,可以提高对于用户最适合的性能。
[4]变形例等
实施方式的存储器***包括半导体存储装置和存储器控制器。存储器控制器控制半导体存储装置和外部的主机设备之间的数据传输,具有命令缓冲器和描述符缓冲器。存储器控制器将从外部接收到的第一命令存储在所述命令缓冲器中,根据所存储的所述第一命令从所述主机设备获取第一描述符,将所获取的所述第一描述符存储在所述描述符缓冲器中,将从外部接收到的第二命令存储在所述命令缓冲器中,将未使用的所述第一描述符的一部分从所述描述符缓冲器中废弃,根据所存储的所述第二命令从主机设备获取第二描述符,在存储有所废弃的所述第一描述符的一部分的地址存储所获取的所述第二描述符。由此,有关实施方式的存储器***能够使动作高速化。
在有关实施方式的存储器***1的动作说明中,示例了在描述符缓冲器41已满的状态下,存储器控制器30重新接收一个命令的情况,但不限于此。存储器控制器30也可以按照命令缓冲器40具有空闲区域的量,适当接收新的命令。并且,存储器控制器30可以适当地执行缓冲器释放动作。
在有关实施方式的存储器***1的动作说明中,作为一例举出了NVMe,但在其他的接口标准中也能够同样地进行动作。有关实施方式的存储器***1执行这样的动作即可:将至少存储器控制器30已获取而且对应的动作未完成的描述符废弃,再获取在描述符存储器DM的相同地址存储的描述符。
在本说明书中,所谓“相同描述符”是指在描述符存储器DM中被存储于相同地址的描述符。在实施方式中,缓冲器释放动作中的描述符缓冲器41的缓冲区域的释放尺寸可以适当变更。实施方式中的存储器***1按照可以获取至少与新的命令对应的描述符的量释放缓冲区域DB即可。
在实施方式中,关于缓冲器释放动作的算法说明了几种情况,但也可以将这些算法进行组合。也可以是,存储器***1例如考虑描述符数和NLB双方来执行缓冲器释放动作。关于其它的算法,同样也可以进行组合,还可以使用三种以上的算法复合地决定缓冲器释放动作的优先度。
在实施方式中,示例了通过缓冲器释放动作将动作未完成的描述符废弃的情况,但不限于此。例如,也可以是,存储器控制器30将基于新的命令的描述符覆盖在存储有作为缓冲器释放动作的对象的描述符的地址上。在这种情况下,对被覆盖的描述符,进行与在实施方式中所说明的各缓冲器释放动作中被废弃的描述符相同的处理。另外,也可以是,存储器控制器30在从主机设备2再获取被覆盖的描述符时执行描述符的覆盖。在这种情况下,存储器***也能够获得与实施方式相同的效果。
以上说明了本发明的几个实施方式,但这些实施方式是作为例子提示的,并非意图限定发明的范围。这些新的实施方式能够以其他各种各样的方式实施,在不脱离发明的主旨的范围内能够进行各种各样的省略、替换、变更。这些实施方式及其变形包含在发明的范围或主旨中,并且包含在权利要求书所记载的发明和其等价的范围中。

Claims (9)

1.一种存储器***,具有:
半导体存储装置;以及
存储器控制器,控制所述半导体存储装置和外部的主机设备之间的数据传输,具有命令缓冲器和描述符缓冲器;
所述存储器控制器进行如下处理:
将从外部接收到的第一命令存储在所述命令缓冲器中;
根据所存储的所述第一命令从所述主机设备获取第一描述符;
将所获取的所述第一描述符存储在所述描述符缓冲器中;
将从外部接收到的第二命令存储在所述命令缓冲器中;
将未使用的所述第一描述符的一部分从所述描述符缓冲器中废弃;
根据所存储的所述第二命令从所述主机设备获取第二描述符;以及
在存储有所废弃的所述第一描述符的一部分的地址存储所获取的所述第二描述符。
2.根据权利要求1所述的存储器***,
所述存储器控制器根据所述第二命令的优先度,将未使用的所述第一描述符的一部分从所述描述符缓冲器中废弃。
3.根据权利要求1所述的存储器***,
所述存储器控制器根据所述描述符缓冲器的空闲,将未使用的所述第一描述符的一部分从所述描述符缓冲器中废弃。
4.根据权利要求1~3中任一项所述的存储器***,
所述存储器控制器,
在使用根据在所述描述符缓冲器存储的所述第二描述符对所述主机设备分配的区域,执行基于在所述命令缓冲器存储的所述第二命令的动作之后,
根据所存储的所述第一命令,从所述主机设备获取与所废弃的所述第一描述符的一部分相同的描述符即第三描述符,并且
将所获取的所述第三描述符存储在所述描述符缓冲器中。
5.根据权利要求1~3中任一项所述的存储器***,
所述存储器控制器根据与在所述命令缓冲器存储的命令对应的描述符的数判定是否将所述第一描述符废弃,
所述存储器控制器根据所述第一命令从所述主机设备获取的描述符的数,比所述存储器控制器根据所述第二命令从所述主机设备获取的描述符的数多。
6.根据权利要求1~3中任一项所述的存储器***,
所述存储器控制器根据与在所述描述符缓冲器存储的描述符对应的数据传输量判定是否将所述第一描述符废弃,
基于所述第一描述符的所述存储器***和所述主机设备之间的数据传输量,比基于所述第二描述符的所述存储器***和所述主机设备之间的数据传输量多。
7.根据权利要求1~3中任一项所述的存储器***,
所述存储器控制器,
确认与所述第一命令对应的动作的类型;
在所述动作的类型是写入动作的情况下,判定为将所存储的所述第一描述符从所述描述符缓冲器中废弃;以及
在所述动作的类型是读出动作的情况下,判定为不将所存储的所述第一描述符从所述描述符缓冲器中废弃。
8.一种存储器***,具有:
半导体存储装置;以及
存储器控制器,控制所述半导体存储装置和外部的主机设备之间的数据传输,具有命令缓冲器和描述符缓冲器;
所述存储器控制器进行如下处理:
将从外部接收到的第一命令存储在所述命令缓冲器中;
根据所存储的所述第一命令从所述主机设备获取第一描述符;
将所获取的所述第一描述符存储在所述描述符缓冲器中;
将从外部接收到的第二命令存储在所述命令缓冲器中;
根据所存储的所述第二命令从所述主机设备获取第二描述符;以及
将所获取的所述第二描述符覆盖在存储有未使用的所述第一描述符的一部分的地址。
9.根据权利要求8所述的存储器***,
所述存储器控制器,
在使用根据在所述描述符缓冲器存储的所述第二描述符对所述主机设备分配的区域,执行基于在所述命令缓冲器存储的所述第二命令的动作之后,
根据所存储的所述第一命令,从所述主机设备获取与被覆盖了所述第二描述符的所述第一描述符的一部分相同的描述符即第三描述符,并且
将所获取的所述第三描述符存储在所述描述符缓冲器中。
CN201910847002.7A 2019-03-19 2019-09-09 存储器*** Active CN111722792B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2019-050674 2019-03-19
JP2019050674A JP2020154493A (ja) 2019-03-19 2019-03-19 メモリシステム

Publications (2)

Publication Number Publication Date
CN111722792A CN111722792A (zh) 2020-09-29
CN111722792B true CN111722792B (zh) 2023-08-22

Family

ID=72515406

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910847002.7A Active CN111722792B (zh) 2019-03-19 2019-09-09 存储器***

Country Status (4)

Country Link
US (1) US10963190B2 (zh)
JP (1) JP2020154493A (zh)
CN (1) CN111722792B (zh)
TW (1) TWI707361B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113485643B (zh) * 2021-07-01 2023-10-31 成都忆芯科技有限公司 用于数据存取的方法及数据写入的控制器
US11861224B2 (en) 2021-10-26 2024-01-02 Western Digital Technologies, Inc. Data transfer management from host buffers
US11656798B1 (en) 2021-12-03 2023-05-23 Western Digital Technologies, Inc. Immediate partial host buffer fetching

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102411549A (zh) * 2010-09-22 2012-04-11 株式会社东芝 存储器***、主机控制器以及dma的控制方法
CN102799392A (zh) * 2012-06-16 2012-11-28 北京忆恒创源科技有限公司 存储设备及其中断控制方法
CN109426442A (zh) * 2017-08-28 2019-03-05 爱思开海力士有限公司 数据存储装置及其操作方法
CN109426627A (zh) * 2017-08-28 2019-03-05 爱思开海力士有限公司 数据存储装置及其操作方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7620749B2 (en) 2007-01-10 2009-11-17 International Business Machines Corporation Descriptor prefetch mechanism for high latency and out of order DMA device
US8683126B2 (en) 2007-07-30 2014-03-25 Nvidia Corporation Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory
JP2009065564A (ja) 2007-09-07 2009-03-26 Sony Corp 受信端末装置、受信データ格納方法、プログラム及び記録媒体
US7912997B1 (en) * 2008-03-27 2011-03-22 Xilinx, Inc. Direct memory access engine
US9552175B2 (en) * 2011-02-08 2017-01-24 Diablo Technologies Inc. System and method for providing a command buffer in a memory system
US9460024B2 (en) * 2013-03-15 2016-10-04 Vmware, Inc. Latency reduction for direct memory access operations involving address translation
US9608842B2 (en) * 2013-12-13 2017-03-28 Intel Corporation Providing, at least in part, at least one indication that at least one portion of data is available for processing
KR102367982B1 (ko) * 2015-06-22 2022-02-25 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10324872B2 (en) * 2016-09-20 2019-06-18 Intel IP Corporation Interrupt-vector translation lookaside buffer

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102411549A (zh) * 2010-09-22 2012-04-11 株式会社东芝 存储器***、主机控制器以及dma的控制方法
CN102799392A (zh) * 2012-06-16 2012-11-28 北京忆恒创源科技有限公司 存储设备及其中断控制方法
CN109426442A (zh) * 2017-08-28 2019-03-05 爱思开海力士有限公司 数据存储装置及其操作方法
CN109426627A (zh) * 2017-08-28 2019-03-05 爱思开海力士有限公司 数据存储装置及其操作方法

Also Published As

Publication number Publication date
US10963190B2 (en) 2021-03-30
TW202036550A (zh) 2020-10-01
US20200301609A1 (en) 2020-09-24
JP2020154493A (ja) 2020-09-24
CN111722792A (zh) 2020-09-29
TWI707361B (zh) 2020-10-11

Similar Documents

Publication Publication Date Title
US11868618B2 (en) Data reading and writing processing from and to a semiconductor memory and a memory of a host device by using first and second interface circuits
US11237769B2 (en) Memory system and method of controlling nonvolatile memory
US11188259B2 (en) Storage device and method of operating the storage device
CN113906383B (zh) 主机***和存储器子***之间的定时数据传送
KR100939145B1 (ko) 메모리 디바이스
US20190087343A1 (en) Methods for Caching and Reading Data to be Programmed into a Storage Unit and Apparatuses Using the Same
US11086568B2 (en) Memory system for writing fractional data into nonvolatile memory
CN114817094B (zh) 控制器和具有控制器的存储器***
CN111722792B (zh) 存储器***
US20200393994A1 (en) Multi-Pass Data Programming in a Memory Sub-System having Multiple Dies and Planes
US20230091792A1 (en) Memory system and method of controlling nonvolatile memory
US11755217B2 (en) Memory system and method of controlling nonvolatile memory
US11573891B2 (en) Memory controller for scheduling commands based on response for receiving write command, storage device including the memory controller, and operating method of the memory controller and the storage device
US9990280B2 (en) Methods for reading data from a storage unit of a flash memory and apparatuses using the same
TWI626540B (zh) 一般及垃圾回收的資料存取方法以及使用該方法的裝置
JP2019148913A (ja) メモリシステム
US11651803B2 (en) Method and apparatus and computer program product for reading data from multiple flash dies
JP2023039459A (ja) メモリシステムおよび方法
US11966327B2 (en) Memory system
EP4390651A1 (en) Memory system and method of controlling nonvolatile memory
US10387076B2 (en) Methods for scheduling data-programming tasks and apparatuses using the same
JP2022146531A (ja) メモリシステム

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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: Tokyo, Japan

Applicant after: Kaixia Co.,Ltd.

Address before: Tokyo, Japan

Applicant before: TOSHIBA MEMORY Corp.

GR01 Patent grant
GR01 Patent grant