TWI797905B - 驅動獨立磁碟冗餘陣列引擎的裝置及方法 - Google Patents
驅動獨立磁碟冗餘陣列引擎的裝置及方法 Download PDFInfo
- Publication number
- TWI797905B TWI797905B TW110148312A TW110148312A TWI797905B TW I797905 B TWI797905 B TW I797905B TW 110148312 A TW110148312 A TW 110148312A TW 110148312 A TW110148312 A TW 110148312A TW I797905 B TWI797905 B TW I797905B
- Authority
- TW
- Taiwan
- Prior art keywords
- engine
- redundant array
- independent disks
- driving
- raid
- Prior art date
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Control Of Multiple Motors (AREA)
- Automatic Disk Changers (AREA)
- Valve Device For Special Equipments (AREA)
Abstract
本發明涉及一種驅動獨立磁碟冗餘陣列(Redundant Array of Independent Disks,RAID)引擎的裝置和方法,該裝置包含:命令佇列;對照表;轉換器;組態寄存器;和RAID控制器。命令佇列儲存由處理單元所推入的多個命令,每個命令包含操作碼和參數,用於指示與RAID引擎的實體層交互操作。對照表包含多筆紀錄,每筆紀錄儲存特定操作碼和特定參數所對應的用於驅動與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 of Independent Disks,RAID engine)來完成頁面群組的奇偶校驗碼的計算,然而,驅動RAID引擎需要耗費處理單元大量的時間和運算資源。因此,本發明提出一種驅動獨立磁碟冗餘陣列引擎的裝置和方法,用於提升系統的整體效能。
有鑑於此,如何減輕或消除上述相關領域的缺失,實為有待解決的問題。
本說明書涉及一種驅動獨立磁碟冗餘陣列(Redundant Array of Independent Disks,RAID)引擎的裝置,包含:命令佇列;對照表;轉換器;組態寄存器;和獨立磁碟冗餘陣列控制器。命令佇列儲存由處理單元所推入的多個命令,每個命令包含操作碼和參數,用於指示與RAID引擎的實體層交互操作。對照表包含多筆紀錄,每筆紀錄儲存特定操作碼和特定參數所對應的用於驅動與RAID引擎的介面的驅動值。轉換器依據命令佇列中的任何命令的操作碼和參數從對照表獲取相應的驅動值。組態寄存器儲存由轉換器所獲取的驅動值。RAID控制器依據組態寄存器中的驅動值完成一系列與RAID引擎的實體層訊號交互。
本說明書更另涉及一種驅動獨立磁碟冗餘陣列引擎的方法,由獨立磁碟冗餘陣列控制器執行,獨立磁碟冗餘陣列控制器包含組態寄存器。該方法包含:依據所述組態寄存器中的驅動值與所述RAID引擎進行一系列實體層的訊號交互以完成驅動操作,其中,驅動值相應於由處理單元所發出的命令,並且在RAID控制器和RAID引擎協力完成驅動操作的期間,處理單元執行與頁面群組的奇偶校驗碼的編碼和解碼無關的運算任務。
上述實施例的優點之一,通過如上所述的RAID控制器的設置,避免處理單元直接驅動RAID引擎時需要耗費時間和運算資源來控制與RAID引擎通訊的實體層實體訊號,以及等待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,432:失效訊號
414,424,434:生效訊號
S610~S660:方法步驟
圖1顯示頁面、奇偶校驗碼頁面及其糾錯碼的邏輯資料組織示意圖。
圖2為依據本發明實施例的電子裝置的系統架構圖。
圖3為依據本發明實施例的獨立磁碟冗餘陣列(Redundant Array of Independent Disks,RAID)前處理器的硬體方塊圖。
圖4為依據本發明實施例的中斷程序的時序圖。
圖5為依據本發明實施例的RAID控制器與RAID引擎之間的初始化RAID引擎的時序圖。
圖6為依據本發明實施例的驅動RAID引擎的方法流程圖。
以下說明為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。
必須了解的是,使用於本說明書中的“包含”、“包括”等詞,用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。
於權利要求中使用如“第一”、“第二”、“第三”等詞是用來修飾權利要求中的元件,並非用來表示之間具有優先順序,前置關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。
必須了解的是,當元件描述為“連接”或“耦接”至另一元件時,可以是直接連結、或耦接至其他元件,可能出現中間元件。相反地,當元件描述為“直接連接”或“直接耦接”至另一元件時,其中不存在任何中間元件。使用來描述元件之間關係的其他語詞也可類似方式解
讀,例如“介於”相對於“直接介於”,或者是“鄰接”相對於“直接鄰接”等等。
為了達到資料的容錯性,閃存控制器可依據每頁的使用者資料產生糾錯碼(Error Correcting 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 Number Unit,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 Interface Controller)131可以通用序列匯流排(Universal Serial Bus,USB)、先進技術附著(advanced technology attachment,ATA)、序列先進技術附著(serial advanced technology attachment,SATA)、快速周邊元件互聯(peripheral component interconnect 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 Flash Interface,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,H2F Table)、閃存-主機對照表(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儲存奇偶校驗碼頁面的奇偶校驗碼到RAM 136中的指定位址。
如果閃存介面控制器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所示:
這4個命令分別用於讓RAID引擎137切換到指定的群組,清除之前群組的資料,設定指定的工作模式,以及啟動RAID引擎137中的直接記憶體存取控制器(Direct Memory Access,DMA Controller)。轉換器324可依序依據命令佇列322中這4個命令的操作碼和參數從對照表326獲取設定值,並且設定這些值到組態暫存電路332中的寄存器。
每次當RAID控制器310依據組態寄存器334中的設定值與RAID引擎137進行一系列實體層的訊號交互以完成指定的驅動操作之後,發出啟動訊號(Triggering Signal)給組態暫存電路332和轉換器324。當組態暫存電路332中的輸出元件偵測到啟動訊號後,輸出組態暫存電路332的寄存器中的設定值到組態寄存器334,用以覆寫組態寄存器334中的設定值。當轉換器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從RAM 136的指定位址讀取一個或多個頁面的使用者資料、奇偶校驗碼或者臨時性編碼結果,並且儲存使用者資料、奇偶
校驗碼或者臨時性編碼結果至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的步驟採用指定的順序來執行,但是在不違反發明精神的情況下,熟習此技藝人士可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發明並不侷限於僅使用如上所述的順序。此外,熟習此技藝人士亦可以將若干步驟整合為一個步驟,或者是除了這些步驟外,循序或平行地執行更多步驟,本發明亦不因此而侷限。
雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。
134:處理單元
137:獨立磁碟冗餘陣列引擎
322:命令佇列
324:轉換器
326:對照表
332:組態暫存電路
334:組態寄存器
342:讀取引擎
344:讀取先進先出緩衝器
352:寫入引擎
354:寫入先進先出緩衝器
362:輸出寄存器
364:輸出元件
372:輸出佇列
Claims (11)
- 一種驅動獨立磁碟冗餘陣列引擎的裝置,包含:命令佇列,用於儲存由處理單元所推入的多個命令,每個所述命令包含操作碼和第一參數,指示與所述獨立磁碟冗餘陣列引擎的實體層交互操作;對照表,包含多筆紀錄,每筆所述紀錄儲存特定操作碼和特定第一參數所對應的用於驅動與所述獨立磁碟冗餘陣列引擎的介面的驅動值;轉換器,耦接所述命令佇列和所述對照表,用於依據所述命令佇列中的任何所述命令的所述操作碼和所述第一參數從所述對照表獲取相應的所述驅動值,以及輸出所述驅動值;組態寄存器,用於獲取所述驅動值,以及儲存所述驅動值;以及獨立磁碟冗餘陣列控制器,耦接所述組態寄存器,用於依據所述組態寄存器中的所述驅動值完成一系列與所述獨立磁碟冗餘陣列引擎的實體層訊號交互。
- 如請求項1所述的驅動獨立磁碟冗餘陣列引擎的裝置,包含:讀取緩衝器;讀取引擎,耦接所述讀取緩衝器;其中,所述獨立磁碟冗餘陣列控制器耦接所述讀取緩衝器和所述讀取引擎,依據所述組態寄存器中的所述驅動值發出第一啟動訊號和第二參數給所述讀取引擎,用於指示所述讀取引擎從隨機存取記憶體的第一位址讀取使用者資料、奇偶校驗碼或者臨時性編碼結果,以及儲存所述使用者資料、所述奇偶校驗碼或者所述臨時性編碼結果至所述讀取緩衝器;從所述讀取緩衝器讀取所述使用者資料、所述奇偶校驗碼或者所述臨時性編碼結果; 以及通過資料線傳送所述使用者資料、所述奇偶校驗碼或者所述臨時性編碼結果給所述獨立磁碟冗餘陣列引擎。
- 如請求項1中所述的驅動獨立磁碟冗餘陣列引擎的裝置,包含:寫入緩衝器;寫入引擎,耦接所述寫入緩衝器;其中,所述獨立磁碟冗餘陣列控制器耦接所述寫入緩衝器和所述寫入引擎,依據所述組態寄存器中的所述驅動值通過資料線從所述獨立磁碟冗餘陣列引擎獲取臨時性編碼結果或者奇偶校驗碼;儲存所述臨時性編碼結果或者所述奇偶校驗碼至所述寫入緩衝器;以及發出第二啟動訊號和第三參數給所述寫入引擎,用於指示所述寫入引擎從所述寫入緩衝器讀取所述臨時性編碼結果或者所述奇偶校驗碼,並且將所述臨時性編碼結果或者所述奇偶校驗碼寫入隨機存取記憶體的第二位址。
- 如請求項1中所述的驅動獨立磁碟冗餘陣列引擎的裝置,包含:組態暫存電路,耦接所述轉換器和所述組態寄存器,包含輸出元件和寄存器,其中,所述獨立磁碟冗餘陣列控制器依據所述組態寄存器中的所述驅動值完成驅動所述獨立磁碟冗餘陣列引擎的操作後,發出第三啟動訊號給所述組態暫存電路,用於驅動所述輸出元件將所述寄存器的驅動值輸出到所述組態寄存器;以及發出第四啟動訊號給所述轉換器,用於驅動所述轉換器從所述命令佇列獲取一個所述命令,依據獲取的所述命令中的操作碼和參數從所述對照表獲取相應的所述驅動值,並且設定新獲取的所述驅動值到所述組態暫存電路中的所述寄存器。
- 如請求項1中所述的驅動獨立磁碟冗餘陣列引擎的裝置,包含:輸出佇列,耦接所述獨立磁碟冗餘陣列控制器,其中,所述獨立磁碟冗餘陣列控制器在完成與所述獨立磁碟冗餘陣列引擎的實體層訊號交互後輸出相應於所述命令的執行結果至所述輸出佇列。
- 如請求項5中所述的驅動獨立磁碟冗餘陣列引擎的裝置,包含:輸出元件,耦接所述輸出佇列和所述獨立磁碟冗餘陣列控制器;以及輸出寄存器,耦接輸出元件和所述獨立磁碟冗餘陣列控制器,其中,所述獨立磁碟冗餘陣列控制器在完成與所述獨立磁碟冗餘陣列引擎的實體層訊號交互後發出第五啟動訊號給所述輸出元件,用於驅動所述輸出元件將所述輸出寄存器中的執行結果推入所述輸出佇列;以及儲存相應於所述命令的執行結果至所述輸出寄存器。
- 一種驅動獨立磁碟冗餘陣列引擎的方法,由獨立磁碟冗餘陣列控制器執行,其中獨立磁碟冗餘陣列前處理器包含所述獨立磁碟冗餘陣列控制器和組態寄存器,所述驅動獨立磁碟冗餘陣列引擎的方法包含:依據所述組態寄存器中的驅動值與所述獨立磁碟冗餘陣列引擎進行一系列實體層的訊號交互以完成驅動操作,其中,所述驅動值相應於由處理單元所發出的命令,並且在所述獨立磁碟冗餘陣列控制器和所述獨立磁碟冗餘陣列引擎協力完成所述驅動操作的期間,所述處理單元執行與頁面群組的奇偶校驗碼的編碼和解碼無關的運算任務。
- 如請求項7所述的驅動獨立磁碟冗餘陣列引擎的方法,其中所述獨立磁碟冗餘陣列前處理器包含讀取引擎和讀取緩衝器,所述驅動獨立磁碟冗餘陣列引擎的方法包含:依據所述組態寄存器中的所述驅動值指示所述讀取引擎從隨機存取記憶體讀取一個或多個頁面的使用者資料、奇偶校驗碼或者臨時性編碼結果,並且儲存所述使用者資料、所述奇偶校驗碼或者所述臨時性編碼結果至所述讀取緩衝器;在一段預設時間後,從所述讀取緩衝器獲取所述使用者資料、所述奇偶校驗碼或者所述臨時性編碼結果;以及與所述獨立磁碟冗餘陣列引擎進行一系列實體層的訊號交互以通過資料線傳送所述使用者資料、所述奇偶校驗碼或者所述臨時性編碼結果給所述獨立磁碟冗餘陣列引擎。
- 如請求項7所述的驅動獨立磁碟冗餘陣列引擎的方法,其中所述獨立磁碟冗餘陣列前處理器包含寫入引擎和寫入緩衝器,所述驅動獨立磁碟冗餘陣列引擎的方法包含:依據所述組態寄存器中的所述驅動值與所述獨立磁碟冗餘陣列引擎進行一系列實體層的訊號交互以通過資料線從所述獨立磁碟冗餘陣列引擎接收一個或多個頁面的使用者資料、臨時性編碼結果或者奇偶校驗碼;儲存所述使用者資料、所述臨時性編碼結果或者所述奇偶校驗碼至所述寫入緩衝器;以及指示所述寫入引擎將所述使用者資料、所述臨時性編碼結果或者所述奇偶校驗碼寫入隨機存取記憶體。
- 如請求項7所述的驅動獨立磁碟冗餘陣列引擎的方法,其中所述獨立磁碟冗餘陣列前處理器包含組態暫存電路、命令佇列、轉換器和對照表,所述驅動獨立磁碟冗餘陣列引擎的方法包含:完成所述驅動操作後,發出第一啟動訊號給所述組態暫存電路,用於驅動所述組態暫存電路中的輸出元件將所述組態暫存電路中的寄存器的驅動值輸出到所述組態寄存器;以及完成所述驅動操作後,發出第二啟動訊號給所述轉換器,用於驅動所述轉換器依據所述命令佇列頂端的命令中的操作碼和參數從所述對照表獲取相應的驅動值,並設定所述相應的驅動值到所述組態暫存電路中的所述寄存器。
- 如請求項7所述的驅動獨立磁碟冗餘陣列引擎的方法,其中所述獨立磁碟冗餘陣列前處理器包含輸出佇列,所述驅動獨立磁碟冗餘陣列引擎的方法包含:完成所述驅動操作後,判斷是否需要回報相應於所述命令的執行結果給所述處理單元;以及當需要回報所述執行結果給所述處理單元時,將所述執行結果推入所述輸出佇列,使得所述處理單元能夠從所述輸出佇列獲取所述執行結果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110148312A TWI797905B (zh) | 2021-12-23 | 2021-12-23 | 驅動獨立磁碟冗餘陣列引擎的裝置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110148312A TWI797905B (zh) | 2021-12-23 | 2021-12-23 | 驅動獨立磁碟冗餘陣列引擎的裝置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI797905B true TWI797905B (zh) | 2023-04-01 |
TW202326440A TW202326440A (zh) | 2023-07-01 |
Family
ID=86945037
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110148312A TWI797905B (zh) | 2021-12-23 | 2021-12-23 | 驅動獨立磁碟冗餘陣列引擎的裝置及方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI797905B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117806568A (zh) * | 2024-02-29 | 2024-04-02 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据更新方法、装置、设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201926059A (zh) * | 2017-12-06 | 2019-07-01 | 慧榮科技股份有限公司 | 資料儲存裝置、主機裝置、以及資料寫入方法 |
TW201926042A (zh) * | 2017-11-30 | 2019-07-01 | 慧榮科技股份有限公司 | 用來於一記憶裝置中進行存取控制之方法以及記憶裝置及其控制器 |
TW201926043A (zh) * | 2017-11-30 | 2019-07-01 | 慧榮科技股份有限公司 | 用來於一記憶裝置中進行存取控制之方法以及記憶裝置及其控制器 |
-
2021
- 2021-12-23 TW TW110148312A patent/TWI797905B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201926042A (zh) * | 2017-11-30 | 2019-07-01 | 慧榮科技股份有限公司 | 用來於一記憶裝置中進行存取控制之方法以及記憶裝置及其控制器 |
TW201926043A (zh) * | 2017-11-30 | 2019-07-01 | 慧榮科技股份有限公司 | 用來於一記憶裝置中進行存取控制之方法以及記憶裝置及其控制器 |
TW201926059A (zh) * | 2017-12-06 | 2019-07-01 | 慧榮科技股份有限公司 | 資料儲存裝置、主機裝置、以及資料寫入方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117806568A (zh) * | 2024-02-29 | 2024-04-02 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据更新方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
TW202326440A (zh) | 2023-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9304855B2 (en) | Data storage device | |
US10769066B2 (en) | Nonvolatile memory device, data storage device including the same and operating method thereof | |
KR102002826B1 (ko) | 저장 장치, 플래시 메모리 및 저장 장치의 동작 방법 | |
KR20100091379A (ko) | 반도체 디스크 장치 및 그것의 프로그램 페일 처리 방법 | |
KR20200093362A (ko) | 메모리 시스템 및 그것의 동작 방법 | |
CN116107767A (zh) | 包括多处理器的控制器及其操作方法 | |
US11288183B2 (en) | Operating method of memory system and host recovering data with write error | |
TWI797905B (zh) | 驅動獨立磁碟冗餘陣列引擎的裝置及方法 | |
US20230205461A1 (en) | Apparatus and method for driving redundant array of independent disks (raid) engine | |
CN112988449B (zh) | 写入页面群组的数据到闪存模块的装置及方法 | |
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 | |
TWI648629B (zh) | 映射表更新方法、記憶體控制電路單元與記憶體儲存裝置 | |
CN113495850A (zh) | 管理垃圾回收程序的方法、装置及计算机可读取存储介质 | |
TWI787110B (zh) | 寫入資料到閃存記憶體的方法及裝置 | |
CN113535459B (zh) | 响应电源事件的数据存取方法及装置 | |
TWI835027B (zh) | 更新主機與閃存位址對照表的方法及電腦程式產品及裝置 | |
TWI740454B (zh) | 反應電源事件的資料存取方法及裝置 | |
TWI740446B (zh) | 管理垃圾回收程序的電腦程式產品及方法及裝置 | |
TWI818762B (zh) | 排程和執行主機資料更新命令的方法及電腦程式產品及裝置 | |
TWI814647B (zh) | 執行主機命令的方法及電腦程式產品及裝置 | |
TWI749490B (zh) | 寫入閃存管理表的電腦程式產品及方法及裝置 | |
TWI822516B (zh) | 執行主機寫入命令的方法及電腦程式產品及裝置 | |
TW202321921A (zh) | 更新主機與閃存位址對照表的方法及電腦程式產品及裝置 | |
TW202416120A (zh) | 排程和執行主機資料更新命令的方法及電腦程式產品及裝置 |