การนำข้อมูลเข้าและการส่งข้อมูลออก
หน่วยรับส่งข้อมูลเข้าออก
บางทีจะเรียกว่า อุปกรณ์เชื่อมต่อไอโอ หรือเรียกทับศัพท์ว่า อุปกรณ์อินเตอร์เฟส (interface) เนื่องจากอุปกรณ์เชื่อมต่อนี้จะเป็นชุดของวงจร
ซึ่งอาจจะเป็นชุดมาตรฐานที่ติดตั้งมาพร้อมกับระบบคอมพิวเตอร์ ได้แก่
ชุดเชื่อมต่อแป้นพิมพ์ เมาส์ เครื่องพิมพ์ หรืออาจจะผลิตออกมาเป็นแผงวงจร (การ์ด)
เพื่อนำไปเสียบลงในช่องขยายเพิ่ม (Expansion slot)
ในระบบคอมพิวเตอร์
ดังนั้นจึงอาจจะเรียกว่า อินเตอร์เฟสการ์ดหรือโมดูลไอโอ (คำว่าไอโอ หมายถึง Input / Output) หน่วยรับส่งข้อมูลเข้าออกจะจัดข้อมูลที่รับจากอุปกรณ์ต่อพ่วงให้อยู่ในรูปที่เหมาะสมแล้วส่งให้ระบบคอมพิวเตอร์
ในทางกลับกันก็จะสามารถรับข้อมูลจากระบบคอมพิวเตอร์ แล้วจัดให้อยู่ในรูปที่เหมาะสม
เพื่อส่งให้อุปกรณ์ต่อพ่วง การทำหน้าที่ดังกล่าวนี้
เนื่องจากรูปแบบทางข้อมูลที่ใช้ในอุปกรณ์ต่อพ่วงและระบบคอมพิวเตอร์
โดยปกติจะมีรูปแบบที่แตกต่างกัน
หน่วยรับข้อมูลเข้าออกแต่ละหน่วยจะเชื่อมต่ออยู่กับบัสหลัก คือ บัสตำแหน่ง
บัสข้อมูล และบัสควบคุม ดังนั้นการบ่งชื่อหรือตำแหน่งของหน่วยรับส่งข้อมูลเข้าออก
สามารถ ทำได้สองวิธี
วิธีแรกโดยการจัดให้หน่วยรับส่งข้อมูลเข้าออกเป็นส่วนหนึ่งของหน่วยความจำหลัก
จึงสามารถที่จะใช้ คำสั่ง ส่งข้อมูลเข้าออกหน่วยรับส่งข้อมูลเข้าออกได้เช่นเดียวกับคำสั่งที่ใช้กับหน่วยความจำปกติ
วิธีที่สองทำโดยการจัดวงจรเพิ่มเติมเพื่อบ่งตำแหน่งหรือรหัสประจำหน่วยรับส่งข้อมูลเข้าออก
กรณีนี้จะต้องใช้คำสั่งเฉพาะของหน่วยรับส่งข้อมูลเข้าออก
การเชื่อมต่ออุปกรณ์ต่อพ่วงปกติจะไม่สามารถเชื่อมต่อเข้าโดยตรงกับบัสหลัก
แต่จะต่อผ่านโมดุลไอโอโดยมีเหตุผลดังนี้
- อุปกรณ์ต่อพ่วงมีอยู่จำนวนมาก
ซึ่งมีวิธีทำงานที่แตกต่างกันทำให้ไม่มีความเหมาะสมในการปล่อยให้ซีพียู
เป็นตัวควบคุมการทำงานอุปกรณ์ทั้งหมด
-อัตราการถ่ายเทข้อมูลของอุปกรณ์ต่อพ่วงนั้นช้ากว่าความเร็วในการทำงานของซีพียู
มาก ดังนั้นจึงเป็นการไม่เหมาะสมที่จะต่ออุปกรณ์เหล่านี้เข้ากับบัสโดยตรง
- อัตราการถ่ายเทข้อมูลของอุปกรณ์บางชนิด
สูงกว่าความเร็วของหน่วยความจำหลัก หรือแม้กระทั่ง ซีพียู
ซึ่งก็ไม่เหมาะสมที่จะนำอุปกรณ์เหล่านี้ต่อเข้าโดยตรงกับบัสเช่นกัน
-
โครงสร้างข้อมูลหรือขนาดของเวิร์ดไม่เหมือนกับรูปแบบหรือขนาดที่เครื่องคอมพิวเตอร์ใช้อยู่
รูปแบบการรับและส่งข้อมูล
หน่วยรับส่งข้อมูลเข้าออกมีการรับส่งข้อมูลอยู่2ระบบ
ได้แก่การรับส่งข้อมูลแบบขนานหรืออาจเรียกว่า PIO (parallel
Input / Output) ซึ่งจะสามารถรับส่งข้อมูลได้ครั้งละหลายบิต เช่น 4, 8, 16 หรือ 32 บิต
นอกจากการรับส่งข้อมูลแล้ว
จะต้องมีการแลกเปลี่ยนสัญญาณควบคุมระหว่างหน่วยรับส่งข้อมูลเข้าออกและอุปกรณ์ต่อพ่วงด้วย
ทั้งนี้เพื่อรักษาจังหวะในการถ่ายเทข้อมูลระหว่างหน่วยรับส่งข้อมูลเข้าออกและอุปกรณ์ต่อพ่วง
สัญญาณควบคุมมีประโยชน์มากเพราะโดยปกติอุปกรณ์ต่อพ่วงจะมีการทำงานในอัตราที่ช้ากว่าระบบคอมพิวเตอร์หากระบบคอมพิวเตอร์ส่งข้อมูลด้วยอัตราความเร็วจนอุปกรณ์ต่อพ่วงรับไม่ทันก็จะเกิดการสูญหายของข้อมูลวิธีแก้ก็คืออุปกรณ์ต่อพ่วงจะมีสัญญาณคอยแจ้งว่าตนเองพร้อมที่จะรับข้อมูลเพิ่มเติม
(ready) และหน่วยรับส่งข้อมูลเข้าออกก็จะมีสัญญาณคอยแจ้งว่าจะมีการส่งข้อมูลการประสานงานกันระหว่างสัญญาณทั้งสองนี้เรียกว่าวิธีจับมือ(handshaking)ระหว่างหน่วยรับส่งข้อมูลเข้าออกและอุปกรณ์ต่อพ่วงซึ่งจะทำให้การรับส่งข้อมูลที่มีประสิทธิภาพขึ้น
หน้าที่และโครงสร้างของหน่วยรับและส่งข้อมูลเข้าออก
หน้าที่ของหน่วยรับและส่งข้อมูล
หน่วยรับส่งข้อมูลเข้าออกหรือโมดูลไอโอ
จะเป็นตัวคั่นกลางระหว่างระบบคอมพิวเตอร์และอุปกรณ์ต่อพ่วง ดังนั้น
โมดูลไอโอซึ่งทำหน้าที่บริการทั้งสองด้าน หน้าที่หลักของโมดูลไอโอ
สามารถแบ่งออกได้ดังนี้
- การควบคุมและรักษาจังหวะการทำงาน
-
การสื่อสารกับโปรเซสเซอร์และสื่อสารกับอุปกรณ์ต่อพ่วง
- การจัดการบัฟเฟอร์
- การตรวจสอบข้อผิดพลาด
ในช่วงเวลาใดๆก็ตามโปรเซสเซอร์อาจจะทำการสื่อสารกับอุปกรณ์ภายนอกหนึ่งอย่างหรือมากกว่านี้
ในรูปแบบที่ไม่สามารถคาดเดาได้ซึ่งขึ้นอยู่กับความต้องการไอโอของโปรแกรมที่ทำงานอยู่ในเวลานั้น
ทรัพยากรภายใน เช่น หน่วยความจำหลักและบัสหลัก
จะต้องถูกนำมาใช้ในงานร่วมกันระหว่างกิจกรรมหลายชนิด
ร่วมทั้งการอ่านหรือบันทึกข้อมูลผ่านโมดูลไอโอ ดังนั้นฟังก์ชันไอโอจึงหมายถึง
ความต้องการในการควบคุมและการจับเวลา(control and
timing)เพื่อการประสานงานให้ข้อมูลสามารถไหลผ่านทางทรัพยากรภายในในอุปกรณ์ภายนอกได้ตัวอย่างเช่นการควบคุมการถ่ายเทข้อมูลจากอุปกรณ์ภายนอกมายังโปรเซสเซอร์
อาจจะเกี่ยวพันกับการทำงานดังนี้
-
โปรเซสเซอร์ทำการติดต่อกับโมดูลไอโอ เพื่อตรวจสอบสถานะของอุปกรณ์ที่ต้องการใช้งาน
- โมดูลไอโอส่งข้อมูลแสดงสถานะกลับมาให้
- ถ้าอุปกรณ์นั้นสามารถใช้งานได้
และพร้อมที่จะถ่ายเทข้อมูล
โปรเซสเซอร์จะร้องขอถ่ายเทข้อมูลผ่านการออกคำสั่งไปยังโมดูลไอโอ
- โมดูลไอโอได้รับข้อมูลชุดแรก (8 บิตหรือ16
บิต)มาจากอุปกรณ์ภายนอก
-
ข้อมูลถ่ายเทจากโมดูลไอโอต่อไปกับโปรเซสเซอร์
ถ้าระบบคอมพิวเตอร์มีบัสหลักใช้งาน
การโต้ตอบระหว่างโปรเซสเซอร์และโมดูลไอโอจะเกี่ยวข้องกับการถือครองบัส
เหตุการณ์ที่สมมติยังแสดงให้เห็นว่า โมดูลไอโอจะต้องสื่อสารกับโปรเซสเซอร์และสื่อสารกับอุปกรณ์
ภายนอก
การสื่อสารกับโปรเซสเซอร์เกี่ยวข้องกับสิ่งต่อไปนี้
- การถอดรหัสคำสั่ง (command decoding) : โมดูลไอโอรับคำสั่งจากโปรเซสเซอร์ซึ่งปกติจะส่งสัญญาณมาทางบัสควบคุมการทำงาน(controlbus)ตัวอย่างเช่นโมดูลไอโอสำหรับขับดิสก์จะรับคำสั่งเช่น
READ SECTOR,WRITE SECTOR,SEEK track number,และ SCAN record ID คำสั่งสองคำสั่งหลังจำเป็นต้องมีการส่งผ่านตัวกำหนดค่ามาด้วย
ซึ่งจะส่งมาทางบัสสำหรับถ่ายเทข้อมูล
- ข้อมูล (Data)
: โปรเซสเซอร์จะแลกเปลี่ยนข้อมูลกับโมดูลไอโอ
ผ่านทางบัสสำหรับถ่ายเทข้อมูล
- การรายงานสถานะ (status reporting) : เนื่องจากอุปกรณ์ต่อพ่วง มักจะมีความเร็วต่ำมาก
จึงมีความจำเป็นต้องทราบสถานะการทำงานของอุปกรณ์ ตัวอย่างเช่น
ถ้าโมดูลไอโอถูกสั่งให้อ่านข้อมูลส่งมาให้โปรเซสเซอร์ อุปกรณ์ดังกล่าวอาจจะยังไม่ว่างเนื่องจากกำลังให้บริการคำสั่งที่มาก่อนหน้านี้
ข้อเท็จจริงข้อนี้สามารถส่งยังโปรเซสเซอร์ผ่านทางสัญญาณสถานะการทำงานซึ่งโดยทั่วไปมีอยู่สองอย่างคือ
BUSY (ไม่-การรับรู้ที่อยู่
(address recognition): อุปกรณ์ไอโอก็คล้ายกับหน่วย ความจำ คือแต่ละ เวิร์ด
จะมีหมายเลขที่อยู่เฉพาะเป็นของตนเองนั้นคืออุปกรณ์ไอโอแต่ละชิ้นจะต้องมีหมายเลขเฉพาะสำหรับการอ้างอิงเป็นของตนเอง
ดังนั้นโมดูลไอโอจะต้องสามารถรับรู้หมายที่อยู่เฉพาะของอุปกรณ์แต่ละชนิดได้ อีกด้านหนึ่ง
โมดูลไอโอจะต้องสามารถสื่อสารกับอุปกรณ์ไอโอได้ การสื่อสารนี้ได้แก่ การออกคำสั่ง รายงานสถานะการทำงาน
และการถ่ายเทข้อมูลงานที่มีความสำคัญมากที่สุดส่วนหนึ่งของโมดูลไอโอคือ
การทำบัฟเฟอร์สำหรับข้อมูล (data buffering)
ความต้องการนี้จะถ่ายเทข้อมูลไปยังหรือมาจากหน่วยความหลักหรือโปรเซสเซอร์นั้นสูงมาก
แต่อัตราการถ่ายเทข้อมูลของอุปกรณ์ต่อพ่วงต่างๆ นั้นช้ามากกว่าหลายเท่าตัว
และยังมีอัตราการถ่ายเทที่แตกต่างกันในช่วงที่กว้างมากด้วย
ข้อมูลที่ถูกส่งมาจากหน่วยจำหลัก
ถูกส่งมายังโมดูลไอโอในลักษณะที่มีความเร็วสูงมากแต่เป็นช่วงสั้นๆ เรียกว่า
เบิรซท์ (burst) ข้อมูลนั้นจะถูกเก็บไว้ในบัฟเฟอร์ของโมดูลไอโอ
จากนั้นจึงถูกส่งไปยังอุปกรณ์ต่อพ่วงด้วยความเร็วต่ำเท่ากับอุปกรณ์นั้นๆ
ซึ่งในด้านที่รับข้อมูลนั้นก็จะทำงานที่ความเร็วสูงมาก
เพื่อไม่ให้หน่วยความจำต้องมาถูกบังคับให้ทำงานช้าลงเพราะอุปกรณ์ความเร็วต่ำ
โมดูลไอโอจึงสามารถทำงานเท่ากับหน่วยความจำและโปรเซสเซอร์
และจะต้องสามารถทำงานได้ช้ามากเท่ากับความเร็วของอุปกรณ์ต่อพ่วงแต่ละตัวที่มีใช้งาน
ในทางกลับกันถ้าอุปกรณ์ไอโอทำงานที่ความเร็วสูงมากกว่าที่หน่วยความจำจะทำงานตามได้ทันแล้ว
โมดูลไอโอจะต้องใช้เทคนิคบัฟเฟอร์กับอุปกรณ์นั้น
โครงสร้างของโมดูลไอโอ
โมดูลไอโอแต่ละโมดูลมีความแตกต่างกันมากมายหลายแบบขึ้นอยู่กับชนิดและการทำงานของอุปกรณ์ต่อพ่วง
จำนวนอุปกรณ์ที่ต่อพ่วงโมดูลที่จะควบคุมได้
ในที่นี้จะกล่าวถึงรูปแบบทั่วไปเท่านั้น แสดงบล็อกไดอะแกรมของโมดูลไอโอทั่วไป โมดูลไอโอจะมีส่วนที่เชื่อมต่อระบบคอมพิวเตอร์โดยผ่าน
บัสหลัก ได้แก่ บัสข้อมูล บัสตำแหน่งและบัสควบคุม
ข้อมูลที่ส่งผ่านโมดูลจะผ่านบัฟเฟอร์ที่เป็นรีจีสเตอร์ข้อมูล
ซึ่งรีจีสเตอร์นี้จะทำหน้าที่พักข้อมูลที่รับจากซีพียูเพื่อส่งไปให้อุปกรณ์ต่อพ่วงหรือทำหน้าที่รับข้อมูลจากอุปกรณ์ต่อพ่วงเพื่อส่งไปให้ซีพียู
การควบคุมไอโอด้วยโปรแกรม
วิธีการทำงานของไอโอมีอยู่สามวิธี
วิธีแรกคือการควบคุมด้วยโปรแกรม(programmed I/O)
ข้อมูลจะเกิดการแลกเปลี่ยนระหว่างโปรเซสเซอร์กับโมดูลไอโอ
โปรเซสเซอร์จะประมวลผลโปรแกรมที่เป็นการออกคำสั่งโดยตรงเกี่ยวกับการทำงานของไอโอรวมทั้งการตรวจสอบสถานะของอุปกรณ์
การสั่งอ่านหรือบันทึกข้อมูล และการถ่ายเทข้อมูล
เมื่อโปรเซสเซอร์ออกคำสั่งไปยังโมดูลไอโอ
โปรเซสเซอร์จะต้องรอจนกว่าการตอบสนองต่อคำสั่งนั้นจะสิ้นสุด
ถ้าโปรเซสเซอร์ทำงานได้เร็วกว่าโมดูลไอโอ การรอคอยนี้จะเป็นการเสียเวลาของโปรเซสเซอร์เป็นอย่างยิ่ง
วิธีที่สองเรียกว่า การควบคุมไอโอผ่านกระบวนการอินเทอร์รัพท์ (Interrupt-driven I/O) โปรเซสเซอร์จะออกคำสั่งไอโอ
แล้วหันกลับไปประมวลผลคำสั่งอื่นต่อไป
เมื่อโมดูลไอโอทำงานที่ได้รับมอบนั้นเสร็จเรียบร้อยแล้วก็จะส่งสัญญาณผ่านอินเทอร์รัพท์มาบอกให้ทราบ
ทั้งสองวิธีนี้โปรเซสเซอร์จะต้องรับผิดชอบในการดึงข้อมูลออกมาจากหน่วยความจำหลักและส่งไปให้โมดูลไอโอ
และจะต้องจัดการบันทึกข้อมูลที่ได้รับจากโมดูลไอโอเข้าไปในหน่วยความจำสำหรับการอ่านข้อมูล
วิธีที่สามคือ ดีเอ็มเอ หรือการเข้าถึงหน่วยความจำหลักโดยตรง (Direct memory access: DMA) ด้วยวิธีการนี้
โมดูลไอโอและหน่วยความจำหลักจะแลกเปลี่ยนข้อมูลกันโดยตรง
โดยที่โปรเซสเซอร์จะมีส่วนร่วมในการทำงานน้อยมาก
การควบคุมไอโอด้วยโปรแกรมนั้นเมื่อซีพียูประมวลผลโปรแกรมหลักจะทำการตรวจสอบรีจีสเตอร์สถานะ
(I/O status register) ของไอโอเป็นระยะ ๆ (ตามเวลาที่กำหนดไว้)
ว่าอุปกรณ์ต่อพ่วงใดแสดงความพร้อมที่จะขอติดต่อกับซีพียู
หรืออีกกรณีหนึ่งเมื่อซีพียูพบคำสั่งที่เกี่ยวข้องกับไอโอ
ซีพียูก็จะเรียกใช้ชุดคำสั่งหรือโปรแกรมย่อย เพื่อให้บริการอุปกรณ์ต่อพ่วงนั้น
จากนั้นก็จะเปลี่ยนบิตบอกสถานะของโมดูลไอโอให้เป็น “0” หรือเป็นค่าที่เหมาะสม
เพื่อเมื่อปฏิบัติเสร็จเรียบร้อยโมดูลไอโอก็จะไม่ทำอะไรต่อ
ดังนั้นจึงเป็นหน้าที่ของ ซีพียูที่จะคอยตรวจสอบ
ดูสถานะของโมดูลไอโอจนพบว่างานที่ได้สั่งให้ทำนั้นเสร็จเรียบร้อยแล้วในการประมวลผลคำสั่งที่เกี่ยวข้องกับไอโอ
ซีพียูจะต้องกำหนดหมายเลขที่อยู่หรือแอดเดรสของโมดูลไอโอและอุปกรณ์ต่อพ่วง
หรืออุปกรณ์ต่อพ่วงแต่ละชนิดจะได้รับหมายเลขที่ไม่ซ้ำกัน
เมื่อซีพียูส่งคำสั่งไอโอมายังโมดูลไอโอ
คำสั่งนั้นจะระบุหมายเลขที่อยู่ของอุปกรณ์ต่อพ่วงที่ต้องการไว้ด้วยเสมอ ดังนั้นโมดูลไอโอจะต้องตรวจสอบสัญญาณที่มาตามสายสัญญาณว่าเป็นหมายเลขที่อยู่ของตนเองหรือไม่
คำสั่งที่ต้องการให้อุปกรณ์ต่อพ่วงปฏิบัติจะมี 4 อย่างด้วยกันคือ
- การควบคุม (Control)
ใช้ในการกระตุ้นให้อุปกรณ์ไอโอพร้อมที่จะปฏิบัติงาน
และบอกให้ทราบว่าจะต้องทำงานอะไร ตัวอย่างเช่น
หน่วยเทปแม่เหล็กอาจได้รับคำสั่งให้ม้วนเทปกลับหรือหมุนเทปไปข้างหน้าหนึ่งระเบียน
คำสั่งเหล่านี้จะได้รับการปรับแต่งให้มีความเหมาะสมกับอุปกรณ์แต่ละชนิด
- การทดสอบ (Test) ใช้สำหรับการทดสอบสถานะการทำงานหลายอย่างของโมดูลไอโอและอุปกรณ์
โปรเซสเซอร์จะต้องการทราบว่าอุปกรณ์ที่ต้องการใช้งานนั้น
มีความพร้อมใช้งานอยู่หรือไม่
หรือต้องการทราบว่าคำสั่งที่ให้ปฏิบัติก่อนหน้านี้ได้เสร็จเรียบร้อยหรือยัง
หรือว่ามีข้อผิดพลาดใด ๆ เกิดขึ้นหรือไม่
- การอ่านข้อมูล (Read) จะทำให้โมดูลไอโออ่านข้อมูลมาจากอุปกรณ์ที่ต่อพ่วงและใส่เข้าไว้ในบัฟเฟอร์ จากนั้นโปรเซสเซอร์จะสามารถนำข้อมูลไปใช้
โดยออกคำสั่งให้โมดูลไอโอใส่ข้อมูลเข้าไปในบัสนำสั่ง- การบันทึกข้อมูล (Write) จะทำให้โมดูลไอโอนำข้อมูล
(ไบต์ หรือ เวิร์ด) จากบัสนำส่งข้อมูล ไปส่งต่อให้กับอุปกรณ์ต่อพ่วงที่ต้องการ
การควบคุมไอโอด้วยอินเทอร์รัพท์
การควบคุมไอโอด้วยโปรแกรม
โดยทั่วไปจะไม่เป็นที่นิยมเพราะซีพียูจะต้องเสียเวลามาคอยตรวจสอบสถานะการทำงานของโมดูลไอโออยู่ตลอดเวลา
ในความเป็นจริงแล้วควรจะปล่อยให้ซีพียูทำงานตามโปรแกรมหลัก
ต่อเมื่อจะป้อนข้อมูลให้ซีพียู จึงแจ้งหรือขัดจังหวะซีพียู
ให้มาบริการอุปกรณ์ต่อพ่วงนั้น ๆ ชั่วคราว แล้วจึงกลับไปทำงานหลักต่อ
วิธีดังกล่าวนี้ คือหลักการของการอินเทอร์รัพท์
การอินเทอร์รัพท์จะต่างจากวิธีควบคุมโปรแกรมตรงที่ซีพียูจะทำงานไปตามภารกิจหลักต่อเมื่ออุปกรณ์ต่อพ่วงใดส่งสัญญาณให้แก่ซีพียู
ซีพียูจะหยุดภารกิจการทำงานตามโปรแกรมหลักไว้ชั่วขณะเพื่อไปทำงานตามโปรแกรมย่อย
ซึ่งเป็นการบริการอุปกรณ์ต่อพ่วงนั้นในไมโครโปรเซสเซอร์แทบทุกประเภท
การอินเทอร์รัพท์กระทำโดยการที่อุปกรณ์ต่อพ่วงส่งสัญญาณอิเล็กทรอนิกส์ไปเปลี่ยนระดับตรรกะที่ขาหนึ่งของไมโครโปรเซสเซอร์
เราเรียกขานั้นว่า ขาอินเทอร์รัพท์ เพื่อแจ้งให้ไมโครโปรเซสเซอร์ทราบ
กระบวนการในการเกิดอินเทอร์รัพท์ จะเกิดเหตุการณ์ดังต่อไปนี้
-
อุปกรณ์ไอโอจะส่งสัญญาณอินเทอร์รัพท์ไปยังซีพียู
-
ซีพียูทำการประมวลผลคำสั่งในโปรแกรมที่กำลังทำงานอยู่จนเสร็จเรียบร้อย
(เฉพาะคำสั่งที่กำลังทำอยู่นั้น) ก่อนที่จะตอบสนองต่ออินเทอร์รัพท์
- ซีพียูจะทำการทดสอบอินเตอร์รัพท์
ตรวจสอบว่ามีเพียงอินเทอร์รัพท์เดียว และส่งสัญญาณตอบรับไปยังอุปกรณ์ที่ส่งสัญญาณอินเทอร์รัพท์นั้น
การตอบรับจะทำให้อุปกรณ์นั้นหยุดส่งสัญญาณอินเทอร์รัพท์
-
ซีพียูจะเตรียมการประมวลผลโปรแกรมสำหรับอินเทอร์รัพท์นั้น (เรียกว่า interrupt routine) ซึ่งเริ่มต้นด้วยการบันทึกข้อมูลที่เกี่ยวข้องกับการประมวลผลโปรแกรมที่กำลังทำงานอยู่นั้น
(ก่อนเกิดอินเทอร์รัพท์) ประกอบด้วย
1.
สถานะการทำงานของโปรเซสเซอร์ซึ่งเก็บอยู่ในรีจีสเตอร์ตัวหนึ่ง เรียกว่า Program status word (PSW)
2. ตำแหน่งของคำสั่งต่อไปที่จะถูกประมวลผล
ซึ่งเก็บอยู่ในรีจีสเตอร์เรียกว่า Program counter
(PC) ข้อมูลเหล่านี้อาจถูกเก็บในสแต็กควบคุมการทำงานของระบบ)
-
โปรเซสเซอร์จะดึงคำสั่งแรกของโปรแกรมสำหรับอินเทอร์รัพท์ที่เกิดขึ้นนั้น
ขึ้นมาทำงานเพื่อตอบเสนองต่ออินเทอร์รัพท์
โปรแกรมดังกล่าวอาจเป็นเพียงโปรแกรมเดียวสำหรับอินเทอร์รัพท์แต่ละอย่าง
หรือโปรแกรมเดียวสำหรับอุปกรณ์แต่ละอย่าง
ซึ่งขึ้นอยู่กับสถาปัตยกรรมของคอมพิวเตอร์หรือระบบปฏิบัติการที่เลือกใช้
ในกรณีที่มีโปรแกรมสำหรับอินเทอร์รัพท์มากกว่าหนึ่งโปรแกรม
โปรเซสเซอร์จะต้องทำการตัดสินใจเลือกโปรแกรมหนึ่งขึ้นมาทำงานซึ่งข้อมูลสำหรับการตัดสินใจนี้อาจถูกส่งมาพร้อมกับสัญญาณอินเทอร์รัพท์แล้ว
หรือโปรเซสเซอร์อาจจะต้องส่งสัญญาณไปถามอุปกรณ์ที่เป็นผู้ส่งสัญญาณอินเทอร์รัพท์เข้ามาจึงจะสามารถเลือกโปรแกรมที่ถูกต้องได้
- ณ เวลานี้ โปรแกรมเคาน์เตอร์และ PSW ที่เกี่ยวข้องกับโปรแกรมที่ถูกขัดจังหวะการทำงานได้ถูกบันทึกไว้ในสแต็กของระบบเรียบร้อยแล้ว
อย่างไรก็ตาม
ยังคงมีข้อมูลอื่นที่ถือได้ว่าเป็นส่วนหนึ่งของสถานะของโปรแกรมที่กำลังถูกประมวลผลอยู่
นั่นคือข้อมูลที่เก็บอยู่ใน
รีจีสเตอร์ภายในตัวโปรเซสเซอร์จะต้องถูกบันทึกไว้เช่นเดียวกัน
เนื่องจากรีจีสเตอร์เหล่านี้อาจถูกใช้โดยโปรแกรมสำหรับอินเทอร์รัพท์
ดังนั้นข้อมูลในรีจีสเตอร์เหล่านี้ (และอาจหมายถึงข้อมูลแสดงสถานะอื่น ๆ )
จะต้องถูกบันทึกไว้ด้วย
โดยทั่วไปโปรแกรมสำหรับอินเทอร์รัพท์จะเริ่มต้นการทำงานด้วยการบันทึกข้อมูลในรีจีสเตอร์ลงในสแต็ก
-
โปรแกรมนี้ก็จะเริ่มทำงานต่อไป ด้วยการตรวจสอบสถานะที่เกี่ยวข้องกับการทำงานไอโอที่ต้องการ
หรือเหตุการณ์อื่นที่ทำให้เกิดอินเทอร์รัพท์
การทำงานนี้อาจรวมถึงการส่งคำสั่งเพิ่มเติมหรือการส่งการตอบรับไปยังอุปกรณ์ไอโอ
-
เมื่อโปรแกรมอินเทอร์รัพท์ทำงานเสร็จแล้ว ก็จะปิดท้ายด้วยการคืนค่าให้แก่
รีจีสเตอร์ในซีพียูที่นำมาจากสแต็กของระบบ
- การทำงานส่วนสุดท้ายคือ การคืนค่าให้แก่ PSW และโปรแกรมเคาน์เตอร์ที่นำมาจากสแต็กของระบบ
ทำให้คำสั่งต่อไปที่จะถูกประมวลผลนั้นถูกอ่านมาจากคำสั่งในตำแหน่งต่อไปของโปรแกรมที่ถูกขัดจังหวะการทำงานก่อนหน้านี้
การเข้าถึงหน่วยความจำโดยตรง
ข้อเสียของระบบไอโอที่ใช้กลไกอินทอร์รัพท์และไอโอที่โปรแกรมควบคุม
แม้ว่าการควบคุมไอโอที่ใช้กลไกอินเทอร์รัพท์
จะมีประสิทธิภาพมากกว่าการควบคุมโดยใช้โปรแกรมแต่ก็ยังต้องอาศัยการทำงานของโปรเซสเซอร์ในการถ่ายเทข้อมูลระหว่างหน่วยความจำและโมดูลไอโอ
นั้นคือข้อมูลทั้งหมด (ไม่ว่าจะเป็นการอ่านหรือการบันทึกข้อมูล)
จะต้องเดินทางผ่านโปรเซสเซอร์เสมอ ทำให้เกิดประประสิทธิภาพต่ำเนื่องจาก
- อัตราการถ่ายเทข้อมูล
จะถูกกำจัดโดยความเร็วที่โปรเซสเซอร์สามารถจะให้บริการแก่อุปกรณ์นั้นๆได้
-โปรเซสเซอร์จะถูกดึงให้มาทำงานในระหว่างการถ่ายเทข้อมูลไอโอ
โปรเซสเซอร์จะต้องทำการประมวลผลคำสั่งจำนวนหนึ่งสำหรับการถ่ายเทข้อมูลไอโอแต่ละครั้ง
สรุป
หน่วยรับส่งข้อมูลเข้าออก
ทำหน้าที่เป็นตัวกลาง การถ่ายเทข้อมูลระหว่างระบบคอมพิวเตอร์กับโลกภายนอก
หรือเป็นอุปกรณ์เชื่อมต่อระหว่างระบบคอมพิวเตอร์กับอุปกรณ์ ต่อพ่วง
ซึ่งอาจเรียกว่า อุปกรณ์อินเตอร์เฟส
เนื่องจากชุดอุปกรณ์ดังกล่าวประกอบขึ้นเป็นโมดูลชุดวงจรอีเล็กทรอนิกส์ จึงเรียกว่า
โมดูลไอโอ การรับส่งข้อมูลของโมดูลไอโอจะทำได้สองรูปแบบ คือ
การรับส่งข้อมูลแบบขนาน การรับส่งแบบนี้ทั้งด้านที่ติดต่อกับซีพียูและด้านที่ติดต่อกับอุปกรณ์
ต่อพ่วง จะเป็นการรับส่งแบบขนานทั้งสองด้าน การรับส่งจะกระทำได้ตั้งละหลายบิต
อีกรูปแบบหนึ่งเป็นการรับส่งแบบอนุกรม การรับส่งแบบนี้ทางด้านนี้ติดต่อกับซีพียู
จะเป็นการรับส่งแบบขนานส่วนทางด้านอุปกรณ์ต่อพ่วงจะเป็นการรับส่งแบบอนุกรมซึ่งจะรับส่งครั้งละหนึ่งบิต โครงสร้างหน่วยรับส่งข้อมูล
จะมีส่วนประกอบที่สำคัญ ได้แก่ รีจีสเตอร์ข้อมูล ซึ่งจะทำหน้าที่เป็นตัวพักข้อมูล
รีจีสเตอร์สถานะและรีจีสเตอร์ควบคุม ซึ่งจะควบคุมและให้จังหวะการทำงานของโมดูลไอโอ
นอกจากนั้นก็จะมีวงจรลอจิกเพื่อเชื่อมต่อเข้าระบบบัสของคอมพิวเตอร์
และเชื่อมต่อเข้าอุปกรณ์ต่อพ่วง การควบคุมการทำงานของโมดูลไอโอ จะทำได้ 3 วิธี
ได้แก่ การควบคุมด้วยโปรแกรม การควบคุมด้วยอินเทอร์รัพท์ และการควบคุมด้วย
ดีเอ็มเอ วิธีที่มีประสิทธิภาพที่สุด ได้แก่ ดีเอ็มเอ
แต่อย่างไรก็ตามการทำงานจริงก็ยังใช้ทั้ง 3 วิธี
มาตรฐานการเชื่อมต่อ USB และ FireWire เป็นการเชื่อมต่อแบบอนุกรม
ซึ่งปัจจุบันเป็นมาตรฐานหนึ่งที่ถูกติดตั้งมากับระบบคอมพิวเตอร์ USB ให้ความเร็วในการรับส่งข้อมูลได้ที่ 1.5 – 12 Mbps สามารถต่อพ่วงอุปกรณ์ได้มากถึง
127 อุปกรณ์ ส่วน FireWire ความเร็วในการรับส่งอยู่ที่
200 – 800 Mbps และต่อพ่วงอุปกรณ์ได้ถึง
63 อุปกรณ์
ที่มา http://dol-kalon.blogspot.com/2009/03/6.html
ไม่มีความคิดเห็น:
แสดงความคิดเห็น