Chapter 1 Welcome Aboard
교과목 기본 정보
Introduction to the World of Computing There is No Magic to Computing !!! 컴퓨터는 원하는 것을 알아서 해주는 천재 전자장치일까? 천만에! 바보 전자 장치에 불과해! 오직 우리가 지시한 일만 하지. COMPUTER가 복잡한 생명체처럼 보일지 모르지만 사실 아주 간단한 것들을 SYSTEMatic 하게 결합 시킨 대규모 집합체(Huge Collection)일 뿐이야. 이 강좌의 목표? 컴퓨터 시스템에 대한 이해 Python 언어를 이용한 프로그래밍 입문 . 컴퓨터 시스템 이해와 관련한 접근법? 아래 기초 개념부터 하나 하나 쌓아가는 Bottom-Up Bits Gates Processor Instructions Programming
Two Recurring Themes (1) 추상화 (Abstraction) 컴퓨터 과학에서 추상화란? 개념과 그를 실현하는 방법론/실체를 분리하는 것, 구현의 구체적 내용을 숨기는 것 – (Wikipedia : http://en.wikipedia.org/wiki/Abstraction_(computer_science)) 예) 30년 전 VTR 이든, 곰Player든 재생을 하려면 ▶ 버튼을 누름. 생산성 향상에 기여 - 세부 지식 및 이해 없이도 활용 가능 예) 자동차 엔진의 작동 원리를 몰라도 자동차를 운전할 수 있는 것 … 단 뭔가 문제가 생기기 전까지! 예) 엔진오일 확인 막대가 어디 있지? 점화 플러그가 뭐야? 복잡하고 거대한 것을 몇 가지 계층으로 구분하고 추상화를 통해 이해하는 능력은 매우 중요함 이를 통해 특정 계층에 집중할 수 있음. 그러나 추상화가 그 특정 계층을 이해하는 것만으로 충분하다는 것을 의미하지는 않음. 연관된 다른 계층과 요소들을 파악하고 이들과 어떻게 연계하여 동작하는지 파악할 수 있는 역량 역시 필요함.
Two Recurring Themes (2) 하드웨어 vs. 소프트웨어 컴퓨터 시스템은 하드웨어 또는 소프트웨어 둘 중의 하나? 하드웨어와 소프트웨어 둘 다 컴퓨터 시스템의 필수 구성 요소 하드웨어 전문가는 소프트웨어를 몰라도 될까? 그 반대는? 하드웨어와 소프트웨어 두 가지 모두에 대해 그 역량과 한계를 이해할 수 있어야 함.
Two Pillars of Computing Universal Computing Device 충분한 시간과 메모리 공간만 있다면 모든 컴퓨터들은 동일한 컴퓨팅을 해낼 수 있다. 범용 튜링 기계 (Universal Turing Machine) 개념 Problem Transformation 컴퓨팅의 궁극적 목적은 자연어(Natural Language)로 표현되는 문제(Problem)를 컴퓨터 회로에서의 적절한 전자의 움직임으로 변화(Transformation)시켜 내는 것. 문제 해결을 위한 계층적 접근 (Transformation between Layers)
핵심 개념 #1 : Universal Computing Device 충분한 시간과 메모리 공간만 있다면 모든 컴퓨터들은 동일한 컴퓨팅을 해낼 수 있다. 컴퓨터 시스템의 본질은 동일함. 빠른 컴퓨터가 할 수 있는 일은 느린 컴퓨터도 할 수 있다. 시간만 더 걸릴 뿐이다. = = PDA Workstation Supercomputer
Turing Machine TADD TMUL Turing Machine a,b a+b a,b axb Turing은 모든 형태의 계산(Computation)을 튜링 기계라고 이름 지은 특정 기계로 수행할 수 있음을 주장. Turing은 1937년 Turing Machine의 개념 및 수학적 모형을 제시했지만 실제 장치로 구현하지는 않았음. 최초의 디지털 컴퓨터는 1946년에 현실화 Turing Machine의 예 덧셈을 수행하는 튜링 기계, 곱셈을 수행하는 튜링 기계 블랙박스 모형, 어떤 작업을 수행해야 하는지는 기술되어 있지만 실제 이 작업을 어떻게 실현할 지에 대해 기술하지는 않음. TADD TMUL a,b a+b a,b axb
Universal Turing Machine 범용 튜링 기계 앞서 소개한 덧셈, 곱셈 기계 뿐 아니라 모든 튜링 기계가 하는 일들을 해낼 수 있는 튜링 기계 이 역시 튜링 기계의 일종 입력으로 데이터 뿐 아니라 수행하여야 할 계산 작업을 포함 Universal Turing Machine is Programmable !!! 컴퓨터 또한 Programmable 즉 컴퓨터는 Universal Turing Machine을 에뮬레이트 할 수 있음. U a,b,c c(a+b) Universal Turing Machine Tadd, Tmul
Alan Turing (출처 Wikipedia) 생애 1912년 출생, 1931년 케임브리지 대학 수학사 학위 취득, 1936년 미국 프린스턴 대학에서 박사 학위 취득. 1937년 튜링 기계 개념을 도입한 논문 “계산 가능한 수와 결정할 문제에의 응용”을 발표, 1938년 영국 정부 암호학교 부임, 1939년 독일군의 에니그마 암호 해독기 개발 동성애자 혐의로 체포된 후 1954년 독이 든 사과를 먹고 죽음. 튜링은 수학, 암호학, 생물학 등 많은 분야에서 다양한 연구 활동을 했지만 특히 컴퓨터 과학 분야에 끼친 영향이 크기 때문에 컴퓨터 과학 및 전산학의 아버지라고 불린다. 그가 구상한 튜링 기계의 무한히 긴 띠는 컴퓨터의 메모리에, 기호를 읽는 기계는 컴퓨터의 CPU에 비유할 수 있다. 또한 튜링 기계의 한 종류인 범용 튜링 기계는 프로그램을 내장해서 작동하는 현대의 컴퓨터를 많이 닮아 있다. 계산기 학회(ACM)에서는 튜링의 공로를 기리기 위하여 1966년부터 매년 컴퓨터 과학에 중요한 업적을 남긴 사람들한테 주는 튜링상을 제정하였다. 현재 튜링상은 컴퓨터 과학 분야의 노벨상이라고도 불린다. 애플 컴퓨터의 로고인 '한 입 베어먹은 사과'는 튜링을 연상시키지만, 애플 컴퓨터가 로고를 만들 때 튜링을 염두에 두고 만들었는지는 확실하지 않다. 현재 애플 컴퓨터에서는 로고의 모델이 뉴턴의 사과라고 주장한다.
From Theory to Practice 이론적 관점에서는 컴퓨터는 계산할 수 있는 것이라면 그 어떤 작업도 수행 할 수 있음 충분한 시간과 메모리가 주어진다면 그러나 실제로 컴퓨터를 이용하여 문제를 푸는 것은 여러 가지 제약 조건들 아래서 이루어짐 시간 제약 예) 가까운 미래의 전국의 기상 상태를 예측하려는 문제 비용 제약 예) 가정 내의 모든 전등을 원격에서 끄고 켜려고 하려는 문제 전력 제약 예) 스마트 폰에서 고성능 비디오 게임 구동에 따른 배터리 소모
핵심 개념 #2: Layered Problem Transformation Problems Algorithms Language Instruction Set Architecture Microarchitecture Circuits Devices
How do we solve a problem using a computer? 일련의 연속된 추상화된 계층 간의 Systematic한 변환 과정을 거쳐 해결 Problem 소프트웨어 설계 (S/W Design) 알고리즘과 자료구조의 선택 Algorithm 프로그래밍 프로그래밍 언어로 설계한 내용을 표현 Program Compiling/Interpreting: 프로그래밍 언어를 기계 명령으로 변환 Instr Set Architecture
Deeper and Deeper… 프로세서 설계 ISA 구현을 위한 구조 설계 Microarch 논리/회로 설계 Instr Set Architecture 프로세서 설계 ISA 구현을 위한 구조 설계 Microarch 논리/회로 설계 프로세서 구성 요소 실현을 위한 게이트 및 하위계층(Low-Level) 회로 설계 Circuits 엔지니어링 수행 및 제작 최하위 계층 장치 요소의 개발 및 생산 Devices
Descriptions of Each Level (1) Problem Statement 자연어(Natural Language)를 이용한 문제 기술 모호하고 정확하지 않을 수 있음. Algorithm 문제 해결을 위한 일련의 절차, 종료를 보장하여야 함. 명확성 (Definiteness) : 알고리즘의 절차를 구성하는 각 단계가 정확하게 기술되어야 함. 컴퓨팅 유효성 (Effective Computability) 각 단계가 컴퓨터에서 실행 할 수 있는 내용이어야 함. 예) 가장 큰 소수(Prime Number)를 구하라. 유한성 (Finiteness) 알고리즘의 종료가 보장되어야 함.
Descriptions of Each Level (2) Program 알고리즘을 프로그래밍 언어로 표현하는 것. 고수준 언어와 저수준 언어로 프로그래밍 언어 분류 고수준 (High Level) 언어는 하부의 컴퓨터 장치에 독립적(Machine Independent), C/C++언어, Java, COBOL, Fortran, LISP … 저수준 (Low Level) 언어는 하부의 컴퓨터 장치에 종속적 Assembly 언어 Instruction Set Architecture (ISA) 컴퓨터가 수행할 수 있는 명령어 집합(Instruction Set)을 정하는 것. 수행할 수 있는 연산(Operation)과 각 연산 마다 필요한 데이터(Operand) 정의 데이터 형식(Data Type), 주소 모드(Addressing Mode) 연산에 쓰일 Operand의 데이터 형식과 위치를 기술하는 방법 대표적 실용 ISA의 예 : x86 100개 이상의 Operation, 10여개의 데이터 형식, 수십여개의 주소 모드 이 외에도 Power PC, PA-RISC, SPARC 등의 ISA
Descriptions of Each Level (3) Microarchitecture 프로세서 구현의 세부 구조 및 체계 동일한 ISA를 서로 다른 구조로 구현할 수도 있음. Logic Circuits Microarchitecture를 실현하기 위하여 간단한 논리 회로들을 조합 덧셈과 같은 하나의 기능을 실현하는 데에도 매우 다양한 방법이 존재 Devices 장치를 구성하는 부품이나 재료의 특성, 생산성
Many Choices at Each Level 연립 방정식의 풀이 Gaussian elimination Jacobi iteration Red-black SOR Multigrid FORTRAN C C++ Java Intel x86 PowerPC Atmel AVR Centrino Pentium 4 Xeon Ripple-carry adder Carry-lookahead adder CMOS Bipolar GaAs Tradeoffs: 비용, 성능, 전력 소모 … Sun and Java are trademarks of Sun Microsystems, Inc. Intel, Pentium, Centrino, and Xeon are trademarks of Intel Corporation. AMD and Athlon and trademarks of Advanced Micro Devices, Inc. Atmel and AVR are registered trademarks of Atmel Corporation. PowerPC is a trademark of International Business Machines Corporation.