맨위로가기

프로그램 카운터

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

프로그램 카운터(PC)는 중앙 처리 장치(CPU) 내에서 다음 실행될 명령어의 메모리 주소를 저장하는 디지털 카운터이다. 명령어 사이클의 fetch 단계에서 PC는 주소 버스를 통해 메모리에 접근하고, 실행 단계에서 PC는 다음 명령어를 가리키도록 수정된다. PC의 비트 수는 프로세서 아키텍처에 따라 다르며, 이진 카운터 또는 로드 가능한 레지스터로 구현될 수 있다.

PC를 사용하는 것은 폰 노이만 구조의 핵심이며, 순차적인 명령어 실행을 기반으로 한다. 이러한 구조는 폰 노이만 병목 현상과 같은 문제를 야기하며, 병렬 컴퓨팅 및 데이터 흐름 모델과 같은 대안적인 아키텍처 연구로 이어졌다. PC 기반 CPU의 성능을 향상시키기 위해 파이프라이닝, VLIW 아키텍처, 비순차적 실행과 같은 기술이 개발되었다.

현대 프로그래밍 언어는 순차 실행 모델을 따르지만, 다중 스레딩, 이벤트 드리븐 프로그래밍 및 데이터 흐름 프로그래밍과 같은 새로운 프로그래밍 모델은 순차 실행의 한계를 넘어선다.

더 읽어볼만한 페이지

  • 제어 흐름 - 예외 처리
    예외 처리는 프로그램 실행 중 예외 발생 시 정상적인 실행 흐름을 유지하거나 안전하게 종료하기 위한 메커니즘으로, 많은 프로그래밍 언어에서 제공하며 예외 안전성을 목표로 한다.
  • 제어 흐름 - 브랜치 (컴퓨터 과학)
    프로그램 실행 흐름을 제어하는 명령어인 브랜치는 점프, 호출, 반환 명령어로 나뉘며, CPU 플래그 레지스터와 주소 지정 방식을 활용하여 코드 분기 및 서브루틴 호출/반환을 수행하지만, 파이프라인 CPU에서 성능 저하를 유발하여 분기 예측 등의 기술로 해결합니다.
  • 마이크로프로세서 - 중앙 처리 장치
    중앙 처리 장치(CPU)는 컴퓨터 시스템의 핵심 부품으로, 프로그램 명령어를 해석하고 실행하여 데이터를 처리하는 장치이다.
  • 마이크로프로세서 - ARM 아키텍처
    ARM 아키텍처는 저전력 설계로 모바일 기기에서 널리 쓰이는 RISC 기반 프로세서 아키텍처로서, IP 코어 라이선스 모델과 ARM Flexible Access를 통해 다양한 분야로 확장되고 있다.
  • 운영체제 기술 - 프로세스
    프로세스는 컴퓨터에서 실행되는 프로그램의 인스턴스로, 운영 체제가 시스템 자원을 효율적으로 관리하며 멀티태스킹 환경에서 독립적인 실행 흐름을 유지한다.
  • 운영체제 기술 - 커널 (컴퓨팅)
    커널은 운영 체제의 핵심으로, 하드웨어와 소프트웨어 간 상호 작용을 관리하며 시스템 보안, 자원 관리, 하드웨어 추상화, 프로세스 스케줄링, 프로세스 간 통신, 다중 작업 환경 지원 등의 기능을 제공하고, 모놀리식, 마이크로, 혼합형 커널 등으로 구현되며 가상화 및 클라우드 컴퓨팅 환경에서 중요성이 커지고 있다.
프로그램 카운터
프로그램 카운터
다른 이름명령어 포인터, 명령어 주소 레지스터, 시퀀스 컨트롤 레지스터
종류레지스터
용도실행할 다음 명령어의 주소를 저장
크기프로세서 아키텍처에 따라 다름 (일반적으로 16비트, 32비트, 또는 64비트)
기능프로그램 실행 순서 제어
상세 정보
설명프로그램이 실행될 때, 프로그램 카운터는 실행될 다음 명령어의 메모리 주소를 가지고 있음. 명령어 실행 후, 프로그램 카운터는 일반적으로 다음 순차적인 명령어의 주소로 증가됨.
분기/점프 명령어분기 또는 점프 명령어가 실행되면, 프로그램 카운터는 명령어에 지정된 새로운 주소로 변경되어 프로그램의 실행 흐름을 변경함.
인터럽트 처리인터럽트가 발생하면, 프로그램 카운터의 현재 값은 스택에 저장되고 인터럽트 서비스 루틴의 시작 주소가 프로그램 카운터에 로드됨. 인터럽트 서비스 루틴이 완료되면, 스택에 저장된 이전 프로그램 카운터 값이 복원되어 원래 프로그램 실행 위치로 돌아감.
구현 방식프로그램 카운터는 프로세서 내부의 특수 레지스터로 구현되며, 명령어 인출 및 실행 단계를 제어하는 데 중요한 역할을 수행함.
관련 용어스택, ISA, CPU, 메모리 주소

2. 하드웨어 구현

간단한 중앙 처리 장치(CPU)에서 프로그램 카운터(PC)는 여러 하드웨어 프로세서 레지스터 중 하나인 디지털 카운터이다. ("프로그램 카운터"라는 용어는 여기서 기원한다.) 명령어 사이클은 CPU가 PC의 값을 주소 버스에 배치하여 메모리로 보내는 ''fetch'' 단계로 시작한다. 메모리는 해당 메모리 위치의 내용을 데이터 버스로 전송하여 응답한다. (이는 실행 가능한 명령어와 일반 데이터를 모두 포함하는 단일 메모리 공간이 있는 저장 프로그램 방식 컴퓨터 모델이다.) fetch 후, CPU는 획득한 메모리 내용을 기반으로 조치를 취하는 ''execution'' 단계를 진행한다. 이 사이클의 어느 시점에서 PC는 수정되어 다음 실행될 명령어가 다른 명령어가 되도록 한다(일반적으로 증가되어 다음 명령어가 현재 명령어의 마지막 메모리 위치 바로 다음에 시작하는 메모리 주소에 있는 명령어가 되도록 한다).

다른 프로세서 레지스터와 마찬가지로, PC는 각 비트가 PC 값의 1비트를 나타내는 일련의 이진 래치일 수 있다. PC의 비트 수(너비)는 프로세서 아키텍처와 관련이 있다. 예를 들어, “32비트” CPU는 32비트를 사용하여 232 메모리 단위를 주소 지정할 수 있다. 일부 프로세서에서 프로그램 카운터의 너비는 주소 지정 가능한 메모리에 따라 다르다. 예를 들어, 일부 AVR 마이크로컨트롤러는 12비트 후에 랩어라운드되는 PC를 가지고 있다.

PC가 이진 카운터인 경우, COUNT UP 입력에 펄스가 가해질 때 증가할 수 있거나, CPU가 다른 값을 계산하여 LOAD 입력에 펄스를 가하여 PC에 로드할 수 있다.

현재 명령어를 식별하기 위해 PC는 세그먼트 또는 페이지를 식별하는 다른 레지스터와 결합될 수 있다. 이 접근 방식을 사용하면 관심 있는 대부분의 메모리 단위가 현재 근처에 있다고 가정하여 PC의 비트 수를 줄일 수 있다.

3. 기계 아키텍처의 결과

프로그램 카운터(PC)를 사용하는 것은 컴퓨터가 일반적으로 일련의 명령어를 순차적으로 실행한다고 가정하는 것이다. 이러한 PC는 폰 노이만 구조의 핵심이다. 따라서 프로그래머는 순차적으로 실행될 필요가 없는 알고리즘에 대해서도 순차적인 제어 흐름을 작성한다. 그 결과, "폰 노이만 병목 현상"은 병렬 컴퓨팅 연구로 이어졌으며, PC를 사용하지 않는 비 폰 노이만 또는 데이터 흐름 모델을 포함한다. 예를 들어, 순차적 단계를 지정하는 대신, 상위 수준 프로그래머는 원하는 함수를 지정하고 하위 수준 프로그래머는 이를 조합 논리를 사용하여 지정할 수 있다.

이러한 연구는 또한 PC 기반의 기존 CPU를 더 빠르게 실행하는 방법으로 이어졌다.


  • 파이프라인: CPU의 다른 하드웨어가 여러 명령의 다른 단계를 동시에 실행하는 방식.
  • 매우 긴 명령어어 (VLIW) 아키텍처: 단일 명령어가 여러 효과를 달성할 수 있는 방식.
  • 일반적인 순서 밖에서 비순차적 실행을 예측하고 실행을 위해 후속 명령을 준비하는 기술.

4. 고급 프로그래밍의 결과

현대의 고급 프로그래밍 언어는 여전히 순차 실행 모델을 따르며, 실제로 프로그래밍 오류를 식별하는 일반적인 방법은 프로그래머의 손가락이 PC가 수행하는 것처럼 실행 지점을 식별하는 "절차 실행"이다. 고급 언어는 본질적으로 하드웨어로 구축하기에는 너무 복잡하지만 소프트웨어로 에뮬레이션되거나 인터프리터되는 가상 머신의 기계어이다.

그러나 새로운 프로그래밍 모델은 순차 실행 프로그래밍을 초월한다.


  • 다중 스레드 프로그램을 작성할 때 프로그래머는 다른 스레드의 명령과 관련된 모든 명령의 타이밍을 지정하지 않고 각 스레드를 일련의 명령으로 작성할 수 있다.
  • 이벤트 드리븐 프로그래밍에서 프로그래머는 프로그램의 전체 시퀀스를 지정하지 않고 이벤트에 응답하기 위해 일련의 명령을 작성할 수 있다.
  • 데이터 흐름 프로그래밍에서 프로그래머는 다른 섹션과 관련된 타이밍을 지정하지 않고 컴퓨팅 파이프라인의 각 섹션을 작성할 수 있다.

참조

[1] 서적 Computer Architecture and Organization McGraw-Hill
[2] 서적 PIC Microcontrollers Elsevier 2011
[3] 웹인용 Intel 64 & IA-32 명령어 집합 http://www.intel.com[...] 2015-06-25



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com