RapidIO的简介
RapidIO互连架构是一个开放的标准,满足了嵌入式基础设施在应用方面的广泛需要。可行的应用包括连接多处理器、存储器、网络设备上的存储器映射I/O器件、存储子系统和通用计算平台。
RapidIO互连定义包括两类技术:面向高性能微处理器及系统互连的并行接口;面向串行背板、DSP和相关串行控制平面应用的串行接口。串行和并行RapidIO具有相同的编程模型、事务处理和寻址机制。
RapidIO支持的编程模型包括基本存储器映射I/O事务、基于端口的消息传递和基于硬件一致性的全局共享分布式存储器。RapidIO也提供各种错误检测机制,还提供定义良好的硬件和基于软件的架构以报告并纠正传输错误。
RapidIO互连被定义为分层结构,在保证后向兼容性的同时提供了可扩展性和未来增强的可能。
RapidIO互连技术
RapidIO采用三层分级体系结构。逻辑层规范位于最高层,定义全部协议和包的格式,它们为端点器件发起和完成事务提供必要的信息。传输层规范在中间层,定义RapidIO地址空间和在端点器件间传输所需的路由信息。物理层规范在整个分级结构层的底部,包括器件级接口的细节,如包传输机制、流量控制、电气特性和低级错误管理。
RapidIO技术主要面向高性能嵌入式系统的互连通信,它采用高性能LVDS技术,可以在4对差分线上实现10Gbps的有效传输速率,而且具有万兆以太网、PCI express更高的传输效率。由于RapidIO在路由、交换、容错纠错、使用方便性上有较完善的考虑,可以实现基于硬件的高性能可靠数据传输,所以必将在嵌入式系统、3G和3G之后的Beyond3G、4G移动通信基站、高性能数字信号处理系统等中得到广泛应用。
大多数电子系统实现三个基本功能:处理数据、来回移动数据和存储数据,即在处理和传输数据时,也在沿途不同的地方存储这些数据。开发RapidIO技术正是为了在嵌入式系统内提供以交换互连而非总线为基础的传输数据的标准方法,从而能够替代很多现有总线技术或基于交换的技术如PCI、VME、Utopia、Infiniband、Ethernet(在系统内使用)或者SPI4。
RapidIO的应用
RapidIO属于系统内部互连技术。目标应用是高性能的嵌入式设备市场中的系统内部互连。
RapidIO互连适用于多器件紧耦合的工作环境。RapidIO可以用于PCI到PCI透明桥接,允许扁平结构并使用更少的引脚传输更远的距离。
RapidIO非常适合于热插拔应用,因为RapidIO的点到点拓扑结构可以使设备的抽离对相邻设备或子系统仅有非常少的电气影响,甚至没有影响。
RapidIO互连结构协议
在RapidIO互连结构协议中,其主要针对以下几个方面进行了定义:
1. 输入输出(I/O)接口的逻辑操作规范
I/O逻辑操作支持RapidIO存储空间的基本读写。I/O操作可以通过使用请求、响应事务对来完成。请求和响应事务对穿越RapidIO交换结构运行,但当事务穿越交换结构时RapidIO交换结构并不跟踪该事务。
在RapidIO体系结构中定义了6种基本的I/O操作,以及相应使用的事务。
1. 读操作,使用的事务是:NREAD、RESPONSE;
2. 写操作,使用的事务是:NWRITE;
3. 有响应写操作,使用的事务是:NWRITE_R、RESPONSE;
4. 流写操作,使用的事务是:SWRITE;
5. Atomic(读-修改-写)操作,使用的事务是:ATOMIC、RESPONSE;
6. 维护操作,使用的事务是:MAINTENANCE。
2. 消息传递的逻辑操作规范
当数据必须被系统中的多个处理器共享时,必须有协议维护和管理多个器件对共享数据的临时占用。在“非共享”的系统中,需要一种机制把数据从一个处理器件传递到另一个器件。使用消息传递(Message Passing)和信箱(mailbox)可以实现这种机制。
RapidIO互连协议提供了一种有用的消息传递机制。RapidIO消息传递协议描述了支持信箱和门铃通信的事务。RapidIO信箱是一个端口,器件间可通过它发送消息。接收器件在消息到达后对其进行处理。RapidIO消息的长度从0到4096字节不等。一个接收器件有1~4个可寻址消息队列来捕获呼入的消息。
RapidIO消息传递逻辑规范定义了两种不同的包格式用于消息事务:
1. 第10类包(门铃事务DOORBELL)格式用来发送非常短的16位数据载荷,门铃事务很适合发送处理器间的中断
2. 多事务消息用第11类包发送最多4096字节的数据载荷
RapidIO消息事务描述系统中用来在处理部件间通信的包。RapidIO行业协会既没有规定实际的发送和接收缓冲区的结构,也没有为消息结构定义标准软件API接口。
消息经常被写入或读出处理部件的本地存储器缓冲区。根据期望的消息负载,可能使用不同的结构来支持与发送和接收硬件相关的消息缓冲区的使用和再使用。
3. 公共传输规范
公共传输规范定义了一种标准的传输机制,这样做的目的是为了使头信息加进RapidIO的逻辑包,并且头信息可以通过交换结构来说明。RapidIO互连确定这一机制的执行过程,这个执行过程同样也需要RapidIO互连定义其物理层特性,比如I/O信号水平、互连的拓扑结构、物理层协议,以及错误检测。
在这一章节里,RapidIO逻辑规范定义了三个传输方式,传输方式将作为独立的结构,因此系统互连可以为任何特定的应用提供需要,而且,所以传输方式和它们的逻辑包都是以比特流的形式相互传递。这三种传输方式分别为:
1. 系统拓扑结构:在RapidIO中,器件与器件间的通信时通过发送包含源和目的器件ID的包进行的。在使用器件ID作为系统级寻址方案的基础上,RapidIO几乎可以支持任何系统拓扑结构,主处理器必须复制所有器件的所有表并负责在路径故障事件发生前和发生后改变系统拓扑结构,也可以通过与系统中所有器件的交互和通过向系统中所有器件发送后期事件(post-event)来测试所有连接路径配置的正确性。
2. 基于交换的系统:基于RapidIO的处理器和交换产品建立的系统,交换机组成的互连结构通过翻译传输字段路由从一个处理器件发往另一个处理器件的包。由于请求经常要求响应,所有传输字段包含包的源器件ID和目的器件ID。源器件ID决定返回请求器件的路径。
3. 系统中包的路由:路由RapidIO包通过交换结构的最常用方法在交换机中使用路由表。互连交换结构中的每个交换机都有一个查询表,指示交换机怎样根据目的器件ID将每个包从输入端口路由到输出端口。具体采用哪一种路由方式取决于实际的应用。
4. 8/16位链路协议端点的物理层规范
8/16位链路协议端点规范(8/16 LP-LVDS)详细规定了使用IEEE标准LVDS信号技术时同时发送或接收8/16位数据、时钟和帧(FRAME)信号的方法。
8/16 LP-LVDS接口是一种源同步接口。这意味着时钟会与相关数据一起传送,也意味着在发送和接收时钟间不用定义相位关系,而且这两个时钟可以工作在不同频率。在较高频率使用源同步时钟可以进行更长距离的传输。16位接口可用两个时钟组成时钟对来帮助控制偏移(skew)现象。
LVDS是一种面向短距离印刷电路板应用的低摆幅恒流差分信号技术。LVDS是技术独立的,可以在CMOS上实现。差分信号改进了噪声容限,对外部产生的噪声、低程度电磁干扰具有免疫力,并减少了电源和地信号的引脚数。RapidIO规范建议在传输高频信号时附加源端匹配电阻来减小信号反射效应。
在RapidIO并行物理层协议里,包和控制符号信息被分解到宽度为8位或者16位的接口中,而不是到单通道或者四通道的接口。并行接口使用IEEE LVDS(低电压差分信号)标准的差分电气信号,而串行接口使用基于IEEE XAUI标准的差分电气信号。
并行物理层的功能包括包传输、流量控制、错误管理以及其他的系统功能。
5. 全局共享存储器的逻辑操作规范
支持全局共享的分布式存储器系统是RapidIO协议的扩展功能之一。这意味着可以吧存储器放到系统中不同的物理位置上,可以正确的再不同处理器件间缓存。
尽管RapidIO协议主要是面向信息传递的编程模式,在RapidIO协议规范里,它同样支持全局分布式共享存储器(GSM)的模型。在全局分布式共享存储器编程模型中,首先选择的编程模型是现代通用多处理器计算机系统,而这需要得到硬件高速缓存一致性的支持。另外,在RapidIO协议中,额外增加的GSM能够使分布式I/O处理器件和多用途处理器件同时存在。
RapidIO制定了一种基于目录的一致性解决方案来支持这种方法。使用这种方法,每个存储器控制器都有责任跟踪每个数据元素的当前副本在系统中位于什么位置,为一致域中的每一器件维护一个目录,跟踪每个器件的修改、共享、位置(MSL)等简单的一致性状态。
对于一个基于RapidIO技术的计算系统,它是一个多重处理系统,通常使用RapidIO将一个外围桥接部件和几个处理部件连接在一起。系统中的处理部件提供以下功能:处理、存储器控制以及与RapidIO互连控制器的连接。系统中桥接部分向I/O子系统提供服务,如高速PCI接口、千兆以太网端口、中断控制和其他系统支持的功能。
6. 1x/4x串行RapidIO端口的物理层操作规范
RapidIO串行物理层,通常称为串行RapidIO,针对板上或通过背板的器件间的电气连接。串行物理层定义器件间的全双工串行链路,在每个方向上使用单向差分信号。RapidIO串行物理层支持RapidIO器件间的包传送,包括包和控制符号的传送、流量控制、错误管理和其他器件到器件的功能。
由于串行RapidIO规范仅在物理层定义(RapidIO技术定于物理层为电气接口和器件到器件的链路协议),多数RapidIO控制器的逻辑是相同的。因此,串行RapidIO规范保留了许多已有的设计经验和经过证实的基础结构,简化了并行与串行链路间的系统级交换操作。
RapidIO串行物理层有如下特征:
1. 采用8B/10B编码方案将发送时钟嵌入到数据中;
2. 在每个方向上支持一个串行差分对,称为1通道;或支持四个并列的串行差分对,称为4通道;
3. 使用专用的8B/10B码来管理链路,管理内容包括流量控制、包定界和错误报告;
4. 允许在RapidIO 1x/4x LP-Serial(串行RapidIO)端口和RapidIO物理层8/16 LP-LVDS(并行RapidIO)端口之间进行包传输而无需包处理;
5. 使用与并行RapidIO物理层相似的重传和错误恢复协议;
6. 支持每通道1.25G、2.5G和3.125G波特率(数据流为1.0Gbps、2.0Gbps和2.5Gbps)的传送速率。
7. 系统与器件的交互操作规范
RapidIO互连结构协议设置了一个框架来允许协议的应用更加广泛。本章提供了一个标准器件和系统设计解决方案的协调能力。本章一共可以分为4个部分:
1. RapidIO启动和初始化编程
一旦配置好RapidIO系统,系统就会在RapidIO互连结构中透明地传递存储器和I/O事务。RapidIO操作完全由硬件处理,对软件是透明的。RapidIO具有多种操作模式,但只有工作在存储器映射I/O总线模式下才对软件透明。对RapidIO自身的配置也能体现出RapidIO对软件的可见性。这里指RapidIO硬件和系统软件间需要进行交互以初始化RapidIO端点,确保链路的运行并正确的发送和接收数据包,如此才能正确配置系统中的所有交换机,并建立存储器映射以提供期望的器件间的系统可见性。
2. RapidIO器件的分类
RapidIO协议介绍了三类器件的类型:处理部件、I/O处理部件和交换处理部件。
3. 与PCI技术交互问题的考虑
RapidIO包含丰富的操作和能力,可以很容易地以透明方式支持PCI等既有互连技术的传输。虽然RapidIO和PCI有着类似的功能,但是这两种互连技术有着不同的协议并需要一个转换函数来在它们之间传递事务。
对于需要在RapidIO和PCI之间传输的事务,必须进行以下操作:
1. 把PCI总线中定义的地址空间映射到RapidIO互连的地址空间
2. 把PCI事务转换成RapidIO操作
3. 维护PCI总线中产生者/用户的需求
4. 全局共享存储器器件
这个在前面已经提到过了。
8. 错误管理的扩展操作规范
这一章节里,RapidIO协议中的错误管理的扩展操作规范分了三个方面对错误管理进行阐述:
1. 错误管理的扩展
RapidIO协议中,错误管理的扩展规范是所有物理层和逻辑层都必需的内容。这些规范添加了以前保留在端口N控制的CSR所定义的比特,并且增加了新的寄存器来补充错误管理扩展功能块。
2. 错误管理寄存器
这一部分描述了错误管理扩展功能块,并且在标准物理层寄存器上增加了新的比特。当对于器件的执行过程中这些比特不需要时,“终端”和“交换端”寄存器的比特应该保留。
3. 错误管理的讨论
在嵌入式基础设施应用中,系统平均故障间隔时间和平均修复时间通常是重要的考虑因素。多数RapidIO错误覆盖操作由物理层规范处理,根据物理环境支持不同的覆盖策略而不会对其他规范层产生影响。
控制符号是硬件错误恢复机制的核心。如果检测出某一包的检验和错误,则发送控制符号来确认发送方和接收方是否依然保持同步,并发送重传包控制符号。如果接口发生严重的故障,RapidIO硬件可产生中断,这样系统软件可调用高级错误恢复协议进行错误恢复。
9. 流控制逻辑层的扩展操作规范
流量控制是任何互连技术的重要内容。流量控制指在任意时间互连技术采用的某些规则和机制,根据这些规则和机制决定任意时间从可能获得的若干事务中选择哪一事务进行发送。流量控制的目的是使器件完成系统中的事务,避免被其他事务阻塞。基于总线的互连技术使用仲裁算法来确保器件进行恰当的转发操作,确保高优先级的事务先于低优先级的事务得到转发。采用交换的互连技术,事务从系统的不同位置进入,从而无法使用集中式的仲裁机制。
RapidIO使用若干补充机制来获得系统中平稳的数据流并避免系统死锁。下面介绍两种机制的流量控制方案:
1. 链路级流量控制
RapidIO的目标之一是尽可能限制开销和复杂度,尤其在流量控制方面。由于事务流和物理互连和系统划分密切相关,规定流量控制为RapidIO物理层规范的内容。事务请求流使系统人员可以通过控制通过机器的流量来保证重要的操作行为。
RapidIO在链路级定义了三种流量控制机制:重传、减速和基于信用的流量控制。重传机制是最简单的机制,不仅用于流量控制,还用于硬件错误恢复。减速机制使用空闲控制符号,发送包时可以在包中插入空闲控制符号,以便器件在包间插入等待状态。基于信用的流量控制机制可供带有事务缓冲区的器件,尤其是交换结构使用。
2. 端到端的流量控制
端到端的流量控制机制使用由交换或端点器件产生的特殊拥塞控制包来控制流量。通过交换结构将拥塞控制包传回引起拥塞的源器件,持续关闭拥塞流量一段时间。该机制通过限制源头流量来达到降低系统流量拥塞的效果。
链路级流量控制机制属于物理层规范,用控制符号进行流量控制,以之不同的是,端到端流量控制机制属于逻辑层事务,用包进行流量控制。
10. 数据流的逻辑操作规范
本章提供了一个概述RapidIO协议的第10部分:数据流逻辑操作规范。该规范的目的是为了提高效率相结合的需要、机动性和协议的独立性,以尽量减少用来支持数据平面互连结构所必须的资源,保证RapidIO协议有充分的余地来保持兼容性和互操作性。
数据流逻辑层与其他逻辑层在多个方面有所不同。数据“流”被定义为源或输出器件与目的或输入器件间的持续关系。数据流包括多个有离散时间间隔分隔开的单向事务。事务间的时间间隙允许在系统中同时存在许多流,并使多个流量可以共同使用一个交换结构。系统为单独流提供了管理服务质量的能力,该能力决定了如何使用交换结构资源和如何可靠地保护每一流的事务联系。
RapidIO数据流逻辑层的目的是为封装和传输穿越RapidIO交换结构的数据流提供一种标准方法。I/O逻辑定义的存储器、输入/输出和GSM逻辑层操作既可以是单向的也可以是双向的操作。在所有情况下,通信双方总会进行隐式的交互。与此相反,数据流器件的流量可能是双向的,但在相反方向上传输的数据之间几乎没有任何联系。
RapidIO数据流逻辑层的特征为:
1. 支持独立流事务
2. 通过SAR功能支持长度可变的PDU
3. 与内部PDU协议无关
4. 支持虚拟流识别
5. 支持各种程度的流量管理
11. 多点传送的扩展操作规范