事务类型介绍


上两个章节是概念性的,一是理解互连的含义,二是对rapidio有个大致的认识。本章就要深入的阐述rapidio的各种协议了。描述方式采用是按功能进行分类,对每一类的协议进行详细的描述。

在RapidIO体系结构中定义了6种基本的I/O操作,也就是6种不同的事务类型(FT),每个大的事务类型有包括若干个小的事务类型(TT),如下表所示给出了这6种基本的I/O操作及用来执行相应操作的事务和对操作的描述。

操作

使用的事务

描述

请求类事务

NREAD、ATOMIC_inc、dec、set、clr

从目标器件中读数据

NWRITE

往目标器件中写数据

有响应写

NWRITE_R、RESPONSE

往目标器件中写数据,写完后等待目标的响应

流写

SWRITE

面向大数据量DMA传输优化写数据

Atomic

ATOMIC、RESPONSE

原子操作,读-修改-写,事务不能被打断

维护

MAINTENANCE

以RapidIO专用寄存器为目标的事务

对上表的分析我们也可以看出,这六个事务(FT)其实囊括了四大类功能,即读、写、Atomic和维护。为什么要将这四大类功能分为不同的事务而不直接分为四大类呢?这是因为事务的分类是按照协议的格式分的。如下图,每一条是一个协议类型,每一种协议就是一种格式,而一种格式可适用于多项功能。这种分类方式更有利于我们的程序设计和可扩展性。例如我们是功能分类,那我们肯定是分为四类,每一类可能都需要对同一个协议进行描述,所以必然造成代码的重复性。如果按照协议分类,只要我们做好每种协议的接口即可。

 image.png

但我们在理解各种协议时却可以按照功能分类来理解,如下表。

操作

使用的事务

NWRITE、NWRITE_R、SWRITE

NREAD、RESPONSE

Atomic

ATOMIC_inc、dec、set、clr、test、swap

维护

MAINTENANCE

其中写很好理解,就是A给B发数据,只不过rapidio比较厉害,支持不同的数据发送模式,具体的在下文阐述。读也是,A发出个读请求,B将数据反馈给A。Atomic呢?我们也称之为原子操作。原子本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为“不可被中断的一个或一系列操作”。这就是原子操作的特点,它类似与中断,是不可被打断的,如果把一个事务可看作是一个程序,它要么完整的被执行,要么完全不执行。这种特性就叫原子性。所以我们在用原子操作时候就要有这样的功能。维护操作是用来访问寄存器的,一般是用来访问 RapidIO能力寄存器(CARs,Capability Registers)、命令和状态奇存器( CSRs,Command and Status Register) ,本地定义的寄存器(Locally-Refined Registers)以及数据结构(Data Structures)。






快来扫描下方二维码关注公众号,领取站内所有相关资料,所有哦~

有建议、有需求、有疑问、联系我