[혼공컴운] Chap 4. CPU의 작동 원리

반디·2023년 1월 15일
0

컴구/OS

목록 보기
3/9

ALU

https://ko.wikipedia.org/wiki/%EC%82%B0%EC%88%A0_%EB%85%BC%EB%A6%AC_%EC%9E%A5%EC%B9%98

ALU는 CPU 내부에서 계산을 담당하는 장치입니다.

  • input: 피연산자 (from 레지스터) + 수행할 연산 (from 제어장치 입력신호)
  • output: 연산 수행 결과 (ex. 특정 숫자나 문자, 메모리 주소 등) + 플래그 (양/음수 여부 등 연산 결과에 대한 추가 정보)

CPU 메모리 접근 속도 < CPU 레지스터 접근 속도이므로, 연산 수행 결과는 바로 메모리에 저장되지 않고 일시적으로 레지스터에 저장됩니다.

플래그

플래그 종류의미예시
부호 플래그연산한 결과의 부호1:음수, 0:양수
제로 플래그연산 결과가 0인지 여부1:True, 0:False
캐리 플래그연산 결과의 올림수/빌림수 발생 여부1:True, 0:False
오버플로우 플래그오버플로우 발생 여부1:True, 0:False
인터럽트 플래그인터럽트 가능여부1: True, 0: False
슈퍼바이저 플래그현재 실행모드 (커널 모드/사용자 모드)1:커널, 0:사용자

제어장치

제어 신호를 내보내고 명령어를 해석하는 부품

https://witscad.com/course/computer-architecture/chapter/cpu-control-unit

  • input: 클럭 신호, 현재 수행할 명령어(from 명령어 레지스터), 플래그, 제어 버스로 전달된 제어 신호

  • output: CPU 외부에 전달하는 제어 신호(제어 버스로 보내는 제어 신호), CPU 내부에 전달하는 제어 신호

  • 클럭 신호: 컴퓨터의 모든 부품을 움직일 수 있게 하는 시간 단위
    클럭의 주기에 맞춰 한 레지스터에서 다른 레지스터로 데이터가 이동되거나 ALU에서 연산이 수행되는 등의 작업이 이루어집니다.
    Note. 컴퓨터의 모든 부품이 한 클럭마다 작동 (X) 컴퓨터 부품들은 클럭이라는 박자에 맞춰 작동 (O)
    하나의 명령어가 여러 클럭에 걸쳐 실행될 수도 있습니다.

  • CPU 내부에 전달하는 제어 신호

    • ALU에 전달하는 제어 신호: 수행할 연산 지시
    • 레지스터에 전달하는 제어 신호: 레지스터 간 데이터 이동 or 레지스터에 저장된 명령어를 해석

레지스터

레지스터는 CPU 내에 있는 작은 임시 저장 장치입니다.
프로그램 속 명령어와 데이터는 실행 전후로 반드시 레지스터에 저장되므로, 레지스터에 저장된 값을 잘 관ㄹ찰하면 CPU에서 수행되는 작업 및 작업 과정을 알 수 있습니다.

레지스터 종류의미
프로그램 카운터(명령어 포인터)메모리에서 가져올 명령어의 주소를 저장
명령어 레지스터메모리에서 읽어 들인 명령어를 저장
메모리 주소 레지스터메모리의 주소를 저장
메모리 버퍼 레지스터메모리와 주고받을 값(데이터와 명령어)을 저장하는 레지스터
범용 레지스터다양하고 일반적인 상황에서 자유롭게 사용가능, 데이터와 주소를 모두 저장할 수 있음
플래그 레지스터연산 결과 또는 CPU 상태에 대한 부가적인 정보를 저장

스택 주소 지정 방식

스택 주소 지정 방식은 스택과 스택 포인터를 이용한 주소 지정 방식입니다.
Recall: 스택: FILO(First in Last Out

  • 스택 포인터: 스택의 꼭대기를 가리키는 레지스터로 스택에 마지막으로 저장한 값의 위치를 저장하는 레지스터

변위 주소 지정 방식

변위 주소 지정 방식은 오퍼랜드 필드의 값(변위)과 특정 레지스터의 값을 더하여 유효 주소를 얻어내는 주소 지정 방식입니다.
레지스터의 값과 오퍼랜드에 있는 주소를 더한 곳에 있는 데이터로 연산 코드에 해당하는 내용을 수행하는 방식입니다.

  1. 상대 주소 지정 방식: 오퍼랜드와 프로그램 카운터의 값을 더하여 유효주소를 얻음
    ex) 오퍼랜드 = -3라면, CPU는 읽어 들이기로 한 명령어로부터 세 번째 이전번지로 접근
  2. 베이스 레지스터 주소 지정 방식: 오퍼랜드와 베이스 레지스터의 값을 더하여 유효 주소를 얻음
    ex) 베이스 레지스터 = 200, 오퍼랜드 = 40 이라면, 기준 주소 200번지로부터 40만큼 떨어진 240번지로 접근

확인문제
2. 설명에 맞는 레지스터를 보기에서 찾아 빈칸을 채워보세요.

  • 플래그 레지스터: 연산 결과 혹은 CPU 상태에 대한 부가정보를 저장하는 레지스터
  • 프로그램 카운터: 메모리에서 가져올 명령어의 주소를 저장하는 레지스터
  • 범용 레지스터: 데이터와 주소를 모두 저장할 수 있는 레지스터
  • 명령어 레지스터: 해석할 명령어를 저장하는 레지스터

참고문헌
https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=299014282&start=slayer

profile
꾸준히!

0개의 댓글