47
IT CookBook, 컴컴컴 컴컴컴 컴컴 2.0 중중중중중중중 중중중

중앙처리장치의 명령어

  • Upload
    uttara

  • View
    66

  • Download
    0

Embed Size (px)

DESCRIPTION

12. 중앙처리장치의 명령어. IT CookBook, 컴퓨터 구조와 원리 2.0. 학습목표. 어셈블리 언어의 형식과 동작을 이해한다 . 명령어 사이클을 이해한다 . 명령어 집합을 이해하고 명령어의 형식에 따른 특징을 학습한다 . 오퍼랜드 형태에 따라 0 ~ 3 주소 명령어 프로그램을 학습한다. 목 차. 어셈블리 프로그램의 이해 명령어 사이클 명령어 집합 축소 명령어 집합 컴퓨터의 개념. 01 어셈블리 프로그램의 이해. - PowerPoint PPT Presentation

Citation preview

Page 1: 중앙처리장치의 명령어

IT CookBook, 컴퓨터 구조와 원리 2.0

중앙처리장치의 명령어

Page 2: 중앙처리장치의 명령어

2/47

어셈블리 언어의 형식과 동작을 이해한다 .

명령어 사이클을 이해한다 .

명령어 집합을 이해하고 명령어의 형식에 따른 특징을 학습한다 .

오퍼랜드 형태에 따라 0 ~ 3 주소 명령어 프로그램을 학습한다 .

학습목표

Page 3: 중앙처리장치의 명령어

3/47

어셈블리 프로그램의 이해

명령어 사이클

명령어 집합

축소 명령어 집합 컴퓨터의 개념

목 차

Page 4: 중앙처리장치의 명령어

4/47

01 어셈블리 프로그램의 이해

• 컴퓨터 프로그래밍 언어는 표현하는 방식에 따라 고급 프로그래밍 언어 , 저급 프로그래밍 언어가 있다 .

고급 프로그래밍 언어 (high level programming language)• 문법이 인간의 언어 체계와 유사하여 프로그램을 작성하기가 용이하다 .• 컴파일러 (compiler) 나 인터프리터 (interpreter) 에 의해 기계어로 번역되어

실행된다 . • 대표적인 고급언어로는 FORTRAN, PASCAL, COBOL, C 언어 등이 있다 . • 컴파일과 인터프리터의 과정

Page 5: 중앙처리장치의 명령어

5/47

01 어셈블리 프로그램의 이해

저급 프로그래밍 언어 (low level programming lan-guage)

• 컴퓨터 내부에서 바로 처리 가능한 프로그래밍 언어로 , 일반적으로 기계어와 어셈블리어를 일컫는다 .

기계어 (machine language)• 컴퓨터가 직접 해독할 수 있는 2 진 숫자 (binary digit) 로 표현한 언어다 . • 컴퓨터 명령 형식은 기계어이며 , 컴퓨터는 이 기계 명령어를 해독하여

동작을 수행한다 . • 컴퓨터에 따라 고유의 명령 형식이 존재한다 . 기계어 구조도 컴퓨터에 따라

구성된다 . • 기계어의 명령 단위는 명령 코드부와 주소부로 나누어진다 . • 기계어는 프로그램 작성이 어렵고 , 많은 노력과 시간이 필요하다 .• 변수 para 에 데이터 3 을 저장하는 고급 언어의 표현 예 .

para = 3

• 컴파일러를 통해서 기계어로 변환하면 다음의 비트 형태로 표시할 수 있다 . 11000111 00000110 00000000 00000000 00000011 00000000

Page 6: 중앙처리장치의 명령어

6/47

01 어셈블리 프로그램의 이해

어셈블리 (Assembly) 언어 기계어 프로그래밍의 비효율성을 극복하기 위하여 기계어의 비트

형식을 연상 코드 (Mnemonic code) 로 나타낸 것• 어셈블리어는 기계어를 사람이 사용하는 언어에 가깝게 문자로 기호화해서

나타낸다 . • 기계어와 마찬가지로 중앙처리장치 형태에 따라 내용이 모두 다르므로

어셈블리언어로 작성한 프로그램들도 한 종류의 중앙처리장치에서만 동작하고 다른 종류에서는 실행되지 않는다 .

어셈블러 • 어셈블리 언어를 번역하여 오브젝트

코드를 생성하는 프로그램이다 .• 예를 들어 , 기계어 ‘ para = 3’ 를 어셈블리어로 나타내면 ” MOV para, 3”

이 표현은 3 이라는 데이터를 para 라는 기억 장소로 이동시키라는 의미로 쉽게 이해할 수 있다 .

• 어셈블리 과정은 컴파일 과정보다 빨리 수행되는데 , 어셈블리어가 기계어 체계와 유사하기 때문이다 .

Page 7: 중앙처리장치의 명령어

7/47

01 어셈블리 프로그램의 이해

어셈블리 관련 명령어

Page 8: 중앙처리장치의 명령어

8/47

01 어셈블리 프로그램의 이해

8086 어셈블리 언어의 명령 형식

레이블 (Label) 부• JUMP, LOOP 와 같은 순환이나 반복명령어에서 해당 레이블로 프로그램

카운터를 이동시킬 때 사용한다 . 따라서 일반적인 명령어에서는 생략된다 . • 레이블을 생성할 때는 8 문자 이내의 영문자 / 숫자를 사용하며 , 이름 중에

공백이 있으면 안 된다 . 예약 명령어는 사용할 수 없다 .

연산 (Operation) 부• 명령의 니모닉 및 어셈블러 디렉티브 (directive) 등을 쓰는 곳이다 . • 니모닉은 어셈블리 언어에서 예약되어 있는 명령어를 말하며 , 디렉티브는

프로그램 실행과 관계없이 어셈블러에게 정보를 제공해 주는 지시어를 말한다 . 결과적으로 연산부는 명령어나 지시어가 위치하는 곳이다 .

Page 9: 중앙처리장치의 명령어

9/47

01 어셈블리 프로그램의 이해

오퍼랜드 (Operand) 부 또는 피 연산자부• 레지스터 이름 , 정수 , 라벨 , 연산자 , 주소 등을 쓰는 곳이다 .

주석문 (Command) 부• 해당 프로그램 줄 (line) 에 대한 설명을 표기하는 곳이다 . • 기재할 때는 세미콜론 (;) 으로 시작하며 , 어셈블러는 주석문 부를 모두

무시하기 때문에 아무데나 사용하여도 된다 .

Page 10: 중앙처리장치의 명령어

10/47

01 어셈블리 프로그램의 이해

어셈블리 프로그램 피 연산자는 모두 기억장치의 주소

• 기억장치 250 번지에서 데이터를 누산기에 적재한다 .

• 기억장치 251 번지의 데이터와 덧셈을 수행하고 결과를 다시 누산기에 저장한다 .

• 기억장치 251 번지에 결과를 저장한다 . • 프로그램의 주소 170 번지로 점프한다 .

주기억장치 , CPU 레지스터 , ALU 의 동작 과정• 100 번지의 명령어 LOAD 250 은 기억장치 100 번지에서 인출되어 명령어

레지스터 (IR) 에 저장한다 . • 이 명령어가 해독되어서 기억장치 250 번지의 데이터가 누산기 (AC) 로

이동하게 된다 . • 프로그램 카운터 (PC) 가 다음 명령어를 수행하기 위해서 하나 증가한다 .

PC = PC + 1 = 101

Page 11: 중앙처리장치의 명령어

11/47

01 어셈블리 프로그램의 이해

LOAD 명령어의 동작

• 100 번지 명령어의 동작• [ 단계 1] 은 명령어 인출 단계이고 , [ 단계 2] 는 명령어가 실행되는 단계다 .

Page 12: 중앙처리장치의 명령어

12/47

01 어셈블리 프로그램의 이해

ADD 명령어의 동작 • PC 에 저장되어 있는 데이터 값 101 에 의해서 두 번째 명령어가 기억장치

101 번지에서 인출되어 IR 에 저장된다 . • 누산기 (AC) 의 내용과 251 번지의 내용을 더하고 , 결과를 다시 누산기에

저장하게 된다 . • 그 다음 PC 의 내용은 다음 명령어를 위해 102 로 증가하게 된다 .

Page 13: 중앙처리장치의 명령어

13/47

01 어셈블리 프로그램의 이해

STORE 명령어의 동작 • PC 에 의해서 세 번째 명령어가 102 번지로부터 인출되어 IR 에 저장되고

해독된다 . • 명령어 내용에 따라서 AC 의 내용이 기억장치 251 번지에 저장된다 .

그리고 PC 의 내용은 103 으로 증가하게 된다 .

Page 14: 중앙처리장치의 명령어

14/47

01 어셈블리 프로그램의 이해

JUMP 명령어의 동작 • 네 번째 명령어가 103 번지에서 인출되어 IR 에 저장된 후 명령어가

해독된다 . • 분기될 목적지 주소 , 즉 IR 의 하위 부분 (170) 이 PC 로 적재된다 . • 다음 명령어 인출 사이클에서는 170 번지의 명령어가 인출되어 실행될

것이다 .

Page 15: 중앙처리장치의 명령어

15/47

02 명령어 사이클

• 프로그램 실행 과정에서 명령어는 1 단계에서 명령어 인출을 수행하고 2 단계에서는 명령어를 실행하였다 .

명령어 사이클 (instruction cycle)• 명령어는 두 단계를 하나의 사이클로서 해서 명령어를 수행한다 . • 명령어 사이클을 구성하는 명령어 인출 단계는 인출 사이클 (fetch cycle) 이라고

하며 , 명령어 실행 단계는 실행 사이클 (execute cycle) 이라고 한다 .

명령어 사이클의 동작과정

Page 16: 중앙처리장치의 명령어

16/47

02 명령어 사이클

프로그램 실행의 계층 구조 • 인출 사이클과 실행 사이클 동작은 여러 개의 단계 (step) 들로 구성된다 . • 각 단계에서 실제 수행되는 동작을 마이크로 - 연산 (Micro-Operations) 이라 한다 .• 명령어를 실행하기 위한 가장 기본 단위의 프로그램 수행이다 . 그래서 원자

연산 (atomic operation) 이라고도 한다

프로그램이 실행되는 계층 구조• 명령어들은 명령어 사이클의 집합으로 구성된다 . • 명령어의 사이클에는 두 개의 명령어 부 사이클이 존재한다 . • 각 부 사이클의 수행도 여러 단계로 구분되며 이 구분이 마이크로 연산이다 .

Page 17: 중앙처리장치의 명령어

17/47

02 명령어 사이클

명령어 인출 사이클 (Fetch Cycle) 인출 사이클은 중앙처리장치가 기억장치에서 명령어를 읽어오는 단계

• 프로그램 카운터 (PC) 는 다음에 인출할 명령어의 주소를 가지고 있다 . • CPU 는 PC 가 가리키는 기억장소에서 명령어를 인출하고 PC 내용을 증가한다 . • 인출 명령어는 IR 에 적재되고 CPU 는 이를 해석하고 , 요구된 동작을 수행한다 .

명령어 인출 사이클에 대한 마이크로 연산

• 1 인출 사이클에서는 t0, t1 그리고 t2 의 중앙처리장치 클록 주기가 필요하다 .

• 중앙처리장치 클록이 100 ㎒ ( 클록 주기 = 10 ㎱ ) 이면 , 인출 사이클 시간은 10 ㎱ × 3 = 30 ㎱ 소요된다 .

Page 18: 중앙처리장치의 명령어

18/47

02 명령어 사이클

인출 사이클에서 주소와 명령어 흐름 • t0 에서는 주소가 기억장치로 전달되고 있다 . t1, t2 에서는 기억장치에서

인출된 명령어가 MBR 을 통해서 IR 로 전달된다 .

Page 19: 중앙처리장치의 명령어

19/47

02 명령어 사이클

명령어 실행 사이클 (Execution Cycle)• 명령어를 실제적으로 실행하는 단계다 .• 중앙처리장치와 기억장치 간에 데이터가 전송된다 . • 중앙처리장치와 입출력 모듈 간에 데이터가 전송된다 . • 데이터에 대하여 지정된 산술 혹은 논리 연산이 수행된다 . • 제어동작으로 점프 (jump) 와 같이 실행될 명령어의 순서가 변경될 때

사용된다 .

실행 사이클에서 수행되는 마이크로 - 연산들은 명령어에 따라 다름 ADD 명령어의 실행 사이클

• 기억장치에 저장된 데이터를 AC 의 내용과 더하고 , 그 결과를 다시 AC 에 저장하는 명령이다 .

Page 20: 중앙처리장치의 명령어

20/47

02 명령어 사이클

ADD 명령어 실행 사이클 동안의 정보 흐름 • t0 에서는 주소가 기억장치로 전달되는 것을 보여주고 , t1, t2 는 명령어와

데이터의 흐름을 보여준다 .

Page 21: 중앙처리장치의 명령어

21/47

03 명령어 집합

중앙처리장치가 수행할 동작을 정의하는 2 진수 코드로 된 명령들의 집합을 명령어 집합 (instruction set) 라고 한다 . • 기계 명령어 (machine instruction) 라고도 부르며 , 일반적으로 어셈블리

코드 (assembly code) 형태로 표현된다 . • 명령어 집합은 중앙처리장치의 사용목적 , 특성에 따라 결정된다 .

명령어 집합 설계를 위해 결정되어야 할 사항들 • 연산 종류 : 중앙처리장치가 수행할 연산들의 수와 종류 및 복잡도 등을

결정해야 한다 . • 데이터 형태 : 연산을 수행할 데이터들의 형태 , 데이터의 길이 ( 비트 수 ),

수의 표현 방식 등을 고려해서 명령어들을 만들어야 한다 . • 명령어 형식 : 명령어의 길이 , 오퍼랜드 필드들의 수와 길이 등을 고려한

다 . • 주소지정 방식 : 피연산자의 주소를 지정하는 방식을 고려해야 한다 .

Page 22: 중앙처리장치의 명령어

22/47

03 명령어 집합

명령어 집합의 특성 명령어는 연산 코드 (Operation Code), 오퍼랜드 (Operand) 로 구성

• 연산 코드는 수행될 연산을 지정하는데 연산자로고도 하며 , 함수 연산 기능 , 전달 기능 , 제어 기능 , 입출력 기능으로 분류

• 오퍼랜드는 연산을 수행하는 데 필요한 데이터 혹은 데이터의 주소를 나타낸다 . 중앙처리장치의 레지스터 , 주기억장치 , 혹은 입출력장치 등에 저장된 데이터 또는

주소가 된다 . 다음 명령어 주소 (Next Instruction Address) 가 위치할 수 있다 .

Page 23: 중앙처리장치의 명령어

23/47

03 명령어 집합

명령어 형식 (instruction format)• 명령어를 표현하는 형식은 여러 개의 필드 (field) 들로 나누어지며 각 필드는

일련의 비트 패턴에 의해 표현된다 . • 명령어 내 필드들의 수와 배치 방식 및 각 필드의 비트 수에 의해서 명령어가

표현되는데 , 이러한 표현 방법을 명령어 형식 (instruction format) 이라고 한다 .

• 세 개의 필드들로 구성된 16 비트 명령어 하나의 연산코드와 두 개의 오퍼랜드가 존재하며 , 16 비트 명령어 길이가 하나의

단어 (Word) 가 된다 .

Page 24: 중앙처리장치의 명령어

24/47

03 명령어 집합

명령어 집합에서 연산의 종류• 명령어가 수행하는 연산은 함수 연산 기능 , 전달 기능 , 입출력 기능 , 제어

기능의 연산 등이 있다 .

• 함수 연산 기능 (Functional Operation) 중앙처리장치에서 명령어 집합은 함수의 연산 기능을 담당하는 산술 연산이나 논리

연산 명령 등이 해당된다 .

• 전달 기능 (Transfer operation) CPU 와 주기억장치 사이 , CPU 내의 레지스터 간의 정보교환과 적재 , 저장기능을

수행 . 전달 기능의 명령어에서는 정확한 데이터 전송을 위해서 근원지 오퍼랜드와 목적지 오퍼랜드의 위치가 명시되어야 한다 .

• 입출력 기능 (Input/Output Operation) 입출력 명령어는 중앙처리장치와 외부 장치들 간의 데이터 이동을 위한 명령어다 .

분리형 입출력의 경우에는 별도의 입출력 명령어를 사용하지만 기억장치 - 사상 입출력의 경우에는 일반적인 데이터 이동 명령어들을 동일하게 사용한다 .

• 제어 기능 (Control Operation) 제어장치에서 수행되며 프로그램의 수행흐름을 제어하는 데 사용 . 프로그램 내의

명령어의 실행 순서를 변경하는 명령어로 분기 , 서브루틴 호출이 대표적이다

Page 25: 중앙처리장치의 명령어

25/47

03 명령어 집합

분기 명령어• 오퍼랜드가 다음에 실행할 명령어 주소를 가지고 있으며 , 명령어 내용에

따라서 무조건 오퍼랜드의 주소로 이동하거나 조건 만족 시에만 이동한다 . • 조건 분기는 조건 코드 (condition code) 와의 부합 여부에 따라서 분기가

결정되며 , 조건 코드 에는 zero(0), 부호 (+, -), 오버플로우 플래그 등이 있다 .

다양한 분기의 형태• 203 번지의 BRZ(branch if zero) 211

조건코드가 0 이면 211 로 분기• 210 번지의 BR 202

무조건 분기 명령어로 무조건 202 번지로 분기하라는 명령

• 225 번지의 BRE(branch if equal) R1, R2, 235 실행 중에 비교 (검사 ) 와 분기 처리를 수행한다 . 그래서 레지스터 R1 과 레지스터 R2 의 내용이

같다면 235 번지로 분기한다 .

Page 26: 중앙처리장치의 명령어

26/47

03 명령어 집합

서브루틴 호출 명령어• 호출 명령어 (CALL 명령어 ) 는 현재 PC 내용을 스택에 저장하고

서브루틴의 시작 주소로 분기하는 명령어다 . • 복귀 명령어 (RET 명령어 ) 는 CPU 가 원래 실행하던 프로그램으로

되돌아가도록 하는 명령어다 .

CALL 명령어에 대한 마이크로 - 연산

RET 명령어의 마이크로 - 연산

t0 : MBR ← PC

t1 : MAR ← SP, PC ← X

t2 : M[MAR] ← MBR, SP ← SP - 1 

t0 : SP ← SP + 1

t1 : MAR ← SP

t2 : PC ← M[MAR]

Page 27: 중앙처리장치의 명령어

27/47

03 명령어 집합

서브루틴의 호출과 복귀과정

Page 28: 중앙처리장치의 명령어

28/47

03 명령어 집합

서브루틴 수행 과정에서 스택의 변화

Page 29: 중앙처리장치의 명령어

29/47

03 명령어 집합

오퍼랜드 형태와 수에 따른 명령어 분류 오퍼랜드에 저장될 데이터 형태는 주소 (addresses), 수 (numbers),

문자 (characters), 논리 데이터 (logical data) 등이 될 수 있다 . • 주소 (addresses) : 주기억장치의 주소이거나 레지스터의 주소다 . • 수 (numbers) : 정수 혹은 고정 - 소수점 수 , 부동 - 소수점 수 , BCD 등을

사용 • 문자 : ASCII 코드가 사용된다 .• 논리 데이터 (logical data) : 비트 (bit) 혹은 플래그 (flag) 등으로

사용된다 .

오퍼랜드가 주소를 나타낼 때 , 오퍼랜드 수에 따라 3, 2, 1, 0 주소 방식이 있다 . 0 주소 방식은 스택을 사용하는 컴퓨터에서 사용된다 .

Page 30: 중앙처리장치의 명령어

30/47

03 명령어 집합

주소 수에 따른 명령어 분류

주소 수에 따른 명령어 표현 ( 어셈블리어 표현 )

Page 31: 중앙처리장치의 명령어

31/47

03 명령어 집합

1- 주소 명령어 (1-address instruction) 오퍼랜드 한 개만 포함하는 명령어로서 , 오퍼랜드 형태는 주소다 . 1- 주소 명령어의 형식의 예

• 명령어의 총 길이는 16 비트로 그 중에서 연산 코드가 5 비트이고 기억장치 주소는 11 비트다 .

• 주소지정 가능한 기억장치의 수는 2048(= 211) 개다 .

어셈블리 언어로 1- 주소 명령어를 표현한 예LOAD X ; AC ← M[X](X 번지의 데이터를 누산기에 저장 )

• LOAD 는 연산 코드에 해당되며 , X 는 유일한 주소로 존재한다 .

Page 32: 중앙처리장치의 명령어

32/47

03 명령어 집합

2- 주소 명령어 (two-address instruction) 오퍼랜드 2 개를 포함하는 명령어 형식으로 오퍼랜드 2 개 모두 주소를

저장하데 사용 2- 주소 명령어 형식 예 :

• 명령어의 길이는 16 비트이고 연산 코드는 5 비트다 .

• (a) 는 두 오퍼랜드 모두 레지스터 번호인 경우이고 , (b) 는 하나의 오퍼랜드가 레지스터이고 또 다른하나가 기억장치 주소인 경우의 명령어 형식이다 .

어셈블리 언어로 2- 주소 명령어를 표현한 예 : X, Y 의 두 개 변수가 주소

MOV X, Y ; M[X] ← M[Y]• (Y 번지의 기억장치 데이터를 X 번지의 기억장치로 이동 )

Page 33: 중앙처리장치의 명령어

33/47

03 명령어 집합

3- 주소 명령어 (three-address instruction) 오퍼랜드 3 개가 존재하며 레지스터의 주소를 저장하는 명령어 형식 명령어 형식의 예

• 명령어의 총 길이는 16 비트이고 연산코드는 4 비트 , 3 개의 레지스터의 길이는 각 4 비트씩이다 . 각 16(= 24) 개의 레지스터의 번호를 저장한다 .

어셈블리 언어로 3- 주소 명령어를 표현한 예 • X, Y, Z 가 주소를 나타낸다 .

  ADD X, Y, Z ; M[X] ← M[Y] + M[Z]

(Y 와 Z 번지의 데이터를 덧셈해서 X 번지에 저장 )

Page 34: 중앙처리장치의 명령어

34/47

03 명령어 집합

명령어 형식이 프로그래밍에 미치는 영향• 오퍼랜드의 개수 0, 1, 2, 3 에 따라서 작성된 프로그램의 특성이 달라진다 .

3 가지 주소 형식으로 수식 연산의 프로그램 비교

 X = B *( C+ D * E – F / G )

프로그램에서 사용되는 어셈블리 명령어

Page 35: 중앙처리장치의 명령어

35/47

03 명령어 집합

0- 주소 명령어를 사용한 프로그램 스택을 이용하여 X=B*(C+D*E–F/G) 연산을 수행하는 프로그램

• 명령어의 길이는 12 개로 프로그램이 길다 .

Page 36: 중앙처리장치의 명령어

36/47

03 명령어 집합

스택에서 0- 주소 명령어 프로그램의 동작

Page 37: 중앙처리장치의 명령어

37/47

03 명령어 집합

1- 주소 명령어를 사용한 프로그램• 프로그램의 전체길이는 9 이며 , M[A] 형식은 기억장치 A 번지에 저장된

데이터 내용을 나타낸다 . • T 는 기억장치 내의 임시 저장장소의 주소를 나타낸다 .

Page 38: 중앙처리장치의 명령어

38/47

03 명령어 집합

2- 주소 명령어를 사용한 프로그램• M[A] 는 기억장치 A 번지의 내용을 나타내며 , R1, R2 는 CPU 내의

레지스터를 나타낸다 . • 2- 주소 명령어를 사용하는 프로그램에서는 오퍼랜드가 2 개 존재하는 것을 확인할 수 있다 .

• 프로그램의 길이는 8 이 된다 . 1- 주소 명령어와 비교해 보면 그 길이가 줄어든 것을 확인 할 수 있다 .

Page 39: 중앙처리장치의 명령어

39/47

03 명령어 집합

3- 주소 명령어를 사용한 프로그램• 세 개의 오퍼랜드가 사용되며 , 이 오퍼랜드들은 모두 주소를 나타낸다 . • R1 과 R2 는 CPU 내의 레지스터다 . 전체 프로그램의 길이는 5 로 , 앞의

두 방법과 비교해서 길이가 짧아졌다 .

주소 개수에 따른 장단점• 주소 수가 많아질수록 이를 저장할 오퍼랜드의 수가 많아지기 때문에

명령어가 더 복잡해지는 것을 알 수 있다 . • 레지스터 수가 많아져 연산 속도가 빨라지고 프로그램이 짧아져서 ,

프로그램 당 명령어 수가 감소하게 된다 . • 주소 수가 적은 명령어는 오퍼랜드의 수가 적어서 간단하므로 명령어 인출과

실행 속도가 높아진다 . 그러나 프로그램의 길이가 증가한다 .

Page 40: 중앙처리장치의 명령어

40/47

03 명령어 집합

명령어 형식• 명령어 내의 비트 배열을 명령어 형식이라고 한다 . 연산 코드의 비트 길이와

오퍼랜드의 수와 길이에 따라 명령어 형식이 달라 질 수 있다 .

명령어 길이에 따른 명령어• 기억장치와 관련된 명령어 길이

기억장치 용량과 기억장치 조직에 의해서 주소를 지정하는 오퍼랜드 부분이 영향을 받게 된다 . 기억장치의 용량이 많은 경우 , 주소의 수가 많아지므로 오퍼랜드의 비트 수가 많아져야 하기 때문이다 .

• 버스 조직 (bus structure) 에 따른 명령어 길이 한 번에 데이터를 운반할 수 있는 능력을 나타내는 것이 버스 조직이므로 , 데이터를

전송하는 명령어의 경우 이에 맞는 명령어의 길이가 필요할 것이다 .

• CPU 의 복잡도 (complexity) 와 CPU 의 속도에 따른 명령어 길이 명령어는 CPU 가 한 번에 읽고 쓸 수 있는 단위로 수행된다 . 그리고 CPU 가 한

번에 읽고 쓸 수 있는 비트 수를 단어 (Word) 라고 한다 . 따라서 단어의 크기에 따라서 명령어의 길이가 정해진다 .

Page 41: 중앙처리장치의 명령어

41/47

03 명령어 집합

명령어의 종류에 따른 명령어 형식 명령어 내 비트들의 할당에 영향을 주는 요소들

• 주소지정 방식의 수 : 명시적일 경우 한 개 또는 그 이상의 비트들이 필요하다 .• 명령어 내 오퍼랜드의 수 : 오퍼랜드가 주소를 나타내는 경우 , 주소의 수가

적으면 프로그램의 길이가 더 길어지고 복잡해진다 . • 오퍼랜드 저장에 사용되는 레지스터의 수 : 처리할 데이터를 CPU 로 가져오는 데

사용할 레지스터다 . AC( 누산기 ) 를 사용하는 경우 오퍼랜드 주소들 중의 한 개는 묵시적으로 지정되어 , 명령어 비트를 소비하지 않는다 . 따라서 , 오퍼랜드 참조를 위하여 사용되는 레지스터들이 많아 질수록 사용되는 비트들의 수는 적어진다 .

• 레지스터 집합의 수 : 보통 8 또는 16 개의 범용 레지스터 집합을 가지고 있다 . 데이터의 저장과 변위 주소 지정을 위한 주소의 저장에 사용할 수 있다 . 레지스터 집합들이 기능적으로 분리되면 명령어에서 사용되는 비트의 수가 줄어든다 .

• 주소 영역 (address range) : 액세스할 수 있는 주소 범위는 주소 비트들의 수와 관계가 있다 . 직접 주소 지정은 심각한 제한 요인이 된다 .

• 주소 세분화 (address granularity) : 주소 지정 단위로 바이트 혹은 단어를 사용하면 문자 조작을 더 편리하게 할 수 있다 . 그러나 일정한 크기의 기억장치에 대하여 주소 비트들이 더 많이 필요하다 .

Page 42: 중앙처리장치의 명령어

42/47

03 명령어 집합

가변 길이 명령어 명령어 형식에서 서로 다른 길이를 가지는 경우를 가변 길이 명령어라고 함 길이가 서로 다른 더 많은 종류의 연산 코드들을 쉽게 제공해줄 수 있음 레지스터와 기억장치 참조들을 주소 지정 방식들과 다양하게

결합함으로써 주소 지정이 더욱 융통적임 CPU 의 복잡도가 증가하는 단점이 있음

Page 43: 중앙처리장치의 명령어

43/47

04 축소 명령어 집합 컴퓨터의 개념

• 전통적인 컴퓨터의 중앙처리장치에서는 명령어가 복잡하기 때문에 명령어를 해석하는 데 시간이 오래 걸리며 , 명령어 해석에 필요한 회로도 복잡하다 .

• 중앙처리장치가 명령어를 수행하려면 여러 개의 클록이 소요되어 처리속도가 느려진다 . 이러한 컴퓨터의 구조를 복잡 명령어 집합 컴퓨터 (CISC, Com-plex Instruction Set Computer) 라고 한다 .

• 최근에는 중앙처리장치의 명령어 개수를 줄여 하드웨어 구조를 좀 더 간단하게 만드는 방식으로 축소 명령어 집합 컴퓨터 (RISC, Reduced In-struction Set Computer) 구조가 사용되고 있다 .

• RISC 는 CISC 보다 구조가 단순하기 때문에 복잡한 연산도 적은 수의 명령어들을 조합하여 수행할 수 있으므로 처리 속도를 향상시킬 수 있다 .

Page 44: 중앙처리장치의 명령어

44/47

04 축소 명령어 집합 컴퓨터의 개념

복잡 명령어 집합 컴퓨터 복잡한 명령어 집합을 갖는 중앙처리장치 구조를 복잡 명령어 집합

컴퓨터 (CISC) 라고 한다 . • 마이크로 프로그래밍을 통하여 다양한 길이의 명령어 형식 등의 여러 가지의

명령어와 번지지정 모드를 구현한 할 수 있다 . • 연산에 대해서는 레지스터와 레지스터 연산 , 레지스터와 메모리 연산 , 메모리와 메모리 연산을 모두 갖추고 있는 것이 보통이다 .

• 오퍼랜드는 2 개에서 3 개까지 지정할 수 있는 경우가 많다 . 이것은 3- 주소 명령어 한 개를 이용할 수 있다 .

CISC 는 처리속도를 향상시키기 위해서 마이크로 프로그램의 프로시저(procedure) 나 서브루틴 등을 빠른 속도의 ROM 에 마이크로 코드화하여 구현하였다 .

Page 45: 중앙처리장치의 명령어

45/47

04 축소 명령어 집합 컴퓨터의 개념

복잡 명령어 집합 컴퓨터의 사용에 대한 단점• 고급 언어 프로그램을 기계언어로 변경해주는 컴파일러에서 컴파일 과정이

단순화되면 그 만큼 컴퓨터 성능이 유리하다 . 그러나 복잡 명령어 집합 컴퓨터 기반의 프로그램에서는 프로그램 코드의 수를 최소화하고 , 명령어의 실행 횟수를 줄이는 등의 단순화 작업을 통한 최적화가 쉽지 않다 .

• 컴퓨터 관련 기술의 발전으로 기억장치의 용량은 커지고 가격은 하락하고 있다 . 이런 상황에서 CISC 는 짧은 프로그램을 생성해서 , 프로그램이 기억장치를 적게 차지하므로 자원이 절약된다고 말 할 수 없다 . 기억장치의 가격이 하락함에 따라 CISC 의 짧은 프로그램의 장점은 효력이 없다는 것이다 .

• 또한 한 개의 명령어를 실행하는 것이 여러 개의 기본 명령어들보다 더 빨리 실행되므로 CISC 가 명령어 실행이 빠르다고 생각할 수 있으나 속도의 증가는 복잡한 기계 명령어의 능력에 기인한 것이 아니라 고속의 제어 장치가 존재하기 때문이다 . CISC 가 엄밀하게 빠른 실행을 만드는 것이 아니라는 것이다 .

• 이상으로 컴파일러의 단순화 측면 , 짧은 프로그램 측면 , 빠른 실행속도 측면의 분석을 통해서 여전히 제어기의 구성이 복잡하고 명령 단위의 수행 시간도 길어지게 되면서 고속을 요구하는 현대 컴퓨터에 최적의 구성을 만족하지 못한다 .

Page 46: 중앙처리장치의 명령어

46/47

04 축소 명령어 집합 컴퓨터의 개념

축소 명령어 집합 컴퓨터 중앙처리장치의 명령어 개수를 줄여 하드웨어 구조를 좀 더 간단하게

만드는 방식을 축소 명령어 집합 컴퓨터 (RISC) 라고 함 RISC 구조의 특징

• RISC 는 명령어가 단순하므로 사이클당 한 명령어 실행 (one instruction per cycle) 이 가능하다 . 즉 , 기계 사이클당 하나의 기계어가 실행된다 . 결과적으로 CISC 의 마이크로 명령어보다 덜 복잡하고 , 또한 그만큼 빨리 수행될 것이다 .

• 단순 명령어 특징은 많은 비트를 필요로 하지 않아서 , 레지스터간 연산(register to register operations) 이 가능하다 . 기억장치를 액세스하는 동작들이 간단한 LOAD 와 STORE 명령어에 의해서 레지스터 연산으로 대체된다 . 또한 제어장치도 간단해질 것이다 .

• 주소 지정방식에 있어서도 , 단순하게 레지스터 주소 지정 방식을 사용하므로 적은 수의 간단한 주소지정 방식을 사용 할 수 있다 .

• 적은 수의 단순한 명령어 형식을 사용할 수 있다 . 그래서 연산 코드의 해독과 레지스터 오퍼랜드의 액세스가 동시에 일어나는 게 가능하다 .

RISC 는 대부분의 현대 프로세서 디자인에 채택되고 있고 , 또 비교적 전력 소모가 적기 때문에 임베디드 프로세서에도 채택되고 있다 .

Page 47: 중앙처리장치의 명령어

Thank YouIT CookBook, 컴퓨터 구조와 원리 2.0