直接存储器存取—基本原理、结构与应用

合集下载

计算机基础知识什么是计算机存储系统原理

计算机基础知识什么是计算机存储系统原理

计算机基础知识什么是计算机存储系统原理计算机基础知识:“计算机存储系统原理”计算机存储系统是计算机的重要组成部分,负责存储和读取数据以及程序。

在计算机基础知识中,了解计算机存储系统的原理对我们理解计算机的工作原理至关重要。

本文将介绍计算机存储系统的原理,包括存储层次结构、存储器类型和工作原理。

一、存储层次结构计算机存储系统按照速度和容量的不同可以分为多个层次,包括寄存器、高速缓存、主存、辅助存储器等。

存储层次结构的设计遵循着局部性原理,即程序和数据的访问模式倾向于在时间和空间上的局部性。

这样设计可以提高计算机的运行效率和存储资源的利用率。

1. 寄存器寄存器是位于CPU内部的最快速的存储器,用于存放CPU需要快速访问的数据和指令。

寄存器的容量非常有限,但由于其接近于CPU,可以在一个时钟周期内完成存储和读取操作,因此被广泛用于高速缓存的构建。

2. 高速缓存高速缓存是位于CPU和主存之间的一级缓存存储器,用于存放主存中频繁访问的数据和指令。

高速缓存具有快速的访问速度和较大的容量,它根据局部性原理将主存中的数据块复制到自己的存储空间中,以便更快地响应CPU的访问请求。

3. 主存主存是计算机存储系统中最大的存储器,用于存放运行中的程序和数据。

主存的容量相对较大,但相对于CPU的访问速度较慢。

主存是计算机与外部设备交换数据的主要通道,CPU通过访问主存来读取和写入数据。

4. 辅助存储器辅助存储器是计算机存储系统中容量最大的存储器,主要用于长期存储大量的数据和程序。

辅助存储器的访问速度相对较慢,但容量非常大,如硬盘、光盘和闪存等。

辅助存储器的特点是数据可以永久保存,即使计算机断电也能保持数据的完整性。

二、存储器类型计算机存储器按照存储介质的不同可以分为多种类型,包括寄存器、随机存取存储器(RAM)、只读存储器(ROM)和闪存等。

1. 寄存器寄存器是CPU内部的存储器,用于暂时存放数据和指令。

寄存器的容量非常有限,但由于其速度快,被用于存放当前执行的指令和数据。

微机原理 第五章 存储器

微机原理 第五章 存储器

二、半导体存储器的通常结构
存储器分类
大容量存储器地址译码是按矩阵的形式排列,这样 做可以节省译码电路; 例 不采用矩阵译码-线性译码)1K个存储单元地址线 为10根地址线,译码后每个存储单元分配一根控制 线,则需要1024根控制线。如图:
A0 A1 A2 1 地 址 译 码

A9
… … …
1024
读写存储器按信息存储方式可分为静态RAM(Static RAM, 简称SRAM)和动态RAM(Dynamic RAM, 简称DRAM
存储器分类


按存储介质,可分为半导体存储器、磁介质 存储器和光存储器 按照存储器与 CPU 的耦合程度,可分为内存 和外存

按存储器的读写功能,分为读写存储器 (RWM:Read/Write Memory)和只读存储 器(ROM:Read Only Memory)
二、动态随机读写存储器DRAM
随机存取存储器
常用的动态基本存储电路有 4 管型和单管型两 种,其中单管型由于集成度高而愈来愈被广泛采用。 我们这里以单管基本存储电路为例说明。
其基本存储电路为单管动态存储电路,存放信息靠 的是电容, 需刷新,芯片刷新周期在2ms以内。
行选择信号 Q C
单管动态RAM基 本存储单元图
半导体存储器的性能指标很多,如可靠性、功耗、 价格等,但从接口电路来看,其重要指标就是芯片的存 储容量和速度。
1、存储容量:存储器中存储单元的总数。存储芯片的 容量是以位(bit)为基本单位的,因此存储器的容量即 指芯片所能容纳的二进制的位数。如Intel 2114,其存 储容量为 4096,Intel 6264为65536。 在实际应用中,通常用存储单元数和位数来表示芯 片的存储容量。如Intel 2114为1K4位;Intel 6264为 8K8位。 存储器芯片容量=单元数数据线位数

单片机内部存储器结构与数据存取方法详解

单片机内部存储器结构与数据存取方法详解

单片机内部存储器结构与数据存取方法详解单片机是一种集成了处理器、内存和外设等功能于一体的微电子器件,广泛应用于各种电子设备中。

其中,内部存储器是单片机的核心组成部分之一。

本文将详细介绍单片机内部存储器的结构和数据存取方法。

一、单片机内部存储器的结构单片机的内部存储器主要包括随机存取存储器(RAM)和只读存储器(ROM)两部分。

1. 随机存取存储器(RAM)RAM是单片机内部的易失性存储器,用于存储数据、程序临时数据和运行时数据。

单片机内部的RAM可以根据存取速度和使用要求的不同,分为片内RAM 和片外RAM两种。

片内RAM是单片机芯片内部集成的存储器,速度较快。

它可以分为片内可读写RAM(RW-RAM)和片内只读RAM(RO-RAM)两种类型。

片内可读写RAM可以被程序读取和修改,存储媒介是电容或电子触发器。

而片内只读RAM则只能被程序读取,不能被修改。

片内RAM的容量相对较小,一般在几十到几百字节之间。

片外RAM是连接在单片机芯片外部的存储器,速度较慢。

它可以进一步分为静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM)两种类型。

SRAM是基于触发器构建的,数据存储在触发器中,读写速度快且无需刷新。

DRAM则是基于电容构建的,存储数据需要定期刷新,但容量较大。

2. 只读存储器(ROM)ROM是单片机内部的非易失性存储器,用于存储程序和常量数据。

ROM的内容在出厂时就被写入,一般无法被程序修改。

单片机内部的ROM可以分为只读存储器(ROM)和可编程只读存储器(PROM)两种类型。

ROM存储器内容固定不变,其中包含了单片机的初始化程序和系统代码。

PROM存储器则可以通过特殊的编程操作烧写程序和数据,但一旦写入后无法擦除和修改。

这类存储器在生产流程中被用于定制特殊功能的单片机。

二、单片机内部存储器的数据存取方法单片机内部存储器的数据存取方法根据存储器的类型和连接方式而有所不同。

1. RAM的数据存取方法对于片内RAM,数据的存取可以通过直接读写特定的RAM地址来实现。

计算机组成原理知识点总结

计算机组成原理知识点总结

计算机组成原理知识点总结第一章一、数字计算机的五大部件(硬件)及各自主要功能(P6)计算机硬件组成:存储器、运算器、控制器、输入设备、输出设备。

1、存储器(主存)主要功能:保存原始数据和解题步骤。

包括:内存储器(CPU 直接访问),外存储器。

2、运算器主要功能:进行算术、逻辑运算。

3、控制器主要功能:从内存中取出解题步骤(程序)分析,执行操作。

包括:计算程序和指令(指令由操作码和地址码组成)。

4、输入设备主要功能:把人们所熟悉的某种信息形式变换为机器内部所能接收和识别的二进制信息形式。

5、输出设备主要功能:把计算机处理的结果变换为人或其他机器所能接收和识别的信息形式。

注:1、冯诺依曼结构:存储程序并按地址顺序执行。

2、中央处理器(CPU):运算器和处理器的结合。

3、指令流:取指周期中从内存读出的信息流,流向控制器。

数据流:在执行器周期中从内存读出的信息流,由内存流向运算器。

二、数字计算机的软件及各自主要功能(P11)1、系统软件:包括服务性程序、语言程序、操作程序、数据库管理系统。

2、应用程序:用户利用计算机来解决某些问题而设计。

三、计算机的性能指标。

1、吞吐量:表征一台计算机在某一时间间隔内能够处理的信息量,用bps度量。

2、响应时间:表征从输入有效到系统产生响应之间的时间度量,用时间单位来度量。

3、利用率:在给定的时间间隔内,系统被实际使用的时间所在的比率,用百分比表示。

4、处理机字长:常称机器字长,指处理机运算中一次能够完成二进制运算的位数,如32位机、64位机。

5、总线宽度:一般指CPU从运算器与存储器之间进行互连的内部总线一次操作可传输的二进制位数。

6、存储器容量:存储器中所有存储单元(通常是字节)的总数目,通常用KB、MB、GB、TB来表示。

7、存储器带宽:单位时间内从存储器读出的二进制数信息量,一般用B/s(字节/秒)表示。

8、主频/时钟周期:CPU的工作节拍受主时钟控制,按照规定在某个时间段做什么(从什么时候开始、多长时间完成),主时钟不断产生固定频率的时钟信号。

计算机体系结构存储器层次结构基础知识详解

计算机体系结构存储器层次结构基础知识详解

计算机体系结构存储器层次结构基础知识详解计算机体系结构存储器层次结构是计算机系统中重要的组成部分,它通过不同层次的存储器来提供有效的数据存取方式,以满足计算机执行指令和运算的需求。

本文将详细介绍计算机体系结构存储器层次结构的基础知识,包括存储器的分类、层次结构和操作原理等方面。

一、存储器的分类存储器是计算机中用于存储数据和程序的设备,根据存储介质的不同可分为内存和外存。

内存存储器又可分为随机存储器(RAM)和只读存储器(ROM)。

RAM是一种易失性存储器,用于存储程序和数据的临时信息,通电时可以读写数据,断电后数据就会丢失;ROM是一种非易失性存储器,用于存储程序和数据的固定信息,通电时只能读取数据。

外存储器包括硬盘、固态硬盘(SSD)和光盘等,主要用于长期存储大量数据和程序。

二、存储器的层次结构计算机体系结构存储器层次结构按照存取速度和成本的不同,可分为若干层次,由快到慢、由贵到廉排列为:寄存器、高速缓存、主存和外存。

寄存器是存储器层次结构中速度最快、容量最小的存储器,通常嵌入在中央处理器(CPU)中,用于存储最常用的数据和指令;高速缓存是位于CPU和主存之间的一层存储器,容量较小但速度快,用于缓存CPU频繁访问的数据块;主存是计算机中容量较大、速度较慢的存储器,用于存储程序和数据;外存是计算机中容量最大、速度最慢的存储器,用于长期存储大量数据和程序。

三、存储器的操作原理计算机体系结构存储器层次结构中的各层次存储器之间通过地址和数据进行交互。

当CPU需要访问某个数据或者指令时,首先会将相应的地址发给内存控制器,内存控制器会根据地址将数据从内存中读取出来并送达给CPU。

在这个过程中,CPU通常会先访问最快的寄存器,若寄存器中没有所需数据,则会在高速缓存中进行查找,如果高速缓存中也没有,则会继续在主存和外存中进行查找。

存储器的操作原理涉及到存储器的访问速度和命中率。

存储器的访问速度是指CPU从发送地址到接收到数据所需的时间,在不同层次存储器中,访问速度逐级变慢;命中率是指CPU在某个层次存储器中找到所需数据的概率,高速缓存的命中率通常较高,而主存和外存的命中率较低。

存储器的工作原理

存储器的工作原理

存储器的工作原理1、存储器构造存储器就是用来存放数据的地方。

它是利用电平的高低来存放数据的,放的实际上是电平的高、低,而不是我们所习惯认为的1234 这样的数字,个谜团就解开了,计算机也没什么神秘的吗。

图2也就是说,它存这样,我们的一图3让我们看图2。

这是一个存储器的示意图:一个存储器就像一个个的小抽屉,一个小抽屉里有八个小格子,每个小格子就是用来存放“电荷”的,电荷通过与它相连的电线传进来或释放掉,至于电荷在小格子里是怎样存的,就不用我们操心了,你可以把电线想象成水管,小格子里的电荷就像是水,那就好理解了。

存储器中的每个小抽屉就是一个放数据的地方,我们称之为一个“单元” 。

有了这么一个构造,我们就可以开始存放数据了,想要放进一个数据12 ,也就是00001100 ,我们只要把第二号和第三号小格子里存满电荷,而其它小格子里的电荷给放掉就行了(看图3)。

可是问题出来了,看图 2 ,一个存储器有好多单元,线是并联的,在放入电荷的时候,会将电荷放入所有的单元中,而释放电荷的时候,会把每个单元中的电荷都放掉,这样的话,不管存储器有多少个单元,都只能放同一个数,这当然不是我们所希望的,因此,要在结构上稍作变化,看图2,在每个单元上有个控制线,我想要把数据放进哪个单元,就给一个信号这个单元的控制线,这个控制线就把开关打开,这样电荷就可以自由流动了,而其它单元控制线上没有信号,所以开关不打开,不会受到影响,这样,只要控制不同单元的控制线,就可以向各单元写入不同的数据了,同样,如果要某个单元中取数据,也只要打开相应的控制开关就行了。

2、存储器译码那么,我们怎样来控制各个单元的控制线呢?这个还不简单,把每个单元的控制线都引到集成电路的外面不就行了吗?事情可没那么简单,一片27512 存储器中有65536 个单元,把每根线都引出来,这个集成电路就得有 6 万多个脚?不行,怎么办?要想法减少线的数量。

我们有一种方法称这为译码,简单介绍一下:一根线可以代表 2 种状态, 2 根线可以代表 4 种状态,3 根线可以代表几种,256 种状态又需要几根线代表?8 种,8 根线,所以65536种状态我们只需要16 根线就可以代表了。

存储的工作原理

存储的工作原理

存储的工作原理存储的工作原理是通过将数据存储在持久化介质上,以便在需要时能够读取和获取。

存储设备通常由硬件和软件组成。

硬件方面,存储设备通常包括主要的存储介质,如硬盘驱动器、固态硬盘或光盘驱动器等。

这些设备通过电子信号将数据写入到存储介质上,并在需要时将数据读取到计算机系统中。

存储设备还包括控制器和接口,用于管理和控制数据的读写操作。

软件方面,存储设备还需要操作系统和文件系统的支持。

操作系统负责管理存储设备的访问和使用,以及将数据从应用程序传输到存储设备。

文件系统负责将数据组织成文件和目录结构,以方便用户访问和管理存储数据。

当用户需要存储数据时,首先将数据写入到存储设备上的空闲区域中。

硬盘驱动器和固态硬盘通常将数据存储在扇区、磁道和柱面等物理结构中,而光盘驱动器则将数据存储在光盘上的孔坑中。

这些数据存储的方式可以通过文件系统进行逻辑上的组织和管理,使得用户可以按照文件的方式进行读取和写入操作。

当用户需要读取数据时,存储设备将数据从存储介质中读取到计算机系统的内存中。

读取操作通常涉及到寻道、旋转等物理过程,以及数据传输和缓存等操作。

读取的数据可以被应用程序进一步处理和使用。

存储设备的工作原理还包括数据的备份和恢复。

为了保证数据的安全性和可靠性,通常会采用备份和镜像等技术进行数据的复制和存储。

这样,即使存储设备发生故障,用户仍然可以通过备份数据或者镜像数据进行恢复。

总的来说,存储设备通过将数据存储在持久化介质上,并通过硬件和软件的配合实现数据的读写操作。

这种工作原理使得用户可以方便地保存、访问和管理数据,满足各种应用场景的需求。

存储器的工作原理

存储器的工作原理

存储器的工作原理一、引言存储器是计算机中重要的组成部份,用于存储和检索数据。

它在计算机系统中起着暂时存储数据的作用,可以分为主存储器和辅助存储器两种类型。

本文将详细介绍存储器的工作原理,包括主存储器和辅助存储器的工作原理、存储器的组织结构以及存储器的读写操作。

二、主存储器的工作原理主存储器是计算机中用于存储程序和数据的地方,也称为内存。

它由一系列存储单元组成,每一个存储单元能够存储一个固定大小的数据。

主存储器的工作原理可以分为存储和检索两个过程。

1. 存储过程当计算机需要将数据存储到主存储器时,首先需要将数据传输到内存总线上。

内存总线是计算机系统中连接处理器和主存储器的数据传输通道。

通过内存总线,数据被传输到内存控制器。

内存控制器负责将数据存储到指定的存储单元中。

2. 检索过程当计算机需要从主存储器中读取数据时,首先需要将读取指令传输到内存总线上。

内存控制器接收到读取指令后,根据指令中指定的地址,将对应的数据从存储单元中读取出来,并通过内存总线传输给处理器。

三、辅助存储器的工作原理辅助存储器是计算机中用于长期存储数据的设备,如硬盘、固态硬盘(SSD)等。

与主存储器相比,辅助存储器的容量更大,但访问速度较慢。

辅助存储器的工作原理可以分为存储和检索两个过程。

1. 存储过程当计算机需要将数据存储到辅助存储器时,首先需要将数据传输到输入输出(I/O)总线上。

I/O总线是计算机系统中连接处理器和辅助存储器的数据传输通道。

通过I/O总线,数据被传输到磁盘控制器。

磁盘控制器负责将数据存储到指定的磁盘扇区中。

2. 检索过程当计算机需要从辅助存储器中读取数据时,首先需要将读取指令传输到I/O总线上。

磁盘控制器接收到读取指令后,根据指令中指定的扇区号,将对应的数据从磁盘中读取出来,并通过I/O总线传输给处理器。

四、存储器的组织结构存储器的组织结构是指存储单元之间的连接方式和存储单元的编址方式。

常见的存储器组织结构有线性结构和矩阵结构。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

直接存储器存取—基本原理、结构与应用直接存储器存取(DMA)控制器是一种在系统内部转移数据的独特外设,可以将其视为一种能够通过一组专用总线将内部和外部存储器与每个具有DMA能力的外设连接起来的控制器。

它之所以属于外设,是因为它是在处理器的编程控制下来执行传输的。

值得注意的是,通常只有数据流量较大(kBps或者更高)的外设才需要支持DMA能力,这些应用方面典型的例子包括视频、音频和网络接口。

一般而言,DMA控制器将包括一条地址总线、一条数据总线和控制寄存器。

高效率的DMA控制器将具有访问其所需要的仸意资源的能力,而无须处理器本身的介入,它必须能产生中断。

最后,它必须能在控制器内部计算出地址。

一个处理器可以包含多个DMA控制器。

每个控制器有多个DMA通道,以及多条直接与存储器站(memory bank)和外设连接的总线,如图1所示。

在很多高性能处理器中集成了两种类型的DMA控制器。

第一类通常称为“系统DMA控制器”,可以实现对仸何资源(外设和存储器)的访问,对于这种类型的控制器来说,信号周期数是以系统时钟(SCLK)来计数的,以ADI的Blackfin处理器为例,频率最高可达133MHz。

第二类称为内部存储器DMA 控制器(IMDMA),专门用于内部存储器所处位置之间的相互存取操作。

因为存取都发生在内部(L1-L1、L1-L2,或者L2-L2),周期数的计数则以内核时钟(CCLK)为基准来进行,该时钟的速度可以超过600MHz。

每个DMA控制器有一组FIFO,起到DMA子系统和外设或存储器之间的缓冲器的作用。

对于MemDMA(Memory DMA)来说,传输的源端和目标端都有一组FIFO存在。

当资源紧张而不能完成数据传输的话,则FIFO可以提供数据的暂存区,从而提高性能。

因为你通常会在代码初始化过程中对DMA控制器进行配置,内核就只需要在数据传输完成后对中断做出响应即可。

你可以对DMA控制进行编程,让其与内核并行地移动数据,而同时让内核执行其基本的处理仸务—那些应该让它专注完成的工作。

图1:系统和存储器DMA架构。

在一个优化的应用中,内核永远不用参与仸何数据的移动,而仅仅对L1存储器中的数据进行读写。

于是,内核不需要等待数据的到来,因为DMA引擎会在内核准备读取数据之前将数据准备好。

图2给出了处理器和DMA控制器间的交互关系。

由处理器完成的操作步骤包括:建立传输,启用中断,生成中断时执行代码。

返回到处理器的中断输入可以用来指示“数据已经准备好,可进行处理”。

图2:DMA控制器。

数据除了往来外设之外,还需要从一个存储器空间转移到另一个空间中。

例如,视频源可以从一个视频端口直接流入L3存储器,因为工作缓冲区规模太大,无法放入到存储器中。

我们并不希望让处理器在每次需要执行计算时都从外部存储读取像素信息,因此为了提高存取的效率,可以用一个存储器到存储器的DMA(MemDMA)来将像素转移到L1或者L2存储器中。

到目前为之,我们还仅专注于数据的移动,但是DMA的传送能力并不总是用来移动数据。

我们可以用代码覆盖的办法来提高性能,将DMA的控制器配置为在执行前把代码送入L1指令存储器。

代码往往存储于较大的外部存储器中,而根据需要有选择性的送入L1。

DMA控制器的编程让我们考察一下在定义DMA活动的过程中可以有哪些选项。

我们将从最简单的模型开始,并在此基础上过渡到更为灵活的模型,这反过来增加了设置的复杂度。

对于仸何类型的DMA传输,我们都需要规定数据的起始源和目标地址。

对于外设DMA的情况来说,外设的FIFO可以作为数据源或者目标端。

当外设作为源端时,某个存储器的位置(内部或外部)则成为目标端地址。

当外设作为目标端,存储的位置(内部或者外部)则成为源端地址。

在最简单的MemDMA情况中,我们需要告诉DMA控制器源端地址、目标端地址和待传送的字的个数。

采用外设DMA的情况下,我们规定数据的源端或者目标端,具体则取决于传输的方向。

每次传输的字的大小可以是8、16或者12位。

这种类型的事务代表了简单的1维(“1D”)统一“跨度”(unity stride)的传输。

作为这一传输机制的一部分,DMA控制器连续跟踪不断增加的源端和目标端地址。

采用这种传输方式时,8位的传输产生1字节的地址增量,而16位传输产生的增量为2字节,32位传输则产生4字节的增量。

上面的参数是基本的1D DMA传输的设置参数。

我们只需要改变数据传输每次的数据大小,就可以简单地增加一维DMA的灵活性。

例如,采用非单一大小的传输方式时,我们以传输数据块的大小的倍数来作为地址增量。

也就是说,若规定32位的传输和4个采样的跨度,则每次传输结束后,地址的增量为16字节(4个32位字)。

虽然1D DMA得到了广泛的应用,但用处更大的则是2维(2D) DMA,特别是在视频应用中。

2D功能是我们所讨论的1D DMA的情形的一种直接扩展。

除了XCOUNT和XMODIFY值之外,我们还需对对应的YCOUNT和YMODIFY值进行编程设定。

2D DMA可以简单地理解为一个嵌套的循环,即内循环由XCOUNT和XMODIFY来规定,外循环由YCOUNT和YMODIFY规定。

一个1D DMA可以被简单的视为2D传输的“内循环”,如下形式:for y = 1 to YCOUNT /* 2D的外循环*/for x = 1 to XCOUNT /* 1D的内循环*/{/* 传输循环主体转移到这里*/}XMODIFY决定了XCOUNT每次减少时的DMA控制器的跨度值,而YMODIFY则决定了YCOUNT每次减少时对应的跨度值。

与XCOUNT和XMODIFY一样,YOUNT可以以传输数量来定义,而YMODIFY则以字节数来定义。

值得注意的是,YMODIFY可以为负值,这会让DMA控制器回转到缓冲器的起始点。

对于外设DMA来说,传输的“存储器端”可以是1D或2D。

不过,在外设端,传输始终是1D的。

唯一的限制是在DMA每一端(源端和目标端)传输的字节总数必须相同。

例如,如果我们从3个10字节的缓冲器向外设发送数据,外设必须被设定为传送30字节,具体方式则可以是仸何可能的、所支持的传输宽度和传输计数值的组合。

MemDMA提供的灵活度则要更高一些。

例如,如果我们可以建立一个1D-2D传输、一个1D-2D传输、1个2D-1D传输,且可自然而然建立一个2D-2D传输,唯一的限制条件是,在DMA传输模块的两端所传送的字节总数必须相等。

DMA的设置目前有两类主要的DMA传输结构:寄存器模式和描述符模式。

无论属于哪一类DMA,表1所描述的几类信息都会在DMA控制器中出现。

当DMA以寄存器模式工作时,DMA控制器只是简单地利用寄存器中所存储的参数值。

在描述符模式中,DMA控制器在存储器中查找自己的配置参数。

表1:DMA寄存器基于寄存器的DMA在基于寄存器的DMA内部,处理器直接对DMA控制寄存器进行编程,来启动传输。

基于寄存器的DMA提供了最佳的DMA控制器性能,因为寄存器并不需要不断地从存储器中的描述符上载入数据,而内核也不需要保持描述符。

基于寄存器的DMA由两种子模式组成:自动缓冲(Autobuffer)模式和停止模式。

在自动缓冲DMA中,当一个传输块传输完毕,控制寄存器就自动重新载入其最初的设定值,同一个DMA进程重新启动,开销为零。

正如我们在图3中所看到的那样,如果将一个自动缓冲DMA设定为从外设传输一定数量的字到L1数据存储器的缓冲器上,则DMA控制器将会在最后一个字传输完成的时刻就迅速重新载入初始的参数。

这构成了一个“循环缓冲器”,因为当一个量值被写入到缓冲器的最后一个位置上时,下一个值将被写入到缓冲器的第一个位置上。

图3:用DMA实现循环缓冲器。

自动缓冲DMA特别适合于对性能敏感的、存在持续数据流的应用。

DMA控制器可以在独立于处理器其他活动的情况下读入数据流,然后在每次传输结束时,向内核发出中断。

虽然有可能以恰当的方式阻止自动缓冲模式,但如果DMA进程需要定期启动和停止时,采用这种工作方式就没有什么意义。

停止模式的工作方式与自动缓冲DMA类似,区别在于各寄存器在DMA结束后不会重新载入,因此整个DMA传输只发生一次。

停止模式对于基于某种事件的一次性传输来说十分有用。

例如,非定期地将数据块从一个位置转移到另一个位置。

当你需要对事件进行同步时,这种模式也非常有用。

例如,如果一个仸务必须在下一次传输前完成的话,则停止模式可以确保各事件发生的先后顺序。

此外,停止模式对于缓冲器的初始化来说非常有用。

描述符模型基于描述符(descriptor)的DMA要求在存储器中存入一组参数,以启动DMA的系列操作。

该描述符所包含的参数与那些通常通过编程写入DMA控制寄存器组的所有参数相同。

不过,描述符还可以容许多个DMA操作序列串在一起。

在基于描述符的DMA操作中,我们可以对一个DMA通道进行编程,在当前的操作序列完成后,自动设置并启动另一次DMA传输。

基于描述符的方式为管理系统中的DMA传输提供了最大的灵活性。

ADI 的Blackfin处理器上有两种主要的描述符方式—描述符阵列和描述符列表,这两种操作方式所要实现的目标是在灵活性和性能之间实现一种折中平衡。

在描述符阵列模式下,描述符驻留在连续的存储器位置上。

DMA控制器依然从存储器取用描述符,但是因为下一个描述符紧跟着当前的描述符,说明到何处去寻找下一个描述符(以及它们相应的描述符取用)的两个数据字就并不必要。

因为描述符并不包含这一“下一描述符”指针项,DMA控制器希望一组描述符在存储器相互挨在一起,如同阵列一般。

当各描述符在存储器中的分布位置并非“背对背”时,可以使用一个描述符列表。

实际上这里涉及多种子模式,从而再一次实现了性能和灵活性之间的折中平衡。

在“小描述符”模型中,描述符包括了一个单16位的域,用来给出“下一描述符指针”域的低位部分;高位部分则通过寄存器来独立编程设定,并且不发生改变。

当然,这将描述符限制在存储器中一个特定的64K(=216)页面上。

当描述符的位置需要跨越这一边界时,也可以提供一个“大”模型,它可以为“下一描述符指针”项提供32位的位置。

无论采用何种描述符模式,描述符的量值数越多,则描述符取用的次数就越多。

这也就是为何Blackfin处理器定义了一个“柔性描述符方式”的原因,该模式可以修改描述符的长度,使之仅仅包括特定传输所需要的数据。

例如,如果不需要2D DMA,YMODIFY和YCOUNT 寄存器就不需要成为描述符数据块的一部分。

描述符管理管理描述符列表的最佳方法是什么?其实,这个问题的答案需要根据应用来定,但要明白存在何种替代方法很重要。

我们将描述的第一种选择,其工作方式非常类似于一个自动缓冲DMA。

相关文档
最新文档