Rapid IO 逻辑操作和事务类型介绍

 I/O逻辑操作支持RapidIO存储空间的基本读写,它可以通过请求和响应事务对来完成。请求和响应事务对穿越 RapidIO交换结构运行, 但当事务穿越交换结构时RapidIO交换结构并不跟踪该事务。从交换结构的角度看, 请求事务和与之对应的响应事务间并没有明确的关系。虽然系统中可能存在多个中间交换器件和由此引起的多次包转发,但是从RapidlO逻辑层的角度来说,请求事务和响应事务只有一个(如果需要响应的话),中间交换器件不区分请求和响应事务,它们的作用只是转发事务到它们的最终目的地。

      在 RapidIO体系结构中定义了6种基本的I/O操作, 下表给出了这6种基本的I/O操作、用来执行相应操作的事务和对操作的描述,

 1、读操作(NREAD)

    读操作由一个NREAD事务和一个RESPONSE事务组成,NREAD事务由请求方(Requestor)发起,目标方(Destination)正确的处理请求方发过来的响应以后会给请求方反馈正确的响应以及请求方读取的数据。整个操作的示意图如下所示

2、写操作(NWRITE)和流写操作(SWRITE)

     写操作(write operations)和流写操作(streaming-write operations)分别由NWRITE和SWRITE事务组成。请求方可以用这两种事务往目标方指定的地址写入数据。NWRITE事务允许多个双字(double-word),字(word),半字(half-word)和字节(byte)作为数据负载(Data Payload)进行传输,但前提是必须对数据进行适当的补0(padded)并进行8字节边界对齐。而SWRITE事务相当于用NWRITE事务传输双字(double-word)的情况,并且SWRITE事务具有更少的头部开销(SWRITE事务的包格式中把Ttype,Rdsize/Wrsize和srcTID三个字段全部定义为了Extended Address字段的一部分,所以头部开销变少)。NWRITE事务和SWRITE事务不需要接收目标方的响应,所以当事务被目标方处理完以后并不会给发起方反馈任何信息。NWRITE事务与SWRITE事务的操作示意图如下图所示

3、带响应的写操作(NWRITE_R)

        带响应的写操作(write-with-response operations)由NWRITE_R事务和RESPONSE事务组成。它的整个请求操作和NWRITE事务的请求操作完全相同,但是在目标方正确处理请求方的NWRITE_R事务以后,目标方会给请求方反馈一个响应包告诉请求方事务已经被正确的处理。这种机制可以有效的保证数据传输的稳定性。NWRITE_R事务的处理流程如下图所示

4、原子操作(Atomic Operations)

      原子操作(Atomic Operations)又叫做读-修改-写操作(Read-modify-Write Operations),它是由ATOMIC事务和RESPONSE事务组成,许多协处理器单元使用该操作来执行非一致性(non-coherent)存储器的同步。它允许携带的数据量为一个字(4个字节),一个半字(2个字节)或者一个字节,其他数据量都是不被允许的。

       原子操作既包含了读操作,也包含了写操作。目标方读取指定地址的数据,并把读取的数据返回给请求方,然后对数据执行相关的操作,最后在写回指定的地址。这个过程不会被任何其他的事务干扰或者打断。对数据执行的操作包括加1运算(increment),减1运算(decrement),测试和交换(test-and-swap),置1操作(set)和清0操作(clear),在这些操作中,只有测试和交换(test-and-swap),比较和交换(compare-and-swap)以及交换(swap)需要处理单元提供数据。原子操作的目标数据可以用NWRITE事务进行初始化。原子操作的整个操作示意图如下图所示

5,维护操作(Maintenance

     如图中所示,可以包含多个维护事务所示的维护操作,需要将数据读写到指定的CAR、CSR或本地定义的寄存器或数据结构。如果需要响应,则维护请求接收的是维护响应,而不是读取和写操作的正常响应。支持的访问量为32位,也可以选择为双字和多个双字数量,最多为64字节。

6,门铃操作(Doorbell Operations

     门铃操作,由门铃和响应事务(通常是一个完成响应)组成,如图所示,被一个处理元素用于通过互连结构向另一个处理元素发送一个非常短的消息。门铃事务包含保存信息的信息字段,并且没有数据有效负载。该字段是由软件定义的,可用于任何期望的目的;

   接收门铃事务的处理元素接收该包并将其放在该处理元素内的门铃消息队列中。这个队列可以在硬件或本地内存中实现。此行为类似于典型的邮件传递邮箱硬件。本地处理器需要读取队列,以确定发送处理元素和信息字段,并确定基于该信息要采取什么操作

7,数据消息操作(Data Message Operations)

   如图所示的消息和响应事务(通常是DONE响应),被处理元素的消息传递支持硬件用于向其他处理元素发送数据消息。完成数据消息操作最多可以包含16个单独的消息事务。消息事务数据的有效负载总是双字数量的倍数.

         1 ,消息长度(msglen)字段—指定组成数据消息操作的事务处理数。

          2,消息段(msgseg)字段-标识此事务中包含的数据消息操作的哪一部分。消息长度和段字段允许无序地发送或接收数据消息的各个数据包。

          3,邮箱(mbox)字段—指定哪个邮箱是数据邮件的目标

          4,字母(Letter)字段—允许接收来自同一源到同一邮箱的多个并发数据消息操作。

         5 ,标准大小(ssize)字段—指定除数据消息中(可能的)最后一个事务以外的所有事务的数据大小。

      根据该信息,接收方处理元素的消息传递硬件可以计算出事务数据应该被放置到哪个本地存储器地址

操作类型和事务由 Ftype字段 和 Ttype字段决定如下表所示

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值