18
An introduction to computer Science - 컴컴컴 컴컴 2017. 03. 17 황황황

컴퓨터개론04

Embed Size (px)

Citation preview

Page 1: 컴퓨터개론04

An introduction to computer

Science- 컴퓨터 구조

2017. 03. 17황태욱

Page 2: 컴퓨터개론04

01 컴퓨터 하드웨어 구성

02 프로그램 명령어

03 프로그램 실행 동작

CONTENTS

04 Further Study

Page 3: 컴퓨터개론04

1.1 컴퓨터 하드웨어 구성

컴퓨터 하드웨어는 중앙처리장치 (CPU:Central Processing Unit), 주기억장치 , 입출력장치 그리고 이들을 연결해주는 시스템 버스로 구성

Page 4: 컴퓨터개론04

1.2 시스템 버스 종류

컨트롤 버스 (Control bus): 제어 정보가 전달주소버스 (Control bus): 주기억장치 주소가 전달데이터 버스 (Data bus): 데이터가 전달

Page 5: 컴퓨터개론04

1.3 프로그램 실행 과정

CPU명령어 1명령어 2

:

명령어 1명령어 2

:

프로그램이 실행되기 위해서는 주기억장치로

들어가야 한다

명령어를 하나씩 차례대로 읽어 실행한다 .

보조기억장치주기억장치

Page 6: 컴퓨터개론04

1.4 중앙처리장치

시스템 버스

제어장치 Control Unit 프로그램 명령어를 해석하고 , 해석된 명령의 의미에 따라 연산장치 , 주기억장치 , 입출력장치 등에 동작을 지시

연산장치 ALU: Arithmetic and Logicl Unit 덧셈 , 뺄셈 등 산술연산과 논리연산을 하는 장치로 제어장치의 지시에 따라 연산을 수행

레지스터 Register 주기억장치로부터 읽어온 명령어나 데이터를 저장하거나 연산된 결과를 저장하는 공간

Page 7: 컴퓨터개론04

1.4 레지스터의 종류

레지스터 개수와 크기는 CPU 종류에 따라 차이가 있음

범용 레지스터 명령어 실행 중에 연산과 관련된 데이터를 저장

특수 목적 레지스터

프로그램 카운터 다음에 실행될 명령어가 저장된 주기억장치의 주소를 저장명령어 레지스터 현재 실행중인 명령어를 저장스택 포인터 주기억장치 스택의 데이터 삽입과 삭제가 이루어지는 주소를 저장

CPU 는 3 단계로 명령어를 처리 – 인출 (fetch), 해독(decode), 실행 (execute)

execute

fetch

decode

Page 8: 컴퓨터개론04

1.5 Main Memory

0 1 바이트1 1 바이트2 1 바이트: :

254 1 바이트255 1 바이트

프로그램과 이 프로그램이 필요한 데이터를 일시적으로 저장하는 장치각 위치를 구분하기 위해 바이트 (Byte) 또는 워드 (word) 단위로 분할해주소 (address) 를 할당

256 byte 크기의 주기억장치 예

CPU

Byte 단위256 개의

주소를 가진 main

memory

Address bus: 8bit

Control bus: 1bit (Read/Write)

Data bus: 8bit

Page 9: 컴퓨터개론04

1.5 Bus

Address Bus

Data Bus

Control Bus

주기억장치의 어느 위치에 데이터를 읽을지 또는 쓸지를정해주는 값 main memory 크기에 따라 address bus 의크기 역시 정해 짐

Main memory 에 읽거나 써야 할 데이터가 전송되는 busCPU 가 한번에 전송할 수 있는 데이터의 크기와 같음이 데이터는 보낼 수도 받을 수도 있으므로 양방향

데이터를 주기억장치에 쓸지 읽을지를 결정 . CPU 에서Main memory 에만 신호를 전달하므로 단방향

Page 10: 컴퓨터개론04

2.1 프로그램 명령어

기본적으로 연산코드와 피연산자 부분으로 이루어 짐

연산코드 피연산자 명령어 기본 형식

연산코드 : 덧셈 , 뺄셈 , AND, OR 등 CPU 에서 실행해야 할 동작을 나타내는 부분

피연산자 : 동작에 필요한 값 또는 저장공간을 타나냄 피연산자 개수는 CPU 에 따라 차이가 있음

연산코드 피연산자1

피연산자2

이러한 경우 피연산자 1 과 피연산자 2 를 연산코드에 따라 처리한 결과를 피연산자 1 에 저장한다는 의미

Page 11: 컴퓨터개론04

2.2 명령어의 분류 및 범용레지스터

데이터 전송 명령어 레지스터 또는 주기억장치의 데이터를 레지스터 또는 주기억장치로이동하는 명령어와 입출력장치와 데이터를 주고 받는 입출력 명령어

연산명령어 산술연산 및 온리연산 , 비트를 이동하는 시프트 등의 명령어분기 명령어 다음에 실행될 명령어를 새롭게 지정하는 명령어

CU 프로그램 카운터

명령어 레지스터

스택 포인터

AXBXCXDX

ALUmain

memory

Address bus

Control bus

Data bus

Page 12: 컴퓨터개론04

2.3 데이터 전송 명령어

- register 또는 main memory 에 지정된 값을 register 또는 main memory 로 전송- 상수 값을 register 또는 main memory 로 전송- 스택 (stack) 에 저장된 값을 register 로 전송- Register 에 저장된 값을 스택으로 전송

Register, Main memory, 상수 값을 구별하기 위해 다음과 같이 가정한다 .- AX, BX, CX, DX 는 Register 를 의미- 30, 100 같이 숫자로만 이루어진 값은 상수 값- [10], [50] 처럼 대괄호는 main memory 를 의미 [10] 은 address 10 의 main memory

B 의 값을 A 로 전송한다는 뜻 ( 사실상 A 를 B 의 값으로 바꾼다 라는 개념에 가까움 )A 는 main memory 와 register 가 가능 , B 는 main memory 와 register 및 상수 가능

예 ) MOV BX [150] main memory address150 의 값을 register BX 로 전송

MOV A B

Page 13: 컴퓨터개론04

2.3 스택 명령어

PUSH AX

스택 : Stack - 큐 라는 개념도 있음 Queue

Last in, First out

AX register 값을 stack 에 삽입 – 이 경우 stack pointer 를 1 증가

POP BXStack 에서 맨 위 값을 삭제하며 register BX 에 저정 : stack pointer -1

Page 14: 컴퓨터개론04

2.3 입출력 명령어

IN AX B Port B 에서 data 를 읽어 register AX 에 저장

OUT B AXRegister AX 의 data 를 port B 로 출력하는 명령어

각 컨트롤러 (controller) 에는 포트 (port) 라는 유일한 번호가 부여

Page 15: 컴퓨터개론04

2.3 연산명령어

ADD A B A 에 B 를 더해서 A 에 저장SUB A B A 에 B 를 빼서 A 에 저장MUL A B A 에 B 를 곱해서 A 에 저장DIV A B A 를 B 로 나누어 A 에 저장

AND A B A, B 를 AND 연산해서 A 에 저장OR A B A,B 를 OR 연산해서 A 에 저장NOT A A 의 1 의 보수를 A 에 저장

XOR A B A,B 를 XOR 연산해서 A 에 저장

SHR R B R 값을 오른쪽으로 B 비트 만큼 이동시키고 빈곳에 0 을 저장SHL R B R 값을 왼쪽으로 B 비트만큼 이동시키고 빈곳에 0 을 저장CIR R B R 값을 오른쪽으로 B 비트 만큼 이동시키고 벗어나는 비트를 왼쪽에 비는 곳에 저장CIL R B R 값을 왼쪽으로 B 비트만큼 이동시키고 벗어나는 비트들을 오른쪽에 비는 곳에 저장

산술 연산

논리 연산

시프트 (Shift) 연산

Page 16: 컴퓨터개론04

2.3 분기 명령어

프로그램은 순차적으로 실행되나 , JUMP 나 CALL 같은 분기명령어로 원하는다른 위치의 명령어를 실행하게 할 수 있음

프로그램 카운터 (Program Counter) 라는 Register 에 대해지금 main memory [100] 의 명령어를 실행한다면 program counter 에는다음 주소인 101 이 저장됨

JUMP 100Program Counter Register 값을 100 으로 변경

CALL 100Program Counter Register 값을 100 으로 변경

다만 기존의 Program Counter Register 값을 Stack 에 저장하고향후에 RETURN 을 실행할 경우 Stack 에 저장된 기존 Program CounterRegister 값을 Stack 에서 Pop 시켜 Program Counter Register 에 저장

Page 17: 컴퓨터개론04

5. Further Study

큐 : Queue

선입선출 ( 先入先出 , First In First Out; FIFO) 의 자료구조. 대기열이라고도 한다

기계어 : Machine Code / Machine Language

어셈블리어 : Assembler / Assembler Language

Page 18: 컴퓨터개론04

Q&AFor further details, please contact us by e-mail

황태욱 : [email protected]

Kakao: Aldemaya