CN117093517A - 存储装置、存储装置的操作方法和电子系统 - Google Patents
存储装置、存储装置的操作方法和电子系统 Download PDFInfo
- Publication number
- CN117093517A CN117093517A CN202310552434.1A CN202310552434A CN117093517A CN 117093517 A CN117093517 A CN 117093517A CN 202310552434 A CN202310552434 A CN 202310552434A CN 117093517 A CN117093517 A CN 117093517A
- Authority
- CN
- China
- Prior art keywords
- completion
- interrupt
- host
- cache
- completion entry
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title abstract description 26
- 230000015654 memory Effects 0.000 claims abstract description 138
- 238000012545 processing Methods 0.000 claims description 32
- 230000002093 peripheral effect Effects 0.000 claims description 6
- 230000008569 process Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 230000004044 response Effects 0.000 description 7
- 101100232371 Hordeum vulgare IAT3 gene Proteins 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000000052 comparative effect Effects 0.000 description 5
- QLAKAJLYYGOZQL-UHFFFAOYSA-N Carboxyphosphamide Chemical compound ClCCN(CCCl)P(=O)(N)OCCC(O)=O QLAKAJLYYGOZQL-UHFFFAOYSA-N 0.000 description 3
- 238000003672 processing method Methods 0.000 description 3
- 238000011144 upstream manufacturing Methods 0.000 description 3
- 102100024061 Integrator complex subunit 1 Human genes 0.000 description 2
- 101710092857 Integrator complex subunit 1 Proteins 0.000 description 2
- 101100019425 Schizosaccharomyces pombe (strain 972 / ATCC 24843) ivn1 gene Proteins 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 101150053844 APP1 gene Proteins 0.000 description 1
- 101100055496 Arabidopsis thaliana APP2 gene Proteins 0.000 description 1
- 101150110971 CIN7 gene Proteins 0.000 description 1
- 101100508840 Daucus carota INV3 gene Proteins 0.000 description 1
- 102100028043 Fibroblast growth factor 3 Human genes 0.000 description 1
- 101100189105 Homo sapiens PABPC4 gene Proteins 0.000 description 1
- 101150110298 INV1 gene Proteins 0.000 description 1
- 108050002021 Integrator complex subunit 2 Proteins 0.000 description 1
- 101710092886 Integrator complex subunit 3 Proteins 0.000 description 1
- 102100025254 Neurogenic locus notch homolog protein 4 Human genes 0.000 description 1
- 102100039424 Polyadenylate-binding protein 4 Human genes 0.000 description 1
- 101100016250 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) GYL1 gene Proteins 0.000 description 1
- 102100038359 Xaa-Pro aminopeptidase 3 Human genes 0.000 description 1
- 101710081949 Xaa-Pro aminopeptidase 3 Proteins 0.000 description 1
- 101100397044 Xenopus laevis invs-a gene Proteins 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000013403 standard screening design Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- 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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- 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/18—Handling requests for interconnection or transfer for access to memory bus based on priority control
-
- 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/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- 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/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
- G06F13/26—Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
-
- 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/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
-
- 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
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Multimedia (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提供了存储装置、存储装置的操作方法以及包括存储装置的电子系统。所述存储装置包括非易失性存储器件以及存储控制器,所述存储控制器被配置为:控制所述非易失性存储器件,执行来自主机的命令,从所述主机的存储器和至少一个高速缓存之中选择针对命令的完成条目要被写入的位置,以及向所述主机发送中断,所述中断包括指示所述完成条目要被写入的所述位置的中断向量号。
Description
相关申请的交叉引用
本申请基于并且要求于2022年5月20日在韩国知识产权局提交的韩国专利申请No.10-2022-0062337的优先权,所述韩国专利申请的公开内容通过引用全部包含于此。
技术领域
本公开涉及存储系统,更具体地,涉及一种用于在主机系统的高速缓存中递送完成队列的存储装置、存储装置的操作方法以及包括存储装置的电子系统。
背景技术
直接高速缓存访问(DCA)是一种信息处理系统协议,其使得来自输入/输出装置的数据被放置在主机系统的高速缓存中。DCA可以用于在将数据递送主机系统的存储器之前、代替将数据递送主机系统的存储器、或在将数据递送主机系统的存储器的同时,将数据递送主机系统的高速缓存中,并且通过使用预取提示来触发将数据放置到处理器高速缓存,从而防止系统存储器的访问延迟时间和带宽限制。
发明内容
根据示例实施例的一方面,一种存储装置包括非易失性存储器件以及存储控制器,所述存储控制器被配置为:控制所述非易失性存储器件,执行来自主机的命令,从所述主机的存储器和至少一个高速缓存之中选择所述命令的完成条目要被写入的位置,以及向所述主机发送中断,所述中断包括指示所述完成条目要被写入的所述位置的中断向量号。
根据示例实施例的一方面,一种存储装置包括非易失性存储器件;以及存储控制器,所述存储控制器被配置为:控制所述非易失性存储器件,执行来自主机的命令,向所述主机发送完成条目数据包,所述完成条目数据包包括:所述主机的存储器和至少一个高速缓存之中的所述命令的完成条目要被写入的位置的位置信息和所述完成条目,以及向所述主机发送中断数据包,所述中断数据包包括:指示所述完成条目是否被高速缓存在所述至少一个高速缓存之一中的高速缓存信息。
根据示例实施例的一方面,一种电子系统包括主机和存储装置,所述主机包括处理器和存储器,所述处理器包括多个核和至少一个高速缓存,所述存储装置包括非易失性存储器,其中,所述存储装置被配置为:执行来自所述主机的命令,从所述存储器和所述至少一个高速缓存之中选择所述命令的完成条目要被写入的位置,以及向所述主机发送中断,所述中断包括分配给所述完成条目要被写入的所述位置中包括的完成队列的中断向量号。
附图说明
根据以下结合附图的详细描述,以上和/或其他方面将被更加清楚地理解,其中:
图1是根据实施例的电子系统的示意性框图;
图2是根据实施例的电子系统的框图;
图3示出了根据实施例的主机中包括的提交队列和完成队列;
图4A和图4B示出了由根据实施例的存储装置执行的递送完成条目和发送中断的方法;
图5示出了由根据实施例的存储装置执行的递送完成条目和发送中断的方法;
图6A和图6B是根据实施例的存储控制器的示意性框图;
图7是根据实施例的存储装置的操作的流程图;
图8是根据实施例的存储装置的操作的流程图;
图9示出了由根据实施例的存储装置发送的完成条目数据包;
图10示出了由根据实施例的存储装置发送的中断数据包;
图11示出了根据实施例的主机的软件结构的示意性框图;
图12A示出了由根据实施例的电子系统实施的完成条目处理;
图12B示出了由根据比较示例的电子系统实施的完成条目处理;
图13是根据实施例的固态硬盘(SSD)系统的框图;
图14是根据实施例的计算系统的框图。
具体实施方式
现在将参照附图更全面地描述实施例。
图1是根据实施例的电子系统10的示意性框图。
电子系统10可以嵌入在电子设备中或者可以实现为电子设备。电子设备可以被实现为,例如,个人计算机(PC)、数据服务器、超移动PC(UMPC)、工作站、上网本、网络附加存储(NAS)、智能电视、物联网(IoT)设备或便携式电子设备。便携式电子设备可以是膝上型计算机、移动电话、智能手机、平板PC、个人数字助理(PDA)、企业数字助理(EDA)、数码相机、数码摄像机、音频播放器、便携式多媒体播放器(PMP)、个人导航设备(PND)、MP3播放器、手持游戏机、电子书、可穿戴设备等。
参照图1,电子系统10可以包括主机100和存储装置200。
主机(或主机系统)100管理电子系统10的所有操作。主机100可以将数据存储在存储装置200中,并且可以从存储装置200读取数据。主机100可以向存储装置200发送命令CMD。例如,主机100可以向存储装置200发送写入命令和写入数据,或者可以向存储装置200发送读取命令。存储装置200可以执行命令CMD,并且可以根据执行完成,向主机100发送完成条目CE。完成条目CE可以包括关于命令CMD的处理的信息,诸如,命令CMD是否已经被成功执行,或者在命令CMD的执行期间是否发生错误。完成条目CE可以被递送(post)主机100的存储器120和/或高速缓存CC中。存储装置200可以向主机100发送通知完成条目CE的递送的中断INT。
主机100可以包括处理器110、存储器120和接口电路130。处理器110、存储器120和接口电路130可以通过系统总线140相互通信。
处理器110可以实现为中央处理器(CPU)、处理器、微处理器或应用处理器(AP)。根据实施例,处理器110可以实现为片上系统(SoC)。
处理器110可以执行加载到存储器120中的各种软件(应用程序、操作系统(OS)、文件系统和设备驱动程序)。处理器110可以包括相同类型的多核或不同类型的多核。
处理器110可以包括高速缓存CC。例如,高速缓存CC可以包括专用于多个核中的每一核的高速缓存(例如,L2高速缓存)以及由多个核共享的高速缓存(例如,L3高速缓存)。
要由处理器110处理的应用程序或数据可以被加载到存储器120中。存储器120可以临时存储根据处理器110的处理而被处理的数据。存储器120可以被称为系统存储器。存储器120可以被实现为易失性存储器或非易失性存储器。易失性存储器的示例可以包括动态随机存取存储器(DRAM)和静态RAM(SRAM)。非易失性存储器的示例可以包括电阻式存储器,诸如,电阻RAM(ReRAM)、相变RAM(PRAM)和磁阻RAM(MRAM)。
在根据实施例的电子系统10中,提交队列SQ可以被包括在主机100的存储器120中,并且与提交队列SQ配对的完成队列CQa和CQb可以被分别包括在存储器120以及高速缓存CC中。尽管完成队列CQa和CQb被包括在物理上不同的位置,例如,图1中的存储器120和高速缓存CC,但是完成队列CQa和CQb也可以在逻辑上对应于一个完成队列,这是因为完成队列CQa和CQb与一个提交队列SQ配对。根据实施例,可以将中断向量号分配给完成队列CQa和CQb中的每一者。
与一个提交队列SQ配对的完成队列CQa和CQb是由主机100写入的队列,因此可以对应于要被传送到存储装置200的命令。提交队列SQ可以由主机100写入或由主机100提供,并且可以由存储装置200消耗。完成队列CQ作为由存储装置200写入的完成条目CE的队列,指示主机100请求的命令是否已经完成。完成队列CQa和CQb可以由存储装置200写入,并且由主机100消耗。
在初始化阶段,主机100可以生成一个或更多个提交队列以及与一个或更多个提交队列配对的一个或更多个完成队列。例如,每个完成队列可以与一个提交队列配对或者与多个提交队列SQ配对。
可以向提交队列SQ和完成队列CQa分配存储器120的区域,并且可以向完成队列CQb分配高速缓存CC的区域。主机100可以通过向存储装置200发送诸如每个队列的基地址、深度等的队列信息,向存储装置200通知提交队列SQ以及完成队列CQa和CQb。存储装置200可以基于队列信息执行来自提交队列SQ的命令CMD,或者可以将完成条目CE递送完成队列CQa和CQb。
接口电路130提供主机100与存储装置200之间的物理连接。接口电路130的协议可以是通用串行总线(USB)协议、小型计算机系统接口(SCSI)协议、快速PCI协议、ATA协议、并行ATA (PATA)协议、串行ATA (SATA)协议和串行连接SCSI(SAS)协议中的至少一种。
接口电路130可以根据与存储装置200的协议,转换与主机100发出的各种访问请求对应的命令CMD、地址和数据,并且可以将转换后的命令CMD、地址、数据提供给存储装置200。
接口电路130可以从存储装置200接收各种响应信号,例如,完成条目CE和中断INT,并且可以将完成条目CE和中断INT提供给主机100的组件之中的与完成条目CE和中断INT中的每一者对应的组件,例如,处理器110、高速缓存CC和存储器120。例如,接口电路130可以将完成条目CE发送到存储器120中的完成队列CQa和/或高速缓存CC中的完成队列CQb。例如,接口电路130可以向处理器110中包括的核提供中断INT。
存储装置200可以响应于从主机100提供的命令CMD访问非易失性存储器件(NVM)220,或者可以执行所请求的各种操作。存储装置200可以执行命令CMD,当命令CMD的执行完成时生成完成条目CE和中断INT,并且根据设置的协议向主机100发送完成条目CE和中断INT。
存储装置200可以包括存储控制器210和NVM 220。根据实施例,存储装置200可以是使用PCIe(快速外围组件互连)接口的高速缓存直接访问(CDA)的基于快速非易失性存储器(NVMe)的固态硬盘(SSD)。
NVM 220可以存储数据。换句话说,NVM 220可以存储从主机100接收的数据。NVM220可以包括存储单元阵列,该存储单元阵列包括即使在存储装置200的电源被切断时也能够保留所存储的数据的非易失性存储单元,并且存储单元阵列可以被分成多个存储块。多个存储块可以具有存储单元被二维布置在同一平面(或层)上的二维(2D)水平结构或非易失性存储单元被三维布置的三维(3D)垂直结构。存储单元可以是存储一位数据的单阶单元(SLC,single level cell),或者是能够存储至少两位数据的多阶单元(MLC,multi-levelcell)。然而,实施例不限于此,每个存储单元可以是用于存储3位数据的三阶单元(TLC,triple level cell)或用于存储4位数据的四阶单元(QLC,quadruple level cell)。
根据一些实施例,NVM 220可以包括:均包括存储单元阵列的多个裸片或均包括存储单元阵列的多个芯片。例如,NVM 220可以包括多个芯片,每个芯片可以包括多个裸片。根据实施例,NVM 220可以包括多个通道,每个通道包括多个芯片。
根据实施例,NVM 220可以是NAND闪存器件。然而,实施例不限于此,NVM 220可以被实现为电阻式存储器件,诸如ReRAM、PRAM或MRAM。
存储控制器210可以控制存储装置200的整体操作。当向存储装置200供电时,存储控制器210可以执行固件。当NVM 220是NAND闪存器件时,存储控制器210可以执行诸如闪存转换层(FTL)的固件以控制主机100与NVM 200之间的通信。例如,存储控制器210可以从主机100接收数据和逻辑块地址(LBA),并且可以将LBA与物理块地址(PBA)联系起来。PBA可以指示NVM 220中包括的存储单元之中的将要存储数据的存储单元的地址。
响应于来自主机100的用于请求写入/读取的命令,存储控制器210可以控制NVM220以从NVM 220读取数据或将数据编程到NVM 220。
根据实施例,存储控制器210可以包括CQ引导(steering)模块CQSM。当命令CMD的执行完成时,CQ引导模块CQSM可以在主机100中包括的存储器120和至少一个高速缓存CC之中,选择根据命令CMD的完成条目CE要被写入(被存储)的位置(例如,递送位置)。根据实施例,CQ引导模块CQSM可以基于根据处理完成条目CE的时间的时延,在存储器120和至少一个高速缓存CC之中,选择完成条目CE要被递送的位置。
存储控制器210可以将完成条目CQ递送设置在选定位置处的完成队列CQa或CQb,并且可以向主机100发送包括指示选定位置的信息(例如,高速缓存信息)的中断INT。完成条目CQ和中断INT可以被实现为基于在主机100与存储装置200之间建立的通信协议生成的数据包。包括完成条目CQ的数据包可以被称为完成条目数据包,并且包括中断INT的数据包可以被称为中断数据包。完成条目数据包可以包括指示完成条目CE被写入的位置的位置信息,并且中断数据包可以包括被分配给完成条目CE被递送的完成队列CQa或CQb的中断向量号作为高速缓存信息。
现在将参照图2至图10详细描述由存储控制器210执行的如下操作:在存储器120和至少一个高速缓存CC之中选择完成条目CE要被递送的位置,将完成条目CE递送选定位置中包括的完成队列CQa和CQb,以及生成指示选定位置的中断INT。
主机100可以基于中断向量号(即,指示完成条目CE被存储的位置的位置信息),通过调整完成条目处理的优先级来防止在完成条目被处理时出现瓶颈,可以为输入/输出提供分段响应时间,并且可以优化输入/输出时延。因此,可以改善存储装置200和电子系统10的处理性能。
图2是根据实施例的电子系统10a的框图。
参照图2,电子系统10a可以包括主机100a和存储装置200a,主机100a可以包括处理器110a、存储器120a和根联合体(root complex)130a。根据实施例,处理器110a、存储器120a和根联合体130a可以被实现为单独的半导体芯片。根据另一实施例,处理器110a和存储器120a或者处理器110a和根联合体130a可以被集成到单个半导体芯片中。根据实施例,主机100a和存储装置200a可以经由基于PCIe接口的总线相互通信。
处理器110a可以包括多个核(core),例如,第一核111和第二核112,并且第一核111和第二核112可以分别包括专用高速缓存,例如,L2高速缓存11和12。第一核111和第二核112可以共享共享高速缓存,例如,L3高速缓存13。完成队列CQc、CQd和CQb可以分别布置在L2高速缓存11和12以及L3高速缓存13中。换句话说,L2高速缓存11和12以及L3高速缓存13的各自的部分区域可以用作完成队列。
存储器120a可以包括例如DRAM。存储器120a可以包括提交队列SQ以及与提交队列SQ配对的完成队列CQa。L3高速缓存13中包括的完成队列CQb以及L2高速缓存11或12中包括的完成队列CQc或CQd可以与存储器120a中包括的完成队列CQa一起视为一个完成队列,并且可以与提交队列SQ配对。
根联合体130a将包括处理器110a和存储器120a的子系统连接到存储装置200a。根联合体130a与存储装置200a之间的通信可以基于事务层包(TLP)遵循NVMe协议。
根联合体130a可以以数据包的形式发送和接收在主机100a与存储装置200a之间传输的信号,例如,完成条目和中断,并且可以基于位置信息,向目的地发送信号,该位置信息指示包括报头(header)的信号要从数据包的报头发送到的目的地。
根联合体130a可以向存储装置200a发送被写入提交队列SQ的命令。根联合体130a可以从存储装置200a接收完成条目,并且可以将完成条目发送到位于L2高速缓存11或12、L3高速缓存13和存储器120a之中的由完成条目中包括的位置信息指示的位置处的完成队列。
根据实施例,当完成条目被写入L2高速缓存11或12或者L3高速缓存13时,即,当完成条目被高速缓存时,根联合体130a还可以将完成条目写入存储器120a的完成队列CQa。
根联合体130a可以基于从存储装置200a接收到的中断中包括的位置信息,将中断发送到与位置信息对应的核,例如,第一核111或第二核112。中断可以包括被分配给存储有完成条目的完成队列的中断向量号。对应于中断的核可以基于中断向量号确定完成条目是否被高速缓存,以及完成条目被高速缓存在哪个高速缓存中,并且可以确定中断的优先处理顺序。
存储装置200a可以被实现为使用基于PCIe总线的高速缓存直接存储器访问(CDMA)的NVMe SSD。NVMe是基于PCIe接口的存储装置的通信标准,可以定义用于基于PCIe的SSD的命令集和功能集。存储装置200a可以执行从主机100a接收到的命令,可以在根据命令的操作被完成时生成完成条目,可以在存储器120a和至少一个高速缓存(例如,L2高速缓存11或12以及L3高速缓存13)之中确定完成条目要被写入到的位置,可以将完成条目递送所确定的位置。存储装置200a可以生成中断向量,该中断向量包括分配给完成队列被写入的位置处的完成条目的中断向量号,并且可以向主机100a发送所生成的中断向量。
图3示出了根据实施例的主机中包括的提交队列和完成队列。
参考图3,主机100可以在初始化阶段生成一个或更多个提交队列(即,第一提交队列SQ1和第二提交队列SQ2)以及一个或更多个完成队列(即,与一个或更多个提交队列SQ1和SQ2对应的第一完成队列CQ1和第二完成队列CQ2)。例如,第一提交队列SQ1和第一完成队列CQ1可以彼此配对,第二提交队列SQ2和第二完成队列CQ2可以彼此配对。在图3中,一个提交队列(例如,SQ1)和一个完成队列(例如,CQ1)可以彼此配对。然而,实施例不限于此,多个提交队列可以与一个完成队列配对。
由主机100生成的命令可以被写入第一提交队列SQl和第二提交队列SQ2,存储器(图1的120或图2的120a)可以对第一完成队列CQ1和第二完成队列CQ2执行命令,并且基于命令的完成而生成的完成条目可以被写入。
第一提交队列SQ1和第二提交队列SQ2可以布置在存储器120中。与第一提交队列SQ1配对的第一完成队列CQ1可以包括布置在存储器120中的完成队列CQ1a(以下称为第一队列)以及布置在处理器110中的一个或更多个完成队列CQ1b和CQ1c(以下分别称为第二队列和第三队列)。例如,第二队列CQ1b可以布置在L3高速缓存13中,第三队列CQ1c可以布置在专用于核(例如,图2的第一核111)的L2高速缓存11中。在图3中,第二队列CQ1b和第三队列CQ1c分别布置在L3高速缓存13和L2高速缓存11中。然而,实施例不限于此,完成队列可以布置在L3高速缓存13中,或者完成队列可以布置在L2高速缓存11中。
第一队列CQ1a、第二队列CQ1b和第三队列CQ1c布置在物理上不同的位置,但可以被包括在与第一提交队列SQ1配对的一个完成队列(即,第一完成队列CQ1)中。
与第二提交队列SQ2配对的第二完成队列CQ2可以布置在存储器120中。然而,实施例不限于此,类似于第一完成队列CQl,第二完成队列CQ2可以包括分别包括在存储器120和处理器110中的至少两个队列。
中断向量号IVN可以被分配给第一完成队列CQl和第二完成队列CQ2中的每一者。例如,当主机100在早期阶段生成第一完成队列CQ1和第二完成队列CQ2时,主机100可以将中断向量号INV分配给第一完成队列CQ1和第二完成队列CQ2中的每一者。不同的中断向量号可以分别分配给第一完成队列CQ1中包括的第一队列CQ1a、第二队列CQ1b和第三队列CQ1c。例如,如图3所示,“1”、“3”和“4”可以作为中断向量号INV分配给第一队列CQ1a、第二队列CQ1b和第三队列CQ1c,并且“2”可以作为中断向量号INV分配给第二完成队列CQ2。
根据实施例,第一提交队列SQ1的深度可以等于第一完成队列CQ1的深度,第二提交队列SQ2的深度可以等于第二完成队列CQ2的深度。根据实施例,第一完成队列CQ1中包括的第一队列CQ1a的深度可以等于第一提交队列SQ1的深度。或者,第一完成队列CQ1中包括的第一队列CQ1a、第二队列CQ1b和第三队列CQ1c的深度之和可以等于第一提交队列SQ1的深度。
如上文参照图1描述的,第一提交队列SQ1和第二提交队列SQ2由主机100写入或由主机100提供,并且由图1的存储装置200消耗。换言之,第一提交队列SQ1和第二提交队列SQ2各自的尾指针TP可以通过主机100写入命令而推进。尾指针TP的位置可以被发送到存储装置200。主机100可以向存储装置200发送尾部门铃(tail doorbell),其指示新命令已经被记录在第一提交队列SQ1或第二提交队列SQ2中。存储装置200可以从第一提交队列SQ1或第二提交队列SQ2获取命令,并且可以执行该命令。
存储装置200可以通过执行命令并且将指示执行完成的完成条目提供给第一完成队列CQl或第二完成队列CQ2,来推进第一提交队列SQl的头指针HP。
第一完成队列CQl和第二完成队列CQ2由存储装置200写入并且由主机100消耗。第一完成队列CQl和第二完成队列CQ2的各自的尾指针TP可以通过存储装置200写入完成条目而推进。当从存储装置200发送对应于完成条目的中断时,主机100可以执行内部操作以完成对写入第一提交队列SQ1和第二提交队列SQ2的命令的所有处理过程,响应于中断推进第一完成队列CQ1和第二完成队列CQ2的头指针HP,并且将新的头指针TP的位置发送到存储装置200。可以通过将头指针HP填写在存储装置200的门铃寄存器(未示出)来实现主机100向存储装置200通知头指针HP。
当图1的处理器110处理完命令时,处理器110可以响应于中断INT从主机100搜索完成队列。如上所述,完成队列(例如,第一完成队列CQ1)可以布置在至少一个高速缓存中,例如,L2高速缓存11、L3高速缓存13和存储器120。当一个中断向量号被分配给一个完成队列时,核(图2的111)难以基于中断确定完成条目已写入到的完成队列的位置。当完成条目存在于高速缓存(例如,L2高速缓存11或L3高速缓存13)中然后被提取并且在存储器120中进行处理时,在命令处理中产生额外的时延。输入/输出时延的增加会导致电子系统的性能下降。
然而,由于根据实施例的图1的电子系统10将不同的中断向量号分别分配给第一完成队列CQ1中包括的第一队列CQ1a、第二队列CQ1b和第三队列CQ1c,并且包括与完成条目已经写入到的队列对应的中断向量号的中断被提供给处理器110的核,因此核可以基于中断向量号确定完成条目已经被存储到的位置,并且可以优先处理被高速缓存的完成条目。因此,可以优化输入/输出时延。
图4A和图4B示出了由根据实施例的存储装置执行的递送完成条目和发送中断的方法。
参照图4A和图4B,处理器110可以包括多个核,例如,第一核111至第N核11N,并且多个核可以包括专用高速缓存,例如,L2高速缓存11。多个核可以共享L3高速缓存13。在图4A和图4B中,第一核111至第N核11N被示出为共享一个L3高速缓存13。然而,实施例不限于此,处理器110可以包括多个L3高速缓存13,并且第一核111至第N核11N中的一些可以共享一个L3高速缓存13,并且另一些核可以共享另一个L3高速缓存13。
与第一提交队列SQl配对的第一完成队列(例如,第一队列CQla、第二队列CQlb和第三队列CQlc)可以分别布置在存储器120、L3高速缓存13和第一核111的L2高速缓存12中。
存储装置200可以从第一提交队列SQl顺序地读取命令,例如,第一命令CMDl、第二命令CMD2和第三命令CMD3,并且可以执行第一命令CMDl、第二命令CMD2、和第三命令CMD3。
当命令执行完成时,存储装置200可以将完成条目递送完成队列。例如,存储装置200可以将第一完成条目CE1递送被布置在L2高速缓存11中的第三队列CQ1c,将第二完成条目CE2递送被布置在L3高速缓存13中的第二队列CQ1b,并且将第三完成条目CE3递送被布置在存储器120中的第一队列CQ1a。
根据如图4B所示的实施例,当完成条目被递送布置在L3高速缓存13中的第二队列CQ1b和布置在L2高速缓存11中的第三队列CQ1c时,完成条目也可以被递送存储器120中布置的第一队列CQ1a。例如,第一完成条目CE1可以在被递送第三队列CQ1c的同时被递送第一队列CQ1a,或在被递送第三队列CQ1c之后被递送第一队列CQ1a。换言之,当完成条目被高速缓存时,完成条目可以写入存储器120。
在将完成条目递送完成队列之后,存储装置200可以向核(例如,第一核111)发送中断。中断可以包括高速缓存信息,其指示完成条目是否被高速缓存以及完成条目被高速缓存在哪个高速缓存中。例如,存储装置200可以向第一核111发送指示第一完成条目CE1已经被高速缓存在L2高速缓存中的第一中断INT1,可以向第一核111发送指示第二完成条目CE2已经被高速缓存在L3高速缓存中的第二中断INT2,并且可以向第一核111发送指示第三完成条目CE3未被高速缓存而已经被写入到存储器120的第三中断INT3。
根据实施例,高速缓存信息可以包括中断向量号。如上文参照图3所述,不同的中断向量号可以分别分配给完成队列,例如,第一队列CQ1a、第二队列CQ1b和第三队列CQ1c。中断可以包括被分配给完成条目已写入到的完成队列的中断向量号。第一核111可以基于中断中包括的中断向量号,来确定完成条目是否被高速缓存以及完成条目被高速缓存在哪个高速缓存中。
例如,第一中断INTl可以包括被分配给第一完成条目CE1已写入到的L2高速缓存11中的第三完成队列CQlc的中断向量号,并且第一核111可以基于第一中断INT1中的中断向量号,确定第一完成条目CE1已经被高速缓存在L2高速缓存11中,并且可以从L2高速缓存11中包括的第三完成队列CQ1c读取第一完成条目CE1。
第一核111可以基于中断向量号确定完成条目是否被高速缓存以及完成条目被高速缓存在哪个高速缓存中,并且可以调整完成条目的优先级。例如,第一核111可以优先处理完成条目CE1或第二完成条目CE2,而不是未被高速缓存的完成条目(例如,第三完成条目CE3)。与当完成条目被高速缓存时被处理相比,当高速缓存的完成条目在未被处理的情况下被逐出(evict)并且位于存储器120中然后被处理时,时延会增加。因此,第一核111可以通过优先处理高速缓存的完成条目来减少与高速缓存的完成条目对应的命令的完成时延。
为了便于说明,图4A和图4B示出了第一提交队列SQ1以及与第一核111相关联的第一完成队列的第一队列CQ1a、第二队列CQ1b和第三队列CQ1c,并且上面已经描述了与它们相关联的完成条目递送和中断。然而,以上描述也适用于其他核。
图5示出了由根据实施例的存储装置执行的递送完成条目和发送中断的方法。假设处理器110包括第一核111和第二核112。
参照图5,与第一提交队列SQ1配对的第一完成队列中的第一队列CQ1a、第二队列CQ1b和第三队列CQ1c可以分别布置在存储器120、L3高速缓存13和第一核111的L2高速缓存11中。与第二提交队列SQ2配对的第二完成队列中的第一队列CQ2a和第二队列CQ2b可以分别布置在存储器120和L3高速缓存13中。
存储装置200可以从第一提交队列SQl顺序地读取命令CMDl、CMD2和CMD3并执行命令CMDl、CMD2和CMD3,并且可以递送指示对第一完成队列中的第一队列CQ1a、第二队列CQ1b和第三队列CQ1c的命令执行已经完成的完成条目CE1、CE2和CE3。
存储装置200可以向第一核111发送对应于第一完成条目CE1的第一中断INT1a、对应于第二完成条目CE2的第二中断INT2a、以及对应于第三完成条目CE3的第三中断INT3a。
提供给第一核111的第一中断INT1a和第二中断INT2a是高速缓存中断,可以包括指示第一完成条目CE1和第二完成条目CE2已经分别被高速缓存在第一核111的L2高速缓存11和L3高速缓存13中的高速缓存信息。例如,高速缓存信息可以是被分配给第二队列CQ1b和第三队列CQ1c的中断向量号。提供给第一核111的第三中断INT3a是非高速缓存中断,可以包括指示第三完成条目CE3已经写入存储器120的高速缓存信息,例如,中断向量号。
存储装置200还可以从第二提交队列SQ2顺序地读取命令CMDl、CMD2和CMD3并且执行命令CMDl、CMD2和CMD3,并且可以将指示命令执行完成的完成条目CE1、CE2和CE3递送第二完成队列中的第一队列CQ2a和第二队列CQ2b。
存储装置200可以向第二核112发送对应于第一完成条目CE1的第一中断INTlb、对应于第二完成条目CE2的第二中断INT2b、以及对应于第三完成条目CE3的第三中断INT3b。
提供给第二核112的第一中断INTlb是高速缓存中断,可以包括指示第一完成条目CE1已经高速缓存在L3高速缓存13中的高速缓存信息。例如,高速缓存信息可以是分配给第二队列CQ2b的中断向量号。提供给第二核112的第二中断INT2b和第三中断INT3b是非高速缓存中断,可以包括指示第二完成条目CE2和第三完成条目CE3已经分别写入存储器120的高速缓存信息,例如,中断向量号。
图6A和图6B是根据实施例的存储控制器210的示意性框图。
参照图6A和图6B,存储控制器210可以包括处理器211、随机存取存储器(RAM)212、主机接口(I/F)213、缓冲器214和NVM I/F 215。这些组件可以经由总线216彼此通信。
处理器211可以包括CPU或微处理器,并且可以控制存储控制器210的整体操作。根据实施例,处理器211可以使用多核处理器(例如,双核处理器或四核处理器)来实现。
处理器211可以向主机I/F 213和NVM I/F 215的寄存器发送对NVM 220执行读取/写入操作所需的各种控制信息。处理器211可以根据针对存储控制器210的各种控制操作提供的固件进行操作。例如,处理器211可以执行用于管理NVM 220的垃圾收集或者用于执行地址映射、磨损均衡等的FTL。
RAM 212可以用作操作存储器、缓冲存储器、高速缓存存储器等。例如,RAM 212可以被实现为易失性存储器(诸如,DRAM或SRAM)、或非易失性存储器(诸如,PRAM、FRAM或ReRAM)。RAM 212可以加载由处理器211执行的软件和/或固件。例如,当启动存储装置200时,可以将软件和/或固件从NVM 220加载到RAM 212。
缓冲器214可以临时存储要写入NVM 220的数据或从NVM 220读取的数据。缓冲器214可以被实现为易失性存储器(诸如,DRAM或SRAM)、或非易失性存储器(诸如,PRAM、FRAM或ReRAM)。
NVM I/F 215可以提供存储控制器210与NVM 220之间的接口。根据实施例,NVM I/F 215的数量可以对应于存储装置200中包括的NVM芯片的数量,或者存储控制器210与NVM220之间的通道的数量。
主机I/F 213被配置为在CPU 211的控制下与主机100通信。诸如以下各种接口方法中的至少一种适用于主机I/F 213:通用串行总线(USB)、AT附件(ATA)、串行AT附件(SATA)、并行AT附件(PATA)、串行连接SCSI(SAS)、高速芯片间(HSIC)、小型计算机系统接口(SCSI)、外围组件互连(PCI)、快速PCI(PCIe)、通用闪存(UFS)、安全数字(SD)、多媒体卡(MMC)、嵌入式MMC(eMMC)、双列直插式存储器模块(DIMM)、带寄存器的DIMM(RDIMM)、低负载DIMM(LRDIMM)、增强型小型磁盘接口(ESDI)和集成驱动电子器件(IDE)。
主机I/F 213可以生成完成条目,将完成条目递送主机100,并且向主机100发送与完成条目对应的中断。根据实施例,主机I/F 213可以包括完成条目递送模块CEPM、中断生成模块IGM和CQ引导模块CQSM。根据实施例,完成条目递送模块CEPM、中断生成模块IGM和CQ引导模块CQSM可以被实现为硬件电路。
当命令的执行完成时,CQ引导模块CQSM可以在设置在主机100中的存储器和至少一个高速缓存之中,选择根据命令的完成条目要被写入的位置。根据实施例,CQ引导模块CQSM可以基于根据处理完成条目CE的时间的时延,在存储器120和至少一个高速缓存CC之中选择完成条目CE要递送的位置。下面将参照图8来描述CQ引导模块CQSM的详细操作。
根据实施例,CQ引导模块CQSM可以被实现为软件或固件,并且如图6B所示,可以被加载到存储器212中。当处理器211执行加载到存储器212中的指令时,可以执行CQ引导模块CQSM的功能。
完成条目递送模块CEPM可以将完成条目发送到由CQ引导模块CQSM选择的位置中包括的完成队列。完成条目可以以数据包的形式(例如,作为完成条目数据包)发送给主机100,指示完成条目要被写入的位置(例如,图1的主机100中的存储器120和至少一个高速缓存CC)的位置信息可以被包括在完成条目数据包的报头中。
中断生成模块IGM生成指示完成条目已经被递送的中断。根据实施例,中断生成模块IGM可以包括中断向量表,并且可以基于中断向量表来生成对应于条目的中断。中断生成模块IGM可以生成消息信令中断(message signaled interrupt,MSI)。
中断可以包括指示完成条目被写入的位置的信息,诸如,指示完成条目是否被高速缓存以及完成条目被高速缓存在哪个高速缓存中的高速缓存信息。根据实施例,高速缓存信息可以是被分配给完成条目被写入的位置中包括的完成队列的中断向量号。中断可以以数据包的形式(例如,作为中断数据包)发送给主机100,并且高速缓存信息可以被包括在中断数据包的报头中。中断数据包的报头可以包括指示图1的主机100的处理器110中包括的多个核中断被发送到的核的位置信息。
图7是根据实施例的存储装置的操作的流程图。图7的操作可以由图1的存储装置200的存储控制器210执行。
参照图7,存储控制器210可以从主机接收命令并且执行接收到的命令(S110)。根据实施例,存储控制器210可以包括命令队列,并且命令可以写入命令队列。存储控制器210可以调度命令的执行。
存储控制器210可以根据命令执行完成生成完成条目(S120)。完成条目可以包括,例如,是否已正常执行根据命令的操作。
存储控制器210可以从图1的主机100的存储器和至少一个高速缓存之中选择完成条目的目的地(S130)。存储控制器210可以基于根据处理完成条目的时间的时延,来选择完成条目的目的地,即,完成条目要被递送的位置。
存储控制器210可以将完成条目递送所选目的地(S140)。存储控制器210可以向主机100发送包括完成条目和指示完成条目的目的地的位置信息的完成条目数据包。例如,存储控制器210可以将完成条目数据包发送到图2的主机100a的根联合体130a,并且根联合体130a可以基于完成条目数据包的报头中包括的位置信息,将完成条目写入存储器或至少一个高速缓存。
存储控制器220可以向主机100发送对应于完成条目的中断(S150)。中断可以被实现为中断数据包,该中断数据包包括指示完成条目是否被高速缓存以及完成条目被高速缓存在哪个高速缓存中的高速缓存信息。如上文参照图1至图5所描述的,中断向量号可以被分配给与至少一个提交队列对应的一个完成队列(例如,逻辑上的一个完成队列)中包括的并且分别被设置在不同位置(例如,存储器、L2高速缓存和L3高速缓存)的完成队列,并且高速缓存信息可以包括被分配给完成条目的目的地中包括的完成队列的中断向量号。
主机100可以基于中断向量号确定完成条目是否被高速缓存以及完成条目是否需要被优先处理,并且可以确定完成条目的处理顺序。主机100可以基于中断向量号来处理写入到与中断向量号对应的完成队列的完成条目。
图8是根据实施例的存储装置的操作的流程图。详细地,图8示出了由图1的存储控制器210中包括的CQ引导模块CQSM执行的确定完成条目的目的地的方法。
参照图8,CQ引导模块CQSM可以收集关于完成条目的命令的执行时间的信息(S210)。例如,当命令请求图1的NVM 220写入数据时,CQ引导模块CQSM可以检查从命令被写入命令队列并被执行至完成将数据写入NVM 220的时间的执行时间。
CQ引导模块CQSM可以确定命令的执行时间是否等于或大于第一参考时间(S220)。根据实施例,第一参考时间可以基于命令的目标时延来设置,并且例如可以对应于目标时延的80%。
当命令的执行时间等于或大于第一参考时间时(S220-是),CQ引导模块CQSM可以将完成条目的目的地设置为第一高速缓存(S230)。根据实施例,第一高速缓存可以是核的专用高速缓存,例如,L2高速缓存。
当命令的执行时间小于第一参考时间时(S220-否),CQ引导模块CQSM可以确定命令的执行时间是否等于或大于第二参考时间(S240)。根据实施例,第二参考时间可以基于命令的目标时延来设置,并且可以小于第一参考时间。例如,第二参考时间可以对应于目标时延的60%。
当命令的执行时间等于或大于第二参考时间时(S240-是),CQ引导模块CQSM可以将完成条目的目的地设置为第二高速缓存(S250)。根据实施例,第二高速缓存可以是核之间的共享高速缓存,例如,L3高速缓存。
当命令的执行时间小于第二参考时间时(S240-否),CQ引导模块CQSM可以将完成条目的目的地设置为存储器(S260)。这样,CQ引导模块CQSM可以基于命令的执行时间来设置完成条目的目的地,并且可以选择靠近核的存储区域(即,核的可快速访问的高速缓存)作为完成条目的目的地,从而随着执行时间增加,对应于该命令的完成条目可以被图1的主机100优先处理。因此,即使命令的执行时间很长,也可以快速处理完成条目,因此,命令的完成时延(从命令被发出至完成条目被处理的时间)可以减少。
图9示出了由根据实施例的存储装置发送的完成条目数据包。图9示出了基于PCIe的数据包。
如图9所示,完成条目数据包CEP可以包括报头HDa和载荷PL。载荷PL可以包括完成条目CE。报头HDa可以包括多个字段,例如,控制字段、请求方ID(RID)、引导标签(ST)、地址ADDR和处理提示(PH)。控制字段可以包括指示报头的大小、数据包的性质、是否存在可选使用的CRC、地址处理方法、载荷PL的大小等的控制值。RID可以包括分配给发送数据包的设备的ID,ST指示图1的处理器110中包括的多个核之中的处理数据包中的数据(例如,完成条目C3)的核,地址ADDR指示图1的主机100所识别的数据包中的数据要被发送到的图1的主机100中的位置。PH可以包括指示完成条目的目的地的位置信息。例如,当PH被设置为“00”时,PH可以指示图1的存储器120,当PH被设置为“01”时,PH可以指示L2高速缓存,当PH被设置为“10”时,PH可以指示L3高速缓存。根据实施例,报头HDa可以被实现为包括控制字段、RID、ST、地址ADDR和PH的16字节数据,即,4个双字(DW)。
图10示出了由根据实施例的存储装置发送的中断数据包。图10示出了基于PCIe的数据包。
如图10所示,中断数据包INTP可以包括报头HDb和载荷PL。报头HDb可以包括多个字段,例如,控制字段、RID和ST。根据实施例,报头HDb可以被实现为8字节的数据。ST指示图1的处理器110中包括的多个核之中的数据包数据(例如,中断)要被发送到的核,并且载荷PL可以包括中断向量号INV。可以基于ST向与中断对应的核发送中断,核可以基于载荷PL的中断向量号INV确定完成条目是否被高速缓存以及完成条目被高速缓存在哪个高速缓存中。
图11示出了根据实施例的主机的软件结构的示意性框图。
参照图11,主机100的软件可以简单地包括在用户模式下执行的应用程序121以及在内核(kernel)模式下执行的内核122,内核122可以包括输入/输出(I/O)系统123和设备驱动程序124。虽然图11中未示出,但是可以在内核模式下执行文件系统。在主机100的软件被加载到图1的存储器120之后,该软件可以由处理器110执行。
应用程序121是作为基本服务被驱动的或者由图1的主机100根据用户请求来驱动的上层软件。可以执行多个应用程序APP0、APP1、APP2和APP3以提供各种服务。
例如,当用户请求再现运动图片文件时,可以执行用于回放运动图片的应用程序。所执行的应用程序可以生成对图1的存储装置200的读取请求,以播放用户请求的运动图片文件,读取请求的命令可以被写入提交队列。存储装置200从提交队列获取命令并且执行所获取的命令。
内核122作为OS的组件所依赖的核心程序,用于访问硬件组件和调度在主机100上执行的进程和时间表,并且管理应用程序121与硬件之间的交互。
I/O系统123不同地控制各种I/O设备,例如,存储装置200。I/O系统123可以包括管理规范(management instrumentation,MI)例程、电源管理器、I/O管理器等。
设备驱动程序124是用于在OS级别控制I/O设备(例如,存储装置200)的控制模块。当由用户生成或从应用程序121生成对存储装置200的访问请求时,设备驱动程序124被调用。设备驱动程序124可以被提供为用于控制存储装置200的内核的软件模块。
根据实施例,在初始化阶段,设备驱动程序124可以生成提交队列和完成队列,生成到图1的存储器200和图1的主机100的至少一个高速缓存CC的完成队列,并且将中断向量号分别分配给完成队列。根据实施例,设备驱动程序124可以从数据包(例如,图9的完成条目数据包CEP和图10的中断数据包INTP)读取ST,并且可以从完成条目数据包CEP读取PH。
图12A示出了根据实施例的电子系统10实施的完成条目处理,图12B示出了根据比较示例的由电子系统10’实施的完成条目处理。
存储装置200可以执行来自主机100的命令,将指示命令的执行已经完成的完成条目CE发送到从主机100中包括的存储器或至少一个高速缓存之中选择的位置,并且发送指示向主机100发送完成条目CE的中断。
例如,如图12A所示,存储装置200可以将完成条目CE1发送(递送)到存储器的第一完成队列CQ1a(S10)。存储装置200可以向主机100发送包括第一中断向量号IVN1的第一中断(S20)。第一中断向量号IVN1作为分配给第一完成队列CQ1a的中断向量号,可以指示完成条目CE1已经被递送存储器的第一完成队列CQ1a。第一中断可以被发送到核,并且核可以执行中断服务例程(ISR)(S30)。例如,核可以从存储器读取完成条目CE1,可以执行完成处理,并且可以完成该完成处理。当ISR完成时,核可以执行在第一中断被发送之前已经执行的处理。
接下来,存储装置200可以将完成条目CE2发送到存储器的第二完成队列CQ2(S40)。存储装置200可以向主机100发送包括第二中断向量号IVN2的第二中断(S50)。第二中断向量号IVN2作为分配给第二完成队列CQ2的中断向量号,可以指示完成条目CE2已经被递送第二完成队列CQ2。第二中断可以被发送到核,并且核可以执行ISR(S60)。
存储装置200可以将完成条目CE3发送到高速缓存的第一完成队列CQlb(S70),并且可以将包括第三中断向量号INV3的第三中断发送到主机100(S80)。第三中断向量号IVN3作为分配给第一完成队列CQ1b的中断向量号,可以指示完成条目CE3已经被高速缓存在高速缓存的第一完成队列CQ1b中。
高速缓存中断的优先级可以高于非高速缓存中断的优先级。当核执行与第二中断对应的ISR时,响应于指示完成条目CE3已被高速缓存的第三中断,核可以暂时中止执行与第二中断对应的ISR,并且可以执行与第三中断对应的ISR(S90)。因此,在图12A中,S60的完成由于S80的到达而中断。核可以从高速缓存读取完成条目CE3,根据完成条目CE3执行完成处理,然后完成该完成处理。因此,在图12A中,S60的完成发生在S90的完成之后。
当与第三中断对应的ISR完成时,核可以继续执行与第二中断对应的ISR以完成该完成处理(S100)。
将参照图12B描述根据比较示例的电子系统10’完成条目的处理。在根据比较示例的电子系统10’中,一个完成队列中包括的完成队列可以分别在存储器和高速缓存中生成,但是相同的中断向量号可以分配给分别包括在存储器和高速缓存中的完成队列。换言之,即使当一个完成队列被物理地放置在多个位置时,也可以分配相同的中断向量号。
由于操作S10a、S20a、S30a、S40a、S50a和S60a与图12A的操作S10至S60相同,因此将省略重复的描述。
存储装置200可以将完成条目CE3发送到高速缓存的第一完成队列CQlb(S70a),并且可以将包括第一中断向量号INVl的第三中断发送到主机100(S80a)。第一中断向量号INV1被分配给第一完成队列CQ1a和CQ1b。
可以延迟完成条目CE3的处理,并且可以将完成条目CE3从高速缓存逐出到存储器(S90a)。例如,当在操作S60a中执行根据第二中断的ISR时,可以延迟完成条目CE3的处理。
在根据第二中断的ISR完成之后,核可以执行根据第三中断的ISR(S100a)。核可以从存储器读取完成条目CE3,执行完成处理,然后完成ISR。
核访问存储器所花费的时间可以比访问高速缓存所花费的时间长。因此,如根据图12B的比较示例的电子系统10’执行的完成条目处理方法,当完成条目CE3在被存储在高速缓存中时未被处理时并且当完成条目CE3在被逐出到存储器之后被处理时,时延会增加。
然而,在由参照图12A描述的根据实施例的电子系统10执行的完成条目处理方法中,核可以基于中断中包括的中断向量号,确定完成条目是否被高速缓存以及完成条目被高速缓存在哪个高速缓存中,并且当完成条目被高速缓存时,可以优先处理完成条目。这样,当完成条目的处理顺序被调整时,可以防止在处理完成条目时出现瓶颈,优化I/O时延。
图13是根据实施例的SSD系统1000的框图。
SSD系统1000可以被包括在数据中心中,该数据中心包括执行数百个虚拟机的数十台主机或服务器。例如,SSD系统1000可以是计算设备,诸如,膝上型计算机、台式计算机、服务器计算机、工作站、便携式通信终端、PDA、PMP、智能手机或平板PC、虚拟机或其虚拟计算设备。或者,SSD系统1000可以是包括在计算系统(诸如,显卡)中的一些部件。SSD系统1000不限于下面描述的硬件配置,并且其他配置是可行的。
参照图13,SSD系统1000可以包括主机1100和SSD 1200。
主机1100可以指能够处理数据的数据处理装置。主机1100可以执行OS和/或各种应用。主机1110可以包括CPU、图形处理单元(GPU)、神经处理单元(NPU)、数字信号处理器(DSP)、微处理器、或AP。主机1100可以包括一个或更多个处理器以及主存储器(例如,DRAM)。如上所述,可以在一个或更多个处理器中包括的高速缓存和主存储器中创建完成队列,并且可以将中断向量号分别分配给完成队列。
主机1100可以通过使用各种协议与SSD 1200通信。例如,主机1100可以通过使用诸如以下接口协议与SSD 1200通信:外围组件互连-快速(PCI-E)、高级技术附件(ATA)、串行ATA(SATA)、并行ATA(PATA)、或串行连接的SCSI(SAS)。诸如通用闪存(UFS)、通用串行总线(USB)、多媒体卡(MMC)、增强型小型磁盘接口(ESDI)和集成驱动电子器件(IDE)等各种其他接口协议可以应用于主机1100与SSD 1200之间的协议。
SSD 1200可以被实现为使用基于PCIe总线的CDMA的NVMe SSD。SSD 1200经由信号连接器通过信号与主机1100通信,并且经由电源连接器接收电力。SSD系统1200可以包括SSD控制器1210、辅助电源1220和存储器件1230、1240和1250。多个存储器件1230、1240和1250可以是NAND闪存器件。
以上参照图6A和图6B描述的存储控制器210被应用于SSD控制器210。SSD控制器1210可以包括CQ引导模块CQSM,并且CQ引导模块CQSM可以从主机1100的至少一个高速缓存和存储器之中选择完成条目要被写入的位置。SSD控制器1210可以将完成条目递送选定位置中包括的完成队列,并且可以向主机1100发送指示完成条目已经递送选定位置的中断。中断可以被实现为MSI,并且可以包括被分配给完成条目已经写入到的完成队列的中断向量号。
主机1100的处理器可以基于中断中包括的中断向量号来确定完成条目是否被高速缓存,并且可以确定完成条目的处理顺序。例如,主机1100可以优先处理高速缓存的完成条目,而不是非高速缓存的完成条目。
图14是根据实施例的计算系统2000的框图。
参照图14,计算系统2000可以包括基于PCIe接口的I/O层次结构。计算系统2000可以包括CPU 2110、DRAM控制器2120、DRAM 2130、PICe RC 2140、交换机2210、桥接器(bridge)2260和多个端点(EP),并且多个EP可以包括多个PCIe EP 2220、2230、2250和2270、传统EP 2240和PCI-X EP 2280。EP的配置可以不同。
CPU 2110、DRAM控制器2120、DRAM 2130和PICe RC 2140可以被包括在主机2100中,并且可以经由基于PCIe的系统总线2150相互通信。
主机2100适用于图1的主机100。可以在CPU 2110的至少一个高速缓存2111和DRAM2130中生成完成队列CQa和CQb,并且可以将中断向量号分别分配给完成队列CQa和CQb。完成队列CQa和CQb可以与一个提交队列配对。
PICe RC 2140将主机2100连接到多个EP。PCIe RC 2140可以解析来自多个EP的TLP,并且将相应的信号发送到相应的装置,例如,CPU 2110或DRAM 2130。
PCIe RC 2140可以直接连接到EP或者可以通过交换机2210或桥接器2260间接连接到EP。参照图14,PCIe RC 2140可以经由交换机2210连接到PCIe EP 2220和2230以及传统EP 2240。PCIe RC 2140可以直接连接到PCIe EP 2250,或者可以经由桥接器2260连接到PCIe EP 2270和PCI-X EP 2280。
交换机2210和桥接器2260是能够将多个EP连接到PCIe RC 2140的装置。交换机2210可以处理由硬件发送/接收的数据包,并且桥接器2260可以处理通过软件发送/接收的数据包。交换机2210和桥接器2260可以包括下游(downstream)端口和上游(upstream)端口。在图14中,交换机2210连接到两个PCIe EP 2220和2230以及一个传统EP 2240。在这种情况下,两个PCIe EP 2220和2230以及一个传统EP 2240可以连接到交换机2210的下游端口,并且PCIe RC 2140可以连接到交换机2210的上游端口。
连接到PCIe RC 2140的EP 2220、2230、2240、2250、2270和2280、交换机2210和桥接器2260形成一个层级。EP作为事务主体可以是诸如SSD、USB等存储装置,或者诸如图形装置等外围装置。EP 2220、2230、2240、2250、2270和2280可以作为请求方发起事务,或者可以作为完成方响应事务。EP 2220、2230、2240、2250、2270和2280可以是位于连接到CPU 2110和存储器2130的I/O层级底部的装置或组件。
多个PCIe EP 2220、2230、2250和2270之中的至少一个EP,例如,PCIe EP 2220可以执行来自CPU 2110的命令,生成表示命令执行结果的完成条目,并且从至少一个高速缓存2111和DRAM 2130之中选择完成条目要被写入的位置。PCIe EP 2220可以将完成条目递送选定位置中包括的完成队列,例如,完成队列CQa或完成队列CQb。PCIe EP 2220可以向CPU 2110发送指示完成条目是否被高速缓存的中断。中断可以包括分配给完成条目被写入到的完成队列的中断向量号。
PCIe RC 2140可以从自PCIe EP 2220接收到的完成条目数据包的报头读取位置信息,并且可以将完成条目发送到选定位置,例如,至少一个高速缓存2111或DRAM 2130。PCIe RC 2140可以从中断数据包的报头读取位置信息(例如,ST),并且可以将中断发送到CPU 2110中包括的多个核之中的相应核。核可以基于中断的中断向量号确定完成条目是否被高速缓存(以及完成条目被高速缓存在哪个高速缓存中),可以确定完成条目的处理顺序。例如,当完成条目被高速缓存时,核可以优先处理该完成条目。
虽然已经具体示出和描述了各种示例实施例,但是将理解,在不脱离所附权利要求的精神和范围的情况下,可以在其中进行形式和细节上的各种改变。
Claims (20)
1.一种存储装置,包括:
非易失性存储器件;以及
存储控制器,所述存储控制器被配置为:
控制所述非易失性存储器件,
执行来自主机的命令,
从所述主机的存储器和至少一个高速缓存之中选择所述命令的完成条目要被写入的位置,以及
向所述主机发送中断,所述中断包括指示所述完成条目要被写入的所述位置的中断向量号。
2.根据权利要求1所述的存储装置,其中,所述存储控制器还被配置为:向所述主机发送完成条目数据包,所述完成条目数据包包括所述命令的完成条目要被写入的所述位置的位置信息。
3.根据权利要求2所述的存储装置,其中,所述完成条目数据包的报头包括处理提示字段,所述处理提示字段包括所述位置信息。
4.根据权利要求1所述的存储装置,其中,所述存储控制器还被配置为:向所述主机发送包括载荷的中断数据包,
其中,所述载荷包括所述中断向量号。
5.根据权利要求4所述的存储装置,其中,所述中断数据包的报头包括引导标签,所述引导标签指示所述主机的多个核之中的相应核。
6.根据权利要求1所述的存储装置,其中,所述存储控制器还被配置为:
基于所述完成条目被写入所述至少一个高速缓存,向所述主机发送指示所述完成条目已经被高速缓存的高速缓存中断;以及
基于所述完成条目被写入所述存储器,向所述主机发送指示所述完成条目未被高速缓存的非高速缓存中断。
7.根据权利要求6所述的存储装置,其中,所述高速缓存中断的优先级高于所述非高速缓存中断的优先级。
8.根据权利要求1所述的存储装置,其中,所述存储控制器还被配置为:基于所述命令的执行时间来选择所述完成条目要被写入的所述位置,并且
其中,所述命令对应于所述完成条目。
9.根据权利要求1所述的存储装置,其中,所述至少一个高速缓存包括:所述主机中包括的多个核的各自的专用高速缓存或由所述多个核共享的共享高速缓存中的至少一个高速缓存。
10.根据权利要求1所述的存储装置,其中,所述存储控制器包括接口电路,所述接口电路被配置为基于PCIe接口向所述主机发送所述中断,所述PCIe接口即快速外围组件互连接口。
11.一种存储装置,包括:
非易失性存储器件;以及
存储控制器,所述存储控制器被配置为:
控制所述非易失性存储器件,
执行来自主机的命令,
向所述主机发送完成条目数据包,所述完成条目数据包包括:所述主机的存储器和至少一个高速缓存中的所述命令的完成条目要被写入的位置的位置信息和所述完成条目,以及
向所述主机发送中断数据包,所述中断数据包包括:指示所述完成条目是否被高速缓存在所述至少一个高速缓存之一中的高速缓存信息。
12.根据权利要求11所述的存储装置,其中,所述高速缓存信息包括分配给所述完成条目要被写入的所述位置中包括的完成队列的中断向量号。
13.根据权利要求11所述的存储装置,其中,所述存储控制器还被配置为:基于与所述完成条目对应的所述命令的执行时间,选择所述完成条目要被写入的所述位置。
14.根据权利要求13所述的存储装置,其中,所述存储控制器还被配置为:
基于所述执行时间等于或大于参考时间,选择所述至少一个高速缓存作为所述完成条目要被写入的所述位置,以及
基于所述执行时间小于所述参考时间,选择所述存储器作为所述完成条目要被写入的所述位置。
15.根据权利要求11所述的存储装置,其中,所述存储控制器还被配置为:根据NVMe协议,生成所述完成条目数据包和所述中断数据包,所述NVMe协议即快速非易失性存储器协议。
16.一种电子系统,包括:
主机,所述主机包括处理器和存储器,所述处理器包括多个核和至少一个高速缓存;以及
存储装置,所述存储装置包括非易失性存储器,
其中,所述存储装置被配置为:
执行来自所述主机的命令,
从所述存储器和所述至少一个高速缓存之中选择所述命令的完成条目要被写入的位置,以及
向所述主机发送中断,所述中断包括分配给所述完成条目要被写入的所述位置中包括的完成队列的中断向量号。
17.根据权利要求16所述的电子系统,其中,所述存储装置被配置为:
基于所述命令的执行时间等于或大于参考时间,选择所述至少一个高速缓存作为所述完成条目要被写入的所述位置,以及
基于所述命令的所述执行时间小于所述参考时间,选择所述存储器作为所述完成条目要被写入的所述位置。
18.根据权利要求16所述的电子系统,其中,所述存储装置还被配置为:向所述主机发送完成条目数据包,所述完成条目数据包包括处理提示字段,所述处理提示字段包括所述命令的完成条目要被写入的所述位置的位置信息。
19.根据权利要求16所述的电子系统,其中,所述存储装置还被配置为:向所述主机发送中断数据包,所述中断数据包包括所述中断向量号以及所述多个核之中的所述中断要被发送到的核的信息。
20.根据权利要求16所述的电子系统,其中,所述主机和所述存储装置被配置为基于PCIe接口相互通信,所述PCIe接口即快速外围组件互连接口。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2022-0062337 | 2022-05-20 | ||
KR1020220062337A KR20230162440A (ko) | 2022-05-20 | 2022-05-20 | 스토리지 장치, 스토리지 장치의 동작 방법 및 스토리지 장치를 포함하는 전자 시스템 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117093517A true CN117093517A (zh) | 2023-11-21 |
Family
ID=88781988
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310552434.1A Pending CN117093517A (zh) | 2022-05-20 | 2023-05-16 | 存储装置、存储装置的操作方法和电子系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230409495A1 (zh) |
KR (1) | KR20230162440A (zh) |
CN (1) | CN117093517A (zh) |
-
2022
- 2022-05-20 KR KR1020220062337A patent/KR20230162440A/ko unknown
-
2023
- 2023-05-16 CN CN202310552434.1A patent/CN117093517A/zh active Pending
- 2023-05-19 US US18/199,765 patent/US20230409495A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20230162440A (ko) | 2023-11-28 |
US20230409495A1 (en) | 2023-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10534560B2 (en) | Data storage device and data processing system having the same | |
KR102371916B1 (ko) | 가상 머신을 지원하는 스토리지 장치, 그것을 포함하는 스토리지 시스템 및 그것의 동작 방법 | |
US9858015B2 (en) | Solid-state storage management | |
US9785545B2 (en) | Method and apparatus for providing dual memory access to non-volatile memory | |
TWI752620B (zh) | 與記憶體類型相關的頁表 | |
US11379381B2 (en) | Main memory device having heterogeneous memories, computer system including the same, and data management method thereof | |
CN115495389B (zh) | 存储控制器、计算存储装置以及计算存储装置的操作方法 | |
US20190026220A1 (en) | Storage device that stores latency information, processor and computing system | |
US11614892B2 (en) | Memory system architecture for heterogeneous memory technologies | |
CN112445423A (zh) | 存储器系统、计算机系统及其数据管理方法 | |
KR20190086341A (ko) | 배리어 커맨드에 기초하여 데이터를 순서대로 저장하는 스토리지 장치 | |
US20190042415A1 (en) | Storage model for a computer system having persistent system memory | |
JP2021149374A (ja) | データ処理装置 | |
KR102596964B1 (ko) | 맵 캐시 버퍼 크기를 가변시킬 수 있는 데이터 저장 장치 | |
US20240086113A1 (en) | Synchronous write method and device, storage system and electronic device | |
US20230229357A1 (en) | Storage controller, computational storage device, and operational method of computational storage device | |
WO2022246036A1 (en) | Adjustable timer component for semiconductor devices | |
US20230409495A1 (en) | Storage device, operation method of the storage device, and electronic system including the storage device | |
KR20220045342A (ko) | 호스트 장치, 데이터 저장 장치, 데이터 처리 시스템 및 데이터 처리 방법 | |
US20240012564A1 (en) | Memory controller and storage device including the same | |
US20190310776A1 (en) | Mass storage system having peer-to-peer data movements between a cache and a backend store |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |