인프런 커뮤니티 질문&답변
워크북 질문 중에서 질문이 있습니다.
작성
·
21
0
파이프라인 구조에서 프로그램 카운터의 역할이 어떻게 달라지나요? 라는 질문이 있었는데 다른건 gpt에게 물어보고 강의에서도 알려주셔서 알 수 있었는데 이건 답이 질문의 의도와 맞는지 몰라서 여기에 여쭤봅니다.
PC의 역할은 다음 명령어를 저장하는 레지스터로 변함이 없는데, 파이프라인 구조는 인출 단계에서 PC값이 바뀐다. 라고 생각했는데 이게 답이 맞을까요?
답변 2
0
안녕하세요, jungmin257님!
워크북까지 성실히 학습해주셔서 감사합니다.
네. 말씀해주신대로 '다음 실행할 명령어의 주소를 저장하는' 역할은 변함없습니다.
IF(명령어 인출) 단계에 PC 값이 업데이트된다는 것도 맞습니다.
다만 질문의 취지를 생각해봤을 때
파이프라인 구조에서는 좀 더 복잡한 제어 흐름 관리가 요구됩니다.
비파이프라인 구조에서도 분기나 점프가 발생하면 PC 값은 변경됩니다.
하지만 파이프라인에서는 이미 여러 명령어가 동시에 각 단계에 들어가 있는 상태이기 때문에,
분기나 점프가 발생하면:
- PC 값을 수정해야 하고
- 이미 인출된 잘못된 명령어를 제거해야 할 수도 있으며(flush)
- 경우에 따라 분기 예측과 같은 기법이 필요해집니다.
즉, PC의 역할 자체는 동일하지만,
파이프라인 구조에서는 PC 갱신이 시스템 전체 흐름에 더 큰 영향을 주게 되고,
제어 흐름 관리가 훨씬 복잡해집니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. jungmin257님, 질문해 주셔서 감사합니다.
파이프라인 구조에서의 프로그램 카운터(PC)의 역할 변화에 대해 설명해드리겠습니다. 파이프라인 구조에서는 명령어를 여러 단계로 분리하여 동시에 처리함으로써 CPU의 효율을 높입니다. 이 과정에서 PC는 다음에 실행해야 할 명령어의 주소를 저장하는 역할을 유지합니다만, 파이프라인의 인출 단계에서는 매 클록 주기마다 새로운 명령어를 가져와야 하기 때문에, 이러한 반복적인 동작이 명령어 처리 속도를 높이게 됩니다.
- 인출 단계에서의 PC 변화: 파이프라인 구조에서는 여러 명령어가 동시에 처리 단계에 있으므로, PC는 각 클록 주기마다 증가하여 새로운 명령어를 인출합니다. 따라서 파이프라인에서는 명령어가 완료되지 않더라도, 다음 명령어들의 주소를 연속적으로 가져올 수 있게 됩니다.
기존의 실행 흐름과 비교하자면, 단일 사이클 CPU에서는 명령어가 완전히 실행된 후에만 다음 명령어를 인출하지만, 파이프라인에서는 이런 실행과 인출이 동시에 이루어져 보다 효율적인 처리가 가능합니다.
아래의 추가 답변 링크들을 참고하여, 보다 깊이 이해해 보시길 추천드립니다:
- 파이프라인에서의 프로그램 카운터 변화
- 파이프라인 구조의 이해
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




