카테고리 없음

저장 프로그램 구조와 간접 주소

by이종호기자 2022. 4. 25. 11:58
반응형

저장 프로그램 구조와 각 비트별 연산코드에 대해서 알아본 다음, 명령어 형식의 예시까지 알아보겠습니다.

1. 저장 프로그램 구조

컴퓨터의 가장 간단한 구성은 단 한 개의 프로세서 레지스터를 가짐으로써 두 개의 부분으로 구성된 명령어 코드를 사용하는 것입니다. 이때 한 부분은 실행할 연산을, 그리고 다른 한 부분은 피연산자가 저장된 메모리내의 주소를 기술하게 되는데, 메모리로부터 읽혀진 피연산자 부분은 레지스터에 저장된 데이 타와 연산을 실행하게 됩니다.

2. 각 비트별 연산 코드

096 워드를 가진 기억 장치에 대해서 12비트의 주소가 필요합니다. 16비트 워드를 사용한다면 12비트는 주소에, 그리고 나머지 4비트는 연산 코드에 할당 함으로써 지정된 주소의 피연산자와 레지스터 사이에 마이크로 연산들이 실행 되는데 이때 하나의 프로세서 레지스터를 누산기 (accumulator) 라고 부르며 AC 로 표시합니다. AC의 클리어, 보수, 인크리멘트 등과 같은 명령어들은 피연산자 부분이 필 요없으므로 5부터 16까지의 12비트는 특별한 다른 목적을 위해 사용되어질 수 있습니다.

3. 간접 주소

명령어 코드의 피연산자 주소 부분이 직접 피연산자의 내용을 나타낼 수도 있는데 이러한 경우를 immediate 라 하며 피연산자의 내용이 담겨있는 메모리 주소를 나타내는 경우에는 직접 주소 (direct address), 그리고 주소의 내용을 담 고 있는 장소의 주소를 저장하고 있는 메모리 워드의 주소를 간접 주소 (in- direct address) 라고 부릅니다. 보통의 경우 한 비트를 사용해서 명령어 코드의 주소 부분이 직접 주소인지 간접 주소인지를 구별합니다.

4. 명령어 형식의 예시

3비트의 연산 코드와 12비트의 주소, 그리고 I로 표시되는 간접 주소 모드 (mode) 비트로 구성되어 있습니다. 모드 비트가 0이면 직접 주소를 나타내고, 1이면 간접 주소를 나타냅니다. 그림 5-2(b) 의 직접 주소 명령어는 메모리 주소 22에 놓여 있습니다. 1비트는 0이고, 연산 코드는 ADD를 나타내며, 주소 부분은 457 을 가리키고 있습니다.

따라서 이 명령어는 제어에 따라 주소 457의 피연산자의 읽기와 AC의 내용에 더하는 동작을 합니다. 그림 5-2(c)의 명령은 주소 35에 놓여 있으며, 1비트는 1 을 가리키고 있습니다. 따라서 이 명령어는 간접 주소를 사용하는 것으로서, 제어를 통해 주소 300에 접근하면 실제로 피연산자가 존재하는 주소를 얻을 수 있는 것입니다. 이 경우에 피연산자의 주소는 1350이 됩니다.

간접 주소 명령어는 피연산자를 얻어 오기 위하여 두 번의 메모리 참조가 필요합니다. 계산형 명령어 (computation-type instruction) 에서 피연산자의 주소와 분기형 명령어 (branch-type instruction) 에 서 목적 주소를 유효 주소 (effective address) 라는 용어로 정의합니다. 따라서 그림 4-2 (b) 에서는 457이 유효 주소이고, 그림 4-2 (c)에서는 1350이 유효 주소입니다. 간접 주소에서 피연산자의 주소를 가지고 있는 메모리 워드는 데이타 배열에 대한 포인터 (pointer) 로 사용되며, 이 포인터는 상용 컴퓨터에서처럼 메모리가 아닌 레지스터에 놓일 수도 있습니다.

반응형