การอินเตอร์รัพท์ และ การออกแบบ
Interrupt and Design

นายอนล ธรรมตระการ 36056034
นายปิยวัฒน์ ชาญเศรษฐิกุล 36054302


สารบัญ

บทนำ

การอินเตอร์รัพท์ คือ การติดต่อเพื่อรับส่งข้อมูลกันระหว่างอุปกรณ์ภายนอกต่างๆของคอมพิวเตอร์ เช่น จอภาพ, แป้นพิมพ์, เครื่องพิมพ์, เม้าส์ และอื่ นๆ กับ ไมโครโปรเซสเซอร์ ซึ่งจะมีการติดต่อกันอยู่เสมอๆ การที่จะทำให้ระบบมีประสิทธิภาพมากที่สุดนั้นก็คือ การมีการติด ต่อหรือการอินเทอร์รัพท์ที่ดีนั่นเอง

การอินเตอร์รัพท์

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

วิธีหนึ่งก็คือ ให้ซีพียูใช้เวลาส่วนใหญ่ในการทำโปรแกรมหลัก และหันมาสนใจอุปกรณ์ภายนอกก็ต่อเมื่ออุปกรณ์ภายนอกส่งสัญญาณ เข้ามาขัดจังหวะการทำงานที่ซีพียูทำอยู่ในขณะนั้น ซึ่งซีพียูมีสิทธิที่จะยอมรับหรือปฏิเสธการขัดจังหวะนั้นก็ไ ด้ อาจเปรียบได้ว่าเรากําลังเขียนรายงานอยู่ แล้วมีเสียงโทรศัพท์ดังขึ้นมา เราก็จะต้องตัดสินใจว่าสิ่งใดมีความสําคัญมากกว่ากัน หา กคิดว่าโทรศัพท์สําคัญกว่า ก็หยุดการ เขียนรายงานและไปรับโทรศัพท์ก่อน แล้วจึงกลับมาเขียนรายงานต่อ ดังนั้นในลักษณะนี้ หากว่าซีพียูยอมรับการขัดจังหวะนั้น ซีพียู จะหยุดจากการทำงานในโปรแกรมหลักและไปทำงานในโปรแกรมย่อยซึ่งอุปกรณ์นั้นๆร้องขอมา เมื่อเสร็จแล้ว ซีพียูก็จะกลับมาทำโปรแกรมเดิมที่ หยุดไปต่อ ไป ลักษณะเช่นนี้เรียกว่า การอินเตอร์รัพท์ (Interrupt)

ประเภทของการอินเตอร์รัพท์

การอินเตอร์รัพท์สามารถแบ่งได้เป็น 2 ประเภทใหญ่ๆดังนี้คือ
  1. Non-maskable Interrupt (NMI) คือ การอินเตอร์รัพท์ที่ซีพียูไม่สามารถปฏิเสธได้ หากมีการอินเตอร์รัพท์ประเภทนี้มา ซีพียูต้องหยุดการทำงานของโปรแกรมที่ทำอยู่ในขณะนั้นโดยไ ม่มีข้อแม้ และเปลี่ยนไปทำงานให้การอุปกรณ์ที่มีการส่งอินเตอร์รัพท์เข้ามา
  2. Maskable Interrupt (INT) คือ การอินเตอร์รัพท์ที่ซีพียูสามารถปฏิเสธได้ โดยปรกติ ซีพียูจะมีการกำหนดว่าในขณะนั้น ซีพียูจะอยู่ในภาวะ Disable Interrupt (DI) หรือ Enable (EI) ถ้าหากว่า ในขณะที่มีการอินเตอร์รัพท์เข้ามานั้น ซีพียูอยู่ในภาวะ Disable Interrupt แล้ว การอินเตอร์รัพท์นั้นก็จ ะได้รับการปฏิเสธไป แต่ถ้าเป็น Enable Interrupt การอินเตอร์รัพท์นั้นก็จะได้รับการสนองตอบ
นอกจากนี้ การอินเตอร์รัพท์ยังมีการจัดลำดับความสำคํญของแต่ละอินเตอร์รัพท์ที่เข้ามาอีกด้วย ดังจะกล่าวในหัวข้อถัดไปนี้

การจัดลําดับความสําคัญของการอินเตอร์รัพท์

ถึงแม้ว่าจะมีวงจรจากอุปกรณ์ภายนอกมากมายที่สามารถสร้างและส่งส่งสัญญาณอินเตอร์รัพท์มาให้ซีพียูได้ แต่ซีพียูก็ยังสามารถแยกแยะได้ว่าวงจรใดเป็นผู้สร้างสัญญาณอินเตอร์รัพท์นั้นๆขึ้นมาได้ เนื่องจากแต่ละวงจรจะให้อินเตอร์รัพท์เวกเตอร์ที่ต่างกัน ทําให้ซีพียูกระ โดดไปทํางานในอินเตอร์รัพท์เซอร์วิสรูทีนต่างๆกันโดนที่แต่ละโปรแกรมก็ถูกเขียนให้ทํางานบริการแก่อุปกรณ์นั้นๆ

แม้ว่าซีพียูจะสามารถแยกแยะได้ว่าอุปกรณ์ใดเป็นผู้ส่งสัญญาณอินเตอร์รัพท์แล้วก็ตาม แต่ในทางปฏิบัติแล้ว เมื่อมีอุปกรณ์มากกว่าหนึ่งอุปก รณ์ต้องการจะติดต่อกับซีพียูพร้อมๆกัน ปัญหาว่าซีพียูจะติดต่อกับอุปกรณ์ใดก่อนก็จะเกิดขึ้น จึงต้องมีการจัดให้ความสําคัญต่ออุปกรณ ์ไม่เท่ากัน (Priority Arbitration)

อุปกรณ์ภายนอกจะไม่ได้ต่อสัญญาณอินเตอร์รัพท์ของตนเข้าโดยตรงกับซีพียู แต่จะต่อผ่านวงจรจัดลําดับความสําคัญ ถ้ามีอุปกรณ์หลายตัวต้องการ ที่จะส่งสัญญาณอินเตอร์รัพท์ (INT) เข้าซีพียูพร้อมๆกัน วงจรจัดลําดับความสําคัญจะส่งผ่านสัญญาณอินเตอร์รัพท์และ Interrupt Vector ของอุปกรณ์ที่มีความสําคัญ (Priority) สูงสุด< WBR>ไปยังซีพียู ซีพียูจะตอบรับและให้บริการอุปกรณ์ที่ส่งอินเตอร์รัพท์นั้นมาให้เสร็จสิ้นเสียก่อน แลัวจึงเริ่มให้ความสนใจแก่อินเตอร์รัพท์ของอุปกรณ์ที่มีความสําคัญรองลงไปตามลําดับ

การจัดระบบอินเตอร์รัพท์ไม่ว่าจะเป็นกลไลการกระโดด, การตอบรับ หรือกลไลการเก็บสถานะ การจัดระบบดังกล่าวนี้ของซีพียูก็จะแตกต่างกันออกไปแล้วแต่บริษัทผู้ผลิตจะออกแบบตัวไมโครโปรเซสเซอร์มาเช่นไร ทั้งนี้ก็ขึ้นอยู่กับวัตถุประสงค์ของงานที่จะนําซีพียูตัวนั้น ๆ ไปใช้

การควบคุมอินเตอร์รัพท์

การควบคุมการอินเตอร์รัพท์คือการควบคุมซีพียูว่าจะให้ตอบรับอินเตอร์รัพท์หรือไม่ เนื่องจากในบางขณะที่ซีพียูกําลังทำงานที่ต่อเนื่องอยู่ เช่น โปรแกรมนาฬิกา ซึ่งหากมีการอินเตอร์รัพท์เข้ามาก็จะก่อให้เกิดความผิดพลาดของนาฬิกา ดังนั้นจึงต้องมีการบังคับไม่ให้มีการสนองตอบต่อการร้องขออินเตอร์รัพท์เข้ามา เมื่อโปรแกรมนาฬิกาเสร็จแล้ว จึงอนุญาตให้มีการตอบสนองได้

คําสั่งที่ใช้ในการเซ็ตหรือรีเซ็ตแฟล็กอินเตอร์รัพท์นั้นเรียกว่า คําสั่งอินเตอร์รัพท์ ซึ่งได้แก่

  • DI ซึ่งย่อมาจาก Disable Interrupt เป็นการเซ็ตให้ซีพียูอยู่ในภาวะไม่ตอบสนอง
  • EI ซึ่งย่อมาจาก Enable Interrupt ใช้เพื่อรีเซ็ตแฟล็กให้อยู่ในภาวะตอบสนอง

หลักการทำงานของอินเตอร์รัพท์

ในไมโครโปรเซสเซอร์แทบจะทุกประเภทนั้น การอินเตอร์รัพท์จะเกิดขึ้นโดยอุปกรณ์อินพุทเอาท์พุทได้ส่งสัญญาณอิเลกทรอนิกส์เพื่อไปเปลี่ยนระดับสัญญาณที่ขาใด< WBR>ขาหนึ่งของไมโครโปรเซสเซอร์ ซึ่งขานั้นจะถูกเรียกว่า ขาอินเตอร์รัพท์ (Interrupt Pin) เพื่อเป็นการแจ้งแก่ไมโครโปรเซสเซอร์ถึงการอินเตอร์รัพท์ โดยจะมีขั้นตอนต่างๆดังนี้
  1. วงจรภายนอกส่งสัญญาณอินเตอร์รัพท์มายังซีพียู
  2. หากซีพียูอยู่ในสภาวะ Enable Interrupt (EI) ก็จะตอบรับการอินเตอร์รัพท์ด้วยการส่งสัญญาณ Interrupt Acknowledge กลับไปยังวงจรภายนอก
  3. เซ็ตซีพียูให้อยู่ในสภาวะ Disable Interrupt (DI) เพื่อป้องกันการอินเตอร์รัพท์ซ้อน
  4. หยุดการทำงานในโปรแกรมหลัก
  5. วงจรภายนอกส่งอินเตอร์รัพท์เวกเตอร์มาให้ซีพียูเพื่อบอกตําแหน่งที่จะให้ซีพียูกระโดดไป
  6. ซีพียูส่งค่าในรีจิสเตอร์ PC และรีจิสเตอร์ทั่วไป ไปเก็บไว้ในสแต็ก
  7. ไปทำงานในโปรแกรมย่อยเพื่อบริการอุปกรณ์ที่ส่งอินเตอร์รัพท์เข้ามาจนเสร็จ
  8. รับค่าที่ไปเก็บไว้ในสแต็กคืนสู่รีจิสเตอร์ PC และ รีจิสเตอร์ทั่วไปตามเดิม
  9. เซ็ตซีพียูให้กลับสู่สภาวะ Enable Interrut (EI)
  10. ทำงานในโปรแกรมหลักที่ค้างอยู่ต่อไป

ตำแหน่งของโปรแกรมย่อยในการอินเตอร์รัพท์

การที่ซีพียูจะรู้ได้ว่าโปรแกรมย่อยจากการอินเตอร์รัพท์มีตำแหน่งอยู่ที่ใดในหน่วยความจำนั้น ส่วนแรกขึ้นอยู่กับชนิดของไมโครโปรเซสเซอร์ นั้นๆ ผู้ผลิตไมโครโปรเซสเซอร์แต่ละชนิดหรือแต่ละรายก็จะมีการกำหนดลักษณะการอ้างถึงตำแหน่งแตกต่างกันออกไป โดยอาจจ ะกำหนดดังนี้ วิธีที่สองเป็นที่นิยมใช้ทั้งนี้เพราะการใช้วิธีนี้จะทำให้สามารถกำหนดช่วงของตำแหน่งได้กว้างกว่า ในขณะที่วิธีสุด< WBR>ท้ายเป็นวิธีที่เร็วกว่า แต่เป็นการสิ้นเปลืองฮาร์ดแวร์

การอินเตอร์รัพท์จากหลายอุปกรณ์

ในซีพียูจะมีขาที่ใช้รับสัญญาณอินเตอร์รัพท์เพียงขาเดียว ดังนั้นในกรณีที่มีอุปกรณ์หลายอุปกรณ์ร้องขอการอินเตอร์รัพท์เข้ามา ทุกๆอุปกรณ์ก็จะ ต้องป้อนสัญญาณอินเตอร์รัพท์ให้แก่ซีพียูที่ขาเดียวกันนี้ จึงมีปัญหาเกิดขึ้นคือ เมื่อมีสัญญาณอินเตอร์รัพท์เกิดขึ้น ซีพียูจะจำแนกได้อย่างไรว่า< WBR>สัญญาณที่เข้ามานั้นมาจากอุปกรณ์ตัวใด วิธีการจำแนกสามารถทำได้หลายวิธี แต่แบ่งวิธีที่สำคัญออกเป็น 2 วิธี คือ วิธีซอฟท์แวร์ เรียกว่า ก ารโพล (Polling) และวิธีฮาร์ดแวร์ซึ่งต้องต้องต่อชิ้นส่วนอิเลกทรอนิกส์เข้าช่วย

บทสรุป

จากการที่คอมพิวเตอร์เป็นอุปกรณ์ที่สามารถทํางานได้รวดเร็วมากกว่ามนุษย์นัก จึงสามารถทํางานพร้อมกันได้หลายๆอย่างทั้งที่สามารถมองเห็นไ ด้ชัดเจน และที่มองไม่เห็นดังนั้นหากไม่มีการจัดการการอินเตอร์รัพท์ให้ดีแล้ว ประสิทธิภาพของคอมพิวเตอร์ก็ย่อมที่จะลดลงกว่าที่ควร จะเป็นหรืออาจก่อให้เกิดผลเสียต่างได้ ซึ่งถึงแม้บางอย่างอาจจะไม่มากจนเราสังเกตเห็นได้ แต่เพียงเล็กน้อยหากสะสมไปเรื่อยๆ ก็ย่อมจะกลายเป็นมากได้เช่นกัน

เอกสารอ้างอิง


[
บทเรียน ] [ 204471 ] [ รายวิชา ]
[ ภาควิชาวิศวกรรมคอมพิวเตอร์ ] [ คณะวิศวกรรมศาสตร์ ] [ มหาวิทยาลัยเกษตรศาสตร์ ]