U E D R , A S I H C RSS

zennith/Memory Hierarchy

이전까지의 중연 부연 횡설 수설 는 모습을 벗고, 비교적 간단고 알기 쉽게 설명겠습니다.

Concept of Locality

1. 대전제
상위 계층과 위 계층사이에는 병목현상이 존재한다.

2. Temporal Locality
위 계층에서 가져온 데이터는, 다음번에 다시 쓰일 수 있다. 그러므로, 다시 사용할때는 위 계층에서 다시 가져올 필요 없이, 저번에 가져온 데이터를 사용면 된다.
(e.g. 루프.)

3. Spartial Locality
순차적으로 구성된 데이터의 흐름이 필요한 경우가 있다. 그러므로, 한번 위 계층에서 데이터를 가져올 때, 연속된 데이터의 unit 을 가져올 경우, 순차적인 다음번에 위치한 데이터가 요구될때 위 계층에 다시 접근지 않아도 된다.
(e.g. 순차적 배열의 접근)

Memory Hierarchy

효율성에 따라 메모리는 계층구조로 이루어지며, 상위계층일수록 빠른 속도를 보장며, 위계층일수록 저렴한 가격을 보장한다.


메모리 계층의 기본 구조.
  • 메모리 계층 구조에는 여러 다른 레벨의 메모리가 있다.
  • 최상위 레벨의 메모리 계층은 … 을(를) 가진다.
    • 가장 높은 성능
    • 가장 높은 가격
    • 가장 적은 용량
  • 계층을 내려올때마다, 각 레벨은
    • 성능이 줄어들고
    • 가격이 낮아지고
    • 용량이 늘어난다
  • 실행중에, 높은 레벨의 계층으로 옮겨지는 데이터 값들은, 빈번히 낮은 레벨의 메모리 계층으로 반영(shadow) 된다.
  • 실행중에 요구되는 모든 데이터 값들이 동시에 가장 CPU 에 근접한 계층에 존재할 수 있는 것은 아니다.

Register

레지스터는 메모리 계층구조에서 가장 상위 계층으로서, 가장 빠른 속도와, 가장 적은 capacity 를 제공한다. 보통 개개의 레지스터는 그 프로세서의 word 크기이며, 현재 주로 사용되고 있는 인텔 i386 계열 프로세서들의 범용 레지스터의 크기는 32bit 이다.

요즈음의 RISC 구조 프로세서에서는, 모든 연산의 연산자들로 레지스터만 허용므로, 이 제한된 숫자의 레지스터들을 어떻게 관리느냐가 성능 향상의 주안점이다. 가령, 빈번게 요구되는 변수는 계속 가지고 있는다던지, 아니면 한동안 쓰임이 없는 변수를 레지스터에서 버린다던지 는 일이다. 물론, 이 일(optimal register allocation)은 컴파일러에서 담당한다.

Chache

캐쉬의 목적 : 어떻게 면 최대한 메모리 참조를 적게고 레지스터로 옮길 수 있을까.

Main Memory (Virtual Memory System)

가상 메모리의 목적 : 그래.. 메인메모리까지는 참을 수 있어. 참을 수 있다고.. 그런데, 최대한 디스크까지 가는일만은 피해보자.

Secondary Storage

보조 저장공간의 목적 : 많이.. 무결게.. 덤으로 빠르면 좋고..


그렇다면 토론해 봅시다.

  • 이 페이지는 여러분들의 것입니다.

Q: Spartial Locality의 의미는 위계층에 이왕 한번 접근는거 그때 유닛단위로 묶어서 여러개 가져와서 나중에 필요할때 쓴다는 말인가여? 그렇다면 그렇게 유닛 단위로 묶는 기준은 뭐에여? - 상협

A: 각각의 계층마다 다릅니다. 캐쉬에서 쓰이는 unit 과 가상메모리에서 쓰이는 page 의 크기 차이는 큽니다. 다만, spartial locality 를 위해서 사용된다는 점은 같겠죠.. 좀더 상세한 설명을 원신다면.. 제게 개인적으로 물어보시거나, 아니면 공부 시길 -zennith

zennith
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:31:47
Processing time 0.0164 sec