CPU(중앙 처리 장치)란?
- Central Processing Unit
- 컴퓨터 시스템을 통제하고 프로그램의 연산을 실행·처리하는 가장 핵심적인 컴퓨터의 제어 장치, 혹은 그 기능을 내장한 칩
- 역할
- 기계어로 쓰인 컴퓨터 프로그램의 명령어를 해석하여 실행한다.
- CPU는 프로그램에 따라 외부에서 정보를 입력받아,이를 기억하고, 연산하며, 결과를 외부로 출력한다.
CPU의 구성
1. 레지스터(Register)
- CPU 내부에서 데이터를 일시적으로 저장하는 장치로, 속도가 가장 빠른 메모리이다
- 레지스터 종류
프로그램 카운터(PC)
: 다음번에 수행할 메모리의 주소가 들어있다
메모리 주소 레지스터(MAR)
: 프로그램 카운터에서 수행할 주소를 넘겨 받은 다음에 그 주소를 찾아가 데이터를 가져오는 역할을 한다
메모리 버퍼 레지스터(MBR)
: 메모리 주소 레지스터가 가져온 데이터나 명령들을 일시적으로 저장한다
- 메모리 버퍼 레지스터에 저장된 내용 중 명령은 명령어 레지스터로 이동한다.
- 메모리 버퍼 레지스터에 저장된 내용 중 연산에 사용될 데이터는 누산기 레지스터로 이동한다.
명령어 레지스터(IR)
: 명령에 관한 데이터가 저장된다.
누산기 레지스터(AC)
: 연산의 결과 값이나 중간 값을 일시적으로 저장한다. 최종 결과는 메모리 버퍼 레지스터를 통해 메모리로 전송된다.
2. 제어장치(Control Unit)
- 명령어 레지스터에 있는 명령어를 받아 해석하고, 해석된 명령을 각 시스템이 수행하도록 지시한다.
3. 산술 논리 장치(Arithmetic Logic Unit, ALU)
- 산술 논리 연산을 실행한다
산술
: 더하기 빼기 등 산수를 계산한다
논리 연산
: AND나 OR 같은 논리를 연산한다
- 논리게이트를 이용해서 산술 논리 장치(ALU)를 만든다
논리게이트(AND, OR, XOR, NOT)
In A | In B | AND | OR | XOR | NOT A |
---|
0 (Off) | 0 | 0 | 0 | 0 | 1 |
1 (On) | 0 | 0 | 1 | 1 | 0 |
0 | 1 | 0 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 0 | 0 |
CPU의 연산
명령어 사이클
: 인출 → 해석 → 실행 → (메모리) → 저장
Fetch(인출)
- 프로그램 카운터(PC)에 저장된 주소를 메모리 주소 레지스터(MAR)로 전달한다.
- 메모리 주소 레지스터(MAR)에 저장된 주소를 찾아서 명령어를 인출한다.
- 인출한 명령어를 메모리 버퍼 레지스터(MBR)에 저장한다.
- 다음 명령어를 인출하기 위해 프로그램 카운터(PC)의 값을 증가시킨다.
- 메모리 버퍼 레지스터(MBR)에 저장된 내용을 명령어 레지스터(IR)에 전달한다.
Decode(해석)
- 명령어 레지스터(IR)에 있는 명령어는 제어장치로 이동되어 해석된다.
- 명령어를 해석하여 명령어 내의 데이터 정보와 연산 정보를 추출한 뒤, CPU 내의 각 장치에 적절한 제어 신호를 보내 연산, 처리에 대한 준비를 한다.
Execute(실행)
- 명령어에서 추출한 두 데이터와 연산 정보를 이용해 실제로 연산을 실행한다.
- 명령어 레지스터(IR)의 내용을 메모리 주소 레지스터(MAR)로 전달한다.
- 메모리에 저장된 데이터 값을 메모리 버퍼 레지스터(MBR)에 저장한다.
- 누산기(AC)에 저장된 값에 연산을 실행한다.
Memory(메모리)
- 실행 단계의 연산 결과가 다음 명령어에 바로 사용되지 않는다면, 결과를 메모리에 저장한다.
Write Back(저장)
- 실행 단계의 연산 결과가 다음 명령어의 입력 데이터로 사용될 경우, 계산 결과를 레지스터에 다시 저장한다.
Q&A
Q. CPU는 어떻게 작동하나요?
Q. 함수 호출과 연관하여 레지스터에 대해 자세히 설명해 주세요.
Q. 32bit cpu와 64bit cpu는 어떤 차이가 있나요?
Q. 32bit와 64bit 호환되지 않을 때
Q. CPU 스케줄링에 대해 설명해 주세요.
Reference