✏️ ALU

  • CPU 에서 계산을 담당하는 장치이다.
    • 계산을 하기 위해서 레지스터로부터 피연산자를 받아들이고,
      제어장치로부터 제어신호를 받아드린다.
    • 계산이 완료된 정보는 레지스터로 보내 저장한다.
      • 메모리보다 속도가 빠르기 때문에 레지스터에 저장시킴

📍 플래그

  • ALU 는 계산 결과이외에도 플래그를 추가적으로 레지스터에 저장시키기도 한다.
    • 플래그는 연산 결과에 대한 부가정보를 의미한다.
    • 생성된 플래그는 일반 레지스터가 아닌 플래그 레지스터에 저장된다.

✏️ 제어장치

  • CPU 에서 제어 신호를 발생시키고 명령어를 해석하는 장치이다.

📍 주요 기능

  • 클럭
    • 컴퓨터의 모든 부품을 일사불란하게 움직일 수 있게 하는 시간 단위
    • 메트로놈 처럼 클럭 주기를 측정한다.
    • 클럭 주기를 통해 업무를 클럭 단위로 계획하고 실행한다.
  • 명령어 해석
    • 명령어 레지스터로부터 해석할 명령어를 받아드린다.
  • 플래그 해석
    • 플래그 래지스터로부터 플래그를 받아드려 명령어를 해석하기 위해 사용한다.
  • 제어 신호 해석
    • 제어장치 이외에도 외부 입출력 장치에서 제어 신호를 발생시킬 수 있다.
    • 이러한 외부 신호를 제어장치에서 해석한다.
  • CPU 내부에 정보 전달
    • 제어 신호를 레지스터나 ALU 로 전달한다.
  • CPU 외부로 정보 전달
    • 메모리나 입출력 장지로 제어신호를 전달한다.

✏️ 레지스터

  • CPU 내부의 작은 임시 저장장치
    • 프로그램 속 명령어와 데이터는 실행 전후로 레지스터에 저장된다.

📍 주요 레지스터

  • CPU 종류마다 레지스터의 종류와 이름이 다르기때문에 공통적으로 주로 사용되는 레지스터만 알아보자
  1. 프로그램 카운터
    • 메모리에서 읽어들일 명령어의 주소를 저장
    • 즉, 가져와야 할 명령어의 주소를 의미한다.
  2. 명령어 레지스터
    • 방금 메모리에서 읽어들인 명령어를 저장
    • 즉, 해석해야 할 명령어를 의미
    • 저장된 정보는 제어장치로 보내 해석후 제어신호를 내보내게 된다.
  3. 메모리 주소 레지스터
    • 메모리의 주소를 저장
    • CPU 가 메모리로부터 주소값을 읽어들여야 할 때 주소 레지스터에서 메모리 주소를 확인 후 주소버스를 통해 읽어드린다.
  4. 메모리 버퍼 레지스터
    • 메모리와 주고받을 값을 저장한다.
    • 값은 데이터와 명령어를 의미
  5. 플래그 레지스터
    • 연산 결과 또는 CPU 상태에 대한 부가적인 정보를 저장
  6. 범용 레지스터
    • 다양하고 일반적인 상황에서 자유롭게 사용되는 레지스터
  7. 스택 포인터
    • 스택 주소 지정 방식을 사용한 주소 지정에 사용됨
    • 스택 포인터는 스택의 꼭대기를 가리킨다
    • 스택 영역은 메모리의 한 부분을 할당받아 사용된다.
  8. 베이스 레지스터
    • 변위 주소 지정 방식을 사용한 주소 지정에 사용된다.
    • 오퍼랜드 필드의 값(변위) 과 특정 레지스터의 값(기준)을 더하여 유효 주소를 얻는 방식이다.
    • 오퍼랜드를 어떤 레지스터의 값과 더해야되는지도 알아야 되기 때문에 명령어에 연산코드, 레지스터, 오퍼랜드 3가지 정보가 포함된다.

📍 레지스터의 작동 순서 (1번 ~ 4번)

  • 상황
    • CPU 가 실행해야 할 프로그램이 메모리에 1000 ~ 1003 번지에 저장되어 있다.
    • 1000 번지부터 순서대로 실행해야 한다.
  1. 프로그램 카운터에 가장 먼저 실행해야 할 1000 번지가 저장된다.
  2. 메모리 주소 레지스터에 읽고자 할 주소인 1000 이 복사되 저장 된다.
  3. 메모리 주소 레지스터는 주소 버스를 통해 메모리의 1000 번지에 신호를 보낸다.
    • 이때 제어장치는 메모리 읽기 신호를 제어 버스를 통해 데이터 요청신호를 보낸다.
  4. 제어신호를 받은 메모리는 1000 번지의 값을 메모리 버퍼 레지스터로 데이터 버스를 통해 전달한다.
    • 이때 저장되는 값은 주소값이 아닌 데이터 값이 저장된다.
    • 프로그램 카운터는 다음 실행해야 할 주소인 1001 번지로 순차적 흐름으로 1씩 증가된다.
  5. 이제 메모리 버퍼 레지스터에 저장된 데이터를 해석하기 위해 명령어 레지스터에 복사한다.
  6. 명령어 레지스터에 저장된 값은 제어장치로 보내저 처리된다.
  7. 2번부터 반복해 마지막 프로그램 실행목록 1003 번지까지 수행한다.
profile
잘못된 내용 PR 환영

0개의 댓글