[컴퓨터시스템구조] 18일차 - CPU, Control Unit
만든 날짜: | 2018-11-20 오후 12:48 |
6장 남은부분,
본 게시글은 수업들은 내용을 정리한 내용이며, 방문자 열람목적이 아닌 백업/기록용 게시글 입니다. 때문에 오타 및 잘못된 정보가 표기되어 있을 수 있습니다.
5장에서 배웠던 것.
인터럽트는 어려우니까 생략을 하고 IO만.
계속해서 FGO를 체크하고 있는데,
무한히 체크하는 루틴은 어떻게 짜는지 배운다.
6-34
- Character I/O (busy checking)
<한 문자를 입출력시키느 프로그램>
a)
SKI ( 입력 플래그를 체크하여 문자 전송이 가능한 상태인지를 조사 )
0이면 계속 루프를 돌다가 1이되면 뛰어서 수행한다.
b)
SKO.. 0이아니면 계속해서 루프를 돈다.
6-35
두개의 바이트를 동시에 팩을해서 워드로 읽는것.
SH4는 저번에 했었던 shift 루틴. 그것을 쓰겠다는 뜻이다.
1바이트를 완전히 시프트한다음에..
생략
6-36
생략
7장
CPU는 누가 컨트롤 하느냐? 바로 컨트롤 유닛 (CU)
컨트롤 유닛은 또 microinstructions 이 컨트롤 한다.
디지털 컴퓨터 안에있는 CU가 to initiate sequences of microoperations
마이크로 제어장치를 사용하는 컴퓨터는 주메모리와 제어메모리를 사용하는데
주메모리는 사용자가 변경가능하지만 제어 메모리는 그 내용이 고정되어 사요자가 건들 필요가 없다.
CPU는 CU의 마이크로 명령어로 제어되게 되는데,
마이크로 명령어는 fetch, 유효주소계산, 지정된 동작 수행 그리고 다음 명령어 fetch를 수행한다.
7-3
명령어를 하나 읽어와서 실행했다....
<마이크로 프로그램된 제어 장치의 일반적인 구성>
CPU안에도 또 컨트롤하는 CU가 들어있다.
IR로 들어온 명령어 코드를 가지고 세로운 시퀀스를 제너레이션 한다.
- Microinstruction’s functions:
- Execution – generate control signal for the current microinstruction
- Sequencing – the address to be executed by (똑같은건데 좀 작은단위)the next microinstruction?à Determine the address sequence:next address generator or a sequencer
주소 시퀀싱
마이크로 명령어들은 여러 개의 그룹으로 나누어 저장되며,
각 그룹은 하나의 루틴을 형성한다. ( 그 루틴에서 다른 루틴으로 분기도 할 수 있다.)
파이프라인은 8장이라 넘어감.
시퀀싱
- Increment CAR by one 제어 주소 레지스터 하나 증가
- Branch logic ( unconditional or conditional )
- Address mapping process
- Subroutine call & return 서브루틴 콜,반환
이 네가지 동작중 하나를 한다.
시퀀싱 (제어 메모리에서 주소를 결정하는 방법)
- 제어 주소 레지스터를 하나 증가시킴
- 무조건 분기와 상태 비트 조건에 따른 조건부 분기
- 명령어의 비트들로부터 제어 메모리의 주소로 매핑하는 처리
- 서브루틴을 호출하고(call), 복귀(return)하는 기능
CAR (제어 주소 레지스터)
<제어 메모리와 다음 명령어를 선택하는데 필요한 하드웨어>
매팽이 주요내용 이것만 알면될거같다.
매핑이란?
매크로 연산의 비트로 ROM에서 루틴의 첫째 주소를 찾는 것이다.
찾았다면 제어주소 레지스터를 하나씩 증가시켜서 연속된 micro명령을 수행한다
또는 상태비트에 따라 분기하기도한다.
명령어 수행이 끝나면 무조건 분기 명령을 사용해서 fetch 루틴으로 되돌아간다.
4개의 op코드를 가지고 제어메모리주소로 분기할려면 7비트가 필요하여
앞에 0, 뒤에 00을 붙여준다.
덧셈명령이 들어오면 컴퓨터는 어떻게 할지 모르니까 명령어 하나하나 마다 마이크로 인스트럭션을 만들어 주어야한다.
맵핑:
opcode 4개 그대로 가져옴.
그리고 제일 앞에다 0을 붙인다. 그리고 4개는 그대로 가져옴,
메모리에서 CPU로 명령어를 하나 읽어와서 수행.
예를들어서 ADD. 명령. 줬을 때.
사실 CPU안에 CUmemory에 각 명령어는 어떤 순서대로 수행을 하라는 것이 들어있다.
ex) ADD는 ~수행 등.
어느 번지인지 알기위해서 CU를 확대를 해보면
64개는 Reserved(명령어), 나머지 64는 Extra(추가 명령어)
4개씩 짤라서 명령어 정의
Reserved
(64bit)
| 4 | |
4 | ||
4
.
.
.
| ||
Extra
(64bit)
|
원래 명령어를 가져와서
앞에0 뒤에 00을 붙인다.
그럼 총 7 bit (128개)
앞에가 0이면 앞에 64중하나. (Reserved) 위에 64개라서 앞에 0을 붙인다.
64+64=128bit
0000000~1111111까지의 128개
- SBR : 서브루틴 레지스터동일한 프로그램의 경우 서브루틴화하여 제어 메모리를 절약할 수 있다.ex) 피연산자의 유효주소를 계산하는 것.ex2) 리턴주소는 스택의 주조로 해놓는 것이 편리하다.
CAR : 제어 주소 레지스터
Opcode가 4bit + 12bit 주소
ADD: 유효주소에 저장되어있는 값을 AC의 값에 더한다.
BRANCH : AC에 있는 값이 음수일 때, 유효 주소로 분기한다.
STORE : AC의 값을 유효 주소로 지정된메모리에 저장
EXCHANGE : AC의 데이터와 유효 주소로 지정된 메모리의 데이터를 서로 교환
ADD가 0000이라고 치면,
뭘수행해야하는지 CU에 저장해 놓는다.
- 마이크로 명령어 형식
- 마이크로 명령어 형식 : 20bit, 4개의 필드로 나뉘어져있다.F1,F2,F3 : 컴퓨터의 마이크로 연산을 지정CD : 상태 비트 조건BR: 분기 종류AD : 분기주소를 가지고 있다.
- 주소는 7bit이므로 제어 메모리크기가 128임.
- F1~3은 각각 서로 다른 7개의 동작으로 해석된다.
- AD필드는a. 기호주소b. NEXT(연속된 다음주소)c. BR이 RET이나 MAP이면 AD는 공란으로 둔다.
명령어를 동시에 3개 넣을 수있다.
F1,F2 둘다 001 001 이면 쫑남.
F1에서 001~011하면 나머지 에서 못함
- 3 bits in each field à Specify 7 microoperations각각의 필드에 명령어 3개를 넣을 수 있다.
- No more than 3 microoperations can be chosen for a microoperations, one from each field
- (Ex) DR ßM[AR], PC ß PC+1: 000 100 101
- (Ex) 010 001 000: AC ß 0, AC ß AC-DR : conflict 안된다.AC 동작을 동시에 수행해서 충돌이 발생한다.이와 같이 충돌이 발생하는 동작은 동시에 불가능.
AD필드는 다음어드레스.
I는 DR의 15번째 비트에따라
S는 AC의 15번째 비트(부호비트)에따라 그 값이 정해지는 상태비트이다.
Z는 AC가 모두 0일 때,
- 컨디션
10이면 사인비트 체크
- 브런치
JMP와 CALL 은 CD의 영향을 받는다.
DR(11-14)==opcode
마지막 두 조건은 CD와 AD필드의 값과 무관하다.
제어 워드는 128워드를 가지며 각각워드는 20bit로 이루어진다.
0~63번지는 16개의 매크로 연산을 위해 루틴으로 사용,
64~127번지는 다른 용도로 사용한다.
- The microinstruction needed for the Fetch routine:AR ß PCDR ß M[AR], PC ß PC+1AR ß DR(0-10), CAR(2-5) ß DR(11-14), CAR(0,1,6) ß 0
Fetch하는 것을 마이크로 오퍼레이션으로 만든다.
앞장에서 IR로 배웠는데 DR로 쓴다 그냥.(IR은 여기서 사용하지 않는다.)
64부터 Extra에서 정의.
명령어는 PCTAR, U(무조건), JMP(CAR<-), NEXT(next addresss in sequence) : 무조건 다음줄로 뛰어라
READ, INCPC U JMP NEXT(무조건 뛰어라 다음줄)
DRTAR U MAP(매핑실행, 다음명령어를 가져와라)
FETCH 다음에
INDRCT를 서브루틴으로 지정하므로써 반복사용이 가능하다.
INDRCT면 주소를 가져옴..
8장은 push pop만한고 학기종강
다시 돌아올 주소는 SBR에 저장된다.
AC가 음수일때만 유효주소로 분기
AC가 음수가되면 S비트가 1이되어 알 수 있다
여기서 S가 1이면 OVER로 분기.
복습, 집에서 3개 해보기
ORG 16 | ||||
AND: | NOP | I | CALL | INDRCT |
READ | U | JMP | NEXT | |
AND | U | JMP | FETCH |
0 0101 00
0010100
ORG 20 | ||||
SUB: | NOP | I | CALL | INDRCT |
READ | U | JMP | NEXT | |
SUB | U | JMP | FETCH |
0011000
ORG 24 | ||||
ADM: | NOP | I | CALL | INDRCT |
READ | U | JMP | NEXT | |
ADD | U | JMP | NEXT | |
ACTDR | U | JMP | NEXT | |
WRITE | U | JMP | FETCH |
/div>
복습 : 2018-11-24 (한번 다시하기, 노트정리 안됨.)
복습 : 2018-11-25 (함.)
[컴퓨터시스템구조] 18일차 - CPU, Control Unit
Reviewed by Lifer
on
12/18/2018
Rating:
댓글 없음: