Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Массивная Оперативная Память
Архитектура современных вычислительных систем держится на трех китах: процессоре, производящем манипуляции с информацией, хранилища информации и устройств загрузки/выгрузки информации из внешней среды.
Хранилище информации на данный момент состоит из двух частей Оперативной Памяти и долговременных устройств хранения (винчестеров). Такое разделение связано с невозможностью до нынешнего времени объединять свойства скоростного доступа к информации с функцией долговременного хранения большого объема информации в одном устройстве.
Оперативная память наиболее архаичная из этих систем, поскольку за последние десятилетия ее архитектура не изменилась. Это по-прежнему однородный массив микросхем памяти, объединенных едиными шинами данных и адресации. Единственным изменением и то, практически тридцатилетней давности, было введение понятия виртуализации, причем эта виртуализация относилась не к самой ОП, а к методам ее адресации со стороны процессора.
В настоящее время именно ограничения по доступу к ОП являются основной проблемой повышения общего быстродействия вычислительных установок. Многие на это возразят, что на их машинах стоит по 2 гигабайта и все прекрасно работает. Но то же самое говорили и десять лет тому назад, только про объем 200 мегабайт. И двадцать лет назад, но про объем в 16 мегабайт, я еще помню, как это же говорили и про 640 кбайт, тридцать лет назад.
Что дает оперативная память объемом скажем в один Терабайт?
В современных вычислительных системах (имеется ввиду железо +ОС) такой объем нужен только для серверов, и то не всех.
Но это верно только в том случае, если ОП не является долговременным запоминающим устройством, типа флеш-памяти. Если эта память способна хранить информацию долговременно, как сейчас это делает внешние накопители, то при таком объеме можно совместить функции хранения информации и оперативного доступа к ней, т.е. всю информацию хранить и обрабатывать непосредственно в Оперативной Памяти.
При таком подходе Оперативна Память это реальный путь повышения производительности любой вычислительной системы, от смартфона до сервера. Но это уже будет не оперативная память в классическом понимании, а совсем другое устройство «Массивная Оперативная Память».
Почему массивная? да потому что большая, а кроме того адресуется с точностью до массива (блока) а не до байта, как традиционная ОП.
Никого уже не удивить флеш-накопителями с объемом 0,5-1 Тбайт, так что вопрос объема не актуален в настоящее время.
Вопросы вызывает время доступа к такой Массивной ОП и метод организации к ней доступа, поскольку она является ЗУ со страничной, а не произвольной адресацией.
Современные контроллеры флеш-памяти обеспечивают время доступа к информации на уровне 1 Гбайта в секунду, причем это с одного контроллера имеющего 8 каналов для подключения флеш-микросхем. В реально присутствующих в качестве коммерческих продуктов системах обеспечивается скорость в 2-4 Гбайта в секунду… Маловато конечно, до 10-20 Гбайт/сек для традиционных ОП не дотягивает.
Второй проблемой является метод доступа к информации на такой Массивной ОП, поскольку она имеет страничную организацию с размером страниц в 4 Кбайта - процессор с такой памятью напрямую работать не может…
Но эти две проблемы решаются одним способом - включением в состав Массивной ОП Кеша с произвольным методом доступа к информации.
Алгоритм работы такой памяти выглядит следующим образом: процессор выставляет запрос на доступ к какому либо адресу с точностью до байта, после чего страница в 4 Кбайта, содержащая требуемый адрес, блоком, загружается в Кеш из флеш-накопителя.
После загрузки страницы в Кеш процессор работает с информацией размещенной в Кеше, имея к нему доступ на уровне байтов.
Собственно так процессор работает и сейчас со свей внутренней Кеш-памятью, поскольку в традиционных системах загрузка в Кеш процессора из ОП идет блоками в 64-128 байт.
Теоретически все реализуемо, но индустрия к таким решениям на данный момент не готова, хотя полный набор необходимых технологий и имеется. Скажем так,- время их не за горизонтом, но и случится это не завтра…проблема в мозгах и их неготовности к революционным изменениям, - подавай им, видишь ли, не революцию, - а эволюцию.
Ну и ладно, будет эволюция…
Уже сейчас имеется потребность в ОП объемом в терабайт и более, даже без функции долговременного хранения информации. Объемы ОП на серьезных вычислительных установках в несколько терабайт не редкость, но это арифметическая сумма ОП всех серверов кластера. Единичный процессор в составе такого кластера не имеет непосредственного доступа ко всему объему ОП, а только к небольшой части, расположенной на его собственной материнской плате. Во многих случаях этого недостаточно, нужно иметь объем ОП в терабайтного масштаба именно в прямом доступе любого процессора вычислительной системы.
Вот эту актуальную задачу и попытаемся решить с помощью эмулятора Массивной Оперативной Памяти.
Подойдем к проблеме по-русски, с помощью топора и какой там Матери…
В качестве топора будем использовать аппаратуру виртуализации, а матерь оставим для загадочной русской души, готовой тратить все свободное от основной работы время на эту академическую тему.
Итак: в качестве накопителя Массивной Оперативной Памяти будем использовать SSD-диск, это конечно неэффективно, но это есть под рукой.
В качестве Кеша будем использовать часть объема ОП за естественной границей в 4 Гбайта. Аппаратура виртуализации позволит отразить на физические адреса такого Кеша весь эмулируемый объем Массивной Оперативной Памяти.
Подкачку и выгрузку информации из Кеша будем осуществлять процессором в режиме хоста, в который будем выходить по факту отсутствия в Кеше необходимой информации из основного накопителя.
Гипердрайвером будет «Красная пилюля», доработанная для 64битного режима, оснащенная необходимыми обработчиками событий и имеющая собственный драйвер для работы с дисковым контроллером на интерфейсе AHCI.
Управление таблицами теневой переадресации, загрузка/выгрузка данных с флеш-накопителя осуществляется в режиме хоста тем процессором, на котором произошло событие:- общение к адресу памяти, информация по которому отсутствует в Кеше Массивной Оперативной Памяти.
В результате программами хоста Гипердрайвера реализуется эмуляция нового, неизвестного досель устройства под названием «Массивная Оперативная Память».
На реальной системе сначала загружается Гипердрайвер, который инициализирует оборудование, системные таблицы, забирает в монопольное использование контроллер флеш-накопителя (SSD диска) и сам диск. Затем, уже на активной Массивной Оперативной Памяти, загружается операционная система, таким образом, весь жизненный цикл ОС проходит с участием эмулируемого Гипердрайвером несуществующего в реальности оборудования.
Для ОС виден только конечный результат работы такого оборудования - увеличенный размер Оперативной Памяти:
Операционная система (Windows 7-x64) , спокойно начинает работать с такой эмулируемой Массивной Оперативной Памятью, считая, по простоте душевной, ее реально существующей. Правда эта конкретная ОС напрочь отказывается работать с объемом оперативной памяти более 196 Гбайт, хотя ей предлагается объем 240 Гбайт. При этом стабильная работа ОС без зависаний на пользовательских программах обеспечивается при объеме ОП не более 150 Гбайт.
В такой эмулируемой памяти спокойно идут тесты на производительность ОП. Понятно, что результаты этих тестов скажем так: «от лукавого..», но тем не менее, важен сам факт.
Не понятно в данном случае, что реально измеряется, но похоже, что в тесте все данные находятся в Кеше Массивно Памяти и увеличенная задержка в 462 такта на блоках в 64 Мбайт это время на доступ через дополнительные таблицы переадресации в Гипердайвере (NPG таблицы).
Реальный потенциал даже эмулируемого с помощью оборудования виртуализации несуществующего устройства оказался на удивление жизнеспособен и высок, и это при скромных 500 Мбайтах/сек пропускной способности SSD имеющемся на данном макете (теоретических - на практике не более 250-300 Мбайт/сек).
Было запущено два теста на случайное чтение в объеме 1 Гбайт каждый, какие-то обращения к памяти попадают в Кеш, а какие-то нет, и их приходится подгружать из флеш-накопителя. В результате получается, что макет обеспечивает в тестах пропускную способность в 3 Гбайта/сек суммарно.
Макет Массивной Оперативной Памяти собран на стандартном контроллере Sata-3 и SSD винчестере Vertex-3 объемом 240Гбайт.
Если использовать более серьезное железо, типа SSD накопителей в форм-факторе PCI-E, да еще сделать на них чередование адресов для 2-Мбайтных блоков, то 4 таких устройства дадут в сумме 5-10 Гбайт пропускной способности.
Это уже даже больше, чем может обеспечить серверная плата в режиме NUMA, но не дотягивает до производительности памяти в режиме SMP-доступа.
При этом нужно иметь ввиду, что цифры пропускной способности актуальны для аварийного режима Кеш-промаха, т.е. когда в Кеше отсутствует требуемая страница и ее нужно подкачивать из флеш-накопителя. В нормальном режиме (присутствия информации в Кеше) доступ к такой Массивной памяти по скорости и латентности ничем не отличается от стандартной ОП.
На имеющемся в реальности железе можно создавать вполне успешные коммерческие решения, при цене 80-100 тысяч рублей за один Тбайт Оперативной памяти. Это уже очень даже заманчивые цены, при скоростях доступа даже выше, чем могут обеспечить современные 4-х сокетные материнские платы (такие решения пока могут содержать до 4х64 Гбайта = 256 Гбайт ОП, на скорости доступа 4-5Гбайт/сек).
Если заточить внутренние прошивки флеш-накопителей под специфику Массивной Оперативной Памяти, а еще лучше полностью переработать интерфейс доступа к флеш-накопителю, то можно получать значительно более производительные решения.
Таким образом, стандартная аппаратура виртуализации, в связке с флеш-накопителями может использоваться для создания коммерчески успешных решений для увеличения объема Оперативной Памяти и долговременного хранения в ней информации.
Следующим этапом, эволюционно, можно переходить и к чисто аппаратной реализации Массивной Оперативной Памяти….