Chapter 9 Instruction Set Architecture

Download Report

Transcript Chapter 9 Instruction Set Architecture

Chapter 10 Instruction Set Architecture

10-1 Computer Architecture 개념 10-2 Operand Addressing 10-3 Addressing Mode 10-4 Instruction Set Architecture 10-5 Data Transfer Instruction 10-6 Data Processing Instruction 10-7 Floating Point Calculation 10-8 Program Flow instruction 10-9 Program Interrupt

10-1 Computer Architecture 개념

    Machine Language Instruction, Data를 나타내는 Binary language Assembly Language Binary 연산코드와 Address를 기호(Symbol)화한 이름으로 대체하여 프로그 래머가 다루기 쉽도록 기호화한 언어 Assembly language reference maual에 컴퓨터의 논리구조가 있다 Architecture의미 Instruction set architecture Organization(기구) : Datapath, CU, BUS Hardware 를 포함한 개념 Instruction Format 1. Opcode Field : 실행해야할 동작 규정 2. Address Field : 메모리 어드레스나 프로세서 레지스터 선택 3. Mode Field : 어드레스 영역의 해석방법 규정

기본적인 컴퓨터 동작 사이클

  다음의 단계를 따라 프로그램의 Instruction을 실행하기 위한 컴퓨터의 Control Unit를 설계한다 1. 메모리에서 제어레지스터로 명령어를 가져온다 2. 명령어 디코드 3. 명령어가 사용하는 오퍼런드 위치를 알아낸다 4. 필요하다면 메모리에서 오퍼런드를 가져온다 5. 프로세서 레지스터에서 연산 실행 6. 결과저장 7. 다음 명령어를 가져오기 위해 1번으로 돌아간다.

PC (Program Counter) 현재 명령어가 실행되는 동안 “1”씩 증가

Register Set

 프로그래머가 access 할 수 있는 CPU 내의 모든 register Register Files Program Counter Instruction Register  Microprogram 만 이 access할 수 있는 register도 있다 Pipeline register : Programmer 가 직접 access 불가  Processor Status Register (PSR) C,N,V,Z 의 상태값 저장 상태bit를 Condition code 혹은 Flag 라고 한다  Stack Pointer

10-2 Operand Addressing

 Implied (암시적) Addressing 오퍼런드의 위치가 명령어 속에 있는 opcode나 다른 operand들 중 하나가 지정하는 어드레스에 의해 지정하여 명확하게 어드레싱하지 않는 것 따라서 명령어 속에 operand를 위한 메모리 주소나 레지스터 어드레스 영역 이 필요없다  Explicit (명시적) Addressing 명령어 속에 operand를 지정하는 어드레스가 지정되어 있는 것  Operand 수가 컴퓨터 프로그램에 끼치는 영향에 대하여 X = (A + B)(C + D) A,B,C,D 의 값은 기호화(symbolized)된 어드레스에 저장 X는 결과가 저장되는 메모리 어드레스

Three-Address Instruction

 3-address program ADD ADD MUL T1, A, B T2, C, D X, T1, T2 M[T1] ← M[A] + M[B] M[T2] ← M[C] + M[D] M[X] ← M[T1] X M[T2]  임시 저장 장소로 register를 사용할 경우 ADD ADD MUL R1, A, B R2, C, D X, R1, R2 R1 ← M[A] + M[B] R2 ← M[C] + M[D] M[X] ← R1 X R2  장점 : Program의 길이가 짧다 단점 : 2진 code로 된 명령어는 세 메모리 어드레스를 위한 많은 bit 필요

Two-Address Instruction

 2-address program : register나 memory address 지정 MOVE ADD MOVE ADD MUL T1, A T1, B X, C X, D X, T1 M[T1] ← M[A] M[T1] ← M[T1] + M[B] M[X] ← M[C] M[X] ← M[X] + M[D] M[X] ← M[X] X M[T1]   여기서 임시 register R1을 memory address T1 대신 사용 가능 Instruction의 수가 5개로 증가

One-Address Instruction

 Accumulator 사용 Operand를 가져오거나 결과를 저장하는 레지스터 LD ADD ST LD ADD MUL ST D X X A B X C ACC ← M[A] ACC ← ACC + M[B] M[X] ← ACC ACC ← M[C] ACC ← ACC + M[D] ACC ← ACC X M[X] M[X] ← ACC   모든 연산은 ACC 레지스터와 memory operand 사이에서 일어남 명령어 수가 7개로 증가

Zero-Address Instruction

 Stack 이용 LIFO (Last In First Out) : 나중에 memory에 저장된 내용을 먼저 꺼낸다  TOS : Stack의 제일 위에 있는 word TOS -1 : TOS 바로 밑에 있는 word   사용된 operand는 Stack에서 제거되고, 제거된 operand 아래의 것이 새로운 TOS 가 된다.

어떤 연산이 실행되면 그 결과는 stack에 저장되고 새로운 TOS 가 된다.

 ADD : TOS ← TOS + TOS -1 PUSH X : TOS ← M[X] POP X : M[X] ← TOS

Zero-Address Instruction(계속)

 Zero addressing을 이용한 program PUSH PUSH ADD PUSH PUSH ADD MUL POP A B C D X TOS ← M[A] TOS ← M[B] TOS ← TOS + TOS -1 TOS ← M[C] TOS ← M[D] TOS ← TOS + TOS -1 TOS ← TOS + TOS -1 M[X] ← TOS

Addressing Architecture

 Memory-to-Memory Architecture 모든 동작이 메모리를 access 하는 3-address architecture CPU 에는 PC와 같은 control register만 존재 모든 operand는 memory에서만 가져오고, 결과도 memory에 저장 Data transfer 와 manipulation 명령어의 format은 하나에서 세개의 address field를 갖는다.

 이전의 예 : 3개의 명령어가 필요 만일 추가적인 word가 각 instructions내의 각각의 memory address를 위해 명령어 내에 있다면, operand 가져오기(fetch)와 결과의 저장 까지(store)를 포함하면 덧셈을 수행하는 프로그램은 21번의 memory access 필요.

Opcode address1 address2 address3

Addressing Architecture (계속)

 3-address Register – to- Register 혹은 Load/Store architecture Load 와 Store 명령어의 경우에만 오직 하나의 address field 허용  Program LD R1, A LD R2, B ADD R3, R1, R2 LD R1, C LD R2, D ADD R1, R1, R2 MUL R1, R1, R3 ST X, R1  Memory access 의 수 : 총 18 R1 ← M[A] R2 ← M[B] R3 ← R1 + R2 R1 ← M[C] R2 ← M[D] R1 ← R1 + R2 R1 ← R1 x R3 M[X] ← R1

Addressing Architecture (계속)

 Register-Memory Architecture 단일 memory address를 갖는 2-address Instruction ADD R1, A R1 ← R1 + M[A]  Single Accumulator architecture One-Address Instruction의 경우 Register file이 없으므로 memory access 를 위해 단일 address 사용  Stack Architecture Zero-address Instruction의 경우 연산자를 나중에 사용 : Postfix presentation (A+B)XC+(DXE) : INFIX 표기법 AB + C X DE X = : POSTFIX 표기법

Stack Architecture

PUSH PUSH ADD PUSH MUL PUSH PUSH MUL ADD A B C D E Fig.10-1 RPN 표기 변환과정 Fig.10-2 스택 프로그램을 실행할 때의 스택 동작 과정