3. 명령어 집합 구조 순천향대학교 정보기술공학부 이상정.

Slides:



Advertisements
Similar presentations
10-7 부동소수점 (Floating-Point) 계산  컴퓨터에서 숫자를 표기하는 방법  가수 (Fraction) : 부호화된 고정소수점 숫자 지수 (Exponent) : 소수점의 위치를 표시 ( 예 )10 진수 를 표기하면 Fraction Exponent.
Advertisements

프로그래밍언어론 TA 윤들녁. 소개 윤들녁 연락처 : 공대 7 호관 4 층 401 호 데이터베이스 연구실 실습 후 날짜 _ 학번.zip 으로.
컴퓨터와 인터넷.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
Lecture #2 제2장 CPU의 구조와 기능(1).
4. 컴퓨터 조직 순천향대학교 정보기술공학부 이상정.
2.1 CPU의 기본 구조 2.2 명령어 실행 2.3 명령어 파이프라이닝 2.4 명령어 세트
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 프로그래밍 언어 1-1 C 언어의 개론적 이야기 한글, 엑셀, 게임 등의 프로그램을 만들 때 사용하는 언어 ‘컴퓨터 프로그래머’라는 사람들이 제작 C 언어(C++ 포함)를 가장 많이 사용함.
제7강 학습 내용 주소지정 방식의 예 값 즉시 지정 방식과 실행 예 레지스터 직접지정 방식 메모리 직접지정 방식과 실행 예
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
시스템집적반도체 설계 검증 환경과 기법 Ch 7.
12장. 제어 장치 다루는 내용 CPU속의 제어장치 마이크로 연산 제어장치의 동작.
어셈블리 문법 보강 4월 10일.
컴퓨터시스템 구조 Computer System Architecture.
제 3장 컴퓨터 시스템의 구조.
System Programming 제1장 배경지식 시스템 프로그래밍.
시스템 보안 [Buffer Overflow] DEC, 15, 2013 By 박동혁.
제10강 중앙처리장치 1.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
제2장 CPU의 구조와 기능. 제2장 CPU의 구조와 기능 CPU의 기능 명령어 인출(Instruction Fetch): 기억장치로부터 명령어를 읽어온다. 명령어 해독(Instruction Decode): 수행해야 할 동작을 결정하기 위하여 인출된 명령어를 해독한다.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Error Detection and Correction
컴퓨터정보공학부 서버 안내 [ IBM x3500 ] it.sangji.ac.kr ict.sangji.ac.kr 혹은
DK-128 실습 EEPROM 제어 아이티즌 기술연구소
타이머카운터 사용법 휴먼네트웍스 기술연구소
4. LAN의 배선체계 (3장. LAN: Local Area Network)
PSW : PROGRAM STATUS WORD
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
ATmega128 FND 실습 휴먼네트웍스 기술연구소
DK-128 FND 실습 아이티즌 기술연구소 김태성 연구원
14 마이크로 연산과 제어장치 IT CookBook, 컴퓨터 구조와 원리 2.0.
C#.
JA A V W. 03.
Chap 6.Assembler 유건우.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
UNIX Unbounded A Beginning Approach
컴퓨터시스템 구조 Computer System Architecture.
DK-128 FND 실습 아이티즌 기술연구소
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
DK-128 실습 내부 EEPROM 제어 아이티즌 기술연구소 김태성 연구원
DK-128 실습 타이머카운터 사용법 아이티즌 기술연구소
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2. 컴퓨터 시스템의 동작 명령어 구성 연산 종류와 기능에 따라 오퍼랜드 부분을 다양하게 활용 가능.
제4강 처리장치 1.
자바 5.0 프로그래밍.
LabVIEW WiznTec 주임 박명대 1.
ARM Development Suite v1.2
1. 2진 시스템.
ATmega128의 특징 아이티즌 기술연구소
Canary value 스택 가드(Stack Guard).
제2강 : 전자계산기구조-컴퓨터 시스템 구성.
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
Lecture #3 제2장 CPU의 구조와 기능(2).
DK-128 직렬통신 실습 아이티즌 기술연구소
AT MEGA 128 기초와 응용 I 기본적인 구조.
ARM Development Suite v1.2
컴퓨터구조 연습문제 발표 Chapter 3 - 컴퓨터의 기능 및 상호연결의 최상위 관점
공학도를 위한 C언어 프로그래밍실습1 -통합개발환경 사용법-
멀티미디어시스템 제 5 장. 멀티미디어 데이터베이스 개념 IT응용시스템공학과 김 형 진 교수.
TVM ver 최종보고서
발표자 : 이지연 Programming Systems Lab.
3.2 분기 명령어.
제10강 PC정비사 1급(필기) Lee Hoon Copyright(c) 2008 LeeHoon All rights reserved.
AdcRead API 함수 분석 마이크로프로세서.
프로그래밍 언어 학습을 위한 가상실습환경 창원대학교 이수현.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
Assembly 05 방호남 07 반지훈 09 박상욱.
Pointers summary.
ARM Development Suite v1.2
Presentation transcript:

3. 명령어 집합 구조 순천향대학교 정보기술공학부 이상정

3장 학습내용 명령어 집합 구조(ISA,Instruction Set Architecture) 프로그래밍 언어의 여러 수준 어셈블리어 명령어 유형, 데이터 형식,주소 지정방식 , 명령어 형식 마이크로프로세서의 ISA의 명령어 집합 설계 Relatively Simple CPU의 명령어 집합 구조 8085 마이크로프로세서의 명령어 집합 구조 순천향대학교 정보기술공학부 이 상 정 2

명령어 집합 개념 명령어 집합 소프트웨어 하드웨어 순천향대학교 정보기술공학부 이 상 정 3

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

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

컴파일러와 어셈블러 컴파일러(compiler) 어셈블러(assembler) 링커(linker) 고급언어 프로그램을 입력 구문 오류 검사 목적코드(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 B = 0000 0001 논리 AND 연산 각 비트별 논리 AND 연산 = 0000 0000 부울 AND 연산 TRUE and TRUE = TRUE 문자형 ASCII, EBCDIC, UNICODE 표준의 인코딩된 2진값 순천향대학교 정보기술공학부 이 상 정 13

주소지정 방식 (1) 주소지정방식(addressing mode) 직접 주소지정 방식(direct 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) 예) 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-오퍼랜드 방식 모든 오퍼랜드를 스택에서 가져옴 순천향대학교 정보기술공학부 이 상 정 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