프로그램 카운터 (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가 다음에 실행할 명령어의 주소를 저장하는 레지스터. 명령어 인출 후 자동 증가하며, 분기 명령어로 변경된다. 프로그램 흐름 제어의 핵심이다.

왜 필요할까?
  기존 방식의 한계를 넘기 위해

어떻게 동작하나?
  복잡한 문제 → 프로그램 카운터 적용 → 더 빠르고 안전한 결과!

핵심 한 줄:
  프로그램 카운터 = 똑똑하게 문제를 해결하는 방법

비유: 프로그램 카운터은 마치 요리사가 레시피를 따르는 것과 같아. 혼란스러운 재료들을 정해진 순서대로 조합하면 → 맛있는 요리(최적 결과)가 나오지! 🍳