PC가 과연 무엇일까?

박승우·2024년 7월 29일
0

자 예순 아홉번째 키워드인 'PC'을 알아 보았다.

저번 키워드가 IR이었으므로 연관되는 키워드이기 때문에 알아 보았다.

PC가 뭐에요?

프로그램 카운터(Program Counter, PC)는 중앙 처리 장치(CPU)의 중요한 레지스터 중 하나로, 다음에 실행할 명령어의 메모리 주소를 저장하는 역할을 한다. PC는 명령어 사이클의 각 단계에서 CPU의 제어 흐름을 관리하는 데 핵심적인 역할을 한다.

프로그램 카운터(PC)의 역할

  1. 명령어 주소 저장
    PC는 현재 실행 중인 프로그램에서 다음에 실행할 명령어의 메모리 주소를 보관한다.
    명령어 페치 사이클의 시작 부분에서 CPU는 PC의 값을 사용하여 메모리에서 명령어를 가져온다.

  2. 주소 증가
    CPU가 명령어를 가져온 후, PC는 자동으로 증가하여 다음 명령어의 주소를 가리키게 된다.
    일반적으로 각 명령어의 길이만큼 PC가 증가한다(예: 1바이트 명령어의 경우 1 증가).

  3. 제어 흐름 관리
    조건부 분기, 루프, 함수 호출 등 프로그램의 제어 흐름을 관리하기 위해 PC의 값을 수정할 수 있다.
    분기 명령어는 PC의 값을 특정 주소로 설정하여 프로그램 실행 흐름을 변경한다.

프로그램 카운터(PC)의 작동 과정

  1. 명령어 페치 단계
    PC는 다음에 실행할 명령어의 주소를 가지고 있다.
    이 주소를 사용하여 CPU는 메모리에서 해당 명령어를 가져온다.

  2. 명령어 디코드 및 실행 단계
    명령어가 디코딩되고 실행되는 동안, PC는 이미 다음 명령어의 주소로 업데이트된다.
    이로 인해 CPU는 연속적으로 명령어를 패치하고 실행할 수 있다.

  3. 분기 및 점프 명령어 처리
    분기 명령어가 실행되면, 조건이 충족될 경우 PC는 새로운 명령어 주소로 설정된다.
    예를 들어, JUMP 명령어는 PC를 특정 주소로 설정하여 프로그램의 다른 부분으로 이동한다.

중요성

프로그램 흐름의 연속성: PC는 프로그램 명령어를 순차적으로 실행할 수 있도록 한다.

제어 흐름 변경: 조건부 및 무조건 분기 명령어를 통해 프로그램의 흐름을 동적으로 변경할 수 있다.

프로그램 실행의 효율성: PC가 올바르게 동작함으로써 CPU는 빠르고 효율적으로 명령어를 페치하고 실행할 수 있다.

예시

순차적 실행

명령어 1: LOAD A, 0x01
명령어 2: ADD A, 0x02
명령어 3: STORE A, 0x03

PC는 각 명령어를 순차적으로 가리키고, 명령어가 실행될 때마다 증가한다.

분기 실행

명령어 1: LOAD A, 0x01
명령어 2: CMP A, 0x02
명령어 3: JUMP_IF_EQUAL 0x10
명령어 4: ADD A, 0x03

PC는 조건이 충족될 경우 0x10 주소로 설정되어, 프로그램 흐름이 변경된다.

profile
게임을 좋아하는 사람 입니다!

0개의 댓글