CN112948292A - 储存设备及其中断生成方法 - Google Patents
储存设备及其中断生成方法 Download PDFInfo
- Publication number
- CN112948292A CN112948292A CN202110198634.2A CN202110198634A CN112948292A CN 112948292 A CN112948292 A CN 112948292A CN 202110198634 A CN202110198634 A CN 202110198634A CN 112948292 A CN112948292 A CN 112948292A
- Authority
- CN
- China
- Prior art keywords
- interrupt
- host
- storage device
- completion
- command
- 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
- 238000000034 method Methods 0.000 title claims abstract description 70
- 230000015654 memory Effects 0.000 claims description 157
- 230000002776 aggregation Effects 0.000 claims description 65
- 238000004220 aggregation Methods 0.000 claims description 65
- 238000005516 engineering process Methods 0.000 claims description 3
- 230000003111 delayed effect Effects 0.000 claims description 2
- 230000002093 peripheral effect Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 34
- 238000012545 processing Methods 0.000 description 22
- 230000008569 process Effects 0.000 description 20
- 230000004044 response Effects 0.000 description 11
- 101100481702 Arabidopsis thaliana TMK1 gene Proteins 0.000 description 9
- 101100338009 Mus musculus Gsta1 gene Proteins 0.000 description 8
- 101100123101 Mus musculus Gsta4 gene Proteins 0.000 description 8
- 239000007787 solid Substances 0.000 description 8
- 239000000758 substrate Substances 0.000 description 7
- 239000010410 layer Substances 0.000 description 6
- 239000004065 semiconductor Substances 0.000 description 6
- 239000013598 vector Substances 0.000 description 6
- 101000949825 Homo sapiens Meiotic recombination protein DMC1/LIM15 homolog Proteins 0.000 description 3
- 101001046894 Homo sapiens Protein HID1 Proteins 0.000 description 3
- 102100022877 Protein HID1 Human genes 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 3
- 238000013403 standard screening design Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 229920001621 AMOLED Polymers 0.000 description 2
- 101100049574 Human herpesvirus 6A (strain Uganda-1102) U5 gene Proteins 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012536 packaging technology Methods 0.000 description 2
- 101150064834 ssl1 gene Proteins 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 102100031885 General transcription and DNA repair factor IIH helicase subunit XPB Human genes 0.000 description 1
- 101000920748 Homo sapiens General transcription and DNA repair factor IIH helicase subunit XPB Proteins 0.000 description 1
- 101000934888 Homo sapiens Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Proteins 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 102100025393 Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Human genes 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 239000000919 ceramic Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006116 polymerization reaction Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
Images
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
- 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
- G06F13/1673—Details of memory controller using buffers
-
- 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
- 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
-
- 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
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)
- Bus Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Software Systems (AREA)
Abstract
一种操作储存设备的方法,包括:执行由主机提供的命令;将与执行的命令对应的完成条目的写入延迟间隔时间,其中该间隔时间基于储存设备的性能;以及当在先前的完成条目的写入之后过去间隔时间时,将与执行的命令对应的完成条目写入主机的完成队列。
Description
本申请是申请日为2016年08月12日、申请号为201610664071.0、发明名称为“储存设备及其中断生成方法”的发明专利申请的分案申请。
相关申请的交叉引用
本申请要求于2015年9月14日提交的第10-2015-0129396号韩国专利申请的优先权,通过引用将其公开的全部内容并入本文。
技术领域
本发明构思的示例性实施例涉及半导体存储器件,并且更具体地涉及储存设备及其中断生成方法。
背景技术
闪速存储器件往往被用在诸如例如计算机、智能电话、个人数字助理(PDA)、数字相机、录音机、MP3播放器、手持PC等电子设备中。闪速存储器件的示例是固态驱动器(SSD)。SSD通常在诸如例如服务器、客户端、数据中心等设备中使用。串行AT附件(SATA)、高速PCI(PCIe)、串行附接SCSI(SAS)和高速NVM(NVMe)是用于SSD的通用接口。包括SSD的主机设备可以包括各种计算机***。例如,SSD可以连接到服务器、数据中心、个人计算机(PC)等。在该情况下,可能由于中断的频繁发生(这例如可能在主机设备的性能较低或者在主机设备上驱动较高数量的应用时发生)而造成主机设备的开销。
发明内容
本发明构思的示例性实施例提供一种降低中断生成频率的储存设备及其中断生成方法。
根据本发明构思的示例性实施例,一种储存设备的中断生成方法包括:执行由主机提供的命令;当完成命令的执行时将完成条目写入在主机的完成队列中;以及响应于满足第一中断生成条件、第二中断生成条件和第三中断生成条件中的至少一个,向主机发出对应于完成条目的中断。当完成队列的尾部指针与头部指针之间的差异等于第一失配值时满足第一中断生成条件。当尾部指针与头部指针之间的差异至少等于聚合阈值时满足第二中断生成条件。当自从发出先前的中断已经过去的时间量超过参考时间时满足第三中断生成条件。
根据本发明构思的示例性实施例,一种储存设备包括:非易失性存储器件;以及储存器控制器,其被配置为控制非易失性存储器件。储存器控制器执行由主机提供的命令,当执行命令时将完成条目发送给主机,并且向主机发出对应于完成条目的中断。储存器控制器响应于满足第一中断生成条件、第二中断生成条件和第三中断生成条件中的至少一个,向主机发出中断。当存储完成条目的主机的完成队列的尾部指针与头部指针之间的差异等于第一失配值时满足第一中断生成条件。当尾部指针与头部指针之间的差异至少等于聚合阈值时满足第二中断生成条件。当自从发出先前的中断已经过去的时间量超过参考时间时满足第三中断生成条件。
根据本发明构思的示例性实施例,一种固态驱动器(SSD)的中断发出方法包括:在主机的完成队列处写入完成条目;基于在完成队列中所累积的完成条目的数量或者自从发出先前的中断已经过去的时间量,来确定是否发出对应于完成队列的中断;以及基于确定的结果向主机发送中断。
根据本发明构思的示例性实施例,一种固态驱动器(SSD)的中断发出方法包括:在主机的完成队列处写入完成条目;基于指示完成队列的尾部指针与头部指针之间的差异是否等于第一失配值的第一中断生成条件、指示尾部指针与头部指针之间的差异是否至少等于聚合阈值的第二中断生成条件、以及指示自从发出先前的中断已经过去的时间量是否超过参考时间的第三中断生成条件中的至少一个,来确定是否发出对应于中断队列的中断;以及基于确定的结果向主机发送中断。
更具体地,根据本发明构思的示例性实施例,一种操作储存设备的方法,包括:执行由主机提供的命令;将与执行的命令对应的完成条目的写入延迟间隔时间,其中该间隔时间基于储存设备的性能;以及当在先前的完成条目的写入之后过去间隔时间时,将与执行的命令对应的完成条目写入主机的完成队列。
附图说明
通过参照附图来详细地描述本发明构思的示例性实施例,本发明构思的上述以及其他特征将变得更加明显,附图中:
图1是例示根据本发明构思的示例性实施例的用户设备的框图;
图2是例示根据本发明构思的示例性实施例的队列管理操作的框图;
图3是例示根据本发明构思的示例性实施例的、在图1中所示的储存器控制器的框图;
图4是例示根据本发明构思的示例性实施例的、图3的储存器控制器针对主机生成中断的方法的示例的图;
图5是例示根据本发明构思的示例性实施例的储存设备的操作方法的时序图;
图6是例示根据本发明构思的示例性实施例的储存器控制器的操作方法的流程图;
图7是例示根据本发明构思的示例性实施例的、根据图5的中断生成方法的主机和储存设备的调用处理过程的图;
图8是例示根据本发明构思的示例性实施例的储存设备的操作方法的时序图;
图9是例示根据参照图8描述的示例性实施例的储存器控制器的中断生成方法的流程图;
图10是例示根据本发明构思的示例性实施例的、根据图9的中断生成方法的主机和储存设备的调用处理过程的图;
图11是例示中断生成方法的示例性实施例的时序图;
图12是执行参照图11描述的示例性实施例的储存器控制器的中断生成方法的流程图;
图13是例示根据本发明构思的示例性实施例的、根据图11的中断生成方法的主机和储存设备的调用处理过程的图;
图14是例示根据本发明构思的示例性实施例的中断生成方法的时序图;
图15是例示根据本发明构思的示例性实施例的中断生成方法的时序图;
图16是例示根据本发明构思的示例性实施例的、参照图1描述的非易失性存储器的框图;
图17是例示根据本发明构思的示例性实施例的、包括在图16的存储单元阵列中的存储块的第一存储块的电路图;
图18是例示包括根据本发明构思的示例性实施例的非易失性存储器***的存储卡***的框图;
图19是例示包括根据本发明构思的示例性实施例的非易失性存储器***的固态驱动器的框图;
图20是例示包括根据本发明构思的示例性实施例的非易失性存储器***的用户***的框图。
具体实施方式
下面将参照附图更全面地描述本发明构思的示例性实施例。在附图中,为了清楚,可能放大各层和各区的大小和相对大小。相同的标号在附图的各处可以指示相同的元件。
下面将以使用闪速存储器件的固态存储器(SSD)为例来描述本发明构思的示例性实施例的特征和功能。然而,本发明构思的示例性实施例不限于此。
应当理解,在本文中使用术语“第一”、“第二”、“第三”以将一个元件与另一个区分开,而这些元件不受这些术语所限制。因此,在示例性实施例中的“第一”元件在另外的示例性实施例中可以被描述为“第二”元件。
图1是例示根据本发明构思的示例性实施例的用户设备的框图。参照图1,根据本发明构思的示例性实施例的用户设备10可以包括主机100和储存设备200。主机100可以向储存设备200提供命令CMD。储存设备200可以将完成条目写入在主机100的完成队列CQ处作为执行命令的结果,并且可以发出中断。例如,根据本发明构思的示例性实施例,储存设备200可以发出比对应于正在被写入的完成条目的事件发生的数量更小的中断。这将在下面更详细地描述。
主机100可以从储存设备200读取数据或者向储存设备200写入数据。例如,主机100可以将数据写入到储存设备200,并且可以生成被用于读取在储存设备200中存储的数据的命令CMD。例如,主机100可以向储存设备200输出命令CMD,并且可以从储存设备200接收指示对应的命令是否被执行的完成条目以及相关联的中断。主机100可以响应于该中断,执行中断处理,以便完成与对应的命令相关联的线程或任务。
根据本发明构思的示例性实施例,主机100可以包括处理单元110、主机存储器120以及接口电路130。被用于驱动主机100的各种各样的软件(包括,例如应用程序、文件***、设备驱动器等)可以被加载到主机存储器120上并且被存储在主机存储器120中。
处理单元110可以执行存储在主机存储器120中的各种各样的软件(例如,应用程序、操作***、设备驱动器等)。例如,处理单元110可以执行操作***(OS)、应用程序等。处理单元110可以例如是同类多核处理器或者异类多核处理器。
要被处理单元110处理的应用程序或数据可以被加载到主机存储器120上。用于管理要被传递给储存设备200的命令的队列的输入/输出调度器122可以被加载到主机存储器120上。输入/输出调度器122例如可以包括提交队列123和完成队列125。提交队列123例如可以是对应于要被发送给储存设备200的命令的队列。完成队列125例如可以是由储存设备200写入的完成条目的等待串,并且可以指示由主机100所请求的命令是否完成。
提交队列123可以由主机100写入或供应,并且可以由储存设备200读取。例如,主机100可以使提交队列的尾部指针TP前进,并且新的尾部指针TP的位置可以发送给储存设备200。此外,储存设备200可以通过提供完成条目使提交队列的头部指针HP前进。
完成队列125可以由储存设备200写入,并且可以存储在主机100中。例如,可以通过储存设备200的写入操作使完成队列125的尾部指针TP前进。主机100可以响应于中断使完成队列125的头部指针HP前进,并且可以将新的头部指针HP的位置传递给储存设备200。头部指针HP的位置可以由主机100通过将其写入在储存设备200的门铃寄存器中而指示给储存设备200。
接口电路130可以提供在主机100与储存设备200之间的物理连接。接口电路130例如可以将与从主机100发出的各种访问请求相对应的命令、地址、数据等转换成适合于与储存设备200对接的格式。接口电路130可以包括诸如例如通用串行总线(USB)、小型计算机***接口(SCSI)、高速串行组件互连(高速PCI)、高级技术附件(ATA)、并行ATA(PTA)、串行ATA(SATA)和串行附接SCSI(SAS)这样的协议中的至少一个。然而,接口电路130不限于此。
储存设备200可以响应于来自主机100的命令CMD来访问非易失性存储器件(例如非易失性存储器件230、240、……、250),并且可以执行各种所请求的操作。储存设备200可以参考关于从主机100提供的完成队列CQ的门铃寄存器来生成中断信号。在示例性实施例中,储存设备200可以仅在出现完成队列CQ的尾部指针TP和头部指针HP之间的第一失配时生成中断。在示例性实施例中,储存设备200可以当在完成队列CQ处累积的条目的数量超过阈值TH时生成对应于多个完成信号的中断向量。在示例性实施例中,储存设备200可以在从出现完成队列CQ的尾部指针TP与头部指针HP之间的第一失配时的时间点开始过去一定量的时间的情况下生成对应于多个完成信号的中断向量。
在示例性实施例中,储存设备200例如可以包括储存器控制器210、缓冲存储器220以及至少一个非易失性存储器件(例如非易失性存储器件230、240、……、250)。
储存器控制器210可以提供主机100与储存设备200之间的对接。根据本发明构思的示例性实施例,储存器控制器210可以根据来自主机100的完成队列CQ的头部指针HP门铃信息来执行中断生成。例如,在示例性实施例中,储存器控制器210可以执行迟钝中断生成操作,以便在出现完成队列CQ的尾部指针与头部指针之间的第一失配时的时间点时生成中断。在示例性实施例中,储存控制器210可以在通过迟钝中断生成操作累积的完成条目的数量超过阈值时,或者响应于从先前生成中断的时间点开始过去的一定量的时间,来生成相对少量的中断。储存器控制器210的详细操作将稍后描述。
根据本发明构思的示例性实施例,储存设备200可以减少生成中断的事件的数量,从而减少所消耗的资源并且通过降低开销来提高主机100的性能。
图2是例示根据本发明构思的示例性实施例的主机的队列管理操作的框图。参照图2,被加载到主机存储器120上并且被处理单元110驱动的主机100的软件可以包括例如应用程序121和操作***(OS)的内核122。内核122例如可以包括输入/输出调度器126和设备驱动器128。此外,文件***可以包括在操作***的内核122中。
应用程序121可以被驱动作为基本服务,或者可以是由用户驱动的上层的软件。多个应用程序App0至App3可以同时被驱动以提供各种服务。要执行的应用程序App0至App3可以被加载到主机存储器120上,并且可以由处理器单元110执行。
例如,如果用户请求回放视频文件,则可以执行用于播放视频的应用程序(例如,视频播放器)。例如,所执行的应用程序可以向储存设备发出读取请求或写入请求以播放所请求的视频文件。用于对于储存设备200的写入请求的命令可以被写入在提交队列123处,并且提交队列123的尾部指针TP可以被更新。此外,主机100可以将尾部门铃输出给储存设备200,向储存设备200指示在提交队列123处记录了新的命令。在该情况下,储存设备200可以从提交队列123取得对应的命令,并且可以执行所取得的命令。
此外,储存设备200可以将完成条目写入在完成队列125处,以指示最新近从主机100取得的命令被完成。此时,完成队列125的尾部指针TP因为完成条目被写入而增加。接下来,如果从储存设备200接收到与对应的完成条目相对应的中断,则主机100可以执行内部操作,以便完成处理在提交队列123处写入的命令的过程。
设备驱动器128例如可以是用于在OS级别控制储存设备200的控制模块。如果由用户或从应用程序121请求存储器访问,则设备驱动器128可以被调用。设备驱动器128例如可以使用用于控制储存设备200的内核的软件模块来实现。
当应用程序生成命令时,可以将多个命令写入在提交队列123处,并且与被写入在提交队列123中的命令相对应的完成条目可以被写入在完成队列125中。主机100可以基于中断来处理写入在完成队列125中的完成条目。在完成队列125中所累积的完成条目的处理被延迟的情况下,中断可能频繁发生,这可能造成主机100处的开销。根据本发明构思的示例性实施例,储存设备200可以以减少要对其生成中断的事件的数量的方式来生成中断,如在下文进一步描述的那样,减少***的开销。
图3是根据本发明构思的示例性实施例的、在图1中所示的储存器控制器210的框图。参照图3,储存器控制器210例如可以包括中央处理单元(CPU)211、主机接口212、缓冲管理器216和闪速接口217。
CPU 211可以向主机接口212和闪速接口217的寄存器提供被用于针对非易失性存储器件230、240、……、250的读取/写入操作的各种各样的信息。CPU 211可以基于被提供用于储存器控制器210的各种控制操作的固件来进行操作。例如,CPU 211可以执行闪速转换层(FTL)以用于垃圾收集,以便管理非易失性存储器件230、240、……、250,地址管理、耗损均衡等。
主机接口212可以与主机100通信。例如,主机接口212可以包括用于写入主机100的提交队列123的尾部指针门铃的第一门铃寄存器213。主机接口212还可以包括第二门铃寄存器214,在第二门铃寄存器214处,主机100写入完成队列125的头部指针HP被更新以及更新位置。此外,主机接口212还可以包括用于根据第二门铃寄存器214的状态来管理要生成的中断的中断表215。
主机接口212可以提供主机100与储存设备200之间的物理连接。例如,主机接口212可以按照主机100的主线格式与储存设备200对接。主机100的主线格式可以包括例如通用串行总线(USB)、小型计算机***接口(SCSI)、高速PCI、ATA、并行ATA(PTA)、串行ATA(SATA)或串行附接SCSI(SAS)中的至少一个。在示例性实施例中,可以对主机接口212应用安装在主机100上的、使用高速PCI接口来交换数据的NVMe协议。
缓冲管理器216可以控制缓冲存储器220的读取和写入操作。例如,缓冲管理器216可以将写入数据或读取数据临时存储在缓冲存储器220中。缓冲管理器216可以在CPU 211的控制下按照流单位对缓冲存储器的存储区域进行分类。
闪速接口217可以与闪速存储器件(例如非易失性存储器件230、240、……、250)交换数据。闪速接口217可以通过存储器通道CH1至CHn将来自缓冲存储器220的数据写入到闪速存储器件(例如非易失性存储器件230、240、……、250)处。从闪速存储器件(例如非易失性存储器件230、240、……、250)读取出的读取数据可以通过存储器通道来提供,并且可以通过闪速接口217来收集。所收集的数据可以存储在缓冲存储器220中。
储存器控制器210可以响应于由主机100写入在第一门铃寄存器213处的门铃信息来取得在主机100的提交队列123处写入的命令。如果所取得的命令CMD的执行完成,则储存控制器210可以在主机的完成队列125处写入指示对应的命令的执行完成的完成条目。此外,储存器控制器210可以参照由主机100所管理的完成队列125的尾部指针TP和头部指针HP之间的差异来针对对应的完成条目生成中断。
根据本发明构思的示例性实施例,虽然完成条目被写入在主机100处,但是储存控制器210可以仅在完成队列125的尾部指针TP与头部指针HP之间的第一失配值出现时生成中断。此外,储存控制器210可以在完成队列CQ的尾部指针TP与头部指针HP之间的差异超过阈值时生成中断。此外,储存控制器210可以在从完成队列125的尾部指针TP与头部指针HP之间的第一失配值出现时的时间点开始过去一时间之后,针对所累积的完成条目生成中断。
图4是例示根据本发明构思的示例性实施例的、图3的储存器控制器210针对主机生成主断的方法的示例的图。在图4中例示生成与在主机100处管理的多个完成队列215a和215b相对应的中断的方法。在本文中所描述的示例中,假设主机100先前将命令集合写入在提交队列(SQ)123处。在当前示例中所描述的本发明构思的特征将以储存设备200取得并执行命令条目并且将完成条目写入在主机100的完成队列215a和215b处的步骤来描述。
在执行一个所取得的命令之后,储存器控制器210可以将完成条目CQ1_1写入在第一完成队列215a处(①)。在执行另外的所取得的命令之后,储存器控制器210可以将完成条目CQ2_1写入在第二完成队列215b处(②)。接下来,储存器控制器210可以检测在第二门铃寄存器214处更新的完成队列的头部指针与尾部指针之间的差异。如果完成队列的头部指针HP与尾部指针TP之间的差异对应于第一失配,或者如果所累积的完成条目的数量超过阈值,则储存器控制器210可以生成与两个完成条目CQ1_1和CQ2_1相对应的中断Int0(④)。因此,单个中断可以允许主机100处理两个完成条目CQ1_1和CQ2_1(⑤)。如果两个完成条目CQ1_1和CQ2_1的处理完成,则主机100可以更新第二门铃寄存器214,以通知、更新或释放完成队列215a和215b的头部指针(⑥)。
在以上所描述的本发明构思的示例性实施例中,使用一个中断向量来提供针对多个完成队列的中断。然而,示例性实施例不限于此。例如,示例性实施例可以利用三个或更多的完成队列。
图5是例示根据本发明构思的示例性实施例的储存设备200的操作方法的时序图。参照图5,在示例性场景中,在执行从主机100所取得的命令之后,储存器控制器210将完成条目写入在主机100的完成队列125处。中断在完成队列的尾部指针与头部指针之间的第一失配的时间点处生成。将在下面更详细地描述该示例性场景。
参照参考图5描述的示例性场景,当完成从主机100取得的命令的执行时,储存器控制器210将完成条目C0写入在主机100的完成队列125处。当完成条目C0被写入时,完成队列125的尾部指针TP增加至(N+1)。然而,主机100未处理完成队列125,并且完成队列125的头部指针HP不增加。因此,头部指针HP此时为N。即,因为完成队列125的尾部指针TP与头部指针HP之间的差异为1,所以将时间点T0确定为第一失配时间点(例如第一时间点,此时,尾部指针TP的值与头部指针HP的值不匹配)。在第一失配时间点时出现的尾部指针TP与头部指针HP之间的值的差异在本文中可以被称为第一失配值。在该情况下,储存器控制器210向主机100输出中断IR0。中断例如可以是销基(pin-base)信号,或者可以以消息信令中断(MSI)的方式或MSI-X方式来传递。
当在时间T1时完成一个所取得的命令的执行时,储存器控制器210将完成条目C1写入在主机100的完成队列125处。当完成条目C1被写入时,完成队列125的尾部指针TP增加至(N+2)。然而,完成队列125未被主机100处理,并且完成队列125的头部指针不增加。因此,头部指针HP此时仍为N。因此,当在时间T1时写入新的完成条目C1时,完成队列125的尾部指针TP与头部指针HP之间的差异为2。因为尾部指针TP与头部指针HP之间的差异不等于第一失配值(例如,不等于1),所以不生成中断,并且在该示例性实施例中,仅在尾部指针TP与头部指针HP之间的差异等于第一失配值(例如,在该示例性场景中等于1)时才生成中断。
当在时间T2时完成一个所取得的命令的执行时,储存器控制器210将完成条目C2写入在主机100的完成队列125处。当写入完成条目C2时,完成队列125的尾部指针TP增加至(N+3)。然而,完成队列125未被主机100处理,并且完成队列125的头部指针HP不增加。因此,当在时间T2时写入新的完成条目C2时,完成队列125的尾部指针TP与头部指针HP之间的差异为3。因为尾部指针TP与头部指针HP之间的差异不等于第一失配值(例如,不等于1),所以不生成中断。
当在时间T3时完成一个所取得的命令的执行时,储存器控制器210将完成条目C3写入在主机100的完成队列125处。当写入完成条目C3时,完成队列125的尾部指针TP增加至(N+4)。然而,因为完成队列125仍未被主机100处理,所以完成队列125的头部指针HP维持在N,并且尾部指针TP与头部指针HP之间的差异为4。因为尾部指针TP与头部指针HP之间的差异不等于第一失配值(例如,不等于1),所以不生成中断。在时间T3之后,完成队列125的尾部指针TP增加至(N+5),并且完成队列125被主机100处理。因此,头部指针HP增加至N+4,并且在时间T4之前,尾部指针TP与头部指针HP之间的差异被重置为0。
当在时间T4时完成一个所取得的命令的执行时,储存器控制器210将完成条目C4写入在主机100的完成队列125处。当写入完成条目C4时,完成队列125的尾部指针TP增加至(N+5)。在该时间点,完成队列125的头部指针维持在(N+4)。因此,当在时间T4时写入新的完成条目C4时,完成队列125的尾部指针TP与头部指针HP之间的差异等于第一失配值(例如,等于1)。在该情况下,因为尾部指针TP与头部指针HP之间的差异对应于第一失配值,所以储存器控制器210发出中断IR1。
在时间T5之后,可以在相同条件下控制中断的生成。因此,基于以上描述,仅在尾部指针TP与头部指针HP之间的差异对应于第一失配值时生成中断,从而减少由于中断生成而降低主机100的性能。
图6是例示根据本发明构思的示例性实施例的储存器控制器210的操作方法的流程图。如上所述,在示例性实施例中,储存设备210仅在完成队列CQ的尾部指针TP与头部指针HP之间的差异等于第一失配值时才生成中断。
在操作S110中,储存器控制器210参考从主机100传递的完成队列125的头部指针门铃来检测尾部指针TP与头部指针HP之间的差异(TP-HP)。尾部指针可以由储存器控制器210先前写入在主机100处。因此,尾部指针TP的位置可以是储存器控制器210已经识别的信息。相反,储存器控制器210(其写入完成队列125)可以仅取决于由主机100所提供的门铃信息来获得完成队列125的头部指针HP的位置。储存器控制器210可以参考由消耗完成队列125的主机100所提供的头部指针HP的位置来检测尾部指针TP与头部指针HP之间的差异。
在操作S120中,储存设备210检测完成队列125的尾部指针TP与头部指针HP之间的差异是否为0。如果完成队列125的尾部指针TP与头部指针HP之间的差异为0,则储存器控制器210不生成中断,并且过程返回到操作S110。如果完成队列125的尾部指针TP与头部指针HP之间的差异不为0,则过程继续到操作S130。
在操作S130中,储存设备210检测完成队列125的尾部指针TP与头部指针HP之间的差异是否为1。如果完成队列125的尾部指针TP与头部指针HP之间的差异不为1,则储存器控制器210不生成中断,并且过程返回到操作S110。如果完成队列125的尾部指针TP与头部指针HP之间的差异为1,则过程继续到操作S140。这里,完成队列125的尾部指针TP与头部指针HP之间的差异不为1,可以意味着未被处理的完成队列的数量是2或2以上。
在操作S140时,因为完成队列125的尾部指针TP与头部指针HP之间的差异为1,所以储存器控制器210向主机100输出中断。中断例如可以是销基信号,或者可以以消息信令中断(MSI)的方式或MSI-X方式来传递。
在上述的本发明构思的示例性实施例中,仅在完成队列125的尾部指针TP与头部指针HP之间的差异为1时才发出中断(例如,仅在尾部指针TP与头部指针HP之间的差异等于第一失配值时才生成中断)。然而,本发明构思的示例性实施例不限于失配值等于1。例如,在示例性实施例中,可以仅在完成队列125的尾部指针TP与头部指针HP之间的差异等于不同的失配值(例如2、3等)时生成中断,或者可以仅在聚合计数等于聚合阈值(如在下文进一步描述的)时才生成中断。根据示例性实施例的上述中断生成方法可以由于处理累积的中断(例如,可以利用较少的中断)而减小主机100的开销。
图7是例示根据图5的中断生成方法的主机和储存设备的调用处理过程的图。参照图7,在储存设备200处理完从主机100取得的命令之后将完成条目写入在完成队列125处时,该过程开始。
首先,储存设备200完成所取得的命令的执行,并且通过将完成条目写入在主机100的完成队列125处来指示该状态。此时,用主机100的响铃缓冲器(ring buffer)实现的完成队列125的尾部指针TP增加。
当写入完成队列125时,主机100向储存设备100通知完成队列125的最新近的头部指针HP。在示例性实施例中,可以省略提供完成队列125的最新近的头部指针HP的过程。替代地,在示例性实施例中,在由储存设备200写入完成条目之前提供完成队列125的最新近的头部指针HP。
储存设备200参考尾部指针TP和头部指针HP的信息来检测完成队列125的尾部指针TP与头部指针HP之间的差异,并且仅在尾部指针TP与头部指针HP之间的差异等于1(例如,等于在图5的示例性实施例中的第一失配值)时才生成中断。
图8是例示根据本发明构思的示例性实施例的储存设备200的操作方法的时序图。参照图8,在示例性场景下,在执行从主机100取得的命令之后,储存器控制器210将完成条目C0、C1、C2等写入在主机100的完成队列125处。在参照图8描述的示例性实施例中,仅在完成队列125的尾部指针TP与头部指针HP之间的累积的差异达到聚合阈值时才生成中断。即,在该示例性实施例中,设置聚合阈值,并且仅在完成队列125的尾部指针TP与头部指针HP之间的差异等于聚合阈值时才生成中断。在该示例性实施例中,写入完成条目的间隔可以根据储存设备200的状态或性能、所取得的命令的类型等而不同,这在下面进一步地描述。
参照参考图8描述的示例性场景,假设聚合阈值被设置为4(TH=4)。此外,图8示出聚合计数,其在下面参照图9被描述为等于(TH-(TP-HP))。当完成从主机100取得的命令的执行时,储存器控制器210将完成条目C0写入在主机100的完成队列125处。当完成条目C0被写入时,完成队列125的尾部指针TP增加。因为在时间T0时检测到完成队列125的尾部指针TP与头部指针HP之间的差异为1,所以时间点T0被确定为第一失配时间点。然而,在该示例性实施例中,储存器控制器210在该时间时等待而不生成中断。例如,在该示例性实施例中,储存器控制器被设置,使得仅在完成队列125的尾部指针TP与头部指针HP之间的差异等于聚合阈值(例如,等于4)时的时间点才生成中断。该时间点还对应于聚合计数等于0。此后,因为来自主机100的完成队列125的头部指针门铃被写入,所以尾部指针TP与头部指针HP之间的差异被设置为0,因此,聚合计数为4。
当在时间T1时完成一个所取得的命令的执行时,储存器控制器210将完成条目C1写入在主机100的完成队列125处。当完成条目C1被写入时,完成队列125的尾部指针TP增加。因为在时间T1时检测到完成队列125的尾部指针TP与头部指针HP之间的差异为1,所以时间点T1被确定为等于第一失配值(例如,等于1)。然而,在该示例性实施例中,储存控制器210即使在该时间也等待而不生成中断。例如,在该示例性实施例中,储存器控制器210被设置,使得仅在完成队列125的尾部指针TP与头部指针HP之间的差异等于聚合阈值(例如,等于4)时才生成中断。该时间点还对应于聚合计数等于0。此后,因为来自主机100的完成队列125的头部指针门铃被写入,所以尾部指针TP与头部指针HP之间的差异被设置0,因此,聚合计数为4。
当在时间T2时完成一个所取得的命令的执行时,储存器210将完成条目C2写入在主机100的完成队列125处。当完成条目C2被写入时,完成队列的尾部指针TP增加。在时间T2时,检测到完成队列125的尾部指针TP与头部指针HP之间的差异为1,并且检测到聚合计数为3。然而,在示例性实施例中,储存器控制器210即使在该时间也等待而不生成中断。
当在时间T3时完成一个所取得的命令的执行时,储存器控制器210将完成条目C3写入在主机100的完成队列125处。当完成条目C3被写入时,检测到完成队列125的尾部指针TP与头部指针HP之间的差异为2,并且检测到聚合计数为2。因此,储存器控制器210即使在该时间也等待而不生成中断。
当在时间T4时完成一个所取得的命令的执行时,储存器210将完成条目C4写入在主机100的完成队列125处。当完成条目C4被写入时,检测到完成队列125的尾部指针TP与头部指针HP之间的差异为3,并且检测到聚合计数为1。因此,储存器控制器210即使在该时间也等待而不生成中断。
当在时间T5时完成一个所取得的命令的执行时,储存器控制器210将完成条目C5写入在主机100的完成队列125处。当完成条目C5被写入时,检测到完成队列125的尾部指针TP与头部指针HP之间的差异为4(例如等于聚合阈值),并且检测到聚合计数为0。因为尾部指针TP与头部指针HP之间的差异等于聚合阈值,并且因为关于尾部指针TP与头部指针HP的聚合计数达到0,所以储存器控制器210生成对应于在主机100处累积的多个完成条目的中断IR0。
在上述示例性实施例中,储存设备210仅在完成队列CQ的尾部指针TP与头部指针HP之间的差异达到聚合阈值时才生成中断。即,仅在特定聚合计数(例如,聚合计数等于0)时才生成中断。因此,在本发明构思的示例性实施例中,可以减少由于中断聚合而引起的主机性能的降低。
图9是例示参照图8描述的、根据本发明构思的示例性实施例的储存器控制器的中断生成方法的流程图。参照图9,储存器控制器210基于在完成队列125处累积的完成条目的数量来发出中断。
在操作S210中,储存器控制器210参考从主机100传递的完成队列125的头部指针门铃来检测尾部指针TP与头部指针HP之间的差异(TP-HP)。储存器控制器210可以参考主机100提供的门铃信息来计算完成队列125的尾部指针TP与头部指针HP之间的差异(TP-HP)。
在操作S220中,储存器控制器210确定在完成队列125处累积的条目的数量。例如,储存器控制器210可以确定尾部指针TP与头部指针HP之间的差异是否达到聚合阈值。这里,可以利用聚合计数作为用于确定所累积的条目的数量是否达到聚合计数的参数。即,聚合计数是指示在完成队列125处累积的条目的数量是否达到聚合计数的参数。例如,聚合计数可以对应于通过从阈值TH减去尾部指针TP与头部指针HP之间的差异(TP-HP)所获得的值。即,聚合计数可通过(TH-(TP-HP))来计算出。然而,确定在完成队列125处累积的条目的数量是否达到聚合计数的方式不限于此。
在操作S230中,储存器控制器210确定聚合计数是否为0。确定聚合计数为0,是指在完成队列125处累积的条目的数量达到阈值TH。当聚合计数不为0时,过程返回到操作S210。当聚合计数为0时,过程继续到操作S240。
因为完成队列125的尾部指针TP与头部指针HP之间的差异达到阈值TH,所以在操作S240中,储存设备210向主机100输出中断。此时,可以传递具有与多个完成条目相对应的值的中断向量。中断例如可以是销基信号,或者可以以消息信令中断(MSI)方式或MSI-X方式来传递。
根据上述的本发明构思的示例性实施例,基于完成队列125的尾部指针TP与头部指针HP之间的差异是否达到阈值TH来确定是否生成中断。即,在上述的示例性实施例中,仅在完成队列125的尾部指针TP与头部指针HP之间的差异达到阈值TH时才生成中断。因此,根据本发明构思的示例性实施例,可以减少所生成并提供给主机100的中断的数量。
图10是例示根据图9的中断生成方法的主机和储存设备的调用处理过程的图。参照图10,在储存设备200在处理从主机100取得的命令之后将完成条目写入在完成队列125处时,过程开始。
首先,储存设备200完成所取得的命令的执行,并且通过将完成条目写入在主机100的完成队列125处来指示该状态。此时,完成队列125的尾部指针TP增加。
当写入完成队列125时,主机100向储存设备100通知完成队列125的最新近的头部指针HP。在示例性实施例中,可以省略提供完成队列125的最新近的头部指针HP的过程。替代地,在示例性实施例中,在由储存设备200写入完成条目之前提供完成队列125的最新近的头部指针HP。
储存设备210参考由主机100提供的完成队列的头部指针信息来计算完成队列125的聚合计数。即,可以确定在完成队列125处未释放的条目的数量是否达到阈值TH。在示例性实施例中,聚合计数可以被用作用于这样的确定的参数。例如,储存器控制器210可以确定聚合计数为0,其指示所累积的完成条目的数量达到阈值TH。当聚合计数不为0时,储存器控制器210不生成中断。相反,当聚合计数为0时,储存器控制器210发出与所累积的多个完成条目相关联的中断向量。
图11是例示中断生成方法的示例性实施例的时序图。参照图11,在示例性实施例中,在执行从主机100取得的命令之后,储存器控制器210将完成条目C0、C1、C2等写入在主机100的完成队列125处。此外,储存设备210在完成队列125的尾部指针TP与头部指针HP之间的第一失配出现时(如参照图5至8所述)或者在完成队列处累积的完成条目的数量达到阈值TH的时间点时(如参照图8至10所述)发出中断。
当从主机100取得的命令的执行完成时,在时间T0时,储存器控制器210将完成条目C0写入在主机100的完成队列125处。储存器控制器210如上所述地基于本发明构思的示例性实施例的标准来确定是否发出与完成条目C0相对应的中断。因为检测到在时间T0完成队列125的尾部指针TP与头部指针HP之间的差异为1,所以时间点T0被确定为第一失配时间点。此外,此时,与阈值TH(在图11的示例性场景下,TH=4)相对应的聚合计数被计算为3。储存器控制器210发出中断IR0,而不管聚合计数的大小如何,因为出现尾部指针TP与头部指针HP之间的第一失配。
在时间T1和T2时,当完成条目C1和C2分别被写入在主机100的完成队列125处时,可以根据聚合计数条件或者与指针之间的第一失配相对应的条件来发出中断IR0和IR1。
当从主机100取得的命令的执行完成时,在时间T3时,储存器控制器210将完成条目C3写入在主机100的完成队列125处。储存器控制器210确定是否发出与完成条目C3相对应的中断。例如,可以分别确定聚合计数是否达到阈值TH。因为尾部指针TP与头部指针HP之间的差异为2,所以确定未出现指针之间的第一失配。此外,聚合计数的值被计算为2。因此,确定不满足指针之间的第一失配和聚合计数。因此,储存器控制器210等待而不生成与完成条目C3相对应的中断。
因为尾部指针TP与头部指针HP之间的差异为3,所以在时间T4,确定为未出现指针之间的第一失配。此外,聚合计数的值被计算为1。因此,确定不满足指针之间的第一失配和聚合计数。因此,在时间T4时,储存器控制器210不生成与完成条目C4相对应的中断。
当从主机100取得的命令的执行完成时,在时间T5时,储存器控制器210将完成条目C5写入在主机100的完成队列125处。储存器控制器210确定是否发出与完成条目C5相对应的中断。例如,在示例性实施例中,储存器控制器210可以分别确定是否出现尾部指针TP与头部指针HP之间的第一失配,以及确定聚合计数是否达到阈值TH。因为尾部指针TP与头部指针HP之间的差异为4,所以其不对应于第一失配条件。然而,聚合计数的值被计算为0。因此,储存器控制器210基于聚合计数条件发出中断IR3。
在时间T6和T7时,根据上述方式做出关于是否针对完成条目C6和C7生成中断的确定。为了解释的方便,因此省略对其进一步的描述。
图12是例示用于执行参照图11描述的本发明构思的示例性实施例的储存器控制器210的中断生成方法的流程图。参照图12,在示例性实施例中,储存器控制器210基于在完成队列125处累积的完成条目的数量并且基于指针之间的第一失配来发出中断(例如,当这些条件中的任何一个出现时生成中断)。
在操作S310中,储存器控制器210参考从主机100传递的完成队列125的头部指针门铃来检测尾部指针TP与头部指针HP之间的差异(TP-HP)。储存器控制器210参考由主机100提供的门铃信息来计算完成队列125的尾部指针TP与头部指针HP之间的差异(TP-HP)。
在操作S320中,储存器控制器210计算在完成队列125处累积的条目的数量。例如,在示例性实施例中,储存器控制器210可以确定尾部指针TP与头部指针HP之间的差异是否达到阈值。在示例性实施例中,储存器控制器210计算聚合计数,其为通过从阈值TH减去尾部指针TP与头部指针HP之间的差异(TP-HP)所获得的值。
在操作S330中,储存器控制器210确定是否出现完成队列125的指针之间的第一失配(例如,(TP-HP)=1)。当指针之间的差异(TP-HP)不为1时,过程继续到操作S340。当指针之间的差异(TP-HP)为1时,过程继续到操作S350以发出中断。
在操作S340中,储存器控制器210确定聚合计数是否为0。当在完成队列125处累积的条目的数量达到阈值TH时,确定聚合计数为0。当聚合计数不为0时,过程返回到操作S310。当聚合计数为0时,过程继续到操作S350。
因为完成队列125的尾部指针TP与头部指针HP之间的差异首次为1,并且因为聚合计数达到阈值TH,所以在操作S350中,储存设备210发出中断。此时,可以传递具有与一个完成条目或多个完成队列相对应的值的中断向量。
根据上述的本发明构思的示例性实施例,基于是否出现完成队列125的指针之间的第一失配以及所累积的条目的数量是否达到阈值,来确定是否生成中断(例如,当这两个条件中的任何一个出现时,确定为生成中断)。
图13是例示根据图11的中断生成方法的主机和储存设备的调用处理过程的图。参照图13,当储存设备200在处理从主机100取得的命令之后将完成条目写入在完成队列125处时,过程开始。
首先,储存设备200完成所取得的命令的执行,并且通过在主机100的完成队列125处写入完成条目来指示该状态。此时,主机100的完成队列125的尾部指针TP增加。
当完成队列125被写入时,主机100向储存设备100通知完成队列125的最新近的头部指针HP。在示例性实施例中,可以省略提供完成队列125的最新近的头部指针HP的过程。替代地,在示例性实施例中,在由储存设备200写入完成条目之前提供完成队列125的最新近的头部指针HP。
储存器控制器210参考从主机100传递的完成队列125的头部指针信息来检测完成队列125的尾部指针TP与头部指针HP之间的差异(TP-HP)。此外,储存器控制器210计算聚合计数,其为通过从阈值TH减去尾部指针TP与头部指针HP之间的差异(TP-HP)所获得的值。当指针之间的差异(TP-HP)为1时,储存器控制器210发出中断,而不管聚合计数值。当指针之间的差异(TP-HP)不为1时,确定聚合计数是否达到阈值TH。在示例性实施例中,当指针之间的差异(TP-HP)为0时,储存器控制器210发出中断,并且当指针之间的差异(TP-HP)不为0时,储存器控制器210不发出中断。
图14是例示根据本发明构思的示例性实施例的中断生成方法的时序图。参照图14,在执行从主机100取得的命令之后,储存器控制器210将完成条目C0、C1、C2等写入在主机100的完成队列125处。此外,储存设备210在完成队列125的尾部指针TP与头部指针HP之间的第一失配出现(参见图5至图7)时,或者在发出先前的中断之后过去参考过去时间Tout时生成中断。这里,写入完成条目的间隔可以根据例如储存设备200的状态或性能、所取得的命令的类型等而不同。此外,参考过去时间Tout可以根据主机100的状态或性能或者储存设备200的状态或性能来确定。
当从主机100取得的命令的执行完成时,在时间T0,储存器控制器210将完成条目C0写入在主机100的完成队列125处。储存器控制器210基于上述的本发明构思的示例性实施例的标准来确定是否发出与完成条目C0相对应的中断。因为检测到在时间T0时完成队列125的尾部指针TP与头部指针HP之间的差异为1,所以时间点T0被确定为第一失配时间点。因此,发出中断IR0,而不管过去的时间如何。
在时间T1时,完成条目C1被写入在主机100的完成队列125中,并且储存器控制器210监视完成队列125以确定是否出现完成队列125的指针之间的第一失配,并且确定在发出中断之后是否过去了参考过去时间Tout。因为检测到完成队列125的尾部指针TP与头部指针HP之间的差异为1,所以检测时间点被确定为第一失配时间点(例如,差异等于第一失配值)。此外,第一失配时间点被确定为在发出中断IR0之后过去了时间ΔT1时的时间点。在该情况下,因为在时间T1时的指针之间的差异满足中断发出条件,所以发出中断IR1,而不管过去的时间。因为在时间T2时满足与在时间T1时相同的中断发出条件,所以在时间T2时发出中断IR2。
然而,在完成条目C3在时间T3时被写入时,储存器控制器210监视完成队列125以确定完成条目的指针之间的第一失配是否出现,并且确定是否过去了参考过去时间Tout。此时,尾部指针TP与头部指针HP之间的差异为2。即,指针之间的差异不满足中断发出条件。此外,因为在发出中断IR2之后未过去参考过去进间Tout,所以不满足中断发出条件。因此,此时,中断的发出被推迟。
在时间T4时,指针之间的差异为3,并且在发出中断IR2之后未过去参考过去时间Tout。因此,不满足中断发出条件。
在时间T5时,指针之间的差异为4,其不满足中断发出条件。然而,时间点T5对应于在发出中断IR2之后过去的时间ΔT3(其比Tout更长)。因此,储存器控制器210发出中断IR3。
在时间T6,因为过去时间ΔT4不满足中断发出条件,并且完成队列125的点之间的差异(TP-HP)对应于1,所以发出中断IR4。在时间T7,因为过去时间ΔT5不满足中断发出条件,但是完成队列125的点之间的差异(TP-HP)对应于1,所以发出中断IR5。
根据以上参照图14描述的本发明构思的示例性实施例,基于在发出中断之后过去的时间量以及完成队列125的指针之间的差异是否对应于第一失配来做出是否发出中断的确定(例如,当满足这两个中断生成条件中的任何一个时生成中断)。
图15是例示根据本发明构思的示例性实施例的中断生成方法的时序图。参照图15,储存器控制器210基于确定完成队列125的指针之间的第一失配是否出现(参见图5至图7)、聚合计数(参见图8至图10)以及在发出中断之后过去的时间(参见图14)中的至少一个来发出中断。为了描述的方便,假设在发出中断之后过去的时间为Tout。
在时间T0时,储存器控制器210将完成条目C0写入在完成队列125处。储存器控制器210基于在本文中描述的本发明构思的示例性实施例的标准来确定是否发出与完成条目C0相对应的中断。因为检测到在时间T0时完成队列125的尾部指针TP与头部指针HP之间的差异为1,所以时间点T0被确定为第一失配时间点。因此,在该时间发出中断IR0,而不管过去的时间或聚合计数如何。在时间T1和T2时,出于与在时间T0时相同的理由,分别发出中断IR1和IR2。即,时间点T1是第一失配时间点,因为过去时间ΔT1短于Tout,并且对应于尾部指针TP与头部指针HP之间的差异的值从0转变成1。时间点T2为第一失配时间点,因为过去时间ΔT2短于Tout,并且对应于尾部指针TP与头部指针HP之间的差异的值从0转变成1。
然而,因为尾部指针TP与头部指针HP之间的差异为2,所以其不对应于第一失配条件。另外,时间点T3不满足过去时间条件,因为在发出中断IR2之后过去的时间短于Tout。另外,时间点T3不满足中断生成条件,因为聚合计数为2。因此,在时间T3时,储存器控制器210不发出中断。
因为尾部指针TP与头部指针HP之间的差异为3,所以其不对应于第一失配条件。另外,时间点T4不满足中断生成条件,因为聚合计数为1。然而,时间点T4满足过去时间条件,因为在发出中断IR2之后过去了时间ΔT3(其长于Tout)。因此,储存器控制器210在时间T4时发出中断IR3。
在时间T5时,聚合计数条件满足中断生成条件,因此发出中断IR4。在时间T6时,发出中断IR5,因为指针之间的差异满足第一失配条件。在时间T7时,发出中断IR6,因为指针之间的差异满足三个中断生成条件中的第一失配条件。
根据上述的本发明构思的示例性实施例,基于以下中断生成条件来发出中断:完成队列125的指针之间的差异是否对应于第一失配(参见图5至图8);聚合阈值/聚合计数(参见图8至图10);以及在发出中断之后过去的时间(参见图14)。在示例性实施例中,响应于出现三个中断生成条件中的至少一个来发出中断。然而,本发明构思的示例性实施例不限于此。例如,在示例性实施例中,可以包括另外的中断生成条件。此外,在示例性实施例中,代替在满足至少一个中断条件时发出中断,可以仅在满足至少两个或更多的某些中断条件时或者满足所有可能的中断条件时才发出中断。
图16是例示根据本发明构思的示例性实施例的、参照图1描述的非易失性存储器的框图。在本文中将描述图1的非易失性存储器(例如非易失性存储器230、240、……、250)的功能和特性。参照图16,非易失性存储器230、240、……、250可以包括存储单元阵列231、地址解码器232、控制逻辑和电压生成电路235、页面缓冲器233以及输入/输出(I/O)电路234。
存储单元阵列231可以包括多个存储块。每个存储块可以包括多个单元串,并且每个单元串可以包括多个存储单元。存储单元可以与多个字线WL连接。每个存储单元例如可以是存储一个比特的单层单元(SLC)或者存储至少两个比特的多层单元(MLC)。
地址解码器232可以通过字线WL、串选择线SSL和接地选择线GSL与存储单元阵列231连接。地址解码器232可以从外部设备(例如,处理单元110)接收并解码物理地址ADD,并且基于解码结果来驱动字线。例如,地址解码器232可以对从外部设备接收的物理地址ADD进行解码,并且可以基于所解码的物理地址ADD来选择至少一个字线,并且可以驱动所选择的字线。
控制逻辑和电压生成电路235可以响应于来自外部设备的存储命令CMD和控制信号CTRL来控制地址解码器232、页面缓冲器233和输入/输出电路234。例如,根据示例性实施例,控制逻辑和电压生成电路235可以响应于信号CMD和CTRL来控制其他组件,使得数据存储在存储单元阵列231中,或者使得存储在存储单元阵列231中的数据被传送给外部设备。
页面缓冲器233可以通过位线BL连接到存储单元阵列231。在控制逻辑和电压生成电路235的控制下,页面缓冲器233可以控制位线BL,使得从输入/输出电路234提供的数据存储在存储单元阵列231中。在控制逻辑和电压生成电路235的控制下,页面缓冲器233可以读取在存储单元阵列231中存储的数据,并且可以将所读取的数据提供给输入/输出电路234。例如,页面缓冲器233可以按页地从输入/输出电路234被提供数据,或者可以按页地从存储单元阵列231读取数据。
输入/输出电路234可以从外部设备接收数据,并且可以将所接收的数据传递给页面缓冲器233。替代地,输入/输出电路234可以从页面缓冲器233接收数据,并且可以将所接收的数据传送给外部设备。例如,输入/输出电路234可以与控制信号CTRL同步地与外部设备交换数据。
控制逻辑和电压生成电路235可以生成非易失性存储器230操作所使用的各种电压。例如,控制逻辑和电压生成电路235可以生成多个程序电压、多个通路电压、多个验证电压、多个选择读取电压、多个非选择读取电压、多个擦除电压等。控制逻辑和电压生成电路235可以将所生成的电压提供给地址解码器232或者存储单元阵列231的基板。
图17是例示根据本发明构思的示例性实施例的、图16的存储单元阵列中所包括的存储块的第一存储块的电路图。将参照图17来描述根据示例性实施例的、具有三维结构的第一存储块BLK1。然而,本发明构思的示例性实施例不限于此。例如,分别包括在非易失性存储器件230、240、……250中的存储块的其他类型可以具有与第一存储块BLK1相似的结构。
参照图17,第一存储块BLK1可以包括多个单元串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与位置BL之间。接地选择晶体管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可以连接到第二接地选择线。
在示例性实施例中,从基板开始基本处于相同高度的接地选择晶体管可以连接到相同的接地选择线,而从基板开始处于不同高度的接地选择晶体管可以连接到不同的接地选择线。例如,单元串CS11、CS12、CS21和CS22的第一接地选择晶体管GSTa可能连接到第一接地选择线,而其第二接地选择晶体管GSTb可以连接到第二接地选择线。
从基板开始以基本相同的高度放置的存储单元(或者接地选择晶体管GSTa和GSTb)可以共同地连接到相同的字线,并且从基板开始以不同的高度放置的存储单元可以连接到不同的字线。例如,单元串CS11、CS12、CS21和CS22的存储单元MC1至MC8可以共同地连接到第一至第八字线WL1至WL8。
在以基本相同的高度放置的第一串选择晶体管SSTa之中属于相同行的串选择晶体管可以连接到相同的串选择线,而属于不同行的串选择晶体管可以连接到不同的串选择线。例如,第一行中的单元串CS11和CS12的第一串选择晶体管SSTa可以共同地连接到串选择线SSL1a,而第二行中的单元串CS21和CS22的第一串选择晶体管SSTa可以共同地连接到串选择线SSL1a。
处于基本相同的高度的第二串选择晶体管SSTb之中属于相同行的串选择晶体管可以连接到相同的串选择线,而属于不同行的串选择晶体管可以连接到不同的串选择线。例如,第一行中的单元串CS11和CS12的第一串选择晶体管SSTb可以共同地连接到串选择线SSL1b,而第二行中的单元串CS21和CS22的第一串选择晶体管SSTb可以共同地连接到串选择线SSL1b。
相同行中的单元串的串选择晶体管可以共同地连接到相同的串选择线。例如,第一行中的单元串CS11和CS12的第一和第二串选择晶体管SSTa和SSTb可以共同地连接到相同的串选择线。第二行中的单元串CS21和CS22的第一和第二串选择晶体管SSTa和SSTb可以共同地连接到相同的串选择线。
在示例性实施例中,基本处于相同高度的虚拟存储单元可以与相同的虚拟字线连接,而处于不同高度的虚拟存储单元可以与不同的虚拟字线连接。例如,第一虚拟存储单元DMC1可以连接到第一虚拟字线DWL1,而第二虚拟存储单元DMC2可以连接到第二虚拟字线DWL2。
在第一存储块BLK1中,可以按行执行读取和写入操作。例如,可以按照串选择线SSL1a、SSL1b、SSL2a和SSL2b来选择存储块BLK1的一行。
当导通电压被供应给串选择线SSL1a和SSL1b而截止电压被供应给串选择线SSL2a和SSL2b时,第一行中的单元串CS11和CS12可以分别连接到位线BL1和BL2。当导通电压被供应给串选择线SSL2a和SSL2b而截止电压被供应给串选择线SSL1a和SSL1b时,在第二行中的单元串CS21和CS22可以分别连接到位线BL1和BL2。在驱动字线时,可以选择连接到被驱动的字线的单元串中的存储单元之中的、以基本相同的高度放置的存储单元。可以对所选择的存储单元执行读取和写入操作。所选择的存储单元可以形成物理页。
在存储块BLK1中,可以按照存储块或子块来擦除存储单元。当按照存储块执行擦除时,存储块BL1中的所有存储单元MC可以根据擦除请求同时被擦除。当按照子块来执行擦除时,存储块BLK1中的一部分存储单元MC可以根据擦除请求同时被擦除,而其它部分可以被禁止擦除。可以对连接到所擦除的存储单元MC的字线供应低电压(例如,接地电压),并且连接到禁止擦除的存储单元MC的字线可以被浮接。
在图17中所示的第一存储块BLK1是示例性的。例如,可以增加或减少单元串的数量,并且单元串的行的数量和单元串的列的数量可以根据单元串的数量增加或减少。在第一存储块BLK1中,单元串(GST、MC、DMC、SST等)的数量可以增加或减少,并且第一存储块BLK1的高度可以根据单元串(GST、MC、DMC、SST等)的数量增加或减小。而且,与单元晶体管连接的线(GST、MC、DMC、SST等)的数量可以根据单元串(GST、MC、DMC、SST等)的数量增加或减少。
图18是例示包括根据本发明构思的示例性实施例的非易失性存储器***的存储卡***的框图。参照图18,存储卡***1000可以包括存储器控制器1100、非易失性存储器1200和连接器1300。
存储器控制器1100可以连接到非易失性存储器1200。存储器控制器110可以被配置为存取非易失性存储器1200。例如,存储器控制器1100可以适合于控制非易失性存储器1200的总体操作,包括但不限于读取操作、写入操作、擦除操作以及后台操作。后台操作可以包括但不限于耗损均衡管理、垃圾收集等。在示例性初稿例中,存储器控制器1100可以基于上文参照图1至图15描述的方法来生成中断。
存储器控制器1100可以提供非易失性存储器1200与主机之间的接口。存储器控制器1100可以被配置为驱动用于控制非易失性存储器1200的固件。在示例性实施例中,存储器控制器1100可以包括诸如但不限于RAM、处理单元、主机接口、存储器接口和纠错单元这样的组件。
存储器控制器1100可以通过连接器1300与外部设备通信。存储器控制器1100可以基于特定的通信协议与外部设备通信。例如,存储器控制器1100可以通过诸如但不限于通用串行总线(USB)、多媒体卡(MMC)、eMMC(嵌入式MMC)、***组件互连(PCI)、高速PCI(PCI-E)、高级技术附件(ATA)、串行ATA、并行ATA、小型计算机***接口(SCSI)、增强小型盘接口(ESDI)、高速非易失性存储器(NVMe)等多种通信协议中的至少一种与外部设备通信。在示例性实施例中,通过上述标准定义的写入命令例如可以包括写入数据的大小信息。
非易失性存储器1200可以用各种各样的非易失性存储器件来实现,诸如但不限于电可擦除可编程ROM(EEPROM)、NAND闪速存储器、NOR闪速存储器、相变RAM(PRAM)、电阻式RAM(ReRAM)、铁电式RAM(FRAM)、自旋传递扭矩磁性RAM(STT-MRAM)等。
在示例性实施例中,存储器控制器1100和非易失性存储器1200可以集成在单个半导体器件中。例如,存储器控制器1100和非易失性存储器1200可以集成在单个半导体器件中,以形成固态驱动器(SSD)。存储器控制器1100和非易失性存储器1200可以集成在单个半导体器件中,以形成存储卡。例如,存储器控制器1100和非易失性存储器1200可以集成在单个半导体器件中,以形成诸如但不限于PC卡(个人计算机存储卡内部关联(PCMCIA)卡)、压缩闪速卡(CF)、智能媒体卡(SM,SMC)、存储棒、多媒体卡(MMC、RS-MMC、MMCmicro)、SD卡(SD,miniSD,microSD,SDHC)和通用闪速储存器(UFS)这样的存储卡。
图19是例示包括根据本发明构思的示例性实施例的非易性存储器***的固态驱动器的框图。参照图17,固态驱动器(SSD)***200可以包括主机2100和SSD 2200。SSD 2200可以通过主机接口2001与主机2100交换信号,并且可以通过电力连接器2002被供应以电力。SSD 2200例如可以包括SSD控制器2210、经由通道CH1至CHn连接到SSD控制器2210的多个闪速存储器2221至222n、辅助电源2230以及缓冲存储器2240。
SSD控制器2210可以响应于来自主机2100的信号来控制闪速存储器2221至222n。在示例性实施例中,SSD控制器2210可以基于以上参照图1至15描述的方法来生成中断。
辅助电源2230可以经由电力连接器2002连到主机2100。辅助电源2230可以由来自主机2100的电力来充电。当电力未从主机2100稳定地供应时,辅助电源2230可以对SSD***2000提供动力。辅助电源2230可以被放置在SSD 2200的内部或外部。例如,辅助电源2230可以部署在主板上以向SSD 2200供应辅助电力。
缓冲存储器2240可以用作SSD 2200的缓冲存储器。例如,缓冲存储器2240可以临时地存储从主机2100或从闪速存储器2221至222n接收到的数据,并且可以临时地存储闪速存储器2221至222n的元数据(例如映射表)。缓冲存储器2240可以包括诸如例如动态随机存取存储器(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDR SDRAM)、低功率双数据率SDRAM(LPDDR SDRAM)、静态随机存取存储器(SRAM)等易失性存储器或者诸如例如铁电式RAM(FRAM)、电阻式随机存取存储器(ReRAM)、自旋传递扭矩磁性随机存取存储器(STT-MRAM)、参数随机存取存储器(PRAM)等非易失性存储器。
图20是例示包括根据本发明构思的示例性实施例的非易失性存储器***的用户***的框图。参照图20,用户***3000例如可以包括应用处理器3100、存储器模块3200、网络模块3300、储存器模块3400以及用户接口3500。
应用处理器3100可以驱动用户***3000的组件、操作***等。例如,应用处理器3100可以包括用于控制用户***3000的诸如例如图形引擎、各种各样的接口等组件的控制器。例如,应用处理器3100可以是片上***(SoC)。
存储器模块3200例如可以作为用户***3000的主存储器、工作存储器、缓冲存储器或者高速缓冲存储器来操作。存储器模块3200可以用诸如例如DRAM、SDRAM、DDR SDRAM、DDR2 SDRAM、DDR3 SDRAM、LPDDR DRAM、LPDDR2 DRAM或LPDDR3 DRAM这样的易失性随机存取存储器或者用诸如例如PRAM、MRAM、RRAM或FRAM这样的非易失性随机存取存储器来实现。
网络模块3300可以与外部设备通信。例如,网络模块3300可以支持诸如码分复用(CDMA)、全球移动通信***(GSM)、宽带CDMA(WCDMA)、CDMA-2000、时分复用(TDMA)、长期演变(LTE)、Wimax、WLAN、UWB、Bluetooth、WI-DI等无线通信。在示例性实施例中,网络模块3300可以包括在应用处理器3100中。
储存器模块3400可以存储数据。例如,储存器模块3400可以存储从应用处理器3100接收的数据。替代地,储存器模块3400可以向应用处理器3100提供在其中存储的数据。例如,储存器模块3400可以用诸如PRAM、MRAM、RRAM、NAND闪速存储器、NOR闪速存储器或者三维NAND闪速存储器这样的半导体存储器件来实现。
在本发明构思的示例性实施例中,提供三维(3D)存储器阵列。3D存储器阵列单片地形成在存储单元的阵列的一个或多个物理级别中,其具有部署在与那些存储单元的操作相关联的硅基板和电路之上的有源区域,无论这样的相关联的电路是在这样的基板之上还是之内。术语“单片”意味着阵列的每个级别的层直接沉淀在阵列的每个下面级别的层上。在本发明构思的示例性实施例中,3D存储器阵列包括垂直的NAND串,其垂直的取向,使得至少一个存储单元位于另一个存储单元之上。所述至少一个存储单元可以包含电荷陷阱层。以下专利文件(通过引用并入本文)描述三维存储器阵列的适合的配置,其中,三维存储器阵列被配置为多个级别,在级别之间共享字线和/或位线:美国专利第7,679,133号、第8,553,466号、第8,654,587号、第8,559,235号以及美国专利公开第2011/0233648号。
在示例性实施例中,储存器模块3400可以基于参照图1至15所描述的方法来生成中断。储存器模块340可以基于给定的接口与应用处理器3100通信。储存器模块3400可以基于来自应用处理器3100的写入命令来调节执行垃圾收集所要花费的时间。
用户接口3500可以包括将数据或命令输入在应用处理器3100中或者将数据输出到外部设备的接口。例如,用户接口3500可以包括诸如键盘、小键盘、按钮、触摸面板、触摸屏、触摸板、触摸球、相机、麦克风、陀螺仪传感器、振动传感器等用户输入接口。用户接口3500还可以包括诸如液晶显示器(LCD)、有机发光二极管(OLED)显示设备、有源矩阵OLED(AMOLED)显示设备、发光二极管(LED)、扬声器、发动机等用户输出接口。
根据本发明构思的示例性实施例的非易性存储器件、卡控制器和存储卡可以根据各种不同的封装技术中的任何一种来封装。这样的封装技术的示例包括但不限于层叠封装(PoP)、球栅阵列(BGA)、芯片级封装(CSP)、塑料有引线芯片载体(PLCC)、塑料双列线式封装(PDIP)、窝伏尔组件内冲模、晶片模、板载芯片(COB)、陶瓷双列直插式封装(CERDIP)、塑料公制四方扁平封装(MQFP)、小外形(SOIC)、收缩型小外形封装(SSOP)、薄小外形(TSOP)、薄四方扁平封装(TQFP)、***级封装(SIP)、多芯片封装(MC)、晶片级制造封装(WFP)以及晶片级处理堆叠封装(WSP)。
根据本发明构思的示例性实施例,可以减少生成中断的事件的数量,从而由于中断的减少的累积而导致储存设备(例如SSD)的性能提高。
虽然已经参照本发明构思的示例性实施例描述了本发明构思,但是本领域普通技术人员应当理解,可以做出各种改变和修改,而不脱离由所附的权利要求所定义的本发明构思的精神和范围。
Claims (20)
1.一种操作储存设备的方法,包括:
执行由主机提供的命令;
将与执行的命令对应的完成条目的写入延迟间隔时间,其中该间隔时间基于储存设备的性能;以及
当在先前的完成条目的写入之后过去间隔时间时,将与执行的命令对应的完成条目写入主机的完成队列。
2.根据权利要求1所述的方法,还包括在执行命令之前接收指示在提交队列中记录了新的命令的尾部门铃。
3.根据权利要求2所述的方法,还包括在执行命令之前从主机的提交队列取得命令。
4.根据权利要求1所述的方法,其中,所述间隔时间基于命令的类型。
5.根据权利要求1所述的方法,其中,所述储存设备经由非易失性存储器快速(NVMe)接口与主机通信。
6.根据权利要求1所述的储存设备,其中,所述储存设备基于通用串行总线(USB)接口、小型计算机***接口(SCSI)、高速***组件(高速PCI)接口、高级技术附件(ATA)接口、并行ATA(PATA)接口、串行ATA(SATA)接口和串行附接SCSI(SAS)接口中的至少一个与主机通信。
7.一种储存设备,包括:
非易失性存储器件;以及
连接到非易失性存储器件的储存器控制器,
其中,所述储存器控制器被配置为:
从对应于第一应用的第一提交队列取得第一命令,并从对应于第二应用的第二提交队列取得第二命令;
执行第一命令和第二命令;
将与第一执行的命令对应的第一完成条目写入与第一应用对应的第一完成队列,并且将与第二执行的命令对应的第二完成条目写入与第二应用对应的第二完成队列;以及
延迟发出中断,其中该延迟基于主机的状态或性能,或储存设备的状态或性能。
8.根据权利要求7所述的储存设备,其中,所述存储控制器还被配置为当在发出先前的中断之后过去参考过去时间时,发出所述中断,
其中,参考经过时间基于主机的状态或性能,或者储存设备的状态或性能。
9.根据权利要求7所述的储存设备,其中,所述储存器控制器还被配置为当主机的第二完成队列的尾部指针TP与头部指针HP之间的差异值(TP-HP)为“1”时,发出中断。
10.根据权利要求9所述的储存设备,其中,所述储存器控制器还被配置为当差异值(TP-HP)从“0”变为“1”时发出中断。
11.根据权利要求9所述的储存设备,其中,所述储存器控制器还被配置为当在第二完成队列的尾部指针TP和头部指针HP之间发生第一失配时,发出中断。
12.根据权利要求11所述的储存设备,其中,所述储存器控制器还被配置为当从第一失配发生的时间点开始过去的时间超过参考时间时,发出中断。
13.根据权利要求9所述的储存设备,其中,所述储存器控制器还被配置为当差异值(TP-HP)等于聚合阈值时发出中断。
14.根据权利要求9所述的储存设备,其中,所述储存器控制器还被配置为从主机接收头部指针。
15.根据权利要求7所述的储存设备,其中,所述中断是销基信号,或者以消息信令中断(MSI)的方式或MSI-X方式来传递。
16.一种储存设备,包括:
非易失性存储器件;
用于执行命令的装置;
用于将与执行的命令对应的完成条目的写入延迟间隔时间的装置,其中该间隔时间基于储存设备的性能;以及
用于当在先前的完成条目的写入之后过去间隔时间时,将与执行的命令对应的完成条目写入主机的完成队列的装置,以及
用于延迟发出中断的装置,其中该延迟基于主机的状态或性能,或储存设备的状态或性能。
17.根据权利要求16所述的储存设备,其中,所述间隔时间基于命令的类型。
18.根据权利要求16所述的储存设备,还包括:
用于在执行命令之前接收指示在提交队列中记录了新的命令的尾部门铃的装置;以及
用于在执行命令之前从主机的提交队列取得命令的装置。
19.根据权利要求16所述的储存设备,还包括:
用于当未被主机处理的完成队列的条目的数量等于第一失配值时发出中断的装置,
其中,所述条目的数量通过计算完成队列的尾部指针TP和头部指针HP之间的差异来确定。
20.根据权利要求19所述的储存设备,还包括:
用于当条目的数量从“0”变为“1”时发出中断。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110198634.2A CN112948292B (zh) | 2015-09-14 | 2016-08-12 | 储存设备及其中断生成方法 |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2015-0129396 | 2015-09-14 | ||
KR1020150129396A KR20170032502A (ko) | 2015-09-14 | 2015-09-14 | 스토리지 장치 및 그것의 인터럽트 발생 방법 |
CN202110198634.2A CN112948292B (zh) | 2015-09-14 | 2016-08-12 | 储存设备及其中断生成方法 |
CN201610664071.0A CN106528461A (zh) | 2015-09-14 | 2016-08-12 | 储存设备及其中断生成方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610664071.0A Division CN106528461A (zh) | 2015-09-14 | 2016-08-12 | 储存设备及其中断生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112948292A true CN112948292A (zh) | 2021-06-11 |
CN112948292B CN112948292B (zh) | 2024-06-18 |
Family
ID=58238828
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110198634.2A Active CN112948292B (zh) | 2015-09-14 | 2016-08-12 | 储存设备及其中断生成方法 |
CN201610664071.0A Pending CN106528461A (zh) | 2015-09-14 | 2016-08-12 | 储存设备及其中断生成方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610664071.0A Pending CN106528461A (zh) | 2015-09-14 | 2016-08-12 | 储存设备及其中断生成方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US20170075834A1 (zh) |
KR (1) | KR20170032502A (zh) |
CN (2) | CN112948292B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115098733A (zh) * | 2022-06-10 | 2022-09-23 | 深圳市移文科技有限公司 | 一种移动终端数据读取方法、装置及移动终端 |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170032502A (ko) | 2015-09-14 | 2017-03-23 | 삼성전자주식회사 | 스토리지 장치 및 그것의 인터럽트 발생 방법 |
US10146439B2 (en) * | 2016-04-13 | 2018-12-04 | Samsung Electronics Co., Ltd. | System and method for high performance lockless scalable target |
KR20180045103A (ko) * | 2016-10-24 | 2018-05-04 | 삼성전자주식회사 | 적응형 인터럽트를 생성하는 데이터 저장 장치 및 그것의 동작 방법 |
US10509569B2 (en) | 2017-03-24 | 2019-12-17 | Western Digital Technologies, Inc. | System and method for adaptive command fetch aggregation |
US10452278B2 (en) | 2017-03-24 | 2019-10-22 | Western Digital Technologies, Inc. | System and method for adaptive early completion posting using controller memory buffer |
DE112018000230T5 (de) * | 2017-03-24 | 2019-09-05 | Western Digital Technologies, Inc | System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers |
US10466903B2 (en) * | 2017-03-24 | 2019-11-05 | Western Digital Technologies, Inc. | System and method for dynamic and adaptive interrupt coalescing |
CN107273198B (zh) * | 2017-06-16 | 2018-12-18 | 北京得瑞领新科技有限公司 | 一种ssd控制芯片的中断控制方法、装置及ssd设备 |
KR102340287B1 (ko) * | 2017-09-20 | 2021-12-20 | 삼성전자주식회사 | 멀티캐스트 통신 프로토콜에 따라 호스트와 통신하는 저장 장치 및 호스트의 통신 방법 |
KR102395477B1 (ko) | 2017-11-20 | 2022-05-09 | 삼성전자주식회사 | 호스트 메모리에 대한 메모리 액세스를 스케쥴링하는 장치 컨트롤러, 및 이를 포함하는 저장 장치 |
KR102446733B1 (ko) * | 2017-11-30 | 2022-09-23 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치를 포함하는 전자 장치 |
KR102493964B1 (ko) * | 2017-12-18 | 2023-02-01 | 삼성전자주식회사 | 스토리지 컨트롤러, 그것을 포함하는 스토리지 장치, 및 스토리지 컨트롤러의 동작 방법 |
KR102504660B1 (ko) | 2018-02-05 | 2023-03-02 | 삼성전자주식회사 | 응용 프로세서, 전장 프로세서, 그리고 응용 프로세서를 포함하는 컴퓨팅 장치 |
US11669267B2 (en) * | 2018-02-09 | 2023-06-06 | Western Digital Technologies, Inc. | Completion entry throttling using host memory |
KR102560251B1 (ko) | 2018-06-20 | 2023-07-26 | 삼성전자주식회사 | 반도체 장치 및 반도체 시스템 |
US10635355B1 (en) | 2018-11-13 | 2020-04-28 | Western Digital Technologies, Inc. | Bandwidth limiting in solid state drives |
KR20210007503A (ko) | 2019-07-11 | 2021-01-20 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 |
CN110659122A (zh) * | 2019-07-31 | 2020-01-07 | 杭州阿姆科技有限公司 | 一种ssd中断实现方法及装置 |
US11138108B2 (en) * | 2019-08-22 | 2021-10-05 | Micron Technology, Inc. | Logical-to-physical map synchronization in a memory device |
KR20210080761A (ko) * | 2019-12-23 | 2021-07-01 | 삼성전자주식회사 | 컴플리션 타이밍을 관리하는 스토리지 컨트롤러, 및 이의 동작 방법 |
EP3842952B1 (en) | 2019-12-23 | 2023-05-10 | Samsung Electronics Co., Ltd. | Storage controller managing completion timing, and operating method thereof |
CN116235139A (zh) * | 2020-07-31 | 2023-06-06 | 华为技术有限公司 | 一种处理器、ufs控制方法及计算机*** |
JP2022050757A (ja) | 2020-09-18 | 2022-03-31 | キオクシア株式会社 | メモリシステム |
CN114048156B (zh) * | 2021-10-28 | 2024-05-03 | 山东云海国创云计算装备产业创新中心有限公司 | 一种多通道多映射中断控制器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6065089A (en) * | 1998-06-25 | 2000-05-16 | Lsi Logic Corporation | Method and apparatus for coalescing I/O interrupts that efficiently balances performance and latency |
CN101593084A (zh) * | 2008-05-21 | 2009-12-02 | 三星电子株式会社 | 存储器***和操作存储器***的方法 |
US8554968B1 (en) * | 2010-08-16 | 2013-10-08 | Pmc-Sierra, Inc. | Interrupt technique for a nonvolatile memory controller |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6088740A (en) * | 1997-08-05 | 2000-07-11 | Adaptec, Inc. | Command queuing system for a hardware accelerated command interpreter engine |
US6055579A (en) * | 1997-11-17 | 2000-04-25 | Silicon Graphics, Inc. | Distributed control and synchronization of multiple data processors using flexible command queues |
US6145061A (en) * | 1998-01-07 | 2000-11-07 | Tandem Computers Incorporated | Method of management of a circular queue for asynchronous access |
US6363438B1 (en) * | 1999-02-03 | 2002-03-26 | Sun Microsystems, Inc. | Method of controlling DMA command buffer for holding sequence of DMA commands with head and tail pointers |
US7277447B2 (en) * | 2001-03-30 | 2007-10-02 | Redback Networks Inc. | Onboard RAM based FIFO with pointers to buffer overhead bytes of synchronous payload envelopes in synchronous optical networks |
US6918116B2 (en) * | 2001-05-15 | 2005-07-12 | Hewlett-Packard Development Company, L.P. | Method and apparatus for reconfiguring thread scheduling using a thread scheduler function unit |
US6895460B2 (en) * | 2002-07-19 | 2005-05-17 | Hewlett-Packard Development Company, L.P. | Synchronization of asynchronous emulated interrupts |
US20060184949A1 (en) * | 2005-02-15 | 2006-08-17 | International Business Machines Corporation | Methods, systems, and storage mediums for timing work requests and completion processing |
CN100419723C (zh) * | 2005-12-30 | 2008-09-17 | 北京中星微电子有限公司 | 多中断的缓存装置和方法 |
US20080091868A1 (en) | 2006-10-17 | 2008-04-17 | Shay Mizrachi | Method and System for Delayed Completion Coalescing |
KR101226685B1 (ko) | 2007-11-08 | 2013-01-25 | 삼성전자주식회사 | 수직형 반도체 소자 및 그 제조 방법. |
KR100924549B1 (ko) * | 2007-11-14 | 2009-11-02 | 주식회사 하이닉스반도체 | 반도체 소자 및 그의 제조방법 |
US8032680B2 (en) | 2008-06-27 | 2011-10-04 | Microsoft Corporation | Lazy handling of end of interrupt messages in a virtualized environment |
JP5018814B2 (ja) * | 2009-03-18 | 2012-09-05 | 富士ゼロックス株式会社 | 割り込み制御装置及び画像形成装置 |
US9063561B2 (en) | 2009-05-06 | 2015-06-23 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Direct memory access for loopback transfers in a media controller architecture |
US8244946B2 (en) | 2009-10-16 | 2012-08-14 | Brocade Communications Systems, Inc. | Interrupt moderation |
KR101691092B1 (ko) | 2010-08-26 | 2016-12-30 | 삼성전자주식회사 | 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템 |
US8553466B2 (en) | 2010-03-04 | 2013-10-08 | Samsung Electronics Co., Ltd. | Non-volatile memory device, erasing method thereof, and memory system including the same |
US9536970B2 (en) | 2010-03-26 | 2017-01-03 | Samsung Electronics Co., Ltd. | Three-dimensional semiconductor memory devices and methods of fabricating the same |
KR101682666B1 (ko) | 2010-08-11 | 2016-12-07 | 삼성전자주식회사 | 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템 |
US9141571B2 (en) | 2010-12-28 | 2015-09-22 | Avago Technologies General Ip (Singapore) Pte. Ltd. | PCI express switch with logical device capability |
US9311137B2 (en) * | 2012-09-28 | 2016-04-12 | International Business Machines Corporation | Delaying interrupts for a transactional-execution facility |
CN103778009A (zh) * | 2012-10-18 | 2014-05-07 | 深圳市中兴微电子技术有限公司 | 中断处理方法及装置 |
US8924605B2 (en) | 2012-11-21 | 2014-12-30 | Mellanox Technologies Ltd. | Efficient delivery of completion notifications |
US9122515B2 (en) * | 2012-12-19 | 2015-09-01 | Dell Products L.P. | Completion notification for a storage device |
US8935453B2 (en) | 2013-03-15 | 2015-01-13 | Intel Corporation | Completion combining to improve effective link bandwidth by disposing at end of two-end link a matching engine for outstanding non-posted transactions |
US9684613B2 (en) | 2013-05-15 | 2017-06-20 | Seagate Technology Llc | Methods and systems for reducing spurious interrupts in a data storage system |
CN104166598A (zh) * | 2013-05-16 | 2014-11-26 | 鸿富锦精密工业(深圳)有限公司 | 电子设备及其中断保护方法 |
US9378162B2 (en) * | 2013-05-21 | 2016-06-28 | Arm Limited | Handling and routing interrupts to virtual processors |
CN104111870B (zh) * | 2014-07-08 | 2017-05-24 | 福建星网锐捷网络有限公司 | 一种中断处理装置及中断处理方法 |
KR102238652B1 (ko) * | 2014-11-12 | 2021-04-09 | 삼성전자주식회사 | 데이터 저장 장치, 이의 작동 방법, 및 이를 포함하는 데이터 처리 시스템의 작동 방법 |
KR20170032502A (ko) | 2015-09-14 | 2017-03-23 | 삼성전자주식회사 | 스토리지 장치 및 그것의 인터럽트 발생 방법 |
-
2015
- 2015-09-14 KR KR1020150129396A patent/KR20170032502A/ko unknown
-
2016
- 2016-08-12 CN CN202110198634.2A patent/CN112948292B/zh active Active
- 2016-08-12 CN CN201610664071.0A patent/CN106528461A/zh active Pending
- 2016-09-14 US US15/265,090 patent/US20170075834A1/en not_active Abandoned
-
2020
- 2020-10-15 US US17/071,411 patent/US11561914B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6065089A (en) * | 1998-06-25 | 2000-05-16 | Lsi Logic Corporation | Method and apparatus for coalescing I/O interrupts that efficiently balances performance and latency |
CN101593084A (zh) * | 2008-05-21 | 2009-12-02 | 三星电子株式会社 | 存储器***和操作存储器***的方法 |
US8554968B1 (en) * | 2010-08-16 | 2013-10-08 | Pmc-Sierra, Inc. | Interrupt technique for a nonvolatile memory controller |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115098733A (zh) * | 2022-06-10 | 2022-09-23 | 深圳市移文科技有限公司 | 一种移动终端数据读取方法、装置及移动终端 |
Also Published As
Publication number | Publication date |
---|---|
CN112948292B (zh) | 2024-06-18 |
CN106528461A (zh) | 2017-03-22 |
US20210049120A1 (en) | 2021-02-18 |
US11561914B2 (en) | 2023-01-24 |
US20170075834A1 (en) | 2017-03-16 |
KR20170032502A (ko) | 2017-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112948292B (zh) | 储存设备及其中断生成方法 | |
US10853158B2 (en) | Storage device and event notification method for storage device | |
US10061521B2 (en) | Storage device and method of operating the same | |
US10725835B2 (en) | System and method for speculative execution of commands using a controller memory buffer | |
US10304539B2 (en) | Method of performing a write operation based on an idle time | |
US9715465B2 (en) | Storage device and operating method of the same | |
US20160357462A1 (en) | Nonvolatile Memory Modules and Data Management Methods Thereof | |
US20170300252A1 (en) | Storage device including nonvolatile memory device and controller and operating method of the storage device | |
US20160203047A1 (en) | Operation method of nonvolatile memory system | |
CN110073323B (zh) | 使用控制器存储器缓冲区进行推测性执行命令的***和方法 | |
US9799402B2 (en) | Nonvolatile memory device and program method thereof | |
KR102611266B1 (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 | |
KR20180118329A (ko) | 메모리 시스템, 데이터 처리 시스템 및 그것의 동작 방법 | |
US20210064294A1 (en) | Memory controller and operating method thereof | |
US20190026220A1 (en) | Storage device that stores latency information, processor and computing system | |
US20200034081A1 (en) | Apparatus and method for processing data in memory system | |
US20230244408A1 (en) | Apparatus and method for erasing data programmed in a non-volatile memory block in a memory system multiple times | |
US11048625B2 (en) | Memory system and operating method thereof | |
US10162568B2 (en) | Method for searching matching key of storage device and server system including the same | |
KR20180114649A (ko) | 복수의 프로세서를 포함하는 컨트롤러 및 컨트롤러의 동작방법 그리고 멀티 프로세서 시스템 | |
US20160132251A1 (en) | Operating method of storage device and data writing method for writing data into storage device | |
CN110308866B (zh) | 存储器***及其操作方法 | |
CN114385070A (zh) | 主机、数据存储装置、数据处理***以及数据处理方法 | |
US11941294B2 (en) | Memory controller for controlling suspension of operation and method of operating the same |
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 |