๋ค์ํ ํํ์ ์ ์ถ๋ ฅ ๋ฐฉ์๋ค์ ํ๋ก๊ทธ๋จ์ด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ์์ ๋ํ ๋ค์ํ ์ ๊ทผ์ ์ ๊ณตํฉ๋๋ค.
1) ํ๋ก๊ทธ๋จ ์ ์ถ๋ ฅ
์ด๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ ์ถ๋ ฅ ๋ฐฉ์์ผ๋ก, ํ๋ก๊ทธ๋จ์ด ์ง์ ์ ์ถ๋ ฅ ์์ ์ ์ํํ๋ ๋ฐฉ์์ ๋๋ค. ํ๋ก๊ทธ๋จ์ด ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋ ์ธ ๋, ์ ์ถ๋ ฅ ๋ช ๋ น์ ํตํด ์ ์ด๋ฅผ ์ง์ ์ํํฉ๋๋ค. ์ด ๋ฐฉ์์ ๋จ์ํ๊ณ ์ง๊ด์ ์ด์ง๋ง, ์ ์ถ๋ ฅ ์์ ์ด ์งํ๋๋ ๋์ CPU๊ฐ ๋ค๋ฅธ ์์ ์ ์ํํ ์ ์๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ์ ๋ณด๋ฅผ ํ๋๋์คํฌ๋ก ๋ฐฑ์ (=์ ์ฅ or ์ฐ๊ธฐ)ํ๋ค๊ณ ํด๋ด ์๋ค.
- CPU๋ ํ๋ ๋์คํฌ ์ปจํธ๋กค๋ฌ์ ์ ์ด ๋ ์ง์คํฐ์ '์ฐ๊ธฐ ๋ช ๋ น' ์ ๋ฌ
- ํ๋ ๋์คํฌ ์ปจํธ๋กค๋ฌ๋ ํ๋ ๋์คํฌ์ ์ํ๋ฅผ ํ์ธํ ๋ค์ ์ํ ๋ ์ง์คํฐ์ '์ค๋น ์๋ฃ' ํ์
- ํ๋ ๋์คํฌ๊ฐ ์ค๋น๋์๋ค๋ฉด ๋ฐ์ดํฐ ๋ ์ง์คํฐ์ ๋ฐฑ์ ํ ๋ฉ๋ชจ๋ฆฌ์ ์ ๋ณด๋ฅผ ๋ฐ์ดํฐ ๋ ์ง์คํฐ์ ์ฐ๊ธฐ

์ ์ด ๋ ์ง์คํฐ(Control Register): ํ๋ ๋์คํฌ์ ๋์์ ์ ์ดํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ๋ ์ง์คํฐ์๋ ์ด๋ค ๋์์ ์ํํ ๊ฒ์ธ์ง์ ๋ํ ์ ๋ณด๊ฐ ํฌํจ๋ฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด, ์ฝ๊ธฐ ์์
์ ์์ํ๊ฑฐ๋ ์ฐ๊ธฐ ์์
์ ์์ํ๋ ๋ช
๋ น ๋ฑ์ด ์์ต๋๋ค.
์ํ ๋ ์ง์คํฐ(Status Register): ํ๋ ๋์คํฌ์ ํ์ฌ ์ํ๋ฅผ ๋ํ๋
๋๋ค. ์ด ๋ ์ง์คํฐ๋ ํ๋ ๋์คํฌ๊ฐ ํ์ฌ ์ด๋ค ๋์์ ์ํ ์ค์ธ์ง(์ฝ๊ธฐ ์ค, ์ฐ๊ธฐ ์ค, ๋๊ธฐ ์ค ๋ฑ)์ ๊ฐ์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ต๋๋ค.
๋ฐ์ดํฐ ๋ ์ง์คํฐ(Data Register): ์ค์ ๋ฐ์ดํฐ๊ฐ ์ด ๋ ์ง์คํฐ๋ฅผ ํตํด ์ฝ๊ฑฐ๋ ์ฐ์ฌ์ง๋๋ค. ์ฝ๊ธฐ ์์
์ ์ํํ ๋ ํ๋ ๋์คํฌ์์ ์ฝ์ ๋ฐ์ดํฐ๊ฐ ์ด ๋ ์ง์คํฐ์ ์ ์ฅ๋๊ณ , ์ฐ๊ธฐ ์์
์ ์ํํ ๋๋ ์ด ๋ ์ง์คํฐ์ ์ฐ์ฌ์ง ๋ฐ์ดํฐ๊ฐ ํ๋ ๋์คํฌ๋ก ์ ์ก๋ฉ๋๋ค.
์ ๋ฐ์ ์ผ๋ก, ์
์ถ๋ ฅ ์ฅ์น(์: ํ๋ ๋์คํฌ)๋ฅผ ์ ์ดํ๊ธฐ ์ํด ์ ์ด ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉํ๊ณ , ์ฅ์น์ ์ํ๋ฅผ ํ์ธํ๊ธฐ ์ํด ์ํ ๋ ์ง์คํฐ๋ฅผ ์ฝ์ผ๋ฉฐ, ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ํด ๋ฐ์ดํฐ ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ธ ์
์ถ๋ ฅ ์์คํ
์ ๋์ ๋ฐฉ์์
๋๋ค.
2) ๋ฉ๋ชจ๋ฆฌ ๋งต ์ ์ถ๋ ฅ (Memory-Mapped I/O)
์ ์ถ๋ ฅ ์ฅ์น์ ๋ ์ง์คํฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ์ด ๊ฒน์น๋ ๋ฐฉ์์ ๋๋ค. ์ ์ถ๋ ฅ ์ฅ์น์ ๋ ์ง์คํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ์ ํ ๋นํ๊ณ , ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ ๊ฒ์ฒ๋ผ ์ ์ถ๋ ฅ ๋ ์ง์คํฐ์ ์ ๊ทผํ ์ ์์ต๋๋ค.

3) ๊ณ ๋ฆฝํ ์
์ถ๋ ฅ (Isolated I/O)
๋์ ์๋ฆฌ: ํ๋ก๊ทธ๋จ์ด ์ ์ถ๋ ฅ ๋ช ๋ น์ ์ ๋ฌํ๋ฉด, ์ ์ถ๋ ฅ ์ฅ์น๋ ์์ ์ ์ง์ ์ํํ๊ณ ์์ ์ด ์๋ฃ๋๋ฉด CPU์๊ฒ ์๋ฆฌ์ง ์์ต๋๋ค. ์ฆ, ์ ์ถ๋ ฅ ์์ ์ด ์๋ฃ๋๋ ๋์ CPU๋ ๋๊ธฐ ์ํ์ ์์ต๋๋ค.
์ฅ์ : ๋จ์ํ๋ฉฐ ๊ตฌํ์ด ์ฝ์ต๋๋ค. ํนํ ์
์ถ๋ ฅ ์ฅ์น๊ฐ ์๊ณ ๊ฐ๋จํ ๊ฒฝ์ฐ์ ํจ๊ณผ์ ์ผ ์ ์์ต๋๋ค.
๋จ์ : CPU๊ฐ ์
์ถ๋ ฅ ์์
์ด ์๋ฃ๋ ๋๊น์ง ๋๊ธฐํด์ผ ํ๋ฏ๋ก, ํจ์จ์ฑ์ด ๋ฎ์ ์ ์์ต๋๋ค. ๋ค๋ฅธ ์์
์ ์ํํ์ง ๋ชปํ๊ณ ๋๊ธฐํ๊ฒ ๋๊ธฐ ๋๋ฌธ์
๋๋ค.
4) ์ธํฐ๋ฝํธ ๊ธฐ๋ฐ ์ ์ถ๋ ฅ (Interrupt-Driven I/O)
ํ๋ก๊ทธ๋จ์ด ์ ์ถ๋ ฅ ๋ช ๋ น์ ์ ๋ฌํ๋ฉด, ์ ์ถ๋ ฅ ์ฅ์น๋ ์์ ์ ์์ํ๊ณ ์์ ์ด ์๋ฃ๋๋ฉด ์ธํฐ๋ฝํธ๋ฅผ ๋ฐ์์์ผ CPU์๊ฒ ์๋ฆฝ๋๋ค. CPU๋ ํ์ฌ ์ํ ์ค์ธ ์์ ์ ์ค๋จํ๊ณ , ํด๋น ์ธํฐ๋ฝํธ๋ฅผ ์ฒ๋ฆฌํ์ฌ ์ ์ถ๋ ฅ ์์ ์ ์๋ฃ๋ฅผ ํ์ธํฉ๋๋ค.

์ฅ์ : CPU๊ฐ ์
์ถ๋ ฅ ์์
์ด ์๋ฃ๋ ๋๊น์ง ๋๊ธฐํ์ง ์๊ณ ๋ค๋ฅธ ์์
์ ์ํํ ์ ์์ต๋๋ค. ์ด๋ ์์คํ
์ ํจ์จ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
๋จ์ : ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ์ ๋ํ ์ค๋ฒํค๋๊ฐ ์์ ์ ์์ผ๋ฉฐ, ๋ณต์กํ ๊ตฌํ์ด ํ์ํ ์ ์์ต๋๋ค. ๋ํ, ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ์ ๊ดํ ์ฐ์ ์์์ ๊ด๋ฆฌ๊ฐ ํ์ํฉ๋๋ค.
PIC(Programmable Interrupt Controller)
PIC(Programmable Interrupt Controller)๋ ์ปดํจํฐ ์์คํ ์์ ํ๋์จ์ด ์ธํฐ๋ฝํธ๋ฅผ ๊ด๋ฆฌํ๋ ์ฅ์น์ ๋๋ค. ์ฃผ๋ก ์ฌ๋ฌ ํ๋์จ์ด ๋๋ฐ์ด์ค๋ก๋ถํฐ ๋ฐ์ํ๋ ์ธํฐ๋ฝํธ๋ฅผ ๊ด๋ฆฌํ๊ณ , ์ฐ์ ์์๋ฅผ ์ง์ ํ์ฌ CPU์ ์ ๋ฌํฉ๋๋ค. ๋ํ์ ์ธ PIC๋ก๋ 8259A๊ฐ ์์ต๋๋ค.

์ฃผ์ ๊ธฐ๋ฅ
- ์ธํฐ๋ฝํธ์ ๋ง์คํน (Interrupt Masking): ํน์ ํ ์ธํฐ๋ฝํธ๋ฅผ ๋ง์คํฌํ์ฌ ํด๋น ์ธํฐ๋ฝํธ๋ฅผ ๋ฌด์ํ๋๋ก ์ค์ ํ ์ ์์ต๋๋ค. ์ด๋ ํน์ ์ํฉ์์ ํน์ ์ธํฐ๋ฝํธ๋ฅผ ์ฒ๋ฆฌํ์ง ์๋๋ก ํ ๋ ์ ์ฉํฉ๋๋ค.
- ์ธํฐ๋ฝํธ์ ์ฐ์ ์์ ์ง์ : PIC๋ ๊ฐ ์ธํฐ๋ฝํธ์ ๋ํด ์ฐ์ ์์๋ฅผ ๋ถ์ฌํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฌ๋ฌ ๋๋ฐ์ด์ค์์ ๋ฐ์ํ ์ธํฐ๋ฝํธ ์ค์์ ์ด๋ค ๊ฒ์ ๋จผ์ ์ฒ๋ฆฌํ ์ง๋ฅผ ๊ฒฐ์ ํ ์ ์์ต๋๋ค.
- ๋ค์ค PIC ๊ตฌ์ฑ (Cascading): ์ฌ๋ฌ ๊ฐ์ PIC๋ฅผ ์ฐ๊ฒฐํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ ๋ง์ ์ธํฐ๋ฝํธ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์ฃผ๋ก Master PIC์ Slave PIC๋ก ๊ตฌ์ฑ๋๋ฉฐ, Master PIC๋ CPU์ ์ง์ ์ฐ๊ฒฐ๋๊ณ , Slave PIC๋ Master PIC์ ์ฐ๊ฒฐ๋์ด ๋ ๋ง์ ์ธํฐ๋ฝํธ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
- ์ธํฐ๋ฝํธ ๋ฒกํฐ ํ ๋น: PIC๋ ๊ฐ ์ธํฐ๋ฝํธ์ ๋ํด ๊ณ ์ ํ ์ธํฐ๋ฝํธ ๋ฒกํฐ ๋ฒํธ๋ฅผ ํ ๋นํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ด์์ฒด์ ๋ ์ด๋ค ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ๋์ง๋ฅผ ์๋ณํ ์ ์์ต๋๋ค.
์ ํต์ ์ผ๋ก 8259A PIC๋ 8๊ฐ์ ์ธํฐ๋ฝํธ๋ฅผ ๊ด๋ฆฌํ๋ฉฐ, ์ด๋ IRQ(Interrupt Request)๋ผ๊ณ ๋ถ๋ฆฌ๋ ์ธํฐ๋ฝํธ ์ ์ผ๋ก๋ถํฐ ๋ฐ์ํฉ๋๋ค. ๋ ํ๋์ ์ธ ์ปดํจํฐ ์์คํ ์์๋ APIC(Advanced Programmable Interrupt Controller) ๋ฑ ๋ ๋ฐ์ ํ ํํ์ ์ธํฐ๋ฝํธ ์ปจํธ๋กค๋ฌ๊ฐ ์ฌ์ฉ๋๊ณ ์์ต๋๋ค
DMA ์ ์ถ๋ ฅ
DMA(Direct Memory Access)๋ ์ปดํจํฐ ์์คํ ์์ ์ ์ถ๋ ฅ ์ฅ์น์ ๋ฉ๋ชจ๋ฆฌ ๊ฐ ๋ฐ์ดํฐ ์ ์ก์ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ฉ์ปค๋์ฆ์ ๋๋ค. DMA๋ฅผ ์ฌ์ฉํ๋ฉด CPU๊ฐ ์ง์ ๊ด์ฌํ์ง ์๊ณ , ์ ์ถ๋ ฅ ์ฅ์น์ ๋ฉ๋ชจ๋ฆฌ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์์ต๋๋ค.
์ฃผ์ ํน์ง
- ๋น๋๊ธฐ์ ์ ์ก: DMA๋ ์ ์ถ๋ ฅ ์์ ์ CPU์ ์์กดํ์ง ์๊ณ ๋ณ๋๋ก ์ฒ๋ฆฌํฉ๋๋ค. ๋ฐ๋ผ์ CPU๋ ๋ค๋ฅธ ์์ ์ ์ํํ ์ ์์ต๋๋ค.
- ๋์ ์ ์ก ์๋: DMA๋ CPU์๋ ๋ณ๋๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ๋๋ฌธ์, ์ ์ถ๋ ฅ ์ฅ์น์ ๋ฉ๋ชจ๋ฆฌ ๊ฐ์ ๋ฐ์ดํฐ ์ ์ก์ด ๋น ๋ฅด๊ฒ ์ด๋ฃจ์ด์ง ์ ์์ต๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ๊ถํ: DMA๋ ๋ฉ๋ชจ๋ฆฌ์ ์ง์ ์ ๊ทผํ ์ ์์ผ๋ฏ๋ก, ์ ์ถ๋ ฅ ์ฅ์น์ ๋ฉ๋ชจ๋ฆฌ ๊ฐ์ ๋ฐ์ดํฐ ์ ์ก์ ์์ด์ ๋์ ํจ์จ์ฑ์ ์ ๊ณตํฉ๋๋ค.
๋์ ๊ณผ์
- DMA ์์ฒญ: ์ ์ถ๋ ฅ ์ฅ์น๋ ๋ฐ์ดํฐ ์ ์ก์ ์ํด DMA์ ์์ฒญ์ ๋ณด๋ ๋๋ค.
- DMA ์ปจํธ๋กค๋ฌ ํ์ฑํ: DMA ์ปจํธ๋กค๋ฌ๋ ์์ฒญ์ ๋ฐ์ผ๋ฉด CPU์๊ฒ ์ธํฐ๋ฝํธ๋ฅผ ๋ฐ์์ํค๊ณ , CPU๋ DMA ์ปจํธ๋กค๋ฌ๋ฅผ ํ์ฑํํฉ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ: DMA ์ปจํธ๋กค๋ฌ๋ CPU๊ฐ ์๋ ์ง์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋ ์๋๋ค.
- ์ ์ก ์๋ฃ: ๋ฐ์ดํฐ ์ ์ก์ด ์๋ฃ๋๋ฉด DMA ์ปจํธ๋กค๋ฌ๋ CPU์๊ฒ ์ธํฐ๋ฝํธ๋ฅผ ๋ฐ์์ํค๊ณ , CPU๋ ์ด๋ฅผ ์ฒ๋ฆฌํ์ฌ ์ ์ถ๋ ฅ ์ฅ์น์์ ๋ฐ์ดํฐ ์ ์ก์ด ์๋ฃ๋์์์ ํ์ธํฉ๋๋ค.

DMA ์ปจํธ๋กค๋ฌ(Direct Memory Access Controller)
- DMA ์ปจํธ๋กค๋ฌ(Direct Memory Access Controller)๋ ์ปดํจํฐ ์์คํ ์์ DMA ๊ธฐ๋ฅ์ ๊ด๋ฆฌํ๊ณ ์ ์ดํ๋ ์ฅ์น์ ๋๋ค.
- DMA ์ปจํธ๋กค๋ฌ๋ CPU์ ๊ฐ์ญ ์์ด ์ ์ถ๋ ฅ ์ฅ์น์ ๋ฉ๋ชจ๋ฆฌ ๊ฐ์ ๋ฐ์ดํฐ ์ ์ก์ ์ํํ๋ฉฐ, ์ด๋ฅผ ํตํด ๋์ ์ฑ๋ฅ๊ณผ ํจ์จ์ฑ์ ์ ๊ณตํฉ๋๋ค.
DMA๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ CPU๋ ์ ์ถ๋ ฅ ์์ ์ ์งํ ์ํ๋ฅผ ๊ณ์ ํ์ธํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ง์ ์ ์กํ๋ ๋ฐ ํ์ํ ์๊ฐ์ ์ ์ฝํ ์ ์์ต๋๋ค. ์ด๋ ํนํ ๋์ฉ๋์ ๋ฐ์ดํฐ ์ ์ก์ด ํ์ํ ๊ฒฝ์ฐ๋ ๊ณ ์ ์ ์ถ๋ ฅ ์ฅ์น์์ ํจ์จ์ ์ธ ์ํธ์์ฉ์ ์ํด ์ ์ฉํฉ๋๋ค.
ํ๋ก๊ทธ๋จ ์ ์ถ๋ ฅ
(Programmed I/O): The basic input/output method where the program directly controls the data transfer between the CPU
and I/O devices.
๋ฉ๋ชจ๋ฆฌ ๋งต ์
์ถ๋ ฅ
(Memory-Mapped I/O): A technique where I/O device registers are mapped to the memory address space, allowing the program to interact with I/O devices using memory read and write operations.
๊ณ ๋ฆฝํ ์
์ถ๋ ฅ
(Isolated I/O): A method where I/O devices independently perform operations without direct CPU involvement, and completion is signaled through interrupts without the CPU waiting.
์ธํฐ๋ฝํธ ๊ธฐ๋ฐ ์
์ถ๋ ฅ
(Interrupt-Driven I/O): An approach where I/O devices generate interrupts to signal the completion of an operation, allowing the CPU to perform other tasks while waiting for I/O completion.
DMA ์
์ถ๋ ฅ
(Direct Memory Access I/O): A mechanism enabling data transfer between I/O devices and memory without CPU intervention, improving efficiency by allowing the CPU to execute other tasks during the transfer.
'Computer Science > Computer Structure' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
15 Device Controller & Device Driver (์ฅ์น ์ปจํธ๋กค๋ฌ & ์ฅ์น ๋๋ผ์ด๋ฒ) (1) | 2024.01.05 |
---|---|
14 RAID (1) | 2024.01.05 |
13 Hard disk & Flash memory (๋ณด์กฐ๊ธฐ์ต์ฅ์น) (1) | 2024.01.05 |
12 Cache Memory (์บ์ ๋ฉ๋ชจ๋ฆฌ) (0) | 2023.12.31 |
11 RAM (1) | 2023.12.30 |
๋๊ธ