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


Recommended