Temporal locality(일시적 로컬리티)
어떤 데이터가 한 번 접근되었다면 짧은 시간 내에 다시 접근될 가능성이 높다. 예시로는 반복문이 있다.
Spatial locality(공간적 로컬리티)
어떤 데이터가 한 번 접근되었다면, 근처의 데이터도 곧 접근될 가능성이 높다. 예시로는 배열이 있다.
Locality를 따르면 좋은 이유
메모리는 성능과 가격에 따라 어느 정도 한계를 가진다. 이 때 locality 원칙을 따르면 빠르고 효율적인 메모리 접근이 가능하다.
메모리에는 계층 구조가 있다. CPU에 가까울수록 계층 숫자가 작다. 또한 CPU에서 멀어질수록 용량이 큰 메모리이고 접근 시간이 길다.
Hit
데이터가 상위 메모리에 존재하는 경우 접근에 성공하는 것을 말한다.
Miss
데이터가 상위 메모리에 존재하지 않는 경우 낮은 level의 메모리에서 데이터를 가져온다.
데이터를 가져올 때는 block 이라는 단위를 통한다.
| 접근 시간 | GB당 가격 | |
|---|---|---|
| SRAM | 0.5-2.5ns | $500-$1000 |
| DRAM | 50-70ns | $3-$6 |
| SSD | 5,000-50,000ns | $0.06-$0.12 |
| HDD | 5,000,000-20,000,000ns | $0.01-$0.02 |
Ideal memory
SRAM의 접근 시간을 가지고 HDD의 용량과 가격을 가지는 디스크이다.
실질적으로 이런 메모리는 제작할 수 없지만 가상 환경에서 가장 이상적인 메모리를 가정할 때 ideal memory를 적용한다.
예를 들어 2M x 16 SRAM이라고 하면 엔트리가 2M개, 21개의 address line(2M = 2^21), 16-bit 넓이라는 뜻이다.
DRAM의 리프레시
DRAM은 전기적인 구조 때문에 데이터가 점점 모호해진다. 1인 경우 0.9, 0.8, ..., 0인 경우 0.1, 0.2, ...
따라서 주기적으로 맞는 값으로 맞춰줘야 하는데 이 점에서 성능적인 패널티가 발생한다.
여러 개의 Row로 구성된 Bank 라는 단위가 존재한다.
DRAM에서는 배열 단위로 데이터에 접근하기 때문에 연속된 데이터를 사용할 때 유리하다.
DDR(double data rate) DRAM
rising edge와 falling edge 모두에서 데이터를 가져오는 DRAM이다. 속도가 증가하지만 구현이 복잡해진다.
QDR(quad data rate) DRAM
input과 output 모두 double data rate로 구현한 DRAM이다.
메모리 접근 속도가 성능을 결정하는 벽으로써 작용하는 현상을 말한다.
이 때 메모리에 한 번 접근할 때 가져오는 데이터 양을 많게 하거나, 빠르게 데이터를 접근해서 request 시간을 조금씩 겹치게 하여 총 접근 시간을 줄이는 방법 등으로 성능을 개선할 수 있다.
memory interleaving 이라고 한다.하드디스크보다 비용이 비싸다.
디스크보다 100~1000배 정도 빠르고, 용량 대비 크기가 작고 전력 소모도 적다.
하지만 내구성이 안 좋아서 접근이 잦으면 금방 마모된다.
수명 문제 때문에 메인 메모리로는 쓰기 어렵다.
디스크와 데이터를 읽는 arm으로 이루어진 스토리지이다.
디스크 회전을 통해 데이터를 가져오기 때문에 속도가 느린 편이다.