[ 2014-1] 정보통신기초 week 3 : 데이터의 조 작

52
[2015-1] 정정정정정정 Week 3 : 정정정정 정정 담담담담 : 담 담 담

Upload: casey

Post on 25-Feb-2016

92 views

Category:

Documents


0 download

DESCRIPTION

[ 2014-1] 정보통신기초 Week 3 : 데이터의 조 작. 담당교수 : 최 윤 정. Chapt.2 데이터의 조작. 목차. 2.1 컴퓨터 구조 2.2 기계어 2.3 프로그램의 실행 2.4 연산명령 2.5 다른 장치와의 통신 2.6 기타 구조. 2.1 컴퓨터 구조. CPU 연산장치 제어장치 레지스터 버스 메모리 메인보드 디스크 . H/W 구성요소 . 기본레지스 터. 메인보드. 칩셋 (Chipset). - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

[2015-1] 정보통신기초

Week 3 : 데이터의 조작

담당교수 : 최 윤 정

Page 2: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

Chapt.2 데이터의 조작

2.1 컴퓨터 구조

2.2 기계어

2.3 프로그램의 실행

2.4 연산명령

2.5 다른 장치와의 통신

2.6 기타 구조

목차

2

Page 3: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

2.1 컴퓨터 구조

CPU( 중앙처리장치 , 프로세서 ) 연산장치

제어장치

레지스터 : 범용 , 용도별

버스

메모리

메인보드

디스크 ..3

Page 4: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

H/W 구성요소

4

Page 5: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

기본레지스터

5

Page 6: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

메인보드

6

Page 7: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

7

Page 8: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

칩셋 (Chipset) 여러 칩과 회로가 모여 서로 연관된 기능을 수행하도록 설계된 제어 칩 (chip) 들의 조합

(set) 모든 전자제품에는 특수 목적용 칩셋이 들어 있음

컴퓨터 , 휴대전화 , 디지털 TV 등

CPU 프로세서와 함께 시스템 전체를 제어 호환성 ! 대개 메인보드 상에 몇 개의 제어 칩들로 구성

칩셋 내부 회로☞ CPU 를 지원하는 각종 제어 장치들

버스 컨트롤러 , 메모리 컨트롤러 , I/O 컨트롤러 , 인터럽트 컨트롤러 , 타이머 등 다양한 장치들

8

Page 9: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

칩셋과 ROM 은 메인보드에 장착

방열판으로 덮은 칩셋롬 바이오스 칩

칩셋

9

Page 10: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

데스크탑 컴퓨터의 메인보드

대만 기가바이트 motherboard (2013)

I/O 확장 슬롯

I/O포트

I/O 커넥터

CPU 소켓

메모리 슬롯

칩셋

배터리

전원 커넥터

10

Page 11: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

Quiz : 빈칸채우기

대만 ASUS motherboard (2013)

I/O 확장 슬롯

I/O 포트

I/O 커넥터

CPU 소켓

메모리 슬롯

칩셋

배터리

전원 커넥터

11

Page 12: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

노트북의 메인보드

미국 Apple MacBook Air 13” (2013)

12

Page 13: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

태블릿 컴퓨터의 메인보드

미국 Apple iPad Air (2013)

13

Page 14: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

스마트폰의 메인보드 ①

미국 Apple iPhone 5s 메인보드 (2013)

14

Page 15: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

스마트폰의 메인보드 ②

한국 Samsung Galaxy S4 메인보드 (2013)

15

Page 16: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

컴퓨터 시스템의 동작

컴퓨터 시스템 : 디지털 형태의 정보를 입력 받아 메모리에 저장된 명령어 목록 ( 프로그램 )에 따라 처리하고 결과를 출력하는 일종의 고속 전자계산기 .

1) 컴퓨터 시스템의 동작과정

아래와 같은 순서로 동작하며 , 제어장치가 모든 동작을 제어한다 . 입력 장치를 통해 정보를 입력 받아 메모리에 저장한다 . 메모리에 저장한 정보를 프로그램의 제어에 따라 인출 , 산술 장치나 논리 장치에서 처리한다 . 처리한 정보를 출력 장치에 표시하거나 디스크 ( 보조기억장치 ) 에 저장한다 .

※ 정보 : 명령어와 데이터로 구분

- 명령어 : 실행할 산술 , 논리 연산 동작을 명시하는 문장 . - 프로그램 : 작업 하나를 수행하기 위한 명령어 집합 .

16

Page 17: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

명령어 구성

연산 코드 (Operation Code) 와 오퍼랜드 (Operand) 로 구성 . 0 과 1 의 이진 코드화 되어 있으며 프로세서에 따라 길이가 달라짐 .

고정 길이 또는 기능에 따른 가변적 구성 가능 . 실행 전 메인 메모리에 저장 , 한번에 하나씩 프로세서에 전송되어 해석 및 실행 .

[ 그림 1-14] 명령어 구조의 간단한 예

[ 그림 1-15] 메인 메모리에 저장된 명령어 예

17

Page 18: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

프로그램 내장 (stored program) 개념

기존 : 데이터는 메모리에 , 프로그램은 CPU 에 ..!

프로그램도 비트패턴으로 인코딩되어 주기억장치에 저장될 수 있다 .

CPU 는 주기억장치에서 명령들을 읽어와서 실행할 수 있다 . fetch - execute

또한 실행될 프로그램을 주기억 장치 안에서 쉽게 변경할 수도 있다 .

18

Page 19: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

기계 명령 : CPU 가 인식할 수 있도록 비트 패턴으로 인코딩된 명령

기계어 (machine language): 기계가 인식할 수 있는 모든 명령의 집합

컴파일 과정

SOURCE 파일 기계어 코드로 변환하는 과정 .! .c .o .exe .java .class

19

Page 20: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

CPU 구조에 대한 두 가지 철학 – 양대 축

RISC(Reduced Instruction Set Computing) 최소의 기계명령어를 실행하도록 설계하자 . 단순하고 , 빠르고 , 효율적인 소수의 명령

예 : Apple/IBM/Motorola 의 PowerPC

CISC(Complex Instruction Set Computing) 많은 수의 복잡한 명령을 실행하도록 설계하자 . 중복도 괜찮다 .! 편리하고 강력한 다수의 명령

예 : Intel 프로세서들

20

Page 21: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

명령어의 종류

데이터 전송 : 한 장소에서 다른 장소로 데이터를 복사한다

mem mem , mem reg, regmem .. 예 ) 서랍 -> 서랍 , 서랍 -> 가방 , 가방 -> 서랍 같은 ^^

연산 : 기존의 비트 패턴을 사용하여 새로운 비트 패턴을

계산한다

and, or, add … 제어 : 프로그램 실행을 지시한다

21

Page 22: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

주기억장치에 저장된 값들로 덧셈하기

+ 3 5 단계 1. 덧셈에 사용될 값 중의 하나를 주기억장치에서 가져와 레지스터에

넣는다 . 단계 2. 덧셈에 사용될 또 다른 값을 주기억장치에서 가져와 또 다른

레지스터에 넣는다 . 단계 3. 단계 1, 2 에서 사용된 레지스터들을 입력으로 사용하고 결과는 또

다른 레지스터에 저장하도록 덧셈 회로를 작동시킨다 . 단계 4. 결과를 주기억장치에 저장한다 . 단계 5. 멈춘다 . 끝 !

22

Page 23: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

나눗셈 연산

/ 6 3 ( 보통 , / 는 몫을 % 는 나머지를 구합니다 ) 단계 1. 메모리에서 값 하나를 받아와서 레지스터에 LOAD 하라 . 단계 2. 메모리에서 또 다른 값 하나를 받아와서 또 다른 레지스터에 LOAD

하라 . 단계 3. 두 번째 값이 0 일 경우 , 단계 6 으로 점프하여라 . 단계 4. 첫 번째 레지스터의 내용을 두 번째 레지스터의 나누어 얻은 몫을 세

번째 레지스터에 넣어라 . 단계 5. 세 번째 레지스터의 내용을 메모리에 STORE 하라 . 단계 6. STOP.

23

Page 24: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

그림 2.4 부록 C 의 컴퓨터 구조

2-24

** 이제 , 앞서 본 비트열을 이용하여 , 명령코드와 연산에 이용되는 데이터를 저장합니다 .

Page 25: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

기계 명령어의 요소

명령 코드 (op-code): 실행할 명령을 지정한다

피연산자 (operand): 명령에 관한 추가 정보를 제공한다

피연산자에 대한 해석은 명령 코드에 따라 달라진다 .

예 )

25

Page 26: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

부록 C : 12 개의 기계어 보기

3 번은 Store 기능 : reg 내용을 mem(addr) 작업판 (책상 , 도마 등 ) 위 물건을 빈 그릇으로 .!

26

Page 27: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

덧셈코드 (slide 22 의 기계어 표현 ) 덧셈에 쓰일 operand 가 각각 6c, 6d 에 들어있다고

가정 1 번 : load (mem(addr) reg) : 그릇 안 데이터를

도마위로 ! 3 번 : store(reg mem(addr)) 5 번 : add C(12) 번 : halt.

인코딩된 명령 해설

156C 주소가 6C 인 메모리 셀에 들어있는 비트 패턴으로 5 번 레지스터를 채운다 .

166D 주소가 6D 인 메모리 셀에 들어있는 비트 패턴으로 6 번 레지스터를 채운다 .

50565 번 레지스터와 6 번 레지스터의 내용에 대해 2 의 보수 덧셈을 수행하고 , 그 결과를 0 번 레지스터에 넣는다 .

306E 0 번 레지스터의 내용을 주소가 6E 인 메모리 셀에 저장한다 .

C000 멈춘다 . 27

Page 28: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

간단한 명령어의 예

3 6 8 A : 3 : store , reg memory 6 : 레지스터 코드 8A : 메모리 주소 즉 , 6 번 레지스터의 내용을 메모리주소 8A 에 store.

4 0 F 4 : 4 : move (==copy) , reg reg 0 : pass F : F 번 레지스터 4 : 4 번 레지스터

28

Page 29: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

프로그램의 실행

두 개의 용도 지정 레지스터로 제어

프로그램 카운터 (PC): 다음 명령의 주소

명령 레지스터 (IR): 현재 명령

기계 주기 (machine cycle) 인출 (fetch) 해석 (decode) 실행 (execute)

29

Page 30: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

기계어 사이클

30

Page 31: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

B : JUMP

B 2 5 8 : 점프규칙 -0 번 레지스터 값과 비교한다 . 2 번 레지스터의 값과 0 번 레지스터의 값을 비교한다 . 같으면 메모리 주소 58 번으로 JUMP! 이제 , 58 번에 있는 명령어가 인출되어 실행됨 .

B 0 5 8 : 비교할 레지스터가 0 이므로 언제나 항상 같음 . 따라서 , 항상 58 번으로 JUMP.

31

Page 32: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

32

Page 33: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

연산명령

논리 연산 : AND, OR, XOR … 마스킹 (masking) :

AND : 비트패턴 중 임의의 값을 알아오거나 , 변경

OR : 비트패턴 중 임의의 값을 1 로 set 할 때 ..

예 ) 10101011 중 하위 4bit 만 가져올 때 00001111 과 AND

______________________________ 결과 00001011

예 ) 10101011 중 상위 4bit 를 모두 1 로 set 할 때 11110000 과 OR

______________________________ 결과 11111011

33

Page 34: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

연산명령

회전 (rotate) 및 자리 이동 (shift): 회전식 자리 이동 (circular shift) 논리적 자리 이동 (logical shift) :

밖으로 나가는 비트는 버리고 빈자리는 0 으로 채우자 . 왼쪽이동은 곱하기

오른쪽 이동은 나누기 효과

산술적 자리 이동 (arithmetic shift) 오른쪽 이동시에는 빈자리는

원래 있던 값으로 채운다 .예 ) -0xFFFF vs. 0xFFFF

34

Page 35: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

연산명령

산술 연산 : 덧셈 , 뺄셈 , 곱셈 , 나눗셈

정확한 동작은 값들의 인코딩 방식에 따라 달라진다

2 의 보수

부동소수점

35

Page 36: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

다른 장치와의 통신

제어기 (controller): 컴퓨터와 장치와의 통신을 처리하는 중개 장치

각 장치유형마다 전용 제어기가 존재함

범용 제어기 : USB 와 파이어와이어 (FireWire) 포트 (port): 장치를 컴퓨터에 연결하는 지점

메모리 사상 (memory-mapped) I/O: CPU 가 주변장치를 메모리

셀처럼 취급하며 통신하는 방식

36

Page 37: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

컴퓨터의 버스에 연결된 제어기들

37

Page 38: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

메모리 - 사상 I/O 의 개념적 표현

38

Page 39: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

다른 장치와의 통신

DMA(Direct Memory Access): 제어기가 버스를 경유하여

주기억장치에 접근

폰노이만 병목현상 : 폰노이만 병목현상 : 불충분한 버스 속도로 인한 성능 저하

현상

디스크에서 메모리로 데이터를 읽어오는 동안 ( 제어기가 담당 ) CPU 는 다른

작업을 할 수 있다 .! 즉 , 동시에 두 가지 일을 할 수 있다 .! 그러나 , 버스 사용권에 대한 경쟁으로 정체현상이 올 수 있다 .

핸드셰이킹 (handshaking): 컴퓨터 구성요소 사이의 데이터 전송 조정 과정

단방향 vs. 양방향 ! ‘상태단어’ 를 이용하여 장치들의 상태를 전송한다 .

예 ) 파일의 상태단어 : 쓰기중 , 읽기중

프린터의 상태단어 : 최하위비트 - 용지걸림 , 용지없음 …39

Page 40: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

다른 장치와의 통신

장치들 사이의 통신을 처리하는 방식에 따라

병렬 통신 (parallel communication): 다중 통신 경로를 사용하여 비트들을 동시에 전송 . 빠르지만 복잡한 구조 .

직렬 통신 (serial communication): 단일 통신 경로를 사용하여 한 번에 한 비트씩 전송 . 단순한 회로 .

40

Page 41: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

통신 속도

측정 단위

Bps: Bits per second Kbps: Kilo-bps (1,000 bps)

8Kb == 1kB , B = byte, b = bit Mbps: Mega-bps (1,000,000 bps) Gbps: Giga-bps (1,000,000,000 bps)

대역폭 (bandwidth): 최대 전송 속도

41

Page 42: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

데이터 조작에 관한 프로그래밍

프로그래밍 언어는 기계의 세부사항들을 사용자로부터 감춘다 : 프로그래머는 앞서 본 기계의 환경적 요소를 고려하되 , 여러

내부 상황에 의존하지 않는다 .

하나의 파이썬 문장이 수십 개 이상의 기계어 명령에 대응될 수도

있다 . 프로그래머들이 프로세서가 RISC 인지 CISC 인지 신경 쓸 필요

없다 . 변수들에 값을 저장하는 것은 LOAD, STORE, MOVE 등의 명령

코드 조합에 대응될 수 있다 .

2-42

Page 43: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

비트 단위 연산을 위한 파이썬 코드

print(bin(0b10011010 & 0b11001001)) # Prints '0b10001000'

print(bin(0b10011010 | 0b11001001)) # Prints '0b11011011'

print(bin(0b10011010 ^ 0b11001001)) # Prints '0b1010011'

2-43

Page 44: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

제어 구조 : C 와 조금 다릅니다 . if 문 : if (water_temp > 140) : print('Bath water too hot!') while 문 : while (n < 10) : print(n) n = n + 1

2-44

Page 45: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

함수

함수 : 주어진 매개변수들에 대해 수행될 일련의 연산을 위한에 대해 이름

함수 호출 (function call): 식이나 문장에서 나타나는 함수

2-45

x = 1034y = 1056z = 2078biggest = max(x, y, z)print(biggest) # Prints '2078'

Page 46: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

함수 ( 계속 ) 인수 값 : 매개변수에 주어지는 값 결과 있는 함수는 값을 리턴한다 . void 함수 , 또는 프로시저는 값을 리턴하지 않는다 .

2-46

sideA = 3.0sideB = 4.0# Calculate third side via Pythagorean Theoremhypotenuse = math.sqrt(sideA**2 + sideB**2)print(hypotenuse)

Page 47: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

입력과 출력

# Calculates the hypotenuse of a right triangle

import math

# Inputting the side lengths, first trysideA = int(input('Length of side A? '))sideB = int(input('Length of side B? '))

# Calculate third side via Pythagorean Theoremhypotenuse = math.sqrt(sideA**2 + sideB**2)

print(hypotenuse)

2-47

Page 48: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

마라톤 훈련 지원 프로그램 예제

# Marathon training assistant.

import math

# This function converts a number of minutes and # seconds into just seconds.def total_seconds(min, sec): return min * 60 + sec

# This function calculates a speed in miles per hour given# a time (in seconds) to run a single mile.def speed(time): return 3600 / time

2-48

Page 49: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

마라톤 훈련 지원 프로그램 예제 ( 계속 )# Prompt user for pace and mileage.pace_minutes = int(input('Minutes per mile? '))pace_seconds = int(input('Seconds per mile? '))miles = int(input('Total miles? '))

# Calculate and print speed.mph = speed(total_seconds(pace_minutes, pace_seconds))print('Your speed is ' + str(mph) + ' mph')

# Calculate elapsed time for planned workout.total = miles * total_seconds(pace_minutes, pace_seconds)elapsed_minutes = total // 60elapsed_seconds = total % 60

print('Your elapsed time is ' + str(elapsed_minutes) + ' mins ' + str(elapsed_seconds) + ' secs')

2-49

Page 50: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

그림 2.15 마라톤 훈련 데이터 예

2-50

Time Per Mile    Total Elapsed Time

Minutes Seconds Miles Speed (mph) Minutes Seconds

9 14 5 6.49819494584 46 10

8 0 3 7.5 24 0

7 45 6 7.74193548387 46 30

7 25 1 8.08988764044 7 25

Page 51: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

기타 컴퓨터 구조

처리율 (throughput) 개선을 위한 기술 : 파이프라이닝 (pipelining): 일련의 작업주기에 따라 단계를

중첩시키자 . 쉬지 않도록 . 병렬 처리 (parallel processing): 여러 개의 프로세서를 동시에

사용하자 . SISD(single instruction stream, single data stream): 병렬처리 X

MIMD(multiple instruction stream, multiple data stream): 여러 개의 프로그램이 각자 다른 데이터를 사용하여 수행됨

SIMD(single instruction stream, multiple data stream) : 동일한 프로그램이 여러 데이터에 적용됨

자체적으로 Memory-cpu 를 갖는 여러 개의 장치들을 묶자 .51

Page 52: [ 2014-1]  정보통신기초 Week 3  :   데이터의 조 작

과제 # 프로그래밍 코드 : Python/php/C/java 중 한가지는 시작합시다 . 단원 복습문제 : 4 문제

4,5,7,8

사회적 논제 : 4 번 : 다른 누군가가 만들고 , 유지하고 발생하는 문제를 고칠 것이기 때문에 개인이

기계의 내적 세부사항을 알 필요 없다는 개인의 태도는 윤리적으로 합당한가 ? 컴퓨터의 경우와 자동차 , 핵발전소의 경우 .. 같은 생각인가 ?

7 번 : 오버플로우나 절삭오차로 인해 발생하는 산술적 오류의 결과로 금융분야나 운항

시스템등에서 대형사고의 발생을 상상하는 것은 어렵지 않다 . 이미지 저장 시스템에서

미세한 부분을 잃음으로 발생할 수 있는 결과는 무엇인가 ? 감시 , 의료진단의 예로

생각해보자 . 처리단위의 문제 : 우주선 폭발사고의 원인 단위 해석이 달라서… . 금융 계산시 : 1007 원 89 전 올림 / 버림 52