????????高速存儲設計會有各種需求的考慮,那么對應的方案也不完全相同,這篇文章出一期純FPGA實現的高速存儲方案。用純fpga實現高速存儲板卡有易國產化,功耗低和體積小等特點,缺點就是靈活性不是很強,實現標準ext4和nfs文件系統會非常難。
? ? ? ? 690T高速存儲硬件設計框圖如下,switch下面掛載6張ssd,一路x8 到fpga host,1路x8到fpga ep,pcie端采用nvme ip實現ssd盤的讀寫,40Gbps以太網數據,以及多通道的srio和GTX數據,整個架構中最核心的就是nvme ip,nvme ip扮演了大腦的角色,負責枚舉ssd,分配地址,以及nvme協議處理等。
????????該方案可移植性很強,如果需要更高的速度,僅僅需要將pcie switch下面掛接更多的ssd,如果port不夠可以掛更多的pcie? switch,因為switch 與fpga之間有兩路pcie3.0 x8,那么就最大的下盤速率大約有16GB/s,具體跑多少速度掛載多少ssd,需要結合成功案例經驗在做決定。
????????在選型Pcie 核690t有很大的優勢,支持多個pcie硬核,所以不用擔心沒得軟核啦,比如下圖就是xdma作為ep的配置。
?
????????關于nvme ip資源消耗情況,目前高速存儲使用的資源如下(外部接口沒有全部使用),其實代碼中有個細節可以優化很多bram接口,因為前期設計考慮冗余了,導致資源消耗過多。
在690t中實現tcp協議并且與上位機通訊。
nvme? ip支持如下IO命令
管理命令:
identify
set feature
abort cmd
creat sq cmd
creat cq cmd
fortmat nvm cmd
IO命令
read/write cmd
flush cache cmd? ?###異常掉電可以下發該命令告知SSD將緩存中的數據program到nand flash
trim cmd? ? #該命令在格式化使用