[운영체제 스터디] CPU의 작동원리

0

운영체제

목록 보기
4/6

1. ALU와 제어 장치

(1) ALU

ALU 제어신호피연산자를 받아들여, 다양한 연산을 수행한뒤 플래그 레지스터와, 결과값을 담은 레지스터를 반환한다.

그리고 이 결과값은 메모리가 아닌, 레지스터에 저장하는데, CPU가 레지스터에 접근하는것이 더 빠르기 때문입니다.

이 이야기는 저번시간에 잠깐 했으며, 이번챕터에서 알아야 할 키워드는 플래그 입니다.

(2) 플래그

ALU연산에 대한 추가적인 정보를 내보내야 할때가 있습니다.

예를 들어 -500이 결과값일경우, 컴퓨터는 플래그를 통해 부호를 알수 있습니다.

(3) 제어장치

제어장치는 제어신호를 내보내고, 명령어를 해석하는 부품이다.
제어신호는 컴퓨터 부품들을 관리하고 작동시키기 위한 전기 신호이다.

아래의 그림을 확인해보자

  1. 제어장치는 클럭 신호를 받아들인다.
  2. 제어장치는 해석해야할 명령어를 받아들인다.
  3. 제어장치는 플래그 레지스터 속 플래그 값을 받아들인다.
  4. 제어장치는 시스템 버스, 제어버스로 전달된 제어신호를 받아들인다.

2. 레지스터

프로그램 명령어와 데이터는 반드시 레지스터에 저장된다.
그렇기에 레지스터만 관찰하면 프로그램의 실행 흐름을 관찰할 수 있다.

(1) 반드시 알아야할 레지스터

  • 프로그램 카운터 : 메모리에서 가져올 명령어의 주소, 읽어들일 명령어의 주소를 저장합니다.

  • 메모리 주소 레지스터 : 메모리 주소를 저장하는 레지스터입니다.
    CPU가 읽어들이고자 하는 주소값을 주소버스로 보낼때 메모리 주소 버스 레지스터를 거친다.

  • 메모리 버퍼 레지스터 : 메모리와 주고받을값(데이터와 명령어) 을 저장하는 레지스터 입니다.

  • 명령어 레지스터 : 메모리에서 읽어들인 명령어를 저장하는 레지스터 입니다.

메모리 버퍼 레지스터는 데이터버스로 온 값만 저장할 수 있고, 메모리 주소 레지스터는 주소버스로 보낼 주소만 저장하고 있지만, 범용레지스터는 데이터와 주소 모두 저장할 수 있다.

현대 대다수의 CPU는 모두 범용 레지스터를 가지고 있다.

플래그 레지스터는 CPU 상태와 연산 결과에 대한 부가적인 정보를 저장하는 레지스터이다.

(2) 스택 주소 지정 방식

03장에 하지 못했던 주소 지정 방식이 있었다.

스텍 주소 지정바식은 스텍과 스텍 포인터를 이용한 주소 지정 방식이다.

스텍 포인터스택 마지막으로 저장한 값의 위치를 저장하는 레지스터이다.

그렇다면 스텍은 어디있을까? 바로 메모리 안에 있다.

이 영역은 다른 주소공간과 다르게 스텍처럼 사용하기로 암묵적으로 약속된 공간이다.

(3) 변위 주소 지정 방식

변위 주소 지정 방식은 오퍼랜의 값 (변위)와 특정 레지스터의 값을 더하여 유효 주소를 얻어내는 주소 지정 방식이다.

3. 명령어 사이클과 인터럽트

CPU가 명령어를 처리하는과정에는 정해진 름이 있고, 하나의 명령어를 처리하는 흐름을 명령어 사이클이라고 부릅니다.

아래의 그림을 확인해 봅시다.

(1) 명령어 사이클

메모리에서 인출한 명령어를 CPU로 가져와야 합니다.
메모리에 있는 명령어를 CPU로 가져오는 과정을 인출 사이클이라고 합니다.

CPU로 가져온 명령어를 실행하는 과정을 실행 사이클이라고 합니다.

이게 가장 간단한 방식이지만, 간접주소 지정 방식일때 메모리 접근이 더 필요합니다.

(2) 인터럽트

인터럽터는 "방해하다, 중단시키다"를 의미합니다.
인터럽터의 종류는 총 두가지로, 동기 인터럽트와 비동기 인터럽트가 존재합니다.

동기 인터럽트는 CPU에 의해 발생하는 인터럽트, 즉 예외 입니다.

비동기 인터럽트는 입출력 장치에 의해 발생하는 인터럽트 입니다.

하지만 비동기 인터럽트에도 우선순위가 있어서, 꼭 처리해야하는 인터럽트가 존재합니다.

CPU가 인터럽트 요청을 받아들이면 인터럽트 서비스 루틴을 실행하며, 인터럽트 요청을 처리합니다.

profile
쉽게 가르칠수 있도록 노력하자

0개의 댓글