Ch 2. Instructions: Language of the Computer -(4)
1. Introduction to Instruction Set Architecture
- Instruction Set Completeness
Instruction Set Completeness
- Completeness
    - A computer should have a set of instructions so that the user can construct machine language programs to evaluate any function that is known to be computable
- 계산 가능하다고 알려진 어떤 function이든 제대로 판단할 수 있는 machine language program을 구현할 수 있도록 instruction set을 잘 만들어야 한다.
- 반드시 있어야 하는 Instructions
        - Arithmetic / Logical
- Data Transfer (including I/O)
- Control Transfer
 
 
- Instruction Orthogonality
    - 똑같은 기능을 하는 instruction가 여러 개 있어도 불필요하다
 
Instruction Types
Arithmetic / Logic Instructions (Data Operations)
- Data Values 수정
- Integer arithmetic operations
    - ADD/Subtract
- Multiply
- Divide
- Increment(++)/Decrement(−−) 필수x
 
- Logical operations
    - Bitwise AND (&)
- Bitwise OR ( | )
- Complement
        - 2진수의 음수표기
- 1’s complement
            - 3: 0011 => 1100(invert) (-3)
 
- 2’s complement
            - 0011 => 1100+1 => 1101
 
 
 
- Shift instructions
    - Logic shift (빠진 자리를 0으로 채움)
        - 0110 -> 1100
 
- Arithmetic shift (left shift = ×2, right shift = ÷2)
        - 00110(6)-> 01100(12), 00110(6) -> 00011(3)
 
- Rotate(Circular Shift) (빠진 자리를 빠진 숫자로 채움)
        - 1100 -> 1001
 
 
- Logic shift (빠진 자리를 0으로 채움)
        
- Floating point arithmetic operations
CISC vs RISC
- 공통 Goal: 성능이 좋은 컴퓨터를 만드는 것
- CISC(Complex Instruction Set Computer)
    - instruction set을 복잡하게
- Increasing functionality 다양한 instruction을 가짐으로 성능을 높임
- instruction 종류는 많되 high-level language 쓴 거를 compile 했을 때 assembly langauge의 instruction의 개수는 감소
- 단점: more op code bits and hardware -> propagation delay 
 -> clock period가 길어짐
 -> 수행시간이 오래걸림
 -> 하나의 instruction을 실행하기 위해 clock이 더 필요
 
- RISC(Reduced Instruction Set Computer)
    - cisc의 문제점을 줄임
- instruction set을 간단히 함으로서 성능을 높임
 
Data Transfer Instructions
- 다른 곳으로 Data 이동(복사?)
- Load Data (Memory -> Processor)
    - lw(load word), lb(load byte)
- Memory -> Register
 
- Store Data (Processor -> Memory)
    - sw(store word)
- Register -> Memory
 
- Move data within processor
    - Copy (register -> register)
 
- Special Instructions (write, output, with ..)
    - I/O Device ↔︎ Processor
- Block transfer of data
        - Memory ↔︎ Memory
- Memory ↔︎ I/O Device
 
 
- Memory mapped I/O
    - I/O device에 명령을 내리기 위해 device를 특정하는 방법
        - special I/O instructions
- memory-mapped I/O
 
- instruction의 종류를 늘리지 말고 memory address에 I/O Devices를 할당
  
 
- I/O device에 명령을 내리기 위해 device를 특정하는 방법
        
Control Transfer Instructions (Program Control)
- Jump or Branch(bne, beq): If, While function
- Conditional Branch instructions
    - ex) BEQ A, B, C
 
- Unconditional Branch instructions
    - ex) Jump A
 
- Subroutine(function) Calls and returns instructions
- Software interrupt instructions
- (Hardware Interrupts)
- Halt instructions to stop