สำหรับการทำงานของโปรแกรมคอมพิวเตอร์จำเป็นต้องมีการทำงานแบบซิงโครนัสของส่วนประกอบคอมพิวเตอร์มากกว่าหนึ่งชิ้น ตัวอย่างเช่น, โปรเซสเซอร์ - ให้ข้อมูลการควบคุมที่จำเป็นที่อยู่ ... ฯลฯ รถเมล์ - เพื่อถ่ายโอนข้อมูลและข้อมูลไปยังและจากหน่วยความจำไปยังอุปกรณ์ I / O ... ฯลฯ ปัจจัยที่น่าสนใจของระบบคือวิธีจัดการการถ่ายโอนข้อมูลระหว่างโปรเซสเซอร์หน่วยความจำและอุปกรณ์ I / O โดยปกติโปรเซสเซอร์จะควบคุมกระบวนการถ่ายโอนข้อมูลทั้งหมดตั้งแต่เริ่มการถ่ายโอนไปยังการจัดเก็บข้อมูลที่ปลายทาง สิ่งนี้จะเพิ่มภาระให้กับโปรเซสเซอร์และเวลาส่วนใหญ่จะอยู่ในสถานะที่เหมาะสมซึ่งจะทำให้ประสิทธิภาพของระบบลดลง เพื่อเพิ่มความเร็วในการถ่ายโอนข้อมูลระหว่างอุปกรณ์ I / O และหน่วยความจำคอนโทรลเลอร์ DMA จะทำหน้าที่เป็นนายสถานี คอนโทรลเลอร์ DMA ถ่ายโอนข้อมูลโดยมีการแทรกแซงของโปรเซสเซอร์น้อยที่สุด
DMA Controller คืออะไร?
คำว่า DMA ย่อมาจากการเข้าถึงหน่วยความจำโดยตรง อุปกรณ์ฮาร์ดแวร์ที่ใช้สำหรับการเข้าถึงหน่วยความจำโดยตรงเรียกว่าคอนโทรลเลอร์ DMA DMA คอนโทรลเลอร์คือหน่วยควบคุม ซึ่งเป็นส่วนหนึ่งของอุปกรณ์ I / O วงจรอินเตอร์เฟซ ซึ่งสามารถถ่ายโอนบล็อกข้อมูลระหว่างอุปกรณ์ I / O และหน่วยความจำหลักโดยมีการแทรกแซงน้อยที่สุดจากโปรเซสเซอร์
DMA Controller Diagram ในสถาปัตยกรรมคอมพิวเตอร์
ตัวควบคุม DMA มีอินเทอร์เฟซระหว่างบัสและอุปกรณ์อินพุตเอาต์พุต แม้ว่าจะถ่ายโอนข้อมูลโดยไม่มีการแทรกแซงของโปรเซสเซอร์ แต่ก็ถูกควบคุมโดยโปรเซสเซอร์ โปรเซสเซอร์เริ่มต้นคอนโทรลเลอร์ DMA โดยส่งที่อยู่เริ่มต้นจำนวนคำในบล็อกข้อมูลและทิศทางการถ่ายโอนข้อมูลเช่น จากอุปกรณ์ I / O ไปยังหน่วยความจำหรือจากหน่วยความจำหลักไปยังอุปกรณ์ I / O สามารถเชื่อมต่ออุปกรณ์ภายนอกกับคอนโทรลเลอร์ DMA ได้มากกว่าหนึ่งเครื่อง
DMA ในสถาปัตยกรรมคอมพิวเตอร์
ตัวควบคุม DMA ประกอบด้วยหน่วยที่อยู่สำหรับสร้างที่อยู่และเลือกอุปกรณ์ I / O สำหรับการถ่ายโอน นอกจากนี้ยังมีหน่วยควบคุมและจำนวนข้อมูลสำหรับการนับจำนวนบล็อกที่ถ่ายโอนและระบุทิศทางการถ่ายโอนข้อมูล เมื่อการถ่ายโอนเสร็จสิ้น DMA จะแจ้งโปรเซสเซอร์โดยเพิ่มการขัดจังหวะ แผนภาพบล็อกทั่วไปของคอนโทรลเลอร์ DMA แสดงในรูปด้านล่าง
แผนภาพบล็อกทั่วไปของ DMA Controller
การทำงานของ DMA Controller
DMA controller ต้องแชร์บัสกับโปรเซสเซอร์เพื่อทำการถ่ายโอนข้อมูล อุปกรณ์ที่ยึดบัสในเวลาที่กำหนดเรียกว่าบัสมาสเตอร์ เมื่อต้องทำการถ่ายโอนจากอุปกรณ์ I / O ไปยังหน่วยความจำหรือข้อรองโปรเซสเซอร์จะหยุดการทำงานของโปรแกรมปัจจุบันเพิ่มขึ้น โปรแกรม ตัวนับย้ายข้อมูลผ่านสแต็กจากนั้นส่งสัญญาณเลือก DMA ไปยังตัวควบคุม DMA ผ่านบัสแอดเดรส
หากคอนโทรลเลอร์ DMA ว่างจะร้องขอการควบคุมบัสจากโปรเซสเซอร์โดยเพิ่มสัญญาณคำร้องขอบัส โปรเซสเซอร์ให้บัสแก่คอนโทรลเลอร์โดยการเพิ่มสัญญาณการให้บัสตอนนี้คอนโทรลเลอร์ DMA เป็นบัสมาสเตอร์ โปรเซสเซอร์เริ่มต้นคอนโทรลเลอร์ DMA โดยส่งที่อยู่หน่วยความจำจำนวนบล็อกข้อมูลที่จะถ่ายโอนและทิศทางการถ่ายโอนข้อมูล หลังจากมอบหมายงานการถ่ายโอนข้อมูลให้กับคอนโทรลเลอร์ DMA แทนที่จะรอจนกว่าการถ่ายโอนข้อมูลจะเสร็จสมบูรณ์โปรเซสเซอร์จะกลับมาดำเนินการโปรแกรมต่อหลังจากดึงคำสั่งจากสแตก
การถ่ายโอนข้อมูลในคอมพิวเตอร์โดย DMA Controller
ขณะนี้คอนโทรลเลอร์ DMA สามารถควบคุมบัสได้เต็มรูปแบบและสามารถโต้ตอบโดยตรงกับหน่วยความจำและอุปกรณ์ I / O โดยไม่ขึ้นกับ CPU ทำให้การถ่ายโอนข้อมูลเป็นไปตามคำสั่งควบคุมที่ได้รับจากโปรเซสเซอร์ หลังจากเสร็จสิ้นการถ่ายโอนข้อมูลจะปิดใช้งานสัญญาณขอบัสและ CPU จะปิดการใช้งานสัญญาณการให้บัสดังนั้นจึงย้ายการควบคุมบัสไปยัง CPU
เมื่ออุปกรณ์ I / O ต้องการเริ่มการถ่ายโอนอุปกรณ์จะส่งสัญญาณการร้องขอ DMA ไปยังคอนโทรลเลอร์ DMA ซึ่งคอนโทรลเลอร์จะรับทราบว่าว่างหรือไม่ จากนั้นคอนโทรลเลอร์จะร้องขอโปรเซสเซอร์สำหรับบัสโดยเพิ่มสัญญาณคำร้องขอบัส หลังจากได้รับสัญญาณการให้บัสแล้วระบบจะถ่ายโอนข้อมูลจากอุปกรณ์ สำหรับตัวควบคุม DMA ช่อง n จำนวนอุปกรณ์ภายนอกที่สามารถเชื่อมต่อได้
DMA ถ่ายโอนข้อมูลในสามโหมดซึ่งรวมถึงสิ่งต่อไปนี้
ถึง) โหมดถ่ายต่อเนื่อง : ในโหมดนี้ DMA จะส่งมอบบัสไปยัง CPU หลังจากเสร็จสิ้นการถ่ายโอนข้อมูลทั้งหมดเท่านั้น ในขณะเดียวกันหาก CPU ต้องการบัสก็จะต้องอยู่ในอุดมคติและรอการถ่ายโอนข้อมูล
ข) โหมดการขโมยวงจร : ในโหมดนี้ DMA ให้การควบคุมบัสไปยัง CPU หลังจากถ่ายโอนทุกๆไบต์ มันออกคำขอสำหรับการควบคุมบัสอย่างต่อเนื่องทำให้การถ่ายโอนหนึ่งไบต์และส่งคืนบัส โดย CPU นี้ไม่ต้องรอเป็นเวลานานหากต้องการบัสสำหรับงานที่มีลำดับความสำคัญสูงกว่า
ค) โหมดโปร่งใส: ที่นี่ DMA จะถ่ายโอนข้อมูลเฉพาะเมื่อ CPU ดำเนินการตามคำสั่งซึ่งไม่จำเป็นต้องใช้บัส
8237 ตัวควบคุม DMA
- 8237 มีช่อง I / O 4 ช่องพร้อมกับความยืดหยุ่นในการเพิ่มจำนวนช่องสัญญาณ
- แต่ละช่องสามารถตั้งโปรแกรมแยกกันและมีที่อยู่ 64k และความสามารถข้อมูล
- บล็อกควบคุมเวลา, บล็อกควบคุมคำสั่งโปรแกรม, บล็อกตัวเข้ารหัสลำดับความสำคัญเป็นสามบล็อกหลักของ 8237A
- เวลาภายในและสัญญาณควบคุมภายนอกขับเคลื่อนโดยบล็อกควบคุมเวลา
- คำสั่งต่างๆที่ไมโครโปรเซสเซอร์มอบให้กับ DMA จะถูกถอดรหัสโดยบล็อกควบคุมคำสั่งของโปรแกรม
- ช่องใดที่ต้องให้ความสำคัญสูงสุดจะถูกตัดสินโดยลำดับความสำคัญ บล็อกตัวเข้ารหัส .
8237A มีการลงทะเบียนภายใน 27 รายการ
8237A ทำงานเป็นสองรอบ - รอบอุดมคติและรอบแอ็คทีฟโดยแต่ละรอบประกอบด้วย 7 สถานะที่แยกจากกันซึ่งประกอบด้วยหนึ่งช่วงเวลานาฬิกา
S0- สถานะแรกที่คอนโทรลเลอร์ร้องขอบัสและรอการตอบรับจากโปรเซสเซอร์
S1, S2, S3, S4 เรียกว่าสถานะการทำงานของ 8237A ที่มีการถ่ายโอนข้อมูลจริง หากต้องการเวลามากขึ้นสำหรับสถานะการรอการโอนจะเพิ่ม SW ระหว่างสถานะเหล่านี้
สำหรับการถ่ายโอนหน่วยความจำไปยังหน่วยความจำการถ่ายโอนการอ่านจากหน่วยความจำและการเขียนไปยังหน่วยความจำจะต้องทำ ต้องมีแปดสถานะสำหรับการถ่ายโอนครั้งเดียว สี่สถานะแรกที่มีตัวห้อย S11, S12, S13, S14 จะทำการถ่ายโอนแบบอ่านจากหน่วยความจำและ S21, S22, S23, S24 สี่สถานะถัดไปใช้สำหรับการถ่ายโอนการเขียนไปยังหน่วยความจำ
DMA เข้าสู่สถานะที่เหมาะสมที่สุดเมื่อไม่มีช่องใดร้องขอบริการและดำเนินการสถานะ SI SI คือสถานะไม่ใช้งานโดยที่ DMA ไม่ได้ใช้งานจนกว่าจะได้รับคำขอ ในสถานะนี้ DMA อยู่ในสภาพโปรแกรมที่โปรเซสเซอร์สามารถตั้งโปรแกรม DMA ได้
เมื่อ DMA อยู่ในสถานะที่เหมาะสมและไม่ได้รับการร้องขอช่องสัญญาณใด ๆ อีกต่อไประบบจะส่งสัญญาณ HRQ ไปยังโปรเซสเซอร์และเข้าสู่สถานะ Active ซึ่งสามารถเริ่มการถ่ายโอนข้อมูลโดยใช้โหมดถ่ายต่อเนื่องโหมดการขโมยรอบหรือโหมดโปร่งใส
8237 พินไดอะแกรม
8257 DMA คอนโทรลเลอร์
เมื่อจับคู่กับอุปกรณ์พอร์ต Intel 8212 I / O เดียวคอนโทรลเลอร์ 8257 DMA จะสร้างเป็น 4 ช่องสัญญาณที่สมบูรณ์ ตัวควบคุม DMA . เมื่อได้รับคำขอโอน 8257 controller-
- รับการควบคุมบัสระบบจากโปรเซสเซอร์
- รับทราบอุปกรณ์ต่อพ่วงที่เชื่อมต่อกับช่องสัญญาณที่มีลำดับความสำคัญสูงสุด
- บิตแอดเดรสหน่วยความจำที่มีนัยสำคัญน้อยที่สุดจะถูกย้ายไปอยู่เหนือบรรทัดแอดเดรส A0-A7 ของบัสระบบ
- ที่สำคัญที่สุด 8 บิต ของที่อยู่หน่วยความจำถูกขับเคลื่อนไปยังพอร์ต 8212 I / O ผ่านสายข้อมูล
- สร้างสัญญาณควบคุมที่เหมาะสมสำหรับการถ่ายโอนข้อมูลระหว่างอุปกรณ์ต่อพ่วงและตำแหน่งหน่วยความจำที่อยู่
- เมื่อโอนจำนวนไบต์ที่ระบุคอนโทรลเลอร์จะแจ้งให้ CPU สิ้นสุดการถ่ายโอนโดยการเปิดใช้งานเอาต์พุตจำนวนเทอร์มินัล (TC)
สำหรับแต่ละช่อง 8257 มีสองช่อง การลงทะเบียน 16 บิต - 1) การลงทะเบียนที่อยู่ DMA และ 2) การลงทะเบียนจำนวนเทอร์มินัลซึ่งควรเริ่มต้นก่อนที่จะเปิดใช้งานช่อง ที่อยู่ของตำแหน่งหน่วยความจำแรกที่เข้าถึงถูกโหลดในการลงทะเบียนที่อยู่ DMA ลำดับที่ต่ำกว่า 14 บิตของค่าที่โหลดในการลงทะเบียนจำนวนเทอร์มินัลระบุจำนวนรอบ DMA ลบหนึ่งก่อนการเปิดใช้งานเอาต์พุตจำนวนเทอร์มินัล ประเภทของการดำเนินการสำหรับช่องสัญญาณจะระบุด้วยสองบิตที่สำคัญที่สุดของการลงทะเบียนจำนวนเทอร์มินัล
8257 พินไดอะแกรม
ข้อดีและข้อเสียของ DMA Controller
ข้อดีและข้อเสียของคอนโทรลเลอร์ DMA มีดังต่อไปนี้
ข้อดี
- DMA เร่งการทำงานของหน่วยความจำโดยหลีกเลี่ยงการมีส่วนร่วมของ CPU
- งานโอเวอร์โหลดบนซีพียูลดลง
- สำหรับการโอนแต่ละครั้งต้องมีรอบนาฬิกาเพียงไม่กี่รอบ
ข้อเสีย
- ปัญหาการเชื่อมโยงกันของแคชสามารถเห็นได้เมื่อใช้ DMA สำหรับการถ่ายโอนข้อมูล
- เพิ่มราคาของระบบ
DMA ( เข้าถึงหน่วยความจำโดยตรง ) กำลังใช้คอนโทรลเลอร์ในกราฟิกการ์ดการ์ดเครือข่ายการ์ดเสียง ฯลฯ ... DMA ยังใช้สำหรับการถ่ายโอนภายในชิปในโปรเซสเซอร์แบบมัลติคอร์ การทำงานในโหมดหนึ่งในสามโหมด DMA สามารถลดภาระของโปรเซสเซอร์ได้มาก คุณทำงานกับ DMA ในโหมดใด โหมดใดที่คุณคิดว่ามีประสิทธิภาพมากกว่ากัน