Download presentation
Presentation is loading. Please wait.
1
3. 명령어 집합 구조 순천향대학교 정보기술공학부 이상정
2
3장 학습내용 명령어 집합 구조(ISA,Instruction Set Architecture) 프로그래밍 언어의 여러 수준
어셈블리어 명령어 유형, 데이터 형식,주소 지정방식 , 명령어 형식 마이크로프로세서의 ISA의 명령어 집합 설계 Relatively Simple CPU의 명령어 집합 구조 8085 마이크로프로세서의 명령어 집합 구조 순천향대학교 정보기술공학부 이 상 정
3
명령어 집합 개념 명령어 집합 소프트웨어 하드웨어 순천향대학교 정보기술공학부 이 상 정
4
명령어 집합 구조 명령어 집합 구조(ISA)는 컴퓨터 소프트웨어와 하드웨어 간의 인터페이스 제공
마이크로프로세서가 외부에 어떻게 보여지는 가를 규정 외부에서 마이크로프로세서와의 상호작용에 필요한 정보를 제공 ISA는 마이크로프로세서가 처리할 수 있는 명령어 집합(어셈블리 명령어 집합), 접근할 수 있는 레지스터, 메모리와의 상호 작용에 관한 내용을 포함 내부적인 설계와 구현에 대한 세부 정보는 아님 마이크로프로세서에 대한 프로그래머의 관점 순천향대학교 정보기술공학부 이 상 정
5
프로그래밍 언어 수준 고급언어(high-level language) 어셈블리어(assembly language)
최상위 추상화 단계 플랫폼 독립적(컴퓨터와 운영체제의 세부사항과 무관) 소스의 수정 없이 다른 마이크로프로세서와 운영체제에서 실행 C/C++, Java, Fortran 어셈블리어(assembly language) 프로세서 마다 각기 고유의 어셈블리어 플랫폼 의존적 프로세서군은 하향 호환성 프로세서 내부 요소의 데이터에 대한 직접 접근 기계코드(machine code) 가장 낮은 수준 2진 값 표현, 어셈블리어와 1:1 대응 순천향대학교 정보기술공학부 이 상 정
6
컴파일러와 어셈블러 컴파일러(compiler) 어셈블러(assembler) 링커(linker) 고급언어 프로그램을 입력
구문 오류 검사 목적코드(object code) 생성 고급언어의 한 문장은 여러 개의 기계 코드 명령어로 변환됨 어셈블러(assembler) 어셈블리어 프로그램을 입력 하나의 어셈블리어 명령어는 하나의 기계 코드에 대응 링커(linker) 여러 프로그램의 목적코드를 결합 실행파일(executable file)로 저장 순천향대학교 정보기술공학부 이 상 정
7
컴파일 과정 순천향대학교 정보기술공학부 이 상 정
8
어셈블 과정 순천향대학교 정보기술공학부 이 상 정
9
자바 애플릿(Java Applet) 마이크로프로세서에 의해 실행되는 기계코드를 만들지 않음
바이트 코드(byte code) 형식으로 컴파일 자바 가상머신(Java Virtual Machine: JVM)이 바이트 코드를 해석(interpret)하고 실행 JVM은 하드웨어 칩이나 소프트웨어로 구현 바이트 코드는 플랫폼에 독립적 웹에서 이용하기 적합 실행속도가 느림 JIT(Just-In-Time) 컴파일러가 바이트 코드를 실행파일로 컴파일 해서 실행 프로그램 실행속도 빠름 프로그램 초기 실행 지연과 오버헤드 순천향대학교 정보기술공학부 이 상 정
10
자바 애플릿 컴파일 과정 순천향대학교 정보기술공학부 이 상 정
11
어셈블리 명령어 유형 (1) 어셈블리 명령어 데이터 전송 명령어 데이터 연산 명령어 프로그램 제어 명령어
데이터를 변경하지 않고 목적지로 복사 메모리 -> 마이크로프로세서의 레지스터 마이크로프로세서의 레지스터 -> 메모리 레지스터 -> 레지스터 입력장치 -> 레지스터 레지스터 -> 출력장치 메모리 영역에서 다른 메모리 영역으로의 블록 데이터 전송 순천향대학교 정보기술공학부 이 상 정
12
어셈블리 명령어 유형 (2) 데이터 연산 명령어 프로그램 제어 명령어 데이터 값을 변경
하나 혹은 두 개의 데이터값(오퍼랜드: operand)를 이용해서 연산, 그 결과 저장 산술 명령어(arithmetic instruction) 논리 명령어(logic instruction) 시프트 명령어(shift instruction) 프로그램 제어 명령어 프로그램의 실행 순서를 변경 무조건 분기 명령어 조건 분기 명령어 서브루틴 호출 및 복귀 명령어 인터럽트 발생 명령어(소프트웨어 인터럽트) 정지(halt) 명령어 순천향대학교 정보기술공학부 이 상 정
13
데이터 유형 수치 데이터(numeric data) 무부호 정수(unsigned integer) : 0 ~ 2n -1
부호 정수(signed integer): - 2n-1 ~ 2n-1 -1 2의 보수로 음수 표현 시 부동소수점 형식(floating point) 부울형(Boolean) 0인 값은 FALSE, 0이 아닌 값은 TRUE 논리 연산과의 차이점 예) A = B = 논리 AND 연산 각 비트별 논리 AND 연산 = 부울 AND 연산 TRUE and TRUE = TRUE 문자형 ASCII, EBCDIC, UNICODE 표준의 인코딩된 2진값 순천향대학교 정보기술공학부 이 상 정
14
주소지정 방식 (1) 주소지정방식(addressing mode) 직접 주소지정 방식(direct addressing mode)
명령어 상에 표시된 주소 != 실제 데이터가 저장된 주소 프로세서 명령어가 처리할 데이터가 저장되어 있는 소스나 처리결과를 저장할 목적지를 지정하는 방식 유효주소(Effective Address) 계산 방식 직접 주소지정 방식(direct addressing mode) 명령어 안에 메모리 주소가 있다 CPU는 메모리 안의 주소 위치를 접근 예) LDAC 5 메모리 위치 5에서 데이터를 읽어 CPU의 누산기에 저장 오퍼랜드와 변수의 값을 CPU에 적재할 때 사용 순천향대학교 정보기술공학부 이 상 정
15
주소지정 방식 (2) 간접 주소지정 방식(indirect addressing mode) 또 한 번의 메모리 접근이 수행됨
명령어에 있는 주소는 오퍼랜드의 주소가 아니고 오퍼랜드의 주소를 가리키는 메모리의 주소 예) LDAC (5) 혹은 메모리 주소 5의 내용을 읽고 그 값이 10이면, 주소 10의 내용을 읽어서 데이터를 CPU로 적재함 코드나 데이터를 재배치하는 컴파일러나 운영체제에서 사용 순천향대학교 정보기술공학부 이 상 정
16
주소지정 방식 (3) 레지스터 직접(register)과 레지스터 간접(register indirect) 주소지정 방식
메모리 주소 대신 레지스터를 지정 직접과 간접은 메모리 주소 지정 방식과 동일 예) LDAC R 레지스터 R의 값 5를 CPU의 누산기에 저장 LDAC (R) 혹은 레지스터 R의 값을 읽고 이 값의 주소에 해당하는 메모리를 읽음 즉치 주소지정 방식(immediate addressing mode) 명령어에 있는 오퍼랜드는 주소가 아니고 실제 데이터 예) LDAC #5 데이터 값 5를 CPU의 누산기에 저장 순천향대학교 정보기술공학부 이 상 정
17
주소지정 방식 (4) 묵시적 주소지정 방식(implicit addressing mode)
오퍼랜드를 명시적으로 지정하지 않음 항상 오퍼랜드를 제공하는 레지스터를 묵시적으로 지정 예) CLAC 누산기를 0으로 클리어 시킴 상대 주소지정 방식(relative addressing mode) 실제 주소가 아닌 오프셋(offset)을 오퍼랜드로 제공 필요한 메모리 주소 = CPU의 프로그램 카운터 내용 + 오프셋 값 명령어의 위치에 따라 다른 주소 값이 생성 프로그램 카운터는 다음 명령어의 위치를 가리킨다 예) LDAC $5 이 명령어가 메모리 10에 있고, 2개의 메모리를 차지한다면 다음 명령어는 12에 위치함 명령어는 (12+5=) 17에서 데이터를 읽어 누산기에 저장 순천향대학교 정보기술공학부 이 상 정
18
주소지정 방식 (5) 인덱스 주소지정 방식(indexed addressing mode)
상대 주소지정 방식과 유사. 단, 프로그램 카운터 대신 인덱스 레지스터 사용 예) LDAC 5(X) 인덱스 레지스터 X에 10이 있으면 (5+10=) 15에서 데이터를 읽어 누산기에 저장 베이스 주소지정 방식(based addressing mode) 인덱스 주소지정 방식과 유사. 단, 인덱스 레지스터 대신 베이스 주소 레지스터 사용 인덱스 주소 지정 방식과 베이스 주소지정 방식 비교 인덱스 주소 지정 방식 명령어: 기준 주소, 인덱스 레지스터: 오프셋 베이스 주소지정 방식 명령어: 오프셋, 베이스 레지스터: 기준 주소 순천향대학교 정보기술공학부 이 상 정
19
주소지정 방식 (6) (a) 직접 (b) 간접 (c) 레지스터 직접 (d) 레지스터 간접 (e) 즉치 (f) 묵시 (g) 상대 (h) 인덱스 순천향대학교 정보기술공학부 이 상 정
20
명령어 형식 (1) 명령어 코드(instruction code) 예) A = B + C 연산
연산코드(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-오퍼랜드 방식 모든 오퍼랜드를 스택에서 가져옴 순천향대학교 정보기술공학부 이 상 정
21
명령어 형식 (2) (a) 3-오퍼랜드 (b) 2-오퍼랜드 (c) 1-오퍼랜드 (d) 0-오퍼랜드
순천향대학교 정보기술공학부 이 상 정
22
명령어 집합 구조 설계 명령어 집합 구조의 완전성(completeness)
원하는 일을 하기에 필요한 모든 명령어를 갖추었는가 명령어 집합 구조의 직교성(orthogonality) 기능이 중첩되지 않았나 최소한의 명령어로 필요한 기능을 하도록 함 레지스터 집합 메모리 대신 레지스터를 사용하면 속도가 향상됨 범용 프로세서는 많은 레지스터 필요, 전용 프로세서는 많은 레지스터 불필요 ISA 설계의 쟁점 이전 프로세서와의 호환성 지원하는 데이터 유형과 크기 인터럽트 지원 여부 조건부 명령 지원 여부 순천향대학교 정보기술공학부 이 상 정
23
Relatively Simple CPU의 ISA (1)
메모리 모델 64K 바이트 주소 공간(64K X 8) 64K = 216 ,16 비트 메모리 주소 길이 레지스터 누산기(AC, accumulator) 8비트 소스 오퍼랜드, 연산의 결과 저장 레지스터(R) 8비트 범용 레지스터 소스 오퍼랜드 Zero 플래그(Z ) 1비트 플래그 산술 논리 명령의 실행 결과의 값이 0이면 1로 설정 순천향대학교 정보기술공학부 이 상 정
24
Relatively Simple CPU의 ISA (2)
명령어 집합 16개의 명령어 8비트 명령어 코드 LDAC, STAC, JUMP, JMPZ, JPNZ 명령 16비트 메모리 주소 필요 3바이트 명령어 크기 2 바이트 메모리 주소 Little Endian 방식 첫 바이트는 하위 주소, 두 번째 바이트는 상위 주소 예) 25: JUMP 1234H 메모리 저장 모습: 25: (JUMP) 26: (34H) 27: (12H) 순천향대학교 정보기술공학부 이 상 정
25
Relatively Simple CPU 명령어 형식
순천향대학교 정보기술공학부 이 상 정
26
Relatively Simple CPU 명령어 집합
순천향대학교 정보기술공학부 이 상 정
27
Relatively Simple CPU 프로그램 예
순천향대학교 정보기술공학부 이 상 정
28
루프 합 프로그램의 실행 추적 순천향대학교 정보기술공학부 이 상 정
29
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 순천향대학교 정보기술공학부 이 상 정
30
8085 마이크로프로세서의 ISA (2) 명령어 집합 74개의 명령어 데이터 이동 명령어 데이터 연산 명령어
프로그램 제어 명령어 순천향대학교 정보기술공학부 이 상 정
31
8085의 데이터 이동 명령어 순천향대학교 정보기술공학부 이 상 정
32
8085의 데이터 연산 명령어 순천향대학교 정보기술공학부 이 상 정
33
8085의 프로그램 제어 명령어 순천향대학교 정보기술공학부 이 상 정
34
8085 마이크로프로세서의 명령어 형식 순천향대학교 정보기술공학부 이 상 정
35
8085의 프로그램 예 1: i = n, sum = 0 2: sum = sum + i, i = i – 1
3: IF i ≠ 0 THEN GOTO 2 4: total = sum 순천향대학교 정보기술공학부 이 상 정
36
8085 루프 합 프로그램의 실행 추적 순천향대학교 정보기술공학부 이 상 정
37
과제 (1) 문제 9 R = 10, PC = 20, 그리고 인덱스 레지스터 X = 30일 때, 다음 명령어들에 대한 누산기의 값을 보여라. 모든 메모리 위치 Q는 Q + 1의 값을 가진다. 각 명령어는 2 개의 메모리 위치를 차지한다. a) LDAC 10 b) LDAC (10) c) LDAC R d) e) LDAC #10 f) LDAC $10 g) LDAC 10(X) 순천향대학교 정보기술공학부 이 상 정
38
과제 (2) 문제 12 다음의 명령어 형식들을 사용하는 마이크로프로세서에서 X=A+(B*C)+D를 계산하기 위한 코드를 작성하라. A, B, C, D의 값을 수정하지 말라. 만일 필요하다면, 중간 결과들을 저장하기 위한 임시 저장 장소 T를 사용하라. a) 3-오퍼랜드 명령어 b) 2-오퍼랜드 명령어 c) 1-오퍼랜드 명령어 d) 0-오퍼랜드 명령어 순천향대학교 정보기술공학부 이 상 정
39
과제 (3) 문제 19 메모리 위치 1001H부터 100AH까지의 값을 더하여 메모리 위치 1000H에 저장하는 Relatively Simple CPU의 프로그램을 작성하라. 결과는 항상 256보다 작다고 가정한다. 순천향대학교 정보기술공학부 이 상 정
Similar presentations