บทที่ 6
การนำข้อมูลเข้าและการส่งข้อมูลออก
การนำข้อมูลเข้าและการส่งข้อมูลออก
การนำข้อมูลเข้าและการส่งข้อมูลออก (Pipeline, Scalar & Vector Processor)
หน่วยรับส่งข้อมูลเข้าออก ทำหน้าที่เป็นตัวกลาง การถ่ายเทข้อมูลระหว่างระบบคอมพิวเตอร์กับโลกภายนอกโดยโลกภายนอกจะหมายถึงก่อนที่จะประมวลผลอุปกรณ์ที่ทำหน้าที่เป็นหน่วยรับข้อมูล เช่นแป้นพิมพ์ เมาส์ สแกนเนอร์ อุปกรณ์บริวารประเภทต่างๆ เช่น แป้นพิมพ์ จอภาพ เครื่องพิมพ์ นอกจากนี้อุปกรณ์บริวารยังหมายถึง อุปกรณ์ที่ใช้ในงานอื่นๆ ที่ต่อเชื่อมอยู่กับระบบคอมพิวเตอร์ เช่น ในเครื่องคอมพิวเตอร์ที่ใช้ในกระบวนการผลิตในโรงงานอุตสาหกรรมอาจจะต่อเชื่อมอยู่กับอุปกรณ์วัดหรือควบคุมอุณหภูมิอุปกรณ์เครื่องมือวัดต่างๆ เป็นต้น
หน่วยรับข้อมูล (Input Unit) เป็นอุปกรณ์ที่ทำหน้าที่เป็นสื่อกลางระหว่างคอมพิวเตอร์กับผู้ใช้ โดยรับคำสั่งหรือข้อมูลจากผู้ใช้แล้วแปลงให้อยู่ในรูปแบบสัญญาณไฟฟ้าที่เครื่องคอมพิวเตอร์สามารถเข้าใจ
หน่วยส่งออก (Output Unit) เป็นอุปกรณ์ที่ทำหน้าทีนำผลลัพธ์ที่ได้จากการทำงานของหน่วยประมวลผลกลางไปแปลงให้อยู่ในรูปแบบที่ผู้ใช้สามารถเข้าใจและนำไปใช้ประโยชน์ได้ อุปกรณ์ที่ทำหน้าที่เป็นหน่วยส่งออก เช่น ลำโพง จอภาพ อุปกรณ์ฉายภาพ เครื่องพิมพ์
หน่วยรับส่งข้อมูลเข้าออกบางทีจะเรียกว่า อุปกรณ์เชื่อมต่อไอโอ หรือเรียกทับศัพท์ว่า อุปกรณ์อินเตอร์เฟส (interface) เนื่องจากอุปกรณ์เชื่อมต่อนี้จะเป็นชุดของวงจร ซึ่งอาจจะเป็นชุดมาตรฐานที่ติดตั้งมาพร้อมกับระบบคอมพิวเตอร์ ได้แก่ ชุดเชื่อมต่อแป้นพิมพ์ เมาส์ เครื่องพิมพ์ หรืออาจจะผลิตออกมาเป็นแผงวงจร (การ์ด) เพื่อนำไปเสียบลงในช่องขยายเพิ่ม (Expansion slot) ในระบบคอมพิวเตอร์ ดังนั้นจึงอาจจะเรียกว่า อินเตอร์เฟสการ์ดหรือโมดูลไอโอ (คำว่าไอโอ หมายถึง Input / Output) หน่วยรับส่งข้อมูลเข้าออกจะจัดข้อมูลที่รับจากอุปกรณ์ต่อพ่วงให้อยู่ในรูปที่เหมาะสมแล้วส่งให้ระบบคอมพิวเตอร์ ในทางกลับกันก็จะสามารถรับข้อมูลจากระบบคอมพิวเตอร์ แล้วจัดให้อยู่ในรูปที่เหมาะสม เพื่อส่งให้อุปกรณ์ต่อพ่วง การทำหน้าที่ดังกล่าวนี้ เนื่องจากรูปแบบทางข้อมูลที่ใช้ในอุปกรณ์ต่อพ่วงและระบบคอมพิวเตอร์ โดยปกติจะมีรูปแบบที่แตกต่างกัน หน่วยรับข้อมูลเข้าออกแต่ละหน่วยจะเชื่อมต่ออยู่กับบัสหลัก คือ บัสตำแหน่ง บัสข้อมูล และบัสควบคุม ดังนั้นการบ่งชื่อหรือตำแหน่งของหน่วยรับส่งข้อมูลเข้าออก สามารถ ทำได้สองวิธี วิธีแรกโดยการจัดให้หน่วยรับส่งข้อมูลเข้าออกเป็นส่วนหนึ่งของหน่วยความจำหลัก จึงสามารถที่จะใช้ คำสั่ง ส่งข้อมูลเข้าออกหน่วยรับส่งข้อมูลเข้าออกได้เช่นเดียวกับคำสั่งที่ใช้กับหน่วยความจำปกติ วิธีที่สองทำโดยการจัดวงจรเพิ่มเติมเพื่อบ่งตำแหน่งหรือรหัสประจำหน่วยรับส่งข้อมูลเข้าออก กรณีนี้จะต้องใช้คำสั่งเฉพาะของหน่วยรับส่งข้อมูลเข้าออก การเชื่อมต่ออุปกรณ์ต่อพ่วงปกติจะไม่สามารถเชื่อมต่อเข้าโดยตรงกับบัสหลัก แต่จะต่อผ่านโมดุลไอโอโดยมีเหตุผลดังนี้
- อุปกรณ์ต่อพ่วงมีอยู่จำนวนมาก ซึ่งมีวิธีทำงานที่แตกต่างกันทำให้ไม่มีความเหมาะสมในการปล่อยให้ซีพียู เป็นตัวควบคุมการทำงานอุปกรณ์ทั้งหมด
-อัตราการถ่ายเทข้อมูลของอุปกรณ์ต่อพ่วงนั้นช้ากว่าความเร็วในการทำงานของซีพียู มาก ดังนั้นจึงเป็นการไม่เหมาะสมที่จะต่ออุปกรณ์เหล่านี้เข้ากับบัสโดยตรง
- อัตราการถ่ายเทข้อมูลของอุปกรณ์บางชนิด สูงกว่าความเร็วของหน่วยความจำหลัก หรือแม้กระทั่ง ซีพียู ซึ่งก็ไม่เหมาะสมที่จะนำอุปกรณ์เหล่านี้ต่อเข้าโดยตรงกับบัสเช่นกัน
- โครงสร้างข้อมูลหรือขนาดของเวิร์ดไม่เหมือนกับรูปแบบหรือขนาดที่เครื่องคอมพิวเตอร์ใช้อยู่
รูปแบบการรับและส่งข้อมูลระบบ ได้แก่ การรับส่งข้อมูลแบบขนานหรืออาจเรียกว่า PIO (parallel Input / Output)ซึ่งจะสามารถรับส่งข้อมูลได้ครั้งละหลายบิต เช่น 4, 8, 16 หรือ 32 บิต นอกจากการรับส่งข้อมูลแล้ว จะต้องมีการแลกเปลี่ยนสัญญาณควบคุมระหว่างหน่วยรับส่งข้อมูลเข้าออกและอุปกรณ์ต่อพ่วงด้วย ทั้งนี้เพื่อรักษาจังหวะในการถ่ายเทข้อมูล ระหว่างหน่วยรับส่งข้อมูลเข้าออกและอุปกรณ์ต่อพ่วง สัญญาณควบคุมมีประโยชน์มากเพราะโดยปกติ อุปกรณ์ต่อพ่วงจะมีการทำงานในอัตราที่ช้ากว่าระบบคอมพิวเตอร์ หากระบบคอมพิวเตอร์ส่งข้อมูลด้วยอัตราความเร็วจนอุปกรณ์ต่อพ่วงรับไม่ทัน ก็จะเกิดการสูญหายของข้อมูล วิธีแก้ก็คืออุปกรณ์ต่อพ่วงจะมีสัญญาณคอยแจ้งว่าตนเองพร้อมที่จะรับข้อมูลเพิ่มเติม (ready) และหน่วยรับส่งข้อมูลเข้าออกก็จะมีสัญญาณคอยแจ้งว่าจะมีการส่งข้อมูล การประสานงานกันหน่วยรับส่งข้อมูลเข้าออก มีการรับส่งข้อมูลอยู่ 2 ระหว่างสัญญาณทั้งสองนี้ เรียกว่า วิธีจับมือ (handshaking)ระหว่างหน่วยรับส่งข้อมูลเข้าออกและอุปกรณ์ต่อพ่วงซึ่งจะทำให้การรับส่งข้อมูลที่มีประสิทธิภาพขึ้น
หน้าที่และโครงสร้างของหน่วยรับและส่งข้อมูลเข้าออก
หน้าที่ของหน่วยรับและส่งข้อมูล
หน่วยรับส่งข้อมูลเข้าออกหรือโมดูลไอโอ จะเป็นตัวคั่นกลางระหว่างระบบคอมพิวเตอร์และอุปกรณ์ต่อพ่วง ดังนั้น โมดูลไอโอซึ่งทำหน้าที่บริการทั้งสองด้าน หน้าที่หลักของโมดูลไอโอ
- การควบคุมและรักษาจังหวะการทำงาน
- การสื่อสารกับโปรเซสเซอร์และสื่อสารกับอุปกรณ์ต่อพ่วง
- การจัดการบัฟเฟอร์
- การตรวจสอบข้อผิดพลาด
ในช่วงเวลาใดๆก็ตาม โปรเซสเซอร์อาจจะทำการสื่อสารกับอุปกรณ์ภายนอกหนึ่งอย่างหรือมากกว่านี้ ในรูปแบบที่ไม่สามารถคาดเดาได้ ซึ่งขึ้นอยู่กับความต้องการไอโอของโปรแกรมที่ทำงานอยู่ในเวลานั้น ทรัพยากรภายใน เช่น หน่วยความจำหลักและบัสหลัก จะต้องถูกนำมาใช้ในงานร่วมกันระหว่างกิจกรรมหลายชนิด ร่วมทั้งการอ่านหรือบันทึกข้อมูลผ่านโมดูลไอโอ ดังนั้นฟังก์ชันไอโอจึงหมายถึง ความต้องการในการควบคุมและการจับเวลา(control and timing)เพื่อการประสานงานให้ข้อมูลสามารถไหลผ่านทางทรัพยากรภายในในอุปกรณ์ภายนอกได้ตัวอย่างเช่น การควบคุมการถ่ายเทข้อมูลจากอุปกรณ์ภายนอกมายังโปรเซสเซอร์ อาจจะเกี่ยวพันกับการทำงานดังนี้
- โปรเซสเซอร์ทำการติดต่อกับโมดูลไอโอ เพื่อตรวจสอบสถานะของอุปกรณ์ที่ต้องการใช้งาน
- โมดูลไอโอส่งข้อมูลแสดงสถานะกลับมาให้
- ถ้าอุปกรณ์นั้นสามารถใช้งานได้ และพร้อมที่จะถ่ายเทข้อมูล โปรเซสเซอร์จะร้องขอถ่ายเทข้อมูลผ่านการออกคำสั่งไปยังโมดูลไอโอ
- โมดูลไอโอได้รับข้อมูลชุดแรก (8 บิตหรือ16 บิต)มาจากอุปกรณ์ภายนอก
- ข้อมูลถ่ายเทจากโมดูลไอโอต่อไปกับโปรเซสเซอร์
ถ้าระบบคอมพิวเตอร์มีบัสหลักใช้งาน การโต้ตอบระหว่างโปรเซสเซอร์และโมดูลไอโอจะเกี่ยวข้องกับการถือครองบัส เหตุการณ์ที่สมมติยังแสดงให้เห็นว่า โมดูลไอโอจะต้องสื่อสารกับโปรเซสเซอร์และสื่อสารกับอุปกรณ์ภายนอก การสื่อสารกับโปรเซสเซอร์เกี่ยวข้องกับสิ่งต่อไปนี้
- การถอดรหัสคำสั่ง (command decoding) : โมดูลไอโอรับคำสั่งจากโปรเซสเซอร์ซึ่งปกติจะส่งสัญญาณมาทางบัสควบคุมการทำงาน(control bus)ตัวอย่างเช่นโมดูลไอโอสำหรับขับดิสก์จะรับคำสั่งเช่น 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 และโปรแกรมเคาน์เตอร์ที่นำมาจากสแต็กของระบบ ทำให้คำสั่งต่อไปที่จะถูกประมวลผลนั้นถูกอ่านมาจากคำสั่งในตำแหน่งต่อไปของโปรแกรมที่ถูกขัดจังหวะการทำงานก่อนหน้านี้
การเข้าถึงหน่วยความจำโดยตรง
ข้อเสียของระบบไอโอที่ใช้กลไกอินทอร์รัพท์และไอโอที่โปรแกรมควบคุมแม้ว่าการควบคุมไอโอที่ใช้กลไกอินเทอร์รัพท์จะมีประสิทธิภาพมากกว่าการควบคุมโดยใช้โปรแกรมแต่ก็ยังต้องอาศัยการทำงานของโปรเซสเซอร์ในการถ่ายเทข้อมูลระหว่างหน่วยความจำและโมดูลไอโอนั้นคือข้อมูลทั้งหมด (ไม่ว่าจะเป็นการอ่านหรือการบันทึกข้อมูล) จะต้องเดินทางผ่านโปรเซสเซอร์เสมอ ทำให้เกิดประประสิทธิภาพต่ำเนื่องจาก
- อัตราการถ่ายเทข้อมูล จะถูกกำจัดโดยความเร็วที่โปรเซสเซอร์สามารถจะให้บริการแก่อุปกรณ์นั้นๆ ได้
- โปรเซสเซอร์จะถูกดึงให้มาทำงานในระหว่างการถ่ายเทข้อมูลไอโอ โปรเซสเซอร์จะต้องทำการประมวลผลคำสั่งจำนวนหนึ่งสำหรับการถ่ายเทข้อมูลไอโอแต่ละครั้ง
การเชื่อมต่อโมดูลไอโอกับอุปกรณ์ต่อพ่วง
การติดต่อสื่อสารระหว่างคอมพิวเตอร์กับอุปกรณ์ภายนอกหรืออุปกรณ์ต่อพ่วง ซึ่งมีอยู่มากหมายหลายประเภท เช่น แป้นพิมพ์ เครื่องพิมพ์ สแกน โมเด็ม เป็นต้น ซึ่งอุปกรณ์เหล่านี้จะต้องอาศัยช่องทาง (port) สำหรับส่งถ่ายข้อมูล พอร์ตหรือช่องทางนี้มีการทำงานอยู่สองแบบ คือ ทำงานแบบอนุกรม (serial) และทำงานแบบขนาน (parallel) ดังได้กล่าวมาแล้วในหัวข้อ 6.3 ในการทำงานของส่วนเชื่อมต่อแบบขนานจะมีสายสัญญาณหลายเส้นเชื่อมต่อระหว่างโมดูลไอโอและอุปกรณ์ต่อพ่วงทำให้สามารถถ่ายโอนข้อมูลได้หลายบิตพร้อม ๆ กัน ส่วนการเชื่อมต่อแบบอนุกรมจะมีสายสัญญาณเพียงเส้นเดียวเท่านั้นที่ใช้ในการถ่ายโอนข้อมูล ซึ่งจะถูกส่งออกครั้งละหนึ่งบิต การเชื่อมต่อแบบขนานมักจะใช้ เชื่อมต่อกับอุปกรณ์ต่อพ่วงที่สามารถทำได้อย่างรวดเร็ว เช่น ฮาร์ดดิสก์หรือเทปแม่เหล็ก ในขณะที่การเชื่อมต่อแบบอนุกรมจะนำไปใช้กับอุปกรณ์ที่มีความเร็วต่ำ เช่น เครื่องพิมพ์ จอภาพ เป็นต้น ในปัจจุบันได้มีการขยายการเชื่อมต่อแบบอนุกรมความเร็วสูงสุดขึ้นมาใช้งาน ซึ่งจะทำให้การเชื่อมต่อแบบขนาน
มีความสำคัญลดลง การเชื่อมต่อแบบอนุกรม ความเร็วสูงที่กำลังได้รับ ความนิยมก็คือ USB และ FireWire
มาตรฐานการเชื่อมต่อ USB
USBย่อมาจาก Universal Serial Bus เป็นมาตรฐานการเชื่อมต่ออุปกรณ์ ไอโอ ภายนอกแบบใหม่สำหรับเครื่องคอมพิวเตอร์ในระดับพีซีที่ใช้งานง่ายราคาถูก สามารถจัด คอนฟิกูเรชันได้ง่ายอีกทั้งมีความเร็วอีกทั้งมีความเร็วในการถ่ายเทข้อมูลสูงสุด ซึ่งสามารถสนับสนุนการถ่ายข้อมูลที่ความเร็ว12Mb/วินาทีลักษณะของข้อมูลสามารถเป็นได้ทั้งรูปแบบการถ่ายเทข้อมูลในลักษณะกระแสและแพ็กเก็ต (Packet ในที่นี้จะหมายถึงในลักษณะรูปแบบของข้อมูลที่มีแบบแผนตายตัวที่เรียกว่า Frame ที่ประกอบด้วยส่วนหัว ส่วนข้อมูลและส่วนหางที่ใช้ตรวจสอบความผิดพลาดของข้อมูล) การที่USB สนับสนุนการส่งถ่ายข้อมูลหลายรูปแบบดังกล่าวจึงทำให้ USB สามารถรับรองอุปกรณ์ ไอโอ ได้หลากหลาย เช่น เมาส์ แป้นพิมพ์ กล้องถ่ายภาพและอุปกรณ์เชื่อมต่อ ISDN นอกจากนี้ USB ยังยอมให้เชื่อมต่อแบบ Hot plugซึ่งหมายถึงความสามารถติดตั้งอุปกรณ์ไอโอได้ทันที่โดยไม่ต้องปิดเครื่องคอมพิวเตอร์เสียก่อน อุปกรณ์ที่ทำงานภายใต้USB สามารถทำงานที่ความเร็วต่ำได้แก่ 1.5 Mb/วินาที หรือความเร็วสูงสุดคือ 12 Mb/วินาที ซึ่งข้อดีของการทำงานที่เร็วต่ำหมายถึงสัญญาณ
และเครื่องพิมพ์ เป็นต้น ส่วนแบบความเร็วต่ำอยู่ที่ 1.5 Mbps อุปกรณ์ที่ทำงานบนความเร็วต่ำ ได้แก่ แป้นพิมพ์ เมาส์ จอยสติก เป็นต้น โดยมี USB Host ที่ตั้งบนเมนบอร์ด ทำหน้าที่จัดการดูแลช่องสัญญาณและความเร็วของUSB ในแต่ละพอร์ต รวมทั้งควบคุมการสื่อสารและการถ่ายเทข้อมูล ระหว่าง USB Host กับอุปกรณ์ USB
ข้อดีของการใช้ USB มีหลายประการดังต่อไปนี้
- ราคาประหยัด USB ช่วยประหยัดค่าใช้จ่ายในการติดตั้งอุปกรณ์ไอโอรอบข้างของพีซี
- Hot Plug ท่านสามารถติดตั้งอุปกรณ์ ได้ทันที่โดยไม่ต้องปิดเครื่องคอมพิวเตอร์เสียก่อน การติดตั้งแบบนี้จะไม่ส่งผลกระทบต่อ USB รวมทั้งอุปกรณ์ข้างเคียง
- ใช้คอนเน็กเตอร์แบบเดี่ยว ด้วยคอนเน็กเตอร์ 1 ช่องสามารถติดตั้งอุปกรณ์ USB ใดก็ได้ แต่ถ้าต้องการเชื่อมต่ออุปกรณ์ USB มากกว่านี้ต้องติดตั้งผ่านฮับUSB
- สนับสนุนอุปกรณ์ความเร็วต่ำและความเร็วสูง USB สามารถสนับสนุนอุปกรณ์ที่ทำงานด้วยความเร็วต่ำได้แก่ 1.5 Mb/วินาที และสูงสุดที่ความเร็ว 12 Mb/วินาที ด้วยความเร็วต่ำจะทำให้ USB ทำงานได้ดีกับอุปกรณ์USB ราคาถูก เนื่องจากสามารถใช้สายสัญญาณเชื่อมต่อที่ไม่ต้องมีระบบป้องกันการรบกวนของสนามแม่เหล็ก
- สามารถจ่ายไฟจากสายเคเบิล อุปกรณ์ไอโอที่เชื่อมต่อภายนอกสามารถรับแรงดันไฟเลี้ยงอุปกรณ์จากสายเคเบิล USB โดยเฉพาะแรงดันไฟขนาด 5.0Vdcนอกจากนี้กระแสไฟที่ส่งออกมาผ่านทางสายเคเบิลนี้มีขนาด 100-500 mA ทั้งนี้ขึ้นอยู่กับ USB ฮับ
- มีระบบตรวจสอบและแก้ไขความผิดพลาด ระบบ USB ยังมีการตรวจสอบความผิดพลาดรวมทั้งการแก้ไขในขณะที่มีการส่งถ่ายข้อมูลไปมาระหว่างอุปกรณ์ USB กับ USB อินเทอร์เฟส กรณีที่ตรวจพบความผิดพลาดระหว่างการถ่ายเทข้อมูลจะพยายามรับส่งข้อมูลกันใหม่อีกครั้ง ซึ่งเพิ่มความน่าเชื่อถือในการขนถ่ายข้อมูล
- ประหยัดพลังงาน อุปกรณ์ USB จะเข้าสู่การหยุดทำงานชั่วคราวถ้าไม่มีการทำงานใด ๆ เกิดขึ้นบนระบบบัสหลังจาก 3 มิลลิวินาทีผ่านไป และในขณะที่อยู่ในห้วงของการหยุดทำงานชั่วคราวดังกล่าว ระบบจะกินกระแสไฟเพียง 500 ไมโครแอมแปร์เท่านั้น
- สามารถสนับสนุนรูปแบบการถ่ายเทข้อมูล 4 แบบ ระบบ USB สนับสนุนการขนถ่ายข้อมูลได้ 4 รูปแบบ ได้แก่ Bulk, Isochronous, Interrupt และ Control Transfers
มาตรฐานการเชื่อมต่อ FireWire
การเชื่อมต่อแบบ ไฟร์ไวร์ (Fi-Wi) เป็นการเชื่อมต่อกับอุปกรณ์ต่อพ่วงแบบอนุกรม ที่กำลังได้รับความนิยมอีกแบบหนึ่งนอกจากจะเป็นมาตรฐานการเชื่อมต่อในระบบคอมพิวเตอร์แล้วยังนำไปใช้เป็นมาตรฐานการเชื่อมต่ออุปกรณ์อีเล็กทรอนิกส์ เครื่องใช้ในบ้านได้อีก ได้แก่ อุปกรณ์เกี่ยวกับภาพ เสียง และเกมส์ เป็นต้น ในปัจจุบันความเร็วของโปรเซสเซอร์ขึ้นไปถึงระดับ GHz หรือพันล้านเฮิรตซ์ต่อวินาที ในขณะที่อุปกรณ์บันทึกข้อมูลก็สามารถบันทึกข้อมูลได้ในระดับ gigabyte หรือ พันล้านไบต์ ทำให้ความต้องการทางไอโอสำหรับเครื่องคอมพิวเตอร์ส่วนบุคคล เครื่องเวิร์คสเตชัน และเครื่องเซิร์ฟเวอร์เพิ่มขึ้นอย่างมาก แม้ว่าจะมีเทคโนโลยีช่องสื่อสารไอโอความเร็วสูงที่ได้รับการพัฒนาขึ้นมาสำหรับเครื่องเมนเฟรม และซูเปอร์คอมพิวเตอร์ ซึ่งอาจนำมาใช้งานได้ แต่ก็เป็นอุปกรณ์ที่มีราคาแพงมาก และมีขนาดใหญ่เกินกว่าที่จะนำมาใช้ในเครื่องคอมพิวเตอร์ขนาดเล็ก ทำให้เกิดการค้นคว้าพัฒนาส่วนติดต่อความเร็วสูงขึ้นมาทดแทนระบบSCSI และระบบอื่น ๆ ที่ใช้อยู่ในปัจจุบัน ผลที่ได้รับจากการค้นคว้าคือมาตรฐาน IEEE 1394 ซึ่งเป็นบัสแบบอนุกรมประสิทธิภาพสูง เรียกชื่อทั่วไปว่า FireWire
FireWire มีข้อดีเหนือกว่าส่วนติดต่อไอโอแบบเก่าหลายประการ นั่นคือ เป็นระบบที่มีความเร็วสูง ราคาต่ำ และสร้างขึ้นมาใช้งานได้ง่าย อันที่จริงแล้ว ระบบนี้ไม่ได้นำมาใช้งานเฉพาะในระบบคอมพิวเตอร์เท่านั้น แต่ยังสามารถนำไปใช้ในอุปกรณ์ดิจิตอลอื่น ๆ ได้ เช่น กล้องดิจิตอล เครื่องเล่นวิดีโอ และโทรทัศน์ ในระบบเหล่านี้ FireWire ถูกนำมาใช้ในการถ่ายโอนข้อมูลทางด้านภาพ ซึ่งมีแหล่งที่มาจากอุปกรณ์ดิจิตอล จุดเด่นของส่วนติดต่อแบบ FireWire คือการใช้การสื่อสารแบบอนุกรม การสื่อสารแบบขนาน เช่น ระบบ SCSI นั้นจะต้องใช้สายสัญญาณ
เป็นจำนวนมากกว่า ทำให้ต้องใช้สายขนาดใหญ่ หัวเชื่อมต่อก็ต้องมีขนาดใหญ่ตามไปด้วย มีราคาแพงกว่า และมีโอกาสที่จะชำรุดเสียหายมากกว่า สายเคเบิลที่มีสายสัญญาณอยู่ข้างในหลายเส้นมีฉนวนภายในเพื่อป้องกันสัญญาณรบกวนกันเองภายในสาย นอกจากนี้ ส่วนติดต่อแบบขนานจะต้องมีการเทียบจังหวะการทำงานของสัญญาณในสายทุกเส้น ให้ตรงกัน ซึ่งปัญหาเหล่านี้ยิ่งทวีความรุนแรงเมื่อสายมีขนาดยาว
ไม่มีความคิดเห็น:
แสดงความคิดเห็น