새소식

반응형
CS/Computer Architecture

[CS] 컴퓨터 구조의 큰 그림

  • -
반응형

CS

컴퓨터 구조의 큰 그림


이번 시간에는 컴퓨터 구조의 큰 그림에 대해 알아보는 시간을 배워보자. 이번 포스팅에서는 컴퓨터 구조에 대한 세세한 지식보단 컴퓨터 구조를 배우기 앞서 앞으로 어떤 것을 어떻게 배울 것인지에 대한 로드맵에 대해 알아보는 시간이다. 
 
📢 해당 포스팅에서 낯선 컴퓨터 용어가 종종 등장할 수 있지만 모두 암기하면서 읽지 않아도 되니 가볍게 읽어주길 바란다.
 

Computer Architecture

 
컴퓨터 구조는 크게 2가지로 나눌 수 있다. 위의 그림에서 알 수 있듯이, 첫 번째는 컴퓨터가 이해하는 정보이고 두 번째는 컴퓨터의 네 가지 핵심 부품이다.
 
그럼 먼저 컴퓨터가 이해하는 정보란 무엇인가에 대해 알아보자. 컴퓨터가 이해하는 정보에는 또 크게 두 가지가 있다. 

Information that computer understands

 
그 둘은 데이터와 명령어이다. 물론 각 항목에 대해서 나중에 자세하게 다룰 예정이지만 지금은 간략하게 데이터는 무엇이고 명령어는 무엇인지에 대해서만 알아보겠다. 
 

데이터 명령어
숫자, 문자, 이미지, 동영상과 같은 정적인 정보 컴퓨터는 결국 명령어를 처리하는 기계
컴퓨터와 주고받는 내부에 저장된 정보를 데이터라 통칭하기도 함 컴퓨터를 실질적으로 움직이는 정보
0과 1로 숫자를 표현하는 방법 데이터는 명령어를 위한 일종의 재료
0과 1로 문자를 표현하는 방법 컴퓨터와 대화하는 수단

 
알고 있는 분들도 있겠지만 모르는 분들을 위하여 조금 설명하자면 먼저 컴퓨터는 0과 1만을 인식할 수 있다. 포스팅을 계속 이어나가면서 추후에 이런 컴퓨터가 0과 1로 어떻게 숫자, 문자, 심지어 이미지나 동영상 그리고 소리를 인식하는지에 대해 알아볼 것이다. 
 
그리고 명령어는 간단하게 설명하자면 말 그대로 컴퓨터에게 내리는 명령이다. 우리가 컴퓨터 혹은 전자기기를 통해 하는 거의 모든 행위는 우리도 몰랐지만 사실은 기계에게 명령어를 내리고 있는 행위이다. 예를 들어, 우리가 브라우저창을 클릭해서 인터넷창을 켠다고 생각해 보자. 바탕화면에서 브라우저를 클릭하는 행위는 "브라우저창을 열어"라는 명령을 컴퓨터에게 지시하는 것이다. 그 행위를 우리는 마우스 클릭으로 하고 있을 뿐이다. 즉 명령어는 컴퓨터와 대화를 하는 수단인 것이다. 
 
다음은 컴퓨터가 이해하는 4가지의 핵심 부품에 대해 알아보자. 세상에는 다양한 컴퓨터들이 존재한다. 필자가 현재 글을 쓰고 있는 데스크톱부터 스마트폰, 노트북, 서버 컴퓨터 등 많은 종류의 컴퓨터가 있다. 하지만 이렇게 다양한 종류의 컴퓨터들이 있다고 해도 내부에서 컴퓨터가 동작하는 원리는 거의 동일하다. 아래의 컴퓨터의 4가지 핵심 부품은 컴퓨터의 종류에 상관없이 모두 존재한다고 생각하면 된다.
 

4 main components of a computer

 
이번 포스팅에서는 각 부품에 대해 자세히 다루기보다는 각 부품들이 무엇이고 어떤 역할을 하는지에 대해만 간단하게 알아볼 것이다. 
 
📢 위의 그림에서 메모리는 RAM(주기억장치)를 의미한다.
 
주기억장치에는 원래 크게 2가지의 종류가 있는데 첫 번째는 RAM이고 두 번째는 ROM이다. 이 두 가지가 주기억장치의 역할을 하는 하드웨어 이름이라고 생각하면 된다. 하지만 필자의 포스팅에서는 메모리를 지칭할 때 RAM을 가리킨다고 생각하면 된다. 왜냐하면 컴퓨터를 조금 더 실질적으로 동작시키고 컴퓨터의 동작을 이해하는데 더 중요한 하드웨어는 RAM이기 때문이다. 
 
 
 

컴퓨터의 4가지 핵심 부품


그럼 이제 컴퓨터의 4가지 핵심 부품이 어떻게 생겼는지에 대해만 살펴보자.
 
📢 앞서 언급했다시피 구체적인 내용은 추후에 따로 포스팅할 예정이므로 이번 포스팅에서는 해당 부품들이 어떻게 생겼는지에 대해만 알아보는 시간이다.
 

CPU


CPU

 
일단 생김새부터 보면 CPU는 위의 그림과 같이 생겼다. 컴퓨터를 잘 모르는 사람이라도 CPU는 한 번쯤은 보았을 것이라고 생각한다. CPU가 어떻게 생겼는지 모르는 사람이라도 그냥 위의 이미저처럼 생겼다고 생각하면 된다. 
 

RAM, ROM

 
 

RAM & ROM

 
RAM과 ROM은 위의 이미지처럼 생겼다. 이 두 가지가 주기억장치다(또는 메모리라고도 불림). 하지만 일반적으로 메모리라고 하면 RAM을 의미한다는 것만 기억하자. 
 

보조기억장치


보조기억장치

 
보조기억장치는 USB, SSD, CD, 하드디스크 등 대용량으로 저장할 수 있는 장치를 의미한다. 지금은 대용량으로 저장할 수 있는 대신 속도는 RAM보다 느리다는 특징이 있다는 정도만 기억하자.
 

Input/Output Device


입출력 장치

 
잘 모르는 분들도 아마 이름만 들어도 예상할 수 있을 거라 생각한다. 입출력 장치는 컴퓨터와 정보를 전달할 수 있는 역할을 한다. 키보드로 예를 들면, 키보드는 컴퓨터 외부의 정보를 컴퓨터 내부로 전달하는 역할을 하기 때문에 입력 장치이다.. 또한, 마이크 같은 경우는 외부의 소리를 컴퓨터 내부로 전달하는 역할을 하니, 이 또한 입력 장치인 것이다. 모니터는 컴퓨터 내부의 정보를 외부로 출력하므로 출력 장치이다. 
 

메인보드


메인보드 혹은 마더보드

 
위의 부품들이 서로 정보를 주고받기 위해서는 결국에는 하나의 모이는 지점이 있어야 한다. 그 역할을 해주는 장치를 메인보드 혹은 마더보드라고 한다. 컴퓨터의 핵심 부품들을 부착할 수 있는 장치라고 생각하면 된다. 
 
 

 
위의 그림으로 해당 부품들이 어떻게 연결되어 있는지 한 번 살펴보자. CPU 안에 ALU, CU, Register 등이 있지만 지금은 컴퓨터의 핵심 부품으로 CPU, 메모리, 입출력장치, 메인보드 등이 있다는 것만 보면 된다. 즉 CPU 안에 ALU, CU, Register들이 어떤 것들인지에 대해 자세하게는 해당 포스팅에서는 다루지 않겠다. 시스템 버스는 메인보드를 한 번이라도 본 적이 있는 사람들이라면 메인보드에 선로같이 선들이 있는 걸 본 적이 있을 것이다. 그것들이 시스템 버스인데 정보들을 주고받을 수 있는 통로라고 생각하면 된다. 그리고 그 통로를 버스라고 부른다. 버스의 종류는 다양하지만 그중 가장 중요한 버스는 시스템 버스이다. 
 

메모리


메모리는 현재 실행되는 프로그램(프로세스)의 명령어와 데이터를 저장하는 부품이다. 여기서 핵심은 현재 실행되는 프로그램이다. 즉, 어떠한 프로그램이 실행되기 위해서는 메모리에 저장되어 있어야 한다. 그리고 현재 실행되고 있지 않은 프로그램들은 보조기억장치에 저장되어 있다.

Memory

 
메모리에 대한 중요한 개념을 하나 짚고 넘어가 보자. 메모리에는 위의 그림과 같이 주소라고 하는 개념이 있다. 위의 각 칸마다 하나의 주소를 가지고 있다. 메모리가 예를 들어 32GB라고 해보자, 그럼 해당 메모리에 담을 수 있는 명령어와 데이터가 수 없이 많을 것이다. 그럴 때 내가 원하는 데이터와 명령어가 정확히 어디에 저장되어 있는지 알아야 하기 때문에 각 위치마다 주소를 할당하는 것이다. 
 
위의 그림으로 설명하자면 1번지와 2번지에는 명령어가 저장되어 있고 3번지와 4번지에는 데이터가 저장되어 있다. 물론, 실제로 컴퓨터에는 위와 같이 저장되지 않고 명령어와 데이터가 모두 0과 1로 되어있다는 점만 기억하자. 그리고 현재 5번지와 6번지에는 아무것도 저장되어있지 않다.
 
따라서 메모리에 대해 간단하게 정리하면 다음과 같이 할 수 있다.

  • 프로그램이 실행되기 위해서는 메모리에 저장되어있어야 한다.
  • 메모리는 실행되는 프로그램의 명령어와 데이터를 저장한다.
  • 메모리에 저장된 값의 위치는 주소로 알 수 있다.

 

CPU


CPU

 
다음은 cpu에 대해 알아보자. cpu는 다른 부품들에 비해 비교적 많이 유명한 부품이기에 컴퓨터에 대해 잘 모르는 사람들도 한 번쯤은 들어봤을 거라 생각한다. cpu는 컴퓨터의 두뇌와도 같은 부품이다. 좀 더 전문적으로 얘기하면 위의 그림에서도 알 수 있듯이, 명령어를 읽어 들이고 해석하고 실행하는 역할을 담당한다. 컴퓨터의 두뇌 역할을 하는 만큼 cpu의 설계는 실제로 매우 정교하고 복잡하다. 
 
위의 그림에서 볼 수 있듯이 CPU의 구성요소는 ALU(산술논리연산 장치), CU(제어장치), Register로 크게 3가지로 구성되어 있다.

  • ALU : 계산기
  • CU : 제어신호를 내보내고, 명령을 해석하는 장치이다. 참고로 제어신호는 컴퓨터 부품들을 관리하고 작동시키기 위한 전기 신호이다.
    • CPU가 메모리에 저장된 값을 읽고 싶을 땐 메모리를 향해 메모리 읽기라는 제어신호를 보낸다.
    • CPU가 메모리에 어떤 값을 저장하고 싶을 땐 메모리를 향해 메모리 쓰기라는 제어신호를 보낸다.
  • Register : CPU 내부의 작은 저장장치

Memory

 
앞서 살펴보았던 메모리의 구조를 다시 보며 이해해 보자. 해당 메모리 속에 있는 명령어들을 실제로 CPU(정확하게는 CPU안에 있는 ALU)가 어떻게 실행하는지 대략적으로나마 살펴보자.
 

Control signal

 
제어장치는 제어신호라고 하는 부품을 관리할 수 있는 전기신호를 쏘고 명령을 해석할 수 있는 장치이다. 그렇기 때문에 일단 CPU가 1번에 있는 명령어를 읽어 들여서 실행하기 위해서는 해당 명령어를 CPU로 읽어 들여야 한다. 그래서 CPU의 제어장치는 메모리를 향해서 메모리 읽기라고 하는 제어 신호를 내보낸다. 실제론 이거보다 조금 더 복잡하긴 하지만 지금은 여기까지만 알고 있어도 괜찮다. 
 
메모리 1번지를 향해서 메모리 읽기 신호를 보냈다면, 메모리는 1번지에 해당하는 명령어를 CPU 내부에 있는 작은 저장장치인 레지스터에 전달해 주게 된다. 그리고 CU(제어장치)는 제어신호를 내보내는 장치이기도 하지만, 명령어를 해석할 수 있는 장치라고 앞서 설명했다. 그래서 제어장치는 레지스터에 저장되어 있는 명령어를 해석하게 된다. 
 
현재 1번지에서 가져온 명령어가 "3번지와 4번지를 더하라"이기 때문에 제어장치는 3번지와 4번지에 다시 한번 메모리 읽기를 수행한다. 그럼 마찬가지로 3번지와 4번지 또한 레지스터에 저장되게 된다. 그리고 실제로 연산을 수행하는 장치는 ALU이다.  ALU는 제어장치가 메모리에서 읽어와 레지스터에 저장한 120과 100을 더한 뒤에 레지스터에 저장하게 된다. 
 
여기까지 하게 된다면 첫 번째 명령어인 "3번지와 4번지를 더하라"의 수행이 끝나게 된다. 그럼 2번째 명령어인 "결과를 저장해라"를 실행하게 된다. 마찬가지로 제어장치로부터 메모리에서 읽어와 해당 명령어를 해석하여 레지스터에 저장하게 된다. 그러면 제어장치는 이를 "메모리에 계산 결과인 220을 저장해야겠구나"라고 해석하며 메모리 쓰기 신호로 메모리에 저장하게 된다.
 

보조기억장치


다음은 보조기억장치에 대해 알아보자. 보조기억장치는 왜 필요할까? 보통 메모리라고 하면 RAM을 지칭한다고 위에서 언급했다. 하지만 RAM은 보조기억장치에 비해 값이 비싸고 컴퓨터의 전원이 꺼지면 저장된 내용을 잃어버린다. 한 번쯤은 우리가 컴퓨터로 무언가 작업을 하다 저장하지 않은 상태에서 작업 내용을 날려버린 경험을 해봤을 것이다. 그런 경우는 현재 실행 중인 프로그램은 전부 RAM에 저장되어 있기 때문이다. 그래서 전원이 꺼지면 저장된 내용을 전부 잃어버리는 장치를 보통 휘발성 장치라고 한다. 
 
따라서, 우리는 전원이 꺼져도 데이터를 저장할 수 있는 저장장치가 필요하다. 그래서 등장한 게 바로 보조기억장치이다. 보조기억장치는 전원이 꺼져도 데이터를 저장할 수 있게 한다. 그래서 우리가 작업을 하고 저장을 한 다음 전원을 꺼도 다음번에 실행할 때 저장된 내용을 불러올 수 있는 것이다. 정리하자면 메모리(RAM)는 실행할 프로그램을 저장하고 보조기억장치는 보관할 정보를 저장한다. 
 

입출력 장치


입출력장치는 아마 익숙할 것이다. 마우스, 키보드, 모니터 등등이 전부 입출력장치이다. 그래서 입출력장치는 컴퓨터 외부에서 연결돼서 컴퓨터 내부와 정보를 주고받을 수 있는 장치를 의미한다. 그러면 외장하드나 USB 같은 장치도 결국엔 컴퓨터 외부에서 연결돼서 컴퓨터 내부와 정보를 주고받을 수 있는 부품이 아닌가 하는 의문을 가지는 사람들도 있을 것이다. 그렇다면 보조기억장치도 결국엔 입출력장치일까?
 
만약 저런 의문점을 가졌다면 아주 좋은 자세이다. 보조기억장치와 입출력장치를 나누어놓기는 했지만 개념은 같다고 볼 수 있다. 그래서 때로는 보조기억장치와 입출력장치를 통틀어 주변장치라고 부르는 경우도 있다. 하지만 보조기억장치는 메모리는 보존한다는 명확한 역할이 있어 입출력장치와 별도로 나누어 놓았다고 필자는 개인적으로 생각한다. 
 

메인보드


마지막으로 메인보드에 대해 한 번 살펴보자. 메인보드는 위의 언급한 부품들을 모두 연결할 수 있는 부품이다. 그리고 그 부품들끼리 정보를 주고받을 수 있는 경로를 버스라고 하는데, 그 버스들 중에서도 정말 중요한 역할을 하는 버스를 시스템버스라고 한다. 그래서 메인보드에는 여러 가지 슬롯과 연결단자들이 있고 거기에 부품들을 장착할 수 있다. 

  • 메인보드에 연결된 부품은 버스를 통해 정보를 주고받는다.
  • 버스는 컴퓨터의 부품끼리 정보를 주고받는 일종의 통로이다.
  • 다양한 종류의 버스가 있다.
  • 컴퓨터의 핵심 부품을 연결하는 버스는 시스템버스이다.

시스템버스에 대해 조금만 더 자세히 살펴보자. 시스템버스는 크게 주소버스, 데이터버스, 제어버스를 구성하고 있고 각 구성의 역할은 다음과 같다.

  • 주소버스 : 주소를 주고받는 통로
  • 데이터 버스 : 명령어와 데이터를 주고받는 통로
  • 제어 버스 : 제어 신호를 주고받는 통로

아까 제어장치에 대해 배울 때 제어장치는 메로리에서 데이터를 읽거나 저장할 때 제어신호를 보낸다고 했다. 그 제어신호가 이동하는 경로가 위에서 언급한 제어 버스이다. 따라서, 주소 버스를 통해서 메모리 주소를 받고 제어 버스를 통해 메모리 읽기나 쓰기 신호를 전달하게 된다.
 
 
 
 

728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.