CN109189340B - 用于存取独立硬盘冗余阵列的系统与方法 - Google Patents

用于存取独立硬盘冗余阵列的系统与方法 Download PDF

Info

Publication number
CN109189340B
CN109189340B CN201810993750.1A CN201810993750A CN109189340B CN 109189340 B CN109189340 B CN 109189340B CN 201810993750 A CN201810993750 A CN 201810993750A CN 109189340 B CN109189340 B CN 109189340B
Authority
CN
China
Prior art keywords
syndromes
main memory
calculation
progress
request
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.)
Active
Application number
CN201810993750.1A
Other languages
English (en)
Other versions
CN109189340A (zh
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.)
Shanghai Zhaoxin Semiconductor Co Ltd
Original Assignee
VIA Alliance Semiconductor Co Ltd
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 VIA Alliance Semiconductor Co Ltd filed Critical VIA Alliance Semiconductor Co Ltd
Priority to CN201810993750.1A priority Critical patent/CN109189340B/zh
Priority to TW107136105A priority patent/TWI685789B/zh
Publication of CN109189340A publication Critical patent/CN109189340A/zh
Priority to US16/541,177 priority patent/US11099739B2/en
Application granted granted Critical
Publication of CN109189340B publication Critical patent/CN109189340B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • 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
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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/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
    • 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

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明提出一种用于存取独立硬盘冗余阵列的系统与方法。所述系统耦接于中央处理器、主存储器以及独立硬盘冗余阵列之间,并且包括运算电路、暂存器以及硬盘控制器。运算电路耦接于中央处理器与主存储器,用以从主存储器读取写入数据并计算写入数据的多个校验子,并且将计算完成的多个校验子储存至主存储器。暂存器耦接于运算电路,用以储存运算电路计算校验子的计算进度。硬盘控制器耦接于暂存器以及独立硬盘冗余阵列,用以从暂存器读取计算进度,并且根据所读取的计算进度将计算完成的校验子从主存储器储存至独立硬盘冗余阵列。本发明减少了硬盘控制器的闲置时间,从而能提升数据存取的速度。

Description

用于存取独立硬盘冗余阵列的系统与方法
技术领域
本发明是有关于一种数据存取方法,且特别是有关于一种用于存取独立硬盘冗余阵列的系统与方法。
背景技术
依操作方式不同,现行的独立硬盘冗余阵列(Redundancy Array of IndependentDisks,RAID)结构分为许多种类,诸如RAID 0、RAID1、RAID2至RAID7等等,其中,RAID3至RAID6例如会使用异或(exclusive OR,XOR)逻辑运算来产生奇偶校验码(Parity code),以实现RAID的容错能力。举例来说,在以三个硬盘所组成的RAID5中,当有一批数据要写入独立硬盘冗余阵列时,中央处理器会将这批数据划分(stripe)为两组不同的部分数据并暂存在随机存取存储器(Random Access Memory,RAM)中,然后再指示硬盘控制器(例如RAID控制器)将其分别写入两个不同的硬盘。此外,中央处理器还会根据这两组成份数据进行异或运算,以计算对应的奇偶校验数据并暂存在RAM中,然后再指示硬盘控制器将其写入另外一个硬盘。
为了提升系统的效能,常使用RAID加速器来协助中央处理器计算奇偶校验数据。然而,在RAID加速器将计算完的奇偶校验数据记录在RAM之后,必须经过诸如系统调用(system call)、文件系统(file system)、计算访问地址等等流程,因此到硬盘控制器实际开始从RAM取得数据并将其写入硬盘之前有一大段时间硬盘控制器是处于闲置的状态。
发明内容
有鉴于此,本发明提供一种用于存取独立硬盘冗余阵列的系统与方法,通过减少硬盘控制器的闲置时间,以提升数据存取的速度。
本发明所揭露的用于存取独立硬盘冗余阵列的系统耦接于中央处理器、主存储器以及该独立硬盘冗余阵列之间,所述系统包括运算电路、暂存器及硬盘控制器,其中运算电路耦接于该中央处理器与该主存储器,用以从该主存储器读取写入数据并计算该写入数据的多个校验子,并且将计算完成的该多个校验子储存至该主存储器;暂存器耦接于该运算电路,用以储存该运算电路计算该多个校验子的计算进度;硬盘控制器耦接于该暂存器以及该独立硬盘冗余阵列,用以从该暂存器取得该计算进度,并且根据所取得的该计算进度将计算完成的该多个校验子从该主存储器储存至该独立硬盘冗余阵列。
本发明所揭露的用于存取独立硬盘冗余阵列的方法,包括:读取主存储器中的写入数据;计算该写入数据的多个校验子并且将该多个校验子储存至该主存储器;将计算该多个校验子的计算进度储存于暂存器中;以及读取该暂存器中的该计算进度,并根据所读取的该计算进度,将该多个校验子从该主存储器储存至该独立硬盘冗余阵列。
基于上述,本发明所揭露的用于存取独立硬盘冗余阵列的系统与方法,在独立硬盘冗余阵列加速器中提供一组暂存器来即时记录独立硬盘冗余阵列加速器计算校验子的计算进度。硬盘控制器在将校验子从主存储器写入硬盘前,先读取独立硬盘冗余阵列加速器中的暂存器,以根据暂存器中所记录的计算进度来将主存储器中的计算完成的校验子写入硬盘。据此,可以在独立硬盘冗余阵列加速器计算校验子的过程中,硬盘控制器就可以先将计算完成的部分校验子写入硬盘,而不必等到该笔写入数据所对应的全部校验子都计算完成并储存到主存储器之后才通知硬盘控制器将计算完成的校验子写入硬盘,从而减少硬盘控制器的闲置时间,以提升数据存取的速度。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图式作详细说明如下。
附图说明
图1绘示本发明一实施例中计算机系统的概要方块图。
图2绘示本发明一实施例中运算电路执行数据存取方法的流程图。
图3绘示本发明一实施例中硬盘控制器执行数据存取方法的流程图。
图4绘示本发明一实施例中数据存取方法的示意图。
其中,附图中符号的简单说明如下:
10:计算机系统;100:独立硬盘冗余阵列存取系统;111:运算电路;113:暂存器;120:独立硬盘冗余阵列加速器;130:硬盘控制器;200:中央处理器;300:主存储器;300-1、300-2、300-3:主存储器300的区块;400:独立硬盘冗余阵列;410、420、430:硬盘;Page1-0、Page1-1、Page1-2、Page1-n:第一部分的数据;Page2-0、Page2-1、Page2-2、Page2-n:第二部分的数据;PagePQ-0、PagePQ-1、PagePQ-2、PagePQ-n:校验子数据;S210、S220、S230、S240、S250、S310、S320、S325、S330、S340、S350、S360、S370:数据存取方法的步骤。
具体实施方式
图1绘示本发明一实施例中计算机系统的概要方块图。
请参照图1,计算机系统10包括中央处理器(Central Processing Unit,CPU)200、主存储器(main memory)300、独立硬盘冗余阵列(Redundancy Array of IndependentDisks,RAID)400以及独立硬盘冗余阵列存取系统100。独立硬盘冗余阵列存取系统100耦接于中央处理器200、主存储器300以及独立硬盘冗余阵列400之间。
详细来说,独立硬盘冗余阵列存取系统100包括运算电路111、暂存器113以及硬盘控制器130,其中硬盘控制器130例如是硬盘阵列控制器,可经由诸如ATA/ATAPI、SATA或是SCSI等规格的总线通道连接到多个硬盘410、420、430,以将这些硬盘整合成硬盘阵列,本发明并不在此限制整合为硬盘阵列的硬盘数量。
运算电路111耦接于中央处理器200与主存储器300,用以从主存储器300读取写入数据并计算写入数据的多个校验子,并且将计算完成的校验子储存至主存储器300。暂存器113耦接于运算电路111,用以储存运算电路111计算校验子的计算进度。硬盘控制器130耦接于暂存器113以及独立硬盘冗余阵列400,用以从暂存器113读取计算进度,并且根据所读取的该计算进度将计算完成的校验子从主存储器300储存至独立硬盘冗余阵列400。
在一些实施例中,运算电路111与暂存器113是整合为独立硬盘冗余阵列加速器(RAID Accelerator,RAIDA)120来实施,其中运算电路111负责协助中央处理器200进行独立硬盘冗余阵列400所需要的计算(例如,计算P校验子、Q校验子等)。特别是,暂存器113与硬盘控制器130之间以实体线路连接,因此硬盘控制器130可快速且直接地存取暂存器113中的计算进度。
在一些实施例中,RAIDA 120是整合于北桥芯片组(north bridge chipset)中。硬盘控制器130是整合于南桥芯片组(south bridge chipset)中。中央处理器200例如可经由此北桥芯片组存取主存储器300或下达指令至南桥芯片组的硬盘控制器130,而硬盘控制器130例如可经由此北桥芯片组存取主存储器300。在其它实施例中,例如片上系统(SystemOn Chip,SOC)的实施例中,RAIDA 120和硬盘控制器130可整合于同一输入输出(IO)扩展芯片中。
以下将举实施例详细说明当中央处理器200欲将写入数据储存至独立硬盘冗余阵列400中时,独立硬盘冗余阵列存取系统100的操作流程。
图2绘示本发明一实施例中运算电路执行数据存取方法的流程图,图3绘示本发明一实施例中硬盘控制器执行数据存取方法的流程图,图4绘示本发明一实施例中数据存取方法的示意图。
请先参照图4,在一些实施例中,中央处理器200例如会先将写入数据划分为第一部分以及第二部分,并分别记录在主存储器300的两个不同区块300-1、300-2中,其中第一部分例如包括n+1个页面(page)的数据Page1-0至Page1-n,而第二部分例如包括n+1个页面的数据Page2-0至Page2-n。而与写入数据对应的计算完成的校验子会记录在主存储器300的区块300-3中,同样的,校验子例如包括n+1个页面的数据PagePQ-0至PagePQ-n。每个页面的校验子对应于写入数据的第一部分和第二部分的一个页面的数据,比如写入数据的第一部分的页面数据Page1-0和第二部分的页面数据Page2-0对应的校验子为PagePQ-0。其中一个页面例如可包括4千字节(KB)的数据。硬盘控制器130可随后将写入数据的第一部分从主存储器300写入硬盘410中,并且将写入数据的第二部分从主存储器300写入硬盘420中。本发明中的RAIDA120在对多个校验子进行计算的过程当中,硬盘控制器130将已经计算完成的校验子从主存储器300写入硬盘430中,以实现RAID的容错能力。
然而,本发明并不在此限制划分写入数据的具体方式。举例来说,写入数据亦可例如被划分为三个或其他更多个部分,并记录于主存储器300的三个或更多个区块当中。
在一些实施例中,中央处理器200例如会为RAIDA 120生成与需要计算校验子的写入数据对应的计算请求,以指示RAIDA 120计算写入数据的校验子。举例来说,中央处理器200例如可在主存储器300中配置计算请求表(未绘示),用以先进先出地记录多个计算请求,以告知RAIDA 120其计算校验子所需的多笔写入数据。中央处理器200选取主存储器300中的区块300-1、300-2中储存的写入数据的第一部分和第二部分的一部分页面(比如选取第一部分与第二部分的各16个页面)并获得选取的第一部分和第二部分的页面在主存储器300中的地址、长度等信息;然后根据选取的第一部分和第二部分的页面在主存储器300中的地址、长度等信息在主存储器300的区块300-3中分配对应的校验子储存空间,并获得校验子储存空间的地址、长度等信息;再在暂存器113中生成对应的计算进度并获得计算进度在暂存器113中的地址等信息。中央处理器200根据选取的写入数据的第一部分和第二部分的页面在主存储器300中的储存空间的地址、长度等信息和选取的写入数据的第一部分和第二部分的页面对应的校验子在主存储器300中的储存空间的地址、长度等信息和计算进度在暂存器113中的地址等信息,生成对应的计算请求;然后将计算请求存入主存储器300(例如存入主存储器300中的计算请求表),再通知RAIDA 120从主存储器300中读取计算请求并根据读取到的计算请求计算校验子;同时,中央处理器200会通知硬盘控制器130进行校验子写入处理(下文会详述)。在一实施例中,中央处理器200在这里会根据计算请求的部分信息生成一写入请求并通知硬盘控制器130进行校验子写入处理。
在一实施例中,如果还有剩余的写入数据对应的页面没有生成计算请求,则中央处理器200会重复上述生成计算请求的过程,直到所有写入数据对应的页面都生成计算请求并存入主存储器300(例如主存储器300中的计算请求表)。据此,RAIDA 120可从主存储器300中依序取得计算请求来计算对应写入数据的校验子,并将计算完的校验子写入主存储器300的区块300-3中对应的储存空间,且即时更新计算请求对应的位于暂存器113中的计算进度。硬盘控制器130在接收到中央处理器200的通知后,会读取暂存器113中该计算请求对应的计算进度,并根据读取到的计算进度将计算完的校验子写入硬盘430中(下文会详述)。在一实施例中,硬盘控制器130在接收到中央处理器200的通知后会读取主存储器300中与该计算请求对应的前述写入请求并进行处理,并根据该写入请求读取暂存器113中对应的计算进度。
在完成该计算请求对应的所有校验子的计算后,RAIDA 120删除暂存器113中对应的计算进度,并从主存储器300(例如主存储器300中的计算请求表)中依序取得下一个计算请求来计算对应写入数据的校验子,直到处理完所有计算请求(例如计算请求表为空)。然而,本发明并不在此限制中央处理器200通知RAIDA 120的具体实施方式。
在一实施例中,中央处理器200在主存储器300中配置写入请求表(未绘示),用以先进先出地记录多个写入请求,以告知硬盘控制器130其所需写入硬盘430的校验子。中央处理器200在生成计算请求并通知RAIDA 120后,再根据计算请求的部分数据生成一个对应的写入请求并存入写入请求表,然后通知硬盘控制器130读取写入请求并进行处理。硬盘控制器130从写入请求表中读取写入请求并在其暂存器中分配一写入进度(未示出);根据写入请求中的信息获取对应的校验子的计算进度和校验子在主存储器300中的地址、长度等信息,如果计算进度大于写入进度,则读取计算完成的校验子并将其写入硬盘430中,同时更新写入进度;如果计算进度等于写入进度,则硬盘控制器130延迟预定的时间(比如10毫秒)后再从暂存器113中读取计算进度;如果读取不到校验子的计算进度,说明此写入请求对应的校验子已经全部计算完成,直接将此写入请求对应的所有校验子从主存储器300写入硬盘430中;重复上述过程,直到将写入请求对应的所有校验子都写入硬盘430中并删除对应的写入进度。
处理完一个写入请求后,硬盘控制器130会再从写入请求表中读取下一个写入请求进行处理,直到写入请求表为空。
特别是,RAIDA 120取得一个计算请求进行计算,但尚未计算完该计算请求对应的所有校验子时,硬盘控制器130依据取得的与计算请求对应的写入请求读取该计算请求对应的计算进度,以将计算请求对应的计算完成的校验子从主存储器300写入硬盘430中。如此一来,RAIDA 120在计算校验子的过程中(即尚未计算完所有的校验子时),硬盘控制器130便可以开始将计算完成的部分校验子从主存储器300写入硬盘430,而不必等到该笔写入数据所对应的全部校验子都计算完成并储存到主存储器300之后才通知硬盘控制器130将计算完成的校验子写入硬盘430,从而大幅减少了硬盘控制器130闲置的时间。
在一实施例中,中央处理器200是以执行主存储器300中的一段代码的方式生成计算请求和写入请求的。在另一实施例中,中央处理器200还执行该段代码将计算请求和写入请求分别存入计算请求表和写入请求表中。
在另一实施例中,RAIDA 120包含多个运算核,各个运算核可以同时对写入数据的不同部分进行校验子计算,从而提高RAIDA 120的计算能力。
请参照图2,同时参照图1与图4,在步骤S210中,RAIDA 120会从主存储器300(例如主存储器300中的计算请求表)中读取计算请求,随后在步骤S220中,会根据计算请求(例如其中所包括的写入数据的地址、长度信息)读出计算请求所对应的写入数据。举例来说,RAIDA 120可从主存储器300中读出计算请求对应的写入数据的各个部分,例如从主存储器300的区块300-1、300-2分别读出写入数据的第一部分以及第二部分。举另一例来说,写入数据的各个部分也记录在中央处理器200的快取存储器(cache)中,因此运算电路111亦可以直接从CPU 200的快取存储器读出写入数据的各个部分,本发明并不在此限制写入数据记录的具体位置。
在一些实施例中,RAIDA 120的运算电路111例如在步骤S220中首先读出第一部分中第一个页面的数据Page1-0以及第二部分中第一个页面的数据Page2-0。
在步骤S230中,运算电路111会计算所读的写入数据的校验子并且将计算完成的校验子储存至主存储器300中。详细来说,运算电路111会对当前读出的数据页面计算出对应的校验子数据,并且根据计算请求中校验子在主存储器300中的地址信息将其写入主存储器300的区块300-3中。举例来说,运算电路111会对第一部分中第一个页面的数据Page1-0以及第二部分中第一个页面的数据Page2-0进行异或(exclusive OR,XOR)运算,来取得第一个页面的校验子数据PagePQ-0,并且将其写入主存储器300的区块300-3中。
然而,本发明并不在此限制根据写入数据的各部分计算校验子的具体方式,所属技术领域的技术人员当可依其需求以及RAID的规范来进行实施。
在步骤S240中,RAIDA 120会将运算电路111的计算进度写入暂存器130中。详细来说,RAIDA 120会根据计算请求中的计算进度在暂存器113中的地址信息将计算写入数据的校验子的当前完成的情况记录在暂存器130中,并且即时地进行更新。举例而言,RAIDA 120在运算电路111计算完每个页面的校验子数据后都会更新记录在暂存器130中的计算进度。
举例来说,RAIDA 120会在第一个页面的校验子数据PagePQ-0计算完成后,即时地将此计算进度(例如,计算完的校验子的页面数量占全部页面数量n+1的百分比,或最近一次记录到主存储器300中的校验子数据在主存储器300中的起始地址等)记录在暂存器130中。然而,只要能够表示目前校验子的计算进度,本发明并不在此限制记录时使用的形式。
在一些实施例中,RAIDA 120还将所计算的校验子在主存储器300中的储存地址以及长度(例如,区块300-3的物理地址以及n+1个页面共4n+4KB)记录于暂存器130的对应计算进度中。
在步骤S250中,RAIDA 120会判断是否有尚未计算完的写入数据的校验子。若否,则删除计算进度并结束计算;反之,则回到步骤S220,继续读出写入数据,并且重复步骤S230至S250,直到该笔写入数据的校验子全部计算完成。
举例来说,若当前的计算进度是计算完第一个页面的校验子数据PagePQ-0,则RAIDA 120会回到步骤S220继续读出写入数据的第一部分中第二个页面的数据Page1-1以及第二部分中第二个页面的数据Page2-1,并且重复步骤S230至S250,然后再回到步骤S220继续读出写入数据的第一部分中第三个页面的数据Page1-2以及第二部分中第三个页面的数据Page2-2,并且重复步骤S230至S250,以此类推,直到第n+1个页面的校验子数据PagePQ-n都被计算出来并且写入主存储器300的区块300-3。
特别是,由于中央处理器200在RAIDA 120尚未计算完写入数据的所有校验子时,便通知硬盘控制器130读取计算进度,因此硬盘控制器130在上述流程中实现同步地将校验子从主存储器300的区块300-3写入硬盘430中。
请参照图3,同时参照图1与图4,在步骤S310中,硬盘控制器130会接收来自中央处理器200的通知从而读取主存储器300(例如主存储器300中的写入请求表)中的写入请求。举例来说,中央处理器200会在生成计算请求并指示RAIDA 120根据生成的计算请求计算写入数据的校验子的同时,根据该计算请求的部分信息生成对应的写入请求并通知硬盘控制器130读取生成的写入请求,在步骤S320中,硬盘控制器130根据写入请求读取暂存器113中的计算进度,从而将已经计算完成的部分校验子从主存储器300写入硬盘430中(下文会详述)。因此,硬盘控制器130例如能够在RAIDA 120的运算电路111将写入数据的所有校验子都计算完成之前开始将已经计算完成的部分校验子从主存储器300写入硬盘430。在其它实施例中,也可以省略写入请求,在步骤S310中,硬盘控制器130接收来自中央处理器200的通知时直接读取主存储器300(例如主存储器300中的计算请求表)中的计算请求;在步骤S320中,硬盘控制器130根据计算请求读取暂存器113中对应的计算进度。
总而言之,在步骤S320中,硬盘控制器130会读取RAIDA 120的暂存器130中的计算进度。
在步骤S325中,硬盘控制器130会根据在步骤S320中的读取结果判定计算进度是否存在,如果计算进度存在,则在步骤S330中判断主存储器300中是否有已经计算完成但尚未写入硬盘430的校验子;如果计算进度不存在,则进入步骤S370(下文会详述)。
在步骤S330中,根据计算进度判断主存储器中300是否有尚未写入硬盘430的计算完成的校验子。如果硬盘控制器130判断主存储器300中存有尚未写入硬盘430的写入数据的计算完成的校验子,则进入步骤S340来根据暂存器130中记录的计算进度将计算完成的写入数据的校验子从主存储器300写入硬盘430。
举例来说,假设硬盘控制器130目前尚未写入任何校验子数据至硬盘430,而暂存器130中的计算进度指示RAIDA 120计算完第一个页面的校验子数据PagePQ-0且尚未计算完第二个页面的校验子数据PagePQ-1。据此,硬盘控制器130会判断主存储器300的区块300-3中存有尚未写入硬盘430的校验子数据PagePQ-0,并且将其写入硬盘430中。举另一例来说,假设硬盘控制器130目前写入到第一个页面的校验子数据是PagePQ-0,而暂存器130中的计算进度指示RAIDA 120已计算完第三个页面的校验子数据PagePQ-2但尚未计算完第四个页面的校验子数据PagePQ-3。据此,硬盘控制器130会判断主存储器300的区块300-3中存有尚未写入硬盘430的校验子数据PagePQ-1、PagePQ-2,并且将此些校验子数据PagePQ-1、PagePQ-2写入硬盘430中,以此类推。
在一些实施例中,硬盘控制器130还从计算请求或写入请求中读取校验子信息在主存储器300中的储存地址以及数据长度,并且同时根据暂存器130中计算校验子的计算进度、校验子信息在主存储器300中的储存地址以及数据长度来从主存储器300将校验子信息写入硬盘430。
随后,在步骤S350中,硬盘控制器130会判断写入数据的校验子是否已经全部写入硬盘430。若是,则结束写入;反之,则回到步骤S320继续读取RAIDA 120的暂存器130中的计算进度。
若在步骤S330中硬盘控制器130判断主存储器300中没有尚未写入硬盘430的写入数据的校验子,则进入步骤S360来延迟预定时间后再回到步骤S320。详细来说,硬盘控制器130判断主存储器300中没有尚未写入硬盘430的校验子表示硬盘控制器130将写入数据的校验子从主存储器300写入硬盘430的进度已经达到运算电路111计算校验子的计算进度。因此,硬盘控制器130例如会延迟预定时间再回到步骤S320来检查计算进度的更新,并且重复上述步骤S325至步骤S350,直到写入数据的校验子全部计算完并写入硬盘430。
若在步骤S325中计算进度不存在,则表示计算请求对应的校验子已经全部计算完成,从而不需要根据计算进度来控制写入进度了;因而进入步骤S370直接将尚未写入硬盘的已计算完成的校验子全部写入硬盘430中,然后结束。
此外,值得一提的是,由于RAIDA 120的运算电路111是存取中央处理器200的快取存储器或主存储器300来进行校验子的计算,然后将计算完成的校验子存回主存储器300中,而硬盘控制器130是从主存储器300将其中所储存的校验子写入硬盘430中。基于快取存储器与主存储器的存取速度远快于硬盘,因此即使发生硬盘控制器130将写入数据的校验子从主存储器300写入硬盘430的进度已经达到运算电路111计算校验子的计算进度的情形(即步骤S330:否),硬盘控制器130也只需要在步骤S360中延迟极短的时间(例如,毫秒、微秒或是更短时间等级的延迟)就能够尝试继续回到步骤S320来检查计算进度的更新。
综上所述,本发明实施例提出的用于存取独立硬盘冗余阵列的系统与方法,在独立硬盘冗余阵列加速器中提供一组暂存器来即时记录独立硬盘冗余阵列加速器计算校验子的进度。硬盘控制器在将校验子从主存储器写入硬盘前,先读取独立硬盘冗余阵列加速器中的暂存器,以根据暂存器中所记录的计算进度来将主存储器中的校验子写入硬盘。据此,可以在独立硬盘冗余阵列加速器计算校验子的过程中,硬盘控制器就可以先将计算完成的部分校验子写入硬盘,而不必等到该笔写入数据所对应的全部校验子都计算完成并储存到主存储器之后才通知硬盘控制器将计算完成的校验子写入硬盘,从而减少硬盘控制器的闲置时间,以提升数据存取的速度。
以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神和范围内,可以在此基础上做进一步的改进和变化,因此本发明的保护范围应当以本申请的权利要求书所界定的范围为准。

Claims (21)

1.一种用于存取独立硬盘冗余阵列的系统,其特征在于,该系统耦接于中央处理器、主存储器以及该独立硬盘冗余阵列之间,所述系统包括:
运算电路,耦接于该中央处理器与该主存储器,用以从该主存储器读取写入数据并计算该写入数据的多个校验子,并且将计算完成的该多个校验子储存至该主存储器;
暂存器,耦接于该运算电路,用以储存该运算电路计算该多个校验子的计算进度;以及
硬盘控制器,耦接于该暂存器以及该独立硬盘冗余阵列,用以从该暂存器读取该计算进度,并且根据所读取的该计算进度将计算完成的该多个校验子从该主存储器储存至该独立硬盘冗余阵列,
其中,在该运算电路计算该写入数据的该多个校验子的同时,该中央处理器通知该硬盘控制器储存该写入数据的计算完成的该多个校验子至该独立硬盘冗余阵列。
2.根据权利要求1所述的系统,其特征在于,该中央处理器为需要计算该多个校验子的该写入数据生成计算请求,并将该计算请求写入该主存储器。
3.根据权利要求2所述的系统,其特征在于,该中央处理器还通知该运算电路从该主存储器中读取该计算请求,并根据该计算请求读取该写入数据并计算该写入数据的该多个校验子。
4.根据权利要求2所述的系统,其特征在于,该中央处理器还依据该写入数据在该主存储器中的地址与长度信息计算并分配该多个校验子需要的储存空间,并依据分配的所述储存空间获得该多个校验子在该主存储器中的地址与长度信息;该中央处理器还在该暂存器中为该多个校验子生成对应的计算进度,并获得该计算进度在该暂存器中的地址信息;该中央处理器还依该写入数据在该主存储器中的地址与长度信息、该多个校验子在该主存储器中的地址与长度信息和该计算进度在该暂存器中的地址信息生成该计算请求。
5.根据权利要求2所述的系统,其特征在于,该中央处理器还依据该计算请求中的部分信息生成写入请求,其中该硬盘控制器依据该写入请求读取该计算进度并依据该计算进度将计算完成的该多个校验子从该主存储器储存至该独立硬盘冗余阵列。
6.根据权利要求2所述的系统,其特征在于,该硬盘控制器读取该计算请求对应的该计算进度时,如果读取不到对应的该计算进度,则该硬盘控制器将该计算请求对应的计算完成的该多个校验子从该主存储器储存至该独立硬盘冗余阵列。
7.根据权利要求2所述的系统,其特征在于,该运算电路在完成该计算请求对应的所有该多个校验子的计算后,删除该计算请求对应的该计算进度。
8.根据权利要求1所述的系统,其特征在于,该运算电路还包括用于同时计算该写入数据的该多个校验子的多个运算核。
9.根据权利要求1所述的系统,其特征在于,该硬盘控制器在该多个校验子被全部计算完成之前开始从该暂存器取得该计算进度,并且根据所取得的该计算进度将计算完成的该多个校验子从该主存储器储存至该独立硬盘冗余阵列。
10.根据权利要求1所述的系统,其特征在于,该硬盘控制器从该暂存器读取该计算进度后,如果计算完成的该多个校验子已经全部从该主存储器储存至该独立硬盘冗余阵列,则该硬盘控制器延迟预定时间后再从该暂存器读取该计算进度。
11.根据权利要求1所述的系统,其特征在于,该运算电路在计算该多个校验子时即时更新该暂存器中的该计算进度。
12.一种用于独立硬盘冗余阵列的数据存取方法,其特征在于,包括:
读取主存储器中的写入数据;
计算该写入数据的多个校验子并且将该多个校验子储存至该主存储器;
将计算该多个校验子的计算进度储存于暂存器中;以及
读取该暂存器中的该计算进度,并根据所读取的该计算进度将计算完成的该多个校验子从该主存储器储存至该独立硬盘冗余阵列,
其中,在计算该写入数据的该多个校验子的同时,进行通知以储存该写入数据的计算完成的该多个校验子至该独立硬盘冗余阵列。
13.根据权利要求12所述的方法,其特征在于,还包括:经由中央处理器为需要计算该多个校验子的该写入数据生成计算请求,并将该计算请求写入该主存储器。
14.根据权利要求13所述的方法,其特征在于,还包括:从该主存储器中读取该计算请求,并根据该计算请求读取该写入数据并计算该写入数据的该多个校验子。
15.根据权利要求13所述的方法,其特征在于,经由该中央处理器生成该计算请求的过程为:
获取该写入数据在该主存储器中的地址与长度信息;
计算并在该主存储器中分配该多个校验子需要的储存空间,并依据分配的所述储存空间获得该多个校验子在该主存储器中的地址与长度信息;
在该暂存器中生成对应的计算进度,并获得该计算进度在该暂存器中的地址信息;以及
依据该写入数据在该主存储器中的地址与长度信息、该多个校验子在该主存储器中的地址与长度信息和该计算进度在该暂存器中的地址信息生成该计算请求。
16.根据权利要求13所述的方法,其特征在于,还包括:经由该中央处理器依据该计算请求中的部分信息生成写入请求,并依据该写入请求读取该计算进度并依据该计算进度将计算完成的该多个校验子从该主存储器储存至该独立硬盘冗余阵列。
17.根据权利要求13所述的方法,其特征在于,还包括:读取该计算请求对应的该计算进度时,如果读取不到对应的该计算进度,则将该计算请求对应的该多个校验子从该主存储器储存至该独立硬盘冗余阵列。
18.根据权利要求13所述的方法,其特征在于,还包括:在完成该计算请求对应的所有该多个校验子的计算后,删除该计算进度。
19.根据权利要求12所述的方法,其特征在于,还包括:在该多个校验子被全部计算完成之前开始从该暂存器取得该计算进度,并且根据所取得的该计算进度将计算完成的该多个校验子从该主存储器储存至该独立硬盘冗余阵列。
20.根据权利要求12所述的方法,其特征在于,还包括:从该暂存器读取该计算进度后,如果计算完成的该多个校验子已经全部从该主存储器储存至该独立硬盘冗余阵列,则延迟预定时间后再从该暂存器读取该计算进度。
21.根据权利要求12所述的方法,其特征在于,在计算该多个校验子时即时更新该暂存器中的该计算进度。
CN201810993750.1A 2018-08-29 2018-08-29 用于存取独立硬盘冗余阵列的系统与方法 Active CN109189340B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201810993750.1A CN109189340B (zh) 2018-08-29 2018-08-29 用于存取独立硬盘冗余阵列的系统与方法
TW107136105A TWI685789B (zh) 2018-08-29 2018-10-12 用於存取獨立硬碟冗餘陣列的系統與方法
US16/541,177 US11099739B2 (en) 2018-08-29 2019-08-15 System and method for accessing redundant array of independent disks

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810993750.1A CN109189340B (zh) 2018-08-29 2018-08-29 用于存取独立硬盘冗余阵列的系统与方法

Publications (2)

Publication Number Publication Date
CN109189340A CN109189340A (zh) 2019-01-11
CN109189340B true CN109189340B (zh) 2021-11-09

Family

ID=64916866

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810993750.1A Active CN109189340B (zh) 2018-08-29 2018-08-29 用于存取独立硬盘冗余阵列的系统与方法

Country Status (3)

Country Link
US (1) US11099739B2 (zh)
CN (1) CN109189340B (zh)
TW (1) TWI685789B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112860174B (zh) * 2019-11-27 2024-07-12 瑞昱半导体股份有限公司 数据写入系统与方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5708668A (en) * 1992-05-06 1998-01-13 International Business Machines Corporation Method and apparatus for operating an array of storage devices
CN1959620A (zh) * 2006-11-10 2007-05-09 威盛电子股份有限公司 芯片组、北桥芯片以及磁盘数据存取方法
CN101923441A (zh) * 2009-06-17 2010-12-22 成都市华为赛门铁克科技有限公司 混合磁盘冗余阵列的写请求处理方法、控制器和存储系统
CN103645862A (zh) * 2013-12-12 2014-03-19 北京同有飞骥科技股份有限公司 一种磁盘阵列初始化性能提升方法
CN107885613A (zh) * 2017-11-09 2018-04-06 郑州云海信息技术有限公司 一种基于raid5的数据写入方法、装置及介质
CN108073357A (zh) * 2016-11-07 2018-05-25 三星电子株式会社 以raid方式存储数据的存储装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6151641A (en) * 1997-09-30 2000-11-21 Lsi Logic Corporation DMA controller of a RAID storage controller with integrated XOR parity computation capability adapted to compute parity in parallel with the transfer of data segments
CN1147832C (zh) 2000-08-25 2004-04-28 曾宪勇 改进型胡琴
TWI263891B (en) * 2004-08-10 2006-10-11 Via Tech Inc Method and related apparatus for verifying array of disks
TWI285313B (en) * 2005-06-22 2007-08-11 Accusys Inc XOR circuit, RAID device capable of recover a plurality of failures and method thereof
US7979773B2 (en) * 2007-03-13 2011-07-12 Summit Data Systems Llc RAID array auto-initialization (RAAI)
JP4792490B2 (ja) * 2008-09-08 2011-10-12 株式会社日立製作所 記憶制御装置及びraidグループの拡張方法
CN103748570A (zh) * 2011-12-13 2014-04-23 惠普发展公司,有限责任合伙企业 用于逻辑卷初始化的存储控制器与主机协作
US10133653B2 (en) * 2012-02-23 2018-11-20 Cadence Design Systems, Inc. Recording and playback of trace and video log data for programs
US10296263B2 (en) * 2014-04-30 2019-05-21 International Business Machines Corporation Dispersed bloom filter for determining presence of an object
US10877674B2 (en) * 2016-01-29 2020-12-29 Hewlett Packard Enterprise Development Lp Determining layout templates identifying storage drives

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5708668A (en) * 1992-05-06 1998-01-13 International Business Machines Corporation Method and apparatus for operating an array of storage devices
CN1959620A (zh) * 2006-11-10 2007-05-09 威盛电子股份有限公司 芯片组、北桥芯片以及磁盘数据存取方法
CN101923441A (zh) * 2009-06-17 2010-12-22 成都市华为赛门铁克科技有限公司 混合磁盘冗余阵列的写请求处理方法、控制器和存储系统
CN103645862A (zh) * 2013-12-12 2014-03-19 北京同有飞骥科技股份有限公司 一种磁盘阵列初始化性能提升方法
CN108073357A (zh) * 2016-11-07 2018-05-25 三星电子株式会社 以raid方式存储数据的存储装置
CN107885613A (zh) * 2017-11-09 2018-04-06 郑州云海信息技术有限公司 一种基于raid5的数据写入方法、装置及介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Code 5-6: An Efficient MDS Array Coding Scheme to Accelerate Online RAID Level Migration;Chentao Wu等;《2015 44th International Conference on Parallel Processing》;20151210;第450-459页 *
RAID后台一致性初始化技术的研究与实现;宋戈;《中国优秀硕士学位论文全文数据库 信息科技辑》;20110301;I137-31 *

Also Published As

Publication number Publication date
TW202009690A (zh) 2020-03-01
US11099739B2 (en) 2021-08-24
TWI685789B (zh) 2020-02-21
CN109189340A (zh) 2019-01-11
US20200073556A1 (en) 2020-03-05

Similar Documents

Publication Publication Date Title
US11132300B2 (en) Memory hierarchy using page-based compression
US8250283B1 (en) Write-distribute command for RAID mirroring
CN109800177B (zh) 垃圾收集方法、执行方法的存储设备和含设备的计算系统
US7685499B2 (en) XOR circuit, RAID device capable of recovering a plurality of failures and method thereof
US20140379990A1 (en) Cache node processing
US11513689B2 (en) Dedicated interface for coupling flash memory and dynamic random access memory
JP5464528B2 (ja) 同時読み出し及び書き込みメモリ動作を実行する方法及び装置
TWI531963B (zh) Data storage systems and their specific instruction enforcement methods
US9477605B2 (en) Memory hierarchy using row-based compression
JP3247075B2 (ja) パリティブロックの生成装置
US10915267B2 (en) Atomic cross-media writes on a storage device
US20130219119A1 (en) Writing new data of a first block size to a second block size using a write-write mode
CN109189340B (zh) 用于存取独立硬盘冗余阵列的系统与方法
CN116627856A (zh) 一种实现内存地址映射的方法、装置及设备
US11216207B2 (en) Apparatus and method for programming user data on the pages and the parity of the page group into flash modules
CN116583827A (zh) 数据存取方法、装置、磁盘控制器、磁盘和数据存储系统
JP6073717B2 (ja) ストレージ制御装置及びストレージシステム
US6799293B2 (en) Sparse byte enable indicator for high speed memory access arbitration method and apparatus
CN113157205A (zh) 一种nand阵列的控制方法、控制器、电子设备及存储介质
US11354063B2 (en) Memory system
CN117806568B (zh) 一种数据更新方法、装置、设备和存储介质
CN112015328B (zh) 第5级独立磁盘冗余阵列的创建方法及装置
US11915048B2 (en) Method of scheduling jobs in storage device using pre-defined time and method of operating storage system including the same
JP2009080549A (ja) ディスクアレイ制御装置およびデータ配置方法

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
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203

Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd.

Address before: Room 301, No. 2537, Jinke Road, Zhangjiang hi tech park, Pudong New Area, Shanghai, 201203

Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd.