[์ด์์ฒด์ ] ์ปดํจํฐ์ ์์
์ปดํจํฐ๋ CPU / DMA ์ปจํธ๋กค๋ฌ / ๋ฉ๋ชจ๋ฆฌ / ํ์ด๋จธ / ๋๋ฐ์ด์ค ์ปจํธ๋กค๋ฌ ๋ฑ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
ํ ๊ฐ์ฉ ์ฐจ๋ก๋ก ์์๋ณด๊ธฐ๋ก ํ์!
CPU(Central Processing Unit)
CPU๋ ์ฐ์ ๋ ผ๋ฆฌ์ฐ์ฐ์ฅ์น(ALU), ์ ์ด์ฅ์น(CU), ๋ ์ง์คํฐ(register)๋ก ๊ตฌ์ฑ๋์ด ์๋ ์ปดํจํฐ ์ฅ์น์ด๋ค.
์ธํฐ๋ฝํธ์ ์ํด ๋จ์ํ๊ฒ ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ๋ ๋ช ๋ น์ด๋ฅผ ํด์ํด์ ์คํํ๋ ์ญํ ์ ํ๋ค.
์ฆ, ์ด์์ฒด์ ์ ์ปค๋์ด ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค์ ํ๋ก์ธ์ค๋ก ๋ง๋ค๋ฉด CPU๊ฐ ์ด๋ฅผ ์ฒ๋ฆฌํ๋ค.
์ ์ด์ฅ์น(Control Unit)
์ ์ด ์ฅ์น๋ ํ๋ก์ธ์ค ์กฐ์์ ์ง์ํ๋ CPU์ ํ ๋ถํ์ด๋ค.
์ ์ถ๋ ฅ ์ฅ์น๊ฐ ํต์ ์ ์ ์ดํ๊ณ ๋ช ๋ น์ด๋ค์ ์ฝ๊ณ ํด์ํ๋ฉฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ์์๋ฅผ ๊ฒฐ์ ํ๋ค.
๋ ์ง์คํฐ(register)
CPU ์์ ์๋ ๋งค์ฐ ๋น ๋ฅธ ์์๊ธฐ์ต์ฅ์น์ด๋ค. CPU์ ์ง์ ์ฐ๊ฒฐ๋์ด ์์ด ์ฐ์ฐ ์๋๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ์์ญ ๋ฐฐ์์ ์๋ฐฑ ๋ฐฐ๊น์ง ๋น ๋ฅด๋ค.
CPU๋ ์์ฒด์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ฐฉ๋ฒ์ด ์๊ธฐ ๋๋ฌธ์ ๋ ์ง์คํฐ๋ฅผ ๊ฑฐ์ณ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ค.
์ฐ์ ๋ ผ๋ฆฌ์ฐ์ฐ์ฅ์น(Arithmetic Logic Unit, ALU)
ALU๋ ๋ง์ , ๋บ์ ๊ฐ์ ๋ ์ซ์์ ์ฐ์ ์ฐ์ฐ๊ณผ ๋ฐฐํ์ ๋ ผ๋ฆฌํฉ, ๋ ผ๋ฆฌ๊ณฑ ๊ฐ์ ๋ ผ๋ฆฌ ์ฐ์ฐ์ ๊ณ์ฐํ๋ ๋์งํธ ํ๋ก์ด๋ค.
CPU ์ฐ์ฐ ์ฒ๋ฆฌ ๋ฐฉ์
CPU์์ ์ ์ด์ฅ์น, ๋ ์ง์คํฐ, ์ฐ์ ๋ ผ๋ฆฌ์ฐ์ฐ์ฅ์น๋ฅผ ํตํด ์ฐ์ฐํ๋ ์๋ ๋ค์๊ณผ ๊ฐ๋ค.
1. ์ ์ด์ฅ์น๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ๊ณ์ฐํ ๊ฐ์ ๋ก๋ํ๊ณ , ๋ ์ง์คํฐ์๋ ๋ก๋ํ๋ค.
2. ์ ์ด์ฅ์น๊ฐ ๋ ์ง์คํฐ์ ์๋ ๊ฐ์ ๊ณ์ฐํ๋ผ๊ณ ์ฐ์ ๋ ผ๋ฆฌ์ฐ์ฐ์ฅ์น์ ๋ช ๋ นํ๋ค.
3. ์ ์ด์ฅ์น๊ฐ ๋ค์ '๋ ์ง์คํฐ์์ ๋ฉ๋ชจ๋ฆฌ๋ก' ๊ณ์ฐ๋ ๊ฐ์ ์ ์ฅํ๋ค.
์ธํฐ๋ฝํธ(Interrupt)
์ธํฐ๋ฝํธ๋ ์ด๋ค ์ ํธ๊ฐ ๋ค์ด์์ ๋ CPU๋ฅผ ์ ๊น ์ ์ง์ํค๋ ๊ฒ์ ๋งํ๋ค.
๋ํ์ ์ผ๋ก, ํค๋ณด๋, ๋ง์ฐ์ค ๋ฑ IO ๋๋ฐ์ด์ค๋ก ์ธํ ์ธํฐ๋ฝํธ, 0์ผ๋ก ์ซ์๋ฅผ ๋๋๋ ์ฐ์ ์ฐ์ฐ์ ์ํ ์ธํฐ๋ฝํธ, ํ๋ก์ธ์ค ์ค๋ฅ ๋ฑ์ผ๋ก ๋ฐ์ํ๋ค.
์ธํฐ๋ฝํธ๊ฐ ๋ฐ์๋๋ฉด, ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ ํจ์๊ฐ ๋ชจ์ฌ ์๋ ์ธํฐ๋ฝํธ ๋ฒกํฐ๋ก ๊ฐ์ ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ ํจ์๊ฐ ์คํ๋๋ค.
์ธํฐ๋ฐํธ ๊ฐ์๋ ์ฐ์ ์์๊ฐ ์๊ณ , ์ฐ์ ์์์ ๋ฐ๋ผ ์คํ๋๋ฉฐ, ์ธํฐ๋ฝํธ๋ ํ๋์จ์ด ์ธํฐ๋ฝํธ / ์ํํธ์จ์ด ์ธํฐ๋ฝํธ ๋ ๊ฐ์ง๋ก ๋๋จ.
* ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ ํจ์ : ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ์ ๋ ์ด๋ฅผ ํธ๋ค๋งํ๊ธฐ ์ํ ํจ์. ์ปค๋ ๋ด๋ถ์ IRQ(์ธํฐ๋ฝํธ ์์ฒญ)๋ฅผ ํตํด ํธ์ถ๋๋ฉฐ, request_irq()๋ฅผ ํตํด ์ธํฐ๋ฝํธ ํธ๋ค๋ฌ ํจ์๋ฅผ ๋ฑ๋กํ ์ ์๋ค.
- ํ๋์จ์ด ์ธํฐ๋ฝํธ
- ํ๋์จ์ด ์ธํฐ๋ฝํธ๋ ํค๋ณด๋๋ ๋ง์ฐ์ค๋ฅผ ์ฐ๊ฒฐํ๋ ๋ฑ์ IO ๋๋ฐ์ด์ค์์ ๋ฐ์ํ๋ ์ธํฐ๋ฝํธ๋ฅผ ๋งํ๋ค.
- ์ด๋ ์ธํฐ๋ฝํธ ๋ผ์ธ์ด ์ค๊ณ๋ ์ดํ ์์ฐจ์ ์ธ ์ธํฐ๋ฝํธ ์คํ์ ์ค์งํ๊ณ ์ด์์ฒด์ ์ ์์คํ ์ฝ์ ์์ฒญํด์ ์ํ๋ ๋๋ฐ์ด์ค๋ก ํฅํด ๋๋ฐ์ด์ค์ ์๋ ์์ ๋ก์ปฌ ๋ฒํผ์ ์ ๊ทผํ์ฌ ์ผ์ ์ํํ๋ค.
- ์ํํธ์จ์ด ์ธํฐ๋ฝํธ
- ํธ๋ฉ(trap)์ด๋ผ๊ณ ๋ถ๋ฆฌ๊ธฐ๋ ํ๋ฉฐ, ํ๋ก์ธ์ค ์ค๋ฅ ๋ฑ์ผ๋ก ํ๋ก์ธ์ค๊ฐ ์์คํ ์ฝ์ ํธ์ถํ ๋ ๋ฐ๋ํ๋ค.
DMA(Direct Memory Access) ์ปจํธ๋กค๋ฌ
DMA ์ปจํธ๋กค๋ฌ๋ CPU์ ๋์์์ด I/O ๋๋ฐ์ด์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ง์ ์ ๊ทผํ ์ ์๋๋ก ํ๋ ํ๋์จ์ด ์ฅ์น๋ฅผ ๋ปํ๋ค.
CPU์๋ง ๋๋ฌด ๋ง์ ์ธํฐ๋ฝํธ ์์ฒญ์ด ๋ค์ด์ค๊ธฐ ๋๋ฌธ์, CPU ๋ถํ๋ฅผ ๋ง์์ฃผ๋ฉฐ CPU์ ์ผ์ ๋ถ๋ดํ๋ ๋ณด์กฐ ์ญํ ์ด๋ผ ํ ์ ์๋ค.
๋, ํ๋์ ์์ ์ CPU์ DMA ์ปจํธ๋กค๋ฌ๊ฐ ๋์์ ํ๋ ๊ฒ์ ๋ฐฉ์งํ๋ค.
๋ฉ๋ชจ๋ฆฌ(Memory)
๋ฉ๋ชจ๋ฆฌ๋ ์ ์ํ๋ก์์ ๋ฐ์ดํฐ๋ ์ํ, ๋ช ๋ น์ด ๋ฑ์ ๊ธฐ๋กํ๋ ์ฅ์น๋ฅผ ๋งํ๋ค.
๋ณดํต RAM(Ramdom Access Memory)์ ๋งํ๋ค. CPU๋ ๊ณ์ฐ์ ๋ด๋นํ๊ณ , ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ธฐ์ต์ ๋ด๋นํ๋ค.
๊ณต์ฅ์ ๋น์ ํ์๋ฉด, CPU๋ ์ผ๊พผ์ด๊ณ ๋ฉ๋ชจ๋ฆฌ๋ ์์ ์ฅ์ด๋ฉฐ, ์์ ์ฅ์ ํฌ๊ธฐ๊ฐ ๊ณง ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ์ด๋ค.
์์ ์ฅ์ด ํด์๋ก ์ฐฝ๊ณ ์์ ๋ฌผ๊ฑด์ ๋ง์ด ๊ฐ์ ธ๋ค๋๊ณ ๋ง์ ์ผ์ ํ ์ ์๋ฏ์ด ๋ฉ๋ชจ๋ฆฌ๊ฐ ํฌ๋ฉด ํด์๋ก ๋ง์ ์ผ์ ๋์์ ํ ์ ์๋ค.
ํ์ด๋จธ(Timer)
๋ช ์ด ์์๋ ์์ ์ด ๋๋์ผ ํ๋ค๋ ๊ฒ์ ์ ํ๊ณ ํน์ ํ๋ก๊ทธ๋จ์ ์๊ฐ ์ ํ์ ์ฃผ๋ ์ญํ ์ ํ๋ค.
์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๋ ํ๋ก๊ทธ๋จ์ด ์๋ํ ๋ ์ ํ์ ๊ฑธ๊ธฐ ์ํด ์กด์ฌํ๋ค.
๋๋ฐ์ด์ค ์ปจํธ๋กค๋ฌ(Device Controller), ๋ก์ปฌ ๋ฒํผ(Local Buffer)
๋๋ฐ์ด์ค ์ปจํธ๋กค๋ฌ๋ ์ปดํจํฐ์ ์ฐ๊ฒฐ๋์ด ์๋ I/O ๋๋ฐ์ด์ค๋ค์ ์์ CPU๋ฅผ ๋งํ๊ณ , ์์ ๋ถ์ด ์๋ ๋ก์ปฌ ๋ฒํผ๋ ๊ฐ ๋๋ฐ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ์์๋ก ์ ์ฅํ๊ธฐ ์ํ ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ปํจ.