Frog is cry

전자계산기 구조 : 3-명령어 및 프로세서 본문

자격증/정보처리산업기사

전자계산기 구조 : 3-명령어 및 프로세서

Frog is cry 2020. 8. 5. 19:09

1장 명령어의 기본

명령어(Instruction)의 설계

명령어의 구조

> 명령어는 여러 동작을 실행하는데 필요한 정보를 가지고 있으며, 모든 컴퓨터에서 기본적으로 수행될 연산자(Operation)와 그 연산에 사용할 대상체(Operand)로 구성된다.

 

연산자(동작, Operation Code, OP-Code) 

> 컴퓨터가 행하는 동작을 기호화해서 나타낸 정보로 연산자의 종류, 명령어 형식, 자료 종류 등의 정보를 나타내며, 명령어의 개수를 몇 개 사용할 것인지에 따라 사용 비트 수가 결정된다. 예를 들어 명령어를 32개 사용한다면 32 = 2의 5제고 이므로 OP-Code는 5비트로 표현해야한다.

 

모드(Mod)

> 대상체를 지정하는 방법으로 보통 직접 주소와 간접 주소로 구분된다.

 

주소(Oerand)

> 처리된 정보 또는 처리할 정보를 표시하는 부분으로 주소 필드(Address Field)라고도 한다.

기억 장소는 주소, 레지스터의 번호, 사용할 데이터 등을 표시하며, 자료부의 크기는 메모리 용량과 관계가 있다.

 

연산자(Operation, Op-Code)의 기능

함수 연산 기능(Functional Opeation) 

> 함수 연산 기능은 산술적 연산과 논리적 연산을 수행하는 기능이다.

 

전달 기능(Transfer Operation)

> 전달 기능이라는 것은 버스 라인을 통해 레지스터 사이의 접정보 이동 및 CPU와 주기억 장치의 정보를 이동시키는 기능이다.

 

제어 기능(Control Operation)

> 제어 장치에 의해 명령어를 해독하여 명령어의 수행서를 제어하거나 연산 장치의 제어점 제어 기능이다.

 

입출력 기능(Input-Output Operation)

> 주기억 장치에 기억된 연산 결과를 출력 장치로 이동시키거나 입력 장치에 있는 데이터를 주기억 장치로 이동시키는 기능이다.

 

명령어의 종류

데이터 처리 명령어

> 자료에 대한 연산 능력을 컴퓨터에 부여하는 명령어로 크게 산술연산, 논리연산, 시프트 연산으로 구분된다.

 

데이터 전송 명령어

> 자료의 변경 없이 한 장소에서 다른 장소로 전송시키는 명령어로 메모리와 레지스터, 레지스터와 레지스터, 메모리와 입출력 장치 사이의 데이터 전송이 있다.

 

데이터 제어 명령어

> 모든 명령어들이 상황에 맞게 적절히 수행될 수 있도록 조작을 가하는 것으로 조건 분기(Branch), 무조건 분기, 순서 변경, 테스트 등이 있다.

 

기타 용어 및 프로그램

기타 명령

리커션(Recursion)

> 자기가 자신을 호출하는 경우로 되돌아온 복귀 주소를 스택(Stack)에 Push하고 다시 자신을 실행하는 것이다. 잘못하면 무한 루프에 빠질 수 있다.

 

반복(Iteration)

> 주어진 자료를 가지고 처음에 실시된 계산은 정확한 정보를 나타내주지 못하므로 그 결과를 가지고 처음의 자료를 다시 수정하여 계산하는 방법을 반복적으로 행하는 것으로 루틴 내부에서 자료를 얻어야한다.

 

기타 프로그램

연계 편집기(Linage Editor)

> 목적 프로그램을 실행 가능한 로드 모듈(Load Module)로 변환하는 시스템 서비스 프로그램이다.

 

기계어

> 컴퓨터가 직접 이해하고 수행할 수 있는 언어로 수행 시간이 신속하나 프로그램 과정이 불편하고 언어의 호환성이 없다는 단점을 가지고 있다.

 

고급 언어(High-Lever Language)

> 기계어와는 달리 프로그래머가 익숙한 표현 형식을 사용하도록 하는 프로그래밍 언어로 하드웨어에 상관없이 Compiler로 번역되어 하드웨어와 호환되도록 한 언어이다.

 

2장 명령어의 형식

피연산자(Operand Address) 개수에 따른 구분

0-주소 명령어 형식

> 0-주소 명령어는 오퍼레이션(Operation)부분만 있고 오퍼랜드(Operand) 부분인 주소가 없는 명령어 형식을 의미한다.

> 스택 구조 컴퓨터에서 사용하는 명령어 형식이다.

> 모든 연산은 스택상에 있는 두 값을 묵시적으로 지정하여 POP해서 연산을 수행하고 결과를 다시 스택상에 PUSH하기 때문에 원래의 데이터는 모두 잃어버리게된다.

 

1-주소 명령어 형식

> 1-주소 명령어는 오퍼레이션(Operation) 부분과 1개의 오퍼랜드(Operand) 부분으로 구성된 명령어 형식을 의미한다.

> 누산기(ACCumlator) 구조 컴퓨터에서 사용하는 명령어 형식이다.

> 연산 시 두 개의 자료 중 하나는 묵시적으로 누산기를 지정하여 연산하고, 연산 결과 역시 누산기에 저장하는 방식이다.

 

피연산자 위치에 따른 구분

스택 명령어(SI : Stack Instruction) 형식

> 연산 대상이 되는 자료가 스택(Stack)에 있고, 결과 또한 스택에 저장되는 경우로 0-주소 명령어 형식이 여기에 속한다.

 

 

3장 주소 지정 방식(Addressing Mode)

즉시 주소(Immediate AddresS)

> 명령어의 주소(Operand 부분에 실제 데이터가 들어 있는 방식으로 명령어 수행이 즉각적으로 이루어진다.

> 실제 데이터를 가져오기 위해 메모리를 참조할 필요가 없다.

> 명령어에 실제 데이터를 포함하고 있으므로 수행 속도는 빠르지만 Oerand에 실제 데이터를 넣기 위해서는 명령어 길이에 제약이 따를 수박에 없다.

 

간접 주소(Indirect Address)

> 명령어의 주소(Operand) 부분이 지정하는 메모리 번지에 실제 데이터의 주소가 저장되는 방식이다.

> 실제 데이터를 가져오기 위해 메모리를 두 번 이상 참조해야 한다.

> 명령어의 길이가 짧고 제한되어 있어도 이것을 이용하면 긴 주소를 찾아갈 수 있기 때문에 주소 지정에 많은 융통성이 있다.

 

상대 주소 지정(Relative Address)

> 명령어의 오퍼랜드(Operand) 부분에 있는 주소 값과 프로그램 카운터(PC : Program Counter)에 들어 있는 값을 더해서 실제 데이터가 들어 있는 기억 장소의 위치를 지정하게 하는 방식이다.

> 데이터 영역의 배치와 프로그램 영역의 배치가 유사한 경우에 많이 사용한다.

> 분기 명령에 많이 사용한다.

 

4장 프로세서

프로세서(Processor)의 종류

중앙 처리 장치(CPU)의 구성

연산 장치(ALU : Arithmetic and Login Unit)

> 산술 연산 및 논리 연산 등을 수행하는 장치이다.

> 연산 장치는 가산기, 누산기(Accumulator), 자리 올림 플립플롭, 오버플로 체크 플립플롭, 오버플로 체크 플립플롭, 보수기 등으로 구성되어 있따.

 

제어장치(CU : Control Unit)

> 제어 장치는 주기억 장치에 기억되어 있는 명령어를 차례로 인출하여 해독하고, 해독한 결과에 따라 필요한 제어 신호를 각 장치에 보내는 역할을 한다.

> 제어 장치는 PC(Program Counter), IR(Instruction Register), 명령 해독기(Instruction Decoder), MBR(Memory Buffer Register), MAR(Memory Address Rgister), 순서 제어기, 주소 처리기, 신호 발생 장치 등으로 구성되어 있다.

 

5장 레지스터(Register)

> 레지스터는 주기억 장치보다 작은 개수로 주소 비트를 가지고 기억된 정보를 신속하게 접근할 수 있는 기억 장소로 중앙 처리 장치(CPU)안에 있는 임시 기억 장치이다.

> 중앙 처리 장치의 주소 선은 주소 레지스터(AR : Address Register)와 연결되어 있고 데이터 선은 데이터 레지스터(DR : Data gister)와 연결되어 있다. 따라서 메모리의 용량은 AR과 관계가 있고 한 번에 액세스되는 워드 크기는 DR과 관계가 있다.

 

프로그램 카운터(PC : Program Counter)

> 로케이션 카운터(LC : Location Counter)라고도 한다.

> 다음 명령어의 주소 값을 기억하고 있는 레지스터이다.

> 명령어의 수행 순서를 나타내는 레지스터이다.

> 이 레지스터가 없다면 각 명령어마다 다음에 수행하여야 할 명령어에 대한 주소 값을 기억하고 있어야한다.

 

메모리 번지 레지스터(MAR : Memory Address Register)

> 메모리에 접근하고자 할 때 접근하고자 하는 곳의 주소 값을 기억하고 있는 레지스터이다.

> 기억 장치의 용량과 관계가 있는 레지스터이다.

 

기억 레지스터(MBR : Memory Buffer Register)

> 주기억 장치에서 정보를 읽을 때 읽은 정보를 기억시키거나 주기억 장치에 정보를 기억시키는 레지스터이다.

> 기억 장치의 WORD 크기와 관계가 있다.

 

데이터 레지스터(DR : Data Register)

> 명령어 수행 시 수행에 필요한 데이터를 기억시키는 레지스터로 기억 장치의 워드 크기와 관계가 있다.

 

누산기(ACC : ACCumulator)

> 연산기능 수행 시 중심이 되는 데이터 레지스터로서 연산 장치에 연결되어 있다.

> 연산시 연산에 사용되는 데이터 및 연산 결과를 임시적으로 기억하는 레지스터이다.

 

상태 레지스터(Status Register)

> 프로그램 제어를 위한 상태 정보를 기억시키는데 필요한 레지스터를 의미한다.

 

플래그 레지스터(Flag Register) = 프로그램 상태 워드 레지스터(PSWR : Program Status Word Regiser)

> 프로그램의 수행이 진행되고 있을 때 매 순간마다 프로그램의 수행 상태를 포함하는 중앙 처리 장치의 상태를 나타내는 레지스터이다.

> 명령의 실행 중에 어떤 상황(부호 체크, 오버플로 여부, 캐리 발생 여부 등) 발생에 대한 사항들을 각각 1비트로세트시키는 레지스터를 의미한다.

> 프로그램 상태 워드(PSW : Program Status Word)는 컴퓨터 시스템 내부에서 순간순간의 시스템 상태를 기록하고 있는 특별한 Word로서 이 레지스터에 기억되어 있다.

 

 

 

 

 

 

Comments