微處理器與周邊裝置之間的高速資料交換是透過外部匯流排介面(External Bus Interface;EBI),系統單晶片(SoC)的製造技術可另外包含某些裝置與訊號介面。為了減少SoC的接腳數,在同一時間僅能啟動幾個裝置或訊號介面。例如,EBI與同步動態隨機存取記憶體(SDRAM)控制器共用接腳,EBI能夠達到高速資料傳輸,但有大量資料處理的需求時則必須開啟SDRAM控制器,如此就不能同時使用EBI。

用途與功能

在揮發性記憶體類別中,靜態隨機存取記憶體(SRAM)晶片的存取速度可以配合EBI,但SDRAM晶片存取時序與EBI並不相容,所以需要透過SDRAM控制器;如果動態隨機存取記憶體(DRAM)晶片是依據JEDEC標準並且符合SDRAM規範的定義就稱為「[DDR-n] SDRAM」。在非揮發性記憶體類別中,快閃記憶體的程式化(programming)時間很長,所以不能直接使用EBI,因此改用串列周邊介面(SPI),這被簡稱為「SPI Flash」。

軟體代理記憶體介面(Software Proxy Memory Interface;SPMI)是軟體程式在微處理器內部執行時控制二輸出腳,並且協同EBI來存取或控制各種記憶體。例如,DRAM、快閃記憶體。微處理器的外部資料搬移指令是直接透過EBI向周邊裝置傳輸資料,所以EBI的存取效率高於SDRAM控制器。為了大量減少SoC的接腳數,EBI與SDRAM控制器僅能擇一開啟,所以對於那些需要SDRAM晶片的硬體平台就難以同時擁有高速資料傳輸。經由軟體程式來取代SDRAM控制器則能使DRAM晶片與EBI相容,那麼SoC就可去除SDRAM控制器的佔用面積。

EBI的控制訊號是寫入致能(#WE)、輸出致能(#OE)。SPMI的獨立控制訊號是單元存取致能(cell access enable, #CAE)、啟動(activating, #ACT),這二者形成一組控制訊號,並且可使用各種輸出埠,像是一般通用輸入輸出(GPIO)。記憶體晶片的控制訊號是晶片選取(#CS)。

EBI的全部位址線在首次資料搬移指令執行時分別是軟體晶片定址(software chip addressing, A[MSB:r])、列位址(row address, A[r-1:0]),其中,多餘的位址線可定義成軟體晶片定址,列位址又可代表用於設定記憶體晶片的操作碼(OP code),其用途如同SDRAM規範的模式暫存器設定(MRS);在首次資料搬移指令執行後,列位址變成行位址(column address, A[r-1:0])。

EBI的全部資料線在首次資料搬移指令執行時分別是庫位址(bank address, DQ[7:4])、功能編號(DQ[3:0]),其中,功能編號的用途類似SDRAM規範的指令真值表;在首次資料搬移指令執行後是資料。

軟體代理的特徵

SPMI是結合微處理器原本就有的EBI以及輸出埠,其所對應的軟體程式碼就是外部資料搬移指令以及資料輸出指令,因此完整的資料傳輸時間包含EBI的存取時間(tEBI)、輸出埠的控制時間(tIO)、指令碼的操作時間(tOP)。

軟體程式在作業系統之中是系統呼叫,在韌體之中是軟體中斷,在應用程式之中是子程式,在多工作業環境則是多執行緒。SPMI可以代理SDRAM控制器的功能,並且將SDRAM規範所定義的資料傳輸介面轉換成EBI;除此之外,軟體可以隨時控制#CAE以及#ACT的時序來相容於各種記憶體的存取速度。通用型的SoC,或者是為了廣泛應用的微處理器透過基於EBI的SPMI而能在同一硬體平台上同時使用多種不同存取速度的記憶體晶片。例如,非同步SRAM晶片、DRAM晶片和快閃記憶體晶片皆可連接至EBI,但DRAM晶片和快閃記憶體晶片需要額外的接腳來連接至GPIO;除此之外,DRAM晶片和快閃記憶體晶片可各自連接一組控制訊號(#CAE, #ACT),並且應用分時多工來傳輸資料。

SDRAM規範有定義指令真值表,考量原先依照SDRAM規範所設計的記憶體晶片能夠在輕微變更硬體後與SPMI的時序相容,所以SPMI的指令真值表如下。

20190925_SPMI_TA71T1

表1:SPMI DRAM的指令真值表

寫入時序

圖 1顯示SPMI在寫入期間的時序,虛構時脈(imaginary clock)是用來代表不同時間點的資料傳輸時間。第1虛構時脈是經由EBI送出資料寫入指令至全部的記憶體晶片,被選擇到的那一記憶體晶片必須在#CS的邏輯訊號轉成低準位時記住自己已進入工作狀態,亦即圖中所示的工作閂鎖(working latch);當#WE的邏輯訊號從低準位轉成高準位時必須閂鎖列位址、庫位址、功能編號。順道一提,這一時間點相當於SDRAM規範的預充電指令(PRE)。DRAM單元的預充電從#WE的邏輯訊號再次回到高準位開始至#CAE的邏輯訊號轉成低準位為止,所以預充電時間(tRP)至少需要佔用1個tIO。第3虛構時脈是列位址到行位址的延遲時間(tRCD),這時間至少需要佔用2個tIO,這一時間點相當於SDRAM規範的啟動指令(ACT)。由於#CAE用於控制儲存單元(storage cell)的存取,所以在#ACT的邏輯訊號轉成低準位之前要先將它的邏輯訊號轉成高準位。#ACT的邏輯訊號用於啟動儲存單元的存取或記憶體晶片的組態,也用於解除記憶體晶片的工作狀態,在圖中呈現它與#CAE的邏輯訊號同時轉成低準位,但在實際操作中也可不同時。

行潛伏時間(CL)以tOP為單位時間,這是為了達到較高的存取效率,若不在意存取效率或者沒有連接高速記憶體則可改用tIO來計算時間。第6虛構時脈是第二次經由EBI送出資料寫入指令,這次的資料會寫入至儲存單元;當#WE的邏輯訊號從低準位轉成高準位時可以經由圖中所示的寫入閂鎖(write latch)來維持晶片內部對儲存單元的寫入操作,順道一提,這一時間點相當於SDRAM規範的寫入指令(WR)。DRAM單元的行寫入潛伏時間(CWL)從#WE的邏輯訊號轉成低準位開始至#CAE的邏輯訊號轉成高準位為止,這一時間的長度是基於儲存單元的寫入特性以及存取電路的性能,所以包含tEBI和tIO,其中,tEBI止於一單位時間,但tIO至少佔用一單位時間。第8虛構時脈至第11虛構時脈重複第4虛構時脈至第7虛構時脈,這相當於SDRAM規範的爆發寫入(burst write)。當#ACT的邏輯訊號再次回到高準位之時記憶體晶片的工作狀態立即解除,亦即圖中所示的第12虛構時脈。

20190925_SPMI_TA71P1

圖1:SPMI在寫入期間的時序

預充電指令和啟動指令

對於差動式儲存陣列(differential storage array),預充電的電壓值是「Vdd/2」,這電壓值不會增加儲存單元的洩漏電流。依據JEDEC標準,SDRAM控制器在發出預充電指令(PRE)之後可以不必立即發出ACT指令。這在軟體程式中可以將第1虛構時脈至第2虛構時脈的動作組成一子程式,另將第3虛構時脈之後的動作組成一子程式,但這會增加程式移植的工作負擔。

對於單端式儲存陣列(single-ended storage array),預充電的電壓值是「GND」,這電壓值會增加N型電晶體(NMOS)的洩漏電流。因此SPMI的軟體程式在執行PRE之後必須立即執行ACT。附帶一提,若以一P型電晶體(PMOS)以及一電容器組成一儲存單元,那麼上述的「GND」就會變成「Vdd」。

讀取時序

圖 2顯示SPMI在讀取期間的時序,第1虛構時脈第5虛構時脈如同上述。第6虛構時脈是第二次經由EBI送出資料讀取指令,這次會從儲存單元讀出資料至微處理器;#OE的邏輯訊號相當於SDRAM規範的讀取指令(RD)。由於DRAM單元的讀取特性以及存取電路的設計,可以使得DRAM晶片在列位址選通之後,再經過一段時間即能立即讀取任一行位址的資料,所以第7虛構時脈的時間單位是tOP,也不必另外控制#CAE的邏輯狀態。對於另一種電路設計,#CAE的邏輯狀態也可參考寫入時序,並且以tIO為單位時間。第8虛構時脈之後相當於SDRAM規範的爆發讀取(burst read)。當#ACT的邏輯訊號再次回到高準位之時記憶體晶片的工作狀態立即解除,亦即圖中所示的第10虛構時脈。

20190925_SPMI_TA71P2

圖2:SPMI DRAM在讀取期間的時序

更新時序/抹除時序

DRAM晶片需要週期性更新,所以圖 3顯示SPMI在更新期間的時序,以下說明如何對多個DRAM晶片同時進行更新。第1虛構時脈至第3虛構時脈的說明同上。第4虛構時脈是將#CAE的邏輯訊號轉成高準位,這是準備指令下一個DRAM晶片進入工作狀態,也就是第5虛構時脈至第7虛構時脈的作用。第7虛構時脈至第9虛構時脈如同圖 2之中的第3虛構時脈至第5虛構時脈,其中,#ACT的邏輯訊號在第9虛構時脈轉成低準位,這時會令全部進入工作狀態的DRAM晶片對所選的列位址進行更新。微處理器在第10虛構時脈執行資料輸出指令,在經過1個tIO之後輸出埠的邏輯準位才會被改變;對於以tIO為單位時間的CL,這一段時間成為額外的更新操作時間。第11虛構時脈是#CAE以及#ACT的邏輯訊號返回初始狀態,如此即完成一列更新。重覆圖 3所示的時序即可更新全部DRAM晶片內部的全部儲存單元。

除此之外,像是模式暫存器設定、自我更新、省電模式,這些控制指令也可對多個DRAM晶片同時進行。另外,在適當改變SPMI的時序後也可對多個快閃記憶體晶片同時進行抹除(erase)。

20190925_SPMI_TA71P3

圖3:SPMI DRAM 在更新期間的時序

結論

SPMI使用EBI先傳送列位址接著傳送行位址,這在軟體工程上是犧牲存取效率來獲得更加廣闊的定址空間,這樣的軟體定址空間大於EBI的最大定址空間;反推之,經由這樣的軟體定址空間則可減少位址線的接腳數。SoC對於實際的應用環璄會有多種不同的設計需求,SPMI的優勢是使用單一EBI和少量的GPIO就可存取和控制不同存取速度的記憶體晶片,不會增加非同步SRAM晶片的存取時間,也適合執行需要處理大量資料的應用軟體。當需要極佳的存取效率時,各記憶體晶片可各自連接一組控制訊號。