컴퓨터는 크게 중앙처리장치, 메모리, 보조기억장치, 입출력 장치로 구성되어 있습니다.
1. 중앙처리장치(CPU)
CPU는 컴퓨터에서 기억, 해석, 연산, 제어라는 4가지의 주요 기능을 담당하는 장치입니다.
컴퓨터의 대뇌에 해당하며, 프로그램의 명령어를 해석하여 데이터를 연산 및 처리함으로써 컴퓨터의 각 장치들을 제어합니다.
CPU는 크게 산술논리장치, 제어장치, 레지스터 3가지로 구성되어 있습니다.
1) 산술논리장치
산술논리장치(Arithmetic and Logical Unit, ALU)는 덧셈과 뺄셈 같은 산술연산과 논리합, 논리곱, 배타적 논리합과 같은 논리연산을 계산하는 디지털 회로입니다.
산술논리장치는 논리합을 계산하는 가산기(adder), 보수값을 출력하는 보수기(complementer), 산술 및 논리 연산의 결과를 일시적으로 저장하는 누산기(accumulator), 명령어를 수행하기 위해 필요한 데이터를 저장하는 데이터 레지스터(data register) 등으로 구성됩니다.
산술논리장치가 수행하는 마이크로 연산은 다음과 같이 분류할 수 있습니다.
산술 연산
연산 |
동작 |
기능 |
ADD |
X ← A + B |
A와 B를 더합니다. |
SUB |
X ← A + (~B + 1) |
A에 B를 뺍니다. |
MUL |
X ← A × B |
A와 B를 곱합니다. |
DIV |
X ← A ÷ B |
A를 B로 나눕니다. |
INC |
X ← A + 1 |
A를 1 증가 시킵니다. |
DEC |
X ← A - 1 |
A를 1 감소 시킵니다. |
NEG |
X ← ~A + 1 |
A의 음수값을 나타냅니다. |
논리 연산
연산 |
동작 |
기능 |
AND |
X ← A & B |
A와 B를 비트단위로 AND 연산 합니다. |
OR |
X ← A | B |
A와 B를 비트단위로 OR 연산 합니다. |
NOT |
X ← ~A |
A의 보수를 나타냅니다. |
XOR |
X ← A ^ B |
A와 B를 비트단위로 XOR 연산 합니다. |
ASL |
X ← A « n |
A를 왼쪽으로 n비트 만큼 이동시킵니다. |
ASR |
X ← A » n, A[7] ← A[7] |
부호를 유지시킨 채 A를 오른쪽으로 n비트 만큼 이동시킵니다. |
LSL |
X ← A « n |
A를 왼쪽으로 n비트 만큼 이동시킵니다. |
LSR |
X ← A » n |
A를 오른쪽으로쪽으로 n비트 만큼 이동시킵니다. |
ROL |
X ← A « 1, A[0] ← A[7] |
첫 번째 비트를 마지막 비트로 이동시킵니다. |
ROR |
X ← A » 1, A[7] ← A[0] |
마지막 비트를 첫 번째 비트로 이동시킵니다. |
산술논리장치는 제어장치로부터 전달받은 제어신호를 통해 두 데이터 레지스터의 값을 연산하여 결과값을 누산기에 저장합니다. 이때 연산 결과에 대한 부가정보를 상태 레지스터에 저장합니다. 상태 레지스터의 구조는 CPU마다 다를 수 있으며, 상태 레지스터에 저장되는 플래그의 종류는 다음과 같습니다.
상태 레지스터 플래그
플래그 종류 |
부호 |
의미 |
부호 플래그 |
S |
연산 결과의 부호를 나타냅니다. 1이면 음수, 0이면 양수임을 의미합니다. |
제로 플래그 |
Z |
연산 결과가 0인지 여부를 나타냅니다. 1이면 0, 0이면 0이 아님을 의미합니다. |
캐리 플래그 |
C |
연산 결과에서 올림수나 빌림수가 발생했는지를 나타냅니다. 1이면 올림수나 빌림수가 발생했음을, 0이면 발생하지 않았음을 의미합니다. |
오버플로우 플래그 |
O |
연산 과정에서 오버플로우가 발생했는지를 나타냅니다. 1이면 오버플로우가 발생했음을, 0이면 발생하지 않았음을 의미합니다. |
인터럽트 플래그 |
I |
인터럽트가 가능한지를 나타냅니다. 1이면 인터럽트가 가능함을, 0이면 불가능함을 의미합니다. |
슈퍼바이저 플래그 |
P |
커널모드로 실행중인지 사용자모드로 실행중인지를 나타냅니다. 1이면 커널모드, 0이면 사용자모드임을 의미합니다. |
2) 제어장치
제어장치(Control Unit, CU)는 입출력장치 간 통신 및 조율을 제어하는 제어 신호를 보내고, 명령어를 읽고 해석하여 데이터 처리의 순서를 결정하는 장치입니다.
제어장치는 클럭(Clock), 명령어, 상태 플래그, 제어신호를 받아들이고, CPU 내부의 ALU나 레지스터 또는 CPU 외부의 제어버스로 제어신호를 내보냅니다.
클럭(clock)이란 컴퓨터 부품을 움직이게 할 수 있는 시간 단위입니다. 클럭은 1과 0이 반복되어 나타나는데, 이 반복의 기본 단위를 클럭의 주기(period)라고 합니다.
1초동안 반복되는 주기의 횟수는 주파수(frequency)라고 하며, 단위는 헤르츠(Hz)를 사용합니다. 인텔 코어 i5를 기준으로 기본 클럭이 2.4GHz 이며, 이것은 1초에 2.4 × 10^9번의 주기가 반복됨을 의미합니다. 그러므로 오버클럭을 하게 되면 주기가 증가하여 CPU의 처리속도를 증가시킬 수 있습니다.
정리하면, 제어장치는 클럭에 맞추어 명령어 레지스터로부터 해석할 명령어를 가져와서 적절한 제어신호를 내보냅니다.
3) 레지스터
레지스터(register)는 CPU 내부의 작은 임시 저장장치 입니다. 프로그램 속의 명령어와 데이터는 프로그램 실행 전/후로 레지스터에 저장됩니다. CPU 내부에는 다양한 레지스터가 존재하며, 각기 다른 역할을 수행합니다.
(1) 프로그램 카운터(Program Counter, PC)
프로그램 카운터는 메모리에서 읽어들일 명령어의 주소를 저장합니다. 프로그램을 순차적으로 처리하기 위해 프로그램의 순서를 카운트하며, 명령어 포인터(Instruction Pointer, IP)라고도 부릅니다.
(2) 명령어 레지스터(Instruction Register, IR)
명령어 레지스터는 메모리에서 읽어들인 명령어를 저장하는 레지스터 입니다. 제어장치는 IR에 있는 명령어를 해석하여 제어신호를 내보냅니다.
(3) 메모리 주소 레지스터(Memory Address Register, MAR)
메모리 주소 레지스터는 메모리의 주소를 저장하는 레지스터 입니다. CPU가 읽고자 하는 주소 값을 주소 버스로 보내기 위해서는 MAR를 거쳐야 합니다.
(4) 메모리 버퍼 레지스터(Memory Buffer Register, MBR)
메모리 버퍼 레지스터는 메모리와 주고 받을 값을 저장하는 레지스터 입니다. 메모리에 값을 쓰기 위해서는 MBR을 거쳐야 하며, 메모리의 데이터 버스를 통해 값을 전달받을 때도 MBR을 거쳐야 합니다.
(5) 상태 레지스터(Status Register, SR)
연산 결과 또는 CPU의 상태에 대한 부가적인 정보를 저장하고 있는 레지스터 입니다.
(6) 작업 레지스터(Working Resister, WR)
ALU와 직접 연결되어 있는 레지스터로, 연산 과정의 중간값이나 결과를 저장하는 누산기 입니다.
(7) 범용 레지스터(General Resister, GR)
일반적인 상황에서 자유롭게 사용할 수 있는 레지스터로, 데이터와 주소를 모두 저장할 수 있습니다. ALU와는 연결되어 있지 않습니다.
(8) 스택 포인터(Stack Pointer)
스택 포인터는 스택 주소 지정 방식에 사용되는 레지스터 입니다. 메모리 스택 영역의 꼭대기 주소를 저장하고 있습니다.
(9) 베이스 레지스터(Stack Pointer)
베이스 레지스터는 프로그램 카운터와 함께 변위 주소 지정 방식에 사용되는 레지스터 입니다. 주소를 지정하기 위한 기준이 되는 주소를 저장하고 있습니다.
변위 주소 지정 방식은 오퍼랜드의 필드값과 특정 레지스터 값을 더하여 유효 주소를 얻게 되는데, 오퍼랜더 값과 프로그램 카운터의 값을 더한 주소 지정 방식을 상대 주소 지정 방식, 오퍼랜더 값과 베이스 레지스터의 값을 더한 주소 지정 방식을 변위 주소 지정 방식 이라고 합니다.
2. 메모리
메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 장치입니다.
메모리는 메모리 주소 레지스터(MAR)와 메모리 버퍼 레지스터(MBR)로 구성되며, CPU와 데이터를 주고 받기 위해 시스템 버스(system bus)를 사용합니다.
시스템 버스는 기본적으로 주소 버스(address bus)와 데이터 버스(data bus), 제어 버스(control bus)로 구성됩니다.
메모리는 크게 읽기 전용 비 휘발성 메모리인 ROM(Read Only Memory)과 휘발성 메모리인 RAM(Random Access Memory), 비 휘발성 메모리인 플래시 메모리(Flash Memory)로 나눌 수 있으며, 통상적으로 메모리는 RAM을 의미합니다.
1) RAM
RAM의 종류는 크게 DRAM, SRAM, SDRAM, DDR SDRAM으로 나눌 수 있습니다.
(1) DRAM(Dynamic RAM)
DRAM은 전원이 연결되어 있더라도 저장된 데이터가 동적으로 사라지는 RAM 입니다. 그렇기 때문에 데이터의 소멸을 막기 위해서는 주기적으로 저장된 데이터를 재활성화(refresh) 해야 합니다.
상대적으로 소비전력이 낮고 저렴하며 집적도가 높아 대용량으로 설계하기 용이하기 때문에 일반적으로 메모리에 사용되는 RAM은 DRAM 입니다.
(2) SRAM(Static RAM)
SRAM은 전원이 연결되어 있다면 저장된 데이터가 사라지지 않는 RAM 입니다.
상대적으로 소비전력이 높고 가격이 비싸며 집적도가 낮기 때문에 일반적으로 대용량으로 설계할 필요가 없고 빨라야 하는 캐시 메모리에서 사용되는 RAM 입니다.
(3) SDRAM(Synchronous RAM)
SDRAM은 클럭 신호와 동기화되는 발전된 형태의 DRAM 입니다.
(4) DDR SDRAM(Double Data Rate SDRAM)
DDR SDRAM은 데이터를 주고 받는 대역폭을 넓혀 속도를 빠르게 만든 SDRAM 입니다. 최근 대중적으로 사용하는 RAM 입니다.
DDR SDRAM은 SDRAM 보다 대역폭이 두 배 넓다면, DDR2 SDRAM은 DDR SDRAM 보다 대역폭이 두 배 넓습니다. 즉, DDR2 SDRAM은 SDRAM 보다 대역폭이 네 배 넓습니다.
동일하게 DDR3 SDRAM은 DDR2 SDRAM 보다 대역폭이 두 배 넓으며, DDR4 SDRAM은 DDR3 SDRAM 보다 대역폭이 두 배 넓습니다. 그러므로 DDR4 SDRAM 4G는 DDR3 SDRAM 8G와 속도가 동일합니다.
2) 캐시 메모리
캐시 메모리는 CPU와 메모리 사이에 위치한 레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장 장치 입니다. CPU의 연산 속도와 메모리 접근 속도의 차이를 조금이나마 줄이기 위해 사용합니다.
캐시 메모리는 계층적으로 L1, L2, L3 캐시 메모리로 구성할 수 있으며, 일반적으로 L1 캐시와 L2 캐시는 CPU 내부에, L3 캐시는 CPU 외부에 위치합니다.
멀티 프로세서의 경우 코어마다 L1, L2 캐시가 있기 때문에 데이터의 일관성을 유지하기 위해 캐시 메모리를 동기화 시키는 것이 중요합니다.
캐시 메모리는 메모리보다 용량이 작기 때문에 메모리의 일부 내용을 저장합니다. 그렇기 때문에 CPU가 자주 사용할 법한 내용을 예측하여 캐시 메모리에 저장합니다.
CPU는 최근에 접근했던 메모리 공간에 다시 접근하려고 하며, 접근한 메모리 공간 근처를 접근하려는 경향이 있는데, 이러한 경향을 바탕으로 만들어진 원리를 참조 지역성의 원리라고 합니다. 이 원리를 바탕으로 캐시 메모리를 사용한다면 캐시 메모리의 성능을 향상시킬 수 있습니다.
3. 보조기억장치
보조기억장치는 현재 실행되지 않는 프로그램이나 데이터를 저장하고 있다가 필요한 경우 RAM으로 데이터를 전달하는 장치 입니다.
메모리는 보조기억장치에 비하여 비쌀 뿐만 아니라 전원이 꺼지면 저장된 내용을 잃어버린다는 단점이 존재합니다. 그러므로 데이터를 영구적으로 저장하기 위해서는 보조 기억장치에 데이터를 저장해야 합니다.
보조기억장치에는 하드디스크와 플래시 메모리가 있습니다. 하드디스크는 자기적인 방식으로 데이터를 저장하는 장치이며, 플래시 메모리는 전기적으로 데이터를 읽고 쓰는 반도체 기반 저장 장치입니다. 대표적으로 SSD가 플래시 메모리에 속합니다.
4.입출력장치
입출력장치는 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환할 수 있는 장치입니다. 대표적인 입출력 장치로 키보드, 모니터, 마우스 등이 있습니다.
컴퓨터로 데이터를 처리하기 위해서는 입력장치를 통해 컴퓨터로 데이터를 입력해야 하며, 컴퓨터가 처리한 결과의 데이터는 출력장치를 통해 사용자가 읽을 수 있는 형태로 돌려주어야 합니다.
입력장치는 컴퓨터가 인식할 수 있는 형태로 변환시켜 메모리로 읽어 들이는 장치이고, 출력장치는 컴퓨터에서 처리된 내용을 사용자가 인식할 수 있는 형태로 바꾸어 표시하는 장치입니다.
|