Проблемные инструкции х86

Чтобы упростить реализацию диспетчеров виртуальных машин на х86, и AMD и Intel предложили расширения архитектуры посредством введения нового режима. VT-x предоставляет новый режим выполнения для запущенных виртуальных машин спланированное определение состояния виртуальной машины, инструкции для быстрого переключения виртуальных машин и большой набор параметров для выбора обстоятельств, при которых вызывается диспетчер виртуальных машин. Всего в режим VT-x добавлено 11 новых инструкций для х86. Такие же предложения были сделаны в технологии AMD Pacifica.
Альтернативой изменению оборудования является небольшая модификация операционной системы с целью избежать использования проблемных частей архитектуры. Такая технология называется паравиртуализацией, хорошим примером которой может послужить диспетчер с открытым кодом Xen VMM. Он предоставляет гостевой операционной системе абстракцию виртуальной машины, которая использует только пригодные для виртуализации части физического оборудования х86, на которых работает диспетчер виртуальных машин.
Сложность создания системы памяти заключается в том, чтобы она соответствовала более быстродействующим процессорам, ведь исходный материал для оперативной памяти, DRAM-элементов по существу такой же, как в самых быстродействующих компьютерах, так и в самых медленных и дешевых.
Существует принцип локальности, который дает нам шанс преодолеть продолжительную латентность доступа к памяти – и обоснованность этой стратегии демонстрируется на всех уровнях иерархии памяти. Хотя эти уровни иерархии в количественных понятиях выглядят сильно отличающимися друг от друга, в своей работе они следуют сходным стратегиям и используют одни и те же свойства локальности.
Многоуровневые устройства кэш-памяти позволяют легче использовать дополнительную оптимизацию кэш-памяти благодаря двум обстоятельствам. Во-первых, параметры конструирования кэш-памяти нижнего уровня отличаются от таковых для кэш-памяти первого уровня. Например, поскольку кэш-память нижнего уровня будет иметь значительно больший размер, появляется возможность использования более крупных блоков. Во-вторых, кэш-память нижнего уровня не используется процессором на постоянной основе, в отличие от кэш-памяти первого уровня. Это позволяет нам рассмотреть вопрос задействования низкоуровневой кэш-памяти для какой-нибудь другой работы в период невостребованности, что может быть полезным для предупреждения будущих промахов.
Другой тенденцией является поиск помощи от программного обеспечения. Эффективное управление иерархией памяти с использованием разнообразного преобразования программ и аппаратных средств является главной целью улучшения компиляторов. Исследуются две разные идеи. Одна из них заключается в реорганизации программы, чтобы увеличить ее пространственную и временную локальность. Этот подход фокусируется на циклично-ориентированных программах, использующих в качестве основной структуры данных большие массивы; в качестве типичного примера можно привести задачи линейной алгебры. Путем реструктуризации циклов, обращающихся к массивам, существенно улучшается локальность, а следовательно, может быть достигнута высокая производительность кэш памяти. Рассмотрение в предыдущем разделе недоразумения, касающегося игнорирования поведения системы памяти при написании программ или при генерации кода в компиляторе, показывает, насколько эффективным может быть даже простое изменение структуры цикла.
Еще одним подходом является предварительная выборка (предвыборка), при которой блок данных переносится в кэш-память еще до того, как к нему последует обращение. Многие микропроцессоры используют аппаратную предвыборку, пытаясь предсказать обращения, которые может быть трудно заметить при использовании программных средств.
Третий подход заключается в использовании специальных инструкций, связанных с кэш-памятью, которые оптимизируют обмен данными с памятью. Например, микропроцессор использует оптимизацию: при промахе во время записи содержимое блока из памяти не извлекается, потому что программа собирается записать весь блок. Эта оптимизация существенно сокращает для одного ядра объем обмена данными с памятью.





Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: