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 ~ 2n -1
• 부호 정수(signed integer): - 2n-1 ~ 2n-1 -1
• 2의 보수로 음수 표현 시
• 부동소수점 형식(floating point)
• 부울형(Boolean)
• 0인 값은 FALSE, 0이 아닌 값은 TRUE
• 논리 연산과의 차이점
예) A = 0000 0010
논리 AND 연산
부울 AND 연산
B = 0000 0001
각 비트별 논리 AND 연산 = 0000 0000
TRUE and TRUE = TRUE
• 문자형
• ASCII, EBCDIC, UNICODE 표준의 인코딩된 2진값
순천향대학교 정보기술공학부
이상정
13
컴퓨터 구조
주소지정 방식 (1)
 주소지정방식(addressing mode)
• 명령어 상에 표시된 주소 != 실제 데이터가 저장된 주소
• 프로세서 명령어가 처리할 데이터가 저장되어 있는 소스나 처리
결과를 저장할 목적지를 지정하는 방식
• 유효주소(Effective Address) 계산 방식
 직접 주소지정 방식(direct addressing mode)
• 명령어 안에 메모리 주소가 있다
• CPU는 메모리 안의 주소 위치를 접근
• 오퍼랜드와 변수의 값을 CPU에 적재할 때 사용
• 예
• LDAC 5
• MOV BX,[1234H]
순천향대학교 정보기술공학부
이상정
; AC <- M[5]
; BX <- M[DS*10H+1234H]
14
컴퓨터 구조
주소지정 방식 (2)
 간접 주소지정 방식(indirect addressing mode)
• 또 한 번의 메모리 접근이 수행됨
• 명령어에 있는 주소는 오퍼랜드의 주소가 아니고 오퍼랜
드의 주소를 가리키는 메모리의 주소
• 예
• LDAC (5) 혹은 LDAC @5
; AC <- M[M[5]]
• 코드나 데이터를 재배치하는 컴파일러나 운영체제에서
사용
순천향대학교 정보기술공학부
이상정
15
컴퓨터 구조
주소지정 방식 (3)
 레지스터 직접(register)과 레지스터 간접(register indirect)
주소지정 방식
• 메모리 주소 대신 레지스터를 지정
• 직접과 간접은 메모리 주소 지정 방식과 동일
• 예
•
•
•
•
LDAC R
; AC <- R
LDAC (R) 혹은 LDAC @R
; AC <- M[R]
MOV AX, BX
; AX <- BX
MOV AX, [SI]
; AX <- M[DS*10H + SI]
 즉치 주소지정 방식(immediate addressing mode)
• 명령어에 있는 오퍼랜드는 주소가 아니고 실제 데이터
• 예
• LDAC #5
• MOV AL, 15H
순천향대학교 정보기술공학부
이상정
; AC <- 5
; AL <- 15H
16
컴퓨터 구조
주소지정 방식 (4)
 묵시적 주소지정 방식(implicit addressing mode)
• 오퍼랜드를 명시적으로 지정하지 않음
• 항상 오퍼랜드를 제공하는 레지스터를 묵시적으로 지정
• 예
• CLAC
• MOVSB
; AC <- 0
; M[ES*10H+DI] <- M[DS*10H+SI]
 상대 주소지정 방식(relative addressing mode)
•
•
•
•
•
실제 주소가 아닌 오프셋(offset)을 오퍼랜드로 제공
필요한 메모리 주소 = CPU의 프로그램 카운터 내용 + 오프셋 값
명령어의 위치에 따라 다른 주소 값이 생성
프로그램 카운터는 다음 명령어의 위치를 가리킨다
예
• LDAC $5
; PC <- PC + 5
• 이 명령어가 메모리 10에 있고, 2개의 메모리를 차지한다면 다음 명령어는
12에 위치함, 명령어는 (12+5=) 17에서 데이터를 읽어 누산기에 저장
• JMP 10H
; IP <- IP + 10H
순천향대학교 정보기술공학부
이상정
17
컴퓨터 구조
주소지정 방식 (5)
 인덱스 주소지정 방식(indexed addressing mode)
• 상대 주소지정 방식과 유사. 단, 프로그램 카운터 대신 인덱스 레지
스터 사용
• 예
• LDAC 5(X)
• MOV AL,[SI]1234H
; AC <- M[5+X]
; AL <- M[DS*10H+1234H+SI]
 베이스 주소지정 방식(based addressing mode)
• 인덱스 주소지정 방식과 유사. 단, 인덱스 레지스터 대신 베이스 주
소 레지스터 사용
• 인덱스 주소 지정 방식과 베이스 주소지정 방식 비교
• 인덱스 주소 지정 방식
명령어: 기준 주소, 인덱스 레지스터: 오프셋
• 베이스 주소지정 방식
명령어: 오프셋, 베이스 레지스터: 기준 주소
• 예
• MOV [BX]1234H, AL
순천향대학교 정보기술공학부
이상정
; M[DS*10H+BX+1234H]
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 = 216 ,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
컴퓨터 구조
8085의 프로그램 예
1: i = n, sum = 0
2: sum = sum + i, i = i – 1
3: IF i ≠ 0 THEN GOTO 2
4: total = sum
순천향대학교 정보기술공학부
이상정
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