zynq 级联多个ssd方案设计(ECAM BUG修改)
本文讲解采用zynq7045芯片如何实现200T容量高速存储方案设计,对于大容量高速存储卡,首先会想到采用pcie switch级联方式,因为单张ssd的容量是有限制的(目前常见的m.2接口容量为4TB,U.2接口容量为16TB),pcie switch目前主流型号是pex8748,刚好这个型号有对应的国产8748,国微8748现在用得很成熟了,虽然该芯片有一些bug,但作者都已经打上了patch完美解决了该问题。
本次设计方案框图如下所示,8748一共有48个lane,最大port数量为12,zynq下面通过pcie 2.0 x8连接1级switch,1级switch在通过5路gen3 x8连接5个二级pcie switch,二级switch下面通过pcie 3.0 x4连接10张gen3 x4 ssd,这样一共可以支持5 *10 = 50张ssd。
对于zynq芯片中pcie硬核选择有两种。
方案一采用axi-bridge硬核,该硬核最大支持pcie 2.0 x4,mps=256,这种方式速度会受到硬件的限制,但实现更加简单。
方案二采用pcie Series硬核,该硬核最大支持pcie 2.0 x8,mps=256或者512(根据芯片等级有区别),如果是gen1 mps=1024,一般的ssd mps=128,256,512.该ip速度会很快,但是实现难度会更大。
这两个ip都是可以作为host bridge使用,具体选用哪一个结合技术实力和方案需求综合评估。
这种方案会面临的两个问题
1. ECAM 窗口很小,导致不能访问所有设备的配置空间,作者已经解决该问题。(zynq默认采用的是mem方案访问配置空间,也可以采用config tlp方式访问配置空间)
2. 多张ssd同时访问会出现竞争和超时问题,这个需要对nvme协议做出修订
fpga设计框图
在zynq级联方案中,作者已经实现标准ext4文件系统,用户可以独立读写每一张ssd,也可以将多张ssd组成raid0方式读写,在使用gen2 x4这个ip上,标准ext4文件系统速度可以做到1.2GB/s(这里的速度很保守,作者是按照国产ssd的最低速度和稳态速度写的),用户可以将ssd对应的存储卡拔插后插入到windows电脑上,windows可以识别到标准的ssd,并且会自动挂在成标准的windows盘符。
级联ssd上电枚举打印如下: