一种使用标准化数据存储和检索协议的数据编码和解码的方法和装置
文献发布时间:2023-06-19 09:32:16
技术领域
本发明涉及数字数据存储领域,更具体地说,涉及一种使用标准化数据存储和检索协议的数据编码和解码的方法和装置。
背景技术
商业海量数据存储已经成为现代经济的重要组成部分。成千上万的公司依靠安全的,防故障的数据存储来为其客户提供服务。商业环境中的数据存储通常提供某种形式的数据保护,以防止由于组件和设备故障以及人为或自然灾害而造成的意外数据丢失。最简单的保护形式称为冗余。冗余包括制作相同数据的多个副本,然后将副本存储在单独的物理驱动器上。如果一个驱动器发生故障,则可以简单地通过访问另一驱动器来恢复数据。就物理存储需求而言,这显然是昂贵的。
更高级的恢复系统使用独立磁盘冗余阵列(RAID)。RAID系统通常利用擦除编码来减轻数据的意外丢失。擦除编码将数据块分成n个多个相等大小的段,并添加m个奇偶校验段。因此,RAID系统可存储n+m个段,并且可以抵抗多达m个段故障中的故障。
采用诸如里德-所罗门码之类的编码技术的擦除编码需要来自主机CPU的大量计算资源。因此,在存储之前对数据进行编码会使可用于其他计算的计算资源远离主机。结果是其他应用程序的处理速度变慢。希望在数据存储系统中提供冗余而不占用主机CPU的计算资源。
发明内容
1.发明要解决的技术问题
本发明的目的在于提供了一种使用标准化数据存储和检索协议的数据编码和解码的方法和装置,具体地,提供了用于通过高速数据总线耦合到主处理器和主存储器的I/O设备对大量数据进行编码或解码的方法和设备。I/O设备根据主处理器使用标准化数据存储和检索协议发出的命令,对存储在(输入/输出)缓冲器中的数据执行编码或解码。这种体系结构使主处理器能够将繁重的编码或解码委托给I/O设备,从而为其他任务释放主处理器资源。该方法适用于横向扩展架构,其中数据可由单个I/O设备或多个I/O设备并行地编码或解码,每个I/O设备通过高速数据总线耦合到主处理器。
2.技术方案
为达到上述目的,本发明提供的技术方案为:
本发明的一种使用标准化数据存储和检索协议的数据编码和解码的装置和方法,其特征在于,包括:计算机系统、主处理器、主存储器、I/O设备、用户界面、网络接口、数据总线、控制器;控制器存储器;主机接口、(输入/输出)缓冲器、可编程电路、海量存储器、总线;所述的主处理器与网络接口耦合提供网络,主处理器与主存储器的I/O设备通过数据总线耦合,主存储器与I/O设备也通过数据总线耦合,主处理器用于产生编码命令,并将编码命令存储到提交队列中,所述的编码命令包括由标准化数据存储和检索协议定义的命令修改版本;所述的主存储器用于存储主处理器的可执行命令;用户界面通过数据总线与主处理器耦合连接。
优选地,所述数据总线包括PCle总线,所述标准化数据存储和检索协议包括NVMe协议。
优选地,所述的I/O设备包括控制器,被配置为根据标准化数据和检索协议从提交队列中检索编码命令,以使数据根据所述编码算法进行编码,并在所述编码算法完成时提供一个完成队列条目到所述完成队列中;所述与控制器耦合的控制器存储器,用于存储对数据进行编码的编码算法,并用于存储提交队列和完成队列;其中,所述控制器存储器还存储编码算法索引,所述编码算法索引用于将存储在所述控制器存储器中的一个或多个编码算法分别与一个或多个编码算法索引值相关联;其中,控制器被配置为使用编码算法索引中的第一编码算法根据编码命令指定的第一编码算法索引值对数据进行编码。
优选地,所述的I/O设备包括(输入/输出)缓冲器,耦合到所述控制器,所述的控制器被配置成通过从编码命令指定的输入缓冲区地址的输入缓冲区检索一个或多个数据块来使数据进行编码。
优选地,所述的I/O设备包括用于根据编码算法对数据进行编码的可编程电路,所述可编程电路由控制器响应于控制器根据数据存储和检索协议从管理提交队列中检索管理命令由控制器编程。
优选地,所述的可编程电路为嵌入式FPGA。
优选地,所述的I/O设备包括海量存储器,海量存储器通过若干数据线和控制线耦合到控制器。海量存储器包括一个或多个非暂时性信息存储设备,如RAM存储器、闪存、SD存储器、XD存储器或其他类型的电子、光学或机械存储设备,用于存储编码或解码数据。
优选地,所述总线包括PCle总线,所述标准化数据存储和检索协议包括NVMe协议,其中,第一编码算法索引值由主机在一个供应商特定命令定义的命名空间ID字段中提供。
优选地,所述的由I/O设备执行的用于对数据进行编码的方法,包括:由主处理器生成编码命令,所述编码命令包括由NVMe数据存储和检索定义的特定于供应商的命令的修改版本。主处理器将编码命令存储在提交队列中;根据NVMe数据存储和检索协议,通过数据总线耦合到主处理器的I/O设备中的控制器从提交队列中检索编码命令;控制器从由供应商专用命令的修改版本标识的(输入/输出)缓冲器地址处耦合到控制器的(输入/输出)缓冲器中检索数据;根据编码命令对数据块进行编码以生成编码数据,其中,对数据进行编码包括:从编码命令获取编码算法索引值;耦合到与编码算法索引值相关联的控制器存储器中检索第一编码算法;使用第一编码算法对数据块进行编码;并由控制器将数据编码结果存储在完成队列中。
优选地,所述编码算法索引值是从由供应商特定命令定义的命名空间ID字段中检索的,作为识别用于存储数据的控制器存储器中的区域的字段。
优选地,所述的种使用标准化数据存储和检索协议的数据编码和解码方法,其中,对所述数据进行编码包括:将所述数据提供给所述I/O设备中的可编程电路,所述可编程电路由所述控制器响应于所述控制器从存储在其中的管理提交队列中检索到管理命令而被编程,符合NVMe数据存储和检索协议。
3.有益效果
采用本发明提供的技术方案,与已有的公知技术相比,具有如下有益效果:
(1)本发明的一种使用标准化数据存储和检索协议的数据编码和解码的方法和装置,具体地,提供了用于通过高速数据总线耦合到主处理器和主存储器的I/O设备对大量数据进行编码或解码的方法和设备。I/O设备根据主处理器使用标准化数据存储和检索协议发出的命令,对存储在(输入/输出)缓冲器中的数据执行编码或解码。这种体系结构使主处理器能够将繁重的编码或解码委托给I/O设备,从而为其他任务释放主处理器资源。
(2)本发明的一种使用标准化数据存储和检索协议的数据编码和解码的方法和装置,该方法适用于横向扩展架构,其中数据可由单个I/O设备或多个I/O设备并行地编码或解码,每个I/O设备通过高速数据总线耦合到主处理器。
附图说明
图1是本发明所述的计算机系统功能框图;
图2是I/O设备的功能框图;
图3是由主处理器和I/O设备执行方法的流程图;
附图中的标号说明如下:
1、计算机系统;2、主处理器;3、主存储器;4、I/O设备;5、用户界面;6、网络接口;7、数据总线;8、控制器;9、控制器存储器;10、主机接口;11、(输入/输出)缓冲器;12、可编程电路;13、海量存储器;14、总线。
具体实施方式
为进一步了解本发明的内容,现结合附图和实施例对本发明作详细描述。
图1是本发明所述的计算机系统功能框图。
结合图1,计算机系统包括主处理器2、主存储器3、I/O设备4、用户界面5、网络接口6和数据总线7。主处理器2、主存储器3和I/O设备4通过数据总线7电耦合,I/O设备包括插入计算机系统1主板上的扩展端口的连接器。
计算机系统1可以包括个人计算机或基于云计算的服务器,以执行诸如文字处理、网页浏览、电子邮件和海量数据存储和检索之类的各种任务。计算机系统1可以包括一个耦合到因特网的服务器,该服务器被专门配置成在存储和/或传输数据之前处理数据,包括数据编码和/或解码。I/O设备是专用的编码/解码设备,可以包括用于存储大容量(1tb或更多)数据的大容量SSD。专用编码/解码装置可预先配置有一个或多个编码或解码算法及相关参数。编码算法索引用于将多个编码算法与各自的编码算法索引值相关联。这样,主处理器2可以指定I/O设备4使用的特定编码算法,而不向I/O设备4提供编码算法本身;
计算机系统1可用于对目的地发送到远程位置的数据进行编码,或对经由网络接口6从诸如因特网的广域数据网络接收的编码数据进行解码。为了快速地对大量数据进行编码或解码,主处理器2将计算密集的编码和解码活动卸载到I/O设备4;
主存储器3包括一个或多个非暂时性信息存储设备,如RAM、ROM、EEPROM、UVPROM、闪存、SD存储器、XD存储器或其他类型的电子、光学或机械存储设备。主存储器3用于存储用于计算机系统1操作的处理器可执行指令,以及用于编码、解码数据、编码算法索引、一个或多个提交队列、一个或多个完成队列和一个或多个管理队列的数据;
数据总线7包括主处理器2和诸如I/O设备4之间的高速命令和数据接口。数据总线7符合PCIe标准。PCIe是一种高速串行计算机扩展总线标准,旨在取代老的PCI、PCI-x和AGP总线标准。数据总线7被配置为允许主处理器2和I/O设备4之间的高速数据传输,例如数据存储和检索,但也可以传输配置信息、操作指令和相关参数,以供I/O设备4处理。
图2是I/O设备的功能框图。
结合图2,I/O设备包括控制器8、控制器存储器9、主机接口10、(输入/输出)缓冲器11、可编程电路12、海量存储器13和总线14。
I/O设备4包括高容量SSD,例如具有800MBps NVMe接口的1tb、16信道ONFI兼容的NAND SSD。I/O设备4根据NVMe协议执行数据存储和检索,并且还根据NVMe协议定义的一个或多个经修改的供应商特定命令执行存储之前的编码和数据检索时的解码;
控制器8包括一个或多个自定义ASICs、PGAs和/或外围电路,以执行I/O设备4的功能。控制器存储器9包括一个或多个非暂时性信息存储设备,如RAM、ROM、EEPROM、闪存、SD存储器、XD存储器或其他类型的电子、光学或机械存储设备。控制器存储器9用于存储控制器8操作的处理器可执行指令,以及编码算法索引中的一个或多个编码算法;
(输入/输出)缓冲器11包括一个或多个数据存储设备,用于为等待编码或解码的数据或已经编码/解码的数据提供临时存储。(输入/输出)缓冲器11通常包括用于快速访问数据的RAM存储器;
可编程电路12包括可编程集成电路,如嵌入式FPGA、嵌入式视频处理器等,通常由大量可配置逻辑门阵列、一个或多个处理器、I/O逻辑和一个或多个存储器件组成。可编程电路12通过总线14耦合到控制器8;
海量存储器13包括一个或多个非暂时性信息存储设备,如RAM存储器、闪存、SD存储器、XD存储器或其他类型的电子、光学或机械存储设备,用于存储编码或解码数据。海量存储器13通过若干数据线和控制线电耦合到控制器8,海量存储器13不包括用于传播信号的媒体。
图3是由主处理器和I/O设备执行方法的流程图。
结合图3,图3是说明由主处理器2和I/O设备4执行的数据编码或解码方法的流程图。该方法由主处理器2和控制器8实现,执行处理器可执行指令分别存储在主存储器3和控制器存储器9中。
首先,主处理器2和控制器8相互协作以确定一些初始设置,例如标识一个或多个编码算法,制定一个编码索引,将一个或多个编码算法与各自的编码算法索引值相关联,以确定一些提交队列、完成队列和内存分配,以及/或将物理内存分配给多个命名空间IDs。一个或多个编码算法密钥可被标识为一次性事件,例如在计算机系统1第一次通电时。编码算法存储在控制器存储器9或主存储器3中,其中每个编码算法与相应的编码算法索引值相关联。主处理器2从网络接口6或用户界面5接收要编码的数据,例如大文本、图像或视频文件。数据存储在(输入/输出)缓冲器11中;随后,主处理器2根据修改后的特定于供应商的命令生成编码命令;并将编码命令写入由主存储器3或控制器存储器9存储的提交队列。提交队列是一个具有固定插槽大小的循环缓冲区,主处理器2使用它来提交命令以供控制器8执行。命令由主处理器2放入提交队列,由控制器8完成放入相关的完成队列。多个提交队列可能使用相同的完成队列。提交和完成队列由主处理器2和控制器8在主存储器3和控制器存储器9中分配;为了响应将编码命令写入提交队列,主处理器2将一个新的尾指针写入与提交队列相关联的硬件寄存器,提醒控制器8,在提交队列中有一个命令可以执行;随后,控制器8根据NVMe协议从数据总线7上的提交队列中检索编码命令;控制器8通过识别存储在控制器存储器9中的操作码,将编码命令识别并验证为对数据进行编码的命令;紧接着,控制器8检索并验证编码算法索引值作为存储在名称空间ID字段中的名称空间ID;响应于识别编码算法索引值,控制器8从存储在控制器存储器9中的编码算法索引值中检索与编码算法索引值相关的编码算法;此时,控制器8识别编码命令中的指针,指向主存储器3或(输入/输出)缓冲器11中要编码或解码的数据量的起始地址;随后,控制器8识别存储在主存储器3或(输入/输出)缓冲器11中的一些Dwords进行编码/解码;并从主存储器3或(输入/输出)缓冲器11检索从指针提供的地址开始的数据量。主机接口10可用于协助数据的传输,并且数据可暂时存储在(输入/输出)缓冲器11中;然后,控制器8使用在上述步骤检索到的编码算法对检索到的数据进行编码。控制器8使用存储在控制器存储器9中的编码算法执行编码;当数据被编码后,控制器8将编码的数据存储在主存储器3中或(输入/输出)缓冲器11中;进一步地,控制器8将完成队列条目写入存储在主存储器3中的完成队列,指示编码/解码命令的成功或失败。NVMe协议将完成队列定义为具有固定插槽大小的循环缓冲区,用于发布已完成命令的状态。完成队列头指针在处理完成队列条目之后,由主处理器2更新;主处理器2接收到根据NVMe协议进入完成队列的条目存在的通知;而后通过计算完成队列条目来确定编码命令是否成功。主处理器2可以同时向I/O设备4提供额外的编码/解码命令,使用最多64k的提交队列和最多64k的完成队列,从而对大量数据进行编码或解码。每个队列最多可以存储64k命令。因此,可以对大量数据进行编码/解码,而不消耗过多的主处理器资源;最后主处理器2可经由广域网经由网络接口6将来自主存储器3或(输入/输出)缓冲器11的编码/解码数据提供给远程位置。
以上示意性的对本发明及其实施方式进行了描述,该描述没有限制性,附图中所示的也只是本发明的实施方式之一,实际的结构并不局限于此。所以,如果本领域的普通技术人员受其启示,在不脱离本发明创造宗旨的情况下,不经创造性的设计出与该技术方案相似的结构方式及实施例,均应属于本发明的保护范围。
- 一种使用标准化数据存储和检索协议的数据编码和解码的方法和装置
- 一种适用于北斗短报文民用协议的数据编码/解码方法