MICOM๊ณผ MPU

ยท 1506 words ยท 4 minute read

๊ฐœ์š” ๐Ÿ”—

์นด๋ฉ”๋ผ ๊ด€๋ จ ์—…๋ฌด๋กœ ARM Cortex A7 Single ๋ชจ๋ธ์„ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜์ง€๋งŒ A53, MICOM ๊ณผ์˜ ์ธํ„ฐ๋ŸฝํŠธ ์ถฉ๋Œ ๋ฌธ์ œ๊ฐ€ ์ผ์–ด๋‚  ๋•Œ๊ฐ€ ์žˆ๋‹ค. UART ๋ถ€ํŠธ ๋ฐ LVDS ์ฑ„๋„ ๋ณ€๊ฒฝ, ๋” ๋‚˜์•„๊ฐ€ ์นด๋ฉ”๋ผ ์„ผ์„œ์˜ ์ดˆ๊ธฐํ™”๊นŒ์ง€ ๋งˆ์ด์ปด์—์„œ ๋‹ด๋‹นํ•˜๊ฒŒ ๋˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์žˆ์–ด ๋งˆ์ด์ปด์ด ์ •ํ™•ํžˆ ์–ด๋–ค ๊ฒƒ์ธ์ง€ ํ•œ๋ฒˆ์€ ์งš๊ณ  ๋„˜์–ด๊ฐ€์•ผ ํ–ˆ๋‹ค.

๋งˆ์นจ ํ•œ ๋ธ”๋กœ๊ทธ์— ๋งˆ์ด์ปด์— ๋Œ€ํ•ด ๊ฐ„๋žตํ•˜๊ฒŒ ์ •๋ฆฌ๊ฐ€ ๋˜์–ด ์žˆ๊ณ  ์—ฐ๊ด€๋œ ํ† ํ”ฝ ๋ณ„๋กœ ์ •๋ฆฌํ•ด๋†“์€ ํŽ˜์ด์ง€๊ฐ€ ์žˆ์–ด ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๊ฐ„์ถ”๋ ค ๋ณธ ํŽ˜์ด์ง€๋กœ ์ •๋ฆฌํ•˜๊ธฐ๋กœ ํ•œ๋‹ค.

๋ณธ๋ฌธ ๐Ÿ”—

์ถœ์ฒ˜ ๋‚ด์šฉ ๊ทธ๋Œ€๋กœ uC๋Š” MicroController, uP๋Š” MicroProcessor, “Adv"๋Š” Advanced Topic์˜ ์ค„์ž„๋ง๋กœ์„œ ์‚ฌ์šฉํ•œ๋‹ค.

[uC] ๋งˆ์ด์ปด vs. ๋งˆ์ดํฌ๋กœ ํ”„๋กœ์„ธ์„œ ๐Ÿ”—

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

PC์˜ ์„ฑ๋Šฅ/๊ธฐ๋Šฅ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ฐ€๋Šฅํ•œ ๋กฌ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งˆ์ด์ปด์นฉ๊ณผ ๊ฐ„๋‹จํ•œ ์ฃผ๋ณ€ํšŒ๋กœ ๋งŒ์œผ๋กœ ํŠน์ • ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งˆ์ด์ปด์€ ์ฃผ๋ณ€์—์„œ ํ”ํ•˜๊ฒŒ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ ๋ƒ‰์žฅ๊ณ , ์„ธํƒ๊ธฐ, TV, VCR, ๋งˆ์ดํฌ๋กœ์›จ์ด๋ธŒ ์˜ค๋ธ ๋“ฑ ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ ํ™˜๊ฒฝ์— ์ ์šฉ๋˜์–ด ์žˆ๋‹ค.

[uC] ๋งˆ์ด์ปด ์ฃผ๋ณ€ํšŒ๋กœ ๐Ÿ”—

8๋น„ํŠธ ๋งˆ์ด์ปด์€ ์—ฐ์‚ฐ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ALU์™€ ๋ฉ”๋ชจ๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค ๋ถ€๋ถ„ ๊ทธ๋ฆฌ๊ณ  ์ฃผ๋ณ€ํšŒ๋กœ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ์ฃผ๋ณ€ํšŒ๋กœ์—๋Š” ์ธํ„ฐ๋ŸฝํŠธ, ํƒ€์ด๋จธ, UART ๋“ฑ์ด ์žˆ๋‹ค. 32๋น„ํŠธ ๋งˆ์ด์ปด์˜ ์ฃผ๋ณ€ ๊ธฐ๊ธฐ๋„ 8๋น„ํŠธ์™€ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š๋‹ค.

[uC] ํƒ€์ด๋จธ(Timer) ๐Ÿ”—

ํƒ€์ด๋จธ๋Š” ํ”ํžˆ ์•Œ๊ณ  ์žˆ๋Š” ์Šคํ†ฑ์›Œ์น˜์™€ ๋น„์Šทํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋‚˜ ์ฒ˜์ด๊ฐ€ ์žˆ๋‹ค. ์Šคํ†ฑ์›Œ์ง€๋Š” ์‹œ๊ฐ„์ด ์–ผ๋งˆ๋‚˜ ํ˜๋ €๋Š”์ง€๋ฅผ ์ธก์ •ํ•˜์ง€๋งŒ ํƒ€์ด๋จธ๋Š” ์ง€์ •ํ•œ ์‹œ๊ฐ„์ด ๊ฒฝ๊ณผํ•˜๋ฉด ์•Œ๋ ค์ฃผ๊ฒŒ ๋˜์–ด์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋งˆ์ด์ปด์ด 1/100์ดˆ์— ํ•œ๋ฒˆ์”ฉ ํ‚คํŒจ๋“œ๋ฅผ ์Šค์บ”ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ๋งˆ์ด์ปด์€ ํ‚ค๊ฐ€ ์–ธ์ œ ๋ˆŒ๋Ÿฌ์ง€๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ํ•ญ์ƒ ํ‚คํŒจ๋“œ๋ฅผ ์ผ์ • ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ์œผ๋กœ ์Šค์บ”(polling)ํ•ด์•ผ ํ•œ๋‹ค.

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

[uC] Reset Vector ๐Ÿ”—

๋ฆฌ์…‹ ๋ฒกํ„ฐ๋Š” ๋งˆ์ด์ปด์— ๋ฆฌ์…‹์ด ์ธ๊ฐ€๋˜์—ˆ์„ ๋•Œ ๋งˆ์ด์ปด์ด ์ฒ˜์Œ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ์–ด๋“œ๋ ˆ์Šค๋ฅผ ๋งํ•œ๋‹ค. ๋งˆ์ด์ปด์— ์ „์›์ด ์ธ๊ฐ€๋˜์—ˆ์„ ๋•Œ ๋งˆ์ด์ปด์ด ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด๋ ค๋ฉด ๋ฆฌ์…‹ ๋ฒกํ„ฐ๋ฅผ ๊ณต๋ถ€ํ•ด์•ผํ•œ๋‹ค. ์ด ์šฉ์–ด์—์„œ์˜ ๋ฒกํ„ฐ๋Š” ๋ฌผ๋ฆฌ์‹œ๊ฐ„์— ๋ฐฐ์šด ํฌ๊ธฐ์™€ ๋ฐฉํ–ฅ์„ ๊ฐ™๋Š” ์˜๋ฏธ์˜ ๋ฒกํ„ฐ์™€๋Š” ๋ฌด๊ด€ํ•˜๋‹ค.

[uP] Register File ๐Ÿ”—

๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ๋ชจ์—ฌ์žˆ๋Š” ๊ฒƒ์„ ๋ ˆ์ง€์Šคํ„ฐ ํŒŒ์ผ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

[uP] DMA ๐Ÿ”—

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

[uP] Super Scalar ๐Ÿ”—

๋ฒกํ„ฐ(Vector) ํ”„๋กœ์„ธ์„œ์˜ ๋ฐ˜๋Œ€๋ง์ด ์Šค์นผ๋ผ ํ”„๋กœ์„ธ์„œ์ด๋‹ค. ์Šค์นผ๋ผ ํ”„๋กœ์„ธ์„œ๋Š” ํ•œ๋ฒˆ์— ํ•˜๋‚˜์˜ ๋ช…๋ น์–ด๋งŒ ์‹คํ–‰ํ•˜๋ฉฐ ์Šˆํผ์Šค์นผ๋ผ๋Š” ๋ฒกํ„ฐ์™€ ์Šค์นผ๋ผ ์ค‘๊ฐ„ ์ •๋„์— ํ•ด๋‹นํ•œ๋‹ค. ์ฆ‰ ํ•œ๋ฒˆ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

[uP] Trap and Interrupt ๐Ÿ”—

ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘์— ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋‚˜ ์–ธ๋”ํ”Œ๋กœ์šฐ ๊ฐ™์€ ํŠน์ดํ•œ ์‚ฌํ•ญ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ ํ”„๋กœ๊ทธ๋žจ์€ ๋ฏธ๋ฆฌ ์„ค์ •ํ•ด ๋†“์€ ํŠน์ • ๋ฒˆ์ง€๋กœ ์ ํ”„ํ•˜์—ฌ ๊ทธ๊ณณ์˜ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋ ‡๊ฒŒ ํ”„๋กœ๊ทธ๋žจ์ด ์ž๋™์œผ๋กœ ํŠน์ • ๋ฒˆ์ง€๋กœ ์ ํ”„ํ•˜์—ฌ ๊ทธ๊ณณ์˜ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ํŠธ๋žฉ์ด๋ผ ํ•˜๊ณ  ํ•ด๋‹น ๋ฒˆ์ง€์— ์žˆ๋Š” ํ•ธ๋“ค๋Ÿฌ๋ฅผ ํŠธ๋žฉ ํ•ธ๋“ค๋Ÿฌ๋ผ๊ณ  ํ•œ๋‹ค.

์ด๋Ÿฌํ•œ ํŠธ๋žฉ๊ณผ ์ธํ„ฐ๋ŸฝํŠธ์˜ ์ฃผ๋œ ์ฐจ์ด์ ์€ ํŠธ๋žฉ์€ ์–ด๋–ค ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ ์‹œ์ผฐ์„ ๋•Œ ํ•ญ์ƒ ๊ณ ์ •๋œ ์œ„์น˜์—์„œ ์ผ์–ด๋‚˜๋‚˜ (์™ธ๋ถ€)์ธํ„ฐ๋ŸฝํŠธ๋Š” ์–ธ์ œ ๋ฐœ์ƒํ• ์ง€ ๋ชจ๋ฅธ๋‹ค๋Š” ์ ์ด๋‹ค.

์ถœ์ฒ˜ ๐Ÿ”—