CN108132895A - 配置为与主机执行双向通信的存储装置及其操作方法 - Google Patents
配置为与主机执行双向通信的存储装置及其操作方法 Download PDFInfo
- Publication number
- CN108132895A CN108132895A CN201711210089.4A CN201711210089A CN108132895A CN 108132895 A CN108132895 A CN 108132895A CN 201711210089 A CN201711210089 A CN 201711210089A CN 108132895 A CN108132895 A CN 108132895A
- Authority
- CN
- China
- Prior art keywords
- request
- host
- storage device
- response
- controller
- 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.)
- Granted
Links
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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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
- 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/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
-
- 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/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
- 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
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
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
本申请要求于2016年12月1日提交到韩国知识产权局的第10-2016-0162966号韩国专利申请的优先权,所述韩国专利申请的全部内容通过引用合并于此。
技术领域
本公开的实施例涉及一种存储装置,更具体地,涉及提高被配置为与主机执行双向通信的存储装置的吞吐量的装置及其操作方法。
背景技术
现在,各种电子装置(诸如,高容量固态驱动器(SSD)、智能电话、桌上型计算机、膝上型计算机、平板PC和可穿戴装置)正被广泛使用。通常,每个电子装置包括用于存储数据的存储装置。更具体地,为了应对电子装置的高容量和高速度趋势,已经针对提高电子装置的存储装置的容量以及提高存储装置的速度做出了很多努力。在不懈的努力中,已经采用了用于电子装置的应用处理器(主机)与存储装置之间的接口的各种协议。
同时,已经针对提高基于各种协议的应用处理器与存储装置之间的双向通信的吞吐量做了大量努力。
发明内容
本公开的实施例提供一种用于提高被配置为执行与主机的双向通信的存储装置的吞吐量的装置及其操作方法。
根据实施例的一方面,存储装置被配置为执行与主机的双向通信。存储装置包括:控制器,生成包括与主机相关联的第一请求和第二请求的多个请求,并且对所述多个请求进行排序,使得所述多个请求包括第一请求中的至少一个第一请求和第二请求中的至少两个连续的第二请求。
根据实施例的另一方面,存储装置的控制器被配置为执行与主机的双向通信。所述控制器包括:接口电路和请求调度器。接口电路包括:应用层,被配置为生成包括与主机相关联的第一请求和第二请求的多个请求。请求调度器对所述多个请求进行排序,使得所述多个请求包括第一请求中的至少一个第一请求和第二请求中的至少两个连续的第二请求。
根据实施例的另一方面,被配置为执行与主机的双向通信的存储装置的操作方法生成包括第一请求和第二请求的多个请求。所述方法对所述多个请求进行排序,使得所述多个请求包括第一请求中的至少一个第一请求和第二请求中的至少两个连续的第二请求。参照所述至少两个连续的第二请求的数量与所述至少一个第一请求的数量的比率、所述至少两个连续的第二请求的数量或者响应于第二请求从主机接收的响应的接收频率,来对所述多个请求进行排序。
根据实施例的另一方面,非易失性存储器存储装置包括:非易失性存储器和存储器控制器。存储器控制器从主机接收命令,响应于所述命令而生成第一请求和第二请求,将第一请求和第二请求的序列从第一请求和第二请求的生成顺序重新排序使得序列内的第二请求的数量超过序列内的第一请求的数量。存储器控制器将序列通信到主机并且根据生成的第一请求和第二请求访问非易失性存储器。
附图说明
从下面参照附图的描述,上面的和其他的目的和特征将变得清楚,其中,除非另有指示,否则贯穿各个附图,相同的参考标号表示相同的部件,其中:
图1是示出根据本公开的实施例的存储装置的框图;
图2是示出图1中示出的存储装置的配置的框图;
图3是示出根据本公开的实施例的存储装置的操作的框图;
图4是示出根据本公开的实施例的存储装置的操作的框图;
图5是示出当对存储装置执行混合的工作负载时存储装置的操作的框图;
图6是示出图1至图5中示出的请求调度器的配置的框图;
图7是示出图6示出的请求调度器对请求进行排序的示图;
图8A至图8D是示出图7中示出的通过TX线和RX线交换的包的示图;
图9是根据本公开的实施例的执行主机与存储装置之间的双向通信的流程图;
图10是执行主机与存储装置之间的双向通信的流程图;
图11是示出图1中示出的存储装置的配置的框图;
图12是示出图11中示出的请求调度器和吞吐量检测器的配置的框图;
图13是示出图11中示出的请求调度器和吞吐量检测器的另一个配置的框图;
图14是示出图1中示出的存储装置的配置的框图;
图15是示出图1中示出的存储装置的配置的框图;
图16是示出图1中示出的非易失性存储器的框图;
图17是示出包括在图16的存储器单元阵列中的存储器块中的一个存储器块的电路图。
具体实施方式
下面,可详细和清楚地描述本公开的实施例,使得本领域技术人员(在下文中,称为“普通技术人员”)容易地实现本公开。
图1是示出根据本公开的实施例的存储装置1200的框图。为了帮助理解描述,存储装置1200被示出为连接到主机1100以执行与主机1100的通信,并且存储系统1000可包括主机1100和存储装置1200。
主机1100可管理并处理存储系统1000的整体操作。例如,主机1100可将用于对存储装置1200执行读取操作或者写入操作的各种命令发送到存储装置1200。例如,主机1100可包括一个或多个处理器核。可利用专用电路(例如,现场可编程门阵列(FPGA)和专用集成电路(ASIC))或者片上系统(SoC)来实现主机1100。例如,主机1100可包括通用处理器、专用处理器或者应用处理器。
存储装置1200可包括控制器1210和非易失性存储器1220。例如,存储装置1200可以是固态驱动器(SSD)。
控制器1210可控制存储装置1200的整体操作。为此,控制器1210可包括至少一个处理器核和缓冲存储器。例如,控制器1210可控制非易失性存储器1220。在控制器1210的控制下,可将数据存储在非易失性存储器1220中或者可从非易失性存储器1220读取数据。
控制器1210可基于来自主机1100的命令生成各种类型的请求。例如,当来自主机1100的命令是对非易失性存储器1220的写入命令时,控制器1210可生成与主机1100的主机存储器(未示出)相关联的读取请求。例如,当来自主机1100的命令是对非易失性存储器1220的读取命令时,控制器1210可生成对主机1100的主机存储器的写入请求。在这种情况下,对主机1100的主机存储器的写入请求可包括从非易失性存储器1220读取的读取数据。此外,控制器1210可生成用于向主机1100通知针对存储装置1200生成的各种事件的消息。
主机1100可从控制器1210接收以包的形式的读取请求、写入请求、消息等。这在图1中被示出为第一包。例如,当主机1100处理包括在第一包中的读取请求时,主机1100可响应于读取请求,而将将被存储在非易失性存储器1220中的写入数据发送到控制器1210。这在图1中被示出为第二包。
主机1100和存储装置1200可基于各种接口协议中的一个或多个接口协议来互相通信。例如,主机1100和存储装置1200可通过使用串行接口协议(诸如,外围组件快速互连(PCIe)、非易失性存储器标准(NVMe)、通用闪存存储(UFS)、通用串行总线(USB)、小型计算机系统接口(SCSI)、串行高级技术附件(SATA)、串行附接SCSI(SAS)、安全数字(SD)卡及嵌入式多媒体卡(eMMC))中的至少一个来互相通信。
例如,主机1100和存储装置1200可被配置为执行双向通信。例如,主机1100和存储装置1200可通过TX线和RX线互相连接。例如,数据、请求、消息等可通过TX线从存储装置1200发送到主机1100,并且数据、命令等可通过RX线从主机1100发送到存储装置1200。
在针对存储装置1200同时生成读取操作和写入操作的情况下,为了提高通过TX线和RX线的双向通信的吞吐量,根据本公开的实施例的控制器1210可对由应用层1215生成的请求、消息等进行重新排列。为了执行所述操作,控制器1210可包括请求调度器1214。稍后将详细描述请求调度器1214。
非易失性存储器1220可包括用于存储数据的存储器单元阵列。例如,在利用NAND闪存实现非易失性存储器1220的存储器单元阵列的情况下,非易失性存储器1220可包括三维(3D)存储器单元阵列,其中,在三维存储器单元阵列中,NAND串被形成为与基底垂直。然而,非易失性存储器1220的配置可不限于此。例如,非易失性存储器1220可包括各种非易失性存储器(诸如,相变随机存取存储器(PRAM)、磁阻RAM(MRAM)、电阻RAM(ReRAM)以及铁电RAM(FRAM))中的一个或多个非易失性存储器。
图2是示出图1中示出的存储装置1200的配置的框图。
虽然图2中未示出,但是主机1100可包括PHY层、数据链路层、事务层以及应用/主机控制器接口(HCI)层(在下文中,称为“应用层”)。主机1100的每一层可包括可由电路和/或处理器核执行的用以执行对于每一层唯一的功能的程序代码。
存储装置1200可包括PHY层1211、数据链路层1212、事务层1213以及应用层1215。例如,存储装置1200的层1211、1212、1213和1215可被包括在图1的控制器1210中。例如,存储装置1200的层1211、1212、1213和1215可被实现为与主机1100连接的接口电路。存储装置1200的层1211、1212、1213和1215中的每一层可包括可由电路和/或处理器核执行的用以执行对于每一层唯一的功能的程序代码。
存储装置1200的层1211、1212、1213、1215可基于对主机1100的发送和来自主机1100的接收而可操作地和/或物理地彼此分离。然而,为了便于说明,省略了分离。
PHY层1211可包括用于发送和接收包的通信电路(例如,发送器/接收器、调制器/解调器、编码器/解码器以及振荡器)。主机1100的PHY层(未示出)可通过TX线和RX线与存储装置1200的PHY层1211交换包。例如,可根据由MIPI联盟提出的PHY协议来实现作为物理层的PHY层1211。
数据链路层1212可检测并校正数据(或包)的错误。事务层1213可在事务级(例如,读取或写入)中操作并且可生成用于执行事务(诸如,写入或读取)的包。例如,可根据由MIPI联盟提出的UniPro协议来实现均为链路层的数据链路层1212和事务层1213。
作为较高层的应用层1215可处理来自主机1100和存储装置1200的用户的请求。同时,均为较低层的PHY层1211以及数据链路层1212和事务层1213可为应用层1215执行与外部装置的通信。
应用层1215可基于通过数据链路层1212和事务层1213传输的包,提供对于主机1100和存储装置1200的通信服务。应用层1215可基于来自主机1100的命令,生成用于读取存储在主机1100的主机存储器(未示出)中的数据的读取请求以及用于将数据存储在主机存储器(未示出)中的写入请求。此外,应用层1215可生成用于向主机1100通知针对存储装置1200生成的各种事件的消息。请求和消息可由较低层1211、1212和1213处理并且可以以第一包的形式发送到主机1100。
同时,请求调度器1214可基于由应用层1215生成的请求的种类,对由应用层1215生成的请求进行排序。通过排序而排列的请求可基于排列的请求的顺序,而被较低层1211、1212和1213以及主机1100处理。因此,在执行混合的工作负载(诸如,对存储装置1200同时执行读取和写入操作)时,可能需要适当地确定将要处理的请求的顺序。
也就是说,为了提高通过TX线和RX线的双向通信的吞吐量,需要高效地发送包括通过RX线从主机1100接收的并且将被存储在非易失性存储器1220中的写入数据的第二包,以及需要高效地发送包括从非易失性存储器1220读取的并且通过TX线将要发送到主机1100的读取数据的第一包。
例如,由应用层1215生成的请求中的读取请求的比率大表示对存储装置1200执行相对多的写入操作。在这种情况下,需要增加通过TX线发送到主机1100的第一包的读取请求的比率并且减少第一包的写入请求的比率。主机1100可响应于来自存储装置1200的读取请求而将第二包发送到存储装置1200。
相反,由应用层1215生成的请求中的写入请求的比率大表示对存储装置1200执行相对多的读取操作。在这种情况下,需要增加通过TX线发送到主机1100的第一包的写入请求的比率并且减少第一包的读取请求的比率。
可选择地,请求调度器1214可基于来自事务层1213的响应,对由应用层1215生成的请求进行排序。例如。请求可被包括在响应于第一包的从主机1100接收的第二包中。在响应之间的期限(term)长的情况下,这种情况表示有时偶尔接收来自主机1100的写入数据。在这种情况下,请求调度器1214可对请求进行排序使得响应之间的期限变短。
根据本公开的实施例的请求调度器1214可实时检查由应用层1215生成的请求的类型或属性。例如,在每个单位时间生成的请求中具有特定类型的请求的比率高的情况下,请求调度器1214可生成具有所述特定类型的请求的比率为高的包。在此提到的包可对应于从请求调度器1214发送到事务层1213的箭头。
可选择地,请求调度器1214可实时检查每个单位时间由应用层1215生成的请求的数量。例如,如果每个单位时间检测到的特定类型的请求的数量高,则请求调度器1214可对请求进行排序,使得检测到的特定类型的请求被主机1100快速处理。例如,单位时间可以是预设的时间并且可在考虑主机1100和/或存储装置1200的规格、配置等的情况下设置。
图3是示出根据本公开的实施例的存储装置1200的操作的框图。例如,在图3中示出基于来自主机1100的命令CMD生成第一请求并且基于第一请求生成第一包的实施例。
存储装置1200可从主机1100接收命令CMD(①)。例如,命令CMD可以是用于读取存储装置1200的读取命令。命令CMD可通过RX线被接收并且命令CMD可通过PHY层1211、数据链路层1212和事务层1213被发送到应用层1215。
应用层1215可分析命令CMD。可通过分析的命令CMD执行存储装置1200的读取操作,存储在非易失性存储器1200中的读取数据可被读取(②)。之后,应用层1215可生成与命令CMD的种类或属性对应的第一请求(③)。在这种情况下,由于从主机1100接收的命令CMD为读取命令,所以第一请求可对应于对主机1100的写入请求。例如,第一请求可包括从非易失性存储器1220读取的读取数据。例如,每个第一请求可包括单位比特的读取数据。第一请求在事务层1213、数据链路层1212和PHY层1211中被分别处理之后,可以以第一包的形式发送到主机1100(④)。
图4是示出根据本公开的实施例的存储装置1200的操作的框图。例如,在图4中示出基于来自主机1100的命令CMD生成第二请求,基于第二请求生成第一包并且响应于第一包接收第二包的示例。
存储装置1200可从主机1100接收命令CMD(①)。例如,命令CMD可以是用于将数据写入到存储装置1200的写入命令。命令CMD可通过RX线接收并且命令CMD可通过PHY层1211、数据链路层1212和事务层1213发送到应用层1215。
应用层1215可分析命令CMD。之后,应用层可生成与命令CMD的种类或属性对应的第二请求(②)。在这种情况下,由于从主机1100接收的命令CMD为写入命令,所以第二请求可对应于对主机1100的读取请求。第二请求在事务层1213、数据链路层1212和PHY层1211中被分别处理之后,可以以第一包的形式发送到主机1100(③)。主机1100可响应于在第一包中包括的第二请求而将第二包(④)发送到存储装置1200。第二包可分别在PHY层1211、数据链路层1212和事务层1213中处理,并且包括在第二包中的写入数据可被存储在非易失性存储器1220中(⑤)。
参照图3和图4描述了生成不同种类或属性的请求的处理。与由应用层1215生成的请求被发送到事务层1213并且由事务层1213处理的一般情况不同,根据实施例,请求可首先被请求调度器1214排序。
图5是示出在对存储装置1200执行混合的工作负载时存储装置1200的操作的框图。例如,混合的工作负载可表示对存储装置1200执行不同类型的操作(例如,读取操作和写入操作)。
存储装置1200的应用层1215可从主机1100接收读取命令和写入命令(①)。应用层1215可生成包括从非易失性存储器1220读取的读取数据(②)的第一请求和第二请求(③)。例如,第一请求可以是与主机存储器1110相关联的写入请求,第二请求可以是对主机存储器1110的读取请求。
考虑到应用层1215生成的第二请求与第一请求的比率和/或请求的数量,可由请求调度器1214对第一请求和第二请求进行排序,并且,排序的第一请求和第二请求分别在下层1213、1212和1211中处理后可以以第一包的形式发送到主机1100(④)。
主机1100可执行包括在第一包中的第一请求和第二请求。例如,主机1100可处理包括在第一请求中的读取数据并且可将处理的数据提供给用户。主机1100可响应于第二请求将将被存储在非易失性存储器1220中的写入数据发送到存储装置1200。例如,将被存储在非易失性存储器1220中的写入数据可以以第二包的形式发送到存储装置1200(⑤)。例如,第二包可包括均包括对第二请求的响应(或完成)和单位比特的写入数据的多个条带(strip)。然后,将写入数据存储到非易失性存储器1220中(⑥)。
图6是示出图1至图5中所示的请求调度器1214的配置的框图。请求调度器1214可包括仲裁器。为了帮助理解,将参照图2至图5给出描述。
应用层1215生成的第一请求和第二请求被发送到请求调度器1214。例如,第一请求可包括请求Req1_1至Req1_m。例如,第一请求可以是与主机1100相关联的写入请求。第二请求可包括请求Req2_1至Req2_n。例如,第二请求可以是与主机1100相关联的读取请求。
在默认模式中,请求调度器1214可通过使用特定的算法对请求进行排序。例如,在使用轮循调度(round robin)方式的情况下,第一请求和第二请求可被一个接一个交替地排序。由于根据排序生成的包被发送到主机1100,所以主机1100可交替地执行第一请求和第二请求。也就是说,在第一请求是对主机存储器1110的写入请求并且第二请求是对主机存储器1110的读取请求的情况下,主机1100可交替地执行读取请求和写入请求。
然而,根据通用的调度方式,可能很难有效地应对在执行不同类型的混合工作负载时特定种类或属性的请求的即时变化。因此,包括在请求调度器1214中的仲裁器可参照根据由应用层1215生成的请求的种类或属性确定的比率,来排列请求。
在实施例中,假设第二请求的数量是第一请求的数量的两倍,请求调度器1214可对请求进行排序使得每个单位时间将被发送的第二请求的数量是每个单位时间将被发送的第一请求的数量的两倍。根据示例,如图6中所示,可输出两个第二请求Req2_1和Req2_2,然后,可输出一个第一请求Req1_1。换言之,请求的序列可包括一个第一请求和两个第二请求。
包括在请求调度器1214中的仲裁器可基于与请求的种类或属性对应的比率(即,加权值)来实时地调整将被连续输出的同一种类的请求的数量。例如,如果在应用层1215中待处理的请求中的第一请求与第二请求的比率变成“1:3”,则仲裁器可对请求进行排列,使得在三个第二请求被连续输出之后输出一个第一请求。
加权值可以实时改变,并且请求调度器1214可基于实时改变的加权值对请求进行排序。可选择地,考虑存储装置1200的性能、存储器资源等,请求调度器1214可调整应用加权值的次数。也就是说,可以不实时地应用加权值,而是周期地/随机地应用加权值。
图7是示出通过图6中示出的请求调度器1214对请求进行排序的示图。
在默认模式中,可通过预设的调度方法(例如,轮询调度)对请求进行排序。第一请求和第二请求可被排序成一个接一个交替地排列,然后,可生成第一请求和第二请求被交替排列的包。
相反,在应用层1215中待处理的请求中的第一请求与第二请求的比率改变的情况下,加权值可被应用以对请求进行排序。可在应用层1215中测量加权值或者从存储装置1200中的传输包括第一请求和第二请求的包的任意位置测量加权值。例如,在应用层1215中待处理的请求中的第二请求的数量是待处理的第一请求的数量的两倍(即,加权值=1:2)的情况下,仲裁器可对请求进行排序,使得对于输出两个第二请求,输出一个第一请求。
同时,相反的情况也是可能的。例如,在应用层1215中待处理的请求中的第一请求的数量多于待处理的请求中的第二请求的数量的情况下,可连续布置多个第一请求。
图8A至图8D是示出图7中的通过TX线和RX线交换的包的示图。第一包是通过TX线传送到主机1100的包,第二包是通过RX线从主机1100接收的包。除了图8A至图8D中示出的元素(第一请求、第二请求和条带),其他信息(诸如,循环冗余校验(CRC)和头)还可通过由构成存储装置1200的较低层1211、1212和1213的处理而添加到第一包和第二包中。然而,为了便于描述,图8A至图8D省略了所述元素。为了帮助理解,将参照图5给出描述。
第一包可包括第一请求和第二请求。第一请求可包括请求Req1_1、Req1_2、Req1_3等,第二请求可包括请求Req2_1、Req2_2、Req2_3等。第一请求的每个请求Req1_1、Req1_2、Req1_3等可包括从非易失性存储器1220读取的单位比特的读取数据。第二包可包括条带Strip1、Strip2、Strip3等。每个条带Strip1、Strip2、Strip3等可包括对第二请求中的每一个请求的响应和将被存储在非易失性存储器1220中的单位比特的写入数据。
图8A中示出加权值为1:2的情况。图8A中示出在应用层1215中待处理的第二请求的数量是待处理的第一请求的数量的两倍的示例。在这种情况下,如上所述,可在发送两个第二请求Req2_1和Req2_2之后,发送一个第一请求Req1_1。如果第一包的第二请求中的请求Req2_1被主机1100处理,则可通过RX线接收第一条带Strip1;一旦第二请求的请求Req2_2被主机1100处理,则可通过RX线接收第二条带Strip2。
在这种情况中,由于针对接收条带不存在延迟,所以可提高通过TX线和RX线交换的数据的吞吐量。第一条带Strip1和第二条带Strip2之间的时间△t1可以是主机1100处理请求所需的最短时间。之后,可以以与上面描述的方式相似的方式处理第二请求Req2_3和Req2_4以及第一请求Req1_2。
图8B中示出加权值为1:3的情况。也就是说,这可对应于对存储装置1200执行的写入操作多于图8A的实施例中的对存储装置1200执行的写入操作的情况。在这种情况下,可在发送三个第二请求Req2_1、Req2_2和Req2_3之后,发送一个第一请求。第一条带Strip1与第二条带Strip2之间的时间△t2可以与图8A中示出的△t1基本相同。如果第一包的第二请求的请求Req2_1被主机1100处理,则可通过RX线接收第一条带Strip1;一旦第二请求的请求Req2_2被主机1100处理,则可通过RX线接收第二条带Strip2。一旦第二请求的请求Req2_3被主机1100处理,则可通过RX线接收第三条带Strip3。
图8C中示出加权值为2:1的情况。与参照图8A和图8B描述的实施例不同,图8C的实施例可对应于对存储装置1200执行相对多的读取操作的情况。
在这种情况下,由于将被存储在非易失性存储器1220中的数据量相对较小,所以减少包括将被存储到非易失性存储器1220中的写入数据的条带Strip1与条带Strip2之间的空闲时间的需要可相对较小。相反,为了提高存储装置1200的读取性能,需要快速发送包括读取数据的第一请求Req1_1、Req1_2、Req1_3等。图8A至图8C中示出的构成第一包的请求的排序是示例。然而,可以通过连续排列至少两个第一请求来提高通过TX线的传输效率。
图8D中示出加权值为1:1的情况。如果在应用层1215中待处理的请求中的第一请求与第二请求的比率为1:1,则调度方式不是问题。然而,如果即使在第二请求的比率相对大的情况下也保持发送的方式,则需要提高通过RX线接收第二包的效率。也就是说,即使可以使图8A中示出的条带之间的空闲时间△t1最小化,也根据通用调度方案(例如,轮循调度),因此,条带之间的空闲时间△t3可增加。
以图8A至图8D的各种实施例描述了主机1100与存储装置1200之间交换的包。例如,可实时计算用于对构成第一包的请求进行排序的加权值,或者可每个参考时间段计算加权值。包括在请求调度器1214中的仲裁器可通过实时或每个参考时间段应用加权值,来对从应用层1215接收的请求进行排序。
可在存储装置1200的各个位置测量第一请求与第二请求的比率以计算加权值。例如,可从应用层1215中待处理的请求测量第一请求与第二请求的比率,可从从应用层1215发送到请求调度器1214的请求测量第一请求与第二请求的比率,或者可在较低层1213、1212和1211或在较低层1213、1212和1211之间的线路测量第一请求与第二请求的比率。
如此,可通过在应用层1215中对与主机1100相关联的第一请求和第二请求进行排序来提高主机1100与存储装置1200之间的双向通信的吞吐量。
图9是根据本公开的实施例的用于执行主机1100与存储装置1200之间的双向通信的流程图。为了帮助理解,将参照图2至图7描述图9。
存储装置1200可通过RX线从主机1100接收命令、数据等并且可通过TX线将请求、数据等发送到主机1100。控制器1210可通过多个通道连接到非易失性存储器1220。
在操作S110中,控制器1210可从主机1100接收命令CMD。例如,命令CMD可包括用于通过TX线和RX线执行双向通信的多个命令。例如,命令CMD可包括与非易失性存储器1220相关联的写入命令和读取命令。命令CMD可通过PHY层1211被接收并且可在较低层1212和1213中处理之后被发送到应用层1215。
在操作S120中,控制器1210可基于命令CMD生成第一请求和第二请求。例如,第一请求可以是不引起主机1100响应的请求,第二请求可以是引起主机1100响应的请求。例如,第一请求可以是根据来自主机1100的读取命令生成的对主机1110的写入请求。例如,在第一请求是与主机存储器1110相关联的写入请求的情况下,第一请求可包括从非易失性存储器1220读取的读取数据。例如,第二请求可以是根据来自主机1100的写入命令生成的对主机1110的读取请求。
虽然未在图9中示出,但是还可生成除了第一请求和第二请求之外的各种请求。例如,还可生成用于向主机1100通知关于存储装置1200发生的各种事件的消息。然而,由于生成消息的次数小于生成第一请求和第二请求的次数并且消息的大小小于第一请求和第二请求的大小,因此省略对它们的描述。
在操作S130中,可对第一请求和第二请求进行排序。例如,包括在控制器1210中的请求调度器可参照第一请求与第二请求的比率对请求进行排序。例如,请求调度器1214可被适当地设置在控制器1210中以对从应用层1215生成的请求进行排序并且将排序的请求发送到较低层1213、1212和1211。
例如,在第一请求的比率相对大的情况下,请求可被排列为至少两个第一请求可被连续发送。相反,在第二请求的比率相对大的情况下,请求可被排序为至少两个第二请求被连续发送。此外,排序的请求可被较低层1213和1212处理之后处理为包并被发送到主机1100。
可选择地,请求调度器1214可基于每个单位时间生成的请求的数量对第一请求和第二请求进行排序。例如,如果每个单位时间检测到的特定类型的请求的数量大,则请求调度器1214可对第一请求和第二请求进行排序使得检测到的特定类型的请求被主机1100快速处理。例如,如果每个单位时间生成的第二请求的数量超过参考值,则请求调度器1214可对第一请求和第二请求进行排序使得至少两个或更多个第二请求是连续的。
可选择地,请求调度器1214可基于包括在响应于第一包从主机1100接收的第二包中的响应,对第一请求和第二请求进行排序。如果响应之间的时间段长,则请求调度器1214可对第一请求和第二请求进行排序使得响应之间的时间段变短。
在操作S140中,可将包括第一请求和第二请求的第一包发送到主机1100。可通过连接主机1100和存储装置1200的TX线发送第一包。
在操作S150中,主机1100可响应于包括在第一包中的第二请求将第二包发送到控制器。例如,可通过连接主机1100和存储装置1200的RX线接收第二包。例如,在包括在第一包中的第二请求包括对主机1100的读取请求的情况下,第二包可包括将被存储在非易失性存储器1220中的写入数据。例如,第二包可包括多个条带,并且每个条带可包括与第一包对应的响应(或完成)和单位比特的写入数据。可由较低层1211、1212和1213以及应用层1215适当地处理第二包,然后,基于处理的第二包而生成或提取的写入数据可被存储在非易失性存储器1220中。
在操作S140中描述的第一包的传输可以早于在操作S150中描述的第二包的传输。然而,之后,可在相同时间进行第一包的传输和第二包的传输,直到由控制器基于命令CMD生成的所有的请求被完全执行为止。也就是说,双向通信可持续直到请求被完全执行为止。
除了基于从主机1100直接接收的命令CMD生成请求的方式之外,本公开的实施例还可被应用于其他方式。将参照图10来描述这个。
图10是用于执行主机1100与存储装置1200之间的双向通信的流程图。为了帮助理解,将参照图2至图8描述图10。为了便于描述,省略或者简要描述与参照图9所述的内容相同的内容。
在操作S210中,控制器1210可从主机1100接收提交队列(SQ)门铃(doorbell)。提交队列门铃可以是提供在主机1100中生成命令的通知的信号。
在操作S220中,控制器1210可生成第一请求并且可将第一请求发送到主机1100。例如,第一请求可以是用于请求主机1100将命令或数据发送到控制器1210的信号。
在操作S230中,主机1100可生成数据的完成(CpID)并且可将CpID发送到控制器1210。CpID可包括对来自控制器1210的第一请求的响应以及与第一请求对应的命令CMD。
在操作S240中,控制器1210可基于命令CMD生成第二请求和第三请求。例如,第二请求可以是根据从主机1100接收的对非易失性存储器1220的读取命令而生成的对主机存储器1110的写入请求。在这种情况下,第二请求可包括从非易失性存储器1220读取的读取数据。例如,第三请求可以是根据从主机1100接收的对非易失性存储器1220的写入命令而生成的对主机存储器1110的读取请求。
在操作S250中,可基于第二请求与第三请求的比率、每个单位时间生成的请求的数量或者包括在从主机1100接收的第二包中的条带/请求来对第二请求和第三请求进行排序。
在操作S260中,可将包括第二请求和第三请求的第一包发送到主机1100。
在操作S270中,主机1100可响应于包括在第一包中的第三请求将第二包发送到控制器1210。例如,在包括在第一包中的第三请求包括对主机1100的读取请求的情况下,第二包可包括将要存储在非易失性存储器1220中的写入数据。例如,第二包可包括多个条带,并且每个条带可包括与第一包对应的响应(或完成)以及单位比特的写入数据。
图11是示出图1中示出的存储装置1200的配置的框图。图11中的实施例被示出为存储系统2000包括主机2100和存储装置2200。
存储装置2200可包括包含层2211、2212、2213和2215以及非易失性存储器2220的控制器。层2211、2212、2213和2215可分别对应于参照图2描述的层1211、1212、1213和1215,并且层2211、2212、2213和2215的功能与层1211、1212、1213和1215的功能基本相同。存储装置2200还可包括请求调度器2214和吞吐量检测器2216。
如果从主机2100接收命令CMD(①),则应用层2215可生成与命令CMD对应的请求(②)。例如,请求可包括具有不同种类或属性的第一请求和第二请求。例如,在命令CMD是与存储装置2200相关联的读取命令的情况下,响应于读取命令而生成的第一请求可以是对主机2100的写入请求。例如,在命令CMD是与存储装置2200相关联的写入命令的情况下,响应于写入命令而生成的第二请求可以是对主机2100的读取请求。
在请求调度器2214对请求进行排序之前,吞吐量检测器2216可计算用于对请求进行排序的加权值。例如,吞吐量检测器2216可基于计算应用层2215中待处理的请求中的第一请求与第二请求的比率的结果,来计算加权值。可选择地,吞吐量检测器2216可基于应用层2215中待处理的请求中的每个单位时间检测到的请求的数量,来计算加权值。可选择地,吞吐量检测器2216可基于包括在从主机2100接收的第二包中的响应(⑥)的接收频率,来计算加权值。
请求调度器2214可基于吞吐量检测器2216的计算结果来对请求进行排序(③)。例如,在第二请求的比率相对大的情况下,可连续发送至少两个第二请求使得主机2100快速处理第二请求。例如,如果每个单位时间检测到的特定类型的请求的数量超过参考值,则可对第一请求和第二请求进行排序使得主机2100快速处理该特定类型的请求。例如,如果包括在第二包中的条带(或者响应)之间的期限(term)超过参考值或者包括在第二包中的条带(或者响应)的接收频率超过参考值,则可对第一请求和第二请求进行排序使得第二请求被快速处理。这里,上述三个参考值可彼此不同。
由请求调度器2214排序的请求在由较低层2213、2212和2211处理之后可以以第一包(④)的形式被发送到主机2100。
主机2100可处理包括在第一包中的请求。例如,在包括在第一包中的第一请求是与主机2100相关联的写入请求的情况下,包括在第一请求中并且从非易失性存储器2220读取的读取数据可被存储在主机存储器2110中。例如,在包括在第一包中的第二请求是与主机2100相关联的读取请求的情况下,主机2100可以以第二包的形式将与第二请求对应的响应和将被存储在非易失性存储器2220中的写入数据发送到存储装置2200(⑤)。
可由层2211、2212和2213处理第二包,并且包括在第二包中的响应可被发送到应用层2215并可被吞吐量检测器2216检测。检测到的响应可被用于请求调度器2214对请求进行排序。
图12是示出图11中示出的请求调度器和吞吐量检测器的配置的框图。请求调度器2214a可包括仲裁器。与请求调度器2214a一样,可利用单独的硬件电路来实现吞吐量检测器2216a。然而,在一些实施例中,吞吐量检测器2216a的功能可被集成在请求调度器2214a中。在这种情况下,可利用一个硬件、电路或者功能块来实现请求调度器2214a和吞吐量检测器2216a。可选择地,可通过软件来实现吞吐量检测器2216a。这将参照图16来描述。为了帮助理解,将参照图11来描述图12。
应用层2215生成的第一请求和第二请求可被发送到请求调度器2214a和吞吐量检测器2216a。第一请求可包括请求Req1_1至Req1_m并且可以是与主机2100相关联的写入请求。第二请求可包括请求Req2_1至Req2_n并且可以是与主机2100相关联的读取请求。
吞吐量检测器2216a可基于应用层2215中待处理的请求中的第一请求与第二请求的比率、特定类型的请求的数量或者包括在第二包中的条带(或者响应)的接收频率来计算加权值。例如,如果第二请求的数量是第一请求的数量的两倍,则加权值可以是1:2。
包括在请求调度器2214a中的仲裁器可参照来自吞吐量检测器2216a的加权值来对请求进行排序。例如,可根据计算的加权值对请求进行排序,使得每当发送两个第二请求时发送一个第一请求。
例如,吞吐量检测器2216a可实时计算加权值。请求调取器2214a可通过应用实时计算的加权值来对请求进行排序。可选择地,吞吐量检测器2216a可在考虑存储装置2200的性能、资源等的情况下周期地/随机地计算加权值。请求调度器2214a可通过实时或周期地/随机地应用计算的加权值来对请求进行排序。
同时,可在存储装置2200的各种位置检测请求中的第一请求与第二请求的比率。将参照图13来描述上述示例中的一个示例。
图13是示出图11中示出的请求调度器和吞吐量检测器的另一个配置的框图。请求调度器2214b可包括仲裁器。除了吞吐量检测器2216b的检测位置改变之外,请求调度器2214b和吞吐量检测器2216b的基本配置和功能与参照图12描述的示例的请求调度器2214a和吞吐量检测器2216a的基本配置和功能相同。因此,这里可以不重复对它们重复的描写。
吞吐量检测器2216b可检测从请求调度器2214b输出的排序的请求。例如,吞吐量检测器2216b可基于排序的请求中的第一请求与第二请求的比率或者特定类型的请求的数量来计算加权值。可实时地或者周期地/随机地计算加权值,并且可将计算的加权值实时地或者周期地/随机地发送到包括在请求调度器2214b中的仲裁器。
图14是示出图1中示出的存储装置1200的配置的框图。图14中实施例被示出为包括主机3100和存储装置3200的存储系统3000。
存储装置3200可包括包含层3211、3212、3213和3215以及非易失性存储器3220的控制器。层3211、3212、3213和3215可分别对应于参照图2描述的层1211、1212、1213和1215,层3211、3212、3213和3215的功能与层1211、1212、1213和1215的功能基本相同。存储装置3200还可包括请求调度器3214和吞吐量检测器3216。
如果从主机3100接收命令CMD(①),则应用层3215可生成与命令CMD对应的请求(②)。例如,在命令CMD是与存储装置3200相关联的读取命令的情况下,响应于读取命令而生成的第一请求可以是对主机3100的写入请求。例如,在命令CMD是与存储装置3200相关联的写入命令的情况下,响应于写入命令而生成的第二请求可以是对主机3100的读取请求。
在请求调度器3214对请求进行排序之前,吞吐量检测器3216可计算用于对请求进行排序的加权值。例如,吞吐量检测器3216可基于应用层3215中待处理的请求中的第一请求与第二请求的比率来计算加权值。可选择地,吞吐量检测器3216可基于应用层3215中待处理的请求中的每个单位时间检测的请求的数量来计算加权值。可选择地,吞吐量检测器3216可基于包括在从主机3100接收的第二包中的响应的接收频率来计算加权值。
此外,吞吐量检测器3216基于在存储装置3200的各种位置检测的信息来计算加权值。例如,吞吐量检测器3216可基于从请求调度器3216输出的排序的请求、从事务层3213输出的或事务层3213中待处理的请求、数据链路层3212中待处理的或从数据链路层3212输出的请求或者PHY层3211中待处理的或从PHY层3211输出的请求来计算加权值(④)。
此外,吞吐量检测器3216可基于包括在输入到PHY层3211的第二包中的响应、PHY层3211中待处理的响应或包括在从PHY层3211输出的第二包中的响应、数据链路层3212中待处理的响应或包括在从数据链路层3212输出的第二包中的响应或者事务层3213中待处理的响应或包括在从事务层3213输出的第二包中的响应来计算加权值(⑦)。
另外的配置还可被包括在存储装置3200中,使得吞吐量检测器3216在存储装置3200的各种位置检测请求。例如,选择上述位置中的任意一个位置并且使得可以在所选择的位置检测请求的开关还可被设置在存储装置3200中。
请求调度器3214可基于由吞吐量检测器3216计算的加权值来对请求进行排序(③)。
由请求调度器3214排序的请求可被较低层3213、3212和3211处理,并且在处理期间可由吞吐量检测器3216检测请求(④)。之后,可以以第一包(⑤)的形式将排序的请求发送到主机3100。
主机3100可处理包括在第一包中的请求。例如,在包括在第一包中的第一请求是与主机3100相关联的写入请求的情况下,包括在第一请求中并且从非易失性存储器3220读取的读取数据可被存储在主机存储器3110中。例如,在包括在第一包中的第二请求是与主机3100相关联的读取请求的情况下,主机3100可以以第二包(⑥)的形式将与第二请求对应的响应和将被存储在非易失性存储器3220中的写入数据发送到存储装置3200。在这个处理中,可由吞吐量检测器3216来检测包括在第二包中的响应(⑦)。
图15是示出图1中示出的存储装置的配置的框图。实施例在图15中被示出为包括主机4100和存储装置4200的存储系统4000。将在假设通过软件实现吞吐量检测器4242的情况下描述这个实施例。
存储装置4200可包括控制器和非易失性存储器4220,其中,控制器包括层4211、4212、4213和4215。控制器还可包括处理器4230和DRAM 4240。
处理器4230可被配置为驱动吞吐量检测器4242。例如,吞吐量检测器4242可以是被配置为执行与参照图1至图14描述的吞吐量检测器相同的功能的软件或者硬件。例如,吞吐量检测器4242可被存储在非易失性存储器4220中并且可被加载到DRAM 4240以用于驱动。可选择地,可在单独的ROM(未示出)中存储并驱动吞吐量检测器4242。吞吐量检测器4242被示出为被加载到DRAM 4240。然而,本公开的实施例不限于此。
应用层4215可基于来自主机4100的命令生成不同类型的请求。例如,第一请求可以是与主机4100相关联的写入请求,其中,写入请求包括从非易失性存储器4220读取的读取数据。第二请求可以是与主机4100相关联的读取请求。在请求被请求调度器4214排序之前,请求可被发送到处理器4230。
吞吐量检测器4242可计算用于对请求进行排序的加权值。例如,吞吐量检测器4242可基于请求中的第一请求与第二请求的比率或者请求的数量来计算加权值。虽然为了便于说明未在图15中示出,但是如图14所示的,吞吐量检测器4242可基于分别从层4211、4212、4213和4215输出的请求或者在各个层4211、4212、4213和4215中待处理的请求来计算加权值。
请求调度器4214可基于加权值对请求进行排序,并且所述请求可在被层4211、4212和4213处理之后以第一包的形式发送到主机4100。
主机4100可响应于包括在第一包中的第二请求生成第二包。例如,第二包可包括对第二请求的响应和将被存储在非易失性存储器4220中的写入数据。
在存储装置4200接收到第二包的处理中,吞吐量检测器4242也可计算用于对请求进行排序的加权值。例如,吞吐量检测器4242可基于包括在第二包中的响应的接收频率来计算加权值。虽然为了便于说明未在图15中示出,但是如图14中示出的,吞吐量检测器4242可基于分别从层4211、4212、4213和4215输出的响应或者在各个层4211、4212、4213和4215中待处理的响应计算加权值。
上面描述了根据本公开的实施例的存储装置的操作方法。根据本公开的实施例,在执行与主机的双向通信的存储装置中,可根据与主机相关联的请求中的不同种类(或属性)的请求的比率来对请求进行排序。由于请求被排序为由控制器(更详细地,应用层)更多地生成的一个种类的请求被主机更快地处理,所以在通过连接到主机的TX线和RX线的双向通信中可提高吞吐量。
图16是示出图1中示出的非易失性存储器1220的框图。参照图16,非易失性存储器1220可包括存储器单元阵列1221、地址解码器1222、页缓冲器1223、输入/输出电路1224以及控制逻辑和电压生成器电路1225。
存储器单元阵列1221可包括多个存储器块。每一个存储器块可包括多个单元串,每一个单元串可包括多个存储器单元。存储器单元可与多条字线WL连接。每个存储器单元可以是存储一位的单级单元(SLC)或者存储至少两位的多级单元(MLC)。
地址解码器1222可通过字线WL、串选择线SSL和地选择线GSL与存储器单元阵列1221连接。地址解码器1222可从外部接收逻辑地址,可对接收到的逻辑地址进行解码并且可驱动字线WL。例如,地址ADDR可以是通过转换逻辑地址而获得的非易失性存储器1220的物理地址。可由根据本公开的实施例的控制器(例如,图1的1210)或者通过由控制器1210驱动的闪存转换层(FLT)来执行上述地址转换操作。
页缓冲器1223可通过位线BL连接到存储器单元阵列1221。在控制逻辑和电压生成器电路1225的控制下,页缓冲器1223可控制位线BL使得从输入/输出电路1224提供的数据被存储在存储器单元阵列1221中。在控制逻辑和电压生成器电路1225的控制下,页缓冲器1223可读取存储在存储器单元阵列1221中的数据并且可将读取的数据提供给输入/输出电路1224。例如,可将数据按也从输入/输出电路1224提供给页缓冲器1223或者可按页从存储器单元阵列1221读取数据。
输入/输出电路1224可从外部装置接收数据DATA并且可将接收的数据传送到页缓冲器1223。
控制逻辑和电压生成电路1225可响应于来自外部的命令CMD和控制信号CTRL来控制地址解码器1222、页缓冲器1223和输入/输出电路1224。例如,控制逻辑和电压生成电路1225可响应于信号CMD和CTRL来控制其他组件,使得数据被存储在存储器单元阵列1221中。可选择地,控制逻辑和电压生成器电路1225可响应于信号CMD和CTRL来控制其他组件,使得存储在存储器单元阵列1221中的数据被发送到外部装置。控制信号CTRL可以是控制器1210提供的用于控制非易失性存储器1220的信号。
控制逻辑和电压生成器电路1225可生成非易失性存储器1220操作所需的各种电压Vers。例如,控制逻辑和电压生成器电路1225可生成多个编程电压、多个通过电压、多个验证电压、多个选择读取电压、多个非选择读取电压、多个擦除电压等。控制逻辑和电压生成器电路1225可将生成的电压提供给地址解码器1222或者提供给存储器单元阵列1221的基底。
图17是示出包括在图16中的存储器单元阵列中的存储器块中的一个存储器块的电路图。在实施例中,将参照图17描述三维结构的存储器块BLK。
参照图17,存储器块BLK可包括多个单元串CS11、CS12、CS21和CS22。单元串CS11、CS12、CS21和CS22可沿行方向和列方向布置来形成行和列。
例如,单元串CS11和CS12可连接到串选择线SSL1a和SSL1b以构成第一行。单元串CS21和CS22可连接到串选择线SSL2a和SSL2b以构成第二行。
例如,单元串CS11和CS21可连接到第一位线BL1以构成第一列。单元串CS12和CS22可连接到第二位线BL2以构成第二列。
单元串CS11、CS12、CS21和CS22中的每一个单元串可包括多个单元晶体管。单元串CS11、CS12、CS21和CS22中的每一个单元串可包括串选择晶体管SSTa和SSTb、多个存储器单元MC1至MC8、地选择晶体管GSTa和GSTb以及虚拟存储器单元DMC1和DMC2。在实施例中,包括在单元串CS11、CS12、CS21和CS22中的每一个存储器单元可以是电荷俘获闪存(CTF)存储器单元。
存储器单元MC1至MC8可串联连接并且可沿作为与由行方向和列方向限定的平面垂直的方向的高度方向堆叠。在每个单元串中,串选择晶体管SSTa和SSTb可串联连接并且可被布置在存储器单元MC1至MC8与位线BL1或BL2之间。在每个单元串中,地选择晶体管GSTa和GSTb可串联连接并且可被布置在存储器单元MC1至MC8与共源线CSL之间。
在实施例中,在每个单元串中,第一虚拟存储器单元DMC1可被布置在存储器单元MC1至MC8与地选择晶体管GSTa和GSTb之间。在实施例中,在每个单元串中,第二虚拟存储器单元DMC2可被布置在存储器单元MC1至MC8与串选择晶体管SSTa和SSTb之间。
单元串CS11、CS12、CS21和CS22的地选择晶体管GSTa和GSTb可共同连接到地选择线GSL。在实施例中,在同一行中的地选择晶体管可连接到同一地选择线,在不同行中的地选择晶体管可连接到另一条地选择线。例如,在第一行中的单元串CS11和CS12的第一地选择晶体管GSTa可连接到第一地选择线,在第二行中的单元串CS21和CS22的第一地选择晶体管GSTa可连接到第二地选择线。
在实施例中,虽然未在图17中示出,但是设置在离基底(未示出)相同高度的地选择晶体管可连接到同一地选择线,设置在不同高度的地选择晶体管可连接到不同的地选择线。例如,在单元串CS11、CS12、CS21和CS22中,第一地选择晶体管GSTa可连接到第一地选择线,第二地选择晶体管GSTb可连接到第二地选择线。
布置在离基底(或者地选择晶体管GSTa和GSTb)相同高度的存储器单元可共同连接到同一字线,布置在离基底(或者地选择晶体管GSTa和GSTb)不同高度的存储器单元可连接到不同的字线。例如,单元串CS11、CS12、CS21和CS22的存储器单元MC1至MC8可分别连接到第一字线WL1至第八字线WL8。
布置在相同高度的第一串选择晶体管SSTa中的属于同一行的串选择晶体管可连接到同一串选择线,第一串选择晶体管SSTa中的属于不同的行的串选择晶体管可连接到不同的串选择线。例如,单元串CS11和CS12的在第一行中的第一串选择晶体管SSTa可共同连接到串选择线SSL1a,单元串CS21和CS22的在第二行中的第一串选择晶体管SSTa可共同连接到串选择线SSL2a。
布置在相同高度的第二串选择晶体管SSTb中的属于同一行的串选择晶体管可连接到同一串选择线,第二串选择晶体管SSTb中的属于不同的行的串选择晶体管可连接到不同的串选择线。例如,单元串CS11和CS12的在第一行中的第二串选择晶体管SSTb可共同连接到串选择线SSL1b,单元串CS21和CS22的在第二行中的第二串选择晶体管SSTb可共同连接到串选择线SSL2b。
虽然未示出,但是在同一行中的单元串的串选择晶体管可共同连接到同一串选择线。例如,单元串CS11和CS12的在第一行中的第一串选择晶体管SSTa和第二串选择晶体管SSTb可共同连接到同一串选择线。单元串CS21和CS22的在第二行中的第一串选择晶体管SSTa和第二串选择晶体管SSTb可共同连接到同一串选择线。
在实施例中,在相同高度的虚拟存储器单元可以与同一虚拟字线连接,在不同高度的虚拟存储器单元可以与不同的虚拟字线连接。例如,第一虚拟存储器单元DMC1可连接到第一虚拟字线DWL1,第二虚拟存储器单元DMC2可连接到第二虚拟字线DWL2。
在存储器块BLK中,可以以行为单位执行读取和写入操作。例如,可通过串选择线SSL1a、SSL1b、SSL2a和SSL2b来选择第一存储器块BLK的一行。
例如,当导通电压被供应给串选择线SSL1a和SSL1b以及截止电压被供应给串选择线SSL2a和SSL2b时,第一行中的单元串CS11和CS12可分别连接到位线BL1和BL2。当导通电压被供应给串选择线SSL2a和SSL2b以及截止电压被供应给串选择线SSL1a和SSL1b时,第二行中的单元串CS21和CS22可分别连接到位线BL1和BL2。可通过驱动字线,从连接到驱动的字线的单元串中的存储器单元中选择布置在相同高度的存储器单元。可针对选择的存储器单元执行读取和写入操作。选择的存储器单元可构成物理的页单元。
在存储器块BLK中,可以以存储器块或子块为单元擦除存储器单元。当以存储器块为单元执行擦除操作时,可根据擦除请求同时擦除在存储器块BLK中的所有的存储器单元MC。当以子块为单位执行擦除操作时,可根据擦除请求同时擦除存储器块BLK中的存储器单元MC中的一些存储器单元,而剩余的存储器单元可被擦除禁止。可将低电压(例如,地电压)供应给连接到擦除的存储器单元的字线,并且连接到擦除禁止的存储器单元MC的字线可被浮置。
在实施例中,图17中示出的存储器块BLK仅是示例。单元串的数量可增加或减少,单元串的行的数量和单元串的列的数量可根据单元串的数量增加或减少。在存储器块BLK中,单元晶体管(GST、MC、DMC、SST等)的数量可增加或减少,存储器块BLK的高度可根据单元晶体管(GST、MC、DMC、SST等)的数量增加或减少。此外,与晶体管连接的线(GST、MC、DMC、SST等)的数量可根据晶体管的数量增加或减少。
根据本公开的实施例,可参照由存储装置的控制器生成的请求或者响应于请求从主机接收的响应来对请求进行排序。因此,可以提高与主机的双向通信的吞吐量。
虽然已经参照实施例描述了本公开,但是本领域的技术人员将清楚的,在不脱离本公开的精神和范围的情况下可进行各种改变和修改。因此,应理解,上面的实施例不是限制性的,而是示例性的。
Claims (25)
1.一种被配置为执行与主机的双向通信的存储装置,所述存储装置包括:
控制器,被配置为:
生成包括与主机相关联的第一请求和第二请求的多个请求,
对所述多个请求进行排序,使得所述多个请求包括第一请求中的至少一个第一请求和第二请求中的至少两个连续的第二请求。
2.根据权利要求1所述的存储装置,其中,控制器参照包括在所述多个请求中的第二请求的数量与包括在所述多个请求中的第一请求的数量的比率或者参照包括在所述多个请求中的第二请求的数量,而对所述多个请求进行排序。
3.根据权利要求1所述的存储装置,其中,
第一请求是对于主机的写入请求,其中,写入请求对应于对于所述存储装置的读取命令,
第二请求是对于主机的读取请求,其中,读取请求对应于对于所述存储装置的写入命令。
4.根据权利要求3所述的存储装置,其中,控制器接收主机响应于第二请求而生成的响应。
5.根据权利要求4所述的存储装置,其中,控制器参照所述响应的接收频率对所述多个请求进行排序。
6.根据权利要求4所述的存储装置,其中:
第一请求包括响应于读取命令而从所述存储装置读取的读取数据,
所述响应包括将被存储在所述存储装置中的写入数据。
7.根据权利要求1所述的存储装置,其中,控制器包括:请求调度器,被配置为参照包括在所述多个请求中的第二请求的数量与包括在所述多个请求中的第一请求的数量的比率、包括在所述多个请求中的第二请求的数量或者响应于第二请求从主机接收的响应的接收频率,而对所述多个请求进行排序。
8.根据权利要求7所述的存储装置,其中,控制器还包括:
应用层,被配置为生成第一请求和第二请求;
链路层,被配置为转换包括第一请求和第二请求的包;
物理层,被配置为将包发送到主机。
9.根据权利要求8所述的存储装置,其中,请求调度器接收从应用层输出的第一请求和第二请求。
10.一种被配置为执行与主机的双向通信的存储装置的控制器,所述控制器包括:
接口电路,包括被配置为生成包括与主机相关联的第一请求和第二请求的多个请求的应用层;
请求调度器,被配置为对所述多个请求进行排序,使得所述多个请求的序列包括第一请求中的至少一个第一请求和第二请求中的至少两个连续的第二请求。
11.根据权利要求10所述的控制器,其中,请求调度器参照包括在所述多个请求中的第二请求的数量与包括在所述多个请求中的第一请求的数量的比率或者参照包括在所述多个请求中的的第二请求的数量,对所述多个请求进行排序。
12.根据权利要求11所述的控制器,其中:
第一请求是对于主机的写入请求,其中,所述写入请求对应于对于存储装置的读取命令,
第二请求是对于主机的读取请求,其中,所述读取请求对应于对于存储装置的写入命令。
13.根据权利要求12所述的控制器,其中,接口电路还接收主机响应于第二请求而生成的响应。
14.根据权利要求13所述的控制器,其中,请求调度器参照所述响应的接收频率对所述多个请求进行排序。
15.根据权利要求10所述的控制器,其中,请求调度器参照包括在所述多个请求中的第二请求的数量与包括在所述多个请求中的第一请求的数量的比率、包括在所述多个请求中的的第二请求的数量或者响应于第二请求从主机接收的响应的接收频率,对所述多个请求进行排序。
16.根据权利要求10所述的控制器,其中,接口电路还包括:
链路层,被配置为转换包括第一请求和第二请求的包;
物理层,被配置为将包发送到主机。
17.一种被配置为执行与主机的双向通信的存储装置的操作方法,所述方法包括:
生成包括第一请求和第二请求的多个请求;
对所述多个请求进行排序,使得所述多个请求的序列包括第一请求中的至少一个第一请求和第二请求中的至少两个连续的第二请求,其中,
参照包括在所述多个请求中的第二请求的数量与包括在所述多个请求中的第一请求的数量的比率、包括在所述多个请求中的第二请求的数量或者响应于第二请求从主机接收的响应的接收频率,对所述多个请求进行排序。
18.一种非易失性存储器存储装置,包括:
非易失性存储器;
存储器控制器:
从主机接收命令,
响应于命令生成第一请求和第二请求,
将第一请求和第二请求的序列从第一请求和第二请求的生成的顺序进行重新排序,使得序列内的第二请求的数量超过序列内的第一请求的数量,将序列通信到主机,
根据生成的第一请求和第二请求访问非易失性存储器。
19.根据权利要求18所述的非易失性存储器存储装置,其中,存储器控制器根据响应于命令而生成的第一请求和第二请求的各自的数量对第一请求和第二请求的序列进行重新排序,使得序列内的第二请求的数量超过序列内的第一请求的数量。
20.根据权利要求18所述的非易失性存储器存储装置,其中,存储器控制器根据作为由存储器控制器先前通信到主机的第二请求的回应的从主机接收的响应的频率而对第一请求和第二请求的序列进行重新排序,使得序列内的第二请求的数量超过序列内的第一请求的数量。
21.根据权利要求18所述的非易失性存储器存储装置,其中,序列内的第二请求与第一请求的各自的数量的比率与响应于命令而生成的第二请求与第一请求的各自的数量的比率成比例。
22.根据权利要求18所述的非易失性存储器存储装置,其中,序列包括被两个或更多个第二请求顺序跟随的一个第一请求。
23.根据权利要求22所述的非易失性存储器存储装置,其中,顺序跟随所述一个第一请求的所述两个或更多个第二请求的数量由响应于命令而生成的第二请求与第一请求的各自的数量的比率来确定。
24.根据权利要求22所述的非易失性存储器存储装置,其中,顺序跟随所述一个第一请求的所述两个或更多个第二请求的数量由作为对由存储器控制器先前通信到主机的第二请求的回应从主机接收的响应的频率来确定。
25.根据权利要求18所述的非易失性存储器存储装置,其中,
第一请求是对于主机的写入请求,其中,写入请求包括由存储器控制器从非易失性存储器读取的数据,
第二请求是对于主机的读取请求,其中,存储器控制器响应于读取请求将从主机接收的数据写入非易失性存储器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2016-0162966 | 2016-12-01 | ||
KR1020160162966A KR20180063419A (ko) | 2016-12-01 | 2016-12-01 | 호스트와 양방향 통신을 수행하도록 구성된 스토리지 장치 및 그것의 동작 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108132895A true CN108132895A (zh) | 2018-06-08 |
CN108132895B CN108132895B (zh) | 2023-08-22 |
Family
ID=62243866
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711210089.4A Active CN108132895B (zh) | 2016-12-01 | 2017-11-28 | 配置为与主机执行双向通信的存储装置及其操作方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10430088B2 (zh) |
KR (1) | KR20180063419A (zh) |
CN (1) | CN108132895B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021035761A1 (zh) * | 2019-08-31 | 2021-03-04 | 华为技术有限公司 | 一种固态硬盘混合读写的实现方法以及装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11520704B1 (en) | 2021-06-30 | 2022-12-06 | International Business Machines Corporation | Writing store data of multiple store operations into a cache line in a single cycle |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101861571A (zh) * | 2007-11-15 | 2010-10-13 | 美光科技公司 | 用于修改存储器存取次序的系统、设备及方法 |
CN102246240A (zh) * | 2008-12-09 | 2011-11-16 | 拉姆伯斯公司 | 用于并发和流水线存储器操作的非易失性存储器器件 |
US20160306547A1 (en) * | 2015-04-14 | 2016-10-20 | Samsung Electronics Co., Ltd. | Memory systems having improved out-of-order execution of commands and methods for operating the same |
CN106126447A (zh) * | 2015-05-07 | 2016-11-16 | 三星电子株式会社 | 控制存储装置的方法、存储器模块和存储系统 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE60222782D1 (de) | 2001-08-24 | 2007-11-15 | Intel Corp | Eine allgemeine eingabe-/ausgabearchitektur und entsprechende verfahren zur unterstützung von bestehenden unterbrechungen |
CN1836402B (zh) * | 2003-05-30 | 2012-04-25 | Lg电子株式会社 | 家庭网络系统及其配置系统 |
US7433984B2 (en) | 2004-10-13 | 2008-10-07 | Texas Instruments Incorporated | Time-based weighted round robin arbiter |
US8103993B2 (en) | 2006-05-24 | 2012-01-24 | International Business Machines Corporation | Structure for dynamically allocating lanes to a plurality of PCI express connectors |
US8756369B2 (en) | 2008-09-26 | 2014-06-17 | Netapp, Inc. | Priority command queues for low latency solid state drives |
US7913024B2 (en) | 2008-12-09 | 2011-03-22 | International Business Machines Corporation | Differentiating traffic types in a multi-root PCI express environment |
US8908431B2 (en) * | 2010-02-17 | 2014-12-09 | Samsung Electronics Co., Ltd. | Control method of nonvolatile memory device |
US20140237156A1 (en) | 2012-10-25 | 2014-08-21 | Plx Technology, Inc. | Multi-path id routing in a pcie express fabric environment |
US9535860B2 (en) | 2013-01-17 | 2017-01-03 | Intel Corporation | Arbitrating memory accesses via a shared memory fabric |
JP6229347B2 (ja) * | 2013-07-25 | 2017-11-15 | 富士通株式会社 | ストレージ制御装置、ストレージ制御プログラム、およびストレージ制御方法 |
US9317204B2 (en) | 2013-11-14 | 2016-04-19 | Sandisk Technologies Inc. | System and method for I/O optimization in a multi-queued environment |
US9501442B2 (en) | 2014-04-30 | 2016-11-22 | Freescale Semiconductor, Inc. | Configurable peripheral componenent interconnect express (PCIe) controller |
US9489141B2 (en) | 2014-12-18 | 2016-11-08 | Nimble Storage, Inc. | Efficient scheduling of Input/Output requests to reduce latency and maximize throughput in a flash storage device |
-
2016
- 2016-12-01 KR KR1020160162966A patent/KR20180063419A/ko not_active Application Discontinuation
-
2017
- 2017-11-22 US US15/821,436 patent/US10430088B2/en active Active
- 2017-11-28 CN CN201711210089.4A patent/CN108132895B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101861571A (zh) * | 2007-11-15 | 2010-10-13 | 美光科技公司 | 用于修改存储器存取次序的系统、设备及方法 |
CN102246240A (zh) * | 2008-12-09 | 2011-11-16 | 拉姆伯斯公司 | 用于并发和流水线存储器操作的非易失性存储器器件 |
US20160306547A1 (en) * | 2015-04-14 | 2016-10-20 | Samsung Electronics Co., Ltd. | Memory systems having improved out-of-order execution of commands and methods for operating the same |
CN106126447A (zh) * | 2015-05-07 | 2016-11-16 | 三星电子株式会社 | 控制存储装置的方法、存储器模块和存储系统 |
Non-Patent Citations (1)
Title |
---|
ADRIAN M. CAULFIELD等: "Moneta:A High-performance Storage Array Architecture for Next-generation,Non-volatile Memories", 《IEEE》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021035761A1 (zh) * | 2019-08-31 | 2021-03-04 | 华为技术有限公司 | 一种固态硬盘混合读写的实现方法以及装置 |
CN114286989A (zh) * | 2019-08-31 | 2022-04-05 | 华为技术有限公司 | 一种固态硬盘混合读写的实现方法以及装置 |
CN114286989B (zh) * | 2019-08-31 | 2023-09-22 | 华为技术有限公司 | 一种固态硬盘混合读写的实现方法以及装置 |
Also Published As
Publication number | Publication date |
---|---|
US10430088B2 (en) | 2019-10-01 |
CN108132895B (zh) | 2023-08-22 |
KR20180063419A (ko) | 2018-06-12 |
US20180157426A1 (en) | 2018-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110400588A (zh) | 存储器装置以及该存储器装置的操作方法 | |
CN103578551B (zh) | 非易失性存储器件和编程方法 | |
CN110321068A (zh) | 存储器控制器及操作存储器控制器的方法 | |
CN110196823A (zh) | 电子装置及其操作方法 | |
US11360711B2 (en) | Storage device temporarily suspending internal operation to provide short read response time for read request from host | |
CN110058799A (zh) | 存储器装置及操作存储器装置的方法 | |
CN110413222A (zh) | 数据存储装置及其操作方法 | |
CN109147854A (zh) | 数据存储装置及其操作方法 | |
CN110489360A (zh) | 存储器控制器及该存储器控制器的操作方法 | |
CN107980126A (zh) | 多裸芯储存装置的调度方案 | |
CN110286847A (zh) | 数据存储装置及其操作方法 | |
CN110489056A (zh) | 控制器以及包括该控制器的存储器系统 | |
CN114691029A (zh) | 存储装置和操作存储装置的方法 | |
CN110010185A (zh) | 存储器系统及其操作方法 | |
KR20170100875A (ko) | 메모리 시스템 및 이의 동작 방법 | |
KR102643067B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US11614884B2 (en) | Memory device with microbumps to transmit data for a machine learning operation | |
CN108132895A (zh) | 配置为与主机执行双向通信的存储装置及其操作方法 | |
KR20210032222A (ko) | 메모리 컨트롤러 및 그것의 동작 방법 | |
CN107229570A (zh) | 存储器装置及其操作方法 | |
CN109426620A (zh) | 存储器系统以及存储器系统的操作方法 | |
US20230041801A1 (en) | Transmission of data for a machine learning operation using different microbumps | |
CN106683698A (zh) | 存储器件及其操作方法 | |
US11734205B2 (en) | Parallel iterator for machine learning frameworks | |
US11990197B2 (en) | Peak power management connectivity check in a memory device |
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 |