А.Н. Томилин - Вычислительные системы (2006), страница 19
Описание файла
PDF-файл из архива "А.Н. Томилин - Вычислительные системы (2006)", который расположен в категории "". Всё это находится в предмете "вычислительные сети и системы" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 19 страницы из PDF
Вот это интересный момент: можно иметь ещё и счётчик активности. Когда мы с вами говорили о том, какой взять блок кэш для замещения в нём информации нанужную нам информацию. Это по-разному делают. Можно делать так. Счётчик активностинаходится в состоянии 0. Если у вас за какой-то период времени туда идут частые обращения, то прибавляем. Ну, это так, на предмет поиска жертвы: какой блок выкинуть.Итак, вот это у нас 3 способа организации кэш.
И даже мы обсудили вопрос замены вкэш информации какого-то блока на нужную нам информацию. Итак, время от времени изкэш данные заносятся в память. Как видите, идеальным для некоторых машин является ситуация, когда у вас данные сидят в кэш, и вы только их и используете (вы в память не обращаетесь, оставляя возможность памяти работать над приёмом данных из внешних устройств,передачи туда и т.п.). Прекрасно! Это самый лучший вариант. Это, конечно, хорошо. И существует 2 подхода реализации записи в кэш.Прежде, чем я это скажу, ещё разочек: из наших рассуждений вы поняли, что данныекэш могут быть сосчитаны и в случае, если требуется нам сосчитать данные из некоего блока памяти, и если вы записываете, то же самое — вы считываете блок из памяти, а потом туда записываете.
Если вы вспомните машину БЭСМ-6, то там так не было. Там данные попадали в кэш только при записи из арифметико-логического устройства, а затем уже брались ипри считывании. А когда была следующая запись и оказывалось, что от предыдущей записиданные ещё там находятся, это же место определялось и для следующей записи. Больше того,вы помните, там происходило омоложение.Вообще говоря, здесь тоже можно делать омоложение.
В каком-то смысле вот этотсчётчик активности так и направлен в эту сторону (этот же эффект). А там, вы помните, всякое обращение делало этот блок кэш (т.е. один регистр) самым молодым будь то по записи,будь то по считыванию. Можно и здесь эту схему, но она очень будет большая, если этусхему «футбольной таблицы» применить. Кстати, вы помните, моделирование показывало,что56производительность37%30%20%4816число регистровкэш (БРЗ)Если у вас 4 регистра, то 20% выигрыша, за счёт активного решения задач (или кусковформульных задач), где число используемых переменных небольшое. При 8-ми получалось30%, а вот при 16-ти получалось 37%. 7% — это 70 тыс. операций в секунду — практическимаксимально быстродействующая машина до БЭСМ-6. Но каков был объём оборудования?Особенно, учитывая схему омоложения.
Оно равно в кубе, и в те времена никак нельзя былоэто оборудование включить, и этими 7% пожертвовали, оставили 30%.Поэтому возможны разные схемы, связанные с фиксацией и удержанием активно используемых данных в кэш.Так вот 2 схемы (стратегии — страшное слово) записи:1) только в кэш — ну и когда приспичит, когда надо уже будет, то пойдёт в память —всё, как мы рассмотрели, здесь ничего для нас нового нет, а вот2) запись в кэш и в ОП одновременно.Получается, что на основе такого принципа, который считается совершенно великолепным и идеальным (только что рассуждения на эту тему у нас были), при этом полностьюзначение кэш не исчезает. Вы потом, когда будете читать, то данные в кэш, значит, будетебрать быстро.
Помните, у нас даже была такая договорённость: мы считаем время работырегистров равным нулю. У вас будет читаться мгновенно, ну а в памяти — очень хорошо —там будет тоже, что в кэш, т.е. сразу устанавливается когерентность (одинаковость данных).Когда это нужно? Оказывается, это нужно для многопроцессорных систем с общей памятью(SMP). Кстати, она так и называется — write through (запись через).ПроцессорПроцессоркэшкэшОПОПwrite backwrite throughПервая схема записи в литературе называется write back. Я когда это первый раз прочёл,и с тех пор я сегодня решительно возражаю. Для них (за бугром) это естественно, потому чтоу них другая сфера ощущений в делах своих и т.д. Для них это звучит, видимо, как-то естественно.
Я просто переведу: запись обратно. А куда «обратно»? У меня протест возник сразу,как только познакомился. Почему у них протест не возникает?Рисуем схему SMP:57ПроцессорПроцессорА1А1битдостоверностиОПРис. 122 процессора и 2 кэша. Не важно, при какой это организации: ассоциативная, прямая —всё равно. Как бы, всё хорошо, но у вас где-то в обоих кэшах есть блоки помеченные А1, т.е.начало участка по ОП одно и то же. Почему? Потому что на этих процессорах идут разныеветви одного алгоритма одной задачи и очень может быть, что там используются общиеданные.
Например, для считывания. Если для считывания, то ради Бога, — здесь никакихпроблем нет. А вот если записывать… Чего тут делать? Тут надо несколько порассуждать.В литературе вы частенько можете увидеть всякие сложные схемы, чтобы последнеезаписанное было бы увидено и т.д. Когда это надо?Вот у вас выполняется одна ветвь (1-я ветвь), и параллельно работает вторая:1-я ветвь2-я ветвьα1β1критическийучастоккритическийучастокαnβn1-я ветвь работает со своими данными (α1, … , αn), а 2-я — со своими (β1, … , βn). Ну ипрекрасно — будет себе работать. В какой-то момент, либо 1-му процессу понадобиться работать с β1, … , βn, либо 2-му — с α1, … , αn. Ну и естественно, здесь возникает момент, когда все эти проблемы очень острые. Т.е. когда один процесс записал в память, тогда можноразрешить другому процессу пользовать это и наоборот.
Т.е. получаем критические участки— там, где формируются данные, которые могут потребоваться другим процессам. Где-то напересменке, когда уже разрешается на критическом участке (как делается защита критического участка? — методом семафоров, разными средствами программной и аппаратной синхронизации), но это может случиться в любой момент.
Не то, что вы работаете (допустим,команда выполняется микросекунду) и в каждую микросекунду будете хватать данные. Дачто это за жизнь? Такой жизни не бывает. Она возникнет на пересменке. Итак, всё таки такоеможет возникнуть, и нужно с этим делом как-то аккуратно сделать.Что можно сделать? Вот вы записываете сюда, и тогда аппаратно проверяется (в соответствии со способом организации кэш, учитывая адрес), а нет ли его здесь (во втором кэше).Т.е. это очень сложное дело: надо проверить в первом кэше, а потом еще и во втором.
И вообще говоря, на это время нужно заблокировать обращения к кэш. Если не нашли, то нетпроблем: записали туда, записали в память. Когда другому процессору понадобятся эти данные, он их здесь не найдёт, возьмёт из память, а там они есть. А если всё-таки они здесь есть,то есть 2 варианта дальнейшей жизни:1) либо запись с обновлением, т.е. то, что записали сюда, пишется и сюда, и после этогоразрешается пользоваться — это технически разрешает,2) либо запись «с обнулением». Здесь появляется новый бит (помните, у нас был битмодификации, бит и даже большее количество разрядов, связанных с активностьюданного блока кэш) — бит достоверности (см. Рис.
12). Это означает, что вы ничегосюда писать не будете, но объявляете его недействительным. И если затем процессор58хочет что-то найти, то, учитывая этот бит, просто здесь сравнение не будет происходить, и из памяти (сюда или ещё куда-то) вытащится то, что записано здесь.Вот есть два таких подхода: запись с обновлением и запись с обнулением. Казалось бызапись с обновлением — вроде бы всё сделано, чего ещё делать, зачем делать недостоверным данный блок кэш. Это уже зависит от разных аспектов, связанных с количеством процессоров в SMP конфигурации, естественно, с количеством кэшей. Помните, мы с вами говорили, что SMP конфигурация не очень большая — это мы аргументировали, что у нас интерливинг памяти не бесконечен, но и здесь тоже свои сложности.
Поэтому на самом делесуществует вот здесь 2 подхода. Запись называется «с обнулением» — блок становится недействительным, а когда вам понадобится — пожалуйста, из памяти доставайте сюда илиещё куда-нибудь. Вот стратегии записи.И вообще говоря, мы взяли упрóщенный момент, чтобы показать при этом проблематику, которая возникает. Могут быть ещё более сложные схемы — попытки выжать максимум эффективности. Но нам хватит для обозначения проблем, которые связаны с организацией доступа к кэш и организации записи в кэш.
Вот, собственно говоря, это — всё.Я уже видел, как задавали задачки. Ну, вот у нас есть такие адреса: 1115, 241, 716(больше, чем 7-ка нет — это восьмеричные). Вот у вас кэш с частичной адресацией, частично ассоциативный кэш. Покажите, в каких блоках могут быть эти адреса. Такая игра преподавателя на экзамене. Играть очень приятно, пустяковая, и все довольны.Структурная организация оперативной памятиПерейдём к структурной организации памяти (структурированная память). Вначале,естественно, память имела физические адреса, и все работали по этим адресам. Появлялиськакие-то программы, которые занимали конкретные адреса (библиотеки подпрограмм).физическая память110 sin140 tgбиблиотека подпрограммавтооператор (предтеча ОС)1000Автооператор, который в ряде случаев помогал менять задачи — некая предтеча операционной системы.