๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿš— Major Study (Bachelor)/๐ŸŸฉ Computer Architecture

Polling, Interrupt, Handling Exception in I/O Devices

by UKHYUN22 2021. 12. 15.
728x90

 

I/O Management
Instruction Set Completeness๋ฅผ ํ•  ๋•Œ ๋‹ค๋ฃจ์—ˆ๋˜ ๋‚ด์šฉ
์–ด๋Š์ •๋„ ์นดํ…Œ๊ณ ๋ฆฌ์˜ Instruction์ด ์žˆ์–ด์•ผ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋‹ค๋ผ๋Š” ๊ฒƒ.
ALU / Data Transfer / Control Transfer 
๊ทธ ์ค‘ Data Transfer์—์„œ IO์™€ Processor ๊ฐ„ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” Instruction์ด ์กด์žฌํ•œ๋‹ค๊ณ  ์–ธ๊ธ‰์„ ํ–ˆ์—ˆ๋‹ค.
Memory Mapped I/O๊ฐ€ 
๋ฉ”๋ชจ๋ฆฌ์™€ CPU ์‚ฌ์ด์˜ lw, sw๋ฅผ ์ด์šฉํ•˜๋˜ ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ณต๊ฐ„ ์ผ๋ถ€๋ฅผ IO ์žฅ์น˜์— ํ• ๋‹นํ•ด์„œ ๋งˆ์น˜ ๋ฉ”๋ชจ๋ฆฌ์™€ CPU ์‚ฌ์ด์— IO๊ฐ€ ์™”๋‹ค๊ฐ”๋‹ค ํ•˜๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค๋ผ๋Š” ๊ฒƒ์ด ๋œ๋‹ค.

 

 


Memory-Mapped IO
๋ฉ”๋ชจ๋ฆฌ์˜ ์ผ๋ถ€๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  IO์— ๋ฐฐ์ •์„ ํ•ด๋†“์•˜๋‹ค. 

๋ฉ”๋ชจ๋ฆฌ ์ด ๋ถ€๋ถ„์„ load ํ•œ๋‹ค๋Š” ๊ฒƒ์ด IO Device๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฒ ๋‹ค๋ผ๋Š” ๊ฒƒ์ด ๋œ๋‹ค. ์ด ์ƒํƒœ๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๋ž˜์ง€์Šคํ„ฐ๊ฐ€ ์žˆ๋‹ค. MIPS์™€ ๊ฐ™์€ ๊ณณ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๊ณ  ๋งŽ์€ CPU์—์„œ ์ด์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

 


OS๋Š” IO ๊ฐ€ ์–ด๋–ค ์ผ์„ ํ•˜๊ณ  ๋๋ƒˆ์Œ์„ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์„ ์•Œ์•„์•ผ ํ•œ๋‹ค.
IO ์žฅ์น˜๋Š” ๊ทธ๊ฒƒ์„ ํ•ด๊ฒฐํ•  ๋งŒํ•œ ๋Šฅ๋ ฅ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— IO์˜ ๋ณ€ํ™”๋ฅผ Processor ๊ฐ€ ์ธ์‹ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.
Polling
CPU๊ฐ€ IO ์žฅ์น˜๊ฐ€ ์–ด๋–ค ์ƒํƒœ์ธ์ง€ ํ™•์ธ์„ ํ•˜๋Š” ๊ฒƒ. IO ์žฅ์น˜๊ฐ€ ์–ด๋–ค ์ผ์„ ํ•  ๊ฒƒ์ธ๊ฐ€๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ณ€ํ™”๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.
Device -> IO (๋ฐฉํ–ฅ์„ฑ)
Interrupt
์–ด๋–ค ๋ณ€ํ™”๊ฐ€ ์ผ์–ด๋‚˜๋ฉด IO๊ฐ€ CPUํ•œํ…Œ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.
IO -> Device (๋ฐฉํ–ฅ์„ฑ)

 

 


Polling: Programmed IO
CPU๊ฐ€ IO Device ์•ˆ์— ์žˆ๋Š” ๋ž˜์ง€์Šคํ„ฐ(IOC)๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ฒดํฌํ•œ๋‹ค.
Processor๊ฐ€ ๋ชจ๋“  ๊ฒƒ์„ Controllํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŽธ๋ฆฌํ•˜์ง€๋งŒ ์ด๊ณณ์— ์ฃผ๊ธฐ์ ์œผ๋กœ ํ™•์ธ์„ ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„์ด ๋งŽ์ด ์†Œ์š”๋œ๋‹ค๋ผ๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. CPU๊ฐ€ ๊ต‰์žฅํžˆ ์ž์ฃผ ํ™•์ธ์„ ํ•ด์•ผ ํ•œ๋‹ค.

 


Processor Checks Status before Acting
Control Register
์จ๋„ ์ข‹๋‹ค, ์“ฐ๋ฉด ์•ˆ๋€๋‹ค์˜ ์ƒํƒœ๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๋ž˜์ง€์Šคํ„ฐ
Data Register
์‹ค์ œ์ ์œผ๋กœ IO ์žฅ์น˜์— ๋Œ€ํ•˜๋Š” Information์— ํ•ด๋‹นํ•œ๋‹ค.
Control Register๊ฐ€ 0์—์„œ 1๋กœ ์˜ฌ๋ผ๊ฐ€๋ฉด ์ฝ์–ด๋„ ์ข‹๋‹ค๋ผ๊ณ  ์ฝ๊ณ  Processor๊ฐ€ ์ง„ํ–‰์„ ํ•˜๊ณ 

 

 


Spin waiting
IO Device์— ๋ณ€ํ™”๊ฐ€ ์—†์–ด๋„ ๊ณ„์† ํ™•์ธ์„ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ
Processor๋Š” CPU์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ž์›์ด๋ฏ€๋กœ Interrupt๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค.
Exception mechanism ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 


Exception and Interrupts (ํ•œ๊บผ๋ฒˆ์— ๋ฌถ์–ด์„œ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•˜๊ณ  ๊ตฌ๋ถ„ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.)
Unexpected events requiring change in flow of contol
CPU ์•ˆ์—์„œ ์ผ์–ด๋‚œ๋‹ค. INstruction์„ ์ฒ˜๋ฆฌํ•˜๋‹ค ๋ณด๋‹ˆ๊นŒ opcode๊ฐ€ ์ •์˜๋˜์ง€ ์•Š์€๊ฒƒ์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ์ด๋‹ค.
์ด๋Ÿฐ ๊ฒฝ์šฐ CPU๋Š” ์•„๋ฌด๊ฒƒ๋„ ํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์ด ๋˜๋Š” ๋ฐ ์ด๊ฒƒ์„ Exception์ด๋ผ๊ณ  ํ•œ๋‹ค
Interrupt๋Š” IO controller๋กœ๋ถ€ํ„ฐ ์‹ ํ˜ธ๊ฐ€ ์˜จ ๊ฒƒ์ด๋‹ค. (**๊ตฌ๋ถ„ํ•  ๊ฒƒ**)

 

 


Interrupts
CPU์˜ ํŠน๋ณ„ํ•œ Attention์ด ํ•„์š”ํ•˜๋‹ค. ํ˜„์žฌ Executeํ•˜๊ณ  ์žˆ๋Š” Process๋ฅผ ๋ฉˆ์ถ”๊ณ  Interrupt service routine์œผ๋กœ ์ด๋™์„ ํ•˜๊ฒŒ ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์žฌ๋‚œ ๋Œ€์ฑ… ๋ฉ”๋‰ด์–ผ์ด๋ผ๊ณ  ๋ณด๋ฉด ๋  ๊ฒƒ์ด๋‹ค.
CPU๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. 
1) ํ˜„์žฌ ์ƒํƒœ๋ฅผ ์ €์žฅํ•œ๋‹ค.
2) Interrupt์„ ์ฒ˜๋ฆฌํ•œ๋‹ค
3) ์ €์žฅํ•œ PC๋กœ ๋Œ์•„์™€์„œ ๋‹ค์‹œ ๋™์ž‘ํ•œ๋‹ค.

 

 


Handling Exception
MIPS์—์„œ Exception์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ Processor๊ฐ€ ์กด์žฌํ•œ๋‹ค. = Coprocessor
Exception์ด๋ผ๋Š” ๊ฒƒ์—๋Š” overflow๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๊ณ  ๋งŒ์•ฝ ๋ฐœ์ƒํ•˜๋ฉด PC๋ฅผ EPC ๋ผ๋Š” ๊ณณ์— ์ €์žฅ์„ ํ•œ๋‹ค. EPC๋Š” Program counter๋ฅผ ์ €์žฅํ•˜๋Š” ์žฅ์†Œ
์–ด๋–ค Exception์ด ๋ฐœ์ƒํ–ˆ๋Š”์ง€ Cause ๋ž˜์ง€์Šคํ„ฐ๋ฅผ ๋‘”๋‹ค. ํ‰์†Œ์— ์‚ฌ์šฉํ•˜๋˜ data Path์—์„œ ์ด๋ฃจ์–ด์ง„๋‹ค.

 

 


IO Interrupt
Instruction Execution์ด ์•„๋‹ˆ๋ผ IO Execution๊ณผ ๊ด€๋ จ์ด ์žˆ๋‹ค(*****)

 

 


1) IO Interrupt , CPU๊ฐ€ IO ์žฅ์น˜ํ•œํ…Œ ์ผ์„ ์‹œํ‚ค๊ณ  CPU๋Š” ์ž๊ธฐ ํ•  ์ผ์„ ๊ณ„์† ํ•˜๊ณ  ์žˆ๋Š”๋‹ค.
2) IO๊ฐ€ ์ผ์„ ๋๋‚ด๋ฉด ์ผ์„ ๋๋ƒˆ๋‹ค๊ณ  Interruptํ•˜๋Š” ๊ฒƒ์ด IO Interrupt์˜ ์˜ˆ์‹œ๊ฐ€ ๋œ๋‹ค.
Interrupt service routine์ด ์กด์žฌํ•œ๋‹ค. 
์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ Special Hardware๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค,

 

 


IO Responsibility
CPU๊ฐ€ IOํ•œํ…Œ ์ผ์„ ๋งก๊ธฐ๊ณ  ๋‹ค์‹œ Interrupt ๊ณ„์† ์ด๋Ÿฐ ๋ฐ˜๋ณต์ ์ธ ์ผ์„ ํ•ด์•ผ ํ•˜๋Š”๋ฐ DMA ๋ผ๋Š” ๊ฒƒ์„ ๋‘”๋‹ค.
DMACํ•œํ…Œ Starting address๋ฅผ Transferํ•˜๋Š” ์—ญํ• ์„ ํ•ด์ค€๋‹ค.