请求事务格式(FT=2)
请求类事务包括读请求和原子操作。这一类事务的执行不包括有效数据的传递,也可以将这种事务类型理解成是一个指令,对于NREAD类型事务,通过该指令请求得到另一个器件上某内存区域中的内容,内存请求的数据长度在1到256字节之间,返回的数据要进行对齐限制(通过Rdsize、Wdptr实现),数据超过8字节就应以双字的方式对齐,数据长度应该是8字节的整数倍。对于原子操作,允许请求的数据长度为单字节、双字节和四字节,不允许8、3、5、7字节。具体事务如下表。
序号 | TT | 类型 | 备注 |
1 | 0X4 | NREAD | 读操作, |
2 | 0XC | ATOMIC_inc | 增加数据 |
3 | 0XD | ATOMIC_dec | 删减数据 |
4 | 0XE | ATOMIC_set | 置位 |
5 | 0XF | ATOMIC_clr | 清零 |
图1-1 请求事务类型数据结构
字段 | 含义 |
Ftype | 事务类型,就是确定这包数据大致是干嘛的 |
Ttype | 事务类型(Transaction Type),与Ftype共同唯一的确定包的格式 |
Rdsize | 此字段根据包的类型来决定读事务数据的大小,这个字段配合wdptr(word pointer)字段一起使用,并不是简单的表示数据长度 |
Src TID | 包的事务ID(Transaction ID)号。RapidIO器件在两个端点器件间同时处理最多允许有256个事务。可以理解为两个端点间传输包的编号吧 |
Extended Address | 扩展地址,这是一个可选字段,指定50-bit物理地址的高16-bit或者66-bit物理地址的高32-bit,注意,是扩展高位。 |
Address | 29-bit的物理地址,由于RapidIO传输以一个双字(double-word)为基本单元,大多数嵌入式系统是32位的,所以一个字(word)占用4个字节,一个双字(double-word)占用8个字节,所以29-bit的物理地址指向的一个存储单元实际上是占用8个字节的,这样用29-bit的物理地址实际可以访问4G(2^32)的内存空间 |
Wdptr | 字指针(Word pointer),配合Wrsize/Rdsize字段来指明数据的大小以及对齐方式,详细的说明请查看RapidIO_Rev_2.2_Specification第33页 |
Xamsbs | 扩展地址最高位(Extended address most significant bits),把物理地址进一步扩展2位,由于29-bit的地址已经可以访问4G内存空间,在最高位扩展2位以后就可以访问16G的内存空间 |
本节最重要的内容是如何确定请求地址及请求的数据长度。
正如《RapidIO嵌入式互连》所说,Wrsize/Rdsize、Extended Address、Wdptr、Address并不是如字面意思那样简单。当初rapidio的设计为了节省位宽,将通常需要48bit表示总线事务的典型设计(32bit地址,8bit字节通道,8bit事务大小)用36比特实现。首先,请求地址为什么是29bit呢,因为rapidio是双字对齐,注意是双字不是双字节,也就是64bit对齐。Address是一个位宽为29bit的物理地址,由于29bit指定的是双字(64bit),所以支持寻址范围达4G,Xamsbs是两bit数据,作为寻址空间的最高位,将寻址范围扩大到了16G。但有个问题,由于寻址最小单元是64bit数据,那么,如果一个地址存放8bit,我们只需要取出20个字节,该如何操作呢?而且若地址不能对齐,即便数据是8的整数倍,也会出现如下图的情形。
一个发送端期望通过互联架构将其数据包发送到另外接收端中,因为流的开始和结束并不对齐到一个双字边界,发送端会将这个流拆分成3次交易如图所示,第一次交易送出头三个字节(在字节lane5、6、7),第二次交易送出所有余下的数据完整的64bit数据,第三次交易送出最后5个字节在字节lanes0、1、2、3、4。
这就需要其他数据来进行辅助定位,而且说到现在,我们还没说如何确定请求数据长度呢。所以,下面就靠Wrsize/Rdsize、Wdptr了。它们所表示的含义已经在上文表格中描述了,下面就说一下怎么用。
首先要思考一个问题,我们要用“Wrsize/Rdsize、Wdptr”做什么?两件事,1是确定数据长度,2是非边界对齐时读的或写的位置,也就是如图1-2的第一次和第三次读数据。Rapidio的巧妙设计实现了这两个功能的同时实现。
这个就是rapidio做了规定,规定“Wrsize/Rdsize、Wdptr”以什么样的组合表示什么样的情况,如下表所示。所以在设计时就需要以查找表的方式来实现。
快来扫描下方二维码关注公众号,领取站内所有相关资料,所有哦~
有建议、有需求、有疑问、联系我