การเข้าถึงหน่วยความจำโดยตรง (DMA) ในสถาปัตยกรรมคอมพิวเตอร์

ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา





สำหรับการทำงานของโปรแกรมคอมพิวเตอร์จำเป็นต้องมีการทำงานแบบซิงโครนัสของส่วนประกอบคอมพิวเตอร์มากกว่าหนึ่งชิ้น ตัวอย่างเช่น, โปรเซสเซอร์ - ให้ข้อมูลการควบคุมที่จำเป็นที่อยู่ ... ฯลฯ รถเมล์ - เพื่อถ่ายโอนข้อมูลและข้อมูลไปยังและจากหน่วยความจำไปยังอุปกรณ์ 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 ในสถาปัตยกรรมคอมพิวเตอร์



ตัวควบคุม DMA ประกอบด้วยหน่วยที่อยู่สำหรับสร้างที่อยู่และเลือกอุปกรณ์ I / O สำหรับการถ่ายโอน นอกจากนี้ยังมีหน่วยควบคุมและจำนวนข้อมูลสำหรับการนับจำนวนบล็อกที่ถ่ายโอนและระบุทิศทางการถ่ายโอนข้อมูล เมื่อการถ่ายโอนเสร็จสิ้น DMA จะแจ้งโปรเซสเซอร์โดยเพิ่มการขัดจังหวะ แผนภาพบล็อกทั่วไปของคอนโทรลเลอร์ DMA แสดงในรูปด้านล่าง

แผนภาพบล็อกทั่วไปของ DMA Controller

แผนภาพบล็อกทั่วไปของ DMA Controller

การทำงานของ DMA Controller

DMA controller ต้องแชร์บัสกับโปรเซสเซอร์เพื่อทำการถ่ายโอนข้อมูล อุปกรณ์ที่ยึดบัสในเวลาที่กำหนดเรียกว่าบัสมาสเตอร์ เมื่อต้องทำการถ่ายโอนจากอุปกรณ์ I / O ไปยังหน่วยความจำหรือข้อรองโปรเซสเซอร์จะหยุดการทำงานของโปรแกรมปัจจุบันเพิ่มขึ้น โปรแกรม ตัวนับย้ายข้อมูลผ่านสแต็กจากนั้นส่งสัญญาณเลือก DMA ไปยังตัวควบคุม DMA ผ่านบัสแอดเดรส

หากคอนโทรลเลอร์ 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 พินไดอะแกรม

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 พินไดอะแกรม

8257 พินไดอะแกรม

ข้อดีและข้อเสียของ DMA Controller

ข้อดีและข้อเสียของคอนโทรลเลอร์ DMA มีดังต่อไปนี้

ข้อดี

  • DMA เร่งการทำงานของหน่วยความจำโดยหลีกเลี่ยงการมีส่วนร่วมของ CPU
  • งานโอเวอร์โหลดบนซีพียูลดลง
  • สำหรับการโอนแต่ละครั้งต้องมีรอบนาฬิกาเพียงไม่กี่รอบ

ข้อเสีย

  • ปัญหาการเชื่อมโยงกันของแคชสามารถเห็นได้เมื่อใช้ DMA สำหรับการถ่ายโอนข้อมูล
  • เพิ่มราคาของระบบ

DMA ( เข้าถึงหน่วยความจำโดยตรง ) กำลังใช้คอนโทรลเลอร์ในกราฟิกการ์ดการ์ดเครือข่ายการ์ดเสียง ฯลฯ ... DMA ยังใช้สำหรับการถ่ายโอนภายในชิปในโปรเซสเซอร์แบบมัลติคอร์ การทำงานในโหมดหนึ่งในสามโหมด DMA สามารถลดภาระของโปรเซสเซอร์ได้มาก คุณทำงานกับ DMA ในโหมดใด โหมดใดที่คุณคิดว่ามีประสิทธิภาพมากกว่ากัน