CN105354154A - 零cpu负载实现存储系统命令传输的装置和方法 - Google Patents
零cpu负载实现存储系统命令传输的装置和方法 Download PDFInfo
- Publication number
- CN105354154A CN105354154A CN201510696564.8A CN201510696564A CN105354154A CN 105354154 A CN105354154 A CN 105354154A CN 201510696564 A CN201510696564 A CN 201510696564A CN 105354154 A CN105354154 A CN 105354154A
- Authority
- CN
- China
- Prior art keywords
- request command
- level
- order
- storage system
- read
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明提供零CPU负载实现存储系统命令传输的装置,包括存储系统和传输模块,传输模块包括请求命令寄存器、完成命令寄存器、第一级请求命令缓冲器、第二级完成命令缓冲器、读写主设备等。零CPU负载实现存储系统命令传输的方法,由独立于存储系统的读写主设备在客户端和存储系统之间传输命令和命令的相关数据,传输过程无需存储系统的CPU参与。本发明提供的零CPU负载实现存储系统命令传输的装置以及零CPU负载实现存储系统命令传输的方法,客户端和存储系统之间传输命令和命令的相关数据的过程完全不需要存储系统的CPU参与,实现了存储系统CPU的零负载,能够极大提高存储系统的运行速度。
Description
技术领域
本发明属于存储技术领域,具体说涉及一种零CPU负载实现存储系统命令传输的装置和方法。
背景技术
随着存储技术的发展,越来越多的存储系统采用“控制器——存储单元”的结构。存储单元是存储系统的基本单位,通常每套存储系统具有多个存储单元,并通过一个或多个控制器管理这些存储单元,不同存储单元可以为不同用户提供存储服务。在闪存存储系统中这种结构更为常见。闪存是一种非易失性存储器,即断电后数据也不会丢失。闪存的写入操作必须在空白区域进行,如果目标区域已经有数据,则须先擦除后写入。相比传统的磁盘,闪存具有功耗更低、存储速度更快、存储数据更加安全等优点,以闪存为介质的固态硬盘非常适合于存储系统。
闪存存储系统的控制器是系统的核心,是联系用户和闪存存储单元的桥梁。目前常见的闪存存储系统的控制器由CPU(中央处理器)、内部总线和各种功能模块组成。
现有的闪存存储系统在工作中,每当一个闪存存储单元完成一个命令操作后都会发出中断给CPU,或者CPU通过查询DMA(DirectMemoryAccess,存储器直接访问)控制器或者闪存控制器状态,执行中断程序。当对多个闪存存储单元进行操作时,CPU会收到多个中断,产生很高的CPU负载,这样必然会影响存储系统的运行速度。如何解决上述问题,目前的报道尚不多见。
在说明书“背景技术”部分公开的内容,有助于本领域技术人员理解本发明的技术方案,但不应据此认为这些内容一定属于现有技术或公知常识。
发明内容
本发明提供一种零CPU负载实现存储系统命令传输的装置,该装置与客户端、存储系统及传输模块相关。
本发明所述的客户端,指能够向存储系统发出存储服务命令和相关数据的设备或装置。所述的存储服务命令,指与数据存储相关的命令,常见的命令包括数据擦除、数据写入、数据读取、读取存储系统(或存储单元)状态、数据复位等单一命令及由多个单一命令组合的复合命令。存储服务命令的相关数据,指与各种存储服务命令相对应的数据,如需要写入存储系统的数据和需要从存储系统读取的数据。存储系统处理收到的存储服务命令和相关数据后会向客户端反馈对应的处理结果和相关数据,相应的客户端也具有接收这些处理结果和相关数据的能力。
本发明所述的存储系统,指能够响应客户端发出的存储服务命令,处理存储服务命令和相关数据,反馈对应的处理结果和相关数据的设备或装置。为了实现本发明技术方案,存储系统具有“控制器——存储单元”的结构。
本发明技术方案中,将客户端发出的各种存储服务命令简称为“请求命令”,将存储系统反馈的处理结果简称为“完成命令”,将请求命令和完成命令统称为“命令”。将“请求命令”区分为“一级请求命令”和“二级请求命令”,同样将“完成命令”区分为“一级完成命令”和“二级完成命令”。客户端具有请求命令存储区、完成命令存储区、数据存储区三个存储区域,分别存储准备发出的请求命令、收到的完成命令以及命令的相关数据。在本发明技术方案中,完成命令仅是对请求命令是否成功执行的反馈,和相关数据的处理并不必然是同步的(例如,客户端向存储系统写入数据,客户端写入数据的请求命令发出后,存储系统已经正确执行了该请求命令,相关的数据已经写入,但存储系统反馈数据成功写入的完成命令可能在数据成功写入很久之后才生成并发出),因此本发明技术方案中涉及到的命令的相关数据均为请求命令的相关数据,与完成命令无关。
本发明所述的传输模块,指独立于客户端和存储系统,能够在客户端和存储系统之间传输请求命令、完成命令及请求命令的相关数据的设备或装置。
零CPU负载实现存储系统命令传输的装置,包括存储系统和传输模块,存储系统包括一个或多个(多个指两个或两个以上)控制器、一个或多个存储单元,状态寄存器组。传输模块包括请求命令寄存器、完成命令寄存器、请求命令寄存器解码器、完成命令寄存器解码器、读写主设备、第一级请求命令缓冲器、一个或多个第二级请求命令缓冲器、请求命令解码器、请求命令分发器、完成命令解码器、完成命令编码器、一个或多个第一级完成命令缓冲器、第二级完成命令缓冲器。
以上部件中没有特别说明个数的,通常情况下是一个。
请求命令寄存器,用于存储客户端向存储系统发出的一级请求命令的数量。
完成命令寄存器,用于存储第二级完成命令缓冲器向客户端反馈的二级完成命令的数量。
请求命令寄存器解码器,用于解析请求命令寄存器,触发读写主设备从客户端读取一级请求命令。(客户端向存储系统发出的、读写主设备从客户端请求命令存储区读取的请求命令定义为一级请求命令。)
完成命令寄存器解码器,用于解析完成命令寄存器,触发读写主设备从第二级完成命令缓冲器读取二级完成命令。(读写主设备从第二级完成命令缓冲器中读取的、向客户端反馈的完成命令定义为二级完成命令。)
读写主设备,用于根据请求命令寄存器解码器的触发从客户端读取一级请求命令存储到第一级请求命令缓冲器,还用于根据完成命令寄存器解码器的触发从第二级完成命令缓冲器读取二级完成命令发送到客户端。
请求命令解码器,用于分解第一级请求命令缓冲器中存储的一级请求命令,将分解得到的二级请求命令存储到相关存储单元对应的第二级请求命令缓冲器。(请求命令解码器对一级请求命令分解后得到的请求命令定义为二级请求命令,每条二级请求命令与每个存储单元相对应。)
请求命令分发器,用于将第二级请求命令缓冲器中存储的二级请求命令发送到对应控制器。
第一级请求命令缓冲器,用于存储一级请求命令。
第二级请求命令缓冲器,用于存储二级请求命令。
控制器,用于执行二级请求命令,生成相关存储单元对应的一级完成命令。
完成命令解码器,用于将一级完成命令存储到相关存储单元对应的第一级完成命令缓冲器。(控制器生成的相关存储单元对应的完成命令定义为一级完成命令。)
完成命令编码器,用于将第一级完成命令缓冲器中的一级完成命令汇集,形成二级完成命令,存储到第二级完成命令缓冲器,并将第二级完成命令缓冲器中二级完成命令的数量存储到完成命令寄存器。
第一级完成命令缓冲器,用于存储一级完成命令。
第二级完成命令缓冲器,用于存储二级完成命令。
状态寄存器组,用于反映控制器状态的变化。某一个控制器接收一个二级请求命令或生成一个一级完成命令,其状态都会发生变化,相应的对状态寄存器组进行更新。
作为一种可选择的实施方式,请求命令分发器轮询读取第二级请求命令缓冲器中存储的二级请求命令,依次发送到对应控制器。
作为一种可选择的实施方式,完成命令编码器轮询汇集第一级完成命令缓冲器中的一级完成命令,形成二级完成命令,存储到第二级完成命令缓冲器。
以上所述的轮询,指按照预先设定的顺序逐一访问缓冲器(以所有的缓冲器都被访问了一遍为一个周期,周而复始),如果缓冲器中存储有命令(通常是缓冲器中存储有新的命令),则执行相应操作后访问下一个缓冲器;如果缓冲器中没有命令(通常是缓冲器中没有新的命令),则跳过该缓存器访问下一个缓冲器。
以上所述的缓冲器,可以是随机存取存储器(RandomAccessMemory,RAM)、先进先出(FirstInFirstOut,FIFO)存储器或双倍速率同步动态随机存储器(DoubleDataRate,DDR,包括DDR、DDR2、DDR3、DDR4等多代产品)。
作为一种可选择的实施方式,请求命令分发器发送到对应控制器的二级请求命令是互斥命令。所谓的互斥命令,指每个命令之间是互斥的,即对同一存储单元不会发出两个相同的命令。
以上描述的零CPU负载实现存储系统命令传输的装置,能够在客户端和存储系统之间传输请求命令和完成命令,如果在传输命令时也实现传输请求命令的相关数据,则传输模块还包括数据地址解码器、一个或多个写数据缓冲器、一个或多个写数据地址缓冲器、一个或多个读数据缓冲器、一个或多个读数据地址缓冲器。
数据地址解码器,用于根据控制器状态的变化,读取写数据地址缓冲器或读数据地址缓冲器,对读取到的数据地址进行解析,触发读写主设备进行写数据操作或读数据操作。写数据操作,指读写主设备从客户端的数据缓冲区读取客户端需要写入存储系统的数据,并将该数据存储到对应的写数据缓冲器。读数据操作,指读写主设备从对应的读数据缓冲器读取客户端需要从存储系统读取的数据,发送到客户端的数据缓冲区。
写数据缓冲器,用于缓存客户端需要写入存储系统的数据。
写数据地址缓冲器,用于存储二级请求命令中包含的客户端需要写入存储系统数据的地址(该地址指这些数据在客户端数据存储区中的存储地址)。
读数据缓冲器,用于缓存客户端需要从存储系统读取的数据。
读数据地址缓冲器,用于存储二级请求命令中包含的客户端需要从存储系统读取的数据的地址(该地址指客户端数据存储区中用于存储成功读取后的数据的地址)。
读写主设备,还用于通过数据地址解码器的触发在客户端和存储系统之间传输请求命令的相关数据。
请求命令分发器,还用于将二级请求命令中包含的相关数据的地址发送到写数据地址缓冲器或读数据地址缓冲器。
存储系统的控制器对请求命令的相关数据进行操作时,其状态也会发生变化,同样会对状态寄存器组进行相应的更新。
利用“零CPU负载实现存储系统命令传输的装置”,可以实现“零CPU负载实现存储系统命令传输的方法”。
零CPU负载实现存储系统命令传输的方法,由独立于存储系统的读写主设备在客户端和存储系统之间传输命令和命令的相关数据,传输过程无需存储系统的CPU(这里的CPU应做广义的理解,既包括通常意义上的CPU即中央处理器,也包括一些存储系统中名称不是CPU但执行与CPU类似功能的部件)参与。
对于命令的传输而言,具体的,零CPU负载实现存储系统命令传输的方法,由读写主设备在客户端、第一级请求命令缓冲器、第二级完成命令缓冲器和存储系统之间传输命令。
更具体的,零CPU负载实现存储系统命令传输的方法,包括以下步骤:
客户端将向存储系统发出的一级请求命令的数量存储到请求命令寄存器中;
请求命令寄存器解码器解析请求命令寄存器,触发读写主设备从客户端读取一级请求命令;
读写主设备将从客户端读取的一级请求命令存储到第一级请求命令缓冲器;
请求命令解码器分解第一级请求命令缓冲器中存储的一级请求命令,将分解得到的二级请求命令存储到相关存储单元对应的第二级请求命令缓冲器;
请求命令分发器将第二级请求命令缓冲器中存储的二级请求命令发送到对应控制器;
控制器执行二级请求命令,生成相关存储单元对应的一级完成命令;
完成命令解码器将一级完成命令存储到相关存储单元对应的第一级完成命令缓冲器;
完成命令编码器将第一级完成命令缓冲器中的一级完成命令汇集,形成二级完成命令,存储到第二级完成命令缓冲器,并将第二级完成命令缓冲器中二级完成命令的数量写入完成命令寄存器;
完成命令寄存器解码器解析完成命令寄存器,触发读写主设备从第二级完成命令缓冲器读取完成命令发送到客户端。
对于请求命令的相关数据的传输而言,具体的,零CPU负载实现存储系统命令传输的方法,由读写主设备在客户端、写数据缓冲器、读数据缓冲器和存储系统之间传输命令的相关数据。
更具体的,零CPU负载实现存储系统命令传输的方法,包括以下步骤:
数据地址解码器根据控制器状态的变化,读取写数据地址缓冲器或读数据地址缓冲器,对读取到的数据地址进行解析,触发读写主设备进行写数据操作或读数据操作。
由于“零CPU负载实现存储系统命令传输的装置”和“零CPU负载实现存储系统命令传输的方法”具有明确的关联关系,为了避免不必要的重复,“零CPU负载实现存储系统命令传输的方法”部分的描述进行了必要的省略。通过比较“零CPU负载实现存储系统命令传输的装置”和“零CPU负载实现存储系统命令传输的方法”的描述,本领域技术人员能够对“零CPU负载实现存储系统命令传输的方法”有清晰、完整的认识。
在零CPU负载实现存储系统命令传输的装置的描述中,“包括”、“用于”等词语应按照开放式表达方式理解。例如,存储系统,之前已经给出了本发明所述的存储系统的涵义。存储系统包括控制器、存储单元和状态寄存器组,应理解为存储系统含有控制器、存储单元和状态寄存器组这三类模块,但不一定只有这三类模块。存储系统实现其完整功能,除了本发明说明书中描述的模块外,可能还需要其他模块,本领域技术人员通过现有技术或公知常识,完全可以实现这些模块,故本发明说明书中不再赘述。
本发明提供的零CPU负载实现存储系统命令传输的装置以及零CPU负载实现存储系统命令传输的方法,客户端和存储系统之间传输命令和命令的相关数据的过程完全不需要存储系统的CPU参与,实现了存储系统CPU的零负载,能够极大提高存储系统的运行速度。
附图说明
图1为本发明具体实施方式中零CPU负载实现存储系统命令传输的装置的构造示意图。
图2为本发明具体实施方式中客户端向闪存存储系统发出请求命令的工作过程示意图。
图3为本发明具体实施方式中闪存存储系统向客户端提交完成命令的工作过程示意图。
图4为本发明具体实施方式中客户端向闪存存储系统写入数据的工作过程示意图。
图5为本发明具体实施方式中客户端向闪存存储系统读取数据的工作过程示意图。
图6为本发明具体实施方式中客户端发出的一级请求命令的常见格式示意图。
图7为本发明具体实施方式中完成命令编码器形成的二级完成命令的常见格式示意图。
图1—图5中的空白箭头表示命令或命令的相关数据的流向。为了保证附图清晰明了,流向标注是不完整的。
具体实施方式
下面对本发明的实施方式进行进一步的具体说明。但应注意,本发明的范围并不局限于所描述的具体技术方案。任何对所描述的具体技术方案中的技术要素进行相同或等同替换获得的技术方案或本领域技术人员在所描述的具体技术方案的基础上不经过创造性劳动就可以获得的技术方案,都应当视为落入本发明的保护范围。
零CPU负载实现存储系统命令传输的装置,该装置与客户端、存储系统及传输模块相关。可以对客户端、存储系统和传输模块进行如下构建。
客户端以软硬件结合的方式构建,可以通过最常见的微型计算机以及安装在微型计算机上的一套操作软件实现。为了能够实现本发明技术方案,客户端需要具有CPU(直接使用微型计算机的CPU即可),还要具有数据存储区、请求命令存储区、完成命令存储区三个存储区域,这可以通过操作软件在微型计算机的内存或硬盘上划定专门的区域来实现。
存储系统选择闪存存储系统,以软硬件结合的方式构建,可以按照申请号为201410594511.0、公开号为CN104301430A的中华人民共和国发明专利申请中公开的“软件定义存储系统”实现,也可以选择其他具有“控制器——存储单元”的结构的闪存存储系统。闪存存储系统中的闪存存储单元为非XIP(ExecuteInPlace,芯片内执行)闪存存储器或者非易失性闪存存储介质,可以是SATA(SerialAdvancedTechnologyAttachment,串行高级技术附件)闪存、USB(UniversalSerialBus,通用串行总线)闪存、PCIE(PeripheralComponentInterconnectExpress,快速外围组件互连)闪存等。如果现有技术公开的闪存存储系统中没有状态寄存器组,则增加状态寄存器组。状态寄存器组,用于反映控制器状态的变化。控制器接收二级请求命令、生成一级完成命令或者对请求命令的相关数据进行操作,其状态都会发生变化,相应的对状态寄存器组进行更新,因不同原因导致控制器状态变化的,状态寄存器组会有不同的更新记录。使用集成电路可以方便的实现状态寄存器组。
本领域技术人员在本发明公开内容的基础上,结合现有技术和公知常识,完全能够构建其他不同的方案。例如存储系统构建为具有“控制器——存储单元”结构的非闪存存储系统。
为实现本发明技术方案,客户端向存储系统发出请求命令前,应当知道执行请求命令的是存储系统的哪些控制器,请求命令中应当带有执行该命令的控制器的信息。由于客户端往往是由具有存储服务需求的用户使用,而存储系统由运营商经营,这可以通过运营商事先告知用户可使用的存储系统控制器的信息来实现。而在“控制器——存储单元”结构的存储系统中,往往设置多个控制器,每个控制器管理多个存储单元,具体哪个控制器管理哪几个存储单元是确定的。因此,在本发明技术方案中,请求命令、控制器和存储单元之间具有明确的对应关系。
传输模块以集成电路即硬件的方式实现。传输模块中为存储系统的每一个控制器配置一个写数据缓冲器、写数据缓冲地址缓冲器、读数据缓冲器和读数据缓冲地址缓冲器各四个缓冲器,为存储系统的每一个存储单元配置一个第二级请求命令缓冲器和第一级完成命令缓冲器各两个缓冲器。这样,请求命令、控制器和存储单元之间明确的对应关系就自然的延伸到了传输模块的相应部件上。
零CPU负载实现存储系统命令传输的装置的构造示意图如图1所示。为了显示清晰,图1中的闪存存储系统假定只有两个闪存控制器,每个闪存控制器只管理两个闪存存储单元(简称闪存单元),即图1中的闪存存储系统有闪存控制器1和闪存控制器2两个控制器,闪存控制器1控制闪存单元11和闪存单元12两个闪存单元,闪存控制器2控制闪存单元21和闪存单元22两个闪存单元。所有的闪存单元组成闪存单元阵列。
图1所示的零CPU负载实现存储系统命令传输的装置,包括闪存存储系统和传输模块,闪存存储系统包括两个闪存控制器(闪存控制器1、闪存控制器2)、四个闪存单元(闪存单元11、闪存单元12、闪存单元21、闪存单元22),状态寄存器组。传输模块包括请求命令寄存器、完成命令寄存器、请求命令寄存器解码器、完成命令寄存器解码器、读写主设备、第一级请求命令缓冲器、四个第二级请求命令缓冲器(与四个闪存单元分别对应)、请求命令解码器、请求命令分发器、完成命令解码器、完成命令编码器、四个第一级完成命令缓冲器(与四个闪存单元分别对应)、第二级完成命令缓冲器、数据地址解码器、两个写数据缓冲器(与两个闪存控制器分别对应)、两个写数据地址缓冲器(与两个闪存控制器分别对应)、两个读数据缓冲器(与两个闪存控制器分别对应)、两个读数据地址缓冲器(与两个闪存控制器分别对应)。所有的缓冲器采用FIFO存储器。
下面具体描述零CPU负载实现存储系统命令传输的装置的工作过程。
客户端向闪存存储系统发出请求命令的工作过程如图2所示。客户端的CPU写请求命令寄存器,在请求命令寄存器中存储准备向存储系统发出的一级请求命令的数量。请求命令寄存器解码器实时监控请求命令寄存器(实时监控可以通过在请求命令寄存器解码器和请求命令寄存器之间连接数据线实现,以下所述的其他实时监控也可以用类似方法实现),客户端CPU的写操作导致请求命令寄存器发生变化后,请求命令寄存器解码器解析请求命令寄存器,触发读写主设备进行传输,读写主设备从客户端的请求命令存储区读取一级请求命令,存储到第一级请求命令缓冲器中。读写主设备对命令的传输采用AXI总线协议,读写主设备作为AXI总线协议中所定义的Master端。触发读写主设备后,请求命令寄存器解码器更新自身的计数器等的信息。请求命令解码器可以实时监控请求命令寄存器解码器,也可以定期或不间断的检查第一级请求命令缓冲器,发现新的一级请求命令后,分解第一级请求命令缓冲器中存储的一级请求命令,将分解得到的二级请求命令存储到相关闪存单元对应的第二级请求命令缓冲器。请求命令解码器可以在执行二级请求命令的存储操作后通知请求命令分发器,请求命令分发器也可以定期或不间断的轮询第二级请求命令缓冲器,将第二级请求命令缓冲器中存储的二级请求命令发送到对应控制器。
客户端发出的一级请求命令的常见格式如图6所示,一级请求命令中包含了闪存控制器的编号(Chan值)和闪存单元的编号(Ce值)。如果一级请求命令涉及到相关数据,命令中也包含了相关数据的地址。请求命令解码器对一级请求命令分解,即将一条一级请求命令分解为与每个闪存单元相对应的多条二级请求命令(每个闪存单元对应一条二级请求命令。如果一级请求命令涉及到相关数据,二级请求命令中仍保留相关数据的地址。),将每条二级请求命令存储到与闪存单元相对应的第二级请求命令缓冲器中。这样,请求命令分发器就可以将每条二级请求命令发送到管理相对应闪存单元的控制器。
作为一种常见的命令方式,请求命令分发器发送到对应控制器的二级请求命令是互斥命令,每个命令之间是互斥的,对同一存储单元不会发出两个相同的命令。
闪存存储系统向客户端提交完成命令的工作过程如图3所示。当某个闪存控制器生成一个一级完成命令后,会更新状态寄存器组。完成命令解码器实时监控寄存器组,如果寄存器组有相应的更新,则完成命令解码器将闪存控制器生成的一级完成命令存储到相关存储单元对应的第一级完成命令缓冲器。完成命令解码器可以在执行一级完成命令的存储操作后通知完成命令编码器,完成命令编码器也可以定期或不间断的轮询第一级完成命令缓冲器。完成命令编码器将第一级完成命令缓冲器中的一级完成命令汇集,形成二级完成命令,发送到第二级完成命令缓冲器,并将第二级完成命令缓冲器中二级完成命令的数量写入完成命令寄存器。完成命令寄存器解码器实时监控请求命令寄存器,完成命令编码器的写入操作导致完成命令寄存器发生变化后,完成命令寄存器解码器解析完成命令寄存器,触发读写主设备进行传输,读写主设备从第二级完成命令缓冲器读取完成命令,发送到客户端的完成命令存储区。触发读写主设备后,完成命令寄存器解码器更新自身的计数器等的信息。
完成命令编码器形成的二级完成命令的常见格式如图7所示。在该格式中,二级完成命令通过Command_id(命令标识)与一级请求命令对应。
在图2和图3所示的工作过程中,传输模块仅在客户端和存储系统之间传输请求命令或完成命令,不涉及请求命令的相关数据。如果在传输命令的同时还要传输请求命令的相关数据,则工作过程如图4和图5所示。
图4为客户端向闪存存储系统写入数据的工作过程示意图。接图2所示的工作过程,请求命令分发器除了将第二级请求命令缓冲器中存储的二级请求命令发送到对应控制器外,还将二级请求命令中包含的客户端需要写入存储系统的数据的地址(该地址指这些数据在客户端数据存储区中的存储地址)发送到对应(对控制器相对应)的写数据地址缓冲器。对应控制器接收一个二级请求命令后,其状态发生变化,对状态寄存器组进行更新。数据地址解码器实时监控状态寄存器,如果寄存器组有相应的更新,则读取对应的写数据地址缓冲器,对读取到的数据地址进行解析,触发读写主设备从客户端的数据缓冲区读取客户端需要写入存储系统的数据,并将该数据存储到对应的写数据缓冲器。读写主设备对数据的传输同样采用AXI总线协议,读写主设备同样作为AXI总线协议中所定义的Master端。这样,控制器就可以对写数据缓冲器中的数据执行写入操作。
图5为客户端向闪存存储系统读取数据的工作过程示意图。接图2所示的工作过程,请求命令分发器除了将第二级请求命令缓冲器中存储的二级请求命令发送到对应控制器外,还将二级请求命令中包含的客户端需要从存储系统读取的数据的地址(该地址指客户端数据存储区中用于存储成功读取后的数据的地址)发送到对应(对控制器相对应)的读数据地址缓冲器。对应控制器接收读数据的二级请求命令将客户端需要读取的数据存储到对应的读数据缓冲器后,其状态发生变化,对状态寄存器组进行更新。数据地址解码器实时监控状态寄存器,如果寄存器组有相应的更新,则读取对应的读数据地址缓冲器,对读取到的数据地址进行解析,触发读写主设备从读数据缓冲器读取客户端需要从存储系统读取的数据,并将该数据存储到客户端的数据存储区中。
本领域技术人员根据以上工作过程的描述,利用现有的电路模块或芯片,完成能够构建传输模块。从图2—图5所描述的工作过程可以看出,本发明提供的零CPU负载实现存储系统命令传输的装置,客户端与存储系统之间无论是传输请求命令、完成命令还是请求命令的相关数据,都不需要存储系统的CPU参与,完全实现了存储系统CPU零负载。
利用“零CPU负载实现存储系统命令传输的装置”,可以实现“零CPU负载实现存储系统命令传输的方法”。
零CPU负载实现存储系统命令传输的方法的本质,是由独立于存储系统的读写主设备在客户端和存储系统之间传输命令和命令的相关数据,传输过程无需存储系统的CPU参与。为了实现传输命令和命令的相关数据,读写主设备还需要其他部件的配合,这些部件共同构成传输模块。
对于命令的传输而言,零CPU负载实现存储系统命令传输的方法,由读写主设备在客户端、第一级请求命令缓冲器、第二级完成命令缓冲器和存储系统之间传输命令。
更具体的描述,包括以下步骤:
客户端将向存储系统发出的一级请求命令的数量存储到请求命令寄存器中;
请求命令寄存器解码器解析请求命令寄存器,触发读写主设备从客户端读取一级请求命令;
读写主设备将从客户端读取的一级请求命令存储到第一级请求命令缓冲器;
请求命令解码器分解第一级请求命令缓冲器中存储的一级请求命令,将分解得到的二级请求命令存储到相关存储单元对应的第二级请求命令缓冲器;
请求命令分发器将第二级请求命令缓冲器中存储的二级请求命令发送到对应控制器;
控制器执行二级请求命令,生成相关存储单元对应的一级完成命令;
完成命令解码器将一级完成命令存储到相关存储单元对应的第一级完成命令缓冲器;
完成命令编码器将第一级完成命令缓冲器中的一级完成命令汇集,形成二级完成命令,存储到第二级完成命令缓冲器,并将第二级完成命令缓冲器中二级完成命令的数量写入完成命令寄存器;
完成命令寄存器解码器解析完成命令寄存器,触发读写主设备从第二级完成命令缓冲器读取完成命令发送给客户端。
对于请求命令的相关数据的传输而言,零CPU负载实现存储系统命令传输的方法,由读写主设备在客户端、写数据缓冲器、读数据缓冲器和存储系统之间传输命令的相关数据。
更具体的描述,包括以下步骤:
数据地址解码器根据控制器状态的变化,读取写数据地址缓冲器或读数据地址缓冲器,对读取到的数据地址进行解析,触发读写主设备进行写数据操作或读数据操作。
本领域技术人员只要注意到,“零CPU负载实现存储系统命令传输的装置”和“零CPU负载实现存储系统命令传输的方法”具有明确的关联关系,根据本发明的描述再结合必要的现有技术和公知常识,“零CPU负载实现存储系统命令传输的方法”完全能够实现。
Claims (10)
1.传输模块,其特征在于,所述的传输模块包括请求命令寄存器、完成命令寄存器、请求命令寄存器解码器、完成命令寄存器解码器、读写主设备、第一级请求命令缓冲器、一个或多个第二级请求命令缓冲器、请求命令解码器、请求命令分发器、完成命令解码器、完成命令编码器、一个或多个第一级完成命令缓冲器、第二级完成命令缓冲器;
所述的请求命令寄存器,用于存储客户端向存储系统发出的一级请求命令的数量;
所述的完成命令寄存器,用于存储第二级完成命令缓冲器向客户端反馈的二级完成命令的数量;
所述的请求命令寄存器解码器,用于解析请求命令寄存器,触发读写主设备从客户端读取一级请求命令;
所述的完成命令寄存器解码器,用于解析完成命令寄存器,触发读写主设备从第二级完成命令缓冲器读取二级完成命令;
所述的读写主设备,用于根据请求命令寄存器解码器的触发从客户端读取一级请求命令存储到第一级请求命令缓冲器,还用于根据完成命令寄存器解码器的触发从第二级完成命令缓冲器读取二级完成命令发送到客户端;
所述的请求命令解码器,用于分解第一级请求命令缓冲器中存储的一级请求命令,将分解得到的二级请求命令存储到相关存储单元对应的第二级请求命令缓冲器;
所述的请求命令分发器,用于将第二级请求命令缓冲器中存储的二级请求命令发送到对应控制器;
所述的第一级请求命令缓冲器,用于存储一级请求命令;
所述的第二级请求命令缓冲器,用于存储二级请求命令;
所述的完成命令解码器,用于将一级完成命令存储到相关存储单元对应的第一级完成命令缓冲器;
所述的完成命令编码器,用于将第一级完成命令缓冲器中的一级完成命令汇集,形成二级完成命令,存储到第二级完成命令缓冲器,并将第二级完成命令缓冲器中二级完成命令的数量存储到完成命令寄存器;
所述的第一级完成命令缓冲器,用于存储一级完成命令;
所述的第二级完成命令缓冲器,用于存储二级完成命令。
2.根据权利要求1所述的传输模块,其特征在于,所述的传输模块还包括数据地址解码器、一个或多个写数据缓冲器、一个或多个写数据地址缓冲器、一个或多个读数据缓冲器、一个或多个读数据地址缓冲器;
所述的数据地址解码器,用于根据控制器状态的变化,读取写数据地址缓冲器或读数据地址缓冲器,对读取到的数据地址进行解析,触发读写主设备进行写数据操作或读数据操作;
所述的写数据缓冲器,用于缓存客户端需要写入存储系统的数据;
所述的写数据地址缓冲器,用于存储二级请求命令中包含的客户端需要写入存储系统数据的地址;
所述的读数据缓冲器,用于缓存客户端需要从存储系统读取的数据;
所述的读数据地址缓冲器,用于存储二级请求命令中包含的客户端需要从存储系统读取的数据的地址;
所述的读写主设备,还用于通过数据地址解码器的触发在客户端和存储系统之间传输请求命令的相关数据;
所述的请求命令分发器,还用于将二级请求命令中包含的相关数据的地址发送到写数据地址缓冲器或读数据地址缓冲器。
3.根据权利要求1或2所述的传输模块,其特征在于,
所述的请求命令分发器轮询读取第二级请求命令缓冲器中存储的二级请求命令,依次发送到对应控制器;
所述的完成命令编码器轮询汇集第一级完成命令缓冲器中的一级完成命令,形成二级完成命令,存储到第二级完成命令缓冲器。
4.根据权利要求1或2所述的传输模块,其特征在于,所述的请求命令分发器发送到对应控制器的二级请求命令是互斥命令。
5.零CPU负载实现存储系统命令传输的装置,其特征在于,所述的装置包括存储系统和根据权利要求1或2所述的传输模块;
所述的存储系统包括一个或多个控制器、一个或多个存储单元,状态寄存器组;
所述的控制器,用于执行二级请求命令,生成相关存储单元对应的一级完成命令;
所述的状态寄存器组,用于反映控制器状态的变化。
6.零CPU负载实现存储系统命令传输的方法,其特征在于,所述的方法由独立于存储系统的读写主设备在客户端和存储系统之间传输命令和命令的相关数据,传输过程无需存储系统的CPU参与。
7.根据权利要求6所述的方法,其特征在于,所述的方法由所述的读写主设备在客户端、第一级请求命令缓冲器、第二级完成命令缓冲器和存储系统之间传输命令。
8.根据权利要求7所述的方法,其特征在于,所述的方法包括以下步骤:
客户端将向存储系统发出的一级请求命令的数量存储到请求命令寄存器中;
请求命令寄存器解码器解析请求命令寄存器,触发读写主设备从客户端读取一级请求命令;
读写主设备将从客户端读取的一级请求命令存储到第一级请求命令缓冲器;
请求命令解码器分解第一级请求命令缓冲器中存储的一级请求命令,将分解得到的二级请求命令存储到相关存储单元对应的第二级请求命令缓冲器;
请求命令分发器将第二级请求命令缓冲器中存储的二级请求命令发送到对应控制器;
控制器执行二级请求命令,生成相关存储单元对应的一级完成命令;
完成命令解码器将一级完成命令存储到相关存储单元对应的第一级完成命令缓冲器;
完成命令编码器将第一级完成命令缓冲器中的一级完成命令汇集,形成二级完成命令,存储到第二级完成命令缓冲器,并将第二级完成命令缓冲器中二级完成命令的数量写入完成命令寄存器;
完成命令寄存器解码器解析完成命令寄存器,触发读写主设备从第二级完成命令缓冲器读取完成命令发送到客户端。
9.根据权利要求要求6所述的方法,其特征在于,所述的方法由所述的读写主设备在客户端、写数据缓冲器、读数据缓冲器和存储系统之间传输命令的相关数据。
10.根据权利要求要求9所述的方法,其特征在于,所述的方法包括以下步骤:
数据地址解码器根据控制器状态的变化,读取写数据地址缓冲器或读数据地址缓冲器,对读取到的数据地址进行解析,触发读写主设备进行写数据操作或读数据操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510696564.8A CN105354154B (zh) | 2015-10-23 | 2015-10-23 | 零cpu负载实现存储系统命令传输的装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510696564.8A CN105354154B (zh) | 2015-10-23 | 2015-10-23 | 零cpu负载实现存储系统命令传输的装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105354154A true CN105354154A (zh) | 2016-02-24 |
CN105354154B CN105354154B (zh) | 2018-12-28 |
Family
ID=55330128
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510696564.8A Active CN105354154B (zh) | 2015-10-23 | 2015-10-23 | 零cpu负载实现存储系统命令传输的装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105354154B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541782A (zh) * | 2011-12-16 | 2012-07-04 | 中国科学院自动化研究所 | Dram访问控制装置与控制方法 |
CN103136136A (zh) * | 2012-11-23 | 2013-06-05 | 香港应用科技研究院有限公司 | 用于闪存存储介质执行数据传输的方法和系统 |
CN103778013A (zh) * | 2014-01-24 | 2014-05-07 | 中国科学院空间应用工程与技术中心 | 一种多通道Nand Flash控制器及其控制方法 |
CN104301430A (zh) * | 2014-10-29 | 2015-01-21 | 北京麓柏科技有限公司 | 软件定义存储系统、方法及其集中控制设备 |
-
2015
- 2015-10-23 CN CN201510696564.8A patent/CN105354154B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541782A (zh) * | 2011-12-16 | 2012-07-04 | 中国科学院自动化研究所 | Dram访问控制装置与控制方法 |
CN103136136A (zh) * | 2012-11-23 | 2013-06-05 | 香港应用科技研究院有限公司 | 用于闪存存储介质执行数据传输的方法和系统 |
US20140149637A1 (en) * | 2012-11-23 | 2014-05-29 | Hong Kong Applied Science and Technology Research Institute Company Limited | Method and system for performing data transfer with a flash storage medium |
CN103778013A (zh) * | 2014-01-24 | 2014-05-07 | 中国科学院空间应用工程与技术中心 | 一种多通道Nand Flash控制器及其控制方法 |
CN104301430A (zh) * | 2014-10-29 | 2015-01-21 | 北京麓柏科技有限公司 | 软件定义存储系统、方法及其集中控制设备 |
Also Published As
Publication number | Publication date |
---|---|
CN105354154B (zh) | 2018-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2811392B1 (en) | Method and device for reducing read delay | |
EP2778888B1 (en) | Selecting between non-volatile memory units having different minimum addressable data unit sizes | |
CN103116551B (zh) | 应用于CLB总线的NorFLASH存储接口模块 | |
TWI512609B (zh) | 讀取命令排程方法以及使用該方法的裝置 | |
CN103282887A (zh) | 用于进行后台操作的控制器和方法 | |
CN103019970A (zh) | 存储装置及其控制方法 | |
CN103235760B (zh) | 基于CLB总线的高利用率NorFLASH存储接口芯片 | |
KR20160024962A (ko) | 온-디맨드 블록 관리 | |
CN104991737B (zh) | 一种基于存储卡阵列架构的硬盘实现方法 | |
CN105808455A (zh) | 访问内存的方法、存储级内存及计算机系统 | |
JP2020149588A (ja) | メモリシステム及びメモリコントローラ | |
CN109960466B (zh) | 存储器系统及其操作方法 | |
CN101515221A (zh) | 一种读数据的方法、装置和系统 | |
KR20220153055A (ko) | 메모리 서브시스템의 워크로드 레벨에 기초한 전력 모드 설정 | |
WO2022216664A1 (en) | Method and apparatus to reduce nand die collisions in a solid state drive | |
CN102591823A (zh) | 一种具有指令队列功能的Nandflash控制器 | |
CN114286989B (zh) | 一种固态硬盘混合读写的实现方法以及装置 | |
CN105264608A (zh) | 存储数据的方法、内存控制器和中央处理器 | |
CN103092725A (zh) | 一种实现存储器中数据备份的方法及装置 | |
US20160018994A1 (en) | Memory system and method | |
CN105354154A (zh) | 零cpu负载实现存储系统命令传输的装置和方法 | |
WO2023028163A1 (en) | Improved memory performance using memory access command queues in memory devices | |
US20140181324A1 (en) | Data transmitting method, memory controller and data transmitting system | |
US11281379B2 (en) | Storage device and operating method thereof for storing replicated data based on access frequency | |
US9836215B2 (en) | Real time protocol generation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20181108 Address after: 550000 Flower Orchard Pengjiawan Flower Orchard Project, Nanming District, Guiyang City, Guizhou Province, No. 9 (No. 3, Guiyang International Center), Unit 1, Unit 5, Room 12 [Flower Orchard Community] Applicant after: Guizhou Xuan Tong Da Data Technology Co., Ltd. Address before: 100085 801D, block E, Ying Zhuang power building, 1 hospital, 1 East Road, Beijing. Applicant before: NETBRIC TECHNOLOGY CO., LTD. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |