?

Log in

No account? Create an account

Применение систем двоичной трансляции для обеспечения совместимости аппаратных, программных платформ
svoinov

Воинов С.Б.

Научный руководитель: проф. Авдошин С.М.

ЗАО «Интел А/О»,

121614, Москва, ул. Крылатская 17 корпус 4,

тел.: +7(495)641-4500, E-mail: sergey.voinov@intel.com

 

С появлением новых аппаратных платформ возникает проблема обеспечения их совместимости с существующим программным обеспечением (ПО). Проблема совместимости также возникает и с появлением нового ПО. Решение проблемы предполагает возможность запуска существующего ПО на новых платформах и нового ПО на старых платформах. Данная проблема может быть решена несколькими способами:

·         Изменение исходного кода ПО (с его последующей перекомпиляцией) для адаптации его к новой или старой аппаратной платформе.

·         Перекомпиляция исходного кода портируемого ПО без изменения самого исходного кода.

·         Включение в новую аппаратную платформу необходимой поддержки для выполнения старого ПО.

·         Использование системы двоичной трансляции для прямого запуска несовместимого ПО без какого-либо изменения исходного кода или перекомпиляции.

Первые два способа обладают очевидными недостатками: требуется наличие исходного кода ПО, что далеко не всегда возможно. Третий способ предполагает использование существенных аппаратных ресурсов для обеспечения обратной совместимости. Так, например, современные процессоры Intel семейства x86 обеспечивают обратную совместимость со всеми предыдущими моделями процессоров этого семейства (вплоть до Intel 8086), что требует при разработке нового процессора учитывать все особенности старых моделей.

Применение систем двоичной трансляции для решения проблем совместимости является альтернативным вариантом решения, свободным от описанных выше недостатков. Не смотря на то, что двоичная трансляция появилась достаточно давно (в середине 80-х годов 20 века), в настоящее время отсутствуют какие-либо универсальные системы, предназначенные для двоичной трансляции ПО.

Суть двоичной трансляции состоит в анализе двоичного кода исходной платформы и его трансляции в двоичный код целевой платформы (по аналогии с Just-in-time компилятором Java) с точным сохранением семантики кода. Примерами таких систем могут являться:

  • система двоичной трансляции уровня приложений IA32 Execution Layer, применяемая для запуска x86-приложений на платформах Intel Itanium;
  • система двоичной трансляции системы уровня, применяемая в платформах на основе отечественного процессора Эльбрус-3.

Преимуществом использования систем двоичной трансляции для решения проблемы совместимости является отсутствие необходимости в какой-либо модификации ПО.

К недостаткам систем двоичной трансляции можно отнести уменьшение производительности за счёт использования трансляции в процессе работы, а также (в некоторых случаях) наличие дополнительной аппаратной поддержки, хотя и не такой сложной, как это могло быть в случае полностью аппаратного способа решения проблемы совместимости.

Для обеспечения совместимости оптимизированного под новые платформы ПО со старыми платформами также может быть разработана соответствующая система двоичной трансляции (как правило, уровня приложения). В настоящее время в российском отделении компании Intel Corporation ведутся разработки системы, которая позволила бы приложениям, оптимизированным для использования нового расширения команд SIMD, быть использованным на более старых аппаратных платформах без такого расширения.

В докладе более подробно рассматриваются различные проблемы построения систем двоичной трансляции и особенности их применения.

Диссертация, введение.
svoinov
Компьютерная графика как инструмент моделирования и визуализации научных данных появилась относительно недавно (начиная примерно с середины 60-х годов 20 века). Ее развитие было в первую очередь тесно связано с потребностью в наглядном представлении математических моделей и обуславливалось ростом мощностей электронных вычислительных машин. Однако последние два десятка лет в компьютерной графике бурно развивается отрасль игровой индустрии и симуляции. Современная компьютерная графика обладает огромным набором возможностей по визуализации фотореалистичных изображений не только в отложенных заданиях, но и в режиме реального времени. Последнее особенно важно для компьютерных игр, симуляторов и различного рода систем с интерактивной анимацией. Развитие компьютерной графики как прикладной науки внесло вклад не только в научный фонд различных алгоритмов и математических моделей, но и способствовало развитию таких технологий, как изготовление микропроцессоров для персональных компьютеров, разработка новых моделей графических ускорителей и систем виртуальной реальности. Не смотря на свой прикладной характер, компьютерная графика опирается на множество других прикладных и фундаментальных наук, таких как дискретная математика, цифровая обработка сигналов, физика, теория цепей и т.д.

Возможности современной компьютерной графики действительно поражают. Например, уже сейчас возможно построение и визуализация целой вселенной, состоящей из галактик и планет, почти в режиме реального времени. А методы процедурной генерации ландшафтов, растительности, текстур и эффектов позволяют придать сцене поистине потрясающую реалистичность и интерактивность. Большинство современных кинофильмов используют возможности компьютерной графики для полной или частичной проработки эпизодов. Некоторые фильмы целиком «сняты» на программном обеспечении компьютерной графики.

Как и во всем процессе развития компьютерной графики, в настоящее время остаются актуальными две основных проблемы: повышение реалистичности получаемых изображений и моделей и повышение быстродействия алгоритмов для обеспечения возможности строить эти модели и изображения в режиме реального времени.

Целью данной диссертационной работы является частичное решение этих проблем путем разработки новых математических моделей и алгоритмов на их основе. При этом особый акцент делается на средства цифровой обработки сигналов, призванные помочь в решении поставленных задач.

Для того чтобы показать цели и структуру данной диссертационной работы, рассмотрим класс задач, связанных с цифровой обработкой сигналов (ЦОС) и компьютерной графикой (КГ).

Цифровая обработка сигналов является одной из наиболее мощных и перспективных технологий, определяющей развитие науки и техники в XXI веке. На настоящий момент при помощи ЦОС было осуществлено множество революционных изменений в таких областях как телекоммуникации, медицина, радиолокация, высококачественное воспроизведение музыки, нефть и газ. В каждой из этих областей используются сложные алгоритмы ЦОС со своими собственными математическими методами и специальными приемами. Использование ЦОС включает в себя изучение общих концепций и существующих алгоритмов, а также разработку и исследование новых алгоритмов. В данной работе будет показана связь ЦОС с компьютерной графикой, как одной из перспективных областей, где может быть применена ЦОС.

Так же как и КГ, ЦОС зародилась относительно недавно – в середине 60-х начале 70-х годов 20 века. Выделение ЦОС в отдельную отрасль науки было связано прежде в сего с появлением цифровых компьютеров. ЦОС тесно связана со следующими науками:

  • аналоговая электроника;
  • цифровая электроника;
  • теория принятия решений;
  • аналоговая обработка сигналов;
  • теория вероятностей и математическая статистика;
  • теория чисел;
  • теория систем.

 

Так, на заре своего появления ЦОС выделилась как дальнейшее развитие аналоговой обработки сигналов. При этом в ЦОС начали применяться цифровые методы обработки аналоговых сигналов.

            В настоящее время большинство технологий ЦОС реализовано с использованием микропроцессоров, как специальных процессоров ЦОС, так и более привычных, используемых в ПК, карманных компьютерах, мобильных телефонах и т.д. Таким образом, почти все существующие алгоритмы ЦОС реализованы в виде специального программного обеспечения.

Как и любая информационная система, информационная система, использующая технологии и алгоритмы ЦОС предназначена для получения, хранения и обработки информации. Большое число алгоритмов ЦОС направлено именно на получение информации при цифровой обработке аналоговых сигналов. Это связано с необходимостью получения адекватного (для конкретной задачи) представления аналогового сигнала в цифровой форме. Хранение оцифрованных сигналов осуществляется на цифровых носителях. Большинство алгоритмов ЦОС, как следует из названия этой отрасли науки, направлено именно на обработку информации. При этом в настоящее время ЦОС используется, в основном, для обработки одномерных и двумерных сигналов. Примерами одномерных сигналов могут служить звуковые сигналы, радиоволны и различные аналоговые сигналы со специальной семантикой (например, сигналы, поступающие от медицинских датчиков). Обработка двумерных сигналов, в основном, представляет собой обработку изображений. Обрабатываемые изображения могут носить самый различный смысл, например, изображения могут быть снимками, полученными при помощи систем компьютерной томографии или картами высот некоторой местности.

Использование ЦОС для обработки изображений может быть особенно актуальным в КГ, т.к. на определенном этапе работы системы, использующей технологии и алгоритмы КГ, информация представляется именно в виде изображения. Это может быть изображения, полученное при визуализации некоторой трехмерной сцены, текстура или карта высот.

Компьютерная графика, как прикладная наука, обычно рассматривается в качестве инструмента моделирования и визуализации. КГ занимается моделированием, обработкой, хранением и отображением различных сущностей, которые в конечном итоге могут быть представлены в графической форме, понятной человеку. При этом различают растровую и векторную графику.

Основным объектом растровой графики является растр, т.е. прямоугольная сетка элементов, называемых пикселями. Каждому пикселю присущи некоторые атрибуты. В большинстве случаев это цвет пикселя. Таким образом, изображение в растровой графике представляется в виде двумерного дискретного сигнала. Это вполне естественная аппроксимация аналогового изображения, получаемого при помощи таких средств как фотоаппарат или видеокамера. Примерами обработки растровых изображений могут являться: масштабирование, изменение яркости и контраста, применение сглаживающих или выделяющих края фильтров, сжатие изображений.

Объектами векторной графики являются различные геометрические примитивы, такие как точки, линии, кривые и поверхности. По своей сути такие объекты не являются дискретными, однако в процессе их представления при помощи чисел конечной разрядности в компьютере, происходит некоторая потеря точности параметров этих объектов. Векторная графика представляет собой мощный инструмент моделирования не только в научных исследованиях, но и в различного рода симуляторах и компьютерных играх. В последних двух случаях векторная графика позволяет воссоздать природное и искусственное окружение человека в виде набора описанных геометрических примитивов, а также использовать трансформацию этого окружения, позволяя получить различные эффекты анимации.

Связь растровой и векторной графики возникает в процессе визуализации объектов векторной графики. Визуализация здесь представляет собой перевод объектов векторной графики в наглядную форму, понятную человеку. Таким образом происходит растеризация объектов векторной графики, после чего они могут быть отображены, например, на экране монитора.

На рисунке 1 показана типичная структура информационной системы, использующей алгоритмы растровой или векторной графики. Связь систем, использующих растровую и векторную графику представлена на рисунке 2.

Рис. 1. Структура системы, использующей алгоритмы компьютерной графики.

 

            Рассмотрим функции каждой подсистемы.

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

            Подсистема хранения предназначена для хранения исходного и обработанного объекта, представленного в цифровой форме. В случае растровой графики подсистема хранения использует различные алгоритмы сжатия изображений. В случае векторной графики используются алгоритмы сжатия потока двоичных данных и специальные алгоритмы, эффективные для объектов векторной графики.

            Подсистема генерации может отсутствовать. Если она присутствует, то она выполняет функции формирования набора объектов растровой или векторной графики по заданным критериям. В данной диссертационной работе этой подсистеме будет уделено особое внимание, т.к. в настоящее время алгоритмы процедурной генерации различных текстур и ландшафтов являются весьма популярными. Использование подсистемы генерации позволяет существенно экономить ресурс физической памяти за счет формирования данных, необходимых для системы обработки в процессе работы всей системы. Данные, получаемые от системы генерации, поступают в подсистему обработки, а также могут быть сохранены при помощи подсистемы хранения и использованы в дальнейшем.

            Подсистема обработки является центральной в информационной системе, использующей технологии и алгоритмы КГ. В этой подсистеме происходят различные преобразования объектов растровой или векторной графики по заданным параметрам для получения необходимого результата работы всей системы. Фактически, построение модели в случае использования данной системы в качестве инструмента моделирования осуществляется именно в подсистеме обработки. Для растровой графики данная подсистема осуществляет различные преобразования изображения, для векторной – преобразования геометрических примитивов. Результатом работы подсистемы обработки является преобразованное представление информации, полученной от подсистемы хранения или генерации. Результат обработки может быть сохранен в подсистеме хранения и использован в дальнейшем. Это показано обратной связью на рисунке. Также результат обработки может быть передан в подсистему отображения.

            Подсистема отображения осуществляет преобразование информации, полученной от подсистемы обработки, в графическую форму, понятную человеку. К таким подсистемам относятся, например, графические ускорители и мониторы. Однако современные графические ускорители обладают большим набором функций, позволяющим использовать их и в качестве части подсистемы обработки.

Отметим, что подсистемы оцифровки и отображения обычно используют алгоритмы растровой графики, в то время как подсистемы хранения, генерации и обработки могут использовать как алгоритмы векторной, так и алгоритмы растровой графики. Однако встречаются достаточно сложные системы, где подсистема оцифровки работает с векторной графикой. К таким системам можно отнести системы, строящие представление трехмерного физического объекта в виде модели, состоящей из геометрических примитивов. Подсистема отображения в большинстве случаев является растровой – растровый монитор или экран. Однако в специальных приложениях используются и векторные мониторы.

            Исследование подсистем оцифровки и отображения выходит за рамки данной диссертационной работы. В данной работе будут рассматриваться только подсистемы хранения, генерации и обработки. Т.е. будут рассмотрены алгоритмы хранения, формирования и обработки применительно к растровой и векторной графике.

Рис. 2. Связь системы векторной и растровой графики.

 

При связывании системы векторной графики и системы растровой графики в одну систему используется только подсистема отображения растровой графики. При этом подсистема отображения векторной графики отсутствует.

На рисунке 3 показана общая структура систем, исследуемых и разрабатываемых в данной диссертационной работе.


Рис. 3. Общая структура систем, исследуемых и разрабатываемых в данной диссертационной работе.

 

Рассмотрим некоторые особенности представленной структуры.

Подсистема растеризации осуществляет преобразование объектов векторной графики в объекты растровой графики. Это ключевая подсистема, связывающая системы векторной и растровой графики. Обычно в качестве подсистемы растеризации используется графический ускоритель или специальный программный модуль, осуществляющий растеризацию при помощи центрального микропроцессора. Исследование подсистемы растеризации выходит за рамки данной диссертационной работы, т.к. в работе рассматриваются только системы компьютерной графики, использующие в качестве подсистемы растеризации аппаратные графические ускорители.

Подсистема обработки растровой графики связана с подсистемой растеризации обратной связью. Это означает, что растровые данные, полученные системой растровой графики, повторно используются в процессе визуализации. Примером такого алгоритма может служить процедурная генерация текстур и карт освещенности.

ЦОС может быть использована в следующих подсистемах:

  • Подсистема генерации объектов векторной графики – в качестве различных алгоритмов генерации таких объектов, как ландшафты, сетки высот, растительность, трехмерные облака и т.д.
  • Подсистема хранения растровой графике – в качестве различных алгоритмов сжатия изображений.
  • Подсистема генерации растровой графики – в качестве различных алгоритмов генерации таких изображений как двумерные облака, текстуры и т.д.
  • Подсистема обработки растровой графики – в качестве различных алгоритмов обработки изображений.

 

Этапы, которые проходит графическая информация при обработке на описанной информационной ситеме следующие:

  1. формирование информации или ее выборка из подсистемы хранения;
  2. предварительная обработка векторной графики;
  3. растеризация;
  4. постобработка для растровой графики.

Первый этап используется обоими системами растровой и векторной графики.

            В данной диссертационной работе исследуются и разрабатываются элементы систем, осуществляющих получение, хранение, обработку и отображение рехмерных графических объектов. Результатом работы является графическая система, использующая существующие и новые алгоритмы компьютерной графики и цифровой обработки сигналов, примененные к задачам компьютерной графики. В работе исследуются следующие классы алгоритмов:

  1. Моделирование трехмерных изображений.
  2. Генерация реалистичных ландшафтов.
  3. Генерация эффектов (облака, дым и т.д.).
  4. Процедурная генерация текстур.
  5. Обработка растровых изображений.
  6. Алгоритмы сжатия изображений и объектов векторной графики.

 

Актуальность данной работы обусловлена потребностью современных приложений науки и моделирования, а также игровой индустрии в улучшении характеристик и повышении качества программных графических систем, выполняющих обработку объектов трехмерной графики.

Разработанная в рамках работы графическая система обладает достаточной степенью универсальности и рядом характеристик, позволяющих легко адаптировать ее к конкретной задаче моделирования и симуляции, а также в дальнейшем выполнять улучшение и развитие системы.

Новая классификация алгоритмов компьютерной графики
svoinov

Воинов С.Б.

Научный руководитель: проф. Авдошин С.М.

«МАТИ» – Российский Государственный Технологический Университет
им. К. Э. Циолковского,

121552, Москва, Оршанская 3, e-mail: svoinov@forte-it.ru

 

            Анализ современной литературы и электронных источников по тематике, связанной с компьютерной графикой, показал отсутствие четкой классификации алгоритмов компьютерной графики с учетом последних достижений в этом направлении.

            В данном тезисе сделана попытка составить краткую классификацию алгоритмов компьютерной графики с учетом не только последних теоретических достижений, но и с учетом прорыва в области аппаратной реализации алгоритмов.

            Используемые признаки классификации:

1.      по сложности:

1.1.  низкоуровневые – предназначенные для реализации графических примитивов;

1.2. высокоуровневые – алгоритмы удаления невидимых линий и поверхностей, алгоритмы оптимизации.

2.      по реализации:

2.1. реализуемые программно;

2.2. реализуемые аппаратно.

3.      по функциональному назначению:

3.1. алгоритмы рисования геометрических примитивов;

3.2. алгоритмы заливки граней;

3.3. алгоритмы удаления невидимых линий и поверхностей;

3.4. алгоритмы оптимизации;

3.5. алгоритмы текстурирования;

3.6. алгоритмы обработки вершин и пикселей выводимых треугольников (так называемые шейдеры – shaders);

3.7. алгоритмы трассировки лучей;

3.8. алгоритмы физического моделирования.

4.      по используемому математическому аппарату:

4.1. алгоритмы, использующие аппарат линейной алгебры;

4.2. алгоритмы, использующие нелинейные уравнения;

4.3. алгоритмы, использующие дифференциальное и интегральное исчисление;

4.4. алгоритмы, использующие преобразования и методы цифровой обработки сигналов.

4.5. эвристические алгоритмы.

5.      по асимптотической временной оценке сложности:

5.1. линейные, с оценкой O(n);

5.2. логарифмические, с оценкой O(n log n);

5.3. с оценкой хуже логарифмической – O(n2) и т.д.

6.      по поддержке современными графическими интерфейсами программирования:

6.1. поддерживаемые современными графическими API (GDI+, OpenGL, Direct3D, Cg);

6.2. неподдерживаемые современными графическими API.

7.      по области применения:

7.1. обработка плоских изображений;

7.2. построение реалистичных изображений;

7.3. геоинформационные системы (GIS);

7.4. системы компьютерного видения (computer vision);

7.5. физическое моделирование.

            Представленная краткая классификация представляет собой общие положения классификации, составленной в рамках диссертационной работы на тему «Разработка и исследование математических моделей алгоритмов цифровой обработки сигналов в задачах компьютерной графики». В дальнейшем предполагается использовать классификацию для исследования тех алгоритмов компьютерной графики, в которых можно применить алгоритмы и методы цифровой обработки сигналов.



Программа преобразования форматов звуковых файлов
svoinov

Воинов С. Б.

Научный руководитель: проф. Зыков А. К.

«МАТИ» - Российский Государственный Технологический Университет

им. К. Э. Циолковского, 121552, Москва, Оршанская 3, e-mail: hackmaster@mtu-net.ru

 

            В настоящее время для цифровой обработки звука могут быть использованы широко распространенные звуковые редакторы SoundForge и CoolEdit. Достоинством первого редактора, помимо широких возможностей обработки звука, является возможность качественного преобразования звуковых файлов из одного формата в другой. Достоинством второго редактора является возможность преобразования форматов звуковых файлов в пакетном режиме. Это означает, что можно задать сразу несколько файлов для преобразования, а не преобразовывать их по отдельности.

            Не смотря на достоинства звуковых редакторов SoundForge и CoolEdit, ни один из них не может выполнять качественное преобразование звуковых файлов из одного формата в другой в пакетном режиме. Целью создания представленной программы является возможность преобразования форматов звуковых файлов в пакетном режиме. При этом обеспечивается лучшее качество преобразования по сравнению со звуковым редактором CoolEdit и возможность пакетного преобразования форматов файлов, отсутствующих в звуковом редакторе SoundForge.

            Программа обеспечивает следующие возможности:

  • преобразование форматов WAV файлов;
  • преобразование в формат Dialogic ADPCM (VOX);
  • нормализация амплитуды звукового сигнала в процессе преобразования;
  • применение сглаживающего фильтра.

 

Программа была специально разработана для использования в области компьютерной телефонии. Программа успешно используется компанией Forte-IT и ее клиентами (BeeLine, МТС) в качестве средства формирования звуковых файлов с форматом, необходимым для работы систем компьютерной телефонии.

В программе предусмотрены следующие варианты преобразования форматов файлов:

  • WAV файл в WAV файл с заданным форматом;
  • VOX файл в WAV файл с заданным форматом;
  • WAV файл в VOX файл с заданной частотой дискретизации;
  • VOX файл в VOX файл с заданной частотой дискретизации.

 

В VOX файлах для хранения выборок используется адаптивная дифференциальная импульсно-кодовая модуляция (ADPCM), позволяющая сократить объем файла без заметного ухудшения качества звука.

            Для работы с VOX файлами реализован набор алгоритмов и проведена их оптимизация с использованием языка ассемблера 80386.

            В качестве стандартных средств для преобразования форматов WAV файлов в программе используется диспетчер аудиосжатия Windows (Windows ACM). ACM используется для преобразования формата WAV файла в формат с импульсно-кодовой модуляцией (PCM), который затем может быть использован для дальнейшего применения нормализации амплитуды и сглаживающего фильтра.

Программа предназначена для работы в операционных системах Windows 95/98/Me/2000/XP и не требует установки дополнительных компонентов. Программа написана в среде Borland C++Builder 6.0.



Применение простейших цифровых фильтров для обработки звука
svoinov
В настоящее время цифровая обработка звука получает все большее распространение. Это связано, в первую очередь, с разработкой новых технологий, позволяющих реализовать аппаратную поддержку цифровой обработки звука (например, MP3-плееры). Однако с ростом вычислительной мощности современных компьютеров, алгоритмы цифровой обработки звука становятся все более популярными и в виде программной реализации. Примером тому может служить широко распространенный программный MP3-плеер WinAmp, а также мощные звуковые редакторы SoundForge и CoolEdit.

Не смотря на растущую популярность, алгоритмы цифровой обработки звука достаточно сложны в реализации и опираются на математическую теорию. Наверняка каждому программисту, который работал со звуковыми редакторами наподобие SoudForge захотелось реализовать какой-нибудь цифровой фильтр в своей программе. Целью данной статьи как раз и является приблизить программиста к теме цифровой обработки звука и дать описание практически полезных алгоритмов и примеров их использования без строго теоретического обоснования.

Что же такое цифровой фильтр? Это просто некоторый алгоритм, который принимает на вход последовательность (массив) выборок, обрабатывает ее и выдает на выходе другую, обработанную последовательность выборок. Под выборками понимаются отсчеты оцифрованного звукового сигнала. Выборки могут быть получены в процессе оцифровки звука музыкальной картой, либо взяты из .WAV файла. Примером простейшего цифрового фильтра является фильтр нижних частот. Такой фильтр вырезает из звука все частоты выше заданной и пропускает все частоты ниже заданной.

Читать далее...

Применение программных эмуляторов процессоров семейства Intel x86
svoinov

С. Б. Воинов

Научный руководитель: проф. С. М. Авдошин

«МАТИ» - Российский Государственный Технологический Университет

им. К. Э. Циолковского, 121552, Москва, Оршанская 3, e-mail: shackmaster@mail.ru

 

            С ростом вычислительной мощности современных компьютеров возникает задача построения специального рода программного обеспечения, предназначенного для эмуляции работы каких-либо аппаратных средств. Эмуляция работы аппаратных средств позволяет выполнять функции отсутствующего у пользователя устройства, причём эти функции выполняются программно, а не аппаратно. Не смотря на то, что можно эмулировать многие функции, поддерживаемые аппаратно, программная эмуляция требует значительной вычислительной мощности процессора и, как правило, уступает по скорости выполнения функций эмулируемому устройству. С одной стороны, программная эмуляция может использоваться для поддержки аппаратно реализуемых функций устройства, совместимого с той аппаратной платформой, для которой написан эмулятор. Примером этому может служить программная эмуляция функций 3D-ускорителей в API Direct3D. С другой стороны, иногда возникает необходимость выполнения на одной аппаратной платформе функций другой аппаратной платформы, несовместимой с первой. Примером может являться эмулятор процессора PowerPC, написанный для семейства процессоров Intel x86.

            Широко распространены программные эмуляторы различных игровых платформ, например Sega, Nintendo, PlayStation и т. д. Также существуют эмуляторы устаревших микрокомпьютеров, таких как ZX Spectrum, Commodore 64, Радио 86 РК и т. д. Последняя группа эмуляторов представляет, в основном, академический интерес с точки зрения изучения системы команд и аппаратных особенностей микрокомпьютеров. Однако в настоящее время отсутствуют полностью функциональные программные эмуляторы процессоров семейства Intel x86, написанные под эту же аппаратную платформу и позволяющие помимо системы команд эмулировать функции таких устройств IBM PC как контроллер прерываний, контроллер прямого доступа к памяти и других системных устройств. Использование такого рода эмуляторов представляет большой научный интерес.

            Подобные эмуляторы могли бы использоваться для следующих целей:

  • Детальное изучение системы команд процессоров семейства Intel x86 и особенностей её применения.
  • Изучение неоднозначности системы команд.
  • Знакомство с защищённым режимом работы процессора 80386 без дополнительных неудобств, связанных с необходимостью создания соответствующего программного окружения.
  • Реализация прототипов модулей программной защиты информации, защиты от дизассемблирования и отладки.
  • Снятие программных защит информации.
  • Исследования в области вирусологии без опасности повредить программно-аппаратные средства PC.
  • Изучение работы и протоколов взаимодействия аппаратных и программных средств.

В соответствии с перечисленными целями, был проведён анализ системы команд процессора 8086 и начата разработка программного эмулятора, функционирующего в среде Windows 95/98/Me/2000.



Разработка программных эмуляторов процессоров семейства Intel x86
svoinov

С. Б. Воинов

«МАТИ» - Российский Государственный Технологический Университет

им. К. Э. Циолковского, Россия.

 

            В настоящее время отсутствуют полностью функциональные программные эмуляторы процессоров семейства Intel x86, написанные под эту же аппаратную платформу и позволяющие помимо системы команд эмулировать функции таких устройств IBM PC как контроллер прерываний, контроллер прямого доступа к памяти и других системных устройств. Использование такого рода эмуляторов представляет большой научный интерес.

            Подобные эмуляторы могли бы использоваться для следующих целей:

·        Детальное изучение системы команд процессоров семейства Intel x86 и особенностей её применения.

·        Изучение неоднозначности системы команд.

·        Знакомство с защищённым режимом работы процессора 80386 без дополнительных неудобств, связанных с необходимостью создания соответствующего программного окружения.

·        Реализация прототипов модулей программной защиты информации, защиты от дизассемблирования и отладки.

·        Снятие программных защит информации.

·        Исследования в области вирусологии без опасности повредить программно-аппаратные средства PC.

·        Изучение работы и протоколов взаимодействия аппаратных и программных средств.

При разработке программных эмуляторов процессоров к ним должны предъявляться требования, исходя из общих параметров эмуляторов. В общем случае программные эмуляторы процессоров характеризуются следующими основными параметрами:

1.            Программная совместимость, т. е. насколько полностью эмулятором поддерживается система команд эмулируемого процессора. К программной совместимости можно также отнести особенности выполнения команд эмулятором и процессором. Например, процессор Intel 8086 выполняет с префиксом повторения только цепочечные команды (MOVS, LODS, STOS, CMPS, SCAS). Другие команды, например REP MOV AX, CX выполняются только один раз, в независимости от используемого префикса повторения.

2.            Быстродействие по сравнению с эмулируемым процессором. Как правило, по скорости выполнения различных операций процессор превосходит эмулятор. Однако это в большинстве случаев справедливо, когда эмулируемый процессор и процессор, для которого написан эмулятор, имеют быстродействие одного порядка. С учётом вычислительной мощности современных процессоров семейства Intel x86 (скажем, Pentium III, Pentium 4) эмуляция функций процессора Intel 8086 будет выполняться не только с такой же скоростью, как и у самого 8086, но даже быстрее. Быстродействие конкретного эмулятора зависит не только от аппаратной конфигурации компьютера, на котором он выполняется, но и во многом от того, как он написан.

3.            Поддержка системных и периферийных устройств. Сам по себе эмулятор процессора не может быть использован для широкого круга задач, перечисленных выше. Необходима поддержка системных и некоторых периферийных устройств для исследования работы существующих программ и для изучения протоколов взаимодействия между аппаратными и программными средствами. Применительно к процессорам семейства Intel x86 желательна поддержка эмулятором таких устройств как контроллер прерываний, контроллер прямого доступа к памяти, системный таймер, некоторые периферийные микросхемы (например, контроллер клавиатуры) и другие.

4.            Поддержка устройств хранения информации. В большинстве случаев работа с эмулятором сопровождается загрузкой в память различных программ. Не смотря на то, что программы могут быть загружены в память эмулятора «вручную» (через пользовательский интерфейс эмулятора), они могут функционировать неверно из-за отсутствия операционной системы, применяемой совместно с эмулируемым процессором. Можно, конечно, эмулировать функции операционной системы (например, для DOS можно эмулировать функции прерывания INT 21H), но подобная задача значительно осложняет разработку эмулятора, и основное время фактически уходит на написание операционной системы. Для преодоления этой сложности можно написать эмулятор функций для работы с жёстким или гибким дисками (например, для IBM PC можно написать эмулятор прерывания BIOS INT 13H для работы с дисками на низком уровне). После написания такого рода эмулятора можно создать образ диска с уже установленной операционной системой и производить начальную загрузку эмулятора с этого диска.

5.            Интерфейс с пользователем. Обычно, эмулятор процессора имеет некоторый набор команд, позволяющий управлять им. К таким командам можно, например, отнести команды управления выполнением команд (приостановить/возобновить выполнение), команды загрузки и сохранения состояния эмулятора и т. д. Также эмуляторы часто снабжаются средствами для редактирования и просмотра памяти эмулятора.



Применение цифровой обработки сигналов в системах телекоммуникаций
svoinov
В настоящее время повышается роль цифровой обработки сигналов в различных приложениях теории автоматизированных систем управления и теории связи. Это связано в первую очередь с постоянным повышением производительности и удешевлением современных средств вычислительной техники, а также с более широким и повсеместным использованием этих средств для решения актуальных научно-технических и производственных задач. Переход от аналоговой обработки сигналов к цифровой диктуется возросшими потребностями в применении компьютерных систем для передачи и обработки информации. Различные, порой довольно сложные, способы представления, хранения и обработки информации не могут быть реализованы с использованием аналоговой техники не только из-за представления информации в цифровой форме, но и из-за трудности обработки такой информации аналоговыми средствами. Это относится к различным областям применения цифровых систем.

Особенно широко цифровая обработка информации может использоваться в системах телекоммуникаций. Она может использоваться при кодировании и сжатии информации перед её передачей, восстановления принятой и искажённой информации. Также цифровая обработка эффективна при сокращении избыточности (сжатии) информации.

Преимущества цифровой обработки информации заключаются не только в невысокой стоимости соответствующих систем и разнообразных областях применения. В большинстве случаев результаты, полученные путём применения систем, использующих цифровую обработку информации, превосходят результаты применения аналогичных систем, использующих аналоговую обработку. Это выражается в высокой точности и надёжности систем с цифровой обработкой информации.

В данном реферате будут рассмотрены некоторые основные концепции теории цифровой обработки сигналов применительно к системам телекоммуникаций в общих случаях.

Читать далее...

Быстродействующие аналого-цифровые преобразователи
svoinov

Цифровая обработка сигналов в режиме реального времени требует для некоторых приложений высокого быстродействия аппаратных средств. Это быстродействие, как правило, выражается в достаточно высокой частоте дискретизации непрерывного сигнала (от сотен килогерц до сотен мегагерц). Примерами таких приложений могут являться:

  • цифровая обработка телевизионных сигналов;

  • измерение сигналов малой длительности или сигналов высокой частоты;

  • обработка информации от большого количества различных источников с аналоговым выходом;

  • быстродействующие автоматические системы управления и т. д.

Недостатком различных схем преобразования аналогового сигнала в цифровой код (АЦП времяимпульсного типа, АЦП кодоимпульсного типа и т. д.), разработанных ранее, является их низкое быстродействие, т. е. большая длительность цикла преобразования. Многие такие схемы преобразования успешно применяются в различной аппаратуре обработки звука и в других областях, не требующих высоких частот дискретизации (как правило, до 100 КГц). Однако для обработки "двумерных" сигналов (например, изображение) в реальном масштабе времени быстродействия этих систем недостаточно.

Далее будет рассмотрен один из возможных вариантов реализации быстродействующего аналого-цифрового преобразователя, частота дискретизации для которого может составлять несколько сотен мегагерц.

Сначала рассмотрим ключевой элемент подобного АЦП - аналоговый компаратор напряжения.

Аналоговый компаратор напряжения предназначен для сравнения измеряемого напряжения с образцовым (опорным) и выдачи результатов сравнения в цифровой форме. Результатами сравнения является логическая 1, если измеряемое напряжение больше опорного, и логический 0, если измеряемое напряжение меньше опорного. Подобный компаратор имеет два входа - один вход для подачи измеряемого напряжения, другой вход для подачи образцового напряжения. На выходе компаратора формируется напряжение, соответствующее логической 1 или 0 в зависимости от рзультатов сравнения. Опорное напряжение обычно является постоянным, в то время как измеряемое напряжение может быть переменным. Для повышения точности сравнения опорное напряжение должно быть сформировано из напряжения стабилизированного источника питания с высоким коэффициентом стабилизации. Основной технической характеристикой компаратора является его быстродействие, выражаемое в задержке появления выходного кода при подаче измеряемого и опорного напряжений. Для определения факторов, влияющих на быстродействие компаратора рассмотрим его возможную внутреннюю структуру (рис. 1).

Основным элементом компаратора по предложенной структуре является операционный усилитель (ОУ) с большим коэффициентом усиления. Коэффициент усиления, в основном, и определяет быстродействие компаратора. Также быстродействие компаратора зависит от характеристики ОУ, определяемой как время нарастания выходного напряжения (измеряется в вольтах на микросекунду). Этот фактор практически полностью зависит от технологического процесса изготовления ОУ и использованных в нём материалов. Рассмотрим каким образом коэффициент усиления ОУ компаратора влияет на быстродействие компаратора. Для этого рассмотрим сначала структуру и работу ОУ (рис. 2).

Как видно из схемы, ОУ состоит из дифференциального усилителя, усилителя мощности и источника тока для дифференциального усилителя. ОУ имеет два входа - инвертирующий и неинвертирующий. Сигналы с этих входов подаются на дифференциальный усилитель (ДУ). ДУ усиливает разностный сигнал, т. е. сигнал, получаемый вычитанием из сигнала на неинвертирующем входе сигнала на инвертирующем входе. Для питания эмиттерных цепей ДУ служит источник тока, который преобразует напряжение питания ОУ в ток постоянного значения (т. е. в идеале при подключении к источнику тока нагрузки с любым активным сопротивлением, ток через нагрузку будет всегда иметь одно и то же значение). Усиленный ДУ разностный сигнал поступает на усилитель мощности, где сигнал усиливается по амплитуде. Также, усилитель мощности согласует выход ОУ с подключённой к ОУ нагрузкой.

Пусть теперь на инвертирующий вход ОУ подано опорное напряжение, а на неинвертирующий вход подано измеряемое напряжение. Пусть ОУ также обладает каким либо коэффициентом усиления k разностного сигнала. Напряжение на выходе ОУ равно: Uвых = k * (Uизм - Uоп), где Uизм - измеряемое напряжение, Uоп - опорное напряжение. Рассмотрим три случая:

  1. Измеряемое напряжение больше опорного. В этом случае разностное напряжение, усиливаемое ДУ, будет положительным. Напряжение на выходе ОУ также будет положительным.

  2. Измеряемое напряжение меньше опорного. В этом случае разностное напряжение, усиливаемое ДУ, будет отрицательным. Напряжение на выходе ОУ также будет отрицательным.

  3. Измеряемое напряжение равно опорному. Усиливаемое ДУ разностное напряжение равно 0. Напряжение на выходе ОУ также равно 0.

Таким образом видно, что на выходе ОУ будет ненулевое напряжение, только когда измеряемое напряжение не равно опорному. Рассмотрим подробнее первые два случая. Дело в том, что напряжение на выходе ОУ не может превышать напряжение питания ОУ. Напряжение на выходе ОУ всегда на определённое значение меньше напряжения питания. Например, питание ОУ двуполярное ±15В. Тогда напряжение на выходе ОУ никогда не превышает, скажем, ±12В. Если теперь разностное напряжение превысит максимальное выходное напряжение ОУ в k раз, то усиления разностного напряжения происходить не будет - выходные каскады усилителя мощности войдут в состояние насыщения и дальнейшее повышение разностного напряжения не приведёт к изменению выходного напряжения.

Пусть теперь измеряемое напряжение изменяется линейно (на отдельных участках) от значения опорного напряжения и выше. В этом случае выходное напряжение ОУ также изменяется по линейному закону до значения максимального выходного напряжения (рис. 3). Коэффициент усиления ОУ на рисунке принят равным 4. Наклон функции выходного напряжения в k раз превышает наклон функции разностного напряжения (производная выходного напряжения в k раз больше производной разностного напряжения). Чем больше коэффициент усиления k, тем быстрее выходное напряжение достигнет максимума. Если считать, что результат сравнения получен тогда, когда достигнуто максимальное напряжение на выходе ОУ, то получаем, что точность и быстродействие компаратора зависят главным образом от коэффициента усиления ОУ. Если рассматривать идеальный ОУ, то его коэффициент усиления равен бесконечности, а компаратор, собранный на таком ОУ, обладает бесконечно высоким быстродействием.

Быстродействие компаратора также ограничивается полосой пропускания его внутренних схем. Так как идеальный прямоугольный импульс (нарастание выходного напряжение ОУ от 0 до максимума за бесконечно малое время) имеет бесконечный спектр, а полоса пропускания внутренних схем компаратора ограничена, фронты прямоугольного импульса сглаживаются, снижая быстродействие компаратора.

Возвращаясь к структуре компаратора, можно отметить, что преобразователь уровня выполняет следующие основные функции:

  1. игнорирует отрицательное напряжение на выходе ОУ, приравнивая его к 0;

  2. преобразует максимальное положительное напряжение на выходе ОУ к напряжению логической 1 используемого типа логики;

  3. обеспечивает на выходе компаратора требуемый коэффициент разветвления по выходу.

Рассмотрим теперь, собственно, быстродействующий АЦП с использованием описанных выше аналоговых компараторов напряжения. Структурная схема такого АЦП показана на рис. 4.

Количество компараторов в АЦП равно 2^n - 1, где n - количество разрядов выходного кода. Компараторы на входе АЦП формируют на своих выходах так называемый "термометорный код" - единицы на выходах компараторов как бы формируют столбик ртути термометра для входного напряжения АЦП. Единицы появляются на выходах компараторов начиная с нижнего и заканчивая тем, для которого опорное напряжение больше или равно измеряемому. Резисторный делитель напряжения формирует необходимые опорные напряжения для каждого компаратора. Опорное напряжение для конкретного компаратора представляет собой сумму N уровней квантования, где N - номер компаратора, считая снизу. Таким образом, каждый компаратор определяет больше ли входное напряжение суммы уровней квантования для этого компаратора. Если оно больше, то на выходе компаратора устанавливается логическая 1, в противном случае - 0. Если на выходе некоторого компаратора установилась логическая 1, то все компараторы ниже этого также имеют единицы на своих выходах. Это объясняется тем, что опорное напряжения для компараторов, расположенных по схеме ниже данного, ниже опорного напряжения данного компаратора. Опорное напряжение компаратора, расположенного прямо под заданным компаратором на схеме, ниже на один уровень квантования опорного напряжения заданного компаратора.

Нижняя точка резисторного делителя напряжения подключена к минусу источника питания, а верхняя точка - к плюсу. При подобной организации АЦП имеется возможность преобразовывать и отрицательные и положительные значения напряжения в диапазоне от минуса источника питания до плюса источника питания. Если применить каскадирование АЦП (рис. 5), то суммарное количество разрядов на выходах каскадируемых АЦП повышается. Цепочка резисторов в делителе, начиная снизу, определяет сумму уровней квантования для формирования опорного напряжения конкретного АЦП. Достоинством применяемого резисторного делителя напряжения является то, что все резисторы в нём имеют одинаковое сопротивление, что легко реализовать в корпусе микросхемы АЦП. Сопротивление каждого резистора делителя зависит, в основном, от входного сопротивления АЦП и требований, предъявляемых к энергопотреблению АЦП. Питание резисторного делителя напряжения рекомендуется производить от стабилизированного источника питания, что повышает точность преобразования АЦП.

Регистр-защёлка, показанный на схеме, выполняет процесс сэмплирования для входного сигнала АЦП. На регистр подаются синхроимпульсы с частотой равной частоте дискретизации. По заднему фронту каждого импульса регистр запоминает состояние выходов компараторов до прихода следующего синхроимпульса и выдаёт это состояние на выход.

Блок декодирующей логики предназначен для преобразования цифрового кода на выходах компараторов в двоичный цифровой код на выходе АЦП. Существует несколько подходов к проблеме такого преобразования. Для понимания проблемы преобразования рассмотрим особенности работы блока компараторов на входе АЦП.

При работе АЦП могут возникнуть следующие ситуации в блоке компараторов:

  1. На низких частотах выходное напряжение какого-либо компаратора может оказаться в диапазоне между 0 и 1 (неопределённое состояние), что может быть ошибочно воспринято регистром-защёлкой за 0 (вместо 1) или за 1 (вместо 0). Это приводит к погрешности преобразования напряжения в код. При использовании логики с прямым декодированием погрешность может достигнуть огромных значений. Например, 128-й компаратор для такого типа логики определяет значение старшего значащего бита в 8-ми разрядном выходном коде АЦП. При появлении ошибочного значения на выходе этого компаратора вместо, например, кода 01111111 на выходе АЦП появится код 11111111. Если в декодирующей логике используется преобразование с использованием кода Грэя, то значение ошибки на выходе АЦП не превышает веса младшего разряда выходного кода. Как правило, вместо использования кода Грэя в таких АЦП используется псевдо-код Грэя.

  2. На высоких частотах задержки сравнения измеряемого и опорного напряжений для разных компараторов могут быть различными. Это также приводит к записи ошибочной информации в регистр-защёлку.

Для устранения первой проблемы блок декодирующей логики должен учитывать "истинный" вес разряда регистра-защёлки как вес младшего разряда выходного кода АЦП. Тогда при ошибочном значении разряда на выходе регистра-защёлки ошибка преобразования будет равна весу младшего разряда выходного кода АЦП. Для уменьшения вероятности появления на выходе компаратора неопределённого значения требуется повысить коэффициент усиления ОУ компаратора.

Для устранения второй проблемы требуется правильно рассчитать длительность синхронизирующих импульсов, поступающих на регистр-защёлку. Эта длительность может не на много превышать максимально возможную задержку сравнения компаратора. При этом нужно найти компромисс между длительностью синхроимпульса и быстродействием АЦП.

Опциональный регистр-защёлка на выходе АЦП служит для запоминания выходного кода АЦП в промежутки между командами преобразования (синхроимпульсами). Этот регистр также может служить для выполнения АЦП некоторых преобразований над своим выходным кодом.

Рассмотрим теперь возможную схему включения АЦП (рис. 6). Пусть требуется записать данные на выходе АЦП в некоторую буферную память. Проблема, однако, заключается в том, что быстродействие АЦП может превышать быстродействие памяти или частота дискретизации АЦП может превышать тактовую частоту памяти. В этом случае можно составить блок памяти из нескольких банков. Тактовая частота для блока памяти с подобной организацией может быть ниже частоты дискретизации АЦП в то количество раз, сколько банков имеется в таком блоке памяти. На рисунке показан блок памяти, состоящий из двух банков.

На схеме также показан фильтр на входе АЦП. Фильтр предназначен для ослабления частот спектра входного сигнала, лежащих выше половины частоты дискретизации. Это нужно для выполнения условий теоремы Котельникова и для предотвращения искажений выходного кода АЦП, происходящих в результате аналого-цифрового преобразования частот выше половины частоты дискретизации. Параметры фильтра следует выбирать с учётом внутренней ёмкости АЦП по входу.

Масштабирующий усилитель, показанный на схеме, приводит диапазон значений входного напряжения системы к диапазону напряжений, допускаемому АЦП ("масштабирует" напряжение).