ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 레지스터와 명령어 사이클
    Computer Science/컴퓨터 구조 2023. 8. 11. 00:42

    레지스터 : CPU 제조사마다 다름. 여러 제조사가 공통 포함하는 레지스터

    • 프로그램 카운터 : 메모리에서 읽어들일 명령어의 주소 저장
    • 명령어 레지스터 : 메모리에서 읽어들인 명령어를 저장 -> 제어 장치가 이 레지스터의 명령어를 받아들임
    • 메모리 주소 레지스터 : 메모리 주소를 저장. CPU가 읽어들이고자 하는 주소값을 버스로 보낼 때 주소 레지스터 거침
    • 메모리 버퍼 레지스터 : 메모리와 주고 받을 값 저장. 메모리에 쓰고 싶은 값이나 전달 받은 값 저장. 데이터 버스로 주고 받고 이 레지스터를 거침
    • 플래그 레지스터 : 연산 결과의 플래그 저장 
    • 범용 레지스터 : 자유롭게 사용하는 레지스터
    • 스택 포인터 : 스택의 꼭대기를 가리키는 레지스터 (스택 영역이라는 공간이 메모리에 따로 있다)
    • 베이스 레지스터 : 기준 주소 세팅하는 레지스터

    레지스터를 이용한 주소 지정 방식

    상대 주소 지정 방식 : 프로그램 카운터의 값 + 혹은 - 만큼 이동한 주소의 명령어 실행

    베이스 레지스터 주소 지정 방식 : 베이스 레지스터 값으로 부터 떨어진 거리의 주소의 명령어 실행

     

     

    CPU 동작

    인출 사이클 <-> 실행 사이클

     

    + 간접 사이클 : 메모리 접근이 더 필요한 경우

    + 인터럽트 사이클 

     

    - 인출 사이클 순서

    명령어 (프로그램은) 메모리에 적재되어 있다. 프로그램이 1000번지 부터 시작한다고 하자.

    1. 프로그램 카운터에 1000번지 저장. 메모리에서 가져올 명령어가 1000번지에 있다는 것을 뜻함.

    2. 주소 버스로 내보내기 위해 메모리 주소 레지스터에 1000 저장.

    3. '메모리 읽기' 제어신호와 함께 메모리 주소 레지스터 값이 각각 제어버스와 주소버스를 통해 메모리에 전달

    4. 메모리 1000번지에 있는 값이 데이터 버스를 통해 메모리 버퍼 레지스터에 전달되고 프로그램 카운터는 증가되어 다음 명령어를 읽어들일 준비.

    5. 메모리 버퍼 레지스터에 저장된 값이 명령어 레지스터로 이동

     

    - 실행 사이클 : 명령어 실행

    제어장치가 명령어 레지스터를 해석하고 제어신호 발생시킴

     

     

    인터 럽트 종류

    - 동기 인터럽트 (예외) : 프로그램 오류

    - 비동기 인터럽트 (하드웨어 인터럽트) : 대부분 입출력 장치에서 오는 신호

     

    하드웨어 인터럽트 처리 순서

    1. 입출럭 장치가 CPU에게 인터럽트 요청 신호를 보냄

    2. CPU가 실행 사이클을 마치고 인출 사이클 전에 인터럽트가 있는지 항상 확인

    3. 인터럽트 플래그 (플래그 레지스터) 로 인터럽트 처리가 가능한지 확인

    4. 인터럽트 처리가 가능하면 현재 작업 백업 ( 스택영역에 백업 )

    5. 인터럽트 벡터를 참조하여 인터럽트 서비스 루틴을 실행

    6. 인터럽트 작업이 끝나면 4에서 백업해 둔 작업 실행

     

    인터럽트 서비스 루틴 : 인터럽트를 처리하기 위한 프로그램. 운영체제마다 미리 정의되어 있음.

    인터럽트 벡터 : 여러 인터럽트 식별하기 위한 정보 (인터럽트 명령어 시작 주소를 알 수 있음)

     

     

     

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

    CALL, RET, 함수 호출  (0) 2024.04.25
    명령어의 구조  (0) 2023.08.05
Designed by Tistory.