SSD PCIe接口综述

  • SSD 的接口当前以PCIe为主,因为其速度远快于SATA接口。

  • PCIe 特征

    • 已经从PCIe1.0发展到了6.0, 其中3.0的双向带宽:单通道(Lane)为2GB/s, 32通道为64GB/s
    • 全双工模式,发送和接收通道可以同时工作(SATA为半双工模式)
    • PCIe是串行总线,因此速度快于PCI
    • 物理层使用128/130编码(即传输128位有效数据外加2为校验数据,也有8b/10b编码方式),传输比率增大
    • 可以通过增加通道数扩展带宽,提升速度。但成本和空间占用以及能耗也会随之增加。
    • PCI采用总线型拓扑结构,PCIe采用树型拓扑结构,实现点到点(Endpoint to Endpoint)的通信方式
    • 交换机扩展了PCIe的端口,并完成数据上下游的转发,每个设备独享通道带宽。
    • 每个PCIe设备和交换机都需要实现PCIe的3层结构功能
  • PCIe 分层结构,共分为3层,由上之下依次为:事务层(Transaction Layer),数据链路层(Data Link Layer)和物理层(Physical Layer),下层为上层服务。数据以数据包(Packet)形式传输,每层都有固定格式。数据由事务层生成,发送端向下逐层包装,接收端将数据接收后进行校验,校验错误则通知重传,校验正确则逐层解开包装,向上层传递。

    • 事务层:创建(发送)或者解析(接收)TLP(Transaction Layer Packet)、流量控制、QoS、事务排序等。
    • 数据链路层:创建(发送)或者解析(接收)DLLP(Data Link Layer Packet)、ACK/NAK协议(链路层检错和纠错)、流控、电源管理等。
    • 物理层:处理所有数据包中数据的物理传输,发送端将数据分发到各个Lane中进行传输,接收端将各个Lane上的数据进行汇总,并进行加扰,去扰,8/10或128/130编码解码等工作。
  • PCIe TLP数据。事务层可以产生4种不同的TLP请求:

    • 内存(Memory),用于访问内存空间
    • I/O,用于访问I/O空间,主要为了兼容以前的旧设备,后续会逐渐取消
    • 配置(Configuration),用于访问配置空间,并非常态,一般只发生在上电枚举和配置阶段
    • 消息(Message),终端消息,错误消息等内容,非主流,只有在中断或有错误的情况下发送消息
    • TLP分为Non-posted 和Posted两种,前者是需要对方响应的,后者不需要对方响应。内存写和消息不需要响应,其他都需要响应。
    • 一个TLP最多携带4KB有效数据。
  • TLP数据结构: Header+data+ECRC

    • TLP的header分类:内存,配置,消息,响应
    • 每个PCIe设备都有唯一的ID,包括RC,交换机和终端
  • PCIe 配置空间

    • 每个PCIe设备可能具有多个功能,比如硬盘功能,网卡功能等,因此至少有一个配置空间:通过读取该空间数据,可以获取该设备的基本信息,也可以通过该空间来配置该设备。
    • 配置空间是协议规定好的,地址和内容是有定义的。
    • 配置空间就是一系列寄存器的集合。64B 的Header和192B 的Capability数据结构 + 3840B 扩展配置空间(合计4KB)
    • 一个PCIe系统,可以最多有256条总线,每个总线上最多可以挂32个设备,每个设备最多可以实现8个功能,每个功能对应4KB的配置空间。
  • PCIe共有3种路由方式:

    • 基于地址(Memory Address)的路由
    • 基于设备ID(BDF)的路由
    • 隐式(Implicit)路由

你可能感兴趣的:(Embed,System,单片机)