零cpu负载实现存储系统命令传输的装置和方法

文档序号:9597792阅读:442来源:国知局
零cpu负载实现存储系统命令传输的装置和方法
【技术领域】
[0001]本发明属于存储技术领域,具体说涉及一种零CPU负载实现存储系统命令传输的装置和方法。
【背景技术】
[0002]随着存储技术的发展,越来越多的存储系统采用“控制器一一存储单元”的结构。存储单元是存储系统的基本单位,通常每套存储系统具有多个存储单元,并通过一个或多个控制器管理这些存储单元,不同存储单元可以为不同用户提供存储服务。在闪存存储系统中这种结构更为常见。闪存是一种非易失性存储器,即断电后数据也不会丢失。闪存的写入操作必须在空白区域进行,如果目标区域已经有数据,则须先擦除后写入。相比传统的磁盘,闪存具有功耗更低、存储速度更快、存储数据更加安全等优点,以闪存为介质的固态硬盘非常适合于存储系统。
[0003]闪存存储系统的控制器是系统的核心,是联系用户和闪存存储单元的桥梁。目前常见的闪存存储系统的控制器由CPU(中央处理器)、内部总线和各种功能模块组成。
[0004]现有的闪存存储系统在工作中,每当一个闪存存储单元完成一个命令操作后都会发出中断给CPU,或者CPU通过查询DMA (Direct Memory Access,存储器直接访问)控制器或者闪存控制器状态,执行中断程序。当对多个闪存存储单元进行操作时,CPU会收到多个中断,产生很高的CPU负载,这样必然会影响存储系统的运行速度。如何解决上述问题,目前的报道尚不多见。
[0005]在说明书“【背景技术】”部分公开的内容,有助于本领域技术人员理解本发明的技术方案,但不应据此认为这些内容一定属于现有技术或公知常识。

【发明内容】

[0006]本发明提供一种零CPU负载实现存储系统命令传输的装置,该装置与客户端、存储系统及传输模块相关。
[0007]本发明所述的客户端,指能够向存储系统发出存储服务命令和相关数据的设备或装置。所述的存储服务命令,指与数据存储相关的命令,常见的命令包括数据擦除、数据写入、数据读取、读取存储系统(或存储单元)状态、数据复位等单一命令及由多个单一命令组合的复合命令。存储服务命令的相关数据,指与各种存储服务命令相对应的数据,如需要写入存储系统的数据和需要从存储系统读取的数据。存储系统处理收到的存储服务命令和相关数据后会向客户端反馈对应的处理结果和相关数据,相应的客户端也具有接收这些处理结果和相关数据的能力。
[0008]本发明所述的存储系统,指能够响应客户端发出的存储服务命令,处理存储服务命令和相关数据,反馈对应的处理结果和相关数据的设备或装置。为了实现本发明技术方案,存储系统具有“控制器一一存储单元”的结构。
[0009]本发明技术方案中,将客户端发出的各种存储服务命令简称为“请求命令”,将存储系统反馈的处理结果简称为“完成命令”,将请求命令和完成命令统称为“命令”。将“请求命令”区分为“一级请求命令”和“二级请求命令”,同样将“完成命令”区分为“一级完成命令”和“二级完成命令”。客户端具有请求命令存储区、完成命令存储区、数据存储区三个存储区域,分别存储准备发出的请求命令、收到的完成命令以及命令的相关数据。在本发明技术方案中,完成命令仅是对请求命令是否成功执行的反馈,和相关数据的处理并不必然是同步的(例如,客户端向存储系统写入数据,客户端写入数据的请求命令发出后,存储系统已经正确执行了该请求命令,相关的数据已经写入,但存储系统反馈数据成功写入的完成命令可能在数据成功写入很久之后才生成并发出),因此本发明技术方案中涉及到的命令的相关数据均为请求命令的相关数据,与完成命令无关。
[0010]本发明所述的传输模块,指独立于客户端和存储系统,能够在客户端和存储系统之间传输请求命令、完成命令及请求命令的相关数据的设备或装置。
[0011]零CPU负载实现存储系统命令传输的装置,包括存储系统和传输模块,存储系统包括一个或多个(多个指两个或两个以上)控制器、一个或多个存储单元,状态寄存器组。传输模块包括请求命令寄存器、完成命令寄存器、请求命令寄存器解码器、完成命令寄存器解码器、读写主设备、第一级请求命令缓冲器、一个或多个第二级请求命令缓冲器、请求命令解码器、请求命令分发器、完成命令解码器、完成命令编码器、一个或多个第一级完成命令缓冲器、第二级完成命令缓冲器。
[0012]以上部件中没有特别说明个数的,通常情况下是一个。
[0013]请求命令寄存器,用于存储客户端向存储系统发出的一级请求命令的数量。
[0014]完成命令寄存器,用于存储第二级完成命令缓冲器向客户端反馈的二级完成命令的数量。
[0015]请求命令寄存器解码器,用于解析请求命令寄存器,触发读写主设备从客户端读取一级请求命令。(客户端向存储系统发出的、读写主设备从客户端请求命令存储区读取的请求命令定义为一级请求命令。)
[0016]完成命令寄存器解码器,用于解析完成命令寄存器,触发读写主设备从第二级完成命令缓冲器读取二级完成命令。(读写主设备从第二级完成命令缓冲器中读取的、向客户端反馈的完成命令定义为二级完成命令。)
[0017]读写主设备,用于根据请求命令寄存器解码器的触发从客户端读取一级请求命令存储到第一级请求命令缓冲器,还用于根据完成命令寄存器解码器的触发从第二级完成命令缓冲器读取二级完成命令发送到客户端。
[0018]请求命令解码器,用于分解第一级请求命令缓冲器中存储的一级请求命令,将分解得到的二级请求命令存储到相关存储单元对应的第二级请求命令缓冲器。(请求命令解码器对一级请求命令分解后得到的请求命令定义为二级请求命令,每条二级请求命令与每个存储单元相对应。)
[0019]请求命令分发器,用于将第二级请求命令缓冲器中存储的二级请求命令发送到对应控制器。
[0020]第一级请求命令缓冲器,用于存储一级请求命令。
[0021]第二级请求命令缓冲器,用于存储二级请求命令。
[0022]控制器,用于执行二级请求命令,生成相关存储单元对应的一级完成命令。
[0023]完成命令解码器,用于将一级完成命令存储到相关存储单元对应的第一级完成命令缓冲器。(控制器生成的相关存储单元对应的完成命令定义为一级完成命令。)
[0024]完成命令编码器,用于将第一级完成命令缓冲器中的一级完成命令汇集,形成二级完成命令,存储到第二级完成命令缓冲器,并将第二级完成命令缓冲器中二级完成命令的数量存储到完成命令寄存器。
[0025]第一级完成命令缓冲器,用于存储一级完成命令。
[0026]第二级完成命令缓冲器,用于存储二级完成命令。
[0027]状态寄存器组,用于反映控制器状态的变化。某一个控制器接收一个二级请求命令或生成一个一级完成命令,其状态都会发生变化,相应的对状态寄存器组进行更新。
[0028]作为一种可选择的实施方式,请求命令分发器轮询读取第二级请求命令缓冲器中存储的二级请求命令,依次发送到对应控制器。
[0029]作为一种可选择的实施方式,完成命令编码器轮询汇集第一级完成命令缓冲器中的一级完成命令,形成二级完成命令,存储到第二级完成命令缓冲器。
[0030]以上所述的轮询,指按照预先设定的顺序逐一访问缓冲器(以所有的缓冲器都被访问了一遍为一个周期,周而复始),如果缓冲器中存储有命令(通常是缓冲器中存储有新的命令),则执行相应操作后访问下一个缓冲器;如果缓冲器中没有命令(通常是缓冲器中没有新的命令),则跳过该缓存器访问下一个缓冲器。
[0031]以上所述的缓冲器,可以是随机存取存储器(Random Access Memory,RAM)、先进先出(First In First Out,FIFO)存储器或双倍速率同步动态随机存储器(Double DataRate,DDR,包括 DDR、DDR2、DDR3、DDR4 等多代产品)。
[0032]作为一种可选择的实施方式,请求命令分发器发送到对应控制器的二级请求命令是互斥命令。所谓的互斥命令,指每个命令之间是互斥的,即对同一存储单元不会发出两个相同的命令。
[0033]以上描述的零CPU负载实现存储系统命令传输的装置,能够在客户端和存储系统之间传输请求命令和完成命令,如果在传输命令时也实现传输请求命令的相关数据,则传输模块还包括数据地址解码器、一个或多个写数据缓冲器、一个或多个写数据地址缓冲器、一个或多个读数据缓冲器、一个或多个读数据地址缓冲器。
[0034]数据地址解码器,用于根据控制器状态的变化,读取写数据地址缓冲器或读数据地址缓冲器,对读取到的数据地址进行解析,触发读写主设备进行写数据操作或读数据操作。写数据操作,指读写主设备从客户端
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1