" To the computer, memory is just bits "
왜냐하면, 컴퓨터는 메모리 상의 데이터를 바라볼 떄, 타입을 모르기 떄문이다.
그래서 프로그래머가 그 프로그래밍 언어에서 지정하는 데이터타입을 지정해준 뒤, 컴퓨터는 그 데이터 타입대로 읽을 때, 비로소 의미가 생기는 것이다.
즉 프로그래머가 데이터에 타입을 부여하여 의미를 부여하여 연산한다.
메모리는 비트들이 집합이라고 하는데, 사실은 비트보다는 워드라는 단위가 더 정확한 표현이다. 워드의 단위는 각 플랫폼마다 다른데, 기본 인티저의 단위와 워드 사이즈가 같다고 봐도 된다. 우리가 현재 공부하고 있는 x86-64비트 시스템에서 워드의 크기는 64비트이다.
ARM Cortex-A32, 즉 32bit ARM CPU의 워드사이즈는 32bit이다.

컴퓨터 아키텍쳐는 위와 같은 구조를 하고 있다.
0️⃣ 가장 먼저, CPU가 있고, North Bridge를 통해 메인 메모리와 통신한다.
1️⃣ 컴퓨터 주변장치들과는 South Bridge를 통해 I/O 버스를 통해 통신한다.
이때, 데이터가 지나다니는 통로를 버스라한다.
버스는 한번에 데이터를 보낼 수 있는 width가 결정되어있다. 예를 들어 8bit을 보내는 버스라면, 8개의 전선이 있는 것이고, 32bit을 보내는 버스라면 32개의 전선들이 연결되어있다고 볼 수 있다.
이러한 버스는 워드의 사이즈라고 봐도 무방하다.
그런데, 메모리에서 CPU로 보내는 버스의 크기와 CPU에서 사용하는 워드의 크기가 서로 다른 경우가 있다.
이 떄에는, CPU에서 워드의 사이즈를 맞춰 연산하기 위해 메모리에서 데이터를 한번만 불러오는 것이 아니라, 여러번 데이터를 불러와 워드를 채운 뒤 연산을 시작한다.
왜 워드의 사이즈를 채워서 연산하는가?
CPU에는 여러 레지스터들이 있다. 이 레지스터는 워드사이즈와 같다. 즉 레지스터가 CPU연산의 기본 단위이기 떄문에 레지스터를 채우기 위해서는 워드사이즈만큼의 데이터를 메모리로부터 가져와야한다.
반대로, 워드 사이즈가 레지스터 사이즈보다 큰 경우, 여러개의 레지스터를 사용한다.