본문 바로가기

Computer Science/컴퓨터구조

[컴퓨터 구조] 제어장치

이 글은 www.youtube.com/watch?v=693iK8vB7XU&list=PLc8fQ-m7b1hD4jqccMlfQpWgDVdalXFbH&index=25 보고 공부한 글입니다.

 

기본 컴퓨터(PDP-11)의 전체 명령어 set

RRI ,IO 명령은 0111일 때이다. D71일 때이다.

명령어가 움직이는 제어장치를 만들어 줘야 한다.

 

제어장치

 

하드웨어 구성요소

-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), OUTRSC는 버스에 출력을 안해도 된다. 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, CLR1인경우만 움직인다.


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 값이 바뀌는 경우를 모두 찾는다.

위 그림에서 pB2 => RT2로 바꿔야 한다.

 

 

JK플립플롭

 

 

728x90