43
CPU 와 Register 2009081050 심심심 2009081056 심심심

CPU 와 Register

Embed Size (px)

DESCRIPTION

CPU 와 Register. 2009081050 심혜진 2009081056 장미애. CPU 의 개요. CPU 란 ? 중앙처리장치 (c entral processing unit ) 컴퓨터의 가장 중요한 부분으로서 명령을 해독 하고 산술논리연산이나 데이터 처리를 실행 하는 장치 . 입출력 장치 , 외부 기억 장치와 더불어 컴퓨터 시스템을 구성한다. CPU. Control Unit (PC,IR). registers (MAR, MBR). Main Memory. Bus Interface Unit. - PowerPoint PPT Presentation

Citation preview

Page 1: CPU 와  Register

CPU 와 Register

2009081050 심혜진2009081056 장미애

Page 2: CPU 와  Register

CPU 란 ?- 중앙처리장치 (central processing unit)- 컴퓨터의 가장 중요한 부분으로서 명령을 해독하고

산술논리연산이나 데이터 처리를 실행하는 장치 .- 입출력 장치 , 외부 기억 장치와 더불어 컴퓨터

시스템을 구성한다 .

CPU 의 개요

Page 3: CPU 와  Register

레지스터 (registers) 산술 논리 연산장치 (ALU) 제어장치 (Control Unit) 버스접속장치 (Bus Interface Unit)

CPU 의 구성요소

registers(MAR, MBR)

ALUBus InterfaceUnit

Main Memory

CPU

Control Unit(PC,IR)

Page 4: CPU 와  Register

레지스터 (Register)- 레지스터는 CPU 내의 데이터를 저장하고 CPU 가

데이터 처리를 위한 기본적인 저장 공간

산술 논리 연산장치 (Arithmetic and Logic Unit)- CPU 내부에 계산을 위해 일시적으로 수치를 넣어두는

부분

CPU 의 구성요소

Page 5: CPU 와  Register

제어장치 (Control Unit)- CPU 가 자신 및 주변기기들을 컨트롤할수 있는 장치- 모든 컴퓨터 시스템을 제어하는데 사용되는 요소- 메모리로부터 데이터 명령 , 메모리 해석 및 실행 등을

수행 버스 접속 장치 (Bus Interface Unit)- 메모리나 주변 장치와 데이터를 주고 받을 수 있게

해주는 역할을 담당

CPU 의 구성요소

Page 6: CPU 와  Register

레지스터 , 산술논리연산장치 , 제어장치로 구성

CPU 의 내부구조

Page 7: CPU 와  Register

명령어집합 - 의미 : 기계어를 사람이 이해하기 쉽게 표현한 것을

명령어라 하고 이들의 집합을 명령어 집합이라 한다 .

명령어 주기 (Instruction Cycle)- CPU 의 명령어 실행에 요구되는 과정

명령어 집합

Page 8: CPU 와  Register

명령어 집합

인출주기 (Fetch Cycle)- 메인 메모리에서 명령어 집합을 읽어 명령

레지스터에 저장하기까지의 단계

실행주기 (Execution Cycle)- 명령 레지스터의 명령어를 해석 , 실제로 명령을

처리하는 단계

Page 9: CPU 와  Register

동작코드부분 : 명령어의 실행할 내용을 나타냄 주소부분 : 명령어 실행에 필요한 데이터의 저장 장소를

나타냄

=> 동작코드는 CPU 가 실제로 실행할 수 있는 연산들을 나

타내는 부분 .

*n 비트 = 2ⁿ

명령어 형식

동작코드 피연산자 (#1)피연산자 (#2)

Page 10: CPU 와  Register

명령어 동작 코드동작코드 기 능

ADD

MUL

DIV

LD

덧셈

뺄셈

곱셈

나눗셈

SUB

STO

기억장치로부터 레지스터로 데이터 적재

기억장치에 데이터 저장

Page 11: CPU 와  Register

0- 주소 형식- 데이터의 주소를 지정할 필요가 없고 연산자만

나타내면 된다 . 스택 구조를 가진 컴퓨터에서 사용되는 명령 형식이다 .

- PUSH : 스택에 데이터를 하나씩 삽입하는 것 .- POP : 스택의 top 에 저장된 데이터를 삭제하는 것 . => 수식 계산을 하기 위해서는 수식을 postfix 형태로

바꾸어야 한다 .

Postfix : A B +ADD : (SP+1)←(SP)+(SP+1) ( 스택 주소 지정 생략 )

명령어 형식

Page 12: CPU 와  Register

1- 주소 명령어 형식- 누산기 (Accumulator) 에서 사용되는 명령어 구조 .- 하나의 입력 데이터의 주소를 생략 할 수 있다 .- 연산 결과도 항상 누산기에 기억하도록 하여 연산결과의

주소를 지정할 필요가 없다 .

ADD Y : X ← X + Y

명령어 형식

동작코드 피연산자

ADD Y

Page 13: CPU 와  Register

2- 주소 명령어 형식- 연산 후에 입력 데이터를 저장할 필요가 없고 연산 결과를

두개의 입력 데이터가 기억되어 있던 장소 중에 하나에 기억시킬 수 있다 .

- 장점 : 3 주소 명령에 비해 명령어의 길이가 짧고 , 계산 결과가 기억장치에 기억되고 중앙처리장치에도 남아 있어서 계산 결과를 시험할 필요가 있을 때 시간이 절약된다 .

- 단점 : 연산의 결과는 주로 Operand 1 에 저장되므로 Op-erand 1 에 있던 원래의 자료가 파괴된다 . 전체 프로그램의 길이가 길어진다 .

ADD Y, X : Y ←X + Y(X,Y 2- 주소지정 )

명령어 형식

동작코드 (OP) 피연산자 (#1) 피연산자 (#2)

ADD X Y

Page 14: CPU 와  Register

3- 주소 명령어 형식- 컴퓨터의 연산에 필요한 두 피연산자와 결과의 저장

장소가 모두 상이할 경우 별도의 3- 주소를 모두 명령어에서 지정하는 형식 .

- 장점 : 연산 결과를 따로 저장하는 곳이 있기 때문에 연산후에도 입력 자료가 변하지 않고 보존되며 프로그램 크기가 줄어든다 .

- 단점 : 최소한 4 번 이상 메모리에 접근을 해야 하며 기억장치의 대역폭 (Bandwidth) 이 감소되며 명령어 처리 속도가 느리고 프로그램 작성이 불편하다 .

명령어 형식

동작 코드 (OP)피연산자 (#1)피연산자 (#2)피연산자 (#3)

ADD X Y Z

Page 15: CPU 와  Register

데이터 전송 명령어 : 내용의 변경 없이 한 장소에서 다른 장소로 데이터를 옮기기만 하는 명령 . 기억 및 입출력 기능을 갖고 있다 . Load, Store, Move 명령 , Exchange, Input, Output, Push, Pop 의 명령이 있다 .

데이터 처리 명령어 : 모든 컴퓨터 동작의 주체로 연산 기능을 가지며 4 칙 연산 및 증감 , 산술 명령과 논리연산 및 비트처리 명령 , 시프트 명령이 있다 .

프로그램 제어 명령어 : 프로그램 카운터의 값을 변경할 수 있는 제어 기능을 가진다 . Skip 명령 , 서브루틴명령 , 비교명령 , 테스트 명령이 있다 .

명령어 종류

Page 16: CPU 와  Register

명령어 주소 지정 방식

명령어 주소 지정 방식은 피연산자가 저장된 장소의 주소를 지정하는 방법에 따라 여러 경우로 나뉜다 .

명령어 주소 지정방식을 사용하는 이유- 포인터 , 카운터 인덱싱 , 프로그램 재배치 등의

편리함을 사용자에게 제공함으로써 프로그래밍을 하는데 도움을 준다

- 명령어의 주소 부분의 비트를 줄일 수 있다 .- 다양한 주소 지정 기법을 사용하여 숙련된 프로그래머는

명령어의 개수나 수행 시간을 절약하여 효율적인 프로그램 작성이 가능하다 .

Page 17: CPU 와  Register

주소 지정 방식 중에서 가장 간단한 형태의 하나로 오퍼랜드는 실질적으로 명령어 내에 포함하고 있다 .

상수로 취급하면서 변수의 초기 값을 설정하는 경우에 이용할 수 있다 .

장점 : 오퍼랜드를 위해 추가로 기억장치를 접근할 필요가 없어 기억 사이클 하나를 줄일 수 있다 .

단점 : 주소 필드 내에 피연산자를 두기 때문에 워드 길이에 비해 그 크기가 작아서 데이터를 표현할 길이가 짧다 .

즉시 주소 지정 방식

동작 코드 실제 데이터

ADD n : X ← X+n

Page 18: CPU 와  Register

피연산자 내의 주소가 실제 데이터의 주소 ( 물리주소 )로 직접 매핑이 이루어진다 .

장점 : 기억장치 상의 주소와 프로그램 상의주소가 일치해야 해서 간결하다

단점 : 융통성이 부족하다 .

직접 주소 지정 방식

OP code Address (nn)

실제 데이터 500

1st

if nn = 100

Memoryoperand

Page 19: CPU 와  Register

직접 주소 방식의 문제점을 해결한 것으로 주소 필드가 기억장치의 한 워드를 가리키도록 하고 그 워드의 내용이 피연산자의 주소가 되도록 하면 워드 크기만큼의 주소 필드를 갖는 효과가 있다 .

2 번에 걸쳐 메모리를 참조하는 특징이 있다 .

간접 주소 지정 방식

I OP code Address (nn)

(mm) → 500

실제데이터(700)

1stif nn =

Memoryoperand

I=0 : 직접주소방식I=1 : 간접주소방식

Page 20: CPU 와  Register

장점 : 메모리를 임의로 사용한다거나 프로그램상의 융통성을 발휘할 수 있다 .

단점 : 명령어를 수행하기 위해서 피연산자를 인출하는데 두번 기억장치를 참조해야 되는 레벨 2 가 필요하다 .

간접 주소 지정 방식

Page 21: CPU 와  Register

CPU 내의 레지스터가 명령어에 따라 지정되는 방식 . 특징 : 해당 레지스터에 실제 데이터가 기억되어

있으므로 직접 주소 지정 방식과 유사하나 주소 필드가 참조하는 것은 기억장치가 아니라 레지스터라는 점이 차이점이다 .

장점 : 기억장치를 참조할 필요가 없고 레지스터의 접근 시간이 빠르다 . 메모리를 절약할 수 있다 .

단점 : 메모리워드는 다른 주소 지정방식에 비해 훨씬 줄어들지만 주소 지정이 가능한 공간이 적다는 것이다 .

레지스터 주소 지정방식

OP code Address R 실제 데이터Register

Page 22: CPU 와  Register

피연산자가 레지스터를 지정하고 다시 그 레지스터의 값이 실제 데이터가 저장되어 있는 기억장소 .

장점 : 데이터가 표 형식으로 연속된 경우에는 편리하다 .

단점 : 데이터가 불규칙한 불연속인 경우에는 매우 불편하다는 것이다 .

레지스터 간접 주소 지정 방식

OP code(RR)

nn 700

실제 데이터(1500)

nn500

주소

Memory

700

Page 23: CPU 와  Register

상대 주소지정방식

유효주소 (Effective Address)=PC+ 명령어 주소

Ex)PC=845, 명령어 주소 =24인출주기 동안 845 의 명령어가 읽혀짐 ->PC=846-> 유효주소 =846+24=840

=> 읽어온 명령을 수행하는데 실제자료는 840 번지에 저장되어 있음

Page 24: CPU 와  Register

인덱스 레지스터 주소지정방식

유효주소 (Effective Ad-dress)= 인덱스 레지스터 +명령어주소

=> 명령어 주소 = 데이터 배 열의 시작 주소

=> 인덱스 레지스터 =유효주 소로부터 상대적인 위치

Page 25: CPU 와  Register

베이스 레지스터 주소지정방식

유효주소 (Effective Ad-dress)=베이스 레지스터 + 명령어주소

=> 명령어 주소 =베이스 레지스터 로부터 상대적인 위치

=>베이스 레지스터 =베이스 주소

Page 26: CPU 와  Register

배열 사용 예

베이스 레지스터 + 인덱스 레지스터 => 배열처럼 사용 가능 -> 메모리 참조

=> 인덱스 레지스터 : 배열의 첨자 , 베이스 레지스터 : 처음주소

Page 27: CPU 와  Register

스택 주소지정방식

-SP( 스택의 가장 맨 위의 주소 )

-PUSH 연산Data 를 삽입 -> SP++-POP 연산Data 를 삭제 ->SP--

=> 주소를 따로 명시할 필요 X (0- 주소 명령어 )

Page 28: CPU 와  Register

-완전 주소 정보가 데이터이거나 주소이거나 구별 없이 기억된 장소 -> 직접 매핑 (mapping) 시킬 수 있는 주소

- 약식주소 주소의 일부분을 생략

- 생략주소 주소를 구체적으로 나타내지 않아도 원하는 정보가 기억

된곳을 알 수 있는 경우에 사용 -> 명령어 길이 단축 ex) 누산기 하나인 경우에 따로 지정할 필요없음

데이터 주소지정방식

Page 29: CPU 와  Register

- 의미 :CPU 내에서 자료를 1bit(1 또는 0) 으로 보관하는 가장 빠른 기억장치

=> 한 순간이라도 기억 못 하면 데이터 손실

=>CPU 가 명령을 이해하고 명령에 필요한 변수를 읽고 저장공간의 주소를 알기 위해 필요

=> 연산속도향상 ( 연산결과를 주 기억 장치가 아닌 레지스터에 저장 하므로 )

레지스터 (Register)

Page 30: CPU 와  Register

레지스터의 구성 = 명령어 레지스터 (Operand Register)+데이터 레지스터 (Data Register)

Page 31: CPU 와  Register

레지스터의 종류=>CPU는 레지스터의 집합체

Page 32: CPU 와  Register

범용 레지스터 (General Purpose Reg-ister)

- 의미 : 데이터와 주소를 모두 저장

1)AX 레지스터 (Accumulator) 주로 곱셈 , 나눗셈 , 자료의 입출력

2)BX 레지스터 (Base) 주로 포인터의 역할

3)CX 레지스터 (Count) 주로 반복 문에서 카운터 역할

4)DX 레지스터 (Data) 주로 곱셈 , 나눗셈에서 큰수표현

*EAX(32bit)

Page 33: CPU 와  Register

포인터 레지스터 (Pointer Regis-ter) - 의미 : 특정주소를 가리키는 레지스터 -IP(Instruction Pointer, PC(Program Counter))

수행할 다음 명령어가 저장되어있는 주소를 가리킴 =>흐름제어 명령 , 인터럽트 , 예외 등을 통하여 암시적으로 제어 됨 ( 직접 접근 불가 )

=>CPU 는 프로그램카운터값을 읽어 메모리에서 명령어 실행

=> 하나의 명령을 처리 후 자동으로 그 명령어길이 ( 워드

개수 ) 만큼 IP 를 증가 시킴 (IP++)

Page 34: CPU 와  Register

명령어 레지스터 (Instruction Register)

- 의미 : 현재 실행 중인 명령어를 저장하는 레지스터=> 프로그램 카운터가 지정하고 있는 주 기억 장치의 주소에 있는 명령어를 명령어 레지스터로 옮김-> 명령어 해독기가 명령어 레지스터에 있는 명령어 해독

* 명령 해독기 (Instruction Decoder):현재 수행해야 할 명령을 해독한 후 가능한 여러 가지 제어 신호를 발생

=>OP: 연산 , 분기 등을 저장 , operand: 주소 값 * 명령어

Page 35: CPU 와  Register

분기문에서 프로그램 카운터 변동

* 소스

=>IP 가 주소 004 를 지정 -> 비교 후 ->006 를 지정(+2 증가 )

Page 36: CPU 와  Register

메모리 버퍼 레지스터

- 메모리버퍼 레지스터 (MBR:Memory Buffer Register) 메모리 주소 레지스터 (MAR) 를 저장

* 메모리주소 레지스터 (MAR:Memory Address Register) 실행에 필요한 프로그램 , 데이터가 저장되어 있는 주기억 장치주소 ( 유효 메모리 번지 : Effective Memory Ad-dress)

를 저장 => 실질적으로 CPU 가 주기억장치주소를 참조하는 레지스터

Page 37: CPU 와  Register

Memory 와 data 교환

Page 38: CPU 와  Register

Memory 와 data 교환-Fetch1. 명령어가 주기억장치에 로드2.PC 가 가리키는 메모리 주소가 IR 에 저장 ->PC1 증가-decode3. 명령해독기 (Instruction decoder) 가 해독가능한 신호로 바꿔줌-execute4. 참조할 data 들은 MAR 에 저장되어있어 , CPU 가 MAR를 참조함5.ALU 가 산술연산을 하며 , 그 중간결과를 register(ACC: Accumulator) 에 저장 또는 regis-ter(ACC: Accumulator) 로부터 data 를 읽어옴 .

Page 39: CPU 와  Register

인덱스 레지스터 (Index Regis-ter)- 의미 : 여러 개의 메모리 블록 이동 , 한꺼번에 지정-> 자료를 빠르게 찾을 수 있음 .

-SI(Source Index): Data 의 시작지-DI(Destination Index): Data 의 목적지

=> 두 레지스터의 주소를 설정 -> 메모리 이동 , 복사명령->

Data 이동 , 복사 가능

* 인덱스 레지스터

Page 40: CPU 와  Register

세그먼트 레지스터 (Segment Regis-ter) Segment: 프로그램의 크기가

주기억장치보다 클 때 프로그램을 한 묶음으로 쪼갠 영역 (64KB)=> 이 레지스터에 서로 다른 세그먼트들이 겹치지 않기 위해 시작주소들을 보관

-Code Segment: 프로그램의 명령어가 시작되는 곳 (IP)-Data Segment: Data 저장영역의 시작주소 (BP)-Stack Segment: 스택 영역의 시작주소 (SP)-Extra Segment: 추가로 사용되는 데이터 영역 주소

Page 41: CPU 와  Register

스택 레지스터 (Stack Regis-ter)- 의미 : 스택 및 데이터 메모리를 관리하는 레지스터

-SP(Stack Pointer) 스택의 최상위 주소를 저장 =>POP, PUSH 연산에 의해 증감 => 한 프로그램 안에서 수시로 변동

-BP(Base Pointer) 주소를 간접지정 하는데 사용 =>ex) 배열크기 =50, BP

가 주소 500 를 지정 -> 주소 500~549 으로 값 지정

Page 42: CPU 와  Register

상태 레지스터 (Flag Regis-ter)- 의미 : 연산의 상태를 저장하고 있는 레지스터

=>7- 부호 플래그 (Sign Flag): 산술 연산의 결과에 대한 부 호 (음수 ->1) 3- 제로 플래그 (Zero Flag): 연산의 결과가 0 의 여부(0->1) B- 오버 플래그 (Over Flag): 기억장소의 표현범위 초과 여 부 ( 초과 ->1) 0-캐리 플래그 (Carry Flag): 연산 후 자리올림 , 자리내림 여부 ( 자리올림 , 내림 ->1) …등등

Page 43: CPU 와  Register

적용 예

Ex) x<y( 비교 ->뺄셈 ) x-y>0(x 가 더 큼 ) x-y=0(같은 수 ) x-y<0(y 가 더 큼 )

=> 비교연산 결과를 레지스터의 세 비트로 저장

=>플래그 레지스터 값 참조-> 비교연산 실행