프로그램 카운터 (Program Counter, PC)
핵심 인사이트 (3줄 요약)
CPU가 다음에 실행할 명령어의 주소를 저장하는 레지스터. 명령어 인출 후 자동 증가하며, 분기 명령어로 변경된다. 프로그램 흐름 제어의 핵심이다.
📝 기술사 모의답안 (2.5페이지 분량)
📌 예상 문제
"프로그램 카운터 (Program Counter, PC)의 개념과 핵심 원리를 설명하고, 비교 분석 및 실무 적용 방안을 기술하시오."
Ⅰ. 개요
1. 개념
프로그램 카운터(PC)는 다음에 실행할 명령어가 있는 메모리 주소를 저장하는 특수 레지스터다. 명령어 포인터(IP)라고도 한다.
비유: "요리책 북마크" - 다음에 볼 페이지를 표시
Ⅱ. 구성 요소 및 핵심 원리
2. PC 동작
명령어 실행 사이클:
1. PC 값으로 메모리에서 명령어 인출
2. PC 증가 (다음 명령어 주소)
3. 명령어 실행
4. 분기면 PC 변경, 아니면 그대로
예시:
PC=100 → 명령어 인출 → PC=104 → 실행
PC=104 → 명령어 인출 → PC=108 → 실행
3. PC 변경 상황
| 상황 | PC 변화 |
|---|---|
| 순차 실행 | +4 (32비트 명령어) |
| 분기 (Branch) | 분기 주소로 변경 |
| 함수 호출 (Call) | 함수 시작 주소 |
| 인터럽트 | ISR 주소 |
| 리셋 | 리셋 벡터 |
4. 레지스터 파일에서의 위치
CPU 레지스터:
┌────────────────┐
│ R0 ~ R15 │ 범용 레지스터
├────────────────┤
│ PC (R15) │ 프로그램 카운터
├────────────────┤
│ LR (R14) │ 링크 레지스터
├────────────────┤
│ SP (R13) │ 스택 포인터
├────────────────┤
│ CPSR │ 상태 레지스터
└────────────────┘
5. 분기와 PC
조건부 분기:
CMP R0, #0 ; R0과 0 비교
BEQ label ; 같으면 label로 분기
ADD R1, R2, R3 ; 다르면 계속
분기 발생 시:
PC = label 주소
분기 미발생 시:
PC = 다음 명령어 주소
6. 함수 호출과 PC
함수 호출 과정:
BL func ; Branch with Link
; LR = PC + 4 (다음 명령어)
; PC = func 주소
함수 내부:
PUSH {LR} ; 반환 주소 저장
... ; 함수 본문
POP {PC} ; 반환 (PC = LR)
7. 파이프라인에서의 PC
5단계 파이프라인:
IF: PC로 명령어 인출
ID: 명령어 해석
EX: 실행
MEM: 메모리 접근
WB: 결과 저장
분기 시:
- 파이프라인 플러시
- PC 새로운 값으로 변경
→ 성능 저하 (분기 예측으로 완화)
Ⅲ. 기술 비교 분석
9. 장단점
| 장점 | 단점 |
|---|---|
| 간단한 구현 | 분기 예측 어려움 |
| 순차 실행 최적 | 파이프라인 플러시 비용 |
Ⅳ. 실무 적용 방안
10. 실무에선? (기술사적 판단)
- 분기 예측: PC 기반으로 다음 주소 예측
- BTB: Branch Target Buffer로 분기 주소 캐시
- 보안: PC 하이재킹 방지 (DEP, ASLR)
Ⅴ. 기대 효과 및 결론
| 효과 영역 | 내용 | 정량적 목표 |
|---|---|---|
| 성능 향상 | 처리 속도·응답 시간 개선 | 기존 대비 20~40% 향상 |
| 비용 절감 | 운영비·인프라 비용 절감 | 연간 15~30% 절감 |
| 품질/안정성 | 가용성·장애 감소 | UpTime 99.9% 이상 |
※ 참고 표준: 해당 기술 관련 NIST / ISO / IEEE / 과기정통부 가이드라인
어린이를 위한 종합 설명
프로그램 카운터를 쉽게 이해해보자!
CPU가 다음에 실행할 명령어의 주소를 저장하는 레지스터. 명령어 인출 후 자동 증가하며, 분기 명령어로 변경된다. 프로그램 흐름 제어의 핵심이다.
왜 필요할까?
기존 방식의 한계를 넘기 위해
어떻게 동작하나?
복잡한 문제 → 프로그램 카운터 적용 → 더 빠르고 안전한 결과!
핵심 한 줄:
프로그램 카운터 = 똑똑하게 문제를 해결하는 방법
비유: 프로그램 카운터은 마치 요리사가 레시피를 따르는 것과 같아. 혼란스러운 재료들을 정해진 순서대로 조합하면 → 맛있는 요리(최적 결과)가 나오지! 🍳