50
полученные транслирование блоки кэшируется, а затем повторно включаются в
программный код.
С использованием программы QEMU специалисты ОАО «Аурат»
реализуют методы оптимизации поиска в кэше оттранслированных блоков,
представленных в виде хэш-таблиц. На первом уровне хэш может производить
обработку не более одного, а в случае блока возникновения коллизий этот блок
вытесняет другой. Если отсутствует необходимый блок на первом уровне, то
осуществляется его поиск на следующем уровне.
На втором уровне хэшем применяется физический адрес блока
трансляции, а также список блоков, позволяющий осуществлять линейный
поиск нужного блока. Если нужный блок не был найден, то осуществляется
вызов процедуры, позволяющей выполнить двоичную трансляцию. После того
как блок был найден, хэш обновляется.
Применение счетчика команд для хеширования на первом уровне
позволяет быстро преобразовать виртуальные адреса в физические адреса. В
свою очередь, применение физических процессов на втором уровне позволяет
нескольким приложениям использовать одну и ту же разделяемую библиотеку.
Также с помощью программы QEMU ОАО «Аурат» реализует методы
распределения регистров.
В среде QEMU реализуется алгоритм распределения регистров.
Допустимость регистров зависит от ограничений самой инструкции, а также
условий несовпадения выбранного регистра зарезервированным значением.
В процессах оптимизации по внутренним представлениям специалистами
ОАО «Аурат» среда QEMU используется для проведения машинно-
независимой оптимизации по продвижению констант и копий. Несмотря на то
что программный код гостевой программы компилятором оптимизирован,
программный код полученный в результате двоичной трансляции улучшается
за счет осуществления машинно-независимой оптимизации. Это связано с тем,
что гостевая программа может компилировать процедуры для одной
архитектуры и в тоже время выполняться после динамической трансляции.