본문 바로가기

CPU 관련 정보를 알아보자 1장

1. CPU 개요

프로그램 내장형 컴퓨팅 시스템에서 컴퓨터에 의해 수행되는 가장 기본적인 작업은 프로그램 실행 기능입니다. 이러한 프로그램 실행 기능은 CPU에 의해 이루어지며 CPU는 주기억 장치의 프로그램에 의해 기술한 명령어를 실행하여 실질적인 작업을 실행하게 됩니다.

 

CPU는 산술 논리 연산, 데이터 처리, 그리고 내부 장치를 제어하기 위해 다수의 명령어를 가지고 있으며, CPU의 동작은 일정한 명령어에 의해 결정됩니다. 이에 따라 CPU의 내부 구조는 정의된 기계 명령어를 보다 효율적으로 실행할 수 있도록 구성합니다.

 

CPU 내부에는 가장 중요한 구성 요소로 레지스터, 산술 논리 연산 장치, 제어 장치, 버스접속 장치 등이 있습니다. 레지스터는 CPU의 연산 과정에서 데이터의 임시 보관을 위해 사용하며 고속으로 동작하도록 설계되어 있습니다. 산술논리 연산 장치는 CPU의 핵심 요소로서 CPU 내의 다른 장치들과 연결하여 명령어의 명령 코드에서 지정한 산술 연산과 논리 연산을 실행하는 장치입니다. 제어 장치는 산술논리 연상 장치와 레지스터들을 이용하여 CPU 내부에서 일어나는 각 작업을 관리하는 역할을 수행합니다. 이 장치는 CPU가 실행할 수 있는 명령어 집합에 따라 각 명령어의 실행을 제어하며 또한 실행 당계별로 필요한 제어 신호를 발생합니다. 버스접속 장치는 CPU와 다른 주변 회로를 연결하는 통로 역할을 하고 CPU는 버스 접속 장치를 통해 주변 장치와 데이터를 주고받으며 제어 신호를 상호 교환합니다.

 

CPU에서 프로그램을 실행하는 과정을 살펴보면 CPU는 기억 장치로부터 명령어의 코드를 읽어와서 이 코드가 어떠한 동작을 요구하는지를 해석하여 피연산자의 유효 주소를 계산한 후 피연산자의 유효 주소로부터 명령어를 인출하여 연산을 실행합니다. 그리고 이 결과를 제지스터 또는 접속 장치를 통하여 외부 기억 장치에 기록합니다. CPU에서는 이러한 체계적인 과정을 통하여 하나의 명령어를 처리합니다.

 

레지스터, 산술논리연산 장치, 제어 장치로 구성되어 있는 CPU의 내부 구조를 보여주고 있습니다. CPU 내부의 레지스터, 산술논리연산 장치 등은 CPU의 클락 주기에 따라 제어 장치에 의해 동기적으로 동작하도록 설계되어 있습니다. 이와 같이 클락 주기에 따라 실행되는 CPU 내의 동작을 마이크로 연산이라 합니다. 해석한 기계 명령어 자체의 실행은 매크로 연산이라 하며 이와 대비하여 기계 명령어의 실행을 구성하는 마이크로 코드의 각 단계별 CPU 내의 실행은 마이크로 연산이라 합니다.

 

마이크로 연산은 레지스터 간의 데이터 전송, 레지스터에 저장된 데이터에 대한 산술 및 논리/시프트 연산을 나타냅니다. 실제 기계 명령어의 실행은 주소 지정 모드에 의해 명령어의 실행에 필요한 마이크로 연산의 처리 순서가 정해지고 동작 코드에 의해 산술논리연산 장치의 구성 및 실행 마이크로 연산의 내용도 각기 다르게 정해집니다.

 

CPU 내에서 각 명령어에 따라 그 실행에 피요한 마이크로 연산들을 지정하고 이를 수행하는 데 필요한 제어 신호를 발생하는 장치를 제어 장치라 합니다. 제어 장치는 논리 게이트로 구성한 디지털 논리 회로이며 구현하는 방식은 하드와이어적 방식과 기계어 프로그램과는 다른 저급 수준의 마이크로 프로그램에 의해 구현하는 마이크로 프로그래밍 방식이 있습니다.

 

2. 명령어 집합

컴퓨터에 의해 수행되는 가장 기본적인 작업은 프로그램 실행기능이며 C 또는 베이식과 같은 고급 프로그래밍 언어로 작성한 프로그램은 기계어로 변환된 후 CPU에 의해 실행하게 됩니다. 이러한 기계어는 2진수로 이루어지며 다양한 연산을 수행하는 컴퓨터의 동작을 정의합니다. 따라서 기계어를 사람이 이해하기 쉽게 표현한 것을 명령어라 하며 이들 명령어의 집합을 명령어 집합이라 합니다.

 

컴퓨터에서는 정의된 작업을 실행하기 위해 CPU가 주기억 장치에 저장되어 있는 명령어 집합으로 구성한 프로그램을 읽은 후 다음 명령어를 가져오는 과정을 연속적으로 반복함으로써 원하는 작업을 실행합니다.

 

CPU의 명령어 실행에 요구되는 과정을 명령어 주기라 하며 각 명령어 주기는 일반적으로 인출 주기와 실행 주기의 두 부분으로 구성되어 있습니다. 이러한 CPU에 의해 수행되는 명령어 주기는 프로그램 실행의 끝을 나타내는 명령어를 만났을 때 종료하게 됩니다.

 

명령어 집합의 구조는 명령어로 작성하는 프로그래밍 언어와 명령어가 실행되는 CPU의 내부 구조 등을 고려하여 설계하여야 합니다. 명령어 수가 많고 그 기능이 다양하면 컴퓨터가 수행할 수 있는 형태로 표현하기가 용이하고 번역기의 설계도 용이해집니다. 반면에 명령 코드의 비트 수가 많아지게 되므로 명령어의 크기가 커지고 명령 코드의 다양한 내용을 수행하기 위해 산술논리 연산 장치와 제어 장치가 보다 더 복작해지게 됩니다. 즉 명령어 집합은 레지스터 개수와 크기, 산술논리 연산 장치의 기능 및 구조, 제어 장치 구조 등의 CPU의 내부 구조와 메모리 구조의 설계에 직접 영향을 미치므로 이를 고려하여 설계하여야 합니다.

 

컴퓨터에서 각 명령어는 일련의 비트로 구성된 코드로 표현하며 명령어는 그 구성 요소에 따라 몇 부분으로 구분할 수 있습니다. 이러한 명령어의 구성 형태를 명령어 형식이라 하며 각 명령어는 실행할 내용을 나타내는 동작 코드 부분과 명령어의 실행에 필요한 데이터의 저장 장소를 나타내는 데이터 주소 부분으로 구성됩니다.

 

동작 코드와 두 개의 피연산자로 구성되어 있는 명령어의 간단한 예를 보여주고 있습니다. 그림에서 동작 코드는 CPU가 실제적으로 실행할 수 있는 연산들을 나타내는 부분으로 동작 코드가 n비트이면 실행 가능한 연산들의 최대 개수는 2n개입니다.

 

데이터 주소 부분은 며영어가 처리할 데이터 값 또는 해당 데이터가 위치하고 있는 저장 장치의 주소에 관한 정보를 포함하고 있습니다. 또한 데이터가 저장되어 있는 장소를 지정하는 방법을 주소 지정 모드라 합니다. 일반적으로 명령어 집합 내에는 하나 이상의 명령어 형식을 사용하고 있고 명령어 실행 중에 명령어는 CPU의 명령어 레지스터에 적재합니다. 또한 CPU는 요구하는 동작을 실행하기 위해 IR로부터 데이터를 읽어와서 처리합니다.

 

컴퓨터에서 명령어의 동작을 나타내는 동작 코드는 기호식이라 부르는 생략된 형태로 표현합니다. 또한 피연산자도 기호식으로 표현하는데 예를 들면 "ADD X, [Z]"와 같은 형태이며 이것은 기억 장치의 Z번지에 있는 데이터를 익어와서 레지스터 X의 내용에 더한 후 저장하라는 의미입니다. [Z]는 기억 장치 내의 장소를 가리키는 주소를 가리키고 X는 여러 레지스터 중에서 특정한 레지스터를 나타냅니다.

'컴퓨터정보' 카테고리의 다른 글