Локалност референци — разлика између измена

Садржај обрисан Садржај додат
Autobot (разговор | доприноси)
м Разне исправке; козметичке измене
Ред 1:
{{Сређивање|унос унутрашњих веза и референци|30|10|2013|Информатика}}
У [[Информатика|информатици‎]], '''локалност референци''' (такође позната као '''принцип локалитета''') је појава који описује исту вредност, или одговарајуће локације за складиштење којима се често приступа, односно којима ће се приступити у блиској будућности. Постоје две основне врсте референтних локалитета. Временска локалност, односи се на употребу одређених (истих) података, и/или средстава, у релативно малом временском интервалу. Просторна локалност, односи се на коришћење података у релативно блиским меморијским локацијама. Секвенцијални локалитет, као специјални случај просторног локалитета, настаје када су подаци тако распоређени да им се приступа у линеарном времену, као што је приступ члановима једнодимензионалног низа.
 
Локалитет је само један од типова предвиђања који се јављају у рачунарским системима. Системи који испољавају јаку локалност референци, кандидати су за оптимизацију перформанси кроз компоненте као што су кеш и многе друге.
Ред 12:
 
; Просторна локалност
:Ако је у одређено време референцирана одређена локација у меморији, онда је велика вероватноћа да ће у блиској будућности бити референциране управо оне локације које се налазе у близини тренутне. За побоњшање перформанси овим случајем потребно је одредити величину подручја око тренутно референциране локације и тај блок припремити за бржи приступ.
 
; Локалност гранања
Ред 30:
 
;Структура програма
:Локалност се дешава често, због начина на који су рачунарски програми створени, за решавање децидираних проблема. Генерално, слични подаци се чувају у оближњим локацијама у складишту. Један заједнички образац у рачунарству подразумева обраду неколико ставки, једну по једну. То значи да ако је много обрађивања завршено, одређеним ставкама ће бити приступљено више пута, што доводи до временске локалности референце. Штавише, прелазак на слдећу ставку подразумева да ће следећа ставка бити прочитана, па имамо просторну локалност референце.
 
;Линеарне структуре података
Ред 46:
;Искоришћавање локалности референце
 
:Ово се обично постиже хардверски. Временски и просторни локалитети се могу капитализовати по хијерархијским хардверским складиштима. Локалност једнаког одстојања може се користити на одговарајући начин од стране специјализованих инструкција процесора, ова могућност није само одговорност хардвера, него и софтвера такође, било да је њена структура погодна ѕа израду бинарног програма који узима специјализоване инструкције у обзир. Локалитет гране је сложенија могућност, стога је потребно више напора око развоја, али постоји много већа резерва за будуће истраживање у овој врсти локалитета, него у било којој од преосталих.
 
== Коришћење просторног и временског локалитета ==
Ред 52:
=== Хијерархијска меморија ===
 
Хијерархијска меморија је хардверска оптимизација која користи просторни и временски локалитет и можђе се користити у више нивоа хијерархије меморије. Страничење очигледно има корист од просторног и временског локалитета. Кеш је једноставан пример експлоатације временског локалитета, јер посебно дизајниран, брз, а мали меморијски простор, углавном коришћен да би чуцао недавно референциране податке и податке близу њих, што може довести до потенцијалног повећања перформанси.
 
Подаци у кешу морају обавезно да одговарају подацима који су просторно близу у главној меморији, међутим елементи података су деведени у кеш , једну по једну кеш линију. Ово имплицира да је просторни локалитет поново важан: ако је један елемент рефернциран, неколико суседних елемената ће се такође довести у кеш. Коначно, временски локалитет игра улогу на најнижем нивоу, јер се резултати који су референцирани налазе веома близу један другом те се могу чувати у регистрима машине. Програмски језици као што је C омогућавају програмеру да предложи да се одређене променљиве чувају у регистрима.
 
Локалитет података је типична меморијска референтна карактеристика уобичајених програма(мада постоје многи неуобичајени шаблони). То чини распоред хијерархијске меморије профитабилним. У рачунарима, меморија је подељена хијерархијски да би се убрзао приступ подацима. Ниѕи нивои меморијске хијерархије теже да буду спорији, али већи. Дакле, програм ће постићи боље рерформансе ако користи меморију кеширану на вишем нивоу хијерархије, и ако избегава довођење података у виши ниво хијерархије који ће свргниту податке који ће се користити у ближој будућности. Ово је идеално, и понеда се не може постићи.
Ред 77:
Када се ради о великим матрицама, овај алгоритам има тенденцију да превише дуплира подаке. Како је потребно помножити сваки члан реда једне матрице са сваким чланом колоне друге долази до вишеструком приступу истим подацима, као и вишеструком добијању истих резултата.
 
Може се приметити да од ј зависи колона ове матрице C и B и она треба да се врти у унутрашњој петљи(то ће поправити итераторе редова, i и k док се ј креће преко сваке колоне у реду). Ово неће променити математички резултат али се побољшава ефикасност. Преласком ј и к петљи временска захтевност за веће матрице драматично расте. (У овом случају, 'велики' значи, отприлике, више од 100.000 елемената у свакој матрици, или довољно елемената тако да матрице не могу да стану у L1 и L2 кеш.)
 
Временска захтевност може бити побољшана у претходном примеру, користећи технику која се зове блокирање. Већа матрица се може поделити на равномерно велике суб-матрице, тако да се мањи блокови множе неколико пута док су у меморији.
Ред 92:
== Погледај још ==
 
* [http://laris.fesb.hr/predavanja/memorija.html Кеш меморија основе]
* [http://lwn.net/Articles/252125/ CPU кеш]
 
== Литература ==
{{reflist}}
* -{P.J. Denning, The Locality Principle, Communications of the ACM, Volume 48, Issue 7, (2005), Pages 19–24}-
* -{P.J. Denning, S.C. Schwartz, Properties of the working-set model, Communications of the ACM, Volume 15, Issue 3 (March 1972), Pages 191-198}-
{{refend}}