Каталогқа негізделген кэштің келісімділігі - Directory-based cache coherence - Wikipedia

Жылы компьютерлік инженерия, кэштегі когеренттілікке негізделген түрі болып табылады кэштің келісімділік механизмі, мұнда каталогтар олардың масштабтылығына байланысты snoopy әдістерінің орнына кэштерді басқару үшін қолданылады. Автобусты қарау әдісі қолдану салдарынан нашар масштабта хабар тарату. Бұл әдістерді екеуіне де бағыттауға болады өнімділік және ауқымдылық анықтамалық жүйелер[1]

Толық биттік векторлық формат

Толық биттік векторлық каталог форматының диаграммасы, мұнда E = Эксклюзивті, S = Ортақ, М = Өзгертілген және U = Кэштелмеген

Толық биттік векторлық форматта, әр мүмкін үшін кэш сызығы жылы жады, а бит әрбір жеке тұлғаны бақылап отыру үшін қолданылады процессор сол желіде сақталған кэш.[2] Толық биттік векторлық формат - бұл ең қарапайым құрылым, бірақ ең кіші масштабталатын құрылым.[1] The SGI шығу тегі 2000 процессорлардың санына байланысты толық разрядты вектор мен өрескел разрядты вектордың тіркесімін қолданады.[3]

Әрбір каталог жазбасында кэш жолында бір процессорға 1 бит сақталуы керек, сонымен бірге каталог күйін бақылау биттері болуы керек. Бұл талап етілетін жалпы мөлшерге әкеледі (процессорлар саны) × кэш жолдарының санысақтау орны бар үстеме қатынасы (процессорлардың саны) / (кэш блогының өлшемі × 8).

Каталогтың үстеме шкаласы процессорлар санымен сызықтық түрде таралатындығын байқауға болады. Бұл аз ғана процессорлар үшін жақсы болуы мүмкін, ал үлкен жүйелерде каталогқа қойылатын өлшемдер шамадан тыс болады. Мысалы, блоктың өлшемі 32 байтпен және 1024 процессормен сақтау үстеме коэффициенті 1024 / (32 × 8) = 400% болады.[2]

Дөрекі биттік векторлық формат

Үлкен биттік векторлық каталог форматының диаграммасы

Дөрекі биттік векторлық формат толық биттік векторлық форматқа ұқсас құрылымға ие, бірақ әрбір кэш жолында әр процессорға бір битті қадағалаудың орнына, каталог бірнеше процессорларды топтастырады. түйіндер, кэш жолының жолда емес, түйінде сақталатындығын сақтау. Бұл мөлшерге деген қажеттілікті есебінен жақсартады автобус трафикті үнемдеу (бір түйінге арналған процессорлар) × (жалпы сызықтар) кеңістіктің биттері.[3] Осылайша, үстеме шығындар коэффициенті бірдей, тек процессорлар санын процессорлар тобының санымен ауыстыру керек. Топтағы бір процессоры бар кэш жолына автобус сұранысы жасалған кезде, каталог сигналды тек құрамындағы кэштерден гөрі түйіндегі барлық процессорларға таратады, бұл мәліметтер жоқ түйіндерге қажет емес трафикке әкеледі. кэштелген.[2]

Бұл жағдайда каталогтың жазбасы әрбір кэш жолы үшін процессорлар тобы үшін 1 бит қолданады. Full Bit Vector форматымен бірдей мысал үшін, егер біз 8 процессорға 1 битті топ ретінде қарастырсақ, онда сақтау үстемесі 128 / (32 × 8) = 50% болады. Бұл Full Bit Vector форматының айтарлықтай жақсаруы.

Сирек каталог форматы

Кэш белгілі бір уақытта блоктардың кіші жиынтығын ғана негізгі жадта сақтайды. Демек, каталогтағы жазбалардың көпшілігі кэштелген блоктарға жатады. Сирек каталог форматында ысырап тек каталогтағы кэшталған блоктарды сақтау арқылы азаяды.[2] Кэш өлшемі 64 КБ, блоктың өлшемі 32 байт және жадының негізгі өлшемі 4 МБ болатын процессорды қарастырайық. Сирек каталог форматында болуы мүмкін жазбалардың ең көп саны - 2048. Егер каталогта жадтағы барлық блоктар үшін жазба болса, онда каталогтағы жазбалар саны 131072 болады. Осылайша, сақтаудың жақсарғаны анық сирек каталог форматымен берілген өте маңызды.

Сандармен теңестірілген екілік ағаш форматы

Бұл форматта каталог орталықтандырылмаған және жады блогын бөлетін кэштер арасында таратылады. Жад блогын ортақ пайдаланатын әр түрлі кэштер а түрінде орналастырылған екілік ағаш. Алдымен жад блогына кіретін кэш - бұл түбір түйіні. Әрбір жады блогында түбірлік ақпарат (HEAD) және Sharing counter өрісі (SC) болады. SC өрісінде блокты бөлісетін кэштер саны бар. Әр кэш жазбасында бар көрсеткіштер L-CHD және R-CHD деп аталатын келесі бөлісу кэштеріне. Бұл каталогтың шарты екілік ағаш теңдестірілген болуы керек, яғни сол жақ тармақтағы түйіндер саны оң ішкі ағаштағы түйіндер санына тең немесе одан үлкен болуы керек. Барлық кіші ағаштар теңдестірілген болуы керек.[4]

Тізбектелген каталог форматы

Бұл форматта жад каталог сілтегішін блокқа кірген соңғы кэшке дейін сақтайды және әрбір кэште блокқа кірген алдыңғы кэштің көрсеткіші болады. Сондықтан процессор жадтағы блокқа жазу туралы сұрау жіберген кезде, процессор жібереді жарамсыздықтар көрсеткіштер тізбегінен төмен. Бұл каталогта кэш блогы ауыстырылған кезде бізге қажет траверс The тізім өсетін каталогты өзгерту үшін кешігу. Бұған жол бермеу үшін қосарланған тізімдер қазір кеңінен қолданылады, онда әрбір кэштелген көшірмеде блокқа кіретін алдыңғы және келесі кэшке сілтемелер бар.[5]

Көрсеткіштің шектеулі форматы

Көрсеткіштің шектеулі форматы деректерді кэштейтін процессорларды бақылау үшін көрсеткіштердің белгіленген санын қолданады. Жаңа процессор блокты кэштегенде, бассейннен сол процессорға бағыттау үшін бос сілтеме таңдалады. Бөлісушілер саны бос сілтегіштер санынан асып кететін жағдайларды қарастырудың бірнеше нұсқалары бар. Бір әдіс - жаңа сұраушыға сілтемені қолдана отырып, үлескерлердің біреуін жарамсыз ету, бірақ бұған блок оқырмандары көп болған жағдайда, мысалы, құлып сияқты шығындар әкелуі мүмкін. Тағы бір әдіс - бұл барлық блоктар үшін қол жетімді жеке сілтеме пулының болуы. Бұл әдіс әдетте тиімді, өйткені көптеген процессорлармен бөлінетін блоктар саны өте көп емес.[2]

Әдебиеттер тізімі

  1. ^ а б Рейнхнарт, Стивен; Басу, Аркаправа; Бекман, Брэдфорд; Хилл, Марк (2013-07-11). «CMP каталогтарының келісімділігі: бір түйіршіктілік бәріне сәйкес келмейді» (PDF). Журналға сілтеме жасау қажет | журнал = (Көмектесіңдер)
  2. ^ а б в г. e Солихин, Ян (2015-10-09). Параллельді көп ядролы сәулеттің негіздері. Роли, Солтүстік Каролина: Солихин баспасы және консалтинг, LLC. 331-335 беттер. ISBN  978-1-4822-1118-4.
  3. ^ а б Лаудон, Джеймс; Леноски, Даниэль (1997-06-01). SGI Origin: ccNUMA жоғары масштабталатын қызмет. Компьютерлік архитектура бойынша 24-ші жыл сайынғы халықаралық симпозиум материалдары.
  4. ^ Сео, Дэ-Ва; Чо, Джунг Ван (1993-01-01). «Сандық теңдестірілген екілік ағашты қолданатын кэштегі когеренттілік схемасы». Микропроцессинг және микропрограммалау. 37 (1): 37–40. дои:10.1016/0165-6074(93)90011-9.
  5. ^ Чайкен Д .; Өрістер, С .; Курихара, К .; Агарвал, А. (1990-06-01). «Кең ауқымды мультипроцессорлардағы кэштегі когеренттілік». Компьютер. 23 (6): 49–58. CiteSeerX  10.1.1.461.8404. дои:10.1109/2.55500. ISSN  0018-9162.