TWI685789B - 用於存取獨立硬碟冗餘陣列的系統與方法 - Google Patents
用於存取獨立硬碟冗餘陣列的系統與方法 Download PDFInfo
- Publication number
- TWI685789B TWI685789B TW107136105A TW107136105A TWI685789B TW I685789 B TWI685789 B TW I685789B TW 107136105 A TW107136105 A TW 107136105A TW 107136105 A TW107136105 A TW 107136105A TW I685789 B TWI685789 B TW I685789B
- Authority
- TW
- Taiwan
- Prior art keywords
- calculation
- main memory
- syndromes
- progress
- hard disk
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Abstract
本發明提出一種用於存取獨立硬碟冗餘陣列的系統與方法。所述系統耦接於中央處理器、主記憶體以及獨立硬碟冗餘陣列之間,並且包括運算電路、暫存器以及硬碟控制器。運算電路耦接於中央處理器與主記憶體,用以從主記憶體讀取寫入資料並計算寫入資料的多個校驗子,並且將計算完成的多個校驗子儲存至主記憶體。暫存器耦接於運算電路,用以儲存運算電路計算校驗子的計算進度。硬碟控制器耦接於暫存器以及獨立硬碟冗餘陣列,用以從暫存器讀取計算進度,並且根據所讀取的計算進度將計算完成的校驗子從主記憶體儲存至獨立硬碟冗餘陣列。
Description
本發明是有關於一種資料存取方法,且特別是有關於一種用於存取獨立硬碟冗餘陣列的系統與方法。
依運作方式不同,現行的獨立硬碟冗餘陣列(Redundancy Array of Independent Disks,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繪示本發明一實施例中電腦系統的概要方塊圖。
請參照圖1,電腦系統10包括中央處理器(Central Processing Unit,CPU)200、主記憶體(main memory)300、獨立硬碟冗餘陣列(Redundancy Array of Independent Disks,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。在其它實施例中,例如片上系統(System On 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中。本發明中的RAIDA 120在對多個校驗子進行計算的過程當中,硬碟控制器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亦可以直接從中央處理器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的計算進度寫入暫存器113中。詳細來說,RAIDA 120會根據計算請求中的計算進度在暫存器113中的位址資訊將計算寫入資料的校驗子的當前完成的情況記錄在暫存器113中,並且即時地進行更新。舉例而言,RAIDA 120在運算電路111計算完每個頁面的校驗子資料後都會更新記錄在暫存器113中的計算進度。
舉例來說,RAIDA 120會在第一個頁面的校驗子資料PagePQ-0計算完成後,即時地將此計算進度(例如,計算完的校驗子的頁面數量占全部頁面數量n+1的百分比,或最近一次記錄到主記憶體300中的校驗子資料在主記憶體300中的起始位址等)記錄在暫存器113中。然而,只要能夠表示目前校驗子的計算進度,本發明並不在此限制記錄時使用的形式。
在一些實施例中,RAIDA 120更將所計算的校驗子在主記憶體300中的儲存位址以及長度(例如,區塊300-3的物理位址以及n+1個頁面共4n+4 KB)記錄於暫存器113的對應計算進度中。
在步驟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的暫存器113中的計算進度。
在步驟S325中,硬碟控制器130會根據在步驟S320中的讀取結果判定計算進度是否存在,如果計算進度存在,則在步驟S330中判斷主記憶體300中是否有已經計算完成但尚未寫入硬碟430的校驗子;如果計算進度不存在,則進入步驟S370(下文會詳述)。
在步驟S330中,根據計算進度判斷主記憶體中300是否有尚未寫入硬碟430的計算完成的校驗子。如果硬碟控制器130判斷主記憶體300中存有尚未寫入硬碟430的寫入資料的計算完成的校驗子,則進入步驟S340來根據暫存器113中記錄的計算進度將計算完成的寫入資料的校驗子從主記憶體300寫入硬碟430。
舉例來說,假設硬碟控制器130目前尚未寫入任何校驗子資料至硬碟430,而暫存器113中的計算進度指示RAIDA 120計算完第一個頁面的校驗子資料PagePQ-0且尚未計算完第二個頁面的校驗子資料PagePQ-1。據此,硬碟控制器130會判斷主記憶體300的區塊300-3中存有尚未寫入硬碟430的校驗子資料PagePQ-0,並且將其寫入硬碟430中。舉另一例來說,假設硬碟控制器130目前寫入到第一個頁面的校驗子資料是PagePQ-0,而暫存器113中的計算進度指示RAIDA 120已計算完第三個頁面的校驗子資料PagePQ-2但尚未計算完第四個頁面的校驗子資料PagePQ-3。據此,硬碟控制器130會判斷主記憶體300的區塊300-3中存有尚未寫入硬碟430的校驗子資料PagePQ-1、PagePQ-2,並且將此些校驗子資料PagePQ-1、PagePQ-2寫入硬碟430中,以此類推。
在一些實施例中,硬碟控制器130更從計算請求或寫入請求中讀取校驗子資訊在主記憶體300中的儲存位址以及資料長度,並且同時根據暫存器113中計算校驗子的計算進度、校驗子資訊在主記憶體300中的儲存位址以及資料長度來從主記憶體300將校驗子資訊寫入硬碟430。
隨後,在步驟S350中,硬碟控制器130會判斷寫入資料的校驗子是否已經全部寫入硬碟430。若是,則結束寫入;反之,則回到步驟S320繼續讀取RAIDA 120的暫存器113中的計算進度。
若在步驟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來檢查計算進度的更新。
綜上所述,本發明實施例提出的用於存取獨立硬碟冗餘陣列的系統與方法,在獨立硬碟冗餘陣列加速器中提供一組暫存器來即時記錄獨立硬碟冗餘陣列加速器計算校驗子的進度。硬碟控制器在將校驗子從主記憶體寫入硬碟前,先讀取獨立硬碟冗餘陣列加速器中的暫存器,以根據暫存器中所記錄的計算進度來將主記憶體中的校驗子寫入硬碟。據此,可以在獨立硬碟冗餘陣列加速器計算校驗子的過程中,硬碟控制器就可以先將計算完成的部分校驗子寫入硬碟,而不必等到該筆寫入資料所對應的全部校驗子都計算完成並儲存到主記憶體之後才通知硬碟控制器將計算完成的校驗子寫入硬碟,從而減少硬碟控制器的閒置時間,以提升資料存取的速度。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
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繪示本發明一實施例中電腦系統的概要方塊圖。 圖2繪示本發明一實施例中運算電路執行資料存取方法的流程圖。 圖3繪示本發明一實施例中硬碟控制器執行資料存取方法的流程圖。 圖4繪示本發明一實施例中資料存取方法的示意圖。
10‧‧‧電腦系統
100‧‧‧獨立硬碟冗餘陣列存取系統
111‧‧‧運算電路
113‧‧‧暫存器
120‧‧‧獨立硬碟冗餘陣列加速器
130‧‧‧硬碟控制器
200‧‧‧中央處理器
300‧‧‧主記憶體
400‧‧‧獨立硬碟冗餘陣列
410、420、430‧‧‧硬碟
Claims (21)
- 一種用於存取獨立硬碟冗餘陣列的系統,其中該系統耦接於中央處理器、主記憶體以及該獨立硬碟冗餘陣列之間,所述系統包括: 運算電路,耦接於該中央處理器與該主記憶體,用以從該主記憶體讀取寫入資料並計算該寫入資料的多個校驗子,並且將計算完成的該些校驗子儲存至該主記憶體; 暫存器,耦接於該運算電路,用以儲存該運算電路計算該些校驗子的計算進度;以及 硬碟控制器,耦接於該暫存器以及該獨立硬碟冗餘陣列,用以從該暫存器讀取該計算進度,並且根據所讀取的該計算進度將計算完成的該些校驗子從該主記憶體儲存至該獨立硬碟冗餘陣列。
- 如申請專利範圍第1項所述的系統,其中該中央處理器為需要計算該些校驗子的該寫入資料生成計算請求,並將該計算請求寫入該主記憶體。
- 如申請專利範圍第2項所述的系統,其中該中央處理器更通知該運算電路從該主記憶體中讀取該計算請求,並根據該計算請求讀取該寫入資料並計算該寫入資料的該些校驗子。
- 如申請專利範圍第2項所述的系統,其中該中央處理器更依據該寫入資料在該主記憶體中的位址與長度資訊計算並分配該些校驗子需要的儲存空間,並依據分配的所述儲存空間獲得該些校驗子在該主記憶體中的位址與長度資訊;該中央處理器更在該暫存器中為該些校驗子生成對應的計算進度,並獲得該計算進度在該暫存器中的位址資訊;該中央處理器更依該寫入資料在該主記憶體中的位址與長度資訊、該些校驗子在該主記憶體中的位址與長度資訊和該計算進度在該暫存器中的位址資訊生成該計算請求。
- 如申請專利範圍第2項所述的系統,其中該中央處理器更依據該計算請求中的部分資訊生成寫入請求,其中該硬碟控制器依據該寫入請求讀取該計算進度並依據該計算進度將計算完成的該些校驗子從該主記憶體儲存至該獨立硬碟冗餘陣列。
- 如申請專利範圍第2項所述的系統,其中該硬碟控制器讀取該計算請求對應的該計算進度時,如果讀取不到對應的該計算進度,則該硬碟控制器將該計算請求對應的計算完成的該些校驗子從該主記憶體儲存至該獨立硬碟冗餘陣列。
- 如申請專利範圍第2項所述的系統,其中該運算電路在完成該計算請求對應的所有該些校驗子的計算後,刪除該計算請求對應的該計算進度。
- 如申請專利範圍第1項所述的系統,其中該運算電路更包括多個運算核心,用於同時計算該寫入資料的該些校驗子。
- 如申請專利範圍第1項所述的系統,其中該硬碟控制器在該些校驗子被全部計算完成之前開始從該暫存器取得該計算進度,並且根據所取得的該計算進度將計算完成的該些校驗子從該主記憶體儲存至該獨立硬碟冗餘陣列。
- 如申請專利範圍第1項所述的系統,其中該硬碟控制器從該暫存器讀取該計算進度後,如果計算完成的該些校驗子已經全部從該主記憶體儲存至該獨立硬碟冗餘陣列,則該硬碟控制器延遲預定時間後再從該暫存器讀取該計算進度。
- 如申請專利範圍第1項所述的系統,其中該運算電路在計算該些校驗子時即時更新該暫存器中的該計算進度。
- 一種用於獨立硬碟冗餘陣列的資料存取方法,包括: 讀取主記憶體中的寫入資料; 計算該寫入資料的多個校驗子並且將該些校驗子儲存至該主記憶體; 將計算該些校驗子的計算進度儲存於暫存器中;以及 讀取該暫存器中的該計算進度,並根據所讀取的該計算進度將計算完成的該些校驗子從該主記憶體儲存至該獨立硬碟冗餘陣列。
- 如申請專利範圍第12項所述的方法,更包括經由中央處理器為需要計算該些校驗子的該寫入資料生成計算請求,並將該計算請求寫入該主記憶體。
- 如申請專利範圍第13項所述的方法,更包括從該主記憶體中讀取該計算請求,並根據該計算請求讀取該寫入資料並計算該寫入資料的該些校驗子。
- 如申請專利範圍第13項所述的方法,其中經由該中央處理器生成該計算請求的過程為: 獲取該寫入資料在該主記憶體中的位址與長度資訊; 計算並在該主記憶體中分配該些校驗子需要的儲存空間,並依據分配的所述儲存空間獲得該些校驗子在該主記憶體中的位址與長度資訊; 在該暫存器中生成對應的計算進度,並獲得該計算進度在該暫存器中的位址資訊;以及 依據該寫入資料在該主記憶體中的位址與長度資訊、該些校驗子在該主記憶體中的位址與長度資訊和該計算進度在該暫存器中的位址資訊生成該計算請求。
- 如申請專利範圍第13項所述的方法,更包括經由該中央處理器依據該計算請求中的部分資訊生成寫入請求,並依據該寫入請求讀取該計算進度並依據該計算進度將計算完成的該些校驗子從該主記憶體儲存至該獨立硬碟冗餘陣列。
- 如申請專利範圍第13項所述的方法,更包括讀取該計算請求對應的該計算進度時,如果讀取不到對應的該計算進度,則將該計算請求對應的該些校驗子從該主記憶體儲存至該獨立硬碟冗餘陣列。
- 如申請專利範圍第13項所述的方法,更包括在完成該計算請求對應的所有該些校驗子的計算後,刪除該計算進度。
- 如申請專利範圍第12項所述的方法,更包括在該些校驗子被全部計算完成之前開始從該暫存器取得該計算進度,並且根據所取得的該計算進度將計算完成的該些校驗子從該主記憶體儲存至該獨立硬碟冗餘陣列。
- 如申請專利範圍第12項所述的方法,更包括從該暫存器讀取該計算進度後,如果計算完成的該些校驗子已經全部從該主記憶體儲存至該獨立硬碟冗餘陣列,則延遲預定時間後再從該暫存器讀取該計算進度。
- 如申請專利範圍第12項所述的方法,其中在計算該些校驗子時即時更新該暫存器中的該計算進度。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810993750.1 | 2018-08-29 | ||
CN201810993750.1A CN109189340B (zh) | 2018-08-29 | 2018-08-29 | 用于存取独立硬盘冗余阵列的系统与方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI685789B true TWI685789B (zh) | 2020-02-21 |
TW202009690A TW202009690A (zh) | 2020-03-01 |
Family
ID=64916866
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107136105A TWI685789B (zh) | 2018-08-29 | 2018-10-12 | 用於存取獨立硬碟冗餘陣列的系統與方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11099739B2 (zh) |
CN (1) | CN109189340B (zh) |
TW (1) | TWI685789B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112860174A (zh) * | 2019-11-27 | 2021-05-28 | 瑞昱半导体股份有限公司 | 数据写入系统与方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1019835B1 (en) * | 1997-09-30 | 2002-08-07 | Lsi Logic Corporation | Segmented dma with xor buffer for storage subsystems |
TW200606634A (en) * | 2004-08-10 | 2006-02-16 | Via Tech Inc | Method and related apparatus for verifying array of disks |
US20110258387A1 (en) * | 2007-03-13 | 2011-10-20 | Christophe Therene | RAID Array Auto-Initialization (RAAI) Method |
US20120072663A1 (en) * | 2008-09-08 | 2012-03-22 | Hitachi, Ltd. | Storage control device and RAID group extension method |
WO2013089680A1 (en) * | 2011-12-13 | 2013-06-20 | Hewlett-Packard Development Company, L.P. | Storage controller with host collaboration for initialization of a logical volume |
TW201342047A (zh) * | 2012-02-23 | 2013-10-16 | Cadence Design Systems Inc | 錄製及播放程式之存取記錄及視訊記錄 |
Family Cites Families (10)
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 |
CN1147832C (zh) | 2000-08-25 | 2004-04-28 | 曾宪勇 | 改进型胡琴 |
TWI285313B (en) * | 2005-06-22 | 2007-08-11 | Accusys Inc | XOR circuit, RAID device capable of recover a plurality of failures and method thereof |
CN100514271C (zh) * | 2006-11-10 | 2009-07-15 | 威盛电子股份有限公司 | 芯片组、北桥芯片以及磁盘数据存取方法 |
CN101923441B (zh) * | 2009-06-17 | 2012-08-22 | 成都市华为赛门铁克科技有限公司 | 混合磁盘冗余阵列的写请求处理方法、控制器和存储系统 |
CN103645862B (zh) * | 2013-12-12 | 2016-05-18 | 北京同有飞骥科技股份有限公司 | 一种磁盘阵列初始化性能提升方法 |
US10296263B2 (en) * | 2014-04-30 | 2019-05-21 | International Business Machines Corporation | Dispersed bloom filter for determining presence of an object |
CN107533537B (zh) * | 2016-01-29 | 2021-02-26 | 慧与发展有限责任合伙企业 | 存储系统、用于存储的方法和非暂时性计算机可读介质 |
KR20180051703A (ko) * | 2016-11-07 | 2018-05-17 | 삼성전자주식회사 | Raid 방식으로 데이터를 저장하는 스토리지 장치 |
CN107885613A (zh) * | 2017-11-09 | 2018-04-06 | 郑州云海信息技术有限公司 | 一种基于raid5的数据写入方法、装置及介质 |
-
2018
- 2018-08-29 CN CN201810993750.1A patent/CN109189340B/zh active Active
- 2018-10-12 TW TW107136105A patent/TWI685789B/zh not_active IP Right Cessation
-
2019
- 2019-08-15 US US16/541,177 patent/US11099739B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1019835B1 (en) * | 1997-09-30 | 2002-08-07 | Lsi Logic Corporation | Segmented dma with xor buffer for storage subsystems |
TW200606634A (en) * | 2004-08-10 | 2006-02-16 | Via Tech Inc | Method and related apparatus for verifying array of disks |
US20110258387A1 (en) * | 2007-03-13 | 2011-10-20 | Christophe Therene | RAID Array Auto-Initialization (RAAI) Method |
US20120072663A1 (en) * | 2008-09-08 | 2012-03-22 | Hitachi, Ltd. | Storage control device and RAID group extension method |
WO2013089680A1 (en) * | 2011-12-13 | 2013-06-20 | Hewlett-Packard Development Company, L.P. | Storage controller with host collaboration for initialization of a logical volume |
TW201342047A (zh) * | 2012-02-23 | 2013-10-16 | Cadence Design Systems Inc | 錄製及播放程式之存取記錄及視訊記錄 |
Also Published As
Publication number | Publication date |
---|---|
CN109189340B (zh) | 2021-11-09 |
US20200073556A1 (en) | 2020-03-05 |
TW202009690A (zh) | 2020-03-01 |
US11099739B2 (en) | 2021-08-24 |
CN109189340A (zh) | 2019-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9256384B2 (en) | Method and system for reducing write latency in a data storage system by using a command-push model | |
JP4829365B1 (ja) | データ記憶装置及びデータ書き込み方法 | |
US8151014B2 (en) | RAID performance using command descriptor block pointer forwarding technique | |
US9317436B2 (en) | Cache node processing | |
US9870157B2 (en) | Command balancing and interleaving for write and reads between front end and back end of solid state drive | |
US10108565B2 (en) | Method for on-demand fetching of SGL pointers based buffer, traffic and command requirements | |
JP5464528B2 (ja) | 同時読み出し及び書き込みメモリ動作を実行する方法及び装置 | |
US20160291866A1 (en) | Command load balancing for nvme dual port operations | |
JP5922740B2 (ja) | メモリデバイスのための装置、メモリデバイスおよびメモリデバイスの制御のための方法 | |
JP6401866B2 (ja) | トランザクション処理方法及び装置、並びにコンピュータシステム | |
US20180004454A1 (en) | Implementing scattered atomic i/o writes | |
TW201643690A (zh) | 資料儲存系統及其特定指令執行方法 | |
US9858146B2 (en) | Reducing latency for raid destage operations | |
US9921913B2 (en) | Flushing host cache data before rebuilding degraded redundant virtual disk | |
US9213486B2 (en) | Writing new data of a first block size to a second block size using a write-write mode | |
TWI685789B (zh) | 用於存取獨立硬碟冗餘陣列的系統與方法 | |
US10915267B2 (en) | Atomic cross-media writes on a storage device | |
US8145839B2 (en) | Raid—5 controller and accessing method with data stream distribution and aggregation operations based on the primitive data access block of storage devices | |
JP2018106573A (ja) | ストレージ制御装置及び制御プログラム | |
WO2016059715A1 (ja) | 計算機システム | |
US11216207B2 (en) | Apparatus and method for programming user data on the pages and the parity of the page group into flash modules | |
KR101569049B1 (ko) | 패스 스루 스토리지 디바이스들 | |
US6799293B2 (en) | Sparse byte enable indicator for high speed memory access arbitration method and apparatus | |
TW201810277A (zh) | 固態硬碟系統的優先寫入方法以及使用該方法的裝置 | |
US11354063B2 (en) | Memory system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |