[컴퓨터구조] week2

Eunbin Park·2022년 4월 9일
0

Computer Architecture

목록 보기
2/3

🎵 Red Hot Chili Peppers - Can't Stop
🎶 Guns N' Roses - Sweet Child O' Mine

Operation and Operand

Arithmetic Operation

Instruction=Opcode+OperandInstruction = Opcode + Operand

의미Instructions
a = b+cadd a, b, c
a = b+c+d+eadd a,b,c
add a,a,d
add a,a,e
f = (g+h)-(i+j)add t0, g, h
add t1, i, j
sub f, t0, t1

Operation 수헹

역할add a, b, c 수행 시
RegistersOperand의 값 저장a, b, c 값 저장
ALU (Arithmetic Logic Unit)Operation 수행add 등의 연산
Control UnitALU와 register 동작 제어order add to ALU

Register Operand

No.NamePurpost
0$zero0
2-3v0v0-v1return value
4-7a0a0-a3Arguments (params)
8-15t0t0-t7temporaries
16-23s0s0-s7saved
24-25t8t8-t9temporaries
28$gpglobal pointer
29$spstack pointer
30$fpframe pointer
31$rareturn address

Appications

Register Operand

의미Instructions
f = (g+h)-(i+j)add t0, g, h
add t1, i, j
sub f, t0, t1

f, g, h, i, j - $s0 ~ $s3에 할당
$s: 메모리에 저장

Memory

의미Instructions
g = h + A[9]lw t0,8(t0, 8(s3)
add $s1, $s2, $t0

$s1 = g
$s2 = h
$3 = Base Addr of arr A

  • Data transfer instructions:
    load > (mem to reg),
    store > (reg to mem)
  • A[8] -> Base Addr + offset 8

Instruction and Offset by Data Size

Data Sizeloadstoreoffset 단위A[8]접근
Wordlwsw432($3)
Half Wordlhsh216($s3)
Bytelbsb18($s3)

Constant or Immediate Operands

Operand 하나가 상수일 경우

구분필요 Inst
4를 변수에 넣고 a과 합산변수에 4할당 -> load var -> add
4 to aadd only

상수 Operand지원
addi: add immediate
addi $s3, $s3, -4 subtract immediate 지원 불가

MIPS Register 0: $zero

write 불가능
1. add $t2, $s1, $zero means $t2 = $s1
2. nor $t2, $s1, $zero means ~$s1

Instruction

Instruction Set

Instruction: HW를 위한 명령어
Instruction Set:

  • Inst 모음 > 어휘
  • CPU 구조의 상이함으로 컴퓨터마다 상이하지만 간단하고 공통됨

MIPS ( Microprocessor w/o Interlocked Pipeline Stages )

구분Desc.Instructions
Arithmetic산술 연산add, addi, sub
Logicalbit-by-bit AND, OR, NOR 등의 bitwise 논리연산andi, ori, nori, sll, srl
Data Transfer레지와 멤 간의 데이터 이동lw, lh, lb, sw, sh, sb
Branch/JumpInstruction흐름의 변경
- Conditional branch: 조건에 따른 흐름 변경beq, bne, slt, slti, j, jr, jal
- Unconditional Jump: 무조건 흐름 변경

** Arithmetic And Logical Operaion are Data Procession

산술 논리 연산의 표현

R format

  • Register Operand * 3
  • op(6 bits), rs(5), rt(5), rd(5), shamt(5), funct(6)
    - op: Operation Code
    - rs: 1st Src Register #
    - rt: 2nd src register #
    - rd: Destination Register # - 연산결과 저장
    - shamt: shift amount - shift 연산 시 사용
    - funct: function code ( extends opcode )
    - 명령어 구분
    • Op코드 구분은 funct 연산자로 구분

I format

  • Register Operand * 2 + Immediate ( Constant )
  • Immediation 산술 논리 및 데이터 전송 연산 / Conditional Branch
  • op(6), rs(5), rt(5), constanct or address (16)
    - Constanct: 215-2^{15} to +215+2^{15} (sign extension)
    • Address: rs의 base address에 더해지는 offset

J format

  • Unconditional Jump
  • op(6), Address(26)

Logic Operation

OpsCMIPS
Shift Left<<sll
Shift Right>>srl
Bitwise AND&and, andi
Bitwise OR|or, ori
Bitwise NOT~nor

not 표현: nor $s1, $s2, $zero: $s1 = ~($s2|$zero) = ~$s2

Data Transfer 연산 표현

  • Register Operand * 2 + offset
  • Assembly Lang: OpCode s1Offset(s1 Offset(s2)
  • Machine Lang: I-format
  • op(6), rs(5), rt(5), constant or address (16)

Character Data

  • 알파벳, 숫자, 기호, 특수문자: ASCII 1byte 표현
  • 한글: Unicode 2bytes
loadstorenote
byte opsload byte (lb)store byte (sb)sign-extension
halfword opsload halfword (lh)store halfword (sh)sign-extension
unsigned byte opsload byte unsigned (lbu)
unsigned halfword opsload halfword unsigned (lwu)
  • Unsigned byte means Unsigned char
  • signed -128 ~ 127 (1): 32-bit 확장 시 sign-extension 필요
  • unsigned 0 ~ 255 (0)

32-bit Constant Data

  • load upper immediate (lui): 최상위 16-bit에 상수값 기록
  • lui(15), 0(5), rt(5), constant(16)
  • rt의 최상위 16-bit에 constant 기록
lui $40, 61 ➡️ $s0 = 61 << 16
to
ori $s0, $s0, 2304 ➡️ $s0 = $s0 | 2304

immediate 연산은 16-bit 데이터만을 표현
ori $s1, $zero, 100 to $s1 = 100

0개의 댓글