วันจันทร์ที่ 9 ตุลาคม พ.ศ. 2560

บทที่ 6 การนำข้อมูลเข้าและการส่งข้อมูลออก

การนำข้อมูลเข้าและการส่งข้อมูลออก
การนำข้อมูลเข้าและการส่งข้อมูลออก (Pipeline, Scalar & Vector Processor)
      หน่วยรับส่งข้อมูลเข้าออก  ทำหน้าที่เป็นตัวกลาง การถ่ายเทข้อมูลระหว่างระบบคอมพิวเตอร์กับโลกภายนอกโดยโลกภายนอกจะหมายถึงก่อนที่จะประมวลผลอุปกรณ์ที่ทำหน้าที่เป็นหน่วยรับข้อมูล เช่นแป้นพิมพ์ เมาส์  สแกนเนอร์ อุปกรณ์บริวารประเภทต่างๆ เช่น แป้นพิมพ์ จอภาพ เครื่องพิมพ์ นอกจากนี้อุปกรณ์บริวารยังหมายถึง อุปกรณ์ที่ใช้ในงานอื่นๆ ที่ต่อเชื่อมอยู่กับระบบคอมพิวเตอร์ เช่น ในเครื่องคอมพิวเตอร์ที่ใช้ในกระบวนการผลิตในโรงงานอุตสาหกรรมอาจจะต่อเชื่อมอยู่กับอุปกรณ์วัดหรือควบคุมอุณหภูมิอุปกรณ์เครื่องมือวัดต่างๆ เป็นต้น
 หน่วยรับข้อมูล (Input Unit) เป็นอุปกรณ์ที่ทำหน้าที่เป็นสื่อกลางระหว่างคอมพิวเตอร์กับผู้ใช้ โดยรับคำสั่งหรือข้อมูลจากผู้ใช้แล้วแปลงให้อยู่ในรูปแบบสัญญาณไฟฟ้าที่เครื่องคอมพิวเตอร์สามารถเข้าใจ 

หน่วยส่งออก (Output Unit) เป็นอุปกรณ์ที่ทำหน้าทีนำผลลัพธ์ที่ได้จากการทำงานของหน่วยประมวลผลกลางไปแปลงให้อยู่ในรูปแบบที่ผู้ใช้สามารถเข้าใจและนำไปใช้ประโยชน์ได้  อุปกรณ์ที่ทำหน้าที่เป็นหน่วยส่งออก  เช่น ลำโพง จอภาพ อุปกรณ์ฉายภาพ เครื่องพิมพ์ 
หน่วยรับส่งข้อมูลเข้าออกบางทีจะเรียกว่า อุปกรณ์เชื่อมต่อไอโอ หรือเรียกทับศัพท์ว่า อุปกรณ์อินเตอร์เฟส (interface) เนื่องจากอุปกรณ์เชื่อมต่อนี้จะเป็นชุดของวงจร ซึ่งอาจจะเป็นชุดมาตรฐานที่ติดตั้งมาพร้อมกับระบบคอมพิวเตอร์ ได้แก่ ชุดเชื่อมต่อแป้นพิมพ์ เมาส์ เครื่องพิมพ์ หรืออาจจะผลิตออกมาเป็นแผงวงจร (การ์ด) เพื่อนำไปเสียบลงในช่องขยายเพิ่ม (Expansion slot) ในระบบคอมพิวเตอร์ ดังนั้นจึงอาจจะเรียกว่า อินเตอร์เฟสการ์ดหรือโมดูลไอโอ (คำว่าไอโอ หมายถึง Input / Output) หน่วยรับส่งข้อมูลเข้าออกจะจัดข้อมูลที่รับจากอุปกรณ์ต่อพ่วงให้อยู่ในรูปที่เหมาะสมแล้วส่งให้ระบบคอมพิวเตอร์ ในทางกลับกันก็จะสามารถรับข้อมูลจากระบบคอมพิวเตอร์ แล้วจัดให้อยู่ในรูปที่เหมาะสม เพื่อส่งให้อุปกรณ์ต่อพ่วง การทำหน้าที่ดังกล่าวนี้ เนื่องจากรูปแบบทางข้อมูลที่ใช้ในอุปกรณ์ต่อพ่วงและระบบคอมพิวเตอร์ โดยปกติจะมีรูปแบบที่แตกต่างกัน  หน่วยรับข้อมูลเข้าออกแต่ละหน่วยจะเชื่อมต่ออยู่กับบัสหลัก คือ บัสตำแหน่ง บัสข้อมูล  และบัสควบคุม ดังนั้นการบ่งชื่อหรือตำแหน่งของหน่วยรับส่งข้อมูลเข้าออก สามารถ ทำได้สองวิธี  วิธีแรกโดยการจัดให้หน่วยรับส่งข้อมูลเข้าออกเป็นส่วนหนึ่งของหน่วยความจำหลัก จึงสามารถที่จะใช้ คำสั่ง ส่งข้อมูลเข้าออกหน่วยรับส่งข้อมูลเข้าออกได้เช่นเดียวกับคำสั่งที่ใช้กับหน่วยความจำปกติ วิธีที่สองทำโดยการจัดวงจรเพิ่มเติมเพื่อบ่งตำแหน่งหรือรหัสประจำหน่วยรับส่งข้อมูลเข้าออก กรณีนี้จะต้องใช้คำสั่งเฉพาะของหน่วยรับส่งข้อมูลเข้าออก  การเชื่อมต่ออุปกรณ์ต่อพ่วงปกติจะไม่สามารถเชื่อมต่อเข้าโดยตรงกับบัสหลัก แต่จะต่อผ่านโมดุลไอโอโดยมีเหตุผลดังนี้
        - อุปกรณ์ต่อพ่วงมีอยู่จำนวนมาก ซึ่งมีวิธีทำงานที่แตกต่างกันทำให้ไม่มีความเหมาะสมในการปล่อยให้ซีพียู เป็นตัวควบคุมการทำงานอุปกรณ์ทั้งหมด
-อัตราการถ่ายเทข้อมูลของอุปกรณ์ต่อพ่วงนั้นช้ากว่าความเร็วในการทำงานของซีพียู มาก ดังนั้นจึงเป็นการไม่เหมาะสมที่จะต่ออุปกรณ์เหล่านี้เข้ากับบัสโดยตรง
        - อัตราการถ่ายเทข้อมูลของอุปกรณ์บางชนิด สูงกว่าความเร็วของหน่วยความจำหลัก หรือแม้กระทั่ง ซีพียู ซึ่งก็ไม่เหมาะสมที่จะนำอุปกรณ์เหล่านี้ต่อเข้าโดยตรงกับบัสเช่นกัน
         - โครงสร้างข้อมูลหรือขนาดของเวิร์ดไม่เหมือนกับรูปแบบหรือขนาดที่เครื่องคอมพิวเตอร์ใช้อยู่
รูปแบบการรับและส่งข้อมูลระบบ ได้แก่ การรับส่งข้อมูลแบบขนานหรืออาจเรียกว่า PIO (parallel Input / Output)ซึ่งจะสามารถรับส่งข้อมูลได้ครั้งละหลายบิต เช่น 4816 หรือ 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/วินาที ซึ่งข้อดีของการทำงานที่เร็วต่ำหมายถึงสัญญาณ
รบกวนที่เกี่ยวกับสนามแม่เหล็กไฟฟ้าจะมีน้อยกว่าอุปกรณ์ที่ทำงานด้วยความเร็วสูง ด้วยเหตุนี้จึงมีความน่าเชื่อถือมากกว่าUSB มีรูปแบบความเร็วในการถ่ายเทข้อมูล 2 แบบ ได้แก่ แบบความเร็วสูงสุด ซึ่ง USB ใช้เพื่อการส่งข่าวสารและถ่ายเทข้อมูลที่ความเร็ว 12 Mbps อุปกรณ์ที่ทำงานความเร็วสูงสุด ได้แก่ ซิปไดรฟ์ สแกนเนอร์
และเครื่องพิมพ์ เป็นต้น ส่วนแบบความเร็วต่ำอยู่ที่ 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 นั้นจะต้องใช้สายสัญญาณ
เป็นจำนวนมากกว่า ทำให้ต้องใช้สายขนาดใหญ่ หัวเชื่อมต่อก็ต้องมีขนาดใหญ่ตามไปด้วย มีราคาแพงกว่า และมีโอกาสที่จะชำรุดเสียหายมากกว่า สายเคเบิลที่มีสายสัญญาณอยู่ข้างในหลายเส้นมีฉนวนภายในเพื่อป้องกันสัญญาณรบกวนกันเองภายในสาย นอกจากนี้ ส่วนติดต่อแบบขนานจะต้องมีการเทียบจังหวะการทำงานของสัญญาณในสายทุกเส้น ให้ตรงกัน ซึ่งปัญหาเหล่านี้ยิ่งทวีความรุนแรงเมื่อสายมีขนาดยาว

ไม่มีความคิดเห็น:

แสดงความคิดเห็น