Меморијска хијерархија

Из Википедије, слободне енциклопедије
Дијаграм меморијске хијерархије рачунара

Термин меморијска хијерархија се користи у архитектури рачунара када се говори о проблему перформанси у архитектонском дизајну рачунара, алгоритмима претпостављања, и програмирању на ниском нивоу које укључује конструкте као што су локалност референце. "Меморијска хијерархија" у случају компјутерских меморија разликује сваки ниво у хијерархији по времену одзива. С обзиром да су време одзива, сложеност, и капацитет међусобно повезани,[1] нивои се могу разликовати и по контролишућој технологији.

Пуно компромиса при дизајнирању система великих перформанси ће укључивати структуру меморијске хијерархије, величину и технологију сваке компоненте. Тако различите компоненте могу бити посматране као део хијерархије (m1,m2,...,mn) у којој је сваки члан mi подређен следећем највишем члану mi-1 хијерархије. Да би се ограничило чекање од стране виших нивоа, нижи ниво ће одговорити пуњењем бафера, а затим сигнализирати да се покрене трансфер.

Постоје четири главна нивоа.[1]

  1. Интерни - Процесорски регистри и кеш.
  2. Главни - системски RAM и контролери.
  3. Унутрашња меморија - Секундарна меморија.
  4. Спољашња меморија - Терцијарна меморија и спољашња меморија.

Ово је типична структура меморијске хијерархије. Пуно других структура су такође корисне. На пример, алгоритам страничења се може сматрати као ниво виртуелне меморије при дизајнирању рачунарске архитектуре.

Пример употребе термина[уреди]

Ево неких цитата.

  • Повећање сложености успорава меморијску хијерархију.[2]
  • CMOx меморијска технологија растеже простор флеша у меморијској хијерархији[3]
  • Један од главних начина повећања системских перформанси је минимизација пута до дна хијерархије који се мора прећи да би се дошло до података.[4]
  • Кашњење и проток су две мере повезане са кешом и меморијом. Ниједна од њих није униформна, али је специфићна одрећеној компоненти меморијске хијерархије.[5]
  • Тешко је претпоставити где се у меморијској хијерархији налази податак.[5]
  • ...локација у меморијској хијерархији диктира време које је потребно за дохват података.[5]

Примена концепта[уреди]

Меморијска хијерархија AMD Bulldozer сервера.

Број нивоа у меморијској хијерархији и перфорансе сваког нивоа су се повећавале временом. На пример, меморијска хијерархија Intel Haswell Mobile [6] процесора из 2013-е је:

  • Процесорски регистри - најбржи могући приступ (обично 1 процесорски такт). Реда величине неколико хиљада бајтова
  • кеш
    • Ниво 0 (L0) Кеш микрооперација - Реда величине 6 KiB [7]
    • Ниво 1 (L1) Кеш за инструкције - Реда величине 128 KiB
    • Ниво 1 (L1) Кеш за податке - Реда величине 128 KiB. Најбоља брзина приступа је око 700 GiB по секунди[8]
    • Ниво 2 (L2) Дељени кеш за инструкције и податке - Реда величине 1 MiB. Најбоља брзина приступа је око 200 GiB по секунди[8]
    • Ниво 3 (L3) Дељени кеш - Реда величине 6 MiB. Најбоља брзина приступа је око 100 GB по секунди[8]
    • Ниво 4 (L4) Дељени кеш - Реда величине 128 MiB. Најбоља брзина приступа је око 40 GB по секунди[8]
  • Главна меморија - Реда величине неколико гигабајта. Најбоља брзина приступа је око 10 GB по секунди.[8] У слуачају машине неуниформног приступа меморији, време приступа не мора бити униформно
  • Диск за складиштење - Реда величине неколико терабајта. Од 2013-е, најбоља брзина приступа је у случају SSD диска, око 600 MB по секунди [9]
  • Терцијарно складиште - Реда величине неколико ексабајта. Од 2013-е, најбоља брзина приступа је око 160 MB по секунди[10]

Већина модерних процесора су толико брзи да за већину програмских задатака, уско грло представља локалност референце меморијског приступа и ефикасност процесорског кеша и меморијског трансфера измећу различитих нивоа хијерархије[тражи се извор од 12. 2013.]. Као резултат, процесор проводи већину времена нерадећи ништа, чекајући да се операције уписивања/читања заврше. Ово се понекад назива цена простора, пошто ће већи меморијски објекат лакше да прелије мали/брзи ниво и захтева коришћење већег/споријег нивоа.

Модерни програмски језици углавном подразумевају два нивоа меморије, главну меморију и складиште диска, иако се у асемблерском језику и унутрашњем асемблеру језика као што је C, директно може приступити процесорским регистрима. Искоришћење оптималне предности меморијске хијерархије захтева сарадњу програмера, хардвера, и компајлера (као и основне подршке оперативно система):

  • Програмери су одговорни за премештање података између диска и меморије кроз упис/читање фајлова.
  • Хардвер је одговоран за померање података између главне меморије и кеша.
  • Оптимизирајући компајлери су одговорни за генерисање кода који при извршењу узрокује ефикасно коришћење кеша и регистара од стране хардвера.

Пуно програмера претпоставља један ниво меморије. Ово лепо функционише док апликација не постане ограничена перформансом. Онда се меморијска хијерархија узима у обзир при исправци кода.


Референце[уреди]

  1. ^ а б Ty, Wing; Zee, Benjamin (1986). Computer Hardware/Software Architecture. Bell Telephone Laboratories, Inc. стр. 30. ISBN 0-13-163502-6. 
  2. ^ Write-combining
  3. ^ „Memory Hierarchy“. Unitity Semiconductor Corporation Приступљено 16. 9. 2009.. 
  4. ^ Pádraig Brady. „Multi-Core“ Приступљено 16. 9. 2009.. 
  5. ^ а б в van der Pas, Ruud (2002). „Memory Hierarchy in Cache-Based Systems“. Santa Clara, California: Sun Microsystems. pp. 26. 817-0742-10. 
  6. ^ Dissecting Intel's top graphics in Apple's 15-inch MacBook Pro | Apple - CNET News
  7. ^ AnandTech | Intel's Haswell Architecture Analyzed: Building a New PC and a New Intel
  8. ^ а б в г д SiSoftware Zone
  9. ^ Charts, benchmarks SSD Charts 2013, AS-SSD Sequential Read
  10. ^ Ultrium - LTO Technology - Ultrium GenerationsLTO

Литература[уреди]