중앙 처리 장치(CPU)는 컴퓨터 시스템을 통제하고 프로그램의 연산을 실행/처리하는 가장 핵심적인 컴퓨터의 제어 장치, 혹은 그 기능을 내장한 칩이다.
즉, 서버의 핵심 계산 장치인 하드웨어 구성 요소이다. 인간으로 따지자면 머리에 해당하는 부분으로, 이를 통해 CPU가 얼마나 중요한지 알 수 있다.
뇌가 하는 일은 아래와 같이 총 두 가지로 나누어 생각할 수 있다.
- 신체의 움직임을 조절
ex) 눈을 뜨기/감기, 손을 휘두르기, 걷기/뛰기 등등... - 각종 생각 및 판단
ex) 사칙연산 계산, 상황/환경에 따른 판단
이처럼 CPU도 인간의 두뇌처럼 대표적으로 하는 두 가지 기능이 있다.
첫번째로 일을 담당하는 일을 담당하는 제어장치(CU, Control Unit)와 두번째로 일을 담당하는 산술/논리 연산장치(ALU, Arithmetric Logic Unit)로, 하는 역할은 다음과 같다.
- 제어장치
컴퓨터의 각 부분을 제어하고 통제하여 여러 부분들이 통일성 있게 움직일 수 있게 하는 역할.
즉, 컴퓨터 내부에서 데이터를 어디로 보낼지, 어떤 장치가 작동할지 결정한다. 또한 명령어를 해독하고 ALU나 메모리 등 다른 구성 요소들이 명령을 수행할 수 있도록 지시한다.
또한 컴퓨터 부품들을 관리하고 작동시키기 위한 전기 신호를 제어 신호(control signals)라고 한다.
제어장치가 내보내는 정보는 크게 두 가지로, 다음과 같다.- CPU 외부로 전달
주로 제어 버스를 통해 메모리와 입출력 장치로 보낸다. 예를 들어, 메모리에 저장된 값을 읽거나 새로운 값을 저장하려 할 때, 제어장치는 메모리에 제어 신호를 보낸다. - CPU 내부로 전달
주로 ALU와 레지스터에 관련되며, ALU에는 수행할 연산을 지시하는 제어 신호가, 레지스터에는 데이터 이동이나 명령어 해석을 위한 제어 신호가 전달된다. 이러한 제어 신호들은 CPU 내의 다양한 작업들을 조율하는 데 필수적이다.
- CPU 외부로 전달
CPU의 기계주기
제어장치의 동작은 컴퓨터 시스템의 다른 동작과 마찬가지로 수천 개의 개별단계들로 나뉘며, 각 단계는 고정된 시간 간격 내에서 일어난다.
1. 호출(Fetch): 제어장치가 하나의 기계연산 명령어를 주기억장치에서 가져온다.
2. 해석(Decode): 제어장치가 기계연산을 해석하고 필요한 데이터를 주기억장치로부터 가져와서 수행준비를 한다.
3. 실행(Execute): 해석된 기계연산을 산술/논리장치에서 수행한다.
4. 저장(Store): 연산된 결과를 다시 주기억장치나 레지스터에 저장한다.(명령어 수행에 따라 필요한 경우에만)
- 산술/논리 연산장치
기본적인 산술연산(사칙연산)과 논리연산(AND, OR, NOT 등)을 하는 장치.
데이터 비교와 같은 연산도 담당하며, 연산 결과는 메모리나 레지스터로 전달된다.
또한 CPU의 성능을 좌우하는 몇 가지 요소가 있는데, 다음과 같다.
- 클록 속도(Clock Speed)
CPU가 1초 동안 처리할 수 있는 명령어의 수.
GHz(기가 헤르츠)로 측정되며, 클록 속도가 높을 수록 빠르게 작업을 수행할 수 있다. - 코어(Cores)
CPU 내에서 독립적으로 작업을 수행할 수 있는 프로세싱 유닛으로, 현대 CPU는 멀티코어로 되어 있어 여러 작업을 동시에 처리할 수 있다. - 캐시(Cache)
CPU와 메모리 간의 데이터 전송 속도를 높이기 위한 임시 저장 공간.
L1, L2, L3 캐시로 나뉘며, 각 레벨이 클수록 속도가 느리지만 더 많은 데이터를 저장할 수 있다.
레지스터(Register)
레지스터는 CPU 내부에서 데이터와 명령어를 일시적으로 저장하는 초고속 메모리이다.
산술 연산에 사용되는 데이터는 CPU에서 레지스터로 처리를 위해 복사된다. 산술연산이 끝나면 레지스터에 저장된 결과는 다시 CPU로 옮겨지고, 레지스터는 다음 연산을 위해 비워지게 된다.
또한 제어장치도 기능을 수행하는 과정에서 레지스터를 사용하며, CPU 내부에 직접 통합되어 있어 데이터 처리 속도가 매우 빠르다.
레지스터는 제어장치와 산술/논리 연산장치를 보조하는 메모리 공간으로, 쉽게 말해 해당 두 기능을 지원하는 도구 정도로 설명할 수 있다.
레지스터는 컴퓨터가 한 가지 목적으로 사용하느 특수목적용(Special purpose) 레지스터와 여러가지 목적으로 사용하기 위해 만든 범용(General purpose) 레지스터가 있다.
- 특수목적용 레지스터
CPU 내부에서 특정한 기능을 수행하기 위해 만들어진 레지스터로, 종류는 아래와 같다.
- 프로그램 카운터(Program Counter)
CPU가 다음에 실행할 명령어의 주소를 저장한다. - 명령어 레지스터(Instruction Register)
수행할 명령어의 내용을 저장한다. - 기억장치 주소 레지스터(Memory Address Register)
접근할 주기억장치의 주소를 저장하는 레지스터. - 기억장치 데이터 레지스터(Memory Data Register)
주기억장치에서 읽거나 쓸 데이터를 보관하는 레지스터.
- 프로그램 카운터(Program Counter)
- 범용 레지스터
주로 연산에 필요한 데이터나 임시 값을 저장하는데 사용된다.
플래그
산술/논리 연산장치는 계산 결과와 더불어 플래그를 내보낸다.
플래그는 산술/논리 연산장치가 결과와 함께 내보내는 값으로, 연산 결과에 대한 추가적인 정보이다. 예를 들어, 연산 결과가 음수일 때는 "방금 계산한 결과는 음수" 라는 정보를, 연산 결과가 연산 결과를 담을 레지스터보다 클 때는 "결과 값이 너무 크다"라는 정보를 ALU가 추가적으로 보내게 된다.
'부트캠프' 카테고리의 다른 글
24/09/26 - OSI 7계층: 응용 계층(Application Layer) (0) | 2024.09.26 |
---|---|
24/09/24 - OSI 7계층: 전송 계층(Transport Layer) (0) | 2024.09.24 |
24/09/09 - OSI 7계층: 네트워크 계층(Network Layer) (0) | 2024.09.09 |
24/09/04 - OSI 7계층: 데이터 링크 계층(Data Link Layer) (0) | 2024.09.04 |
24/09/02 - OSI 7계층: 물리 계층(Physical Layer) (0) | 2024.09.02 |