ПредишенСледващото

Многопроцесорни системи с обща памет

Изисквания на съвременните процесори на честотната лента на паметта могат да бъдат намалени значително чрез използването на голям кеш на няколко нива. След това, ако тези изисквания са намалени, броя на процесорите, ще бъде в състояние да споделят достъп до същата памет. От 1980 г., идеята, подкрепена от разпространението на микропроцесори, насърчавани много разработчици да създават малки мултипроцесори, в която няколко процесора споделят една и съща физическа памет, свързана с тях, като споделена автобус. Поради малкия размер на процесорите и значителното намаляване на необходимия автобус трафик постига чрез което позволява прилагането на достатъчно голям кеш, тези машини са станали изключително рентабилни. В първия развитието на този вид машини могат да се настанят всички процесора и кеш паметта на един съвет, който след това се вмъква в задния панел, чрез който осъществява автобус архитектура. Модерен дизайн могат да се настанят до четири процесора на една дъска. Фиг. 10.1 е схематична диаграма на такава машина.

В такава машина кеш могат да съдържат както общи, така и личните си данни. Лично данни - данните, които използва един процесор, а споделената информация се използва от много процесори, която предоставя възможност за обмен между тях. Когато частният данните се кешира елемент, тяхната стойност се прехвърля в кеша за намаляване на средното време за достъп, както и необходимия капацитет. Тъй като никой друг процесор не използва тези данни, този процес е идентичен с един единствен процесор машина с памет кеш. Ако кешираната споделя данни, общата стойност се репликира и може да се съдържа в множество кеш. В допълнение към намаляване на забавянето на достъпа и репликация на данни изисква честотна лента, като допринася и общо намаляване на броя на обмен. Въпреки това, кеширана споделя данни е нов проблем: кеш съгласуваност.

Мултипроцесор кохерентността на кеша

Проблемът въпросната произтича от факта, че стойността на елемент от данни в паметта, която се съхранява в два различни процесори, тези процесори са достъпни само чрез техните индивидуални кеш. Фиг. 10.3 показва прост пример за илюстриране на този проблем.

Memory кохерентност проблем за мултипроцесори и входно / изходни устройства, има много аспекти. Обикновено в малките мултипроцесори използват механизъм за хардуер, наречен протокол решава този проблем. Тези протоколи се наричат ​​протоколи съгласуваност кеш. Има два класа на протоколи:

  1. Протоколи на базата на директория (директорията на базата). Информация за състоянието на устройството за съхранение се съдържа в само едно място, наречено препратка (справка може да се разпространява в цяла възли на системата). Този подход ще бъде обсъдено в Sec. 10.3.
  2. Мониторинг протоколи (подслушване). Всеки кеш, който съдържа копие на информационния блок физическа памет също има копие от съответната информация услуга за състоянието му. Не е централизирана система на записи. Обикновено, кешове са разположени на обща (споделена) автобус, както и всички кеш контролери следят автобуса (това гледане), за да се определи дали те съдържат копие на блока.

Фиг. 10.3. Илюстрация проблеми кохерентност на кеша

В многопроцесорни системи, които използват микропроцесори с кеш паметта свързан с централизирана обща памет, констативни протоколи са станали популярни, че да се сондира за състоянието на кешовете, те могат да използват вече съществуваща физическа връзка - автобус с памет.

Неформално кохерентност памет проблем е необходимостта да се гарантира, че всеки чете данни връща последната стойност път е писано за него. Това определение не е съвсем правилно, защото е невъзможно да се предяви искане операция за четене веднага видя стойността записана в тези данни по някакъв друг процесор. Ако например една операция процесор запис предхожда действието на четене от една и съща клетка на друг процесор в рамките на много кратък интервал от време, не е възможно да се гарантира, че стойността на данните за четене връщане, отбелязана от по това време, запис на данни може дори да не оставят на процесора. Въпросът кога точно като записаната стойност трябва да бъде на разположение на процесора, който изпълнява четене, се определя от избрания модел статус последователна (последователен) памет и свързани с изпълнението на синхронизацията на паралелни изчисления. Поради това, с цел простота, ние приемаме, че имаме нужда само да запише стойността на отразяването е на разположение операция четене, случили се малко по-късно, че записването и обработването на операцията за запис винаги са видими по реда на тяхното изпълнение.

С този прост определение за състоянието на последователна памет, ние можем да гарантираме съгласуваност, като се гарантира, че двата имота:

  1. Действието на четене на един процесор клетъчна памет, която следва операцията за запис на едно и също място на паметта от друг процесор получава стойността писмено, когато пишат операции за четене и са отделени достатъчно раздалечени във времето.
  2. пишат операции към една и съща памет клетката се извършват строго последователно (понякога казват, че са серийни номера): това означава, че две последователни пише на едно и също място на паметта ще бъдат наблюдавани от други процесори в точния ред, в който те се появяват в програмата за CPU извършване на операцията за запис.

Първото свойство очевидно е свързано с определянето на последователна (последователна), състоянието на паметта: ако процесора винаги ще чете само старата стойност на данните, бихме казали, че паметта е непоследователен.

Необходимостта от строго последователни операции за запис е по-тънък, но и много важен собственост. Нека си представим, че един строго последователно изпълнение на операции за запис не се спазва. След това процесорът Р1 може да запише данните в клетка, и след това клетките да записва процесор Р2. Строго последователно изпълнение на операции запис осигурява две важни последици за запис последователността на операциите. Първо, тя гарантира, че всеки процесор в колата в някакъв момент от време ще гледам записи, направени от процесор P2. Ако последователността на операциите запис не е спазено, ситуацията може да възникне, когато всеки процесор ще наблюдава първата операция Р2 процесор за запис, и след операция на запис Р1 процесор и ще съхранява записват стойността на Р1 за неопределено време. По-фините възниква проблем с поддържането на разумен модел от порядъка на изпълнението на програмата и паметта на кохерентността за потребителя: представете си, че една трета процесор винаги ще се чете едно и също място на паметта, в която да се напише процесори P1 и P2; той трябва първо да наблюдавате стойностите написани на P1, тогава регистрираната стойност P2. Може би никога няма да видите Р1 стойност записано, Р2 като запис от там, преди да прочетете. Ако той дори вижда Р1 стойност записано, той трябва да видите стойността написана на Р2, последващото четене. По същия начин, всеки друг процесор, който може да наблюдава стойността написан като Р1 и Р2, е да се наблюдава идентичен поведение. Най-лесният начин за постигане на такива имоти е в строго съответствие с реда на пише на всички записи в една и съща клетка може да се наблюдава в същия ред. Това свойство се нарича последователно изпълнение (сериализация) на операциите на запис (запис на сериализацията). Въпросът, когато процесора трябва да види стойността написана от друг процесор е доста сложна и има осезаемо въздействие върху производителността, особено в големи машини.

Един алтернативен запис протокол от отмяната е да се актуализират всички копия на данни елемент в случай на запис на данни елемент. Този вид протокол се нарича протокол с актуализирането на запис (запис актуализация протокол) протокол или предаването на запис (запис предаването протокол). Обикновено този протокол за намаляване на изискванията за пропускателна способност е полезно да се следи дали има или няма дума в споделен обект кеш, или не, а именно, дали то се съдържа в други кеш. Ако не, тогава не е необходимо за опресняване на кеша на другата предаването или го актуализира.

Разликата в производителността между записването на протоколи и актуализиране на отмяната се определя от три характеристики:

  1. Няколко последователни операции пишете на една и съща дума не е на пластове операция четене изискват многократни операции с използване на протокол предаването пишете на актуализацията, но само един първоначален Анулиране използвайки протокол за анулиране на запис.
  2. В присъствието на дълги блокове в кеш паметта всяка дума, написана на уреда кеш, необходима при използване на протокол предаването пишете на актуализацията, а само първият запис на всяка дума в блока трябва да генерира операции отмяна, използвайки данните от протокола за отмяната. запис на протокола за анулиране работи на нивото на единици кеш паметта, докато рекорд протокола за актуализация трябва да работи на нивото на отделни думи (или байта, ако записвате байт).
  3. Забавянето между написването на думите в един процесор и четенето на записаните стойности на друг процесор обикновено е по-малко, отколкото при използване на записа със схемата за ъпгрейд, тъй като записва данните се веднага преведени на процесор, който изпълнява четене (приема се, че този процесор е с копие на данните). За сравнение, като използвате дневника записва отмяната на процесор, изпълнява за четене, първо анулиране случва копия, а след това на четене ще бъдат направени на данни, както и окачване, докато актуализираната копие на блока няма да бъде на разположение и няма да се върне към процесора.

В допълнение към отмяна или подновяване на съответните копия от блока кеш, което е било записано, ние трябва също да поставите елемент от данните, ако пропуснете кеш се случва, когато записвате. Обезценката през последната стойност кеш паметта на елемента от данни, е лесно да се намери, тъй като всички записани данни винаги се изпращат също така и в паметта, в която може да се избере последния регистриран стойността на елемента от данни (наличие на запис буфери може да доведе до определена степен на сложност).

конвенционални кеш маркери могат да се използват за реализиране на процеса на мониторинг. Освен това, по-рано бе споменато малко на валидност (валиден битова), го прави лесен за изпълнение на заличаването. Чете пропуска поради отмяна или някакъв друг случай, също не е трудно да се разбере, защото те са просто въз основа на способността на наблюдение. За напишете операции, ние също би искал да знае дали има други кеширани копия от блока, като при липса на такива копия, записът не може да бъде изпратен в автобуса, който намалява времето за извършване на записа, както и необходимата пропускателна способност.

За да следите дали споделя блок, ние можем да се въведе допълнителен статус бит (споделена), свързани с всеки блок, точно както беше направено за малко валидност (валиден) и модификация (модифициран или мръсни) блок. Добавянето на малко статут, който определя дали споделя блок, ние можем да се отговори на въпроса дали операцията по запис, за да генерира анулиране на протокола за операцията по отмяна или предаване чрез протокола с актуализацията. Ако има запис в блок, намиращ се в "споделена" с помощта на журналните записи с отмяната, кеша генерира операция за анулиране на автобуса и марки като специално звено (частни). Всяка последваща отмяна на блока на процесора, за да изпратите не повече. Процесор с изключителен (ексклузивен) копие кеш блок обикновено се нарича "собственик" (собственик) блок кеша.

При използване на журналните записи с актуализацията, ако устройството е в "Споделени", всяко вписване в този блок трябва да се излъчва. Това анулиране протокол, когато отмяната е изпратен на състоянието на работа на промените в блок от "сподели" с "несподелимото" (или "частен"). По-късно, ако друг процесор пита за устройството, състоянието трябва да се върнете към него ", сподели". Тъй като нашата спазване кеш също вижда всички недостатъци, той знае, когато блока кеш е поискано от друг процесор, и неговото състояние трябва да се "споделена".

в памет на стратегията за запис

Надграждане на паметта по време на транслация

Фиг. 10.4. Примери протоколи за наблюдение

Ако процесорът използва кеш на няколко нива с качествата на покритие, а след това всеки ред в основната кеша е на разположение и на вторичния кеш паметта. Следователно, активността на наблюдение може да бъде свързано с кеша от второ ниво, а по-голямата част от активното процесорът може да бъде свързан с първичен кеш. Ако механизъм за мониторинг понася удар във вторичната кеш, а след това трябва да изпълни арбитраж по отношение на първичната кеш за актуализиране на държавата и е възможно да се намерят данни, които нормално би довело до спиране на процесора. Това решение бе взето в много от днешните системи като кеш на няколко нива може значително да намали изискванията за пропускателна способност. Понякога дори може да бъде полезно да се дублира тагове във вторичната кеш за по-нататъшно намаляване на броя на конфликтите между активното процесора и механизъм за наблюдение.

В реални системи, съществуват много варианти на схеми на кохерентността на кеша, което от двете се използва дали схемата се основава на отказа или ремонта, дали да се изгради на кеш паметта на принципите през или пиша обратно, когато има актуализация и "притежание" на това дали е налице държавна и като тя се реализира. Фиг. 10,4 някои протоколи с надзора и някои машини, които използват тези протоколи.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!