Memory stall cycles = Memory accesses / Program x Miss rate x Miss penalty = Instructions / Program x Misses / Instruction x Miss penalty Q. 명령어 캐시 실패율 I-cache miss rate 2% (Use instruction fetch operation, read from instruction cache memory) 데이터 캐시 실패율 D-cache miss rate 4%라고 가정해보자 (load & store operation) 메모리 지연이 없을 때 CPI가 2이고 매 실패마다 실패 손실(Miss penalty)이 100사이클이다. 실패가 발생하지 않는 완벽한 캐시를 사용한다면 시스템이..
SKKU SW
On cache hit, CPU proceeds normally (additional delay 없이) On cache miss, -stall the CPU pipeline -fetch block from next level of hierarchy -instruction cache miss: restart instruction fetch -data cache miss: complete data access 명령어 캐시 실패의 처리 단계 1. 원래의 pc값을 메모리로 보낸다. 2. 메인 메모리에 읽기 동작을 지시하고 메모리가 접근을 끝낼 때까지 기다린다. 3. 캐시 엔트리에 쓴다. 이때 메모리에서 인출한 데이터를 데이터 부분에 쓰고, 태그 필드에 주소의 상위 비트를 쓰고, 유효 비트를 1로 한다. 4. 명..
-지역성의 원칙 1. temporal locality 시간적 지연성 한번 참조된 항목은 곧바로 다시 참조되는 경향이 있음. 순환문 -> 명령어와 데이터를 반복적으로 접근 2. spatial locality 공간적 지연성 어떤 항목이 참조되면 그 근처에 있는 다른 항목들이 곧바로 참조될 가능성이 높음. 배열이나 레코드의 요소들 순차적 접근 시프 강의에서 본건데 반갑다 반가워 근데 잘은 모르는게 함정 컴퓨터의 메모리를 메모리 계층구조로 구현함으로써 지역성의 원칙을 이용할 수 있다. 메모리 계층구조는 서로 다른 속도와 크기를 갖는 여러 계층의 메모리로 구성되어 있다. 그 목적은 사용자에게 가장 빠른 메모리의 접근 속도를 제공하면서 동시에 가장 싼 메모리만큼의 용량을 제공하는 것. 빠를수록 비싸고 작다고 보면 ..
caller calls callee Set register x10(a0) - x17(a7) with the arguments in order before caling the function. (8 registers) If the function takes more than 8 arguments, the rest of the arguments are passed to the callee using memory. RISC-V calle convention is designed to pass only one value from callee to caller Use register x10(a0) - x11(a1) x10 [31:0] x11 [63: 32] If we do not have to use a0, a1..
memory "address" is also a 32-bit (non-negative) integer. memory -> register: Load (need address & destination register) register -> memory: Store (need address & source register) C code 1: g = h + A[8]; g in x1, h in x2, base address (starting address) of A in x3 A is an 'int' type array (array: list of values) Compiled RISC-V code: Index "8" requires an offset of 32 lw x10, 32(x3) # lw = load ..
Instructions and data are represented in binary. (machine code) Instructions and data are stored in memory (set of bytes) Operating system will load the program binary from the disk and put it to the memory -> CPU ready to execute the program RISC-V의 모든 instruction은 32-bit, 즉 1 word의 길이로 나타내며, little endian으로 나타낸다. 한 마디로, 우리는 뒤에서부터 읽어 해석해야 한다. - Instruction fields opcode: operation code (0~6비트까지..
Operation C JAVA RISC-V Bitwise AND & & and, andi Bitwise OR | | or, ori Bitwise XOR ^ ^ xor, xori Bitwise NOT ~ ~ xor, xori Shift left > srli and x9, x10, x11 or x9, x10, x11 xor x9, x10, x11 쉽게 생각하면 같으면 0, 다르면 1 if x11 = -1 (0xFFFFFFFF), x9 = ~x10 (x11이 모든 비트가 다 1이라면 xor 연산을 통해 1은 0으로 0은 1로 바뀔 것이기 때문) RISC-V has xori a XORI -1 == NOT a Pseudo-instruction: not not x10, x11 -> xori x10, x11, -1 ..
그냥 add instruction과 addi instruction은 다르다. addi에서 뒤에 붙은 i는 immediate을 의미한다. -> constant data included in an instruction addi x22, x23, 4 여기서 x23은 one register file operand, 4는 one constant value다. 주의해야할 점은 subi instruction은 없다는 것이다. instead, just use a negative integer value. x23에서 1을 빼서 x22에 저장하고 싶어! 라고 하면 subi x22, x23, 1 같지만, subi instruction은 없으므로 우리는 addi x22, x23, -1로 작성할 수 있다. 이유: By redu..