Статус
нашего
сайта:
ICQ Secrets Center is Online  ICQ Information Center


ICQ SHOP
     5-значные
     6-значные
     7-значные
     8-значные
     9-значные
     Rippers List
ОПЛАТА
СТАТЬИ
СЕКРЕТЫ
HELP CENTER
OWNED LIST
РОЗЫСК!New!
ICQ РЕЛИЗЫ
Протоколы ICQ
LOL ;-)
Настройка компьютера
Аватарки
Смайлики
СОФТ
     Mail Checkers
     Bruteforces
     ICQTeam Soft
     8thWonder Soft
     Other Progs
     ICQ Patches
     Miranda ICQ
ФорумАрхив!
ВАШ АККАУНТ
ICQ LiveJournal

Реклама

Наш канал:

irc.icqinfo.ru

Таненбаум Э.- Архитектура компьютера. стр.470


Таненбаум Э.- Архитектура компьютера. стр.470

Когда запрос приходит в узел 36, он направляется в устройство каталога. Устройство проверяет таблицу из 218 элементов (один элемент на каждую строку кэша) и извлекает элемент 4. На рис. 8.27, в видно, что строка отсутствует в кэше, поэтому устройство вызывает строку 4 из локального ОЗУ, отправляет ее узлу 20 и обновляет элемент каталога 4, показывая, что эта строка находится в кэше узла 20.

А теперь рассмотрим второй запрос, на этот раз для строки 2 из узла 36. На рис. 8.27, в видно, что эта строка находится в кэше узла 82. В этот момент устройство может обновить элемент 2 каталога, показывая, что строка находится теперь в узле 20, затем послать сообщение в узел 82, чтобы строка из него была передана в узел 20, и объявить кэш узла 82 недействительным. Отметим, что передавать многочисленные сообщения приходится в любом мультипроцессоре с общей памятью.

Давайте вычислим, сколько памяти занимают каталоги. Каждый узел содержит 16-мегабайтное ОЗУ и 218 9-разрядных элементов для трассировки этого ОЗУ. Таким образом каталог отнимает примерно 9 х 218 бит от 16 Мбайт, или около 1,76 %, что вполне допустимо. Даже если длина строки кэша составляет 32 байта, потери памяти составят всего 4 %. Если длина строки кэша равна 128 байт, потери окажутся еще ниже — 1 %.

Очевидным недостатком этой схемы является то, что строка может быть кэши-рована только одним узлом. Чтобы строки можно было кэшировать в нескольких узлах, требуется какой-то способ их поиска (например, чтобы объявлять недействительными или обновлять при записи). Возможны различные варианты.

Один из вариантов — предоставить каждому элементу каталога k полей для идентификации других узлов, что позволит кэшировать каждую строку на нескольких узлах (до k узлов). Второй вариант — заменить поле номера узла битовой картой, по одному биту на узел. Здесь нет ограничений на количество копий, но существенно растут непроизводительные затраты. Каталог, содержащий 256 бит для каждой 64-байтной (512-разрядной) строки кэша, требует более 50 % памяти. Третий вариант — хранить в каждом элементе каталога 8-разрядное поле и использовать это поле в качестве заголовка связного списка, объединяющего вместе все копии строки кэша. При такой стратегии требуется дополнительное пространство на каждом узле для указателей связного списка. Кроме того, требуется просматривать список, чтобы в случае необходимости найти все копии. Каждая из трех стратегий имеет свои достоинства и недостатки. На практике используются все три стратегии.

Еще одна проблема данной схемы — как проверять, обновлена исходная память или нет. Если нужно считать строку кэша, которая не изменялась, запрос может быть удовлетворен из основной памяти, и при этом не нужно направлять запрос в кэш. Если же требуется считать измененную строку кэша, запрос должен быть направлен в тот узел, в котором находится эта строка кэша, поскольку только здесь имеется ее действительная копия. Если же разрешается иметь только одну копию строки кэша, как показано на рис. 8.27, то контролировать изменения в строках кэша нет никакого смысла, поскольку любой новый запрос требует передачи сообщения существующей копии, чтобы объявить ее недействительной.


⇐ Предыдущая страница| |Следующая страница ⇒

.