명령어의 구성

28
명명명명 명명 명명명 명명명명 명명 명명명 명명명 명명 명명명명명명 명명명명 명명

description

명령어의 구성. 컴퓨터 명령어의 개요 컴퓨터 명령어 형식 주소지정방식 명령어의 종류. 명령어의 개요. 컴퓨터의 논리적 구조의 이해 어셈블리어 매뉴얼을 참조 하드웨어에 의해 실행되는 명령어에 대한 자세한 사항을 기록 명령어의 2 진 코드와 기호화된 이름에 대한 정의를 기록 컴퓨터는 다양한 명령어와 명령어 형태를 가짐 제어장치에서 명령어를 해석하고 실행하기 위한 제어신호를 제공 명령어 컴퓨터가 어느 정보를 가지고 어떤 처리를 하는지를 나타내는 것으로 연산코드와 오퍼랜드로 구성. 명령어의 구성. - PowerPoint PPT Presentation

Transcript of 명령어의 구성

Page 1: 명령어의 구성

명령어의 구성

컴퓨터 명령어의 개요컴퓨터 명령어 형식주소지정방식명령어의 종류

Page 2: 명령어의 구성

명령어의 개요

• 컴퓨터의 논리적 구조의 이해– 어셈블리어 매뉴얼을 참조

• 하드웨어에 의해 실행되는 명령어에 대한 자세한 사항을 기록• 명령어의 2 진 코드와 기호화된 이름에 대한 정의를 기록

– 컴퓨터는 다양한 명령어와 명령어 형태를 가짐• 제어장치에서 명령어를 해석하고 실행하기 위한 제어신호를 제공

• 명령어– 컴퓨터가 어느 정보를 가지고 어떤 처리를 하는지를 나타내는

것으로 연산코드와 오퍼랜드로 구성

Page 3: 명령어의 구성

명령어의 구성

• 명령어의 구성– 연산코드와 오퍼랜드로 구성

• OP code : 처리해야 할 연산의 종류• Operand( 피연산자 ) : 처리할 정보나 처리된 정보

• 명령어 형식– 명령어를 구성하는 필드의 수와 배치방식 및 각 필드의 비트 수 – 필드라는 비트그룹으로 나뉨

• 연산코드 필드 : 수행할 연산을 위한 명령어를 나타냄• 오퍼랜드 필드 : 연산코드에서 결정된 명령을 수행할 대상이 되는

데이터 또는 데이터가 저장된 주소를 나타냄

연산코드 (OP code) 오퍼랜드 (Operand)

Page 4: 명령어의 구성

명령어의 기능

• 함수연산 기능– 데이터 처리 명령어가 산술과 논리 연산을 수행

• 전달기능– 데이터 전송 명령어가 레지스터 사이의 정보

전달이나 중앙처리 장치와 주기억 장치 사이의 정보 이동을 수행

• 제어기능– 프로그램 제어 명령어가 명령어의 수행 순서를

제어

Page 5: 명령어의 구성

컴퓨터 명령어 형식

• 명령어 set– 컴퓨터에서 사용할 수 있는 명령어의 집합– 컴퓨터의 구조적 정보를 나타내는 가장 중요한 정보– 컴퓨터 계열 (family) 에 속하는 컴퓨터들은 컴퓨터

자체는 달라도 명령어 set 은 동일하나 계열이 다르면 다른 명령어 set 을 가짐

• 윈도우 계열 Vs 유닉스 계열 Vs 매킨토시 계열

Page 6: 명령어의 구성

기억 장소에 따른 명령어 형식

• 오퍼랜드를 기억시켜 놓는 장소에 따른 명령어 형식의 분류– 누산기를 이용한 명령어 형식– 다중 레지스터를 이용한 명령어 형식– 스택 구조를 이용한 명령어 형식

Page 7: 명령어의 구성

기억 장소에 따른 명령어 형식 - 누산기

• 누산기를 이용한 명령어 형식 (1 주소 명령어 )– 함수 연산 기능의 명령어를 수행할 때 오퍼랜드

중의 하나가 누산기에 기억되도록 하는 컴퓨터 구조– 중앙처리장치 내에 있는 유일한 데이터 레지스터

• 오퍼랜드를 기억시키는 레지스터 ( 누산기 )

– 하나의 기억 장치 주소 필드를 사용• ADD X AC AC + M[X]• 누산기의 내용 + X 번지 내용 누산기에 저장

특수 레지스터(PC, MAR, MBR)

산술 / 논리연산장치(ALU)

누산기(AC)

입력버스

출력버스

Page 8: 명령어의 구성

기억 장소에 따른 명령어 형식 - 다중레지스터

• 다중레지스터를 이용한 명령어 형식 (2-3 주소 )– 중앙처리장치 내에 여러 개의 레지스터

• 세 개의 레지스터가 필요– 예

• ADD R1, R2, R3 R3 R1 + R2• ADD R1, R2 R2 R1 + R2• MOVE R1, R2 R2 R1

레지스터 set산술 / 논리연산장치

(ALU)

입력버스

출력버스

Page 9: 명령어의 구성

기억 장소에 따른 명령어 형식 – 스택구조

• 스택 구조를 이용한 명령어 형식 (0 주소 )– 연산에 필요한 오퍼랜드와 연산의 결과를 스택에

기억시키는 구조– 스택 (Stack : LIFO)

• 가장 마지막에 저장된 데이터를 가장 먼저 얻는 후입선출의 특성을 가지는 데이터 구조

– 명령어 형식은 연산코드만 표시• ADD 주소 필드가 필요 없음• Push X TOS M[X] • POP X M[X] TOS

산술 / 논리연산장치

스택

0

1

2

3

4

5

스택포인터

Page 10: 명령어의 구성

오퍼랜드 수에 따른 명령어 형식 -3 주소

• 3- 주소 명령어 (three-address instruction) 형식– 오퍼랜드의 수가 3 개인 명령어 형식– 주소필드는 처리장치 레지스터 혹은 기억장치 레지스터

• ADD A, B, R1 R1 M[A] + M[B]

– 장점• 산술식을 프로그램하는 데 있어서 프로그램의 길이가 짧아짐

– 단점• 3 주소 명령어를 2 진 코드화 했을 때 세 개의 오퍼랜드를

나타내기 위한 비트 수가 다른 주소 명령어 형식보다 많이 필요

연산코드 오퍼랜드 1 오퍼랜드 2 오퍼랜드 3

Page 11: 명령어의 구성

오퍼랜드 수에 따른 명령어 형식 -2 주소

• 2- 주소 명령어 형식– 오퍼랜드의 수가 2 개인 명령어 형식– 상업용 컴퓨터에서 가장 많이 사용– 주소필드는 처리장치 레지스터 혹은 기억장치 레지스터

• MOVE A, R1 R1 M[A]• ADD B, R1 R1 R1 + M[B]

– 장점• 3 주소 명령어에 비해 명령어의 길이가 짧아짐

– 단점• 같은 내용을 수행하기 위한 명령어의 수가 증가

– 3 주소 (1 개의 명령어 ) Vs 2 주소 (2 개의 명령어 )

ADD A, B, R1

Page 12: 명령어의 구성

오퍼랜드 수에 따른 명령어 형식 -1 주소

• 1- 주소 명령어 형식– 오퍼랜드의 수가 1 개인 명령어 형식– 오퍼랜드를 가져오거나 연산결과를 저장하기 위한

임시적인 장소로 누산기를 사용• LOAD A AC M[A]• ADD B AC AC+M[B]• STORE X M[X] AC

– 장점• 3 주소 명령어에 비해 명령어의 길이가 짧아짐

– 단점• 같은 내용을 수행하기 위한 명령어의 수가 증가

– 3 주소 (1 개의 명령어 ) Vs 1 주소 (3 개의 명령어 )

ADD A, B, X

R1

Page 13: 명령어의 구성

오퍼랜드 수에 따른 명령어 형식 -0 주소

• 0- 주소 명령어 형식– 기억장치 스택을 사용하며 주소 필드는 사용하지 않음

• TOS : 스택의 최상위• TOS-1 : 최상위의 바로 아래 항목

– 산술 연산의 수행• TOS-1 의 오퍼랜드를 가져와 연산을 수행한 후에 결과를 TOS 에

저장• 레지스터와 기억장치 주소를 사용하지 않음• PUSH A TOS M[A]• PUSH B TOS M[B]• ADD TOS TOS+TOS-1

• POP X M[X] TOS– 명령어의 길이가 짧아 기억공간을 적게 차지하나 많은

양의 정보가 스택과 주기억장치를 이동하므로 비효율적

ADD A, B, X

Page 14: 명령어의 구성

오퍼랜드 수에 따른 장단점

• 오퍼랜드 수가 많아질수록– 명령어가 복잡

• 레지스터의 수가 많아져 연산속도가 빨라짐• 프로그램이 짧아져 프로그램당 명령어 수가 감소

• 오퍼랜드 수가 적어질수록– 명령어가 간단

• 실행속도 증가• 프로그램 길이 증가

Page 15: 명령어의 구성

주소 지정 방식

• 주소지정방식– 프로그램 수행시 오퍼랜드의 지정 방법을 결정– 오퍼랜드를 실제 참조하기 전에 명령어의 오퍼랜드를

변경하거나 해석하는 규칙을 지정하는 형식 • 유효 주소

– 규칙의 적용에 의해 만들어진 오퍼랜드 주소– 주로 주소 필드의 값이 바로 오퍼랜드의 주소가 됨– 계산해야 할 때도 있음

• 별도의 연산필드를 가진 명령어 형식

연산코드 주소 혹은 오퍼랜드방식

– 연산코드 : 수행할 연산의 종류를 지정– 연산방식 : 연산에 필요한 오퍼랜드의 주소를 알아내는데 사용– 주소 필드 : 존재하면 기억 장치나 레지스터의 주소를 지정

Page 16: 명령어의 구성

의미 주소 지정 (implied mode)

• 주소필드를 필요로 하지 않는 방식– 연산코드에 지정된 묵시적 의미의 오퍼랜드를 지정

• 스택에서 ADD 와 같은 명령어는 스택의 TOS 항목과 그 아래 항목을 더하여 스택의 TOS 저장하는 명령어로서 오퍼랜드가 스택의 TOS 에 있다는 것을 묵시적으로 가정

• MUL X AC AC X M[X]– X 가 곱해지는 대상과 저장되는 위치가 모두 AC 인 것으로

묵시적 지정이 됨

• 장점– 오퍼랜드가 생략되므로 명령어의 길이가 짧아짐

• 단점– 명령어의 종류가 제한됨

Page 17: 명령어의 구성

즉치 주소 지정 (immediate mode)

• 오퍼랜드를 명령어 자체 내에 지정 – 오퍼랜드에 저장된 내용이 명령어에서 사용될 실제 데이터– 레지스터나 변수의 값을 초기화하는데 유용

• LDI 100, R1 R1 100– 레지스터 R1 에 데이터 100 을 초기화

• 장점– 오퍼랜드가 데이터이므로 기억장치 접근이 필요 없음

• 단점– 데이터의 크기가 오퍼랜드의 비트 수에 의해 제한

Page 18: 명령어의 구성

직접 주소 지정 (direct-addressing mode)

• 명령어의 주소필드에 직접 오퍼랜드의 주소를 저장시키는 방식 – 오퍼랜드에 저장된 내용이 가리키는 주소로 가야 실제

데이터• AC M[ADRS]• ADRS 의 값이 가지는 주소로 가서 실제 데이터를 가져다 AC

에 저장• 장점

– 기억장치를 한번만 접근• 단점

– 오퍼랜드의 길이에 의해 접근할 수 있는 기억장치의 주소공간에 한계가 있음

Page 19: 명령어의 구성

간접 주소 지정 (indirect-addressing mode)

• 명령어의 주소필드에 유효 주소가 저장되어 있는 기억장치의 주소를 기억 – 오퍼랜드가 가리키는 주소로 가서 다시 그 값이 가리키는 주소로

가야 실제 데이터• AC M[M[ADRS]] M[ADRS]• ADRS 의 값이 가지는 주소에서 다시 그 값을 주소로 하는 실제

데이터를 가져다 AC 에 저장• 장점

– 기억장치의 주소 공간이 CPU 가 한번에 접근할 수 있는 단어의 길이에 의해 결정

• 단점– 두 번의 기억장치 접근이 필요– 주소지정 방식을 나타내는 방식필드 (mode) 가 필요

• 직접 =0, 간접 =1

Page 20: 명령어의 구성

레지스터와 레지스터 간접주소지정 (register mode)

• 레지스터 방식– 오퍼랜드에 실제 오퍼랜드가 저장된 레지스터가 저장– 오퍼랜드에는 레지스터 번호가 저장 유효주소 = 레지스터번호 – 장점 : 오퍼랜드의 비트가 적고 레지스터를 접근하므로 고속– 단점 : 오퍼랜드가 중앙처리장치의 레지스터로 제한

• 레지스터 간접주소지정 방식– 레지스터가 실제 오퍼랜드가 저장된 기억장치의 주소 값을 갖고 있는

방식 • 오퍼랜드 자체가 아니라 오퍼랜드가 저장된 주소를 가짐• 유효 주소 = 지정된 레지스터에 있는 주소

– 자동 증가나 자동 감소 방식에 주로 사용– 장점 : 주소필드의 비트 수가 직접 주소를 지정하는 것보다 적다

Page 21: 명령어의 구성

상대 주소 지정

• 유효주소를 계산하기 위해 처리장치 내에 있는 특정 레지스터의 내용에 명령어 주소필드 값을 더하는 방식– 명령어가 지정하는 오퍼랜드가 다음 실행 명령어

위치에서 상대적으로 얼마만큼 위치에 있다는 의미– 분기형 명령어에서 주로 사용

• PC (program counter)– 상대 주소를 계산하기 위해 사용되는 레지스터– 다음에 실행될 명령어가 있는 곳의 주소를 가짐

• 유효주소의 계산 – 유효주소 = 명령어 주소부분의 내용 + PC 의 내용

• 명령어 주소 부분 : 부호 (+/-) 가 있는 수

Page 22: 명령어의 구성

인덱스된 주소 지정 (indexed mode)

• 인덱스된 주소지정– 인덱스 레지스터의 내용을 명령어 주소 부분에 더해서

유효주소 구함• 특정한 CPU 레지스터나 레지스터 set 중의 하나• 인덱스 레지스터는 명령어의 주소 영역에 대한 상대적인 위치

값을 가짐– 배열을 인덱싱할 때 주로 사용– 유 효 주 소 = 명 령 어 주 소 부 분 의 내 용 +

인덱스레지스터의 내용• 베이스 - 레지스터 모드

– 인덱스된 주소지정방식의 변형• 인덱스 레지스터 대신 베이스 - 레지스터를 사용• 베이스 레지스터는 베이스 주소를 가짐

Page 23: 명령어의 구성

주소지정 방식의 요약

주소지정 기호표기 레지스터 전송 주소 AC

즉치 LDA #NBR AC NBR 251 500

직접 LDA ADRS AC M[ADRS] 500 800

간접 LDA [ADRS] AC M[M[ADRS]] 800 300

상대 LDA $ADRS AC M[ADRS+PC] 752 600

인덱스 LDA ADRS(R1) AC M[ADRS+R1] 900 200

레지스터 LDA R1 AC R1 - 400

레지스터간접 LDA (R1) AC M[R1] 400 700

ADRS, NBR=500

다음 명령어

700

800

600

300

200

OP-code mode

기억장치

250251252

400

500

752

800

900

PC = 250

R1 = 400

AC

연산코드 : AC 에 적재하라

Page 24: 명령어의 구성

과 제

ADRS, NBR=200

다음 명령어

500

800

600

300

200

OP-code mode

기억장치

100101102

200

302

500

800

900

PC = 100

R1 = 200

AC

연산코드 : AC 에 적재하라

주소지정 주소 AC

즉치

직접

간접

상대

인덱스

레지스터레지스터간접

Page 25: 명령어의 구성

명령어의 종류

• 기본적인 명령어 집합– 데이터 전송명령어 – 데이터 처리명령어 – 프로그램 제어명령어

Page 26: 명령어의 구성

데이터 전송 명령어

• 2 진 정보의 내용을 변화시키지 않고 한 장소에서 다른 장소로 데이터를 전송하는 것– 레지스터간 , 레지스터와 기억장치간 , 기억장치간– 입출력 명령어가 포함

• 대표적인 명령어전송 명령어 니모닉 기 능Load LD 기억장치에서 레지스터로 전송Store ST 레지스터에서 기억장치로 전송Move MOVE 레지스터에서 다른 레지스터로 전송Exchange XCH 두 레지스터간 또는 레지스터와 기억장치간 데이터 교환Push PUSH 레지스터에서 스택으로 데이터 전송

Pop POP 스택에서 레지스터로 전송

Input IN 입력장치에서 레지스터로 전송Output OUT 레지스터에서 출력장치로 전송

Page 27: 명령어의 구성

데이터 처리 명령어

• 데이터에 대한 연산을 실행하고 컴퓨터에 계산 능력을 제공– 산술 명령어

• 사칙연산에 대한 산술 명령어를 제공• 1 증가 , 1 감소 , 2 의 보수 등의 연산을 포함

– 논리와 비트 처리 명령어• 레지스터나 기억장치에 저장된 단어에 대해 2 진 연산을 수행• 오퍼랜드 각 비트를 독립적으로 간주하며 각 비트를 부울식의 한

변수로 처리• Clear, Set, Complement, AND, OR, …

– 쉬프트 명령어• 오퍼랜드의 비트를 왼쪽이나 오른쪽으로 이동• 논리적 쉬프트 : 남는 비트는 0 으로 채움• 산술적 쉬프트 : 부호 비트는 고정 , 왼쪽은 부호로 오른쪽은 0

으로• 회전형 쉬프트 : 버려지는 비트는 반대쪽으로 순환

Page 28: 명령어의 구성

프로그램 제어 명령어

• 프로그램 명령어는 기억 장치에 연속적으로 저장됨– 제어장치에 의해 연속적으로 읽어 하나씩 처리

• 명령어를 가져올 때마다 PC 가 자동으로 1 씩 증가되어 다음 명령어의 주소를 갖게 됨

• 프로그램 제어 명령어의 수행– PC 의 값과 제어 흐름이 바뀜– 이전 계산 결과에 따라 흐름을 제어하거나 다른 프로그램 세그먼트로 분기할

수 있는 능력을 제공하기 때문에 가능

제어 명령어 니모닉 기 능Branch BR 조건 혹은 무조건적으로 유효 주소로 분기Jump JMP 조건 혹은 무조건적으로 유효 주소로 분기Skip SKP 조건이 만족되면 다음 명령어를 수행하지 않고 넘어감Call CALL 서브루틴 호출Return RET 서브루틴 실행 후 복귀Compare CMP 두 오퍼랜드의 뺄셈을 통해 상태 레지스터의 값을 변환Test TEST 논리 AND 연산만 구현