Віртуальная памяць працэсара UltraSPARC III
Мэтад арганізацыі віртуальнай памяці працэсара UltraSPARC III карэнным чынам адрозніваецца ад арганізацыі віртуальнай памяці працэсара Pentium IV.
TLB
рэдагавацьЗ-за велізарнай віртуальнай адраснай прасторы звычайная табліца старонак (як у Pentium IV) будзе непрактычнай. У UltraSPARC III ужываецца цалкам іншы падыход. Дыспэтчар памяці падтрымлівае так званы буфэр хуткага пераўтварэньня (Translation Lookaside Buffer, TLB)[1]. Гэты буфэр адлюстроўвае нумары віртуальных старонак на нумары фізычных старонкавых кадраў. Для старонак памерам у 8 Кбайт існуюць нумароў віртуальных старонак, гэта значыць больш двух мільярдаў. Натуральна, што ня ўсе яны могуць быць адлюстраваныя.
Таму TLB утрымоўвае толькі нумары тых віртуальных старонак, якія выкарыстоўваліся апошнімі. Старонкі каманд і дадзеных разглядаюцца асобна. Для кожнай з гэтых катэгорый у TLB уключаныя нумары 64-х апошніх віртуальных старонак. Кожны элемэнт гэтага буфэра ўключае нумар віртуальнай старонкі і нумар фізычнага старонкавага кадра. Калі нумар працэсу і віртуальны адрас перадаюцца дыспэтчару памяці, дыспэтчар з дапамогай адмысловай схемы адначасова параўноўвае нумар віртуальнай старонкі са ўсімі элемэнтамі буфэра TLB для дадзенага кантэксту. Калі выяўляецца супадзеньне, нумар старонкавага кадра ў гэтым элемэнце буфэра злучаецца са зрушэньнем, узятым з віртуальнага адрасу, каб атрымаць 41-разрадны фізычны адрас і апрацаваць некаторыя флагі (напрыклад, біты абароны).
Калі супадзеньне не выяўляецца, гэта значыць мае месца TLB-прамашка (аналёгіі з кэш-прамашкай), выклікаецца выключэньне, якое перахапляецца і апрацоўваецца апэрацыйнай сыстэмай.
TSB
рэдагавацьАпэрацыйная сыстэма захоўвае найболей часта выкарыстоўваныя элемэнты буфэра TLB у так званым буфэры захоўваньня пераўтварэньняў (Translation Storage Buffer, TSB). Гэты буфэр пабудаваны як кэш-памяць прамога адлюстраваньня віртуальных старонак. Кожны 16-байтны элемэнт буфэра TSB паказвае на адну віртуальную старонку і ўтрымоўвае біт пэўнасьці, нумар кантэксту, тэг віртуальнага адрасу, нумар фізычнай старонкі і некалькі флагавых бітаў. Калі памер кэш-памяці складае, скажам, 8192 элемэнта, тады ўсе віртуальныя старонкі, у якіх малодшыя 13 біт адлюстроўваюцца на 0000000000000, могуць прэтэндаваць на элемэнт 0 у дадзенай табліцы. Сапраўды гэтак жа ўсе віртуальныя старонкі, у якіх малодшыя біты адлюстроўваюцца на 0000000000001, прэтэндуюць на элемэнт 1 у гэтай табліцы. Памер табліцы вызначаецца праграмна і перадаецца дыспэтчару памяці праз адмысловыя рэгістры, даступныя толькі для апэрацыйнай сыстэмы.
Пры TLB-прамашцы апэрацыйная сыстэма правярае, ці няма патрэбнай віртуальнай старонкі ў які адпавядае элемэнце буфэра TSB. Дыспэтчар памяці вылічае адрас гэтага элемэнта і зьмяшчае яго ў свой унутраны рэгістр, даступны для апэрацыйнай сыстэмы. Калі патрэбны элемэнт у буфэры TSB ёсьць, то адзін з элемэнтаў выдаляецца з буфэра TLB і на яго месца капіюецца элемэнт з буфэра TSB. То, які элемэнт трэба выкінуць, вызначаецца апаратна з дапамогай альгарытму LRU.
Табліца трансляцыі
рэдагавацьКалі патрэбная віртуальная старонка ня знойдзеная, апэрацыйная сыстэма шукае інфармацыю аб старонцы ў табліцы трансляцыі. Паколькі тут апаратнае забесьпячэньне ў пошуку элемэнтаў не ўдзельнічае, апэрацыйная сыстэма можа выкарыстаць любы фармат. Элемэнты табліцы трансляцыі - не старонкі, а элемэнты буфэра TSB. Калі пошук старонкі ў табліцы трансляцыі прывёў да знаходжаньня патрэбнай старонкі ў памяці, то элемэнт TSB у кэш-памяці абнаўляецца. Калі ў выніку пошуку выявілася, што патрэбнай старонкі няма ў памяці, адбываецца стандартная памылка адсутнасьці старонкі.
Крыніцы
рэдагаваць- ^ Эндру Танэнбаўм. Архітэктура кампутара. 5-е выданьне. Санкт-Пецярбург 2007.