微處理器的外部匯流排介面(External Bus Interface;EBI)用於存取或控制外部的周邊裝置,但是快閃記憶體、同步動態隨機存取記憶體(SDRAM)各自擁有特定的裝置介面。原因之一是這些類型的記憶體晶片在存取內部儲存單元(storage cell)時所需耗費的時間遠遠大於EBI的作業時間,另一原因是不同類型的記憶體有其獨特的存取特性。例如,快閃記憶體對於儲存單元的寫入是程式化(programming),在程式化之前必須先抹除(erase)。

SPMI的硬體結構和軟體工程

圖 1呈現微處理器和各類型的記憶體之間應用軟體代理記憶體介面(Software Proxy Memory Interface;SPMI)的硬體結構(關於軟體代理介面的更多討論,請參考筆者先前發表的《軟體代理介面提升記憶體存取效率》一文)。軟體程式在微處理器內部執行時控制二輸出腳,並且協同EBI來存取或控制各種記憶體。這二輸出腳的訊號是單元存取致能(cell access enable, #CAE)以及啟動(activating, #ACT),形成如圖 1所示的一組控制訊號,亦即‘Control 1’。由於快閃記憶體在進行程式化和抹除時皆需耗費非常久的時間,所以使用另一組控制訊號,亦即‘Control 2’。

依據記憶體的存取特性和存取時間來撰寫其所對應的軟體程式,軟體工程師必須適時使用EBI來傳輸資料和控制GPIO來操作記憶體裝置。當SPMI的程式碼被微處理器執行時,EBI和GPIO一定是循序動作;其中,EBI負責傳輸資料,GPIO負責控制儲存單元的存取,並且依據記憶體的存取特性來交替使用EBI和GPIO。這是簡單介紹SPMI在軟體工程上的基本知識;順便一提,用於存取DRAM的程式碼也可轉成微處理器的微碼(microcode)。

Hardware Struct of SPMI

圖1:SPMI的硬體架構

SPMI的特徵

圖 2呈現SPMI DRAM與[DDR-n] SDRAM的差異,用來介紹SPMI的獨到特徵。SPMI DRAM晶片包含控制邏輯(control logic),但沒有自動更新(auto refresh)以及延遲鎖定迴路(DLL),這樣的硬體架構可降低單一晶片的成本。除此之外,SDRAM的控制邏輯比SPMI DRAM更加複雜。軟體工程師可善加利用系統單晶片(SoC)的內部裝置以及硬體平台的裝置來實現自動更新的功能。

對於基本的自動更新,其所相關的硬體電路包含計時器,更進階的自動更新就需要溫度感測器;這一計時器以及溫度感測器並不要求精確度也不要求速度。如果在SDRAM晶片內部執行自動更新會產生正比於晶片數量的功率消耗。SoC可以包含高效率處理器和低功率處理器,某些SoC也有溫度感測器;除此之外,先進的硬體平台會偵測SoC與周邊晶片之間的環境溫度。因此,當SoC在低功率運行時,SPMI的軟體程式可以使用低頻率計時器和各溫度感測器來執行自動更新。例如,SoC透過內部的N模計數器來降低核心的工作頻率,然後使用圖 2所示的第一計時器、核心溫度感測器、周邊溫度感測器。

非同步SRAM的存取時間可以直接換算出操作頻率的極限或直接判斷存取效率的良窳,但DDR-n SDRAM的操作頻率受限於DLL的鎖定頻率(lock in frequency),其存取效率受限於速度箱(speed bin)的數值。DLL的電路設計有其預定的頻率範圍,於是SDRAM控制器的時脈頻率不能大幅變更;這對於硬體工程師在設計硬體平台時,不易在應用設計與元件規格之間取得較佳的平衡;當這一硬體平台轉給軟體工程師之後就成了錙銖必較的軟體工程。

軟體程式與數位邏輯之間具有互換的本質,於是SPMI的功能可以轉換成硬體控制器,此即圖 2所示的SPMI控制器。由於SPMI的動作僅是單純控制EBI和GPIO的時序,所以該控制器的硬體元件可以使用電場可程式閘陣列(Field Programmable Gate Array;FPGA),或是複合型可程式邏輯元件(Complex Programmable Logic Device;CPLD)。

(譯名解讀:原文‘Field’應是暗喻應用經由橫向電場而能工作的電晶體,即「場效電晶體」(FET);而原文‘Gate’在開發上應不受限於「邏輯閘」,例如類比開關也是一種閘;原文‘Complex’在硬體架構上則是複合許多PLD。)

SPMI DRAM vs [DDR-n] SDRAM

圖 2:SPMI DRAM VS. [DDR-n] SDRAM

SPMI快閃記憶體的操作

快閃記憶體的缺點就是儲存單元必須先具有初始的儲存狀態,也就是要先被抹除,然後才能改變儲存狀態,也就是程式化;在儲存單元被改變儲存狀態後只能再次抹除才能回到初始的儲存狀態。若儲存單元從初始的儲存狀態至最高的儲存狀態僅有一個位階可被變動,這就稱為單階單元(SLC)。若儲存單元能有多個位階,這就稱為多階單元(MLC),但這時的實際產品僅有3個位階。於是,三重階單元(Triple-Level Cell;TLC)意指二進位數學式,也就是2的3次方。

固態硬碟(SSD)在起始發展時是使用NAND快閃記憶體,為了提高寫入速度,因此設定同一儲存位址不能被覆寫,所以SSD會損失一些使用者資料的儲存空間來放置查找表;另外在背景作業中進行抹除,也就是垃圾收集(garbage collection)。在硬體平台上的SPI Flash也多是NAND快閃記憶體,所以本文以NAND快閃記憶體的存取特性來呈現SPMI的操作時序。

NAND快閃記憶體在執行抹除時的單位是區塊(block),在執行程式化時的單位是頁(page),對應其硬體架構而定義EBI的位址線以及資料線如下:全部位址線在首次資料搬移指令執行時分別是軟體晶片定址(software chip addressing, A[MSB:r])、列位址(A[r-1:0]),其中,列位址包含區塊位址和頁位址;在首次資料搬移指令執行後,列位址變成行位址。全部資料線在首次資料搬移指令執行時分別是...

...完整閱讀請連結EE Times Taiwan網站