使用虚拟到物理映射以与数据存储装置进行直接用户空间通信的制作方法

xiaoxiao2020-10-23  18

使用虚拟到物理映射以与数据存储装置进行直接用户空间通信的制作方法
【专利说明】使用虚拟到物理映射以与数据存储装置进行直接用户空间通信
[0001]对相关串请案的交叉参考
[0002]本申请案主张2012年12月10日申请的名为“使用虚拟到物理映射以与数据存储装置进行直接用户空间通信(USING A VIRTUAL TO PHYSICAL MAP FOR DIRECT USER SPACECOMMUNICAT1N WITH A DATA STORAGE DEVICE) ” 的第 13/709,972 号美国非临时专利申请案的优先权且是所述申请案的接续申请案,所述申请案的全文是以引用方式并入本文中。
技术领域
[0003]此描述涉及使用虚拟到物理映射以与数据存储装置进行直接用户空间通信。

【发明内容】

[0004]在一个一般方面,一种数据存储装置包含多个快闪存储器装置,其中快闪存储器装置中的每一者被布置成具有用于存储数据的多个页的多个块。数据存储装置包含与快闪存储器装置操作地耦合的存储器控制器。存储器控制器经配置以从主机装置接收虚拟到物理存储器地址转换映射,其中物理存储器地址包含主机装置上的存储器的物理地址。存储器控制器经配置以将虚拟到物理存储器地址转换映射存储在存储器控制器上的存储器模块中,直接从在主机装置上运行的应用程序接收命令,其中命令包含引用主机装置上的存储器的虚拟存储器地址,及使用虚拟到物理存储器地址转换映射将虚拟存储器地址转换为物理存储器地址。
[0005]实施方案可包含以下特征中的一或多者。例如,存储器控制器可经配置以通过多个队列中的一者直接从在主机装置上运行的应用程序接收命令。多个队列之间可共享虚拟到物理存储器地址转换映射。命令可包含具有偏移的虚拟存储器地址。存储器控制器可经配置以从主机装置接收多个虚拟到物理存储器地址转换映射,其中虚拟到物理存储器地址转换映射中的每一者对应于多个队列中的一者且命令包含具有偏移的虚拟存储器地址。存储器控制器可经配置以从主机装置接收多个虚拟到物理存储器地址转换映射,其中多个队列之间共享虚拟到物理存储器地址转换映射且命令包含具有偏移的虚拟存储器地址。存储器控制器上的存储器模块可包含动态随机存取存储器(DRAM),且存储器控制器包含存储器地址转换器,其中存储器地址转换器经配置以使用存储在DRAM中的虚拟到物理存储器地址转换映射将虚拟存储器地址转换为物理存储器地址。
[0006]在另一个一般方面,一种方法包含在存储器控制器处从主机装置接收虚拟到物理存储器地址转换映射,其中物理存储器地址包含主机装置上的存储器的物理地址。所述方法包含将虚拟到物理存储器地址转换映射存储在存储器控制器上的存储器模块中,直接从在主机装置上运行的应用程序接收命令,其中命令包含引用主机装置上的存储器的虚拟存储器地址,及使用虚拟到物理存储器地址转换映射将虚拟存储器地址转换为物理存储器地址。
[0007]实施方案可包含以下特征中的一或多者。例如,接收命令可包含通过多个队列中的一者直接从在主机装置上运行的应用程序接收命令。所述方法可包含在多个队列之间共享虚拟到物理存储器地址转换映射。命令可包含具有偏移的虚拟存储器地址。从主机装置接收虚拟到物理存储器地址转换映射可包含从主机装置接收多个虚拟到物理存储器地址转换映射,其中虚拟到物理存储器地址转换映射中的每一者可对应于多个队列中的一者,且命令可包含具有偏移的虚拟存储器地址。从主机装置接收虚拟到物理存储器地址转换映射可包含从主机装置接收多个虚拟到物理存储器地址转换映射,多个队列之间可共享虚拟到物理存储器地址转换映射,且命令可包含具有偏移的虚拟存储器地址。
[0008]在另一个一般方面,一种系统包含经配置以产生虚拟到物理存储器地址转换映射的主机装置。主机装置包含存储器及在主机上运行的至少一个应用程序。系统包含与主机装置操作地耦合的数据存储装置。数据存储装置包含多个快闪存储器装置,其中快闪存储器装置中的每一者被布置成具有用于存储数据的多个页的多个块。数据存储装置包含与快闪存储器装置操作地耦合的存储器控制器。存储器控制器经配置以从主机装置接收虚拟到物理存储器地址转换映射,其中物理存储器地址包含主机装置上的存储器的物理地址,将虚拟到物理存储器地址转换映射存储在存储器控制器上的存储器模块中,直接从在主机装置上运行的至少一个应用程序接收命令,其中命令包含引用主机装置上的存储器的虚拟存储器地址,及使用虚拟到物理存储器地址转换映射将虚拟存储器地址转换为物理存储器地址。
[0009]实施方案可包含以下特征中的一或多者。例如,主机装置可包含多个队列,且存储器控制器可经配置以通过多个队列中的一者直接从在主机装置上运行的应用程序接收命令。多个队列之间可共享虚拟到物理存储器地址转换映射。命令可包含具有偏移的虚拟存储器地址。主机装置可经配置以产生多个虚拟到物理存储器地址转换映射,且存储器控制器可经配置以从主机装置接收多个虚拟到物理存储器地址转换映射,其中虚拟到物理存储器地址转换映射中的每一者对应于多个队列中的一者且命令包含具有偏移的虚拟存储器地址。主机装置可经配置以产生多个虚拟到物理存储器地址转换映射,且存储器控制器可经配置以从主机装置接收多个虚拟到物理存储器地址转换映射,其中多个队列之间共享虚拟到物理存储器地址转换映射且命令包含具有偏移的虚拟存储器地址。存储器控制器上的存储器模块可包含动态随机存取存储器(DRAM),且存储器控制器可包含存储器地址转换器,其中存储器地址转换器经配置以使用存储在DRAM中的虚拟到物理存储器地址转换映射将虚拟存储器地址转换为物理存储器地址。
[0010]附图及以下描述中陈述一或多个实施方案的细节。将从所述描述及图以及权利要求书明白其它特征。
【附图说明】
[0011]图1是说明根据实例实施方案的计算系统的方框图。
[0012]图2是说明根据实例实施方案的另一计算系统的方框图。
[0013]图3是说明根据实例实施方案的实例快闪存储器装置的方框图。
[0014]图4是说明用于与数据存储装置进行直接用户空间通信的示范性过程的示范性流程图。
【具体实施方式】
[0015]此文档描述用于实现在主机装置上运行的应用程序与数据存储装置的直接用户空间通信的系统及技术。数据存储装置可包含多个存储器装置。在主机装置上运行的应用程序可在对数据存储装置的命令中使用虚拟存储器地址,其中虚拟存储器地址引用可被分配给应用程序的主机存储器。主机装置可产生虚拟到物理存储器地址转换映射,且将映射传达到数据存储装置以存储在数据存储装置上且在其上使用。以此方式,在主机装置上运行的应用程序可将命令直接发送到数据存储装置且绕过主机装置上的驱动器/内核空间。数据存储装置上的存储器控制器可使用存储在数据存储装置上的映射将命令中所使用的虚拟存储器地址转换为物理存储器地址,其中物理存储器地址引用主机存储器的实际物理地址。通过使得用户空间应用程序能够直接与数据存储装置通信,可减小主机装置上的中央处理单元(CPU)处理开销且可减小应用程序与数据存储装置之间的通信延迟。
[0016]在一个实例实施方案中,主机装置可包含多个队列。在主机装置上运行的应用程序可使用队列中的一或多者以将命令直接传达到数据存储装置。队列可共享虚拟到物理地址转换映射。此外或替代地,主机可产生被传达且存储在数据存储装置上的多个虚拟到物理地址转换映射,且队列中的每一者可使用映射中的一者。
[0017]图1是说明根据实例实施方案的计算系统100的方框图。计算系统100包含主机计算装置110及数据存储装置120。主机计算装置110及数据存储装置120可使用本文中描述的技术实施。在此实例中,主机110可为可操作地与数据存储装置120耦合的电子装置,且可发出各种类型的命令及/或请求到数据存储装置。主机110可呈现多种形式。作为一些实例,主机110可被实施为个人计算机、膝上型计算机、服务器、平板计算机或上网本计算机。在其它实施方案中,主机I1还可呈现其它形式。数据存储装置120还可呈现多种形式。数据存储装置120可被实施为可结合主机装置(例如主机装置110)工作以存储及/或检索电子数据的多个适当装置。例如,作为一些实例,数据存储装置可为固态驱动器(SSD)(例如基于快闪存储器的SSD)、磁盘驱动器或光盘驱动器。
[0018]如图1中所示,主机110包含存储器111、至少一个处理器117、在主机110上运行的至少一个应用程序113及驱动器/内核115。存储器111可为任何类型的存储器。存储器111可用以存储由至少一个处理器117执行及/或经分配以供至少一个应用程序113使用的指令。应用程序113可包含用户空间应用程序。应用程序113可为任何类型的应用程序。例如,应用程序113可从数据存储装置120请求数据,其中所请求数据将被读取到存储器111中。类似地,应用程序113可将要写入的数据从存储器111发送到数据存储装置120。处理器117可为执行可存储在存储器111中的指令以执行各种动作的任何类型的处理器。驱动器/内核115可为用于管理主机计算装置110的处理、存储器及输入/输出资源的操作系统的组件。驱动器/内核115可用于管理应用程序113与硬件元件(例如存储器111及处理器117)之间的资源。一或多个驱动器可被实施为驱动器/内核115的部分。
[0019]如图1中所示,数据存储装置120包含存储器控制器130、存储器装置信道接口140 (也称作存储器装置信道)及存储器装置150。存储器装置150可使用多种不同类型的存储器装置实施。例如,存储器装置150可使用快闪存储器装置(例如,NAND快闪存储器装置)或其它类型的非易失性存储器装置 实施。在某些实施方案中,可使用易失性存储器装置,例如随机存取存储器装置。为了本发明目的,本文中描述的各个实施方案将原则上被讨论为使用快闪存储器装置实施。然而,将明白,其它方法是可能的且可使用其它类型的存储器装置以实施本文中描述的实施方案。
[0020]在计算系统100中以及在本文中描述的其它实施方案中,存储器控制器130可从主机计算装置110获得存储器操作命令。当将快闪存储器装置用作存储器装置150来实施数据存储装置120时,由存储器控制器130获自主机计算装置110的存储器操作命令可包含快闪存储器读取命令、快闪存储器写入命令及快闪存储器擦除命令以及其它类型的快闪存储器命令(例如移动命令及/或复制命令)。为了本发明目的,术语存储器操作命令、存储器操作及存储器命令可互换使用以描述用于执行数据存储装置中的一或多个数据存储功能的机器可读指令(例如从主机计算装置到数据存储装置)。
[0021]在计算系统100中,存储器装置150可包含被组织到多个存储器信道中的多个存储器装置,例如快闪存储器装置。在此方法中,存储器信道中的每一者可包含一或多个个别存储器装置。取决于特定实施方案,给定的存储器信道的个别存储器装置可在个别装置封装中实施,或替代地,给定的存储器信道的多个存储器装置可包含于单个装置封装中。
[0022]例如,在实例实施方案中,数据存储装置120可包含多个存储器信道。在此方法中,存储器控制器130可使用单独存储器装置信道接口 140与每一存储器信道的存储器装置150通信。每一存储器装置信道接口 140可包含经配置以促进相应存储器信道的存储器装置150与存储器控制器130之间的通信的相应信道控制器。例如,此类信道控制器可经配置以管理存储器控制器130与给定的存储器信道的存储器装置150之间的共享总线,包含传达存储器操作命令、芯片选择信息以及管理存储器控制器130与存储器装置150之间通过对应存储器装置信道接口 140进行的其它数据及控制信息的通信。
[0023]在一个示范性实施方案中,存储器控制器130及其它组件可安置在印刷电路板上,且存储器装置150可安置在一或多个其它印刷电路板上。印刷电路板可组装在一起。
[0024]在一个示范性实施方案中,可使用高速链路155以连接主机计算装置110及数据存储装置120。链路155可为物理连接或其可为逻辑连接。例如,链路155可为PC1-e链路以连接在主机计算装置110与数据存储装置120之间并路由主机计算装置110及数据存储装置120之间的信号。
[0025]在一个实例实施方案中,存储器控制器130可直接从在主机110上运行的至少一个应用程序113获得存储器操作命令。以此方式,应用程序113可绕过主机110上的驱动器/内核115且将命令直接传达到数据存储装置120上的存储器控制器130。为了使得应用程序113能够直接与存储器控制器通信,存储器控制器103可包含存储器模块160。在一个实例实施方案中,存储器模块160可为动态随机存取存储器(DRAM)。在其它实例实施方案中,存储器模块160可包含其它类型的存储器。
[0026]主机110可产生虚拟到物理存储器地址转换映射,其在此文档中可称作映射或表。虚拟存储器地址可在应用程序113的空间中,且主机110将此类虚拟存储器地址映射到主机110上的存储器111的物理存储器地址。具体地说,应用程序113可选择应用程序113的由主机110指派给所述应用程序的虚拟存储器的范围,应用程序113的输入-输出
(1)缓冲器将驻留在所述范围中。应用程序113可将此地址范围传递到主机110上的驱动器/内核115。主机110上的驱动器/内核115可标记存储器位置,因此所分配的存储器不会被移动或改变,且可为所述存储器范围建立映射,且主机110可将映射传达到数据存储装置120。
[0027]数据存储装置120可从主机110接收映射165,且可将映射165存储在存储器模块160中。存储器控制器130可直接从应用程序113接收命令,其中所接收的命令包含虚拟存储器地址。存储器控制器130可使用映射165将虚拟存储器地址转换为物理存储器地址。以此方式,视具体情况而定,与直接从应用程序113接收的命令有关的数据可存储在主机110上的存储器111中的适当物理存储器位置中或被从所述适当物理存储器位置检索。通过在数据存储装置120上的存储器控制器130中执行虚拟地址到物理地址转换,可绕过主机上的驱动器/内核115,因为驱动器/内核115及处理器117无需使用处理能力来执行转换中的任一者以将虚拟地址映射到存储器111的物理存储器地址。
[0028]主机110可使用将映射165写入到存储器模块160的写入命令将映射165传达到数据存储装置120。写入命令可指定在存储器模块160中的何处存储映射165。可由存储器控制器130执行对映射的更新。主机110可将映射165从存储器模块160读回到主机110以存储在例如存储器111中。以此方式,主机110可控制映射165的产生及映射165在主机110与存储器控制器130之间的传达。
[0029]主机110还可产生逻辑地址到物理地址转换映射,其可在此文档中称作映射或表。逻辑地址及物理地址是指数据存储装置120上的存储器装置150的地址。当发送引用存储器装置150上的数据的命令到数据存储装置时,逻辑地址可由例如主机110上的应用程序113使用。逻辑地址需要被转换为实际物理地址(例如存储器装置150上的存储器块中的特定页)以对由逻辑地址在命令中引用的正确数据执行动作。主机110产生逻辑地址到物理地址转换映射且将映射167传达到数据存储装置120上的存储器控制器130。
[0030]在一个实施方案中,主机110可对数据存储装置120上的存储器装置150中的每一者产生逻辑地址到物理地址转换映射。以此方式,数据存储装置上的每一存储器装置具有其自身的相应转换映射。主机110可将映射中的每一者传达到存储器控制器130。
[0031]存储器控制器130从主机110接收映射167且将映射167存储在存储器模块160中。在多个映射的情况中,当每一存储器装置存在一个映射时,存储器控制器130将多个映射存储在存储器模块160中。存储器控制器130可直接从应用程序113接收命令,其中所接收的命令可在引用存储器模块150时使用逻辑存储器地址。存储器控制器130使用映射167将逻辑地址转换为物理地址,其中物理地址引用存储器模块150上的实际物理位置。以此方式,与直接从应用程序113接收的命令有关的数据可存储在数据存储装置120上的存储器装置150中的适当物理存储器位置或被从所述适当物理存储器位置检索。通过在数据存储装置120上的存储器控制器130中执行逻辑地址到物理地址转换,可绕过主机上的处理器117,因为处理器117无需使用处理能力来执行转换中的任一者以将逻辑地址映射到存储器模块150的物理地址。
[0032]主机110可使用将映射167写入到存储器模块160的写入命令将映射167传达到数据存储装置120。写入命令可指定在存储器模块160中的何处存储映射167。可由存储器控制器130执行映射更新。主机110可将映射167从存储器模块160读回到主机110以存储在例如存储器111中。以此方式,主机110可控制映射167的产生及主机110与存储器控制器130之间的映射167的传达。
[0033]图2是说明根据实例实施方案的计算系统200的方框图。图2中所示的计算系统200包含类似于图1中所示的计算系统100的元件。类似于计算系统100的元件的计算系统200的元件是以与图1中所示的100系列参考数字对应的200系列参考数字指示。例如,计算系统200包含主机计算装置210及数据存储装置220。数据存储装置220包含存储器控制器230、存储器装置通信信道240 (240a到240c)、存储器装置250 (250a到250f)。链路255连接在主机计算装置210与数据存储装置220之间并路由主机计算装置210及数据存储装置220之间的信号。链路255可为物理连接或逻辑连接。存储器控制器230包含存储器模块260,其可存储多个映射265a到265c及映射267。在此实例中,主机计算装置210包含存储器211、多个应用程序213a到213c、驱动器/内核215及处理器217。
[0034]图2中所示的计算系统200 (以及本文中描述的其它实施方案)的各个元件是通过说明方式提供。计算系统200 (及本文中描述的其它实施方案)可包含其它元件或方面。例如,计算系统200可包含经配置以在主机装置210与存储器控制器230及/或存储器装置250a到250f之间传达数据的数据路径元件。此类数据路径组件可包含例如一或多个总线接口及/或直接存储器存取(DMA)控制器以及多个其它可能组件。寄存器261可辅助实现应用程序213a到213c与存储器控制器230及/或存储器装置250a到250f之间的直接路径通信。此外,计算系统200还可包含除了图2中所示的元件以外的额外控制路径元件。将明白,计算系统200的特定组件及/或方面以及本文中描述的其它实施方案将至少部分取决于特定实施方案。
[0035]在计算系统200中,主机计算装置210、存储器控制器230、存储器装置信道240及存储器装置250可经配置以实施多个存储器分区。在图2中所示的实施方案中,实施三个存储器分区:分区_A、分区_B及分区_C。在其它实施方案中,可实施额外或更少分区。
[0036]如图2中所示,主机计算装置210包含与计算系统200中实施的每一存储器分区相关联的一或多个队列(其可称作主机存储器操作队列或分区队列或分区)。例如,主机计算装置210包含分区_A队列 212、分区_B队列214及分区_C队列216。在主机计算装置210中,分区_A队列212包含队列212a、队列212b及队列212c ;分区_B队列214只包含单个队列214a ;且分区_C队列216包含队列216a及队列216b。在其它实施方案中,可对每一存储器分区使用额外或更少队列。在计算系统200中,可使用存储器分区队列212到216以将由主机计算装置210产生的存储器操作命令排队,所述命令正等待被传达到存储器控制器230以供存储器装置250执行。
[0037]在计算系统200中,主机计算装置210上的应用程序213a到213c可与分区队列(即,分区_A队列212、分区_B队列214及分区_C队列216)中的一者相关联。寄存器261可被配置成寄存器的页,使得对于分区队列中的每一者有单独页。分区队列212到216与寄存器261协作可实现应用程序213a到213c与数据存储装置220之间的直接通信路径。
[0038]在一个实例实施方案中,特定存储器分区内的个别队列可用于不同类型的存储器操作命令。例如,存储器分区内的一个个别队列可用于读取存储器操作命令且相同存储器分区内的另一个别队列可用于写入存储器操作命令。例如,分区_C 216包含两个个别队列216a及216b。队列216a可用于读取存储器操作命令且队列216b可用于与应用程序213c相关联的写入存储器操作命令。对于相同存储器分区内具有多个个别队列的分区,所述个别队列除了用于读取存储器操作命令及写入存储器操作命令以外还可用于其它类型的命令。
[0039]如图2中所示,计算系统200的存储器控制器230包含队列仲裁器231、解码器/转换器232、命令调度器233、命令队列组234、235及236、存储器装置信道接口 240a到240c及快闪存储器装置250a到250f。如图2中所示,每一存储器装置250a到250f与计算系统200的三个存储器分区中的一者(如图2中指示的A、B或C)相关联。图2中所示的特定布置是通过实方式例给出且其它布置是可能的。例如,存储器装置跨存储器分区的分布可有所侧重。例如,存储器装置250a到250f中的四个存储器装置可被指派给分区_A,而只有存储器装置250a到250f中的单个存储器装置可分别被指派给分区_B及分区_C中的每一者。当然,计算系统200可包含额外或更少存储器装置,且还可实施额外或更少存储器分区,其中存储器分区可接着例如使用本文中描述的技术在多个不同布置中实施。
[0040]如上文指示,在计算系统200中,存储器控制器220的队列仲裁器231可经配置以从主机装置210获得存储器操作命令以供存储器装置以多种方式执行。例如,在一个实施方案中,队列仲裁器231可经配置以根据例如使用本文中描述的技术在数据存储装置中实施的多个存储器分区的分区工作时间表从主机装置获得存储器操作命令。在一个实施方案中,此分区工作时间表可基于每一相应存储器分区的所分配存储器操作命令时间片(slot)的可用性。
[0041]如上文关于图1讨论,主机210可产生虚拟到物理存储器地址转换映射265a到265c(其与主机210上的存储器211的存储器地址有关)及逻辑到物理地址转换映射267 (其与数据存储装置220上的存储器装置250a到250f的存储器地址有关)。主机210可将映射265a到265c及267传达到存储器控制器230以存储在存储器模块260中。虽然逻辑到物理地址转换映射267在图2中被说明为单个方框,但是映射267可包含多个映射,其中对于存储器装置250a到250f中的每一者存在单个逻辑地址到物理地址转换映射。
[0042]在一个实例实施方案中,主机210上的应用程序213a到213c可共享虚拟到物理存储器地址转换映射265a、265b或265c中的一者。以此方式,每一相应应用程序213a到213c的分区队列212到216 (或队列)可共享存储在存储器控制器230上的单个映射,在存储器控制器230中发生虚拟到物理地址转换。具体地说,主机210上的驱动器/内核215可对应用程序213a到213c及其相应分区队列212到216产生虚拟到物理存储器地址转换映射,且将映射传达到存储器模块260以存储在存储器模块260上。当通过应用程序213a到213c的相应分区队列212到216直接从应用程序213a到213c中的一者接收命令时,解码器/转换器232可使用所共享的映射265a、265b或265c将命令中指定的虚拟存储器地址转换为物理存储器地址,其中物理存储器地址指定主机210上的存储器211中的位置。
[0043]在共享映射的背景下,发送命令的应用程序可使用应用于虚拟存储器地址的偏移。偏移可由应用程序计算,且解码器/转换器232可应用偏移以在映射中查找物理存储器地址。
[0044]在另一实例实施方案中,主机210上的应用程序213a到213c中的每一者及其相应分区队列212到216可各自具有对应的虚拟到物理地址存储器地址转换映射265a到265c。主机210上的驱动器/内核215可对应用程序213a到213c中的每一者产生虚拟到物理存储器地址转换映射,且将映射传达到存储器模块260以存储在存储器模块260上。当通过应用程序213a到213c的相应分区队列212到216直接从应用程序213a到213c中的一者接收命令时,解码器/转换器232可使用为特定应用程序产生的相应映射265a到265c将命令中指定的虚拟存储器地址转换为物理存储器地址。
[0045]计算系统200的命令调度器233可与队列仲裁器231 (例如经由解码器/转换器232或直接)操作地耦合,其中命令调度器233经配置以依与队列仲裁器231从主机装置210获得命令的次序相同的次序从队列仲裁器231接收存储器操作命令(或所述存储器操作命令的子命令的集合)。命令调度器233可经进一步配置以单独且分别地将用于多个存储器装置250中的每一者的存储器操作命令排队。
[0046]在计算系统200中,命令调度器233可经进一步配置以例如基于逻辑存储器地址将存储器命令调度到如由解码器/转换器232确定的存储器命令的相应命令队列234到236。在计算系统200中,命令调度器232可经配置以基于在命令队列234到236中的相应命令队列中的队列时间片的可用性调度对于给定的存储器装置250的相应存储器操作。
[0047]此外参考图3,方框图说明根据实例实施方案的可用于图1及2的计算系统的快闪存储器装置350。例如,快闪存储器装置350可用以实施图1中所示的计算系统100的存储器装置150及/或图2中所示的计算系统200的快闪存储器装置250。如图3中说明,快闪存储器装置350包含多个快闪存储器块,例如快闪存储器块360。虽然快闪存储器装置350中只展示三个快闪存储器块,但是如图3中指示,快闪存储器装置350可包含额外快闪存储器块。又如图3中所示,快闪存储器装置350的每一快闪存储器块可包含多个快闪存储器页,例如快闪存储器页371、373及375。正如快闪存储器装置350的快闪存储器块,虽然对于快闪存储器装置350的每一快闪存储器块只展示三个快闪存储器页,但是如图3中指示,每一快闪存储器块可包含额外快闪存储器页。
[0048]图1的映射167及图2的映射267可用以将来自主机的命令中使用的逻辑地址转换为指定快闪装置(例如图3中说明的快闪装置350)上的一或多个页的特定位置的物理地址。
[0049]参考图4,示范性流程图使用上文关于图1到3描述的系统及组件说明示范性过程400。过程400包含在存储器控制器处从主机装置接收虚拟到物理存储器地址转换映射,其中物理存储器地址包含主机装置上的存储器的物理地址(410)。例如,存储器控制器130可从主机装置110接收虚拟到物理存储器地址转换映射165。物理存储器地址可包含主机110上的存储器111中的物理地址。映射165可由主机110产生且被传递到存储器控制器130。
[0050]过程400包含将虚拟到物理存储器地址转换映射存储在存储器控制器上的存储器模块中(420)。例如,存储器模块160可存储映射165。在一个实例实施方案中,存储器模块160可包含DRAM。
[0051]过程400包含直接从在主机装置上运行的应用程序接收命令,其中命令包含引用主机装置上的存储器的虚拟存储器地址(430)。例如,存储器控制器130可直接从主机110上的应用程序113接收命令,其中由应用程序113产生且发送的命令包含引用主机装置110上的存储器111的虚拟存储器地址。应用程序113可直接将命令发送到数据存储装置120而无需经过主机110上的驱动器/内核。
[0052]过程400包含使用虚拟到物理地址存储器转换映射将虚拟存储器地址转换为物理存储器地址(440)。例如,解码器/转换器232可使用虚拟到物理地址存储器转换映射165将虚拟存储器地址转换为物理存储器地址。在一些实施方案中,主机110可包含多个应用程序及对应于应用程序的多个队列。应用程序及其相应队列可共享映射中的一者及/或可各自具有其自身的相应映射。
[0053]本文中描述的各种技术的实施方案可实施于数字电子电路系统中,或实施于计算机硬件、固件、软件中,或实施于其组合中。实施方案可被实施为计算机程序产品,即有形地具体化于信息载体中(例如机器可读存储装置中)以供数据处理设备(例如可编程处理器、计算机或多个计算机)执行或控制所述数据处理设备的操作的计算机程序。例如上述计算机程序的计算机程序可以任何形式的编程语言(包含编译或解释语言)加以编写,且可以任何形式加以部署,包含被部署为独立程序,或被部署为模块、组件、子例程,或适合用于计算环境中的其它单元。计算机程序可经部署以在一个计算机 上或在一个地点处或跨多个地点分布且由通信网络互连的多个计算机上执行。
[0054]方法步骤可由执行计算机程序以通过对输入数据操作且产生输出来执行功能的一或多个可编程处理器执行。方法步骤还可由专用逻辑电路系统(例如现场可编程门阵列(FPGA)或专用集成电路(ASIC))执行,且设备可被实施为专用逻辑电路系统(例如现场可编程门阵列(FPGA)或专用集成电路(ASIC))。
[0055]适合于执行计算机程序的处理器包含例如通用及专用微处理器两者,及任何种类的数字计算机的任何一或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令及数据。计算机的元件可包含用于执行指令的至少一个处理器,及用于存储指令及数据的一或多个存储器装置。通常,计算机还可包含用于存储数据的一或多个大容量存储装置(例如磁盘、磁光盘或光盘),或经可操作地耦合以从所述一或多个大容量存储装置接收数据或将数据传送到所述一或多个大容量存储装置(或接收与传送两者)。适合于具体化计算机程序指令及数据的信息载体包含所有形式的非易失性存储器,非易失性存储器包含例如:半导体存储器装置,例如EPR0M、EEPR0M及快闪存储器装置;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CD-ROM及DVD-ROM光盘。处理器及存储器可由专用逻辑电路系统增补,或并入在专用逻辑电路系统中。
[0056]为了提供与用户的交互,可在具有用于向用户显示信息的显示装置(例如阴极射线管(CRT)或液晶显示器(IXD)监视器)以及键盘及指针装置(例如鼠标、轨迹球)(用户可通过键盘及指针装置将输入提供给计算机)的计算机上实施多个实施方案。其它种类的装置还可用以提供与用户的交互;例如,提供给用户的反馈可为任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;且可以任何形式(包含声学、语音或触觉输入)接收来自用户的输入。
[0057]可在计算系统中实施多个实施方案,所述计算系统包含后端组件(例如作为数据服务器),或包含中间件组件(例如应用程序服务器),或包含前端组件(例如客户端计算机,其具有图形用户接口或网页浏览器,用户可通过图形用户接口或网页浏览器而与实施方案交互),或此类后端、中间件或前端组件的任何组合。组件可通过数字数据通信的任何形式或媒体(例如通信网络)而互连。通信网络的实例包含局域网(LAN)及广域网(WAN),例如互联网。
[0058]虽然已如本文中所描述而说明所描述的实施方案的某些特征,但是所属领域的技术人员现在将想到许多修改、替代、变化及等效物。因此应理解,随附权利要求书旨在涵盖如属于实施方案的范围的所有此类修改及变化。
【主权项】
1.一种数据存储装置,其包括: 多个快闪存储器装置,所述快闪存储器装置中的每一者被布置成具有用于存储数据的多个页的多个块;以及 与所述快闪存储器装置操作地耦合的存储器控制器,所述存储器控制器经配置以:从主机装置接收虚拟到物理存储器地址转换映射,其中物理存储器地址包含所述主机装置上的存储器的物理地址; 将所述虚拟到物理存储器地址转换映射存储在所述存储器控制器上的存储器模块中; 直接从在所述主机装置上运行的应用程序接收命令,其中所述命令包含引用所述主机装置上的所述存储器的虚拟存储器地址;以及 使用所述虚拟到物理存储器地址转换映射将所述虚拟存储器地址转换为物理存储器地址。2.根据权利要求1所述的数据存储装置,其中所述存储器控制器经配置以通过多个队列中的一者直接从在所述主机装置上运行的所述应用程序接收命令。3.根据权利要求2所述的数据存储装置,其中所述多个队列之间共享所述虚拟到物理存储器地址转换映射。4.根据权利要求2或3所述的数据存储装置,其中所述命令包含具有偏移的虚拟存储器地址。5.根据权利要求2所述的数据存储装置,其中所述存储器控制器经配置以从所述主机装置接收多个虚拟到物理存储器地址转换映射,其中所述虚拟到物理存储器地址转换映射中的每一者对应于所述多个队列中的一者且所述命令包含具有偏移的虚拟存储器地址。6.根据权利要求2所述的数据存储装置,其中所述存储器控制器经配置以从所述主机装置接收多个虚拟到物理存储器地址转换映射,其中所述多个队列之间共享所述虚拟到物理存储器地址转换映射且所述命令包含具有偏移的虚拟存储器地址。7.根据前述权利要求中任一权利要求所述的数据存储装置,其中所述存储器控制器上的所述存储器模块包含动态随机存取存储器DRAM,且所述存储器控制器包含存储器地址转换器,其中所述存储器地址转换器经配置以使用存储在所述DRAM中的所述虚拟到物理存储器地址转换映射将所述虚拟存储器地址转换为物理存储器地址。8.一种方法,其包括: 在存储器控制器处从主机装置接收虚拟到物理存储器地址转换映射,其中物理存储器地址包含所述主机装置上的存储器的物理地址; 将所述虚拟到物理存储器地址转换映射存储在所述存储器控制器上的存储器模块中; 直接从在所述主机装置上运行的应用程序接收命令,其中所述命令包含引用所述主机装置上的所述存储器的虚拟存储器地址;以及 使用所述虚拟到物理存储器地址转换映射将所述虚拟存储器地址转换为物理存储器地址。9.根据权利要求8所述的方法,其中接收所述命令包含通过多个队列中的一者直接从在所述主机装置上运行的所述应用程序接收所述命令。10.根据权利要求9所述的方法,其进一步包括在所述多个队列之间共享所述虚拟到物理存储器地址转换映射。11.根据权利要求9或10所述的方法,其中所述命令包含具有偏移的虚拟存储器地址。12.根据权利要求9所述的方法,其中: 从主机装置接收所述虚拟到物理存储器地址转换映射包含从所述主机装置接收多个虚拟到物理存储器地址转换映射, 所述虚拟到物理存储器地址转换映射中的每一者对应于所述多个队列中的一者,且 所述命令包含具有偏移的虚拟存储器地址。13.根据权利要求9所述的方法,其中: 从主机装置接收所述虚拟到物理存储器地址转换映射包含从所述主机装置接收多个虚拟到物理存储器地址转换映射, 所述多个队列之间共享所述虚拟到物理存储器地址转换映射,且 所述命令包含具有偏移的虚拟存储器地址。14.一种系统,其包括: 经配置以产生虚拟到物理存储器地址转换映射的主机装置,所述主机装置包含存储器及在所述主机上运行的至少一个应用程序;以及 与所述主机装置操作地耦合的数据存储装置,所述数据存储装置包括: 多个快闪存储器装置,所述快闪存储器装置中的每一者被布置成具有用于存储数据的多个页的多个块;以及 与所述快闪存储器装置操作地耦合的存储器控制器,所述存储器控制器经配置以: 从所述主机装置接收所述虚拟到物理存储器地址转换映射,其中物理存储器地址包含所述主机装置上的所述存储器的物理地址; 将所述虚拟到物理存储器地址转换映射存储在所述存储器控制器上的存储器模块中; 直接从在所述主机装置上运行的所述至少一个应用程序接收命令,其中所述命令包含引用所述主机装置上的所述存储器的虚拟存储器地址;以及 使用所述虚拟到物理存储器地址转换映射将所述虚拟存储器地址转换为物理存储器地址。15.根据权利要求14所述的系统,其中: 所述主机装置包含多个队列;以及 所述存储器控制器经配置以通过所述多个队列中的一者直接从在所述主机装置上运行的所述应用程序接收命令。16.根据权利要求15所述的系统,其中所述多个队列之间共享所述虚拟到物理存储器地址转换映射。17.根据权利要求15或16所述的系统,其中所述命令包含具有偏移的虚拟存储器地址。18.根据权利要求15所述的系统,其中: 所述主机装置经配置以产生多个虚拟到物理存储器地址转换映射;以及 所述存储器控制器经配置以从所述主机装置接收所述多个虚拟到物理存储器地址转换映射,其中所述虚拟到物理存储器地址转换映射中的每一者对应于所述多个队列中的一者且所述命令包含具有偏移的虚拟存储器地址。19.根据权利要求15所述的系统,其中: 所述主机装置经配置以产生多个虚拟到物理存储器地址转换映射;以及 所述存储器控制器经配置以从所述主机装置接收所述多个虚拟到物理存储器地址转换映射,其中所述多个队列之间共享所述虚拟到物理存储器地址转换映射且所述命令包含具有偏移的虚拟存储器地址。20.根据权利要求14到19中任一权利要求所述的系统,其中所述存储器控制器上的所述存储器模块包含动态随机存取存储器DRAM,且所述存储器控制器包含存储器地址转换器,其中所述存储器地址转换器经配置以使用存储在所述DRAM中的所述虚拟到物理存储器地址转换映射将所述虚拟存储器地址转换为物理存储器地址。
【专利摘要】本发明揭示一种数据存储装置,其包含多个快闪存储器装置,其中快闪存储器装置中的每一者被布置成具有用于存储数据的多个页的多个块。数据存储装置包含与快闪存储器装置操作地耦合的存储器控制器。存储器控制器经配置以从主机装置接收虚拟到物理存储器地址转换映射,其中物理存储器地址包含主机装置上的存储器的物理地址。存储器控制器经配置以将虚拟到物理存储器地址转换映射存储在存储器控制器上的存储器模块中,直接从在主机装置上运行的应用程序接收命令,其中命令包含引用主机装置上的存储器的虚拟存储器地址,且使用虚拟到物理存储器地址转换映射将虚拟存储器地址转换为物理存储器地址。
【IPC分类】G06F12/02, G06F3/06
【公开号】CN104903868
【申请号】CN201380064261
【发明人】阿尔贝特·T·博尔歇斯, 本杰明·S·格尔布, 托马斯·J·诺里, 安德鲁·T·斯温
【申请人】谷歌公司
【公开日】2015年9月9日
【申请日】2013年12月9日
【公告号】EP2929438A1, US9069658, US20140164676, WO2014093220A1

最新回复(0)