ISA-1 - 이상정

Download Report

Transcript ISA-1 - 이상정

3. 명령어 집합 구조

순천향대학교 정보기술공학부 이상정

컴퓨터 구조

3장 학습내용

명령어 집합 구조(ISA,Instruction Set Architecture)

 프로그래밍 언어의 여러 수준 

어셈블리어 명령어

• 유형, 데이터 형식,주소 지정방식 , 명령어 형식  마이크로프로세서의 ISA의 명령어 집합 설계 

Relatively Simple CPU

의 명령어 집합 구조  8085 마이크로프로세서의 명령어 집합 구조 순천향대학교 정보기술공학부 이 상 정

2

컴퓨터 구조 소프트웨어 하드웨어 순천향대학교 정보기술공학부 이 상 정 명령어 집합

3

명령어 집합 개념

컴퓨터 구조

명령어 집합 구조

 명령어 집합 구조(ISA)는 컴퓨터 소프트웨어와 하 드웨어 간의 인터페이스 제공 • • • 마이크로프로세서가 외부에 어떻게 보여지는 가를 규정 외부에서 마이크로프로세서와의 상호작용에 필요한 정보 를 제공 ISA는 마이크로프로세서가 처리할 수 있는 (어셈블리 명령어 집합) , 접근할 수 있는 명령어 집합 레지스터 , 메모 리와의 상호 작용 에 관한 내용을 포함  내부적인 설계와 구현에 대한 세부 정보는 아님  마이크로프로세서에 대한

프로그래머의 관점

순천향대학교 정보기술공학부 이 상 정

4

컴퓨터 구조

프로그래밍 언어 수준

   고급언어(high-level language) • • • • 최상위 추상화 단계 플랫폼 독립적(컴퓨터와 운영체제의 세부사항과 무관) 소스의 수정 없이 다른 마이크로프로세서와 운영체제에서 실 행 C/C++, Java, Fortran 어셈블리어(assembly language) • • • • 프로세서 마다 각기 고유의 어셈블리어 플랫폼 의존적 프로세서군은 하향 호환성 프로세서 내부 요소의 데이터에 대한 직접 접근 기계코드(machine code) • • 가장 낮은 수준 2진 값 표현, 어셈블리어와 1:1 대응 • 플랫폼 의존적 순천향대학교 정보기술공학부 이 상 정

5

컴퓨터 구조

컴파일러와 어셈블러

 컴파일러(compiler) • • • 고급언어 프로그램을 입력 구문 오류 검사 목적코드(object code) 생성 • 고급언어의 한 문장은 여러 개의 기계 코드 명령어로 변환됨  어셈블러(assembler) • • 어셈블리어 프로그램을 입력 하나의 어셈블리어 명령어는 하나의 기계 코드에 대응  링커(linker) • • 여러 프로그램의 목적코드를 결합 실행파일(executable file)로 저장 순천향대학교 정보기술공학부 이 상 정

6

컴퓨터 구조

컴파일 과정

순천향대학교 정보기술공학부 이 상 정

7

컴퓨터 구조

어셈블 과정

순천향대학교 정보기술공학부 이 상 정

8

컴퓨터 구조

자바 애플릿(Java Applet)

  • • • • 마이크로프로세서에 의해 실행되는 기계코드를 만들 지 않음 • • 바이트 코드(byte code) 형식으로 컴파일 자바 가상머신(Java Virtual Machine: JVM) 이 바이트 코드를 해석(interpret)하고 실행 JVM은 하드웨어 칩이나 소프트웨어로 구현 바이트 코드는 플랫폼에 독립적 웹에서 이용하기 적합 실행속도가 느림 JIT(Just-In-Time) 컴파일러 가 바이트 코드를 실행파 일로 컴파일 해서 실행 • 프로그램 실행속도 빠름 • 프로그램 초기 실행 지연과 오버헤드 순천향대학교 정보기술공학부 이 상 정

9

컴퓨터 구조

자바 애플릿 컴파일 과정

순천향대학교 정보기술공학부 이 상 정

10

컴퓨터 구조

어셈블리 명령어 유형 (1)

 어셈블리 명령어 • • • 데이터 전송 명령어 데이터 연산 명령어 프로그램 제어 명령어  데이터 전송 명령어 • • • • • • • 데이터를 변경하지 않고 목적지로 복사 메모리 -> 마이크로프로세서의 레지스터 마이크로프로세서의 레지스터 -> 메모리 레지스터 -> 레지스터 입력장치 -> 레지스터 레지스터 -> 출력장치 메모리 영역에서 다른 메모리 영역으로의 블록 데이터 전송 순천향대학교 정보기술공학부 이 상 정

11

컴퓨터 구조

어셈블리 명령어 유형 (2)

 데이터 연산 명령어 • • • • • 데이터 값을 변경 하나 혹은 두 개의 데이터값(오퍼랜드: operand)를 이용해서 연산, 그 결과 저장 산술 명령어(arithmetic instruction) 논리 명령어(logic instruction) 시프트 명령어(shift instruction)  프로그램 제어 명령어 • • • • • • 프로그램의 실행 순서를 변경 무조건 분기 명령어 조건 분기 명령어 서브루틴 호출 및 복귀 명령어 인터럽트 발생 명령어(소프트웨어 인터럽트) 정지(halt) 명령어 순천향대학교 정보기술공학부 이 상 정

12

컴퓨터 구조

데이터 유형

 수치 데이터(numeric data) • • • • 무부호 정수(unsigned integer) : 0 ~ 2 n -1 부호 정수(signed integer): - 2 • 2의 보수로 음수 표현 시 n-1 ~ 2 n-1 -1 부동소수점 형식(floating point) 부울형(Boolean) • 0인 값은 FALSE, 0이 아닌 값은 TRUE • 논리 연산과의 차이점 예) A = 0000 0010 B = 0000 0001 논리 AND 연산 부울 AND 연산 각 비트별 논리 AND 연산 = 0000 0000 TRUE and TRUE = TRUE • 문자형 • ASCII, EBCDIC, UNICODE 표준의 인코딩된 2진값 순천향대학교 정보기술공학부 이 상 정

13

컴퓨터 구조

주소지정 방식 (1)

 주소지정방식(addressing mode) • • • 명령어 상에 표시된 주소 != 실제 데이터가 저장된 주소 프로세서 명령어가 처리할 데이터가 저장되어 있는 소스나 처 리결과를 저장할 목적지를 지정하는 방식 유효주소(Effective Address) 계산 방식  직접 주소지정 방식(direct addressing mode) • • 명령어 안에 메모리 주소가 있다 CPU는 메모리 안의 주소 위치를 접근 예) LDAC 5 메모리 위치 5에서 데이터를 읽어 CPU의 누산기에 저장 • 오퍼랜드와 변수의 값을 CPU에 적재할 때 사용 순천향대학교 정보기술공학부 이 상 정

14

컴퓨터 구조

주소지정 방식 (2)

간접 주소지정 방식(indirect addressing mode)

• 또 한 번의 메모리 접근이 수행됨 • 명령어에 있는 주소는 오퍼랜드의 주소가 아니고 오퍼랜 드의 주소를 가리키는 메모리의 주소 예) LDAC (5) 혹은 LDAC @5 메모리 주소 5의 내용을 읽고 그 값이 10이면, 주소 10 의 내용을 읽어서 데이터를 CPU로 적재함 • 코드나 데이터를 재배치하는 컴파일러나 운영체제에서 사용 순천향대학교 정보기술공학부 이 상 정

15

컴퓨터 구조

주소지정 방식 (3)

 레지스터 직접(register)과 레지스터 간접(register indirect) 주소지정 방식 • • 메모리 주소 대신 레지스터를 지정 직접과 간접은 메모리 주소 지정 방식과 동일 예) LDAC R 레지스터 R의 값 5를 CPU의 누산기에 저장 LDAC (R) 혹은 LDAC @R 레지스터 R의 값을 읽고 이 값의 주소에 해당하는 메모리를 읽음  즉치 주소지정 방식(immediate addressing mode) • 명령어에 있는 오퍼랜드는 주소가 아니고 실제 데이터 예) LDAC #5 데이터 값 5를 CPU의 누산기에 저장 순천향대학교 정보기술공학부 이 상 정

16

컴퓨터 구조

주소지정 방식 (4)

 묵시적 주소지정 방식(implicit addressing mode) • • 오퍼랜드를 명시적으로 지정하지 않음 항상 오퍼랜드를 제공하는 레지스터를 묵시적으로 지정 예) CLAC 누산기를 0으로 클리어 시킴  상대 주소지정 방식(relative addressing mode) • • • 실제 주소가 아닌 오프셋(offset)을 오퍼랜드로 제공 필요한 메모리 주소 = CPU의 프로그램 카운터 내용 + 오프셋 값 명령어의 위치에 따라 다른 주소 값이 생성 • 프로그램 카운터는 다음 명령어의 위치를 가리킨다 예) LDAC $5 이 명령어가 메모리 10에 있고, 2개의 메모리를 차지한다면 다음 명령어는 12에 위치함 명령어는 (12+5=) 17에서 데이터를 읽어 누산기에 저장 순천향대학교 정보기술공학부 이 상 정

17

컴퓨터 구조

주소지정 방식 (5)

 인덱스 주소지정 방식(indexed addressing mode) • 상대 주소지정 방식과 유사. 단, 프로그램 카운터 대신 인덱스 레지스터 사용 예) LDAC 5(X) 인덱스 레지스터 X에 10이 있으면 (5+10=) 15에서 데이터 를 읽어 누산기에 저장  베이스 주소지정 방식(based addressing mode) • • 인덱스 주소지정 방식과 유사. 단, 인덱스 레지스터 대신 베이 스 주소 레지스터 사용 인덱스 주소 지정 방식과 베이스 주소지정 방식 비교 • 인덱스 주소 지정 방식 명령어: 기준 주소, 인덱스 레지스터: 오프셋 • 베이스 주소지정 방식 명령어: 오프셋, 베이스 레지스터: 기준 주소 순천향대학교 정보기술공학부 이 상 정

18

컴퓨터 구조

주소지정 방식 (6)

(a) 직접 (b) 간접 (c) 레지스터 직접 (d) 레지스터 간접 (e) 즉치 (f) 묵시 (g) 상대 (h) 인덱스 순천향대학교 정보기술공학부 이 상 정

19

컴퓨터 구조

명령어 형식 (1)

 명령어 코드(instruction code) • 연산코드(opcode) + 오퍼랜드(operand) 예) A = B + C 연산 • • 연산코드: 4비트(16개의 연산 가능)로 덧셈 연산 표현, 1010이 덧셈이라 가정 오퍼랜드: A, B, C, D 4개 -> A:00, B:01, C:10, D:11로 표현   3-오퍼랜드 방식 (A = B + C) • • 연산코드 4비트, 3개 오퍼랜드(3x2=) 6비트 -> 10비트 필요 하나의 명령어로 표현 가능 2-오퍼랜드 방식 (A = A + C)  • • 첫 오퍼랜드는 목적지이면서 하나의 소스 오퍼랜드 역할 명령어가 제한적이나 명령어 코드가 적은 비트수로 구성됨 1-오퍼랜드 방식 (Acc = Acc + C) • 누산기가 항상 목적지이면서 하나의 소스 오퍼랜드 역할  0-오퍼랜드 방식 • 모든 오퍼랜드를 스택에서 가져옴 순천향대학교 정보기술공학부 이 상 정

20

컴퓨터 구조

명령어 형식 (2)

(a) 3-오퍼랜드 (b) 2-오퍼랜드 (c) 1-오퍼랜드 (d) 0-오퍼랜드 순천향대학교 정보기술공학부 이 상 정

21

컴퓨터 구조

명령어 집합 구조 설계

    명령어 집합 구조의 • 완전성(completeness) 원하는 일을 하기에 필요한 모든 명령어를 갖추었는가 명령어 집합 구조의 • • 직교성(orthogonality) 기능이 중첩되지 않았나 최소한의 명령어로 필요한 기능을 하도록 함 레지스터 집합 • • 메모리 대신 레지스터를 사용하면 속도가 향상됨 범용 프로세서는 많은 레지스터 필요, 전용 프로세서는 많은 레지스터 불필요 ISA 설계의 쟁점 • • • • 이전 프로세서와의 호환성 지원하는 데이터 유형과 크기 인터럽트 지원 여부 조건부 명령 지원 여부 순천향대학교 정보기술공학부 이 상 정

22

컴퓨터 구조

Relatively Simple CPU의 ISA (1)

 메모리 모델 • • 64K 바이트 주소 공간( 64K X 8 ) 64K = 2 16 ,16 비트 메모리 주소 길이  레지스터 • • • 누산기(AC, accumulator) • 8비트 • 소스 오퍼랜드, 연산의 결과 저장 레지스터(R) • 8비트 범용 레지스터 • 소스 오퍼랜드 Zero 플래그(Z ) • 1비트 플래그 • 산술 논리 명령의 실행 결과의 값이 0이면 1로 설정 순천향대학교 정보기술공학부 이 상 정

23

컴퓨터 구조

Relatively Simple CPU의 ISA (2)

 명령어 집합 • • • • 16개의 명령어 8비트 명령어 코드 LDAC, STAC, JUMP, JMPZ, JPNZ 명령 • 16비트 메모리 주소 필요 • 3바이트 명령어 크기 2 바이트 메모리 주소 • Little Endian 방식 • 첫 바이트는 하위 주소, 두 번째 바이트는 상위 주소 예) 25: JUMP 1234H 메모리 저장 모습: 25: 0000 0101 (JUMP) 26: 0011 0100 (34H) 27: 0001 0010 (12H) 순천향대학교 정보기술공학부 이 상 정

24

컴퓨터 구조

Relatively Simple CPU 명령어 형식

순천향대학교 정보기술공학부 이 상 정

25

컴퓨터 구조

Relatively Simple CPU 명령어 집합

순천향대학교 정보기술공학부 이 상 정

26

컴퓨터 구조

Relatively Simple CPU 프로그램 예

순천향대학교 정보기술공학부 이 상 정

27

컴퓨터 구조

루프 합 프로그램의 실행 추적

순천향대학교 정보기술공학부 이 상 정

28

컴퓨터 구조

8085 마이크로프로세서의 ISA (1)

 레지스터 집합 • 누산기 레지스터 A: 8 비트 • • • • 6개의 범용 레지스터 B, C, D, E, H, L: 8 비트 • BC, DE, HL : 16 비트 스택 포인터 SP 플래그 레지스터 • Sign 플래그 S • Zero 플래그 Z • Parity 플래그 P • Carry 플래그 CY • 보조 캐리 플래그 AC 인터럽트 마스크 IM 순천향대학교 정보기술공학부 이 상 정

29

컴퓨터 구조

8085 마이크로프로세서의 ISA (2)

 명령어 집합 • 74개의 명령어 • • • 데이터 이동 명령어 데이터 연산 명령어 프로그램 제어 명령어 순천향대학교 정보기술공학부 이 상 정

30

컴퓨터 구조

8085의 데이터 이동 명령어

순천향대학교 정보기술공학부 이 상 정

31

컴퓨터 구조

8085의 데이터 연산 명령어

순천향대학교 정보기술공학부 이 상 정

32

컴퓨터 구조

8085의 프로그램 제어 명령어

순천향대학교 정보기술공학부 이 상 정

33

컴퓨터 구조

8085 마이크로프로세서의 명령어 형식

순천향대학교 정보기술공학부 이 상 정

34

컴퓨터 구조 1:

i = n, sum = 0

2:

sum = sum + i, i = i – 1

3: IF

i ≠ 0

THEN GOTO 2 4:

total = sum

8085의 프로그램 예

순천향대학교 정보기술공학부 이 상 정

35

컴퓨터 구조

8085 루프 합 프로그램의 실행 추적

순천향대학교 정보기술공학부 이 상 정

36

컴퓨터 구조

과제 (1)

문제

9 R = 10, PC = 20,

그리고 인덱스 레지스터

X = 30

일 때

,

다음 명령어들에 대한 누산기의 값을 보여라

.

모든 메모리 위치 어는

Q

Q + 1

의 값을 가진다

.

각 명령

2

개의 메모리 위치를 차지한다

. a) LDAC 10 b) LDAC (10) c) LDAC R d) LDAC @R e) LDAC #10 f) LDAC $10 g) LDAC 10(X) 순천향대학교 정보기술공학부 이 상 정

37

컴퓨터 구조

과제 (2)

문제 12

다음의 명령어 형식들을 사용하는 마이 크로프로세서에서

X=A+(B*C)+D

를 계산하기 위한 코드를 작성하라

. A, B, C, D

의 값을 수 정하지 말라

.

만일 필요하다면

,

중간 결과들을 저장하기 위한 임시 저장 장소

T

를 사용하라

. a) 3-

오퍼랜드 명령어

b) 2-

오퍼랜드 명령어

c) 1-

오퍼랜드 명령어

d) 0-

오퍼랜드 명령어

순천향대학교 정보기술공학부 이 상 정

38

컴퓨터 구조

과제 (3)

문제 19

메모리 위치

1001H

값을 더하여 메모리 위치 부터

100AH

까지의

1000H

에 저장하는

Relatively Simple CPU

의 프로그램을 작성하 라

.

결과는 항상

256

보다 작다고 가정한다

. 순천향대학교 정보기술공학부 이 상 정

39