[CS] 컴퓨터 구조 — CPU·캐시 메모리·ARM 프로세서 핵심 정리
목차
컴퓨터의 구성
- 하드웨어: 컴퓨터를 구성하는 기계적 장치.
- 소프트웨어: 하드웨어 동작을 지시하고 제어하는 명령어의 집합.
하드웨어
- 중앙처리장치(CPU)
- 기억장치: RAM, HDD
- 입출력장치: 마우스, 프린터
소프트웨어
- 시스템 소프트웨어: 운영체제, 컴파일러
- 응용 소프트웨어: 워드프로세서, 스프레드시트
하드웨어는 중앙 처리장치(CPU), 기억장치, 입출력 장치로 구성되며, 이들은 시스템 버스로 연결되어 데이터와 명령 제어신호를 각 장치로 전달한다.

중앙처리장치(CPU)
주 기억장치에서 프로그램 명령어와 데이터를 읽어와 처리하고, 명령어 수행 순서를 제어한다.
1. 연산 장치 (ALU)
산술연산과 논리연산을 수행한다. 연산에 필요한 데이터를 레지스터에서 가져오고, 연산 결과를 다시 레지스터로 보낸다.
2. 제어 장치
명령어를 순서대로 실행할 수 있도록 제어하는 장치. 주 기억장치에서 프로그램 명령어를 꺼내 해독하고, 그 결과에 따라 제어신호를 기억장치·연산장치·입출력장치로 보낸다.
3. 레지스터
고속 기억장치. 명령어 주소, 코드, 연산에 필요한 데이터, 연산 결과 등을 임시로 저장한다.
| 레지스터 | 역할 |
|---|---|
| MAR (메모리 주소 레지스터) | 읽기/쓰기 연산을 수행할 주기억장치 주소 저장 |
| PC (프로그램 카운터) | 다음에 수행할 명령어 주소 저장 |
| IR (명령어 레지스터) | 현재 실행 중인 명령어 저장 |
| MBR (메모리 버퍼 레지스터) | 주기억장치에서 읽어온 데이터 또는 저장할 데이터 임시 저장 |
| AC (누산기) | 연산 결과 임시 저장 |
CPU 동작 과정
- 주기억장치는 입력장치에서 입력받은 데이터 또는 보조기억장치에 저장된 프로그램을 읽어온다.
- CPU는 주기억장치에 저장된 명령어와 데이터를 읽어와 처리하고, 결과를 다시 주기억장치에 저장한다.
- 주기억장치는 처리 결과를 보조기억장치에 저장하거나 출력장치로 보낸다.
- 제어장치는 1~3 과정에서 명령어가 순서대로 실행되도록 각 장치를 제어한다.
명령어 세트
CPU가 실행할 명령어의 집합.
연산 코드(Operation Code) + 피연산자(Operand)로 이루어짐
연산 코드 : 실행할 연산
피연산자 : 필요한 데이터 or 저장 위치
CPU는 프로그램 실행을 위해 주기억장치에서 명령어를 순차적으로 인출하여 해독하고 실행하는 과정을 반복한다. 이 한 사이클을 명령어 사이클이라 하며, 인출·실행·간접·인터럽트 사이클로 나뉜다.
인출(Fetch) 사이클
가장 중요한 부분은 PC(프로그램 카운터) 값 증가.
- PC에 저장된 주소를 MAR로 전달
- 주기억장치 해당 주소에서 명령어 인출
- 인출한 명령어를 MBR에 저장
- 다음 명령어를 인출하기 위해 PC 값 증가
- MBR에 저장된 내용을 IR에 전달
T0 : MAR ← PC
T1 : MBR ← M[MAR], PC ← PC+1
T2 : IR ← MBR
실행(Execute) 사이클
ADD addr 명령어 연산 예시:
T0 : MAR ← IR(Addr)
T1 : MBR ← M[MAR]
T2 : AC ← AC + MBR
인출이 완료되어 명령어만 실행하면 되므로 PC를 증가시킬 필요가 없다.
캐시 메모리
속도가 빠른 장치와 느린 장치 사이의 병목 현상을 줄이기 위한 메모리.
ex1) CPU 코어와 메모리 사이의 병목 현상 완화
ex2) 웹 브라우저 캐시 파일은, 하드디스크와 웹페이지 사이의 병목 현상을 완화
CPU가 자주 사용하는 데이터를 캐시 메모리에 저장해두고, 다음 이용 시 주기억장치가 아닌 캐시 메모리에서 먼저 가져와 속도를 향상시킨다. 용량이 적고 비용이 비싸다는 단점이 있다.
| 캐시 레벨 | 위치 |
|---|---|
| L1 | CPU 내부 |
| L2 | CPU와 RAM 사이 |
| L3 | 보통 메인보드 |
일반적으로 L1 캐시부터 먼저 사용되며, 데이터를 찾지 못하면 L2로 넘어간다.
듀얼 코어 프로세서: 각 코어마다 독립된 L1 캐시를 가지고, 두 코어가 공유하는 L2 캐시가 내장된다. L1이 128KB라면 64KB씩 나눠 명령어 캐시(I-Cache)와 데이터 캐시(D-Cache)로 사용한다.
캐시 메모리 작동 원리 (참조 지역성)
- 시간 지역성: 한번 참조된 데이터는 잠시 후 또 참조될 가능성이 높다 (반복문 조건 변수 등).
- 공간 지역성: 참조된 데이터 근처의 데이터가 잠시 후 사용될 가능성이 높다 (A[0], A[1] 연속 접근 등).
캐시에 데이터를 저장할 때 해당 데이터뿐만 아니라 인접 주소의 데이터도 함께 가져와 미래 사용에 대비한다.
- CPU가 요청한 데이터가 캐시에 있으면 Cache Hit, 없어서 DRAM에서 가져오면 Cache Miss
캐시 미스 종류
| 종류 | 설명 |
|---|---|
| Cold Miss | 해당 메모리 주소를 처음 불러서 나는 미스 |
| Conflict Miss | 서로 다른 데이터가 같은 캐시 주소에 할당되어 나는 미스 (Direct Mapped Cache에서 다발) |
| Capacity Miss | 캐시 메모리 공간이 부족해서 나는 미스 |
캐시 크기를 키우면 문제를 해결할 수 있지만, 캐시 접근 속도가 느려지고 전력 소모가 늘어나는 단점이 생긴다.
캐시 구조 및 작동 방식
Direct Mapped Cache

가장 기본적인 구조. DRAM의 여러 주소가 캐시 메모리의 한 주소에 대응되는 다대일(多對一) 방식.
- 메모리 주소 32개(00000
11111), 캐시 공간 8개(000111)인 경우 - 00000, 01000, 10000, 11000은 모두 캐시 주소 000에 매핑
- 인덱스 필드(000) + 태그 필드(앞 나머지) + 데이터 필드로 구성
- 장점: 간단하고 빠름 / 단점: Conflict Miss 발생
Fully Associative Cache
비어있는 캐시 메모리가 있으면 주소에 상관없이 자유롭게 저장하는 방식. 저장은 간단하지만 탐색 시 모든 블록을 검색해야 하므로 CAM이라는 특수 메모리가 필요하고 비용이 매우 비싸다.
Set Associative Cache
Direct + Fully 방식의 중간형. 특정 행(Set)을 지정하고, 그 행 안의 어떤 열이든 비어있으면 저장한다.
| 방식 | 저장 속도 | 검색 속도 | 비고 |
|---|---|---|---|
| Direct Mapped | 빠름 | 빠름 | Conflict Miss 발생 |
| Fully Associative | 매우 빠름 | 느림 | 비용 높음 |
| Set Associative | 중간 | 중간 | 실용적 절충안 |
고정 소수점 & 부동 소수점
1. 고정 소수점 (Fixed Point)
소수점이 찍힐 위치를 미리 정해놓고 소수를 표현하는 방식 (정수부 + 소수부).
-3.141592는 부호(-), 정수부(3), 소수부(0.141592) 3가지 요소가 필요하다.

- 장점: 실수를 정수부와 소수부로 표현하여 단순하다.
- 단점: 표현 범위가 너무 좁아 활용하기 힘들다 (정수부 15bit, 소수부 16bit).
2. 부동 소수점 (Floating Point)
실수를 가수부 + 지수부로 표현한다. 지수 값에 따라 소수점이 움직이므로 소수점 위치가 고정되어 있지 않다.
- 가수: 실수의 실제값 표현
- 지수: 크기를 표현. 가수의 어디쯤에 소수점이 있는지 나타냄

- 장점: 표현할 수 있는 수의 범위가 넓다 (현재 대부분 시스템에서 활용).
- 단점: 오차가 발생할 수 있다.
패리티 비트 & 해밍 코드
패리티 비트
정보 전달 과정에서 오류가 생겼는지 검사하기 위해 추가하는 비트. 전송하고자 하는 데이터의 각 문자에 1비트를 더하여 전송한다.
종류: 짝수 패리티 / 홀수 패리티
전체 비트에서 1의 개수가 짝수(또는 홀수)가 되도록 패리티 비트를 정한다.
ex. 짝수 패리티, 7비트 데이터 1010001
→ 1이 총 3개이므로 짝수로 맞추기 위해 패리티 비트 1을 더함
→ 답: 11010001 (맨앞이 패리티 비트)
해밍 코드
데이터 전송 시 1비트의 에러를 정정할 수 있는 자기 오류정정 코드. 패리티 비트는 오류를 검출만 하지만, 해밍 코드는 오류 위치를 찾아 수정할 수 있다.
2의 n승 번째 자리(1, 2, 4번째)가 패리티 비트이며, 이 세 패리티 비트의 짝수/홀수 여부로 오류 위치를 판별한다.
ex. 짝수 패리티 해밍 코드 0011011에서 오류 수정
1, 3, 5, 7번째 비트 확인 : 0101 → 짝수 → '0'
2, 3, 6, 7번째 비트 확인 : 0111 → 홀수 → '1'
4, 5, 6, 7번째 비트 확인 : 1011 → 홀수 → '1'
→ 역순으로 패리티 비트 '110' = 10진수 6 → 6번째 비트 수정
→ 정답: 0011001
ARM 프로세서
프로세서란?
메모리에 저장된 명령어들을 실행하는 유한 상태 오토마톤.
ARM (Advanced RISC Machine)
진보된 RISC(Reduced Instruction Set Computing) 기기의 약자. 핵심은 RISC — “단순한 명령 집합을 가진 프로세서가 복잡한 것보다 훨씬 더 효율적이다”는 개념에서 출발한다.
ARM 구조

ARM은 칩의 기본 설계 구조(논리적 명령 집합)만 만들고, 실제 기능 추가와 최적화는 개별 반도체 제조사의 영역으로 맡긴다. 따라서 물리적 설계 베이스는 같아도 명령 집합이 다르면 서로 다른 칩이 된다.
RISC 기반으로 명령 집합과 구조가 단순하기 때문에:
- 적은 수의 트랜지스터만 필요 → 칩 크기가 작고 전력 소모가 낮음
- 스마트폰·태블릿 PC 등 모바일 기기에 적합
ARM의 장점

ARM용 프로세서는 ARM 기반 기기에서만 실행 가능하며, x86 기반 프로그램과 호환되지 않는다 (포팅 시 수정 필요). 그러나 하나의 ARM OS는 다른 ARM 기기에서도 잘 동작한다는 장점 덕분에, 수많은 안드로이드 버전이 탄생하고 다양한 기기에 탑재될 수 있다.
여길 보면서 면접 대비로 눈으로 보는것 보다 한줄 씩 다 적어보면서 베끼기만 하려는 것이 아닌 이해하려고 최대한 노력했다.