|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
dsp的DMA訪問和CPU訪問的疑問 |
| 作者:venturer 欄目:DSP技術(shù) |
問題1:從dsp6203的內(nèi)部框圖來看,是不是說明如果DMA訪問和CPU訪問的對象不同就可以可以同時進行讀。▽懭耄。比如,CPU訪問EMIF的SDRAM,DMA訪問XBUS的接口,是不是存在一個clk中CPU內(nèi)核讀取一個字并且DMA讀取一個字? 問題2:在DMA訪問異步外設(shè)過程中,是否允許CPU訪問占用總線訪問外設(shè);如SETUP:2CLK;STROBE:5CLK;WAIT:5CLK;HOLD:2CLK;在DMA的5個WAIT周期,是否允許CPU內(nèi)核訪問外設(shè)?
|
| 2樓: | >>參與討論 |
| 作者: venturer 于 2005/12/15 8:30:00 發(fā)布:
頂一個 |
|
| 3樓: | >>參與討論 |
| 作者: dreambird 于 2005/12/16 18:10:00 發(fā)布:
re DMA訪問外設(shè)的話肯定會向CPU申請總線控制權(quán),如果DMA不釋放總線,CPU就不能使用總線 |
|
| 4樓: | >>參與討論 |
| 作者: venturer 于 2005/12/19 20:10:00 發(fā)布:
RE 但是從圖上可以看出,他們好象可以使用不同的總線去訪問不同片內(nèi)外設(shè)。象EMIF,他就可以使用各種不同的總線去訪問。 |
|
| 5樓: | >>參與討論 |
| 作者: venturer 于 2005/12/30 13:00:00 發(fā)布:
d d |
|
| 6樓: | >>參與討論 |
| 作者: yan2005 于 2005/12/31 9:23:00 發(fā)布:
任一時刻一個總線只能被一個host使用 對于掛在同一條總線上的CPU和DMA控制器, 如果CPU在使用某一個總線,那么DMA控制器就不能再使用該總線。反之亦然。 上述斷言帶來的一個疑問是: 既然CPU和DMA不能同時使用總線,那么DMA怎么能帶來系統(tǒng)性能的提高呢? 其實關(guān)鍵在于CPU往往帶有Cache,處理器內(nèi)核在大多數(shù)情況下不需要通過總線從外存中取指令和數(shù)據(jù),而是直接從Cache中獲得。這個Cache命中率很高(百分之九十幾) ,因此系統(tǒng)總線有空多空閑。DMA控制器可以利用這些空閑來傳輸數(shù)據(jù),從而提高總線的利用率,來實現(xiàn)系統(tǒng)性能的提高。 呵呵,前段時間面試了幾個碩士,問了這個問題,好像都不知道。 |
|
| 7樓: | >>參與討論 |
| 作者: jinzhao 于 2005/12/31 9:37:00 發(fā)布:
謝謝yan2005! |
|
| 8樓: | >>參與討論 |
| 作者: venturer 于 2006/1/4 10:24:00 發(fā)布:
謝謝yan2005 那如果具體針對TI的6203來說,如圖,EMIF接口有四條總線(圖上紅色所示)2表示內(nèi)核程序總線與EMIF的專用接口,4表示內(nèi)核數(shù)據(jù)總線與EMIF的專用接口,1表示DMA總線與EMIF的專用接口,3表示外設(shè)總線(PERIPHERAL BUS)與EMIF的專用接口。也就是說內(nèi)核可以通過四種方式來訪問EMIF外設(shè)接口。不知道我上面的理解是否正確,請賜教。 如果上面的理解正確,是不是說明內(nèi)核可以通過2號總線訪問EMIF的同時也可以通過外設(shè)總線(PERIPHERAL BUS)來訪問MBSP0(圖上藍色5號總線所示),兩者相互不沖突???
|
|
| 9樓: | >>參與討論 |
| 作者: yan2005 于 2006/1/4 11:00:00 發(fā)布:
to venturer 好像你錯誤理解了總線的定義。上面你標(biāo)出的1/2/3/4/5確切的說應(yīng)該只是排線,而不是總線。 在上圖中,總線只有兩條,即DMA Bus和Peripheral CONTROL Bus。其中: 1) DMA Bus這個總線上掛著EMIF,DMA控制器,以及處理器內(nèi)核。這個總線主要是用來實現(xiàn)數(shù)據(jù)傳輸?shù)摹?br>2) Peripheral CONTROL Bus上面掛著EMIF,定時器,串口,XBus,DMA控制器,中斷控制器等,用來對外設(shè)控制器寄存器進行設(shè)置以及對外設(shè)狀態(tài)寄存器進行查詢。 由上圖可看到,1號線和3號線是通過總線的,而2號線和4號線是直接訪問EMIF。 因此,2號線和5號線的使用是不會沖突的。但是CPU能否同時利用2號線和5號線,要看處理器內(nèi)核是否支持多條執(zhí)行路徑。如果不支持的話,只能在軟件層面上分時模擬了。 坦白一下,其實我根本就沒有學(xué)過或者用過DSP,上次只是路過,即興留了個言。請大家批評指正。 |
|
| 10樓: | >>參與討論 |
| 作者: venturer 于 2006/1/5 10:44:00 發(fā)布:
交流為了一起進步嘛! yan2005的部分論點我們是想到一塊了,但感覺有問題解釋不通,所以一直迷惑。大家有其他解釋嗎? |
|
| 11樓: | >>參與討論 |
| 作者: shaka1981 于 2006/1/6 10:23:00 發(fā)布:
。 其實關(guān)鍵在于CPU往往帶有Cache.... DSP好像并沒有這個cache,TI5000系列是這樣,他的DMA在使用外部總線的時候,CUP不能使用,必須等這次DMA操作完成。 |
|
| 12樓: | >>參與討論 |
| 作者: venturer 于 2006/1/6 14:11:00 發(fā)布:
RE 在TI6000里面,DSP是存在CACHE,有些有兩級緩存,如圖中的Internal Program MEMORY,共384k,其中分BLOCK1-256K和BLOCK2-128K,BLOCK2-128K可以配置成一級緩存。 |
|
| 13樓: | >>參與討論 |
| 作者: yan2005 于 2006/1/6 15:18:00 發(fā)布:
沒有Cache的話,DMA意義不大 DMA控制器在I/O口和MEMORY之間或者在MEMORY和MEMORY之間傳輸數(shù)據(jù),其目的是為了減輕處理器內(nèi)核的負擔(dān)。如果沒有DMA控制器,這些數(shù)據(jù)傳輸工作都要由處理器內(nèi)核來做。而有了DMA控制器,處理器內(nèi)核就可以去做些別的事情。 處理器內(nèi)核那能做些什么呢?不外乎取指、譯碼、執(zhí)行等操作。當(dāng)DMA控制器占有總線的時候,處理器內(nèi)核就不能再訪問外部掛在總線上的MEMORY了。如果Cache也沒有,那么處理器內(nèi)核就沒地方取指了。因此此時處理器內(nèi)核需要等待。既然要等待,那么還不如舍棄DMA傳輸方式而讓處理器內(nèi)核自己來傳輸數(shù)據(jù)。 |
|
| 14樓: | >>參與討論 |
| 作者: yan2005 于 2006/1/6 15:23:00 發(fā)布:
不過有一種例外 如果指令不是單周期執(zhí)行而是多周期的話,在DMA傳輸過程中,處理器內(nèi)核可能不需要取指(即當(dāng)前指令執(zhí)行時間較長)。這種情況下也許不要Cache也能體現(xiàn)DMA的意義。 |
|
| 15樓: | >>參與討論 |
| 作者: tjsheep 于 2006/1/6 18:53:00 發(fā)布:
樓上說的我覺得有些不妥,呵呵 現(xiàn)在的dsp基本都是改進的哈佛結(jié)構(gòu),內(nèi)部有獨立的數(shù)據(jù)讀、寫、程序讀、寫等多條總線,在高端的dsp如64x系列,dma也都是edma,在數(shù)據(jù)控制能力上非常強,因此在總線利用率上,和有無cache應(yīng)該不是絕對的聯(lián)系 |
|
| 16樓: | >>參與討論 |
| 作者: VENTURER 于 2006/1/19 9:44:00 發(fā)布:
頂一下, |
|
| 17樓: | >>參與討論 |
| 作者: a12345678 于 2006/1/22 11:24:00 發(fā)布:
yan2005 的話沒錯,但是有些片面 1。 DSP結(jié)構(gòu)上有很多差異,對于多總線結(jié)構(gòu)(例如6000或64x/64x+),只要DMA和內(nèi)核訪問不同的總線,不會產(chǎn)生沖突;即使產(chǎn)生沖突,只會產(chǎn)生一些延遲。 2。 DMA是DSP內(nèi)部極為重要的一個部件,即使關(guān)閉cache(除64x/64x+以外),DMA仍然能夠比內(nèi)核直接訪問總線速度快,主要原因是兩者可以并行運行,大大減少內(nèi)核等待時間。 上述內(nèi)容在TI的技術(shù)資料中有很詳細的介紹。 從實際編程看,建議不要采用直接用內(nèi)核訪問外部存儲器等指令,這會造成系統(tǒng)暫時停頓,效率大大降低。 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |