ALU와 제어장치

ALU


레지스터로부터 피연산자를 받아들이고 제어장치로부터 제어 신호를 통해 연산을 진행하는 곳

연산을 수행한 결과는 일시적으로 레지스터에 저장한다.

ALU는 계산 결과와 더불어 플래그를 내보낸다.

플래그는 연산 결과에 대한 추가적인 정보를 나타낸다(ex - 부호/제로/캐리/오버플로우...)

이러한 플래그들은 플래그 레지스터에 저장된다.

제어 장치


제어 신호를 내보내고 명령어를 해석

제어장치가 받아들이는 정보

  1. 클럭 신호

컴퓨터에서 연산을 조정하는 타이밍 신호, 클럭의 주기에 맞춰 한 레지스터에서 다른 레지스터로 데이터를 이동되거나 연산이 수행된다.

TMI 지만 과거 CPU 성능을 높이는 방법 중 가장 편리한 방법이 클럭(동적 주파수)을 높이는 것이었다고 한다.(오버 클럭) 아래는 오버 클럭으로 인한 발열을 잡기 위해 쿨링을 하는 사진

https://www.inven.co.kr/webzine/news/?news=235894&site=it
물론 그냥 코어 개수나 프로세스 수를 늘리면 되는 일이지만...재밌잖어...

  1. 명령어
    CPU가 해석해야 하는 명령어는 명령어 레지스터에 저장된다. 제어 장치는 이 명령어 레지스터로부터 해석할 명령어를 받아들이고 해석한 뒤, 제어 신호를 발생시켜 컴퓨터 부품들에 수행해야 할 내용을 알려준다.

  2. 플래그 레지스터 속 플래그 값

  3. 시스템 버스(제어 버스)로부터 전달된 제어 신호

제어장치는 CPU 내외부로 제어 신호를 내보낸다.

레지스터


반드시 알아야 하는 레지스터

  1. 프로그램 카운터
  2. 명령어 레지스터
  3. 메모리 주소 레지스터
  4. 메모리 버퍼 레지스터
  5. 플래그 레지스터
  6. 범용 레지스터
  7. 스택 포인터
  8. 베이스 레지스터

1. 프로그램 카운터(명령어 포인터)

메모리에서 가져올 명령어의 주소

2. 명령어 레지스터

해석할 명령어, 메모리에서 읽어 들인 명령어를 저장

3. 메모리 주소 레지스터

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

4. 메모리 버퍼 레지스터

메모리와 주고 받을 값을 저장하는 레지스터, CPU가 주소 버스로 내보낼 값이 메모리 주소 레지스터를 거치면, 데이터 버스로 주고 받을 값은 메모리 버퍼 레지스터를 거친다.

메모리에 저장된 프로그램을 실행하는 과정

  1. 프로그램 카운터에 메모리에서 가져올 명령어 주소가 저장(1000번지)

  2. 프로그램 카운터에 저장된 1000번지 위치를 메모리 주소 레지스터에 저장

  1. 메모리 읽기 제어 신호와 메모리 주소 레지스터 값이 각각 제어 버스와 주소 버스를 통해 메모리로 보내짐

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

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

  2. 제어장치는 명령어 레지스터의 명령어를 해석하고 제어 신호 발생

5. 플래그 레지스터

ALU 연산 결과에 따른 플래그를 저장

6. 범용 레지스터

다양한 상황에서 자유롭게 사용할 수 있는 레지스터

7. 스택 포인터

스택의 꼭대기를 가리키는 레지스터, 스택 주소 지정 방식에서 사용되는 레지스터

8. 베이스 레지스터

변위 주소 지정 방식에서 사용되는 레지스터

스택 주소 지정 방식과 변위 주소 지정 방식에 대해서는 아래에서 설명하겠다.

스택 주소 지정 방식


스택 주소 지정 방식 : 스택과 스택 포인터를 활용한 주소 지정 방식

스택에 위에서부터 주소가 매겨져 있고 아래부터 데이터가 저장되어 있다고 가정해보자.

이때 스택에 저장된 가장 위의 주소를 스택 포인터가 저장하고 있다.

이제 스택에서 1을 꺼내면 스택에는 2, 3이 남고, 스택 포인터는 5번지를 가리킨다.

이처럼 스택 포인터는 스택의 어디까지 데이터가 채워져 있는지에 대한 표시이다.

변위 주소 지정 방식


오퍼랜드의 필드 값과 특정 레지스터의 값을 더하여 유효 주소를 얻어내는 주소 지정 방식

변위 주소 지정 방식에는 상대 주소 지정 방식과 베이스 레지스터 주소 지정 방식 등이 존재한다. 여기서는 베이스 레지스터 주소 지정 방식에 대해 설명하겠다.

베이스 레지스터 주소 지정 방식

오퍼랜드와 베이스 레지스터의 값을 더하여 유효 주소를 얻는 방법

베이스 레지스터는 기준 주소, 오퍼랜드는 기준 주소로부터 떨어진 거리로서의 역할을 한다. 만약 베이스 레지스터가 200이란 값을 가지고, 오퍼랜드가 40의 값을 가지면 메모리의 240 번지를 접근하라는 뜻을 가진다.

profile
어쩌다보니 개발하게 된 구황작물

0개의 댓글