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
3 장
MPU 내부구조
Slide 1 (of 28)
마 이 크 로 프 로 세 서 의 내 부 구 조 에 대 하 여 요 소 별
동작원리를 공부한다 .
이번 시간에는 ...
“MPU 내부구조”에 대해 알아보겠습니다 .
학습개요학습개요
학 습 목 표학 습 목 표
• 마이크로프로세서 구조마이크로프로세서 구조• 범용레지스터• 연산장치• 제어장치
학 습 목 차학 습 목 차학 습 목 차학 습 목 차
Slide 2 (of 28)
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)
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)
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)
MPU 내부 구조
3) 인텔 8085 내부구조
Slide 6 (of 28)
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)
MPU 내부 구조
5) 연산장치 (AU : Arithmetic Unit) • 연 산 장 치 는 아 래 그 림 과 같 이 산 술 연 산 , 논 리 연 산 , 보 수 기 , 시 프 트 레 지 스 터 , 상태레지스터들로구성되어 있다 . 연산장치의 좌측에는 Acc( 누산기 ) 가 연결되어 연산 결과는 반드시 Acc 에 저장되도록 설계되어 있다 .
ALUFlag register
Acc Temp register
8/ 8/
8/
8/ 8/
8/
산술연산회로
논리연산회로
보수기
시프트레지스터
Slide 8 (of 28)
• 산술 연산 회로 : 산술 연산인 + , - , ×, ÷ 을 수행하는 연산회로이다 .
• 논리 연산 회로 : 논리 연산인 AND, OR, XOR, NOT 을 수행하는 연산 회로이다 .
• 시프트 레지스터 (shift register) : 비트들을 좌측 혹은 우측으로 이동시키는 기능을 가진
레지스터이다 .
• 보수기 (complement) : 2 진 데이터를 보수를 취하는 회로이다 .
• 상태 레지스터 (status register) : 연산 결과의 상태를 나타내는 플래그 (flag) 들을 저장하는
레지스터이다 .
MPU 내부 구조
5) 연산장치 (AU : Arithmetic Unit)
• 연산장치의 기능들은 아래와 같다 .
Slide 9 (of 28)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
◇ 산술연산 ( 가산 ) 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)
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)
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)
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)
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)
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)
최 상위 비트 (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)
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)