[아키텍처] 컴퓨터의 역사 및 구성요소
이 포스트는 이태일님의 강의를 정리한 내용입니다.
컴퓨터의 정의
- 전자 회로를 이용하여 데이터를 처리하는 장치
- 방대한 데이터를 저장하고, 자동적으로 계산
- 입력, 제어, 기억, 연산, 출력 기능 등을 갖추고 있음
- 인류역사에 유례가 없는 발명품
컴퓨터의 역사
고대
- 가장 오래된 계산기는 주판입니다.
- 기원전 약 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)
고대
- 가장 오래된 계산기는 주판입니다.
- 기원전 약 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가지 아이디어
- 무어(Moore)의 법칙을 고려한 설계
- 설계를 단순화 하는 추상화
- Common case fast
- 병렬성을 통한 성능개선
- 파이프라이닝을 통한 성능개선
- 예측을 통한 성능 개선
- 메모리 계층구조
- 여유분을 이용한 신용도 개선
1. 무어의 법칙을 고려한 설계
- 인텔의 창립자 중 한명인 고든 무어의 예측에서 유래
18~24개월 마다 칩에 집적되는 소자의 수가 2배가 된다는 법칙
- 컴퓨터를 설계하는 데에는 수년이 걸리기 때문에 집적되는 소자의 수가 2배~4배가 증가함
2. 설계를 단순화하는 추상화
- 무어의 법칙에 따라 자원의 수가 급격하게 증가함
- 설계시간이 길어 짐으로써 생산성이 낮아짐
- 생산성을 높이기 위하여 추상화 개념(기계어->고급언어)을 사용
- 하위 수준의 상세한 사항을 안보이게 함으로써 상위 수준 모델을 단순화
3.Common case Fast
- 자주 발생하는 일을 빠르게 처리하여 성능 향상도모
- common case에 대한 최적화 및 단순화
- common case가 무엇인지 알고 있다는 가정
- common case에 대한 세심한 실험과 측정 필요
4. 병렬성을 통한 성능 개선
- 컴퓨터 역사 초기부터 설계자들은 병렬성을 높여 성능을 끌엉 올렸습니다.
- 병렬성이란 큰 문제를 여러 개의 작은 문제로 나누어서 해결하는 방법입니다.
- 병렬 처리의 예: 쓰레드
5. 파이프라이닝을 통한 성능 개선
- 파이프라이닝은 병렬성의 특별한 형태
- 처음단계 출력이 다음단계 입력으로 이어지는 구조
- 화재를 진압하기 위해서 많은 사람들이 일렬로 늘어서 양동이를 나르는 것을 상상하면 된다.
6. 예측을 통한 성능 개선
- 수요가 예상되는 부분을 예측
- 복구비용↓, 성공확률↑일 경우 효과적
- 정확한 예측을 위한 지표가 필요함
7. 메모리 계층 구조
- 메모리 계층구조를 통한 문제 해결
- 최상위 - 비싸고 제일 빠른 메모리(공간적 지역성)
- 최하위 - 느리고 값이 싼 메모리
8. 여유분을 이용한 신용도 개선
- 컴퓨터는 신뢰할 수 있어야함
- 장애대처를 위한 여유분 준비
- 데이터 손실 예방을 위한 백업과 같은 이치
컴퓨터의 구성요소
- Input, 입력
- Output, 출력
- Memory, 메모리
- Data Path, 데이터 패스
- Control, 제어유닛
Processor=CPU=Data Path + Control Unit
1. 프로세서
CPU
- 메모리로부터 명령과 데이터를 얻음
- 제어유닛은 프로그램 명령에 따라서 데이터패스(산술연산), 메모리, 입출력의 동작을 결정함
- 메모리로부터 명령어를 받아와 제어신호를 생성
- 컴퓨터 명령어(기계어)를 해석하고 연산함
- 컴퓨터 기술을 이끄는 원동력
- 인간의 두뇌와 같은 역할
- 무어(Moore)의 법칙을 고려한 설계
- 설계를 단순화 하는 추상화
- Common case fast
- 병렬성을 통한 성능개선
- 파이프라이닝을 통한 성능개선
- 예측을 통한 성능 개선
- 메모리 계층구조
- 여유분을 이용한 신용도 개선
1. 무어의 법칙을 고려한 설계
- 인텔의 창립자 중 한명인 고든 무어의 예측에서 유래
18~24개월 마다 칩에 집적되는 소자의 수가 2배가 된다는 법칙 - 컴퓨터를 설계하는 데에는 수년이 걸리기 때문에 집적되는 소자의 수가 2배~4배가 증가함
2. 설계를 단순화하는 추상화
- 무어의 법칙에 따라 자원의 수가 급격하게 증가함
- 설계시간이 길어 짐으로써 생산성이 낮아짐
- 생산성을 높이기 위하여 추상화 개념(기계어->고급언어)을 사용
- 하위 수준의 상세한 사항을 안보이게 함으로써 상위 수준 모델을 단순화
3.Common case Fast
- 자주 발생하는 일을 빠르게 처리하여 성능 향상도모
- common case에 대한 최적화 및 단순화
- common case가 무엇인지 알고 있다는 가정
- common case에 대한 세심한 실험과 측정 필요
4. 병렬성을 통한 성능 개선
- 컴퓨터 역사 초기부터 설계자들은 병렬성을 높여 성능을 끌엉 올렸습니다.
- 병렬성이란 큰 문제를 여러 개의 작은 문제로 나누어서 해결하는 방법입니다.
- 병렬 처리의 예: 쓰레드
5. 파이프라이닝을 통한 성능 개선
- 파이프라이닝은 병렬성의 특별한 형태
- 처음단계 출력이 다음단계 입력으로 이어지는 구조
- 화재를 진압하기 위해서 많은 사람들이 일렬로 늘어서 양동이를 나르는 것을 상상하면 된다.
6. 예측을 통한 성능 개선
- 수요가 예상되는 부분을 예측
- 복구비용↓, 성공확률↑일 경우 효과적
- 정확한 예측을 위한 지표가 필요함
7. 메모리 계층 구조
- 메모리 계층구조를 통한 문제 해결
- 최상위 - 비싸고 제일 빠른 메모리(공간적 지역성)
- 최하위 - 느리고 값이 싼 메모리
8. 여유분을 이용한 신용도 개선
- 컴퓨터는 신뢰할 수 있어야함
- 장애대처를 위한 여유분 준비
- 데이터 손실 예방을 위한 백업과 같은 이치
컴퓨터의 구성요소
- Input, 입력
- Output, 출력
- Memory, 메모리
- Data Path, 데이터 패스
- Control, 제어유닛
Processor=CPU=Data Path + Control Unit
1. 프로세서
CPU
- 메모리로부터 명령과 데이터를 얻음
- 제어유닛은 프로그램 명령에 따라서 데이터패스(산술연산), 메모리, 입출력의 동작을 결정함
- 메모리로부터 명령어를 받아와 제어신호를 생성
- 컴퓨터 명령어(기계어)를 해석하고 연산함
- 컴퓨터 기술을 이끄는 원동력
- 인간의 두뇌와 같은 역할
Processor=CPU=Data Path + Control Unit
1. CPU는 저장장치에서 명령을 읽어와서 제어 신호를 만듭니다.
2. ALU는 명령에 따라서 register에서 데이터를 읽어와서 연산을 하고 다시 register에 저장합니다.
ALU(Arithmetic/Logic Unit): 산술/논리 연산장치
GPU
- 픽셀로 이루어진 영상을 처리하는 용도로 탄생
- 싱글코어는 CPU보다 저성능이지만 병렬적인 수천개의 코어가 연결되어 있다.
- 인공지능 기술발전의 선도주자
2. 메모리
- 명령어(프로세스) 및 데이터 적재
- 정보를 저장해 두었다가 필요할 때 읽어들이는 저장소
- 레지스터의 용량이 너무 작아서 출시됨
- RAM, ROM, Cache 등
3. 입력장치
데이터를 입력하기 위한 컴퓨터의 외부 장치
4. 출력장치
컴퓨터에서 처리된 결과를 출력해주는 장치
Author And Source
이 문제에 관하여([아키텍처] 컴퓨터의 역사 및 구성요소), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@d2h10s/아키텍처-컴퓨터의-역사저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)