Saturday, January 18, 2014

瞭解 DMA (Direct Memory Access)

故事是這樣的。

從前有個老大覬覦著國王的寶藏庫,朝朝夜夜只想要把寶藏庫裡的東西搬到自己家裡頭;而當老大的,總是有個不愛自己露臉的個性,所以有個稱職又講禮貌的小弟服務他。

這天終於來了,老大告訴小弟:「誒,去搜刮寶藏庫裡面的五號珍藏品,它放在第七號櫃子上」,沒想到這個講禮貌的小弟竟然跑去跟國王說他要用外頭搬運貨物的道路來搬寶藏,更沒想到的是,這昏庸的國王看看發現沒有人在使用這個道路,於是竟然就答應了!

這下好了,小弟馬上跑去寶藏庫跟管理員說他要七號櫃子的寶藏,然後又跑去跟老大說事情搞定了。都講好之後,五號珍藏品就從寶藏庫搬運出來了,一路搬到老大他家,這時老大也笑哈哈的把這珍藏品收起來。

小弟似乎有禮貌過頭,老大把珍藏品都收好之後,他竟然又跑去跟國王說寶藏庫已經使用完了,那條送貨的路可以還給你用了,而昏庸的國王則點點頭說知道了。寶藏就在國王沒親自插手的情況下搬到老大家了!

以上就是DMA的運作介紹

角色

  • 國王:CPU
  • 老大:I/O Device with Interface
  • 小弟:DMA
  • 寶藏庫:(System) Memory
  • 搬運貨物的道路:Address Bus


流程示意圖

* 影像來自課本講義

配合示意圖中的流程編號,我們可以將本來故事編上編號:

故事是這樣的。

從前有個老大覬覦著國王的寶藏庫,朝朝夜夜只想要把寶藏庫裡的東西搬到自己家裡頭;而當老大的,總是有個不愛自己露臉的個性,所以有個稱職又講禮貌的小弟服務他。

這天終於來了,老大告訴小弟:「誒,去搜刮寶藏庫裡面的五號珍藏品,它放在第七號櫃子上」(1),沒想到這個講禮貌的小弟竟然跑去跟國王說他要用外頭搬運貨物的道路來搬寶藏(2),更沒想到的是,這昏庸的國王看看發現沒有人在使用這個道路,於是竟然就答應了(3)

這下好了,小弟馬上跑去寶藏庫跟管理員說他要七號櫃子的寶藏(4),然後又跑去跟老大說事情搞定了(5)。都講好之後,五號珍藏品就從寶藏庫搬運出來了,一路搬到老大他家(6),這時老大也笑哈哈的把這珍藏品收起來(7)

小弟似乎有禮貌過頭,老大把珍藏品都收好之後,他竟然又跑去跟國王說寶藏庫已經使用完了(8),那條送貨的路可以還給你用了,而昏庸的國王則點點頭說知道了(9)。寶藏就在國王沒親自插手的情況下搬到老大家了!