主页 > 游戏开发  > 

《MODEMHOSTINTERFACE》,第二章:MHI接口架构

《MODEMHOSTINTERFACE》,第二章:MHI接口架构
1. 接口架构 MHI 基于以下关键特性作为支持 PCIe 总线的扩展接口: 通过内存映射(MMIO),从主机访问设备寄存器从设备访问主机系统内存设备向主机发送中断(MSI) 下表 定义了三个接口内存空间,它们构成了 MHI 的基础模块。

MHI的内存地址布局如下图所示: 1.1 MMIO(内存映射输入输出)概述 内存映射输入输出(MMIO,Memory-mapped I/O)是一种将外设寄存器映射到主机内存地址空间的方法,使主机能够通过标准的内存访问指令(如读取和写入内存)与外设进行通信。 在MMIO中,外设的寄存器被映射到主机的内存地址范围内。主机可以使用常规的内存访问指令来读取或写入这些寄存器,从而与外设进行交互。这种方法简化了硬件设计,因为主机无需使用专门的I/O指令或独立的I/O总线即可访问外设。MMIO的优势包括: 简化硬件设计:主机可以使用标准的内存访问指令与外设通信,无需额外的I/O指令或独立的I/O总线。提高性能:通过直接内存访问,减少了CPU与外设之间的交互延迟。统一的访问机制:主机可以使用相同的内存访问机制来访问内存和外设,简化了编程模型。 然而,MMIO也有一些限制: 地址空间限制:主机的内存地址空间需要预留一部分用于映射外设寄存器,这可能会限制可用的内存空间。缓存一致性:由于外设寄存器的访问可能不经过缓存,可能需要采取措施确保缓存一致性。 PCIe 配置空间中的 BAR-0 指向 MHI 寄存器接口(MMIO 寄存器)的基地址。 以下表展示了 MMIO 组件:

 

1.2 数据结构

下表 列出了位于主机系统内存(主机 DRAM)中的接口数据结构:

 

1.3 PCIe 物理功能

该设备仅使用一个 PCIe 物理功能来支持 MHI,功能号为 0。MHI/BHI MMIO 寄存器映射到 BAR-0。 1.4 MHI 通道 MHI 通道是主机与设备之间的逻辑单向数据管道。MHI 中的通道概念类似于 USB 中的端点。 MHI 最多支持 256 个通道,但具体设备实现可能并不会用到全部通道。 部分通道用于控制或管理,其他通道则用于数据传输,包括用户进程数据(如 IP 包、位置信息以及其他协议)。 两个单向通道可以组合成一个双向数据管道,即一个用于发送(主机到设备),另一个用于接收(设备到主机)。 1.4.1 通道方向 通道表示通过 PCIe 链路传输数据的方向,可能是入站或出站: 入站:表示数据从设备传输到主机出站:表示数据从主机传输到设备 通道方向由通道上下文结构中的通道类型字段(CHTYPE)指定。 1.4.2 通道 ID MHI 定义了一个 8 位通道 ID(范围 0~255)作为通道的唯一索引。通道 ID 可能包含在数据消息中,用于让主机和设备双方识别通道。通道 ID 用于索引通道上下文数组。 1.5 传输 由传输描述符(TD)定义的“传输”负责组织主机和设备之间的数据传输。传输描述符中包含数据大小及数据所处或接收的内存地址。一个传输可以由多个传输描述符串联而成,以便处理更大规模的传输;当然,如果数据量较小,也可以只使用一个传输描述符来完成传输。 主机通过为传输环分配并初始化一个内存缓冲区来定义传输环。主机会在传输环的地址处设置写指针和读指针,并将这些指针存储到相应的通道上下文中。 当写指针与读指针相同时,传输环为空。读指针用于标识设备将要执行的下一个传输描述符(TD)地址;写指针用于标识主机可以放置新传输描述符(TD)的下一可用位置地址。 传输环的长度在通道上下文数据结构中定义。 1.5.1 事件环 从设备到主机的事件以事件环的形式组织,并在事件描述符(ED)中定义。事件环是位于主机内存中的事件描述符(ED)数组。 1.5.2 环元素 环元素是一种数据结构,用于在主机内存和设备之间(或反向)传输单个数据块。 传输环元素类型通常包含一个指向缓冲区的指针、缓冲区大小以及其他控制信息。其他类型的环元素可能仅包含控制和状态信息。 对于单一缓冲区的操作,一个环描述符只由一个环元素组成。对于需要多个缓冲区的操作(如分散/聚集传输),可以将多个元素链接起来形成更长的描述符。 长度字段用于标识缓冲区指针所引用的缓冲区大小。 如 上图所示,传输环中可能包含多个待处理的传输描述符(TD)。写指针指示了可以插入新工作项(TD)的下一个可用位置;读指针则指示设备将要执行的传输环中的下一个 TD。 传输完成后,其长度和状态会报告到事件环中。事件环的管理方式类似。 1.5.3 分散/聚集传输 通常,分散/聚集(scatter/gather)机制用于将不连续的内存缓冲区拼接为连续的逻辑数据传输。在 PCIe 环境下,主机可以使用多个环元素构建一个 TD,以定义逻辑上连续的内存传输。 对于不连续的数据传输,称为分散/聚集传输(scatter/gather transfers)。可以通过链接多个元素提供更多指针,以描述分散/聚集传输所需的全部信息。 分散/聚集传输的总大小等于该 TD 中所有环元素长度字段之和。 上图显示,除最后一个环元素外,该传输描述符(TD)中的所有环元素的链位(chain bit)都被设置为 1。设备会按顺序从读指针(顶部)到写指针(底部)依次解析 TD 中的环元素。通过此操作,能够将来自主机内存中不同缓冲区的数据拼接为一个连续的数据块。 1.6 命令接口 设备提供了一个命令环接口,供主机管理调制解调器(modem)接口。命令描述符(CD)用于命令环中,描述符中包含特定的命令及其参数。 命令环的操作方式类似于写(出站)传输环。主机发出命令,并将命令描述符添加到命令环中,然后设置命令门铃寄存器(command doorbell register)。 设备会在主事件环(primary event ring)中添加一个事件,用于通知主机某条命令已经完成。设备按照命令在命令环中的排队顺序依次执行这些命令。 下表展示了MHI命令:

 

标签:

《MODEMHOSTINTERFACE》,第二章:MHI接口架构由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“《MODEMHOSTINTERFACE》,第二章:MHI接口架构