2022-08-13
CPU는 예측하고 미리 움직인다
CPU 구조, 레지스터, 버스 그리고 CPU는 RAM과의 속도차이를 어떻게 극복하는지 알아보자!
CPU 구조
- 산술 논리 연산 장치: 덧셈, 뺄셈 같은 두 숫자의 산술연산과 배타적 논리합, 논리곱, 논리합 같은
논리연산을 수행하는 장치다. - 제어장치: 명령어들을 읽고 해석하며 데이터 처리타이밍과 제어 신호들을 제공함으로써
다른 장치들의 조작을 지시한다. - 레지스터: CPU에 작은 임시 데이터 저장 공간으로 내부 버스에 위치해 매우 빠르다.
- 캐시 메모리: CPU와 RAM 사이에 속도차이를 완충하기 위해 레지스터 이전에 데이터를 임시 저장하는 공간이다.
CPU와 RAM 속도 차이는 50배 정도 차이가 난다고 한다. 그 이유는 RAM은시스템 버스
에 위치하고 있기 때문이다.
캐시 메모리는 L1, L2, L3로 나누어지며 제조사마다 다르지만 연산을 수행하는 코어에 L1, L2 캐시가 붙으며,
L3는 모든 코어에 공유된다. L3 캐시는 용량이 크고 속도가 다른 캐시 메모리에 비해 느리다고 한다.
레지스터 종류
CPU에 일부인 레지스터는 사용자에 의해 변경될 수 없는 특수 레지스터
와 가시 레지스터
로 나누어 진다.
특수 레지스터
- 프로그램 카운터: 다음에 수행해야 할 명령어를 기억하고 제어장치에 알리는 역할을 한다.
- 명령어 레지스터: 현재 수행 중인 명령어를 저장하고 제어장치가 이를 해석해 명령을 내린다.
- 메모리 주소 레지스터: 데이터를 메모리에서 가져오거나 보낼때 주소를 지정하기 위해 사용한다.
- 메모리 버퍼 레지스터: 메모리에서 가져온 데이터나 보낼 데이터를 임시 저장하는 공간이다.
메모리 주소 레지스터와 함께 동작한다.
가시 레지스터
- 데이터 레지스터: 메모리에서 가져온 데이터를 임시 저장할 때 사용한다. 레지스터의 대부분이 데이터 레지스터다.
- 주소 레지스터: 데이터 또는 명령어가 저장된 메모리 주소는 주소 레지스터에 저장된다.
버스
버스는 장치 사이의 정보 전송을 위한 전기적 통로를 의미하며, 내부 버스와 시스템 버스가 있다.
버스의 대역폭은 한 번에 전달할 수 있는 데이터 크기를 의미한다.
버스 종류
- 내부 버스(Back-Side-Bus): CPU 내부에 있는 레지스터, 캐시 등을 연결하는 버스로 매우 빠르다.
- 시스템 버스(Front-Side-Bus): 메모리와 주변 장치를 연결하는 버스로 아래와 같이 구성된다.
- 제어 버스: CPU 제어장치와 연결되어 다음에 어떤 작업을 할지 지시하는 제어 신호가 오고 간다.
- 주소 버스:메모리의 데이터를 읽거나 쓸 때 주소에 대한 정보가 오고 간다.
CPU 메모리 주소 레지스터와 연결되어 단방향으로 구성되어 있다. - 데이터 버스: 제어 버스가 작업 신호를 보내고 주소 버스가 주소 정보를 전달하면 데이터 버스에 데이터가 실려 목적지까지 이동한다. CPU 메모리 버퍼 레지스터와 연결되어 양방향으로 구성되어 있다.
CPU는 어떻게 예측하고 미리 움직일까
캐시 메모리는 프로그램 카운터
에 저장된 다음 수행에 대한 명령어를 토대로 필요한 데이터를 미리 가져와 저장한다.
이렇게 동작하는 이유는 RAM이 시스템 버스에 위치하고 있기 때문에, CPU와 RAM의 속도차이가 너무 크기 때문이다.
캐시 메모리를 통해 두 장치에 속도차이를 완충함으로써 성능 향상의 효과를 얻을 수 있는 것이다.
따라서 CPU는 필요한 데이터를 RAM에 요청하기 전에, 캐시 메모리에 요청해 가져온다.
캐시 메모리에 히트 적중률은 90%라고 하며, 메모리 크기에 따라 컴퓨터 성능 차이가 크게 발생한다고 한다.