DMA (Direct Memory Access)

บทความนี้เป็นบทความเก่าที่อยู่ด้าน menu แค่ย้ายเอามาอยู่ในกลุ่มของ Article เท่านั้นเอง จะได้เป็นกลุ่มเดียวกัน

DMA (Direct Memory Access) หรือการส่งเข้าถึงข้อมูลในหน่วยความจำโดยตรง คือกระบวนการโอนย้ายข้อมูลระหว่างหน่วยความจำกับอุปกรณ์ภายนอก โดยไม่ผ่าน CPU
กระบวนการ DMA เริ่มต้นจาก
1. อุปกรณ์ที่ต้องการทำ DMA ส่งสัญญาณ DREQ เพื่อร้องขอทำ DMA ไปยัง DMA controller ในช่องทาง (channnel) ที่ต้องการ

2. เมื่อ DMA controller ได้รับสัญญาณ ก็จะตรวจสอบก่อนว่าสามารถอณุญาติให้ทำ DMA ได้หรือไม่แล้วจึงส่งสัญญาณ HRQ เพื่อบอก CPU ว่าต้องการเข้ามาใช้ BUS โดยส่งสัญญาณนี้ไปยังของ HOLD ของ CPU

3. เมื่อ CPU ได้รับสัญญาณ HRQ จาก DMA controller ที่ขา HOLD และพร้อมที่จะตอบสนองก็จะส่งสัญญาณ HLDA หรือ Hold Acknowledge ตอบกลับไปยัง DMA controller เพื่อแสดงว่า CPU ได้ปลดตัวเองและปล่อยการควบคุม แล้วจะส่งหน้าที่ต่างๆให้ DMA controller รับไปดำเนินการ

4. เมื่อ DMA controller ได้รับสัญญาณ HLDA แล้วก็เข้าควบคุม address bus และ controller bus และส่งสัญญาณ DACK ตอบกลับไปยังอุปกรณ์เพื่อแสดงถึงการพร้อมสำหรับเริ่มต้นส่งข้อมูล

5. การส่งข้อมูลจะเริ่มต้นโดยจะส่งสัญญาณ AEN ส่งสัญญาณ คือ address แรกของหน่วยความจำเป้าหมายออกไปที่ address bus และส่งสัญญาณไปควบคุมการเขียนและอ่านหน่วยความจำกับอุปกรณ์กับอุปกรณ์ออกไป เพื่อดำเนินการย้ายข้อมูลระหว่างอุปกรณ์กับหน่วยความจำ

6. เมื่อข้อมูลโอนย้ายจนครบสมบูรณ์แล้วก็จะเข้าสู่กระบวนการยกเลิก DMA โดย DMA จะส่งสัญญาณ EOP หรือ End Of Process ออกไป

7. ส่งผลให้สัญญาณ AEN ตกลงเป็น LOW เพื่อคืน bus ให้กับ CPU และ HRQ จาก DMA controller ที่ไปของให้ CPU HOLD ก็จะหายไป เพื่อให้ CPU กลับมาดูแล bus ต่างๆดังเดิม

8.เมื่อสัญญาณที่ร้องของ HOLD หายไป CPU ก็จะรับรู้และจะตอบสนองโดยยกเลิกสัญญาณ HLDA เพื่อแสดงว่าตอนนี้ CPU กลับมาดูแลระบบแล้ว

Leave a comment

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.

Your email is never shared. Required fields are marked *