본문 바로가기
Computer Science/컴퓨터공학(김용담 강사님)

컴퓨터 아키텍처란: 폰노이만 구조, 명령주기

by 코듀킹 2023. 4. 9.
목차
1. 컴퓨터 아키텍처(Computer Architecture)란?
2. 컴퓨터 시스템의 구성 요소(Components of a computer system)
3. 폰노이만 아키텍처(Von Neumann Architecture)
4. 명령주기(Instruction Cycle)

 

1. 컴퓨터 아키텍처(Computer Architecture)란?

아키텍처라는 말은 건축에서 유래됐으며, 뜻을 단순하게 풀이하면, 구조, 설계와 같은 의미를 가집니다. 즉, 컴퓨터 아키텍처란 컴퓨터를 구성하는 하드웨어와 소프트웨어를 포함한 컴퓨터 시스템 전체의 구조와 설계 모형을 의미합니다. 이는 하드웨어와 컴프트웨어의 상호작용에 대한 설계와 구현도 포함합니다. 컴퓨터 아키텍처는 시스템의 성능, 신뢰성, 에너지 효율성 등을 결정하는데 중요한 역할을 합니다.

 

컴퓨터 아키텍처는 프로세서와 메모리 간의 데이터 전송 방식, 명령어 집합 구성, 파이프라인 구조, 캐시 구조 등 다양한 요소들을 고려하여 설계됩니다. 이를 통해 컴퓨터 시스템의 성능을 최적화하고, 에너지 효성을 향상시키는 등 다양한 목적을 달성할 수 있습니다. 

 

이 분야에서는 컴퓨터의 구조, 레지스터, 캐시, 메모리, 입출력 장치 등 하드웨어 구성 요소들이 어떻게 작동하는지에 대한 연구가 이루어집니다. 또한 컴퓨터 시스템이 어떻게 프로그래밍되고, 데이터가 처리되는지에 대한 연구도 포함됩니다. 때문에 컴퓨터 시스템의 구성요소들 간의 상호작용을 이해하고 최적화하는데 필수적인 지식입니다.

 

 

2. 컴퓨터 시스템의 구성 요소(Components of a computer system)

컴퓨터 시스템은 다양한 하드웨어와 소프트웨어 요소들로 구성되어 있습니다.

 

1) 중앙처리장치(CPU)

중앙처리장치(CPU)는 컴퓨터에서 가장 중요한 구성 요소 중 하나입니다. CPU는 컴퓨터의 모든 작업을 제어하고 수행합니다. 프로그램의 명령어를 해석하고 실행하는 역할도 포함됩니다. 산술 논리 연산 장치(ALU), 제어 장치, 레지스터 등으로 구성되어 있습니다.

 

2) 주기억장치(Main Memory)

메모리는 컴퓨터가 사용하는 데이터를 저장하는 장치입니다. 이는 주기억장치(RAM)와 보조기억장치(HDD, SSD 등)로 구성됩니다. 주기억장치는 CPU가 바로 접근할 수 있는 장치입니다. CPU가 프로그램 실행을 실행할 때 필요한 데이터와 명령어를 저장합니다. 컴퓨터가 꺼지면 모든 데이터가 날라가는 휘발성을 가지고 있고, 저장할 수 있는 데이터 용량이 보고기억장치에 비해 매우 적습니다.(보통 8~16GB)

 

3) 입출력장치(Input/Output Devices)

입출력장치는 컴퓨터와 사용자 간의 상호작용을 돕는 장치입니다. 모니터, 키보드, 마우스 등이 있습니다. 키보드, 마우스는 사용자가 컴퓨터에게 데이터를 입력해주는 입력장치이고, 모니터, 스피커 등은 출력장치입니다.

 

4) 보조 기억장치(Storage=Secendary Memory)

데이터를 임시적, 반영구적으로 저장하는 장치입니다. 하드 디스크 드라이브(HDD), SSD, USB 플래시 드라이브 등이 있습니다. 보조기억장치는 주기억장치와는 달리 비교적 느리지만, 대용량의 데이터를 저장할 수 있습니다.

 

5) Bus

컴퓨터 내부에서 데이터와 명령어를 전송하는 통로입니다. 버스는 데이터 버스, 주소 버스, 제어 버스 등으로 나뉘어져 있습니다.

 

6) (Mother) Board

CPU, 메모리, 버스 등의 하드웨어 요소들이 담겨 있는 회로 기판입니다. 보드는 다양한 부품들이 부착되어 있어서 시스템의 기능과 성능을 결정합니다. 

 

 

3. 폰노이만 구조(Von Neumann Architecture)

폰노이만 아키텍처

폰노이만 구조는 현재 대부분의 컴퓨터에서 사용되고 있는 가장 기본적인 아키텍처입니다. 메모리, 입출력장치가 CPU를 중심으로 연결되어 있는 구조이고, 프로그램과 데이터가 같은 메모리 공간에서 저장되어 처리되는 구조입니다. 

 

CPU는 메모리에 저장된 프로그램을 실행하며, 프로그램에서 필요한 데이터 또한 메모리에서 가져옵니다. 이러한 구조에서는 CPU가 메모리와 입출력장치에 직접 접근할 수 있기 때문에, 처리 속도가 빠릅니다.

 

폰노이만 아키텍처의 가장 큰 특징은 명령어와 데이터가 동일한 메모리에 저장되어 있기 때문에, 명령어와 데이터를 구분하기 위한 별도의 제어 신호가 필요하지 않다는 점입니다. CPU는 메모리에서 순차적으로 명령어를 읽어와 실행하는 방식으로 동작합니다. 

 

하지만 이러한 구조는 명령어와 데이터를 동시에 처리할 수 없다는 단점이 있습니다. 즉, CPU가 명령어를 실행하는 동안에는 데이터 처리가 이루어지지 않습니다. 예를 들어, 프린터 출력을 하는 명령어를 실행 할 때, 키보드를 쳐도 컴퓨터가 멈춰있거나 하는 현상이 발생하죠. 이렇게 병목 현상을 일으킬 수 있기 때문에, 현대 컴퓨터에서는 병렬처리 기술, 멀티 코어 프로세서 등을 이용해 이러한 한계를 극복하고 있습니다.

 

그렇다면 명령어가 어떻게 수행되길래 이렇게 병목현상이 일어나는 걸까요?

 

 

4. 명령주기(Instruction Cycle, IC)

명령주기(Insruction Cycle, IC)는 CPU가 메모리로부터 1개의 명령어를 가져와 이를 수행하는 과정을 말합니다. IC는 아래 5단계로 이루어집니다.

 

1) Fetch

Fetch 단계에서는 CPU가 메모리에서 다음으로 실행할 명령어를 가져옵니다. 이 때, CPU는 메모리 주소 버스를 이용해 메모리 주소를 지정하고, 데이터 버스를 통해 명령어를 인출합니다. 이 과정에서의 순차적으로 한번에 처리되는 데이터 단위는 1word이며, 현재 CPU가 처리하는 최소 정보처리 단위로써 대부분 64-Bits를 사용하고 있습니다.

 

2) Decode

Decode단계에서는 CPU가 인출한 명령어를 해독하여 명령어가 어떤 작업을 수행해야 하는지를 결정합니다. 이 때, CPU는 명령어의 '6', '3' 같은 피연산자(operand)와 '+', '-" 같은 연산자(operator)를 구분하고, 해당 명령어에 필요한 레지스터나 메모리 주소 등을 결정합니다. 

 

3) Excute

Excute 단계에서는 CPU가 결정한 명령어를 해석하고 실행합니다. 이때, CPU는 연산을 수행하기 위해 필요한 데이터를 레지스터에서 저장하거나 가져옵니다.

 

4) Memory(Access)

Memory 단계에서는 CPU가 메모리에 접근하여 데이터를 읽거나 쓸 수 있습니다. 이 때, CPU는 메모리 주소를 결정하고, 데이터 버스를 통해 메모리와 데이터를 주고 받습니다. 

 

5) Write Back

Write Back 단계에서는 계산된 결과를 레지스터에 저장합니다. 이 때, CPU는 결과를 저장할 위치를 결정하고, 데이터 버스를 통해 결과를 저장합니다. 

 

위 5단계의 과정을 반복하여 CPU가 프로그램을 실행합니다. 기존 폰노이만 구조에서는 이 5단계 순차적으로 이루어져야하기 때문에 병목현상이 일어나는 것이죠. 병렬처리 기술에 대한 자세한 부분 다음 포스팅에서 다뤄보겠습니다.

댓글