๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Computer Science/Computer Structure

7 Instruction Cycle & Interrupt (๋ช…๋ น์–ด ์‚ฌ์ดํด๊ณผ ์ธํ„ฐ๋ŸฝํŠธ)

by Dowon Kang 2023. 12. 23.

CPU๋Š” ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ช…๋ น์–ด ์‚ฌ์ดํด๊ณผ ์ธํ„ฐ๋ŸฝํŠธ์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

CPU๋Š” ์ •ํ•ด์ง„ ํ๋ฆ„๋Œ€๋กœ ๋ช…๋ น์–ด๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ง‘์„ ์ง“๋Š” ์ž‘์—…์ž๋“ค์ด ์ง‘์˜ ํ† ๋Œ€๋ฅผ ์ •ํ•˜๊ณ  ๋ฒฝ์„ ์Œ“์•„ ์ง€๋ถ•์„ ์˜ฌ๋ฆฌ๋Š” ์ˆœ์„œ๊ฐ€ ์žˆ๋“ฏ์ด CPU๋„ ๋ฉ”๋ชจ๋ฆฌ์™€ ๋Š์ž„์—†์ด ๊ต๋ฅ˜ํ•˜๋ฉฐ ์ผ์„ ํ•ฉ๋‹ˆ๋‹ค. ์กฐ๊ธˆ ๋” ๊ตฌ์ฒด์ ์œผ๋กœ ์•Œ์•„๋ด…์‹œ๋‹ค. 

 

๋ช…๋ น์–ด ์‚ฌ์ดํด (Instruction Cycle):

๋ช…๋ น์–ด ์‚ฌ์ดํด(Instruction Cycle)์€ CPU๊ฐ€ ํ•˜๋‚˜์˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ธฐ๋ณธ์ ์ธ ๋‹จ๊ณ„๋“ค์˜ ์—ฐ์†์ž…๋‹ˆ๋‹ค. ์ด ์‚ฌ์ดํด์€ CPU์˜ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๊ณ  ๋ช…๋ น์–ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์„ ์„ค๋ช…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

๋ช…๋ น์–ด ์‚ฌ์ดํด์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ์˜ ๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค:

1) ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ (Program Counter) ์ฆ๊ฐ€: ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ๋Š” ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ๋ช…๋ น์–ด์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋ช…๋ น์–ด ์‚ฌ์ดํด์ด ์‹œ์ž‘๋˜๋ฉด ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ๊ฐ€ ๋‹ค์Œ ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ๋กœ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
2) ๋ช…๋ น์–ด ๊ฐ€์ ธ์˜ค๊ธฐ (Fetch): ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์—์„œ ๋ช…๋ น์–ด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ๋กœ๋ถ€ํ„ฐ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
3) ๋ช…๋ น์–ด ํ•ด๋… (Decode): ๊ฐ€์ ธ์˜จ ๋ช…๋ น์–ด๋ฅผ ํ•ด๋…ํ•˜์—ฌ CPU๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋‚ด๋ถ€ ๋ช…๋ น์–ด๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
4) ์‹คํ–‰ (Execute): ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ CPU๋Š” ํ•ด๋‹น ๋ช…๋ น์–ด์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์กฐ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
5) ๊ฒฐ๊ณผ ์ €์žฅ (Write Back): ์‹คํ–‰ํ•œ ๋ช…๋ น์–ด๋กœ๋ถ€ํ„ฐ ์–ป์€ ๊ฒฐ๊ณผ๋ฅผ ๋ ˆ์ง€์Šคํ„ฐ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

 


์ด๋ ‡๊ฒŒ ๋ช…๋ น์–ด ์‚ฌ์ดํด์ด ๋ฐ˜๋ณต๋˜๋ฉด์„œ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ธฐ๋ณธ์ ์ธ ๋ช…๋ น์–ด ์‚ฌ์ดํด์˜ ์ˆœ์„œ์ด๋ฉฐ, ๋‹ค์–‘ํ•œ ๋ช…๋ น์–ด์™€ ๋ช…๋ น์–ด ํ˜•์‹์— ๋”ฐ๋ผ ์„ธ๋ถ€์ ์ธ ๋™์ž‘์€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 


 

 

์ธํ„ฐ๋ŸฝํŠธ (Interrupt)

์ธํ„ฐ๋ŸฝํŠธ๋Š” CPU๊ฐ€ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์ž‘์—…์„ ์ค‘๋‹จํ•˜๊ณ  ๊ธ‰ํ•˜๊ฒŒ ํŠน์ • ์ƒํ™ฉ์— ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐœ์ƒํ•˜๋Š” ์‹ ํ˜ธ์ž…๋‹ˆ๋‹ค.

์ธํ„ฐ๋ŸฝํŠธ๋Š” ์ฃผ๋กœ ํ•˜๋“œ์›จ์–ด๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด์—์„œ ๋ฐœ์ƒํ•˜๋ฉฐ, ๋‹ค์–‘ํ•œ ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค. 

 

1) ๋™๊ธฐ ์ธํ„ฐ๋ŸฝํŠธ (Synchronous interrupts) : CPU๊ฐ€ ์˜ˆ๊ธฐ์น˜ ๋ชปํ•œ ์ƒํ™ฉ์„ ์ ‘ํ–ˆ์„ ๋•Œ ๋ฐœ์ƒ (=exception, ์˜ˆ์™ธ). ๋™๊ธฐ ์ธํ„ฐ๋ŸฝํŠธ์˜ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ์™ธ์ ์ธ ์ƒํ™ฉ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์—ฐ์‚ฐ ์˜ค๋ฅ˜ (Arithmetic Exception): 0์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ๋‚˜ ์œ ํšจ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ ์—ฐ์‚ฐ ๋“ฑ ์ˆ˜ํ•™ ์—ฐ์‚ฐ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์˜ค๋ฅ˜ (Memory Access Violation): ํ”„๋กœ๊ทธ๋žจ์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค
  • ๋ช…๋ น์–ด ์˜ค๋ฅ˜ (Illegal Instruction): ๋ช…๋ น์–ด๊ฐ€ ์ž˜๋ชป๋œ ํ˜•์‹์ด๊ฑฐ๋‚˜ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ช…๋ น์–ด์ผ ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ํŽ˜์ด์ง€ ๋ถ€์žฌ (Page Fault): ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ์‹œ์Šคํ…œ์—์„œ ์š”์ฒญํ•œ ํŽ˜์ด์ง€๊ฐ€ ํ˜„์žฌ ๋ฉ”๋ชจ๋ฆฌ์— ์—†๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐฐ์—ด ๋ฒ”์œ„ ์ดˆ๊ณผ (Array Out of Bounds): ๋ฐฐ์—ด์˜ ๋ฒ”์œ„๋ฅผ ๋„˜์–ด์„œ ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ์šฐ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋™๊ธฐ ์ธํ„ฐ๋ŸฝํŠธ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์˜ˆ์™ธ ์ƒํ™ฉ์— ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์˜ˆ์™ธ ์ฒ˜๋ฆฌ(Exception Handling) ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ†ตํ•ด ๋‹ค๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์—์„œ ์‹œ์Šคํ…œ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋Œ€์‘ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™๊ธฐ ์ธํ„ฐ๋ŸฝํŠธ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์•ˆ์ „์„ฑ๊ณผ ์˜ˆ์ธก์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

 

 

2) ๋น„๋™๊ธฐ ์ธํ„ฐ๋ŸฝํŠธ (Hardware Interrupt) : ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ๋Š” ์ฃผ๋กœ ์™ธ๋ถ€ ์žฅ์น˜์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ธํ„ฐ๋ŸฝํŠธ๋กœ, ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์ด ์™ธ๋ถ€ ํ™˜๊ฒฝ๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ค‘์š”ํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํ•˜๋“œ์›จ์–ด ์žฅ์น˜๋“ค์ด CPU์—๊ฒŒ ์–ด๋–ค ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Œ์„ ์•Œ๋ฆฌ๊ณ , CPU๋Š” ํ•ด๋‹น ์ด๋ฒคํŠธ์— ์ฆ‰์‹œ ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค. 

ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ๋Š” ์ž…์ถœ๋ ฅ ์ž‘์—…์ค‘์— ์ž์ฃผ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ”„๋ฆฐํ„ฐ๊ฐ€ ์ผ์„ ์™„๋ฃŒํ•˜๋ฉด CPU์—๊ฒŒ '์™„๋ฃŒ'์˜ ์•Œ๋ฆผ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. CPU๋Š” ์•Œ๋ฆผ์ด ์˜ค๊ธฐ์ „๊นŒ์ง€๋Š” ๋‹ค๋ฅธ ์ผ์„ ํ•  ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณดํ†ต CPU๊ฐ€ ํ”„๋ฆฐํ„ฐ๋ณด๋‹ค ์ผ์ฒ˜๋ฆฌ๊ฐ€ ๋น ๋ฅด๋‹ˆ๊นŒ์š”. ์—ฌ๊ธฐ์„œ ์•Œ๋ฆผ์„ ๋ณด๋‚ด๋Š” ํ–‰์œ„๊ฐ€ ๋ฐ”๋กœ ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ์ž…๋‹ˆ๋‹ค.

 

์•„๋ž˜๋Š” ์ฃผ์š” ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ์˜ ์˜ˆ์™€ ์„ค๋ช…์ž…๋‹ˆ๋‹ค:

  • ํƒ€์ด๋จธ ์ธํ„ฐ๋ŸฝํŠธ (Timer Interrupt): ํƒ€์ด๋จธ๋Š” ์ผ์ • ์ฃผ๊ธฐ๋งˆ๋‹ค ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š”๋ฐ, ์ด๋ฅผ ํ†ตํ•ด ์šด์˜ ์ฒด์ œ๋Š” ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ๊ด€๋ฆฌํ•˜๊ณ  ์Šค์ผ€์ค„๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ํƒ€์ด๋จธ ์ธํ„ฐ๋ŸฝํŠธ๋Š” ์ •๊ธฐ์ ์œผ๋กœ ์šด์˜ ์ฒด์ œ์— CPU๋ฅผ ๋„˜๊ฒจ์คŒ์œผ๋กœ์จ ๋ฉ€ํ‹ฐํƒœ์Šคํ‚น์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ์ž…์ถœ๋ ฅ ์ธํ„ฐ๋ŸฝํŠธ (I/O Interrupt): ์™ธ๋ถ€ ์žฅ์น˜(์˜ˆ: ํ‚ค๋ณด๋“œ, ๋งˆ์šฐ์Šค, ๋””์Šคํฌ ๋“œ๋ผ์ด๋ธŒ ๋“ฑ)์—์„œ ์ž…๋ ฅ์ด ๋ฐœ์ƒํ•˜๋ฉด ํ•ด๋‹น ์žฅ์น˜๋Š” CPU์—๊ฒŒ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด CPU๋Š” ์ž…์ถœ๋ ฅ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์„ ์ค‘๋‹จํ•˜์ง€ ์•Š๊ณ ๋„ ์™ธ๋ถ€ ์žฅ์น˜์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ธํ„ฐ๋ŸฝํŠธ ์ปจํŠธ๋กค๋Ÿฌ (Interrupt Controller): ์—ฌ๋Ÿฌ ํ•˜๋“œ์›จ์–ด ์žฅ์น˜๋“ค์ด ๋™์‹œ์— ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋ฉด, ์ธํ„ฐ๋ŸฝํŠธ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ด๋ฅผ ๊ด€๋ฆฌํ•˜์—ฌ CPU์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ธํ„ฐ๋ŸฝํŠธ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋งˆ์Šคํ‚นํ•˜๋Š” ๋“ฑ์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ์‹œ์Šคํ…œ ๋ฒ„์Šค ์—๋Ÿฌ (Bus Error): ํ•˜๋“œ์›จ์–ด ๊ฐ„์˜ ํ†ต์‹  ์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฉ”๋ชจ๋ฆฌ๋‚˜ ๋ฒ„์Šค์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋กœ ์ธํ•œ ์ธํ„ฐ๋ŸฝํŠธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ๋Š” ์ฃผ๋กœ ์™ธ๋ถ€ ์žฅ์น˜์™€์˜ ์ƒํ˜ธ์ž‘์šฉ, ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ, ๊ทธ๋ฆฌ๊ณ  ์ž…์ถœ๋ ฅ ์ฒ˜๋ฆฌ ๋“ฑ์— ์‚ฌ์šฉ๋˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์ด ํšจ์œจ์ ์ด๊ณ  ์‹ ์†ํ•˜๊ฒŒ ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 


 

ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ์ˆœ์„œ 

์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด (ISR): ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด CPU๋Š” ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์ž‘์—…์„ ์ค‘๋‹จํ•˜๊ณ  ํ•ด๋‹น ์ธํ„ฐ๋ŸฝํŠธ์— ๋Œ€์‘ํ•˜๋Š” ํŠน๋ณ„ํ•œ ์ฝ”๋“œ ๋ธ”๋ก์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ ๋ธ”๋ก์„ ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด(ISR)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  1. ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ (Interrupt Occurs): ์™ธ๋ถ€ ์ด๋ฒคํŠธ๋‚˜ ์กฐ๊ฑด์ด ๋ฐœ์ƒํ•˜์—ฌ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ์š”์ฒญ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ๋Š” ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ, ์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ(์˜ˆ: ์‹œ์Šคํ…œ ์ฝœ), ์˜ˆ์™ธ ์ƒํ™ฉ ๋“ฑ ๋‹ค์–‘ํ•œ ์›์ธ์œผ๋กœ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ์ธํ„ฐ๋ŸฝํŠธ ํ”Œ๋ž˜๊ทธ ํ™•์ธ (Check Interrupt Flag): ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด(ISR)์ด ์‹คํ–‰๋˜๊ธฐ ์ „์— ํ•ด๋‹น ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋Š”์ง€(์ธํ„ฐ๋ŸฝํŠธ ํ”Œ๋ž˜๊ทธ๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ๋Š”์ง€) ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ธํ„ฐ๋ŸฝํŠธ ํ”Œ๋ž˜๊ทธ๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ๊ณ„์† ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  3. ํ˜„์žฌ ์ƒํƒœ ์ €์žฅ (Save Current State): ํ˜„์žฌ CPU์˜ ์ƒํƒœ(๋ ˆ์ง€์Šคํ„ฐ์˜ ๊ฐ’, ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ ๋“ฑ)๋Š” ์Šคํƒ ๋˜๋Š” ํŠน์ • ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋‚˜์ค‘์— ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด์ด ์‹คํ–‰์„ ๋งˆ์น˜๊ณ  ์›๋ž˜์˜ ์ž‘์—…์„ ๊ณ„์†ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  4. ์ธํ„ฐ๋ŸฝํŠธ ๋งˆ์Šคํ‚น (Interrupt Masking): ์ผ๋ถ€ ์‹œ์Šคํ…œ์—์„œ๋Š” ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ์ฒ˜๋ฆฌ๋˜๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•ด ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋งˆ์Šคํ‚นํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์Šคํ‚น์€ ํ˜„์žฌ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐ›์•„๋“ค์ผ ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค.
  5. ์ธํ„ฐ๋ŸฝํŠธ ๋ฒกํ„ฐ ์ฐพ๊ธฐ (Find Interrupt Vector): ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ ์‹œ, ํ•ด๋‹น ์ธํ„ฐ๋ŸฝํŠธ์— ๋Œ€์‘ํ•˜๋Š” ์ธํ„ฐ๋ŸฝํŠธ ๋ฒกํ„ฐ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. ์ธํ„ฐ๋ŸฝํŠธ ๋ฒกํ„ฐ๋Š” ํŠน์ • ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด(ISR)์˜ ์ฃผ์†Œ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  6. ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด ํ˜ธ์ถœ (Call Interrupt Service Routine, ISR): ์ฐพ์€ ์ธํ„ฐ๋ŸฝํŠธ ๋ฒกํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด(ISR)์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ISR์€ ์‹ค์ œ๋กœ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ํ•„์š”ํ•œ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  7. ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ์™„๋ฃŒ ๋ฐ ๋ณต๊ตฌ (Interrupt Service Completion and Restore): ISR์ด ์ฒ˜๋ฆฌ๋ฅผ ์™„๋ฃŒํ•˜๋ฉด ์ €์žฅํ•œ CPU ์ƒํƒœ๋ฅผ ๋ณต๊ตฌํ•˜๊ณ , ๋งˆ์Šคํ‚น๋œ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.
  8. ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ์ข…๋ฃŒ ๋ฐ ์›๋ž˜ ์ž‘์—… ๊ณ„์† (Resume Original Task): ๋ชจ๋“  ๊ณผ์ •์ด ๋๋‚˜๋ฉด CPU๋Š” ์›๋ž˜ ์ˆ˜ํ–‰ํ•˜๋˜ ์ž‘์—…์œผ๋กœ ๋ณต๊ท€ํ•˜๊ณ , ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ ๋“ฑ์„ ๋ณต์›ํ•˜์—ฌ ์ •์ƒ์ ์ธ ์‹คํ–‰์„ ๊ณ„์†ํ•ฉ๋‹ˆ๋‹ค.

 

 


Instruction Cycle

- Program Counter Increment: The program counter is increased to point to the next instruction's memory address.

- Fetch: The CPU fetches the instruction from the memory location pointed to by the program counter.

- Decode: The fetched instruction is decoded into an internal format that the CPU can understand.

- Execute: The CPU performs the operation specified by the decoded instruction.

- Write Back: The result of the execution is stored, typically in registers or memory.

 

Interrupts

- Interrupt Occurs: External events or conditions trigger an interrupt, causing the CPU to temporarily halt its current execution.

- Save Current State: The CPU saves its current state, including the program counter and register values.

- Interrupt Masking: Some systems may temporarily disable interrupts to prevent additional interruptions during the - handling of the current interrupt.

- Find Interrupt Vector: The interrupt vector is used to locate the address of the corresponding Interrupt Service Routine (ISR).

- Call ISR: The ISR is executed to handle the specific interrupt, performing necessary actions or computations.

- Interrupt Service Completion and Restore: After ISR execution, the CPU restores the saved state and may re-enable interrupts if they were temporarily disabled.

- Resume Original Task: The CPU returns to the interrupted task, continuing from where it left off.

 

Synchronous Interrupts

- Synchronous Interrupts:Synchronous interrupts, also known as exceptions, occur as a result of specific program instructions or CPU operations.

- Examples: Arithmetic errors, illegal instructions, page faults, and division by zero are common synchronous interrupt examples.

- Handled by ISR: Synchronous interrupts are typically handled by dedicated ISR routines to address the exceptional conditions.

 

Hardware Interrupts:

- Definition: Hardware interrupts are triggered by external devices or hardware components to gain the CPU's attention.

- Examples: Timer interrupts, I/O interrupts (e.g., keyboard, mouse), and bus errors are examples of hardware interrupts.
- Managed by Interrupt Controller: Interrupt controllers manage and prioritize hardware interrupts, directing them to the appropriate ISR.
- Enhances System Responsiveness: Hardware interrupts allow the system to respond promptly to external events and efficiently handle multiple tasks simultaneously.

 

๋Œ“๊ธ€