馮志華,安東博+,鄢軍霞,李文佳,萬(wàn) 星
(1.中國(guó)航天科工集團(tuán)第二研究院706所,北京 100854;2.武漢軟件工程職業(yè)學(xué)院 信息學(xué)院,湖北 武漢 430205)
隨著大數(shù)據(jù)與云計(jì)算的發(fā)展以及存儲(chǔ)性能和計(jì)算性能之間的差距在不斷擴(kuò)大,存儲(chǔ)系統(tǒng)的性能逐漸成為制約信息系統(tǒng)發(fā)展的瓶頸。而固態(tài)盤(pán)具有隨機(jī)訪問(wèn)性能好、體積小、功耗低等突出優(yōu)點(diǎn),且容量逐步上升,單盤(pán)容量可達(dá)TB級(jí),正逐漸取代傳統(tǒng)磁盤(pán)成為應(yīng)用于存儲(chǔ)系統(tǒng)的主要存儲(chǔ)器件。
固態(tài)盤(pán)主要由控制器和存儲(chǔ)芯片構(gòu)成,控制器算法的好壞,對(duì)固態(tài)盤(pán)性能影響很大。在對(duì)固態(tài)盤(pán)進(jìn)行架構(gòu)與控制算法的研究與優(yōu)化時(shí),直接在固態(tài)盤(pán)上實(shí)現(xiàn)設(shè)計(jì)構(gòu)想需要花費(fèi)大量的時(shí)間成本和人力物力成本。而選擇在固態(tài)盤(pán)模擬器上對(duì)設(shè)計(jì)進(jìn)行驗(yàn)證,不但能夠快速得到功能、性能等方面的估測(cè)數(shù)據(jù),加快設(shè)計(jì)迭代周期,還有助于設(shè)計(jì)者更好的評(píng)估設(shè)計(jì)改動(dòng)對(duì)固態(tài)盤(pán)各部分影響,并基于驗(yàn)證結(jié)果進(jìn)一步改進(jìn)設(shè)計(jì)方案。
文獻(xiàn)[1-4]分別提出了4種開(kāi)源固態(tài)盤(pán)模擬器,都對(duì)固態(tài)盤(pán)的一些重要組成部分(如閃存、內(nèi)存等)與功能模型(如延遲模型等)進(jìn)行了模擬,但在架構(gòu)組成和模型設(shè)計(jì)等方面存在差異,這也導(dǎo)致其對(duì)固態(tài)盤(pán)功能與性能的模擬精度不盡相同。為評(píng)估各固態(tài)盤(pán)模擬器的功能與性能,選用合適的固態(tài)盤(pán)模擬器對(duì)固態(tài)盤(pán)的設(shè)計(jì)進(jìn)行評(píng)估與驗(yàn)證,本文對(duì)幾種典型固態(tài)盤(pán)模擬器的架構(gòu)組成與功能進(jìn)行分析,并選取實(shí)際固態(tài)盤(pán)與各固態(tài)盤(pán)模擬器在同等測(cè)試環(huán)境下進(jìn)行性能比對(duì)實(shí)驗(yàn)。
固態(tài)盤(pán)是一個(gè)包括硬件與軟件的嵌入式系統(tǒng)。在開(kāi)發(fā)設(shè)計(jì)固態(tài)盤(pán)產(chǎn)品時(shí),使用固態(tài)盤(pán)模擬器,能夠提前驗(yàn)證設(shè)計(jì)的硬件結(jié)構(gòu)與軟件算法,降低開(kāi)發(fā)成本,縮短研發(fā)周期。
固態(tài)盤(pán)模擬器需要對(duì)固態(tài)盤(pán)的硬件行為(包括固態(tài)盤(pán)內(nèi)部通道、閃存顆粒等)、軟件算法(包括地址映射、磨損均衡及垃圾回收等)進(jìn)行模擬。而軟件算法與真實(shí)的固態(tài)盤(pán)系統(tǒng)中的軟件類似,所以固態(tài)盤(pán)模擬器的重點(diǎn)在于對(duì)固態(tài)盤(pán)硬件行為的模擬。其中作為固態(tài)盤(pán)硬件的關(guān)鍵部分,閃存是固態(tài)盤(pán)模擬器需要模擬的核心點(diǎn)。模擬器通過(guò)對(duì)固態(tài)盤(pán)設(shè)計(jì)的硬件結(jié)構(gòu)和固件算法的模擬,可以對(duì)固態(tài)盤(pán)設(shè)計(jì)的性能(包括順序/隨機(jī)讀寫(xiě)速率及延遲等)與能耗指標(biāo)進(jìn)行模擬測(cè)試,從而對(duì)固態(tài)盤(pán)設(shè)計(jì)工作做出指導(dǎo)與驗(yàn)證。
固態(tài)盤(pán)模擬器主要由主機(jī)接口、數(shù)據(jù)緩存、閃存轉(zhuǎn)換層(flash translation layer,F(xiàn)TL)、閃存等部分組成,本文從模擬器的基本組成以及延遲模型等部分對(duì)固態(tài)盤(pán)模擬器進(jìn)行分析。
主機(jī)接口實(shí)現(xiàn)與主機(jī)通信的協(xié)議邏輯,如SATA、NVMe等。目前大多數(shù)固態(tài)盤(pán)使用SATA協(xié)議接口,其中原生命令隊(duì)列(native command queuing,NCQ)使固態(tài)盤(pán)能夠優(yōu)化工作負(fù)載執(zhí)行順序,通過(guò)對(duì)內(nèi)部隊(duì)列中的命令進(jìn)行重新排序來(lái)提高執(zhí)行效率[5]。NVMe協(xié)議突破SATA協(xié)議瓶頸,精簡(jiǎn)了指令調(diào)用方式,減少對(duì)寄存器的訪問(wèn)次數(shù),且最大支持64 K隊(duì)列深度,充分利用PCIe通道性能,具有低延遲、高性能等特點(diǎn)。
數(shù)據(jù)緩存對(duì)固態(tài)盤(pán)整體性能的提升有著較大的影響。數(shù)據(jù)緩存負(fù)責(zé)服務(wù)來(lái)自上層的請(qǐng)求,即首先在數(shù)據(jù)緩存區(qū)搜索新收到請(qǐng)求的目標(biāo)數(shù)據(jù)。若收到讀請(qǐng)求,則先在緩存區(qū)搜索目標(biāo)數(shù)據(jù),然后讀出該數(shù)據(jù)并響應(yīng)讀請(qǐng)求。若收到寫(xiě)請(qǐng)求,在緩存區(qū)搜索到該請(qǐng)求數(shù)據(jù),則直接將本次請(qǐng)求數(shù)據(jù)寫(xiě)入緩存區(qū)替換之前的舊數(shù)據(jù)。若在緩存區(qū)未搜索到請(qǐng)求的數(shù)據(jù),則需要進(jìn)一步去訪問(wèn)閃存。
閃存轉(zhuǎn)換層負(fù)責(zé)模擬固態(tài)盤(pán)閃存轉(zhuǎn)換層中包括地址映射、垃圾回收及磨損均衡等在內(nèi)的各種算法。地址映射完成邏輯地址空間到物理地址空間的映射,包括塊映射、頁(yè)映射和混合映射等。垃圾回收完成對(duì)某些閃存塊中的有效數(shù)據(jù)的重寫(xiě)與無(wú)效數(shù)據(jù)的擦除,從而得到新的可用的閃存塊。磨損均衡負(fù)責(zé)使固態(tài)盤(pán)中每個(gè)閃存塊的磨損(擦除)次數(shù)保持平衡,包括動(dòng)態(tài)磨損均衡和靜態(tài)磨損均衡兩種算法。
閃存轉(zhuǎn)換層算法的優(yōu)劣與否,直接決定了固態(tài)盤(pán)在性能、可靠性、耐用性等方面的優(yōu)劣,是固態(tài)盤(pán)固件的核心部分。
閃存將信息存儲(chǔ)在由浮柵晶體管制成的存儲(chǔ)單元中,出于成本考慮,數(shù)據(jù)存儲(chǔ)應(yīng)用主要采用NAND閃存。固態(tài)盤(pán)的工作原理基于閃存特性,如閃存寫(xiě)操作前必須先擦除,需要有垃圾回收(garbage collection,GC)操作;閃存擦寫(xiě)次數(shù)超過(guò)一定閾值后,內(nèi)部存儲(chǔ)的數(shù)據(jù)變得不可靠,需要有磨損均衡(wear leveling,WL)操作等。閃存由大量的存儲(chǔ)單元按照一定的組織結(jié)構(gòu)組成的:每個(gè)閃存芯片(package)由若干個(gè)共享同一通道的裸片(Die)組成,每個(gè)裸片有若干個(gè)分組(Plane),每個(gè)分組中有若干個(gè)塊(Block),同時(shí)也有獨(dú)立的寄存器用以緩存數(shù)據(jù)。每個(gè)塊包括若干個(gè)頁(yè)(Page),是擦除操作的最小操作單位,一個(gè)塊的擦除次數(shù)有限,且擦除操作會(huì)帶來(lái)延遲。頁(yè)是寫(xiě)操作的最小操作單位,可在模擬器中用來(lái)計(jì)算讀寫(xiě)操作延遲。
在ONFI(open NAND flash interface)/Toggle協(xié)議下,閃存支持基本的讀、寫(xiě)以及擦除命令,同時(shí)提供了數(shù)據(jù)遷移、多分組操作等高級(jí)命令,優(yōu)化閃存的訪問(wèn)速度。
請(qǐng)求延遲是評(píng)估固態(tài)盤(pán)性能好壞的一個(gè)重要指標(biāo)。從主機(jī)端發(fā)起請(qǐng)求到設(shè)備端響應(yīng)為止,一個(gè)請(qǐng)求的延遲可分為以下幾部分(以NVMe接口固態(tài)盤(pán)讀請(qǐng)求為例):①主機(jī)將命令寫(xiě)到提交隊(duì)列;②PCIe總線傳輸延遲;③閃存轉(zhuǎn)換層的地址轉(zhuǎn)換以及任務(wù)調(diào)度;④命令及地址發(fā)送給閃存芯片;⑤閃存讀數(shù)據(jù);⑥數(shù)據(jù)通過(guò)ONFI傳輸至固態(tài)盤(pán)固件;⑦數(shù)據(jù)通過(guò)PCIe總線傳輸至主機(jī)。
其中各部分延遲不盡相同,由于相對(duì)于其它部分來(lái)說(shuō),某些部分延遲很小(如處理器的時(shí)間開(kāi)銷),所以許多模擬器可能這些部分的延遲忽略不計(jì),不同的延遲模型也是影響固態(tài)盤(pán)模擬器準(zhǔn)確度的一個(gè)重要原因。
本文選取了Flashsim、SSDsim、Amber和MQSim這4個(gè)典型開(kāi)源固態(tài)盤(pán)模擬器,根據(jù)固態(tài)盤(pán)模擬器基本組成,從主機(jī)接口、數(shù)據(jù)緩存、閃存轉(zhuǎn)換層、閃存以及延遲模型等方面對(duì)各個(gè)固態(tài)盤(pán)模擬器分別進(jìn)行分析。
Flashsim[1]是事件驅(qū)動(dòng)的基于C++的固態(tài)盤(pán)模擬器,其架構(gòu)如圖1所示。硬件部分由SSD模塊、控制器、內(nèi)存、閃存芯片等部分組成。SSD模塊用于例化模擬器并對(duì)外提供調(diào)用接口;控制器負(fù)責(zé)對(duì)接軟件與硬件,對(duì)事件做出處理并計(jì)算所需時(shí)間;內(nèi)存主要用于數(shù)據(jù)緩存,計(jì)算讀寫(xiě)RAM的延遲;閃存芯片則模擬真實(shí)的閃存結(jié)構(gòu),包括分組、裸片、塊、頁(yè)等結(jié)構(gòu)。軟件部分即閃存轉(zhuǎn)換層,實(shí)現(xiàn)了地址映射、垃圾回收、磨損均衡以及RAID算法,同時(shí)定義了Event和Address兩個(gè)類,用于在各層之間傳輸操作信息和記錄狀態(tài)。
圖1 Flashsim模擬器架構(gòu)
Flashsim中的事件處理流程如下:SSD模塊接收到事件,將其傳遞給控制器后,F(xiàn)TL將該多頁(yè)請(qǐng)求轉(zhuǎn)換為一個(gè)事件列表,并把列表中的事件發(fā)送到對(duì)應(yīng)的總線通道,總線通道處理分發(fā)各個(gè)請(qǐng)求。
(1)主機(jī)接口
Flashsim中并沒(méi)有提供SATA、NVMe等主機(jī)接口,只通過(guò)SSD模塊來(lái)例化整個(gè)模擬器,并提供對(duì)外的調(diào)用接口,用于建立事件,獲取統(tǒng)計(jì)信息等操作。
(2)數(shù)據(jù)緩存
控制器在將數(shù)據(jù)傳輸?shù)娇偩€之前會(huì)將其在內(nèi)存中緩存,RAM模塊負(fù)責(zé)計(jì)算數(shù)據(jù)在內(nèi)存中的讀寫(xiě)延遲。
(3)閃存轉(zhuǎn)換層
Flashsim的閃存轉(zhuǎn)換層提供地址映射、垃圾回收以及磨損均衡算法,支持固態(tài)盤(pán)RAID模擬操作,同時(shí)定義了Event和Address兩個(gè)類,用于在各層之間傳輸操作信息和記錄狀態(tài)。Flashsim的FTL算法支持DFTL、FAST、BAST以及Page-level等。
(4)閃存
Flashsim閃存芯片模型模擬真實(shí)的閃存結(jié)構(gòu),包括分組、裸片、塊、頁(yè)等結(jié)構(gòu)。支持對(duì)閃存芯片的讀、寫(xiě)、擦除操作所需的時(shí)間進(jìn)行設(shè)置,以模擬實(shí)際閃存芯片的讀、寫(xiě)、擦除操作延遲。同時(shí)支持對(duì)閃存芯片在不同狀態(tài)之間轉(zhuǎn)換時(shí)的電流、電壓的模擬,用以估算閃存每次讀、寫(xiě)、擦除操作的能耗。
(5)延遲模型
Flashsim中延遲模型考慮了內(nèi)存讀寫(xiě)延遲、總線傳輸延遲和閃存讀、寫(xiě)、擦除等操作延遲,忽略了處理器的時(shí)間開(kāi)銷。
SSDsim的架構(gòu)如圖2所示,結(jié)構(gòu)分為數(shù)據(jù)緩存層、閃存轉(zhuǎn)換層和硬件行為模擬層,能夠?qū)虘B(tài)盤(pán)的高級(jí)命令、時(shí)間延遲和能耗進(jìn)行模擬。
圖2 SSDsim模擬器架構(gòu)
SSDsim的基本操作流程如下:在執(zhí)行初始化函數(shù),完成從參數(shù)文件中讀入固態(tài)盤(pán)的參數(shù)設(shè)置等初始化操作后,開(kāi)始接收外部請(qǐng)求。外部請(qǐng)求來(lái)臨,在數(shù)據(jù)緩存區(qū)尋找目標(biāo)數(shù)據(jù)或進(jìn)一步訪問(wèn)閃存。訪問(wèn)閃存時(shí),外部請(qǐng)求被分為獨(dú)立的子請(qǐng)求,掛載到相應(yīng)的子請(qǐng)求隊(duì)列中進(jìn)行處理。所有請(qǐng)求完成后輸出此外部請(qǐng)求模擬結(jié)果。
(1)主機(jī)接口
SSDsim不提供SATA、NVMe等主機(jī)接口,通過(guò)調(diào)用get_request函數(shù),根據(jù)SSDsim的系統(tǒng)時(shí)間、當(dāng)前請(qǐng)求隊(duì)列長(zhǎng)度以及外部請(qǐng)求到達(dá)時(shí)間做出判斷,將外部請(qǐng)求讀入到SSDsim中。
(2)數(shù)據(jù)緩存
在SSDsim架構(gòu)中,設(shè)置了數(shù)據(jù)緩存層來(lái)模擬固態(tài)盤(pán)中緩存區(qū)域?qū)φ?qǐng)求的服務(wù)過(guò)程。并且使用一個(gè)結(jié)構(gòu)體表示數(shù)據(jù)緩存區(qū)的最小單位,并根據(jù)緩存管理算法(如最近最少使用算法、最不經(jīng)常使用算法等)進(jìn)行排序。
(3)閃存轉(zhuǎn)換層
SSDsim的閃存轉(zhuǎn)換層模擬固態(tài)盤(pán)地址映射、垃圾回收、磨損均衡等算法。其中地址映射包括頁(yè)映射、塊映射、混合映射、DFTL等,垃圾回收算法采用貪婪算法等,磨損均衡算法包括靜態(tài)磨損均衡與動(dòng)態(tài)磨損均衡。
(4)閃存
SSDsim遵循ONFI2.2協(xié)議,支持基本的讀、寫(xiě)、擦除命令與數(shù)據(jù)遷移、多分組操作、交錯(cuò)操作等命令。除正常閃存的讀、寫(xiě)、擦除延遲和不同狀態(tài)轉(zhuǎn)換下電氣參數(shù)外,定義了模擬固態(tài)盤(pán)的使用程度的老化參數(shù)(age),用于真實(shí)模擬實(shí)際固態(tài)盤(pán)使用場(chǎng)景。
(5)延遲模型
SSDsim的延遲模型包括閃存的讀、寫(xiě)、擦除操作延遲和內(nèi)存的平均讀寫(xiě)延遲,忽略了處理器的時(shí)間開(kāi)銷。
Amber[2]是SimpleSSD[3]的第二代改進(jìn)版本,相對(duì)于1.x版本來(lái)說(shuō),增加了SATA、UFS(universal flash sto-rage)、OCSSD(open-channel SSD)主機(jī)接口模型,支持FTL頁(yè)級(jí)映射,建立了處理器以及內(nèi)存的能耗模型,能夠動(dòng)態(tài)地更為精確地模擬固態(tài)盤(pán)能耗性能。同時(shí)Amber中模擬了多個(gè)ARM8指令集架構(gòu)的嵌入式CPU,用于實(shí)現(xiàn)固態(tài)盤(pán)固件的不同功能。Amber的架構(gòu)框架如圖3所示。
圖3 Amber模擬器架構(gòu)
(1)主機(jī)接口
Amber提供SATA、NVMe主機(jī)接口以及UFS、OCSSD模型,支持SATA原生命令隊(duì)列、NVMe命名空間(Namespace)等功能,實(shí)現(xiàn)了DMA以仿真數(shù)據(jù)與主機(jī)內(nèi)存間的傳輸。
(2)數(shù)據(jù)緩存
Amber在提供DRAM作為緩存外,實(shí)現(xiàn)了“預(yù)讀”的緩存管理算法,即根據(jù)DRAM中多個(gè)請(qǐng)求的地址與長(zhǎng)度做出判斷,預(yù)先將flash中的數(shù)據(jù)讀到緩存中,提高固態(tài)盤(pán)的讀性能。
(3)閃存轉(zhuǎn)換層
Amber在SimpleSSD1.x版本支持混合映射的基礎(chǔ)上增加了頁(yè)級(jí)映射,并提供可用的垃圾回收、磨損均衡和任務(wù)調(diào)度算法。
(4)閃存
Amber的閃存模型也采用了目前實(shí)際固態(tài)盤(pán)中使用的多通道、多路徑架構(gòu),即總線上掛載多通道負(fù)責(zé)任務(wù)調(diào)度。外部請(qǐng)求被分為多個(gè)子請(qǐng)求,通過(guò)多通道、多路徑架構(gòu)完成后,向主機(jī)返回完成信息。
(5)延遲模型
Amber可以在用戶級(jí)執(zhí)行FIO測(cè)試,實(shí)現(xiàn)了包括主機(jī)接口協(xié)議處理、處理器延遲、FTL算法以及閃存等在內(nèi)的延遲模型。
MQSim[4]提供了“穩(wěn)定狀態(tài)”的固態(tài)盤(pán)性能模擬與端到端延遲模型。所謂“穩(wěn)定狀態(tài)”是相對(duì)于理想狀態(tài)而言的(如,某些模擬器在進(jìn)行固態(tài)盤(pán)模擬測(cè)試時(shí),不能覆蓋固態(tài)盤(pán)存儲(chǔ)容量將要寫(xiě)滿的情況,此時(shí)所測(cè)固態(tài)盤(pán)性能是在理想情況下的,不能代表固態(tài)盤(pán)整個(gè)生命周期的性能)。MQSim對(duì)固態(tài)盤(pán)讀寫(xiě)操作的過(guò)程進(jìn)行了詳細(xì)分析,結(jié)合目前固態(tài)盤(pán)技術(shù)現(xiàn)狀(如新型閃存3D Xpoint技術(shù)等),更新了模擬器的延遲模型。MQSim模擬器架構(gòu)框架如圖4所示。
圖4 MQSim模擬器架構(gòu)
(1)主機(jī)接口
MQSim支持SATA、NVMe主機(jī)接口。在主機(jī)接口部分設(shè)置了獲取請(qǐng)求單元(request fetch unit)以獲取和調(diào)度來(lái)自不同隊(duì)列的不同I/O請(qǐng)求。同時(shí)向用戶提供QueueFetchSize參數(shù),該參數(shù)定義了固態(tài)盤(pán)模擬器所能同時(shí)服務(wù)的來(lái)自每個(gè)提交隊(duì)列(submission queue)的最大請(qǐng)求數(shù)。
(2)數(shù)據(jù)緩存
MQSim實(shí)現(xiàn)了DRAM作為緩存,并模擬了最近最少使用(least-recently-used)算法。DRAM可被配置為最近寫(xiě)數(shù)據(jù)(默認(rèn)情況下)、最近讀數(shù)據(jù)和最近讀寫(xiě)數(shù)據(jù)3種模式。同時(shí)實(shí)現(xiàn)了考慮到并發(fā)訪問(wèn)和命令延遲的DRAM訪問(wèn)模型。
(3)閃存轉(zhuǎn)換層
MQSim結(jié)合當(dāng)前學(xué)術(shù)界較為前沿的算法與策略,實(shí)現(xiàn)了地址映射、垃圾回收、磨損均衡以及任務(wù)調(diào)度等功能。閃存轉(zhuǎn)換層支持多隊(duì)列請(qǐng)求處理,提高服務(wù)質(zhì)量(quality of service,QoS)與性能表現(xiàn)。
同時(shí),為真實(shí)模擬固態(tài)盤(pán)實(shí)際使用情況下的性能,MQSim模擬器在進(jìn)行實(shí)際的模擬之前會(huì)執(zhí)行“預(yù)熱”操作,以使模擬器達(dá)到固態(tài)盤(pán)真實(shí)的“穩(wěn)定”狀態(tài)。
(4)閃存
MQSim支持裸片級(jí)和分組級(jí)的并行I/O調(diào)度算法,能夠模擬SLC、MLC和TLC這3種類型的閃存顆粒。
(5)延遲模型
MQSim在考慮閃存操作和閃存內(nèi)部數(shù)據(jù)傳輸延遲之外,分固定延遲和可變延遲兩部分模擬了固態(tài)盤(pán)端到端的延遲。固定延遲包括請(qǐng)求命令、用戶數(shù)據(jù)和請(qǐng)求完成信息在PCIe總線上傳輸時(shí)間與控制器中的微處理器執(zhí)行FTL操作的時(shí)間??勺冄舆t主要指由于對(duì)緩存映射表和DRAM寫(xiě)緩存的競(jìng)爭(zhēng)所導(dǎo)致的FTL處理時(shí)間開(kāi)銷,包括從數(shù)據(jù)緩存中讀/寫(xiě)數(shù)據(jù)的時(shí)間和從flash中取映射表的時(shí)間。
綜合以上對(duì)各個(gè)模擬器的分析與總結(jié),本文從主機(jī)接口、關(guān)鍵組件、閃存轉(zhuǎn)換層、延遲模型和能耗模型等方面對(duì)各模擬器進(jìn)行功能對(duì)比。
Flashsim是由來(lái)自賓夕法尼亞大學(xué)的團(tuán)隊(duì)使用單線程的C++編寫(xiě)的。該模擬器支持包括頁(yè)級(jí)映射在內(nèi)的多種映射算法,并在最新版本中增加了RAID功能,但其硬件模型較為簡(jiǎn)單,未能實(shí)現(xiàn)閃存高級(jí)命令與能耗的模擬。
SSDsim是由華中科技大學(xué)的團(tuán)隊(duì)開(kāi)發(fā),詳細(xì)描述了閃存內(nèi)部通道級(jí)、分組級(jí)以及裸片級(jí)并行訪問(wèn)機(jī)制,提供主流的緩存管理算法與FTL算法等,支持閃存數(shù)據(jù)遷移、多分組操作、交錯(cuò)操作等高級(jí)命令模擬,建立了閃存能耗模型。其不足之處在于模擬器并未提供主機(jī)端接口,僅用外部請(qǐng)求調(diào)用函數(shù)模擬固態(tài)盤(pán)請(qǐng)求過(guò)程。
Amber是SimpleSSD的第二代版本,支持SATA、UFS、NVMe、OCSSD主機(jī)接口模型,建立了處理器以及內(nèi)存的能耗模型,能夠更精確地動(dòng)態(tài)模擬固態(tài)盤(pán)能耗性能。同時(shí)Amber中模擬了多個(gè)ARM8指令集架構(gòu)的嵌入式CPU,用于實(shí)現(xiàn)固態(tài)盤(pán)固件的不同功能。但模擬器中FTL算法功能并不完善,與實(shí)際固態(tài)盤(pán)仍有差距。
MQSim是由卡內(nèi)基梅隆大學(xué)的團(tuán)隊(duì)開(kāi)發(fā),分別根據(jù)讀寫(xiě)命令處理過(guò)程對(duì)固態(tài)盤(pán)的延遲模型進(jìn)行了詳細(xì)分析與研究。指出在新型閃存(如3D XPoint[6,7])中,固態(tài)盤(pán)延遲模型較之以往發(fā)生變化,對(duì)固態(tài)盤(pán)的端到端延遲模型做出了完善與優(yōu)化。類似SSDsim中老化參數(shù)(age)的設(shè)置,MQSim實(shí)現(xiàn)了“穩(wěn)定狀態(tài)”下對(duì)固態(tài)盤(pán)的模擬工作。但MQSim中并未使用真實(shí)數(shù)據(jù)來(lái)模擬固態(tài)盤(pán)數(shù)據(jù)的傳輸過(guò)程。
現(xiàn)從模擬器的結(jié)構(gòu)與功能角度出發(fā),選取主機(jī)接口、閃存轉(zhuǎn)換層、延遲模型以及能耗模型等方面對(duì)上文提到的4個(gè)模擬器進(jìn)行了綜合分析與對(duì)比,具體結(jié)果見(jiàn)表1。
表1 模擬器結(jié)構(gòu)功能對(duì)比
本文選取SATA固態(tài)盤(pán)作為實(shí)際比對(duì)盤(pán),按照該固態(tài)盤(pán)的實(shí)際參數(shù)對(duì)各模擬器進(jìn)行配置。對(duì)固態(tài)盤(pán)中關(guān)鍵的參數(shù)進(jìn)行了配置,其余參數(shù)皆為固定,且各模擬器保持一致。實(shí)際固態(tài)盤(pán)的關(guān)鍵配置參數(shù)見(jiàn)表2。
按照以上參數(shù)完成模擬器配置后,對(duì)實(shí)際固態(tài)盤(pán)與各模擬器進(jìn)行測(cè)試。測(cè)試內(nèi)容為固定大小的隨機(jī)讀寫(xiě)請(qǐng)求,記錄各請(qǐng)求的響應(yīng)延遲時(shí)間。測(cè)試環(huán)境參數(shù)見(jiàn)表3。
根據(jù)3.1節(jié)內(nèi)容完成實(shí)際固態(tài)盤(pán)和各模擬器的性能測(cè)試,其隨機(jī)讀/寫(xiě)延遲性能測(cè)試結(jié)果如圖5、圖6所示。
圖5 隨機(jī)讀延遲
可以看出各模擬器與實(shí)際固態(tài)盤(pán)的延遲時(shí)間曲線表現(xiàn)出相似的變化趨勢(shì),說(shuō)明各模擬器能夠有效模擬固態(tài)盤(pán)的讀/寫(xiě)延遲性能,但精度不盡相同。
其中Amber與MQSim所測(cè)數(shù)據(jù)與實(shí)際固態(tài)盤(pán)性能比較吻合,而Flashsim較真實(shí)固態(tài)盤(pán)延遲數(shù)據(jù)偏高,SSDsim則相反。分析其原因可能是因?yàn)镕lashsim受限于簡(jiǎn)化的硬件模型,未對(duì)閃存內(nèi)部并行模型作充分模擬,且缺少任務(wù)調(diào)度處理,導(dǎo)致讀寫(xiě)延遲提高。而SSDsim在進(jìn)行時(shí)間模型建立時(shí),忽略了包括處理器在內(nèi)的部分延遲,對(duì)內(nèi)存的讀寫(xiě)延遲取平均值,這導(dǎo)致了SSDsim的模擬延遲低于實(shí)際固態(tài)盤(pán)數(shù)據(jù)。
表2 SATA固態(tài)盤(pán)參數(shù)配置
表3 測(cè)試環(huán)境參數(shù)
通過(guò)以上對(duì)固態(tài)盤(pán)模擬器的分析與總結(jié),綜合目前固態(tài)盤(pán)模擬器發(fā)展現(xiàn)狀,未來(lái)模擬器可能需要在以下幾方面做出改進(jìn):
(1)閃存并行性模擬
為充分利用并行性[8,9]以提高性能,當(dāng)前固態(tài)盤(pán)在Flash芯片級(jí)搭建RAID。針對(duì)此問(wèn)題,固態(tài)盤(pán)模擬器可以對(duì)通道級(jí)的并發(fā)訪問(wèn)策略,裸片級(jí)的亂序訪問(wèn)策略,分組級(jí)的并行I/O調(diào)度算法等閃存中各級(jí)并行性進(jìn)行模擬,以更精確地模擬真實(shí)閃存性能。
(2)糾錯(cuò)算法模型
由于擦寫(xiě)磨損、讀寫(xiě)干擾和數(shù)據(jù)保持等情況下,會(huì)導(dǎo)致閃存發(fā)生比特翻轉(zhuǎn)[10]。固態(tài)盤(pán)采用糾錯(cuò)碼的方法來(lái)修正錯(cuò)誤數(shù)據(jù),糾錯(cuò)算法的糾錯(cuò)能力大小是衡量固態(tài)盤(pán)質(zhì)量可靠性的一個(gè)重要指標(biāo)。在目前模擬器中沒(méi)有涉及糾錯(cuò)碼功能,不能真實(shí)模擬固態(tài)盤(pán)發(fā)生數(shù)據(jù)錯(cuò)誤時(shí)的場(chǎng)景。針對(duì)此問(wèn)題,固態(tài)盤(pán)模擬器可以建立閃存中數(shù)據(jù)錯(cuò)誤模型,如讀/寫(xiě)干擾、駐留錯(cuò)誤和存儲(chǔ)單元間耦合影響等;并設(shè)計(jì)糾錯(cuò)算法模型,如BCH算法、LDPC算法等,綜合評(píng)估對(duì)固態(tài)盤(pán)性能的影響。
(3)存儲(chǔ)安全機(jī)制模擬
安全是數(shù)據(jù)存儲(chǔ)的一個(gè)本質(zhì)需求。在固態(tài)盤(pán)設(shè)計(jì)過(guò)程中,需要將安全因素考慮在內(nèi),并進(jìn)行安全性設(shè)計(jì)。針對(duì)此問(wèn)題,固態(tài)盤(pán)模擬器可以考慮安全性設(shè)計(jì)模型,包括對(duì)稱/非對(duì)稱加密算法、散列值算法以及安全協(xié)議等,評(píng)估固態(tài)盤(pán)安全性能以及預(yù)測(cè)安全設(shè)計(jì)對(duì)性能的影響。
(4)支持新型Flash顆粒與先進(jìn)固件算法
隨著固件算法的不斷改進(jìn)和新型Flash技術(shù)(如3D XPoint等)出現(xiàn),傳統(tǒng)固態(tài)盤(pán)模擬器在延遲模型、能耗模型等方面與實(shí)際固態(tài)盤(pán)存在差異。針對(duì)此問(wèn)題,固態(tài)盤(pán)模擬器可以根據(jù)現(xiàn)有被廣泛接受認(rèn)可的固態(tài)盤(pán)技術(shù)(如3D XPoint等)來(lái)完整模擬固態(tài)盤(pán)各部分,精確延遲與能耗模型。
綜上,本文首先敘述了固態(tài)盤(pán)模擬器的基本原理與架構(gòu)。然后從主機(jī)接口、數(shù)據(jù)緩存、閃存轉(zhuǎn)換層、閃存以及延遲模型五方面,對(duì)Flashsim、SSDsim、Amber以及MQSim這4種應(yīng)用較為廣泛的固態(tài)盤(pán)模擬器分別進(jìn)行了研究與介紹。對(duì)各模擬器的結(jié)構(gòu)及功能進(jìn)行了對(duì)比分析,并通過(guò)模擬實(shí)際固態(tài)盤(pán)的參數(shù),對(duì)各模擬器進(jìn)行了性能測(cè)試與比較。其中各模擬器測(cè)試結(jié)果存在差異的原因主要由于各模擬器對(duì)固態(tài)盤(pán)內(nèi)部延遲模型的建立上存在差異。最后指出了當(dāng)前模擬器在閃存并行性、糾錯(cuò)算法、安全機(jī)制以及新型顆粒的模擬方面的不足以及未來(lái)的發(fā)展方向。