Instruction cycle (CPU operation method)
명령 사이클(instruction cycle) (CPU 동작 방식)
CPU가 하나의 명령어를 수행하는 데 필요한 모든 단계나 과정
계속해서 명령 사이클을 반복하면서 CPU가 동작함
여러 단계로 나뉘어져 있음
인출(Fetch)
주기억장치로부터 수행할 명령어를 CPU로 가져옴
CPU의 프로그램 카운터(Program Counter, PC)가 가리키는 메모리 주소에서 명령어를 가져와 명령어 레지스터(Instruction Register, IR)에 저장
프로그램 카운터는 다음 명령어의 주소를 가리키도록 증가
간접(Indirect)
IR의 명령이 메모리 접근을 필요로 한다면, 해당 명령이의 메모리 주소가
직접주소인지간접 주소인지 확인if
직접 주소 명령추가적인 작업 없이 다음 단계로 진행
if
간접 주소 명령IR에 저장된 오퍼랜드를 통해 실제 메모리 주소를 찾아 해당 위치의 데이터를 가져온다.
가져온 데이터(실제 메모리 주소)를 IR의 오퍼랜드 부분에 저장한다.
실행(Execute)
인출된 명령어를 해독(decode)하고 적절한 동작을 수행
실행 사이클에서 수행되는 마이크로 연산들은 명령어에 따라 다름
ADD,LOAD,STA,JUMP…
인터럽트(Interrupt)
인터럽트 발생시 인터럽트 처리를 위한 단계
인터럽트 처리 순서
직접 주소 vs 간접 주소
**주소 지정 방식(Addressing Modes)**에 대한 내용이다.
직접 주소 지정 방식 (Direct Access Mode)
개념: 직접 메모리 접근 방식에서는 어셈블리 명령어 내의 오퍼랜드가 실제로 접근하고자 하는 메모리의 주소를 직접 나타냅니다.
예시: **
LOAD R1, 1000**이라는 명령어가 있다면, 이는 메모리 주소 **1000**에서 값을 가져와서 레지스터 **R1**에 저장하라는 의미입니다.
간접 주소 지정 방식 (Indirect Access Mode)
개념: 간접 메모리 접근 방식에서는 어셈블리 명령어 내의 오퍼랜드가 실제 데이터의 메모리 주소를 담고 있는 다른 메모리 위치를 가리킵니다. 즉, 명령어의 오퍼랜드는 "주소의 주소"를 나타내게 됩니다.
예시: **
LOAD R1, (1000)**이라는 명령어가 있다면, 이는 메모리 주소 **1000**에 저장된 값을 먼저 가져와서 (이 값은 또 다른 메모리 주소일 것입니다), 그 주소 위치에서 실제 데이터를 가져와 레지스터 **R1**에 저장하라는 의미입니다.
간단히 요약하면:
직접 주소 지정 방식: "이 주소에 있는 데이터를 가져와라."
간접 주소 지정 방식: "이 주소에 있는 값을 가져와, 그 값이 가리키는 주소로 가서 데이터를 가져와라."
간접 접근 방식은 특정 목적에 맞게 메모리 구조를 동적으로 변경할 필요가 있을 때 유용합니다. 예를 들어, 포인터나 참조 변수, 테이블 기반의 접근 방식 등에서 간접 메모리 접근 방식을 활용하게 됩니다.

참조
https://velog.io/@onenewarm/%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%82%AC%EC%9D%B4%ED%81%B4
Last updated