Home 4장 컴퓨터 내부 구조
Post
Cancel

4장 컴퓨터 내부 구조

전자부품을 다양하게 조합해 비트를 조작하는 회로를 만들 수 있는데 이런 회로를 ‘컴퓨터’리고 한다. 현대 컴퓨터는 크게 메모리, 입력과 출력, CPU 라는 세 가지 부분으로 나눌 수 있다.

메모리

컴퓨터에서는 조작할 비트들을 저장할 장소가 필요하다. 이런 장소를 메모리라고 부른다. 메모리는 집이 빈틈없이 늘어선 거리와 같다. 모든 집은 크기가 똑같고 모든 집에는 정해진 개수만큼 비트를 저장할 수 있는 방이 있다. 컴퓨터를 만드는 규칙에는 각 집마다 1바이트를 저장한다고 되어 있고, 각 집에는 주소가 부여된다. 메모리의 기본 단위가 바이트라는 것이 꼭 바이트 단위로만 데이터를 읽어야 한다는 뜻은 아니다. 예) 32비트 컴퓨터는 메모리가 4바이트 덩어리, 64비트 컴퓨터는 메모리를 8바이트 덩어리로 구성한다. 이는 마치 1차선 도로대신 4차선, 8차선 고속도로를 사용하는 것과 비슷하다.

다양한 메모리가 있는데 각 메모리는 서로 가격/성능 비율이 다르다. 또 사용하는 프로세서에 따라 어디에 저장될지가 다르기 때문에 한 시스템에서 다른 시스템으로 데이터를 전송할 때는 이런 점을 염두해 둬야 한다.

입력과 출력

컴퓨터에서 정보를 전달하거나 컴퓨터에서 정보를 가져올 방법이 필요하다. 이런 방법을 입력(input)/출력(output) 줄여서 I/O라고 부른다. I/O 장치를 컴퓨터의 주변부에 위치하여 주변장치 영어로는 peripheral 이라고 한다.

컴퓨터에는 I/O 처리를 위한 별도의 거리가 존재한다. 32비트나 64비트 컴퓨터가 흔해진 요즘은 메모리 거리의 주소 수가 훨씬 많아졌다. 메모리 거리가 길기 때문에 모든 주소에 집이 있기는 않게 되었고, 메모리 거리 중 일부를 I/O 장치에 할당하는 것이 타당해졌다.

중앙 처리 장치

중앙 처리 장치(CPU)는 실제 계산을 처리하는 컴퓨터 부품이다.

1) 산술 논리 장치(ALU)

CPU의 핵심 부품으로 산술 계산, 불리언 대수 및 기타 연산을 수행하는 방법을 알고 있는 장치다. 산술 논리 장치의 구조 중 피연산자는 수를 표현하는 비트이고, 연산 코드는 명령코드(어떤 연산자를 적용할지)를 지정한다. 조건 코드에는 결과에 대한 추가 정보가 들어간다. 보통 ‘조건 코드 레지스터’라는 레지스터에 조건 코드가 저장된다.

2) 시프트

왼쪽 시프트는 어떤 숫자의 모든 비트를 왼쪽으로 1비트씩 옮기고 맨 왼쪽 비트는 버리고 비게 되는 가장 오른쪽 비트에 0을 넣는다. (오른쪽 시프트도 마찬가지) 이때 사라지는 왼쪽 비트 또는 오른쪽 비트의 값이 필요할 때가 종종 있다. 그래서 이 비트를 조건 레지스터에 저장한다.

순차적인 시프트 레지스터는 1비트를 시프트할 때 한 클록이 필요하기 때문에 느리다. 실렉터와 조합 논리를 사용하는 배럴 시프터를 사용하면 이런 문제를 해결할 수 있다.

3) 실행 장치

실행 장치는 제어 장치라고도 알려져 있고 컴퓨터의 대장 역할을 한다. 실행 장치는 메모리의 정해진 장소에서 명령코드와 피연산자들을 가져와서 ALU에게 어떤 연산을 수행할지 알려주고, 결과를 메모리에 돌려준다.

우리는 실행 장치에게 명령어 목록을 제공한다. 이 명령어는 위치 10에 있는 수를 위치 12에 있는 수와 더해서 결과를 위치 14에 넣어라 같은 내용이다. 실행 장치는 이러한 명령어를 메모리에서 찾을 수 있다. 이런 식으로 실행되는 컴퓨터를 ‘프로그램 저장 방식 컴퓨터’라고 부른다.

명령어는 컴퓨터에게 어떤 일을 할지 알려주는 비트 패턴이다. 이런 비트 패턴은 CPU 마다 고유한 설계에 속한다. 그리고 실행 장치는 메모리에서 명령어를 가져와야 하는 위치를 어떻게 알까? => ‘프로그램 카운터’를 사용하여 알 수 있다. 프로그램 카운터에는 메모리 주소가 들어있고 메모리 위치를 가리킨다. 그래서 실행 장치는 프로그램 카운터가 가리키는 주소에서 명령어를 읽어온다.

명령어 집합

1) 명령어

176~178p

2) 주소 지정 모드

주소 지정 방식에는 사용할 주소가 명령어에 직접 들어가 있는 직접 주소 지정 방식, 피연산자의 주소를 얻을 수 있는 메모리 위치를 가리키는 주소로 사용하는 간접 주소 지정 방식이 있다. 간접 주소 지정 방식의 경우 더 많은 메모리를 사용할 수 있다.

상수를 지정할 필요가 있는 경우에는 즉시 주소 지정 모드 라는 또 다른 주소 지정 모드를 추가할 수 있다.

3) 조건 코드 명령어

조건 코드를 다루는 명령어에는 조건 코드 레지스터의 값을 누산기로 복사하는 cca라는 명령어와 누산기의 값을 조건 코드 레지스터에 복사하는 acc라는 명령어를 추가할 수 있다.

4) 분기 명령어

명령어를 처음부터 끝까지 순서대로 수행하는 상황에서 의사결정을 내리고 코드 중 일부를 선택해서 실행할 수 있는 프로그램이 있으면 정말 좋을 것이다. 이런 명령어를 ‘분기 명령어’라고 부른다.

5) 최종 명령어 집합 구성

최종 명령어 구성은 모드_명령코드_주소로 되어있다. 주소 지정 모드는 세 가지가 있어 모드 선택을 위해 2비트가 필요하다. 그리고 주소 지정 모드와 명령코드를 디코딩하면 명령어를 얻을 수 있다.

마지막 설계

1) 명령어 레지스터

컴퓨터에서 벌어지는 일을 두 단계로 이뤄진 상태 기계로 설명할 수 있다. 처음에 컴퓨터가 해야 하는 일은 메모리에서 명령어를 가져오는 페치다. 명령어를 가져오고 나면 이 명령어를 어떻게 실행할지 고민해야 한다.

명령어를 실행하려면 메모리에 접근해야 할 경우가 많다. 페치한 명령어에 편하게 접근할 수 있도록 저장할 다른 위치가 필요한데 CPU에 명령어 레지스터를 추가해서 현재 실행 중인 명령어를 저장한다.

2) 데이터 경로와 제어 신호

3) 데이터 흐름 제어

186~189p

RISC와 CISC 명령어 집합

설계자들은 유용한 컴퓨터 명령어를 만들어냈지만 컴퓨터 제어 회로도 복잡해졌다. 미국 컴퓨터 과학자인 버클리의 데이비드 패터슨과 존 헤네시는 여러 프로그램을 통계적으로 분석한 결과, 복잡한 명령어 중 상당 부분이 거의 쓰이지 않는다는 사실을 발견했다.

복잡한 명령어를 단순한 명령어로 조합해 처리하는 기계를 RISC기계라고 부른다. 이와 대조적으로 기존 설계 방식으로 만든 컴퓨터를 CISC 기계라고 부른다.

RISC 기계의 중요한 특징으로는 적재-저장 구조를 사용한다는 점이다. 이 아키텍쳐는 메모리와 레지스터를 오가는 명령어들과 레지스터 간 명령어로만 이뤄진 구조다.

GPU

그래픽 처리 장치 GPU를 특정짓는 기능이 두 가지 있다. 1)GPU에는 간단한 처리 장치가 아주 많이 들어 있다. 2)GPU는 CPU보다 메모리 버스의 폭이 더 넓다. 이로인해 메모리에 더 빠르게 접근할 수 있다.

This post is licensed under CC BY 4.0 by the author.

3장 메모리와 디스크의 핵심- 순차 논리

5장 컴퓨터 아키텍처와 운영체제