메모리 계층

Memory hierarchy
컴퓨터 메모리 계층도

컴퓨터 아키텍처에서 메모리 계층은 응답 시간에 따라 컴퓨터 스토리지를 계층으로 분리합니다.응답 시간, 복잡성 및 용량이 관련되어 있기 때문에 레벨은 퍼포먼스와 제어 [1]테크놀로지에 의해서도 구별될 수 있습니다.메모리 계층은 참조 위치를 포함하는 컴퓨터 아키텍처 설계, 알고리즘 예측 및 하위 레벨 프로그래밍 구조의 성능에 영향을 미칩니다.

고성능 설계에는 메모리 계층의 제약, 즉 각 컴포넌트의 크기와 기능을 고려해야 합니다.각 다양한 성분은 메모리 계층1(m2, m, ..., mn)의 일부로 볼 수 있으며, 각 멤버i m은 일반적으로 계층의 가장 높은 멤버i+1 m보다 작고 빠르다.상위 레벨의 대기시간을 제한하기 위해 하위 레벨은 버퍼를 채운 후 전송을 활성화하기 위한 시그널링으로 응답합니다.

스토리지 [1]레벨은 크게 4가지입니다.

  • 내부프로세서 레지스터 및 캐시.
  • 메인 – 시스템 RAM 및 컨트롤러 카드
  • 온라인 대용량 스토리지– 세컨더리 스토리지
  • 오프라인 벌크 스토리지– 제3 및 오프라인 스토리지.

이것은 일반적인 메모리 계층 구조입니다.다른 많은 구조물이 유용하다.예를 들어 페이징 알고리즘은 컴퓨터 아키텍처를 설계할 때 가상 메모리의 레벨로 간주되며 온라인 스토리지와 오프라인 스토리지 사이에 니어라인 스토리지의 레벨을 포함할 수 있습니다.

메모리 계층 내 기술 속성

  • 복잡함을 더하면 메모리 [2]계층이 느려집니다.
  • CMOx 메모리 테크놀로지에 의해 메모리 계층의[3] 플래시 공간이 확장됩니다.
  • 시스템 성능을 향상시키는 주요 방법 중 하나는 데이터를 [4]조작하기 위해 메모리 계층을 얼마나 낮게 유지해야 하는지를 최소화하는 것입니다.
  • 지연과 대역폭은 캐시와 관련된 두 가지 메트릭입니다.어느 쪽도 균일하지 않지만 메모리 계층의 [5]특정 컴포넌트에 한정되어 있습니다.
  • 메모리 계층에서 데이터가 존재하는 위치를 예측하는 것은 어렵습니다.[5]
  • 메모리 계층 내 위치에 따라 프리페치가 발생하는 [5]데 필요한 시간이 결정됩니다.

AMD Buldozer 서버의 메모리 계층입니다.

메모리 계층의 수준 수와 각 수준의 성능은 시간이 지남에 따라 증가했습니다.메모리 또는 스토리지 컴포넌트의 유형도 [6]과거로 변경됩니다.예를 들어 2013년도의 인텔[7] Haswell 모바일 프로세서의 메모리 계층은 다음과 같습니다.

디스크에서 아래 계층의 하위 레벨은 계층형 스토리지라고도 합니다.온라인, 니어라인 및 오프라인 스토리지의 공식적인 차이점은 다음과 같습니다.[12]

  • 온라인 스토리지는 즉시 I/O에 사용할 수 있습니다.
  • 니어라인 스토리지는 즉시 사용할 수 없지만, 사람의 개입 없이 신속하게 온라인으로 만들 수 있습니다.
  • 오프라인 스토리지는 즉시 사용할 수 없으며 온라인 상태로 전환하려면 사용자의 개입이 필요합니다.

예를 들어 상시 가동형 회전 디스크는 온라인 상태이고, MAID(대량 어레이 유휴 디스크)와 같이 스핀다운된 회전 디스크는 니어라인 상태입니다.테이프 라이브러리와 같이 자동적으로 로드할 수 있는 테이프 카트리지등의 리무버블 미디어는 니어라인이며, 수동으로 로드할 필요가 있는 카트리지는 오프라인입니다.

대부분의 최신 CPU는 속도가 매우 빠르기 때문에 대부분의 프로그램 워크로드에서 병목현상은 메모리 액세스 참조의 인접성 및 계층[citation needed]캐싱 및 메모리 전송의 효율성입니다.그 결과 CPU는 메모리 I/O가 완료될 때까지 대기하면서 대부분의 시간을 아이돌 상태로 보냅니다.메모리 오브젝트가 클수록 작은/빠른 레벨로 오버플로우 할 가능성이 높아져 큰/느린 레벨의 사용이 필요하기 때문에, 이것을 스페이스 코스트라고 부르기도 합니다.메모리 사용에 따른 부하를 압력이라고 합니다(각각 레지스터 압력, 캐시 압력 및 (메인) 메모리 압력).상위 레벨에서 누락되는 데이터와 하위 레벨에서 가져올 필요가 있는 데이터를 나타내는 용어는 각각 레지스터 스필링(레지스터 압력: 레지스터에서 캐시로), 캐시 미스(캐시에서 메인 메모리로) 및 (하드) 페이지 장애(메인 메모리에서 디스크로)입니다.

현대의 프로그래밍 언어는 주로 메인 메모리와 디스크 스토리지라는 두 가지 수준의 메모리를 가정하지만 어셈블리 언어와 인라인 어셈블러에서는 C와 같은 언어의 레지스터에 직접 액세스할 수 있습니다.메모리 계층을 최대한 활용하려면 프로그래머, 하드웨어 및 컴파일러의 협력이 필요합니다(또한 운영 체제의 기본 지원도 필요합니다.

  • 프로그래머는 파일 I/O를 통해 디스크와 메모리 간의 데이터 이동을 담당합니다.
  • 하드웨어는 메모리와 캐시 간의 데이터 이동을 담당합니다.
  • 컴파일러최적화는 실행 시 하드웨어가 캐시와 레지스터를 효율적으로 사용하는 코드를 생성하는 역할을 합니다.

많은 프로그래머들이 한 가지 수준의 메모리를 가정합니다.이 조작은, 애플리케이션이 퍼포먼스의 벽에 부딪힐 때까지 정상적으로 동작합니다.그런 다음 코드 리팩터링 중에 메모리 계층이 평가됩니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b Toy, Wing; Zee, Benjamin (1986). Computer Hardware/Software Architecture. Prentice Hall. p. 30. ISBN 0-13-163502-6.
  2. ^ 기입 조합
  3. ^ "Memory Hierarchy". Unitity Semiconductor Corporation. Archived from the original on 5 August 2009. Retrieved 16 September 2009.
  4. ^ Pádraig Brady. "Multi-Core". Retrieved 16 September 2009.
  5. ^ a b c van der Pas, Ruud (2002). "Memory Hierarchy in Cache-Based Systems" (PDF). Santa Clara, California: Sun Microsystems: 26. 817-0742-10. {{cite journal}}:Cite 저널 요구 사항 journal=(도움말)
  6. ^ "Memory & Storage - Timeline of Computer History - Computer History Museum". www.computerhistory.org.
  7. ^ Crothers, Brooke. "Dissecting Intel's top graphics in Apple's 15-inch MacBook Pro - CNET". News.cnet.com. Retrieved 2014-07-31.
  8. ^ "Intel's Haswell Architecture Analyzed: Building a New PC and a New Intel". AnandTech. Retrieved 2014-07-31.
  9. ^ a b c d e "SiSoftware Zone". Sisoftware.co.uk. Archived from the original on 2014-09-13. Retrieved 2014-07-31.
  10. ^ "Samsung 960 Pro M.2 NVMe SSD Review". storagereview.com. Retrieved 2017-04-13.
  11. ^ "Ultrium - LTO Technology - Ultrium GenerationsLTO". Lto.org. Archived from the original on 2011-07-27. Retrieved 2014-07-31.
  12. ^ Pearson, Tony (2010). "Correct use of the term Nearline". IBM Developerworks, Inside System Storage. Archived from the original on 2018-11-27. Retrieved 2015-08-16.