<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 消費電子 > 設計應用 > 淺談閃存控制器架構

淺談閃存控制器架構

作者: 時(shí)間:2018-08-21 來(lái)源:網(wǎng)絡(luò ) 收藏

分析閃存器的架構,首先得了解SSD。一般來(lái)說(shuō)SSD的存儲介質(zhì)分為兩種,一種是采用閃存(Flash芯片)作為存儲介質(zhì),另外一種是采用DRAM作為存儲介質(zhì)。我們通常所說(shuō)的SSD就是基于閃存的固態(tài)硬盤(pán),其采用FLASH芯片作為存儲介質(zhì)。SSD的基本組成結構包括Flash顆粒和Flash器,Flash器中有芯片,負責Flash的讀寫(xiě)、磨損均衡、壽命監控等等。

本文引用地址:http://dyxdggzs.com/article/201808/387320.htm

Flash控制器的主要的工作任務(wù)包括三大方面:一是后端訪(fǎng)問(wèn)Flash,管理后端Flash顆粒,包括各種參數控制和數據IO; 二是前端提供訪(fǎng)問(wèn)接口和協(xié)議:實(shí)現對應的SAS/SATA target協(xié)議端或者NVMe協(xié)議端, 獲取Host發(fā)出的IO指令并解碼和生成內部私有數據結果等待執行;三是FTL層核心處理。下面我們具體來(lái)介紹一下Flash 控制器是怎樣做這幾件事的。

第一,后端訪(fǎng)問(wèn)Flash的操作內容

后端訪(fǎng)問(wèn)Flash首先必須提到的是閃存通道控制器。這個(gè)控制器里面有多個(gè)通道,每個(gè)通道掛多片Flash。它與后端Flash顆粒之間存在托管協(xié)議。數據寫(xiě)入Flash的時(shí)候,除了主機發(fā)送的數據或者原始數據,其他數據都必須進(jìn)行ECC校驗。ECC是通用的稱(chēng)謂,里面有多種算法,其中包括糾錯率較低的BCH算法,LAPC低密度校驗碼等。數據讀出的時(shí)候,通過(guò)擾碼,加擾,解擾,看ECC是否出現錯誤,若有錯則在糾錯后將芯片發(fā)到內部,供后續的程序處理。因此,后端訪(fǎng)問(wèn)Flash的主要任務(wù)即是管理后端Flash顆粒,包括各種參數控制和數據IO。

第二,前端提供訪(fǎng)問(wèn)接口和協(xié)議

前端提供訪(fǎng)問(wèn)接口和協(xié)議,跟主機驅動(dòng),利用標準格式輸配到系統里面,接收主機端發(fā)過(guò)來(lái)的指令,即完成、實(shí)現對應的SAS/SATA target協(xié)議端或者NVMe協(xié)議端,獲取Host發(fā)出的IO指令并解碼和生成內部私有數據結構等待執行。如果遵從NVMe標準,包括提交命令的方法、完成命令的處理方法等都定好了,包括各種隊列、隊列深度,Queue Pair的總體數量最大可以達到64K個(gè),隊列深度也可達64K個(gè),所以,系統里同時(shí)可能存在64K×64K IO排著(zhù),但是目前的系統是用不到這么多Queue的,因為底下的介質(zhì)速度還不足以支撐。

第三,FTL層——核心層處理

核心層FTL層,是一款Flash控制器的關(guān)鍵競爭力所在。它既可以是純軟件算法,包括元數據管理,數據布局影射、磨損均衡、垃圾回收、緩存策略、片間RAID和掉電元數據一致性保障等內容。同時(shí),它也可以在進(jìn)行重復性工作時(shí)輔以硬加速引擎。這是非純軟件的,輔有硬加速的成分在里面。硬加速涉及到所使用的芯片。有的芯片支持硬加速,比如說(shuō)鏈表的維護。這是因為做垃圾回收時(shí)需要要用到鏈表,拿傳統的軟件算法,插入一個(gè)或者追加一些項目,所耗費的CPU周期較大,此時(shí)用硬加速并行,再加上一些硬邏輯的加速,則可節省開(kāi)銷(xiāo)。

Flash控制器的兩種策略和方式:

現有的Flash控制器可采用兩種方式:一種是少量的強核心加少量硬件加速。所謂強核心就是一個(gè)核心的性能高、頻率高,分支預判、并行度、單元數量、執行管道,各種參數都高于一般水平。核心強了以后,硬加速就不需要這么多了,可以用少量的硬加速。

另一種方式則是大量弱核心+大量硬加速。比如說(shuō)16個(gè)核心,每個(gè)核心比較弱,但是能夠增加執行的并行度,有16個(gè)并發(fā)核心執行,跑16套處理程序,這是兩種架構。這是一種多核心協(xié)作架構模式,其協(xié)作方式可以是同構協(xié)作也可以是異構協(xié)作

1. 同構協(xié)作就是每個(gè)核心做的事都是完全一樣的,處理的步驟完全一樣。如果你的控制器陣列里面有16個(gè)IO,有16個(gè)核心,每個(gè)核心都能處理一個(gè)IO,這是同構協(xié)作。

2. 異構協(xié)作則是多個(gè)核心做不同的事情。處理同一個(gè)IO,第一個(gè)IO第一步,第一個(gè)核心處理,這個(gè)核心處理完以后,把這個(gè)IO扔到下一個(gè)核心,再處理下一步,等這個(gè)核心空出來(lái)以后,處理下一個(gè)IO的第一步,這就是所謂的流水線(xiàn)了,所謂的異構就是如此。

產(chǎn)品實(shí)例:PMC的FlashtecTM NVMe 控制器

這是PMC的控制器,首先它有一個(gè)片上網(wǎng)絡(luò ),網(wǎng)絡(luò )承載16個(gè)CPU核心,每個(gè)核心里面有一個(gè)類(lèi)似網(wǎng)卡的控制器,網(wǎng)卡連到網(wǎng)絡(luò )上,多個(gè)CPU之間連起來(lái)。簡(jiǎn)單說(shuō)就是4口路由器或者交換機連起來(lái)的網(wǎng)絡(luò ),多個(gè)CPU之間連起來(lái),此外還有硬加速模塊。另外還包括以下幾部分:

RAM控制器,因為芯片上需要有一定量的RAM放臨時(shí)數據,寫(xiě)放大,讀出來(lái)寫(xiě)進(jìn)去,都要走RAM;

PCIe控制器,這個(gè)是跟前端PCIe對等的控制器,IO指令從這兒接收過(guò)來(lái);

后端Flash控制器,通過(guò)一定數量的通道連Flash顆粒,

加速器(包括緩沖加速器),每做一個(gè)操作,都需要有相應的內存,把數據拷到內存里面,內存的維護很費時(shí)費力。比如在X86上運行的Linux,其管理內存時(shí)需要耗費很多的計算量。對于閃存,精打細算,必須把性能做到極致,因此需用到硬加速。

鏈表加速器,用鏈表來(lái)記錄一些信息,哪塊空著(zhù),哪塊被應用,這塊用軟件維護很費力,所以需要在這里作加速;

XOR加速器,XOR要用硬加速

最后,來(lái)看一下軟件的并行度。16個(gè)核心,PMC提供的參考的固件,當然SSD廠(chǎng)商會(huì )開(kāi)發(fā)自己的固件,把自己優(yōu)化的東西放進(jìn)去,優(yōu)化的算法放進(jìn)去?;旧习诉@么一些程序,每個(gè)IO讀的地址可能有重疊,重疊就需要有一個(gè)鎖定協(xié)調,有管命令解析的,有管啟動(dòng)的,有管日志的,有管磨損均衡的,有管查表的,有管寫(xiě)數據的,管前端的PCIe Manager,還有負責boot loader的核心,初始化的配置,需要由它處理,data manager,這是主程序,分析IO指令需要干什么,生成一堆的后續步驟下發(fā)下去。其實(shí)每一塊都可以跑在一個(gè)核心上,同一個(gè)角色可以復制多份,充分并行。16個(gè)核心,達到16份程序并行的運行,16個(gè)流水線(xiàn)的Stage,這樣就可以屏蔽處理過(guò)程中的時(shí)延。



關(guān)鍵詞: 控制 通信

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>