School Lecture Study/Computer Architecture 8

Cache

Directed mapped cache Block address = memory address / block size 여기서 block size는 byte 단위임 Block number = block address % block 개수 offset bit 수 = block 당 byte의 지수 값 (Ex. 8이면 offset bit 수는 3) index bit 수 = block의 개수의 지수 값 (64 blocks 면 index bit 수는 6) Tag bit 수 = 32 - index bit 수 - offset bit 수 tag : 보다 확실한 정보를 위해 앞쪽 비트 정보도 필요해서 기록하는 것 valid bit : 이 정보가 정말 유효한 정보인지 확인하는 것 Ex) 예제 8-blocks, 1 word /..

Each instruction's datapath

Instructions R-Type instruction Load instruction Branch-on-Equal Instruction Datapath with jumps added R-Type instruction RegDst = 1 Branch = 0 MemRead = 0 MemtoReg = 0 ALUOp MemWrite = 0 ALUSrc = 0 RegWrite = 1 Sign-extend 필요 없음 (주소값 갖고 있지 않음) + 주소값에 PC Add하는 Adder 필요 없음 Memory 읽기, 쓰기 안 함 (Data Memory 부분 안 쓰임) Load instruction RegDst = 0 Branch = 0 MemRead = 1 MemtoReg = 1 ALUOp MemWrite = 0 AL..

Simple DataPath

중간고사 때는 워낙 말아먹고 이번에 공부를 거의 새로 하다시피 하니까 컴구가 재밌다... 혼자 공부한 걸 정리한 거라 틀린 부분 있을 수 있습니다. 지적 환영합니다 ;) Introduction MIPS의 구현은 simple version, realistic pipelined version 두 가지로 나뉜다. 해당 instruction만 구현하는 processor라고 가정한다. 메모리 참조 : lw, sw 연산, 논리 : add, sub, and, or, slt 제어, 전달 : beq, j (j는 약간 모양이 다르다) Simplified version 먼저 이게 Simplfied 된 version이다. 전혀 안 간단한 것 같지만 pipelined datapath 보다는 훨씬 간단하다. clocking me..

MIPS Instructions

Instructions 들은 binary로 인코딩 된다. 32-bit instruction words로 구성되며, instructions format이 R, I, J로 적은 편이다. == Register numbers == $t0 ~ $t7은 8-15 $t8 ~ $t9는 24-25 $s0 ~ $s7은 16-23으로 각각 정해져있다. MIPS 초록 종이에 다 나와 있음. R-format은 op, rs, rt, rd, shamt, funct로 구성된다. op : r-format임을 표시해주는 부분 rs rt : source register rd : destination register이다. shamt: shift 연산일 때 쓰이는데, 안 쓰이면 0이 들어간다. funct : add, sub 등 실제 어떤 연..

[5-2] Division

용어 정리 - quotient : 몫 - dividend : 나눠지는 수 - divisor : 나누는 수 - remainder : 나머지 ** 0으로 나누는 것에 유의 ** Division RULE - Divide는 절댓값으로 진행한다. - dividend와 remainder의 부호는 같다. Ex) -5/2 - Q : -2 - R : -1 (Q와 R이 모두 같은 부호여야 함) Restoring division example - divisor, quotient, dividend 사용 - divisor는 한 번 연산할 때마다 shift right 실행 - dividend에서 divisor를 빼고, 그 값이 양수인지 음수인지 확인한다. - 양수라면 그 값으로 dividend의 값을 갱신하고, quotient의..

[5-1] Overflow / Multiplication

주어진 범위를 넘어가는 것이 overflow * addition의 경우 - 양수와 음수 덧셈 : no overflow (범위가 벗어나지 않음. 0으로 가까워짐) - 양수와 양수 덧셈 : Overflow if result sign is 1 (부호가 -가 될 가능성 있음) - 음수와 음수 덧셈 : Overflow if result sign is 0 (부호가 +가 될 가능성 있음) subtraction의 경우 - 양수 양수, 음수 음수 뺄셈 : no overflow - 양수-음수 뺄셈 : Overflow if result sign is 0 (부호가 +가 될 가능성 있음) - 음수-양수 뺄셈 : Overflow if result sign is 1 (부호가 -가 될 가능성 있음) * Dealing With Ove..

[3-3] Immediate Operands & Integer Wrapping & 보수

Immediate Operands 이 부분은 아직 잘 이해를 못 했다. 즉시 계산인가? -> 상수를 레지스터에 따로 넣지 않고 바로 계산하는 것을 Immediate Operands 라고 한다. Constant data specified in an instruction addi 키워드 사용 (빼기는 없음) Ex) addi $s3, $s3, 4 // s3 = s3 + 4 - MIPS $0은 상수 0을 값으로 갖는다. 너무 자주 쓰여서 정의해놓음. $0에는 값을 덮어쓸 수 없다. Ex) add $t2, $s1, $zero // t2 = s1 값 이동을 addi로 구현 가능하다. (근데 여기 addi 아닌가 싶다) Unsigned Binary Integers Range는 0부터 2^n -1 8bits -> 0 ..

[3-2] Arithmetic Operations in MIPS

** 공부한 내용을 까먹을까봐 한글로 작성하는 글입니다. ** 강의 내용을 잘못 이해했을 수 있습니다. (지적 환영) Add and subtract, three operands - 두 개의 변수와 두 변수를 더한 값을 저장하는 destination이 존재한다. - Regularity가 구현을 간단하게 만든다. - Simplicity enables higher performance at lower cost (번역하는 것보다 이 문장이 나은 듯) Ex) add a, b, c // a = b + c Ex) a = b + c + d; --> add a, b, c // a = b + c add a, a, d // a + d ▶ C code = f = (g + h) - (i + h); --> compiled MIP..