计算机体系结构基础(第3版)
上QQ阅读APP看书,第一时间看更新

6.3 片上总线

片上总线是指芯片片内互连使用的总线。芯片在设计时,常常要分为多个功能模块,这些功能模块之间的连接即采用片上互连总线。

图6.1 龙芯2K1000芯片的结构图

例如,一个高性能通用处理器在设计时,常常会划分为处理器核、共享高速缓存、内存控制器等多个模块,而一个SoC(System on Chip,片上系统)芯片所包含的模块就更多了。图6.1是一个嵌入式SoC芯片的内部结构,可以看到里面包含了很多功能模块,这些模块之间的连接就需要用到片上互连总线。这些模块形成了IP(Intellectual Property),一家公司在设计芯片时常常需要集成其他公司的IP。这些IP的接口使用大家共同遵守的标准时,才能方便使用。因此,芯片的片上互连总线也形成了一定的标准。目前业界公开的主流片上互连总线是ARM公司的AMBA系列总线。

高级微控制器总线架构(Advanced Microcontroller Bus Architecture,简称AMBA)系列总线包括AXI、AHB、ASB、APB等总线。下面对AMBA总线的一些特点进行概括说明,这些总线的详细内容可以参阅相关总线协议。

1.AXI总线

高级可扩展接口(Advanced eXtensible Interface,简称AXI)总线是一种高性能、高带宽、低延迟的片上总线。它的地址/控制和数据总线是分离的,支持不对齐的数据传输,同时在突发传输中只需要发送首地址即可。它使用分离的读写数据通道并支持乱序访问。AXI是AMBA 3.0规范中引入的一个新的高性能协议,目标是满足超高性能和复杂的片上系统(SoC)的设计需求。

AXI总线主设备的主要信号定义如表6.1所示。可以看到,AXI总线主要分为5个独立的通道,分别为写请求、写数据、写响应、读请求、读响应。每个通道采用握手协议独立传输。

表6.1 AXI总线主要信号定义

AXI协议包括以下特点:

·单向通道体系结构。信息流只以单方向传输,符合片内设计的要求。

·支持多项数据交换。AXI协议支持的数据宽度很宽,最大可到1024位。通过并行执行突发(Burst)操作,极大地提高了数据吞吐能力,可在更短的时间内完成任务。

·独立的地址和数据通道。地址和数据通道分开便于对每一个通道进行单独优化,可以根据需要很容易地插入流水级,有利于实现高时钟频率。

(1)AXI架构

AXI协议是一个主从协议,每套总线的主设备和从设备是固定好的。只有主设备才可以发起读写命令。一套主从总线包含五个通道:写地址通道、写数据通道、写响应通道、读地址通道、读返回通道。读/写地址通道用来传送读写目标地址、数据宽度、传输长度和其他控制信息。写数据通道用来由主设备向从设备传送写数据,AXI支持带掩码的写操作,可以指定有效数据所在的字节。写响应通道用来传送写完成信息。读返回通道用来传送从设备读出的数据以及响应信息。

AXI协议的一次完整读写过程称为一个总线事务(Transaction),传输一个周期的数据称为一次传输(Transfer)。AXI协议允许地址控制信息在数据传输之前发生,并且支持多个并发访问同时进行,它还允许读写事务的乱序完成。图6.2和图6.3分别说明了读写事务是如何通过读写通道进行的。

图6.2 读事务架构

图6.3 写事务架构

AXI使用双向握手协议,每次传输都需要主从双方给出确认信号。数据的来源方设置有效(Valid)信号,数据的接收方设置准备好(Ready)信号。只有当有效信号和准备好信号同时有效时,数据才会传输。读请求通道和写数据通道还各包含一个结束(Last)信号来指示一次突发传输的最后一个传输周期。

(2)互连架构

在一个使用AXI总线的处理器系统中,一般都会包含多个主设备和从设备。这些设备之间使用互连总线进行连接,如图6.4所示。在该互连结构中,任意一个主设备都可以访问所有的从设备。比如,主设备2可以访问从设备1、2、3、4。

图6.4 AXI设备的接口和互连

为了减少互连结构的信号线个数,AXI的互连结构可以共享地址和数据通道,或者共享地址通道但使用多个数据通道。当需要连接的主从设备个数较多时,为了减少互连结构的信号线个数,AXI协议还可以很方便地支持多层次的互连结构。

(3)高频设计

AXI协议的每个传输通道都只是单向的信息传递,并且AXI协议对多个通道之间的数据传输没有规定特定的顺序关系,多个通道之间没有同步关系。因此,设计者可以很容易地在通道中插入寄存器缓冲,这对于高频设计是很重要的。

(4)基本事务

下面简要介绍AXI的读写事务。AXI协议的主要特点是使用VALID和READY握手机制进行传输。地址和数据信息都只在VALID和READY信号同时为高的情况下才进行传输。

图6.5显示了一个突发读事务的传输,其中请求由主设备发往从设备,响应由从设备发往主设备。地址信息在T2传输后,主设备从T4时刻开始给出读数据READY信号,从设备保持读数据VALID信号为低,直到读数据准备好后,才在T6时刻将读数据VALID信号拉高,主设备在T6时刻接收读数据。当所有读数据传输完成后,在T13时刻,从设备将RLAST信号拉高表示该周期是最后一个数据传输。

图6.5 突发读事务

图6.6显示了一个重叠的读事务。在T4时刻,事务A的读数据还没有完成传输,从设备就已经接收了读事务B的地址信息。重叠事务使得从设备可以在前面的数据没有传输完成时就开始处理后面的事务,从而降低后面事务的完成时间。AXI总线上,通过ID对不同的事务加以区别。同一个读事务的请求与响应中,ARID与RID相同;同一个写事务的请求与响应中,AWID、WID与BID相同。

图6.7是一个写事务的示例。主从设备在T2时刻传输写地址信息,接着主设备将写数据发送给从设备,在T9时刻,所有的写数据传输完毕,从设备在T10时刻给出写完成响应信号。

图6.6 重叠的读事务

图6.7 写事务

(5)读写事务顺序

AXI协议支持读写事务乱序完成。每一个读写事务都有一个ID标签,该标签通过AXI信号的ID域进行传输。同ID的读事务或者同ID的写事务必须按照接收的顺序按序完成,不同ID的事务可以乱序完成。以图6.6为例,图中事务A的请求发生在事务B的请求之前,从设备响应时事务A的数据同样发生在事务B的数据之前,这就是顺序完成。如果事务A与事务B使用了不同的ID,那么从设备就可以先返回事务B的数据再返回事务A的数据。

(6)AXI协议的其他特点

AXI协议使用分离的读写地址通道,读事务和写事务都包含一个独立的地址通道,用来传输地址和其他控制信息。

AXI协议支持下列传输机制:

·不同的突发传输类型。AXI支持回绕(Wrapping)、顺序(Incrementing)和固定(Fix)三种传输方式。回绕传输适合高速缓存行传输,顺序传输适合较长的内存访问,固定传输则适合对外设FIFO的访问。

·传输长度可变。AXI协议支持1到16甚至更多个传输周期。

·传输数据宽度可变。支持8~1024位数据宽度。

·支持原子操作。

·支持安全和特权访问。

·支持错误报告。

·支持不对齐访问。

2.AHB、ASB、APB总线

AHB、ASB、APB总线是在AXI总线之前推出的系统总线,本书只对它们进行简要总结,详细内容可参阅相关协议文档。

AHB(Advanced High-performance Bus)总线是高性能系统总线,它的读写操作共用命令和响应通道,具有突发传输、事务分割、流水线操作、单周期总线主设备切换、非三态实现以及宽数据总线等特点。AHB协议允许8~1024位的数据总线宽度,但推荐的数据宽度最小为32位,最大为256位。

ASB(Advanced System Bus)是第一代AMBA系统总线,同AHB相比,它支持的数据宽度要小一些,典型数据宽度为8位、16位、32位。它的主要特征有:流水线方式,数据突发传送,多总线主设备,内部有三态实现。

APB(Advanced Peripheral Bus)是本地二级总线(Local Secondary Bus),通过桥和AHB/ASB相连。它主要是为了满足不需要高性能流水线接口或不需要高带宽接口的设备间的互连。其主要优点是接口简单、易实现。

基于AMBA总线的计算机系统的结构如图6.8和图6.9所示。

图6.8 使用AHB和APB连接的微控制器系统

图6.9 使用AXI总线互连的通用高性能处理器

片上互连总线的最大特点是高并行性。由于片内走线的距离短,线宽细,因此可以实现高并行性。片上互连总线的设计需要考虑总线的通用性、可扩展性、性能以及总线接口逻辑的设计简单性等方面。