基于DMA控制器的SoC系统设计
扫描二维码
随时随地手机看文章
引言
DMA(Direct Memory Access,直接存储器存取)是一种快速传送数据的机制。DMA控制器能够有效替代微处理器的加载/存储指令,显著提高系统的并行能力。DMA是在存储器与输入/输出设备间直接传送数据,是一种完全由硬件完成输入/输出操作的方式。数据传递可以从外设到内存,从内存到外设。但DMA控制器的引入也引进了影响系统响应速度的因素。本文讲述以包含单个AHB master接口的DMA控制器为基础的SoC系统架构蓝本,分析存在的不足之处,并引入一种以新型DMA控制器为基础的SoC系统架构的设计,解决提出的问题。
1 对异步事件响应速度
系统实时性是指能在限定时间内完成任务,并对外部异步事件作出及时响应。限定时间根据应用的要求不同而变化。实时系统的实时性与使用的软硬件平台有关。嵌入式系统的中断服务响应时间是指从某一个中断源发出中断服务请求,到处理器响应这个中断源的中断服务请求,并开始执行这个中断源的中断服务程序所用的这一段时间。嵌入式操作系统中的进程调度是靠中断实现的,处理器对系统中或系统外发生的异步事件的响应速度是决定系统响应速度的关键因素。中断响应时间是一个非常重要的指标。特别是在实时计算机系统中,中断响应时间是整个计算机系统的一个关键性指标。影响中断服务响应的因素有很多,如中断源本身相对于其他中断源的优先级设置。在内核不适合或不可能使用中断技术期间,不能进行中断响应。因此这段时间也相当于一段中断响应延时,DMA操作就是其中一个因素。因为DMA传输也相当于一种中断,只不过它向处理器申请的是总线控制权,而不是处理器本身。在DMA传输期间,由于处理器要把总线控制权让给DMA而失去总线控制权,尽管处理器可以做些不使用总线的工作,但肯定不会马上响应来自总线的外部中断请求,因此会造成较大的中断延时。
2 包含DMA的SoC系统架构
2.1 DMA结构介绍
一般而言,DMA控制器的功能与结构是由系统结构决定的。但是作为IP而言,DMA控制器又要有其一般性。DMA是指外部设备直接对计算机存储器进行读写操作的I/O方式。这种方式下数据的读写无需处理器执行指令,也不经过处理器内部寄存器,而是利用系统的数据总线,由外设直接对存储器写入或读出,从而达到极高的传输效率。DMA技术的重要性在于,利用它进行数据存取时不需要处理器进行干预,可提高系统执行应用程序的效率。利用DMA传送数据的另一个好处是数据直接在源地址和目的地址之间传送,不需要中间媒介。在大部分基于AMBA总线的SoC:系统中,当需要进行DMA操作时,DMA控制器先向处理器发出占用总线的请求,当总线请求成功后,处理器将总线使用权交给DMA控制器,可以进行数据传输,当此次DMA传输完成后DMA控制器释放总线控制权。
AMBA是ARM公司提出的用于微处理器片上通信的先进的总线结构。一种典型的AMBA总线由AHB和APB总线分段构成。总线上的设备可以分为能够主动读写的主设备(master)与只能接收来自master请求的从设备(slave)。针对DMA控制器的研究引出了新的SoC架构,如使用分布式Fly-by DMA结构,为数据吞吐量大的模块预设专用通道等。从功耗的角度看,当系统中存在较多master模块时,总线仲裁器的负担加重,而仲裁器正是AMBA总线功耗的主要来源。
2.2 包含AHB主从接口DMA控制器的SoC系统架构
为了缓解在同一系统中需要同时实现大批量的数据传输,提出如图1所示的基于AMBA总线的SoC系统架构。从图中可以看出,系统处理器的数据接口与指令接口都是作为AHB的master挂接在AHB总线上。主存通过slave接口挂接在AHB总线上,而DMA控制器同时包含master与slave接口,挂接在AHB总线上。slave接口用来对DMA控制器内部寄存器进行配置,master用来向AHB申请AHB总线控制权,并进行DMA传输。
在图1中Memory是通过AHB的slave接口挂在AHB总线上。DMA控制器包含的2个接口,slave接口完成DMA内部寄存器的配置后,master接口可申请AHB总线使用权,当获得许可后,开始占用AHB总线,实现DMA数据传输。如此使处理器从外设间的大批量数据传输解放出来,直接由DMA来完成,提高了数据传输放率。但也因此而产生了一个问题:当DMA占用AHB总线时处理器不能通过AHB接口去实现取指及读写数据。虽然在现在大部分处理器内部或外部配备了容量较大的高速缓存(Cache),当DMA控制器占用内存时,处理器仍可利用Cache中的程序和数据继续运行;但Cache是利用程序的局部性原理,当处理器执行的操作有良好的局部性时,在DMA占用AHB总线期间可以利用Cache里的指令和数据继续运行,但若此时有设备产生中断,此时处理器的PC指针就会产生跳转,从而会产生Cache不能命中的情况。而AHB总线又被DMA控制器占据,处理器不能对外取指,而且Cache的容量因成本问题不可能太大,从而影响处理器的效率。
2.3 包含2个AHB从接口DMA控制器的新型SoC系统架构
为了解决因图1所示架构大批量数据传输而引入DMA产生的问题,提出了包含2个AHB接口的DMA控制器的SoC系统架构。在AHB总线上的sla-ve接口都是不能发起传输的,它的一切操作都是被动的。因此图2中的DMA控制器的主要功能是提供需要进行DMA传输的外设接口与处理器读写主存的通道以及它们间优先级设定。在此双AHB从接口的DMA控制器中处理器优先级永远最高,其他外设通道都可以相互设置优先级,而且除处理器外,为了防止同一个外设长期占用DMA总线的使用权,可对外设DMA通道设置回退(暂时释放DMA总线)。如当通道2需要与Memory进行数据传输时,先向DMA控制申请总线使相应通道2的REQ信号有效,若DMA控制器允许通道2进行数据传输,则向通道2响应ACK应答信号。当通道2传输完,DMA控制回退长度的寄存器设定的值进入回退阶段,若数据传输完成,则使REQ信号无效,否则继续使REQ信号有效,并在回退期后当DMA总线空闲时参于DMA总线竞争。在总线空闲时只有不处于回退期间的最高优先级的通道才能获得DMA总线使用权,对Memory进行读写。
经过Design Compiler逻辑综合,DMA控制器在SMIC0.18μm的工艺下,能够达到AHB时钟域90MHz。能满足所设计SoC系统时钟的要求。[!--empirenews.page--]
2.4 2种架构性能对比
在图1所示架构中,每次DMA传输都要发起1次读与1次写操作。若在DMA传输期间有需要紧急处理的异常响应,AHB总线此时又被DMA控制器占用,则处理器只能等DMA控制器释放AHB总线后才能占用AHB总线进行操作,影响处理器效率与系统对异步事件的响应速度。
图2中是通过DMA控制器的一个通道与Memory相接。DMA控制器包含2个AHB的slave接口,一个是用来对DMA控制器的内部寄存器进行配置,而另一个是被处理器用来对Memory进行读写。首先处理器可以利用Cache中的指令与数据来运行,若出现没命中的问题,也可以对AHB总线上其他存储区域进行访问,因为此时AHB总线没有因DMA传输而被占据。并且除处理器通道外,对于其他所有通道的DMA传输都可以设置回退,
从而使处理器在外设DMA传输期间尽快获得DMA总线,对挂接在DMA控制器上的Memory能尽快进行读写,从而提高处理器的效率。当异常中断发生时,处理器也能尽快对响应中断,提高系统对异步事件的响应速度,从而提高系统的实时性。这样的架构在一定程度上解决了上述架构所产生的影响处理器效率的问题。
3 总结
通过对2种不同架构的分析得出,包含双从AHB接口DMA技术的SoC系统架构,不仅解决了外设与Memory间的大批量数据传输问题,同时又解决了因DMA技术的引入而带来的处理器对异步事件响应速度过慢及处理器效率变低的问题,提高了对异常中断的响应速度,使系统更加适用于硬实时系统。