์ ์ถ๋ ฅ ์์ : CPU์ ์ฅ์น ์ปจํธ๋กค๋ฌ๊ฐ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฒ ⇒ ์ฅ์น ์ปจํธ๋กค๋ฌ์ CPU๊ฐ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ๋ฒ
- ํ๋ก๊ทธ๋จ ์ ์ถ๋ ฅ
- ์ธํฐ๋ฝํธ ๊ธฐ๋ฐ ์ ์ถ๋ ฅ
- DMA ์ ์ถ๋ ฅ
ํ๋ก๊ทธ๋จ ์ ์ถ๋ ฅ
: ํ๋ก๊ทธ๋จ ์ ๋ช ๋ น์ด๋ก ์ ์ถ๋ ฅ์ฅ์น๋ฅผ ์ ์ดํ๋ ๋ฐฉ๋ฒ
โก Q. ์ด๋ป๊ฒ CPU๋ ์
์ถ๋ ฅ ์ฅ์น๋ค์ ์ฃผ์๋ฅผ ์๋ ๊ฑธ๊น?
- "ํ๋ฆฐํฐ ์ปจํธ๋กค๋ฌ์ ์ํ ๋ ์ง์คํฐ๋ฅผ ์ฝ์ด๋ผ" ์ ๊ฐ์ ๋ช
๋ น์ด๋ค์ ์ด๋ป๊ฒ ๋ช
๋ น์ด๋ก ํํ๋๊ณ , ๋ฉ๋ชจ๋ฆฌ์ ์ด๋ป๊ฒ ์ ์ฅ๋์ด ์์๊น?
๋ฉ๋ชจ๋ฆฌ ๋งต ์ ์ถ๋ ฅ
: ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๊ธฐ ์ํ ์ฃผ์ ๊ณต๊ฐ๊ณผ ์ ์ถ๋ ฅ์ฅ์น์ ์ ๊ทผํ๊ธฐ ์ํ ์ฃผ์๊ณต๊ฐ์ ํ๋์ ์ฃผ์๊ณต๊ฐ์ผ๋ก ๊ฐ์ฃผํ๋ ๋ฐฉ๋ฒ
์ฆ, 1024๊ฐ์ ์ฃผ์๋ฅผ ํํํ ์ ์๋ ์ปดํจํฐ๊ฐ 1024๊ฐ ์ ๋ถ๋ฅผ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ํํํ๋๋ฐ ์ฌ์ฉํ์ง๋ ์๋๋ค. ์ด๋, 512๊ฐ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ 512๊ฐ๋ ์ฅ์น ์ปจํธ๋กค๋ฌ์ ๋ ์ง์คํฐ๋ฅผ ํํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
๊ณ ๋ฆฝํ ์ ์ถ๋ ฅ
: ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ํ ์ฃผ์ ๊ณต๊ฐ๊ณผ ์ ์ถ๋ ฅ์ฅ์น๋ฅผ ์ํ ์ฃผ์๊ณต๊ฐ์ ๋ถ๋ฆฌํ๋ ๋ฐฉ๋ฒ
์ฆ, 1024๊ฐ์ ์ฃผ์๊ณต๊ฐ์ ๊ฐ์ง ์ปดํจํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ์๋ 1024๊ฐ์ ์ฃผ์๊ณต๊ฐ์ ํ์ฉํ๊ณ , ์ ์ถ๋ ฅ์ฅ์น๋ 1024๊ฐ์ ์ฃผ์๊ณต๊ฐ์ ํ์ฉํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
๋ฉ๋ชจ๋ฆฌ ๋งต ์ ์ถ๋ ฅ ๊ณ ๋ฆฝํ ์ ์ถ๋ ฅ
๋ฉ๋ชจ๋ฆฌ์ ์ ์ถ๋ ฅ์ฅ์น๋ ๊ฐ์ ์ฃผ์ ๊ณต๊ฐ ์ฌ์ฉ | ๋ฉ๋ชจ๋ฆฌ์ ์ ์ถ๋ ฅ์ฅ์น๋ ๋ถ๋ฆฌ๋ ์ฃผ์ ๊ณต๊ฐ ์ฌ์ฉ |
๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ์ด ์ถ์๋จ | ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ์ด ์ถ์๋์ง ์์ |
๋ฉ๋ชจ๋ฆฌ์ ์ ์ถ๋ ฅ ์ฅ์น์ ๊ฐ์ ๋ช ๋ น์ด ์ฌ์ฉ ๊ฐ๋ฅ | ์ ์ถ๋ ฅ ์ ์ฉ ๋ช ๋ น์ด ์ฌ์ฉ |
์ธํฐ๋ฝํธ ๊ธฐ๋ฐ ์ ์ถ๋ ฅ
: ์ฅ์น ์ปจํธ๋กค๋ฌ๊ฐ ์ ์ถ๋ ฅ ์์ ์ ๋๋ธ ๋ค CPU์๊ฒ ์ธํฐ๋ฝํธ ์์ฒญ ์ ํธ๋ฅผ ๋ณด๋ด๋ฉด CPU๋ ํ๋ ์ผ์ ์ ์ ๋ฐฑ์ ํ๊ณ ์ธํฐ๋ฝํธ ์๋น์ค ๋ฃจํด์ ์คํํ๋ค.
→ ์ฆ, ์ธํฐ๋ฝํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ ํ๋ ์ ์ถ๋ ฅ
ํด๋ง (Poling)
↔ ์ธํฐ๋ฝํธ์ ์์ฃผ ๋น๊ต๋๋ ๊ฐ๋
: ์ ์ถ๋ ฅ์ฅ์น์ ์ํ๋ ์ด๋ค์ง, ์ฒ๋ฆฌํ ๋ฐ์ดํฐ๊ฐ ์๋์ง๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ํ์ธํ๋ ๋ฐฉ์
์ธํฐ๋ฝํธ๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด CPU๊ฐ ์ธํฐ๋ฝํธ ์์ฒญ์ ๋ฐ์ ๋๊น์ง ์จ์ ํ ๋ค๋ฅธ ์ผ์ ์ง์คํ ์ ์๊ธฐ ๋๋ฌธ์ ์ธํฐ๋ฝํธ ๋ฐฉ์๋ณด๋ค CPU์ ๋ถ๋ด์ด ํฌ๋ค.
์ ์ถ๋ ฅ ์ฅ์น๊ฐ ๋ง์ ๋
Ex. ํค๋ณด๋๋ก ๊ธ์ ์ ๋ ฅ, ๋ชจ๋ํฐ๋ก ์ ๋ ฅํ ๊ธ์๋ฅผ ์ค์๊ฐ์ผ๋ก ๋์์ฃผ๊ธฐ, ๋์์ ์ฌ์ดํธ์์ ์์ ์ฌ์ → ์คํผ์ปค์์ ์์ ํ๋ฌ๋์ด , ๊ด๊ณ ๊ฐ ๋์ฌ๋ ๊ฑด๋๋ฐ๊ธฐ ์ํด ๋ง์ฐ์ค ์์ง์ด๊ธฐ ๋ฑ
⇒ ๋์๋ค๋ฐ์ ์ผ๋ก CPU๊ฐ ํค๋ณด๋, ๋ง์ฐ์ค, ๋ชจ๋ํฐ, ์คํผ์ปค ์ธํฐ๋ฝํธ๋ฅผ ๋ชจ๋ ์ฒ๋ฆฌํด์ผ ํ๋ ๊ฒฝ์ฐ
์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ ์์๋๋ก ์ธํฐ๋ฝํธ๋ฅผ ์ฒ๋ฆฌํ๋ค.
BUT! ํ์ค์ ์ผ๋ก ๋ชจ๋ ์ธํฐ๋ฝํธ๋ฅผ ์ ๋ถ ์์ฐจ์ ์ผ๋ก๋ง ํด๊ฒฐํ ์๋ ์๋ค. ์ธํฐ๋ฝํธ ์ค์์๋ ๋ ๋นจ๋ฆฌ ์ฒ๋ฆฌํด์ผ ํ๋ ์ธํฐ๋ฝํธ๊ฐ ์๊ธฐ ๋๋ฌธ! (์ฐ์ ์์๊ฐ ๋์ ์ธํฐ๋ฝํธ)
์ฆ, NMI (Non-Maskable Interrupt, ์ธํฐ๋ฝํธ ๋นํธ๋ฅผ ๋นํ์ฑํํด๋ ๋ฌด์ํ ์ ์๋ ์ธํฐ๋ฝํธ) ๊ฐ ๋ฐ์ํ๊ฑฐ๋, ํ๋๊ทธ ๋ ์ง์คํฐ ์ ์ธํฐ๋ฝํธ ๋นํธ๊ฐ ํ์ฑํ ๋์๋ ๊ฒฝ์ฐ CPU๋ ์ฐ์ ์์๊ฐ ๋์ ์ธํฐ๋ฝํธ๋ถํฐ ์ฒ๋ฆฌํ๋ค.
PIC(Programmable Interrupt Controller) _ ํ๋ก๊ทธ๋๋จธ๋ธ ์ธํฐ๋ฝํธ ์ปจํธ๋กค๋ฌ
: ๋ง์ ์ปดํจํฐ์์ ์ฌ์ฉํ๋ ๋ค์ค ์ธํฐ๋ฝํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ
- ์ฌ๋ฌ ์ฅ์น ์ปจํธ๋กค๋ฌ์ ์ฐ๊ฒฐ๋์ด ์ฅ์น ์ปจํธ๋กค๋ฌ์์ ๋ณด๋ธ ํ๋์จ์ด ์ธํฐ๋ฝํธ ์์ฒญ๋ค์ ์ฐ์ ์์๋ฅผ ํ๋ณํ ํ,
CPU์ ์ง๊ธ ์ฒ๋ฆฌํด์ผ ํ ํ๋์จ์ด ์ธํฐ๋ฝํธ๋ ๋ฌด์์ธ์ง๋ฅผ ์๋ ค์ฃผ๋ ์ฅ์น
PIC
- ๊ฐ ํ์๋ CPU์ ํ๋์จ์ด ์ธํฐ๋ฝํธ ์์ฒญ์ ๋ณด๋ผ ์ ์๋ ์ฝ์๋ ํ๋์จ์ด๊ฐ ์ฐ๊ฒฐ๋์ด ์๋ค.
- ์ฐ๊ฒฐ๋ ์ฅ์น ์ปจํธ๋กค๋ฌ๋ค์ด ๋์์ ํ๋์จ์ด ์ธํฐ๋ฝํธ ์์ฒญ์ ๋ณด๋ด๋ฉด PIC๋ ์ด๋ค์ ์ฐ์ ์์๋ฅผ ํ๋จํ์ฌ CPU์ ๊ฐ์ฅ ๋จผ์ ์ฒ๋ฆฌํ ์ธํฐ๋ฝํธ๋ฅผ ์๋ ค์ค๋ค.
PIC์ ๋ค์ค ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ ๊ณผ์
- PIC๊ฐ ์ฅ์น ์ปจํธ๋กค๋ฌ์์ ์ธํฐ๋ฝํธ ์์ฒญ ์ ํธ(๋ค)๋ฅผ ๋ฐ์๋ค์ธ๋ค.
- PIC๋ ์ธํฐ๋ฝํธ ์ฐ์ ์์๋ฅผ ํ๋จํ ๋ค CPU์ ์ฒ๋ฆฌํด์ผ ํ ์ธํฐ๋ฝํธ ์์ฒญ ์ ํธ๋ฅผ ๋ณด๋ธ๋ค.
- CPU๋ PIC์ ์ธํฐ๋ฝํธ ํ์ธ ์ ํธ๋ฅผ ๋ณด๋ธ๋ค.
- PIC๋ ๋ฐ์ดํฐ ๋ฒ์ค๋ฅผ ํตํด CPU์ ์ธํฐ๋ฝํธ ๋ฒกํฐ๋ฅผ ๋ณด๋ธ๋ค.
- CPU๋ ์ธํฐ๋ฝํธ ๋ฒกํฐ๋ฅผ ํตํด ์ธํฐ๋ฝํธ ์์ฒญ์ ์ฃผ์ฒด๋ฅผ ์๊ฒ ๋๊ณ , ํด๋น ์ฅ์น์ ์ธํฐ๋ฝํธ ์๋น์ค ๋ฃจํด์ ์คํํ๋ค.
โก + ์ถ๊ฐ๋ด์ฉ ์ฐธ๊ณ ๋ก, PIC๊ฐ ๋ฌด์ํ ์ ์๋ ์ธํฐ๋ฝํธ์ธ NMI ๊น์ง ์ฐ์ ์์๋ฅผ ํ๋ณํ์ง๋ ์๋๋ค
→ ์ด๋, NMI๋ ์ฐ์ ์์๊ฐ ํญ์ ๊ฐ์ฅ ๋์ ์ฐ์ ์์๋ฅผ ํ๋ณํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ฆ, PIC๊ฐ ์ฐ์ ์์๋ฅผ ์กฐ์ ํด์ฃผ๋ ์ธํฐ๋ฝํธ๋ ์ธํฐ๋ฝํธ ๋นํธ๋ฅผ ํตํด ๋ง์ ์ ์๋ ํ๋์จ์ด ์ธํฐ๋ฝํธ์ด๋ค.
์์์ ์ค๋ช
ํ ํ๋ก๊ทธ๋จ ๊ธฐ๋ฐ ์
์ถ๋ ฅ, ์ธํฐ๋ฝํธ ๊ธฐ๋ฐ ์
์ถ๋ ฅ์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ์ด๋์ CPU๊ฐ ์ฃผ๋ํ๊ณ ,
์ด๋ํ๋ ๋ฐ์ดํฐ๋ ๋ฐ๋์ CPU๋ฅผ ๊ฑฐ์น๋ค๋ ํน์ง์ ๊ฐ์ง๊ณ ์๋ค.
DMA ์ ์ถ๋ ฅ
DMA = Direct Memory Access
: ์ ์ถ๋ ฅ ์ฅ์น์ ๋ฉ๋ชจ๋ฆฌ๊ฐ CPU๋ฅผ ๊ฑฐ์น์ง ์๊ณ ๋ ์ํธ์์ฉํ ์ ์๋ ์ ์ถ๋ ฅ ๋ฐฉ์
- DMA ์ปจํธ๋กค๋ฌ : DMA ์ ์ถ๋ ฅ์ ํ๊ธฐ ์ํด์ ํ์ํ ์์คํ ๋ฒ์ค์ ์ฐ๊ฒฐ๋ ํ๋์จ์ด
DMA ์ ์ถ๋ ฅ ๊ณผ์
- CPU๋ DMA ์ปจํธ๋กค๋ฌ์ ์ ์ถ๋ ฅ์ฅ์น์ ์ฃผ์, ์ํํ ์ฐ์ฐ(์ฝ๊ธฐ/์ฐ๊ธฐ), ์ฝ๊ฑฐ๋ ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์ ๋ฑ๊ณผ ๊ฐ์ ์ ๋ณด๋ก ์ ์ถ๋ ฅ ์์ ๋ช ๋ น
- DMA ์ปจํธ๋กค๋ฌ๋ CPU ๋์ ์ฅ์น ์ปจํธ๋กค๋ฌ์ ์ํธ์์ฉํ๋ฉฐ ์ ์ถ๋ ฅ ์์ ์ ์ํ ์ด๋ DMA ์ปจํธ๋กค๋ฌ๋ ํ์ํ ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ง์ ์ ๊ทผํ์ฌ ์ ๋ณด๋ฅผ ์ฝ๊ฑฐ๋ ์ด๋ค.
- ์ ์ถ๋ ฅ ์์ ์ด ๋๋๋ฉด DMA ์ปจํธ๋กค๋ฌ๋ CPU์ ์ธํฐ๋ฝํธ๋ฅผ ๊ฑธ์ด ์์ ์ด ๋๋ฌ์์ ์๋ฆผ
โก ์
์ถ๋ ฅ ์ฅ์น์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ด์ ์ฃผ๊ณ ๋ฐ์ ๋ฐ์ดํฐ๋ CPU๋ฅผ ๊ฑฐ์น์ง ์๋๋ค.
๋ฐ๋ผ์ ์์
๋ช
๋ น์ ๋ด๋ฆฌ๊ณ , ์ธํฐ๋ฝํธ๋ง ๋ฐ์ผ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์์
๋ถ๋ด์ ํจ์ฌ ์ค์ผ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ค.
But, DMA ์ปจํธ๋กค๋ฌ๋ ์์คํ ๋ฒ์ค๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ง์ ์ ๊ทผ์ด ๊ฐ๋ฅํ์ง๋ง, ์์คํ ๋ฒ์ค๋ ๋์ ์ฌ์ฉ์ด ๋ถ๊ฐ๋ฅํ๋ค. ์ฆ, CPU๊ฐ ์์คํ ๋ฒ์ค๋ฅผ ์ฌ์ฉํ๊ณ ์๋ ๊ฒฝ์ฐ DMA์ปจํธ๋กค๋ฌ๋ ์์คํ ๋ฒ์ค๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
๋ฐ๋ผ์ CPU๊ฐ ์์คํ
๋ฒ์ค๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ์ด๊ฑฐ๋, CPU์๊ฒ ํ๋ฝ์ ๊ตฌํ๊ณ ์์คํ
๋ฒ์ค๋ฅผ ์ผ์์ ์ผ๋ก ์ฌ์ฉํ๊ฒ ๋๋ค.
(์ฌ์ดํด ์คํธ๋ง = Cycle Stealing)
์ ์ถ๋ ฅ ๋ฒ์ค
: ์ ์ถ๋ ฅ ์ฅ์น๋ฅผ ์ปดํจํฐ ๋ด๋ถ์ ์ฐ๊ฒฐ์ง๋ ํต๋ก
- PCI๋ฒ์ค
- PCI Express(PCIe)๋ฒ์ค
- PCIe์ฌ๋กฏ : PCIe ๋ฒ์ค์ ์ฐ๊ฒฐํด์ฃผ๋ ํต๋ก
'๐ฉ๐ปโ๐ป Developer > ํผ๊ณต์ปด์ด_CS์ง์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํผ๊ณต์ปด์ด] Chapter 05-2 ๋ช ๋ น์ด ๋ณ๋ ฌ ์ฒ๋ฆฌ ๊ธฐ๋ฒ (0) | 2024.04.02 |
---|---|
[ํผ๊ณต์ปด์ด] Chapter 07-1 ๋ค์ํ ๋ณด์กฐ๊ธฐ์ต์ฅ์น (0) | 2024.03.28 |
[ํผ๊ณต์ปด์ด] Chapter 01 ์ปดํจํฐ ๊ตฌ์กฐ ์์ํ๊ธฐ (0) | 2023.12.13 |
๋๊ธ