CPU总线和DMA存储直接访问的理解
CPU总线
- CPU总线分为数据总线、地址总线、控制总线。
- 数据总线
a. 数据总线是CPU与存储器、CPU与I/O接口设备之间传送数据信息(各种指令数据信息)的总线,这些信号通过数据总线往返于CPU与存储器、CPU与I/O接口设备之间,因此,数据总线上的信息是双向传输。
b. 数据总线的宽度决定了CPU和外界的数据的传送速度。
c. 每条传输线一次只能传输一位二进制数据。(8根数据线一次可传送一个八位二进制数据,即一个字节。)
d. 数据总线是数据线数据之和。
3.地址总线
a. 地址总线是一种计算机总线,是CPU或DMA(存储器直接访问)能力的单元,用来沟通这些单元想要访问(读取/写入)计算机内存组件/地方的物理地址,即地址总线是CPU与内存、DMA与外设或其他器件之间的数据传送的通道。
b. CPU通过地址总线来指定存储单元。
c. 地址总线决定了CPU所能访问的最大内存空间的大小。(10根地址线所能访问的最大的内存为1024位二进制数据)
d. 地址总线是地址数据之和。
- 控制总线
a. 控制总线主要用来传送控制信号和时序信号。控制信号中,有的是微处理器送往存储器和输入输出设备接口电路的,如读/写信号,片选信号、中断响应信号等。
b. CPU通过控制总线对外部器件进行控制。
c. 控制总线的宽度决定了CPU对外部器件的控制能力。
d. 控制总线是控制线数据之和。
DMA(存储器直接访问)
1.定义
DMA是一种高速的数据传输操作,DMA在DMA控制器的控制下,实现让存储器与外设、外设与外设之间直接交换数据,中间不需要经过CPU的累加器中转,并且内存地址的修改、传送完毕的结束报告都是由硬件电路(DMA控制器)实现的,CUP除了在数据传输开始和结束时进行中断处理外,在整个传输过程中CPU都可以和输入输出处于并行操作状态,一个DMA传送只需要执行一个DMA周期,相当于一个总线读写周期。
- 工作流程
通常CPU总线是由CPU管理的,但在DMA工作时,CPU总线由DMA控制器接管,控制传送的字节数,判断DMA是否结束以及发出DMA结束信号,故DMA控制器的工作流程如下:
a. 当外设有DMA需求并准备就绪时,就向DMA控制器发送DMA请求。
b. DMA控制器接收请求后,向CPU发送总线接管请求。
c. CPU接到总线接管请求后,则会在当前总线周期结束后进行中断处理并返回响应信号,通知DMA控制器其已经放弃了对总线的控制权。
d. DMA控制器获得总线的控制权,并对外设发送应答信号,通知外设可以进行DMA传输。
e. DMA控制器向存储器发送地址信号和向存储器及外设发出读/写控制信号,控制数据按初始化设定的方向传送,实现外设与内存的数据传输。
f. 数据全部传输结束后,DMA控制器向CPU发送结束信号,要求撤销总线请求信号,CPU接收到信号后,收回对总线的控制权。
- DMA传输方式
a. 单字节传输:一次DMA只传输一个字节,效率低,但传输过程中CPU有机会获取对总线的控制权。
b.数据块传输方式:数据已数据块的方式进行传输,只要DREQ启用就会连续的传送数据。一次请求传送一个数据块,效率高,但传输过程中CPU长时间无法控制总线。
c. 请求传输方式:DREQ信号有效就连续传输数据,否则不能进行数据的传输。
d. 级联传输方式:用于通过多个DMA控制器级联以拓展通道,第一级只起优先权网络的作用,实际的操作由第二级芯片完成。还可由第二级到第三级等。(多个DMAC)
- DMA传送类型
a. 两个设备之间;
b. 设备和内存之间;(多数情况下,DMAC进行的是外设接口和内存之间的传输。)
c. 内存和内存之间。
- DMA拓展
DMA读:把数据由存储器传送到外设。
DMA写:把外设输入的数据写入存储器。
DMA检验(控操作):DMAC不进行任何检验,外设可以进行DMA校验,存储器和 I/O 控制线保持无效,不进行传送。
本文仅作学习,引用如下
https://blog.csdn.net/wuyongpeng0912/article/details/46634931
https://blog.csdn.net/wangbuji/article/details/78855672