用NiosII搭建的固態(tài)盤設(shè)備系統(tǒng)
所用的這些控制器中,除了NAND型閃存控制器和ATA控制器需要自定義開發(fā)外,都可以使用標(biāo)準(zhǔn)的IP模塊。NAND型閃存控制器和ATA控制器在自定義開發(fā)完成后也被集成到開發(fā)系統(tǒng)之中,可以方便地調(diào)用。
本文引用地址:http://butianyuan.cn/article/85542.htmATA控制器負(fù)責(zé)ATA接口的實現(xiàn)。它是系統(tǒng)中最復(fù)雜的組件,所有與主機間的交互均通過ATA接口完成。為了滿足各種需求,ATA控制器除了實現(xiàn)基本的ATA傳輸協(xié)議之外,開發(fā)中還增加了如下功能:
?、?自帶DMA控制器。ATA控制器中自帶一個DMA控制器,只需給定源地址或目的地址,ATA控制器自帶的DMA控制器就可以自動完成與緩存之間的數(shù)據(jù)交換。
?、?帶有中斷信號源。ATA控制器帶有一個中斷源,當(dāng)接收到主機端讀/寫傳輸請求時,即可發(fā)起一個中斷提示處理器優(yōu)先處理該事件。
③ 采用與系統(tǒng)異步的時鐘。為了達到最優(yōu)性能,ATA控制器可以使用與系統(tǒng)異步的時鐘信號,而使用異步時鐘橋與系統(tǒng)總線連接。例如在該系統(tǒng)實現(xiàn)中,主系統(tǒng)運行在65MHz,而ATA控制器運行在100 MHz。
NAND型閃存控制器則做成通用的接口控制器,提供基本的NAND型閃存讀/寫/擦除等操作即可。
3 系統(tǒng)軟件設(shè)計
基于NiosII的SOPC平臺搭建完成之后,需要在NiosII上設(shè)計適當(dāng)?shù)能浖哉{(diào)度整個系統(tǒng),實現(xiàn)數(shù)據(jù)的緩存策略和存儲策略。在軟件設(shè)計中,采用了一種流程控制與策略控制弱耦合的結(jié)構(gòu),使得緩存策略和存儲策略可以獨立開發(fā)。
3.1 系統(tǒng)流程
考慮到所有事務(wù)中最頻繁和最重要的事務(wù)都是與ATA控制器相關(guān)的,因此在系統(tǒng)算法中做如下設(shè)計:在ATA控制器和NiosII之間連接中斷信號,使用中斷服務(wù)來處理相關(guān)事務(wù),而其他事務(wù)則采用軟件輪詢的方式處理。一個典型的處理流程如圖3所示。
圖3 軟件基本流程設(shè)計
圖3并非完整的軟件流程(未涉及調(diào)試、錯誤處理以及其他輔助流程),僅僅標(biāo)示出了系統(tǒng)最為重要的幾個處理環(huán)節(jié):緩存檢查與維護、ATA讀/寫請求的處理。從該系統(tǒng)流程設(shè)計中可以看到,系統(tǒng)在運行過程中將在一個軟件主循環(huán)中不斷進行數(shù)據(jù)檢查與維護,而當(dāng)ATA中斷來到時則轉(zhuǎn)入ATA中斷處理。數(shù)據(jù)維護模塊和ATA處理模塊是系統(tǒng)流程控制的主要部分。
數(shù)據(jù)維護模塊主要負(fù)責(zé)檢查緩存塊是否老化/失效,緩存空間的碎片狀態(tài),并根據(jù)實際情況對緩存數(shù)據(jù)進行清理。而其中緩存片和緩存段所有的檢查、判斷、處理操作,都是直接調(diào)用緩存管理模塊的相關(guān)函數(shù),即直接依賴于緩存策略。該模塊流程如圖4所示。
圖4 數(shù)據(jù)維護模塊流程
ATA中斷處理模塊是在ATA控制器發(fā)起中斷時進入處理模塊的。ATA中斷模塊的主要任務(wù)包括查詢ATA控制器的事務(wù)狀態(tài)及參數(shù),獲取所需數(shù)據(jù)區(qū)域在NAND型閃存中的信息,申請緩存片,完成數(shù)據(jù)交換并清ATA中斷。其中數(shù)據(jù)區(qū)信息由存儲管理模塊提供,而緩存的申請則是調(diào)用緩存管理模塊的接口函數(shù)完成。該模塊流程如圖5所示。
圖5 數(shù)據(jù)維護模塊流程
軟件控制流程中還包含一些輔助性的模塊,以保證系統(tǒng)的魯棒性。這些輔助性的模塊包括獨立的系統(tǒng)初始化模塊、系統(tǒng)軟復(fù)位模塊和調(diào)試模式模塊等,以便在系統(tǒng)出現(xiàn)錯誤時及時復(fù)位整套系統(tǒng),維持系統(tǒng)正常的工作,或者供開發(fā)人員了解系統(tǒng)的錯誤所在。
3.2 存儲管理模塊
存儲管理模塊主要實現(xiàn)了數(shù)據(jù)在NAND型閃存中的存儲策略。存儲管理模塊主要管理的信息包括:邏輯地址到物理塊地址的映射信息、物理塊磨損程度信息以及壞塊映射信息。其主要作用是確保系統(tǒng)工作的魯棒性以及盡量平均閃存塊的磨損程度。當(dāng)系統(tǒng)接收到主機的數(shù)據(jù)讀/寫請求時,首先須通過存儲管理模塊定位其物理位置信息,然后才能根據(jù)該信息創(chuàng)建緩存片,完成數(shù)據(jù)交換。
當(dāng)系統(tǒng)需要將某格緩存片排空刪除時,對數(shù)據(jù)的回寫是需要根據(jù)緩存片內(nèi)保留的相關(guān)信息來完成具體操作的。
存儲管理模塊的對外接口設(shè)計只有一個函數(shù),即地址轉(zhuǎn)換,輸入操作的各種參數(shù),返回一個確定的物理塊描述結(jié)構(gòu),如表1所列。
表1 存儲管理模塊對外接口函數(shù)
在該函數(shù)內(nèi),將進行邏輯地址到物理地址的轉(zhuǎn)換以及壞塊再映射等操作,確保最終給出的數(shù)據(jù)信息是真正正確的物理信息。在返回提供的數(shù)據(jù)信息中,包括了應(yīng)讀取區(qū)域和應(yīng)寫入?yún)^(qū)域兩個部分,這兩個部分可以不相同,這樣可以方便均衡磨損算法的設(shè)計。例如,如果一個塊的寫入次數(shù)已經(jīng)達到一定程度,那么當(dāng)出現(xiàn)對該塊的寫請求時,可以將應(yīng)讀取區(qū)域指定為該區(qū)域,而應(yīng)寫入?yún)^(qū)域指向另一個物理塊,同時修改邏輯地址到物理地址的映射信息,那么當(dāng)相應(yīng)緩存片被銷毀時,數(shù)據(jù)被寫入新塊,即在保證映射關(guān)系的同時避免了對該塊的過度擦寫。
評論