28
3장 MPU 장장장장 Slide 1 (of 28)

3 장 MPU 내부구조

  • Upload
    dot

  • View
    154

  • Download
    0

Embed Size (px)

DESCRIPTION

3 장 MPU 내부구조. 학습개요. 이번 시간에는 ... “ MPU 내부구조 ” 에 대해 알아보겠습니다. 학 습 목 표. 마이크로프로세서의 내부 구조에 대하여 요소 별 동작원리를 공부한다. 학 습 목 차. 마이크로프로세서 구조 범용레지스터 연산장치 제어장치. MPU 내부 구조. 1) Z-80 마이크로프로세서 내부구조. MPU 는 기본적으로 연산장치 (ALU), 제어장치 (control), 레지스터 (register) 로 구성된다 . - PowerPoint PPT Presentation

Citation preview

Page 1: 3 장 MPU  내부구조

3 장

MPU 내부구조

Slide 1 (of 28)

Page 2: 3 장 MPU  내부구조

마 이 크 로 프 로 세 서 의 내 부 구 조 에 대 하 여 요 소 별

동작원리를 공부한다 .

이번 시간에는 ...

“MPU 내부구조”에 대해 알아보겠습니다 .

학습개요학습개요

학 습 목 표학 습 목 표

• 마이크로프로세서 구조마이크로프로세서 구조• 범용레지스터• 연산장치• 제어장치

학 습 목 차학 습 목 차학 습 목 차학 습 목 차

Slide 2 (of 28)

Page 3: 3 장 MPU  내부구조

MPU 내부 구조

1) Z-80 마이크로프로세서 내부구조

ALU

Control Unit

Data Bus

Internal BusA

cc

X

Y

IR

Control Bus

MA

R

Address Bus

PC

• MPU 는 기본적으로 연산장치 (ALU), 제어장치 (control), 레지스터 (register) 로 구성된다 .• 레지스터는 누산기 (Acc), 프로그램 카운터 (PC), 메모리 어드레스 레지스터 (MAR), 명령어 레지스터 (IR) 들로 구성되어 있다 . • MPU 외부로 어드레스 버스 , 데이터 버스 , 제어 버스들이 나와 있다 .

Slide 3 (of 28)

Page 4: 3 장 MPU  내부구조

MPU 내부 구조

2) Z-80 Microprocessor(MPU)

• Z-80 MPU 의 외부 형태는 아래 그림과 같이 Address Bus. Data Bus, Control Bus 들로 구성된다 .

U?

Z80-CPU

303132333435363738394012345

1415128791013

27

19202221

28

18

24

1617

26

2523

6

A0A1A2A3A4A5A6A7A8A9

A10A11A12A13A14A15

D0D1D2D3D4D5D6D7

M1

MREQIORQWRRD

REFSH

HALT

WAIT

INTNMI

RESET

BUSRQBUSAK

CLK

Slide 4 (of 28)

Page 5: 3 장 MPU  내부구조

MPU 내부 구조

3) Z-80 Microprocessor 내부구조

• Z-80 MPU 의 내부 구조는 아래 그림과 같이 범용레지스터 (general purpose register), 특수레지스터 (special purpose register), 누산기 (accumulator), 연산장치 (arithmetic unit), 제어장치 (control unit) 로 구성되어 있으며 제어장치는 명령어레지스터 (instruction register) 와 해석기 (decoder) 로 구성되어 있다 .이들 장치들간의 데이터 전달은 Address Bus. Data Bus, Control Bus 에 의해 전달된다 .

General purposeRegister

Special purposeRegister(PC,SP)

ALU

ControlAccumulator

External Address Bus External Data Bus

Internal Bus

IR

DecoderControlLogic

External Control Signal

Internal Control Signal

Slide 5 (of 28)

Page 6: 3 장 MPU  내부구조

MPU 내부 구조

3) 인텔 8085 내부구조

Slide 6 (of 28)

Page 7: 3 장 MPU  내부구조

MPU 내부 구조

4) 범용 레지스터 (General Purpose Register)

main register alternate register

쌍으로 사용할 때16bit 로 동작

8bit

16bit

H’ L’

A’

D’ E’

B’ C’

8bit

• Z-80 MPU 의 범용레지스터는 각각 8 비트 레지스터로 구성되며 A 레지스터는 누산기이며 B, C, D, E, H, L 레지스터들로 구성된다 . 16 비트로 사용할 때에는 BC, DE, HL 로 묶어서 사용한다 . 그리고 Z-80 에서는 주 레지스터 (main register), 보조 레지스터 (alternate register) 를 가지고 있다 .

8bit

16bit

H L

A

D E

B C

8bit

Accumulator

Slide 7 (of 28)

Page 8: 3 장 MPU  내부구조

MPU 내부 구조

5) 연산장치 (AU : Arithmetic Unit) • 연 산 장 치 는 아 래 그 림 과 같 이 산 술 연 산 , 논 리 연 산 , 보 수 기 , 시 프 트 레 지 스 터 , 상태레지스터들로구성되어 있다 . 연산장치의 좌측에는 Acc( 누산기 ) 가 연결되어 연산 결과는 반드시 Acc 에 저장되도록 설계되어 있다 .

ALUFlag register

Acc Temp register

8/ 8/

8/

8/ 8/

8/

산술연산회로

논리연산회로

보수기

시프트레지스터

Slide 8 (of 28)

Page 9: 3 장 MPU  내부구조

• 산술 연산 회로 : 산술 연산인 + , - , ×, ÷ 을 수행하는 연산회로이다 .

• 논리 연산 회로 : 논리 연산인 AND, OR, XOR, NOT 을 수행하는 연산 회로이다 .

• 시프트 레지스터 (shift register) : 비트들을 좌측 혹은 우측으로 이동시키는 기능을 가진

레지스터이다 .

• 보수기 (complement) : 2 진 데이터를 보수를 취하는 회로이다 .

• 상태 레지스터 (status register) : 연산 결과의 상태를 나타내는 플래그 (flag) 들을 저장하는

레지스터이다 .

MPU 내부 구조

5) 연산장치 (AU : Arithmetic Unit)

• 연산장치의 기능들은 아래와 같다 .

Slide 9 (of 28)

Page 10: 3 장 MPU  내부구조

MPU 내부 구조

6) 특수레지스터 (Special Purpose Register)

• Z-80 MPU 의 특수 레지스터는 아래 그림과 같이 구성되어 있으며 , 각각의 특수한 기능들을 가지고 있다 .

8bit

16bit

PC

상태 레지스터 (Flag Register)

인터럽트 레지스터 (Interrupt Register)

리플레쉬 레지스터 (Refresh Register)

지표 레지스터 IX(Index Register IX)

지표 레지스터 IY(Index Register IY)

스텍 포인터 (Stack Pointer)

프로그램 카운터 (Program Counter)

SP

IY

IX

R

I

F

Slide 10 (of 28)

Page 11: 3 장 MPU  내부구조

MPU 내부 구조

6) 특수레지스터 (Special Purpose Register)

• 프로그램 카운터는 현재 읽어 올 ( 혹은 써넣을 ) 데이터가 들어있는 메모리 ( 혹은 입출력장치 ) 의 번지를 지정해 주는 포인터 이다 . PC 의 기본적인 동작과정은 아래와 같다 .

( 1) Program counter (PC)

Program counter MemoryAddress Bus(16Bit)

16Bit

216 =64K Byte

16 Bit

CPU

AU

(Ad

dre

ss

Bu

ffer)

지정할 메모리 주소 데이터

16 /

Load 제어

Increment 제어

① 현재 CPU 로 읽어 올 memory 지정② memory 내용을 읽어 온 후 자동 increment 하여 다음 실행할 번지를 미리 지정 ③ 8Bit CPU 의 PC 는 16Bit 로 구성된다

Slide 11 (of 28)

Page 12: 3 장 MPU  내부구조

MPU 내부 구조

6) 특수레지스터 (Special Purpose Register)

• 8000H 번지부터 저장되어 있는 프로그램을 읽어오는 과정

Program counter 동작 예 1)

① RUN 8000H 명령어에 의해 PC 에 8000H 를 로드 한다 (load 기능 ).

② PC 에 로드 된 8000H 는 메모리 8000H 번지를 지정한다 ( 메모리 지정 기능 ).

③ 지정된 메모리의 내용 “ 3EH" 가 메모리에서 읽혀져 나오면서 PC 는 다음 번지를 지정하기 위해 자동 1 증가 하여 8001H 가 된다 (1 증가 기능 )

3E

33

06

02

8000H

8001H

8002H

8003H

memory

8000H

PCLD A,33H

(A←33H)

LD B, 02H

(B←02H)

① RUN 8000H

Load 신호8000H

② PC 에 로드 된 8000H 는 메모리 8000H 번지지정

3E

33

06

02

8000H

8001H

8002H

8003H

memory

8001H

PCLD A,33H

(A←33H)

LD B, 02H

(B←02H)

③ PC 는 다음 번지를 지정하기 위해 자동 1 증가 하여 8001H 가 된다

Increment

Slide 12 (of 28)

Page 13: 3 장 MPU  내부구조

MPU 내부 구조

6) 특수레지스터 (Special Purpose Register)

• JUMP 명령어에 의한 Jump address load : JUMP 5000H (5000H 번지로 점프 )

Program counter 동작 예 2)

5000H

PC

① JUMP 5000H

Load 신호 5000H

• Subroutine Call 에 의한 subroutine 시작번지 load

Program counter 동작 예 3)

3000H

PC

① CALL 3000H

Load 신호

CD

00

30

8000H

8001H

8002H

8003H

memory

CALL 3000H

Slide 13 (of 28)

Page 14: 3 장 MPU  내부구조

MPU 내부 구조

6) 특수레지스터 (Special Purpose Register)

• 스텍 포인터는 16 비트 특수 레지스터로서 레지스터 내용을 일시적으로 피신시켜두는 기능을 가지고 있으며 아래와 같다 .

(2) 스텍 포인터 (SP : Stack Pointer)

Stack Pointer

16bit

Memory

① Register 내용 (Data) 을 일시 피신 시키는 기능② LIFO(Last Input First Out) 구조③ Pointer 는 감소하는 방향으로 지정④ Subroutine CALL 명령어에 의해 자동 PC 피신 , 복구 실행⑤ Interrupt 에 의한 PC 내용 자동 피신 , 복구 실행⑥ PUSH, POP 명령어에 의해 수동 Data 피신 복구 실행

CPU Stack 영역

( 데이터가 피신되는 메모리

영역 )

Stack Pointer

( 피신될 데이터 번지를 지정하는 기

능 )

레지스터

피신

Slide 14 (of 28)

Page 15: 3 장 MPU  내부구조

MPU 내부 구조

6) 특수레지스터 (Special Purpose Register)

• 스텍 포인터는 LIFO (Last In First Out) : 마지막에 입력된 데이터가 먼저 출력되는 구조 ) 구조로 되어 있다 .• 스텍 포인터는 감소하는 방향으로 메모리를 지정한다 .

Stack Pointer

FEFC

FEFD

FEFE

FFFFDATA 1

DATA 2

DATA 3

Stack Pointer

FEFC

FEFD

FEFE

FFFFDATA 1

DATA 2

DATA 3

Slide 15 (of 28)

Page 16: 3 장 MPU  내부구조

MPU 내부 구조

6) 특수레지스터 (Special Purpose Register)

① 초 기 에 SP 는 FF00H 번지로 지정한다 .

예 ) BC,DE 레지스터의 내용을 PUSH, POP 명령어로 SP 에 피신하였다가 복구하는 과정

SP 초기위치

Memory(stack 영역 )

FF00HSP

12 34

56 78

9A BC

AF

BC

DE

CPUFF00H

FEFFH

FEFEH

FEFDH

FEFCH

FEFBH

② PUSH BC

SP 초기위치

Memory(stack 영역 )

FEFEHSP

12 34

56 78

9A BC

AF

BC

DE

CPU

56

78

FF00H

FEFFH

FEFEH

FEFDH

FEFCH

FEFBH

Slide 16 (of 28)

Page 17: 3 장 MPU  내부구조

MPU 내부 구조

6) 특수레지스터 (Special Purpose Register)

③ PUSH DESP 초기위치

Memory(stack 영역 )

FEFCHSP

12 34

56 78

9A BC

AF

BC

DE

CPU

56

78

9A

BC

FF00H

FEFFH

FEFEH

FEFDH

FEFCH

FEFBH

④ POP DE

SP 초기위치

Memory(stack 영역 )

FEFEHSP

12 34

9A BC

AF

BC

DE

CPU

56

78

FF00H

FEFFH

FEFEH

FEFDH

FEFCH

FEFBH

Slide 17 (of 28)

Page 18: 3 장 MPU  내부구조

MPU 내부 구조

6) 특수레지스터 (Special Purpose Register)

⑤ POP BCSP 초기위치

Memory(stack 영역 )

FF00HSP

12 34

56 78

9A BC

AF

BC

DE

CPUFF00H

FEFFH

FEFEH

FEFDH

FEFCH

FEFBH

Slide 18 (of 28)

Page 19: 3 장 MPU  내부구조

ex) 현재 IX 레지스터에 9000H 가 저장되어 있을 때에 LD A,(IX + 3) : 명령어를 실행하면 아래 그림과 같이 9003H 번지에 저장되어 있는 78H 가 Acc에 전송되다

16bit

IX

IY

MPU 내부 구조

6) 특수레지스터 (Special Purpose Register)

• 자신의 address 값을 지표로 삼아서 변위를 가산하여 유효번지를 구성한 후 처리하는 레지스터 • 16bit Index register IX, IY

(3) 지표 레지스터 (Index Register)

IX(9000H) + 3H = 9003H

Memory

9000HIX

78AF

BC

DE

CPU12

34

56

78

9A

BC

9000H

9001H

9002H

9003H

9004H

9005H⊕

Index 값 + 변위 값 = 유효 번지 (effective address)

Slide 19 (of 28)

Page 20: 3 장 MPU  내부구조

Carry( 자리올림 발생시 )

Add/Subtract( 가산 :0, 감산 :1)

Parity/Overflow

Half carry(nibble 연산 자리올림 )

Zero( 결과 0:1, not zero : 0

Sign( 결과 +:0, -:1)

ALUFlag register

MPU 내부 구조

6) 특수레지스터 (Special Purpose Register)

• 상태 레지스터는 현재 연산장치에서 연산 결과 상태를 표시해주는 레지스터이다 .• 상태 레지스터는 8 비트 레지스터로 아래 그림과 같은 기능들을 가지고 있다 .

(4) 상태 레지스터 (Status register or Flag register)

S Z X H X P/V N C

B7 B6 B5 B4 B3 B2 B1 B0

Slide 20 (of 28)

Page 21: 3 장 MPU  내부구조

◇ 산술연산 ( 가산 ) ADD A,B A← A + B

◇ 산술연산 ( 감산 ) SUB A,B A← A- B

논리 연산 후에는 항상 0 으로 set 된다 .

MPU 내부 구조

6) 특수레지스터 (Special Purpose Register)

① Carry bit : ALU 에서 연산결과 carry 가 발생하면 1 로 set carry 가 없으면 0 으로 세트 된다 .

S Z X H X P/V N C

1111 1001 (F9H) Acc

+ 0001 0100 (14H) + B

Carry

1← 0000 1101 (1 0DH) Acc

0010 1001

(29H) Acc

- 0011 0100

(44H) - B

Carry 1→ 1101 0101

(D5H) Acc

Slide 21 (of 28)

Page 22: 3 장 MPU  내부구조

ADD operation 0SUB operation 1

(3) Parity/Overflow

MPU 내부 구조

6) 특수레지스터 (Special Purpose Register)

② Add/Subtract bit: 가산 명령어 후에 “0” 으로 세트 , 감산 명령어 실행 후에는 “1” 로 세트 된다

S Z X H X P/V N C

③ Parity/Overflow bit: 산술연산 (ADD, SUB 등 ) 명령어를 실행하면 Overflow bit 로 동작 논리연산 (AND, OR 등 ) 명령어 실행 후 Parity bit 로 동작

S Z X H X P/V N C

( 가 ) Overflow 발생조건 : Overflow 발생조건은 두 수의 부화 같을 때 가산 후 결과의 부호가 다르면 Overflow 가 발생한 것으로 처리된다 . 감산 (SUB) 명령 후에는 절대로 over flow 가 발생하지 않는다 .

(+) (-)

+ (+) + (-)

Overflow 발생 (-) Overflow 발생 (+)

Slide 22 (of 28)

Page 23: 3 장 MPU  내부구조

As( 가수 부호비트 )

Bs(피가수

부호비트 )Cout

Cn+1( 캐리비트 )

V(오버플로우비

트 )비고

0 0 0 0 0 양수 + 양수 = 양수

0 0 1 0 1 양수 + 양수 = 음수

0 1 0 0 0양수 + 음수 = 양수

(A>B)

0 1 1 1 0양수 + 양수 = 음수

(A<B)

1 0 0 0 0음수 + 양수 = 양수

(A<B)

1 0 1 1 0음수 + 양수 = 음수

(A>B)

1 1 0 1 1 음수 + 음수 = 양수

1 1 1 1 0 음수 + 음수 = 음수

FA(Ss)

VAs

Bs

Cn

Cn+1

Cout

MPU 내부 구조

6) 특수레지스터 (Special Purpose Register)

Overflow 검출회로

Slide 23 (of 28)

Page 24: 3 장 MPU  내부구조

MPU 내부 구조

6) 특수레지스터 (Special Purpose Register)

0 111 0100

(+74H)

+ 0 010 0100

(+24H)

Overflow 발생

1 001 1000

(-18H)

0 000 0000 0111 0100 (+0074H)

+ 0 000 0000 0010 0100 (+0024H)

0 000 0000 1001 1000 (+0098H)

Overflow 발생 해결방법 : 자리 수를 늘려준다 .

( 나 ) Parity 발생조건 : Parity bit 는 컴퓨터들 간에 직렬 데이터 전송 시 정확하게 데이터를 전송하기 위한 방법으로 사용된다 .

만약 Odd parity 로 설정되어 있다면 논리연산 후에 Acc 의 내용에서 1 의 갯 수를 세어서 짝수이면 parity bit 를 “ 1” 로 set 하여 전체의 “ 1” 의 개수를 를 홀수로 만들어 준다 .

만약 Even parity 로 설정되어 있다면 논리연산 후에 Acc 의 내용에서 1 의 갯 수를 세어서 홀수이면 1

로 set 되어 전체를 짝수로 만들어 준다 .

Slide 24 (of 28)

Page 25: 3 장 MPU  내부구조

0110 0010

컴퓨터 A 컴퓨터 B

Even Parity로 세트 Even Parity로 세트

Data

1

Parity bit

0100 0010 1 1

DataParity

bit9bit 직렬전송

오류발생

1의 개수 : 3 + 1 = 4 1의 개수 : 2 + 1 = 3

P/V bit “1”로 set

◇ 직렬전송 시 오류발생 검출 방법 ⓐ 컴퓨터 A 에서 전송할 데이터에서 1 의 개수가 홀수이면 parity bit 를 “1” 로 세트하여 짝수 개로 만들어 준다 . 이것을 parity bit generator 락 한다 . ⓑ 직렬로 컴퓨터 B 에 전송한다 . ⓒ 컴퓨터 B 에서 전송된 데이터에서 “1” 의 개수가 짝수개 이면 정상적으로 전송된 것으로 보고 parity bit 는 “0” 이 된다 . ⓓ 만약 전송된 데이터에서 “1” 의 개수가 홀수개 이면 짝수로 맞추어주기 위해 parity bit 를 “1” 로 세트해주고 전송도중 오류가 발생하였음을 알려준다 . 이것을 parity bit detector( 검출기 ) 라 한다 .

MPU 내부 구조

6) 특수레지스터 (Special Purpose Register)

Slide 25 (of 28)

Page 26: 3 장 MPU  내부구조

MPU 내부 구조

6) 특수레지스터 (Special Purpose Register)

④ Half carry bit (nibble 연산 자리올림 ) : ALU 에서 연산결과 하위 4 비트 연산에서 자리올림수가 발생하면 H bit 가 “ 1” 로 세트 된다

S Z X H X P/V N C0001 1100 (1CH)

+ 0001 0100 (14H)

0011 0000 (30H)

⑤ Zero bit : ALU 에서 연산결과 zero 이면 Z bit 를 “1” 로 세트하고 아니면 “0” 으로 된다

S Z X H X P/V N C

0001 0100 (14H)

- 0001 0100 (14H)

0000 0000 (00H)

Z bit 는 “0” 이 된다Z bit 는 “1” 이 된다

0001 0100 (14H)

- 0000 0100 (04H)

0001 0000 (10H)

Not zero

Slide 26 (of 28)

Page 27: 3 장 MPU  내부구조

최 상위 비트 (MSB,(Sign bit))

연산결과 MSB 가 0 이면 양수 ,

음수이면 MSB 가 1 이 된다 .

MPU 내부 구조

6) 특수레지스터 (Special Purpose Register)

⑥ Sign bit : ALU 에서 연산결과 최 상위 비트가 “1” 이면 음수 , “0” 이면 양수가 된다 . 상태 레지스터의 최 상위 비트는 sign bit( 부호비트 ) 이다 .

S Z X H X P/V N C

0 001 1100 (1CH)

+ 0 001 0100 (14H)

0 011 0000 (30H)

Interrupt Vector Register 는 8bit register 로서 Page address 라고도 하며 , 주변장치의 주소를 지정해 주는 register 이다 .(Interrupt 에서 설명 )

Dynamic RAM 을 사용할 때 정보를 계속 유지하기 위해 계속해서 충전을 해야 한다 .

최소한 2ms 마다 한번씩 refresh 해야 한다 .( 메모리에서 설명 )

(5) Interrupt Vector Register

(6) Memory Refresh Register

Slide 27 (of 28)

Page 28: 3 장 MPU  내부구조

MPU 내부 구조

7) 제어장치 (Control Unit)

제어장치는 명령어 레지스터 (IR:Instruction Register) 와 명령어 해석기 (Decoder) 로 구성되어 있으며 memory 에 저장되어 있는 프로그램에서 명령어를 인출 (fetch) 해 와서 명령어를 해석한 다음 이에 해당되는 제어 신호들을 내보낸다 .

그림에서 IR(Instruction Register) 은 명령어를 fetch 해 와서 latch 하고 있는다 . Latch 된 명령어는 명령어 해석기로 보내져서 명령어를 해석한다 . 해석된 명령어는 내부 제어신호와 외부제어신호를 발생하여 실행한다 .

IR (Instruction Register)

명령어 해석기(DECODER)

BU

FF

ER

Internal Control Signal External Control

Signal

MPU

Slide 28 (of 28)