[아키텍처] 컴퓨터의 역사 및 구성요소

이 포스트는 이태일님의 강의를 정리한 내용입니다.


컴퓨터의 정의

  • 전자 회로를 이용하여 데이터를 처리하는 장치
  • 방대한 데이터를 저장하고, 자동적으로 계산
  • 입력, 제어, 기억, 연산, 출력 기능 등을 갖추고 있음
  • 인류역사에 유례가 없는 발명품

컴퓨터의 역사

고대

  • 가장 오래된 계산기는 주판입니다.
  • 기원전 약 3000년 전 고대 메소포타미아에서 사용하였습니다.
  • 약 17세기까지 사용하였습니다.

중세 17세기

  • 1642년 프랑스 수학자 파스칼이 톱니바퀴를 이용한 최초의 기계식 계산기 파스칼린을 발명하였습니다.
  • 기어로 연결된 바퀴판들로 덧셈과 뺄셈 동작이 가능합니다.
  • 1671년 독일의 라이프니츠가 이를 개량해 2진법 기반의 곱셈과 나눗셈도 가능한 계산기를 발명하였습니다.

근현대 19세기

  • 19세기 중반 영국의 찰스 배비지가 차분엔진을 발명하였습니다.
  • 차분엔진은 현대 컴퓨터의 개념을 처음으로 제시하였습니다.
  • 차분기관과 해석기관을 설계하여 제어, 연산, 기억, 입출력이 가능하였습니다.(범용적인 특징)
  • 프로그램과 데이터로 구성된 입력에는 천공 카드를 사용하였습니다.

근현대 1930년대

  • 1930년대에 들어 앨런 튜링, 알론조 처치 등이 계산 가능성 및 불가능성에 대하여 연구하였습니다.
  • 이를 기반으로 튜링머신이 탄생하였습니다.
  • 튜링머신은 긴 테이프에 부호를 기록하여 이를 프로그램처럼 사용하였습니다.

근현대 1940년대

  • 1941년 독일의 콘라드 추제가 완전 자동 디지털 컴퓨터인 Z3(5~10Hz로 작동)를 발명하였습니다.
  • 1945년 폰 노이만이 stored-program architecture를 제안하였습니다.(프로그램의 SW화)
  • 1946년 미국의 ENIAC이 제작되었습니다. 탄도 계산을 목적으로 만들어졌으며 10진법을 사용하였습니다. 상당한 연산량과 동시에 30t정도의 무게과 어마어마한 전력을 소비하였습니다.

현대 20세기

  • 1960년대: 초기의 다목적 컴퓨터 IBM시스템/360개발
  • 1970년대: Thompson과 Ritchie가 Unix OS와 C언어 개발
  • 1970년대: Intel 8008 프로세서 개발
  • 1980년대: Intel프로세서와 MS-DOS를 사용하는 IBM PC등장
  • 1980년대: GUI와 마우스를 사용하는 애플 매킨토시 등장
  • 1990년대: Linus Torvalds가 Linux를 개발
  • 1990년대: Microsoft의 Windows가 등장
  • 1990년대: 인터넷 포털(아휴, 구글) 등의 등장

현대 21세기

  • 컴퓨터를 활용하여 인간 DNA 30억 염기서열을 밝히는 Genom Project를 시작하여 성공적으로 완수
  • 애플의 iPhone을 필두로 스마트폰이 쏟아져 나옴
  • 빅데이터, 인공지능의 시대

정지문제(The Halting Problem)

19세기 수학자 David Hilbert는 다음과 같은 결정 문제를 제안하였습니다.

기계적인 방식으로 모든 수학적인 증명이 가능한가?

튜링은 이 문제를 해결하기 위한 기계적인 방식을 실제로 고안하여 가상의 장치인 튜링 머신을 제안하였습니다. 일종의 Automata입니다.

튜링머신의 제약 조건

  • 테이프에 기록될 수 있는 기호 및 튜링 머신의 상태와 행동표의 개수는 모두 유한해야 하며 서로 구분되어야 한다.
  • 현재 상태가 1인데 기호 'A'를 읽었다면 'C'를 기록하고 정지.
  • 현재 상태가 1인데 기호 'B'를 읽었다면 오른쪽으로 한 칸 이동하고 상태 2로 변경
  • 현재 상태가 2인데 기호 'C'를 읽었다면 왼쪽으로 한 칸 이동

튜링은 다음과 같이 문제를 바꿔 생각해 보았습니다.

튜링머신이 유한한 시간 안에 모든 문제를 푸는 방법이 있는지 없는지 알아낼 수 있는가?

  • 가정 halt(a,b)란 임의의 프로그램 a와 임의의 프로그램 b에 대해, a를 입력으로 프로그램 b를 실행하였을 경우를 계산하여 그 실행이 끝나면 참, 영원히 실행되면 거짓을 반환하는 알고리즘입니다.
function Problem(i):
	if halt(i, i) == false:
    	return true
    else:
    	loop

Problem(Problem)를 실행하였다고 가정해봅니다.

  • 그리고 Problem 함수가 언젠가 끝난다고 가정하여 봅니다.
    • 그럼 halt는 true를 반환하게 될 것입니다.
    • 어? 그런데 halt가 true를 반환하면 Problem 함수는 무한루프에 빠져 영원히 끝나지 않습니다. 모순입니다.
  • 이번엔 Problem 함수가 영원히 끝나지 않는다고 가정하여 봅니다.
    • 그럼 halt는 false를 반환하게 될 것입니다.
    • 어? 그러면 Problem 함수는 종료됩니다.

이처럼 모순이 발생하는 것을 볼 수 있기 때문에 튜링 머신은 이러한 정지 문제는 해결할 수 없다는 결론을 내릴 수 있습니다.


튜링동치와 튜링완전성

  • 튜링동치: 만일 컴퓨터 P와 Q가 있을 때, P가 할 수 있는 일을 Q가 모두 할 수 있고, Q가 할 수 있는 일을 모두 P가 흉내낼 수 있다면 두 컴퓨터는 튜링 동치이다.
  • 튜링완전성: 어떤 컴퓨터 P가 있어서 그 컴퓨터와 튜링 머신이 튜링 동치라면 P는 튜링 완전하다.

현대 컴퓨터와 튜링머신

  • 현대 컴퓨터의 모체는 튜링머신이기 때문에 튜링머신은 현대의 모든 컴퓨터가 할 수 있는 일을 할 수 있다.
  • 현대의 컴퓨터와 튜링머신은 튜링 동치이다.
  • 즉, 정지문제는 현재까지 유효하다.

컴퓨터 구조의 8가지 아이디어

  1. 무어(Moore)의 법칙을 고려한 설계
  2. 설계를 단순화 하는 추상화
  3. Common case fast
  4. 병렬성을 통한 성능개선
  5. 파이프라이닝을 통한 성능개선
  6. 예측을 통한 성능 개선
  7. 메모리 계층구조
  8. 여유분을 이용한 신용도 개선

1. 무어의 법칙을 고려한 설계

  • 인텔의 창립자 중 한명인 고든 무어의 예측에서 유래
    18~24개월 마다 칩에 집적되는 소자의 수가 2배가 된다는 법칙
  • 컴퓨터를 설계하는 데에는 수년이 걸리기 때문에 집적되는 소자의 수가 2배~4배가 증가함

2. 설계를 단순화하는 추상화

  • 무어의 법칙에 따라 자원의 수가 급격하게 증가함
  • 설계시간이 길어 짐으로써 생산성이 낮아짐
  • 생산성을 높이기 위하여 추상화 개념(기계어->고급언어)을 사용
  • 하위 수준의 상세한 사항을 안보이게 함으로써 상위 수준 모델을 단순화

3.Common case Fast

  • 자주 발생하는 일을 빠르게 처리하여 성능 향상도모
  • common case에 대한 최적화 및 단순화
  • common case가 무엇인지 알고 있다는 가정
  • common case에 대한 세심한 실험과 측정 필요

4. 병렬성을 통한 성능 개선

  • 컴퓨터 역사 초기부터 설계자들은 병렬성을 높여 성능을 끌엉 올렸습니다.
  • 병렬성이란 큰 문제를 여러 개의 작은 문제로 나누어서 해결하는 방법입니다.
  • 병렬 처리의 예: 쓰레드

5. 파이프라이닝을 통한 성능 개선

  • 파이프라이닝은 병렬성의 특별한 형태
  • 처음단계 출력이 다음단계 입력으로 이어지는 구조
  • 화재를 진압하기 위해서 많은 사람들이 일렬로 늘어서 양동이를 나르는 것을 상상하면 된다.

6. 예측을 통한 성능 개선

  • 수요가 예상되는 부분을 예측
  • 복구비용↓, 성공확률↑일 경우 효과적
  • 정확한 예측을 위한 지표가 필요함

7. 메모리 계층 구조

  • 메모리 계층구조를 통한 문제 해결
  • 최상위 - 비싸고 제일 빠른 메모리(공간적 지역성)
  • 최하위 - 느리고 값이 싼 메모리

8. 여유분을 이용한 신용도 개선

  • 컴퓨터는 신뢰할 수 있어야함
  • 장애대처를 위한 여유분 준비
  • 데이터 손실 예방을 위한 백업과 같은 이치

컴퓨터의 구성요소

  1. Input, 입력
  2. Output, 출력
  3. Memory, 메모리
  4. Data Path, 데이터 패스
  5. Control, 제어유닛

Processor=CPU=Data Path + Control Unit

1. 프로세서

CPU

  • 메모리로부터 명령과 데이터를 얻음
  • 제어유닛은 프로그램 명령에 따라서 데이터패스(산술연산), 메모리, 입출력의 동작을 결정함
  • 메모리로부터 명령어를 받아와 제어신호를 생성
  • 컴퓨터 명령어(기계어)를 해석하고 연산함
  • 컴퓨터 기술을 이끄는 원동력
  • 인간의 두뇌와 같은 역할


1. CPU는 저장장치에서 명령을 읽어와서 제어 신호를 만듭니다.
2. ALU는 명령에 따라서 register에서 데이터를 읽어와서 연산을 하고 다시 register에 저장합니다.

ALU(Arithmetic/Logic Unit): 산술/논리 연산장치

GPU

  • 픽셀로 이루어진 영상을 처리하는 용도로 탄생
  • 싱글코어는 CPU보다 저성능이지만 병렬적인 수천개의 코어가 연결되어 있다.
  • 인공지능 기술발전의 선도주자

2. 메모리

  • 명령어(프로세스) 및 데이터 적재
  • 정보를 저장해 두었다가 필요할 때 읽어들이는 저장소
  • 레지스터의 용량이 너무 작아서 출시됨
  • RAM, ROM, Cache 등

3. 입력장치

데이터를 입력하기 위한 컴퓨터의 외부 장치

4. 출력장치

컴퓨터에서 처리된 결과를 출력해주는 장치

좋은 웹페이지 즐겨찾기