290 likes | 687 Views
3 장 MPU 내부구조. 학습개요. 이번 시간에는 ... “ MPU 내부구조 ” 에 대해 알아보겠습니다. 학 습 목 표. 마이크로프로세서의 내부 구조에 대하여 요소 별 동작원리를 공부한다. 학 습 목 차. 마이크로프로세서 구조 범용레지스터 연산장치 제어장치. MPU 내부 구조. 1) Z-80 마이크로프로세서 내부구조. MPU 는 기본적으로 연산장치 (ALU), 제어장치 (control), 레지스터 (register) 로 구성된다 .
E N D
3장 MPU 내부구조 Slide 1 (of 28)
학습개요 이번 시간에는... “MPU 내부구조”에 대해 알아보겠습니다. 학 습 목 표 마이크로프로세서의 내부 구조에 대하여 요소 별 동작원리를 공부한다. 학 습 목 차 • 마이크로프로세서 구조 • 범용레지스터 • 연산장치 • 제어장치 Slide 2 (of 28)
MPU 내부 구조 • 1) Z-80 마이크로프로세서 내부구조 • 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들로 구성된다. Slide 4 (of 28)
External Data Bus External Address Bus Internal Bus Control Accumulator General purpose Register IR Decoder Control Logic ALU Special purpose Register(PC,SP) External Control Signal Internal Control Signal 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에 의해 전달된다. Slide 5 (of 28)
MPU 내부 구조 • 3) 인텔 8085 내부구조 Slide 6 (of 28)
A’ A B’ B C’ C D’ D E’ E H’ H L L’ 8bit 8bit 8bit 8bit 16bit 16bit MPU 내부 구조 • 4) 범용 레지스터(General Purpose Register) • Z-80 MPU의 범용레지스터는 각각 8비트 레지스터로 구성되며 A레지스터는 누산기이며 B, C, D, E, H, L 레지스터들로 구성된다. 16비트로 사용할 때에는 BC, DE, HL로 묶어서 사용한다. 그리고 Z-80에서는 주 레지스터(main register), 보조 레지스터(alternate register)를 가지고 있다. alternate register main register Accumulator 쌍으로 사용할 때 16bit로 동작 Slide 7 (of 28)
8/ 8/ Acc Temp register 8/ 8/ Flag register 산술연산회로 ALU 8/ 논리연산회로 8/ 보수기 시프트레지스터 MPU 내부 구조 • 5) 연산장치(AU : Arithmetic Unit) • 연산장치는 아래 그림과 같이 산술연산, 논리연산, 보수기, 시프트레지스터, 상태레지스터들로 • 구성되어 있다. 연산장치의 좌측에는 Acc(누산기)가 연결되어 연산 결과는 반드시 Acc에 저장되도록 설계되어 있다. Slide 8 (of 28)
MPU 내부 구조 • 5) 연산장치(AU : Arithmetic Unit) • 연산장치의 기능들은 아래와 같다. • 산술 연산 회로 : 산술 연산인 +, -, ×, ÷을 수행하는 연산회로이다. • 논리 연산 회로 : 논리 연산인 AND, OR, XOR, NOT을 수행하는 연산 회로이다. • 시프트 레지스터(shift register) : 비트들을 좌측 혹은 우측으로 이동시키는 기능을 가진 레지스터이다. • 보수기(complement) : 2진 데이터를 보수를 취하는 회로이다. • 상태 레지스터(status register) : 연산 결과의 상태를 나타내는 플래그(flag)들을 저장하는 레지스터이다. Slide 9 (of 28)
MPU 내부 구조 • 6) 특수레지스터(Special Purpose Register) • Z-80 MPU의 특수 레지스터는 아래 그림과 같이 구성되어 있으며, 각각의 특수한 기능들을 가지고 있다. 8bit 상태 레지스터(Flag Register) 인터럽트 레지스터(Interrupt Register) 리플레쉬 레지스터(Refresh Register) 지표 레지스터 IX(Index Register IX) 지표 레지스터 IY(Index Register IY) 스텍 포인터(Stack Pointer) 프로그램 카운터(Program Counter) F I R IX IY SP PC 16bit Slide 10 (of 28)
CPU 16 Bit 16 / Memory Address Bus(16Bit) Program counter AU (Address Buffer) 16Bit 216 =64K Byte Load 제어 지정할 메모리 주소 데이터 Increment 제어 MPU 내부 구조 • 6) 특수레지스터(Special Purpose Register) (1) Program counter (PC) • 프로그램 카운터는 현재 읽어 올(혹은 써넣을) 데이터가 들어있는 메모리(혹은 입출력장치)의 번지를 지정해 주는 포인터 이다. PC의 기본적인 동작과정은 아래와 같다. ①현재 CPU로 읽어 올 memory 지정 ②memory 내용을 읽어 온 후 자동 increment 하여 다음 실행할 번지를 미리 지정 ③8Bit CPU의 PC는 16Bit로 구성된다 Slide 11 (of 28)
MPU 내부 구조 • 6) 특수레지스터(Special Purpose Register) Program counter 동작 예 1) • 8000H 번지부터 저장되어 있는 프로그램을 읽어오는 과정 ① RUN 8000H 명령어에 의해 PC에 8000H를 로드 한다(load 기능). ② PC에 로드 된 8000H는 메모리 8000H 번지를 지정한다( 메모리 지정 기능). ③ 지정된 메모리의 내용 “3EH" 가 메모리에서 읽혀져 나오면서 PC는 다음 번지를 지정하기 위해 자동 1 증가 하여 8001H가 된다(1 증가 기능) ② PC에 로드 된 8000H는 메모리 8000H 번지지정 ③ PC는 다음 번지를 지정하기 위해 자동 1 증가 하여 8001H가 된다 memory memory PC PC 8000H 8001H ① RUN 8000H Load 신호 8000H Increment Slide 12 (of 28)
MPU 내부 구조 • 6) 특수레지스터(Special Purpose Register) Program counter 동작 예 2) • JUMP명령어에 의한 Jump address load : JUMP 5000H (5000H 번지로 점프) PC 5000H ① JUMP 5000H Load 신호 5000H Program counter 동작 예 3) • Subroutine Call에 의한 subroutine 시작번지 load memory PC 3000H ① CALL 3000H Load 신호 Slide 13 (of 28)
MPU 내부 구조 • 6) 특수레지스터(Special Purpose Register) (2) 스텍 포인터(SP : Stack Pointer) • 스텍 포인터는 16비트 특수 레지스터로서 레지스터 내용을 일시적으로 피신시켜두는 기능을 가지고 있으며 아래와 같다. ① Register 내용(Data)을 일시 피신 시키는 기능 ②LIFO(Last Input First Out) 구조 ③Pointer는 감소하는 방향으로 지정 ④Subroutine CALL 명령어에 의해 자동 PC 피신, 복구 실행 ⑤Interrupt에 의한 PC 내용 자동 피신, 복구 실행 ⑥PUSH, POP 명령어에 의해 수동 Data 피신 복구 실행 Stack Pointer (피신될 데이터 번지를 지정하는 기능) Memory Stack 영역 (데이터가 피신되는 메모리 영역) CPU Stack Pointer 16bit 피신 레지스터 Slide 14 (of 28)
MPU 내부 구조 • 6) 특수레지스터(Special Purpose Register) • 스텍 포인터는 LIFO (Last In First Out) : 마지막에 입력된 데이터가 먼저 출력되는 구조)구조로 되어 있다. • 스텍 포인터는 감소하는 방향으로 메모리를 지정한다. DATA 3 DATA 3 DATA 2 FEFC FEFD FEFE FFFF FEFC FEFD FEFE FFFF DATA 2 Stack Pointer DATA 1 Stack Pointer DATA 1 Slide 15 (of 28)
MPU 내부 구조 • 6) 특수레지스터(Special Purpose Register) 예) BC,DE 레지스터의 내용을 PUSH, POP 명령어로 SP 에 피신하였다가 복구하는 과정 Memory(stack영역) ① 초기에 SP는 FF00H 번지로 지정한다. CPU SP초기위치 SP FF00H AF BC DE ② PUSH BC Memory(stack영역) CPU SP초기위치 SP FEFEH AF BC DE Slide 16 (of 28)
MPU 내부 구조 • 6) 특수레지스터(Special Purpose Register) Memory(stack영역) CPU ③ PUSH DE SP초기위치 SP FEFCH AF BC DE ④ POP DE Memory(stack영역) CPU SP초기위치 SP FEFEH AF BC DE Slide 17 (of 28)
MPU 내부 구조 • 6) 특수레지스터(Special Purpose Register) Memory(stack영역) CPU ⑤ POP BC SP초기위치 SP FF00H AF BC DE Slide 18 (of 28)
IX IY 16bit MPU 내부 구조 • 6) 특수레지스터(Special Purpose Register) (3) 지표 레지스터(Index Register) • 자신의 address 값을 지표로 삼아서 변위를 가산하여 • 유효번지를 구성한 후 처리하는 레지스터 • 16bit Index register IX, IY ex) 현재 IX레지스터에 9000H가 저장되어 있을 때에 LD A,(IX + 3) : 명령어를 실행하면 아래 그림과 같이 9003H번지에 저장되어 있는 78H가 Acc에 전송되다 Memory CPU AF BC DE ⊕ IX 9000H IX(9000H) + 3H = 9003H Index 값 + 변위 값 = 유효 번지(effective address) Slide 19 (of 28)
Flag register ALU S Z X H X P/V N C MPU 내부 구조 • 6) 특수레지스터(Special Purpose Register) (4) 상태 레지스터 (Status register or Flag register) • 상태 레지스터는 현재 연산장치에서 연산 결과 상태를 표시해주는 레지스터이다. • 상태 레지스터는 8비트 레지스터로 아래 그림과 같은 기능들을 가지고 있다. B7 B6 B5 B4 B3 B2 B1 B0 Carry(자리올림 발생시) Add/Subtract(가산:0, 감산:1) Parity/Overflow Half carry(nibble 연산 자리올림) Zero(결과 0:1, not zero : 0 Sign(결과 +:0, -:1) Slide 20 (of 28)
S Z X H X P/V N C MPU 내부 구조 • 6) 특수레지스터(Special Purpose Register) ① Carry bit : ALU에서 연산결과 carry가 발생하면 1로 set carry가 없으면 0 으로 세트 된다. ◇ 산술연산(가산) ADD A,B A← A + B ◇ 산술연산(감산) SUB A,B A← A- B 논리 연산 후에는 항상 0으로 set된다. Slide 21 (of 28)
S S Z Z X X H H X X P/V P/V N N C C MPU 내부 구조 • 6) 특수레지스터(Special Purpose Register) ② Add/Subtract bit: 가산 명령어 후에 “0”으로 세트, 감산 명령어 실행 후에는 “1”로 세트 된다 (3) Parity/Overflow ADD operation 0 SUB operation 1 ③ Parity/Overflow bit: 산술연산(ADD, SUB등) 명령어를 실행하면 Overflow bit로 동작 논리연산(AND, OR등) 명령어 실행 후 Parity bit로 동작 (가) Overflow발생조건: Overflow발생조건은 두 수의 부화 같을 때 가산 후 결과의 부호가 다르면 Overflow가 발생한 것으로 처리된다. 감산(SUB)명령 후에는 절대로 over flow가 발생하지 않는다. Slide 22 (of 28)
MPU 내부 구조 • 6) 특수레지스터(Special Purpose Register) Overflow 검출회로 Slide 23 (of 28)
MPU 내부 구조 • 6) 특수레지스터(Special Purpose Register) 해결방법 : 자리 수를 늘려준다. Overflow 발생 (나) Parity발생조건: Parity bit는컴퓨터들 간에 직렬 데이터 전송 시 정확하게 데이터를 전송하기 위한 방법으로 사용된다. 만약 Odd parity로 설정되어 있다면 논리연산 후에 Acc의 내용에서 1의 갯 수를 세어서 짝수이면 parity bit를 “1”로 set하여 전체의 “1”의 개수를 를 홀수로 만들어 준다. 만약 Even parity로 설정되어 있다면 논리연산 후에 Acc의 내용에서 1의 갯 수를 세어서 홀수이면 1 로 set되어 전체를 짝수로 만들어 준다. Slide 24 (of 28)
MPU 내부 구조 • 6) 특수레지스터(Special Purpose Register) ◇직렬전송 시 오류발생 검출 방법 ⓐ 컴퓨터 A 에서 전송할 데이터에서 1의 개수가 홀수이면 parity bit를 “1”로 세트하여 짝수 개로 만들어 준다. 이것을 parity bit generator 락 한다. ⓑ 직렬로 컴퓨터 B에 전송한다. ⓒ 컴퓨터 B 에서 전송된 데이터에서 “1”의 개수가 짝수개 이면 정상적으로 전송된 것으로 보고 parity bit는 “0”이 된다. ⓓ 만약 전송된 데이터에서 “1”의 개수가 홀수개 이면 짝수로 맞추어주기 위해 parity bit를 “1”로 세트해주고 전송도중 오류가 발생하였음을 알려준다. 이것을 parity bit detector(검출기)라 한다. Slide 25 (of 28)
S S Z Z X X H H X X P/V P/V N N C C MPU 내부 구조 • 6) 특수레지스터(Special Purpose Register) ④ Half carry bit (nibble 연산 자리올림) : ALU에서 연산결과 하위 4비트 연산에서 자리올림수가 발생하면 H bit 가 “1”로 세트 된다 ⑤ Zero bit : ALU에서 연산결과 zero 이면 Z bit를 “1”로 세트하고 아니면 “0”으로 된다 Z bit는 “1”이 된다 Z bit는 “0”이 된다 Not zero Slide 26 (of 28)
S Z X H X P/V N C MPU 내부 구조 • 6) 특수레지스터(Special Purpose Register) ⑥ Sign bit : ALU에서 연산결과 최 상위 비트가 “1”이면 음수, “0”이면 양수가 된다. 상태 레지스터의 최 상위 비트는 sign bit(부호비트)이다. 연산결과 MSB가 0이면 양수, 음수이면 MSB가 1이 된다. 최 상위 비트(MSB,(Sign bit)) (5) Interrupt Vector Register Interrupt Vector Register는 8bit register로서 Page address라고도 하며, 주변장치의 주소를 지정해 주는 register 이다.(Interrupt에서 설명) (6) Memory Refresh Register Dynamic RAM을 사용할 때 정보를 계속 유지하기 위해 계속해서 충전을 해야 한다. 최소한 2ms 마다 한번씩 refresh 해야 한다.(메모리에서 설명) Slide 27 (of 28)
MPU 내부 구조 • 7) 제어장치 (Control Unit) 제어장치는 명령어 레지스터(IR:Instruction Register)와 명령어 해석기(Decoder)로 구성되어 있으며 memory에 저장되어 있는 프로그램에서 명령어를 인출(fetch) 해 와서 명령어를 해석한 다음 이에 해당되는 제어 신호들을 내보낸다. 그림에서 IR(Instruction Register)은 명령어를 fetch해 와서 latch하고 있는다. Latch된 명령어는 명령어 해석기로 보내져서 명령어를 해석한다. 해석된 명령어는 내부 제어신호와 외부제어신호를 발생하여 실행한다. Slide 28 (of 28)