[CS : 컴퓨터 구조] CPU의 작동 원리 : 레지스터

2023. 10. 29. 18:16·Computer Science/컴퓨터 구조

T1 ) 레지스터란?

  • CPU 내부의 작은 임시 저장 장치이다.
  • 프로그램 속 명령어와 데이터는 실행 전·후로 레지스터에 저장된다.
  • CPU 내부에는 다양한 레지스터들이 있고, 각기 다른 역할을 가진다.

 

T2) 레지스터의 종류 ( CPU마다 종류가 다름 )

프로그램 카운터(Instruction Pointerl; 명령어 포인터) 메모리에서 가져올 명령어의 주소( 메모리에서 읽어들일 명령어의 주소 )
명령어 레지스터 해석할 명령어( 방금 메모리에서 읽어들인 명령어 ) → 제어장치가 해석함
메모리 주소 레지스터 메모리의 주소( CPU가 읽어들이고자 하는 주소를 주소 버스로 보낼 때 거치는 레지스터 )
메모리 버퍼 레지스터 메모리와 주고 받을 값( 데이터와 명령어 )  → CPU가 데이터 버스로 정보를 주고 받을 때 거치는 레지스터
플래그 레지스터 연산 결과 또는 CPU상태에 대한 부가적인 정보
범용 레지스터 다양하고 일반적인 상황에서 자유롭게 사용
스택 포인터 스택의 꼭대기를 가리키는 레지스터( 스택이 어디까지 차있는지에 대한 표시 )
베이스 레지스터  
더보기

프로그램 카운터, 명령어 레지스터, 메모리 주소 레지스터, 메모리 버퍼 레지스터가 어떻게 작동하는가

 

· 프로그램을 이루고 있는 명령어들은 각각 하나의 메모리 번지를 차지하고 있다고 가정한다.

· CPU가 실행하고자 하는 프로그램은 1000번지부터 1500번지까지 메모리에 저장되어있다.

· 명령어를 첫번째부터 실행한다고 가정한다.

 

· 프로그램 카운터에  메모리에서 가져올 명령어의 주소( 메모리에서 읽어들일 명령어의 주소 )인 1000이 저장된다.

· 프로그램 카운터에 담긴 1000번지 명령어를 메모리로부터 읽어와야하기 때문에 주소버스를 통해서 읽고자하는 주소를 메모리로 쏴줘야한다. 그러기위해서 메모리 주소 레지스터를 거치게된다.

· 메모리에게 (제어장치를 통한) 메모리 읽기 신호와 함께 몇 번지 주소를 읽고 싶은지를 쏴주게 된다.

· 메모리는 1000번지에 저장된 값을 메모리 버퍼레지스터로 데이터버스를 통해서 전달해준다. 그 후 프로그램 카운터는 1이 증가된다.(프로그램 카운터에는 다음에 메모리에서 가져올 명령어의 주소가 담기기때문에)

· 명령어 레지스터에는 해석할 명령어( 방금 메모리에서 읽어들인 명령어 )이 담기기때문에 메모리 1000번지에 있던 값 1101이 명령어 레지스터에 담기게 된다.

 

 

※ 프로그램 카운터가 1씩 증가하면서 순차적인 흐름을 가지면서 프로그램이 실행되지만 순차적인 실행 흐름이 끊기는 경우가 있다.

  • 특정 메모리 주소로 실행 흐름을 이동하는 명령어 실행 시 (e.g. JUMP, CONDITIONAL JUMP, CALL, RET)
  • 인터럽트 발생 시
  • ETC...

 

T3) 주소지정방식(특정 레지스터를 이용한 주소 지정 방식)

T3-Sub1) 스택 주소 지정 방식 : 스택과 스택 포인터를 이용한 주소 지정 방식

스택 주소 지정 방식
스택은 어디에 존재하는가

 

* 스택은 메모리안에 스택처럼 쓸 수 있는 공간이 미리 지정된 구역에 있다.

 

T3-Sub2) 변위 주소 지정 방식 : 오퍼랜드 필드의 값(변위)와 특정 레지스터(프로그램 카운터, 베이스 레지스터)의 값을 더하여 유효주소얻기

변위 주소 지정 방식
변위 주소 지정 방식의 명령어 형태

 

  • 상대주소 지정 방식 : 오퍼랜드 필드의 값(변위)과 프로그램 카운터의 값을 더하여 유효주소 얻기

 

  • 베이스 레지스터 주소 지정 방식 : 오퍼랜드 필드의 값(변위)과 베이스 레지스터의 값을 더하여 유효주소얻기

▶ 베이스 레지스터는 일종의 기준 주소 역할을 한다.

▶ 기준 주소 프로그램의 시작점 같은 것들이 담긴다.

▶ ex) 베이스 레지스터가 200, 오퍼랜드 필드의 값 50을 더하면 200번지로부터 50번지 떨어진 주소에 접근하라는 뜻이 된다.

 

 

 

 

 

출처: 인프런-개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard

 

저작자표시

'Computer Science > 컴퓨터 구조' 카테고리의 다른 글

[CS : 컴퓨터 구조] 명령어 사이클과 인터럽트  (0) 2023.11.01
[CS : 컴퓨터 구조] CPU의 작동 원리 : ALU와 제어장치  (0) 2023.10.28
[CS : 컴퓨터 구조] C 언어의 컴파일 과정  (1) 2023.10.25
[CS : 컴퓨터 구조] 03-2 명령어의 구조  (1) 2023.10.24
[CS : 컴퓨터 구조] 명령어 : 03-1 소스코드와 명령어  (0) 2023.10.23
'Computer Science/컴퓨터 구조' 카테고리의 다른 글
  • [CS : 컴퓨터 구조] 명령어 사이클과 인터럽트
  • [CS : 컴퓨터 구조] CPU의 작동 원리 : ALU와 제어장치
  • [CS : 컴퓨터 구조] C 언어의 컴파일 과정
  • [CS : 컴퓨터 구조] 03-2 명령어의 구조
JinSeong
JinSeong
재미없으면 안한다.
  • JinSeong
    As you think, so shall you become.
    JinSeong
  • 전체
    오늘
    어제
    • 분류 전체보기 (96)
      • 📆 Today I Learned(개발언어학습) (76)
        • JAVA (20)
        • HTML (1)
        • JSP (46)
        • SPRING (2)
        • ORACLE(DB) (6)
        • CSS (1)
      • 📆 Today I Learned(코딩테스트) (0)
        • JAVA (0)
      • Computer Science (9)
        • 컴퓨터 구조 (9)
        • 운영체제 (0)
        • 자료구조 & 알고리즘 (0)
        • 데이터베이스 (0)
      • 창고 (11)
        • 기초지식 (7)
        • 파일창고 (0)
        • 기술지식창고 (0)
        • 버그버그 👀 (4)
      • Tools🔧 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    java json리턴 에러
    java 스케줄러
    spring 스케줄러
    SQL
    no converter found for
    DB
    instanceof 연산자
    JAVA문자열자르기
    jdk구분
    ALU
    java 객체타입확인
    substring()
    이클립스 오버라이딩 메소드 자동 생성 기능
    java버전 표현
    명령어
    환경변수 차이
    제어장치
    레지스터
    Oracle
    CPU
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
JinSeong
[CS : 컴퓨터 구조] CPU의 작동 원리 : 레지스터
상단으로

티스토리툴바