컴퓨터는 0,1로 이루어진 데이터가 어떻게 명령어를 통해 실행되는지, 컴퓨터를 구성하는 핵심부품은 무엇이 있고, 어떤 역할을 수행하는지 알아보자.
컴퓨터가 이해하는 정보
우리가 프로그램을 개발하기 위해선 프로그래밍 언어를 통한 소스코드를 작성한다. 그런데 정작 컴퓨터는 이러한 소스코드(자바, C언어...)를 직접적으로 이해하기는 못한다. 이해를 돕기 위해 내부적으로 변환 과정을 거치며, 이러한 변환을 통해 구성된 데이터와 명령어가 실행된다
데이터 - 숫자, 문자, 이미지, 동영상 등 정적인 정보, 즉 컴퓨터가 주고받는 정보나 컴퓨터에 저장된 정보 자체를 의미한다.(있는 그대로의 정보)
명령어 - 명령어는 이 데이터를 활용하는 정보이다.
즉, 데이터는 명령어의 종속적인 정보이며, 명령의 대상이자, 명령어의 재료라고 할 수 있다.
컴퓨터는 기본적으로 0과 1만을 이해한다. 그러므로 데이터와 명령어 또한 0과 1로 이루어져 있다. 즉 컴퓨터는 0, 1만을 이용해 다양한 숫자와 문자데이터를 표현하며, 이 데이터를 활용해 명령어를 실행한다.
이 명령어를 실행하는 주체가 컴퓨터의 핵심 부품 중 하나인 CPU이다. CPU는 컴퓨터의 명령어를 이해하고 실행하며, 이것은 CPU 종류에 따라 실행 가능한 세부적인 명령어와 처리 양상이 달라질 수 있음을 의미한다.
하지만 큰 틀에서 보면 CPU의 종류와 무관하게 공통적으로 활용되는 명령어가 있으며, CPU가 이러한 명령어를 어떤 방식으로 처리하는지 이해하는 명령어 사이클을 학습하는 것이 중요하다.
컴퓨터의 핵심 부품
컴퓨터의 종류가 다양해지고 있지만 그것을 구성하는 요소는 크게 다르지 않다. 바로 CPU(중앙처리장치), 메모리(주기억장치). 캐시 메모리, 보조기억장치, 입출력장치이다.
CPU(중앙처리장치)
컴퓨터가 이해하는 정보인 데이터와 명령어(0과 1로 구성된)를 읽어 들이고, 해석하고, 실행하는 부품이다. CPU는 정교한 부품으로, 다양한 내부 회로로 구성되어 있다. (개발자들이 이 회로를 모두 이해하는 경우는 드물다.)
따라서 CPU의 주요 구성요소와 명령어 처리를 위한 기술, 이 두 가지에 집중하여 학습하는 것이 좋다.
CPU는 산술논리연산장치(ALU)와 제어장치, 여러 레지스터로 구성된다.
- 산출논리연산장치(ALU): 사칙연산, 논리연산과 같은 연산을 수행할 회로로 구성되어 있는 일종의 계산기이다. CPU가 처리할 명령어를 실질적으로 연산하는 요소라고 보면 된다.
- 제어장치(CU): 명령어를 해석해 제어 신호라는 전기 신호로 내보내는 장치이다. 제어 신호(Control Signal)란 부품을 동작시키기 위한 신호를 말한다. CPU가 메모리 또는 입출력장치 등으로 제어 신호를 보내면 입출력장치를 작동시킬 수 있다.
- 레지스터(register): CPU 내부 작은 임시 저장장치로, 데이터와 명령어를 처리하는 과정의 중간값을 저장한다. CPU내 여러 개의 레지스터가 존재하며, 각기 다른 이름과 역할을 가지고 있다.
이 중 가장 중요한 요소는 레지스터이다. CPU가 처리하는 명령어는 반드시 레지스터에 저장되므로 레지스터 값만 잘 관찰해도 프로그램이 어떻게 실행되는지 낮은 단계에서 파악이 가능하다.
메모리와 캐시 메모리
핵심 부품 중 하나인 메인 메모리(주기억장치)이다. 메인 메모리는 흔히 메모리라 줄여 부른다. 여기서 메모리를 설명하기 전에 메인 메모리의 역할은 RAM과 ROM이 있는데 일반적으로 메인 메모리라는 용어는 RAM를 지칭한다.
CPU가 읽어들이고, 해석하고, 실행한다고 했는데 이 과정의 정보가 어딘가 저장되어야 처리가 가능하다. 이 정보를 저장하는 장치가 메모리이다. 즉, 메모리는 현재 실행 중인 프로그램을 구성하는 데이터와 명령어를 저장하는 부품이며 프로그램이 실행되려면 반드시 메모리에 저장되어 있어야 합니다.
메모리에서 기억해야할 중요한 포인트가 두 가지 있는데 주소와 휘발성이다. CPU가 빠르게 처리되기 위해선 메모리의 저장된 명령어와 데이터의 빠르게 접근할 수 있어야 한다. 그럼 저장된 정보들이 중구난방이 아니라 정돈되어 있어야 하는데 이러한 개념에서 사용되는 게 주소(Address)이다. 컴퓨터는 CPU가 원하는 정보로 접근하기 위한 주소를 제공함으로써 메모리 내 원하는 위치에 접근할 수 있게 하였다.
메모리에 대해서 일단은 아래 세 가지만 기억하면 된다.
- 프로그램이 실행되기 위해서는 반드시 메모리에 저장되어 있어야 한다.
- 메모리는 현재 실행되는 프로그램의 명령어와 데이터를 저장한다.
- 메모리에 저장된 값의 위치는 주소로 알 수 있다.
휘발성은 전원이 공급되지 않으면 저장하고 있는 정보가 지워지는 특성을 의미한다. 메모리는 휘발성 저장매체이며, 전원이 종료된다면 저장된 정보를 모두 삭제하게 된다. (실행되는 프로그램을 강조한 이유)
추가적으로, 메모리를 학습할 때는 반드시 함께 알아 두어야 할 저장장치가 있는데 바로 캐시 메모리이다. CPU와 메모리 사이에는 반드시 하나 이상의 캐시 메모리가 있다.
캐시메모리(Cache Memory)란 CPU가 조금이라도 더 빨리 메모리 접근하기 위해 사용되는 저장장치이다. 빠른 메모리접근을 보조하는 저장장치이다.
보조기억장치
앞서 메모리는 휘발성 저장장치라고 했다. 그래서 전원이 꺼지면 저장된 정보를 모두 잃게 되는데 이를 보조하기 위해 사용되는 것이 보조기억장치이다. 즉 보조기억장치는 전원이 꺼져도 저장된 정보가 사라지지 않는 비휘발성 저장장치이다.
CD-ROM, DVD, 하드디스크, 플래시 메모리(SSD, USB)와 같은 저장매체가 보조기억장치이다. 오늘날에는 하드디스크와 SSD을 자주 사용된다.
메모리가 현재 실행중인 프로그램을 저장한다면, 보조기억장치는 보관할 프로그램을 저장한다고 할 수 있다. 단 유의할 점은 CPU는 보조기억장치에 저장된 프로그램을 직접적으로 가져와 실행할 수 없다. 어떠한 프로그램에서 보조기억장치에 저장된 프로그램을 실행하려면 메모리로 복사한 후 실행하여야 한다. 이러한 과정에서 안전하고 안정적으로 보조기억장치를 구성하는 기술인 RAID가 있는데 그것은 보조기억장치 정리 포스팅에서 자세하게 알아보자.
입출력장치
입출력장치(Input/Ouput Device)는 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환하는 장치를 말한다. 말 그대로 컴퓨터가 어떠한 입력을 할 때 사용되는 장치는 입력장치, 컴퓨터의 정보를 받기 위해 사용되는 출력장치가 있다. 마우스, 키보드, 마이크 등은 입력장치이며, 스피커, 모니터, 프린터 등은 출력장치이다.
메인 보드와 버스
컴퓨터의 핵심 부품들을 어딘가에 연결할 수 있는 것이 필요하다. 그것이 메인보드 또는 마더보드이다. 부품들을 고정하고 연결하는 기판으로 구성되어 있다.
메인 보드에 연결된 부품들은 각자의 역할을 적절히 수행하기 위해 서로 정보를 주고받는다. 이때 각 컴퓨터 부품들이 정보를 주고받는 통로를 버스(bus)라고 한다. 핵심 부품들을 연결하는 시스템 버스(symtem bus)가 가장 중요하다.
저장장치의 계층구조
위에서 언급한 저장장치들은 다음과 같은 명제를 따른다.
1. CPU와 가까운 저장장치는 빠르고, 멀리 있는 장치는 느리다.
2. 속도가 빠른 저장장치는 용량이 작고, 가격이 비싸다.
각각의 저장장치를 CPU와 가까운 순으로 나열해 보면 '레지스터 -> 캐시메모리 -> 메모리 -> 보조기억장치' 이다. 저장장치들은 다음과 같은 계층적 구조를 가지게 된다.
컴퓨터 구조 지도
참고
'Knowledge > 컴퓨터구조&운영체제' 카테고리의 다른 글
[컴퓨터구조] CPU 성능 향상을 위한 설계 (클럭, 코어, 스레드) (0) | 2024.11.25 |
---|---|
[컴퓨터구조] CPU - 인터럽트 (0) | 2024.11.08 |
[컴퓨터구조] CPU - 레지스터 (0) | 2024.10.31 |
[컴퓨터구조] 컴퓨터가 이해하는 정보 - 명령어 (0) | 2024.10.28 |
[컴퓨터구조] 컴퓨터가 이해하는 정보 - 데이터 (0) | 2024.10.28 |