理論上是這樣,但是實際上緩存的大小並不是決定硬碟讀寫速度的唯一因素,而且硬碟的緩存不可能無限制的大。
緩存(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)