이전까지의 중연 부연 횡설 수설 하는 모습을 벗고, 비교적 간단하고 알기 쉽게 설명하겠습니다.
Concept of Locality ¶
1. 대전제
상위 계층과 하위 계층사이에는 병목현상이 존재한다.
2. Temporal Locality하위 계층에서 가져온 데이터는, 다음번에 다시 쓰일 수 있다. 그러므로, 다시 사용할때는 하위 계층에서 다시 가져올 필요 없이, 저번에 가져온 데이터를 사용하면 된다.
3. Spartial Locality(e.g. 루프.)
순차적으로 구성된 데이터의 흐름이 필요한 경우가 있다. 그러므로, 한번 하위 계층에서 데이터를 가져올 때, 연속된 데이터의 unit 을 가져올 경우, 순차적인 다음번에 위치한 데이터가 요구될때 하위 계층에 다시 접근하지 않아도 된다.
(e.g. 순차적 배열의 접근)
Memory Hierarchy ¶
효율성에 따라 메모리는 계층구조로 이루어지며, 상위계층일수록 빠른 속도를 보장하며, 하위계층일수록 저렴한 가격을 보장한다.
메모리 계층의 기본 구조.
- 메모리 계층 구조에는 여러 다른 레벨의 메모리가 있다.
- 최상위 레벨의 메모리 계층은 … 을(를) 가진다.
- 가장 높은 성능
- 가장 높은 가격
- 가장 적은 용량
- 가장 높은 성능
- 계층을 내려올때마다, 각 레벨은
- 성능이 줄어들고
- 가격이 낮아지고
- 용량이 늘어난다
- 성능이 줄어들고
- 실행중에, 높은 레벨의 계층으로 옮겨지는 데이터 값들은, 빈번히 낮은 레벨의 메모리 계층으로 반영(shadow) 된다.
- 실행중에 요구되는 모든 데이터 값들이 동시에 가장 CPU 에 근접한 계층에 존재할 수 있는 것은 아니다.
Register ¶
레지스터는 메모리 계층구조에서 가장 상위 계층으로서, 가장 빠른 속도와, 가장 적은 capacity 를 제공한다. 보통 개개의 레지스터는 그 프로세서의 word 크기이며, 현재 주로 사용되고 있는 인텔 i386 계열 프로세서들의 범용 레지스터의 크기는 32bit 이다.
요즈음의 RISC 구조 프로세서에서는, 모든 연산의 연산자들로 레지스터만 허용하므로, 이 제한된 숫자의 레지스터들을 어떻게 관리하느냐가 성능 향상의 주안점이다. 가령, 빈번하게 요구되는 변수는 계속 가지고 있는다던지, 아니면 한동안 쓰임이 없는 변수를 레지스터에서 버린다던지 하는 일이다. 물론, 이 일(optimal register allocation)은 컴파일러에서 담당한다.
Main Memory (Virtual Memory System) ¶
가상 메모리의 목적 : 그래.. 메인메모리까지는 참을 수 있어. 참을 수 있다고.. 그런데, 최대한 디스크까지 가는일만은 피해보자.
그렇다면 토론해 봅시다. ¶
- 이 페이지는 여러분들의 것입니다.
A: 각각의 계층마다 다릅니다. 캐쉬에서 쓰이는 unit 과 가상메모리에서 쓰이는 page 의 크기 차이는 큽니다. 다만, spartial locality 를 위해서 사용된다는 점은 같겠죠.. 좀더 상세한 설명을 원하신다면.. 제게 개인적으로 물어보시거나, 아니면 공부 하시길 -zennith
zennith