Scratchpad Memory, Cache Lockdown
Scratchpad memory
eviction이 되지 않는 cache 비슷한 것

배경
replace하고싶지 않은 데이터를 빠르게 access할 필요성
cache의 데이터는 계속 바뀌기 때문에, 특정 데이터가 항상 cache에 있으리라고 보장하기 어려움.
-> 고정해놓고 쓰고 싶은 데이터는 어떻게 할까?
설명
SRAM으로 만들어짐
한번 들어오면, application이 끝날 때까지 그곳에 존재함 (access time 동일)
Cache Lockdown
Cache의 특정 부분을 update하지 않는 방식
- vector interrupt table
- interrupt service routine 등,
중요한 코드들에 대해 cache에서 벗어나지 않게 함으로써 빠른 response를 보장
Main Memory
DRAM Overview

- MC : Memory Controller
- Cache miss 발생시 addr, data, command 등을 메모리에 전송
- Channel : independent memory system (따로 따로 움직임)
- Channel 1개당 MC 1개
- DIMM : 꽂을 때마다 Channel의 용량 증가(rank 수 증가)
- DRAM Chip : 8개 BANK로 구성
- BANK : 독립적으로, 동시에 access할 수 있음 (bank interleaving) -> throughput 증가
- bank access time이 엄청 길어서, 여러개 동시에 접근해야함
칩 하나당 8bit 나오고(아래 그림 참조), 칩이 8개이므로 한번에 64bit(8byte)가 나온다.
이것을 8번 읽어야 64byte(cache block size)가 나온다
Bank 구조
Channel 수 늘리는 건 비쌈 -> bank 수 늘리기

sequence
- address가 들어오면, row address와 column address로 쪼갠다
- 특정 row를 선택하고 row buffer(sense amplifier)에 저장한다
- column address를 통해 특정한 부분을 선택한다(빨간 색칠부분)
- output으로 내보낸다
- precharge bit-lines (전하를 charge해놓는)


DRAM Burst

SDR
Single Data Rate
DDR
Double Data Rate
데이터를 많이 보내고 싶어서
CPU, Interconnect speed가 빨라지면서, BUS가 노는 상황이 발생

- rising / falling 모두에서 transfer 되므로 x2
- 1 transfer당 8byte 전송되므로 x8