CPU
CPU의 구성 및 동작
CPU는 명령어를 해석하여 실행하는 장치이다
기본 구성
산술논리 연산장치 (Arithmetic and Logic Unit, ALU) CPU에서 데이터를 연산하는 장치이며, 사칙연산과 같은 산술 연산과 AND, OR 등의 논리 연산을 수행한다.
제어장치 (Control Unit) CPU에서 작업을 지시하는 부분
레지스터 (Register) CPU 내에서 데이터를 임시로 보관하는 곳
CPU의 명령어 처리 과정
먼저 CPU가 연산을 수행하려면 필요한 데이터를 가져와 임시로 보관해야 하는 데, 이때 사용되는 장소가 레지스터이다.
데이터가 레지스터에 준비가 되면 ALU가 두 값을 연산하고 그 값은 다른 레지스터에 저장한다.
제어장치는 명령어를 해석하는 역할을 한다. 아래 LOAD, ADD, MOVE 등의 명령어를 해석하여 제어 신호를 보내고 CPU 내의 데이터 흐름을 조절한다.
레지스터의 종류
사용자 가시 레지스터 (User-visible register)
사용자 프로그램에 의해 변경되는 레지스터이다.
데이터 레지스터: 메모리에서 가져온 데이터를 임시로 보관할 때 사용한다.
주소 레지스터: 데이터 또는 명령어가 저장된 메모리의 주소는 여기에 저장된다.
특수 레지스터/사용자 불가시 레지스터
위의 두 가지 외에 특별한 용도로 사용되는 레지스터
사용자가 임의로 변경할 수 없다.
프로그램 카운터: 다음에 실행할 명령어의 주소를 기억하고 있다가 제어장치에 알려주는 역할을 한다. (명령어 포인터라고도 한다.)
명령어 레지스터: 현재 실행 중인 명령어를 저장한다. 제어 장치는 명령어 레지스터에 있는 명령을 해석한 후 외부 장치에 적절한 제어 신호를 보낸다.
메모리 주소 레지스터: 메모리와 데이터 교환을 할 때 주소를 지정하기 위해 사용한다. 명령어를 처리하는 과정에서 필요한 메모리 주소를 이 레지스터에 넣으면 메모리 관리자가 이를 인식하여 해당 메모리 위치의 데이터를 가져오거나 해당 메모리 위치에 데이터를 저장한다.
메모리 버퍼 레지스터: 메모리에서 가져온 데이터나 메모리로 옮겨 갈 데이터를 임시로 저장한다. 위의 메모리 주소 레지스터와 함께 동작한다.
레지스터의 동작
프로그램 카운터에는 현재 실행중인 코드의 행 번호 1이 저장된다. 명령어 레지스터에는 LOAD 명령이 탑재된다.
제어장치가 명령어 레지스터에 저장된 명령을 해석하여 메모리에 있는 데이터를 가져오라는 제어 신호를 보낸다.
메모리 주소 레지스터에는 100이 저장되고 메모리 관리자는 메모리의 100번지에 저장도니 값을 메모리 버퍼 레지스터로 가져온다.
제어 장치는 메모리 버퍼 레지스터에 저장된 값을 레지스터 2로 옮긴다.
기타
프로그램 상태 레지스터
플래그 레지스터
상태 레지스터
컨디션 레지스터
버스의 종류
버스는 CPU와 메모리, 주변장치 간에 데이터를 주고받을 때 사용한다. 버스에는 다음 작업을 지시하는 제어 신호, 메모리의 위치 정보를 알려주는 주소, 처리할 데이터가 오고 가며 각각 제어버스, 주소버스, 데이터버스에 실린다.
제어 버스
다음에 어떤 작업을 할지 지시하는 제어 신호가 오고간다.
메모리에서 데이터를 가져올 때는 읽기 신호를, 처리한 데이터를 메모리로 옮겨놓을 때는 쓰기 신호를 보낸다.
주변장치의 경우도 마찬가지이다.
제어 버스는 CPU의 제어 장치에 연결되어 있다.
제어 버스의 신호는 양방향으로 오고간다.
주소 버스
메모리의 데이터를 읽거나 쓸 때 어느 위치에서 작업할 것인지를 아려주는 위치 정보가 오고 간다.
주변장치 역시 하드디스크의 어느 위치에서 데이터를 읽어올 지, 어느 위치에 저장할 지에 대한 정보가 주소 버스를 통해 전달된다.
주소 버스는 메모리 주소 레지스터와 연결되어 있으며 단방향이다. (CPU -> 메모리 or 주변장치)
데이터 버스
제어버스가 다음에 어떤 작업을 할지 신호를 보내고 주소 버스가 위치 정보를 전달하면 데이터가 데이터 버스에 실려 목적지까지 이동한다.
데이터 버스는 메모리 버퍼 레지스터와 연결되어 있으며 양방향이다.
버스의 대역폭: 한 번에 전달할 수 있는 데이터의 최대 크기. 만약 32bit CPU라면 버스의 대역폭도 32bit이다.
워드: CPU가 한 번에 처리할 수 있는 데이터의 최대 크기. 32bit CPU에서 1워드는 32bit이다.
Last updated