이 글은 www.youtube.com/watch?v=693iK8vB7XU&list=PLc8fQ-m7b1hD4jqccMlfQpWgDVdalXFbH&index=25 보고 공부한 글입니다.
기본 컴퓨터(PDP-11)의 전체 명령어 set
RRI ,IO 명령은 0111일 때이다. D7이1일 때이다.
명령어가 움직이는 제어장치를 만들어 줘야 한다.
제어장치
하드웨어 구성요소
-16bit 4096 워드 메모리(4K)
-9개의 레지스터 – AR, PC(12bit짜리 주소 레지스터), DR, AC ,IR, TR(16bit 범용 레지스터), OUTR, INPR, SC(카운터 = 레지스터의 변형)
-7개의 플립플롭 – I, S(현재 AC값이 1이냐 0이냐), E(오버플로우 기록), R(인터럽트 여부) ,IEN(인터럽트를 받을지 말지), FGI, FGO
-2개의 디코더 – 3x8(Opcode)D7~D0 , 4x16(타이밍)T15~T0
-16bit 공통버스(멀티플랙서, 입력은8개 출력은 16개), OUTR와SC는 버스에 출력을 안해도 된다. 즉 16개의 워드 메모리와 AR, PC, DR, AC, IR, TR, INPR 8개의 입력.
-제어논리 게이트 - 제어장치
-AC입력 연결 논리회로(ALU)
컴퓨터의 동작 흐름
R이 0이면 명령어 사이클을 돌고 1이면 인터럽트 사이클을 돈다.
D7이 1이면 RRI, IO명령 처리를 하고 0이면 MMR 명령을 따른다.
MMR 명령은 T4시간에 실제로 실행된다.
제어장치 설계
구성요소별로 따져서 설계해보자.
ex) AR제어 논리게이트
AR은 레지스터이다.
어떤 기능들이 있나? 병렬 로드, 양방향 시프트, 병렬 출력, 인크리먼트
LD, INR, CLR가 1인경우만 움직인다.
LD가 1이면 – bus에 있는 값이 들어와서 AR에 저장
INR – AR에 있는 값이 1증가
CLR – AR에 있는 값 초기화
LD가 된다는건 뭔가? AR로 값이 들어오는 경우
어떤 경우에 LD로 값이 들어올까? 명령어에서 AR <- ??? 가 된걸 모두 찾으면 된다.
AR이 0으로되는경우 -> CLR
AR <- AR +1이 되는 경우 -> INR
AR제어 논리 게이트의 예
검은색 선은 LD가 1이되게 하는 것
빨간색 선은 CLR가 1이되게 하는 것
파란색 선은 INR가 1이되게 하는것
설계 순서
AR에 대한 LD, CLR, INR동작의 경우 수집
어디서? 전체 명령어 set에서
각 동작들을 OR로 연결
메모리 READ 제어 게이트의 예
M[AR] <- ??? 인 경우를 모두 찾는다. => 메모리를 write하는 과정
??? <- M[???] 인 경우를 모두 찾는다. => 메모리를 read하는 과정
단일 플립플롭에 대한 제어
IEN에 대한 제어 게이트 예
명령어 set에서 IEN 값이 바뀌는 경우를 모두 찾는다.
JK플립플롭
'Computer Science > 컴퓨터구조' 카테고리의 다른 글
[컴퓨터 구조] 기본 컴퓨터 프로그래밍 (0) | 2021.01.24 |
---|---|
[컴퓨터 구조] 공통버스에 대한 제어 (0) | 2021.01.23 |
[컴퓨터 구조] 입출력과 인터럽트 (0) | 2021.01.21 |
[컴퓨터 구조] 입출력과 인터럽트 (0) | 2021.01.20 |
[컴퓨터 구조] -명령어 사이클 (0) | 2021.01.19 |