XDuser

专注于NVMe IP, NVMe包括RDMA,NVMe Host ,NVMe OF。期待与你相约。

NVMe高速传输之摆脱XDMA设计22: UVM 验证包设计

UVM 验证包的主要功能是对 DUT 提供激励, 仿真验证对应的功能, 并对测试结果进行自动对比分析与统计。 验证包包含一个NoPHAE_env 验证环境, 验证环境下包含 axi4_lite_age...

NVMe高速传输之摆脱XDMA设计21: UVM验证平台

NVMe over PCIe采用 AXI4-Lite 接口、AXI4 接口和 PCIe3.0X4 接口,其中AXI4-Lite 和 AXI4 总线接口均可抽象为总线事务,而 PCIe 接口信号可被抽象为 PCIeTLP 事务,因此为了方便的...

NVMe高速传输之摆脱XDMA设计18: PCIe应答模块设计

应答模块的具体任务是接收来自PCIe链路上的设备的TLP请求,并响应请求。由于基于PCIe协议的NVMe数据传输只使用PCIe协议的存储器读请求TLP和存储器写请求TLP,应答模块也分别针对两种TLP设置处理引擎来提高并行性和处理速度。对于...

NVMe高速传输之摆脱XDMA设计17:PCIe请求模块设计(下)

应答模块的具体任务是接收来自PCIe链路上的设备的TLP请求,并响应请求。由于基于PCIe协议的NVMe数据传输只使用PCIe协议的存储器读请求TLP和存储器写请求TLP,应答模块也分别针对两种TLP设置处理引擎来提高并行性和处理速度。对于...

NVMe高速传输之摆脱XDMA设计16:PCIe请求模块设计(上)

请求模块的具体任务是将系统的请求转换成为axis接口形式的TLP或配置管理接口信号。这些请求主要包含初始化请求模块的具体任务是将系统的请求转换成为axis接口形式的TLP或配置管理接口信号。这些请求主要包含初始化配置请求和门铃写请求。

NVMe高速传输之摆脱XDMA设计15::PRP控制模块设计

PRP控制模块负责实现指令相关的PRP列表的生成、存储与管理。NVMe的提交命令中,存在PRP1和PRP2两个字段,PPR2作为地址指针还是PRP列表指针是根据命令请求数据传输长度和PRP1的偏移量来确定的。当PRP2作为PRP列表指针时,...

NVMe高速传输之摆脱XDMA设计14::队列管理模块设计(下)

PRP控制模块负责实现指令相关的PRP列表的生成、存储与管理。NVMe的提交命令中,存在PRP1和PRP2两个字段,PPR2作为地址指针还是PRP列表指针是根据命令请求数据传输长度和PRP1的偏移量来确定的。当PRP2作为PRP列表指针时,...

NVMe高速传输之摆脱XDMA设计13::队列管理模块设计(上)

注:这是采用PCIe设计NVMe,并非调用XDMA方式,后者在PCIe4.0时不大方便,故团队直接采用PCIe设计,结合UVM验证加快设计速度。 队列管理模块采用队列的存储与控制分离的设计结构,如图1所示为队列管理模块的结构框图。 ...

NVMe高速传输之摆脱XDMA设计12:NVMe 控制模块设计

NVMe 控制模块负责实现用户请求事务与 NVMe 事务的转换、 NVMe 命令提交与完成机制、 PRP 寻址机制。 在 NoP 逻辑加速引擎中, 用户通过配置系统控制模块的相关寄存器来发送 DMA 或队列管理请求, NVMe 控...

NVMe IP高速传输却不依赖XDMA设计之11:NVMe初始化状态机设计

在完成PCIe配置初始化后,PCIe总线域的地址空间都分配完毕,可以执行传出存储读写TLP,系统初始化进入NVMe配置初始化。NVMe配置初始化主要完成NVMe设备BAR空间的NVMe寄存器配置。图1为NVMe配置初始化状态机状态转移图。各...

NVMe IP高速传输却不依赖XDMA设计之十:PCIe初始化状态机设计

PCIe配置初始化状态机实现PCIe设备枚举和配置空间初始化过程,在完成链路训练后,使用DFS(深度优先搜索)算法枚举PCIe总线上的设备,完成PCIe总线域的地址分配和设备的初始化。PCIe配置初始化是PCIe总线正常进行数据传输的前提,...

NVMe IP高速传输却不依赖XDMA设计之九:系统初始化

直接采用PCIe实现NVMe功能,它的系统初始化流程主要分为链路训练、PCIe 初始化和 NVMe 初始化, 分别实现 PCIe链路连接、 PCIe 设备枚举配置和 NVMe 设备配置功能。 其中链路训练由 PCIE 集成块实现, 初始化模...

NVMe IP高速传输却不依赖XDMA设计之八

性能监测单元负责监测 NVMe over PCIe 逻辑加速引擎的运行状态和统计信息, 包括复位后运行时间信息、 NVMe 指令数量统计信息、 数据操作数量统计信息、 IOPS 性能统计信息、 指令延迟统计信息等。 这些信息存储在性能监测单...

NVMe IP高速传输却不依赖XDMA设计之五

通过PCIe直接进行高速数据读写,首先需要实现对PCIe的初始化控制,该控制单元负责控制初始化进程和获取初始化状态。 对于初学者而言,初始化进程比较复杂,在初始化过程中可能由于 PCIe 链路或 NVMe 设备的不确定性导致初始化失败, 通...

NVMe IP高速传输却不依赖XDMA设计之四

系统控制模块负责实现 NVMe over PCI 逻辑加速引擎的控制功能, 其结构如图 1 所示。 用户通过系统控制模块实现对初始化功能、 队列管理功能、 DMA 功能等主要功能的控制, 同时逻辑加速引擎的工作状态也通过此模块反馈给用户。 ...