用于数据存储装置的命令及中断分组的制作方法

文档序号:6349127阅读:112来源:国知局
专利名称:用于数据存储装置的命令及中断分组的制作方法
技术领域
本说明涉及数据存储装置的命令及中断分组。
背景技术
可使用数据存储装置来存储数据。数据存储装置可与计算装置一同使用以提供所述计算装置的数据存储需要。在某些实例中,可期望在数据存储装置上存储大量数据。此外,可期望快速地执行从所述数据存储装置读取数据及向所述数据存储装置写入数据的命令。所述数据存储装置上的所述命令执行的吞吐量可与可由所述数据存储装置处理的命令的数目相关。可期望通过增加可由所述数据存储装置处理的命令的数目来实现所述数据存储装置的高吞吐量。除快速地执行所述命令以外,还可期望准确地执行所述命令,使得将数据错误最小化及/或至少可在对数据吞吐量具有最小影响的情况下校正所述数据错误。此外,可期望在所述数据存储装置上执行从所述主机接收的命令,同时最小化对主机的影响及主机上的开销。

发明内容
本文件描述一种主机,其具有将命令指定为群组的部分以由数据存储装置处理的驱动器。当所述数据存储装置完成所述群组中的所有所述命令的所述处理时,所述数据存储装置将单个中断发送回到所述主机以指示所述命令群组的所述处理完成。举例来说,一个或一个以上命令线程可由所述驱动器指定为群组。当所述数据存储装置完成所述命令线程时,所述数据存储装置产生单个中断并将所述单个中断发送到所述主机以指示那些经分组命令的所述处理完成。通过将命令指定为群组的部分且在所述命令的所述处理完成时将单个中断发送到所述主机,可最小化对所述主机的影响。以此方式,所述主机可花费较少时间来处理中断且可将较多时间投入到执行其它任务。此外,在一些实例中,所述主机可不能够使用所述数据中的任一者,直到已处理所述群组中的所有所述命令为止。在这些实例中,当已处理少于所述群组中的所有所述命令时通知所述主机可没用。在一个示范性实施方案中,所述主机处的所述驱动器可确定如何将所述命令分组。所述驱动器可基于某些准则将所述命令分组。举例来说,所述驱动器可基于来自与所述驱动器介接的应用程序的所要动作的大小来将所述命令分组。以此方式,所述驱动器可将为来自介接的应用程序的大输入/输出请求的一部分的命令分组在一起。因此,即使当操作系统可将所述大输入/输出请求破分成多个命令以执行所述请求时,所述驱动器也可将所述命令分组在一起。在另一实例中,所述驱动器可基于命令为相同线程的部分来将所述命令分组。所述数据存储装置可包括多个存储器装置及一控制器。所述控制器可经配置以从所述主机接收命令且使用所述多个存储器装置来处理所述命令。当所述控制器接收到来自所述主机的被识别为群组的部分的命令时,则所述控制器可使用所述存储器装置来处理这些命令且仅在已处理所述群组中的所有所述命令时产生单个中断并将所述单个中断发送回到所述主机。以此方式,不针对所述群组中的每一命令或所述群组中的命令子组产生中断。而是,针对整个命令群组产生单个中断。所述控制器可包括经布置及配置以追踪经分组命令的中断处理器。所述中断处理器可经配置以在来自多个命令群组的命令正由所述控制器使用所述存储器装置处理时追踪所述多个群组。在一个示范性实施方案中,所述命令包括命令标头且群组编号由所述驱动器插入到所述命令标头中使得可由所述中断处理器来追踪所述命令。所述命令标头还包括旗标,所述旗标可由所述驱动器设定以指示命令为所述群组中的最后命令。所述中断处理器可经配置以辨识所述最后命令旗标,所述最后命令旗标可充当在所述命令已完成处理时产生所述单个中断的指示符。在一个示范性实施方案中,所述控制器可包括用于对来自主机的命令进行追踪、 排序、排队及处理以在数据存储装置上执行的命令处理器。所述命令处理器可经布置及配置以通过给来自所述主机的传入命令中的每一者指派全局时隙识别符来追踪所述命令且使用基于所述命令的年龄的有序列表来对所述命令进行排队及排序。所述命令处理器可经配置以针对指定给同一存储位置的命令维持如从主机接收的命令次序。所述命令处理器还可经配置以针对指定给不同存储位置的命令无序地取命令。以此方式,在维持次序重要的情况下将命令的次序维持为如从主机接收的次序。同时,所述命令处理器通过针对指定给不同存储位置的命令无序地取命令来保持所有存储位置实质忙碌。所述命令处理器使得能够通过在命令队列中具有指定命令的实质所有存储位置并行地处理命令。当所述命令处理器在所有个别命令正在被处理时对其进行追踪时,所述中断处理器可追踪为命令群组的部分的命令。以此方式,所述控制器可以非邻接方式来处理命令,其中包括为命令群组的部分的命令。在产生单个中断并将所述单个中断发送到主机之前,所述中断处理器将等待,直到处理群组中的所有命令为止。此使得所述命令处理器能够继续命令的并行处理,且同时减少主机用来处理可原本已从数据存储装置发送的不必要中断的开销及时间。在一个示范性实施方案中,数据存储装置可包括经布置及配置以控制与一个或一个以上存储器芯片相关联的操作的多个通道控制器。所述存储器芯片可包括快闪存储器芯片。在一个示范性实施方案中,所述命令处理器、所述中断处理器及所述通道控制器可实施为现场可编程门阵列(FPGA)控制器的部分,其中所述FPGA控制器可为数据存储装置的一部分。所述数据存储装置可包括一个或一个以上存储器板,其中所述存储器板中的每一者包括多个存储器装置。在一个示范性实施方案中,所述存储器板中的每一者可包括多个快闪存储器芯片。所述存储器板可包括多个通道,可将所述快闪存储器芯片中的一者或一者以上指派给所述通道中的每一者。所述数据存储装置可包括所述存储器板可操作地连接到的控制器板。所述数据存储装置可经配置以使用接口与主机进行通信以从所述主机接收命令且使用所述快闪存储器芯片来处理这些命令。举例来说,所述主机可发送且所述控制器板可接收用以使用所述快闪存储器芯片读取、写入、拷贝及擦除数据块的命令。在一个示范性实施方案中,所述控制器包括现场可编程门阵列(FPGA)控制器且所述主机与所述控制器板之间的接口可为高速接口,例如(举例来说)外围组件互连高速 (PCIe)接口。以此方式,所述数据存储装置可包括高存储体积且可经配置以实现所述主机与所述快闪存储器芯片之间的数据传送的高性能及高速度。在一个示范性实施方案中,所述数据存储装置可经配置而具有两个存储器板,其中所述存储器板中的每一者包括多个快闪存储器芯片。包括所述控制器板及两个存储器板的所述数据存储装置可以磁盘驱动器形式配置,使得所述数据存储装置装配于计算装置的板上驱动槽中。举例来说,所述数据存储装置可经配置以装配于服务器的板上驱动槽中以为所述服务器提供数据存储容量。所述数据存储装置可经配置而为可抽换的,使得其可容易地从所述计算装置移除且插入于不同计算装置的板上驱动槽中。在其它示范性实施方案中,所述存储器板中的每一者可包括除快闪存储器芯片以外的存储器装置。举例来说,所述存储器板中的每一者可包括多个动态随机存取存储器 (DRAM)芯片。以上文关于快闪存储器芯片所描述的相同方式,所述命令处理器及中断处理器可经配置以处理从所述主机接收的作为群组的命令且在已使用所述DRAM芯片处理所述命令时产生单个中断并将所述单个中断发送回到所述主机。在其它示范性实施方案中,所述存储器板可包括其它类型的存储器装置,其中包括(举例来说)相变存储器(PCM)芯片及其它类型的存储器装置。根据一个一般方面,一种数据存储装置可包括多个存储器芯片及一控制器,所述控制器可操作地耦合到所述存储器芯片且经布置及配置以从主机接收命令群组,其中所述群组中的所述命令中的每一者包括相同群组编号以将所述命令识别为所述群组的部分; 使用所述存储器芯片来处理所述命令的所述群组;及在所述命令的所述群组完成处理时产生单个中断并将所述单个中断发送到所述主机。实施方案可包括以下特征中的一者或一者以上。举例来说,所述控制器可经配置以从所述主机接收多个命令群组,其中所述命令中的每一者包括群组编号以将所述命令识别为所述群组中的一者的部分;使用所述存储器芯片来处理所述命令的所述群组;及在所述命令的所述群组中的每一者完成处理时针对所述群组中的每一者产生单个中断并将所述单个中断发送到所述主机。所述控制器可经配置以使用所述存储器芯片按非邻接次序来处理所述命令的所述群组。所述命令中的每一者可包括命令标头且所述命令标头包括所述群组编号。所述命令的所述群组中的最后命令可包括命令标头中的用以向所述控制器指示所述最后命令的旗标。所述群组编号可将所述命令中的每一者识别为所述群组的部分而不使用所述命令中的指针来指向所述群组中的下一命令的。所述控制器可包括中断处理器,所述中断处理器经布置及配置以在所述命令由所述控制器处理时追踪所述命令的所述群组,且在所述命令的所述群组完成处理时产生所述单个中断并将所述单个中断发送到所述主机。所述中断处理器可包括多个计数器,其中所述计数器中的每一者被指派给由所述控制器接收的不同命令群组。所述中断处理器可包括多个不同中断机制。一个以上中断机制可在相同时间启用。所述中断机制可包括水印中断机制、超时中断机制及群组中断机制。在一个示范性实施方案中,所述存储器芯片可为快闪存储器芯片,且所述控制器可为现场可编程门阵列(FPGA)控制器。所述数据存储装置可包括存储器板,在所述存储器板上所述快闪存储器芯片可布置及配置成多个通道,其中所述通道中的每一者与所述快闪存储器芯片中的一者或一者以上相关联;及控制器板,其可操作地连接到所述存储器板。 所述控制器板可包括高速接口 ;及所述控制器,其可经布置及配置以使用所述高速接口从所述主机接收所述命令。在另一一般方面中,一种用于在具有多个存储器芯片的数据存储装置上处理命令群组的方法可包括从主机接收命令群组,其中所述群组中的所述命令中的每一者包括相同群组编号以将所述命令识别为所述群组的部分;使用多个存储器芯片来处理所述命令群组;及在所述命令的所述群组完成处理时产生单个中断并将所述单个中断发送到所述主机。实施方案可包括以下特征中的一者或一者以上。举例来说,从所述主机接收所述命令的所述群组可包括从所述主机接收多个命令群组,其中所述命令中的每一者包括群组编号以将所述命令识别为所述群组中的一者的部分;处理所述命令的所述群组可包括使用所述存储器芯片来处理所述命令的所述群组;且产生并发送所述单个中断可包括在所述群组中的每一者完成处理时针对所述群组中的每一者产生单个中断并将所述单个中断发送到所述主机。处理所述命令的所述群组可包括使用所述存储器芯片按非邻接次序来处理所述命令的所述群组。在另一一般方面中,一种用于在控制器中追踪命令的设备可包括多个群组计数器,其中所述群组计数器中的每一者经配置以通过以下方式来追踪正由控制器处理的命令群组在所述群组中的命令开始由所述控制器处理时递增且在所述群组中的命令完成处理时递减;及中断发送逻辑,其可操作地耦合到所述群组计数器且经布置及配置以在群组中的所有所述命令完成处理时针对所述群组计数器中的每一者产生并发送单个中断。实施方案可包括以下特征中的一者或一者以上。举例来说,同一群组中的所述命令中的每一者可由相同群组编号来识别。所述多个群组计数器可经配置以在正由所述群组计数器中的一者追踪的命令开始处理时接收用以递增所述群组计数器的信号。所述多个群组计数器可经配置以在正由所述群组计数器中的一者追踪的命令完成处理时接收用以递减所述群组计数器的信号。所述中断发送逻辑可经配置以在群组中的最后命令开始处理且与最终命令相关联的所述群组计数器递减到零时产生并发送所述单个中断。在另一一般方面中,一种用于在控制器中追踪命令的方法可包括在命令群组中的命令开始处理时递增群组计数器;在所述命令群组中的命令完成处理时递减所述群组计数器;及在所述群组中的所有所述命令完成处理时针对所述命令群组产生并发送单个中断。实施方案可包括以下特征中的一者或一者以上。举例来说,产生并发送所述单个中断可包括在所述群组中的最后命令开始处理且所述群组计数器递减到零时产生并发送所述单个中断。在另一一般方面中,一种系统可包括数据存储装置,其包括多个存储器芯片及用于在主机与所述多个存储器芯片之间传递数据的多个物理通道,每一通道可操作地连接到不同多个所述存储器芯片;及主机,其使用接口可操作地耦合到所述数据存储装置。所述主机可包括驱动器,所述驱动器经配置以将命令发送到所述数据存储装置以由所述数据存储装置使用所述多个存储器芯片来进行处理;将所述命令分组成一个或一个以上不同群组且给群组中的所述命令中的每一者指派一群组编号;及标记群组中的最后命令。实施方案可包括以下特征中的一者或一者以上。举例来说,所述数据存储装置可经配置以在处理所述群组中的所述命令之后产生单个中断并将所述单个中断发送到所述主机。所述多个存储器芯片可包括快闪存储器芯片。所述驱动器可经配置以追踪群组编号的使用。所述数据存储装置可经配置以使用所述多个存储器芯片按非邻接次序来处理所述命令的群组。所述主机可经配置以在所述数据存储装置上启用一个或一个以上中断机制。所述中断机制可包括水印中断机制、超时中断机制及群组中断机制。在附图及下文说明中阐述一个或一个以上实施方案的细节。从所述说明及图式且从权利要求书将明了其它特征。


图1是主机及数据存储装置的示范性框图。图2是中断处理器的示范性框图。图3是数据存储装置的命令处理器的示范性框图。图4是未决命令模块的示范性框图。图5是所述数据存储装置的印刷电路板的示范性透视框图。图6是与图1的数据存储装置一同使用的示范性计算装置的示范性框图。图7是图解说明用于在数据存储装置上处理命令群组的过程的示范性流程图。图8是图解说明用于在控制器中追踪命令的过程的示范性流程图。
具体实施例方式本文件描述用于在主机处将命令分组及在数据存储装置中处理所述命令的设备、 系统及技术。所述主机可确定待将哪些命令分组在一起且可提供哪些命令在同一群组中的指示。举例来说,所述主机可指派群组编号并将所述群组编号插入到为群组的部分的每一命令的命令标头中。所述数据存储装置可包括控制器,所述控制器具有经配置以追踪所述命令的处理的中断处理器。当所述数据存储装置完成所述群组中的所有命令的处理时,所述中断处理器产生单个中断并将所述单个中断发送回到所述主机以指示所述命令群组的处理完成。参照图1,其图解说明用于处理并追踪群组中的命令的系统的框图。图1图解说明数据存储装置100及主机106的框图。数据存储装置100可包括控制器板102及一个或一个以上存储器板10 及104b。数据存储装置100可经由接口 108与主机106进行通信。 接口 108可在主机106与控制器板102之间。控制器板102可包括控制器110、DRAM 111、多个通道112、电力模块114及存储器模块116。控制器110可包括命令处理器122及中断处理器124以及其它组件,所述其它组件未展示。存储器板10 及104b可包括所述存储器板中的每一者上的多个快闪存储器芯片118a及118b。存储器板10 及104b还可分别包括存储器装置120a及120b。主机106可包括驱动器107、操作系统109及一个或一个以上应用程序113。一般来说,主机106可产生待在数据存储装置100上执行的命令。举例来说,应用程序113可经配置以产生命令以在数据存储装置100上执行。应用程序113可为可操作地耦合到操作系统109及/或驱动器107。应用程序113可产生所述命令且将所述命令传递到操作系统 109。操作系统109可为可操作地耦合到驱动器107,其中驱动器107可充当主机106与数据存储装置100之间的接口。一般来说,数据存储装置100可经配置以将数据存储于快闪存储器芯片118a及 118b上。主机106可将数据写入到快闪存储器芯片118a及118b及从快闪存储器芯片118a 及118b读取数据,并且引起将关于快闪存储器芯片118a及118b执行的其它操作。可经由控制器板102上的控制器110来处理且由控制器110来控制主机106与快闪存储器芯片 118a及11 之间的数据读取及写入以及其它操作。控制器110可从主机106接收命令且致使使用命令处理器122以及存储器板10 及104b上的快闪存储器芯片118a及11 来执行这些命令。主机106与控制器110之间的通信可经由接口 108。控制器110可使用通道112来与快闪存储器芯片118a及118b进行通信。控制器板102可包括DRAM 111。DRAM 111可为可操作地耦合到控制器110且可用以存储信息。举例来说,DRAM 111可用以存储逻辑地址到物理地址映射及坏块信息。DRAM 111还可经配置以用作主机106与快闪存储器芯片118a及11 之间的缓冲器。在一个示范性实施方案中,控制器板102以及存储器板10 及104b中的每一者为物理上单独的印刷电路板(PCB)。存储器板10 可在可操作地连接到控制器板102 PCB 的一个PCB上。举例来说,存储器板10 可物理及/或电连接到控制器板102。类似地, 存储器板104b可为与存储器板10 分开的PCB且可为可操作地连接到控制器板102PCB。 举例来说,存储器板104b可物理及/或电连接到控制器板102。存储器板10 及104b每一者可单独地与控制器板102断开及从控制器板102移除。举例来说,存储器板10 可从控制器板102断开且由另一存储器板(未展示)替换,其中所述另一存储器板可操作地连接到控制器板102。在此实例中,可用其它存储器板换出存储器板10 及104b中的任一者或两者,使得所述其它存储器板可与同一控制器板102及控制器110 —同操作。在一个示范性实施方案中,控制器板102以及存储器板10 及104b中的每一者可以磁盘驱动器形状因数物理连接。所述磁盘驱动器形状因数可包括不同大小,例如(举例来说)3. 5"磁盘驱动器形状因数及2. 5"磁盘驱动器形状因数。在一个示范性实施方案中,控制器板102以及存储器板10 及104b中的每一者可使用高密度球栅阵列(BGA)连接器电连接。可使用BGA连接器的其它变化形式,其中包括 (举例来说)细球栅阵列(FBGA)连接器、超细球栅阵列(UBGA)连接器及微球栅阵列(MBGA)
1连接器。也可使用其它类型的电连接构件。在一个示范性实施方案中,存储器芯片118a到118η可包括快闪存储器芯片。在另一示范性实施方案中,存储器芯片118a到118η可包括DRAM芯片或快闪存储器芯片与DRAM 芯片的组合。存储器芯片118a到118η也可包括其它类型的存储器芯片。在一个示范性实施方案中,使用驱动器107及数据存储装置100的主机106可使用主机存储器中缓冲器对来传递命令及响应。术语“缓冲器”与“队列”在本文件通篇中可互换使用。举例来说,命令缓冲器119可用于命令且响应缓冲器123可用于对所述命令的响应或结果。在一个示范性实施方案中,所述命令及结果可为相对小的固定大小块。举例来说,所述命令可为32个字节且所述结果或响应可为8个字节。在其它示范性实施方案中,可使用其它大小的块,其中包括可变大小块。可使用标签来将所述结果与所述命令匹配。以此方式,数据存储装置100可无序地完成命令。尽管图1图解说明一个命令缓冲器119及一个响应缓冲器123,但可使用多个缓冲器对。举例来说,可使用多达32个缓冲器对且包括32个缓冲器对在内。在一个示范性实施方案中,数据存储装置100可以循环方式服务于命令缓冲器119,其中数据存储装置100 可一次从命令缓冲器119检索固定数目个命令。响应缓冲器123可包括其自己的中断及中断参数。在一个示范性实施方案中,每一命令可指一个存储器页(例如,一个快闪页)、一个擦除块或一个存储器芯片,此取决于所述命令。传送数据的每一命令可包括一个4Κ直接存储器存取(DMA)缓冲器。可通过发送多个命令来实施较大操作。驱动器107可经布置及配置以将多个命令的单个操作分组在一起,使得数据存储装置100使用快闪存储器芯片 118a及118b处理所述命令且在已处理所述多个经分组命令时产生单个中断并将所述单个中断发送回到主机106。在一个示范性实施方案中,命令缓冲器119及响应缓冲器123每一者包括头指针及尾指针。可在尾指针处插入命令及响应且在头指针处移除。主机106可为命令缓冲器 119的生产者及响应缓冲器123的消费者。数据存储装置100可为命令缓冲器119的消费者及响应缓冲器123的生产者。主机106可写入命令尾指针及响应头指针且可读取命令头指针及响应尾指针。数据存储装置100可写入命令头指针及响应尾指针且可读取命令尾指针及响应头指针。在数据存储装置100中,控制器110可执行读取及写入动作。更特定来说,命令处理器122可经配置以执行针对数据存储装置100的读取及写入动作。除头及尾指针以外,主机106与数据存储装置100之间可不需要其它同步。在一个示范性实施方案中,出于性能原因,可将命令头指针及响应尾指针存储于主机106中(例如,主机RAM中)。可将命令尾指针及响应头指针存储于数据存储装置100 中控制器110内的存储器映射I/O空间中。命令缓冲器119及响应缓冲器123可为命令或响应大小的任意倍数,且驱动器107 及数据存储装置100可视需要自由地投送及处理命令及结果,只要其不超限运行命令缓冲器119及响应缓冲器123。在一个实施方案中,命令缓冲器119及响应缓冲器123为环形缓冲器,其使得能够在主机106与数据存储装置100之间进行流控制。在一个示范性实施方案中,主机106可确定命令缓冲器119及响应缓冲器123的大小。所述缓冲器可大于数据存储装置100可在内部排队的命令的数目。
主机106可将命令写入到命令缓冲器119且更新命令尾指针以向数据存储装置 100及数据存储装置100内的命令处理器122指示存在新命令。命令尾指针的写入用信号通知命令处理器122存在新命令。命令处理器122经配置以使用DMA操作从命令缓冲器 119读取所述命令且经配置以使用另一 DMA操作更新头指针以向主机106指示命令处理器 122已接收到所述命令。当命令处理器122完成所述命令时,命令处理器122使用DMA操作写入响应且用另一 DMA操作更新响应尾指针以指示所述命令完成。中断处理器IM经配置以在响应缓冲器123中新响应可用时用信号通知主机106中断。主机106经配置以从响应缓冲器123读取所述响应且更新头指针以指示其已接收到所述响应。在一个示范性实施方案中,中断处理器1 可不将另一中断发送到主机106,直到前一中断已通过主机106写入到响应头指针得到确认为止。在一个示范性实施方案中,主机106经由其驱动器107可控制中断处理器IM何时应产生中断。主机106可使用一个或一个以上不同中断机制(包括不同中断机制的组合)以将关于中断处理的信息提供到中断处理器124。举例来说,主机106经由驱动器107 可配置中断处理器124以使用水印中断机制、超时中断机制、群组中断机制或这些中断机制的组合。在一个示范性实施方案中,主机106可设定确定水印的响应标记参数,且可设定确定超时的响应延迟参数。主机106可将这些参数传递到中断处理器124。如果响应缓冲器123中的新响应的计数等于或大于响应标记,那么中断处理器1 产生中断且将所述计数归零。如果自从最后中断以来的时间(例如,以微秒为单位的时间)等于或大于响应延迟且响应缓冲器123中存在新响应,那么中断处理器IM产生中断且将超时归零。如果主机106从响应缓冲器123移除新响应,那么更新新响应的计数且重新开始超时。以此方式, 主机106可预先轮询且避免来自中断处理器124的中断。在另一示范性实施方案中,主机106可使用群组中断机制来确定中断处理器IM 何时应产生中断并将所述中断发送到主机106。所述命令可共享共用值,所述共用值将命令识别为同一群组的部分。举例来说,驱动器107可将命令分组在一起且给命令群组指派相同群组编号。驱动器107可使用命令标头中的中断群组字段来给群组中的命令指派群组编号。当命令群组中的所有命令已完成且针对所有这些命令的响应已从命令处理器122传送到响应缓冲器123并更新响应尾时,则中断处理器IM可产生中断并将所述中断发送到主机106。以此方式,可使用群组中断机制来减少主机106用来处理中断所需要的时间。可单独地启用或停用中断机制中的每一者。此外,可使用中断机制的任何组合。举例来说,驱动器107可在队列控制寄存器中设定中断启用及停用旗标以确定中断机制中的哪些被启用及中断机制中的哪些被停用。以此方式,可使用中断的组合来减少主机106用来处理中断所需要的时间。主机106可使用其资源来执行其它任务。在一个示范性实施方案中,可停用所有中断机制。在此情形中,驱动器107可经配置以轮询响应缓冲器123以确定是否存在准备处理的响应。停用所有中断机制可产生最低的可能等待时间。其还可产生驱动器107的高开销。在另一示范性实施方案中,可连同超时中断机制及/或水印中断机制一起启用群组中断机制。以此方式,如果指定群组中的命令的数目大于响应缓冲器123,那么其它经启用中断机制中的一者将用以中断驱动器107以从响应缓冲器123清除响应,以为命令处理器122向响应缓冲器123添加更多响应而提供空间。不同中断机制的使用(单独地或以组合方式)可用以调整关于驱动器107的等待时间及/或开销。举例来说,在一个示范性实施方案中,可仅启用超时中断机制。在此情形中,可减小驱动器107上的开销。在另一示范性实施方案中,可仅启用水印中断机制。在此情形中,可将等待时间减少到较低水平。在一些示范性情形中,正在使用的特定类型的应用程序可作为确定启用哪些中断机制的考虑因素。举例来说,web搜索应用程序可为等待时间敏感的且可以特定组合方式启用中断机制以为web搜索应用程序提供最好等待时间敏感性。在另一实例中,web索引应用程序可不像web搜索应用程序那样对等待时间敏感。而是,处理器性能可为更重要的参数。在此应用程序中,可以特定组合方式启用中断机制以允许低开销,甚至以增加的等待时间为代价。在一个示范性实施方案中,驱动器107可基于经由操作系统109从应用程序113 接收的输入/输出(I/O)操作来确定命令群组。举例来说,应用程序113可请求多个兆字节的读取操作。在此实例中,应用程序113可不能够使用部分响应且应用程序113的唯一有用信息可为整个操作何时已完成。通常,可将所述读取操作破分成许多多个命令。驱动器 107可经配置以将所述读取命令辨识为命令群组且在命令标头中的每一者中给所述群组中的命令指派相同群组编号。应用程序113与驱动器107之间的接口可用以向驱动器107指示待将某些操作视为群组。所述接口可经配置以基于不同准则来将操作分组,所述不同准则包括但不限于命令的类型、与所述命令相关联的数据请求的大小、所请求的数据(包括来自多个不同应用程序的请求)的类型、请求的优先等级及其组合。在一些实施方案中,应用程序113可将关于操作的个别命令信息递送到操作系统 109且最终传递到驱动器107。在其它示范性实施方案中,驱动器107可指定一个或一个以上命令线程以视为一群组。参照图2,其图解说明示范性中断处理器124的框图。中断处理器124可经配置以基于由主机106启用的一个或多个中断机制来产生并发送中断。中断处理器IM可包括响应新计数器观0、最后响应计时器观2、群组计数器284及中断发送逻辑观6。当需要水印中断机制时主机106可启用响应新计数器观0。主机106可设定响应标记观8,其为提供为到响应新计数器280的输入的参数,如上文所论述。响应新计数器观0 接收包括何时将响应传送到主机106、何时更新响应头、主机响应缓冲器123中的未完成响应的数目及何时已发送中断的信息作为输入。响应新计数器280经配置以追踪向主机106 传送的所述主机迟早会看到的响应的数目。每次将响应传送到响应缓冲器123时,递增计数器。当计数器280达到或超过由主机106设定的水印水平(S卩,响应标记观8)时,则产生水印触发器且将其发送到中断发送逻辑观6。水印水平(即,响应标记观8)为产生中断所需要的响应缓冲器123中的新响应的数目。如果主机106从响应缓冲器123移除新响应, 那么其不朝着满足所述水印水平的方向计数。当产生中断时,将朝向响应标记的计数复位。如果水印中断机制为唯一启用的中断,那么当达到水印时,则中断发送逻辑观6 产生中断并将所述中断发送到主机106。将不发送另外的中断,直到主机106确认所述中断并更新响应头。将经更新响应头作为清除中断信号传递到中断发送逻辑观6。如果还启用其它中断机制,那么中断发送逻辑286可在也计及其它经启用中断机制的情况下产生中断并将所述中断发送到主机106。当需要计时器中断机制时可启用最后响应计时器观2。最后响应计时器282可经配置以追踪自从最后中断以来的时间。举例来说,最后响应计时器282可追踪自从最后中断以来的时间量(以微秒为单位)。主机106可使用参数(举例来说,响应延迟参数四0) 来设定所述时间量。在一个示范性实施方案中,响应延迟290超时可为在产生中断之前自从最后中断以来或自从主机106最后一次从响应缓冲器123移除新响应以来的微秒数。最后响应计时器282接收指示何时发送中断的信号作为输入。最后响应计时器 282还可接收何时更新响应头的信号,所述信号指示主机106已从响应缓冲器123移除响应。可仅在响应缓冲器123含有未完成响应的情况下产生中断。最后响应计时器282经配置以在正由最后响应计时器282追踪的时间量大于响应延迟参数四0时产生超时触发器。当此发生且响应缓冲器123含有新响应时,则将超时触发器信号发送到中断发送逻辑286。如果最后响应计时器282为唯一启用的中断机制,那么中断发送逻辑286产生中断并将所述中断发送到主机。如果还启用其它中断机制,那么中断发送逻辑286还可计及所述其它中断机制。每一中断机制包括启用位且中断发送逻辑286可经配置以在针对经启用中断机制断言中断触发器时产生中断。所述逻辑可经配置以不产生另一中断,直到主机106确认所述中断并更新响应头。队列控制参数292可将用以指示中断机制的状态(例如,中断机制中的哪些被启用及中断机制中的哪些被停用)的输入提供到中断发送逻辑观6。群组计数器284机制可经布置及配置以追踪为由驱动器107指定的群组的部分的命令。当主机106期望追踪作为群组的部分的命令时,主机106可启用群组计数器观4,使得仅在处理群组中的所有命令时产生单个中断并将所述单个中断发送回到主机106。以此方式,不针对个别命令中的每一者而是仅针对命令群组产生中断。群组计数器284可经配置而具有多个计数器以使得能够追踪多个不同命令群组。 在一个示范性实施方案中,群组计数器284可经配置以追踪多达1 个不同命令群组且包括1 个不同命令群组在内。以此方式,每一命令群组存在一计数器。计数器的数目可与可使用命令标头中中断群组字段指定的群组编号的数目相关。群组计数器观4可经配置以在群组的新命令已进入命令处理器122时递增所述群组的计数器。群组计数器284可在群组中的命令中的一者已完成处理时递减所述群组的计数器。以在群组的新命令进入时递增且在所述群组的命令完成时递减的此方式,每一群组中的命令的数目可能为无限的。计数器不需要经确定大小以计及群组中的可能命令的最大数目。而是,可基于数据存储装置100可一次可能处理的命令的数目来确定计数器的大小, 所述数目可小于特定群组中的命令的无限数目。在一个示范性实施方案中,群组计数器观4中的每一者可使用由驱动器107指派且出现在每一命令的命令标头中的中断群组字段中的群组编号来追踪特定群组中的命令。 每次具有群组编号的命令进入命令处理器122以进行处理时,群组计数器观4接收一信号。 响应于此信号,所述群组的计数器递增。每次具有群组编号的命令完成处理时,群组计数器 284也接收一信号。响应于此信号,所述群组的计数器递减。驱动器107可用旗标标记命令群组中的最后命令以向群组计数器284指示所述命令为群组中的最后命令。在一个示范性实施方案中,可将命令标头中的中断群组字段中的最后位用作所述旗标。群组计数器284经配置以辨识所述旗标何时被设定。以此方式,群组计数器284保持在数据存储装置100中正在处理中的特定群组中的命令的数目的计数器。 群组计数器284还追踪何时已看到所述群组的结尾。当命令从主机106发送到数据存储装置100时,递增其中断群组的计数器。当响应从数据存储装置100发送到主机106时,递减其中断群组的计数器。当在群组计数器观4 处接收到群组中的最后命令且所述群组的计数变为零时,产生群组触发器信号并将其发送到中断发送逻辑观6。当在中断发送逻辑286处接收到所述群组触发器信号时,则将中断发送到主机106。群组计数器284接着清除所述群组的结尾群组旗标。驱动器107可经配置以追踪使用中的群组。驱动器107可不重新使用中断群组编号,直到使用所述中断群组编号的先前命令已全部完成且已确认所述中断。在一个示范性实施方案中,驱动器107可经配置以动态地确定其想要产生多少中断。举例来说,驱动器107可依据各种准则(包括(举例来说)体积、等待时间及主机106 上的其它因数)来动态地确定命令群组的大小。在一个示范性实施方案中,中断发送逻辑286可经配置以合并多个中断群组的多个中断且针对多个命令群组仅发送单个中断。图3是命令处理器122的框图。命令处理器122可包括时隙追踪器模块302、命令传送模块304、未决命令模块306、命令包存储器308及任务分派模块310。命令处理器122 可以硬件、软件或硬件与软件的组合来实施。在一个示范性实施方案中,命令处理器122可实施为现场可编程门阵列(FPGA)控制器的一部分。FPGA控制器可经配置以使用固件或其它指令编程FPGA控制器以执行本文中所论述的功能。命令处理器122可经布置及配置以从主机检索命令且将来自所述主机的所述命令排队及排序以由各种存储位置进行处理。命令处理器122可经配置以通常尝试保持所有或实质所有所述存储位置忙碌来最大化所述存储位置的可存取性。命令处理器122可经配置以按次序分派指定给同一存储位置的命令,以便保持从主机接收的所述命令的次序。命令处理器122可经配置以对指定给不同存储位置的命令进行重新排序并无序地分派所述命令。以此方式,通过对指定给不同存储位置的命令进行重新排序而可并行地处理从主机接收的命令,且同时保持指定给同一存储位置的命令的次序。在一个示范性实施方案中,命令处理器122可使用有序列表来对来自主机的命令进行排队及排序。在一个示范性实施方案中,可基于来自主机的命令的年龄来将所述有序列表分类及/或以其它方式排序。举例来说,当从主机接收到新命令时,按从主机接收这些命令的次序将其置于所述有序列表的底部处。以此方式,按正确次序维持依赖于次序的命令(例如,指定给同一存储位置的命令)。在一个示范性实施方案中,存储位置可包括多个快闪存储器芯片。快闪存储器芯片可布置及配置成多个通道,其中所述通道中的每一者包括所述快闪存储器芯片中的一者或一者以上。命令处理器122可经布置及配置以基于所述有序列表按次序来分派指定给同一通道及/或同一快闪存储器芯片的命令。此外,命令处理器122可经布置及配置以无序地分派指定给不同通道及/或不同快闪存储器芯片的命令。以此方式,命令处理器122可在需要的情况下对来自所述有序列表的命令进行重新排序,使得可同时保持所述通道及所述快闪存储器芯片忙碌。此使得能够并行地处理来自主机的命令且使得能够在不同通道及不同快闪存储器芯片上同时处理更多命令。可在驱动器(例如,图1的驱动器107)的控制下分派及追踪来自主机的命令,其中所述驱动器可为计算机程序产品,所述计算机程序产品有形地体现于存储媒体上且可包括用于产生并分派来自主机(例如,图1的主机106)的命令的指令。来自主机的命令可指定特定存储位置,举例来说,特定快闪存储器芯片及/或特定通道。从主机的角度,可为重要的是按主机所规定的次序执行指定给同一存储位置的命令。举例来说,可为重要的是由主机产生的某些操作在同一快闪存储器芯片上按次序发生。举例来说,主机可产生并发生针对特定快闪存储器芯片的擦除命令及写入命令,其中主机期望所述擦除命令首先发生。 重要的是,所述擦除命令首先发生使得与所述写入命令相关联的数据不会在其被写入到快闪存储器芯片之后被立即擦除。作为另一实例,对于快闪存储器芯片,可为重要的是按次序向擦除块的页写入。此操作可包括用以在同一快闪存储器芯片上执行所述操作的多个命令。在此实例中,必需按主机所规定的次序来执行此操作的这些命令。举例来说,单个写入操作可包括六十个命令以上。命令处理器122可经配置以确保使用有序列表按次序执行针对同一快闪存储器芯片的命令。在一个示范性实施方案中,命令处理器122可经配置以追踪正在处理的命令的数目。命令处理器122可经配置以追踪可用于接收并处理命令的时隙的数目。命令处理器122 的组件中的一者一时隙追踪器模块302可经配置以追踪可用于来自主机的命令的时隙。时隙追踪器模块302可追踪开放的时隙,将所述时隙提供给从主机传送的新命令且在所述命令完成后即刻将所述时隙指定为开放的。在一个示范性实施方案中,时隙追踪器模块302可包括固定数目个时隙,其中可将每一时隙指定给单个命令。举例来说,时隙追踪器模块302可包括1 个时隙。在其它示范性实施方案中,时隙追踪器模块302可包括不同数目个固定时隙。此外,举例来说,时隙的数目可为可变或可配置的。时隙追踪器模块302可以软件、硬件或硬件与软件的组合实施为寄存器或存储器模块。时隙追踪器模块302可包括时隙的列表,其中所述时隙中的每一者与全局时隙识别符相关联。当从主机接收到命令时,所述命令被指派到可用时隙且与所述时隙的全局时隙识别符相关联。时隙追踪器模块302可经配置以给所述命令中的每一者指派全局时隙识别符,其中全局时隙识别符的数目是固定的以匹配时隙追踪器模块302中的时隙的数目。 命令贯穿其处理与全局时隙识别符相关联,直到所述命令完成且时隙被释放为止。在一个示范性实施方案中,全局时隙识别符为与特定时隙相关联的标签,所述特定时隙被指派到填充所述特定时隙的命令。所述标签与所述命令相关联且属于所述命令,直到所述命令的处理完成且其所占据的时隙被释放且可用于接收新命令为止。可不按时隙的次序放置命令,而是可将命令置于可用时隙中的任一者中且给其指派与所述时隙相关联的全局时隙识别符。在一个示范性实施方案中,命令处理器122的组件中的一者一命令传送模块304 可经配置以基于时隙追踪器模块302中的可用时隙的数目及主机处新命令的可用性来从主机检索新命令。在一个示范性实施方案中,命令传送模块304可实施为状态机。
时隙追踪器模块302可将关于可用时隙的数目的信息提供到命令传送模块304。 此外,命令传送模块304可关于可用时隙的数目而查询时隙追踪器模块302。在一个示范性实施方案中,命令传送模块304可使用命令尾指针312及命令头指针314来指示主机处何时有及有多少新命令可用于检索。命令传送模块304可将命令尾指针312与命令头指针314进行比较以确定是否存在来自主机的可用于检索的命令。如果命令尾指针312与命令头指针314相等,那么无命令可用于传送。如果命令尾指针312大于命令头指针314,那么命令可用于传送。在一个示范性实施方案中,命令尾指针312及命令头指针314可实施为经配置以保持指针值的寄存器且可为命令处理器122的一部分。命令尾指针314可由主机写入。举例来说,当主机处有命令可用于检索时,驱动器可使用存储器映射输入/输出(MMIO)写入来更新命令尾指针312。当从主机检索到命令时,命令传送模块304更新命令头指针314。当满足主机处有可用时隙及可用命令的条件时,命令传送模块304可从主机检索所述可用命令中的一些或全部。在一个示范性实施方案中,命令传送模块304可在单个存取中检索命令群组。举例来说,命令传送模块304可经配置以使用直接存储器存取(DMA) 操作一次从主机检索八个命令的群组。当检索到命令时,命令传送模块304更新命令头指针314。可经由总线主控器316从主机检索命令。命令传送模块304还可经由总线主控器 316使用DMA操作来向主机命令头指针(未展示)写入以更新主机命令头指针。队列控制件318可经配置以启动及停用命令传送模块304。队列控制件318可实施为经由驱动器从主机接收指令的寄存器。队列控制件318可为命令处理器122的组件。 当队列控制件318寄存器被设定为启用时,则命令传送模块304可从主机检索命令并处理所述命令。驱动器控制队列控制件318的设定,使得命令传送模块304仅在主机准备就绪且已提供其准备就绪的指示时检索命令。当队列控制件318寄存器被设定为停用时,则命令传送模块104可不从主机检索命令及处理所述命令。所检索的命令中的每一者由时隙追踪器模块302指派给可用时隙中的一者且与所述可用时隙的全局时隙识别符相关联。可将所述命令的数据存储于命令包存储器308 中。举例来说,命令包存储器308可实施为由全局时隙识别符加索引的固定缓冲器。特定命令的数据可存储于命令包存储器308中且由其所指派全局时隙识别符加索引。特定命令的数据可保持在命令包存储器308中,直到所述命令由任务分派模块310分派到指定存储位置为止。命令传送模块304还可经配置以给控制器的其它组件提供与由时隙加索引的命令相关的信息。举例来说,命令传送模块304可将数据提供到DMA引擎。命令传送模块304 还可将状态包标头数据提供到状态处理器。命令传送模块304可将中断群组数据提供到中断处理器。举例来说,命令传送模块304可将群组信息319传送到中断处理器(例如,图1 及2的中断处理器124)。未决命令模块306可经配置以使用基于命令的年龄的有序列表来对命令进行排队及排序。在一个示范性实施方案中,未决命令模块306可实施为经配置以存储用以对命令进行排队及排序的多个指针的存储器模块。未决命令模块306可包括为未决的命令的全局时隙识别符连同存储位置识别符的列表。举例来说,存储位置识别符可包括经指定以将在其处处理命令的存储位置。存储位置识别符可包括通道识别符及/或快闪存储器芯片识别符。存储位置识别符为命令的一部分且由主机经由其驱动器来指派。当检索到新命令时,将全局时隙识别符及存储位置信息添加到未决命令模块306 中的有序列表的底部。如上文所论述,将命令的数据存储于命令包存储器308中且由全局时隙识别符加索引。当将命令添加到有序列表时,将指向前一命令的指针与所述命令一同包括在内。还包括指向下一命令的指针。以此方式,有序列表中的每一项目包括全局任务识别符、存储位置识别符、指向前一命令的指针及指向下一命令的指针。在此示范性实施方案中,所述有序列表可称作双链接列表。所述有序列表为从最老命令到最新命令排序的命令的列表。任务分派模块310经配置以从未决命令模块306中的有序列表移除命令且将其分派到适当存储位置以进行处理。任务分派模块310可从存储位置接收用以指示其准备好接受新命令的输入。在一个示范性实施方案中,任务分派模块310可接收一个或一个以上信号320,例如,指示存储位置中的一者或一者以上准备好接受新命令的信号。未决命令模块 306可经配置以首先在有序列表的顶部处以最老命令开始且使所述命令可用于任务分派模块310。未决命令模块306可继续使用有序列表按次序使命令可用于任务分派模块310,直到任务分派模块310从所述列表移除命令为止。在从未决命令模块306中的有序列表移除命令之后,未决命令模块306再次在有序列表的顶部处开始向任务分派模块310回放列表中剩余的命令。任务分派模块310可经配置以首先在有序列表的顶部处以最老命令开始且使用信号320来确定存储位置是否可用于接收新命令。如果存储位置准备就绪,那么任务分派模块310从命令包存储器308检索命令数据且将所述命令数据及存储位置选择信号322传递到存储位置。未决命令模块306接着更新有序列表及指针以反映命令经分派以进行处理。一旦已分派命令,则任务分派模块310再次在有序列表的顶部处开始。如果存储位置未准备好接收新命令,那么任务分派模块310移动到有序列表上的下一命令。任务分派模块310确定所述下一命令是针对相同存储位置还是与被跳过的命令不同的存储位置。如果所述下一命令是针对与被跳过的命令相同的存储位置,那么任务分派模块310也将跳过此命令。以此方式,按从主机接收的次序分派及处理指定给同一存储位置的命令。任务分派模块310保持指定给同一存储位置的命令的次序。如果命令指定给不同存储位置,那么任务分派模块310再次确定列表上的下一命令的存储位置是否准备好接受新命令。如果任务分派模块310接收到所述存储位置准备好接受新命令的信号320,那么任务分派模块310将所述命令连同存储位置选择信号322 —起从命令包存储器308分派到所述存储位置。未决命令模块306从有序列表移除经分派命令且更新有序列表,其中包括更新与所述命令相关联的指针。以此方式,在移除经分派命令后即刻将剩余指针链接在一起。还参照图4,其图解说明未决命令模块306的框图。未决命令模块306可包括具有多个端口(端口 A及端口 B)的单个存储器模块402。存储器模块402可存储与未决命令相关的信息,其中包括每一命令的指针信息,其中所述指针信息可指向下一命令及前一命令。在操作中,图3的命令传送模块304将新条目请求406发送到未决命令模块306, 新条目请求406请求将新命令添加到有序列表。新条目请求406由新条目模块408接收。 在一个示范性实施方案中,新条目模块408可实施为状态机。
新条目模块408接收新条目请求406且在有序列表的结尾处将其添加到所述列表,作为存储器模块402中的最新命令。此外,新条目模块408向自由指针列表模块410请求指针。自由指针列表模块410可实施为维持可用于新条目的指针的列表的先输入先输出 (FIFO)存储器。当新条目模块408向自由指针列表模块410请求指针时,自由指针列表模块410 将下一条目指针412提供到新条目模块408。下一条目指针412为指向在当前新条目之后的条目将在其处在有序列表上驻存的指针。列表中的当前新条目指向此地址作为其下一地址。新条目指针414为指向当前新条目将在其处在有序列表上驻存的指针,其为前一条目的下一条目指针412。列表中的最后条目指向此地址作为其下一地址。存储器模块402存储与所述命令及所述指针相关的数据字段。当添加新条目时,也更新结尾指针420。举例来说,如果待添加条目“X”,那么下一条目指针412指向下一条目“Y”且新条目指针414指向待添加的当前条目“X”。在键入“X”且待添加条目“Y”之后,下一条目指针 412指向下一条目“Z”且新条目指针414指向待添加的当前条目“Y”。当图3的任务分派模块310确定待从存储器模块402中的有序列表移除条目时, 任务分派模块发送删除请求416。所述删除请求由条目回放与删除模块418接收。条目回放与删除模块418可经配置以首先在有序列表的顶部处以最老命令开始且使所述命令可用于任务分派模块310。条目回放与删除模块418可继续使用有序列表按次序使命令可用于任务分派模块310,直到任务分派模块310从列表移除命令为止。在从有序列表移除命令之后,条目回放与删除模块418致使存储器模块402分派所述命令并将其从有序列表移除。 接着释放所述指针且条目回放与删除模块418向自由指针列表模块410提供经移除命令的指针自由的指示。当移除所述命令以维持列表的正确次序时,条目回放与删除模块418还更新存储器模块402中的指针。条目回放与删除模块418还再次在有序列表的顶部处开始向任务分派模块310回放列表中剩余的命令。在一个示范性实施方案中,条目回放与删除模块418可实施为状态机。条目回放与删除模块418还从新条目模块408接收结尾指针420的输入。可在条目回放与删除模块 418正在使命令可用于任务分派模块310时及当从有序列表移除所述列表中的最后条目时使用结尾指针420。以此方式,可更新结尾指针420以指向有序列表的结尾。返回参照图1,在一个示范性实施方案中,控制器板102 (其为其自己的PCB)可在物理上位于存储器板10 及104b中的每一者之间,存储器板10 及104b在其自己单独的 PCB上。还参照图5,数据存储装置100可包括一个PCB上存储器板104a、第二 PCB上的控制器板102及第三PCB上的存储器板104b。存储器板10 包括多个快闪存储器芯片118a 且存储器板104b包括多个快闪存储器芯片118b。控制器板102包括控制器110及到主机 (未展示)的接口 108以及其它组件(未展示)。在图5所图解说明的实例中,存储器板10 可操作地连接到控制器板102且位于控制器板102的一侧520a上。举例来说,存储器板10 可连接到控制器板102的顶部侧 520a。存储器板104b可操作地连接到控制器板102且位于控制器板102的第二侧520b上。 举例来说,存储器板104b可连接到控制器板102的底部侧520b。存储器板10 及104b与控制器板102之间的其它物理及/或电连接布置是可能的。图5仅图解说明一个示范性布置。举例来说,数据存储装置100可包括两个以上存储器板,例如三个存储器板、四个存储器板或四个以上存储器板,其中所有所述存储器板连接到单个控制器板。以此方式,数据存储装置可仍以磁盘驱动器形状因数来配置。此外,存储器板可在其它布置(例如(举例来说)控制器板在顶部且存储器卡在底部,或控制器板在底部且存储器卡在顶部)中连接到控制器板。数据存储装置100可经布置及配置以与计算装置协作。在一个示范性实施方案中,控制器板102以及存储器板10 及104b可经布置及配置以装配于计算装置的驱动器托架内。参照图6,图解说明两个示范性计算装置,S卩服务器630及服务器640。服务器630 及640可经布置及配置以提供各种不同类型的计算服务。服务器630及640可包括主机 (例如,图1的主机106),所述主机包括计算机程序产品,所述计算机程序产品具有致使服务器630及640中的一个或一个以上处理器提供计算服务的指令。服务器的类型可取决于在服务器上操作的一个或一个以上应用程序(例如,图1的应用程序11 。举例来说,服务器630及640可为应用程序服务器、web服务器、电子邮件服务器、搜索服务器、串流化媒体服务器、电子商务服务器、文件传送协议(FTP)服务器、其它类型的服务器或这些服务器的组合。服务器630可配置成在服务器机架内操作的机架安装服务器。服务器640可配置成独立于服务器机架而操作的独立服务器。即使服务器640不在服务器机架内,其也可经配置而与其它服务器一起操作且可操作地连接到其它服务器。服务器630及640意在图解说明实例性计算装置且可使用其它计算装置,其中包括其它类型的服务器。在一个示范性实施方案中,图1及图5的数据存储装置100可经确定大小以装配于服务器630的驱动器托架635或服务器640的驱动器托架645内以为服务器630及640 提供数据存储功能性。举例来说,数据存储装置100可经确定大小而为3. 5"磁盘驱动器形状因数以装配于驱动器托架635及645中。数据存储装置100还可配置成其它大小。数据存储装置100可使用接口 108可操作地与服务器630及560连接及通信。以此方式,主机可使用接口 108将命令传递到控制器板102且控制器110可使用存储器板10 及104b上的快闪存储器芯片118a及118b来执行所述命令。返回参照图1,接口 108可包括控制器110与主机106之间的高速接口。所述高速接口可使得能够在主机106与快闪存储器芯片118a及118b之间快速传送数据。在一个示范性实施方案中,所述高速接口可包括PCIe接口。举例来说,所述PCIe接口可为PCIex4 接口或PCIe x8接口。PCIe接口 108可包括到主机106的连接器,例如(举例来说)PCIe 连接器电缆组合件。也可使用其它高速接口、连接器及连接器组合件。在一个示范性实施方案中,控制器板102与存储器板10 及104b上的快闪存储器芯片118a及118b之间的通信可布置及配置成多个通道112。通道112中的每一者可与一个或一个以上快闪存储器芯片118a及118b通信且可由通道控制器(未展示)控制。控制器110可经配置而使得从主机106接收的命令可由控制器110使用通道112中的每一者同时或至少实质上同时执行。以此方式,可在不同通道112上同时执行多个命令,此可改善数据存储装置100的吞吐量。在图1的实例中,图解说明二十00)个通道112。完全实线图解说明控制器110 与存储器板10 上的快闪存储器芯片118a之间的十(10)个通道。混合的实线与虚线图解说明控制器110与存储器板104b上的快闪存储器芯片118b之间的十(10)个通道。如图1中所图解说明,通道112中的每一者可支持多个快闪存储器芯片。举例来说,通道112中的每一者可支持多达32个快闪存储器芯片。在一个示范性实施方案中,所述20个通道中的每一者可经配置以支持6个快闪存储器芯片并与其通信。在此实例中,存储器板10 及104b中的每一者将各自包括60个快闪存储器芯片。依据快闪存储器芯片118a及11 的类型及数目,数据存储装置100可经配置以存储多达多个数据太字节且包括多个数据太字节在内。控制器110可包括微控制器、FPGA控制器、其它类型的控制器或这些控制器的组合。在一个示范性实施方案中,控制器110为微控制器。可以硬件、软件或硬件与软件的组合来实施所述微控制器。举例来说,可从存储器(例如,存储器模块116)给所述微控制器加载计算机程序产品,所述计算机程序产品包括在被执行时可致使所述微控制器以某一方式执行的指令。所述微控制器可经配置以使用接口 108从主机106接收命令且执行所述命令。举例来说,所述命令可包括用以使用快闪存储器芯片118a及118b读取、写入、拷贝及擦除数据块的命令以及其它命令。在另一示范性实施方案中,控制器110为FPGA控制器。可以硬件、软件或硬件与软件的组合来实施所述FPGA控制器。举例来说,可从存储器(例如,存储器模块116)给所述FPGA控制器加载固件,所述固件包括在被执行时可致使所述FPGA控制器以某一方式执行的指令。所述FPGA控制器可经配置以使用接口 108从主机106接收命令且执行所述命令。举例来说,所述命令可包括用以使用快闪存储器芯片118a及118b读取、写入、拷贝及擦除数据块的命令以及其它命令。在一个示范性实施方案中,FPGA控制器可支持与主机106的多个接口 108。举例来说,FPGA控制器可经配置以支持与主机106的多个PCIe x4或PCIe x8接口。存储器模块116可经配置以存储数据,可将所述数据加载到控制器110。举例来说,存储器模块116可经配置以存储FPGA控制器的一个或一个以上图像,其中所述图像包括供所述FPGA控制器使用的固件。存储器模块116可与主机106介接以与主机106通信。 存储器模块116可与主机106直接介接及/或可经由控制器110间接与主机106介接。举例来说,主机106可将固件的一个或一个以上图像传递到存储器模块116以进行存储。在一个示范性实施方案中,存储器模块116包括电可擦除可编程只读存储器(EEPROM)。存储器模块116还可包括其它类型的存储器模块。电力模块114可经配置以接收电力(Vin),以执行所接收电力的任何转换且输出输出电力(Vout)。电力模块114可从主机106或从另一源接收电力(Vin)。电力模块114 可将电力(Vout)提供到控制器板102及控制器板102上的组件,其中包括控制器110。电力模块114还可将电力(Vout)提供到存储器板10 及104b以及存储器板10 及104b 上的组件,其中包括快闪存储器芯片118a及11汕。在一个示范性实施方案中,电力模块114可包括一个或一个以上直流(DC)/DC转换器。DC/DC转换器可经配置以接收电力输入(Vin)且将所述电力转换为一个或一个以上不同电压电平(Vout)。举例来说,电力模块114可经配置以接收+12V(Vin)且将所述电力转换为3. 3v、l. 2v或1. 8v且将所述电力输出(Vout)供应到控制器板102以及存储器板 104a 及 104b。存储器板10 及104b可经配置以处置不同类型的快闪存储器芯片118a及118b。 在一个示范性实施方案中,快闪存储器芯片118a及快闪存储器芯片118b可为相同类型的快闪存储器芯片,其中包括需要来自电力模块114的相同电压及来自相同快闪存储器芯片销售商。术语销售商与制造商在本文件通篇中可互换使用。在另一示范性实施方案中,存储器板10 上的快闪存储器芯片118a可为与存储器板104b上的快闪存储器芯片118b不同的类型的快闪存储器芯片。举例来说,存储器板 10 可包括SLC NAND快闪存储器芯片且存储器板104b可包括MLC NAND快闪存储器芯片。 在另一实例中,存储器板10 可包括来自一个快闪存储器芯片制造商的快闪存储器芯片且存储器板104b可包括来自不同快闪存储器芯片制造商的快闪存储器芯片。具有全部相同类型的快闪存储器芯片或具有不同类型的快闪存储器芯片的灵活性使得能够使数据存储装置100适合主机106正在使用的不同应用程序113。在另一示范性实施方案中,存储器板10 及104b可在同一存储器板上包括不同类型的快闪存储器芯片。举例来说,存储器板10 可在同一 PCB上包括SLC NAND芯片及 MLC NAND芯片两者。类似地,存储器板104b可包括SLC NAND芯片及MLC NAND芯片两者。 以此方式,数据存储装置100可有利地经定制以满足主机106的规格。在另一示范性实施方案中,存储器板10 及104b可包括其它类型的存储器装置, 其中包括非快闪存储器芯片。举例来说,存储器板10 及104b可包括随机存取存储器 (RAM),例如(举例来说)动态RAM (DRAM)及静态RAM (SRAM)以及其它类型的RAM及其它类型的存储器装置。在一个示范性实施方案中,存储器板10 及104b两者可包括RAM。在另一示范性实施方案中,所述存储器板中的一者可包括RAM且另一存储器板可包括快闪存储器芯片。此外,所述存储器板中的一者可包括RAM及快闪存储器芯片两者。存储器板10 及104b上的存储器模块120a及120b可分别用以存储与快闪存储器芯片118a及118b相关的信息。在一个示范性实施方案中,存储器模块120a及120b可存储快闪存储器芯片的装置特性。所述装置特性可包括所述芯片为SLC芯片还是MLC芯片、 所述芯片为NAND还是NOR芯片、芯片选择的数目、块的数目、每块页的数目、每页字节的数目及所述芯片的速度。在一个示范性实施方案中,存储器模块120a及120b可包括串行EEPROM。EEPROM 可存储装置特性。可针对任何给定类型的快闪存储器芯片汇编一次装置特性且可用所述装置特性产生适当EEPROM图像。当存储器板10 及104b可操作地连接到控制器板102时, 则可从EEPROM读取所述装置特性,使得控制器110可自动辨识控制器110正在控制的快闪存储器芯片118a及11 的类型。另外,可针对特定类型的快闪存储器芯片118a及118b 使用所述装置特性来将控制器110配置成适当参数。参照图7,其图解说明用于在数据存储装置上处理命令群组的过程700。过程700 可包括从主机接收命令群组,其中所述群组中的所述命令中的每一者包括相同群组编号 710以将所述命令识别为所述群组的部分;使用多个存储器芯片来处理所述命令群组720 ; 及在所述命令群组完成处理时产生单个中断并将所述单个中断发送到所述主机703。在一个示范性实施方案中,控制器110可经配置以执行过程700。举例来说,控制器110及其组件可经配置以从主机106接收命令群组,其中主机106在所述群组中的所述命令中的每一者的命令标头中指派相同群组编号以将所述命令710识别为所述群组的部分。命令处理器122可经配置以使用快闪存储器芯片118a及118b来处理所述命令720。 命令处理器122可经配置以使用快闪存储器芯片118a及118b按非邻接次序来处理所述命令。中断处理器1 可经配置以在所述命令群组完成处理时产生并发送单个中断730。在一个示范性实施方案中,控制器110可经配置以从主机106接收多个命令群组, 其中给所述不同命令群组中的每一者指派不同群组编号。驱动器107可经配置以追踪被指派给所述不同命令群组的群组编号。命令处理器122可经配置以处理多个命令群组。中断处理器1 可经配置以在特定群组中的所有命令完成处理时针对不同命令群组中的每一者产生并发送单个中断。参照图8,其图解说明用于在控制器中追踪命令的过程800。过程800可包括在命令群组中的命令开始处理时递增群组计数器810 ;在所述命令群组中的命令完成处理时递减所述群组计数器820 ;及在所述群组中的所有所述命令完成处理时针对所述命令群组产生并发送单个中断830。在一个示范性实施方案中,过程800可由控制器110及其组件执行。举例来说,中断处理器1 可经配置以在所述命令群组中的命令开始处理时递增群组计数器观4810。中断处理器1 可经配置以在所述命令群组中的命令完成处理时递减群组计数器观4820。中断处理器1 可经配置以在所述群组中的所有命令完成处理时针对所述命令群组产生并发送单个中断830。在一个示范性实施方案中,中断处理器IM可在所述命令群组中的最后命令开始处理且群组计数器递减到零时产生并发送单个中断命令。本文中所描述的各种技术的实施方案可以数字电子电路或者以计算机硬件、固件、软件或其组合来实施。实施方案可实施为计算机程序产品,即,有形地体现于信息载体中(例如,体现于机器可读存储装置中)的计算机程序,以由数据处理设备(例如,可编程处理器、一计算机或多个计算机)执行或控制所述数据处理设备的操作。可以任何形式的编程语言(包含编译语言或解译语言)来写入计算机程序(例如,上文所描述的计算机程序),且可以任何形式来部署所述计算机程序,包含部署为独立程序或部署为模块、组件、子例程或适合在计算环境中使用的其它单元。计算机程序可经部署以在一个计算机上或在位于一个位点处或跨越多个位点分布且由通信网络互连的多个计算机上执行。方法步骤可由执行计算机程序的一个或一个以上可编程处理器执行,以通过处理输入数据并产生输出来执行功能。方法过程还可由专用逻辑电路(例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路))执行,且设备可实施为专用逻辑电路。举例来说,适合执行计算机程序的处理器包括通用及专用微处理器两者,以及任何种类的数字计算机的任何一个或一个以上处理器。一般来说,处理器将从只读存储器或随机存取存储器或两者接收指令及数据。计算机的元件可包括用于执行指令的至少一个处理器及用于存储指令及数据的一个或一个以上存储器装置。一般来说,计算机还可包括用于存储数据的一个或一个以上大容量存储装置(例如,磁盘、磁光盘或光盘)或经操作地耦合以从所述一个或一个以上大容量存储装置接收数据或向其传送数据或既接收数据又传送数据。适合包含计算机程序指令及数据的信息载体包括所有形式的非易失性存储器,其中包括(举例来说)半导体存储器装置,例如EPROM、EEPROM及快闪存储器装置;磁盘,例如内部硬磁盘或可抽换式磁盘;磁光盘;及⑶-ROM及DVD-ROM光盘。所述处理器及存储器可由专用逻辑电路补充或并入于专用逻辑电路中。为提供与用户的交互,实施方案可实施于计算机上,所述计算机具有用于向所述用户显示信息的显示装置(例如,阴极射线管(CRT)或液晶显示器(LCD)监视器)及所述用户可通过其来向计算机提供输入的键盘及指向装置(例如,鼠标或轨迹球)。也可使用其它种类的装置来提供与用户的交互;举例来说,提供给所述用户的反馈可为任何形式的感观反馈,例如,视觉反馈、听觉反馈或触觉反馈;且来自所述用户的输入可以任何形式来接收, 其中包括声音、语音或触觉输入。实施方案可实施于计算系统(包括后端组件,例如,作为数据服务器;或包括中间件组件,例如,应用程序服务器;或包括前端组件,例如,具有用户可经由其来与实施方案交互的图形用户接口或Web浏览器的客户端计算机)或此类后端、中间件或前端组件的任一组合中。组件可由任何数字数据通信形式或媒体(例如,通信网络)互连。通信网络的实例包括局域网(LAN)及广域网(WAN),例如因特网。虽然本文已图解说明及描述了所描述实施方案的某些特征,然而所属领域的技术人员现在将能想出许多修改、替代、改变及等效形式。因此,应理解,所附权利要求书打算涵盖归属于本发明的范围内的所有此类修改及改变。
权利要求
1.一种数据存储装置(100),其包含 多个存储器芯片(118a、118b);及控制器(110),其可操作地耦合到所述存储器芯片(118a、118b)且经布置及配置以 从主机(106)接收命令群组,其中所述群组中的所述命令中的每一者包括相同群组编号以将所述命令识别为所述群组的部分,使用所述存储器芯片(118a、118b)来处理所述命令的所述群组,及在所述命令的所述群组完成处理时产生单个中断并将所述单个中断发送到所述主机 (106)。
2.根据权利要求1所述的数据存储装置(100),其中所述控制器(110)经配置以 从所述主机(106)接收多个命令群组,其中所述命令中的每一者包括群组编号以将所述命令识别为所述群组中的一者的部分,使用所述存储器芯片(118a、118b)来处理所述命令的所述群组;及在所述命令的所述群组中的每一者完成处理时针对所述群组中的每一者产生单个中断并将所述单个中断发送到所述主机(106)。
3.根据权利要求2所述的数据存储装置(100),其中所述控制器(110)经配置以使用所述存储器芯片(118a、118b)按非邻接次序来处理所述命令的所述群组。
4.根据前述权利要求中任一权利要求所述的数据存储装置(100),其中所述命令中的每一者包括命令标头(314)且所述命令标头(314)包括所述群组编号。
5.根据前述权利要求中任一权利要求所述的数据存储装置(100),其中所述命令的所述群组中的最后命令包括命令标头(314)中的用以向所述控制器(110)指示所述最后命令的旗标。
6.根据前述权利要求中任一权利要求所述的数据存储装置(100),其中所述群组编号将所述命令中的每一者识别为所述群组的部分而不使用所述命令中的指针来指向所述群组中的下一命令。
7.根据前述权利要求中任一权利要求所述的数据存储装置(100),其中所述控制器 (110)包含中断处理器(IM),所述中断处理器(124)经布置及配置以在所述命令由所述控制器(110)处理时追踪所述命令的所述群组,且在所述命令的所述群组完成处理时产生所述单个中断并将所述单个中断发送到所述主机(106)。
8.根据权利要求7所述的数据存储装置(100),其中所述中断处理器(124)包含多个计数器,其中所述计数器中的每一者被指派给由所述控制器(110)接收的不同命令群组。
9.根据权利要求7或8所述的数据存储装置(100),其中所述中断处理器(124)包含多个不同中断机制。
10.根据权利要求9所述的数据存储装置(100),其中一个以上中断机制在相同时间启用。
11.根据权利要求9或10所述的数据存储装置(100),其中所述中断机制包括水印中断机制、超时中断机制及群组中断机制。
12.根据前述权利要求中任一权利要求所述的数据存储装置(100),其中所述存储器芯片(118a、118b)为快闪存储器芯片,且所述控制器(110)为现场可编程门阵列FPGA控制
13.根据权利要求12所述的数据存储装置(100),其进一步包含存储器板,在所述存储器板上所述快闪存储器芯片布置及配置成多个通道,其中所述通道中的每一者与所述快闪存储器芯片中的一者或一者以上相关联;及控制器板(102),其可操作地连接到所述存储器板,其中所述控制器板(10 包含高速接口(108);及所述控制器(110),其经布置及配置以使用所述高速接口(108)从所述主机(106)接收所述命令。
14.一种用于在具有多个存储器芯片(118a、118b)的数据存储装置(100)上处理命令群组的方法,所述方法包含从主机(106)接收(710)命令群组,其中所述群组中的所述命令中的每一者包括相同群组编号以将所述命令识别为所述群组的部分;使用多个存储器芯片(118a、118b)来处理(720)所述命令群组;及在所述命令的所述群组完成处理时产生(730)单个中断并将所述单个中断发送到所述主机(106)。
15.根据权利要求14所述的方法,其中从所述主机(106)接收所述命令的所述群组包含从所述主机(106)接收多个命令群组,其中所述命令中的每一者包括群组编号以将所述命令识别为所述群组中的一者的部分;处理所述命令的所述群组包含使用所述存储器芯片(118a、118b)来处理所述命令的所述群组;且产生并发送所述单个中断包含在所述群组中的每一者完成处理时针对所述群组中的每一者产生单个中断并将所述单个中断发送到所述主机(106)。
16.根据权利要求15所述的方法,其中处理所述命令的所述群组包含使用所述存储器芯片(118a、118b)按非邻接次序来处理所述命令的所述群组。
17.一种用于在控制器(110)中追踪命令的设备,所述设备包含多个群组计数器084),其中所述群组计数器中的每一者经配置以通过以下方式来追踪正由控制器(110)处理的命令群组在所述群组中的命令开始由所述控制器(110)处理时递增且在所述群组中的命令完成处理时递减;及中断发送逻辑086),其可操作地耦合到所述群组计数器(观4)且经布置及配置以在群组中的所有所述命令完成处理时针对所述群组计数器中的每一者产生并发送单个中断。
18.根据权利要求17所述的设备,其中同一群组中的所述命令中的每一者由相同群组编号来识别。
19.根据权利要求17或18所述的设备,其中所述多个群组计数器(观4)经配置以在正由所述群组计数器中的一者追踪的命令开始处理时接收用以递增所述群组计数器的信号。
20.根据权利要求17到19中任一权利要求所述的设备,其中所述多个群组计数器 (284)经配置以在正由所述群组计数器中的一者追踪的命令完成处理时接收用以递减所述群组计数器的信号。
21.根据权利要求17到20中任一权利要求所述的设备,其中所述中断发送逻辑(观6) 经配置以在群组中的最后命令开始处理且与最终命令相关联的所述群组计数器递减到零时产生并发送所述单个中断。
22.一种用于在控制器(110)中追踪命令的方法,所述方法包含在命令群组中的命令开始处理时递增(810)群组计数器;在所述命令群组中的命令完成处理时递减(820)所述群组计数器;及在所述群组中的所有所述命令完成处理时针对所述命令群组产生(830)并发送单个中断。
23.根据权利要求22所述的方法,其中产生并发送所述单个中断包含在所述群组中的最后命令开始处理且所述群组计数器递减到零时产生并发送所述单个中断。
24.一种系统,其包含数据存储装置(100),其包括多个存储器芯片(118a、118b)及用于在主机(106)与所述多个存储器芯片(118a、118b)之间传递数据的多个物理通道,每一通道可操作地连接到不同多个所述存储器芯片(llSaUWb);及主机(106),其使用接口(108)可操作地耦合到所述数据存储装置(100),所述主机 (106)包含驱动器,所述驱动器经配置以将命令发送到所述数据存储装置(100)以由所述数据存储装置(100)使用所述多个存储器芯片(118a、118b)来进行处理,将所述命令分组成一个或一个以上不同群组且给群组中的所述命令中的每一者指派一群组编号,及标记群组中的最后命令。
25.根据权利要求M所述的系统,其中所述数据存储装置(100)经配置以在处理所述群组中的所述命令之后产生单个中断并将所述单个中断发送到所述主机(106)。
26.根据权利要求M或25所述的系统,其中所述多个存储器芯片(118a、118b)包含快闪存储器芯片。
27.根据权利要求对到26中任一权利要求所述的系统,其中所述驱动器经配置以追踪群组编号的使用。
28.根据权利要求M到27中任一权利要求所述的系统,其中所述数据存储装置(100) 经配置以使用所述多个存储器芯片(118a、118b)按非邻接次序来处理所述命令的群组。
29.根据权利要求M到洲中任一权利要求所述的系统,其中所述主机(106)经配置以在所述数据存储装置(100)上启用一个或一个以上中断机制。
30.根据权利要求四所述的系统,其中所述中断机制包括水印中断机制、超时中断机制及群组中断机制。
全文摘要
一种数据存储装置可包括多个存储器芯片及一控制器,所述控制器可操作地耦合到所述存储器芯片且经布置及配置以从主机接收命令群组,其中所述群组中的所述命令中的每一者包括相同群组编号以将所述命令识别为所述群组的部分;使用所述存储器芯片来处理所述命令的所述群组;及在所述命令的所述群组完成处理时产生单个中断并将所述单个中断发送到所述主机。
文档编号G06F13/38GK102428451SQ201080020319
公开日2012年4月25日 申请日期2010年4月1日 优先权日2009年4月8日
发明者安德鲁·T·斯温, 格兰特·格林德勒, 阿尔贝特·T·博尔歇斯 申请人:谷歌公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1