存储器控制器、存储器系统、固态驱动器及用于处理若干个命令的方法

文档序号:6349320阅读:116来源:国知局
专利名称:存储器控制器、存储器系统、固态驱动器及用于处理若干个命令的方法
技术领域
一般来说,本发明涉及半导体存储器装置、方法及系统,且更特定来说,涉及存储器控制器、存储器系统、固态驱动器及用于处理若干个命令的方法。
背景技术
通常提供存储器装置作为计算机或其它电子装置中的内部半导体集成电路。存在包含易失性及非易失性存储器的许多不同类型的存储器。易失性存储器可需要电力来维持其数据且包含随机存取存储器(RAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)以及其它存储器。非易失性存储器可通过在不被供电时保留所存储的信息来提供持久性数据且可包含NAND快闪存储器、NOR快闪存储器、只读存储器(ROM)、电可擦除可编程ROM (EEPROM)、可擦除可编程ROM(EPROM)及相变随机存取存储器(PCRAM)以及其它存储器。存储器装置可组合在一起以形成固态驱动器(SSD)。SSD可包含非易失性存储器 (例如,NAND快闪存储器及NOR快闪存储器)及/或可包含易失性存储器(例如,DRAM及 SRAM)以及各种其它类型的非易失性及易失性存储器。SSD可用以取代硬盘驱动器作为计算机的主存储装置,因为SSD可在性能、大小、 重量、耐用性、操作温度范围及功率消耗方面具有优于硬驱动器的优点。举例来说,SSD在与磁盘驱动器相比时因其缺少移动部件而可具有优良性能,缺乏移动部件可改进寻道时间、 等待时间及与磁盘驱动器相关联的其它机电延迟。SSD制造商可使用非易失性快闪存储器来形成可不使用内部电池电源的快闪SSD,因此允许所述驱动器更通用且更紧凑。SSD可包含若干个存储器装置,例如,若干个存储器芯片(如本文中所用,“若干个”某物可指一个或一个以上此物;例如,若干个存储器装置可指一个或一个以上存储器装置)。如所属领域的技术人员将了解,存储器芯片可包含若干个裸片。每一裸片可包含若干个存储器阵列及其上的外围电路。存储器阵列可包含若干个平面,其中每一平面包含若干个物理存储器单元块。每一物理块可包含可存储若干个数据扇区的若干个页。存储器系统(例如,SSD)可并入到计算系统中,所述存储器系统可通过通信接口 (例如,主要针对主机与大容量存储装置(例如,硬盘驱动器、光学驱动器及SSD)之间的命令及数据传送所设计的串行高级技术附件(SATA)高速串行总线)通信地耦合到主机。在SSD的操作期间,可使用例如编程命令、读取命令及擦除命令等命令以及其它命令。举例来说,编程(例如,写入)命令可用以将数据编程于固态驱动器上,读取命令可用以读取固态驱动器上的数据,且擦除命令可用以擦除固态驱动器上的数据。

发明内容


图1是根据本发明的一个或一个以上实施例的计算系统的功能性框图。图2是根据本发明的一个或一个以上实施例的包含至少一个存储器系统的计算系统的功能性框图。图3是根据本发明的一个或一个以上实施例的通信地耦合到若干个存储器装置的存储器系统控制器的功能性框图。图4图解说明根据本发明的一个或一个以上实施例的逻辑到物理地址映射。图5是根据本发明的一个或一个以上实施例的前端DMA的命令队列的功能性框图。图6A及图6B图解说明根据本发明的一个或一个以上实施例的前端DMA的命令队列的操作。图7是根据本发明的一个或一个以上实施例用于在若干个后端通道当中分配命令的流程图。图8是图解说明根据本发明的一个或一个以上实施例在前端与若干个通道之间的接口的功能性框图。图9A是根据本发明的一个或一个以上实施例实施的直接存储器存取模块(DMA) 描述符块的功能性框图。图9B图解说明根据本发明的一个或一个以上实施例实施的图解说明于图9A中的 DMA描述符块(DDB)中的条目。
具体实施例方式本发明包含存储器控制器、存储器系统、固态驱动器及用于处理若干个命令的方法。在一个或一个以上实施例中,存储器控制器包含多个后端通道及通信地耦合到所述多个后端通道的命令队列。所述命令队列可经配置以保持从主机接收的主机命令。电路经配置以至少响应于所述命令队列中的所述主机命令中的若干个主机命令而产生若干个后端命令,且将所述若干个后端命令分配到所述多个后端通道中的若干个后端通道。本发明还包含用于存储器控制器的方法及装置。在一个或一个以上实施例中,一存储器控制器包含多个后端通道及通信地耦合到所述多个后端通道及命令队列的前端命令分派器。所述命令分派器可经配置以确定待由所述若干个命令实现的对存储器的净改变,且修改所述若干个命令中的一者或一者以上以优化所述若干个命令在所述多个后端通道当中的分配。本文中的图遵循其中第一个数字或前几个数字对应于图式图编号且其余数字识别图式中的元件或组件的编号惯例。不同图之间的类似元件或组件可通过使用类似数字来识别。举例来说,在图1中,104可指代元件“04”,且在图2中,类似元件可指代为204等。图1是根据本发明的一个或一个以上实施例的计算系统的功能性框图。图1的实施例图解说明计算系统100的一个实施例的组件及架构。计算系统100包含存储器系统104(举例来说,固态驱动器(SSD)),存储器系统104经由接口 106(例如,USB、PCI、 SATA/150、SATA/300或SATA/600接口以及其它接口)通信地耦合到主机(例如,主机102)。SATA设计为通常称为并行ATA(PATA)的高级技术附件(ATA)标准的后继标准。第一代SATA接口(也称为SATA/150或非官方地称为SATA 1)以约每秒1. 5吉位((ib/s)或每秒150兆字节(MB/s)的速率进行通信。随后,将3. OGb/s信令速率添加到物理层,从而有效地使最大值(例如,最高数据吞吐量)从150MB/S加倍到300MB/S。3. OGb/s规范还称为SATA/300或非官方地称为SATA II或SATA2。SATA/300的传送速率可暂时满足磁性硬盘驱动器吞吐量要求;然而,由于使用多个快速快闪通道的固态驱动器可支持高得多的数据传送速率,因此可在支持快闪固态驱动器读取速度时实施甚至更快速的SATA标准(例如, 具有6(ib/s的吞吐量的SATA/600)。主机102可包含若干个单独的集成电路,或者一个以上组件或功能可位于同一集成电路上。根据一个或一个以上实施例,主机102可至少部分地作为“母板”而物理地实施于计算系统100中,其中SSD 104物理地实施于单独的卡上,所述母板与所述SSD经由总线通信地耦合。主机102可包含通信地耦合到存储器与总线控制件107的若干个处理器105 (例如,并行处理器、协处理器、处理器核心等)。若干个处理器105可为微处理器或某个其它类型的控制电路,例如,专用集成电路(ASIC)。所述计算系统的其它组件也可具有处理器。存储器与总线控制件107可具有直接通信地耦合到其的存储器及其它组件,举例来说,动态随机存取存储器(DRAM) 111、图形用户接口 113或其它用户接口(例如,显示监视器、键盘、 鼠标等)O存储器与总线控制件107还可具有通信地耦合到其的外围装置与总线控制件 109,外围装置与总线控制件109又可连接到若干个装置,例如,使用通用串行总线(USB)接口的快闪驱动器115、非易失性存储器主机控制接口(NVMHCI)快闪存储器117或SSD 104。 如读者将了解,SSD 104可与硬盘驱动器(HDD) —同或替代硬盘驱动器(HDD)用于若干个不同计算系统中。图1中所图解说明的计算系统100为此系统的一个实例。图2是根据本发明的一个或一个以上实施例的包含至少一个存储器系统的计算系统的功能性框图。计算系统200包含通信地耦合到主机202的存储器系统204(例如, SSD)。SSD 204可经由接口 206(例如,电缆、总线,例如,SATA接口)通信地耦合到主机202。 SSD 204可类似于图1中的固态驱动器104。图2图解说明固态驱动器204的一个或一个以上实施例的组件,包含控制器210、 物理接口 208(例如,连接器)及若干个存储器装置212-1、…、212-N,即对应于控制器210 的若干个通道的若干个存储器装置(例如,对应于特定通道的一个或一个以上存储器装置)。相应地,存储器装置212-1、…、212-N在图式上展示为“通道编号存储器”。如本文中所用,存储器装置可包含共享控制输入的若干个存储器单元(例如,裸片、芯片、阵列或其它群组)且可使用若干个存储器类型(例如,NAND快闪)来制作。控制输入通常可包含地址锁存启用(ALE)、芯片启用(CE)、读取启用(RE)、准备就绪/繁忙(R/B)、写入保护(WP) 及输入/输出(I/O)连接(例如,引脚、垫等)。在一个或一个以上实施例中,SSD 204可包含用以包封SSD 204的外壳,但此外壳并非是必需的,举例来说,主机202及SSD 204两者可由计算系统外壳包封。接口 206可用以在SSD 204与另一装置(例如,主机202)之间传达信息。根据一个或一个以上实施例,SSD 204可用作计算系统200中的存储装置。根据一个或一个以上实施例,SSD 204可配置为用于计算系统200的外部或便携式存储器系统,例如,具有插入连接性。
控制器210可与存储器装置212-1、…、212-N通信以操作(例如,读取、编程(即, 写入)、擦除等)所述存储器装置的存储器单元。控制器210可用以管理与存储器装置 212-1、…、212-N的通信及存储于所述存储器装置中的数据。控制器210可具有可为若干个集成电路的电路。控制器210还可具有也可为若干个离散组件的电路。对于一个或一个以上实施例,控制器210中的电路可包含用于控制跨越若干个通道且跨越若干个存储器装置212-1、…、212-N的存取的控制电路。存储器控制器210可经由所述若干个通道与对应存储器装置选择性地通信。主机202与SSD 204之间的通信协议可不同于用于存取存储器装置(例如,存储器装置212-1、…、212-N)所需的通信协议。存储器控制器210可包含经配置以将从主机 202接收的命令翻译成适当命令以实现跨越若干个存储器装置212-1、…、212-N的既定操作的控制电路。存储器控制器210的电路可在主机202与SSD 204之间提供翻译层。存储器控制器210还可将主机命令序列、相关联数据及其它信息(例如,信号)处理成适当通道命令序列(举例来说)以存储及检索数据。存储器控制器210可在适当时间经由去往对应存储器装置的适当通道选择性地分配命令、传达(例如,接收、发送、传输)相关联数据及其匕fn息ο根据本发明的一个或一个以上实施例,每一存储器装置212-1、…、212-N可包含若干个存储器单元。可使用各种类型的易失性或非易失性存储器阵列(例如,NAND快闪、 DRAM以及其它阵列)来形成存储器装置212-1、…、212-N。根据本发明的一个或一个以上实施例,存储器装置212-1、…、212-N可包含以NAND架构、NOR架构、AND架构或某种其它存储器阵列架构配置的若干个快闪存储器单元,所有所述架构可用于实施本发明的一个或一个以上实施例。存储器装置212-1、…、212-N可包含可经配置以提供特定物理或逻辑配置(例如,页、块、平面、阵列或其它群组)的若干个存储器单元。一页可根据若干个物理数据扇区存储数据。每一物理扇区可对应于一逻辑扇区且可包含额外开销信息,例如,错误校正码 (ECC)信息及逻辑块地址(LBA)信息以及用户数据。如所属领域的技术人员将了解,逻辑块寻址是通常由主机用于识别逻辑信息扇区的方案。作为一实例,一逻辑扇区可存储表示若干个数据字节(例如,256个字节、512个字节或1,OM个字节)的信息。如本文中所用, 一页是指一编程及/或读取单位,例如可一起或作为一功能性群组编程及/或读取的若干个单元或其上存储的若干数据部分。举例来说,一些存储器阵列可包含若干个页,所述若干个页组成一存储器单元块,即,包含可作为一单位一起擦除的存储器单元的块,例如,可以大致同时方式擦除每一物理块中的单元。一存储器单元平面中可包含若干个块。一裸片上可包含若干个存储器单元平面。一阵列可包含若干个裸片。以实例且并非限定方式,U8GB 存储器装置可包含每页4314个数据字节、每块1 个页、每平面2048个块及每装置16个平面。然而,实施例并不限于此实例。每一存储器装置212-1、…、212-N可包含各种类型的易失性及非易失性存储器阵列,例如,快闪及DRAM阵列以及其它阵列。在一个或一个以上实施例中,存储器装置 212-1、…、212-N可为固态存储器阵列。存储器装置212-1、…、212-N可包含可聚集成若干单位的若干个存储器单元。如本文中所用,一单位可包含若干个存储器单元,例如,页、物理块、平面、整个阵列或其它存储器单元群组。举例来说,一存储器装置可为一存储器阵列且包含若干个平面,其中每一平面包含若干个物理块。每一物理块中的存储器单元可作为一单位一起擦除,例如,可以大致同时方式擦除每一物理块中的单元。举例来说,可在一单个操作中一起擦除每一物理块中的单元。一物理块可包含若干个页。每一页中的存储器单元可作为一单位一起编程,例如,可以大致同时方式编程每一页中的单元。每一页中的存储器单元还可作为一单位一起读取。存储器系统的物理扇区可对应于逻辑扇区且可包含额外开销信息,例如,错误校正码(ECC)信息及逻辑块地址(LBA)信息以及用户数据。如所属领域的技术人员将了解, 逻辑块寻址是通常由主机用于识别逻辑信息扇区的方案。作为一实例,每一物理扇区可存储表示若干个数据字节(例如,256个字节、512个字节或1,024个字节以及其它数目个字节)的信息。然而,本发明的实施例并不限于存储于物理扇区中或与逻辑扇区相关联的特定数据字节数目。图3是根据本发明的一个或一个以上实施例的通信地耦合到若干个存储器装置的存储器系统控制器的功能性框图。如图3中所示,存储器控制器310可通信地耦合到若干个(例如,8个)存储器装置(例如,312-1、…、312-N)。在一个或一个以上实施例中, 所述存储器装置可为图2中以212-1、…、212-N展示的存储器装置。每一存储器装置(例如,312-1、…、312-N)对应于控制器310的通道(例如,350-1、…、350-N)。如本文中所用,存储器装置可包含共享控制输入的若干个存储器单元,如先前所论述。在一个或一个以上实施例中,存储器控制器310可为SSD控制器。在一个或一个以上实施例中,存储器控制器310可类似于图2中所示的控制器210。每一存储器装置(例如,312-1、…、312-N)可如先前关于存储器装置212_1、…、 212-N所描述组织且可制作于个别裸片上或可制作于堆叠式裸片上。每一裸片可包含若干个存储器单元阵列。存储器控制器310可包含前端部分344及后端部分346。控制器310 可在前端344中处理命令及数据,例如,(例如)通过减少传输到后端部分346上的命令的数量来优化所述若干个命令在多个后端通道当中的分配)。控制器310可进一步在后端通道中的每一者中处理命令及数据以实现关于特定通道的存储器操作的额外效率。以此方式,控制器310管理与存储器装置312-1、…、312-N的通信。如图3中所示,前端部分344可包含通信地耦合到应用层320的任务文件315及主机缓冲器322(例如,FIFO)的主机接口 314。举例来说,主机接口 314可经配置以经由SSD 上的物理接口(例如,图2中的208)及SATA接口(例如,图2中的206)与主机(例如,图 2中的20 传达输入及输出信息(例如,数据流)。根据一个或一个以上实施例,可将命令 (包含命令参数)(例如,输入信息的命令部分)引导到任务文件315且可将相关联有效负载(例如,输入信息的数据部分)引导到主机FIFO 322。任务文件315可为一个深队列且可经由命令处理器与分派器318(下文中称为“命令分派器”)而与前端直接存储器存取模块(DMA) 316通信。命令分派器318经配置(例如, 包含硬件)以使得其可在命令从主机到达之后即刻对照某些准则检查任务文件315中的命令(例如,完整性检查),且一旦关于所述准则通过检验,即可接受到达的命令且可将其从任务文件315分配到前端DMA 316及适当的后端通道。已使用固件执行用以完整性检查的先前方法;然而,在硬件中执行主机命令完整性检查更快速,从而通过命令分派器318导致主机命令处理速度的增加。
主机FIFO 322可通信地耦合到具有若干个加密引擎(例如,实施AES算法的加密引擎)的加密装置324。加密装置3M可经配置以处理(例如,加密)与特定命令相关联的有效负载且将所述有效负载传输到前端DMA 316。可在2008年12月12日提出申请的标题为“并行加密/解密(Parallel Encryption/Decryption),,的具有至少一个共同发明人且具有代理人档案号1002. 0400001的第12/333,822号共同转让美国专利申请案中找到关于加密装置324的操作的额外细节。前端部分344还可具有若干个其它处理器330,其可包含前端处理器(FEP) 328、存储器336(例如,RAM、ROM)、DMA 332及主缓冲器334。举例来说,若干个处理器330可通过通信总线通信地耦合到前端DMA 316。前端DMA 316可包含包括相关联寄存器的DMA描述符块(DDB)与寄存器340以用于含有若干个数据字。前端DMA 316还可包含仲裁器342以用于在通信地耦合到其的若干个通道之间进行仲裁。加密装置3 还可通信地耦合到FEP 328。FEP 3 还可直接通信地耦合到主机FIFO 322及前端DMA 316。前端DMA 316可通信地耦合到命令分派器318。控制器310可包含对应于若干个存储器装置(例如,312-1、…、312-N)的若干个通道(例如,1、…、N)。所述若干个通道与所述若干个存储器装置之间的关系在本文中描述且在图中展示为一对一关系;然而,本发明的实施例并不限于此,且本发明涵盖其它配置(例如,多个存储器装置对应于特定通道、特定存储器装置对应于多个通道或其组合)。前端DMA 316及命令分派器318有效地将前端 344电路通信地耦合到后端电路346(例如,后端通道1 (350-1)、…、后端通道N(350_N))。 根据本发明的一个或一个以上实施例,控制器310包含8个通道(例如,1、…、8)。本发明的实施例并不限于具有8个通道的控制器,因此,控制器可经实施而具有大于或小于8的数量的通道。现在参考控制器310的后端部分346,后端部分346包含若干个通道(例如, 350-1、…、350-N)。每一后端通道可包含一通道处理器(例如,356-1、…、356-N)及相关联通道DMA(例如,3M-1、…、3M-N),所述相关联通道DMA中的每一者可通信地耦合到前端DMA 316。命令分派器318可经配置以经由通道命令队列(例如,355-1、…、355-N)将命令分配到相应通道处理器(例如,356-1、…、356-N)。在一个或一个以上实施例中,通道命令队列(例如,355-1、…、355-N)可保持从命令分派器318接收的若干个命令。前端DMA 316可经配置以将与特定命令相关联的数据分配到对应通道DMA (例如, 354-1, ->354-N)0通道DMA (例如,3M-1、…、354-N)可通信地耦合到通道缓冲器(例如,358-1、…、358-N),所述通道缓冲器又可通信地耦合到错误校正码(ECC)与存储器接口模块(例如,360-1、…、360-N)。通道处理器(例如,356-1、…、356-N)还可通信地耦合到 ECC/存储器接口 (例如,360-1、...、360-N)、通道 DMA (例如,354-1、-,354-N)及通道缓冲器(例如,358-1、…、358-N)。虽然图3中所示的实施例将每一后端通道350-1、…、350-N图解说明为包含后端通道处理器(例如,356-1、…、356-N),但本发明的实施例并不限于此。举例来说,后端部分346可包含例如共享后端处理器的电路,其包含(例如)例如可对若干个后端通道(例如,350-1、…、350-N)进行操作的专用集成电路(ASIC)的硬件逻辑。因此,所述共享后端处理器可经通信地耦合以与类似于针对专用通道处理器(例如,356-1、…、356-N)所描述的命令分派器及前端DMA的命令分派器318及前端DMA 316通信。如图3中所示,特定存储器装置(例如,312-1、…、312-N)对应于每一通道(例如,350-1、…、350-N)以使得对所述特定存储器装置的存取可经由所述对应通道进行。主机接口 314可为控制器310与主机之间的通信接口。在一个或一个以上实施例中,在主机与控制器之间传达的信息可包含若干个命令,例如,编程(例如,写入)命令、读取命令、擦除命令。所述命令可用以操作相关联存储器装置。命令分派器318可经由主机接口 314及应用层320从主机(例如,图2中的202) 接收若干个命令。命令分派器318可保持所接收的命令且可将命令分配到若干个相应后端通道(例如,350-1、…、350-N)的相应通道命令队列(例如,355-1、…、355-N)及前端DMA 316。有效负载可与命令相关联。举例来说,针对向存储器写入的命令,相关联有效负载可为待写入的数据。可经由主机FIFO 322及AES 3 在前端DMA 316处接收与特定命令相关联的有效负载。前端DMA 316可将与命令分派器318中的特定命令相关联的数据分配到通道DMA (例如,3M-1、->354-N)或直接分配到对应通道缓冲器(例如,358-1、…、 358-N)。通道DMA(例如,3M-1、…、3M-N)可将与特定命令相关联的数据分配到对应通道缓冲器(例如,358-1、…、358-N)。在一个或一个以上实施例中,通道缓冲器(例如,358-1、…、358-N)可保持对应于若干个命令的数据,所述数据是经由通道DMA(例如, 354-1, ->354-N)而从前端DMA 316接收的。在一个或一个以上实施例中,从主机(例如,图2中的202)传达到控制器318的命令分派器318的信息可包含若干个命令,例如,编程命令、读取命令及擦除命令以及其它命令。编程命令可用以将数据写入到存储器(例如,存储器装置312-1、…、312-N),读取命令可用以从存储器读取数据且擦除命令可用以擦除所述存储器的一部分。所述命令可指示操作的类型(例如,编程、读取、擦除)连同开始位置(例如,LBA)及所述存储器操作中所涉及的存储器的数量(例如,逻辑扇区的数目)。在一个或一个以上实施例中,LBA可与主机的逻辑扇区相关联,例如,主机的每一逻辑扇区可与特定LBA相关联。举例来说,LBA 1000可与第一逻辑扇区相关联,LBA1001可与第二逻辑扇区相关联,LBA 1002可与第三逻辑扇区相关联等。作为另一实例,编程阵列中对应于开始于LBA 1000处的16个逻辑数据扇区的存储器单元的命令可编程与LBA 1000 到1015相关联的存储器单元,例如,对应于与LBA 1000到1015相关联的逻辑数据扇区的存储器单元。因此,存储器阵列中的每一逻辑数据扇区可由特定LBA指代。LBA可由后端 346映射到与特定存储器块相关联的物理地址(例如,特定存储器块的开始地址),或LBA 可被映射到与存储器块内的特定扇区相关联的物理地址(例如,特定存储器扇区的开始地址)。图4图解说明根据本发明的一个或一个以上实施例实施的逻辑到物理地址映射。 地址映射461图解说明存储器装置(例如,312-1、…、312-N)的LBA与物理块地址(PBA) 之间的相关性。举例来说,LBA 1(462-1)对应于PBA A (464-1), LBA 2(462-2)对应于PBA B (464-2),LBA 3 (462-3)对应于 PBA C (464-3),LBA 4 (462-4)对应于 PBA D (464-4),…, 且 LBA M(462-M)对应于 PBA M(464-M)。接收命令
根据本发明的一个或一个以上实施例,前端DMA(例如,图3中的316)可包含命令队列386。前端DMA(例如,图3中的316)可保持经由应用层320及命令分派器318从主机接收的若干个命令。命令分派器318可处理所述命令且将命令分配到前端DMA316及若干个适当后端通道(例如,图3中的350-1、…、350-N)。由命令分派器(例如,图3中的 318)执行的操作可在硬件、软件或其组合中实施。命令分派器(例如,图3中的318)可包含命令处理器部分及分派器部分。所述命令处理器部分及分派器部分可为离散硬件模块, 或相应功能可以集成方式由控制电路实施。在从主机接收到命令(下文中称为“主机命令”)之后,所述命令分派器(例如,图 3中的318)的命令处理器部分可即刻检查所述主机命令的完整性且接着将所述主机命令向前传递到所述命令分派器的分派器部分。根据本发明的一个或一个以上实施例,所述命令分派器(例如,图3中的318)的命令处理器部分可经配置以检查命令以找出可接受LBA 范围且找出有效标签以及进行其它完整性测试。所述分派器部分可将所述主机命令分配到前端DMA 316及若干个适当后端通道 (例如,图3中的350-1、…、350-N),且向应用层320指示所述命令的完成状态(例如,其是否已被接受及处理),可将所述完成状态传达到主机以指示可发送下一主机命令。在硬件中实施命令分派器的功能性可减少主机命令处理时间,例如,在从主机接收到主机命令之后用以处理所述命令且传达(例如,传输或发送)命令完成状态的指示符的时间。可通过减少在主机与存储器系统之间传达的主机命令之间的处理时间来增加存储器系统吞吐量。图5是根据本发明的一个或一个以上实施例的前端DMA的命令队列的框图。命令队列586具有保持数量C个命令的容量,例如,所述命令队列可具有若干个命令时隙,每一命令时隙能够保持一命令。如图5中所示,命令队列586包含若干个命令时隙,例如,命令时隙1 (587-1)、命令时隙2(587- 、…、命令时隙C(587-C)。举例来说,在一个或一个以上实施例中,前端DMA(例如,图3中的316)可包含具有存储32个命令的容量的若干个命令队列386 ;然而,本发明的实施例并不限于特定命令时隙数目、命令队列容量或可由命令分派器同时处理的命令数目。在一个或一个以上实施例中,前端DMA(例如,图3中的316)可以初始次序从主机接收主机命令。若干个命令队列386可以所述初始次序保持所述若干个主机命令,例如,以从主机接收所述主机命令的次序。命令队列386可一次保持有限数目个命令;因此,命令分派器经配置以用信号通知主机命令队列386何时已达到其容量且暂时不能够从主机接收其它主机命令。在一个或一个以上实施例中,命令分派器(例如,图3中的318)可处理保持于任务文件315中的主机命令且可将其分配到前端DMA 316中的命令队列386。接着,命令分派器318可将来自命令队列386的主机命令以其被接收及排队于命令队列386中的次序(例如,以将执行主机命令的次序、以可分配主机命令的次序、以前述次序的组合)或根据某个其它适当排序方案分配到后端通道。在一个或一个以上实施例中,所述命令分派器的命令处理器部分经配置以确定是否可修改保持于命令队列386中的命令,(例如)以优化若干个命令在多个后端通道当中的分配且个别地或作为一群组修改主机命令。修改命令以使分配经济化可包含(举例来说) 将命令组合到邻近存储器位置及/或删除在未从邻近存储器位置读取的情况下随后被盖写的命令,以便发送较少的命令来实现对用于写入操作的存储器的相同净改变或实现从用于读取操作的存储器的相同净读取,借此节省时间、处理资源及/或通信带宽以及其它目的。如本文中所用,命令可包含主机命令、已修改的主机命令及其它类型的命令。命令处理器部分可分析并修改命令队列386中的命令以更高效地将命令分配到相应通道、使个别命令更高效、改进存储器系统的可靠性、改进存储器系统的性能、减少存储器系统的耗损或改进命令在相应后端通道当中的质量、效率或流动。举例来说,命令处理器部分可重新排序命令群组内的命令、通过将多个命令聚集成一个或一个以上命令来组合(例如,合并)命令或确定将不执行特定命令(例如,当可确定后续命令将修改特定存储器位置处的数据时)以及其它命令优化技术。在一个或一个以上实施例中,前端处理器(FEP)3^也可执行这些任务且做出这些确定。图6A及图6B图解说明根据本发明的一个或一个以上实施例的前端DMA的命令队列的操作。根据一个或一个以上实施例,命令分派器(例如,图3中的318)及/或FEP(例如,图3中的328)可确定是否可修改保持于前端DMA(例如,图3中的386)的命令队列中的命令,且所述命令分派器可经配置以按既定促进控制器的前端(例如,图3中的344)的命令吞吐量的方式修改所述命令。为了增加命令吞吐量,在一个或一个以上实施例中,命令分派器318或FEP 3 处理主机命令以仅在后端通道为繁忙时(例如,当相关联通道缓冲器为满时)增加吞吐量。当所述后端通道为繁忙时(例如,当相关联通道缓冲器(例如,分别为358-1、…、358-N)为满时),可防止控制器的前端部分将命令分配到所述后端通道。在所述后端通道中的若干个后端通道能够且愿意接受额外命令的条件下,不应由所述命令分派器延迟命令以实现进一步优化处理,因为腾空命令队列686A/B的延迟会延迟命令队列686A/B中的主机命令的完成,此又延迟额外命令从主机的传送,且命令的进一步优化可在不导致将命令分配到其它后端通道的延迟的情况下发生于相应通道命令队列中(或许以甚至更大的效率)。可在标题为“修改命令(Modifying Commands)”的具有至少一个共同发明人且具有代理人档案号 1002. 0430001的第12/351,206号共同转让美国专利申请案中找到关于后端通道的操作的额外细节。在一个或一个以上实施例中,命令队列686A可类似于关于图3所论述的命令队列386。命令队列686A包含若干个(例如,C个)命令时隙,例如,687_1Α、687-2Α、687_3Α、 687-4Α、687-5Α、687-6Α、687-7Α、687-8Α、…、687-CA。C个命令时隙中的每一者可经配置以暂时存储一命令(例如,主机命令)。举例来说,命令时隙687-1Α可存储第一命令,命令时隙687-2Α可存储第二命令,等等。在下文关于前端命令分派器处理命令队列686Α中的命令所论述且在图6Α中所图解说明的实例中,命令时隙1(例如,687-1Α)中的命令可为将数据编程(例如,写入)到存储器装置中涉及开始于LBA 1000处的16个逻辑扇区的存储器单元的命令。命令时隙2(例如,687-2Α)中的命令可为从所述存储器装置中涉及开始于LBA 2000处的4个逻辑扇区的存储器单元读取数据的命令。命令时隙3(例如,687-3Α)中的命令可为将数据编程到所述存储器装置中涉及开始于LBA 1000处的48个逻辑数据扇区的存储器单元中的命令。命令时隙4(例如,687-4Α)中的命令可为读取存储器装置中涉及开始于LBA 2002处的10个逻辑数据扇区的存储器单元中的数据的命令。命令时隙5(例如,687-5Α)中的命令可为读取所述存储器装置中涉及开始于LBA 2000处的16个逻辑数据扇区的存储器单元的命令。命令时隙6(例如,687-6A)中的命令可为编程所述存储器装置中涉及开始于LBA 1040处的 16个逻辑数据扇区的存储器单元的命令。命令时隙7(例如,687-7A)中的命令可为编程所述存储器装置中涉及开始于LBA 3000处的2个逻辑数据扇区的存储器单元的命令。命令时隙8(例如,687-8A)中的命令可为编程所述存储器装置中涉及开始于LBA 3002处的2个逻辑数据扇区的存储器单元的命令。在任一特定时间保持于命令队列686A中的命令可与一个存储器装置相关联(例如,全部对应于同一通道)或可与若干个不同存储器装置相关联(例如,对应于多个通道)。 根据物理存储器关于每一通道的量及划分(如由逻辑到物理地址映射(例如,图4中的地址映射461)所映射),可从LBA确定命令与其相关联的特定通道。举例来说,物理块地址可包含通道识别信息。可根据本发明的一个或一个以上实施例修改保持于命令队列686A中的命令。举例来说,可将命令时隙687-1、687-3及687-6中的命令组合成编程涉及开始于LBA 1000处的56个逻辑扇区的存储器单元的单个命令。因此,命令分派器可经配置以确定至少两个命令是针对同一操作(例如,写入操作)但涉及逻辑上邻近的存储器位置。所述命令分派器可通过将所述至少两个命令组合成涉及所述逻辑上邻近的存储器位置的组合的单个命令来优化命令到后端通道的分配。在所述逻辑上邻近的存储器位置与单个通道相关联的情况下,经组合的命令最高效。图6B图解说明在已根据本发明的一个或一个以上实施例修改图6A中所示的命令之后的通道命令队列686B的框图。如图6B中所示,保持于通道命令时隙687-1B中的命令 1是编程阵列中对应于主机的开始于LBA 1000处的56个逻辑扇区的存储器单元的命令。 保持于通道命令时隙687-2B中的命令2是读取所述阵列中对应于所述主机的开始于LBA 2000处的16个逻辑扇区的存储器单元的命令,且保持于通道命令时隙687- 中的命令3 是编程所述阵列中对应于所述主机的开始于LBA 3000处的4个逻辑扇区的存储器单元的命令。所述命令分派器还可经配置以确定至少两个命令是针对同一操作(例如,写入操作)但涉及逻辑上重叠的存储器位置,例如,涉及一个命令的存储器位置包含涉及同一类型的另一命令的存储器位置的至少一部分。所述命令分派器可通过将所述至少两个命令组合成涉及所述逻辑上重叠的存储器位置的组合的单个命令来优化命令到后端通道的分配。其它命令修改可为可能的。举例来说,在命令处理器部分可确定命令队列686A中涉及特定存储器位置(例如,LBA)的第一命令可在将盖写所述特定存储器位置的第二命令之前执行的情况下,所述命令处理器部分可不将所述第一命令分配(例如,删除、忽略、不执行)到其目的地通道,因为其结果将仅是暂时的,例如,直到执行所述第二命令。可关于图6进一步理解上文所提及的实例。假定将在较接近命令队列686A的底部(例如,命令时隙687-C)的命令之前执行较接近命令队列686A的顶部(例如,命令时隙 687-1)的命令。命令时隙1(例如,687-1A)及命令时隙3 (例如,687-3A)中的命令的LBA 两者是1000。命令1及命令3两者是编程操作。由于命令3将编程开始于LBA 1000处的 48个扇区,因此命令3将完全盖写作为命令1的结果而编程于以LBA1000开始的16个扇区中的无论什么内容。存在介入读取操作(例如,命令幻;然而,命令2不涉及以LBA 1000开始的16个扇区。因此,不需要分配(例如,删除、忽略、不执行)命令1,借此因不必将命令1传送到通道而节省时间且优化来自命令队列686A的命令在多个后端通道当中的分配以及命令队列686A可接受额外主机命令的速度。其它命令重新排序、组合及删除可有可能优化(例如,经济化)命令队列686A中所示的命令到若干个后端通道的分配。因此,所述命令分派器可经配置以确定待由命令队列686A中的若干个命令实现的对存储器的净改变,且基于所述确定而修改保持于命令队列686A中的所述若干个命令, 借此优化所述若干个命令在多个后端通道当中的分配。所述命令分派器可经配置以不分配 (例如,删除、忽略、不执行)来自命令队列686A的若干个命令中的一者,此发生于所述命令分派器可依据在任何给定时间保持于命令队列686A中的命令确定这样做将不改变所述若干个命令对存储器的所确定的净改变时。举例来说,所述命令分派器可经配置以修改与命令队列686A中的第一命令相关联的存储器范围以包含命令队列686A中的第二命令的存储器范围的一部分,且此后从命令队列686A删除所述第二命令而不改变待由所述若干个命令实现的对存储器的所确定的净改变。如上所述,命令分派器的分派器部分可将命令(例如,主机命令)分配到若干个适当通道。举例来说,在与特定命令相关联的有效负载涉及单个通道时,所述分派器部分可将所述特定命令分配到适当通道。对于涉及多个通道的有效负载,所述分派器部分可通过将特定命令分配到多个通道来管理相关联命令的分配,包含其用于操作对应于与命令相关联的特定逻辑块地址及扇区计数的相应存储器装置的通道特有参数。接着,可剖析与所述命令相关联的有效负载,其若干部分(例如,以循环方式)在多个通道当中分配。类似地,对于读取操作,可在多个后端通道当中分配与读取命令相关联的有效负载,且可将对应读取命令分配到相关联后端通道以从多个通道当中汇编数据。举例来说,每一后端通道可处理R个连续逻辑块地址(LBA),但主机命令(S卩,从主机接收的命令)可涉及相对大数目的扇区。命令分派器可在若干个后端通道当中以循环方式分配后端命令,其中每一后端命令模拟主机命令,每一后端命令涉及R个连续LBA除外。 循环过程继续直到主机命令的所有扇区以R大小的“大块”分配于所述后端通道当中为止。为进一步图解说明,考虑以下数值实例,其中主机命令为写入1 个数据扇区,其中存在4个后端通道且其中每一后端通道可处理8个连续LBA。为简单起见,此实例中将忽略存储器位置偏移。在接收到涉及1 个扇区的主机写入命令之后,即刻响应于单个主机写入命令而产生多个后端写入命令。第一后端写入命令可涉及去往后端通道1的前8个 LBA,接着,第二后端写入命令可涉及去往后端通道2的下8个LBA,第三后端写入命令可涉及去往后端通道3的下8个LBA,第四后端写入命令可涉及去往后端通道4的下8个LBA。 此循环处理以所述第一后端写入命令还涉及去往后端通道1的下8个LBA而继续,直到所有1 个扇区分配于4个通道当中为止。因此,每一通道将已接收对应于主机写入命令但汇编为串在一起的8个LBA部分的集合的32个有效负载扇区。此后,将相应写入命令分配到相应后端通道以写入32个数据扇区。因此,单个主机命令可产生N个后端命令(其中存在N个后端通道),其各自模拟主机命令动作但涉及与所述主机命令相关联的有效负载的大约1/N。每通道仅分配一个命令连同与所述主机命令相关联的有效负载的相应部分。本发明的实施例并不限于此处所述的数值实例数量且并不限于写入命令。所属领域的技术人员将理解,其它命令(例如,读取命令)可因单个主机命令而类似地并行分配于多个通道当中(例如,从若干个后端通道当中读取数据)。在一个或一个以上实施例中,可通过将若干个命令组合成单个命令来修改命令队列686A中的命令以便消除或减少部分页编程操作,例如,将部分页一起组合到单个操作中。除通过减少与部分页编程相关联的耗损来改进存储器系统的性能及可靠性以外,组合前端命令队列686A中的命令优化若干个命令在多个后端通道当中的分配,因为多个编程命令可减少到较少数目个命令(例如,单个命令)。通过以下操作来执行部分页编程操作找到自由的新存储器单元块、将来自旧块的页读取到数据缓冲器中、将新数据归并到所述数据缓冲器中、将整个页(包含经归并的数据)写入到新块中的新存储器页、将所述旧块的所有其它页移动到新块且对所述旧块进行标记以指示其将被擦除。虽然已给出数个实例以图解说明用于组合命令(此优化若干个命令在多个后端通道当中的分配)的算法,但本发明的实施例并不限于所提供的实例,且本发明涵盖其它优化技术,例如涉及在前端处删除或重新排序命令以减少在多个后端通道当中分配的命令的数量的那些技术。在一个或一个以上实施例中,存储器控制器包含多个后端通道及通信地耦合到所述多个后端通道的命令队列(例如,图3中的386)。所述命令队列(例如,图3中的386) 可经配置以保持从主机接收的主机命令。电路经配置以至少响应于所述命令队列(例如, 图3中的386)中的主机命令中的若干个主机命令而产生若干个后端命令,且将所述若干个后端命令分配到所述多个后端通道中的若干个后端通道。所述若干个后端命令可少于或多于主机命令中的若干个主机命令。举例来说,在一个或一个以上实施例中,所述电路可经配置以响应于单个主机命令而产生对应于所述多个后端通道中的每一者的后端命令。所述电路可进一步经配置以将对应后端命令分配到其相应后端通道以使得大致并行地处理所述后端命令。在一个或一个以上实施例中,所述电路可经配置以在不同的多个后端通道当中分配多个主机命令以便大致同时执行所述多个主机命令。产生所述若干个后端命令可包含修改所述若干个主机命令中的至少一者与删除所述若干个主机命令中的至少另一者的组合。直接存储器存取模块(DMA)可经配置以分配与对应于所产生的若干个后端命令的主机命令相关联的数据。在完成相应后端命令之后,所述电路可即刻经配置以在完成多个后端命令中的特定一者之后即刻将来自执行所述多个后端命令中的所述特定一者的结果传达到主机,而不顾及所述多个后端命令中的任一其它者的执行的完成。图7是根据本发明的一个或一个以上实施例用于在若干个后端通道当中分配命令的流程图。所述命令分配开始于766处。在767处,可将所分配命令的开始LBA设定为命令LBA与LBA偏移的和。可确定(例如,计算)开始通道连同开始通道扇区计数、结束通道、结束通道扇区计数、剩余扇区计数及通道开始LBA。在768处,可将命令最初分配到的通道编号设定为开始通道。接着,在769处,可针对当前通道确定(例如,计算)开始LBA及扇区计数,且可针对特定当前通道编号断定所涉及通道状态位(例如,irwolvecLch)以指示特定通道涉及特定命令。接下来,在770处,将当前通道的开始LBA及扇区计数加载到当前通道的收件箱(下文进一步论述通道收件箱)。可在771处确定当前通道是否是结束通道(参见767)。 如果当前通道并非是结束通道,那么在773处分配过程移动到下一通道(例如,可使当前通道编号递增)且所述过程在769处继续(将当前通道的开始LBA及扇区计数加载到当前通道的收件箱)。如果当前通道是结束通道,那么可在772处将开始通道、通道扇区计数及所涉及的通道加载到DMA描述符块(DDB ;下文进一步论述),且所述过程向后返回到766处以开始下一命令分配。图8是图解说明根据本发明的一个或一个以上实施例在前端与若干个通道之间的接口的一个实施例的功能性框图。图8展示位于存储器控制器的后端部分846中的若干个通道(例如,850-1、…、850-N),所述通道可类似于图3中所示的通道350-1、…、350-N; 然而,为清晰起见,在图8中省略图3上所示的一些通道细节以便可更详细地展示额外结构。图8还展示位于所述存储器控制器的前端部分844中的前端DMA 816及前端处理器 828 (FEP)。前端DMA 816可类似于图3中的前端DMA 316,且FEP拟8可类似于图3中的 FEP 328。在图8中,前端DMA 816及FEP拟8分别展示为以下文进一步详细描述的方式通信地耦合到若干个通道(例如,850-1、…、850-N)中的每一者。每一通道包含通道处理器(例如,856-1、…、856-N)、通道收件箱(例如, 874-1、…、874-N)、通道输入寄存器(例如,876-1、…、876-N)及通道输出寄存器(例如, 878-1、…、878-N)。所述通道输出寄存器及收件箱中的每一者经通信地耦合以向FEP 828 提供信息。所述通道收件箱及输入寄存器中的每一者经通信地耦合以从前端DMA 816接收
fn息ο前端肓接存储器存取(DMA)图9A是根据本发明的一个或一个以上实施例实施的直接存储器存取模块(DMA) 描述符块的功能性框图。DDB控制主机与后端通道之间的数据流动,且发挥作用以(例如) 相对于保持于命令队列(例如,图3中的386)中的命令使用智能决策制定来优化系统吞吐量以增加将来自命令队列(例如,图3中的386)的命令分配到各种后端通道的效率且借此增加整个命令队列(例如,图3中的386)中的命令的速度。对于具有经由对应通道存取的若干个存储器装置(例如,固态驱动器)的存储器系统,可将与写入命令相关联的有效负载编程到若干个通道且可从若干个通道汇编与读取命令相关联的有效负载。在管理与涉及多个通道的特定命令相关联的有效负载时,DMA在适当通道当中分配数据。举例来说,所述DMA管理将与写入命令相关联的有效负载分配到若干个通道及从若干个通道汇编与读取命令相关联的有效负载。所述DMA还通过管理与主机和后端通道之间的多个命令相关联的有效负载来促进多个(包含并行)命令执行。当发出命令时,DDB(例如,图3中的340)协调有效负载到及从N个通道的分配。 举例来说,在写入或读取操作期间,可使用N个通道中的若干个通道。可首先由命令分派器 (例如,图3中的318)或前端处理器(FEP)(例如,图3中的328)更新(例如,加载)所述 DDB,其中DDB标签可为用于每一主机命令的地址。可由FEP或命令分派器设置所述DDB。 在“无错误”条件期间,可没有必要由I/O处理器的FEP进行进一步管理。图9A展示具有若干个标签地址条目(例如,DDB 1、…、DDB 32)的DDB 988的内容。每一标签地址条目含有与设置990、状态992及与数据传送相关联的命令信息994相关联的参数。根据本发明的一个或一个以上实施例,可根据串行高级技术附件(SATA)标准实施标签寻址。因此,DDB条目可确定存取哪个通道、针对特定通道将传送多少个扇区及相关联的状态以及其它信息。DDB可通过针对不支持多个命令队列的遗留命令仅使用DDB 1 (例如,经由所述DDB —次仅处理一个遗留命令而非在所述DDB中同时管理多个命令)而是向后兼容的。DDB 988中的每一条目具有一标签,所述标签可被指派或被暗示。在一个或一个以上实施例中,所述标签可与条目编号(例如,所述条目在DDB中的物理位置)相同,因此,所述条目在所述DDB中的物理位置暗示所述标签以使得不需要与每一条目一起存储实际标签编号字段。在控制器接收主机命令且其向DDB添加对应于所述主机命令的新条目时,每一条目与一标签相关联且输出与所述新条目相关联的标签。如先前所述,所述控制器维持命令队列(例如,图3中的386)、接收与所述新条目相关联的标签、添加对应于所述标签的新命令队列条目,且输出范围操作请求。图9B图解说明根据本发明的一个或一个以上实施例实施的图解说明于图9A中的 DMA描述符块(DDB)中的条目。图9B通过类型(例如,设置、状态、信息)、描述、大小(例如,位的数目)及在条目内的位置(例如,位位置)来指示DDB条目的数据字段。每一 DDB条目的下一计数数据字段990A (例如,位位置93到96处的“next_Cnt”) 表示针对一个给定通道待传送的数据扇区的数目。下一计数可由命令分派器或FEP初始化以规定开始通道的第一传送计数。下一计数可由硬件更新以规定前一通道的传送计数。所述更新在当前通道完成其传送之后但在全部传送完成之前发生。如果待传送的全部扇区的剩余数目大于通道可传送的扇区的最大量(例如,所述计数大于每页的扇区计数乘以平面的数目),那么可用扇区的所述最大量加载下一计数。否则,可用待传送的全部扇区的剩余数目加载下一计数。计数数据字段990B(例如,位位置80到95处的“cnt”)可为针对特定命令的全部传送计数。所述计数可由命令分派器或FEP以总传送计数初始化且可由硬件更新以指示待传送的扇区的剩余数目。根据一个或一个以上实施例,不使用位位置79,例如,将其保留以供将来使用。传送完成数据字段990D (例如,位置78处的“)(C”位)指示所述DMA传送完成。也就是说,可完成数据阶段,但可能尚未发送命令完成状态的指示符。一旦通道状态(“ch_ status")等于特定值,即可由硬件设定此位以指示主机命令完成。接着,硬件对命令完成状态的指示符的发送进行调度。当将所述指示符成功地发送到主机时,所述硬件操作以在可接收另一主机命令之前清除有效数据字段(例如,“V”旗标),如稍后所述。主机错误数据字段992A(例如,位置77处的“HE”位)可用以指示发生了错误。如果所述错误在主机传送期间发生,那么可由I/O处理器或主机接口(例如,图3中的314) 设定此位。快闪错误数据字段992B (例如,位置76处的位“FE”)可用以指示发生了存储器装置(例如,NAND快闪)错误。有效数据字段992C(例如,位置75处的“V”位)可用以指示有效条目。可由命令分派器或FEP设定此位(例如,V=I)以指示硬件可存取DDB条目,且所述命令分派器或 FEP可不盖写所述条目。可在完成主机命令且已将指示符成功地发送到主机之后由硬件将此位清除,或当在处理命令时存在错误时可由FEP将其清除(例如,V = O)以指示DDB中的条目可用于从主机接收新命令。
下一通道数据字段992D (例如,位位置72到74处的“nxt_Ch” )是指将发生传送的通道。此字段可由命令分派器或FEP初始化以规定用于传送的开始通道且可由硬件更新以规定用于传送的下一通道。当先前通道完成传送所述通道可处理的所有连续LBA时发生更新。针对特定命令的扇区计数可能尚未达到零,因为可存在待针对所述特定命令传送的剩余扇区,包含作为循环分配的一部分的针对所述通道的额外回合,如上所述。对于一个通道,当不存在待针对所述特定命令传送的剩余扇区(例如,循环序列中向其分配有效负载的最后一个通道)时,针对所述特定命令的扇区计数将到达零。现用通道数据字段992E (例如,位位置64到71处的“active_ch”)可为N位信号 (例如,对应于8个通道的8个位),其中每一位表示其相应通道的完成状态。在传送发生之前,可设定对应于每一所涉及通道的位。接着,一旦命令针对所述通道完成,即可对每一位进行复位。命令信息数据字段994 (例如,位位置0到63处的“CMD_info” )可包括来自帧信息结构(FIS)寄存器的四个字,包含命令、优先级位、FUA位、LBA及扇区计数。虽然以上实例中描述了特定数据字段大小(例如,一个位)及数据字段位置,但本发明的实施例并不限于包含每一如此描述字段的那些字段或特定数据字段大小或位置且可包含额外或替代字段。当命令分派器正更新DDB时,输入信号(例如,“xfer_TAG”)变成所述DDB的地址指针且更新信号(例如,“update_ddb_en”)变成写入启用。仲裁器(例如,图3中的34 可为确定在特定时间可存取哪个通道的循环仲裁器。所述仲裁器搜索下一可用通道。所述仲裁器步进经过所述通道,从而尝试使选定的可用通道编号与特定DDB条目中的下一通道匹配。如果所述可用通道不匹配DDB条目,那么仲裁器继续以循环方式重复(如果必要的话)直到可找到选定的可用通道编号与特定DDB 条目中的下一通道之间的匹配为止。一旦找到匹配,所述仲裁器即起始通信协议以开始传送。在传送完成时,可用信号通知完成协议,更新DDB条目中的通道信息且所述仲裁器搜索下一可用通道。特定标签条目的现用通道字段992E (例如,寄存器)的N个位中的每一者对应于N 个通道中的相应一者。一旦通道可被视为可用于特定主机命令,即可设定与所述通道相关联的位。当通道完成针对给定主机命令向所述特定通道的传送时,可设定所述通道的命令完成状态,此又可对DDB条目的现用通道字段中的相应位进行复位。一旦对所述现用通道的所有位进行复位,即可向应用层发出主机命令的“完成”状态的指示符。接着,所述应用层可将主机命令的“完成”状态的指示符发送到主机。可在完成所述主机命令且已将所述 “完成”状态的指示符成功地发送到所述主机之后由硬件将条目的有效位清除(例如,V = 0),或可(举例来说)当在处理所述命令时存在错误时由FEP将其清除以指示DDB中的条目可用于从主机接收新命令。命令完成是基于后端通道指示所请求传送完成。根据本发明的一个或一个以上实施例,在跨越多个通道同时执行与多个命令相关联的读取操作期间,数据一准备就绪,DMA 即将所述数据从所述通道中的任一者传输到主机,而不管从所述主机接收所述命令的次序如何。可通过以由每一后端通道已至少部分地完成命令的次序而非以接收或起始所述命令的次序执行所述命令(例如,将从存储器装置读取的数据传送回到主机)来实质上增加存储器系统数据吞吐量。
举例来说,可由存储器系统从主机接收第一读取命令且可起始由所述存储器系统进行的执行,之后由所述存储器系统从所述主机接收第二读取命令且起始由所述存储器系统进行的所述第二读取命令的执行。然而,可首先完成所述第二读取命令。根据一个或一个以上实施例,可在可将由所述第一读取命令产生的数据返回到主机之前将由所述第二读取命令产生的数据返回到主机,而非等待所述第一读取命令的完成以便可首先将其数据返回到所述主机。举另一实例来说,可由存储器系统从主机接收第一读取命令,之后由所述存储器系统从所述主机接收第二读取命令。然而,为提高效率,存储器系统可重新排序所述命令 (例如,以先前所述的方式)且在执行第一读取命令之前执行第二读取命令,此导致所述第二读取命令在所述第一读取命令之前完成。根据一个或一个以上实施例,可在完成所述第二读取命令时将由所述第二读取命令产生的数据返回到主机(其可在可将由第一读取命令产生的数据返回到所述主机之前),而非等待第一读取命令的完成。在操作多个存储器装置时,可跨越不同通道分配与单个命令相关联的有效负载 (其若干部分具有使其彼此相关的某一顺序次序),例如,可将所述有效负载的第一部分存储于第一存储器装置中且可将所述有效负载的第二部分存储于第二存储器装置中等。因此,数据(例如,由读取命令产生的数据)的若干部分可不按顺序次序从不同存储器装置 (及相关联通道)返回到控制器的前端,例如,可在可从所述第一存储器装置检索所述第一部分之前从所述第二存储器装置检索所述第二部分。根据一个或一个以上实施例,当可支持DMA缓冲器偏移时,可不按顺序次序(以由相应后端通道完成命令的次序而非以所述部分相关的顺序次序)将所述部分传送回到主机。换句话说,将与单个命令相关联的有效负载的若干个部分存储(例如,驻存)于固态驱动器的数个存储器装置当中。所述有效负载的所述部分在形成所述有效负载时以特定次序彼此相关。单个读取命令可用以从数个存储器装置当中汇编所述有效负载,所述读取命令是相对于特定存储器位置适当定制的且分配到对应于数个存储器装置的数个通道中的每一者以从数个存储器装置中的每一者接收所述有效负载的相应部分。根据一个或一个以上实施例,所述部分由存储器系统控制器接收且当其被接收到时以可不同于所述有效负载的所述部分在形成所述有效负载时彼此相关的特定次序的次序发送到主机。换句话说, 所述有效负载的所述部分在发送到所述主机之前不重新汇编成所述有效负载,而是在所述有效负载的若干部分从数个存储器装置当中被接收到所述控制器时发送所述部分。根据本发明的一个或一个以上实施例,在跨越多个通道(例如,到对应的多个存储器装置)同时执行多个命令(例如,写入命令)的操作期间,DMA可在完成特定命令之后即刻将针对所述命令的命令完成状态的指示符发送到主机,此允许所述主机发送下一未决命令。在一个或一个以上实施例中,所述多个通道是异步通道,且命令(例如,主机命令) 执行可不以与从所述主机接收所述命令(相对于从所述主机接收的其它命令)相同的次序发生。举例来说,可由存储器系统从主机接收第一命令且由所述存储器系统起始其执行,之后由所述存储器系统从所述主机接收第二命令且由所述存储器系统起始其执行。然而,可由多个后端通道中的若干个后端通道首先完成第二读取命令。根据一个或一个以上实施例,可在将所述第一命令的完成状态的指示符发送到主机之前将所述第二命令的完成状态的指示符发送到主机,而非等待所述第一命令的完成以便可在可将所述第二命令的完成状态的指示符发送到所述主机之前将所述第一命令的完成状态的指示符发送到所述主机。举另一实例来说,(例如)存储器系统的存储器控制器从主机接收第一命令,之后由所述存储器控制器从所述主机接收第二命令。然而,所述存储器系统重新排序所述命令 (例如,以先前所述的方式)且在执行第一命令之前执行第二命令,此导致所述第二命令在所述第一命令之前完成。根据一个或一个以上实施例,可在将所述第一命令的完成状态的指示符发送到所述主机之前将所述第二命令的完成状态的指示符发送到所述主机,而非等待所述第一命令的完成以便可在可将所述第二命令的完成状态的指示符发送到所述主机之前将所述第一命令的完成状态的指示符发送到所述主机。Mrk本发明包含存储器控制器、存储器系统、固态驱动器及用于处理若干个命令的方法。在一个或一个以上实施例中,存储器控制器包含多个后端通道及通信地耦合到所述多个后端通道的命令队列(例如,图3中的386)。命令队列386可经配置以保持从主机接收的主机命令。电路经配置以至少响应于命令队列386中的主机命令中的若干个主机命令而产生若干个后端命令,且将所述若干个后端命令分配到所述多个后端通道中的若干个后端通道。本发明还包含用于存储器控制器的方法及装置。在一个或一个以上实施例中,存储器控制器包含多个后端通道及通信地耦合到所述多个后端通道的前端命令分派器。所述命令分派器通信地耦合到经配置以缓冲若干个命令的命令队列(例如,图3中的386)。所述命令分派器可经配置以确定待由所述若干个命令实现的对存储器的净改变且基于所述确定而修改所述若干个命令中的至少一者以优化所述若干个命令在所述多个后端通道当中的分配。在本发明的详细说明中,参考形成本发明的一部分的随附图式,且在随附图式中以图解说明方式展示可如何实践本发明的一个或一个以上实施例。足够详细地描述这些实施例旨在使所属领域的技术人员能够实践本发明的实施例,且应理解,可利用其它实施例且可在不背离本发明的范围的情况下做出过程、电或结构改变。如本文中所用,标示符“N”、“M”及“C”(尤其关于图式中的参考编号)指示若干个在本发明的一个或一个以上实施例的情况下可包含如此标示的特定特征。如将了解,可添加、交换及/或消除本文中的各种实施例中所示的元件以便提供本发明的若干个额外实施例。另外,如将了解,图中所提供的元件的比例及相对比例尺打算图解说明本发明的实施例且不应视为限定意义。将理解,当将第一元件称为“连接到”另一元件或“与另一元件耦合”时,打算所述元件是物理上附接到所述两个元件中的另一者。相比之下,当将元件称为“通信地耦合”时, 所述元件(包含但不限于)通过硬连线或无线信号路径彼此通信。将理解,当将一元件称为“在另一元件上”、“连接到另一元件”或“与另一元件耦合”时,所述元件可为直接在另一元件或层上、连接到另一元件或层或与另一元件或层耦合,或者可存在介入元件或层。相比之下,当将一元件称为“直接在另一元件或层上”、“直接连接到另一元件或层”或“直接与另一元件或层耦合”时,不存在介入元件或层。如本文中所用,术语“及/或”包含所列举相关联物项中的若干个物项的任何组合及所有组合。将理解,虽然术语第一、第二等在本文中可用以描述各种元件、组件、区域、层及/ 或区段,但这些元件、组件、区域、布线、层及区段不应受限于这些术语。这些术语仅用以区分一个元件、组件、区域、布线、层或区段与另一区域、层或区段。因此,在不背离本发明的教示内容的情况下,可将下文所论述的第一元件、组件、区域、布线、层或区段称作第二元件、 组件、区域、布线、层或区段。为便于说明,本文中可使用例如“在…下方”、“在…下面”、“下部”、“在…上面”、“上部”等空间相对术语来描述如图中所图解说明的一个元件或特征与另一(些)元件或特征的关系而非在空间上的绝对定向。将理解,所述空间相对术语打算囊括除图中所描绘的定向外的装置在使用或操作中的不同定向。举例来说,如果将图中的装置翻转,那么描述为 “在其它元件或特征下面”或“在其它元件或特征下方”的元件将定向为“在其它元件或特征上面”。因此,实例性术语“在…下面”可囊括在…上面的定向及在…下面的定向两者。装置可按其它方式定向(旋转90度或以其它定向)且可相应地解释本文中所用的空间相对描述语。本文中所用的术语仅是出于描述特定实施例的目的且并非打算限定本发明。如本文中所用,单数形式“一(a)”、“一(an)”及“所述(the) ”打算也包含复数形式,除非上下文另有明确指示。将进一步理解,当本说明书中使用术语“包括(comprises)”及“包括 (comprising)”时,其规定存在所陈述特征、整数、步骤、操作、元件或组件,但不排除存在或添加若干个其它特征、整数、步骤、操作、元件、组件或其群组。除非按其它方式定义,否则本文中所用的所有术语(包含技术及科学术语)具有与本发明所属领域的技术人员通常理解的意义相同的意义。将进一步理解,应将例如在常用的字典中所定义的那些术语等术语理解为具有与其在相关技术及本发明的上下文中的意义相一致的意义,且不应以理想化或过分形式化的意义来解释,除非本文中明确如此定义。本文中参考功能性框解说明来描述本发明的实施例,所述功能性框解说明是本发明的理想化实施例的示意性说明。因此,预期所述图解说明的形状会因(举例来说)制造技术及公差而发生变化。因此,本发明的实施例不应被解释为限于本文中所图解说明的区域的特定形状,而是将包含由(举例来说)制造所产生的形状偏差。举例来说,图解说明或描述为平坦的区域通常可具有粗糙或非线性特征。此外,可将所图解说明的锐角修圆。因此,所述图中所图解说明的区域在本质上是示意性的,且其形状及相对大小、厚度等并非打算图解说明区域的精确形状/大小/厚度且并非打算限定本发明的范围。虽然本文中已图解说明及描述了特定实施例,但所属领域的技术人员将了解,旨在实现相同结果的布置可替代所示的特定实施例。本发明打算涵盖本发明的一个或一个以上实施例的更改或变化形式。应理解,已以说明性方式而非限制性方式做出以上说明。在审阅以上说明之后,所属领域的技术人员将明了以上实施例的组合及本文中未具体描述的其它实施例。本发明的一个或一个以上实施例的范围包含其中使用以上结构及方法的其它应用。因此,应参考所附权利要求书连同授权此权利要求书的等效内容的全部范围来确定本发明的一个或一个以上实施例的范围。在前述实施方式中,出于简化本发明的目的将一些特征一起聚集于单个实施例中。本发明的此方法不应理解为反映本发明的所揭示实施例必须使用比每一权利要求中所明确陈述的特征更多的特征的意图。而是,如以上权利要求书反映发明性标的物在于少于单个所揭示实施例的所有特征。因此,特此将以上权利要求书并入到实施方式中,其中每一权利要求独立地作为单独实施例。
权利要求
1.一种存储器控制器,其包括多个后端通道;命令队列,其通信地耦合到所述多个后端通道,所述命令队列经配置以保持由主机传达的主机命令;及电路,其经配置以至少响应于所述命令队列中的所述主机命令中的若干个主机命令而产生若干个后端命令,及将所述若干个后端命令分配到所述多个后端通道中的若干个后端通道。
2.根据权利要求1所述的存储器控制器,其中所述若干个后端命令少于所述主机命令中的所述若干个主机命令。
3.根据权利要求1所述的存储器控制器,其中所述若干个后端命令多于所述主机命令中的所述若干个主机命令。
4.根据权利要求3所述的存储器控制器,其中所述电路经配置以响应于单个主机命令而产生对应于所述多个后端通道中的每一者的相应后端命令,及将所述相应后端命令分配到其对应后端通道,以便大致并行地处理所述后端命令。
5.根据权利要求4所述的存储器控制器,其中所述电路经配置以在完成所述多个后端命令中的特定一者之后即刻将来自执行所述多个后端命令中的所述特定一者的结果传达到所述主机,而不顾及所述多个后端命令中的任一其它者的执行的完成。
6.根据权利要求1到5中任一权利要求所述的存储器控制器,其中所述电路经配置以在不同的多个后端通道当中分配多个主机命令以便大致同时执行所述多个主机命令。
7.根据权利要求1到5中任一权利要求所述的存储器控制器,其中产生所述若干个后端命令包含修改所述若干个主机命令中的至少一者与删除所述若干个主机命令中的至少另一者的组合。
8.根据权利要求1到5中任一权利要求所述的存储器控制器,其中直接存储器存取模块DMA经配置以分配与对应于所产生的所述若干个后端命令的主机命令相关联的数据。
9.根据权利要求1到5中任一权利要求所述的存储器控制器,其中所述电路为命令分派器,所述命令分派器具有经配置以修改主机命令以便优化所述命令在所述多个后端通道当中的分配的命令处理器部分,及经配置以在所述多个后端通道当中分配所述经修改命令的分派器部分。
10.根据权利要求1到5中任一权利要求所述的存储器控制器,其中所述电路为通信地耦合到所述多个后端通道的前端处理器FEP,所述FEP经配置以修改主机命令以便优化所述命令在所述多个后端通道当中的分配。
11.一种存储器控制器,其包括多个后端通道;及前端命令分派器,其通信地耦合到所述多个后端通道及经配置以保持若干个读取命令的命令队列,其中所述命令分派器经配置以确定待由所述若干个读取命令实现的从存储器的净读取,且修改所述若干个读取命令中的一者或一者以上以优化所述若干个读取命令在所述多个后端通道当中的分配。
12.根据权利要求11所述的存储器控制器,其中所述前端命令分派器包含经配置以修改一个或一个以上命令以便优化所述命令在所述多个后端通道当中的分配的命令处理器部分,及经配置以在所述多个后端通道当中分配命令的分派器部分。
13.根据权利要求11所述的存储器控制器,其中所述前端命令分派器经配置以在硬件中执行主机命令完整性检查。
14.根据权利要求11到13中任一权利要求所述的存储器控制器,其包含通信地耦合到所述多个后端通道的前端处理器FEP,其中所述FEP经配置以确定待由所述若干个读取命令实现的从存储器的净读取,且修改所述若干个读取命令中的一者或一者以上以优化所述若干个读取命令在所述多个后端通道当中的分配。
15.一种存储器控制器,其包括多个后端通道;及前端命令分派器,其通信地耦合到所述多个后端通道及经配置以保持若干个写入命令的命令队列,其中所述命令分派器经配置以确定待由所述若干个写入命令实现的对存储器的净改变,且修改所述若干个写入命令中的一者或一者以上以优化所述若干个写入命令在所述多个后端通道当中的分配。
16.根据权利要求15所述的存储器控制器,其中所述命令分派器经配置以修改所述若干个写入命令中的所述一者或一者以上以仅在所述多个后端通道为繁忙时优化分配。
17.根据权利要求15所述的存储器控制器,其中所述命令分派器经配置以不分配来自所述命令队列的所述若干个写入命令中的不改变由所述若干个写入命令对存储器的所述所确定的净改变的一个写入命令。
18.根据权利要求17所述的存储器控制器,其中所述命令分派器经配置以将与所述命令队列中的第一写入命令相关联的存储器范围修改为包含所述命令队列中的第二写入命令的所述存储器范围的一部分,且此后不分配来自所述命令队列的不改变由所述若干个写入命令对存储器的所述所确定的净改变的所述第二写入命令。
19.根据权利要求15到18中任一权利要求所述的存储器控制器,其中所述若干个写入命令是按初始次序在所述命令队列中接收的,且所述命令分派器经配置以将所述命令队列中的所述若干个写入命令的次序从所述初始次序改变为经改变次序。
20.根据权利要求19所述的存储器控制器,其中所述命令分派器经配置以根据所述命令队列中的所述若干个写入命令的所述经改变次序而非根据所述初始次序来分配命令。
21.根据权利要求15到18中任一权利要求所述的存储器控制器,其中所述命令分派器经配置以通过将命令组合到重叠的存储器位置来修改所述命令队列中的所述若干个写入命令中的至少一者。
22.根据权利要求21所述的存储器控制器,其中所述命令分派器经配置以响应于所述若干个写入命令中的至少一者被修改而将所述命令队列中的所述若干个写入命令的次序改变为经改变次序。
23.根据权利要求21所述的存储器控制器,其中所述命令分派器经配置以不分配经确定为涉及将由所述命令队列中随后将执行的写入命令盖写的若干个存储器位置的写入命令。
24.根据权利要求21所述的存储器控制器,其中所述命令分派器经配置以不执行经确定为在无涉及将由随后执行的写入命令盖写的所述若干个存储器位置的介入读取操作的情况下涉及所述若干个存储器位置的写入命令。
25.根据权利要求21所述的存储器控制器,其中所述命令分派器经配置以将多个写入命令聚集成单个写入命令。
26.根据权利要求25所述的存储器控制器,其中所述命令分派器经配置以确定至少两个写入命令为涉及逻辑上邻近的存储器位置的同一操作,且将所述至少两个写入命令组合成涉及所述逻辑上邻近的存储器位置的单个写入命令。
27.根据权利要求25所述的存储器控制器,其中所述命令分派器经配置以确定至少两个写入命令为涉及逻辑上重叠的存储器位置的同一操作,且将所述至少两个写入命令组合成涉及所述逻辑上重叠的存储器位置的单个写入命令。
28.根据权利要求15到18中任一权利要求所述的存储器控制器,其中与特定写入命令相关联的有效负载是在所述多个后端通道中的一者以上当中分配的,且所述命令分派器经配置以将所述特定写入命令分配到所述多个后端通道中的所述一者以上中的每一者。
29.根据权利要求观所述的存储器控制器,其中所述命令分派器经配置以确定所述有效负载的与所述多个后端通道中的所述一者以上中的每一者相关联的一部分的相关联的逻辑块地址及扇区计数,且修改分配到具有所述有效负载的所述相关联的部分的所述逻辑块地址及扇区计数的相应后端通道的所述特定写入命令。
30.根据权利要求15到18中任一权利要求所述的存储器控制器,其中所述命令分派器经配置以在防止所述命令分派器将命令分配到所述多个后端通道时的时间期间修改所述命令队列中的写入命令。
31.一种存储器系统,其包括若干个存储器装置;及控制器,其具有前端直接存储器存取模块DMA及通信地耦合于所述若干个存储器装置中的相应一者与所述前端DMA之间的若干个后端通道;所述前端DMA经配置以处理与由主机传达的单个主机命令相关联的有效负载,其中所述有效负载的相应部分与正跨越所述若干个后端通道大致同时执行的对应的多个后端命令相关联。
32.根据权利要求31所述的存储器系统,其中所述单个主机命令为写入命令,且所述前端DMA经配置以在所述若干个后端通道中的对应于所述多个后端命令的一个以上后端通道当中分配与所述单个主机命令相关联的所述有效负载。
33.根据权利要求31所述的存储器系统,其中所述单个主机命令为读取命令,且所述前端DMA经配置以从所述若干个后端通道中的对应于所述多个后端命令的一个以上后端通道当中汇编与所述单个主机命令相关联的有效负载。
34.根据权利要求31所述的存储器系统,其中所述前端DMA经配置以确定所述有效负载的与所述多个后端命令中的每一者相关联的每一相应部分的逻辑块地址及扇区计数,其中所述多个后端命令中的每一者模拟所述主机命令但具有对应于所述若干个后端通道中的相应一者的经修改的相应逻辑块地址及扇区计数。
35.根据权利要求31到34中任一权利要求所述的存储器系统,其中所述前端DMA经配置以按一次序将所述有效负载的与所述多个后端命令相关联的部分传达到主机,所述次序不同于在所述主机命令已由单个后端通道执行的情况下所述主机命令原本会产生所述有效负载的次序。
36.根据权利要求35所述的存储器系统,其中所述前端DMA经配置以按从所述多个后端通道接收所述有效负载的与所述多个后端命令相关联的部分的次序来传达所述部分。
37.根据权利要求31到34中任一权利要求所述的存储器系统,其中所述前端DMA经配置以按不同于由所述主机传达主机命令的次序的次序将命令完成状态的指示符传达到所述主机。
38.根据权利要求37所述的存储器系统,其中所述前端DMA经配置以按由所述若干个后端通道完成后端命令的次序将命令完成状态的指示符传达到所述主机。
39.根据权利要求31到34中任一权利要求所述的存储器系统,其中所述部分中的每一者对应于特定后端通道,且其中所述前端DMA经配置以将所述部分中的每一者与其它部分分开地个别地传达到所述主机。
40.根据权利要求39所述的存储器系统,其中所述前端DMA经配置以在从所述若干个后端通道中的一者接收到所述部分中的一者之后且在不将所述部分汇编成与所述单个主机命令相关联的完整有效负载的情况下即刻将所述相应部分传达到所述主机。
41.根据权利要求40所述的存储器系统,其中所述单个主机命令为读取命令且所述部分中的每一者与不同的后端通道相关联。
42.根据权利要求40所述的存储器系统,其中所述前端DMA经配置以在所述若干个后端通道中的一者完成处理与其相关联的所述部分时将所述部分中的每一者传达到所述主机。
43.根据权利要求31到34中任一权利要求所述的存储器系统,其中所述单个主机命令是作为第一次序的主机命令的一部分在所述前端DMA处接收的写入命令,所述主机命令是按第二次序完成的,且所述前端DMA经配置以根据所述第二次序将所述单个主机命令的命令完成状态的指示符传达到所述主机。
44.一种固态驱动器,其包括 多个快闪存储器装置;存储器控制器,其包括多个后端通道,每一后端通道通信地耦合到所述多个存储器装置中的若干个存储器装置;前端直接存储器存取DMA,其通信地耦合到所述多个后端通道;前端命令分派器,其通信地耦合到具有经配置以保持若干个命令的命令队列的所述DMA ;其中所述命令分派器经配置以基于当时保持于所述命令队列中的所述若干个命令而处理命令以优化其在所述多个后端通道当中的分配,且所述前端DMA经配置以处理与涉及所述多个后端通道中的一者以上的至少一个命令相关联的相应有效负载。
45.根据权利要求44所述的固态驱动器,其包含通信地耦合到所述存储器控制器的串行高级技术附件SATA接口,所述SATA接口经配置以与主机通信。
46.根据权利要求44所述的固态驱动器,其中所述多个后端通道中的每一者通信地耦合到所述多个存储器装置中的相应一者。
47.根据权利要求46所述的固态驱动器,其中所述多个快闪存储器装置包括八个NAND 快闪存储器装置,且其中所述多个后端通道包括八个后端通道。
48.根据权利要求44到47中任一权利要求所述的固态驱动器,其中所述命令分派器经配置以通过选择性地重新排序命令、选择性地组合命令及/或选择性地删除命令而在所述控制器的前端上处理命令以优化其到所述控制器的后端的分配。
49.根据权利要求48所述的固态驱动器,其中所述多个后端通道中的每一者经配置以通过选择性地重新排序所接收的命令、选择性地组合所接收的命令及/或选择性地删除命令而进一步处理分别接收的命令以加快所述分别接收的命令的执行。
50.一种在于多个后端通道当中分配若干个命令之前处理所述若干个命令的方法,其包括按一次序从主机接收若干个命令;处理所述若干个命令以改进前端吞吐量,所述处理包括重新排序所述命令;将多个命令组合成单个命令;及/或删除涉及一存储器位置的命令,所述存储器位置经确定为在无涉及所述存储器位置的介入操作的情况下由随后执行的命令盖写,其中将所述若干个命令中的至少一者分配到一个以上后端通道。
51.根据权利要求50所述的方法,其中所述处理仅在所述后端通道为繁忙时发生。
52.根据权利要求50所述的方法,其中所述重新排序是至少部分地响应于组合命令或删除命令。
53.根据权利要求50到52中任一权利要求所述的方法,其中组合多个命令包含将涉及邻近存储器位置的命令聚集成单个命令。
54.根据权利要求50到52中任一权利要求所述的方法,其中组合多个命令包含将涉及若干个相同存储器位置的命令聚集成单个命令。
55.根据权利要求50到52中任一权利要求所述的方法,其中组合命令包含将涉及特定存储器装置上的连续存储器位置的命令合并成单个命令。
56.根据权利要求50到52中任一权利要求所述的方法,其中组合命令包含将涉及特定存储器装置上的重叠的存储器位置的命令合并成单个命令。
57.根据权利要求50到52中任一权利要求所述的方法,其中所述处理包含针对所述若干个命令中的所述至少一者确定与所述若干个命令中的所述至少一者相关联的有效负载的每一部分的相应逻辑块地址及扇区计数,并修改所述若干个命令中的分配到具有所述相应逻辑块地址及扇区计数的特定后端通道的所述至少一个命令。
58.一种处理若干个命令的方法,其包括按一次序从主机接收若干个命令;处理与涉及多个后端通道中的一者以上的有效负载相关联的至少一个命令。
59.根据权利要求58所述的方法,其包含在所述多个后端通道中的一者以上当中分配与所述至少一个命令相关联的所述有效负载,其中所述至少一个命令为写入命令。
60.根据权利要求58所述的方法,其包含从所述多个后端通道中的一者以上汇编与所述至少一个命令相关联的所述有效负载,其中所述至少一个命令为读取命令。
61.根据权利要求58所述的方法,其包含确定涉及所述多个后端通道中的与所述至少一个命令相关联的相应一者的所述有效负载的每一部分的相关联的逻辑块地址及扇区计数;及修改分配到具有所述相应后端通道特有的所述所确定的逻辑块地址及扇区计数的所述相应后端通道的所述至少一个命令。
62.根据权利要求58所述的方法,其包含从所述后端通道接收与所述若干个命令中的一者相关联的有效负载;及根据不同于曾由所述主机传达所述若干个命令的所述次序的次序将所述所接收的有效负载传达到所述主机。
63.根据权利要求58到62中任一权利要求所述的方法,其包含将从所述后端通道中的一者接收的所述有效负载的一部分传达到所述主机,而不等待从所述后端通道中的另一者接收所述有效负载的另一部分。
64.根据权利要求63所述的方法,其包含在不重新汇编所述有效负载的情况下将从所述后端通道中的所述一者接收的所述有效负载的所述部分传达到所述主机。
65.根据权利要求58到62中任一权利要求所述的方法,其包含在完成所述若干个命令中的特定命令时且与曾由所述主机传达所述命令的所述次序无关地将所述特定命令的完成状态的指示符传达到所述主机。
66.根据权利要求65所述的方法,其包含在接收所述特定命令之前接收第一命令;将所述第一命令分配到第一后端通道;将所述特定命令分配到第二后端通道;及在完成所述特定命令之后且不管所述第一命令的完成如何,即刻将所述特定命令的所述完成状态的所述指示符传达到所述主机。
67.根据权利要求58到62中任一权利要求所述的方法,其包含在于所述多个后端通道当中分配所述若干个命令之前处理所述若干个命令以改进前端吞吐量,所述命令处理包含以下各项中的一者或一者以上重新排序所述命令;组合多个命令;及/或删除命令。
68.根据权利要求67所述的方法,其包含在所述多个后端通道中的一者以上当中分配与至少一个经组合命令相关联的所述有效负载,其中正被组合的命令使其有效负载的至少一部分涉及所述多个后端通道中的特定一者。
全文摘要
本发明包含用于存储器控制器的方法及装置。在一个或一个以上实施例中,一种存储器控制器包含多个后端通道及通信地耦合到所述多个后端通道的命令队列。所述命令队列经配置以保持从主机接收的主机命令。电路经配置以至少响应于所述命令队列中的所述主机命令中的若干个主机命令而产生若干个后端命令,且将所述若干个后端命令分配到所述多个后端通道中的若干个后端通道。
文档编号G06F3/06GK102439576SQ201080022747
公开日2012年5月2日 申请日期2010年3月11日 优先权日2009年4月9日
发明者廖玉松, 杨芮尧, 西亚麦克·内马齐, 迈赫迪·阿斯纳阿沙里 申请人:美光科技公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1