기타 지식

반도체가 모여 컴퓨터가 되기까지 1편 - 마이크로프로세서

안녕 얘들아 나는 컴퓨터 시스템 설계 쪽에서 대학원을 다니고 있는 놈이야

현재 세계 경제를 지탱하고 있는 IT산업에서 가장 중요한 기기는 바로 컴퓨터이고,
이 컴퓨터들을 반도체들로 이루어져 있다는 것은 대충 다들 알고 있을 거야

그렇다면 이 IT산업 쪽의 뉴스들을 보다 보면 접하는 단어들
(디지털, 이진수, 반도체, 컴퓨터, CPU, GPU, 논리회로, 트랜지스터, 메모리 반도체, 삼성, 소프트웨어) 등등이
어떻게 연관되어 있는지 궁금해봤던 적이 있어?

그래서 난 반도체라는 것들을 어떻게 뽕짝뽕짝해서 지금도 너희가 보고 있는 이 컴퓨터가 동작하는지 몇 개의 글들을 통해서 설명해줄까 해.

* 나도 아직 배우는 입장이고, 잘 못 설명해주는 부분이 많으니 지적해주면 적극 반영하도록 할게,
그리고 맞춤법 좀 많이 틀릴 거야 아마… 최대한 고쳐볼게….

이전편
0편-논리회로(https://www.dogdrip.net/176291879)

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

1편 – 마이크로프로세서

 이번 편에서는 컴퓨터의 중심인 중앙처리장지, CPU(Central Processing Unit)에서 ‘연산’을 맞고 있는 core에 대해 알아보려고 해.
CPU자체가 processing unit인데 왜 연산 core를 따로 다뤄야 하냐고?

1.gif

<메인보드-CPU칩-CPU layout>

 초기 CPU는 진짜 processing만 수행하는 연산장치였어. 하지만 컴퓨터의 속도가 점점 빨라짐에 CPU와 밀접하게 연산하는 주변 장치들이 CPU 안으로 들어오기 시작해, 이것을 system on chip(SOC)이라고 부르지, 예를 들어 요즘 인텔 CPU들 보면 안에 내장 그래픽카드가 다 있잖아? 이것 말고도 뭐 여러 가지 주변 장치들이 되게 많기 때문에, 이번 편에서는 CPU 자체만의 연산을 담당하는 core가 어떤 개념으로 동작하는지 볼 거야.

 

0.논리 블록

 본격적으로 마이크로프로세서를 알아보기 전에 논리 블록을 잠깐 알아야 해, 논리 블록이 뭐냐면 전편에서 논리회로에 대해 배웠고 간단한 덧셈기를 소개했었지? 하지만 모든 연산기를 게이트 단위로 표현하면 설계도가 너무 복잡해지기 때문에 기존의 논리 회로도를 그냥 흰 네모칸으로 압축해버려, 연산기의 기능은 이름을 통해서 알려주고… 이 네모 칸들을 논리 블록이라고 부르고 이 블록들로 시스템을 설계하는 도면을 논리 블록도(logic block diagram)라고 불러 ㅎㅎ

2.gif

<8-bit full adder 논리회로 -> 논리블록>

 이로써 지금까지 반도체 레이아웃->트랜지스터 단위 회로도->논리 회로도->논리 블록도 이렇게 도식의 기본 요소들의 추상도를 높여 왔지? 이 것을 abstraction level(추상레벨?)이라고 하는데, 반도체, 회로 하는 사람들은 high level, low level이라는 말을 쓰는데, 이게 잘할수록 레벨업 이런 느낌이 아니고, 전공으로 하는 분야의 범위가 abstraction level에서 어디쯤 위치하는 지를 뜻해. 로우 레벨을 다룰수록 회로, 더 나아가 소자 쪽을 다루는 사람들이고 하이 레벨일수록 시스템 설계나 펌웨어 등을 설계하는 사람들을 뜻해

 

1.마이크로프로세서란?

자 서론이 길었는데 이제 본격적으로 마이크로프로세서가 무엇인지 알아볼게.

 마이크로프로세서는 단순히 입력을 통해 연산하는 연산기를 뛰어넘어, 정해진 입력 패턴(명령어)에 따라 기본적인 동작들을 여러 가지 수행하는 할 수 있는 연산장치들을 뜻해. 이 기본적인 동작들은 크게 연산하는 동작과, 데이터를 저장/불러오는 동작으로 나뉘는 데 이 동작들을 응용해서 광범위한 기능들을 수행할 수 있지.

무슨 말인지 잘 이해가 안 되지?

예를 들어 설명해줄게, A와 B라는 학생이 각각 평균값을 구하는 연산기를 만들었어.
A는 1,2,3,4,5 라고만 넣어주면 바로 ‘평균값 3’이 딱 뜨는 평균값 계산기를 만들어 왔고,
B는 +,/ 라는 버튼이 있어서 1+2+3+4+5, /5를 눌러야 평균값 3이 뜨는 계산기를 만들어왔어.

그렇다면 A와 B가 만든 계산기는 어떤 특징들을 가지고 있을까?
먼저 A의 계산기는 숫자만 넣으면 바로 평균값이 나오니깐, 훨씬 다루기 쉽고, 빠르게 나오겠지?
하지만 B의 계산기는 조금 오래 걸리기는 하겠지만, +와 /를 이용해서 평균값뿐만 아니라 전체 합, 일반 나눗셈 등을 수행할 수 있지?

A는 B보다 성능면에서 더 우월하지만
B는 A보다 더 범용적인 연산기를 만든 거지.

위에서 설명한 논리연산기와 마이크로프로세서의 차이점이 이렇다고 생각하면 돼.
이 글에서는 B연산기의 +,/ 같은 마이크로프로세서의 기본 동작들을 뜻하는 ‘명령어’를 먼저 알아보고, 이 마이크로 프로세서의 내부구조, 연산방식을 다뤄 볼 거야.

 

2. 명령어(instruction)

 명령어는 마이크로프로세서(이하 프로세서)가 동작하는 가장 작은 단위야. 이 명령어는 이진수라서 인간이 보기는 힘들기 때문에 인간이 보기 쉽도록 번역한 거를 어셈블리어라고 해. 우리가 흔히 코딩하고 이 코딩을 컴퓨터에서 돌리기 위해서 ‘컴파일’한다고 하는데, C언어 같은 프로그래밍 언어는 인간들이 프로그램을 쉽게 짜기 위한 언어이고, 컴파일은 이 언어를 컴퓨터가 알아듣는 어셈블리어(명령어)로 바꿔주는 작업이지.

예를 들어 볼게

C = A + B;

라는 코드를 컴퓨터에서 돌리려고 해. A,B,C는 각각 메모리 주소 0, 4, 8번지에 저장돼있다고 가정 해보자(이 것도 나중에 다룰 것임)
이 코드를 컴파일하면 아래와 같은 어셈블리어가 나와

1) Load R1 0x0000 – 0번지의 데이터를 R1으로 불러온다
2) Load R2 0x0004 – 4 번지의 데이터를 R2로 불러온다
3) ADD R3 R1 R2 – R1과 R2를 더한 후 R3으로 저장한다
4) Store R3 0x0008 – R3의 데이터를 8번지에 저장한다
(보기 좋게 써져 있지만 사실 명령어는 001000101010101010101… 이렇게 생김, R1,2,3는 프로세서가 연산할 때 임시로 쓰는 저장소인데 다음 챕터를 참고)

그럼 프로세서는 이 명령어들을 수행하면서 C = A + B라는 코드를 수행하는 거야.

 

마이크로프로세서는 크게 세가지 종류의 동작을 해, 명령어들의 종류가 세가지라고 보면 돼

1. 어떤 데이터들을 연산한다(사칙연산 같은 거)
2. 특정 주소에 데이터들을 저장하거나 불러온다
3. 프로그램 명령어들을 불러온다.

위 보드는 1번과 2번 종류의 명령어들이 쓰였어.

 프로세서라는 것은 결국 데이터를 저장하고, 연산하는 게 전부이기 때문에 이 세가지만 동작할 수 있으면 프로그램이 돌아갈 수 있어.
예를 들어 계산기를 켜서 돌린다고 해봐

1) 계산기 프로그램 명령어들을 불러온다(3)
2) 키보드의 주소로 접근하여 입력된 데이터를 불러온다(2)
3) 데이터를 연산한다(1)
4) 연산 결과 데이터를 저장한다(2)

 이런 식으로 움직이는 거지(실제론 훨씬 복잡하고 많은 명령어들이 수행돼, 하지만 프로세서는 한 명령어 수행하는데 보통 1나노초 이하로 걸리기 때문에 우리는 순식간에 수행된다고 느끼는 거지)

 

3. 내부구조

자 그럼 프로세서가 어떤 식으로 명령어를 수행해서 연산하는 지 한번 보여줄게,

 앞으로 보여줄 블록도는 아주 단순한 프로세서의 내부 블록도라고 할 수 잇고, 아마 대학교에서 컴퓨터 구조를 배우는 학생들을 다 한번씩 보았을 블록도 일거야. 물론 현대 프로세서는 훨씬 복잡하고 크지만, 결국 뼈대는 비슷해 이 도식만 이해해도 CPU의 동작 원리의 기본은 다 이해했다고 보면 돼!

 밑에 그림을 보면 생각보다 그림이 되게 단순하지? 프로그램을 막 수행하고 하려면 되게 복잡해야 될 것 같은데? 물론 밑에 그림이 디테일을 빼고 중요 부분만 표현한 거긴 하지만, 다른 말로 말하면 저게 가장 뼈대야 ㅎㅎ 밑에 있는 프로세서로도 사칙연산 하는 계산기 같은 거는 코드로 짜서 돌릴 수도 있는 프로세서지. 그럼 살펴보도록 하자!

3.gif

<프로세서 동작 구조(5-stage pipeline)>

여기 그림을 보면 회색 막대로 크게 5개의 구역으로 나누어져 있는 것으로 볼 수 있지? 이 5개의 stage를 지나면서 연산을 완료해.

그리고 각 구역마다 큰 블록이 하나씩 있어

1: Instruction memory, 2: Register, 3: ALU, 4: Data memory, 5: Register(잘보면 선이 2stage에 있는 Register에 연결돼있음)

레지스터: 데이터를 임시적으로 저장하는 곳이다. 메모리에서 데이터를 가지고 오는데 오래 걸리기 때문에 CPU는 데이터를 임시로 저장할 곳을 가지고 있어. 이 레지스터는 한 클럭(프로세서가 움직이는 시간 단위) 안에 데이터를 꺼낼 수 있지. 그래서 프로세서는 메모리에서 데이터를 불러와서 레지스터에 저장해 놓고, 연산할 때에는 레지스터에서 데이터를 꺼내서 연산해. 레지스터는 프로세서들마다 다 다르지만 보통 3~40개 정도 가지고 있어

ALU(Arithmetic logic unit): 산술 연산과 논리 연산을 수행하는 연산기야. 이 예제 프로세서는 하나만 가지고 있지만 현대 프로세서는 정수연산기, 소수점연산기들을 여러 개씩 가지고 있어.

메모리: 데이터와 명령어들을 저장하고 있는 곳이야. 모든 데이터들은 메모리에 저장되어 있고 프로세서가 데이터를 얻기 위해서는 반드시 메모리에 접근해야 하지. 하지만 메모리에 접근해서 데이터를 가지고 오는 데에는 시간이 오래 걸려.

데이터: 프로세서가 다루게 되는 정보들을 얘기해, 이 정보는 크게 명령어(instruction)와 데이터(data)로 나뉘지, 프로세서는 자기가 무슨 연산을 해야 할지(instruction)와 연산을 할 것(data)들을 모두 memory에서 가지고 와. 하지만 이 둘을 가리키고 있는 주소가 각각 다르기 때문에 이 둘이 꼬일 일은 없어 ㅎㅎ

7.gif

 이 사진을 예로 들어볼게, ALU는 꼬마의 머리가 되고, 레지스터는 앞에 잇는 책상, 메모리는 뒤에 있는 책장, 데이터들은 책들이 되는 거야. 책들은 어떤 정보가 적혀있거나(data), 또는 행동 명령(instruction)이 들어 있다고 볼 수 있지.

행동 명령이 적혀 있는 책에는

1) 책상에 있는 책들을 가지고 (머리로) 계산을 해서 결과를 책상 위에 둬라
2) 책장의 xx번 주소에서 책을 가지고 와서 책상 위에 놔라, 또는 책상의 책을 다시 xx번 책장에 넣어라
3) 다른 행동 명령이 적혀 있는 책을 가지고 온 뒤 읽어라

이 세가지가 적혀 있는 거지. 1.명령어 챕터의 명령어의 세가지 종류를 다시 설명한 거니 이해하는데 도움되었기를 바라 ㅠ. 어쨋든 이렇게 되면 이 꼬마는 도서관 안의 모든 책들을 가지고 놀 수 있는 거지.

 

4. 연산방식

3.gif

<프로세서 동작 구조>

 위에서 프로세서는 5개의 stage를 통해서 연산한다고 했지? 그럼 이번 챕터에서는 이 스테이지들이 어떻게 동작해서 3가지 명령어들을 수행하는지 간단히 설명할까 하는데 먼저 예를 하나 들어서 보여줄게.

<데이터를 메모리에 저장하는 연산(꼬마가 책상의 책을 책장에 넣는 동작)>

1 stage: 메모리에서 명령어를 불러와, 명령어에는 ‘메모리 저장’이라는 명령 종류랑 저장할 데이터가 담긴 레지스터 번호, 데이터를 저장할 메모리 주소가 담긴 레지스터 번호, 세부 주소가 담겨 있음

2 stage: 레지스터에 접근해서 저장할 데이터와 메모리 주소(주소도 하나의 데이터임)를 불러와

3 stage: ALU에서 2stage에서 가져온 주소와 명령어에 담겨있던 세부 주소를 더함.

4 stage: 메모리에 데이터를 저장(동작 끝)

5 stage: 레지스터에 뭐 저장할 꺼 없으니 아무 것도 안함

이렇게 동작해. 대충 감이 오나….? 이 내용은 대학교 컴퓨터 구조 수업해서도 거의 1~2주에 걸쳐서 수업하는 내용이니만큼 조금 복잡할 수 있어.

밑에 표에 3가지 명령어 종류에서 각 stage에서 어떻게 동작하는지 적어놨어, 이걸 다 이해했다? 그럼 뭐 프로세서 동작원리는 다 알고 있다고 봐도 돼!

5.gif

<명령어 종류별 stage 동작>

 물론 현대 프로세서에는 위 그림보다 훨씬 복잡하게 생겼어. 몇 가지 모듈이 더 들어있거나, ALU 연산기가 훨씬 많이 들어가 있거나 하지, 그리고 stage수도 훨씬 많아. 하지만 위 표의 5개의 stage가 프로세서 동작의 뼈대이니만큼 저 stage만큼은 꼭 들어가. 단지 성능을 높이기 위해 추가 동작을 하거나, 기존 stage를 몇 단계로 나누는 정도이지.

 

6.gif

<Intel skylake architecture>

 

 이거는 실체 intel skylake 세대의 내부 프로세서 구조인데, 우리가 다루었던 기본 구조들이 모두 들어 있는 것을 확인할 수 있지? 다른 블록들은 성능을 높이기 위한 기술들을 위한 블록들이고 기본동작은 모두 더 4개의 블록을 통해서 수행돼.

 

 자 이렇게 CPU의 core, 마이크로프로세서라는 존재를 살펴봤어. 사실 CPU뿐만 아니라 GPU, 휴대폰의 AP 등 우리가 알고 있는 스마트 전자 기기들의 중심칩의 코어는 전부! 저 구조가 적용돼 있다고 봐도 무방해.

 이번 챕터는 솔직히 난이도가 좀 있는 편이야. 실제로 컴퓨터 공학과나 전기전자 공학과들이 2~3년에 배우게 되는 컴퓨터구조라는 수업 분량의 절반 정도에 해당해. 물론 훨씬 디테일하고 추가적인 내용도 많지. 난 진자 핵심만 보여주려고 했는데 쓰고보니 내용이 좀 어렵네 ㅠ

봐도봐도 모르겠는 부분들 댓글 달아주면 답변해주거나, 내용 수정해서 반영할게!

 

다음 시간에는 프로세서만큼 중요한! 메모리 시스템에 대해서 알아볼게 ㅎㅎ 바이바이~

26개의 댓글

2018.09.09

뭔 소린지 어렵지만ㅊㅊ

0
2018.09.10

ㅗㅜㅑ 오버플로우하게 만드네

0
2018.09.10
@이림

승희하게 만든다고?

0
2018.09.10
@Art3mis

아아....이건 컴퓨터 용어로 「쌋다」라고 한다.

0

와 진짜 이런거 개발하는인간들은 탈인간급이라고 보면되냐? 보기만해도 어려운데 직접 만들다니 ㅗㅜㅑ..

0
@쓸데없이시비검

그리고 궁금해왔던게 있는데

 

지금의 지식수준만 가지고서 문명을 석기시대급으로 보내버리면

 

지금처럼 복구하는데 얼마나 걸릴지 생각해본적있음?

 

애초에 지구상에 컴퓨터가 없는상태에서 만드는 과정으로는 어떤게있을지 궁금 ㅋㅋ 모래로 진공관만들고 그걸로 컴퓨터만들고 점점 발전하는단계같은걸 설명해줬으면 좋겠음

 

또 인류가 그동안 개발해왔던걸 이용해서 발전하는 속도랑

 

아무것도 없는상태에서 지식만가지고서 발전하는속도가 얼마나 차이날지 궁금함

0
2018.09.10
@쓸데없이시비검

과학지식이 융합되야 기술이 발전되지

바퀴도 못만드는시대가서 암만 떠들어봐야 기계공학이 되야 장비가생기고 뭐가되야 전기가 만들어지고

뭐 어떤지식을 말하는건지 모르겠엠

0
@무조건가능맨

예를들어서 지금 문명상태로 지구랑 똑같은곳을 발견했을 때 거기서 가장 빠른속도로 문명을 발전시키는데 걸리는 시간은 얼마나 걸릴까 정도?

0
2018.09.10
@쓸데없이시비검

ㅋㅋㅋㅋㅋㅋ 지구 부캐 키우기냐 ㅋㅋㅋㅋ

0
@무조건가능맨

쓸데없이 그런거 궁금해 ㅋㅋㅋ 아무것도없이 모래가지고 지금수준의 컴퓨터를 만들라고하면 만들수있을지도 궁금하고 ㅋㅋ

0
2018.09.10
@쓸데없이시비검

일단 지식이 있다고 해도 뭔가를 만드려면 그걸 가공하기 위한 설비가 있어야겠지.. 문명 게임 해보면 알듯

철을 캐고 제련하고 그걸로 기구 만들어서 또 다른 광물 캐고 제련하고 조합하고.. 동력이 필요하니 전기를 발생시키고.. 뭐 그런거

0
2018.09.11
@쓸데없이시비검

자료와 인력이 충분하다면, 최초 테크트리는 대장간 뚫고 대장간-원시 제철소-발전기-기계로 기계만드는거 몇번 해서 정밀도 올린다음에 자동차-마이크로 프로세서까지 발전할듯. 공장짓는게 제일 좆빡센거지 기술이야 자료있으면 테크잘맞추면 순식간에 가겠는데

0
2018.09.11
@쓸데없이시비검

지식수준만 있으면 만드는건 금방이지. 도구부터 처음부터 만들어야 하는데

 

방법을 알면 인력만 있으면 금방임.

 

고대시대에도 불피우고 농사짓고 이런걸 모르니까 도달하는데 오래걸리지

 

알면 바로 하잖아

0
2018.09.10

cpu 설계를 종이에 인쇄한다면 크기가 운동장만하다던데 진짜야?

0
2018.09.10
@4edg587

글쎄 잘 모르겠는데

0
2018.09.16
@4edg587

트랜지스터를 일반 펜 굵기로 그리면 그렇겟지

0

아조씨 그래서 콤피타 만들수 이써요?

0

아조씨 분야 asic이야? FPGA야? 펌웨야?

난 펌웨랑 응용 5년하다가 IP설계로 넘어왔는데 진짜 못해먹겠어...

0
2018.09.10

와우 좋은 내용이네요

이해는 되지 않았습니다

0

steel case + some kind of magic = computer

 

0

프로그래머라서 항상 감사하게 여김. ㅇㅅㅇ

0
2018.09.10

컴공과 학부생임다 컴퓨터공학개론 듣고 이쪽에 흥미가 생겼는데 늘 상세하고 쉬운 설명 감사함다

0
2018.09.11

CPU 연산의 stage가 저렇게 명확하게 구분되면서 pipelining이라는 현대 컴퓨터 아키텍쳐의 중요한 토대가 마련되었지

계속 작성하길 바라며 추천박는다

0
2018.09.12

나 대학교 시절에는 8051에 어셈블리로 배웠다

질문받는다

0
2018.09.12

컴퓨터 구조 ㅇㄷ

0
2018.09.12

컴궁ㄷ

0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜
12413 [호러 괴담] [살인자 이야기] 그녀는 왜 일본 최고령 여성 사형수가 되었나 1 그그그그 1 10 시간 전
12412 [기타 지식] 최근 지각변동이 일어나는 국내 항공업계 (수정판) 11 K1A1 15 1 일 전
12411 [역사] 인류의 기원 (3) 식별불해 3 1 일 전
12410 [호러 괴담] [살인자 이야기] 재벌 3세의 아내가 사라졌다? 그리고 밝혀지... 그그그그 4 3 일 전
12409 [호러 괴담] [살인자 이야기] 의붓아버지의 컴퓨터에서 발견한 사진 3 그그그그 7 5 일 전
12408 [기타 지식] 도카이촌 방사능 누출사고 실제 영상 21 ASI 2 5 일 전
12407 [역사] 지도로 보는 정사 삼국지 ver2 19 FishAndMaps 14 7 일 전
12406 [기타 지식] 웹툰 나이트런의 세계관 및 설정 - 지구 2부 21 Mtrap 7 5 일 전
12405 [기타 지식] 100년을 시간을 넘어서 유행한 칵테일, 사제락편 - 바텐더 개... 5 지나가는김개붕 1 7 일 전
12404 [기타 지식] 오이...좋아하세요? 오이 칵테일 아이리쉬 메이드편 - 바텐더... 3 지나가는김개붕 2 9 일 전
12403 [기타 지식] 웹툰 나이트런의 세계관 및 설정 - 지구 1부 30 Mtrap 13 9 일 전
12402 [기타 지식] 칵테일의 근본, 올드 패션드편 - 바텐더 개붕이의 술 이야기 15 지나가는김개붕 14 10 일 전
12401 [기타 지식] 웹툰 나이트런의 세계관 및 설정 - 인류 2부 22 Mtrap 14 9 일 전
12400 [기타 지식] 웹툰 나이트런의 세계관 및 설정 - 인류 1부 13 Mtrap 20 10 일 전
12399 [역사] 군사첩보 실패의 교과서-욤 키푸르(完) 1 綠象 1 8 일 전
12398 [호러 괴담] [살인자 이야기] 미치도록 잡고 싶었다. 체포되기까지 28년이... 1 그그그그 6 10 일 전
12397 [역사] 아편 전쟁 실제 후기의 후기 3 carrera 13 11 일 전
12396 [과학] 경계선 지능이 700만 있다는 기사들에 대해 34 LinkedList 10 11 일 전
12395 [호러 괴담] [살인자 이야기] 두 아내 모두 욕조에서 술을 마시고 익사했... 그그그그 2 14 일 전
12394 [기타 지식] 서부 개척시대에 만들어진 칵테일, 카우보이 그리고 프레리 ... 3 지나가는김개붕 5 14 일 전