아이효 1. 발표준비

곽정은·2021년 3월 3일
2

스터디

목록 보기
7/19

컴퓨터의 역사와 구조

1. 컴퓨터의 역사

초기 계산 장치

주판

  • 기원전 2000년 정도에 서남아시아 지역에서 사용되었으며, 그리스와 로마를 경유하여 명나라 이후에 중국으로 전래되어 개량되었음.

파스칼의 계산기

  • Pascaline, 1642년 톱니바퀴를 이용해 덧셈, 뺄셈이 가능한 최초의 기계식 계산기.

라이프니츠의 계산기

  • 1671년 파스칼의 계산기를 계량해 곱셈, 나눗셈도 가능하게 만든 계산기.

배비지의 차분기관, 해석기관(천공카드 계산 장치)

  • J.H.뮐러가 1786년 최초의 차분 기관을 제안했으나 잊혀짐.
  • 1822년 찰스 배비지가 차분기관을 다시 발명.
  • 10진법 사용, 핸들을 돌려 동력을 얻음.
  • 천공카드(일정한 패턴의 구멍을 뚫어 데이터를 기록하는 종이 카드)를 이용해 데이터를 기록할 수 있었음.
  • 기존 기계식 계산기와는 달리 로그함수, 삼각함수 계산이 가능.
  • 1837년 찰스 배비지가 해석기관을 처음으로 발표.
  • 설계는 그가 죽은 해인 1871년까지 계속되지만 실제로 만들어지진 않음.

현대적인 의미의 컴퓨터

  • 컴퓨터는 제2차 세계대전 직전과 대전 기간 중에 급격히 발전함.
  • 전자회로가 기계식 연산 장치를 대신하고, 디지털 회로가 아날로그 회로를 대체하는 변화가 있었음.

(하도 급격한 발전이 있어서 문헌마다 자기 것이 최초라는데, 이 말이 사실인지 분간하기 어려운 것들도 있으므로 '이 시대에 이런 게 만들어졌구나~'하고 넘어가길 바람.)

Z 시리즈

  • 콘라트 추제(Konrad Zuse)라는 공학자가 독일에서 독립적으로 진행한 연구의 결과물.
  • Z 시리즈는 전쟁 중 공습들로 많이 파괴됨.
  • 1936년부터 1938년까지 제작된 Z1은 22bit 부동소수점 연산을 수행할 수 있는 기계식 계산기으로, 천공카드를 이용한 프로그래밍을 제한적으로 지원함.
  • 1939년 개발된 Z2는 기계식 릴레이(계전기) 컴퓨터로, 16bit 고정소수점 체계를 활용함.
  • 릴레이(계전기): 전류가 흐르면 전기의 자기 작용의 의해 계전기에 있는 코일이 여자(자기화)되어 접점을 이동하는 장치
  • 1941년 완성된 Z3는 전기 기계식 컴퓨터.
  • 작동가능하며, 프로그래밍 가능한 세계최초의 완전 자동 디지털 컴퓨터.
  • Z3는 추제가 죽고 1998년 완전 튜링 머신이었다는 것이 증명됨.
  • Z4에 대한 연구는 독일의 경제 사정으로 인해 1949년까지 중단.
  • 같은 해인 1949년 ETH 취리히에 Z4 1대를 판매하면서 세계 최초의 상업용 컴퓨터가 됨.

콜로서스

(사진은 콜로서스 마크 2)

  • 1943년부터 1944년 사이에 영국의 암호 해독가들이 로렌츠 암호 해독을 위해 개발한 컴퓨터.
  • 진공관을 사용해 계산을 수행.
  • 세계 최초의 프로그래밍 가능한 전자 디지털 컴퓨터로 간주되나, 저장된 프로그램이 아닌 스위치와 플러그에 의해 프로그램이 작동됨.
  • 콜로서스의 존재는 군사 기밀로 여겨져 1970년대 중반까지 비밀에 부쳐짐.
  • 영화 '이미테이션 게임'에 나온 에니그마를 깨기 위한 장치는 콜로서스가 아닌 '봄브, The Bombe'.

Harvard MARK-I(하버드 마크원, 마크-원)

  • 1944년 미국 수학자 에이컨과 IBM사에 의하여 완성된 세계최초의 전기 자동 계산기.
  • 길이 15.3m/ 높이 2.4m/ 무게 31,500㎏이며, 약 80㎞의 전선과 300만 개 이상의 접속단자를 포함함.
  • 릴레이 3,000개 및 4마력의 전동기가 사용되었으며, 천공카드로 제어되는 자동 순차적 제어방식(ASCC, Automatic Sequence Controlled Calculator)이 특징.
  • 1초에 덧셈을 3번, 승산은 3초에 계산할 수 있었음.
  • 하지만 기계적 제약때문에 연산처리 속도는 늦었음.

ENIAC(에니악, Electronic Numerical Integrator And Computer)

  • 1946년 미국 펜실베이니아대학 존 에커트와 존 모클리가 개발한 다용도 디지털 컴퓨터.
    (미국 육군의 탄도 궤도의 수학적 도표를 계산하기 위해 만들어짐.)
  • 18,000여 개의 진공관, 1,500개의 계전기를 사용한 무게가 30t이나 되는 거대한 기계였음.
  • 150kw의 전력을 소비.
  • 프로그램을 배선판에 일일이 배선하는 외부 프로그램 방식으로, 작업에 따라 배선판을 교체해야만 했음.
  • 10진수 사용.

EDVAC(에드박, Electronic Discrete Variable Automatic Computer)

  • 1946년(컴퓨터 설계 계약일 기준) 에니악을 만든 모클리와 에커트가 존 폰 노이만의 프로그램 내장방식을 적용해 만든 전자식 컴퓨터.

  • 1945년 존 폰 노이만은 에드박 설계에 자문으로 참가하여, <First Draft of a Report on the EDVAC>을 요약/논의함.

  • 1946년 6월 노이만은 에드박 계획을 종합해 <Preliminary Discussion
    of the Logical Design of an Electronic Computing Instrument; 전자계산기의 이론 설계 서론
    >을 발표함. 여기에는 에니악의 단점을 보완하기 위해 기억장치에 컴퓨터의 명령이나 데이터를 모두 기억시키는 프로그램 내장방식(stored programming)을 제안.

  • 에니악과 다르게 최초로 2진수를 사용하여 연산 속도를 비약적으로 향상시킴.

  • 오늘날의 '소프트웨어'라는 개념을 탄생시킴.

EDSAC(에드삭, Electronic Delay Storage Automatic Calculator)

  • 1949년(첫 프로그램 동작 기준) 영국 케임브리지대학의 모리스 윌크스가 개발한 실용적 프로그램 내장 전자식 컴퓨터.
  • 존 폰 노이만의 '전자계산기의 이론 설계 서론'에 서술된 프로그램 내장방식에서 영감을 받아 제작됨.
  • 2진수 사용.

UNIVAC-I(유니박-I)

  • 1951년 에니악을 만든 모클리와 에커트에 의해 미국에서 처음으로 만들어진 최초의 상업용 컴퓨터.
  • 1951년 3월 31일에 최초로 미국의 조사 통계국에 설치됨.

2. 세상에 다시 없을 천재: 존 폰 노이만

  • John von Neumann, 헝가리 출신 미국 수학자.
  • 양자 역학, 함수 해석학, 집합론, 위상수학, 컴퓨터 과학, 수치해석, 경제학, 통계학 등 여러 분야에 걸쳐 다양한 업적을 남김.
  • 1930년대에 미국으로 건너가 죽을 때까지 프린스턴 고등연구소 교수로 활동.
  • 오스카 모르겐슈테른과 함께 <Theory of Games and Economic Behavior, 게임과 경제행동 이론>을 저술함.
  • 제2차 세계대전 동안엔 오펜하이머, 에드워드 텔러 등과 함께 맨해튼 프로젝트에서 일함.
  • 엄청난 천재였음.

3. 내장 프로그램 혁명: 폰 노이만 구조(Von Neumann Architecture)

  • 1946년에 발표한 <Preliminary Discussion of the Logical Design of an Electronic Computing Instrument; 전자계산기의 이론 설계 서론>에서 제안한 프로그램 내장장식 컴퓨터 구조.

  • 인간의 사고과정을 참고해서 구조를 설계함.

  • 내장 메모리 순차처리 방식으로, 데이터 메모리와 프로그램 메모리가 구분되어 있지 않고 하나의 버스를 가지고 있는 구조.

  • 폰 노이만 구조 내부
  1. 주기억 장치 = 단일 메모리(데이터, 명령어)
  2. 중앙 처리 장치 = CPU(명령어 레지스터, 클록, 계수기, 산술 연산기)
  3. 입출력 장치
  • 전자식 시스템에서는 처리 속도가 빠른데 반해 메모리에서 데이터를 읽는 일 등을 할 때는 기다려야 하므로 일의 처리 순서가 잘못될 수 있음. 그래서 컴퓨터 내부에 일정한 주기로 신호를 생성하는 클록을 넣고, 모든 일들이 클록 신호에 맞추어 동작하도록 했음.

  • 또한 데이터 흐름 규칙을 정의해 메모리에서 읽은 명령어가 처리 중인 데이터와 섞이지 않도록 함.

장점: 소프트웨어의 시작

  • 프로그램 내장식이기 때문에 이전처럼 전선을 뺐다가 꽂을 필요가 없으며 프로그램(소프트웨어)만 교체하면 되기 때문에 범용성이 크게 향상됨.

  • 폰 노이만의 아이디어는 CPU, 메모리, 프로그램 구조를 갖는 범용 컴퓨터 구조를 확립시킴.
    --> 에드삭 이후의 컴퓨터는 대부분 폰 노이만 구조를 기본 구조로 하고 있음.

단점: 폰 노이만 병목 현상(Von-Neumann Bottleneck)

  • 자료경로의 병목 현상, 기억장소의 지연 현상.
  • 원인: 데이터 메모리와 프로그램 메모리가 구분되어 있지 않고 하나의 버스를 가지고 있기 때문에 CPU가 명령어와 데이터에 동시에 접근할 수 없음.

CPU가 읽고 처리한 데이터는 다시 메모리에 저장을 해야 함.
--> CPU가 아무리 빨리 데이터를 처리하더라도 메모리의 속도가 느리거나
데이터 이동 속도가 느리면 전체 시스템의 성능 저하가 불가피.
==> 즉, 계산속도가 기억장치 속도에 영향을 받기 때문에 데이터 이동에 따라 필연적으로 병목현상이 발생하는 것!

  • 순차적으로 한 번에 하나의 명령어만을 처리하기 때문에 CPU를 효율적으로 사용하지 못함.

4. 버스를 늘려라: 하버드 구조(Harvard Architecture)

  • 메모리가 작아서 명령과 데이터를 따로 처리한 Harvard Mark I이라는 릴레이 컴퓨터로부터 나온 구조.
    (+ 버그 용어의 기원에 대한 재밌는 이야기(실화이긴 하나 최초는 아닐 수 있음 주의.))

  • 하버드 구조는 명령용 버스와 데이터용 버스가 물리적으로 분리되어 있기 때문에, 명령을 메모리로부터 읽는 것과 데이터를 메모리로부터 읽는 것을 동시에 할 수 있음.

장점: 병목현상 완화 가능

  • 명령의 처리를 끝내자마자 다음의 명령을 읽어들일 수 있기 때문에 보다 더 빠른 속도를 낼 수 있다는 것.

단점: 많은 전기회로 요구와 근본적인 원인 해결 X

  • 하지만 이러한 처리 속도를 높이려면 보다 많은 전기 회로를 필요로 함.
  • 병목현상을 완화시킬 수는 있지만 하버드 구조 또한 폰 노이만 구조를 기반으로 만들어진 것이기 때문에 근본적인 원인 해결은 되지 않음.

5. 수정된 하버드 구조(Modified Harvard Architecture)

  • 하버드 구조와 폰 노이만 구조를 모두 도입한 구조.
    --> 하버드 구조를 캐시 메모리 장치에 적용하였고, 폰 노이만 구조를 CPU 외부 주 메모리에 적용.

  • 하버드 구조에서 사용했던 통합 캐시 메모리 장치를 보통 명령용과 데이터용으로 분리.

  • 하버드 구조는 캐시에 오류가 일어나면 주 메모리로부터 데이터를 가져오고, 명령 캐시나 데이터 캐시에 저장함.

  • 요즘 성능 좋은 CPU 설계는 이 수정된 하버드 구조를 도입하고 있음.


6. 출처

profile
인공지능 냉각시스템 개발기업 전략기획

7개의 댓글

comment-user-thumbnail
2021년 3월 6일

<아이효 1 2021.03.06 오후 1시>
주제: 인공지능

  • 인간의 지능을 인공적으로 구현한 것.
    --> 지능이란? 생각하는 힘, 지식, 경험, 지적능력, 판단능력, 세상에 적응하는 능력 등등)
  • 세상과 사람은 상호작용. (입력은 오감정보, 출력은 행동으로 세상에 영향을 주는 것(건축, 환경오염).) (웅제님의 통계관련)
  • 정보를 받아들일 때 인지하고 이해해야 함.
  • 보통 지능은 뇌에서 나옴.
  • 인공지능: 지능을 구현한 모든 기술.
  • 머신러닝: 스스로 학습하여 지능을 구현한 기술. 적응하는 능력.
  • 딥 러닝: 인간의 뇌를 모방하여 지능을 구현한 모든 기술.
  • 지능을 구현할 때 컴퓨터를 주로 사용.
1개의 답글
comment-user-thumbnail
2021년 3월 6일

컴퓨터란? (정은의 역사와 구조)

  • computer = 계산기

  • 데이터와 연산을 반드시 필요.

  • 운영체제: 컴퓨터의 운영을 맞아주는 관리자.
    --> 파일 시스템 관리, 프로세스 관리(채은님의 조사), 리소스 관리, 터미널

  • 사용자와 컴퓨터를 연결하는 터미널.

  • 데이터는 가장 소중한 존재.

  • 컴퓨터는 모든 정보를 bit, 0과1. --> 이진법.
    (만약 삼진법을 사용하면 메모리 효율성을 높일 수 있음.)

  • 사람이 느끼는 데이터와 컴퓨터가 느끼는 데이터는 다르기에 변환이 필요.
    --> 데이터 표현 방식이 다름.

  • 문자열이 있나 없나 찾는 것이 정규표 현식(은지님 조사)

  • 효율적인 연산을 위해 자료구조, 알고리즘이 필요.

  • 데이터베이스가 나온 이유도 질의를 던지고 답변을 효율적으로 받기 위함.

답글 달기
comment-user-thumbnail
2021년 3월 6일
  • 컴퓨터는 계산기니까 CPU에서 기본적으로 덧셈, 비트연산, 논리연산, 메모리 저장하고 옮겨주는 move를 함.
  • 이 기본 기능을 가지고 AI를 구현하기 어렵기 때문에 프로그래밍 언어를 사용.
  • 초기 프로그래밍 언어에도 단계가 있음.(저수준 -> 고수준, '얼마나 기계에 가까우나 사람에 가까우냐'를 기준)
  • 프로그래밍 언어는 기본 연산들을 복합적으로 섞어둬서 인간이 사용하면 기계어랑 같은 효과를 냄.
    (파이썬에 대한 조사는 이삭님과, 재윤님)
  • 개발을 도와주는 툴, IDE(선옥님 조사)
답글 달기
comment-user-thumbnail
2021년 3월 6일
  • 컴퓨터와 컴퓨터의 연결 = 네트워크.
  • 컴퓨터를 모두 연결하려는 방안은 인터넷. (종훈님의 조사)
    --> 연결된 모든 것에 접속 가능.
  • 현명하게 정보를 얻는 방법. = 어느정도 기준을 가지고 취사 선택이 필요. --> 추천시스템 등등.
  • 인공지능의 발전은 인터넷의 발전에 의한 데이터의 증가로 발생. --> 학습환경 조성됨.
    (알고리즘 관련 배치 정규화에 대한 내용은 용복님, 1x1 conv는 동형님)
  • 빅데이터는 컴퓨터 한 대로 안되니까 여러 대 컴퓨터를 사용하는 분산 컴퓨팅이 탄생.
    --> split, apply, combine
  • 연결로 인한 문제 발생: 보안 등등. (세현님의 조사)
답글 달기
comment-user-thumbnail
2021년 3월 6일

지효님의 알고리즘 강의 1

  • 자료구조란? -> 문제 해결 절차.
  • 정의: 컴퓨터에서 처리하는 자료(Data)를 효율적(Operation)으로 관리하고, 구조화(Structure)시키는 것에 대한 학문. --> 저 세 가지는 자료구조의 중요 구성요소.

어떻게 자료구조 구성요소를 살펴볼 것인가?

  • data: '기본단위'(한 개)와 '복합적으로 묶인 데이터'(해시 등등).
  • operation: 자료구조는 저장만 하지 않고 검색, 삭제, 입력 등의 연산이 있음. 그럴 때 고려해야 할 것은 '필요한 연산이 무엇인지', '필요한 연산이 얼마나 사용될 지(빈도)'.('통계자료는 삭제를 거의 하지 않고 입력, 찾기가 많음. --> 삭제 연산은 비효율적으로 짜더라도 입력, 찾기 연산을 효율적으로 하면 됨.' 등등)
  • structure: 구조에 따라 연산의 모양이 달라지고 설계가 달라질 수 있음. '모양'이 중요.(선형, 비선형 등등)

지효님이 정의한 기본연산 --> 모든 연산을 만들 수 있음.
1. 입력 insert 2. 삭제delete 3. 찾기find

  • 예: '버블정렬'은 찾기 연산으로 가능. '스왑'은 찾기 후 두 개 다 삭제 후 다시 넣어주기.

자료 구조의 종류(모양이 기준)

  • 선형: 일자로 이어진 구조. --> 배열과 리스트(자료구조의 기본), 스택, 큐, 덱, 해시테이블
  • 비선형: 일자가 아닌 구조. --> 그래프를 알면 다 아는 것. 그래프는 일반적 그래프가 아닌 수학적 구조(오차역전법의 계산 그래프의 그 그래프!). 그래프 하위에 트리가 존재.

배열과 연결 리스트는 왜 기본인가?

  • 모든 자료구조에 사용되기 때문에, 이 두가지로 모든 자료구조를 구현 가능.

what is 배열?

  • 물리적인 (선형)데이터 저장방식.
  • 컴퓨터 메모리가 네모나게 생겼다고 했을 때, 연속적인 메모리의 모양을 나타낸 것이 배열.
  • 인덱스: 0부터 시작 --> 왜? 시작 주소인 0부터 얼만큼 떨어져 있는지 나타내는 것이 인덱스이기 때문. 앞의 주소만 알면 거리를 알 수 있기 때문에 바로 찾아갈 수 있음.

배열에서의 data, operation, structure

  • Data: 동일한 형식이 들어가면 됨.
  • Operation: 기준 위치에 대한 연산. 일반화 가능.
  • Structure: 선형.

배열의 operation

  • insert(k,a): k에 있는 원소를 k+1로 옮기고 a를 입력. O(n)
  • delete(k,a): k에 있는 원소를 삭제하고 뒤 원소들을 땡김. O(n)
  • find(k): k번째 찾기. 주소 값을 알고 있으니 k번을 더한 곳으로 이동(참조)하면 끝. O(1)

배열의 장단점

  • 장점: 효율적 --> 주소만 알면 접근이 쉽기에 접근시간이 빠름 --> 캐시(cache, 메모리 구조와 같아서 자주 사용하는 것을 캐시에 올려줌. 배열에서 나타나는 캐시 효율은 로컬리티.)효율을 받음, 길이값을 선언하면 배열. ==> 정적
  • 단점: 길이가 제한적임. 처음 픽스가 되면 삭제하고 만들지 않는 이상 바꿀 수 없음. 근데 입력이란 삭제 연산은 비쌈. ==> 동적이지 않아서(정적이라서)

what is 연결리스트?

  • 배열과 반대 개념. 논리적으로 연결된 (선형)구조. = 포인터로 연결된 구조.

연결리스트의 종류('연결'을 기준으로)

  • 단방향: 앞으로만 갈 수 있음. 저장된 것과 포인터
  • 양방향: 뒤로도 갈 수 있음. 포인터가 메모리를 2배 더 많이 먹음.(트레이드 오프 관계)
  • 환형: 앞, 뒤를 연결한 것. --> 양방향 환형도 있음.
    --> 사용자 입장에서는 다 비슷해보이긴 함.

연결리스트에서의 data, operation, structure

  • Data: 포인터.
  • Operation: i, d, f
  • Structure: 선형.

연결리스트의 operation

  • insert(k,a): k를 가리키는 포인터를 a로 바꾸고 a의 포인터를 k에 연결해 줌. iterator(위치를 저장한 값)를 알고 있으면 O(1), iterator가 없으면 처음부터 포인터를 따라 가야함(O(n)).
  • delete(k,a): iterator가 있으면 포인터만 적절하게 바꿔줌. O(1).
  • find(k): iterator가 없다고 가정하면 O(n).

연결리스트의 장단점(배열과 반대) --> 동적이기 때문.

  • 장점: 길이 제한이 없음. --> 메모리 한도 내에서 무한정 추가 가능, 동적연산이 입력, 삭제가 빠름.
  • 단점: 접근시간이 느림, 캐시 효율을 못 받음. --> 멀리 떨어져 있기 때문. 구현 어려움.

(+ 숙제 연결리스트 클래스로 구현하기)

답글 달기