当前位置:首页 » 硬盘大全 » dm内存做缓存
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

dm内存做缓存

发布时间: 2022-10-10 23:43:05

Ⅰ 请问是硬盘是不是缓存越大它 的读取、存储速度就越快呢

理论上是这样,但是实际上缓存的大小并不是决定硬盘读写速度的唯一因素,而且硬盘的缓存不可能无限制的大。

缓存(Cache memory)是硬盘控制器上的一块内存芯片,具有极快的存取速度,它是硬盘内部存储和外界接口之间的缓冲器。由于硬盘的内部数据传输速度和外界接口传输速度不同,缓存在其中起到一个缓冲的作用。缓存的大小与速度是直接关系到硬盘的传输速度的重要因素,能够大幅度地提高硬盘整体性能。当硬盘存取零碎数据时需要不断地在硬盘与内存之间交换数据,如果有大缓存,则可以将那些零碎数据暂存在缓存中,减小外系统的负荷,也提高了数据的传输速度。

具体到硬盘,其缓存主要起三种作用:
第一:预读取。
第二:对写入动作进行缓存。
第三:临时存储最近访问过的数据。
大容量的缓存虽然可以在硬盘进行读写工作状态下,让更多的数据存储在缓存中,以提高硬盘的访问速度,但并不意味着缓存越大就越出众,这里还存在一个读写算法的问题。
缓存的应用存在一个算法的问题,即便缓存容量很大,而没有一个高效率的算法,那将导致应用中缓存数据的命中率偏低,无法有效发挥出大容量缓存的优势。算法是和缓存容量相辅相成,大容量的缓存需要更为有效率的算法,否则性能会大大折扣。
一般硬盘厂商会在综合衡量成本、算法、硬盘的市场定位等因素后给出一个合理的缓存值,如定位于民用市场的500G硬盘ST3500418AS的希捷500G的硬盘拥有16MB的缓存,又在如定位民用市场的ST2000DM001的希捷2000G硬盘拥有64MB的缓存。

Ⅱ 我的电脑里有个"DM"文件是干吗用的

DM:即Disk Man。
Disk Man 这是一款国产的全中文硬盘分区表维护软件,它的主要特点如下:运行于MSDOS环境,采用全中文图形界面,无须任何汉字系统支持。以图表的形式揭示了分区表的详细结构。支持鼠标操作;支持8G以上的大硬盘;支持多种系统分区,能建立如UNIX,Linux,NTFS,OS2等操作系统分区;没有只能建立一个主DOS分区的限制。且可在保留扩展分区的情况下删除主DOS分区,使您可以重新规划主DOS分区(即C盘);可手工修改分区参数,并可对分区参数进行检查;可隐藏DOS FAT分区; 能查看硬盘任意扇区;可备份包括逻辑分区表及各分区引导记录在内的所有硬盘分区信息;.具有分区表重建功能,能恢复被破坏的分区表;.几乎所有操作都在内存中进行,由用户自行存盘,可防止误操作;具备回溯功能,当您对分区表操作失败后,可用此功能复原。

软件说明:
软件为硬盘分区表维护工具,能更改硬盘分区表中包括逻辑分区在内的所有数据。所以提醒您要慎重操作,在不了解分区表结构的情况下,不要更改分区参数. 最好在做任何操作之前首先做好分区表备份。不过,在写盘前,所有的操作都是在内存中进行的。

软件使用:
Disk Man区别于普通硬盘分区管理工具,如 FDISK等只能完成建立分区、删除分区、激活分区等简单的功能,且局限于FAT 分区。通过它,您可以建立多种操作系统分区,并且能对分区参数进行具体设定。

其中包括:备份及恢复分区表,启动软件后,按F9键,然后输入文件名,即可备份分区表。 按F10键,后输入文件名,可将指定文件的分区表备份恢复到硬盘;建立分区, 将光标移动到分区结构图的灰色区域,按F1键,然后按照提示输入分区大小及分区类型,要建立非DOS分区, 还须根据提示设定系统标志 ( 如建立XENIX分区,系统标志为 "02" )。Disk Man没有只能建立一个PRI DOS分区的限制,也就是说,您最多可以建立四个主DOS分区。Disk Man不对任何分区进行格式化,建立分区后,要用操作系统提供的相应的format命令进行格式化;激活分区,将光标移动到要激活的分区,按F7键。再次按F7键会取消激活;删除分区,将光标移动到要删除的分区,按F6键;隐藏分区,将光标移动到要隐藏的 FAT分区,按F4键。再次按F4键恢复;直接修改参数,将光标移动到要修改的分区,按F11键进入修改状态, 将光标移动到要修改的参数,键入您要设定的值。修改后选"确定"退出即可;参数检查,Disk Man在读出分区表后及更新硬盘分区表之前,会自动检查分区参数,发现不合理参数时会给出提示。您可以在任何时候按F12键进行检查;更新硬盘分区表,要使新设置生效时,可按F8键,Disk Man将首先检查分区参数,确认无误后写入硬盘;查看任意扇区,按CTRL_R键,然后选择要查看的扇区,选"确定"。查看完,按任意一键可返回;选择硬盘,如果计算机装有第二硬盘,按ALT_D键后,弹出的菜单中将会出现"第 2硬盘"选项。选中它即可对第二硬盘操作。同样的操作亦可转换到第一硬盘;重建分区表,Disk Man这个功能主要用于当硬盘分区表被病毒或其他原因破坏时,试图通过未被破坏的分区引导记录信息重新建立分区表。DiskMan将首先搜索0柱面0磁头从2扇区开始的隐含扇区,寻找被病毒挪动过的分区表。接下来搜索每个磁头的第一个扇区。搜索过程可以采用"自动"或"交互"两种方式进行。自动方式保留发现的每一个分区,适用于大多数情况。交互方式对发现的每一个分区都给出提示,由用户选择是否保留。当自动方式重建的分区表不正确时,可以采用交互方式重新搜索。 重建分区表功能位于"工具"菜单下;回溯, 为了您能放心使用本软件,对于每一次写盘操作,在执行写盘命令之前,Disk Man软件会首先保存待写扇区的原数据到回溯文件"LOOKBACK.DAT"中。也就是说,回溯文件保存了这次运行中所有更新过的扇区的原内容。当您发现写盘之后没达到目的时,就可以使用回溯功能恢复到写盘之前的状态。为了使本功能更好的发挥作用,请您最好从软盘启动本软件,并去掉写保护。LOOKBACK.DAT保存在 DISKMAN.EXE所在目录中。

Disk Man的上述各项功能均可通过鼠标操作来实现。从1.2版开始,您可以用鼠标拖动窗口,从而可以看到窗口背后的内容。

可以说,当您遇到了关于分区表的难题,Disk Man会使您轻松对待。

——————————————————————————
GHO:就是ghost生成的镜像文件。

Ⅲ ddr2 中,dm是什么意思

DQS(Data Strobe),DQ(Data
Bus),DM(Data Mask)
DQ为读出或者写入的数据信号。
DQS:当读出操作时,在DQS的边沿读出DQ数据;当写入操作时,在DQS的中心写入DQ数据。
DM:当写入操作时,在DM信号有效时写入DQ数据。

Ⅳ 分区工具DM使用问题

DM软件是一个体积较小的分区软件,运行后它会全部装入内存.所以用硬盘上的DM软件对硬盘进行分区也是可以的.

但是,为了确保硬盘安全,建议你利用其他软件(如"XMSDSK虚拟内存盘程序的汉化版",下载地址:http://www.freeworld.net.cn/Article/Catalog91/30273.html),先创建一个虚拟分区,并将硬盘中的DM软件COPY到虚拟分区后再运行.

Ⅳ 内存dm定制是什么意思

亲,DM定制版和渠道版是相对应的概念,DM定制版是电信运营商定制版,有预装电信服务进程。

Ⅵ 秦dm咋清理车载内存

将车载导航里的存储卡拔出来,连接在电脑上,将无用的数据删除一下,内存清理就完成了。
如果不想清理数据,可以选择更换内存更大的储存卡。运行的导航软件,占用内存主要表现在点击导航仪反应比较慢,这跟导航软件的皮肤界面等有关系。
进入中控屏主页,找见设置,如果没有啥重要的东西,直接恢复出厂设置就可以了,很简单。有的车系,导航是清理不了内存的,一般也没有清理内存这个功能,因为导航车本身就带的,如果买车后一直没有更新,是不需要清理内存的。

Ⅶ 求大神指教,这电脑配置有什么问题没有,有没有优化的余地不管是性能还是价格来点有用的,谢谢啊。

1、既然用不能超频的I5 4570,那么散热器上一个 50元左右的双热管塔式大口径侧吹的散热器就行,买大霜塔无用武之地
2、电源我的建议是买额定600W以上,至少额定550W,原因是你选的显卡功耗比一般的高
同价位就选:
Tt 额定550W 威龙650 电源(主动PFC/宽幅设计/12cm智能温控风扇) ¥299.00
3、固态硬盘既然要用,就别省钱,里面坑很多的,譬如你选的EVO的就是个坑,换吧
建议上:浦科特 M5Pro系列 128G 2.5英寸 SATA-3固态硬盘(PX-128M5P) ¥799.00
记住,一定要买 M5Pro,而不要图省几十元买M5S 的!
原因你就自己去找一下固态方面的资料了解,说起来可是一大串
4、根据你的cpu,主板选:
技嘉(GIGABYTE) G1.Sniper B5主板 (Intel B85/LGA1150) ¥749.00
5、cpu 建议买散装的,价格才1120元,这样才对得起它的性能,因为四代I5并非神U,不值这个价,也就是散片+烂散热器卖高价的
ps:
多一些话,解决你的关于ssd使用的困扰,
ssd的SRT加速技术是利用ssd来对机械硬盘加速,本身就是鸡肋,也就相当于利用内存做缓存一样的道理,
如果一旦开启了SRT,那么你的硬盘必须先全盘清除数据,
同时一旦出现问题,你的硬盘数据也同样可能全盘丢失,
同时SRT技术还有一个弱点,一旦你非法关机,可能会导致缓存中的数据丢失,这个丢失的数据量有可能是几个G,
在ssd很贵,只有小容量ssd的时候,SRT技术还有存在的价值,
当你ssd达到100G以上,同时可以足够容纳操作系统和必要的软件时候,SRT也就没什么实用价值了,
机械硬盘当仓库就没必要采用SRT技术,因为其缺陷会导致你硬盘仓库奔溃,这个损失是承受不起的!
总之,SRT技术只不过在机械硬盘转向固态硬盘升级过程中为机械硬盘提供一个衔接过度的技术手段,并非必须的,所以主板有无这个技术都可以无视
还需要提醒的是:
ssd本身就是一个标准的硬盘,而速度比机械硬盘快很多
SRT技术本身是设置高速缓存来提高机械硬盘的速度
并不会因使用SRT技术而使SSD速度更快
使用ssd为了充分发挥速度性能,应使用sata3.0的接口

Ⅷ SDRAM DDR DDR2的详细性能指标

DDR2/DDR II(Double Data Rate 2)SDRAM是由JEDEC(电子设备工程联合委员会)进行开发的新生代内存技术标准,它与上一代DDR内存技术标准最大的不同就是,虽然同是采用了在时钟的上升/下降延同时进行数据传输的基本方式,但DDR2内存却拥有两倍于上一代DDR内存预读取能力(即:4bit数据读预取)。换句话说,DDR2内存每个时钟能够以4倍外部总线的速度读/写数据,并且能够以内部控制总线4倍的速度运行。

此外,由于DDR2标准规定所有DDR2内存均采用FBGA封装形式,而不同于目前广泛应用的TSOP/TSOP-II封装形式,FBGA封装可以提供了更为良好的电气性能与散热性,为DDR2内存的稳定工作与未来频率的发展提供了坚实的基础。回想起DDR的发展历程,从第一代应用到个人电脑的DDR200经过DDR266、DDR333到今天的双通道DDR400技术,第一代DDR的发展也走到了技术的极限,已经很难通过常规办法提高内存的工作速度;随着Intel最新处理器技术的发展,前端总线对内存带宽的要求是越来越高,拥有更高更稳定运行频率的DDR2内存将是大势所趋。

DDR2与DDR的区别:

1、延迟问题:

从上表可以看出,在同等核心频率下,DDR2的实际工作频率是DDR的两倍。这得益于DDR2内存拥有两倍于标准DDR内存的4BIT预读取能力。换句话说,虽然DDR2和DDR一样,都采用了在时钟的上升延和下降延同时进行数据传输的基本方式,但DDR2拥有两倍于DDR的预读取系统命令数据的能力。也就是说,在同样100MHz的工作频率下,DDR的实际频率为200MHz,而DDR2则可以达到400MHz。

这样也就出现了另一个问题:在同等工作频率的DDR和DDR2内存中,后者的内存延时要慢于前者。举例来说,DDR 200和DDR2-400具有相同的延迟,而后者具有高一倍的带宽。实际上,DDR2-400和DDR 400具有相同的带宽,它们都是3.2GB/s,但是DDR400的核心工作频率是200MHz,而DDR2-400的核心工作频率是100MHz,也就是说DDR2-400的延迟要高于DDR400。

2、封装和发热量:

DDR2内存技术最大的突破点其实不在于用户们所认为的两倍于DDR的传输能力,而是在采用更低发热量、更低功耗的情况下,DDR2可以获得更快的频率提升,突破标准DDR的400MHZ限制。

DDR内存通常采用TSOP芯片封装形式,这种封装形式可以很好的工作在200MHz上,当频率更高时,它过长的管脚就会产生很高的阻抗和寄生电容,这会影响它的稳定性和频率提升的难度。这也就是DDR的核心频率很难突破275MHZ的原因。而DDR2内存均采用FBGA封装形式。不同于目前广泛应用的TSOP封装形式,FBGA封装提供了更好的电气性能与散热性,为DDR2内存的稳定工作与未来频率的发展提供了良好的保障。

DDR2内存采用1.8V电压,相对于DDR标准的2.5V,降低了不少,从而提供了明显的更小的功耗与更小的发热量,这一点的变化是意义重大的。

DDR2采用的新技术:

除了以上所说的区别外,DDR2还引入了三项新的技术,它们是OCD、ODT和Post CAS。

OCD(Off-Chip Driver):也就是所谓的离线驱动调整,DDR II通过OCD可以提高信号的完整性。DDR II通过调整上拉(pull-up)/下拉(pull-down)的电阻值使两者电压相等。使用OCD通过减少DQ-DQS的倾斜来提高信号的完整性;通过控制电压来提高信号品质。

ODT:ODT是内建核心的终结电阻器。我们知道使用DDR SDRAM的主板上面为了防止数据线终端反射信号需要大量的终结电阻。它大大增加了主板的制造成本。实际上,不同的内存模组对终结电路的要求是不一样的,终结电阻的大小决定了数据线的信号比和反射率,终结电阻小则数据线信号反射低但是信噪比也较低;终结电阻高,则数据线的信噪比高,但是信号反射也会增加。因此主板上的终结电阻并不能非常好的匹配内存模组,还会在一定程度上影响信号品质。DDR2可以根据自己的特点内建合适的终结电阻,这样可以保证最佳的信号波形。使用DDR2不但可以降低主板成本,还得到了最佳的信号品质,这是DDR不能比拟的。

Post CAS:它是为了提高DDR II内存的利用效率而设定的。在Post CAS操作中,CAS信号(读写/命令)能够被插到RAS信号后面的一个时钟周期,CAS命令可以在附加延迟(Additive Latency)后面保持有效。原来的tRCD(RAS到CAS和延迟)被AL(Additive Latency)所取代,AL可以在0,1,2,3,4中进行设置。由于CAS信号放在了RAS信号后面一个时钟周期,因此ACT和CAS信号永远也不会产生碰撞冲突。

采用双通道运行,速度是DDR的2倍。

总的来说,DDR2采用了诸多的新技术,改善了DDR的诸多不足,虽然它目前有成本高、延迟慢能诸多不足,但相信随着技术的不断提高和完善,这些问题终将得到解决。

Ⅸ 求解:外存与内存间数据交换的具体过程

摘 要: 直接内存存取(DMA)是DSP芯片中用于快速数据交换的重要技术,对AD公司的浮点系列芯片ADSP2106x中的DMA的应用进行了详细介绍,并给出实际应用中的一些例子。
关键词: DMA 浮点系列芯片ADSP2106x
1 DMA概述
直接内存存取(DMA)对计算机系统是非常重要的。它可以使CPU在运行指令的同时,系统能实现从外部存储器或设备中存取数据,也可以在CPU不参与的情况下,由专用的DMA设备存取数据。
对于浮点DSP芯片来讲,DMA的作用更是重要。众所周知,DSP芯片主要是面向实时的信号处理,其核心的运算部件具有很高的运算速度,常以MFLOPS(每秒百万次浮点运算)来衡量。ADSP2106x为120MFLOPS,但该速度是以存储在芯片内部存储器中的程序和数据为前提的。在DSP内部往往采用多总线的哈佛结构,数据总线和程序总线相互独立,即指令的存取和数据的存取并行不悖;另外在ADSP2106x内部还有各种接口总线,用以提高数据的流通能力。但在芯片的外部,所有的总线都合并在一起了。因此为了发挥DSP核心运算单元的高速运算能力,首先必须把程序和数据传输到芯片的内存中,这通常需要DMA操作来实现。
另一方面,DSP系统总要与各种外部信号打交道,它从外部输入数字信号,经过各种算法的处理后,再输出给其他设备。不仅如此,对于浮点DSP系统,数据的输入和输出常常是连续不断的。试想,如果用DSP的核心部件来完成数据的输入和输出,它高速的运算能力又如何发挥得出来呢?所以,浮点系列的DSP芯片大都把DMA控制部分直接集成到了芯片上,用DMA来完成数据的输入和输出。
高效的DSP系统通常采用图1所示的结构。在内存中开辟出四块缓存区,两个作为输入缓存,两个作为输出缓存,用来实现输入、输出的乒乓切换。核心处理单元直接从输入缓存中取数运算,然后把运算结果写入输出缓存;而数据从外部接口的输入和输出则完全由DMA来实现,不需核心处理单元的参与。只要核心处理单元的运算速度和DMA的数据率满足要求,图1所示的结构就可以完成连续的数据流输入和输出。当然,从外部看,数据的输入和输出是连续的,但在芯片内部却是分段处理的。分段处理虽然带来一些误差,但只要缓存的数据足够长,就可以使误差降到允许的范围。因为间隔越长,前后数据间的相关性越小,相互间的影响就越小,故分段处理是可行的。由于分段处理,也给DSP芯片的结构带来了一个重要影响,那就是尽可能地增加其内部存储器的容量。对于ADSP21060,其内部的SRAM容量达4Mbit,可以满足大多数分段处理的需要。
下面首先对ADSP2106x中的DMA做概要介绍,然后对几种典型的DMA操作进行详细分析。
2 ADSP2106x中的DMA
ADSP2106x中的片内DMA控制器可以同时控制10个通道的DMA,完成下列类型的数据传输操作:
·内存外存或外部存储器映射设备
·内存其他ADSP2106x的内存
·内存主机接口
·内存串行口
·内存Link口
·内存外部设备
·外存外部设备
丰富的数据流向可以使ADSP2106x实现对各种外设的接口;另外,由于ADSP2106x的内存是双口SRAM,因此在进行上述DMA操作的同时,核心处理单元仍可以读写内存,使DMA操作与内部运算处理达到高度的并行性。当然,应尽量避免二者同时对同一内存地址进行读写。
每个DMA通道都有一个(或两个)用FIFO实现的数据缓存器,最大的缓冲深度为6级,用以提高DMA数据传输率。所有的DMA数据传输都是通过这10个数据缓存器来完成的,这些缓存器如表1所示。其中通道1、3、6、7都是两个缓存器共用一个DMA通道。所有数据缓存器作为I/O寄存器被映射到内存的前256个地址中。
DMA的编程是通过内部核心处理单元或外部主机对片内有关的I/O寄存器设置来实现的,这些I/O口寄存器也被映射到内存的前256个地址上。与DMA操作有关的I/O寄存器除了前面的数据缓存器外,主要还包括:
·DMA控制寄存器:DMAC6~9,LCTL,STCTL0~1,SRCTL0~1。
·地址-计数寄存器:II0~9,IM0~9,C0~9,EI6~9,EM6~9,EC6~9。
·链式操作指针寄存器:CP0~9。
·二维操作寄存器(也可作DMA通用寄存器):GP0~9,DA0~5,DB0~5。
·DMA状态寄存器:DMASTAT。
DMA设置传输过程一般如下:
(1)设置对应通道的地址-计数寄存器。
(2)设置对应通道的DMA控制寄存器,并将其中的DMA使能位设为有效。
(3)开始DMA数据传输。
(4)DMA传输结束后,产生对应的中断,程序对中断进行处理。
3 几种常用的DMA操作
在基于ADSP2106x的DSP系统的开发过程中,最常用到以下几种DMA操作:内存与外存、内存与主机、内存与外设、内存与Link口间的数据交换。
3.1 内存与外存间的DMA
内存与外存间的DMA传输可用DMA通道6~9这四个通道中的任一个。这里用一个例子来说明,假如要把内存地址0x26000~0x263ff中的1024个数用DMA通道6传送到外存0x400000~4003ff中,可用下面的编程来实现:
/*设置内存地址-计数寄存器*/
R0=0x26000;
DM(II6)=R0; /*设置内存起始地址*/
R0=1
DM(IM6)=R0; /*设置内存地址增加值*/
R0=1024;
DM(C6)=R0 /*设置内存读数次数*/
/*设置外存地址-计数寄存器*/
R0=0x400000;
DM(E16)=R0; /*设置外存起始地址*/
R0=1;
DM(EM6)=R0; /*设置外存地址增加值*/
R0=1024;
DM(EC6)=R0; /*设置外存写数次数*/
R0=0x0205;
DM(DMAC6)=R0;;/*设置DMA控制寄存器
DMAC6*/
/*设置为Master和从内存读数方
式,并使能DMA*/
/*DMA通道6开启DMA传数操作*/
这里需要说明两点:(1)I/O寄存器不能用立即数来直接赋值,而要通过通用寄存器R0~15或USTAT0~1来赋值;(2)在ADSP2106x中,由于数据的宽度有8、16、32和48几种方式,通过DMA传输时,内存和外部接口上的宽度可以不同,因此对应的读写次数可能不同,故内部计数器和外部计数器要分别设置。
对于外部存储器映射设备,其接口地址是固定的,此时内存与该外设间DMA的编程更加简单。比如某外设的地址设在0x400000,要把内存0x26000~0x263ff中的1024个数用DMA通道6传送到该外设接口上,只需把上面程序中的EM6设为0即可。
3.2 内存与主机间的DMA
在ADSP2106x芯片上包含了一个主机(host)接口,可以使其方便地与通用16位或32位计算机相连接,此时,通用计算机就作为ADSP2106x的主机,它可对ADSP2106x的片内存储器进行访问。通常情况下,为了减少主机对ADSP2106x寻址的地址线根数,以降低硬件复杂性,主机往往只对ADSP2106x的I/O寄存器(有256个)寻址,寻址的地址线只需8根1。BittWare公司的ADSP2106xEZ-LAB开发板即采用了此种方式。在这种情况下,主机与ADSP2106x内存间的数据交换大多是通过DMA完成的。下面通过运行在微机上的一段C语言程序来说明,此时EZ-LAB板插入微机的ISA总线插槽上,微机作为ADSP2106x的主机,ADSP2106x的I/O寄存器可由微机通过ISA总线上的I/O口来访问。该程序把数据d[1024]通过DMA通道6加载到ADSP2106x内存0x26000~0x263ff中。具体程序如下:
#injclude"conio.h"
#include "def21060.h" /*ADSP I/O寄存器地址定义文件*/
#include :stdio.h"
#define ADDR 0X402 /*定义ADSP地址线对应
的ISA总线I/O口地址*/
#define DATA 0x404 /*定义ADSP数据线对应
的ISA总线I/O口地址*/
main()
 {int n,d[1024];
/*设置ADSP中DMA通道6的地址-计数寄存器及控制寄存器*/
outpw(ADDR,II6); /*寻址起始地址寄存器II6*/
outpw(DATA,0x6000);/*设置II6的低16位*/
outpw(DATA,0x2); /*设置II6的高16位*/
outpw(ADDR,IM6); /*寻址地址增加寄存器IM6*/
outpw(DATA,1); /*设置IM6的低16位*/
outpw(DATA,0); /*设置IM6的高16位*/
outpw(ADDR,C6); /*寻址计数寄存器C6*/
outpw(DATA,1024); /*设置C6的低16位*/
outpw(DATA,0); /*设置C6的高16位*/
outpw(ADDR,DMAC6); /*寻址DMA控制寄存器
DMAC6 */
outpw(DATA,0x41);/*设置DMAC6的低16位*/
outpw(DATA,0); /*设置DMAC6的高16位*/
/*ADSP的DMA通道6设为16/32位模式,
并开启就绪,等待微机传数*/
/*微机向DMA通道6的数据缓存器EPB0中连续写入数据d[.]*/
outpw(ADDR,EPB0); /*寻址DAM通道6的数
据缓存器EPB0*/
for(n=0;n<1024;n++)
 {outpw(DATA,d[n]); /*写数据d[n]*/
outpw(DATA,0); /*高16位写0*/
}
}
对以上程序需要说明的有两点:(1)ADSP2106x的地址线和数据线是通过ISA总线上两个I/O口地址(ADDR和DATA)来访问的;(2)ISA总线为16位,而ADSP2106x的I/O寄存器和内存的数据都为32位,因此微机要用高、低16位分别传输,同时把DMA6设置为16/32位模式。关于EZ-LAB的详细情况可参见文献[1]。
3.3 内存与外设间的DMA
对于某些外部设备,其输入或输出是与某个外部时钟同步的,而与ADSP2106x的读写时钟不相干。当这样的设备与ADSP2106x接口时,通常的做法是在接口端加FIFO或双口RAM,把ADSP2106x的读写与该外设的输入或输出时钟隔离开来。但ADSP2106x芯片本身提供了更灵活、更高效的方式,即DMA通道7和8的握手DMA方式(Handshake),可以完全省去FIFO或RAM,其典型应用电路如图2所示。
图中以8位数据线宽度为例,以DMA通道7为输出,对应的握手信号为DMAR1和DMAG1;以DMA通道8为输入,对应的握手信号为DMAR2和DMAG2。整个电路只用到了最常用的74273和74374芯片,外设的读写时钟最高可达40MHz。在这种握手DMA方式中,外设不占用ADSP2106x的外部地址总线。关于上面电路的详细情况,在此不再赘述。
下面给出设置握手DMA的对应程序。这里假设要从外设2中输入1024个数据到内存0x26000~0x264ff中,则需对DMA通道8进行如下编程:
/*设置内存地址-计数寄存器*/
R0=0x26000;
DM(II8)=R0; /*设置内存起始地址*/
R0=1;
DM(IM8)=R0; /*设置内存地址增加值*/
R0=1024;
DM(C8)=R0; /*设置内存写数次数*/
/*设置外存计数寄存器*/
R0=1;
DM(EM8)=R0; /*设置外存地址增加值*/
R0=1024;
DM(EC8)=R0; /*设置外存输入次数*/
R0=0x401;
DM(DMAC8)=R0; /*设置DMA控制寄存器
DMAC8*/
/*设置为Handshake和向内存写数方式,并使能DMA*/
/*DMA通道8开启,等待外设的输入时钟,每接 收到一个时钟,输入一次*/
对上面程序需要说明的是:虽然电路中没有用到外存地址,但外存计数寄存器EM7和EC7也必须设置。
如果要向外设1中输入数据,则需要对DMA7进行类似的编程。
3.4 内存与Link口间的DMA
ADSP2106x具有很强的并行工作能力,不需加任何外部仲裁电路,6片ADSP2106x和一个主机就可以很方便连在一起并行工作。它们之间的数据交换既可以通过共享的外部数据、地址总线来实现,也可采用点对点的Link口来完成。6个Link口是ADSP2106x芯片所独有的高速数据接口;每个Link口包含4根数据线、一个时钟线和一个应答信号线,最高的数据传输率为40Mbyte/s。
用Link口进行片间数据交换,通常情况下都要采用DMA方式,这样才能将其优点充分发挥。在使用DMA方式进行Link口通讯时,除了要进行地址-计数寄存器的设置外,还要进行传输速率选择寄存器(LCOM)和缓存-口配对寄存器(LAR)的设置;最后设置DMA控制寄存器LCTL,并开启DMA操作。
假设有两片ADSP2106x,它们相互间用Link5口相连;我们要把第一片内存0x26000~0x263ff中的1024个数用Link5口传输到第二片的内存0x23000~0x23fff处,则两片ADSP2106x的DMA编程设置如下:
/*第一片*/
r0=0X3f000;
dm(LCOM)=r0; /*把Link口设为2x clock*/
r0=0xfff7f;
dm(LAR)=r0; /*link port5--> link buffer2,
对应DMA通道4*/
r0=0X26000;
dm(II4)=r0; /*设置起始地址*/
r0=1024;
dm(C4)=r0; /*设置读数次数*/
r0=1;
dm(IM4)=r0; /*设置地址增加值*/
r0=0Xb00;
dm(LCTL)=r0; /*enable output DMA*/
/*第二片*/
r0=0X3f000;
dm(LCOM)=r0; /*把Link口设为2x clock*/
r0=0xfff7f;
dm(LAR)=r0; /*link port5-->link buffer 2,对
应DMA通道4*/
r0=0x23000;
dm(II4)=r0; /*设置起始地址*/
r0=1024;
dm(C4)=r0; /*设置读数次数*/
r0=1;
dm(IM4)=r0; /*设置地址增加值*/
r0=0x300;
dm(LCTL)=r0; /*enable input DMA*/
对于上面的两段程序,应分别加载到两片ADSP2106x中。需要说明的是:Link Buffer 2对应DMA通道4。如果把其他的Link Buffer与Link口5配对,则需设置与该Buffer对应的DMA通道。
ADSP2106x中DMA操作功能强大,形式多样,除了本文所介绍的部分外,还有链式DMA、二维DMA等,因此要全部掌握并熟练应用是有一定难度的。通过对各种DMA的应用,可以使数据进出芯片变得更加流畅,也可以使其核心处理单元的运算能力发挥到极致
(本文转自电子工程世界:http://www.eeworld.com.cn/designarticles/embed/200605/2612.html)