1 Prof. Young Jin Nam, Daegu University 컴퓨터 구조 (Computer Architecture) 명령어 세트 : 특성과 기능 남영진

Slides:



Advertisements
Similar presentations
Chapter 03. 디지털 코드. 다양한 디지털 코드를 구분하여 이해할 수 있다. 문자와 숫자를 나타내는 코드를 이해할 수 있다. 가중치 코드와 비가중치 코드를 이해하고 이를 활용할 수 있다. 에러 검출 코드를 이해하고 이를 활용할 수 있다. 01. BCD 코드와 3.
Advertisements

1/37 Chapter 4: 프로세서 성능과 휴대성을 위한 하드웨어 © The McGraw-Hill Companies, Inc., 세기의 가장 중요한 발명품 : 마이크로 프로세서 일상생활에 널리 사용됨 프로그램에 의한 적응성.
컴퓨터의 구조 2006년 2학기 컴퓨터의 개념 및 실습.
Chapter 9. 컴퓨터설계기초 9-1 머리말 9-2 데이터 처리장치 (Datapath)
ISA 심화 및 start.S code 분석 SIOR 15th 최재훈.
C++ Tutorial 1 서강대학교 데이터베이스 연구실.
제8장. RISC 및 슈퍼스칼라 프로세서 8.1 RISC의 출현 동기 8.2 RISC의 발전 경위
제4장 명령어 처리.
2장 마이크로프로세서 구성요소 Slide 1 (of 19).
프로그램 제어 분기(branch)와 점프(jump) 명령어 PC의 값의 변경 순차적인 프로그램의 진행순서가
9장 가로채기(Interrupt) Slide 1 (of 15).
기본 컴퓨터의 구조와 설계 Lecture #5.
마이크로프로세서(Microprocessor,µP)
기본 컴퓨터 프로그래밍 Lecture #6.
컴퓨터 과학 개론 √ 원리를 알면 IT가 맛있다 컴퓨터 과학도를 위한 첫 전공서 ehanbit.net.
2 Part 전자계산기 구조 1. 논리 회로 2. 자료 표현 및 연산 3. 명령어 및 프로세서 4. 명령 수행 및 제어 5.
컴퓨터구조 – 중간시험 (답안지) 부분점수 (사소한 실수면 -1)
3 디지털 코드 IT CookBook, 디지털 논리회로.
3장 MPU 내부구조 Slide 1 (of 28).
임베디드 하드웨어 Lecture #6.
컴퓨터 구조학 정보보호학과.
컴퓨터 구조론 2001년 10월 22일 발표자 황영선.
연습문제풀이/도움말.
7장 마이크로프로세서의 명령어수행과 주소지정 방식 Slide 1 (of 29).
출처: IT CookBook, 컴퓨터 구조와 원리 2.0 제 12장
Numerical Analysis - preliminaries -
컴퓨터 구조.
4장. 컴퓨터 시스템의 구성과 기능 다루는 내용 컴퓨터 분해를 통한 본체 살펴보기 컴퓨터 구성요소 컴퓨터의 기능
버퍼 오버플로우 시스템보안 인터넷공학전공 권영락.
9장. 중앙처리 장치의 조직과 기능 다루는 내용 컴퓨터 본체에서 CPU의 위치 살펴보기 CPU의 성능, 기능, 조직
1 마이크로프로세서의 원리 마이크로컨트롤러 AVR ATmega128.
Chapter 7. Pentium Processor
Chapter 08 제어장치와 마이크로 오퍼레이션.
Computer Architecture
리버스 엔지니어링 안녕하십니까? 리버스 엔지니어링 발표를 맡은 정창하입니다. 지금부터 리버스 엔지니어링 발표를
어셈블리어 및 실습 금 1,2 (314) / 금 3,4 (307) RTDCS 이 종 태
6 중앙처리장치의 조직과 기능 IT CookBook, 컴퓨터 구조와 원리 2.0.
Chapter 06 명령어와 번지지정 방식.
컴퓨터 시스템의 개요.
제 2장 컴퓨터의 등장과 발전.
3주 컴퓨터구조.
8086 프로세서의 구조 및 동작 방식 시스템 프로그래밍 - Lecture #2 신라대학교 컴퓨터공학과 시스템 프로그래밍.
제 2장 컴퓨터동작의 기본 개념.
Chapter 03. 디지털 코드.
임베디드 소프트웨어 설계.
2 데이터 표현과 컴퓨터 연산 IT CookBook, 컴퓨터 구조와 원리 2.0.
10장. 중앙처리 장치의 명령어 다루는 내용 어셈블리 프로그램의 이해 인터럽트(interrupt) 명령어 세트 주소 지정 방식.
2007년 1학기 전산학개론 성신여자대학교 컴퓨터정보학부
Computer System Architecture
CHAPTER 03. 컴퓨터 구조 컴퓨터 시스템의 구성과 동작 원리_컴퓨터 시스템에 대한 근본적 이해
Chapter 4 The Von Neumann Model.
Chapter 1 Welcome Aboard.
데이터의 표현과 컴퓨터 연산 Prof. Jae Young Choi (최재영 교수)
컴퓨터 시스템 개관 시스템 프로그래밍 - Lecture #1 신라대학교 컴퓨터공학과 시스템 프로그래밍.
Computer System Architecture
운영체제 (Operating Systems) (Memory Management Strategies)
1. 컴퓨터 시스템 구성요소 메모리(Memory) 캐시메모리 개념 캐시메모리의 특징 적중률(hit ratio)
Chapter 12 Memory Organization
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
CHAPTER 04 파일 설계(FiLE Design).
9장. 중앙처리 장치의 조직과 기능 다루는 내용 컴퓨터 본체에서 CPU의 위치 살펴보기 CPU의 성능, 기능, 조직
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
Introduction to Computer System 컴퓨터의 이해 3: 데이터 표현
10장. 컴퓨터 구조에 대한 세 번째 이야기 작성자: 윤성우.
제03장 정보의 표현.
임베디드 하드웨어 Lecture #6.
Lecture 7 7-Segment LED controller using u-controller
4-1. 명령어 형식.
제 1 강 컴퓨터의 구조.
Presentation transcript:

1 Prof. Young Jin Nam, Daegu University 컴퓨터 구조 (Computer Architecture) 명령어 세트 : 특성과 기능 남영진

2 Prof. Young Jin Nam, Daegu University 강의내용  기계 명령어 특성  명령어 세트 설계 이슈  오퍼랜드 형태  펜티엄 & PowerPC 데이터 형식  연산 종류  펜티엄 & PowerPC 연산 유형  어셈블리 언어

3 Prof. Young Jin Nam, Daegu University 명령어 세트 (Instruction Set)  프로세서 (CPU) 의 동작은 실행하는 명령어들에 의해서 결정  이 명령어를 기계 명령어 (machine instruction) or 컴퓨터 명령어 (computer instruction)  이때, 프로세서가 실행하는 명령어들의 집합을 명령어 세트  기계어 코드 & 이진수 형태로 표현  어셈블리 코드로 표현

4 Prof. Young Jin Nam, Daegu University 기계어 명령어 구성 요소 (Elements)  연산 코드 (operation code)  수행될 연산을 지정 ( 예 : ADD, MUL, … )  “ do this ” 를 표현하며, opcode 라고 불리는 2 진 코드 형태로 저장  원천 오퍼랜드 참조 (source operand reference)  각 연산은 입력으로 한 개 or 그 이상의 오퍼랜드를 가짐  “ to this ” 를 표현  결과 오퍼랜드 참조 (result operand reference)  연산은 결과를 발생  “ put the answer here ” 를 표현  다음 명령어 참조 (next instruction reference)  현재 명령이 완료된 후에 다음 명령어를 인출할 위치를 알려줌  “ when you have done that, do this... ” 를 표현

5 Prof. Young Jin Nam, Daegu University 명령어 사이클 상태 다이어그램 Example: 100: ADD M(200), M(201) /* M(201) = M(200) + M(201) */ 명령어 저장 위치 : M(200) (ADD …) ADD 201 M(201) M(200)+ M(201) 201 M(201) = 결과

6 Prof. Young Jin Nam, Daegu University Source/Result 오퍼랜드가 저장되는 장소  주기억장치 (main memory)  가상 기억장치 (virtual memory): 주기억장치 or 2 차 기억장치  프로세서 (CPU) 레지스터  I/O 장치

7 Prof. Young Jin Nam, Daegu University 명령어 (Instruction) 표현  각 명령어는 일련의 비트를 통하여 표현  기계 명령어를 2 진수를 통하여 표현  “hard to read/understand”  기계 명령어의 기호 표현 (symbolic representation) Example: LOAD M(X), JUMP+M(X,0:19), etc  연산코드 (operator) 들은 그 연산을 지정하는 니모닉 (mnemonics) 으로 표현 Example: ADD, SUB, MPY, DIV, LOAD, STOR

8 Prof. Young Jin Nam, Daegu University 명령어 형식 (Format)

9 Prof. Young Jin Nam, Daegu University 기계 명령어 특성  실행 (Execution) 사이클 – 명령어 해석에 따른 동작분류 [Chap.3]  프로세서 - 주기억장치 : CPU 와 주기억장치간 데이터 전송  프로세서 -I/O: CPU 와 I/O 모듈간 데이터 전송  데이터 처리 (Data processing): 데이터에 대한 산술 / 논리적 연산  제어 (Control): 실행순서 변경 (PC 레지스터 값 변경 )  명령어 종류  데이터 처리 : 산술 및 논리 명령어  데이터 저장 : 기억장치 명령어  데이터 이동 : I/O 명령어  제어 : 검사와 분기 명령어

10 Prof. Young Jin Nam, Daegu University 명령어 주소 개수  3-Address (3-Operand)  Addresses: operand 1, operand 2, result  상당히 긴 명령어 형식을 필요  Not commonly used(???) C  A + B; ADD C, A, B; Example: Y = (A – B) / (C + D x E)

11 Prof. Young Jin Nam, Daegu University 명령어 주소 개수  2-Address (2-Operand)  Addresses: operand 1(result), operand 2  주소 하나가 오퍼랜드 주소와 결과 주소를 모두 지정해야함  저장 장소의 크기를 줄어들지만, 불편함  오퍼랜드 값의 변경을 막기 위해서 연산 수행 전에 그 결과 값을 결 과의 주소 or 임시 주소에 옮기는 작업이 필요함 C  A + B; MOV C, A; ADD C, B; Example: Y = (A – B) / (C + D x E)

12 Prof. Young Jin Nam, Daegu University 명령어 주소 개수  1-Address (1-Operand)  Accumulator 가 일반적으로 “ implicit ” second address 임  Common on early machines C  A + B; LOAD A; ADD B; STOR C; Example: Y = (A – B) / (C + D x E)

13 Prof. Young Jin Nam, Daegu University 명령어 주소 개수  0-Address (0-Operand)  스택 (last-in-first-out) 이라는 특별한 기억장치 조직을 이용함  스택은 미리 알려진 공간에 위치하며,  스택의 최상위에 있는 두 개의 값을 사용함 C  A + B; PUSH A; PUSH B; ADD; POP C; Example: Y = (A – B) / (C + D x E) (*) Stack 기능 : 교재 부록 10A 스택 참조

14 Prof. Young Jin Nam, Daegu University 설계 이슈 – How Many Addresses?  More addresses  More complex (powerful?) instructions  More registers (inter-register operations are quicker)  Fewer instructions per program  Fewer addresses  Less complex (powerful?) instructions  More instructions per program  Faster fetch/execution of instructions

15 Prof. Young Jin Nam, Daegu University 명령어 세트 설계 이슈  연산 종류 (Operation Repertoire)  How many ops?  What can they do?  How complex are they?  데이터 형식 (Data Type) [this chapter]  연산이 수행될 데이터의 여러 가지 형태  주소, 수, 문자, 논리 데이터  명령어 형식 (Instruction Format) [Chap.11]  명령어 길이 (Length of opcode field)  주소의 수 (# of addresses)

16 Prof. Young Jin Nam, Daegu University 명령어 세트 설계 이슈  레지스터 (Register)  명령어들에 의해 사용될 CPU 레지스터들 수  용도 (which operations can be performed on which registers?)  주소지정 (Addressing) [Chap.11]  오퍼랜드의 주소를 지정하는 방식  Immediate (A  99), direct(LOAD M[99]), indirect(LOAD M[M[99]])  CISC vs. RISC [Chap.12]

17 Prof. Young Jin Nam, Daegu University 오퍼랜드 형태 ( 데이터 형태 )  주소 (Addresses)  주기억장치 or 가상기억장치의 주소를 결정하기 위해서 사용됨  부호 없는 정수 (unsigned integer) 로 간주됨  수 (Numbers)  정수 or 고정소수 (integer or fixed point)  부동 소수 (floating point)  10 진수 (decimal) – BCD (Binary Coded Decimal) –packed decimal –10 진 digit 는 4 비트 코드로 표현됨 – 항상 8 비트의 배수로 이루어짐 – 음수는 좌측끝 or 우측끝에 4-bit 부호 digit 를 포함시킴 (1111 for “-”) –Example: 246 =

18 Prof. Young Jin Nam, Daegu University 오퍼랜드 형태 ( 데이터 형태 )  문자  ANSI 에서 발표한 ASCII (American Standard Code for Information Interchange) 코드 ( 교재 p.213, 표 7.1 참조 ) – 각 문자는 고유 7 비트 패턴으로 표현됨 –128 가지의 서로 다른 문자를 표현함 (including 제어문자 ) – 여덟번째 bit 는 parity 비트로 이용할 수 있음 (even or odd parity) –011XXXX 에 대해서, 0 부터 9 까지의 숫자들은 우측 네 bit 에 위치함 (  4-bit packed decimal 코드로의 변환이 용이함 )  EBCDIC (Extended Binary Coded Decimal Interchange Code) –IBM S/390 에서 사용됨 –packed decimal 코드로의 변환이 용이함 – ~  0~9

19 Prof. Young Jin Nam, Daegu University 오퍼랜드 형태 ( 데이터 형태 )  논리 데이터 (logical data)  n-bit 단위를  각 항목이 0 or 1 을 가지는 n 개의 1-bit 데이터 항목으로 간주함.  “T” or “F” 값만을 저장하는 Boolean 을 저장할 때 유용함.

20 Prof. Young Jin Nam, Daegu University 펜티엄 & PowerPC 데이터 형식  Big-Endian  가장 하위 바이트 주소 (lowest address) 에 최상위 바이트를 저장함  Example: Motorola 680x0, Sun SPARC, 대부분의 RISC 기계 등  Little-Endian  가장 하위 바이트 주소 (lowest address) 에 최하위 바이트를 저장함  Example: Intel 80x86, 펜티엄, VAX, Alpha 등 Example: 0x Big-endian Little-endian

21 Prof. Young Jin Nam, Daegu University Example: C 데이터 구조와 Endian 배치 (Big: MSB –> Low)

22 Prof. Young Jin Nam, Daegu University 펜티엄 데이터 형식 (1 of 3)  길이가 8( 바이트 : byte), 16( 단어 : word), 32(2 중 단어 : doubleword) 및 64(4 중 단어 : quadword) 비트인 데이터 형식들을 취급  단어들이 짝수 주소에 배열될 필요 없음 ( 기억장치 이용률  )  Intel 80x86 기계와 같이 little-endian 방식을 이용

23 Prof. Young Jin Nam, Daegu University 펜티엄 데이터 형식 (2 of 3)

24 Prof. Young Jin Nam, Daegu University 펜티엄 데이터 형식 (3 of 3)  부호를 가진 정수 형식 : 2 의 보수 (16, 32, 64bit)  부동소수점 형식 : IEEE 754 표준

25 Prof. Young Jin Nam, Daegu University PowerPC 데이터 형식  길이가 8( 바이트 : byte), 16( 반단어 : half word), 32( 단어 : word) 및 64(2 중 단어 : doubleword) 비트인 데이터 형식들을 취급  Big- or little-endian  고정 소수점  부호 없는 unsigned byte: 논리 및 정수 산술 연산  부호 없는 half word: 16-bit size ( 위와 동일 )  부호 있는 half word: 산술연산  부호 없는 word: 논리 연산 & 주소 포인터  부호 있는 word: 산술 연산  부호 없는 2 중단어 : 주소 포인터  바이트 스트링 : 길이가 0~128 바이트  부동 소수점  IEEE 754  Single or double precision 을 지원

26 Prof. Young Jin Nam, Daegu University 연산 종류  연산의 전형적인 분류  데이터 전송 (data transfer)  산술 (arithmetic)  논리 (logic)  변환 (conversion)  입출력 (input/output)  시스템 제어 (system control)  제어의 이동 (transfer of control)

27 Prof. Young Jin Nam, Daegu University 데이터 전송  기계의 명령어 중에서 가장 기본적인 형태  명시해야 할 사항 :  source & destination 오퍼랜드의 위치  전송될 데이터 길이  오퍼랜드의 주소 지정 방식  보편적인 명령어 세트 연산

28 Prof. Young Jin Nam, Daegu University 데이터 전송 – IBM S/390 데이터 전송 동작 예 전송될 데이터 의 크기 (8,16,32,64bit) or 전송의 source 및 destination 에 따라, 여러 종류의 명 령어들이 존재 할 수 있음

29 Prof. Young Jin Nam, Daegu University 데이터 전송 – CPU 동작 측면  Source 와 destination 이 모두 register 인 경우 : ( 예 : mov eax ecx)  CPU 내부에서만 동작이 발생함  두 오퍼랜드 중에서 하나 or 둘 모두가 기억장치 내에 존재할 경우 : 1. 주소지정 방식에 근거하여 기억장치 주소 계산 2. if 주소 == 가상기억장치 주소, 그 주소를 실제 기억장치 주소로 변환 3. 원하는 주소의 내용일 캐쉬에 존재하는지 확인 4. if 캐쉬 miss, 기억장치 모듈로 명령을 보냄

30 Prof. Young Jin Nam, Daegu University 산술 연산  덧셈, 뺄셈, 곱셈 & 나눗셈과 같은 기본 산술 연산 제공  부호 가진 정수 ( 고정 정수 ) 및 부동 소수점에 대한 연산 뿐만 아니라,  Packed-BCD 에 대해서도 산술 연산을 지원  다양한 단일 - 오퍼랜드 : absolute, negate, inc, dec  보편적인 명령어 세트 연산

31 Prof. Young Jin Nam, Daegu University 논리 연산  Boolean 연산에 기반을 둠 ( 교재 부록 A 참조 )  기본적인 논리 연산

32 Prof. Young Jin Nam, Daegu University 논리 연산  보편적인 명령어 세트 연산

33 Prof. Young Jin Nam, Daegu University 논리 연산  Shift & Rotate

34 Prof. Young Jin Nam, Daegu University 논리 연산  Shift & Rotate 예

35 Prof. Young Jin Nam, Daegu University 변환 (Conversion)  데이터의 형식을 변환함 ( 예 : 10 진수 → 2 진수 )  8 비트 code 를 다른 코드로 변환함 ( 예 : ASCII → EBCDIC)

36 Prof. Young Jin Nam, Daegu University 입력 / 출력  Isolated I/O, memory-mapped I/O, DMA 등

37 Prof. Young Jin Nam, Daegu University 시스템 제어  일반적인 privileged 명령어  프로세서가 privileged 상태에서 동작 중이거나 기억장치의 privileged 영역 내에 있는 프로그램을 수행 중일 동안만 실행 가능 ( 예 : Kernel 모드 )

38 Prof. Young Jin Nam, Daegu University 제어 이동 – 분기 명령어  대부분 조건 분기 (conditional branch)  어떤 연산의 결과로써 set 되는 한 비트 혹은 여러 bits 들로 이루어 진 조건 code( 사용자에게 보이는 register 형태 ) 를 보고 분기 결정  예 : BRP X, BRN X, BRZ X, BRO X  혹은, 3-operand 방식을 이용  예 : BRE R1, R2, X

39 Prof. Young Jin Nam, Daegu University 제어 이동 – 분기 명령어  분기 명령어 Example

40 Prof. Young Jin Nam, Daegu University 제어 이동 – Skip 명령어  묵시적 주소 ( 다음 명령어 주소 + 한 명령어 길이 ) 를 포함  Destination address 가 필요하지 않음  Example: ISZ (increment-and-skip-if-zero) 301 … 309ISZ R1 310BR

41 Prof. Young Jin Nam, Daegu University 제어 이동 – Procedure( 프로시저 ) 호출  Procedure 는 여러 곳으로부터 호출될 수 있음  Procedure 호출은 procedure 내에서 일어날 수 있음 (nesting of procedure)  호출된 프로그램 내에는 각 procedure 호출 (CALL) 에 대응되는 복귀 명령어 (RETURN) 가 반드시 있어야 함  CPU 는 복귀가 적절히 이루어지도록 복귀주소 (return address) 를 저장해야 함 ( 레지스터, procedure 의 시작부분, stack 의 top)

42 Prof. Young Jin Nam, Daegu University 제어 이동 – Nesting of Procedure & 스택 사용 스택 사용 : “Re-entrant procedure” 를 가능

43 Prof. Young Jin Nam, Daegu University 제어 이동  스택을 이용한 파라메터 전송 (1 of 3) SP BP Local Variables Frame pointer to previous record Return address Call Parameters Local Variables Frame pointer to previous record Return address Call Parameters

44 Prof. Young Jin Nam, Daegu University 제어 이동  스택을 이용한 파라메터 전송 (2 of 3)  Caller: –push parameters on stack. (1st parameter is on TOP of the stack) –call subroutine (JSR)  Callee: –create a current frame ptr (push BP, which points to the previous record) –reserve space for locals & save registers used for locals –execute: Parameters and locals are accessed from stack using BP as the base pointer –release space for locals & restore registers used for locals –restore the previous frame pointer (pop BP) –return from subroutine (RTS)  Caller: –remove the parameters from the stack.

45 Prof. Young Jin Nam, Daegu University 제어 이동  스택을 이용한 파라메터 전송 (3 of 3)

46 Prof. Young Jin Nam, Daegu University 재진입 (Re-entrant) 가능 함수  하나 이상의 태스크에서 호출될 수 있고,  함수 수행 도중에 태스크를 전환해도 언제나 올바르게 동작  Example: Re-entrancy 를 보장 못하는 경우

47 Prof. Young Jin Nam, Daegu University 재진입 (Re-entrant) 가능 함수  재진입 (Re-entrant) 인지를 결정하기 위한 규칙 1. 스택 변수 or 그 태스크에서만 유일하게 사용하는 경우를 제외하고 는, atomic 하지 않는 방법으로 변수들을 사용하지 않음 2. 재진입이 가능하지 않은 어떠한 함수도 호출하지 않음

48 Prof. Young Jin Nam, Daegu University The end of “ 명령어 세트 ” Part of Homework #3: 연습문제 10.3, (10.6,) 10.24