레지스터가 중요한 이유
- CPU와 메모리 간, 데이터/명령어 송수신할때 반드시 `레지스터`에 저장됨
- 레지스터의 값만 잘 트래킹해도 프로그램 실행 흐름을 파악할 수 있음
레지스터 종류
- 프로그램 카운터(`PC`) : 메모리에서 가져올 명령어의 주소
- 명령어 레지스터 : 메모리에서 읽어들인 명령어를 저장
→ 제어장치가 명령어 레지스터의 명령어를 해석하여, 제어 신호를 발생시킴 - 메모리 주소 레지스터(`MAR`) : 메모리의 주소를 저장 (@주소 버스)
- 메모리 버퍼 레지스터(`MBR` or `MDR`) : 메모리와 주고받을 값을 저장 (@데이터 버스)
- 범용 레지스터 : 메모리 주소와 데이터 모두를 저장 (MAR + MBR 모두 커버)
- 플래그 레지스터 : CPU 상태에 대한 부가적인 정보 저장
- 스택 포인터(`SC`) : 메모리의 스택 영역 내, 데이터의 최상단 위치를 저장
그림으로 살펴보면
1. x001 이라는 메모리 주소에 해당되는 명령어를 가져와야 합니다.
▶ PC : x001
2. 시스템버스를 통해서 데이터를 가져와야하니, 메모리 주소 레지스터에 해당 값을 넘김
▶ 메모리 주소 레지스터 : x001
3. 제어장치의 메모리읽기 신호를 통해서, 해당 메모리의 명령어를 읽는다
4. 시스템버스를 통해 메모리와 주고 받은 명령어 또는 데이터를 저장한다
▶ 메모리 버퍼 레지스터 : data1
5. 동시에 다음 프로그램 명령어를 읽어들일 준비
▶ 프로그램 카운터 : x002 (+1)
6. 메모리로부터 읽은 들인 명령어를 명령어 레지스터에 저장
7. 이후 제어장치에서 명령어를 해석하고, 처리
8. x001 명령어 처리 이후, x002순으로 순차적으로 처리 진행
알아두면 좋은
- `Fetch` cycle : 메모리에 있는 명령어를 CPU로 가져오는 단계 (2~6번)
출처
'CS' 카테고리의 다른 글
[CS] 효율적인 명령어 분배 : 명령어 파이프라인 (0) | 2024.04.15 |
---|---|
[CS] CPU 성능과 연관된 용어 : 클럭, 코어, 스레드 (0) | 2024.04.14 |
[CS] 명령어 구조 알아보기 (0) | 2024.04.12 |
[CS] 명령어 변환방식 : 컴파일, 인터프리터 (0) | 2024.04.11 |
[CS] 문자집합, 인코딩, 디코딩에 대하여 (feat. 아스키코드) (0) | 2024.04.11 |