임베디드기사 필기 04 — 하드웨어 ② 컴퓨터구조 및 마이크로프로세서
1과목 [1-2] 컴퓨터구조 및 마이크로프로세서 파트입니다.
파이프라인 3단계와 ARM 레지스터는 함정 문제로 자주 출제돼요.
컴퓨터구조 기본
명령어 처리 방식
누산기(1-주소) 방식
명령어 형식: OP 주소
연산 결과를 누산기(AC)에 저장
예: ADD 100 → AC = AC + Memory[100]
스택 방식(0-주소)
명령어에 주소 없음
스택으로 모든 연산 수행
범용 레지스터(2-주소, 3-주소) 방식
2-주소: OP Reg, 주소
3-주소: OP 결과, 주소1, 주소2
파이프라인 (Pipeline) ⭐
파이프라인 3단계 (필기 핵심!)
1단계: Fetch — 명령어 인출 (PC가 가리키는 명령어 읽기)
2단계: Decode — 명령어 해독 (OP코드 분석)
3단계: Execute — 명령어 실행 (ALU 연산)
⚠️ 함정: "파이프라인 3단계에 Memory(메모리 접근)는 포함되지 않는다"
Memory 접근은 4단계 이상으로 확장될 때 추가되는 단계예요.
파이프라인 특징
장점: 처리 속도 향상 (여러 명령어 동시 처리)
단점: 데이터 해저드(Data Hazard) 발생
분기 명령어에서 파이프라인 플러시 필요
기출 문제
Q. 파이프라인의 3단계를 순서대로 나열하시오.
A. Fetch(인출) → Decode(해독) → Execute(실행)
Q. 파이프라인 3단계에서 "Memory"가 포함되는가?
A. 포함되지 않는다. Memory 접근은 5단계 파이프라인(IF/ID/EX/MEM/WB)에서 4번째 단계로 추가된다.
ARM 프로세서 레지스터 ⭐
주요 레지스터
R0~R12 — 범용 레지스터
R13(SP) — Stack Pointer (스택 최상위 주소)
R14(LR) — Link Register (서브루틴 복귀 주소)
R15(PC) — Program Counter (다음 실행할 명령어 주소)
CPSR — Current Program Status Register (상태 레지스터)
분기 시 PC 변화
ARM에서 분기(Branch) 명령어 실행 시
PC = 분기 목적지 주소
서브루틴 호출(BL 명령어) 시
LR = 복귀 주소 (PC + 4)
PC = 서브루틴 시작 주소
기출 문제
Q. ARM 프로세서에서 서브루틴 호출 후 복귀 주소를 저장하는 레지스터는?
A. LR (Link Register, R14)
Q. ARM의 CPSR 레지스터의 역할은?
A. 현재 프로세서 상태(조건 플래그, 인터럽트 마스크, 실행 모드 등)를 저장하는 상태 레지스터이다.
캐시 메모리 (Cache Memory) ⭐⭐
캐시 적중률 계산
평균 접근 시간 Ta = Tc × H + Tm × (1-H)
Tc: 캐시 접근 시간
Tm: 주기억장치 접근 시간
H: 적중률 (Hit Rate)
계산 예시:
Tc = 10ns, Tm = 100ns, H = 0.9
Ta = 10 × 0.9 + 100 × (1-0.9)
= 9 + 10
= 19ns
캐시 쓰기 정책
Write-through — 캐시와 주기억장치 동시 갱신
신뢰성 높음, 쓰기 속도 느림
Write-back — 캐시에만 쓰고 나중에 주기억장치 갱신
속도 빠름, 일관성 문제 가능
기출 문제
Q. 캐시 적중률이 0.8, 캐시 접근시간 5ns, 주기억장치 접근시간 50ns일 때 평균 접근 시간은?
A.
Ta = 5 × 0.8 + 50 × 0.2
= 4 + 10 = 14ns
DMA (Direct Memory Access) ⭐⭐
DMA란
CPU를 거치지 않고 주변장치와 주기억장치 사이에 데이터를 직접 전송하는 방식이에요.
DMA 제어기 구성요소
주소 레지스터 — 전송할 메모리 주소
단어 계수 레지스터 — 전송할 데이터 크기
제어 레지스터 — 전송 방향 (읽기/쓰기)
상태 레지스터 — DMA 동작 상태
Cycle Stealing
DMA가 CPU의 버스 사용 사이클을 빼앗아 메모리에 접근하는 방식
CPU는 잠시 대기 (레지스터 보존 불필요 — 인터럽트와 차이!)
기출 문제
Q. DMA 방식의 Cycle Stealing에서 CPU 상태 보존이 필요하지 않은 이유는?
A. Cycle Stealing은 CPU가 버스를 사용하지 않는 사이클 사이에 메모리를 접근하므로, 인터럽트처럼 CPU 실행을 중단시키지 않아 레지스터 보존이 불필요하다.
버스 대역폭 계산 ⭐
버스 대역폭 = 버스 클록 × 버스 비트폭 / 8 (byte 단위)
예: 100MHz 클록, 32비트 버스
대역폭 = 100 × 10⁶ × 32 / 8
= 400 MB/s
기출 문제
Q. 버스 클록이 200MHz이고 버스 폭이 64비트일 때 버스 대역폭은?
A.
200 × 10⁶ × 64 / 8 = 1,600 MB/s = 1.6 GB/s
주소선 개수 계산 ⭐
주소선 n개 → 2ⁿ 개의 메모리 주소 공간
예: 4KB 메모리 → 4 × 1024 = 4,096 = 2¹²
→ 주소선 12개 필요
기출 문제
Q. 16KB 메모리를 주소 지정하기 위해 필요한 주소선의 수는?
A. 16KB = 16 × 1024 = 16,384 = 2¹⁴ → 주소선 14개
마이크로프로세서 명령어 형식
명령어 = 연산코드(OP Code) + 오퍼랜드(Operand)
OP Code: 수행할 연산 종류
Operand: 연산에 사용할 데이터 또는 주소
주소 지정 방식
즉시 주소 — 오퍼랜드 자체가 데이터
직접 주소 — 오퍼랜드가 실제 메모리 주소
간접 주소 — 오퍼랜드가 가리키는 곳에 실제 주소
레지스터 — 오퍼랜드가 레지스터 번호
💡 실무에서는?
인프라 아키텍트로 임베디드 기반 보안 장비(방화벽, IPS, 암호화 어플라이언스)를 도입 검토할 때, ARM 기반 프로세서가 탑재된 장비의 성능 사양서에서 파이프라인 단계나 캐시 구조를 확인하는 경우가 있어요. 특히 패킷 처리 성능이 중요한 네트워크 보안 장비에서 캐시 적중률이 성능에 직접 영향을 미치기 때문에, 이 개념을 알고 있으면 벤더의 기술 자료를 더 정확하게 읽을 수 있어요.
핵심 정리
✅ 파이프라인 3단계: Fetch→Decode→Execute
✅ Memory는 3단계에 없음! (함정)
✅ ARM LR(R14) = 서브루틴 복귀 주소
✅ ARM PC(R15) = 다음 실행 명령어 주소
✅ Ta = Tc×H + Tm×(1-H)
✅ DMA Cycle Stealing = CPU 상태보존 불필요
✅ 버스 대역폭 = 클록 × 비트폭 ÷ 8
✅ 주소선 n개 → 2ⁿ 주소공간
다음 편에서는 주변장치 — UART·JTAG·I2C·RS-232·ADC/DAC로 이어갑니다!
궁금한 점은 댓글로 남겨주세요!
'자격증 정복 > 임베디드기사(기능사)' 카테고리의 다른 글
| 임베디드기사 필기 03 — 임베디드 하드웨어 ① 논리회로 (0) | 2026.08.07 |
|---|---|
| 임베디드기사 필기 02 — 4과목 핵심 키워드 총정리 (0) | 2026.08.06 |
| 임베디드기사 완벽 소개 — 2013년 창설, 아직도 생소한 그 자격증 (3) | 2026.08.04 |