앞의 글을 읽으시면 이해에 도움이 됩니다.
0. 시작하기에 앞서
해당 글은 본격적으로 Memory, Cache에 대해 알기 전에 간략하게 용어나 정의를 알고 가는 글입니다.
1. Principle of Locality
Locality의 원리는 프로그램이 최근에 사용한 data 혹은 instruction의 근처나 동일한 주소를 사용하는 경향이 있다에서 시작합니다.
이때 두 가지 Locality로 나뉩니다.
- Temporal Locality
- 해당 Locality는 어떤 item이 참조된다면, 곧 다시 참조될 가능성이 높다는 의미입니다.
- for loop 같은 경우에는 box 안에서 계속해서 loop 하므로 Temporal Locality의 성질을 띕니다.
- Spatial Locality
- 해당 Locality는 어떤 item이 참조된다면, 해당 item의 근처에 있는 다른 item이 곧 참조될 가능성이 높다는 의미입니다.
- 명령어는 순차적으로 진행되고, array 또한 순차적으로 참조한다면 Spatial Locality의 성질을 띈다고 볼 수 있습니다.
예시를 한 번 봅시다.
sum = 0;
for (int i = 0; i < n; i++)
sum += a[i];
return sum;
위의 코드가 있을 때,
sum 변수는 반복적으로 참조되고 있으므로 Temporal Locality라고 볼 수 있습니다.
또한 i < n일 때까지 계속해서 loop를 돌고 있으므로, 해당 명령어들도 Temporal Locality입니다.
i도 Temporal Locality겠네요.
반대로 a : array는 Spatial Locality입니다.
명령어도 순차적으로 진행되므로 이 또한 Spatial Locality라고 볼 수 있습니다.
그렇다면 이런 Locality의 이점을 어떻게 사용할까요?
2. Taking Advantage of Locality
참조된 글에서 설명드렸듯이 register는 memory에 비해 빠릅니다.
또한 memory는 ssd 같은 2차 저장소에 비해 빠릅니다.
이를 그림으로 그려본다면,
따라서 메모리는 다른 속도와 사이즈로 multiple level을 이루고 있습니다.
빠른 메모리는 가격이 비싸면서 동시에 용량이 매우 적습니다.
그러면 당연히 자주 사용되는 data를 계층의 최상단에 위치시켜야 되겠죠?
그러므로 데이터도 비슷하게 계층 구조를 가지고 있습니다.
하지만 데이터는 모두 메모리의 최하단 level에 위치하고 있습니다.
다만 메모리의 상위 level로 복사합니다.
추가적으로 processor와 data가 점점 멀어질수록 access time이 길어집니다.
아무튼 memory는 이렇게 다양한 level로 구성되어 있습니다.
데이터는 메모리의 인접한 level끼리 복사됩니다.
memory 글에서는 두 가지 level만 고려합니다.
upper level인 Cache(SRAM)과 lower level인 Main Memory(DRAM)만 고려합니다.
3. Memory Hierarchy Levels
만약 processor가 데이터를 요구했는데, upper level에 없다면,
다음 level로 가서 해당 데이터를 찾아야 합니다.
이를 그림으로 그리면 아래와 같습니다.
두 개의 계층에 있는 정보(데이터)의 최소 unit을 block 혹은 line이라고 합니다.
만약 processor가 요구한 데이터가 upper level에 존재한다면 이를 hit라 합니다.
반대로 요구한 데이터가 없다면 miss라 합니다.
이때 사용되는 용어는 다음과 같습니다.
- Hit rate (ratio) : hits / accesses
- Miss rate : misses / accesses = 1 - hit rate
- Hit time : upper level에 access 하는 시간
- Miss penalty : lower level에 있는 block을 upper로 복사하는 시간 + 해당 block을 processor로 전달하는 시간
이때 Miss rate와 Miss penalty가 매우 중요합니다.
이는 곧 성능과 직결되며, Miss를 줄이는 것이 성능 향상의 요인이 됩니다.
upper에 비해 lower의 시간이 얼마나 많이 걸릴까요?
단순하게 봐도 upper에서 가장 느린게 lower에서 가장 빠른 것보다 5배 빠릅니다.
위로 갈수록 용량은 줄어들며, Access time도 줄어듭니다. (가격도 비싸집니다..)
여담이지만 upper level memory (cache)는 오로지 하드웨어에 의해 제어됩니다.
소프트웨어로 어떻게 할 방법이 없으므로, 설계가 잘못되면 버려야 합니다.
메모리는 OS에 의해 관리되는데, 나중에 시간이 나면 운영체제에 대한 글도 적겠습니다.
아무튼 Locality와 Memory Hierarchy에 대한 글은 여기까지 적도록 하겠습니다.
다음 글에서는 SRAM, DRAM, Flash Memory 등에 대해 적고, 본격적으로 메모리에 대해 알아보겠습니다.
2022.11.22 - [Computer Science/컴퓨터 구조] - [컴퓨터 구조] Memory Technologies
감사합니다.
지적 환영합니다.
'Computer Science > 컴퓨터 구조' 카테고리의 다른 글
[컴퓨터 구조] The Basic of Cache (0) | 2022.11.22 |
---|---|
[컴퓨터 구조] Memory Technologies (0) | 2022.11.22 |
[컴퓨터 구조] RISC-V Simulator (0) | 2022.11.22 |
[컴퓨터 구조] Control Hazard in Pipelined Datapath (0) | 2022.11.16 |
[컴퓨터 구조] Data Hazard in Pipelined Datapath (0) | 2022.11.16 |