CN116340047A - 驱动独立磁碟冗余数组引擎的方法和装置 - Google Patents

驱动独立磁碟冗余数组引擎的方法和装置 Download PDF

Info

Publication number
CN116340047A
CN116340047A CN202111588211.8A CN202111588211A CN116340047A CN 116340047 A CN116340047 A CN 116340047A CN 202111588211 A CN202111588211 A CN 202111588211A CN 116340047 A CN116340047 A CN 116340047A
Authority
CN
China
Prior art keywords
engine
raid
driving
parity
command
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.)
Pending
Application number
CN202111588211.8A
Other languages
English (en)
Inventor
李联育
邱慎廷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Silicon Motion Inc
Original Assignee
Silicon Motion Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Silicon Motion Inc filed Critical Silicon Motion Inc
Priority to CN202111588211.8A priority Critical patent/CN116340047A/zh
Priority to US17/984,691 priority patent/US20230205461A1/en
Publication of CN116340047A publication Critical patent/CN116340047A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2002Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
    • G06F11/2005Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明涉及一种驱动独立磁碟冗余数组(Redundant Array of Independent Disks,RAID)引擎的装置和方法,该装置包含:命令队列;对照表;转换器;配置寄存器;和RAID控制器。命令队列存储由处理单元所推入的多个命令,每个命令包含操作码和参数,用于指示与RAID引擎的物理层交互操作。对照表包含多笔纪录,每笔纪录存储特定操作码和特定参数所对应的用于驱动与RAID引擎的接口的驱动值。转换器依据命令队列中的任何命令的操作码和参数从对照表获取相应的驱动值。配置寄存器存储由转换器所获取的驱动值。RAID控制器依据配置寄存器中的驱动值完成一系列与RAID引擎的物理层信号交互。

Description

驱动独立磁碟冗余数组引擎的方法和装置
技术领域
本发明涉及存储装置,特别是,本发明涉及一种驱动独立磁碟冗余数组引擎的装置和方法。
背景技术
闪存通常分为NOR闪存与NAND闪存。NOR闪存为随机存取装置,中央处理器(Host)可于地址引脚上提供任何存取NOR闪存的地址,并及时地从NOR闪存的数据引脚上获得存储于该地址上的数据。相反地,NAND闪存并非随机存取,而是串行存取。NAND闪存无法像NOR闪存一样,可以存取任何随机地址,中央处理器反而需要写入串行的字节(Bytes)的值到NAND闪存中,用于定义请求命令(Command)的类型(如,读取、写入、抹除等),以及用在此命令上的地址。地址可指向一个页面(闪存中写入操作的最小数据块)或一个区块(闪存中抹除操作的最小数据块)。
闪存控制器通常使用纠错码(Error Correcting Code,ECC)来修复使用者数据于通过通道或存储时发生的错误。在数据写入时,闪存控制器编码使用者数据来产生纠错码的冗余信息。这些冗余信息让闪存控制器在数据读取时,可以修正发生在使用者数据中任意位置的有限数目的错误比特,而不需要重读。为了防止读取页面的使用者数据含有超过纠错码所能够修正回来的错误比特而发生的重大错误,闪存控制器可让默认数目的页面形成一个页面群组(Page Group),并且依据页面群组的使用者数据产生页面群组的奇偶校验码。通常NAND闪存中会包含一个专用的独立磁碟冗余数组引擎(Redundant Array ofIndependent Disks,RAID engine)来完成页面群组的奇偶校验码的计算,然而,驱动RAID引擎需要耗费处理单元大量的时间和运算资源。因此,本发明提出一种驱动独立磁碟冗余数组引擎的装置和方法,用于提升系统的整体效能。
发明内容
有鉴于此,如何减轻或消除上述相关领域的缺失,实为有待解决的问题。
本发明涉及一种驱动独立磁碟冗余数组(Redundant Array of IndependentDisks,RAID)引擎的装置,包含:命令队列;对照表;转换器;配置寄存器;和独立磁碟冗余数组控制器。命令队列存储由处理单元所推入的多个命令,每个命令包含操作码和参数,用于指示与RAID引擎的物理层交互操作。对照表包含多笔纪录,每笔纪录存储特定操作码和特定参数所对应的用于驱动与RAID引擎的接口的驱动值。转换器依据命令队列中的任何命令的操作码和参数从对照表获取相应的驱动值。配置寄存器存储由转换器所获取的驱动值。RAID控制器依据配置寄存器中的驱动值完成一系列与RAID引擎的物理层信号交互。
本发明还涉及一种驱动独立磁碟冗余数组引擎的方法,由独立磁碟冗余数组控制器执行,独立磁碟冗余数组控制器包含配置寄存器。该方法包含:依据所述配置寄存器中的驱动值与所述RAID引擎进行一系列物理层的信号交互以完成驱动操作,其中,驱动值相应于由处理单元所发出的命令,并且在RAID控制器和RAID引擎协力完成驱动操作的期间,处理单元执行与页面群组的奇偶校验码的编码和译码无关的运算任务。
上述实施例的优点之一,通过如上所述的RAID控制器的设置,避免处理单元直接驱动RAID引擎时需要耗费时间和运算资源来控制与RAID引擎通信的物理层物理信号,以及等待RAID引擎完成驱动操作的准备时间。
本发明的其他优点将配合以下的说明和说明书附图进行更详细的解说。
附图说明
此处所说明的说明书附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1显示页面、奇偶校验码页面及其纠错码的逻辑数据组织示意图。
图2为依据本发明实施例的电子装置的系统架构图。
图3为依据本发明实施例的独立磁碟冗余数组(Redundant Array ofIndependent Disks,RAID)前处理器的硬件框图。
图4为依据本发明实施例的中断程序的时序图。
图5为依据本发明实施例的RAID控制器与RAID引擎之间的初始化RAID引擎的时序图。
图6为依据本发明实施例的驱动RAID引擎的方法流程图。
其中,附图标记:
10 电子装置
110 主机端
130 闪存控制器
131 主机接口控制器
132 总线架构
134 处理单元
135 独立磁碟冗余数组前处理器
136 随机存取存储器
137 独立磁碟冗余数组引擎
139 闪存接口控制器
150 闪存模块
322 命令队列
324 转换器
326 对照表
332 配置暂存电路
334 配置寄存器
342 读取引擎
344 读取先进先出缓冲器
352 写入引擎
354 写入先进先出缓冲器
362 输出寄存器
364 输出元件
372 输出队列
412、422、434 失效信号
414、424、432 生效信号
S610~S660 方法步骤
具体实施方式
以下将配合相关附图来说明本发明的实施例。在这些附图中,相同的标号表示相同或类似的组件或方法流程。
必须了解的是,使用在本说明书中的“包含”、“包括”等词,是用于表示存在特定的技术特征、数值、方法步骤、作业处理、元件和/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、元件、组件,或以上的任意组合。
本发明中使用如“第一”、“第二”、“第三”等词是用来修饰权利要求中的组件,并非用来表示之间具有优先权顺序,先行关系,或者是一个组件先于另一个组件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的组件。
必须了解的是,当组件描述为“连接”或“耦接”至另一组件时,可以是直接连结、或耦接至其他组件,可能出现中间组件。相反地,当组件描述为“直接连接”或“直接耦接”至另一组件时,其中不存在任何中间组件。使用于描述组件之间关系的其他语词也可类似方式解读,例如“介于”相对于“直接介于”,或者是“邻接”相对于“直接邻接”等等。
为了达到数据的容错性,闪存控制器可依据每页的使用者数据产生纠错码(ErrorCorrecting Code,ECC),并将使用者数据连同纠错码一起写入闪存模块,使得将来能够修正从闪存模块读出的含有错误比特的使用者数据。纠错码可以是低密度奇偶较验码(Low-Density Parity Check Code,LDPC)、BCH码(Bose–Chaudhuri–Hocquenghem Code)或其他种类的编码。以每1K字节的使用者数据为例,BCH码可提供最多72个错误比特的修正能力,而LDPC可提供最多128个错误比特的修正能力。然而,读取页面的使用者数据可能含有超过纠错码所能够修正回来的错误比特。因此,闪存控制器可让默认数目的页面形成一个页面群组(Page Group),并且依据页面群组的使用者数据产生奇偶校验码页面(Parity Page)。参考图1所示示例的数据组织,七个页面P#0至P#6形成一个页面群组,每个页面包含4096比特的使用者数据,并据以产生相应的ECC。例如,第0页面P#0的纠错码为ECC#0,第1页面P#1的纠错码为ECC#1,依此类推。在这里需注意的是,图1所示的示例是一种逻辑观点,并不代表一个页面群组的使用者数据及其纠错码、奇偶校验码页面及其纠错码实际存储于同一个物理块中。为了优化系统效能,一个页面群组的使用者数据页面及其纠错码、奇偶校验码页面及其纠错码可能以并行的方式存储在不同通道中多个逻辑单元号(Logical NumberUnit,LUN)的物理块,本发明并不因此受限。奇偶校验码页面的数据可使用公式(1)产生:
Pj=dp0,j⊕dp1,j⊕dp2,j⊕dp3,j⊕dp4,j⊕dp5,j⊕dp6,j
其中,j为从0到4095的任意整数,p0代表第0页面,p1代表第1页面,p2代表第2页面,依此类推,Pj代表奇偶校验码页面中第j个比特的值,dp0,j代表第0页面中第j个比特的值,dp1,j代表第1页面中第j个比特的值,dp2,j代表第2页面中第j个比特的值,依此类推。当运用一个页面的相应纠错码还无法修正其中的错误比特时,闪存控制器可舍弃此页面,并依据页面群组中的其他页面和奇偶校验码页面的内容使用互斥或运算来产生修复后的此页面的使用者数据。假设第1页面中的错误比特无法使用相应纠错码修正时,可使用公式(2)进行错误页面的回复:
dp1,j=dp0,j⊕dp2,j⊕dp3,j⊕dp4,j⊕dp5,j⊕dp6,j⊕Pj
页面群组的奇偶校验码根据其作用又可称为独立磁碟冗余数组纠错码(Redundant Array of Independent Disks,RAID ECC)。虽然以上以4K比特的页面作为例子,但这只是为了说明,所属技术领域人员可应用到每个页面中包含更少或更多比特的编码上,例如512B、1K、2K、8K、16K的页面。
通常NAND闪存中会包含一个专用的RAID引擎来完成页面群组的奇偶校验码的计算,并且在一些实施方式中,由处理单元载入并执行固件时驱动RAID引擎来完成如上所述的运算。然而,处理单元直接驱动RAID引擎时需要耗费时间和运算资源来控制与RAID引擎通信的物理层物理信号,以及等待RAID引擎完成特定操作的准备时间。
参考图2。电子装置10包含主机端(Host Side)110、闪存控制器130及闪存模块150,并且闪存控制器130及闪存模块150可合称为装置端(Device Side)。电子装置10可实施于个人电脑、笔记本电脑(Laptop PC)、平板电脑、移动电话、数字相机、数字摄影机等电子产品之中。主机端110与闪存控制器130的主机接口控制器(Host InterfaceController)131可以通用串行总线(Universal Serial Bus,USB)、先进技术附件(advanced technology attachment,ATA)、串行先进技术附件(serial advancedtechnology attachment,SATA)、快速外设元件互联(peripheral componentinterconnect express,PCI-E)、通用闪存记忆存储(Universal Flash Storage,UFS)、嵌入式多媒体卡(Embedded Multi-Media Card,eMMC)等通信协议彼此通信。闪存控制器130的闪存接口控制器(Flash Interface Controller)139与闪存模块150可以双倍数据率(Double Data Rate,DDR)通信协议彼此通信,例如,开放NAND闪存(Open NAND FlashInterface,ONFI)、双倍数据率开关(DDR Toggle)或其他通信协议。闪存控制器130包含处理单元134,可使用多种方式实施,如使用通用硬件(例如,单一处理器、具并行处理能力的多处理器、图形处理器或其他具运算能力的处理器),并且在执行软件以及/或固件指令时,提供之后描述的功能。处理单元134通过主机接口控制器131接收主机命令,例如读取命令(Read Command)、写入命令(Write Command)、抹除命令(Erase Command)等,调度并执行这些命令。闪存控制器130另包含随机存取存储器(Random Access Memory,RAM)136,可实施为动态随机存取存储器(Dynamic Random Access Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)或上述两者的结合,用于配置空间作为数据缓冲区,存储从主机端110读取并即将写入闪存模块150的使用者数据(也可称为主机数据)、奇偶校验码等,存储从闪存模块150读取并即将输出给主机端110的使用者数据,以及存储从闪存模块150读取的用于进行数据修复的ECC、奇偶校验码等。随机存取存储器136另可存储执行过程中需要的数据,例如,变量、数据表、主机-闪存对照表(Host-to-Flash,H2FTable)、闪存-主机对照表(Flash-to-Host,F2H Table)等。闪存接口控制器139包含NAND闪存控制器(NAND Flash Controller,NFC),提供存取闪存模块150时需要的功能,例如命令串行器(Command Sequencer)、ECC编码器、ECC译码器等。ECC编码器用于依据一个使用者数据页面或者RAID ECC页面的内容产生相应的ECC。
闪存控制器130中可配置总线架构(Bus Architecture)132,用于让元件之间彼此耦接以传递数据、地址、控制信号等,这些元件包含主机接口控制器131、处理单元134、RAID前处理器(Pre-processor)135、RAM 136、RAID引擎137、闪存接口控制器139等。总线包含并行的物理线,连接闪存控制器130中两个以上的元件。总线是一种共享的传输媒体,在任意的时间上,只能有两个装置可以使用这些线来彼此通信,用于传递数据。数据及控制信号能够在元件间分别沿数据和控制线进行双向传播,但另一方面,地址信号只能沿地址线进行单向传播。例如,当处理单元134想要读取RAM 136的特定地址上的数据时,处理单元134在地址线上传送此地址给RAM 136。接着,此地址的数据会在数据线上回复给处理单元134。为了完成数据读取操作,控制信号会使用控制线进行传递。
闪存控制器130可包含RAID引擎137,包含互斥或门和寄存器,用于完成如上所述公式(1)、公式(2)或类似的运算。闪存控制器130还包含RAID前处理器135,通过总线架构132耦接至RAM 136,用于从RAM 136的指定地址读取使用者数据或者奇偶校验码,以及存储使用者数据或者奇偶校验码到RAM 136的指定地址。RAID前处理器135还可以通过处理器总线(Processor Bus)耦接处理单元134,以及通过RAID总线耦接RAID引擎137,而不需要通过总线架构132和处理单元134与RAID引擎137进行通信。举例来说,RAID前处理器135和RAID引擎137可用于支援编码程序、译码程序、中断程序(Terminate Procedure)、回复程序(Resume Procedure)等。搭配图1,在编码程序中,主机接口控制器131可从主机端110接收页面P#0至P#6的使用者数据,并且通过总线架构132存储到RAM 136中的指定地址。RAID前处理器135可通过总线架构132从RAM 136中的指定地址逐页读取页面P#0至P#6的使用者数据,使得RAID引擎137能够对读取页面进行互斥或运算以产生奇偶校验码页面的奇偶校验码。接着,RAID前处理器135可通过总线架构132存储奇偶校验码页面的奇偶校验码到RAM136中的指定地址。
如果闪存接口控制器139从闪存模块150读取页面P#0至P#6的使用者数据并通过总线架构132存储至RAM 136中的指定地址,但却发现页面P#1中的错误比特无法使用相应纠错码修正时,会触发译码程序。在译码程序中,闪存接口控制器139可从闪存模块150的指定地址读取奇偶校验码页面的奇偶校验码,并且通过总线架构132存储到RAM 136中的指定地址。RAID前处理器135可通过总线架构132从RAM 136中的指定地址逐页读取页面P#0、P2至P#6的使用者数据,以及奇偶校验码页面的奇偶校验码,使得RAID引擎137能够对读取页面进行互斥或运算以产生页面P#1的使用者数据。接着,RAID前处理器135通过总线架构132存储页面P#1的使用者数据到RAM 136中的指定地址。
假设RAID引擎137在编码页面P#0至P#3的使用者数据后被中断:在中断程序中,RAID前处理器135可通过总线架构132将RAID引擎137所产生的页面P#0至P#3的临时性编码结果存储到RAM 136中的指定地址。在RAID前处理器135被指示进行回复后,启动回复程序。在回复程序中,RAID前处理器135可通过总线架构132从RAM 136中的指定地址逐页读取页面P#0至P#3的临时性编码结果,和页面P#4至P#6的使用者数据,使得RAID引擎137能够对读取页面进行互斥或运算以产生奇偶校验码页面的奇偶校验码。接着,RAID前处理器135通过总线架构132存储奇偶校验码页面的奇偶校验码到RAM 136中的指定地址。
在执行如上所述的程序之前,RAID前处理器135可通知RAID引擎137执行初始化操作,用于切换群组、清除目前群组的数据、设定工作模式等。
闪存模块150提供大量的存储空间,通常是数百个千兆字节(Gigabytes,GB),甚至是数个兆兆字节(Terabytes,TB),用于存储大量的使用者数据,例如高分辨率图片、影片等。闪存模块150中包含控制电路以及存储器数组,存储器数组中的存储单元可包含单层式单元(Single Level Cells,SLCs)、多层式单元(Multiple Level Cells,MLCs)、三层式单元(Triple Level Cells,TLCs)、四层式单元(Quad-Level Cells,QLCs)或上述的任意组合。处理单元134通过闪存接口控制器139写入使用者数据、ECC码和奇偶校验码到闪存模块150中的指定地址(目的地地址),以及从闪存模块150中的指定地址(来源地址)读取使用者数据、ECC码和奇偶校验码。闪存接口控制器139使用数个电子信号来协调闪存控制器130与闪存模块150间的数据与命令传递,包含数据线(Data Line)、时钟信号(clock signal)与控制信号(control signal)。数据线可用于传递命令、地址、读出及写入的数据;控制信号线可用于传递芯片启动(Chip Enable,CE)、地址提取启动(Address Latch Enable,ALE)、命令提取启动(Command Latch Enable,CLE)、写入启动(Write Enable,WE)等控制信号。
参考图3所示的RAID前处理器135的硬件框图。RAID前处理器135包含RAID控制器310,用于协助处理单元134中执行的固件调度每个程序中的操作,以及与RAID引擎137之间的信号交互。参考如图4所示的中断程序的时序图(Timing Diagram),举例来说,RAID控制器310可在输出编码输入启动”enc_in_en”的失效信号(De-assertion)412给RAID引擎137的1个时钟后,侦测RAID引擎137发出的中断确认”term_valid”的生效信号(Assertion)414,用于确认RAID引擎137已经进入中断程序并且启动第一个批次的临时性编码结果的输出。RAID控制器310可在输出中断脉冲”term_pls”的失效信号422给RAID引擎137的5个时钟后,从RAID引擎137接收到一段默认时间的中断输出确认”term_out_valid”的生效信号424,使得RAID控制器310能够在这段时间区间内从RAID引擎137接收第一个批次的临时性编码结果。RAID控制器310可在输出中断输出确认”term_out_valid”的失效信号432给RAID引擎137的同时,侦测从RAID引擎137发出的中断确认”term_valid”的生效信号434,确认RAID引擎137即将输出第二个批次的临时性编码结果。在以前的实施方式中,处理单元(未显示)必须耗费一段连续的时间来侦测从RAID引擎(未显示)输入的信号,以及控制相应接口的模拟电路来输出信号给RAID引擎(未显示),直到完成整个中断程序。
为了降低处理单元134驱动RAID引擎137所需耗费的时间和运算资源,RAID前处理器135还包含命令队列322,用于让处理单元134写入高阶的驱动RAID引擎137的命令。每个命令可包含8个比特的操作码和24比特的参数,指示与RAID引擎137的物理层交互操作。处理单元134还会为每个命令赋予独一无二的命令编号作为标识。当处理单元134将高阶命令推入命令队列322之后就可转去执行其他的任务,而不需要等待这些命令被执行完毕才能离开。从另一方面来说,RAID控制器310可用于掌控命令队列322中的所有命令的一系列关联信号交互,并且在与RAID引擎137之间的信号交互后输出执行结果到输出队列372,用于让处理单元134可从输出队列372获取这些命令的执行结果。RAID前处理器135可包含转换器324和对照表326。对照表326可包含多笔纪录,每笔纪录存储特定操作码和特定参数所对应的用于驱动与RAID引擎137之间的接口的设定值(可称为低阶的驱动值),使得转换器324可依据命令队列322中的任何命令的操作码和参数从对照表326获取设定值,并且设定这些值到配置暂存电路(Configuration Caching Circuit)332中的寄存器。举例来说,为了初始化RAID引擎137,处理单元134可推入4个命令到命令队列322,示例的命令如表1所示:
表1
Figure BDA0003428313260000111
这4个命令分别用于让RAID引擎137切换到指定的群组,清除之前群组的数据,设定指定的工作模式,以及启动RAID引擎137中的直接存储器存取控制器(Direct MemoryAccess,DMAController)。转换器324可依序依据命令队列322中这4个命令的操作码和参数从对照表326获取设定值,并且设定这些值到配置暂存电路332中的寄存器。
每次当RAID控制器310依据配置寄存器334中的设定值与RAID引擎137进行一系列物理层的信号交互以完成指定的驱动操作之后,发出启动信号(Triggering Signal)给配置暂存电路332和转换器324。当配置暂存电路332中的输出元件侦测到启动信号后,输出配置暂存电路332的寄存器中的设定值到配置寄存器324,用以覆写态寄存器324中的设定值。当转换器324侦测到启动信号时,从命令队列322推出顶端的命令,根据推出命令中的操作码和参数从对照表326获取相应的设定值,并且设定这些值到配置暂存电路332中的寄存器,用以覆写配置暂存电路332中的寄存器的设定值。举例来说,假设在时间点t0,配置寄存器334存储关联于表1中的第一个命令的驱动值,配置暂存电路332中的寄存器存储关联于表1中的第二个命令的驱动值,并且命令队列322依序存储表1中的第三个和第四个命令。RAID控制器310在时间点t1依据配置寄存器334中的驱动值与RAID引擎137进行一系列物理层的信号交互以切换到指定群组后,发出启动信号给配置暂存电路332,使得配置暂存电路332中的输出元件将关联于表1中的第二个命令的驱动值输出到配置寄存器334;以及发出启动信号给转换器324,使得转换器324从命令队列322推出顶端的关联于表1中的第三个命令,根据第三个命令中的操作码和参数从对照表326获取驱动值,并且设定这些驱动值到配置暂存电路332中的寄存器。RAID控制器310在时间点t2依据配置寄存器334中的驱动值与RAID引擎137进行一系列物理层的信号交互以清除之前群组的数据后,发出启动信号给配置暂存电路332和转换器324,依此类推。相应于表1中的命令,图5显示依据本发明实施例的RAID控制器310与RAID引擎137之间的初始化RAID引擎的时序图。
在编码程序、译码程序或者回复程序中,RAID控制器310可依据配置寄存器334中的驱动值发出启动信号及相关参数给读取引擎342,用于指示读取引擎342从RAM 136的指定地址读取一个或多个页面的使用者数据、奇偶校验码或者临时性编码结果。读取引擎342通过总线架构132获取指定页面的使用者数据、奇偶校验码或者临时性编码结果,并且存储到读取先进先出缓存器(First-In First-Out,FIFO Buffer)344。接着,RAID控制器310从读取FIFO 344获取指定页面的使用者数据、奇偶校验码或者临时性编码结果,并且通过数据线”enc_dat_in”传送给RAID引擎137。
在译码程序或者中断程序中,RAID控制器310可依据配置寄存器334中的驱动值通过数据线”enc_dat_out”从RAID引擎137获取一个或多个页面的临时性编码结果或者奇偶校验码,并且存储到写入FIFO 354。接着,RAID控制器310可发出启动信号及相关参数给写入引擎352,用于指示写入引擎352将临时性编码结果或者奇偶校验码写入RAM 136的指定地址。写入引擎352从写入FIFO 354获取临时性编码结果或者奇偶校验码,并且通过总线架构132写入临时性编码结果或者奇偶校验码到RAM 136的指定地址。
每次当RAID控制器310依据配置寄存器334中的设定值与RAID引擎137进行一系列物理层的信号交互并获取执行结果之后,发出启动信号给输出元件364,然后存储执行结果到输出寄存器362。执行结果可包含命令编号、中断的页面编号等。当输出元件364侦测到启动信号后,将输出寄存器362中的执行结果推入输出队列372的底端。
因应RAID前处理器135的硬件架构,本发明实施例提出一种驱动RAID引擎的方法,由RAID控制器310执行。参考图6,详细步骤说明如下:
步骤S610:依据配置寄存器334中的驱动值完成指定的驱动操作。配置寄存器334中的驱动值相应于由处理单元134所发出的命令,并且在RAID控制器310和RAID引擎137协力完成驱动操作的期间,处理单元134可执行与页面群组的奇偶校验码的编码和译码无关的运算任务。
在一些实施例中,RAID控制器310可依据配置寄存器334中的驱动值与RAID引擎137进行一系列物理层的信号交互以完成指定的驱动操作。
在编码程序、译码程序或者回复程序的一些实施例中,RAID控制器310可依据配置寄存器334中的驱动值指示读取引擎342通过总线架构132从RAM136的指定地址读取一个或多个页面的使用者数据、奇偶校验码或者临时性编码结果,并且存储使用者数据、奇偶校验码或者临时性编码结果至FIFO 344。在一段默认时间后,RAID控制器310从读取FIFO 344获取指定页面的使用者数据、奇偶校验码或者临时性编码结果。接着,RAID控制器310与RAID引擎137进行一系列物理层的信号交互以通过数据线传送获取的使用者数据、奇偶校验码或者临时性编码结果给RAID引擎137。
在编码程序、译码程序或者中断程序的一些实施例中,RAID控制器310可依据配置寄存器334中的驱动值与RAID引擎137进行一系列物理层的信号交互以通过数据线从RAID引擎137接收一个或多个页面的使用者数据、临时性编码结果或者奇偶校验码,并且存储使用者数据、临时性编码结果或者奇偶校验码到写入FIFO 354。接着,RAID控制器310指示写入引擎352将使用者数据、临时性编码结果或者奇偶校验码通过总线架构132写入RAM 136的指定地址。
步骤S620:发出启动信号给配置暂存电路332,用于驱动配置暂存电路332将其中的驱动值存储至配置寄存器334。
步骤S630:发出启动信号给转换器324,用于驱动转换器324依据命令队列322顶端的命令中的操作码和参数从对照表326获取相应的驱动值,并设定这些值到配置暂存电路332中的寄存器。
步骤S640:判断是否需要回报执行结果给处理单元134。如果是,则流程继续步骤S650的处理;否则,流程继续进行步骤S610,开始下一个驱动操作。
步骤S650:发出启动信号给输出元件364,驱动输出元件364将输出寄存器362的执行结果推入输出队列372的底端。在这里需要注意的是,由于执行结果包含了命令编号,使得处理单元134可通过命令编号对应到之前推入到命令队列322的特定命令。
步骤S660:存储获取的执行结果到输出寄存器362。
虽然图2、图3中包含了以上描述的组件,但不排除在不违反发明的精神下,使用更多其他的附加组件,以达成更佳的技术效果。此外,虽然图6的流程图采用指定的顺序来执行,但是在不违反发明精神的情况下,所属技术领域的技术人员可以在达到相同效果的前提下,修改这些步骤之间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。此外,所属技术领域的技术人员也可以将若干步骤整合为一个步骤,或者是除了这些步骤外,循序或并行地执行更多步骤,本发明也不应因此而局限。
以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何本领域技术人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本申请的权利要求书所界定的范围为准。

Claims (11)

1.一种驱动独立磁碟冗余数组引擎的装置,其特征在于,包括:
命令队列,用于存储由处理单元所推入的多个命令,每个所述命令包含操作码和第一参数,指示与所述独立磁碟冗余数组引擎的物理层交互操作;
对照表,包含多笔纪录,每笔所述纪录存储特定操作码和特定第一参数所对应的用于驱动与所述独立磁碟冗余数组引擎的接口的驱动值;
转换器,耦接所述命令队列和所述对照表,用于依据所述命令队列中的任何所述命令的所述操作码和所述第一参数从所述对照表获取相应的所述驱动值;
配置寄存器,用于存储由所述转换器所获取的所述驱动值;以及
独立磁碟冗余数组控制器,耦接所述配置寄存器,用于依据所述配置寄存器中的所述驱动值完成一系列与所述独立磁碟冗余数组引擎的物理层信号交互。
2.如权利要求1所述的驱动独立磁碟冗余数组引擎的装置,其特征在于,包括:
读取缓冲器;
读取引擎,耦接所述读取缓冲器;
其中,所述独立磁碟冗余数组控制器耦接所述读取缓冲器和所述读取引擎,依据所述配置寄存器中的所述驱动值发出第一启动信号和第二参数给所述读取引擎,用于指示所述读取引擎从随机存取存储器的第一地址读取使用者数据、奇偶校验码或者临时性编码结果,以及存储所述使用者数据、所述奇偶校验码或者所述临时性编码结果至所述读取缓冲器;从所述读取缓冲器读取所述使用者数据、所述奇偶校验码或者所述临时性编码结果;以及通过数据线传送所述使用者数据、所述奇偶校验码或者所述临时性编码结果给所述独立磁碟冗余数组引擎。
3.如权利要求1所述的驱动独立磁碟冗余数组引擎的装置,其特征在于,包括:
写入缓冲器;
写入引擎,耦接所述写入缓冲器;
其中,所述独立磁碟冗余数组控制器耦接所述写入缓冲器和所述写入引擎,依据所述配置寄存器中的所述驱动值通过数据线从所述独立磁碟冗余数组引擎获取临时性编码结果或者奇偶校验码;存储所述临时性编码结果或者所述奇偶校验码至所述写入缓冲器;以及发出第二启动信号和第三参数给所述写入引擎,用于指示所述写入引擎从所述写入缓冲器读取所述奇偶校验码或者所述奇偶校验码,并且将所述奇偶校验码或者所述奇偶校验码写入所述随机存取存储器的第二地址。
4.如权利要求1所述的驱动独立磁碟冗余数组引擎的装置,其特征在于,包括:
配置暂存电路,耦接所述转换器和所述配置寄存器,包含输出元件和寄存器,
其中,所述独立磁碟冗余数组控制器依据所述配置寄存器中的所述驱动值完成驱动所述独立磁碟冗余数组引擎的操作后,发出第三启动信号给所述配置暂存电路,用于驱动所述输出元件将所述寄存器的驱动值输出到所述配置寄存器;以及发出第四启动信号给所述转换器,用于驱动所述转换器从所述命令队列获取一个所述命令,依据获取的所述命令中的操作码和参数从所述对照表获取相应的所述驱动值,并且设定新获取的所述驱动值到所述配置暂存电路中的所述寄存器。
5.如权利要求1所述的驱动独立磁碟冗余数组引擎的装置,其特征在于,包括:
输出队列,耦接所述独立磁碟冗余数组控制器,
其中,所述独立磁碟冗余数组控制器在完成与所述独立磁碟冗余数组引擎的物理层信号交互后输出相应于所述命令的执行结果至所述输出队列。
6.如权利要求5所述的驱动独立磁碟冗余数组引擎的装置,其特征在于,包括:
输出元件,耦接所述输出队列和所述独立磁碟冗余数组控制器;以及
输出寄存器,耦接输出元件和所述独立磁碟冗余数组控制器,
其中,所述独立磁碟冗余数组控制器在完成与所述独立磁碟冗余数组引擎的物理层信号交互后发出第五启动信号给所述输出元件,用于驱动所述输出元件将所述输出寄存器中的执行结果推入所述输出队列;以及存储相应于所述命令的执行结果至所述输出寄存器。
7.一种驱动独立磁碟冗余数组引擎的方法,由独立磁碟冗余数组控制器执行,其中所述独立磁碟冗余数组控制器包含配置寄存器,其特征在于,所述驱动独立磁碟冗余数组引擎的方法包括:
依据所述配置寄存器中的驱动值与所述独立磁碟冗余数组引擎进行一系列物理层的信号交互以完成驱动操作,
其中,所述驱动值相应于由处理单元所发出的命令,并且在所述独立磁碟冗余数组控制器和所述独立磁碟冗余数组引擎协力完成所述驱动操作的期间,所述处理单元执行与页面群组的奇偶校验码的编码和译码无关的运算任务。
8.如权利要求7所述的驱动独立磁碟冗余数组引擎的方法,其中所述独立磁碟冗余数组控制器包含读取引擎和读取缓冲器,其特征在于,所述驱动独立磁碟冗余数组引擎的方法包括:
依据所述配置寄存器中的所述驱动值指示所述读取引擎从随机存取存储器读取一个或多个页面的使用者数据、奇偶校验码或者临时性编码结果,并且存储所述使用者数据、所述奇偶校验码或者所述临时性编码结果至所述读取缓冲器;
在一段默认时间后,从所述读取缓冲器获取所述使用者数据、所述奇偶校验码或者所述临时性编码结果;以及
与所述独立磁碟冗余数组引擎进行一系列物理层的信号交互以通过数据线传送所述使用者数据、所述奇偶校验码或者所述临时性编码结果给所述独立磁碟冗余数组引擎。
9.如权利要求7所述的驱动独立磁碟冗余数组引擎的方法,其中所述独立磁碟冗余数组控制器包含写入引擎和写入缓冲器,其特征在于,所述驱动独立磁碟冗余数组引擎的方法包括:
依据所述配置寄存器中的所述驱动值与所述独立磁碟冗余数组引擎进行一系列物理层的信号交互以通过数据线从所述独立磁碟冗余数组引擎接收一个或多个页面的使用者数据、临时性编码结果或者奇偶校验码;
存储所述使用者数据、所述临时性编码结果或者所述奇偶校验码至所述写入缓冲器;以及
指示所述写入引擎将所述使用者数据、所述临时性编码结果或者所述奇偶校验码写入随机存取存储器。
10.如权利要求7所述的驱动独立磁碟冗余数组引擎的方法,其中所述独立磁碟冗余数组控制器包含配置暂存电路、命令队列、转换器和对照表,其特征在于,所述驱动独立磁碟冗余数组引擎的方法包括:
完成所述驱动操作后,发出第一启动信号给所述配置暂存电路,用于驱动所述配置暂存电路中的输出元件将所述配置暂存电路中的寄存器的驱动值输出到所述配置寄存器;以及
完成所述驱动操作后,发出第二启动信号给所述转换器,用于驱动所述转换器依据所述命令队列顶端的命令中的操作码和参数从所述对照表获取相应的驱动值,并设定所述相应的驱动值到所述配置暂存电路中的所述寄存器。
11.如权利要求7所述的驱动独立磁碟冗余数组引擎的方法,其中所述独立磁碟冗余数组控制器包含输出队列,其特征在于,所述驱动独立磁碟冗余数组引擎的方法包括:
完成所述驱动操作后,判断是否需要回报相应于所述命令的执行结果给所述处理单元;以及
当需要回报所述执行结果给所述处理单元时,将所述执行结果推入所述输出队列,使得所述处理单元能够从输出队列获取所述执行结果。
CN202111588211.8A 2021-12-23 2021-12-23 驱动独立磁碟冗余数组引擎的方法和装置 Pending CN116340047A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202111588211.8A CN116340047A (zh) 2021-12-23 2021-12-23 驱动独立磁碟冗余数组引擎的方法和装置
US17/984,691 US20230205461A1 (en) 2021-12-23 2022-11-10 Apparatus and method for driving redundant array of independent disks (raid) engine

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111588211.8A CN116340047A (zh) 2021-12-23 2021-12-23 驱动独立磁碟冗余数组引擎的方法和装置

Publications (1)

Publication Number Publication Date
CN116340047A true CN116340047A (zh) 2023-06-27

Family

ID=86879302

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111588211.8A Pending CN116340047A (zh) 2021-12-23 2021-12-23 驱动独立磁碟冗余数组引擎的方法和装置

Country Status (2)

Country Link
US (1) US20230205461A1 (zh)
CN (1) CN116340047A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117806568B (zh) * 2024-02-29 2024-06-07 山东云海国创云计算装备产业创新中心有限公司 一种数据更新方法、装置、设备和存储介质

Also Published As

Publication number Publication date
US20230205461A1 (en) 2023-06-29

Similar Documents

Publication Publication Date Title
US11093392B2 (en) Apparatuses and methods to perform continuous read operations
US10824523B2 (en) Data storage device and operating method thereof
US10769066B2 (en) Nonvolatile memory device, data storage device including the same and operating method thereof
US20130227346A1 (en) Controlling nonvolatile memory device and nonvolatile memory system
US20140108678A1 (en) Host controller
JP2007513435A (ja) データ組織化を管理するための方法、システム、及びプログラム
CN107918571B (zh) 测试储存单元的方法以及使用该方法的装置
US20200241956A1 (en) Memory system and operating method thereof
CN105653199A (zh) 数据读取方法、存储器存储装置及存储器控制电路单元
CN116107767A (zh) 包括多处理器的控制器及其操作方法
KR20210039171A (ko) 메모리 시스템을 포함하는 데이터 처리 시스템에서 동작 정보를 송수신하는 방법 및 장치
US11216207B2 (en) Apparatus and method for programming user data on the pages and the parity of the page group into flash modules
US11755525B2 (en) System including PIPE5 to PIPE4 converter and method thereof
US20230205461A1 (en) Apparatus and method for driving redundant array of independent disks (raid) engine
US20210397364A1 (en) Storage device and operating method thereof
TWI797905B (zh) 驅動獨立磁碟冗餘陣列引擎的裝置及方法
CN112988449B (zh) 写入页面群组的数据到闪存模块的装置及方法
US20230376212A1 (en) Apparatus and method for recovering data in a memory system
US20190295681A1 (en) Nonvolatile memory device, operating method thereof and data storage device including the same
CN116010157A (zh) 用于编程数据的存储器装置和存储器系统
CN114661516A (zh) 具有数据质量度量和可选数据恢复方案的存储设备
US20200394134A1 (en) Data storage device and operating method thereof
KR20210018570A (ko) 컨트롤러, 컨트롤러의 동작 방법 및 이를 포함하는 저장 장치
CN113535459B (zh) 响应电源事件的数据存取方法及装置
US20230289083A1 (en) Memory device for effectively performing read operation, and operation method thereof

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination