03-2-arch-CPU-4 - 이상정

Download Report

Transcript 03-2-arch-CPU-4 - 이상정

6. CPU 설계
순천향대학교 정보기술공학부
이상정
컴퓨터 구조
6장 학습내용
 고정배선방식제어(hardwired control)를 사용한
CPU의 설계
 CPU의 활용분야 분석
 마이크로동작과 CPU의 상태도 설계
 내부 데이터 경로와 필요한 제어신호 정의
 제어신호와 제어부(control unit) 설계
 2개의 간단한 CPU 설계
 Intel 8085 마이크로프로세서의 내부구조
순천향대학교 정보기술공학부
이상정
2
컴퓨터 구조
CPU의 사양
 CPU의 능력을 수행할 작업과 일치
 적당한 명령어 집합 구조 설계
• 명령어와 레지스터
 CPU의 상태도 설계
• 상태와 마이크로동작 명시
 CPU의 동작 순차
• 인출(fetch) 주기
• 명령어를 메모리에서 인출하고, 해독주기로 간다
• 해독(decode) 주기
• 명령어를 해독하고, 실행주기로 간다
• 실행(execute) 주기
• 명령어를 실행하고, 인출주기로 간다
순천향대학교 정보기술공학부
이상정
3
컴퓨터 구조
CPU 상태도 개요
순천향대학교 정보기술공학부
이상정
4
Very Simple CPU 설계
컴퓨터 구조
Very Simple CPU의 사양
 메모리
• 64바이트 메모리 공간
• 6 비트 주소
 버스
• 주소 버스 6비트 A[5..0]
• 데이터 버스 8비트 D[7..0]
 레지스터
• 8비트 누산기 AC
• 6비트 주소 레지스터(address register: AR)
• 메모리에 주소 저장
• 6비트 프로그램 카운터(program counter: PC)
• 다음에 실행될 명령어 주소
• 8비트 데이터 레지스터(data register: DR)
• 메모리에서 명령어와 데이터를 받는다
• 2비트 명령어 레지스터(instruction register: IR)
• 메모리에서 인출된 명령어 코드(OP code) 저장
순천향대학교 정보기술공학부
이상정
6
컴퓨터 구조
명령어
 4개의 명령어
순천향대학교 정보기술공학부
이상정
7
컴퓨터 구조
명령어 인출
 동작 단계
• 주소 핀 A[5..0]에 주소를 실어 메모리에 보낸다
• 메모리는 주소를 해독하고 명령어를 읽어서 CPU의
D[7..0] 핀에 실어 보낸다
 명령어 인출의 상태
FETCH1: AR ← PC
FETCH2: DR ← M, PC ← PC + 1
FETCH3: IR ← DR[7..6], AR ← DR[5..0]
순천향대학교 정보기술공학부
이상정
8
컴퓨터 구조
명령어 해독
 인출된 명령어를 해독하고 실행 루틴 결정
순천향대학교 정보기술공학부
이상정
9
컴퓨터 구조
명령어 실행
 ADD 명령어
• 하나의 오퍼랜드를 메모리에서 가져오기
• 누산기와 오퍼랜드를 더해서 결과를 누산기에 저장
• ADD 명령어 실행의 상태
ADD1: DR ← M
ADD2: AC ← AC + DR
 AND 명령어
AND1: DR ← M
AND2: AC ← AC ^ DR
 JMP 명령어
JMP1: PC ← DR[5..0] 혹은 PC ← AR
 INC 명령어
INC1: AC ← AC + 1
순천향대학교 정보기술공학부
이상정
10
컴퓨터 구조
CPU의 상태도
순천향대학교 정보기술공학부
이상정
11
컴퓨터 구조
데이터 경로(data path) 설계 (1)
 마이크로 동작
FETCH1: AR ← PC
FETCH2: DR ← M, PC ← PC + 1
FETCH3: IR ← DR[7..6], AR ← DR[5..0]
ADD1: DR ← M
ADD2: AC ← AC + DR
AND1: DR ← M
AND2: AC ← AC ^ DR
JMP1: PC ← DR[5..0]
INC1: AC ← AC + 1
순천향대학교 정보기술공학부
이상정
12
컴퓨터 구조
데이터 경로(data path) 설계 (2)
 레지스터 저장을 기준으로 재정렬
AR: AR ← PC; AR ← DR[5..0]
PC: PC ← PC + 1; PC ← DR[5..0]
DR: DR ← M
IR : IR ← DR[7..6]
AC: AC ← AC + DR; AC ← AC ^ DR; AC ← AC + 1
순천향대학교 정보기술공학부
이상정
13
컴퓨터 구조
데이터 경로 초기 설계
 AR: AR ← PC; AR ← DR[5..0]
 PC: PC ← PC + 1;
PC ← DR[5..0]
 DR: DR ← M
 IR : IR ← DR[7..6]
 AC: AC ← AC + DR;
AC ← AC ^ DR;
AC ← AC + 1
순천향대학교 정보기술공학부
이상정
14
컴퓨터 구조
데이터 경로 초기 설계 수정
 AR의 출력은 메모리로만 가고 내부 버스에 연결되
지 않는다
 IR은 다른 구성요소에 데이터를 제공하지 않는다
 AC는 데이터를 다른 구성요소에 제공하지 않는다
 버스의 크기는 8비트이나 6비트와 2비트도 사용되
므로 이를 명시해야 한다
 AC는 AC와 DR의 산술합과 논리곱 결과를 얻기 위
해서 ALU가 있어야 한다
순천향대학교 정보기술공학부
이상정
15
컴퓨터 구조
데이터 경로 최종 설계
 AR: AR ← PC; AR ← DR[5..0]
 PC: PC ← PC + 1;
PC ← DR[5..0]
 DR: DR ← M
 IR : IR ← DR[7..6]
 AC: AC ← AC + DR;
AC ← AC ^ DR;
AC ← AC + 1
순천향대학교 정보기술공학부
이상정
16
컴퓨터 구조
Very Simple CPU ALU 설계
 덧셈과 논리곱 연산
 멀티플렉서로 결과 선택
순천향대학교 정보기술공학부
이상정
17
컴퓨터 구조
제어부 설계
 제어부는 명령 실행을 위한 제어신호 생성하는
장치
 2가지 방식
• 고정배선제어(hardwired control) 방식
• 조합논리, 순차논리 사용
• 마이크로프로그램 제어(microprogrammed control) 방식
• 참조 메모리(lookup memory) 사용
 Very Simple CPU의 제어부
• 고정배선제어 방식으로 설계
• 카운터 – 현재의 상태 유지, 9개의 상태, 4비트 카운터
• 디코더 – 각 상태를 구별하는 신호 발생, 4 X 16 디코더
• 조합논리 – 필요한 제어 신호를 조합
순천향대학교 정보기술공학부
이상정
18
컴퓨터 구조
제어부 구성
순천향대학교 정보기술공학부
이상정
19
컴퓨터 구조
제어부 상태 할당
 카운터와 디코더를 사용하여 상태할당
• RTL의 제어를 나타내는 상태
• FETCH1, FETCH2, FETCH3, ADD1, ADD2, AND1, AND2,
JMP1, INC1 에 이진 값 배정
 상태할당
• 연속적인 상태에 연속적인 카운터값 할당
• 카운터 INC 입력 사용
• FETCH1을 0에 할당
• 카운터 입력값 0
• 카운터 CLR 신호 사용
• FETCH2는 카운터값 1, FETCH3은 카운터값 2
• 실행 루틴의 첫 번째 상태는 실행 루틴의 상태의 최대 갯수 고
려
• LD 신호 사용
순천향대학교 정보기술공학부
이상정
20
컴퓨터 구조
명령어 매핑
 명령어 디코드
• 명령어 코드로 부터 실행루틴의 처음 상태 지정
 IR에서 처음상태 카운터 값으로의 매핑 함수
• 1 IR[1..0] 0 매핑
• ADD1, AND1, JMP1, INC1이 8, 10, 12, 14로 할당
• 잘못된 매핑 예
• 10 IR[1..0] 매핑
• ADD1은 8, AND1은 9, ADD 연산이 연속적으로 상태할당을 할
수 없음
순천향대학교 정보기술공학부
이상정
21
컴퓨터 구조
Very Simple CPU 제어부 설계
순천향대학교 정보기술공학부
이상정
22
컴퓨터 구조
데이터 경로 제어신호 설계
 카운터 제어 신호
• LD, INC, CLR

 레지스터 제어신호
마이크로동작
FETCH1: AR ← PC
FETCH2: DR ← M,
PC ← PC + 1
FETCH3: IR ← DR[7..6],
AR ← DR[5..0]
ADD1: DR ← M
ADD2: AC ← AC + DR
AND1: DR ← M
AND2: AC ← AC ^ DR
JMP1: PC ← DR[5..0]
INC1: AC ← AC + 1
•
•
•
•
•
•
PCLOAD = JMP1
PCINC = FETCH2
DRLOAD = FETCH2 V ADD1 V AND1
ACLOAD = ADD2 V AND2
ACINC = INC1
IRLOAD = FETCH3
 ALU 제어 신호
• ALUSEL = AND2
 버퍼 인에이블 신호
• MEMBUS = FETCH2 V ADD1 V AND1
• PCBUS = FETCH1
 메모리 제어 신호
• READ = FETCH2 V ADD1 V AND1
순천향대학교 정보기술공학부
이상정
23
컴퓨터 구조
데이터 경로 제어신호 구현
순천향대학교 정보기술공학부
이상정
24
컴퓨터 구조
설계검증
 간단한 예에 대하여 실행을 추적하여 성계 검증
 명령어 코드 예
0: ADD 4
1: AND 5
2: INC
3: JMP 0
4: 27H
5: 39H
 CPU 상태 추적
•
•
•
•
ADD 4: FETCH1 -> FETCH2 -> FETCH3 -> ADD1 -> ADD2
AND 5: FETCH1 -> FETCH2 -> FETCH3 -> AND1 -> AND2
INC : FETCH1 -> FETCH2 -> FETCH3 -> INC1
JMP 0: FETCH1 -> FETCH2 -> FETCH3 -> JMP1
순천향대학교 정보기술공학부
이상정
25
컴퓨터 구조
실행 추적
순천향대학교 정보기술공학부
이상정
26
Relative Simple CPU 설계
컴퓨터 구조
Relatively Simple CPU의 사양
 메모리
• 64K 바이트 메모리 공간
• 16비트 주소
 버스
• 주소 버스 16비트 A[15..0]
• 데이터 버스 8비트 D[7..0]
 레지스터
•
•
•
•
•
•
•
8비트 누산기 AC
8비트 범용 레지스터 R
16비트 주소 레지스터(address register: AR)
16비트 프로그램 카운터(program counter: PC)
8비트 데이터 레지스터(data register: DR)
8비트 명령어 레지스터(instruction register: IR)
8비트 임시 레지스터(temporary register: TR)
• 임시 데이터 저장, 명령어로 접근 불가
• 제로 플래그 Z
순천향대학교 정보기술공학부
이상정
28
컴퓨터 구조
명령어 집합
 16개의 명령어
 8비트 연산코드, 16비트 주소
순천향대학교 정보기술공학부
이상정
29
컴퓨터 구조
명령어 인출과 해독
FETCH1: AR ← PC
FETCH2: DR ← M, PC ← PC + 1
FETCH3: IR ← DR, AR ← PC
순천향대학교 정보기술공학부
이상정
30
컴퓨터 구조
명령어 실행 (1)
 NOP 명령어
• 아무 일도 하지 않고 다음 명령어 인출 루틴으로 간다
NOP1: (아무일도 하지 않음)
 LDAC 명령어
• AC <- M
LDAC1: DR ← M, PC ← PC + 1, AR ← AR + 1
LDAC2: TR ← DR, DR ← M, PC ← PC + 1
LDAC3: AR ← DR, TR
LDAC4: DR ← M
LDAC5: AC ← DR
 STAC 명령어
• M <- AC
STAC1: DR ← M, PC ← PC + 1, AR ← AR + 1
STAC2: TR ← DR, DR ← M, PC ← PC + 1
STAC3: AR ← DR, TR
STAC4: DR ← AC
STAC5: M ← DR
순천향대학교 정보기술공학부
이상정
31
컴퓨터 구조
명령어 실행 (2)
 MVAC와 MOVR 명령어
• MVAC1: R ← AC
• MOVR1: AC ← R
 JUMP 명령어
JUMP1: DR ← M, AR ← AR + 1
JUMP2: TR ← DR, DR ← M
JUMP3: PC ← DR, TR
 JMPZ와 명령어
• Z=1이면 JMPZY의 분기가 실행, Z=0이면 JMPZN의 다음 명령어 실
행
JMPZY1: DR ← M, AR ← AR + 1
JMPZY2: TR ← DR, DR ← M
JMPZY3: PC ← DR, TR
JMPZN1: PC ← PC + 1
JMPZN2: PC ← PC + 1
순천향대학교 정보기술공학부
이상정
32
컴퓨터 구조
명령어 실행 (3)
 JPNZ 명령어
• Z=0이면 JPNZY의 분기가 실행, Z=1이면 JPNZN의 다음 명령어 실행
JPNZY1: DR ← M, AR ← AR + 1
JPNZY2: TR ← DR, DR ← M
JPNZY3: PC ← DR, TR
JPNZN1: PC ← PC + 1
JPNZN2: PC ← PC + 1
 나머지 명령어
ADD1: AC ← AC + R, IF (AC + R = 0) THEN Z ← 1 ELSE Z ← 0
SUB1: AC ← AC - R, IF (AC - R = 0) THEN Z ← 1 ELSE Z ← 0
INAC1: AC ← AC + 1, IF (AC + 1 = 0) THEN Z ← 1 ELSE Z ← 0
CLAC1: AC ← 0, Z ← 1
AND1: AC ← AC ^ R, IF (AC ^ R = 0) THEN Z ← 1 ELSE Z ← 0
OR1: AC ← AC V R, IF (AC V R = 0) THEN Z ← 1 ELSE Z ← 0
XOR1: AC ← AC + R, IF (AC + R = 0) THEN Z ← 1 ELSE Z ← 0
NOT1: AC ← AC - R, IF (AC - R = 0) THEN Z ← 1 ELSE Z ← 0
순천향대학교 정보기술공학부
이상정
33
컴퓨터 구조
CPU의 상태도
순천향대학교 정보기술공학부
이상정
34
컴퓨터 구조
데이터 경로
 데이터 전송 목적지 별로 재정렬
•
•
•
•
•
•
•
AR: AR ← PC; AR ← AR + 1; AR ← DR, TR
PC: PC ← PC + 1; PC ← DR, TR
DR: DR ← M, DR ← AC
IR: IR ← DR
R: R ← AC
TR: TR ← DR
AC: AC ← DR; AC ← R; AC ← AC + R; AC ← AC - R;
AC ← AC + 1; AC ← 0; AC ← AC ^ R; AC ← AC V R;
AC ← AC + R; AC ← AC’;
• Z: Z ← 1, Z ← 0
 AR과 PC는 병렬 적재와 증가 기능이 있어야 함
 DR, IR, R, TR은 병렬 적재 가능, 내부 버스 이용
 ALU의 한 입력은 AC, 나머지 하나는 내부 버스
 AC는 언제나 ALU 출력을 입력으로 한다
순천향대학교 정보기술공학부
이상정
35
컴퓨터 구조
데이터 경로 초기 설계
순천향대학교 정보기술공학부
이상정
36
컴퓨터 구조
데이터 경로 초기 설계 수정
 AR과 IR은 다른 구성요소에 데이터를 제공하지 않음
 핀 D[7..0]은 양방향
 모든 레지스터가 16비트 버스를 다 사용하지는 않음
• 비트 수를 명시
 레지스터 Z는 어디에도 연결되어 있지 않음
 IR ← DR 전송은 내부 버스가 아닌 직접 연결을 사용
 TR ← DR 전송은 내부 버스가 아닌 직접 연결을 사용
 DR 출력을 15..8과 7..0에 둘 다 연결
 레지스터 Z 도입
순천향대학교 정보기술공학부
이상정
37
컴퓨터 구조
데이터 경로 최종 설계
순천향대학교 정보기술공학부
이상정
38
컴퓨터 구조
Relatively Simple CPU ALU 설계 (1)
 AC에 적재되는 데이터는 모두 ALU를 통과
 AC의 내용을 수정하는 전송들
• LDAC5: AC ← DR
• MOVR1: AC ← R
• ADD1: AC ← AC + R
• SUB1: AC ← AC – R
• INAC1: AC ← AC + 1
• CLAC1: AC ← 0
• AND1: AC ← AC ^ R
• OR1: AC ← AC V R
• XOR1: AC ← AC + R
• NOT1: AC ← AC’
순천향대학교 정보기술공학부
이상정
39
컴퓨터 구조
Relatively Simple CPU ALU 설계 (2)
 산술부 설계
• LDAC5: AC ← DR
• MOVR1: AC ← R
• ADD1: AC ← AC + R
• SUB1: AC ← AC – R
• INAC1: AC ← AC + 1
• CLAC1: AC ← 0
 캐리 입력 병렬 가산기 사용 구현
• LDAC5: AC ← 0 + BUS + 0
• MOVR1: AC ← 0 + BUS + 0
• ADD1: AC ← AC + BUS + 0
• SUB1: AC ← AC + BUS’ + 1
• INAC1: AC ← AC + 0 + 1
• CLAC1: AC ← 0 + 0 + 0
순천향대학교 정보기술공학부
이상정
40
컴퓨터 구조
Relatively Simple CPU ALU 설계 (3)
 논리부 설계
• 4 x 1 멀티플렉서 사용
• AC ^ BUS, AC V BUS, AC + BUS, AC’
순천향대학교 정보기술공학부
이상정
41
컴퓨터 구조
제어부 설계 (1)
 상태 생성을 위해 2개의 레지스터 사용
• 명령어 레지스터: 연산코드
• 타임 카운터: 시간적인 순서
 T0는 FETCH1, T1은 FETCH2, T2는 FETCH3
 실행 루틴의 상태는 T3에서 시작
• LDAC1 = LDAC ^ T3
• LDAC2 = LDAC ^ T4
• LDAC3 = LDAC ^ T5
• LDAC4 = LDAC ^ T6
• LDAC5 = LDAC ^ T7
순천향대학교 정보기술공학부
이상정
42
컴퓨터 구조
제어부 설계 (2)
순천향대학교 정보기술공학부
이상정
43
컴퓨터 구조
CPU 상태 목록
• 연산 디코더 출력과 타임 카운
터의 디코더 출력을 결합하여 상
태 생성
• 상태를 사용하여 제어신호
발생
순천향대학교 정보기술공학부
이상정
44
컴퓨터 구조
제어신호
순천향대학교 정보기술공학부
이상정
45
컴퓨터 구조
시뮬레이터 개요
 RS-CPU 시뮬레이터
• Relative Simple Computer 시뮬레이터
• JAVA 애플릿 – 웹 브라우저 이용 가능
• 모든 명령어의 인출, 해독, 실행이 단계별로 진행 가능
 링크
• 시뮬레이터 실행
http://sjlee.sch.ac.kr/lecture/arch/cpu_sim/web.html
• 시뮬레이터 매뉴얼
http://sjlee.sch.ac.kr/lecture/arch/cpu_sim/help/index.html
순천향대학교 정보기술공학부
이상정
46
컴퓨터 구조
Simple CPU의 부족한 점
더 많은 내부 레지스터와 캐시
CPU 안의 다중 버스
파이프라인 명령어 처리
더 큰 명령어 집합
서브 루틴과 인터럽트
순천향대학교 정보기술공학부
이상정
47
컴퓨터 구조
다중 버스의 사용 예
순천향대학교 정보기술공학부
이상정
48
컴퓨터 구조
8085 마이크로프로세서의 내부 구조
순천향대학교 정보기술공학부
이상정
49
컴퓨터 구조
과제
순천향대학교 정보기술공학부
이상정
50
컴퓨터 구조
과제
15. Relatively Simple CPU의 PC, DR, TR, IR을
위한 제어 신호를 발생시키는 데 필요한 논리
를 보여라.
순천향대학교 정보기술공학부
이상정
51