Виртуализация для самых маленьких #1: гипервизор - что, зачем и почему

15 июн 2020

[ATTACH] Развитие технологий аппаратной виртуализации (Intel VT-x и AMD-V) открывает широкие возможности по контролю выполнения кода на самом низком уровне. Привычные всем гипервизоры (Hyper-V, KVM, VMware или VirtualBox) позволяют запускать операционные системы в изолированном окружении: это становится возможным, благодаря способности процессоров работать в специальном режиме, в котором они контролируют доступ к ресурсам и обрабатывают выполнение заданных инструкций и событий. При...
Читать далее
Лайков +15 Комментариев18 Просмотров7.170

Виртуализация для самых маленьких #2: управляющие структуры, EPT, MTRR

18 июн 2020

Продолжаем писать изучать гипервизор. В прошлой части мы написали шаблон драйвера и заготовку функции для виртуализации всех логических процессоров. Прежде всего, следует напомнить, что под логическим процессором понимается или одно физическое ядро процессора (если процессор не поддерживает SMT/Hyper-Threading), или один логический поток в процессорах с поддержкой SMT/Hyper-Threading. Иными словами, если у процессора 4 ядра и он поддерживает Hyper-Threading (два потока на одно физическое...
Читать далее
Лайков +7 Комментариев5 Просмотров4.133

Виртуализация для самых маленьких #3: готовим структуры, заполняем EPT

21 июн 2020

В прошлой части мы получили теоретическую базу по принципам настройки гипервизора и EPT. Применим их на практике. В первой части мы написали шаблон драйвера и заготовку для виртуализации всех процессоров - функцию VirtualizeAllProcessors. Код виртуализации будет необходимо выполнить на всех процессорах и это легко сделать через генерацию межпроцессорного прерывания функцией KeIpiGenericCall. Каждый логический процессор выполнит код, переводящий его в режим виртуализации, и продолжит свою...
Читать далее
Лайков +7 Комментариев21 Просмотров4.476

Прикладной SIMD 001: введение (часть 1)

16 фев 2018

Предисловие Всем привет! Меня зовут Владимир Садовников, и в последнее время я активно занимаюсь разработкой плагинов, осуществляющих цифровую обработку аудиосигналов (DSP, Digital Signal Processing) на процессорах архитектуры x86 и x86_64. Учитывая то, что такие плагины зачастую осуществляют обработку сигнала в реальном времени, приходится достаточно основательно заниматься вопросом оптимизации вычислительных алгоритмов. При этом, одним из основных приёмов оптимизации является написание...
Читать далее
Лайков +3 Комментариев3 Просмотров3.061

Прикладной SIMD 002: краткий обзор

16 фев 2018

Предисловие Данная статья ставит целью в первую очередь рассказать хронологию появления тех или иных технологий SIMD в процессорах семейства x86 и одновременно кратко охарактеризовать их. Предыстория: FPU Изначально процессоры 8086 и 8088 (как более дешёвая версия 8086 с восьмибитной шиной данных) имели шестнадцатиразрядные регистры общего назначения и предоставляли возможность вычислений с использованием только целочисленной арифметики. Тем не менее в процессорах был предусмотрен набор...
Читать далее
Лайков +3 Комментариев6 Просмотров4.774

Прикладной SIMD 001: введение (часть 3)

16 фев 2018

Специфика программного кода Учитывая то, что плагины в первую очередь разрабатываются для использования в некоторой DAW (Digital Audio Workstation, цифровая звуковая рабочая станция), фреймы принято делить на отдельные моно-каналы. Благодаря этому значительно упрощается их коммутация, обработка и микширование в DAW (далее будет использоваться более общий и употребимый термин — хост (host)). Иными словами, стереоканал — это просто совокупность из двух моно-каналов. Каждый канал ассоциируется...
Читать далее
Лайков +2 Комментариев1 Просмотров2.633

Прикладной SIMD 001: введение (часть 2)

16 фев 2018

Анатомия сэмпла Разобравшись с частотой дискретизации и минимальной разрядностью сэмпла для нужд профессиональной аудиообработки, необходимо решить ещё один вопрос: каким образом семпл будет храниться в памяти. Как уже ранее упоминалось, для дискретизации по уровню сигнала может быть использована как линейная, так и нелинейная шкала. Нелинейная шкала была введена в цифровой телефонии для того, чтобы расширить динамический диапазон сигнала, но при этом сэкономить на размере сэмпла. На рисунке...
Читать далее
Лайков +1 Комментариев1 Просмотров2.779

Прикладной SIMD 003: прежде, чем начать (часть 1)

12 мар 2018

Предисловие В этой статье мы рассмотрим необходимый минимум действий для того, чтобы подготовить почву для работы с SIMD. Для этого необходимо выполнить ряд действий: удобно организовать проект; написать функцию идентификации процессора и поиска расширенных наборов инструкций; реализовать механизм инициализации всего DSP-модуля; написать функции инициализации и восстановления машинного контекста; собрать всё воедино с нужными опциями. Организация проекта Для того, чтобы впоследствии...
Читать далее
Лайков +1 Комментариев0 Просмотров2.278