Вычислительные Системы, 07 лекция (от 22 октября)
Материал из eSyr's wiki.
В прошлый раз остановились пернед рассмотрением последнего вариант организации вирт памяти - сегментных страниц, который был разработан чтоб избавится от недостатков сегм и стран орг. Рассматривали струкутуру таблиц, рассматривали аппаратнную табл адрес трансл, в кот помещ инф для быстрого преобразования виртуальных адресов стран и сегм в физ адреса стран и сегмента. Сведения о находждении сегм и страниц в оп, времени недоступности стр в оп(флаг доступности для обмена), Вирт сегм стран адрес
- номер сегмента(с)
- номер страницы(п)
- смещение(д)
таблица сегментов
Моделировать программу очень сложно. Моделировать апааратуру научились. Правда из-за большой политики не дают ользоваться всем. Но моделировние как таковое дошло до своего предела -- и эволюционное моделирование, и аналитическое есть. Есть достижения человечества которые кажется достигли своего предела ОДно из таких достижений - внешняя(космическая) баллистика. Алгоритм настолько откачана сообщестовм..Вот у нс этим занималось 3 организации как минимум. Они работают параллельно и потом по баллистическому циркуляру сверяются, все до сантиметра выверятся(хотя рассчитывается по разным алгоритмам).Если не рассчитывать релятевистские эффекты, то до конца 21 века баллистикам делать нечего. Стали заниматься роботами, шагающими по плантеам автоматами -- просто переключили свою энергию на другое. ВОзьмем цуп - все работает на автомате, занялись системами вирту реальности(индуцирования вирт реальности) - замечательная ведь вещь, когда космонавт выйдет в космос, а и вы и он можете видеть любую точку косм комплекса, хотя никакх камер там нет, только засчет того что в машине очень точные данные о конфигурации и есть маячки(радио), которых не так много. Все это пересчитывается и отражается в виде стерео картинки. Все это очень важно, для этого имеется широкое поле использование. Я начал с того, что моделирования аппаратуры(я сам этим занимался, и даже в свою диссер включал.. Я кажется рассказывал вам эту историю, когда я канд писална которую им отзыв писал, я упоминал первую советскую ос...(Вот кстати мне придется в пятницу оппонировать -- масштабирование дискретно событийных чего-то там. Настраиваемые системы иммитационного моделирования вобщем. (Вот там есть система диана иммитационного моделирования.)))А вот поведение програм -- в диане они тоже на неё претендуют, но эта вещь еще далеко не полная.. Так что лучше тут сделать - поручить аппаратуре и сделать доп таблицу индексов в которой в итойстрочке
- адрес начала таблица страниц итого сегмента
(длины сегмента нет, так как имеет место карта страничности)
- уникальная защита сегмента(можно по записи, можно по считыванию-записи, вот она здесь и проверятется)
Операц система должна изготовить н+1 таблицу для н сегментов(для каждого сегм таблица страниц и общая таблица сегментов). В таблице страниц сегмента
- физ номер страницы
- наличие страницы в оп
- временная защита страницы
Вот мы и получили преимущества и сегментной и страничной организации. Все эти табл можно поручить аппаратуре. Если страницы не т в оп,о будет прерывание.
Таблица адресной трансляции
- с
- п
- адрес физ страницы(Н)
- защитные признаки страницы
Адрес физ = Н физ стр + д
Всё это сюда заносится операционной системой. Вот, собственно говоря, это. Сделать так, что если нет в тат, что б аппаратура искала в табл сегм и стр - можно, но слишком много накладных расходов.А если нет страницы или она защищена, то конечно, дело ос -- надо прерываться.
Вот мы рассмотрели вирт память в разных ипостасях
- сегментное отображение(любой физ участок пмяти опр длины брался и адреса относительные складывались с базой, указыв на начало этого участка)
- структурированные организации, позволили избавиться от оверлеев, этого не могло предоставить сегментное отображение.
НЕсколько раннее мы с вами говорил том что для общей памяти, для нума систем использование вирт памяти явл естественным. Для мпипи используется в пределах каждого узла. Ну и достижение -- это когда у вас есть огромная вирт память, и при мпипи ос умеет подкачивать страницы не с диска, а из памяти других выч модулей. Кстати, вот эьо оч интересное понятие -- виртуальный диск(вирт барабан(Кстати, очень инт история. Речь о ос НД70 для бэсм6(иванников) на дворе стояли 90 годы, а вот там на лампочках(кстати вот о табл преобр адресов - мы с вами говорим о тат, где на нескольких регистрах находится часто используемая инф в бэсм 6 были 32 страницы вирт памяти, они назывались приписка и на этой приписке, когда задачи менялись, выполнялись полезные для аппаратуры тесты(тестируются операции)так вот, там горело вот это вот нд70, лампочки были сипользованы чтоб образовывать нд 70) так я не для этого расскзываю, а рассказываю что б сказать след - нд70 была рассчитана (память не более чем 32 килослова физически была) на 64 килослова. ос была написна на автокоде, и везде прошивалось использование этих 64 килослов, хотя виртуальный адрес сохранялся - 15 разрядов, это аппаратура, 32к. ну и как появилсь память с 64 к легким движением руки перетрнслировали и все заработалою Но со времммменеммм появилось сссто двадддцать вввосемь к! а эттто ужжже ннне бббыллло предддусмотрено! А сил на то что переделывать не было... И оставшиесе 64 к были использованы как "виртуальный магнитный барабан", из одной части в другую подкачивлось, очень быстро) ) Ну вот собсно говоря, такие вот. Ну ладно. Вот. Да, ну вот, виртуальная память.
Теперь, посмотрим место вирт памяти в общей иерархии. В сверх бысрод оп
- регистры общего назначения
- кэш
Магн барабаны - непростой мех устройство -- головка дорожкой проходилась. Старались сделать зазор поменьше, бывали плавающие головки(плавали в зависимости от влажности, температуры, но это в след разделе). НО я помню, если машина останавлилвалась, надо запускать - на полупроводниках ладно, а вот на ламповых -- как включаешь посыпется нек колво ламп на младших разрядах(я рассказыал как я однажды бэсм 2 выключил?там надо было поднимать на к ламп регулярно. Я подходил спиною и нащупывая пальцем кнопку на к повышал. и однажды перепутал кнопку.. двое суток.. но там лампы) а с барабанами там так -- включишь, он чутьчуть покрутится, выключишь. и так раз 7-8, пока он не раскрутится, а то иначе там побьётся что нибудь. Диски долго уступали барабанам по скорости(хоят превосходили объемом). Еще магнитные ленты, они исчезли сейчас практически. Всегда старались побыстрее синхронизировать данные("когерентность"(ну и слово придумали, одинаковые просто это значит)данных). Еще появилось МК, магнитные катушки. Это активно работающий уровень, имеются сец устройства, они продолжают совершенствоаваться и в выч центрах они ставтся(вот однажды ночью..я сам не слышал, но в дубне рассказывали: ночью, в больших машинных залах робот манипулятор берет катушку, и звук такой джик-джик, основательный звук такой(хотя отец мой, механик, говорил что хорошая механика шуметь не должна, на метро жаловался), так вот, ночью в выч центре стоит артиреллийский огонь!).
Массовая память. в свое время закреплялся за магнитными дсиками. Потом перешли к названию память прямого доступа. Но это вообще безобразие! А что, кривого что ли! Ленту конечно ндо крутить, но ттам надо головку двигать. Так в чем здело. Вот в чем. Есть задачи(на уровне создания машин типа крея) для которых надо много данных качать, а обработки мало,есть наоборот -- данных мало, счета много. И вот перекинули вы с магн дисков в оп, а процессор обсчитал и проставивает. проц быстро съедает те данные. А точ то вы прислали на прощшлой неделе мы давно уже съели. И стали делать массовую память на интегр схемах - на порядок более быстрая чем оп и на порядок меньшего объема. Крей и наши его сделали параллеьно, эту идею.Активно используемый файл записывался в мп. Мы сделли роцессор управления массовой памятью, американцы -- процессор управления магнитными дисками, кот разбирался с очередью заявок, высчитывал оптимальное движение головок(щас мы первую схватим -- это неоптимальная стратегия). Можно конечно не делать для этого спец процессор, можно основной ос, но они это вынесли на отдельный процессор управления магн дисками. На крее магн диски конечно были. На более мелких машинах таких доп процессоров не было.
Итак, мы хотим кормить процессор. Как это может быть организовано. Как работает процессор мп? программные методы доступа. А именно. У вас как то расположена в мп матрица 1000*1000 ячеек, а вам нужно взять диагональные элементы(1000). Вообще говоря мы должны перекачать 1 000 000 в оп, а можно написать программку, которая будет подавать только те места, которые нужны. На самом деле ос основной машины подает следующий обмен
- адрес начала в оп
- длину обмена.
В мп приходит первый синхроинпульс(дай!или возьми!) а дальше работает процессор управления мп.
Ну ещё программное управление мп может управлять ликвидацией фрагментации.
Перейдём к кэшу. Можно разрешать процу общаться непосрественно с оп, можно не разрешать. Когда выгодно первое? когда таскаем по одному элементу из разных мест памяти, то есть когда кэш неэффективен. Пока рассмотрим второй вариант. Операции:
- поиск места где находятся данные
- стратегия организации записи
Поиск. 3 способа.
- полностью ассоциативный кэш.
Кэш делится на блоки одинаковой длины. У каждого блока кэша имеется свой регистр, на котором находится адрес по оп начала группы данных, отображенных в этот блок кэш.(да, табл адр трансл -- это тоже кэш! полностью ассоциативный) Появившийся адрес обрезаем и сравниваем с адресами во всех регистрах. Этот адрес может быть на любом, а может не быть ни на каком. Если находите - делаете операцию. А если не нашли, то вам нужно подкачать данные из оп. В принципе это может быть сделано и аппаратно и программно, опять же, исходя из свойства локальности программы група данных будет долго использоваться. Если вы выбираете блок в качестве жертвы, вам нужно знать, изменялся этот блок, или нет. Поэтому у каждого блока есть бит модификации. Если не менялся, то можно его спокойно затирать и подгружать новый. Вот собственно вся история. Если кэш большой, то полная ассоциативность - сложная в реализации вещь.
- прямая адресация(direct mapping).
В каждом блоке находятся только груы с определенными адресами. В 0ом 0000-0077,0400-0477 итд в 1м 0100-0177,0500-0577 итд в 2м 0200-0277 итд в 3м 0300-0377 итд
- частичная адресация(средний вариант)
С помощью подхода прямой адресации выбирается группа блоков одинаковой длины.(один блок не группа). в первые два юлока кэша могут попадать 0000-0177, 0400-0577, во вторые два 0200-0377, 0600-0777. А внутри группы блоков действует принцип полной ассоциативности.