0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

高速传输与存储 来源:高速传输与存储 作者:高速传输与存储 2025-08-03 21:15 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

PRP控制模块负责实现指令相关的PRP列表的生成、存储与管理。NVMe的提交命令中,存在PRP1和PRP2两个字段,PPR2作为地址指针还是PRP列表指针是根据命令请求数据传输长度和PRP1的偏移量来确定的。当PRP2作为PRP列表指针时,PRP2指向PRP列表的首地址。在传统的NVMe系统中,PRP列表存放的位置一般与数据存放位置接近,因此在处理指令过程中,读取PRP经历的延时与读取数据的延时相近,为了降低读取PRP的延时,使用PRP控制模块将PRP的存储位置转移到NoP逻辑加速引擎内部。PRP控制模块的结构和连接关系如图1所示。

wKgZO2iPX8mAHPJHAAEuhBTwZ7s128.pngwKgZPGiPYPCAZcDmAAB9f3Y44Hk302.png

图1 PRP控制模块结构和连接关系图

当用户想要进行大块数据传输时,需要使用PRP提供数据的分布地址,为了降低PRP寻址的延时和复杂度,使用PRP控制模块替代原本的PRP机制。需要传输大块零散分布数据时,可以减小DMA请求长度,不使用PRP链表,将PRP链表条目字节转换为DMA请求地址。需要传输大块连续数据时,只需要PRP链表将由PRP控制模块根据请求地址自动生成。指令控制模块接收到相关指令时,根据PRP1和传输长度判断PRP2类型,如果PRP2类型为PRP链表指针,则以指令ID为地址,将PRP1的4KB偏移写入PRP MEM,PRP2则包含指令ID并指向PRP控制模块。当PCIe加速模块收到指向PRP控制模块的读数据请求时,判断为读PRP请求,PRP控制模块根据读地址取出对应的存储条目返回,然后将该数据进行偏移4KB地址计算后重新写入PRP MEM。PRP MEM的大小与指令ID池的深度一致,每个指令ID指向一个64比特的PRP MEM存储条目。

​审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PCIe
    +关注

    关注

    16

    文章

    1423

    浏览量

    87568
  • nvme
    +关注

    关注

    0

    文章

    287

    浏览量

    23721
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    NVMe高速传输摆脱XDMA设计44:工程设计考量?

    运行过程和测试结果。 NoPHAE 模块为课题设计的 NoP 逻辑加速引擎, ctrl_axi 控制总线接口连接到CPU, data_axi数据传输总线连接到MIG控制器与DDR对接,
    发表于 11-12 09:52

    NVMe高速传输摆脱XDMA设计43:如何上板验证?

    1 所示。 外部接口主要有访问系统控制模块的ctrl_axi 接口, 进行数据传输的 data_axi 接口, 与 PCIe 引脚连接的 PCIe 接口, 以及时钟、 复位接口。 可选参数包括
    发表于 10-30 18:10

    NVMe高速传输摆脱XDMA设计30: NVMe 设备模型设计

    设备则需要开启至少 8KB 的 BAR0 空间, BAR0 地址空间中存放 NVMe 设备寄存器组, 其中包含了初始化过程中需要使用的控制器功能寄存器、 控制器状态寄存器、控制器配置
    发表于 09-29 09:31

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

    应答模块的具体任务是接收来自PCIe链路上的设备的TLP请求,并响应请求。由于基于PCIe协议的NVMe数据传输只使用PCIe协议的存储器读请求TLP和存储器写请求TLP,应答模块也分
    的头像 发表于 08-13 10:43 650次阅读
    <b class='flag-5'>NVMe</b><b class='flag-5'>高速</b><b class='flag-5'>传输</b><b class='flag-5'>之</b><b class='flag-5'>摆脱</b><b class='flag-5'>XDMA</b>设计20: PCIe应答<b class='flag-5'>模块</b>设计

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

    应答模块的具体任务是接收来自PCIe链路上的设备的TLP请求,并响应请求。由于基于PCIe协议的NVMe数据传输只使用PCIe协议的存储器读请求TLP和存储器写请求TLP,应答模块也分
    发表于 08-12 16:04

    NVMe高速传输摆脱XDMA设计17:PCIe加速模块设计

    PCIe加速模块负责实现PCIe传输层任务的处理,同时与NVMe层进行任务交互。PCIe加速模块按照请求发起方分为请求模块和应答
    的头像 发表于 08-09 14:38 4589次阅读
    <b class='flag-5'>NVMe</b><b class='flag-5'>高速</b><b class='flag-5'>传输</b><b class='flag-5'>之</b><b class='flag-5'>摆脱</b><b class='flag-5'>XDMA</b>设计17:PCIe加速<b class='flag-5'>模块</b>设计

    NVMe高速传输摆脱XDMA设计16:TLP读处理优化

    的延时。并且当大量不同的读请求交叉处理时,读处理模块的并行处理结构更能够充分利用PCIe的乱序传输能力来提高吞吐量。
    的头像 发表于 08-08 18:07 708次阅读
    <b class='flag-5'>NVMe</b><b class='flag-5'>高速</b><b class='flag-5'>传输</b><b class='flag-5'>之</b><b class='flag-5'>摆脱</b><b class='flag-5'>XDMA</b>设计16:TLP读处理优化

    NVMe高速传输摆脱XDMA设计17:PCIe加速模块设计

    PCIe加速模块负责实现PCIe传输层任务的处理,同时与NVMe层进行任务交互。如图1所示,PCIe加速模块按照请求发起方分为请求模块和应答
    发表于 08-07 18:57

    NVMe高速传输摆脱XDMA设计16:TLP优化

    的延时。并且当大量不同的读请求交叉处理时,读处理模块的并行处理结构更能够充分利用PCIe的乱序传输能力来提高吞吐量。为了清晰的说明读处理模块对吞吐量的提升,设置如图1所示的简单时序样例,样例中PCIe
    发表于 08-05 18:09

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

    应答模块的具体任务是接收来自PCIe链路上的设备的TLP请求,并响应请求。由于基于PCIe协议的NVMe数据传输只使用PCIe协议的存储器读请求TLP和存储器写请求TLP,应答模块也分
    的头像 发表于 08-04 16:47 699次阅读
    <b class='flag-5'>NVMe</b><b class='flag-5'>高速</b><b class='flag-5'>传输</b><b class='flag-5'>之</b><b class='flag-5'>摆脱</b><b class='flag-5'>XDMA</b>设计14: PCIe应答<b class='flag-5'>模块</b>设计

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

    应答模块的具体任务是接收来自PCIe链路上的设备的TLP请求,并响应请求。由于基于PCIe协议的NVMe数据传输只使用PCIe协议的存储器读请求TLP和存储器写请求TLP,应答模块也分
    发表于 08-04 16:44

    NVMe IP高速传输却不依赖XDMA设计九:队列管理模块(上)

    这是采用PCIe设计NVMe,并非调用XDMA方式,后者在PCIe4.0时不大方便,故团队直接采用PCIe设计,结合UVM验证加快设计速度。 队列管理模块采用队列的存储与控制
    的头像 发表于 08-04 09:53 599次阅读
    <b class='flag-5'>NVMe</b> IP<b class='flag-5'>高速</b><b class='flag-5'>传输</b>却不依赖<b class='flag-5'>XDMA</b>设计<b class='flag-5'>之</b>九:队列管理<b class='flag-5'>模块</b>(上)

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

    本帖最后由 xianuser2012 于 2025-7-30 15:57 编辑 注:这是采用PCIe设计NVMe,并非调用XDMA方式,后者在PCIe4.0时不大方便,故团队直接采用PCIe
    发表于 07-27 17:41

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

    采用XDMA是许多人常用xilinx库实现NVMe或其他传输的方法。但是,XDMA介绍较少,在高速存储设计时,尤其是PCIe4.0模式下,较
    的头像 发表于 07-26 15:14 653次阅读
    <b class='flag-5'>NVMe</b> IP<b class='flag-5'>高速</b><b class='flag-5'>传输</b>却不依赖<b class='flag-5'>XDMA</b>设计<b class='flag-5'>之</b>八:系统初始化

    NVMe高速传输摆脱XDMA设计十:NVMe初始化状态机设计

    1为NVMe配置初始化状态机状态转移图。各状态的说明如下: 图1NVMe初始化状态转移图 IDLE:空闲状态,复位后的初始状态。当检测到初始化控制寄存器的NVMe初始化启动信号时,进入
    发表于 07-05 22:03