프로세서
1. 프로세서란?
프로세서(processor, 처리기)는 컴퓨터의 중앙 처리 장치(CPU)를 말한다. 흔히 컴퓨터의 뇌로 여겨진다.
제어 장치, 연산 장치, 레지스터 그리고 데이터 버스로 구성된 디지털 시스템의 핵심 부분으로, 프로그램을 기억 장치로부터 읽어 연산 처리, 비교 처리, 데이터 전송, 편집, 변환, 테스트와 분기 등의 데이터를 처리하고, 각종 장치를 구동하는 역할을 담당한다. 컴퓨터에서 수행되는 모든 작업의 계산, 연산, 제어 등의 명령들을 처리한다고 생각하면 되겠다.
프로세서는 입력된 명령어를 실행하고, 데이터를 처리하며, 계산을 수행한다. 이러한 작업들은 컴퓨터의 모든 프로그램에서 필요하다. 따라서 프로세서는 컴퓨터의 핵심 부품 중 하나이며, 컴퓨터의 성능을 결정하는 중요한 역할을 한다.
2. 프로세서의 구조
프로세서는 다음과 같은 구조로 이루어진다.
- 제어 유닛(Control Unit, CU): 명령어를 해석하고 실행하는 데 필요한 제어 신호를 생성하는 기능을 수행한다. 제어 유닛은 프로그램 카운터(Program Counter, PC)를 통해 다음에 실행할 명령어의 주소를 추적하고, 명령어 레지스터(Instruction Register, IR)에서 현재 실행 중인 명령어를 저장한다.
- 산술 논리 연산 장치(Arithmetic Logic Unit, ALU): 논리 연산과 산술 연산을 처리하는 기능을 수행한다. 산술 논리 연산 장치는 레지스터에 저장된 데이터를 가져와서 연산을 수행하고, 결과를 레지스터에 저장한다.
- 레지스터(Register): CPU 내부에 있는 작은 용량의 메모리로, 데이터를 일시적으로 저장하고 처리하는 데 사용된다.
- 버스(Bus): 프로세서 내부에서 데이터나 신호를 전송하는 경로이다. 버스는 데이터 버스(Data Bus), 주소 버스(Address Bus), 제어 버스(Control Bus) 등으로 구성된다.
메모리
컴퓨터 시스템에서 사용되는 메모리들을 계층적으로 구성하여 빠른 속도와 큰 저장 용량을 모두 활용할 수 있도록 하는 구조를 메모리 계층 구조라고 한다.
일반적으로 메모리 계층 구조는 CPU 내부에 존재하는 레지스터(Register), CPU가 빠르게 접근할 수 있는 캐시 메모리(Cache Memory), 그다음으로 느리지만 큰 용량을 가지는 메인 메모리(Main Memory), 더 느리지만 매우 큰 저장 용량을 가지는 보조 기억장치(Secondary Storage)로 구성된다.
1. 레지스터(Register)
레지스터는 앞에서 살펴보았듯이 CPU 내부에 존재하는 소규모의 저장장치다.
CPU가 메모리나 캐시에서 데이터를 가져오는 데 걸리는 시간보다 레지스터에서 데이터를 가져오는 데 걸리는 시간이 매우 짧기 때문에 매우 빠른 속도로 데이터를 처리할 수 있다.
레지스터는 CPU가 명령어를 실행하는데 필요한 데이터나 명령어 자체를 저장한다. 또한 명령 실행 후의 결과 데이터를 다시 레지스터에 저장한다.
레지스터의 사용은 CPU의 성능에 직접적인 영향을 미치며, 컴퓨터 시스템에서 레지스터의 개수와 크기는 성능에 큰 영향을 미친다. 따라서 대부분의 컴퓨터 아키텍처에서는 레지스터의 개수와 크기를 최적화하여 CPU의 성능을 향상하려고 노력한다.
다음과 같이 다양한 종류의 레지스터가 존재한다.
- 데이터 레지스터(Data Register, DR) : 산술 논리 연산에서 처리할 데이터를 저장
- 주소 레지스터(Address Register, AR) : 메모리 주소를 저장
- 명령어 레지스터(Instruction Register, IR) : 현재 수행할 명령어를 저장
- 누산기(Accumulator, AC) : 산술 논리 연산의 결과를 저장
- 프로그램 카운터(Program Counter, PC) : 현재 실행중인 프로그램에서 다음에 실행될 명령어의 메모리 주소를 가리킴
2. 캐시 메모리(Cache Memory)
캐시 메모리는 CPU와 메인 메모리 사이에 위치한 작고 빠른 메모리다.
대부분 프로그램은 한번 사용한 데이터를 재사용할 가능성이 높고, 그 주변의 데이터도 곧 사용할 가능성이 높은 데이터 지역성을 가지고 있다. 데이터 지역성을 활용하여 메인 메모리에 있는 데이터를 캐시 메모리에 불러와 두고, 프로세서가 필요한 데이터를 캐시 메모리에서 먼저 찾도록 하면 시스템 성능을 향상할 수 있다.
캐시 메모리는 지연율이 낮고 대역폭이 높아 속도가 빠르나, 용량이 작고 비용이 비싸다는 단점이 존재한다.
SRAM(Static Random Access Memory)으로 만들어져 있다.
3. 메인 메모리(Main Memory)
메인 메모리(Main Memory)는 컴퓨터에서 CPU가 연산 수행 후에 데이터를 저장하거나 필요한 데이터를 요구하기 위해 직접 접근할 수 있는 주기억장치로, 프로그램이 실행되는 동안 필요한 데이터나 명령어를 일시적으로 저장하는 역할을 한다.
하지만 휘발성 메모리이기에 전원이 꺼지면 메인 메모리에 저장된 내용들은 모두 사라진다.
일반적으로 DRAM(Dynamic Random Access Memory)으로 만들어져 있으며, 주소와 데이터를 저장하는 데 사용됩니다. 메인 메모리는 컴퓨터 시스템의 성능에 매우 중요한 역할을 한다.
4. 보조 기억 장치(Secondary Storage)
보조 기억 장치는 컴퓨터에서 데이터를 저장하는 데 사용되는 비휘발성 기억장치이다.
보조 기억 장치는 하드 디스크 드라이브(Hard Disk Drive, HDD), 솔리드 스테이트 드라이브(Solid State Drive, SSD), USB 플래시 드라이브, CD/DVD 드라이브 등이 있다.
메인 메모리와 달리 보조 기억 장치는 접근 속도가 느리지만 대용량의 데이터를 저장할 수 있으며 전원이 꺼져도 데이터를 보존할 수 있다. 그렇기 때문에 보조 기억 장치는 파일 저장, 데이터 백업, 프로그램 설치 등에 사용된다.
MMU
MMU(Memory Management Unit)는 컴퓨터 시스템에서 메모리를 관리하는 장치로써 가상 주소와 물리 주소 간의 변환을 수행한다.
MMU는 가상 메모리(Virtual Memory) 시스템을 지원하며, 이를 통해 프로그램이 실제 메모리보다 큰 용량을 사용할 수 있도록 한다. 가상 메모리는 실제 물리적인 메모리 공간을 넘어서는 메모리 공간을 사용하는 기술로써 이를 통해 더 큰 프로그램을 실행할 수 있다.
프로세서가 메모리에 접근할 때, MMU는 프로세서가 참조하려는 가상 주소를 물리 주소로 변환하여 실제 메모리에 접근할 수 있도록 한다. 이 과정에서 MMU는 가상 주소와 물리 주소 간의 매핑 정보를 유지하고, 이를 기반으로 가상 주소를 물리 주소로 변환한다.
또한 MMU는 메모리 보호와 같은 다른 메모리 관리 기능도 수행한다. 예를 들어, MMU는 각 프로세스에게 할당된 메모리 공간을 보호하고, 다른 프로세스에서 이를 침범하지 못하도록 한다. 이러한 메모리 보호 기능은 다중 프로세스 환경에서 안정적인 시스템 운영을 위해 매우 중요하다.
즉, MMU는 컴퓨터 시스템에서 메모리를 관리하고 보호하는 중요한 역할을 담당한다.
시스템 버스
시스템 버스(System Bus)는 컴퓨터 시스템에서 CPU, 메모리, 입출력(I/O) 장치 등의 다양한 컴퓨터 하드웨어 간의 데이터 및 제어 신호 전송을 위한 통로다.
시스템 버스에는 크게 3가지의 버스가 존재한다.
1. 데이터 버스(Data Bus)
CPU와 메모리 간의 데이터 전송을 담당하며, 데이터를 주고 받아야하므로 양방향 버스이다.
2. 주소 버스(Address Bus)
데이터가 저장되어야 할 기억 장치 주소 정보 전송을 담당하며, 주소를 전달만 하기 때문에 단방향 버스이다.
3. 제어 버스(Control Bus)
데이터 버스와 주소 버스를 제어하는 제어 신호 전송을 담당하며, 읽기 동작과 쓰기 동작을 모두 수행하기 때문에 양방향 버스이다. ※ 읽기 = 내용을 읽어 버스에 싣기 / 쓰기 = 버스에 실린 데이터를 각 장치에서 사용
이들 버스는 하드웨어 간의 통신을 위해 일반적으로 공유 버스(Arbitrated Bus) 방식으로 동작한다. 하지만 하나의 버스가 다양한 하드웨어 간의 통신을 담당하기 때문에, 통신 충돌 문제와 같은 일부 문제가 발생할 수 있다.
시스템 버스는 컴퓨터의 처리 속도 및 성능에 큰 영향을 미치기 때문에, 최신 컴퓨터에서는 여러 개의 버스가 사용되며, 버스의 대역폭과 속도 등이 향상되었다.
참고
'개발 > CS' 카테고리의 다른 글
(CS) ArrayList, LinkedList, Stack, Queue, Deque (0) | 2023.04.05 |
---|---|
(CS) 캐시 메모리, 메모리 관리 기법, 페이지 교체 알고리즘 (1) | 2023.03.27 |
(CS) 데드락, 기아 상태, 스케줄링 (0) | 2023.03.22 |
(CS) 프로세스, 스레드, 프로세스 동기화 기법 (0) | 2023.03.16 |
URL vs URI (1) | 2023.01.27 |