何谓SRIO——RapidIO之旅从这里开始

news2024/11/15 11:47:42

何谓SRIO——RapidIO之旅从这里开始

SRIO(Serial RapidIO)协议是一种用于高速串行通信的协议,旨在连接数字信号处理器(DSP)、网络处理器、FPGA等芯片,以及它们之间的互连。SRIO协议具有低延迟、高带宽(支持 1.25 Gbps 到 25 Gbps 的数据传输速率)、可靠性高等特点,常用于数据中心、通信设备、无线基站、雷达、航空电子等领域。

根据

1 历史沿革

1997年,Motorola设计并推出了一种名为"Serial Interconnect Fabric"(SIF)的串行互连技术。
2001年,Motorola将SIF改名为Serial RapidIO,并邀请其他公司加入该协议的制定。
2002年,RapidIO Trade Association由Cypress、IDT、Motorola、Texas Instruments、Xilinx等几家公司成立,致力于推广RapidIO技术。
2003年,发布第一个版本的SRIO规范,支持数据传输速率为1.25 Gbps。
2005年,SRIO 2.0规范发布,支持更高的数据传输速率,最高可达3.125 Gbps。
2008年,SRIO 2.1规范发布,加入了新的特性,如流控和虚拟通道等。
2011年,SRIO 2.2规范发布,进一步提高了数据传输速率和性能,并增强了对多处理器系统的支持。
2014年,SRIO 3.0规范发布,引入了新的物理层和协议特性,并支持更高达25 Gbps的数据传输速率。
2019年,SRIO 4.0规范发布,继续增强SRIO在5G网络、人工智能、高性能计算等领域的应用能力。

2 推广组织

2.1 RAPIDIO

RapidIO.org 是一个非营利性组织,旨在促进RapidIO互连技术的发展和推广。该组织成立于2000年,已成为全球领先的低延迟、高带宽、可伸缩性和可靠性的互连标准之一。

RapidIO.org致力于推广RapidIO技术,促进其在多个领域的应用,包括通信设备、计算机、军事和航天等领域。该组织的会员包括芯片制造商、系统集成商、软件开发商、OEM厂商、研究机构和学术界等各个领域的专家和企业。

RapidIO.org提供了各种资源和服务,以支持RapidIO技术的开发和应用,包括技术规范、测试套件、开发工具、培训课程、会议和论坛等。此外,该组织还积极参与标准化组织和行业联盟的活动,推动RapidIO技术的国际标准化和产业化进程。

总之,RapidIO.org致力于推广RapidIO互连技术,在多个领域促进其应用,并为其开发和应用提供各种支持和服务。

2.2 RapidIO和SRIO的关系

SRIO (Serial RapidIO) 是一种串行通信协议,旨在实现高速数据传输和低延迟的通信。而 RapidIO 则是一个组织,致力于推广和发展使用 SRIO 技术的标准化互连架构。

换言之,SRIO 是一种通信协议,而 RapidIO 是一个组织,它的成员使用 SRIO 技术来实现高速和低延迟的互连。RapidIO 组织负责制定和推广 RapidIO 互连标准,并支持 RapidIO 产品的开发和部署。因此,SRIO 和 RapidIO 是相互关联的,但它们是不同的概念。

3 代际特点

RapidIO 1.x:发布于2002年,支持1.25Gbps和2.5Gbps的速率,最大传输距离为100米,具有可靠性高、低延迟、服务质量保障等特点。

RapidIO 2.x:发布于2007年,支持3.125Gbps和6.25Gbps的速率,最大传输距离为15米,具有更高的带宽、更低的延迟和更强的错误检测与纠正能力。

RapidIO 3.x:预计于2022年发布,支持12.5Gbps的速率,将采用更先进的协议和技术,使其成为连接高性能计算设备的最佳选项之一。与前两代相比,RapidIO 3.x 的主要改进包括更低的延迟、更高的带宽、更灵活的拓扑结构等。
在这里插入图片描述

4 协议实现

RapidIO分为3层:

逻辑层(Logical Layer):RapidIO的逻辑层定义了协议和交互规则,包括命名服务、配置管理、错误报告和事件通知等。逻辑层主要负责确保数据在传输过程中的正确性和可靠性,并提供基本的路由功能来寻址目标设备。

传输层(Transport Layer):RapidIO的传输层提供高效的数据传输机制,支持点对点和多点广播传输模式,并提供流控制和拥塞控制等重要功能。传输层还支持多队列机制,可以实现同时传输多个会话或数据流,从而提高带宽利用率和系统吞吐量。

物理层(Physical Layer):RapidIO的物理层定义了硬件接口和电气特性,包括传输速率、信号编码、差分信号传输和时钟同步等。物理层还支持多种不同的物理介质,包括高速串行器件、光纤和电缆等。

4.1 逻辑层

RapidIO是基于包交换的互连技术,传输层定义了包交换的路由和寻址机制。

逻辑层协议包括控制、数据和管理三个子层。

在RapidIO中,控制子层负责建立和维护端到端的通信路径,并对数据传输进行控制。这个过程可以通过发送控制报文来实现,其中控制报文包含有关源地址、目标地址、传输类型、QoS(服务质量)等信息。

数据子层则负责实际的数据传输。数据报文由源节点打包成多个数据包,每个数据包都包含同步信息、错误控制信息和有效载荷数据。接收节点根据同步信息解包数据包,并使用错误控制信息检测和纠正任何传输错误。

最后,管理子层负责管理节点之间的连接和网络拓扑结构。管理报文用于发现新节点、确定节点状态、管理路由表和配置寄存器等。

逻辑层定义了操作协议和相应的包格式。RapidIO支持的逻辑层业务主要是:直接IO/DMA (Direct IO/Direct Memory Access)和消息传递(Message Passing)。

直接IO/DMA模式是最简单实用的传输方式,其前提是主设备知道被访问端的存储器映射。在这种模式下,主设备可以直接读写从设备的存储器。直接IO/DMA在被访问端的功能往往完全由硬件实现,所以被访问的器件不会有任何软件负担。从功能上讲,这一特点和德州仪器DSP的传统的主机接口(HPI, Host Port Interface)类似。但和HPI口相比,SRIO(Serial RapidIO)带宽大,管脚少,传输方式更灵活。

对上层应用来说,发起直接IO/DMA传输主要需提供以下参数:目地器件ID、数据长度、数据在目地器件存储器中的地址。

直接IO/DMA模式又可进一步分为以下几种传输格式:

  1. NWRITE: 写操作,不要求接收端响应。
  2. NWRITE_R: 带响应的NWRITE(NWRITE with Response),要求接收端响应。
  3. SWRITE:流写(Stream Write),数据长度必须是8字节的整数倍,不要求接收端响应。
  4. NREAD: 读操作。

4.2 传输层

传输层是RapidIO协议栈的一个组成部分,位于物理层和消息层之间。其主要功能是提供可靠的数据传输和流控制。传输层使用虚拟通道(VC)概念来支持多路复用和分时复用,从而在单个物理链路上同时传输多个数据流。

传输层包括四个不同的子层:数据链路控制层(DLC)、流控制层(FLC)、可靠性层(RLC)和可选的直接存储器访问层(DAM)。DLC负责帧同步、检错和重传,FLC负责流量控制,RLC负责确认和重传丢失或损坏的数据包,DAM提供了一种直接将数据写入/读取到内存中的机制,以避免处理器的干预。

在传输层中,每个VC都有唯一的VC编号和优先级,以及一个独立的发送和接收缓冲区。这些缓冲区可以设置为固定大小或自适应大小,以提高数据传输效率。传输层还支持多种数据类型,包括消息、数据和DMA事务。
RapidIO网络主要由两种器件,终端器件(End Point)和交换器件(Switch)组成。终端器件是数据包的源或目的地,不同的终端器件以器件ID来区分。RapidIO支持8 bits 或 16 bits器件ID,因此一个RapidIO网络最多可容纳256或65536个终端器件。与以太网类似,RapidIO也支持广播或组播,每个终端器件除了独有的器件ID外,还可配置广播或组播ID。交换器件根据包的目地器件ID进行包的转发,交换器件本身没有器件ID。

RapidIO的互连拓扑结构非常灵活,除了通过交换器件外,两个终端器件也可直接互连。

4.2.1 交换机器件

Tsi721:这是IDT公司生产的SRIO交换机,支持2.5Gbps和5Gbps的速率,具有多种配置选项,可以灵活适应不同的应用场景。Tsi721还支持可靠的数据传输、流控制和错误检测等功能。
在这里插入图片描述

AS57xx系列:这是AMCC公司(现在归属于Microsemi)生产的SRIO交换机,支持1x、2x、4x、8x和16x的速率,可达到20Gbps的带宽。AS57xx系列还支持双网格体系结构、多路复用和多路分解等高级特性。

P4080DS:这是寒武纪公司(Cavium Networks)生产的基于Power Architecture的开发板,集成了P4080多核处理器和SRIO交换机。P4080DS支持多种接口标准,包括PCI Express、SRIO和10GbE,可用于构建高速数据中心和网络设备。

MPC8572DS:这是飞思卡尔公司(Freescale Semiconductor)生产的基于Power Architecture的开发板,集成了MPC8572多核处理器和SRIO交换机。MPC8572DS支持多种接口标准,包括PCI Express、SRIO和10GbE,可用于构建高性能计算、存储和网络设备。

Stratix IV GX:这是英特尔公司(Altera)生产的FPGA芯片,集成了SRIO收发器和逻辑电路,可用于构建高速互连和数据处理系统。Stratix IV GX支持多种协议标准,包括SRIO、PCI Express、10GbE和DDR3存储器等。

4.3 物理层

Serial RapidIO的物理层规范定义了信号传输的电气和机械特性,包括信号编码、时钟同步、差分传输、信号模式匹配和错误检测等。

RapidIO 1.x 协议定义了以下两种物理层接口标准:

  1. 8/16 并行LVDS协议
  2. 1x/4x 串行协议 (SRIO)

并行RapidIO由于信号线较多(40~76)难以得到广泛的应用,而1x/4x串行RapidIO仅4或16个信号线,逐渐成为主流。

Serial RapidIO物理层使用差分传输技术,即在发送端将数据分成两部分,在接收端再将其合并,以减少噪声干扰和传输误差。Serial RapidIO还采用了多种信号编码方式,如8b/10b、64b/66b和128b/130b等,以实现数据的可靠传输和时钟同步。

串行RapidIO基于现在已广泛用于背板互连的SerDes(Serialize Deserialize)技术,它采用差分交流耦合信号。差分交流耦合信号具有抗干扰强、速率高、传输距离较远等优点。差分交流耦合信号的质量不是由传统的时序参数来衡量,而是通过眼图来衡量,眼图中的“眼睛”张得越开则信号质量越好。
在这里插入图片描述

差分信号的强弱由一对信号线的电压差值表示,串行RapidIO协议规定信号峰-峰值的范围是200mV-2000mV。信号幅度越大,则传输距离越远,RapidIO协议按信号传输距离定义两种传输指标:

短距离传输(Short Run),<=50厘米,主要用于板内互连,推荐的发送端信号峰-峰值为500mV-1000mV

长距离传输(Long Run),>50厘米,主要用于板间或背板互连,推荐的发送端信号峰-峰值为800mV-1600mV

为了支持全双工传输,串行RapidIO收发信号是独立的,所以每一个串行RapidIO口由4根信号线组成。标准的1x/4x 串行RapidIO接口,支持四个口,共16根信号线。这四个口可被用作独立的接口传输不同的数据;也可合并在一起当作一个接口使用,以提高单一接口的吞吐量。

发送时,逻辑层和传输层将组好的包经过CRC编码后被送到物理层的FIFO中,“8b/10b编码”模块将每8bit数据编码成10bits数据,“并/串转换”模块将10bits并行数据转换成串行bits,发送模块把数字bit转换成差分交流耦合信号在信号线上发送出去。这里的8b/10编码的主要作用是:

保证信号有足够的跳变,以便于接收方恢复时钟。串行RapidIO没有专门的时钟信号线,接收端靠数据信号的跳变恢复时钟。所以需要把信号跳变少的8bits数据(如全0或全1)编码成有一定跳变的10bits数据。另外,也使得总体数据中0和1的个数均衡,以消除直流分量,保证交流耦合特性;

8b/10编码可扩大符号空间,以承载带内控制符号。10bits能表示1024个符号,其中256个表示有效的8bits数据,剩下的符号中的几十个被用作控制符号。控制符号可被用作包分隔符,响应标志,或用于链路初始化,链路控制等功能;

8b/10编码能实现一定的检错功能。1024个符号中,除了256个有效数据符号和几十个控制符号外,其它符号都是非法的,接收方收到非法符号则表示链路传输出错。

接收的过程则正好相反,首先接收方需要根据数据信号的跳变恢复出时钟,用这个时钟采样串行信号,将串行信号转换为10bits的并行信号,再按8b/10b编码规则解码得到8bits数据,最后做CRC校验并送上层处理。

数据被正确的接收时,接收端会发送一个ACK响应包给发送端;如果数据不正确(CRC错或非法的10bits符号),则会送NACK包,要求发送方重传。这种重传纠错的功能由物理层完成,而物理层功能往往由硬件实现,所以不需要软件干预。

串行RapidIO支持的信号速率有三种:1.25GHz,2.5GHz,3.125GHz。但由于8b/10b编码,其有效数据速率分别为:1Gbps, 2Gbps, 2.5Gbps。 4个1x端口或一个4x端口支持的最高速率为10Gbps。

为了确保信号传输的稳定性和可靠性,Serial RapidIO还提供了多种信号模式匹配和错误检测机制。其中,PRBS(Pseudo-Random Bit Sequence)序列测试可以用于验证串行链路的完整性和性能。而FEC(Forward Error Correction)技术则可以在数据传输过程中纠正部分错误,提高可靠性和抗干扰能力。

在RapidIO中,电器传输采用差分信号传输技术,在高速传输时可以减少噪声干扰。传输速率从1.25 Gbps到25 Gbps,物理层包括RSPE码(Reduced Signal Pulse Encoding)和8B/10B编码。

另一方面,光学传输可以支持更高的传输速率和长距离传输。RapidIO使用小型Form-factor Pluggable(SFP)或Quad Small Form-factor Pluggable(QSFP)光模块进行光学传输。光学传输还可以减少电磁干扰和地线回路问题。

除了传输介质之外,RapidIO物理层还包括多个子层,如PHY、PCS、PMA和PMD等,这些子层通过降低传输干扰、提高信号完整性和控制时序来实现高性能数据传输。

5 信号形式

SRIO使用差分信号传输数据,因为差分信号具有抗干扰能力较强、传输距离远等优点。

差分信号由一对相反的信号组成,例如P(正极性)和N(负极性)信号。在SRIO中,数据被编码为差分信号,其中P和N信号之间的电压差代表了数据的0或1状态。当P信号上升时,N信号下降,这种反向变化可以减少信号的辐射噪声和EMI(电磁干扰),同时还可以提高信号的可靠性和传输速率。
在这里插入图片描述

在SRIO中,差分信号还用于时钟、复位和控制信号的传输。通过使用差分信号,SRIO可以实现高速、可靠的数据传输,使其成为高性能计算和通信系统中广泛使用的互连技术之一。

5.1 差分信号

差分信号是指两个信号之间的差异或差异值。通常情况下,这两个信号是同一信号的两个副本,但在某些情况下,它们也可以是来自不同源的信号。差分信号通常用于噪声消除、信号传输和数据编码等应用中。
在这里插入图片描述
在电路设计中,差分信号通常使用差分对进行处理,其中一个信号经过放大并取反,然后与另一个信号相加,以产生增强的输出信号。这种方法可以抵消干扰信号并提高信号质量。

在数字信号处理中,差分信号通常用于数据压缩和加密等应用中。通过计算相邻数据点之间的差异,并将这些差异编码为单个数据点,可以减少需要传输或存储的数据量,从而提高效率。

5.2 眼图

差分信号的眼图是一种由示波器生成的多个码元波形重叠在一起形成的图像,主要出现在差分对信号上,可以利用双通道示波器观察。眼图能揭示出差分信号的噪声和失真特性,是评估信号质量的重要工具之一。

在这里插入图片描述

6 参考

  • 什么是眼图?(扫盲向)
  • rapidio.org 组织官网
  • TSI721 RapidIO Bridge
  • 串行 RapidIO: 高性能嵌入式互连技术

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/453616.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【单链表】

单链表 1. 函数的声明部分2. 函数的实现部分&#xff08;1&#xff09;打印链表&#xff08;2&#xff09;头插&#xff08;3&#xff09;尾插&#xff08;3&#xff09;头删&#xff08;4&#xff09;尾删&#xff08;5&#xff09;单链表的查找&#xff08;6&#xff09;删除…

leetcode 879. Profitable Schemes(有利润的计划)

有几个工程&#xff0c;每个工程需要group[ i ]个人去做&#xff0c;做完了可以得到profit[ i ]的利润。 现有2个限制条件&#xff1a; 人数上限是n, 且参加了一个工程的人不能再参加其他工程。 利润下限minProfit, 至少要获得minProfit的利润。 问有多少种工程的选法&#xff…

Zuul源码解析(一)

说在前面 我们公司有一个线上服务报错通知群&#xff0c;经常报网关服务的一个 EOFException 异常。这个异常报出来好久了&#xff0c;如下图所示&#xff0c;艾特相关的人也不去处理&#xff0c;大概是不重要异常吧&#xff0c;反正看样子是不影响线上核心业务流程。 然后我上…

FreeRTOS学习笔记(一)——初识FreeRTOS

FreeRTOS官网&#xff1a;FreeRTOS - 适用于具有物联网扩展功能的嵌入式系统的市场领先 RTOS&#xff08;实时操作系统&#xff09; FreeRTOS源码下载&#xff1a;FreeRTOS Real Time Kernel (RTOS) - Browse /FreeRTOS at SourceForge.net 目录 0x01 FreeRTOS编程风格 一…

用CentOS服务器自己搭建部署个Discuz论坛网站,网站搭建教程

Linux系统CentOS服务器使用堡塔搭建论坛网站全套教程。服务器大本营&#xff0c;技术文章内容集合站发车啦&#xff01; 操作系统&#xff1a;Centos 7.6 网站程序&#xff1a;Discuz-X3.4 前言 首先&#xff0c;搭建一个网站需要准备&#xff1a;服务器、域名、网站程序。 …

PWM控制直流电机

一&#xff0c;TB6612电机驱动模块 直流电机属于大功率器件&#xff0c;GPIO无法直接驱动&#xff0c;需要电机驱动模块配合&#xff0c;才能驱动直流电机. TB6612可以驱动2个直流电机。由IN1&#xff0c;IN2控制电机旋转方向&#xff0c;由PWM控制电机旋转速度。 二&#xf…

基于Oracle VM VirtualBox的ubuntu的安装

基于Oracle VM VirtualBox的ubuntu的安装 感谢詹老师的帮助使我得以完成本次安装&#xff0c;以下为本次安装的一个小小的记录。 目录 基于Oracle VM VirtualBox的ubuntu的安装Oracle VM VirtualBox的下载与安装ubuntu的下载Oracle VM VirtualBox下安装ubuntu安装 ROS Melodi…

GitHub 开源神器 Bark模型,让文本转语音更简单

今天跟大家分享一个文本转语音的开源模型&#xff1a;Bark Bark 是由Suno创建的基于转换器的文本到音频模型。Bark 可以生成高度逼真的多语言语音以及其他音频 - 包括音乐、背景噪音和简单的音效。该模型还可以产生非语言交流&#xff0c;如大笑、叹息和哭泣。 该项目刚开源不…

二叉树OJ题(C++实现)

文章目录 1.二叉树创建字符串2. 二叉树的最近公共祖先3.二叉搜索树与双向链表4.从前序与中序遍历序列构造二叉树 1.二叉树创建字符串 二叉树的层序遍历 OJ连接 主要思路是借助一个队列&#xff0c;将每一层的数据以size统计&#xff0c;当size为0时说明该层数据已经输入完&…

Unity Physics2D 2d物理引擎游戏 笔记

2d 材质 里面可以设置 摩擦力 和 弹力 Simulated&#xff1a;是否在当前的物理环境中模拟&#xff0c;取消勾选该框类似于Disable Rigidbody&#xff0c;但使用这个参数更加高效&#xff0c;因为Disable会销毁内部产生的GameObject&#xff0c;而取消勾选Simulated只是禁用。…

详解C语言string.h中常用的14个库函数(四)

本篇博客会讲解最后4个函数&#xff0c;分别是memset, memcpy, memmove, memcmp。这4个函数开头都是mem&#xff0c;即memory&#xff08;内存&#xff09;的缩写。 memset void * memset ( void * ptr, int value, size_t num );memset可以用来设置内存中的值。该函数可以把从…

深度学习实战——循环神经网络(RNN、LSTM、GRU)

忆如完整项目/代码详见github&#xff1a;https://github.com/yiru1225&#xff08;转载标明出处 勿白嫖 star for projects thanks&#xff09; 目录 系列文章目录 一、实验综述 1.实验工具及内容 2.实验数据 3.实验目标 4.实验步骤 二、循环神经网络综述 1.循环神经…

【数据结构】第五章 树与二叉树

文章目录 知识体系5.1 树的基本概念5.1.1 树的定义5.1.2 基本术语5.1.3 树的性质 5.2 二叉树的概念5.2.1 二叉树的定义和主要特性5.2.2 二叉树的存储结构 5.3 二叉树的遍历和线索二叉树5.3.1 二叉树的遍历5.3.2 线索二叉树 5.4 树、森林5.4.1 树的存储结构5.4.2 树、森林与二叉…

uniapp踩坑之项目:各端条件编译

在 HBuilderX 中&#xff0c;ctrlalt/ 即可生成正确注释&#xff08;js&#xff1a;// 注释、css&#xff1a;/* 注释 */、vue/nvue模板&#xff1a; &#xff09;。 #ifdef&#xff1a;if defined 仅在某平台存在#ifndef&#xff1a;if not defined 除了某平台均存在%PLATFORM…

ARM busybox 的移植实战2

一、busybox 源码分析1 1、源码目录梳理 2、整个程序入口的确认 (1) 分析一个程序&#xff0c;不管多庞大还是小&#xff0c;最好的路线都是 按照程序运行时的逻辑顺序来。所以找到一个程序的入口至关重要。 (2) 学 C 语言的时候都知道&#xff0c;程序的主函数 main 函数就是…

机器学习算法 随机森林

文章目录 一、概述1.1 集成学习1.2 决策树1.3 随机森林 二、Sklearn中的随机森林2.1 分类树API2.2 参数 2.2 回归树API2.2.1 重要参数 2.3 随机森林调参 三、总结 一、概述 1.1 集成学习 多个模型集成成为的模型叫做集成评估器&#xff08;ensemble estimator&#xff09;&am…

车载软件架构——闲聊几句AUTOSAR BSW(二)

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 我特别喜欢一个老话,来都来了。我觉得这就是松弛感,既然来了,就开心起来吧!松弛感来自于专注,焦虑不是靠克服的,是靠忘记的,当你很专注做一件事的时候…

HNCTF-re部分复现

目录 [HNCTF 2022 WEEK3]Help_Me! [HNCTF 2022 WEEK3]Whats 1n DLL? [HNCTF 2022 WEEK4]ez_maze 这几天在做HNCTF的week3&#xff0c;week4部分&#xff0c;学到了一些不知道的没接触过的东西&#xff0c;所以记录一下 [HNCTF 2022 WEEK3]Help_Me! 题目下载&#xff1a;下…

onnx笔记2:onnx操作实例

1. 介绍 本文以yolov5s模型,演示对yolov5s.onnx模型文件的读取,修改等操作 2. onnx操作 2.1 获取数据 (1) 案例1 :读取weights数据 比如获取yolov5s.onnx第一个Conv的weights数据。 点击左侧第一个Conv, 右侧INPUTS下面的W点开+号,可以看到该Conv的weight的name为m…

MySQL --- 主从复制、读写分离

一、MySQL主从复制 MySQL数据库默认是支持主从复制的&#xff0c;不需要借助于其他的技术&#xff0c;我们只需要在数据库中简单的配置即可。接下来&#xff0c;我们就从以下的几个方面&#xff0c;来介绍一下主从复制 1.1、介绍 MySQL主从复制是一个异步的复制过程&#xff0c…