SCI 相关通信技术解析
1. SCI 物理层 API
SCI 物理层 API 具有多种功能,下面将详细介绍其不同方面。
1.1 DMA 块移动交易
在块移动过程中,通过生成适当的内部链列表,将块移动过程的描述符列表转换为原生链命令格式。同时,采用哈希方法避免同一描述符链在多次使用时被重复转换。所有 DMA 块移动交易都使用回调机制进行异步同步,这在典型的硬件实现中,利用 DMA 控制器时效果最佳。若需要同步块移动功能,则可使用回调程序和给定操作系统支持的信号量来实现。另外,利用适当的状态列表项作为邮箱标志,由 CPU 轮询并由特定的链 DMA 命令设置,可实现低延迟场景。
1.2 消息传递交易
为实现更高级别的协议,需要标准的消息传递 API。IEEE 控制和状态寄存器(CSR)架构标准定义了两个用于消息传递的标准 CSR 地址,分别用于请求消息和响应消息,这种分离是为了避免可能的死锁。
可选的消息传递协议要求在硬件或软件中实现两个消息队列,SCI 接口和 API 必须处理所有必要的流量控制,以防止消息丢失。在本地地址空间中,请求和响应队列需要两个至少能存储 64 字节的 FIFO。如果将它们相应地导出到 SCI 地址空间,所有 SCI 写事务都将写入这些 FIFO。当 FIFO 满时,会向 SCI 请求者发送适当的重试消息。
消息通过发送到 SCI 目标节点的指定子地址传输到目标,然后根据其消息端口路由到相应的进程。接收节点必须监听具有定义端口的消息,这通过执行指定消息端口和相应异常处理程序的事务来完成,每次接收到适当的消息时都会调用该异常处理程序,消息处理程序将消息作为参数接收。