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