이 글을 www.youtube.com/watch?v=m5Yw8TdBnmQ 보고 공부한 글입니다.
PC(program count), AR – 12비트로 되어있다. 메인 메모리를 주소를 지정하는 역할이기 때문에
IR(instruction register) – 명령어 레지스터
8비트
INPR
OUTR
외부장치로 데이터를 주고받는 역할 레지스터
버스
레지스터와 레지스터와 정보를 주고받을 수 있는 길
-내부버스 – cpu 내부 레지스터간 연간
-외부버스 - cpu 내부 레지스터 <–> 메인 메모리간 연결
-입출력 버스 – cpu <- -> 주변장치 (I/O) 연결
-공통 버스 시스템 -내부버스를 통칭
-내부 버스의 크기(width)로 cpu 워드 크기 결정(한꺼번에 몇bit를 전달할 수 있느냐?)
16bit 컴퓨터 – 내부 버스/ 레지스터 크기가 16bit
32bit 컴퓨터 – 내부 버스/ 레지스터 크기가 32bit
--전송 연결 통로
레지스터 – 레지스터 데이터 전송 통로
레지스터 – 메모리 데이터 전송 통로(예외적 표현)
한 순간에는 하나의 전송 신호만이 버스에 전재 가능
-2개 이상의 신호 발생시에는 버스충돌(발생)
-버스 제어기(정확한 타이밍과 mux 제어 수행)
버스 제어기
메인 메모리와 연결된 버스는 외부 버스이다.
공통 버스에 데이터를 전송하고 받는다.
한 레지스터가 데이터를 보내면 버스에는 그 데이터만 존재해야 한다. 어떤 데이터가 다른 레지스터로 들어갈 때까지 데이터가 못 나간다.
그러면 버스통로가 막히지 않을까? 버스로 이동이 빠르기 때문에 걱정 안해도 된다.
사실 레지스터들은 버스에 멀티플렉서의 입력이다. 8x1멀티플렉서이다.
버스 컨트롤러로 어떤 레지스터에서 데이터가 나갈지 지정한다.
버스로 데이터를 내보내는건 모든 레지스터에 다 들어간다. load가 1이된 레지스터만 데이터를 받는다.
레지스터는 병렬로드 가능한 양뱡항 시프트 레지스터이기 때문에
AR <- PC는 pc에서 AR로 가는 것인데 PC가 열라면 버스 컨트롤러에 010을 줘서 데이터를 버스에 받는다.
AR의 load값이 1이면 AR이 값을 받는다.
기본 컴퓨터 명령어 종류
MRI 명령 7가지 – 메모리를 참조하는 명령(메인메모리를 반드시 접근)
RRI 명령 12가지 – 레지스터를 참조하는 명령(레지스터 레지스터 사이에)
IO 명령 6가지 - io장치에 접근하는 명령
명령어 포맷
AND 명령 – AC와 주소가 가리키고 있는 값을 and한 결과를 다시 AC에 보내라
ADD 명령 - AC와 주소가 가리키고 있는 값을 더한 결과를 다시 AC에 보내라
LDA 명령 – 메모리에 있는 값을 AD에 넣어라
STA 명령 – AC에 있는 데이터를 메인메모리에 저장
BUN 명령 – 무조건 분기해라, 지정된 번지로 점프해라
BSA 명령 – 점프하고 다시 돌아올 때return address를 저장해라
ISZ 명령 – 값을 증가시켜라 값이 0이면 스킵
ex) i=0(직접주소)이고 0 xxx(주소) 이면 AND명령 수행
i=1(간접주소)이고 8 xxx(주소) 이면 AND명령 수행
RRI명령은 0111부터 시작한다. MRI명령이7를 안넣은 이유이다.
12개 비트가 주소가 들어가는 것이 아니라 명령의 종류가 들어간다.
7800 -> 0111/ 1000/ 0000 /0000으로 CLA가 표현된 것이다.
'Computer Science > 컴퓨터구조' 카테고리의 다른 글
[컴퓨터 구조] -명령어 사이클 (0) | 2021.01.19 |
---|---|
[컴퓨터 구조] 컴퓨터가 동작하는 경위 (0) | 2021.01.18 |
[컴퓨터 구조] 컴퓨터 동작 (0) | 2021.01.15 |
[컴퓨터구조] 레지스터 전송과 마이크로 연산 (0) | 2021.01.14 |
[컴퓨터구조] 데이터의 표현 (0) | 2021.01.13 |