RapidIO操作协议
来源:互联网 发布:python 登录知乎 编辑:程序博客网 时间:2024/05/16 09:36
RapidIO操作协议
逻辑层协议定义了 10操作协议和相应的数据包格式、门铃的格式、流量控制。
I/O操作协议在互连结构中利用请求/响应事务来完成。请求和相应对穿越RapidIO交换结构运行,但当事务穿越交换结构时RapidIO交换结构并不跟踪该事务。
在RapidIO体系结构中定义了6种基本的I/O操作,以及相应的事务。
操作
所使用的事务
可能的系统用途
传输格式
读Read
NREAD,
RESPONSE
读操作
Type 2
写Write
NWRITE
写操作
Type 5
Write-with-response
(带响应的输入)
NWRITE_R,
RESPONSE
写操作
Type 5
Streaming-write
(流写入)
SWRITE
写操作
Type 6
Atomic
(read-modify-write)
自动读-修改-写
ATOMIC,
RESPONSE
读-修改-写操作
Type 2
Type 5
Maintenance
维护
MAINTENANCE
系统查找,初始化和维护操作
Type 8
读操作
读操作由NREAD和事务RESPONSE(通常是响应)组成,下图用处理单元通过指定的地址读取数据,读取指定对应大小的数据,如果读操作是存储器,那么数据就从存储器中返回,而不管指定的高速缓存行或行的任何系统范围的缓存一致性机制的状态。
图 读操作
写操作和流写操作
写操作(NWRITE)和流写操作(SWRITE),如下图所示,用处理单元通过指定的地址读取数据,NWRITE事务允许多个双字、字、半字和字节以有效载荷的合理补充对齐方式(以字节为边界)进行写入。SWRITE事务是仅能写入双字形式的NWRITE版本,它有较少的头部开销。系统不支持非连续写操作和非对齐写操作。如果数据块没有对齐,请求端将负责将写操作的分解为多个事务。
事务不接收响应,所以当事务在目的地完成时,发送端将没有任何提示。
图 写操作和流写操作
带响应的写操作
图 带响应的写操作
原子(读改写)操作
读改写操作包括原子和响应事务。允许的指定数据大小是一个单词(4字节)、一个半字(2字节)或一个字节,其大小与指定的事务相同。对于一个NWRITE方式。双字(字节)和3, 5, 6字节和7字节的原子事务不可以指定。图 读改写操作
维护(maintenance)操作
维护操作是对SRIO本身寄存器的访问请求,如图所示,需要读或者写到特定的CARs,CSRs、本地定义的寄存器或者数据指令,如果一个响应命令,维护请求接收到一个比而不是普通读写操作的响应。支持访问32位并且可以选择双字和多个双字数量,对多为64字节。
图 维护操作
包格式描述
RapidIO逻辑层定义了请求、响应、编译器确认、保留。
表 请求包的通用定义
Field
Definition
ftype
格式类型, 4bit; 逻辑报文的前四个bit
wdptr
字针, 与数据大小 (rdsize and wrsize) 字段共同使用
rdsize
读事务数据大小字段
wrsize
子双字事务中写数据的大小,与字指针(wdptr)比特协同使用。当写入大于一个双字的数据时,数据大小应该设为接收端的最大有效载荷
rsrv
Reserved保留
srcTID
The packet’s transaction ID数据包的事务ID
transaction
格式类中指定给接收端的事务;也被称为type或者ttype
Extended address
可选字段。指定50位地址中的高16位或者66位地址中的高32位
xamsbs
扩展地址中高位比特。将address或extended address字段中的地址进一步扩充两位。这个字段可以提供数据包指定的34位,50位和66位地址的高位比特
address
字节地址[0-28]或者双字物理地址[0-31]
Addressing and Alignment(寻址和对齐)
Type 0 Packet Format(Implementation-Defined)
type 0类型0包格式是为实现定义的函数保留的,例如流控制。
Type 1 Packet Format (Reserved)
Type1报文形式保留。
Type 2 Packet Format (Request Class)
图 TYPE2 (请求类)的包格式
表 transaction的字段类型
Encoding
Transaction Field
0b0000–0011
Reserved
0b0100
NREAD transaction
0b0101–1011
Reserved
0b1100
ATOMIC inc: post-increment the data
0b1101
ATOMIC dec: post-decrement the data
0b1110
ATOMIC set: set the data (write 0b11111...’)
0b1111
ATOMIC clr: clear the data (write 0b00000...’)
Type 5 Packet Format (WriteClass)
类型5数据包格式通常都包含数据的有效负荷。
由单个双字或以下组成的数据有效载荷具有表中定义。wrsize字段指定多个双字事务的数据有效载荷的大小。 数据有效载荷不超过该大小,但如果需要,可能会更小。 ATOMIC,NWRITE和NWRITE_R事务使用表4-6中定义的5类格式。 NWRITE请求数据包不需要响应。因此,NWRITE请求的事务ID(srcTID)字段未定义,并且可以具有任意值
请求数据包不需要响应。因此,请求的事务字段未定义,可以是任意值,而—请求的事务必须定义。数据包格式写入类数据包)格式如图所示,图中方框内为请求数据包格式的字段,图下的数字是各字段的长度。
ATOMIC测试和交换事务限于一个双字(8字节)的数据有效负载。 为写事务定义的寻址方案还控制存储器中原子操作的大小,因此字节应是连续的,并且应该是大小字节,半字(2字节)或字(4字节),并且对齐到该边界和字节通道与常规写入事务一样。 不允许双字(8字节)和3,5,6和7字节的ATOMIC测试和交换事务。
表Write Size (wrsize) Definitions (Continued)
wdptr
wrsize
Number of Bytes
Byte Lanes
0b0
0b1001
6
0b11111100
0b1
0b1001
6
0b00111111
0b0
0b1010
7
0b11111110
0b1
0b1010
7
0b01111111
0b0
0b1011
8
0b11111111
0b1
0b1011
16 maximum
0b0
0b1100
32 maximum
0b1
0b1100
64 maximum
00b
0b1101
reserved
0b1
0b1101
128 maximum
0b0
0b1110
reserved
0b1
0b1110
reserved
0b0
0b1111
reserved
0b1
0b1111
256 maximum
表Transaction Fields and Encodings for Type 5 Packets
Encoding
Transaction Field
0b0000–0011
Reserved
0b0100
NREAD transaction
0b0101
NWRITE_R transaction
0b0110–1011
Reserved
0b1100
ATOMIC swap: read and return the data, unconditionally write with supplied data.
0b1101
ATOMIC compare-and-swap: read and return the data, if the read data is equal to the first 8 bytes of data payload, write the second 8 bytes of data to the memory location.
0b1110
ATOMIC test-and-swap: read and return the data,
compare to 0, write with supplied data if compare is true
0b1111
Reserved
图 数据包格式(写入类)包格式
Type 6 Packet Format(Streaming-Write Class)流写入类
Type 6是一种特殊目的数据包类型,它总是包含有数据。数据有效载荷最小为一个完整的双字。因为事务是唯一使用数据格式类型的事务,所以数据包中不需要事务字段。同样,数据包中也不包含大小和事务字段。数据包格式流写入类数据包)格式如图所示,图中方框内为请求数据包格式的字段,图下的数字是各字段的长度。
图数据包格式流写入类)包格式
Type 7 Packet Format (Reserved)
Type 8 Packet Format (Maintenance Class)
格式维护类数据包格式,被用来访问能力寄存器(CAR)和状态寄存器(CSR)。与其他请求格式不同,类型8数据包格式既用于维护操作的请求和响应格式。 类型8数据包不包含地址,只包含写入请求和读取响应的数据有效载荷。 所有配置寄存器读取访问都以字(4字节)和可选的双字(8字节)或可指定的多个双字数(最多64字节)执行。 所有寄存器写入访问也以字(4字节)和可选的双字(8字节)或多个双字数量执行,最多为64字节。
wrise字段规定了多双字事务数据荷载的最大长度。数据荷载的长度不能超过这个最大长度,但如果需要,可以比这个最大长度小。维护读和维护写请求产生正确的维护响应。
维护端口写操作是一种写入操作,它不具有保证传递,并且没有相关的响应。此维护操作对于从不包含终点的设备(如交换机)发送消息(如错误指示器或状态信息)很有用。数据有效载荷通常放置在目标终点中的队列中,并且通常会向本地处理器生成中断。 可能会丢弃对服务其他请求的全或忙的队列的端口写入请求。
表Type8数据包特定字段的定义和编码
Type 8 Fields
编码
描述
transaction
0b0000
指定维护读取请求
0b0001
指定维护写请求
0b0010
指定维护读响应
0b0011
指定维护写响应
0b0100
指定维护端口写请求
0b0101–1111
保留
config_offset
—
双字偏移到CAR / CSR寄存器块中用于读取和写入
srcTID
—
Type8 请求数据包的事务ID(为端口写请求保留)
targetTID
—
status
0b0000
Done 请求处理完成
0b0001–0110
保留
0b0111
错误 检测不可恢复错误
0b1000–1011
保留
0b1100–1111
实现定义 - 可以用于其他信息,如错误代码
图 数据包Type8格式(维护请求类)包格式
图 数据包Type8格式(维护响应类)包格式
Type 9–11 Packet Formats(Reserved)
Response Packet Formats(响应包格式)
当处理元件完成远程处理元件对它的请求时,响应事务由处理元件发出。响应数据包总是被引导,并以与请求数据包相同的方式发送。 目前存在两种数据包格式类型,如表所示
表 响应数据包类型到事务类型交叉引用
响应包格式
处理格式
定义
Type 12
—
保留
Type 13
RESPONSE
处理单元在完成远程单元请求时发出
Type 14
—
保留
Type 15
Implementation-defined
由设备实现定义
Type 12 Packet Format(Reserved)
Type 13 Packet Format (ResponseClass)
Type13数据包格式返回状态,数据(如果需要)和请求者的事务ID。 具有“ERROR”状态的RESPONSE数据包或预期不具有数据有效载荷的响应从不具有数据有效载荷。 Type13格式用于除了维护和无响应写入之外的所有请求数据包的响应数据包。
图 Type13数据包比特流形式
Type 14 Packet Format(Reserved)
Type 15 Packet Format(Implementation-Defined)
Type15包格式被保留用于实现定义的功能,例如流量控制。
- RapidIO操作协议
- RAPIDIO高速串行协议
- RapidIO协议(1)
- RapidIO协议(2)
- PCIe/RapidIO 控制器基于FPGA操作说明(PCIe 部分)
- RapidIO Interconnect
- 串行 RapidIO
- RapidIO概述
- 以太网和rapidio
- RapidIO技术研究2
- RapidIO技术研究1
- PCIE-rapidio-ethernet分析
- RapidIO规范翻译
- RapidIO技术研究1
- Serial RapidIO 2.0通信测试
- Modbus协议寄存器操作
- 注册协议操作集
- 多线程操作(TCP协议)
- Java方法的重写与重载
- DNS负载均衡
- fabric8 kubernetes的nodeAffinity实现
- uva 1220
- 乐观锁与悲观锁以及乐观锁的一种实现方式-CAS
- RapidIO操作协议
- Python:matplotlib画图----如何控制画图范围,如何画两条曲线间的阴影,如何控制Y轴现实范围
- 域名恶意指向
- JavaScript正则表达式定义字符集
- SQL大量数据查询的优化
- NPM 国内镜像使用方法
- C++_编写动态链接库
- HDU 6143 Killer Names(组合数+第二类Stirling数)
- Mac下go下载安装