Transcript Lecture 6
Lecture 6 I/O Organization (ต่อ) ้ I/O ทีใ่ ชกลไก Interrupt ้ ปั ญหาของการควบคุม I/O โดยใชโปรแกรมคื อ ้ โปรเซสเซอร์จะต ้องใชเวลารอนานเพื อ ่ ให ้ I/O Module มีความพร ้อมในการรับหรือสง่ ข ้อมูล ในระหว่างทีร่ อนัน ้ โปรเซสเซอร์ก็จะต ้องคอยตรวจสอบสถานการณ์ ทางานของ I/O Module อยูต ่ ลอดเวลา ทาให ้ ิ ธิภาพโดยรวมของคอมพิวเตอร์ลดลง ประสท วิธแ ี ก ้ปั ญหา คือ ให ้โปรเซสเซอร์สง่ คาสงั่ I/O ไปยัง I/O Module แล ้วจึงไปทางานอืน ่ ทีม ่ ป ี ระโยชน์มากกว่า การรอคอย I/O Module จะขัดจังหวะการทางานของ โปรเซสเซอร์เมือ ่ มีความพร ้อมทีจ ่ ะแลกเปลีย ่ นข ้อมูล โปรเซสเซอร์จะเป็ นตัวจัดการการถ่ายเทข ้อมูล เหมือนเดิม ซงึ่ เมือ ่ ทางานเสร็จแล ้วก็จะกลับไปทางาน กระบวนการ Interrupt Hardware Device controller or other system hardware issues an interrupt Processor finishes execution of current instruction Software Save remainder of process state information Process interrupt Processor signals acknowledgment of interrupt Restore process state information Processor pushes PSW and PC onto control stack Restore old PSW and PC Processor loads new PC value based on interrupt กระบวนการ Interrupt 1. 2. 3. 4. ั ญาณอินเทอร์รัพท์ไปยัง อุปกรณ์ I/O จะสง่ สญ โปรเซสเซอร์ โปรเซสเซอร์ทางานประมวลผลคาสงั่ ในโปรแกรมที่ กาลังทางานอยูจ ่ นเสร็จเรียบร ้อย ก่อนทีจ ่ ะสนองตอบ interrupt โปรเซสเซอร์จะทาการทดสอบ interrupt และสง่ ั ญาณตอบรับไปยังอุปกรณ์ทส ั ญาณ สญ ี่ ง่ สญ interrupt มา การตอบรับจะทาให ้อุปกรณ์นัน ้ หยุดสง่ ั ญาณ interrupt สญ โปรเซสเซอร์จะเตรียมการประมวลผลโปรแกรม สาหรับ interrupt นัน ้ เรียกว่า interrupt routine ซงึ่ เริม ่ ต ้นด ้วยการบันทึกข ้อมูลทีเ่ กีย ่ วข ้องกับการ ประมวลผลโปรแกรมทีก ่ าลังทางานอยูข ่ ณะนัน ้ กระบวนการ Interrupt 5. โปรเซสเซอร์จะดึงคาสงั่ แรกของโปรแกรมสาหรับ interrupt ทีเ่ กิดขึน ้ มาทางานเพือ ่ ตอบสนอง interrupt ในกรณีมค ี าสงั่ interrupt มากกว่า 1 โปรแกรม โปรเซสเซอร์จะต ้องเลือกโปรแกรมหนึง่ ขึน ้ มาทางาน ิ ใจนี้ อาจถูกสง่ มาพร ้อมกับสญ ั ญาณ ซงึ่ ข ้อมูลการตัดสน interrupt แล ้ว หรือโปรเซสเซอร์อาจจะต ้องสง่ ั ญาณไปถามอุปกรณ์ จึงจะสามารถเลือกโปรแกรม สญ ได ้ถูกต ้อง 6. ณ เวลานี้ PC และ PSW ได ้ถูกบันทึกไว ้ในสแต็กของ ระบบเรียบร ้อยแล ้ว อย่างไรก็ตามยังมีข ้อมูลอืน ่ ทีเ่ ป็ น สว่ นหนึง่ ของสถานของโปรแกรมทีก ่ าลังถูกประมวลอยู่ กระบวนการ Interrupt รูปด ้านล่างแสดงโปรแกรมของผู ้ใชถู้ กขัดจังหวะการทางานภายหลังจากคาสงั่ ตาแหน่งที่ N ข ้อมูลทีเ่ ก็บอยูร่ จ ี ส ิ เตอร์ทงั ้ หมดและตาแหน่งของคาสงั่ ทีจ ่ ะถูก ี้ าแหน่งของสแต็กจะ ประมวลผลในลาดับต่อไป (N+1) จะถูกเก็บไว ้ในสแต็ก ตัวชต ถูกปรับค่าใหม่ และ PC จะถูกบันทึกตาแหน่งของคาสงั่ แรกของโปรแกรมสาหรับ interrupt T-M T-M Y Control stack N+1 Control stack T N+1 T Y+L Program counter Y Program counter Start Y Start Interrupt Service routine Y+L Return Interrupt Service routine Y+L General registers N User’s program Main memory General registers T T-M Stack pointer Stack pointer N Processor N+1 Return Processor N+1 User’s program T-M (a) Interrupt occurs after instruction at location N T (b) Return from interrupt Main memory กระบวนการ Interrupt 7. โปรแกรมนีก ้ ็จะเริม ่ ทางานต่อไป ด ้วยการตรวจสอบ สถานะทีเ่ กีย ่ วข ้องกับการทางาน I/O ทีต ่ ้องการ 8. เมือ ่ โปรแกรม interrupt ทางานเสร็จแล ้ว ก็จะปิ ดท ้าย ด ้วยการคืนค่าให ้กับรีจส ิ เตอร์ในโปรเซสเซอร์ทน ี่ ามา จากสแต็กของระบบ 9. การทางานสว่ นสุดท ้ายคือ การคืนค่าให ้แก่ PSW และ PC ทีน ่ ามาจากสแต็กระบบ ทาให ้คาสงั่ ต่อไปทีจ ่ ะถูก ประมวลผลนั น ้ ถูกอ่านมาจากคาสงั่ ในตาแหน่งต่อไป ของโปรแกรมทีถ ่ ก ู ขัดจังหวะการทางานก่อนหน ้านี้ ประเด็นในการออกแบบ ้ ในการสร ้างระบบ I/O ทีใ่ ชกลไก interrupt นัน ้ มักเกิด ปั ญหาหลักสองประการ คือ เนือ ่ งจากว่าอุปกรณ์ I/O และ I/O Module นัน ้ มีอยูเ่ ป็ น จานวนมาก โปรเซสเซอร์จะใชวิ้ ธก ี ารใดในการตรวจสอบ ั ญาณอินเทอร์รัพท์ ว่าอุปกรณ์ I/O ใดเป็ นตัวทีส ่ ง่ สญ ออกมา ้ ถ ้าเกิดมีอน ิ เทอร์รัพท์เกิดขึน ้ ซอนกั น โปรเซสเซอร์จะติด ิ ใจอย่างไร สน โดยทั่วไปมีวธิ ก ี ารแยกแยะ หรือการแสดงตนของ อุปกรณ์ I/O อยู่ 4 วิธ ี ้ ั ญาณ interrupt หลายเสน้ (Multiple การใชสายส ญ interrupt lines) การทาซอฟแวร์โพล (Software poll) การต่อพ่วงอุปกรณ์เรียงตามลาดับ หรือ ฮาร์ดแวร์โพล ประเด็นในการออกแบบ ั ญาณ Multiple interrupt lines : การจัดให ้มีสายสญ หลายเสน้ วิธน ี แ ี้ ก ้ปั ญหาได ้เป็ นอย่างดี แต่ก็สร ้างปั ญหา ในทางปฏิบต ั ข ิ น ึ้ มาคือ ในความเป็ นจริงนักออกแบบ ั ญาณมากกว่า คอมพิวเตอร์ไม่สามารถจะจัดหาสายสญ ื่ มต่อทีต สอง – สามเสน้ หรือมีขาเชอ ่ วั โปรเซสเซอร์เป็ น จานวนมากกว่าทีเ่ ป็ นอยูป ่ ั จจุบน ั ได ้ ั ญาณ Software poll : เมือ ่ โปรเซสเซอร์ตรวจพบสญ ้ interrupt ก็จะเรียกใชโปรแกรมส าหรับจัดการ interrupt (general interrupt-service routine) ซงึ่ จะทาการ สอบถามอุปกรณ์ I/O ทีละตัวเพือ ่ หาตัวทีเ่ ป็ นต ้นกาเนิด ั ญาณ interrupt นัน ของสญ ้ การสอบถามอาจอยูใ่ นรูป ่ TESTI/O ในกรณีนโี้ ปรเซสเซอร์ ของคาสงั่ เฉพาะ เชน ประเด็นในการออกแบบ Software poll : วิธก ี ารทีเ่ ป็ นไปได ้อีกทางหนึง่ คือ I/O Module แต่ละตัวจะเก็บรีจส ิ เตอร์แสดงสถานะที่ สามารถกาหนดตาแหน่งทีอ ่ ยูข ่ องอุปกรณ์ I/O ได ้ โปรเซสเซอร์ก็เพียงแต่อา่ นข ้อมูลจากรีจส ิ เตอร์เหล่านี้ ั ญาณ interrupt ได ้ เมือ ซงึ่ จะรู ้ต ้นกาเนิดของสญ ่ ทราบ ั แล ้ว โปรเซสเซอร์ก็จะเรียกโปรแกรม ตาแหน่งทีแ ่ น่ชด interrupt สาหรับอุปกรณ์นัน ้ มาประมวลผล ข ้อด ้อย ของวิธก ี ารทา software poll คือจะต ้อง ี เวลาพอสมควรกว่าทีจ เสย ่ ะทราบตาแหน่งทีอ ่ ยูข ่ อง ั ญาณ interrupt มา อุปกรณ์ I/O ทีส ่ ง่ สญ ประเด็นในการออกแบบ Hardware poll : จะทาหน ้าทีเ่ สมือนการทาโพลโดย ้ ั ญาณ interrupt ฮาร์ดแวร์ อุปกรณ์ทก ุ ตัวจะใชสายส ญ ั ญาณตอบรับ interrupt จะถูกต่อพ่วง ร่วมกัน สายสญ เรียงกันตามลาดับไปยัง I/O Module เมือ ่ โปรเซสเซอร์ ั ญาณ interrupt ก็จะสง่ สญ ั ญาณตอบรับ ตรวจพบสญ ั ญาณตอบรับนีจ interrupt ออกมา สญ ้ ะถูกสง่ ผ่าน อุปกรณ์ I/O ทีละตัว ตัง้ แต่ตวั แรกทีอ ่ ยูล ่ าดับแรกใน ั ญาณไปจนกระทั่งไปถึงอุปกรณ์ตวั ทีส สายสญ ่ ง่ ั ญาณ interrupt ออกมา อุปกรณ์นัน สญ ้ มักจะตอบรับ ด ้วยการสง่ ข ้อมูลขนาดหนึง่ word ออกมาใน data bus ข ้อมูล word นีม ้ ักถูกเรียกว่า vector ซงึ่ จะเป็ นตาแหน่ง ทีอ ่ ยูห ่ รือหมายเลขเฉพาะของอุปกรณ์ I/O นัน ้ โปรเซสเซอร์จะใชข้ ้อมูลนีใ้ นการเรียกโปรแกรม interrupt ของอุปกรณ์ตวั นัน ้ ขึน ้ มาประมวลผล เทคนิคนี้ ประเด็นในการออกแบบ Bus arbitration : การครอบครองบัสนี้ I/O Module จะ ้ เริม ่ ต ้นการทางานด ้วยการพยายามยึดครองการใชงาน ี ก่อน จากนั น ั ญาณ interrupt บัสให ้ได ้เสย ้ จึงค่อยสง่ สญ ออกไป วิธก ี ารนีท ้ าให ้แน่ใจได ้ว่า จะมี I/O Module ั ญาณ เพียง Module เดียวเท่านั น ้ ทีจ ่ ะสามารถสง่ สญ interrupt ออกไปได ้ในแต่ละครัง้ เมือ ่ โปรเซสเซอร์ ั ญาณ interrupt และตอบรับมาทาง ตรวจพบสญ ั ญาณตอบรับ I/O Module ทีเ่ ป็ นผู ้ยึดครองบัส สายสญ ก็จะสง่ ข ้อมูล vector ของตนเองกลับมา ี ของ I/O ทีใ่ ช ้ interrupt และ I/O ข ้อเสย ้ ทีใ่ ชโปรแกรม ั การ การควบคุม I/O โดยกลไก interrupt ยังต ้องอาศย ทางานของโปรเซสเซอร์ในการถ่ายเทข ้อมูลระหว่าง หน่วยความจาและ I/O Module นั่นคือข ้อมูลทัง้ หมด ไม่วา่ จะเป็ นการอ่านหรือบันทึก จะต ้องเดินทางผ่าน ิ ธิภาพตา่ โปรเซสเซอร์เสมอ ทาให ้ เกิดประสท เนือ ่ งจาก อัตราการถ่ายเทข ้อมูล จะถูกจากัดโดยความเร็วที่ โปรเซสเซอร์สามารถทดสอบและให ้บริการแก่อป ุ กรณ์ นัน ้ ๆ ได ้ โปรเซสเซอร์จะถูกดึงให ้มาทางานในระหว่างการถ่ายเท ข ้อมูล I/O โปรเซสเซอร์จะต ้องการประมวลผลคาสงั่ จานวนหนึง่ สาหรับการถ่ายเทข ้อมูล I/O แต่ละครัง้ การเข ้าถึงหน่วยความจาโดยตรง (DMA) เนือ ่ งจากการ I/O ทีใ่ ช ้ interrupt ชว่ ยให ้โปรเซสเซอร์ มีเวลาว่างมากขึน ้ แต่ก็ทาให ้การถ่ายเทข ้อมูลใช ้ เวลานานขึน ้ น ่ น I/O ทีใ่ ชโปรแกรมควบคุ ้ ้ สว ม จะทาให ้ต ้องใชงาน ็ ต์ ซงึ่ สามารถเคลือ โปรเซสเซอร์ 100 เปอร์เซน ่ นย ้าย ี คือ โปรเซสเซอร์ ข ้อมูลได ้ด ้วยความเร็วสูง แต่มข ี ้อเสย ไม่สามารถทางานอืน ่ ได ้ ทัง้ สองวิธท ี าให ้เกิดผลเสยี ต่อการทางานของ โปรเซสเซอร์และอัตราการถ่ายเทข ้อมูล ในการถ่ายเท ิ ธิภาพมากกว่า ข ้อมูลปริมาณมาก วิธก ี ารทีม ่ ป ี ระสท ั DMA ฟั งก์ชน วิธก ี ารแบบ DMA จะใช ้ Module เพิม ่ เติมใน system bus โมดูล DMA ดังรูปด ้านล่าง มีความสามารถในการ เลียนแบบการทางานของโปรเซสเซอร์ ซงึ่ อันทีจ ่ ริงก็ เป็ นการดึงการควบคุมการทางานมาจากโปรเซสเซอร์ เพือ ่ ให ้สามารถถ่ายเทข ้อมูลในหน่วยความจาหลักผ่าน system bus ้ สได ้เฉพาะในจังหวะที่ Module DMA จะใชบั ้ โปรเซสเซอร์ไม่ต ้องการใชงาน เพือ ่ ไม่ให ้ขัดขวางการ ทางานของโปรเซสเซอร์ มิฉะนัน ้ ก็จะเป็ นการบังคับให ้ โปรเซสเซอร์หยุดทางานชวั่ คราว วิธก ี ารอาจนีเ้ รียกว่า การแย่งชงิ วงรอบทางาน (cycle stealing) หรือการ แย่งชงิ วงรอบการทางานของบัส (bus cycle) ั DMA ฟั งก์ชน เมือ ่ โปรเซสเซอร์ต ้องการอ่านหรือบันทึกข ้อมูลหนึง่ บล็อก คาสงั่ จะถูกสง่ ไปยัง DMA Module ซงึ่ ประกอบด ้วยข ้อมูลดังต่อไปนี้ ้ ั ญาณ เป็ นการอ่านหรือบันทึกข ้อมูล โดยการใชสายส ญ ื่ มต่อระหว่าง สาหรับการอ่านหรือบันทึกข ้อมูลทีเ่ ชอ โปรเซสเซอร์กบ ั DMA Module ตาแหน่งทีอ ่ ยูข ่ องอุปกรณ์ I/O ทีเ่ กีย ่ วข ้องจะถูกสง่ ผ่าน ทาง data bus ตาแหน่งเริม ่ ต ้นของหน่วยความจาทีจ ่ ะอ่านหรือบันทึก ข ้อมูล จะถูกสง่ ผ่านสาย data bus หรือถูกจัดเก็บไว ้ใน รีจส ิ เตอร์แสดงตาแหน่งทีอ ่ ยู่ (address register) ภายใน I/O Module ั DMA ฟั งก์ชน ่ ทาการ จากนัน ้ โปรเซสเซอร์ก็จะหันไปทางานอืน ่ เชน ประมวลผลโปรแกรมอืน ่ เนือ ่ งจากได ้โอนการทางานเกีย ่ วกับ I/O มาให ้กับ I/O Module แล ้ว I/O Module จะถ่ายเทข ้อมูลทัง้ บล็อก ครัง้ ละหนึง่ word ไปยังหรือมาจากหน่วยความจาหลัก โดยทีข ่ ้อมูลจะไม่ถก ู สง่ ผ่านโปรเซสเซอร์เลย เมือ ่ การ ิ้ แล ้ว DMA Module จึงสง่ ถ่ายเทข ้อมูลเสร็จสน ั ญาณ interrupt ไปยังโปรเซสเซอร์ จะเห็นได ้ว่า สญ โปรเซสเซอร์เข ้ามาเกีย ่ วข ้องเฉพาะตอนเริม ่ ต ้น และตอ ิ้ สุดของการทางาน I/O เท่านัน สน ้ ั DMA ฟั งก์ชน Data count Data lines Data register Address lines Address register DMA request DMA acknowledge Interrupt Read Write Control logic ไดอะแกรมแบบบล็อ สาหรับ DMA โดย ทั่วไป ั DMA ฟั งก์ชน Time Instruction cycle Processor cycle Processor cycle Processor cycle Processor cycle Processor cycle Processor cycle Fetch instruction Decode instruction Fetch operand Execute instruction Store result Process interrupt DMA breakpoint Interrupt breakpoint DMA และจุดแยกของสัญญาณ interrupt ในวงรอบคาสง่ ั DMA ฟั งก์ชน จากรูปด ้านบน แสดงให ้เห็นวงรอบการทาคาสงั่ (instruction cycle) ทีโ่ ปรเซสเซอร์จะถูกบังคับให ้หยุด ทางานชวั่ คราว ในแต่ละกรณีโปรเซสเซอร์จะถูกบังคับ ให ้หยุดทางานเมือ ่ โปรเซสเซอร์ต ้องการใชบั้ ส DMA Module จึงถ่ายเทข ้อมูลหนึง่ word และสง่ คืนการ ควบคุมให ้แก่โปรเซสเซอร์ ั เกตว่าการทางานนีไ สง ้ ม่ใช ่ interrupt เพราะ โปรเซสเซอร์ไม่ต ้องทาการบันทึกข ้อมูลไว ้ในสแต็ก ของระบบ โปรเซสเซอร์เพียงแค่หยุดการทางานไป หนึง่ วงรอบคาสงั่ เท่านั น ้ ผลกระทบทีเ่ กิดขึน ้ โดยรวมคือ เป็ นการทาให ้ ้ โปรเซสเซอร์ทางานชาลง อย่างไรก็ตาม สาหรับการ ถ่ายเทข ้อมูลหลาย word พร ้อมกัน วิธก ี ารนีจ ้ ะมี ั DMA ฟั งก์ชน ่ กลไก DMA สามารถจัดให ้ทางานได ้หลายรูปแบบ เชน ตัวอย่างแรก Module ทุกตัวใชบั้ สหลักร่วมกัน DMA Module ้ ทาหน ้าทีเ่ หมือนกับตัวแทนของโปรเซสเซอร์ ใชการควบคุ ม I/O ผ่านโปรแกรมควบคุมทาการแลกเปลีย ่ นข ้อมูลระหว่าง หน่วยความจาหลัก และ I/O Module ผ่าน DMA Module การ ิ ธิภาพ จัดการแบบนีอ ้ าจจะมีคา่ ใชจ่้ ายตา่ แต่ก็เป็ นวิธท ี ม ี่ ป ี ระสท ตา่ เพราะการถ่ายเทข ้อมูลแต่ละ word จะเกิดขึน ้ ในสอง วงรอบการทางาน bus cycle Processor DMA I/O …. (a) Single-bus, detached DMA I/O Memory ั 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) Processor DMA DMA Memory I/O I/O (b) Single-bus, integrated DMA-I/O I/O ั DMA ฟั งก์ชน ื่ มต่อ I/O ใน DMA Module ด ้วย I/O bus ดังรูป จะชว่ ยลด การเชอ ื่ มต่อ I/O ใน DMA Module ลงเหลือเพียงหนึง่ เดียว การเชอ ในขณะทีช ่ ว่ ยเพิม ่ ความสามารถในการขยายขีดความสามารถได ้ System bus Processor DMA Memory I/O bus I/O I/O I/O (c) I/O bus ้ สาหรับในกรณีในรูป (b) กับ (c) บัสหลักที่ DMA Module ใชงาน ้ ร่วมกับโปรเซสเซอร์และหน่วยความจานัน ้ จะถูกใชโดย DMA Module เพือ ่ การถ่ายเทข ้อมูลกับหน่วยความจาเท่านัน ้ การ แลกเปลีย ่ นข ้อมูลระหว่าง DMA Module และ I/O Module จะ เกิดขึน ้ ภายนอกบัสหลัก ั I/O วิวฒ ั นาการของฟั งก์ชน 1. 2. 3. 4. โปรเซสเซอร์ควบคุมการทางานของอุปกรณ์ตอ ่ พ่วง โดยตรง ซงึ่ จะเห็นได ้จากอุปกรณ์ทเี่ รียกว่า microprocessor-controlled devices หน่วยควบคุมหรือ I/O Module ได ้รับการเพิม ่ เติมเข ้า ี ย มาในระบบคอมพิวเตอร์ ซพ ี ค ู วบคุม I/O โดยใช ้ โปรแกรมทีไ่ ม่มอ ี น ิ เทอร์รัพท์เข ้ามาชว่ ย ขัน ้ ตอนทีส ่ องยังคงถูกนามาใช ้ แต่ได ้เพิม ่ อินเทอร์รัพท์ ี ย ี เวลารอคอยการทางานของ เข ้ามาด ้วย ซพ ี ไู ม่ต ้องเสย ิ ธิภาพดีขน I/O อีกต่อไป ทาให ้มีประสท ึ้ I/O Module สามารถติดต่อกับหน่วยความจาได ้ โดยตรงผ่าน DMA ทาให ้สามารถเคลือ ่ นย ้ายบล็อก ข ้อมูลไปยัง หรือมาจากหน่วยความจาได ้ โดยไม่ต ้อง ั I/O วิวฒ ั นาการของฟั งก์ชน 5. 6. I/O Module ได ้รับการขยายขีดความสามารถ ทาให ้ ี เอง ซงึ่ มีชด กลายเป็ นโปรเซสเซอร์เสย ุ คาสงั่ ทีไ่ ด ้รับ ี ย การพัฒนาขึน ้ มาสาหรับงาน I/O โดยเฉพาะ ซพ ี ส ู งั่ การให ้โปรเซสเซอร์ I/O ประมวลผลคาสงั่ I/O program ในหน่วยความจา โปรเซสเซอร์ I/O จะดึง ี ย และประมวลผลคาสงั่ เหล่านีโ้ ดยทีซ ่ พ ี ไู ม่ต ้องเข ้ามา ี ย ชว่ ยเหลือเลย กระบวนการนีช ้ ว่ ยให ้ซพ ี ู สามารถออก คาสงั่ I/O เป็ นชุดโดยไม่ต ้องเข ้ามาทางานใด นอกจาก เมือ ่ คาสงั่ ทัง้ ชุดนีไ ้ ด ้ทาสาเร็จแล ้วเท่านัน ้ I/O Module มีหน่วยความจาเป็ นของตนเอง หรือ I/O Module กลายเป็ นคอมพิวเตอร์ขนาดเล็ก ทาให ้ สามารถประมวลผลงาน I/O ขนาดใหญ่ได ้โดยไม่ต ้อง ้ ี ั I/O วิวฒ ั นาการของฟั งก์ชน ั I/O เป็ นจานวนมากถูกประมวลผล จะเห็นได ้ว่าฟั งก์ชน ี ย ี ย ได ้โดยไม่ต ้องการความชว่ ยเหลือจากซพ ี ู ซพ ี จ ู ะ เป็ นอิสระจากงานทีเ่ กีย ่ วข ้องกับ I/O มากยิง่ ขึน ้ ทาให ้มี ิ ธิภาพการทางานสูงยิง่ ขึน ประสท ้ โดยเฉพาะใน วิวัฒนาการข ้อ 5 และ 6 ได ้เกิดการเปลีย ่ นแปลงขึน ้ อย่างมาก เมือ ่ I/O Module มีความสามารถในการ ประมวลผลได ้ด ้วยตัวเอง สาหรับในวิวัฒนาการข ้อ 5 I/O Module จะถูกเรียกว่า ่ งสอ ื่ สาร I/O(I/O channel) ชอ สาหรับวิวัฒนาการข ้อ 6 จะเรียกว่า โปรเซสเซอร์ I/O (I/O processor) ่ งสอ ื่ สาร I/O คุณลักษณะชอ ่ งสอ ื่ สาร I/O (I/O channel) เกิดขึน ชอ ้ จากการขยาย ขีดความสามารถของสถาปั ตยกรรม DMA ั่ I/O channel มีความสามารถในการประมวลผลคาสง I/O ซงึ่ จะถูกควบคุมโดยสมบูรณ์ ่ นี้ ซพ ี ย ในระบบคอมพิวเตอร์ทม ี่ อ ี ป ุ กรณ์เชน ี จ ู งึ ไม่ได ้ เป็ นผู ้ประมวลผลคาสงั่ I/O คาสงั่ I/O จะถูกเก็บไว ้ใน หน่วยความจาเพือ ่ รอให ้โปรเซสเซอร์พเิ ศษใน I/O channel เป็ นผู ้ทาการประมวลผล ี ย ซพ ี เู พียงแต่ออกคาสงั่ กระตุ ้นการถ่ายเทข ้อมูล I/O ่ งสอ ื่ สาร I/O ทาการประมวลผลคาสงั่ ด ้วยการสงั่ ให ้ชอ ในหน่วยความจา โปรแกรมคาสงั่ จะให ้รายละเอียด เกีย ่ วกับอุปกรณ์ทเี่ กีย ่ วข ้อง พืน ้ ทีใ่ นหน่วยความจาทีจ ่ ะ ่ งสอ ื่ สาร I/O คุณลักษณะชอ รูปด ้านล่างแสดงวิธก ี ารทางานสองแบบของ ่ งสอ ื่ สาร I/O ชอ วิธ ี Selector channel: ควบคุมอุปกรณ์ความเร็วสูงได ้ หลายตัว และจะทาการถ่ายทอดข ้อมูลจากอุปกรณ์ ่ งสอ ื่ สาร I/O จะเลือก เหล่านีค ้ รัง้ ละหนึง่ ตัว นั่ นคือชอ อุปกรณ์ขน ึ้ มาหนึง่ ตัว แล ้วจึงทาการถ่ายโอนข ้อมูล อุปกรณ์แต่ละตัวหรืออุปกรณ์กลุม ่ หนึง่ จะถูกควบคุมโดย หน่วยควบคุม(controller) หรือ I/O Module ่ งสอ ื่ สารไอโอจึงเข ้ามาควบคุมการทางานของหน่วย ชอ ี ย ควบคุม I/O แทน ซพ ี ู ั I/O วิวฒ ั นาการของฟั งก์ชน Data and Address channel to main memory Selector channel Control signal Path to CPU I/O controller I/O controller (a) Selector channel ... ่ งสอ ื่ สาร I/O คุณลักษณะชอ วิธ ี Multiplexer channel: สามารถควบคุมการทางาน ของอุปกรณ์หลายตัวได ้ในเวลาเดียวกัน สาหรับ อุปกรณ์ความเร็วตา่ จะใชอุ้ ปกรณ์เรียกว่า byte multiplexor เพือ ่ รับหรือสง่ ข ้อมูลหนึง่ ตัวอักษรด ้วย ความเร็วสูงสุดทีเ่ ป็ นไปได ้ เพือ ่ ทางานกับอุปกรณ์ ื่ มต่ออยูน ่ ข ้อมูลทีเ่ ป็ นกลุม หลายตัวทีเ่ ชอ ่ ัน ้ เชน ่ ของ ตัวอักษรจากอุปกรณ์สามตัวทีท ่ างานด ้วยความเร็ว ต่างกัน ดังนัน ้ กลุม ่ ข ้อมูลสามกลุม ่ คือ A1A2A3A4…, B1B2B3B4…, และ C1C2C3C4… อาจจะถูก รวมกลุม ่ กันเป็ นลักษณะดังนี้ A1B1C1A2B2C2A3B3C3A4… สาหรับอุปกรณ์ ความเร็วสูงจะใชอุ้ ปกรณ์ทเี่ รียกว่า block multiplexor ั I/O วิวฒ ั นาการของฟั งก์ชน Data and Address channel to main memory Multiplexor channel Control signal path to CPU ... I/O controller I/O controller I/O controller I/O controller (b) Multiplexor channel ื่ มต่อภายนอก : Firewire สว่ นเชอ ื่ มต่อกับอุปกรณ์ตอ สว่ นเชอ ่ พ่วงจาก I/O Module จะต ้องได ้รับการจัดแต่งให ้มีความสอดคล ้องกับ ลักษณะการทางานของอุปกรณ์ตอ ่ พ่วง คุณลักษณะ ื่ มต่อคือ เป็ นการทางาน เด่นอย่างหนึง่ ของสว่ นเชอ แบบอนุกรม(serial) หรือแบบขนาน (parallel) ่ ส่วนเชือมต่ อแบบขนาน (parallel interface) : จะมี ั ญาณหลายเสนเช ้ อ ื่ มต่อระหว่าง I/O Module สายสญ และอุปกรณ์ตอ ่ พ่วง ทาให ้สามารถถ่ายโอนข ้อมูลได ้ ครัง้ ละหลายบิตพร ้อม ๆ กัน ในลักษณะเดียวกันกับที่ ทาการสง่ ข ้อมูลทุกบิตของข ้อมูลหนึง่ word ไปยัง เป้ าหมายผ่าน data bus ภายในเครือ ่ งคอมพิวเตอร์ ื่ มต่อแบบนี้ มักจะนามาใชเช ้ อ ื่ มต่อกับอุปกรณ์ การเชอ ื่ มต่อภายนอก : Firewire สว่ นเชอ ่ ส่วนเชือมต่ อแบบอนุ กรม (serial interface) : จะมี ั ญาณเพียงเสนเดี ้ ยวเท่านั น สายสญ ้ ทีใ่ ชส้ าหรับการถ่าย โอนข ้อมูล ซงึ่ จะถูกสง่ ออกไปครัง้ ละหนึง่ บิตเท่านัน ้ ื่ มต่อแบบนีม ้ อ ื่ มต่อกับอุปกรณ์ทม การเชอ ้ ักนามาใชเช ี่ ี ่ เครือ ความเร็วในการทางานตา่ เชน ่ งพิมพ์ และจอ To Buffer To system เทอร์มน peripheral ิ อล bus I/O module (a) Parallel I/O To system bus Buffer (b) Serial I/O To peripheral ื่ มต่อภายนอก : Firewire สว่ นเชอ ื่ ต่อทัง้ สองแบบ I/O Module จะต ้องสอ ื่ สารกับ ในการเชอ ื่ สารดังกล่าวสาหรับการ อุปกรณ์ตอ ่ พ่วง โดยทั่วไปการสอ บันทึกข ้อมูล หรือ อ่านข ้อมูลมีขน ั ้ ตอน ดังนี้ 1. 2. 3. 4. ั ญาณควบคุม เพือ I/O Module สง่ สญ ่ ร ้องขอการสง่ ข ้อมูล ไปยังอุปกรณ์ตอ ่ พ่วง อุปกรณ์ตอ ่ พ่วงจะทาการตอบรับคาร ้องขอนัน ้ I/O Module ทาการถ่ายโอนข ้อมูล ั ญาณตอบรับว่าได ้รับข ้อมูลเรียบร ้อย อุปกรณ์ตอ ่ พ่วงสง่ สญ แล ้ว สงิ่ สาคัญสาหรับการทางานของ I/O Module คือ บัฟเฟอร์ (internal buffer) ทีม ่ อ ี ยูภ ่ ายในอุปกรณ์นัน ้ ซงึ่ ้ ใชในการเก็ บข ้อมูลทีจ ่ ะมีการแลกเปลีย ่ นระหว่างอุปกรณ์ การจัดองค์ประกอบแบบจุด-ต่อ-จุด และแบบหลายจุด แบบจุดต่อจุด (point-to-point) : เป็ นการนา ั ญาณมาใชเช ้ อ ื่ มต่อระหว่าง I/O Module กับ สายสญ ้ อุปกรณ์ภายนอกเป็ นการเฉพาะ โดยไม่ใชงานร่ วมกับ ่ อุปกรณ์อน ื่ ใด ในระบบคอมพิวเตอร์ขนาดเล็ก เชน ื่ มต่อแบบจุดต่อจุด มาใชใน ้ เครือ ่ งพีซ ี ได ้นาวิธก ี ารเชอ ่ คียบ อุปกรณ์หลายชนิด เชน ์ อร์ด เครือ ่ งพิมพ์ และ โมเด็มแบบติดตัง้ ภายนอก เป็ นต ้น แบบหลายจุด : กาลังได ้รับความนิยมมากยิง ่ ขึน ้ เพือ ่ ้ บสนุนการทางานของอุปกรณ์บน นามาใชสนั ั ทึกข ้อมูล ปริมาณสูง (harddisk หรือ magnetic tape) และ ื่ ผสม (CD-ROM,DVD,video,audio) สว่ นนี้ อุปกรณ์สอ ทาหน ้าทีเ่ สมือนเป็ นบัสภายนอก (external bus) ซงึ่ มี FireWire Serial Bus บัสอนุ กรมประสิทธิภาพสู ง (FireWire) มีข ้อดี เหนือกว่าสว่ นติดต่อ I/O แบบเก่าหลายประการ นั่นคือ เป็ นระบบทีม ่ ค ี วามเร็วสูง ราคาตา่ และสร ้างขึน ้ มาใช ้ ้ งานได ้ง่าย ทีจ ่ ริงแล ้วระบบนีไ ้ ม่ได ้นามาใชงานเฉพาะ ้ ในระบบคอมพิวเตอร์เท่านัน ้ แต่ยังสามารถนาไปใชใน ่ กล ้องดิจต อุปกรณ์ดจิ ต ิ อลอืน ่ ๆ ได ้ เชน ิ อล เครือ ่ งเล่น วิดโี อ และโทรทัศน์ ในระบบเหล่านี้ FireWire ถูก ้ นามาใชในการถ่ ายโอนข ้อมูล video images ซงึ่ มี แหล่งทีม ่ าจากอุปกรณ์ดจิ ต ิ อล วัตถุประสงค์ของระบบ FireWire คือเป็ นสว่ นติดต่อ I/O แบบเดียวในระบบทีม ่ ส ี ว่ นติดต่อแบบง่าย แต่สามารถ การจัดโครงสร ้าง FireWire ระบบ FireWire จัดโครงสร ้างแบบเรียงตามลาดับ หรือ ื่ มต่ออุปกรณ์ได ้มากถึง 63 ตัว daisy-chain สามารถเชอ ื่ มต่อเพียงพอร์ตเดียว นอกจากนัน จากจุดเชอ ้ บัสของ ื่ มต่อเข ้าด ้วยกันมากถึง ระบบ FireWire ยังสามารถเชอ ื่ สาร (bridge) ทาให ้ระบบ 1022 ระบบโดยใช ้ สะพานสอ ื่ มต่อกับอุปกรณ์ตอ คอมพิวเตอร์สามารถเชอ ่ พ่วงได ้มาก เท่าทีต ่ ้องการ ื่ มต่ออุปกรณ์แบบที่ ระบบ FireWire สนั บสนุนการเชอ ้ เรียกว่า “hot plugging” นั่ นคือผู ้ใชสามารถต่ ออุปกรณ์ ื่ มต่อ เพิม ่ เติม หรือปลดอุปกรณ์บางตัวออกจากสายเชอ ได ้ในทุกเวลาทีต ่ ้องการ โดยไม่จาเป็ นจะต ้องปิ ดและเปิ ด คอมพิวเตอร์เครือ ่ งนัน ้ FireWire มีระบบการจัดการอุปกรณ์ได ้โดยอัตโนมัต ิ นั่ น คือระบบไม่ต ้องกาหนดหมายเลขเฉพาะของอุปกรณ์ทล ี ะ การจัดโครงสร ้าง FireWire Stereo interface CD-ROM Magnetic disk CPU Digital camera Scanner Printer คุณลักษณะทีส ่ าคัญของมาตรฐาน FireWire คือ การกาหนดโ (protocal) ควบคุมการทางานไว ้เป็ นสามระดับ (layer) เพือ ่ ใหเ ั ญาณอนุกรม ร เตอร์ตด ิ ต่อกับอุปกรณ์ตอ ่ พ่วง ผ่านทางสายสญ ของโปรโตคอลทัง้ สามระดับ โครงสร ้าง protocal ของระบบ FireWire Serial bus management Transaction layer (read,write,lock) Asynchronous Isochronous Link layer Packet transmitter Packet receiver Cycle control Physical layer Arbitration Data resynch Encode/decode Connectors/media Connection state Signal levels โครงสร ้าง protocal ของระบบ FireWire ั ้ สอ ื่ สารกายภาพของระบบ Phiysical Layer: ชน FireWire กาหนดทางเลือกต่าง ๆ ของการนา ั ญาณมาใชงานรวมทั ้ สายสญ ง้ ลักษณะของหัวต่อ (connector) ทีม ่ ค ี ณ ุ สมบัตท ิ างกายภาพและการ ั ญาณต่างกัน อัตราความเร็วในการสง่ ถ่ายทอดสญ ั ้ สอ ื่ สาร ข ้อมูลอยูร่ ะหว่าง 25 ถึง 400 Mbsp ชน ั ญาณไฟฟ้ าที่ กายภาพเปลีย ่ นข ้อมูล ให ้กลายเป็ นสญ ื่ ชนิดทีเ่ ลือกชน ั ้ สอ ื่ สารนีย เหมาะสมกับสอ ้ ังได ้ให ้บริการ ในการยึดครองบัสเพือ ่ รับประกันว่าในเวลาใด ๆ ก็ตาม ั ญาณอยู่ จะมีอป ุ กรณ์เพียงตัวเดียวเท่านั น ้ ทีก ่ าลังสง่ สญ โครงสร ้าง protocal ของระบบ FireWire ั ้ สอ ื่ สารการเชอ ื่ มต่อ กาหนดวิธก Link Layer : ชน ี าร ถ่ายเทข ้อมูลในรูปแบบแพ็กเกต ซงึ่ เป็ นไปได ้สองแบบ คือ ้ Asynchronous: ใชในการส ง่ ข ้อมูลทีม ่ ป ี ริมาณทีไ่ ม่ ั ้ สอ ื่ สารอีกจานวนหลายไบต์ แน่นอนพร ้อมกับข ้อมูลในชน ข ้อมูลจะถูกสง่ ออกไปในลักษณะของแพ็กเกตไปยัง ตาแหน่งทีอ ่ ยูเ่ ฉพาะแห่งหนึง่ ซงึ่ จะได ้รับข ้อมูลตอบรับ (achnowledgement) กลับมา ้ Isochronous: ใชในการส ง่ ข ้อมูลปริมาณไม่แน่นอนใน รูปแบบของลาดับของแพ็กเกต ทีม ่ ข ี นาดคงที่ ทีถ ่ ก ู ้ สง่ ออกไปในชว่ งเวลาทีค ่ งที่ วิธก ี ารนีใ้ ชในกรณี ทไี่ ม่ ต ้องการกาหนดตาแหน่งทีอ ่ ยูข ่ องผู ้รับ และไม่ต ้องการ การถ่ายเทข ้อมูลแบบอะซงิ โครนัส (asynchronous transmission) การถ่ายเทข ้อมูลแบบอะซงิ โครนั ส กระบวนการสง่ ข ้อมูลหนึง่ แพ็กเกตเรียกว่า subaction ประกอบด ้วยห ้า ชว่ งเวลาทางาน ดังนี้ ั ญาณ Arbitration sequence: เป็ นการแลกเปลีย ่ นสญ ิ ธิควบคุมการใชบั้ ส เพือ ่ กาหนดสท Packet transmission: ทุกแพ็กเกตจะมีข ้อมูลสว่ นหัว (header) ซงึ่ ประกอบด ้วยหมายเลขเฉพาะของผู ้สง่ และ ผู ้รับ นอกจากนีก ้ ็ยังมีข ้อมูลเกีย ่ วกับชนิดของแพ็กเกตข ้อ มูล การตรวจสอบความถูกต ้องและแก ้ไขข ้อผิดพลาด และข ้อมูลเฉพาะสาหรับแพ็กเกตนัน ้ ๆ Acknowledgement gap: ชว่ ยเวลาหน่วงสาหรับผู ้รับที่ จะได ้รับข ้อมูล แปลความหมาย และจัดการสง่ ข ้อมูล ่ การถ่ายเทข ้อมูลแบบอะซงิ โครนัส (asynchronous transmission) Acknowledgement : ผู ้ทีร่ ับแพ็กเกตข ้อมูลจะสง่ แพ็กเกตตอบรับ พร ้อมด ้วยรหัสการทางานทีบ ่ อกให ้ ทราบว่าผู ้รับได ้ทาสงิ่ ใดลงไป ่ งเวลาว่างทีม Subaction gap: หมายถึง ชว ่ ไี ว ้เพือ ่ ให ้ แน่ใจว่าโหนดอืน ่ ๆ จะไม่เริม ่ กระบวนการยึดครองบัส ก่อนทีแ ่ พ็กเกตตอบรับจะถูกสง่ กลับมา เมือ ่ แพ็กเกตตอบรับถูกสง่ ออกมา โหนดทีท ่ าการสง่ แพ็กเกตนัน ้ จะเป็ นผู ้ทีก ่ าลังควบคุม บัสอยู่ ดังนัน ้ ถ ้าการแลกเปลีย ่ นข ้อมูลเป็ นการกระทาใน ลักษณะคาร ้องขอและการตอบ สนองระหว่างสองโหนดนัน ้ โหนดตอบรับจะสามารถสง่ แพ็กเกตตอบรับออกมาได ้ การถ่ายเทข ้อมูลแบบอะซงิ โครนัส (asynchronous transmission) Subaction1: Request Subaction gap Arb Packet Subaction 2: Response Ack gap Ack Subaction gap Arb Ack gap Packet Ack Subaction gap Time (a) Example asynchronous subaction Subaction1: Request Subaction gap Arb Packet Ack gap Subaction 2: Response Ack Ack gap Packet Ack (b) Concatenated asynchronous subactions First channel Isoch gap Arb Packet Third channel Second channel Isoch gap Arb Packet Isoch gap (c) Example isochronous subactions Arb Packet Isoch gap Isoch gap Ack ้ การใชงานร่ วมกันของ asynchronous และ Isochronous ้ การนา asynchronous และ isochronous มาใชงาน ร่วมกันจะต ้องกาหนดให ้โหนดหนึง่ ทาหน ้าทีเ่ ป็ น cycle master ในทุก ๆ ชว่ งเวลาทีก ่ าหนด cycle master จะ สง่ แพ็กเกต cycle-start ออกมา แพ็กเกตนีจ ้ ะบอกให ้ ทุกโหนดทราบว่าวงรอบ isochronous ได ้เริม ่ ขึน ้ แล ้ว ในวงรอบนีโ้ หลดทีท ่ างานแบบ isochronous เท่านั น ้ จะสามารถสง่ แพ็กเกตข ้อมูลออกมาได ้ การสง่ ข ้อมูลแบบ Isochronous สาหรับอุปกรณ์ทม ี่ ักจะสร ้างข ้อมูลออกมา หรือมักจะนา ้ เ่ สมอ เชน ่ การ์ดเสย ี ง หรือการ์ดวิดโี อ ก็ ข ้อมูลไปใชอยู จะใชวิ้ ธส ี ง่ ข ้อมูลแบบ isochronous วิธก ี ารนีร้ ับประกัน ว่าข ้อมูลจะถูกสง่ ภายในระยะเวลาทีก ่ าหนด และด ้วย อัตราความเร็วทีต ่ ้องการ จากรูป (c) แต่ละ isochronous node จะผลัดกัน ้ ิ ธิก็จะสง่ ครอบครองและใชงานบั ส โหนดใดทีไ่ ด ้สท แพ็กเกตข ้อมูลออกมาทันที ซงึ่ จะเป็ นแพ็กเก็ตทีไ่ ม่ ต ้องการแพ็กเกตตอบรับ ทาให ้ isochronous โหนด ต่อไปสามารถครอบครองบัส และสง่ แพ็คเกตออกมา ่ งว่างระหว่างแพ็กเกต ได ้อย่างต่อเนือ ่ ง ทาให ้เกิดชอ ่ งว่างเป็ นองค์ประกอบหลักของ น ้อยมาก ซงึ่ ชอ ระยะเวลาหน่วงในระบบ ซงึ่ เรียกว่า isochronous gap การสง่ ข ้อมูลแบบ Isochronous หลังจากที่ isochronous node ทาการสง่ ข ้อมูล หมดแล ้ว บัสจะยังคงว่างอยูอ ่ ย่างน ้อยก็จนกว่า ่ งว่างนีจ subaction gap จะเกิดขึน ้ ชอ ้ ะเป็ นเสมือน ั ญาณทีบ สญ ่ อกให ้โหนดทีท ่ างานแบบ asynchornous ได ้ทราบว่าโหนดเหล่านีส ้ ามารถเริม ่ ต ้นแข่งขันแย่งชงิ บัสได ้แล ้ว aysnchornous node จะสามารถทางาน ต่อไปได ้เรือ ่ ย ๆ จนกว่าจะถึงวงรอบใหม่ของ isochronous ื่ ขนาด isochronous แพ็กเกตจะมีข ้อมูลเสมือนป้ ายชอ ้ ่ งสอ ื่ สารทีต 8 บิต เพือ ่ ใชบอกหมายเลขช อ ่ ้องการ ซงึ่ นามาจากการต่อรองระหว่างโหนดสองโหนดทีต ่ ้องการ แลกเปลีย ่ น isochronous แพ็กเกตระหว่างกัน ข ้อมูล ั ้ กว่า สว่ นหัวของ isochronous แพ็กเกต มีขนาดสน