자 예순 여섯 번째 키워드인 '명령어 사이클'을 알아 보았다.
메모리 관련 시리즈가 끝나고 새로운 키워드에 접어들어 상세하게 알아보았다.

명령어 사이클(command cycle)은 컴퓨터 프로세서가 명령어를 처리하는 과정에서 거치는 일련의 단계들을 말한다.
결과 저장: 실행 결과를 목적지 레지스터나 메모리에 저장한다.
상태 레지스터 갱신: 연산 결과에 따라 상태 레지스터(플래그 레지스터)를 갱신한다. 예를 들어, 결과가 0인지, 음수인지, 오버플로우가 발생했는지 등을 기록한다.
갱신(Update) 단계
프로그램 카운터 갱신 = 조건부 분기 명령어인 경우, 조건을 평가하여 PC를 새로운 주소로 설정한다. 그렇지 않으면 PC는 다음 명령어를 가리키도록 증가한다.
인출(Fetch)
PC → MAR (메모리 주소 레지스터)
메모리 읽기 제어 신호
메모리 → MBR (메모리 버퍼 레지스터)
MBR → IR (명령어 레지스터)
해독(Decode)
IR의 오퍼코드 부분 해독
피연산자 주소 계산
필요한 레지스터 읽기
실행(Execute)
ALU를 통한 연산 수행
메모리 접근 제어 신호 생성
I/O 장치 제어 신호 생성
결과 저장(Store)
ALU 결과 → 레지스터/메모리
플래그 상태 갱신
갱신(Update)
PC 조건부 갱신 (분기 명령어인 경우)
다음 명령어를 위한 준비
현재, CPU에서는 이러한 명령어 사이클이 동시에 여러 단계에서 병렬로 실행될 수 있도록 파이프라인 구조를 갖추고 있다. 예를 들어, 한 명령어가 인출 단계에 있을 때, 이전 명령어는 해독 단계에 있을 수 있다.
파이프라인 구조는 명령어 처리의 효율성을 극대화하지만, 명령어 의존성, 분기 명령어 등에 의해 성능이 저하될 수 있다. 이를 해결하기 위해 다양한 최적화 기법들이 사용된다고 한다.
기사를 공부하면서 배웠던 내용중 일부 내용이 나와서 접근이 쉬웠다. 하지만 이런 파이프라인을 가지고 흐름을 가지는것을 깊숙하게 있었던 기억을 끄집어 내는 기분이었다.