์ ๋ ฌ ์ ์ฝ์ด๋?
์ํคํ
์ฒ์์ alignment restriction(์ ๋ ฌ ์ ์ฝ)์ด๋, ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์์ ํน์ ๋ฐ์ดํฐ ์ ํ์ด ์ ์ฅ๋ ์ ์๋ ์ฃผ์์ ์ ๋ ฌ์ ์ ํํ๋ ๊ท์น์ ์๋ฏธํฉ๋๋ค. ์ด๋ ์ฑ๋ฅ์ ์ต์ ํํ๊ณ ํ๋์จ์ด์ ํจ์จ์ฑ์ ๋์ด๊ธฐ ์ํด ๋์
๋ ๊ฐ๋
์
๋๋ค.
์ ๋ ฌ์ ๋ฐ์ดํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ๋ ํน์ ํฌ๊ธฐ์ ๊ฒฝ๊ณ(์ฃผ๋ก 2, 4, 8, 16๋ฐ์ดํธ ๋ฑ)์ ๋ง์ถฐ ์ ์ฅ๋๋ ๊ฒ์ ๋งํฉ๋๋ค. ์๋ฅผ ๋ค์ด, 4๋ฐ์ดํธ ํฌ๊ธฐ์ ๋ฐ์ดํฐ(์: int
ํ ๋ฐ์ดํฐ)๊ฐ ๋ฉ๋ชจ๋ฆฌ์์ 4์ ๋ฐฐ์์ธ ์ฃผ์์ ์ ์ฅ๋๋๋ก ํ๋ ๊ฒ์ด ์ ๋ ฌ์
๋๋ค.
์ ๋ ฌ ์ ์ฝ์ด ์ค์ํ ์ด์ :
- ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์๋: ๋๋ถ๋ถ์ ํ๋ CPU๋ ๋ฉ๋ชจ๋ฆฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋ ์ ๋ ฌ๋ ์ฃผ์์์ ๋ฐ์ดํฐ๋ฅผ ๋ ๋น ๋ฅด๊ฒ ์ฝ์ด์ฌ ์ ์์ต๋๋ค. ์ ๋ ฌ๋์ง ์์ ๋ฐ์ดํฐ๋ ์ฌ๋ฌ ๋ฒ์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ด ํ์ํ ์ ์์ด ์ฑ๋ฅ ์ ํ๋ฅผ ์ด๋ํฉ๋๋ค.
- ๋ฒ์ค ํญ: ๋ฉ๋ชจ๋ฆฌ ๋ฒ์ค์ ํญ์ ์ ํด์ ธ ์๊ธฐ ๋๋ฌธ์, ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋ ์ฃผ์์ ์์ผ๋ฉด ํ ๋ฒ์ ์ฝ์ ์ ์์ง๋ง, ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ ๋ฒ ์ด์์ ์ ๊ทผ์ด ํ์ํ ์ ์์ต๋๋ค.
- ํ๋์จ์ด ๋ณต์ก์ฑ ๊ฐ์: ์ ๋ ฌ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ํ๋์จ์ด๋ ๊ฐ๋จํ ๊ตฌ์กฐ๋ก ๊ตฌํํ ์ ์์ด, ์ค๊ณ ๋ฐ ์ ์กฐ ๋น์ฉ์ ์ ๊ฐํ ์ ์์ต๋๋ค.
์ ๋ ฌ ์ ์ฝ์ ์:
- 32๋นํธ ์์คํ
์์๋
int
(4๋ฐ์ดํธ)๊ฐ 4๋ฐ์ดํธ ๊ฒฝ๊ณ์ ๋ง์ถฐ ์ ์ฅ๋์ด์ผ ํ๊ณ , double
(8๋ฐ์ดํธ)์ 8๋ฐ์ดํธ ๊ฒฝ๊ณ์ ๋ง์ถฐ ์ ์ฅ๋์ด์ผ ํฉ๋๋ค.
- ๋ง์ฝ ์ ๋ ฌ์ด ๋ง์ง ์์ผ๋ฉด CPU๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํด ์ถ๊ฐ์ ์ธ ์์
์ ํด์ผ ํ๋ฉฐ, ์ด๋ฅผ unaligned access๋ผ๊ณ ํฉ๋๋ค. ์ผ๋ถ CPU๋ unaligned access๋ฅผ ์ง์ํ์ง๋ง, ์ฑ๋ฅ์ ๋ถ์ด์ต์ด ์์ต๋๋ค.
์ ๋ ฌ ์ ์ฝ์์ ๋ฉ๋ชจ๋ฆฌ ๊ฒฝ๊ณ ํฌ๊ธฐ ๊ฒฐ์ ์์ธ:
์ ๋ ฌ ์ ์ฝ์์ ๋ฉ๋ชจ๋ฆฌ ๊ฒฝ๊ณ์ ํฌ๊ธฐ๋ ๋ฐ์ดํฐ ํ์
์ ํฌ๊ธฐ, CPU ์ํคํ
์ฒ, ๊ทธ๋ฆฌ๊ณ ๋ฉ๋ชจ๋ฆฌ ๋ฒ์ค ํญ์ ๋ฐ๋ผ ๊ฒฐ์ ๋ฉ๋๋ค.
- ๋ฐ์ดํฐ ํ์
์ ํฌ๊ธฐ:
- ๋ฐ์ดํฐ ํ์
์ ๋ฐ๋ผ ์ ๋ ฌ๋ ๋ ์๊ตฌ๋๋ ๊ฒฝ๊ณ๊ฐ ๋ค๋ฆ
๋๋ค. ์๋ฅผ ๋ค์ด:
char
(1๋ฐ์ดํธ)๋ 1๋ฐ์ดํธ ๊ฒฝ๊ณ์ ๋ง์ถฐ ์ ๋ ฌ๋ฉ๋๋ค.
int
(4๋ฐ์ดํธ)๋ 4๋ฐ์ดํธ ๊ฒฝ๊ณ์ ๋ง์ถฐ ์ ๋ ฌ๋ฉ๋๋ค.
double
(8๋ฐ์ดํธ)๋ 8๋ฐ์ดํธ ๊ฒฝ๊ณ์ ๋ง์ถฐ ์ ๋ ฌ๋ฉ๋๋ค.
๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ ํด์๋ก ๋ฉ๋ชจ๋ฆฌ ๊ฒฝ๊ณ์ ํฌ๊ธฐ๋ ์ปค์ง๋๋ค.
- CPU ์ํคํ
์ฒ:
- CPU์ ์ํคํ
์ฒ์ ๋ฐ๋ผ ์๋ ํฌ๊ธฐ๊ฐ ๋ค๋ฅด๋ฉฐ, ์ด ์๋ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ฉ๋ชจ๋ฆฌ ๊ฒฝ๊ณ์ ํฌ๊ธฐ๋ ๊ฒฐ์ ๋ฉ๋๋ค.
- ์๋ฅผ ๋ค์ด, 32๋นํธ ์์คํ
์์๋ 4๋ฐ์ดํธ(32๋นํธ) ๊ฒฝ๊ณ๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ํ๊ณ , 64๋นํธ ์์คํ
์์๋ 8๋ฐ์ดํธ(64๋นํธ) ๊ฒฝ๊ณ๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ํ ์ ์์ต๋๋ค.
CPU๋ ๋ฉ๋ชจ๋ฆฌ์์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฝ๊ธฐ ์ํด ์ผ์ ํฌ๊ธฐ์ ๊ฒฝ๊ณ๋ฅผ ์ค์ ํ๋ฉฐ, ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ๋ ฌ์ ์๊ตฌํฉ๋๋ค.
- ๋ฒ์ค ํญ:
- ๋ฉ๋ชจ๋ฆฌ ๋ฒ์ค์ ํญ์ด ๋์์๋ก ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ๋ ๋ง์ด ์ ์กํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ฉ๋ชจ๋ฆฌ ๊ฒฝ๊ณ๋ ๋ฒ์ค ํญ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, 64๋นํธ ๋ฒ์ค๋ 8๋ฐ์ดํธ ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ฏ๋ก, 8๋ฐ์ดํธ ๊ฒฝ๊ณ๋ฅผ ์ ์งํ๋ ๊ฒ์ด ํจ์จ์ ์
๋๋ค.
์ ๋ ฌ ์ ์ฝ์ ์ค์ํ์ง ์์ผ๋ฉด ํ๋ก๊ทธ๋จ ์ฑ๋ฅ ์ ํ๋ ๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ปดํ์ผ๋ฌ๋ ํ๋ก๊ทธ๋๋จธ๋ ์ด๋ฐ ์ ๋ ฌ ๊ท์น์ ๋ฐ๋ฅด๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
์ ๋ ฌ๋์ง ์์ ๋ฐ์ดํฐ์ ์ฌ๋ฌ ๋ฒ ์ ๊ทผ์ด ํ์ํ ์ด์
์ ๋ ฌ๋์ง ์์ ๋ฐ์ดํฐ๋ ์ฌ๋ฌ ๋ฒ์ ์ ๊ทผ์ด ํ์ํ ์ด์ ๋ ๋ฐ์ดํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ฒฝ๊ณ๋ฅผ ๋์ด์ ์ ์ฅ๋๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ฉ๋ชจ๋ฆฌ ์์คํ
์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋ ์ผ์ ํ ํฌ๊ธฐ(์: 4๋ฐ์ดํธ, 8๋ฐ์ดํธ ๋ฑ)์ ๋จ์๋ก ์ฝ๊ณ ์ฐ๋๋ก ์ต์ ํ๋์ด ์์ต๋๋ค. ํ์ง๋ง ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋์ง ์์ผ๋ฉด ์ด ๋จ์ ๊ฒฝ๊ณ๋ฅผ ๋์ด์๊ฒ ๋์ด ํ ๋ฒ์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์ฝ์ ์ ์๊ฒ ๋ฉ๋๋ค. ์ด๋ก ์ธํด ๋ค์๊ณผ ๊ฐ์ ์ํฉ์ด ๋ฐ์ํฉ๋๋ค.
๊ตฌ์ฒด์ ์ธ ์ด์ :