1 / 47

Lecture 6

Lecture 6. I/O Organization ( ต่อ). I/O ที่ใช้กลไก Interrupt.

percy
Download Presentation

Lecture 6

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lecture 6 I/O Organization (ต่อ)

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

  3. กระบวนการ Interrupt

  4. กระบวนการ Interrupt • อุปกรณ์ I/O จะส่งสัญญาณอินเทอร์รัพท์ไปยังโปรเซสเซอร์ • โปรเซสเซอร์ทำงานประมวลผลคำสั่งในโปรแกรมที่กำลังทำงานอยู่จนเสร็จเรียบร้อย ก่อนที่จะสนองตอบ interrupt • โปรเซสเซอร์จะทำการทดสอบ interrupt และส่งสัญญาณตอบรับไปยังอุปกรณ์ที่ส่งสัญญาณ interrupt มาการตอบรับจะทำให้อุปกรณ์นั้นหยุดส่งสัญญาณ interrupt • โปรเซสเซอร์จะเตรียมการประมวลผลโปรแกรมสำหรับ interrupt นั้นเรียกว่า interrupt routine ซึ่งเริ่มต้นด้วยการบันทึกข้อมูลที่เกี่ยวข้องกับการประมวลผลโปรแกรมที่กำลังทำงานอยู่ขณะนั้น ประกอบด้วย • สถานการณ์ทำงานของโปรเซสเซอร์ซึ่งเก็บอยู่ในรีจิสเตอร์ตัวหนึ่ง เรียกว่า Program status word(PSW) • ตำแหน่งของคำสั่งต่อไปที่จะถูกประมวลผล ซึ่งเก็บอยู่ที่ PC หรืออาจเก็บอยู่ใน systemtem control stack

  5. กระบวนการ Interrupt 5.โปรเซสเซอร์จะดึงคำสั่งแรกของโปรแกรมสำหรับ interrupt ที่เกิดขึ้น มาทำงานเพื่อตอบสนอง interrupt ในกรณีมีคำสั่ง interrupt มากกว่า 1 โปรแกรม โปรเซสเซอร์จะต้องเลือกโปรแกรมหนึ่งขึ้นมาทำงาน ซึ่งข้อมูลการตัดสินใจนี้ อาจถูกส่งมาพร้อมกับสัญญาณ interrupt แล้วหรือโปรเซสเซอร์อาจจะต้องส่งสัญญาณไปถามอุปกรณ์ จึงจะสามารถเลือกโปรแกรมได้ถูกต้อง 6.ณ เวลานี้ PC และ PSW ได้ถูกบันทึกไว้ในสแต็กของระบบเรียบร้อยแล้ว อย่างไรก็ตามยังมีข้อมูลอื่นที่เป็นส่วนหนึ่งของสถานของโปรแกรมที่กำลังถูกประมวลอยู่ นั่นคือข้อมูลที่เก็บอยู่ในรีจิสเตอร์ภายในตัวโปรเซสเซอร์จะต้องถูกบันทึกไว้เช่นเดียวกัน เนื่องจากรีจิสเตอร์ เหล่านี้อาจถูกใช้โดยโปรแกรมสำหรับ interrupt ดังนั้นข้อมูลในรีจิสเตอร์เหล่านี้จะต้องถูกบันทึกไว้ด้วย

  6. กระบวนการ Interrupt รูปด้านล่างแสดงโปรแกรมของผู้ใช้ถูกขัดจังหวะการทำงานภายหลังจากคำสั่งตำแหน่งที่ N ข้อมูลที่เก็บอยู่รีจิสเตอร์ทั้งหมดและตำแหน่งของคำสั่งที่จะถูกประมวลผลในลำดับต่อไป (N+1) จะถูกเก็บไว้ในสแต็ก ตัวชี้ตำแหน่งของสแต็กจะถูกปรับค่าใหม่ และ PC จะถูกบันทึกตำแหน่งของคำสั่งแรกของโปรแกรมสำหรับ interrupt (b) Return from interrupt (a) Interrupt occurs after instruction at location N

  7. กระบวนการ Interrupt 7.โปรแกรมนี้ก็จะเริ่มทำงานต่อไป ด้วยการตรวจสอบสถานะที่เกี่ยวข้องกับการทำงาน I/O ที่ต้องการ 8. เมื่อโปรแกรม interrupt ทำงานเสร็จแล้ว ก็จะปิดท้ายด้วยการคืนค่าให้กับรีจิสเตอร์ในโปรเซสเซอร์ที่นำมาจากสแต็กของระบบ 9. การทำงานส่วนสุดท้ายคือ การคืนค่าให้แก่ PSW และ PC ที่นำมาจากสแต็กระบบ ทำให้คำสั่งต่อไปที่จะถูกประมวลผลนั้นถูกอ่านมาจากคำสั่งในตำแหน่งต่อไปของโปรแกรมที่ถูกขัดจังหวะการทำงานก่อนหน้านี้

  8. ประเด็นในการออกแบบ • ในการสร้างระบบ I/O ที่ใช้กลไก interrupt นั้นมักเกิดปัญหาหลักสองประการ คือ • เนื่องจากว่าอุปกรณ์ I/O และ I/O Module นั้นมีอยู่เป็นจำนวนมาก โปรเซสเซอร์จะใช้วิธีการใดในการตรวจสอบว่าอุปกรณ์ I/O ใดเป็นตัวที่ส่งสัญญาณอินเทอร์รัพท์ออกมา • ถ้าเกิดมีอินเทอร์รัพท์เกิดขึ้นซ้อนกัน โปรเซสเซอร์จะติดสินใจอย่างไร • โดยทั่วไปมีวิธีการแยกแยะ หรือการแสดงตนของอุปกรณ์ I/O อยู่ 4 วิธี • การใช้สายสัญญาณ interrupt หลายเส้น (Multiple interrupt lines) • การทำซอฟแวร์โพล (Software poll) • การต่อพ่วงอุปกรณ์เรียงตามลำดับหรือ ฮาร์ดแวร์โพล(Hardware poll) • การครอบครองบัส (Bus arbitration)

  9. ประเด็นในการออกแบบ • Multiple interrupt lines : การจัดให้มีสายสัญญาณหลายเส้น วิธีนี้แก้ปัญหาได้เป็นอย่างดี แต่ก็สร้างปัญหาในทางปฏิบัติขึ้นมาคือ ในความเป็นจริงนักออกแบบคอมพิวเตอร์ไม่สามารถจะจัดหาสายสัญญาณมากกว่าสอง – สามเส้น หรือมีขาเชื่อมต่อที่ตัวโปรเซสเซอร์เป็นจำนวนมากกว่าที่เป็นอยู่ปัจจุบันได้ • Software poll : เมื่อโปรเซสเซอร์ตรวจพบสัญญาณ interrupt ก็จะเรียกใช้โปรแกรมสำหรับจัดการ interrupt(general interrupt-service routine) ซึ่งจะทำการสอบถามอุปกรณ์ I/O ทีละตัวเพื่อหาตัวที่เป็นต้นกำเนิดของสัญญาณ interrupt นั้น การสอบถามอาจอยู่ในรูปของคำสั่งเฉพาะ เช่น TESTI/O ในกรณีนี้โปรเซสเซอร์จะส่งสัญญาณ TESTI/O และส่งสัญญาณที่อยู่ของอุปกรณ์ I/O ทีละตัวเข้าไปใน address bus อุปกรณ์ I/O ตัวที่เป็นต้นกำเนิดสัญญาณ interrupt จะตอบรับคำสั่งนี้

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

  11. ประเด็นในการออกแบบ • Hardware poll : จะทำหน้าที่เสมือนการทำโพลโดยฮาร์ดแวร์ อุปกรณ์ทุกตัวจะใช้สายสัญญาณ interrupt ร่วมกัน สายสัญญาณตอบรับ interrupt จะถูกต่อพ่วงเรียงกันตามลำดับไปยัง I/O Module เมื่อโปรเซสเซอร์ตรวจพบสัญญาณ interrupt ก็จะส่งสัญญาณตอบรับ interrupt ออกมา สัญญาณตอบรับนี้จะถูกส่งผ่านอุปกรณ์ I/O ทีละตัว ตั้งแต่ตัวแรกที่อยู่ลำดับแรกในสายสัญญาณไปจนกระทั่งไปถึงอุปกรณ์ตัวที่ส่งสัญญาณ interrupt ออกมาอุปกรณ์นั้นมักจะตอบรับด้วยการส่งข้อมูลขนาดหนึ่ง word ออกมาใน data bus ข้อมูล word นี้มักถูกเรียกว่า vector ซึ่งจะเป็นตำแหน่งที่อยู่หรือหมายเลขเฉพาะของอุปกรณ์ I/O นั้น โปรเซสเซอร์จะใช้ข้อมูลนี้ในการเรียกโปรแกรม interrupt ของอุปกรณ์ตัวนั้นขึ้นมาประมวลผล เทคนิคนี้หลีกเลี่ยงการเรียกใช้โปรแกรม interrupt อื่น เช่นโปรแกรมที่ถูกเรียกใช้ในตอนเริ่มต้นการทำงานของวิธี Software poll ซึ่งอาจเรียกเทคนิคนี้ว่า “vectored interrupt”

  12. ประเด็นในการออกแบบ • Bus arbitration: การครอบครองบัสนี้ I/O Module จะเริ่มต้นการทำงานด้วยการพยายามยึดครองการใช้งานบัสให้ได้เสียก่อน จากนั้นจึงค่อยส่งสัญญาณ interrupt ออกไป วิธีการนี้ทำให้แน่ใจได้ว่า จะมี I/O Module เพียง Module เดียวเท่านั้นที่จะสามารถส่งสัญญาณ interrupt ออกไปได้ในแต่ละครั้ง เมื่อโปรเซสเซอร์ตรวจพบสัญญาณ interrupt และตอบรับมาทางสายสัญญาณตอบรับ I/O Module ที่เป็นผู้ยึดครองบัสก็จะส่งข้อมูล vector ของตนเองกลับมา

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

  14. การเข้าถึงหน่วยความจำโดยตรง (DMA) • เนื่องจากการ I/O ที่ใช้ interrupt ช่วยให้โปรเซสเซอร์มีเวลาว่างมากขึ้น แต่ก็ทำให้การถ่ายเทข้อมูลใช้เวลานานขึ้นน • ส่วน I/O ที่ใช้โปรแกรมควบคุม จะทำให้ต้องใช้งานโปรเซสเซอร์ 100 เปอร์เซ็นต์ ซึ่งสามารถเคลื่อนย้ายข้อมูลได้ด้วยความเร็วสูง แต่มีข้อเสียคือ โปรเซสเซอร์ไม่สามารถทำงานอื่นได้ ทั้งสองวิธีทำให้เกิดผลเสียต่อการทำงานของโปรเซสเซอร์และอัตราการถ่ายเทข้อมูล ในการถ่ายเทข้อมูลปริมาณมาก วิธีการที่มีประสิทธิภาพมากกว่า เรียกว่า การเข้าถึงหน่วยความจำโดยตรง (Direct Memory Access: DMA) จึงถูกนำมาใช้

  15. ฟังก์ชัน DMA • วิธีการแบบ DMA จะใช้ Module เพิ่มเติมใน system bus โมดูล DMA ดังรูปด้านล่าง มีความสามารถในการเลียนแบบการทำงานของโปรเซสเซอร์ ซึ่งอันที่จริงก็เป็นการดึงการควบคุมการทำงานมาจากโปรเซสเซอร์ เพื่อให้สามารถถ่ายเทข้อมูลในหน่วยความจำหลักผ่าน system bus • Module DMA จะใช้บัสได้เฉพาะในจังหวะที่โปรเซสเซอร์ไม่ต้องการใช้งาน เพื่อไม่ให้ขัดขวางการทำงานของโปรเซสเซอร์ มิฉะนั้นก็จะเป็นการบังคับให้โปรเซสเซอร์หยุดทำงานชั่วคราว วิธีการอาจนี้เรียกว่า การแย่งชิงวงรอบทำงาน (cycle stealing) หรือการแย่งชิงวงรอบการทำงานของบัส (bus cycle)

  16. ฟังก์ชัน DMA • เมื่อโปรเซสเซอร์ต้องการอ่านหรือบันทึกข้อมูลหนึ่งบล็อก คำสั่งจะถูกส่งไปยัง DMA Module ซึ่งประกอบด้วยข้อมูลดังต่อไปนี้ • เป็นการอ่านหรือบันทึกข้อมูล โดยการใช้สายสัญญาณสำหรับการอ่านหรือบันทึกข้อมูลที่เชื่อมต่อระหว่างโปรเซสเซอร์กับ DMA Module • ตำแหน่งที่อยู่ของอุปกรณ์ I/O ที่เกี่ยวข้องจะถูกส่งผ่านทาง data bus • ตำแหน่งเริ่มต้นของหน่วยความจำที่จะอ่านหรือบันทึกข้อมูล จะถูกส่งผ่านสาย data bus หรือถูกจัดเก็บไว้ในรีจิสเตอร์แสดงตำแหน่งที่อยู่ (address register) ภายใน I/O Module • จำนวน word ของข้อมูลที่จะถูกอ่านหรือบันทึก จะถูกส่งผ่านสายสัญญาณข้อมูล (data bus) เช่นเดียวกัน และจัดเก็บไว้ใน data count register

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

  18. ฟังก์ชัน DMA ไดอะแกรมแบบบล็อก สำหรับ DMA โดย ทั่วไป

  19. ฟังก์ชัน DMA DMA และจุดแยกของสัญญาณ interrupt ในวงรอบคำสั่ง

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

  21. ฟังก์ชัน DMA • กลไก DMA สามารถจัดให้ทำงานได้หลายรูปแบบ เช่น ตัวอย่างแรก Module ทุกตัวใช้บัสหลักร่วมกัน DMA Module ทำหน้าที่เหมือนกับตัวแทนของโปรเซสเซอร์ ใช้การควบคุม I/O ผ่านโปรแกรมควบคุมทำการแลกเปลี่ยนข้อมูลระหว่างหน่วยความจำหลัก และ I/O Module ผ่าน DMA Module การจัดการแบบนี้อาจจะมีค่าใช้จ่ายต่ำ แต่ก็เป็นวิธีที่มีประสิทธิภาพต่ำ เพราะการถ่ายเทข้อมูลแต่ละ word จะเกิดขึ้นในสองวงรอบการทำงาน bus cycle

  22. ฟังก์ชัน DMA • จำนวนวงรองการทำงาน bus cycle สามารถทำให้ลดน้อยลงได้อย่างมาก เมื่อรวมฟังก์ชัน DMA เข้ากับฟังก์ชัน I/O ดังแสดงดังรูป จะมีช่องสื่อสารระหว่าง DMA Module กับ I/O Module อย่างน้อยหนึ่งโมดูลซึ่งแยกต่างหากออกมาจากบัสหลัก การทำงานของ DMA Module อาจกลายเป็นส่วนหนึ่งของ I/O Module หรืออาจะเป็นโมดูลแยกต่างหากที่ควบคุมการทำงาน I/O Module อื่น ๆ แนวทางนี้สามารถขยายความสามารถออกไปได้อีก โดยการเชื่อมต่อ I/O Module เข้ากับ DMA Module ด้วยบัส I/O(I/O bus)

  23. ฟังก์ชัน DMA • การเชื่อมต่อ I/O ใน DMAModule ด้วย I/O bus ดังรูป จะช่วยลดการเชื่อมต่อ I/O ใน DMA Module ลงเหลือเพียงหนึ่งเดียว ในขณะที่ช่วยเพิ่มความสามารถในการขยายขีดความสามารถได้ • สำหรับในกรณีในรูป (b) กับ (c) บัสหลักที่ DMA Module ใช้งานร่วมกับโปรเซสเซอร์และหน่วยความจำนั้น จะถูกใช้โดย DMA Module เพื่อการถ่ายเทข้อมูลกับหน่วยความจำเท่านั้น การแลกเปลี่ยนข้อมูลระหว่าง DMA Module และ I/O Module จะเกิดขึ้นภายนอกบัสหลัก

  24. วิวัฒนาการของฟังก์ชัน I/O • โปรเซสเซอร์ควบคุมการทำงานของอุปกรณ์ต่อพ่วงโดยตรง ซึ่งจะเห็นได้จากอุปกรณ์ที่เรียกว่า microprocessor-controlled devices • หน่วยควบคุมหรือ I/O Module ได้รับการเพิ่มเติมเข้ามาในระบบคอมพิวเตอร์ซีพียูควบคุม I/O โดยใช้โปรแกรมที่ไม่มีอินเทอร์รัพท์เข้ามาช่วย • ขั้นตอนที่สองยังคงถูกนำมาใช้ แต่ได้เพิ่มอินเทอร์รัพท์เข้ามาด้วย ซีพียูไม่ต้องเสียเวลารอคอยการทำงานของ I/O อีกต่อไป ทำให้มีประสิทธิภาพดีขึ้น • I/O Module สามารถติดต่อกับหน่วยความจำได้โดยตรงผ่าน DMA ทำให้สามารถเคลื่อนย้ายบล็อกข้อมูลไปยัง หรือมาจากหน่วยความจำได้ โดยไม่ต้องนำซีพียูเข้ามาเกี่ยวข้อง ยกเว้นตอนเริ่มต้น-สิ้นสุด

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

  26. วิวัฒนาการของฟังก์ชัน I/O • จะเห็นได้ว่าฟังก์ชัน I/O เป็นจำนวนมากถูกประมวลผลได้โดยไม่ต้องการความช่วยเหลือจากซีพียู ซีพียูจะเป็นอิสระจากงานที่เกี่ยวข้องกับ I/O มากยิ่งขึ้น ทำให้มีประสิทธิภาพการทำงานสูงยิ่งขึ้น โดยเฉพาะในวิวัฒนาการข้อ 5 และ 6 ได้เกิดการเปลี่ยนแปลงขึ้นอย่างมาก เมื่อ I/O Module มีความสามารถในการประมวลผลได้ด้วยตัวเอง • สำหรับในวิวัฒนาการข้อ 5I/O Module จะถูกเรียกว่า ช่องสื่อสาร I/O(I/O channel) • สำหรับวิวัฒนาการข้อ 6 จะเรียกว่าโปรเซสเซอร์ I/O (I/O processor)

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

  28. คุณลักษณะช่องสื่อสาร I/O • รูปด้านล่างแสดงวิธีการทำงานสองแบบของช่องสื่อสาร I/O • วิธี Selector channel: ควบคุมอุปกรณ์ความเร็วสูงได้หลายตัว และจะทำการถ่ายทอดข้อมูลจากอุปกรณ์เหล่านี้ครั้งละหนึ่งตัว นั่นคือช่องสื่อสาร I/O จะเลือกอุปกรณ์ขึ้นมาหนึ่งตัว แล้วจึงทำการถ่ายโอนข้อมูล อุปกรณ์แต่ละตัวหรืออุปกรณ์กลุ่มหนึ่งจะถูกควบคุมโดย หน่วยควบคุม(controller) หรือ I/O Module ช่องสื่อสารไอโอจึงเข้ามาควบคุมการทำงานของหน่วยควบคุม I/O แทน ซีพียู

  29. วิวัฒนาการของฟังก์ชัน I/O (a) Selector channel

  30. คุณลักษณะช่องสื่อสาร I/O • วิธี Multiplexer channel: สามารถควบคุมการทำงานของอุปกรณ์หลายตัวได้ในเวลาเดียวกัน สำหรับอุปกรณ์ความเร็วต่ำ จะใช้อุปกรณ์เรียกว่า byte multiplexor เพื่อรับหรือส่งข้อมูลหนึ่งตัวอักษรด้วยความเร็วสูงสุดที่เป็นไปได้ เพื่อทำงานกับอุปกรณ์หลายตัวที่เชื่อมต่ออยู่นั้น เช่น ข้อมูลที่เป็นกลุ่มของตัวอักษรจากอุปกรณ์สามตัวที่ทำงานด้วยความเร็วต่างกัน ดังนั้นกลุ่มข้อมูลสามกลุ่ม คือ A1A2A3A4…, B1B2B3B4…, และ C1C2C3C4… อาจจะถูกรวมกลุ่มกันเป็นลักษณะดังนี้ A1B1C1A2B2C2A3B3C3A4… สำหรับอุปกรณ์ความเร็วสูงจะใช้อุปกรณ์ที่เรียกว่า block multiplexor ทำการสลับตำแหน่งบล็อกข้อมูลจากอุปกรณ์หลายตัว

  31. วิวัฒนาการของฟังก์ชัน I/O (b) Multiplexor channel

  32. ส่วนเชื่อมต่อภายนอก : Firewire • ส่วนเชื่อมต่อกับอุปกรณ์ต่อพ่วงจาก I/O Module จะต้องได้รับการจัดแต่งให้มีความสอดคล้องกับลักษณะการทำงานของอุปกรณ์ต่อพ่วง คุณลักษณะเด่นอย่างหนึ่งของส่วนเชื่อมต่อคือ เป็นการทำงานแบบอนุกรม(serial) หรือแบบขนาน (parallel) • ส่วนเชื่อมต่อแบบขนาน (parallel interface): จะมีสายสัญญาณหลายเส้นเชื่อมต่อระหว่าง I/O Module และอุปกรณ์ต่อพ่วง ทำให้สามารถถ่ายโอนข้อมูลได้ครั้งละหลายบิตพร้อม ๆ กัน ในลักษณะเดียวกันกับที่ทำการส่งข้อมูลทุกบิตของข้อมูลหนึ่ง word ไปยังเป้าหมายผ่าน data bus ภายในเครื่องคอมพิวเตอร์ การเชื่อมต่อแบบนี้ มักจะนำมาใช้เชื่อมต่อกับอุปกรณ์ที่ทำงานได้อย่างรวดเร็ว เช่น Harddisk หรือ Magnetic tape

  33. ส่วนเชื่อมต่อภายนอก : Firewire • ส่วนเชื่อมต่อแบบอนุกรม (serial interface): จะมีสายสัญญาณเพียงเส้นเดียวเท่านั้นที่ใช้สำหรับการถ่ายโอนข้อมูล ซึ่งจะถูกส่งออกไปครั้งละหนึ่งบิตเท่านั้น การเชื่อมต่อแบบนี้มักนำมาใช้เชื่อมต่อกับอุปกรณ์ที่มีความเร็วในการทำงานต่ำ เช่น เครื่องพิมพ์ และจอเทอร์มินอล

  34. ส่วนเชื่อมต่อภายนอก : Firewire • ในการเชื่อต่อทั้งสองแบบ I/OModule จะต้องสื่อสารกับอุปกรณ์ต่อพ่วง โดยทั่วไปการสื่อสารดังกล่าวสำหรับการบันทึกข้อมูล หรือ อ่านข้อมูลมีขั้นตอน ดังนี้ • I/O Module ส่งสัญญาณควบคุม เพื่อร้องขอการส่งข้อมูลไปยังอุปกรณ์ต่อพ่วง • อุปกรณ์ต่อพ่วงจะทำการตอบรับคำร้องขอนั้น • I/O Module ทำการถ่ายโอนข้อมูล • อุปกรณ์ต่อพ่วงส่งสัญญาณตอบรับว่าได้รับข้อมูลเรียบร้อยแล้ว • สิ่งสำคัญสำหรับการทำงานของ I/O Module คือ บัฟเฟอร์ (internal buffer) ที่มีอยู่ภายในอุปกรณ์นั้น ซึ่งใช้ในการเก็บข้อมูลที่จะมีการแลกเปลี่ยนระหว่างอุปกรณ์ต่อพ่วงกับส่วนอื่นของระบบ บัฟเฟอร์ช่วยชดเชยความเร็วในการทำงานที่แตกต่างกันระหว่างบัสหลักกับสายสัญญาณภายนอก

  35. การจัดองค์ประกอบแบบจุด-ต่อ-จุดและแบบหลายจุดการจัดองค์ประกอบแบบจุด-ต่อ-จุดและแบบหลายจุด • แบบจุดต่อจุด (point-to-point): เป็นการนำสายสัญญาณมาใช้เชื่อมต่อระหว่าง I/O Module กับอุปกรณ์ภายนอกเป็นการเฉพาะ โดยไม่ใช้งานร่วมกับอุปกรณ์อื่นใด ในระบบคอมพิวเตอร์ขนาดเล็ก เช่น เครื่องพีซี ได้นำวิธีการเชื่อมต่อแบบจุดต่อจุด มาใช้ในอุปกรณ์หลายชนิด เช่นคีย์บอร์ด เครื่องพิมพ์ และโมเด็มแบบติดตั้งภายนอก เป็นต้น • แบบหลายจุด: กำลังได้รับความนิยมมากยิ่งขึ้น เพื่อนำมาใช้สนับสนุนการทำงานของอุปกรณ์บันทึกข้อมูลปริมาณสูง (harddisk หรือ magnetic tape) และอุปกรณ์สื่อผสม (CD-ROM,DVD,video,audio) ส่วนนี้ทำหน้าที่เสมือนเป็นบัสภายนอก (external bus) ซึ่งมีหน้าที่การทำงานเหมือนกับบัสภายใน ยกตัวอย่างเช่น Firewire Serial bus

  36. FireWire Serial Bus • บัสอนุกรมประสิทธิภาพสูง (FireWire) มีข้อดีเหนือกว่าส่วนติดต่อ I/O แบบเก่าหลายประการ นั่นคือ เป็นระบบที่มีความเร็วสูง ราคาต่ำ และสร้างขึ้นมาใช้งานได้ง่าย ที่จริงแล้วระบบนี้ไม่ได้นำมาใช้งานเฉพาะในระบบคอมพิวเตอร์เท่านั้น แต่ยังสามารถนำไปใช้ในอุปกรณ์ดิจิตอลอื่น ๆ ได้ เช่น กล้องดิจิตอล เครื่องเล่นวิดีโอ และโทรทัศน์ ในระบบเหล่านี้ FireWire ถูกนำมาใช้ในการถ่ายโอนข้อมูล video images ซึ่งมีแหล่งที่มาจากอุปกรณ์ดิจิตอล • วัตถุประสงค์ของระบบ FireWire คือเป็นส่วนติดต่อ I/O แบบเดียวในระบบที่มีส่วนติดต่อแบบง่าย แต่สามารถให้บริการแก่อุปกรณ์จำนวนมากผ่านพอร์ตเดียว ดังนั้น เมาส์ เครื่องพิมพ์เลเซอร์ Harddiskแบบติดตั้งภายนอก สามารถเชื่อมต่อผ่านจุดเชื่อมต่อเพียงจุดเดียว

  37. การจัดโครงสร้าง FireWire • ระบบ FireWire จัดโครงสร้างแบบเรียงตามลำดับ หรือ daisy-chain สามารถเชื่อมต่ออุปกรณ์ได้มากถึง 63 ตัวจากจุดเชื่อมต่อเพียงพอร์ตเดียว นอกจากนั้นบัสของระบบ FireWire ยังสามารถเชื่อมต่อเข้าด้วยกันมากถึง 1022 ระบบโดยใช้สะพานสื่อสาร (bridge) ทำให้ระบบคอมพิวเตอร์สามารถเชื่อมต่อกับอุปกรณ์ต่อพ่วงได้มากเท่าที่ต้องการ • ระบบ FireWire สนับสนุนการเชื่อมต่ออุปกรณ์แบบที่เรียกว่า “hot plugging” นั่นคือผู้ใช้สามารถต่ออุปกรณ์เพิ่มเติม หรือปลดอุปกรณ์บางตัวออกจากสายเชื่อมต่อได้ในทุกเวลาที่ต้องการ โดยไม่จำเป็นจะต้องปิดและเปิดคอมพิวเตอร์เครื่องนั้น • FireWire มีระบบการจัดการอุปกรณ์ได้โดยอัตโนมัติ นั่นคือระบบไม่ต้องกำหนดหมายเลขเฉพาะของอุปกรณ์ทีละตัว หรือไม่ต้องกังวลถึงตำแหน่งของอุปกรณ์ที่ต่ออยู่ในสายเลย ดังแสดงในรูป

  38. การจัดโครงสร้าง FireWire คุณลักษณะที่สำคัญของมาตรฐาน FireWire คือ การกำหนดโปรโตคอล (protocal) ควบคุมการทำงานไว้เป็นสามระดับ (layer) เพื่อให้เครื่องคอมพิว เตอร์ติดต่อกับอุปกรณ์ต่อพ่วง ผ่านทางสายสัญญาณอนุกรม รูปด้านล่านแสดงโครงสร้าง ของโปรโตคอลทั้งสามระดับ

  39. โครงสร้าง protocal ของระบบ FireWire

  40. โครงสร้าง protocal ของระบบ FireWire • Phiysical Layer: ชั้นสื่อสารกายภาพของระบบ FireWire กำหนดทางเลือกต่าง ๆ ของการนำสายสัญญาณมาใช้งานรวมทั้งลักษณะของหัวต่อ(connector) ที่มีคุณสมบัติทางกายภาพและการถ่ายทอดสัญญาณต่างกัน อัตราความเร็วในการส่งข้อมูลอยู่ระหว่าง 25 ถึง 400 Mbsp ชั้นสื่อสารกายภาพเปลี่ยนข้อมูล ให้กลายเป็นสัญญาณไฟฟ้าที่เหมาะสมกับสื่อชนิดที่เลือกชั้นสื่อสารนี้ยังได้ให้บริการในการยึดครองบัสเพื่อรับประกันว่าในเวลาใด ๆ ก็ตาม จะมีอุปกรณ์เพียงตัวเดียวเท่านั้นที่กำลังส่งสัญญาณอยู่

  41. โครงสร้าง protocal ของระบบ FireWire • Link Layer : ชั้นสื่อสารการเชื่อมต่อ กำหนดวิธีการถ่ายเทข้อมูลในรูปแบบแพ็กเกต ซึ่งเป็นไปได้สองแบบ คือ • Asynchronous: ใช้ในการส่งข้อมูลที่มีปริมาณที่ไม่แน่นอนพร้อมกับข้อมูลในชั้นสื่อสารอีกจำนวนหลายไบต์ ข้อมูลจะถูกส่งออกไปในลักษณะของแพ็กเกตไปยังตำแหน่งที่อยู่เฉพาะแห่งหนึ่ง ซึ่งจะได้รับข้อมูลตอบรับ(achnowledgement) กลับมา • Isochronous: ใช้ในการส่งข้อมูลปริมาณไม่แน่นอนในรูปแบบของลำดับของแพ็กเกต ที่มีขนาดคงที่ ที่ถูกส่งออกไปในช่วงเวลาที่คงที่ วิธีการนี้ใช้ในกรณีที่ไม่ต้องการกำหนดตำแหน่งที่อยู่ของผู้รับ และไม่ต้องการข้อมูลตอบรับ

  42. การถ่ายเทข้อมูลแบบอะซิงโครนัส(asynchronous transmission) • การถ่ายเทข้อมูลแบบอะซิงโครนัส กระบวนการส่งข้อมูลหนึ่งแพ็กเกตเรียกว่า subaction ประกอบด้วยห้าช่วงเวลาทำงาน ดังนี้ • Arbitration sequence: เป็นการแลกเปลี่ยนสัญญาณ เพื่อกำหนดสิทธิควบคุมการใช้บัส • Packet transmission: ทุกแพ็กเกตจะมีข้อมูลส่วนหัว(header) ซึ่งประกอบด้วยหมายเลขเฉพาะของผู้ส่งและผู้รับ นอกจากนี้ก็ยังมีข้อมูลเกี่ยวกับชนิดของแพ็กเกตข้อมูล การตรวจสอบความถูกต้องและแก้ไขข้อผิดพลาด และข้อมูลเฉพาะสำหรับแพ็กเกตนั้น ๆ • Acknowledgement gap: ช่วยเวลาหน่วงสำหรับผู้รับที่จะได้รับข้อมูล แปลความหมาย และจัดการส่งข้อมูลตอบรับกลังไปยังผู้ส่ง

  43. การถ่ายเทข้อมูลแบบอะซิงโครนัส(asynchronous transmission) • Acknowledgement : ผู้ที่รับแพ็กเกตข้อมูลจะส่งแพ็กเกตตอบรับ พร้อมด้วยรหัสการทำงานที่บอกให้ทราบว่าผู้รับได้ทำสิ่งใดลงไป • Subaction gap: หมายถึง ช่วงเวลาว่างที่มีไว้เพื่อให้แน่ใจว่าโหนดอื่น ๆ จะไม่เริ่มกระบวนการยึดครองบัสก่อนที่แพ็กเกตตอบรับจะถูกส่งกลับมา เมื่อแพ็กเกตตอบรับถูกส่งออกมา โหนดที่ทำการส่งแพ็กเกตนั้นจะเป็นผู้ที่กำลังควบคุม บัสอยู่ ดังนั้น ถ้าการแลกเปลี่ยนข้อมูลเป็นการกระทำในลักษณะคำร้องขอและการตอบ สนองระหว่างสองโหนดนั้น โหนดตอบรับจะสามารถส่งแพ็กเกตตอบรับออกมาได้ ในทันที โดยไม่ต้องผ่านกระบวนการแย่งชิงบัส แสดงดังรูปด้านล่าง

  44. การถ่ายเทข้อมูลแบบอะซิงโครนัส(asynchronous transmission)

  45. การใช้งานร่วมกันของ asynchronous และ Isochronous • การนำ asynchronous และ isochronous มาใช้งานร่วมกันจะต้องกำหนดให้โหนดหนึ่งทำหน้าที่เป็น cycle master ในทุก ๆ ช่วงเวลาที่กำหนด cycle master จะส่งแพ็กเกต cycle-start ออกมา แพ็กเกตนี้จะบอกให้ทุกโหนดทราบว่าวงรอบ isochronous ได้เริ่มขึ้นแล้ว ในวงรอบนี้โหลดที่ทำงานแบบ isochronous เท่านั้นจะสามารถส่งแพ็กเกตข้อมูลออกมาได้

  46. การส่งข้อมูลแบบ Isochronous • สำหรับอุปกรณ์ที่มักจะสร้างข้อมูลออกมา หรือมักจะนำข้อมูลไปใช้อยู่เสมอ เช่น การ์ดเสียง หรือการ์ดวิดีโอ ก็จะใช้วิธีส่งข้อมูลแบบ isochronous วิธีการนี้รับประกันว่าข้อมูลจะถูกส่งภายในระยะเวลาที่กำหนด และด้วยอัตราความเร็วที่ต้องการ • จากรูป (c) แต่ละ isochronous node จะผลัดกันครอบครองและใช้งานบัส โหนดใดที่ได้สิทธิก็จะส่งแพ็กเกตข้อมูลออกมาทันที ซึ่งจะเป็นแพ็กเก็ตที่ไม่ต้องการแพ็กเกตตอบรับ ทำให้ isochronous โหนดต่อไปสามารถครอบครองบัส และส่งแพ็คเกตออกมาได้อย่างต่อเนื่อง ทำให้เกิดช่องว่างระหว่างแพ็กเกตน้อยมาก ซึ่งช่องว่างเป็นองค์ประกอบหลักของระยะเวลาหน่วงในระบบ ซึ่งเรียกว่าisochronous gap และมีค่าน้อยกว่า subaction gap

  47. การส่งข้อมูลแบบ Isochronous • หลังจากที่ isochronous node ทำการส่งข้อมูลหมดแล้ว บัสจะยังคงว่างอยู่อย่างน้อยก็จนกว่า subaction gap จะเกิดขึ้น ช่องว่างนี้จะเป็นเสมือนสัญญาณที่บอกให้โหนดที่ทำงานแบบ asynchornous ได้ทราบว่าโหนดเหล่านี้สามารถเริ่มต้นแข่งขันแย่งชิงบัสได้แล้ว aysnchornousnode จะสามารถทำงานต่อไปได้เรื่อย ๆ จนกว่าจะถึงวงรอบใหม่ของ isochronous • isochronous แพ็กเกตจะมีข้อมูลเสมือนป้ายชื่อขนาด 8 บิต เพื่อใช้บอกหมายเลขช่องสื่อสารที่ต้องการ ซึ่งนำมาจากการต่อรองระหว่างโหนดสองโหนดที่ต้องการแลกเปลี่ยน isochronous แพ็กเกตระหว่างกัน ข้อมูลส่วนหัวของ isochronous แพ็กเกต มีขนาดสั้นกว่าข้อมูลส่วนหัวของ asynchronous แพ็กเกต ซึ่งจะบอกให้ทราบถึงขนาดข้อมูลและข้อมูลที่ใช้ในการตรวจสอบและแก้ไขข้อมูล

More Related