ABOUT

성능과 운영 안정성을 함께 끌어올리는 개발자입니다.

92% Positional Error Reduction
79% p95 Latency Improvement
90%+ Long Tasks Reduction

2022.02 · 한국장학재단

우수 멘티

한국장학재단 사회 리더 대학생 멘토링 IT

2022.10 · 동작구청

우수 인재상

동작구청 우수 SW 인재

2025.05 · (주) 그랩

프로그래밍 우수상

(주) 그랩 우수 프로그램 개발

2025.05 · AWSKRUG

AWS한국사용자모임 발표

AI agent 스크립트 튜닝 관련 발표

ComputerScience

Development

Engineering

Trouble Shooting

GUESTBOOK

첫 마음부터
함께 나누는 온기

방명록 작성하러 가기

SUBSCRIBE

최신소식을
편하게 만나보세요.

프로그램 카운터 (PC/IP)

정의

프로그램 카운터(PC/IP)는 다음에 실행할 명령어의 “주소”를 가리키는 레지스터입니다.

CPU는 명령어를 실행할 때마다 “다음에 어떤 명령어를 가져올지(fetch)”를 알아야 합니다. 이때 다음 명령어의 위치를 들고 있는 레지스터가 PC(Program Counter)입니다.

x86 계열은 같은 개념을 IP(Instruction Pointer) 또는 RIP 같은 이름으로 부르기도 합니다. 결론적으로 PC/IP는 실행 흐름(control flow)의 “현재 위치”를 나타내는 포인터입니다.

핵심 메시지

“if/for/while, 함수 호출/리턴, 예외 처리 같은 고수준 제어 흐름은 결국 PC를 어디로 바꾸느냐의 문제다.”

- 제어 흐름은 PC 갱신으로 구현된다 -

동작 원리

PC는 기본적으로 순차 증가하고, 분기/점프에서 목적지로 갱신됩니다.
1) 순차 실행(Sequential)

분기가 없다면 PC는 다음 명령어 위치로 이동합니다. RISC는 명령어 길이가 고정인 경우가 많아 “+4”처럼 직관적으로 설명할 수 있고, x86 같은 CISC는 길이가 가변이므로 “다음 명령어 주소로 이동”이라고 이해하는 편이 정확합니다.

2) 분기/점프(Branch/Jump)

조건 분기에서는 비교 결과(예: 플래그 레지스터의 ZF/SF/OF 등)를 보고 PC가 분기 대상 주소로 바뀝니다. 이 동작이 if/else, switch, 루프 조건을 구성합니다.

3) 호출/리턴(Call/Return)

함수 호출은 PC를 “함수 시작 주소”로 이동시키되, 복귀 주소를 저장해야 합니다. 일반적으로 복귀 주소는 스택에 저장되고, 리턴 시 PC는 그 복귀 주소로 되돌아갑니다.

대표 상황

PC가 “갱신”되는 대표 케이스를 정리하면 다음과 같습니다.
상황 PC 동작 개발자 관점 예시
순차 실행 다음 명령어로 이동 일반 코드 라인 실행 흐름
조건 분기 조건에 따라 점프 if/else, switch, loop 조건
함수 호출/리턴 호출 주소로 이동 ↔ 복귀 call/ret, 복귀 주소 저장
인터럽트/예외 핸들러로 이동 후 복귀 타이머 인터럽트, 시스템 콜, 페이지 폴트 등

성능 관점

PC는 파이프라인분기 예측에서 비용을 만듭니다.

CPU는 다음 PC가 어디일지 미리 예측하고 명령어를 준비해 파이프라인을 채웁니다. 예측이 틀리면 파이프라인이 비워지는(flush) 비용이 생겨 지연이 커질 수 있습니다.

💡 TIP / 참고사항

“분기가 많아서 느리다”는 말은 보통 예측이 어려운 분기가 많아 비용이 커진 경우입니다. 규칙적인 분기는 예측이 잘 맞아 영향이 작을 수 있습니다.

실무/디버깅

브레이크포인트/스텝 실행은 결국 PC를 멈추고 이동시키는 것입니다.

디버거가 특정 라인에서 멈춘다는 건 “해당 라인에 대응되는 머신 코드 주소(=PC 위치)”에서 실행을 멈춘다는 뜻입니다. step over/into는 PC가 다음 주소로 어떻게 이동하는지 추적하는 과정입니다.

핵심 요약

한 번에 정리

✅ 핵심 요약

  • ✔️ PC/IP는 다음에 실행할 명령어 주소를 가리키는 레지스터다.
  • ✔️ 순차 실행에서는 다음 위치로 이동하고, 분기/점프/호출/예외에서는 목적지로 갱신된다.
  • ✔️ 성능에서는 “다음 PC를 맞히는 문제(분기 예측)”가 중요하며, 실패하면 파이프라인 비용이 커진다.
728x90