이 글은 www.youtube.com/watch?v=0gRA-lHCuWM 보고 공부한 글입니다.
●유효주소 계산 후 실행하는 단계
유효주소 계산 전에 명령어의 종류를 이미 알아낸다.
T0,T1,T2은 fetch 사이클이다.
fetch 사이클 = 명령어 해독
D7의 값 이 1이면 RRI, io 명령이고, 0이면 RRI 명령이다.
15번째 비트가 1이면 io명령
0이면 RRI 명령이다.
마지막은 SC(sequence count)가 0으로 만들고 다시T0으로 간다.
D7값이 0이면 MRI 명령일 것이다.
15번째 비트가 0이면 직접주소이기 때문에 바로 실행하고
1이면 간접주소 이기 때문에 한번더 메모리에 있는 값을 AR 레지스터에 보내가지고(12비트의 값) 메모리에 접근하고 그 값을 가지고 와서 실제 명령을 실행한다.
MRI는 정확히T4에서 실행된다. RRI나 IO명령은T3에서 실행된다.
●RRI명령어의 종류와 동작
11번 비트가 1인경우가 B11이다.
여기서 r값은 D7값이 1이고, i값이 not즉 0이고 T3일 때 실행
11번째 비트가 1이면 CLA를 실행하라는 뜻이다.
스킵하는법 : PC에 있는 값을1개 증가시킨다.(그 다음 명령어를 받는다)
HLT에 S가 1인경우 제일 처음 fetch가 일어나게 하는 것
돌고있는 시스템을 멈추게 하려면s를 0으로 만들면 된다.
●MRI 명령어종류와 동작
T4가 실제 동작시간이다.
SC를 0으로 만드는건 다음 fetch할 수 있게 한다.
AC는 공통버스에서 DR에서 연결 돼있는 다른 라인을 거쳐 AC에 데이터를 넣는다.
STA - 저장
PC – 다음번에 수행해야할 명령의 주소
AR(Address register) – 주소 레지스터
BUN – 점프
BSA – 함수, 서브루틴의 구현에 사용
간접주소 사용의 전형적인 예
PC값이 20이 됏을 때 명령어를 fetch해서 디코딩해보면 BSA이다. 그럼 135번지로 점프한다.
서브루틴인 135번지부터 있다고 가정하자.
20번 명령어가 실행될 때T0과T1가 지나면 PC = PC +1이 동작해서 PC값은 21이 되어있다.
즉 PC=21번지값을 AR에 저장한다. 실제 서브루틴은 136부터 시작한다.
서브루틴 만들 때 규칙1. 점프한 주소는 비어있다.
규칙2. 서브루틴 끝나는 마지막 명령은1(간접주소), BUN ,자기가 시작한 주소이다.
마지막에 도착하면 BUN으로 무조건 점프하라 어디로? 자기가 시작한주소, 근데 그건 간접주소 이다. 라고 해석할 수 있다.
ISZ – if, for, while문처럼 제어문 구현에 사용
DR 값은 1증가시키고 0이면 PC를 다다음 명령의 주소를 가져라.
i가 0부터 10까지 증가한다는 프로그래밍 언어를 쓰는건 기계어로 번역하면 -10~0까지 이다.
'Computer Science > 컴퓨터구조' 카테고리의 다른 글
[컴퓨터 구조] 입출력과 인터럽트 (0) | 2021.01.21 |
---|---|
[컴퓨터 구조] 입출력과 인터럽트 (0) | 2021.01.20 |
[컴퓨터 구조] 컴퓨터가 동작하는 경위 (0) | 2021.01.18 |
[컴퓨터구조] 기본 컴퓨터 레지스터 (0) | 2021.01.17 |
[컴퓨터 구조] 컴퓨터 동작 (0) | 2021.01.15 |