本發明關連于一種閃存裝置,特別是一種于控制邏輯錯誤時重新配置存儲控制器的方法以及使用該方法的裝置。
背景技術:
對于以現場可編程化邏輯門陣列(FPGA,Field-Programmable Gate Array)封裝的固態硬盤(SSD,Solid State Drive)儲存系統中的控制器,單粒子翻轉(SEU,Single Event Upset)是造成控制邏輯錯誤的原因之一。單粒子翻轉是微電子裝置中的敏感裝置因為阿爾法粒子或宇宙射線沖擊造成的狀態翻轉。因此,本發明提出一種于控制邏輯錯誤時重新配置控制器中的邏輯的方法以及使用該方法的裝置,用以克服上述的問題。
技術實現要素:
本發明的實施例提出一種于控制邏輯錯誤時重新配置存儲控制器的方法,由處理單元執行,包含下列步驟。周期性詢問編碼器是否存儲控制器發生錯誤。當編碼器答復存儲控制器發生錯誤時,驅動存儲控制器的固定區域中的重配置控制邏輯,用以重新程序化存儲控制器的整個可重配置區域,其中,可重配置區域以現場可編程化邏輯門陣列實施。
本發明的實施例提出一種于控制邏輯錯誤時重新配置控制器的裝置,包含固定區域與可重配置區域。固定區域包含處理單元以及重配置控制邏輯。處理單元周期性詢問編碼器是否存儲控制器發生錯誤。當編碼器答復存儲控制器發生錯誤時,驅動存儲控制器的固定區域中的重配置控制邏輯,用以重新程序化存儲控制器的整個可重配置區域。可重配置區域以現場可編程化邏輯門陣列實施。
附圖說明
圖1系依據本發明實施例的固態硬盤儲存系統的系統架構圖。
圖2系依據本發明實施例的閃存中的儲存單元示意圖。
圖3系依據本發明實施例的存儲控制器的邏輯分割示意圖。
圖4系依據本發明實施例的重新配置存儲控制器的方法流程圖。
圖5系依據本發明實施例的重新配置存儲控制器的方法流程圖。
圖6系依據本發明實施例的重新配置存儲控制器的方法流程圖。
圖7系依據本發明實施例的重新配置存儲控制器的方法流程圖。
符號說明
10 系統; 110 處理單元;
120 只讀存儲器; 130 靜態隨機存取存儲器;
140 動態隨機存取存儲器;
150 存取接口; 160 主裝置;
170 存取接口; 180 儲存單元;
210 存儲器單元陣列; 220 行解碼單元;
230 列編碼單元; 240 地址單元;
250 數據緩存器; 300a 可重配置區域;
300b 固定區域; 310 重配置控制邏輯;
S410~S480 方法步驟 S510~S520 方法步驟;
S610 方法步驟
具體實施方式
以下說明系為完成發明的較佳實現方式,其目的在于描述本發明的基本精神,但并不用以限定本發明。實際的發明內容必須參考之后的權利要求范圍。
必須了解的是,使用于本說明書中的“包含”、“包括”等詞,系用以表示存在特定的技術特征、數值、方法步驟、作業處理、元件以及/或元件,但并不排除可加上更多的技術特征、數值、方法步驟、作業處理、元件、元件,或以上的任意組合。
于權利要求中使用如“第一”、“第二”、“第三”等詞系用來修飾權利要求中的元件,并非用來表示之間具有優先權順序,先行關系,或者是一個元件先于另一個元件,或者是執行方法步驟時的時間先后順序,僅用來區別具有相同名字的元件。
圖1系依據本發明實施例的固態硬盤儲存系統的系統架構圖。固態硬盤儲存系統的系統架構10中包含只讀存儲器120,儲存重新配置存儲控制器的信息。于此須注意的是,此信息也可備份在儲存單元180中。當處理單元110執行靜態隨機存取存儲器130的控制核心算法時,根據主裝置160透過存取接口150發出的命令,寫入數據到儲存單元180中的指定地址,或者從儲存單元180中的指定地址讀取數據。詳細來說,處理單元110可透過存取接口170寫入數據到儲存單元180中的指定地址,以及從儲存單元180中的指定地址讀取數據。系統架構10使用數個電子信號來協調處理單元110與儲存單元180間的數據與命令傳遞,包含數據線(data line)、頻率信號(clock signal)與控制信號(control signal)。數據線可用以傳遞命令、地址、讀出及寫入的數據;控制信號線可用以傳遞芯片致能(chip enable,CE)、地址提取致能(address latch enable,ALE)、命令提取致能(command latch enable,CLE)、寫入致能(write enable,WE)等控制信號。存取接口170可采用雙倍數據率(double data rate,DDR)通訊協議與儲存單元180溝通,例如,開放NAND快閃(open NAND flash interface,ONFI)、雙倍數據率開關(DDR toggle)或其它接口。處理單元110另可使用存取接口150透過指定通訊協議與主裝置160進行溝通,例如,通用序列總線(universal serial bus,USB)、先進技術附著(advanced technology attachment,ATA)、序列先進技術附著(serial advanced technology attachment,SATA)、快速周邊組件互聯(peripheral component interconnect express,PCI-E)或其它接口。處理單元110、只讀存儲器120、靜態隨機存取存儲器130、存取接口150及170可統稱為一個存儲控制器(storage controller)。
圖2系依據本發明實施例的閃存中的儲存單元示意圖。儲存單元180可包含由MxN個存儲器單元(memory cells)組成的陣列(array)210,而每一個存儲器單元儲存至少一個位(bit)的信息。閃存可以是NAND型閃存,或其它種類的閃存。為了正確存取信息,行解碼單元220用以選擇存儲器單元陣列210中指定 的行,而列編碼單元230用以選擇指定行中一定數量的字節的數據作為輸出。地址單元240提供行信息給行解碼器220,其中定義了選擇存儲器單元陣列210中的那些行。相似地,列解碼器230則根據地址單元240提供的列信息,選擇存儲器單元陣列210的指定行中一定數量的列進行讀取或寫入操作。行可稱為為字符線(wordline),列可稱為位線(bitline)。數據緩存器(data buffer)250可儲存從存儲器單元陣列210讀取出的數據,或欲寫入存儲器單元陣列210中的數據。存儲器單元可為單層式單元(single-level cells,SLCs)、多層式單元(multi-level cells,MLCs)或三層式單元(triple-level cells,TLCs)。
圖3系依據本發明實施例的存儲控制器的邏輯分割示意圖。存儲控制器可包含可重配置區域(reconfigurable region)130a及固定區域(fixed region)300b。固定區域300b可包含輸出入控制邏輯(I/O control logic)、主裝置通訊邏輯(master-device communications logic)及重配置控制邏輯(re-configuration control logic)310等。固定區域300b另可包含處理單元110的運算邏輯單元,用以依據加載的韌體進行數學運算以及控制其它元件。例如,輸出入控制邏輯包含對只讀存儲器120以及靜態隨機存取存儲器130等的輸出入控制。主裝置通訊邏輯可實施于存取接口150。固定區域300b中的邏輯不能重新配置。可重配置區域300a以現場可編程化邏輯門陣列實施。可重配置區域300a包含固態硬盤儲存系統的控制核心算法,可占超過存儲控制器的90%空間。可重配置區域300a包含可編程化邏輯區塊的陣列及階層式可重新組態的相互連結,使得區塊與區塊可連接在一起,例如,數個邏輯閘可依據不同組態相互連接在一起。一些邏輯區塊可組態來執行復雜的綜合性功能,或者是簡單的邏輯閘,例如與門(AND)、或門(OR)、互斥或門(XOR)等。一些邏輯區塊可包含存儲元件,由簡單的正反器(flip-flops)或完整的記憶塊組成。可重配置區域300a中的控制核心算法以及固定區域300b中的邏輯可組織成數個碼區段(code segments),并在每一個碼區段加上循環冗余校驗碼(CRC-Cyclic Redundancy Check)進行保護。解碼單元可使用循環冗余校驗碼檢查存儲控制器中的控制核心算法及邏輯是否發生錯誤,并且當錯誤發生時嘗試修正其中的錯誤。然而,當控制核心算法及邏輯無法修復時(亦可稱為控制邏輯錯誤),需要執行一個方法,用以重新配置存儲控制器。控制邏輯錯誤也可以代表存儲控制器發生錯誤。
于一種實施方式中,存儲控制器可偵測可重配置區域300a的哪個部份發生不可恢復的錯誤,接著,僅重新組態發生錯誤的部分。為完成此偵測需要實施特定的硬件電路以及/或軟件指令。或者是,需要花費額外的時間來完成此偵測,在主裝置160所發出的命令逾時前,可能造成來不及完成重新組態以及處理此命令。于另一種實施方式,存儲控制器可重新組態整個可重配置區域300a而不進行如上所述的偵測。圖4系依據本發明實施例的重新配置存儲控制器的方法流程圖。本領域技術人員理解當存儲控制器接收到主裝置160所發出的命令時,使用控制核心算法來驅動存取接口170,用以完成此命令,例如數據讀取命令、數據寫入命令等。在使用控制核心算法前,解碼單元需要先檢查存儲控制器中的控制核心算法及邏輯是否正確。當解碼單元無法修復于存儲控制器的控制核心算法及邏輯中發生的錯誤時,可發出最高優先權的中斷給處理單元110。當處理單元110接收到中斷后(步驟S410),暫停存取(步驟S420)。換句話說,處理單元110并不使用包含無法恢復錯誤的控制核心算法來驅動存取接口170。接著,儲存目前的執行狀態(例如,執行變量值,尚未寫入儲存單元180的數據,已讀取但尚未答復給主裝置160的數據等)于動態隨機存取存儲器140(步驟S430)。詳細來說,于步驟S430,處理單元110驅動輸出入控制邏輯儲存目前的執行狀態至動態隨機存取存儲器140。處理單元110驅動重配置控制邏輯310的開始執行重配置作業,用以重新程序化整個可重配置區域300a(步驟S440)。詳細來說,重配置控制邏輯310透過輸出入控制邏輯驅動讀取只讀存儲器120中儲存的信息,例如使用硬件描述語言(HDL,Hardware Description Language)撰寫的指令、邏輯區塊間相互連接的對照表等,并根據此信息來重新程序化整個可重配置區域300a。接著,反復執行一個循環,用以詢問重配置控制邏輯310重配置作業是否完成(步驟S450)。當重配置控制邏輯310回復重配置作業完成的消息后(步驟S450中”是”的路徑),處理單元110啟動整個存儲控制器的再初始化作業(re-initiation operation),使得存儲控制器處于可用狀態(步驟S460)。接著,從動態隨機存取存儲器140恢復(restore)執行狀態(步驟S470),以及根據恢復的執行狀態恢復存取(resume access)(步驟S480)。透過以上的方法,尚未執行完的操作可以從斷點繼續執行。存儲控制器僅在短暫的時間(少于1秒)失效,重配置之后則恢復正常。
圖5系依據本發明實施例的重新配置存儲控制器的方法流程圖。當暫停存取后(步驟S420),完成當前管道(pipeline)中操作(步驟S510)。當完成當前管道(pipeline)中操作后(步驟S510),處理單元110驅動重配置控制邏輯310的開始執行重配置作業,用以重新程序化整個可重配置區域300a(步驟S440)。接著,當處理單元110啟動整個存儲控制器的再初始化作業,使得存儲控制器處于可用狀態后(步驟S460),恢復存取(步驟S520)。步驟S410、S420、S440、S450、S460的詳細技術內容請參考圖4的說明,為求簡潔不再贅述。
關于如何判斷上述存儲控制器發生錯誤,請參考圖4及圖5描述的方法流程:一些實施例是透過中斷處理例程(interrupt handler)的機制偵測發生單粒子翻轉錯誤(造成存儲控制器錯誤),一旦接收到中斷,接著進行重新組態。于一些實施例中,處理單元110也可周期性的詢問(polling)解碼單元是否發生單粒子翻轉錯誤。一旦解碼單元答復發生單粒子翻轉錯誤,則進行重新組態。
圖6系依據本發明實施例的重新配置存儲控制器的方法流程圖。圖6的方法流程圖相似于圖4。然而,本領域技術人員可將圖4的步驟S410中的接收中斷修改為周期性詢問解碼單元是否發生存儲控制器錯誤(步驟S610)。當解碼單元答復發生控制邏輯錯誤時(步驟S610中“是”的路徑),暫停存取(步驟S420)。為求說明書的簡潔,后續的步驟可參考圖4的說明,不再贅述。
圖7系依據本發明實施例的重新配置存儲控制器的方法流程圖。圖7的方法流程圖相似于圖5。然而,本領域技術人員可將圖5的步驟S410中的接收中斷修改為周期性詢問解碼單元是否發生存儲控制器錯誤(步驟S610)。當解碼單元答復發生控制邏輯錯誤時(步驟S610中“是”的路徑),暫停存取(步驟S420)。為求說明書的簡潔,后續的步驟可參考圖5的說明,不再贅述。
雖然圖1中包含了以上描述的組件,但不排除在不違反發明的精神下,使用更多其它的附加元件,已達成更佳的技術效果。此外,雖然圖4至圖7的流程圖采用指定的順序來執行,但是在不違反發明精神的情況下,本領域技術人員可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發明并不局限于僅使用如上所述的順序。此外,本領域技術人員亦可以將若干步驟整合為一個步驟,或者是除了這些步驟外,循序或平行地執行更多步驟,本發明亦不因此而局限。
雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述并非用以限縮本發明。相反地,此發明涵蓋了本領域技術人員顯而易見的修改與相似設置。所以,申請權利要求范圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。