劉 珂 蔡曉軍 張志勇 趙夢瑩 賈智平
(山東大學計算機科學與技術學院 山東青島 262000)(sdu_liuke@outlook.com)
非易失性存儲器(non-volatile memory, NVM)具有諸多顯著的優點:對外界環境有更強的容錯性;比通常用于主存儲器的動態隨機存取存儲器(dynamic random access memory, DRAM)更加可靠,且靜態能量消耗比DRAM小若干數量級;能夠帶來更快的系統啟動時間,并且集成密度比DRAM至少高2倍.如今,非易失性存儲器已得到工業界包括Intel,Numonyx,STMicroelectronics,Samsung,IBM及TDK等著名公司的廣泛支持.由于其優良特性及潛在的市場價值,計算機系統產業迫切希望非易失性存儲器能夠作為主存儲器(main memory)大規模投入使用.近年來,一些使用了新型非易失性存儲器(相變存儲器(phase-change memory, PCM)、阻變存儲器(resistive random-access memory, ReRAM)、磁阻存儲器(magnetic random-access memory, MRAM))的固態存儲器已經成為縮小處理器與存儲器之間鴻溝的最為矚目的新一代存儲器件,如圖1所示[1]:

Fig. 1 Architecture of NVM圖1 非易失存儲應用層次
區別于傳統的以塊進行讀寫和擦除操作的flash工藝的非易失存儲器,新型存儲器采用字節型訪問方式.新型存儲器擁有高性能、低能耗和高容量的特性.傳統存儲系統的構建方式不僅不利于發揮非易失性存儲器在性能方面的優勢,還暴露了非易失性存儲器在耐久性(使用壽命)、讀寫不對稱等方面的劣勢[2].如何綜合各類新型存儲的特性,設計高能效的存儲架構,實現可應對大數據、云計算所需求的新型主存系統已經成為工業界和學術界的研究熱點.
關于NVM驗證平臺的研究已經有很多,但大多數都是針對芯片層面或者NVM底層特性的研究.NVsim[3]是一種電路層次的NVM仿真工具,基于存儲單元模型逐步構建存儲芯片;支持在NVM芯片生產前實現性能、能耗以及面積等指標的估計.OpenNVM[4]是一種基于FPGA的NVM驗證平臺,著眼于驗證常見NVM的底層參數,包括讀寫壽命、最大讀寫速度以及一些新穎的編碼方式等.也有基于存儲系統架構級別的仿真工具NVMain[5].
本文提出的基于高性能SOC FPGA陣列的NVM驗證架構,互聯多級FPGA,利用多層次FPGA結構擴展連接多片NVM.依據所提出的驗證架構,設計了基于多層次FPGA的主從式NVM控制器,并完成適用于該架構的硬件原型設計.該架構可以實現測試同類型多片NVM協同工作,也可以進行混合NVM存儲管理方案驗證.
本文的主要貢獻如下:
1) 提出了基于多層FPGA陣列的非易失存儲器架構,實現高帶寬和大容量的同時,也具備良好的擴展性;
2) 搭建了多層FPGA陣列的非易失存儲器驗證平臺,并基于MRAM存儲器完成多層非易失FPGA陣列的存儲器架構原型驗證;
3) 設計了高速大容量MRAM驗證實驗,通過實驗數據顯示,我們所設計的實驗原型的讀寫帶寬達到1.5 GBps以上,平均功耗約1.8 W.通過對比示波器測試結果和SOC FPGA輸出結果,驗證所提出的基于高性能SOC FPGA陣列的NVM控制架構的實用性和數據可靠性.
為了進一步研究新型非易失存儲器的特性,以及如何更好地利用新型非易失存儲器為現代存儲系統服務,各類NVM仿真驗證平臺被相繼提出.NVM仿真驗證平臺主要分為仿真型驗證平臺和帶有硬件原型系統的驗證平臺.
仿真驗證平臺主要有CACTI[6],NVsim以及NVMain等.CACTI是HP實驗室提出的存儲器仿真工具,不僅支持DRAM芯片,也支持NVM芯片的設計,通過內置的存儲器模型提供NVM芯片的讀寫速度、面積以及功耗等基本參數,而且支持速度、面積和功耗的平衡設計.NVsim是類似于CACTI的芯片級仿真器,利用NVM存儲單元的參數(來自ITRS[7]),按照設定的存儲器結構,從subarray到Matrix直到Bank逐層設置參數構建自定義的NVM芯片.NVmain是架構級別的仿真器,支持采用NVM芯片構建存儲系統;不僅支持DRAM、常規的NVM芯片以及混合存儲架構,也支持MLC類型的NVM芯片以及寫壽命評估等功能.
基于硬件原型的驗證平臺主要有OpenNVM.OpenNVM采用FPGA互聯單片NVM,然后將NVM測試邏輯以及NVM控制器部署在FPGA上,實現測試NVM芯片的底層讀寫參數,如讀寫速度、讀寫功耗以及寫入壽命等.然而,鑒于市面上的非易失存儲器多數容量較小而且單片NVM芯片帶寬較小,構建符合真實應用場景的內存或者外存時,需要采用多片NVM芯片構成陣列.因此,本文提出采用多層次FPGA構建NVM陣列,在提供大容量的同時,利用多片NVM并行實現高帶寬;同時也可以驗證混合存儲結構的特性.
基于FPGA陣列的NVM控制器架構如圖2所示,主要包含3個部分:FPGA存儲管理單元、FPGA互連結構以及NVM接口控制器單元.控制器部署在FPGA陣列上,主FPGA和從FPGA通過高速互聯通道進行數據交互.主FPGA主要實現高層次的存儲任務解析、調度及狀態監測等;從FPGA主要實現NVM的底層接口,包括讀寫操作及控制操作等.

Fig. 2 FPGA arrays based architecture of NVM controller圖2 基于FPGA陣列的NVM控制器架構圖
基于FPGA陣列的NVM控制器采用多層陣列互聯結構,具有良好的擴展性.通過改變從FPGA的數量,可以靈活改變存儲容量和存儲帶寬.此外,從FPGA可以通過接入不同的NVM實現混合存儲架構.下面將介紹NVM控制器的結構和工作原理.
主FPGA采用SOC架構的FPGA,如圖3所示,不僅包含硬核處理器(ARM),也包含豐富的FPGA邏輯資源.此新型FPGA架構被主流FPGA廠商支持,如Xilinx的ZYNQ-7000[7]系列以及Altera的Cyclone5和Arria[8]系列等.此外,ARM和FPGA間通過高速互聯總線(如AXI4總線[9])等進行高速數據交互,而且FPGA內部邏輯可以訪問ARM統一編址的存儲空間.FPGA管理控制器不僅用于管理存儲事務,也用來監測訪問帶寬、底層存儲器狀態信息等.FPGA管理控制器接收來自SOC硬核處理器的數據傳輸任務,然后根據從FPGA獲取的狀態信息進行數據讀寫調度.
FPGA管理控制器內置多個FIFO單元,用于處理存儲數據源頭與FPGA高速互聯接口的瞬時帶寬差異.存儲數據源頭有2種實現方式:
1) 采用FPGA邏輯實現模式數據生成器,并且支持SOC硬核控制數據模式以及數據流量等.
2) SOC硬核通過網絡或者其他接口獲取測試數據,存儲在硬核單元和FPGA共享的DDR內存存儲中.FPGA實現DMA模塊,接收來自SOC硬核提供的DMA地址和DMA長度參數,然后從相應DDR內存地址中獲取數據.

Fig. 4 Architecture of slave FPGA NVM controller圖4 從FPGA NVM控制器結構示意圖
FPGA管理控制器還負責管理訪存檢測模塊,用于記錄存儲帶寬,并驗證數據讀寫任務執行的準確性等.訪存監測模塊屬于獨立于FPGA管理控制器內數據傳輸單元的模塊,與FPGA管理控制器的其他模塊并行執行,不影響數據傳輸帶寬.此外,訪存監測模塊提供對接FPGA內置邏輯分析儀和ADC單元的接口,便于監測運行時關鍵標志位的動作狀態以及系統整體的電氣特性,如核電壓、溫度等.
從FPGA的控制器主要實現管理底層NVM接口,NVM物理層面的讀寫和其他控制.如圖4所示,從FPGA控制器主要包含NVM中樞管理模塊、NVM底層監控單元、NVM接口控制器以及高速互聯通道的從機接口.
NVM中樞管理處于從FPGA控制器的核心位置,主要負責接收來自主FPGA的數據讀寫任務,然后采用FIFO緩存數據,解決來自主FPGA的突發高速數據流和NVM接口控制器接口帶寬差異問題:高速互聯通道數據帶寬通常超過400 MBps,甚至達到數 GBps,而單個普通NVM芯片接口的讀寫帶寬為幾十MBps.
接口控制器實現NVM物理層面的數據接口、地址接口以及控制接口.當NVM接口控制器接收來自NVM中樞管理的讀寫請求后,控制FPGA的一系列引腳按照NVM芯片所定義的讀寫時序進行翻轉,從而實現讀寫操作.
基于從FPGA NVM控制器可以單獨完成NVM底層參數的測試,如最大讀寫速度、讀寫功耗以及寫入壽命等.針對最大讀寫速度以及寫入壽命測試,NVM中樞管理控制FPGA內置時鐘管理單元,輸出所需頻率的高精度時鐘,然后控制NVM接口產生相應頻率的接口讀寫時序.同時,底層監控模塊記錄讀寫次數以及對比讀寫數據的正確性.
高速互聯通道的主機接口與從FPGA中的高速互聯從機接口相連接,主要實現傳輸FPGA管理控制分配的數據,同時接收從FPGA的工作狀態等信息.高速互聯通道包含2個層面:物理連接層和傳輸層.
物理連接層根據FPGA引腳支持的類型,可以實現基于并行總線的數據傳輸、基于多路LVDS串行總線數據傳輸以及基于GTX(Xilinx FPGA高速互聯接口)或者SRIO(Altera FPGA高速互聯接口)高速串行總線接口的數據傳輸.
傳輸層根據互聯協議,傳遞數據讀寫地址、讀寫規模以及突發模式等.傳輸層的設計具有較大的靈活性.一方面,可以以較小的邏輯代價實現類似于底層存儲器物理接口的訪問協議,此時,從FPGA可以看作虛擬化的存儲器;另一方面,當需要驗證復雜的存儲管理策略以及模擬網絡化的分布式存儲時,主從FPGA的高速互聯接口傳輸層可以建立基于數據幀的復雜協議.
本文基于第2節所描述的NVM控制器設計了硬件驗證原型.驗證原型由包含Zynq SOC處理器的主FPGA板卡(底板)及包含MRAM存儲器的從FPGA板卡(子板)組成.其中,主FPGA板卡包括Zynq處理器芯片、DDR存儲器以及4個存儲板DIMM插槽,存儲板DIMM插槽可同時接入4塊從FPGA板卡,4塊從FPGA板卡可并行訪問;每塊從FPGA板卡,由1片Spartan6 FPGA控制芯片以及12片并行、共享地址線的MRAM組成.硬件原型系統如圖5所示:

Fig. 5 Architecture of hardware prototype圖5 硬件原型實物圖
電源系統有多個電源軌組成.不同的電源轉換處都預留測試點,便于測試不同模塊的功耗,用于進一步分析NVM控制器的功耗分布.例如,子板總電源功耗P為測試點處的電壓V乘以測試點處的電流I(如圖6所示).

Fig. 6 Architecture of power monitor圖6 功耗測試示意圖
主從FPGA的互聯電路主要采用差分布線方式.為了同時滿足并行總線接口和串行LVDS高速接口以及確保高速通信下的數據準確性,我們采用松耦合的差分布線方式,配合接地信號線,確保參考平面的完整性.互聯接口處FPGA的IO選擇FAST模式,設定IO阻抗與互聯線阻抗一致,實現阻抗匹配;在邏輯層面,采用輸入輸出引腳插入寄存器的方式,以流水線的策略降低后級邏輯的時序壓力,確保FPGA內邏輯的高速運行.
為提升原型系統的靈活性以及通用性,本文在Zynq SOC處理器中部署Linux系統.通過Linux系統的終端與通用計算機互聯,實現通用計算機控制測試流程,并顯示測試結果的目標.
此外,本文設計了運行于Linux系統的NVM控制器模塊的接口程序,抽象NVM控制器的讀寫操作,支持配置讀寫操作參數和獲取讀寫狀態,如讀寫地址、讀寫規模、讀寫完成狀態以及數據校準等,為驗證復雜的訪存操作模式提供支撐.
基于硬件原型和所提出的NVM控制器架構,本文設計了針對MRAM陣列的高帶寬讀寫驗證實驗.實驗主要包含2部分:采用順序方式的固定數據讀寫測試以及基于類IOZONE的可變規模讀寫測試.
在讀寫測試過程中,通用計算機通過終端與Linux系統通信,選擇需要執行的測試程序,并在讀寫測試結束時顯示讀寫數據大小以及NVM控制器讀寫運行的時鐘數.與此同時,示波器用于監測讀寫起始和結束的標志信號,獲取讀寫運行時間;高精度數字萬用表用于監測從FPGA板卡電源處的電流和電壓,獲取系統的運行功耗.
具體方案測試流程如圖7所示.讀寫速率測試邏輯模塊作為測試核心,由讀寫測試控制模塊、讀寫測試結果顯示模塊及測試數據產生模塊3部分構成.
1) 讀寫測試控制模塊負責接收用戶配置程序的開啟關閉指令,傳遞種子數據至數據產生模塊以及獲取測試結果傳遞給讀寫測試結果顯示模塊.
2) 數據產生模塊用于根據種子數據產生固定數據量的數據塊.在寫速率測試時,數據通過FPGA高速互聯模塊傳輸至MRAM存儲陣列;在讀速率測試時產生參考數據,同FPGA高速互聯模塊讀取的數據進行對比,驗證讀速率測試中的數據有效性.
3) 讀寫測試結果顯示模塊用于將讀寫操作過程以高低電平的方式呈現在讀寫測試探測點上.

Fig. 7 Flow chart of read and write test on MRAM圖7 MRAM讀寫測試流程圖
讀寫速度測試方面,結合從FPGA的監測單元獲取到讀寫速度以及表1[10].底層MRAM的讀寫頻率為25 MHz,位寬為16 b,48片MRAM的突發讀寫帶寬為2.4 GBps.
主FPGA內置統計單元和示波器測量結果顯示,順序讀操作的數據量為240 KB,開始與結束的時間間隔約為114 μs;順序寫操作的數據量為240 KB,開始與結束時間間隔為126 μs,經計算,讀速率約為2.055 GBps,寫速率約為1.905 GBps,我們所設計的NVM控制器讀寫帶寬可以超過1.8 GBps,達到理論帶寬2.4 GBps的75%以上.

Table 1 Characteristics of MRAM表1 MRAM芯片參數表
功耗測試結果顯示(如圖8所示),包含MRAM的從FPGA系統的總功耗約為7.4 W,每個從FPGA板卡的平均功耗約為1.8 W.

Fig. 8 Power consumption test of MRAM圖8 MRAM功耗測試示意圖

Fig. 9 Results of readwrite test on IOZONE like benchmark圖9 類IOZONE讀寫速率測試結果
在類IOZONE的讀寫驗證實驗中(如圖9所示),讀寫數據的大小范圍為24~1 024 KB,讀速度基本達到2.0 GBps,而且隨著數據規模的增大,讀速度略微提升;寫速度基本達到1.9 GBps,寫入速度隨數據規模的變化趨勢與讀操作類似.NVM控制器實現數據讀寫操作時,主從FPGA間首先要進行地址建立,然后再進行大規模的數據交換.隨著數據塊的增大,順序讀寫時的地址建立時間在整體讀寫時間中所占的比例逐漸下降.
新型非易失存儲設備的出現為傳統存儲系統提供了變革和發展的契機.其不同于傳統存儲器的非易失、低功耗、高密度特性使其具有廣闊的應用前景.其低功耗特性使得日益增長的存儲系統能耗獲得改良;高密度特性使得存儲系統的擴展變得容易,特別是主存空間的擴大不再成為瓶頸.
為充分利用新型非易失存儲器的特性,構建高帶寬大容量的存儲器,本文提出的基于高性能SOC FPGA陣列的NVM驗證架構,互聯多級FPGA,利用多層次FPGA結構擴展鏈接多片NVM.依據所提出的驗證架構,設計了基于多層次FPGA的主從式NVM控制器,并完成適用于該架構的硬件原型設計.該架構可以實現測試同類型多片NVM協同工作,也可以進行混合NVM存儲管理方案驗證.
[1]Cai Xiaojun, Research on the key technologies of high energy-efficient hybrid main memory based on non-volatile memory[D]. Ji’nan: Shandong University, 2016 (in Chinese)(蔡曉軍. 基于非易失存儲的高能效混合主存關鍵技術研究[D]. 濟南: 山東大學, 2016)
[2]Shu Jiwu, Lu Youyou, Zhang Jiacheng, et al. Research progresses on memory system based on non-volatile memory[J]. Science & Technology Review, 2016, 34(14): 86-94 (in Chinese)(舒繼武, 陸游游, 張佳程, 等. 基于非易失性存儲器的存儲系統技術研究進展[J]. 科技導報, 2016, 34(14): 86-94)
[3]Dong X, Xu C, Jouppi N, et al. NVSim: A circuit-level performance, energy, and area model for emerging non-volatile memory[G]. Emerging Memory Technologies. New York: Springer, 2014: 15-50
[4]Zhang J, Park G, Shihab M M, et al. OpenNVM: An open-sourced FPGA-based NVM controller for low level memory characterization[C] //Proc of the 33rd IEEE Int Conf on Computer Design. Piscataway, NJ: IEEE, 2015: 666-673
[5]Poremba M, Zhang T, Xie Y. Nvmain 2.0: A user-friendly memory simulator to model (non-) volatile memory systems[J]. IEEE Computer Architecture Letters, 2015, 14(2): 140-143
[6]Wilton S J E, Jouppi N P. CACTI: An enhanced cache access and cycle time model[J]. IEEE Journal of Solid-State Circuits, 1996, 31(5): 677-688
[7]Crockett L H, Elliot R A, Enderwitz M A, et al. The Zynq Book: Embedded Processing with the Arm Cortex-A9 on the Xilinx Zynq-7000 All Programmable Soc[M]. Glasgow: Strathclyde Academic Media, 2014.
[8]Tyhach J, Hutton M, Atsatt S, et al. ArriaTM10 device architecture[C] //Proc of Custom Integrated Circuits Conf. Piscataway, NJ: IEEE, 2015: 1-8
[9]Azarkhish E, Rossi D, Loi I, et al. High performance AXI-4.0 based interconnect for extensible smart memory cubes[C] //Proc of Design, Automation & Test in Europe Conf & Exhibition. Piscataway, NJ: IEEE, 2015: 1317-1322
[10]DeBrosse J, Maffitt T, Nakamura Y, et al. A fully-functional 90nm 8Mb STT MRAM demonstrator featuring trimmed, reference cell-based sensing[C] //Proc of Custom Integrated Circuits Conf. Piscataway, NJ: IEEE, 2015: 1-3