专利名称:嵌入式处理器的片上高性能dma的制作方法
技术领域:
本发明涉及一种嵌入式处理器的片上DMA。
背景技术:
随着集成电路设计进入片上系统时代,嵌入式系统的功能不断增 强,应用也越来越广泛,嵌入式系统也越来越多地出现在日常生活中, 涉及从数码相机、通信设备、媒体播放器到汽车电子等广泛领域;而 随着硬件技术的快速发展,实时嵌入式系统的复杂程度也在日益提高, 应用领域也在不断扩展,这就要求嵌入式系统的设计方法更加成熟, 实时性更强和可靠,而且可预见性更高。
现代高性能的硬件都使用了 cache技术来弥补CPU和内存间的性 能差距,但是cache却严重影响了实时性,指令或数据在cache中的 执行时间和不在cache中的执行时间差距是非常巨大的,可能差几个 数量级,很大程度上限制了芯片整体性能的提升,因此为了保证执行 时间的确定性和可预测性,来满足实时需要,片上存储器(scratchpad memory,简称SPM)技术应运而生。与由硬件管理的Cache相比,采 用适当的软件优化方法来管理SPM,可使SPM的性能、功耗和面积 都优于高速缓存,适合用于对于实时性要求较高的嵌入式系统。由于访 问SPM的时间比访问片外存储器的时间要小得多,而且不存在命中率 的问题,所以把程序的一部分从片外存储器搬移到SPM中可以大大减 少应用程序的运行时间。通过将程序的基本块、数据、常量或经常用到的程序段搬到片上存储器,并尽可能重复利用这些已经转移到片上 的数据,有效地减少片外存储器与片上存储器之间的数据转移,可充分 提高实时嵌入式应用的运行速度并降低功耗。
现有的DMA内部都设有几个传输通道,控制逻辑复杂度较高, 硬件开销比较大,且没有相应的数据缓冲器来实现片上存取器与系统 总线之间的背靠背传输,导致片上存储器和片外存储器之间的数据传
输速率相对较低。若DMA需要操作时,DMA控制器会向CPU发出 占用总线的请求,当总线请求成功后,CPU已经将总线使用权交给 DMA控制器,可以进行数据传输,但在DMA传输过程中,CPU便 占不到总线,因此会严重制约处理器的流水线性能。此外现有的DMA 用户接口的可配置性比较差,扩展性也不灵活,在不同的系统下移植 性差。
发明内容
为了克服已有的嵌入式处理器的片上DMA的开发难度较大、复 杂度较高、硬件开销大、数据传输速率相对较低、扩展性不强的不足, 本发明提供一种开发难度较低、复杂度较低、用户可配置性和扩展性 灵活、系统移植方便、提高数据传输速率及提升嵌入式处理器性能的 片上高性能DMA。
本发明解决其技术问题所采用的技术方案是
一种嵌入式处理器的片上高性能DMA,所述片上高性能DMA包 括双向传输的数据缓存器,用于缓存从片上存储器读取的数据、向 总线接口单元发送的数据、从总线接口单元接收的数据以及向片上存 储器写入的数据;数据大小端转换器,用于当读取到片上存储器的数据或接收到总线接口的数据后,进行大小端转换;DMA控制器,用
于在每一次新的数据传输开始时初始化状态寄存器、控制寄存器、起 始地址寄存器和数据量寄存器,当一次批量数据传输成功或发生错误
中止时更新相应的状态寄存器,或向CPU发起中断请求;DMA传输 地址产生逻辑模块,用于在传输过程中通过DMA内部硬件逻辑的状 态控制,并根据用户配置的传输大小,自动计算出下一个数据在片内 外存储器上的传输地址,并根据片内地址产生片上存储器的片选及读 写信号,同时更新数据量计数器,直到计数器变为零;总线传输发送 和接收器,用于与总线接口单元连接,进行数据传输。
作为优选的一种方案所述的片上高性能DMA还包括传输模 式选择模块,用于设置固定地址传输和非固定长度的突发传输两种模 式的选择位,默认设置为非固定长度的突发传输,对片外存储器进行 数据搬运;固定地址传输模式中,片外存储器访问地址固定不变,对 片外外设的FIFO进行数据搬运;在传输过程中,支持两种模式的动 态切换。
进一步,所述的片上高性能DMA还包括虚拟地址到物理地址 的动态转换模块,用于将片外存储器虚拟地址经内存管理单元映射成 物理地址之后,通过总线接口单元发起传输操作访问片外存储器。
更进一步,所述的片上高性能DMA还包括DMA总线传输中止 与恢复逻辑模块,用于设置DMA占用总线接口的优先级低于处理器 访问的优先级,若DMA在传输过程中遇到CPU临时占用总线接口时, 当前DMA传输被挂起,等待CPU传输完毕后从DMA从挂起位置重 新发起传输。再进一步,在所述DMA控制器中,配置的传输宽度包括字、半
字和字节,传输宽度默认为字,当以字节或半字传输时,根据片上存 储器的访问地址自动截取相应的宽度进行传输。
在所述数据缓存器中,根据系统总线的大小端传输模式以及指令、 数据片上存储器的数据大小端存储模式,自动对数据进行大小端转换。
本发明的技术构思为通过设计片上高性能DMA,实现了嵌入
式处理器片上存储器与片外存储器之间的高速数据传输速率。由于
DMA的数据传输无需CPU和上层软件的干预,只要应用程序通过一 些指令初始化DMA相关的寄存器之后,DMA便可自动完成数据搬 运,提高了 CPU的独立性,极大减少了流水线的停顿,提升了 CPU 的性能;在DMA传输过程中若遇到CPU临时占用总线接口时,DMA 可挂起当前传输,等待CPU传输完毕后从挂起位置重新发起传输, DMA实时动态地中止和恢复传输操作,充分提升了 CPU的性能。
此外目前面向多媒体、通信和网络等应用的高端嵌入式处理器大 多集成支持虚地址系统的MMU,实现在多任务调度中对内存的保护 和共享。片上高性能DMA通过支持支持虚拟地址到物理地址的转换 及页面保护机制,扩展了 DMA的应用范畴,在不同的嵌入式系统中 移植性强。
本发明的有益效果主要表现在1)、开发难度和复杂度设计比较 低,易于实现,硬件开销相对较小,对于提高嵌入式处理器片上存储 器与片外存储器之间的数据传输速率起到极大的促进作用;2)系统移 植方便,扩展灵活,用户配置性强;3)、极大提升了嵌入式处理器的 性能。
图1是嵌入式处理器片上高性能DMA结构示意图。 图2是片上高性能DMA的硬件实现原理图。 图3是片上高性能DMA与内存管理单元的接口框图。 图4是片上高性能DMA传输请求仲裁框图。 图5是片上存储器到片外存储器的数据传输过程中DMA数据读 取状态转换图。
图6是片上存储器到片外存储器的数据传输过程中DMA数据发 送状态转换图。
图7是片外存储器到片上存储器的数据传输过程中DMA数据接 收状态转换图。
图8是片外存储器到片上存储器的数据传输过程中DMA数据存 储状态转换图。
具体实施例方式
下面结合附图对本发明作进一步描述。
参照图1一图7, 一种嵌入式处理器的片上高性能DMA,包括 双向传输的数据缓存器,用于缓存从片上存储器读取的数据、向总线 接口单元发送的数据、从总线接口单元接收的数据以及向片上存储器 写入的数据;数据大小端转换器,用于当读取到片上存储器的数据或 接收到总线接口的数据后,进行大小端转换;DMA控制器,用于在 每一次新的数据传输开始时初始化状态寄存器、控制寄存器、起始地 址寄存器和数据量寄存器,当一次批量数据传输成功或发生错误中止 时更新相应的状态寄存器,或向CPU发起中断请求;DMA传输地址产生逻辑模块,用于在传输过程中通过DMA内部硬件逻辑的状态控 制,并根据用户配置的传输大小,自动计算出下一个数据在片内外存 储器上的传输地址,并根据片内地址产生片上存储器的片选及读写信
号,同时更新数据量计数器,直到计数器变为零;总线传输发送和接 收器,用于与总线接口单元连接,进行数据传输。
所述的片上高性能DMA还包括传输模式选择模块,用于设置 固定地址传输和非固定长度的突发传输两种模式的选择位,默认设置 为非固定长度的突发传输,对片外存储器进行数据搬运;固定地址传 输模式中,片外存储器访问地址固定不变,对片外外设的FIFO进行 数据搬运;在传输过程中,支持两种模式的动态切换。
虚拟地址到物理地址的动态转换模块,用于将片外存储器虛拟地 址经内存管理单元映射成物理地址之后,通过总线接口单元发起传输 操作访问片外存储器。
DMA总线传输中止与恢复逻辑模块,用于设置DMA占用总线接 口的优先级低于处理器访问的优先级,若DMA在传输过程中遇到 CPU临时占用总线接口时,当前DMA传输被挂起,等待CPU传输完 毕后从DMA从挂起位置重新发起传输。
本实施例的嵌入式处理器片上高性能DMA无需CPU的干预,它 只需应用程序通过协处理器指令在传输开始之前初始化DMA相关的 寄存器,包括传输控制寄存器、传输操作寄存器、片上存储器和片外 存储器的起始地址寄存器和传输数据量寄存器, 一旦传输开始后, DMA便能自动完成该数据量的传输。高性能DMA在每传输完一个数 据之后,它会自动更新数据量计数器,并自动产生片内外存储器下一个数据的读写地址。片上DMA实现简单,开销较小,可在处理器非
干预的情况下完成片内外数据传输,数据搬运与处理器运算可并行处
理,极大地提高了处理器的性能,尤其在传输数据量较大时,DMA 传输模式更能充分体现它性能的优越性,增加了CPU的独立性,减少 了流水线的停顿,从而使CPU在性能上得到了很大提升,同时片上高 性能DMA通过结合数据缓存区技术,使得数据得以连续接收和发送, 实现背靠背传输,提升了 DMA的传输性能。
嵌入式处理器片上高性能DMA的总体硬件架构如图2所示。 为了提高片上高性能DMA的灵活性,在DMA的控制寄存器中, 设置了固定地址传输和非固定长度的突发传输两种模式的选择位。该 位上电之后默认设置为非固定长度的突发传输,该模式支持single和 increase两种总线传输类型,适用于与片外存储器进行数据搬运,而固 定地址传输模式在传输过程中,片外存储器访问地址固定不变,适用 于对片外外设的FIFO进行数据搬运。用户的应用程序可以根据实际 的需要,动态开启或者关闭该位来选择相应的传输模式。在传输过程 中,支持两种模式的动态切换。
片上高性能DMA传输模式支持传输大小为字(4字节),半字(2 字节)和字节的三种模式。在DMA的控制寄存器中,有两位表示总 线的传输大小OO表示字传输,Ol表示半字传输,IO表示字节传输, ll表示未定义的长度。默认状态为字传输,尽可能提高传输的效率和 带宽。当传输大小为字节或半字时,DMA内部的控制逻辑会根据相 应的片内外存储器的地址,正确地截取字节,以保证数据的正确性。 此外,当片上存储器的数据存储模式与系统总线的大小端传输模式不一致时,高性能DMA会根据片上存储器的数据读写地址和片外存储 器的传输地址自动对数据进行大小端转换,以保证数据的一致性。
同时DMA支持DMA传输幵始、传输停止和现场清空这三种操作 DMA传输开始操作用于启动DMA的状态机及相应的控制逻辑,数据 传输开始,当传输结束时,DMA会更新相应的状态寄存器,包括传 输成功或失败等信息,并发起中断通知CPU,在相应的中断服务程序 中通过现场清空操作来更新DMA状态机和状态寄存器,为下一次传 输做好准备。传输停止操作用于强行中止这次传输,所有的逻辑和状 态恢复到跟上电时一样。
目前很多高端嵌入式处理器大多集成支持虚地址系统的MMU,本 发明设计的片上高性能DMA同样支持虚拟地址到物理地址的转换及 页面保护机制,如图3所示;DMA片上存储器起始地址寄存器所寄 存的地址是虚拟地址,为了提高了虚拟地址到物理地址的转换速率, 在DMA内部设计了 2路组相连的地址旁路缓冲器,该缓冲器的内容 包括虚拟地址到物理地址的映射关系以及物理页面的保护信息。当 DMA发生的虚拟地址在缓冲器中失配时,向内存管理单元发起页缺 失请求,内存管理单元会迅速做出相关处理若在内存管单元找到匹 配项,则回填DMA的2路缓冲器,替换策略为round robin;当发生 页面缺失等情况时内存管理单元通过发出异常来通知CPU。
由于CPU的取指单元、存储单元和片上高性能DMA共用一个总 线接口单元,因此在它们之间必存在资源冲突,如图4所示;为了充 分提高CPU的性能,DMA占用系统总线接口的优先级最低。由于 DMA传输的数据量较大,因此占用总线接口单元时间会比较长,在传输过程中会遇到CPU要临时占用总线接口 ,此时DMA可挂起当前
传输,相应的寄存器会保存现场传输信息,状态机也会进入悬起等待
状态, 一旦等待CPU传输完毕后DMA立即恢复现场,并从挂起位置 重新发起传输。
在DMA传输过程中,当系统总线接口被CPU占用、片外存储器 未准备好数据、系统总线频率与CPU时钟频率不一致或DMA和CPU 同时访问数据、指令片上存储器时,均会导致DMA数据发送或数据 接收发生中断,使数据传输过程不连续,因此在DMA内部设置了数 据缓存机制来实现背靠背传输。该数据缓存有四个表项,可同时读写, 一旦数据缓存满时,控制逻辑便会停止向片上存储器或片外存储器读 数据,直到数据缓存器为非满状态。片上高性能DMA根据数据传输 方向可以分为片上存储器到片外存储器以及片外存储器到片上存储器 两个独立的传输过程。
片上存储器到片外存储器的数据传输过程可分为从片上存储器读 取数据和向总线接口单元发送数据两个阶段,其中数据读取阶段分为 以下几个状态,如图5所示
空闲状态空闲状态时DMA处于低功耗状态,上电复位后,DMA 传输模式自动进入该状态。
数据读取请求状态 一旦DMA的相关寄存器初始化之后,DMA的 数据通道便进入该状态并进行数据传输,向数据或指令片上存储器发起数 据读取请求状态;如果此时数据或指令片上存储器被存储单元或指令单元 占用着,则DMA—直置着请求信号。
等待状态如果数据缓存器已满,则DMA的控制逻辑便会停止向片山存储器发起数据读取请求操作,直到缓存器不满为止。
压数据入缓存器当DMA读取到数据后,经过大小端转换后,将数
据压入数据缓冲器, 一旦读完所有的数据后,便会转入空闲状态。
DMA向总线接口单元发送数据阶段分为以下几个状态,如图6所示:
空闲状态空闲状态时DMA并未向总线接口单元发送数据,处于 低功耗状态,上电复位后,DMA传输模式自动进入该状态。
等待状态当DMA传输开始后,若数据缓存器为空,DMA便进入 等待状态,若数据缓存器不为空,则向总线接口单元发起数据传输请求。
总线传输请求状态在该状态DMA向总线接口单元发起总线传输 请求,包括传输大小、传输突发类型等总线信息,在没得到总线接口单 元响应时,DMA发送阶段一直处于这个状态。
数据传输状态当传输请求得到总线接口单元的响应后,DMA控制 逻辑将从数据缓存器中读取的数据发向总线,等所有数据发送完成之后, 便会跳入空闲状态,此次数据传输全部结束。
片外存储器到片上存储器的数据传输过程也可以分为从总线接口接收 数据和向片上存储器写数据这两个阶段;其中数据接收阶段分为以下几 个状态,如图7所示
空闲状态空闲状态时DMA处于低功耗状态,上电复位后,DMA 传输模式自动进入该状态。
总线传输请求状态在该状态DMA向总线接口单元发起总线传输 请求,包括片外存储器的数据读取地址、传输大小、传输突发类型等总 线信息,在没得到总线接口单元响应时,DMA数据接收阶段一直处于这 个状态。数据接收状态当传输请求得到总线接口单元的响应后,DMA控制 逻辑将从片外存储器读取到的数据压入数据缓存器, 一旦从片外存储器 读到所有数据后,便会跳入到空闲状态。
等待状态 一旦数据缓存器满时,DMA便会进入等待状态,并不再 向总线接口单元发起传输请求,直到数据缓存器非满。
向片上存储器写数据的过程可分为以下几个状态,如图8所示
空闲状态空闲状态时DMA处于低功耗状态,上电复位后,DMA
传输模式自动进入该状态。
等待状态在DMA传输开始之后,如果数据缓存器为空,则进入
该状态,直到缓冲器有数据写入。
写数据请求状态DMA向片上存储器发起数据写操作请求,并根据
写地址及传输大小配置正确地产生写片选信号。
写数据状态 一旦写数据请求得到片上存储器的响应之后,DMA从
数据缓存器读取数据并写入片上存储器,等所有数据写成功之后,便会 跳入空闲状态,此次数据传输全部结束。
权利要求
1、一种嵌入式处理器的片上高性能DMA,其特征在于所述片上高性能DMA包括双向传输的数据缓存器,用于缓存从片上存储器读取的数据、向总线接口单元发送的数据、从总线接口单元接收的数据以及向片上存储器写入的数据;数据大小端转换器,用于当读取到片上存储器的数据或接收到总线接口单元的数据之后,进行大小端转换;DMA控制器,用于在每一次新的数据传输开始时初始化状态寄存器、控制寄存器、起始地址寄存器和数据量寄存器,当一次批量数据传输成功或发生错误中止时更新相应的状态寄存器,或向CPU发起中断请求;DMA传输地址产生逻辑模块,用于在传输过程中通过DMA内部硬件逻辑的状态控制,并根据用户配置的传输大小,自动计算出下一个数据在片内外存储器上的传输地址,并根据片内地址产生片上存储器的片选及读写信号,同时更新数据量计数器,直到计数器变为零;总线传输发送和接收器,用于与总线接口单元连接,进行数据传输。
2、 如权利要求1所述的嵌入式处理器的片上高性能DMA,其特征在 于所述的片上高性能DMA还包括传输模式选择模块,用于设置固定地址传输和非固定长度的突发传输 两种模式的选择位,默认设置为非固定长度的突发传输,对片外存储 器进行数据搬运;固定地址传输模式中,片外存储器访问地址固定不 变,对片外外设的FIFO进行数据搬运;在传输过程中,支持两种模式的动态切换。
3、 如权利要求1或2所述的嵌入式处理器的片上高性能DMA,其特征在于所述的片上高性能DMA还包括虚拟地址到物理地址的动态转换模块,用于将片外存储器虚拟地址经 内存管理单元映射成物理地址之后,通过总线接口单元发起传输操作 访问片外存储器。
4、 如权利要求1或2所述的嵌入式处理器的片上高性能DMA,其特征在于所述的片上高性能DMA还包括DMA总线传输中止与恢复逻辑模块,用于设置DMA占用总线接口的 优先级低于处理器访问的优先级,若DMA在传输过程中遇到CPU临 时占用总线接口时,当前DMA传输被挂起,等待CPU传输完毕后从 DMA从挂起位置重新发起传输。
5、 如权利要求3所述的嵌入式处理器的片上高性能DMA,其特征在 于所述的片上高性能DMA还包括DMA总线传输中止与恢复逻辑模块,用于设置DMA占用总线接口的 优先级低于处理器访问的优先级,若DMA在传输过程中遇到CPU临 时占用总线接口时,当前DMA传输被挂起,等待CPU传输完毕后从 DMA从挂起位置重新发起传输。
6、 如权利要求1或2所述的嵌入式处理器的片上高性能DMA,其特 征在于在所述DMA控制器中,配置的传输宽度包括字、半字和字 节,传输宽度默认为字,当以字节或半字传输时,根据片上存储器的 访问地址自动截取相应的宽度进行传输。
7、 如权利要求5所述的嵌入式处理器的片上高性能DMA,其特征在于在所述DMA控制器中,配置的传输宽度包括字、半字和字节, 传输宽度默认为字,当以字节或半字传输时,根据片上存储器的访问 地址自动截取相应的宽度进行传输。
8、如权利要求1或2所述的嵌入式处理器的片上高性能DMA,其特征在于在所述数据缓存器中,根据系统总线的大小端传输模式以及 指令、数据片上存储器的数据大小端存储模式,自动对数据进行大小 端转换。
全文摘要
一种嵌入式处理器的片上高性能DMA,包括数据缓存器,用于缓存从片上存储器读取的数据、向总线接口单元发送的数据、从总线接口单元接收的数据以及向片上存储器写入的数据;数据大小端转换器;DMA控制器,用于初始化状态寄存器、控制寄存器、起始地址寄存器和数据量寄存器;DMA传输地址产生逻辑模块,用于自动计算出下一个数据在片内外存储器上的传输地址,并根据片内地址产生片上存储器的片选及读写信号,同时更新数据量计数器,直到计数器变为零;以及总线传输发送和接收器。本发明开发难度较低、硬件开销小、移植方便、扩展性灵活、数据传输速率快、极大地提升处理器的性能。
文档编号G06F13/28GK101556565SQ20091009558
公开日2009年10月14日 申请日期2009年1月22日 优先权日2009年1月22日
发明者严晓浪, 孟建熠, 徐鸿明, 葛海通 申请人:杭州中天微系统有限公司