ให้เรตสมาชิก: 2 / 5

ดาวใช้งานดาวใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

การอินเตอร์รัพท์ และการออกแบบ Interrupt and Design (อินเตอร์รัพท์ แอน ดีไซน์)

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

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

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

 

ประเภทของการอินเตอร์รัพท์ การอินเตอร์รัพท์สามารถแบ่งได้เป็น 2 ประเภทใหญ่ ๆ ดังนี้

1. NMI : Non-maskable Interrupt (นอท มาร์กเอเบิล อินเตอร์รัพท์) คือ การอินเตอร์รัพท์ที่ซีพียูไม่สามารถปฏิเสธได้ หากมีการอินเตอร์รัพท์ประเภทนี้มา ซีพียูต้องหยุดการทำงานของโปรแกรมที่ทำอยู่ในขณะนั้นโดยไม่มีข้อแม้ และเปลี่ยนไปทำงานให้การอุปกรณ์ที่มีการส่งอินเตอร์รัพท์เข้ามา

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

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

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

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

     การควบคุมการอินเตอร์รัพท์คือการควบคุมซีพียูว่าจะให้ตอบรับอินเตอร์รัพท์หรือไม่ เนื่องจากในบางขณะที่ซีพียูกําลังทำงานที่ต่อเนื่องอยู่
คําสั่งที่ใช้ในการเซ็ตหรือรีเซ็ตแฟล็กอินเตอร์รัพท์นั้นเรียกว่า คําสั่งอินเตอร์รัพท์ ซึ่งได้แก่
     - DI : Disable Interrupt (ดิเอเบิล อินเตอร์รัพท์) เป็นการเซ็ตให้ซีพียูอยู่ในภาวะไม่ตอบสนอง
     - EI : Enable Interrupt (อิเนเบิล อินเตอร์รัพท์) ใช้เพื่อรีเซ็ตแฟล็กให้อยู่ในภาวะตอบสนอง

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

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

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

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

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

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

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

อ้างอิง
cpe.ku.ac.th

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
สร้างแบบสอบถามออนไลน์ ด้วย Excel Survey บน OneDrive
โดย birdkritsna อ 17 ก.ย. 2019 6:31 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
21
อ 17 ก.ย. 2019 6:31 pm โดย birdkritsna
ทำไมจึงต้องมี Data Mining (เหมืองข้อมูล) ?
โดย birdkritsna อ 17 ก.ย. 2019 6:04 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
17
อ 17 ก.ย. 2019 6:04 pm โดย birdkritsna
ทำความรู้จักกับ Big Data คืออะไร
โดย birdkritsna อ 17 ก.ย. 2019 5:36 pm บอร์ด SQL Knowledge
1
24
อ 17 ก.ย. 2019 5:52 pm โดย mindphp
วิธีการใช้งานฟังชั่น serialize() กับ unserialize() ใน phpbb
โดย Ittichai_chupol อ 17 ก.ย. 2019 5:18 pm บอร์ด PHP Knowledge
0
15
อ 17 ก.ย. 2019 5:18 pm โดย Ittichai_chupol
รู้จักกับคลังข้อมูล(Data Warehouse) คืออะไร มีประโยชน์อะไรบ้าง
โดย birdkritsna อ 17 ก.ย. 2019 5:11 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
21
อ 17 ก.ย. 2019 5:11 pm โดย birdkritsna
MS Exchange ไมโครซอฟท์ต่ออายุซัพพอร์ต 2010 ให้อีก 9 เดือน ถึง ตุลาคม 2020
โดย chatee supasand อ 17 ก.ย. 2019 5:09 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
14
อ 17 ก.ย. 2019 5:09 pm โดย chatee supasand
สิ่งที่ต้องทำ ก่อนโทรศัพท์หายหรือโดนขโมย
โดย birdkritsna อ 17 ก.ย. 2019 3:23 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
19
อ 17 ก.ย. 2019 3:23 pm โดย birdkritsna
VDO - ขั้นตอนการยกเลิกใบแจ้งหนี้ด้วยวิธีที่ถูกต้อง
โดย EyePornnipa อ 17 ก.ย. 2019 3:05 pm บอร์ด M089 - นางสาวพรนิภา ราชธานี
2
14
อ 17 ก.ย. 2019 5:32 pm โดย EyePornnipa
วิธีขับขี่ช่วงฝนตก ป้องกันอุบัติเหตุทางถนน
โดย birdkritsna อ 17 ก.ย. 2019 2:56 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
18
อ 17 ก.ย. 2019 2:56 pm โดย birdkritsna
สร้าง Menu Item ที่จะให้เมนูแสดงเฉพาะภาษาอังกฤษแล้ว Error ครับ
โดย jamepiyawat อ 17 ก.ย. 2019 2:52 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS CRM
5
35
อ 17 ก.ย. 2019 5:08 pm โดย jamepiyawat
ปัญหาไม่สามารถแสดงผลได้ทางหน้าจอ ขึ้น Object not found!
โดย birdkritsna อ 17 ก.ย. 2019 12:11 pm บอร์ด Programming - PHP
4
46
อ 17 ก.ย. 2019 3:56 pm โดย birdkritsna
ทำอย่างไรให้ใน loop แสดงสินค้าไม่ซ้ำกัน
โดย Patipat อ 17 ก.ย. 2019 11:19 am บอร์ด Joomla Development
0
18
อ 17 ก.ย. 2019 11:19 am โดย Patipat
รู้จักกับระบบปฎิบัติการ Harmony OS ที่ไม่ได้มีไว้แค่มือถือเท่านั้น
โดย birdkritsna อ 17 ก.ย. 2019 11:06 am บอร์ด Mobile Application Developing- Android, iOS
0
22
อ 17 ก.ย. 2019 11:06 am โดย birdkritsna
งานประจำวันที่ 17 กันยายน 2562
โดย birdkritsna อ 17 ก.ย. 2019 10:35 am บอร์ด M094 - กฤษณะ จะโรจน์รัมย์
3
17
อ 17 ก.ย. 2019 7:22 pm โดย birdkritsna
R - mdsoft_seleniumTest_mzchelix_byM088 (MT33) ทำเทส selenium
โดย chatee supasand อ 17 ก.ย. 2019 10:30 am บอร์ด MT33 - นายชาตรี สุภาแสน
0
5
อ 17 ก.ย. 2019 10:30 am โดย chatee supasand
R - mdsoft_seleniumTest_mzccart_byM084 (MT33) ทำเทส selenium
โดย chatee supasand อ 17 ก.ย. 2019 10:29 am บอร์ด MT33 - นายชาตรี สุภาแสน
0
7
อ 17 ก.ย. 2019 10:29 am โดย chatee supasand
งานประจำวันที่ 17 กันยายน 2562
โดย Patipat อ 17 ก.ย. 2019 10:23 am บอร์ด M088 - ปฏิภัทร สารธรรม
3
14
อ 17 ก.ย. 2019 7:22 pm โดย Patipat
งานประจำวันที่ 17 กันยายน 2562
โดย chatee supasand อ 17 ก.ย. 2019 10:07 am บอร์ด MT33 - นายชาตรี สุภาแสน
1
5
อ 17 ก.ย. 2019 7:37 pm โดย chatee supasand
งานประจำวันที่ 17 กันยายน 2562
โดย jamepiyawat อ 17 ก.ย. 2019 10:02 am บอร์ด M084 - นายปิยวัช เชาว์วิมล
1
4
อ 17 ก.ย. 2019 7:29 pm โดย jamepiyawat
งานประจำวันที่ 17 กันยายน 2562
โดย jirawoot อ 17 ก.ย. 2019 9:55 am บอร์ด M090 - นายจิระวุฒิ อัครลิขิตกุล
1
7
อ 17 ก.ย. 2019 7:27 pm โดย jirawoot