Эмуляция компьютера на FPGA Cyclone IV
Секция: Технические науки
XXVIII Студенческая международная научно-практическая конференция «Технические и математические науки. Студенческий научный форум»
Эмуляция компьютера на FPGA Cyclone IV
Аннотация. Как известно эмуляция в виде программного обеспечения является преобладающим методом для инженеров, чтобы оценить возможности исследуемых микропроцессоров и встраиваемых систем. Существует три основных критерия оценки модели с помощью программных средств: скорость моделирования, точность модели и полнота модели. Возрастающая сложность процессора и тенденция иметь все большее количество процессоров на чипе создают нагрузку на симуляторы для достижения всех упомянутых критериев, включая точную фиксацию процессов в ОС. Таким образом основной задачей в нашей работе является эксперименты-прототипирование с помощью системы эмуляции и анализ результатов описываемых экспериментов, которая удовлетворяет всем трем критерия. Система представляет собой плату с распаянными на ней FPGA, ОЗУ, ПЗУ, часами реального времени, микросхемы ЦАП и разъемов для подключения монитора, клавиатуры и манипулятора мыши. За основу системы выбрана FPGA Cyclone IV от в фирмы ALTERA. Которая благодаря достаточному количеству логических ячеек позволяет симулировать не только отдельный процессор, но и остальные компоненты компьютера в целом. Поэтому можно применять архитектурные изменения к процессору и оценивать их влияние на всю систему. Мы используем эту систему эмуляции на основе ПЛИС для подтверждения возможностей эмуляции компьютера на FPGA. В работе была обоснована возможность эмуляции компьютера на FPGA и её способность запускать реальные не урезанные операционные системы. Новизной этого проекта можно считать то, что в отличает от остальных подобных проектов, разработанная нами система позволяет эмулировать полноценный персональный компьютер с процессором х86 архитектуры, на основе которой можно с эмулировать более современные компьютеры с процессорами. Например: Intel Atom или Intel Celeron. Однако для достижения подобных целей потребуется использовать более развитую ПЛИС, опираясь на методику предложенную в данной работе
1. ВВЕДЕНИЕ
Исследования в области компьютерной архитектуры традиционно используют программное обеспечение для эмуляции одноядерного процессора такого как SimpleScalar [13]. Как ранее так и сегодня совершенствование архитектуры процессоров и иерархий памяти представляют из себя актуальную задачу. Кроме того в настоящее время имеются дополнительные требования к оптимизации по всему системному стеку (архитектура процессора, набор команд, драйверы устройств, операционная система и приложения) с несколькими процессорами. Однако выше упомянутые исследования на системном уровне сдерживаются некоторым противоречием между скоростью и детальностью моделирования программных и аппаратных компонентов и это противорече присуще программным симуляторам, традиционно используемым для инноваций в микропроцессорных системах. Field Programmable Gate Arrays (FPGA) рассматриваются как решение упомянутого противоречия и нацелены на развитие новой исследовательской инфраструктуры системного стека, которая моделирует полную систему (процессор, видеокарта, звуковая карта, северный и южный мосты, сетевой модем и т.д.) [5]. Гибкость, скорость (как времени разработки, так и времени моделирования) и достаточная емкость FPGA позволяют разработчикам эмулировать микропроцессорные системы и в целом компьютеры. Однако одной из самых сложных проблем, стоящих перед разработкой системы эмуляции на FPGA, является совместимость с существующими операционными системами. Производители разработали для FPGA процессорные ядера, которые очень малы и просты, но имеют ограниченную поддержку даже встраиваемых операционных систем типа Barebone. Кроме того, с целью запустить существующие двоичные файлы ОС, в том числе с закрытым исходным кодом, такие как Windows, заставляет разработчиков рассматривать двоичный перевод файлов ОС как решение задачи двоичного перевода [4]. Для простоты и удобства в данной работе мы эмулируем версию коммерческого настольного компьютера с процессором x86 на FPGA для запуска реальных операционных систем. Если быть более точным, мы заменили компьютер отладочной платой с распаянными на ней необходимыми компоненрами. Компоненты отладочной платы: FPGA, ОЗУ, ПЗУ, часы реального времени и некоторые другие микросхемы необходимы для подключения FPGA к периферийным устройствам ПК. На FPGA эмулируются следующие устройства:
- Pentium совместимы процессор работающий на частоте 50 МГц с 32кБ кэшем.
- IDE контроллер.
- SD-IDE преобразователь интерфейсов.
- Intel 8259 совместимый программируемых контроллеров прерывания
- Intel 8237 совместимый контроллер прямого доступа к памяти (DMA)
- Sound Blaster – звуковая карта
- Intel 8254 совместимый программируемого трёхканального таймера и счётчика
- Intel 8042 совместимый контроллер клавиатуры и мыши
- Стандартная VGA видеокарта
- 8250 UART - COM port
Важно подчеркнуть, что система эмуляции компьютера на базе FPGA дает нам возможность запускать на ПЛИС реальные операционные системы, такие как DOS, FreeDOS, linux и Windows, и взаимодействует с реальными периферийными устройствами. Возможность эмуляции ПК на базе FPGA предоставляет мощный инструмент для исследования и с учетом модификации более развитых микропроцессоров. Хотя предлагаемая нами система эмулятора не содержит современного микропроцессора, ее применимость к современным архитектурным исследованиям возрастает из-за расширенных возможностей моделирования.
2. Особенности систем эмуляции
Концепция использования FPGA для более быстрого и более точного исследования пространства разработки микропроцессоров в последнее время получила широкое распространение, что привело к увеличению количества публикаций по этой теме [8]. В некоторых из этих работ основное внимание уделяется ускорению времени моделирования путем разгрузки высоко детализированного моделирования ресурсов в FPGA, в то время как программный симулятор остается ядром среды эмуляции [2]. Другие исследования часто фокусируются на одной архитектурной новинке и построении моделей соответствующего аппаратного обеспечения на основе FPGA. Дополнительно к этим подходам, мы реализовали полноценный микропроцессор на FPGA, что позволяет использовать ЦП с различной архитектурой, например: х86, х64, ARM и другие. Большинство RTL-моделей микропроцессоров уже стали доступны для SPARC V8 , Niagara и PowerPC . Эти ядра могут быть синтезированы в ПЛИС и предназначены для облегчения проектирования, как видно из Jones и др. [10]. Наша платформа эмуляции также обеспечивает ускорение моделирования на несколько порядков по сравнению с программными эмуляторами, такими как Bochs и Qemu. Выше уже были перечислены некоторые существующие разработки в области встраиваемых систем, которые применяют надстройки к ядру на основе FPGA. Полезность вариации микроархитектуры приложений была замечена в [11], а ее автоматическая навигация - в [3]. Кроме того в такие ядра, был исследован эффект включения пользовательских инструкций [9]. В отличии от Amber (Conor Santifort), Cortex-M1 (ARM), Navre (Sébastien Bourdeauducq), LEON (ESA, Aeroflex Gaisler), OpenSPARCT1 (Sun)[12], ZPU (Zylin AS), HIPP[6] и других, ориентируемся на системах настольных компьютеров, взаимодействии периферийных устройств и операционной системы поддерживающей х86 архитектуру.
3. Эмуляционная система на основе FPGA
В наше работе среда эмуляции состоит из четырех основных компонентов:
- FPGA, на которой с эмулирован Pentium процессор и материнская плата ПК;
- аппаратное обеспечение, включая отладочную плату и периферийные устройства;
- программное обеспечение / операционная система;
- необходимое программное обеспечение для реализации проекта FPGA (Quartus II).
Опишем каждый из этих четырех пунктов более подробно.
3.1 Эмулируемое оборудование
- Процессор, используемый в нашей системе эмуляции – это воссозданная из описаний инструкций копия Pentium[7], выпущенного после i486 и до Pentium Pro в 1993 году по технологии 0.6 микрон, состоящий из 3,2 млн транзисторов и изначально работавший на частоте от 75 МГц. Это 32-разрядный процессор с 5-ступенчатый конвейерной обработкой, поддерживающий набор команд IA32, включающий в себя инструкции с плавающей запятой с использованием встроенного в конвейер модуля с плавающей запятой. Он оснащен кэш-памятью 1-го уровня 8 КБ для данных и инструкций.
- IDE контроллер жесткого и флоппи дисков, Intel 8259 совместимый программируемых контроллеров прерывания, Intel 8237 совместимый контроллер прямого доступа к памяти (DMA), Sound Blaster, Intel 8254 совместимый программируемый трёхканальный таймер и счётчик, Intel 8042 совместимый контроллер клавиатуры и мыши, стандартная VGA видеокарта, 8250 UART - COM port были воссозданы из технической документации адресного пространства распространяемой компанией BOCHS[1].
Отладочная плата содержит FPGA и необходимые микросхемы и разъемы для подключения периферийных устройств. К ним относятся SDRAM, flash для bios и vgabios, преобразователь TTL логических уровней для com порта и ЦАП для VGA. FPGA используемая для эмуляции представляет собой 90- нанометровое устройство Altera Cyclone IV. Более подробный анализ ресурсов Cyclone IV, используемых системой, будет дан в разделе 5.
Рисунок 1. Изображение системы эмулятора ПК на основе отладочной платы с FPGA, оснащенной разными аппаратными периферийными устройствами, под управлением Windows ME
3.2 Тестирование операционных систем
Задача нашей системы на основе FPGA - это способность загружать реальные операционные системы. Мы успешно установили неизмененные версии FreeDOS, DOS6.2, Windows 96, Windows 98, Windows ME, Windows 2000, Windows XP, Tiny core linux, Fedora Core 4, Red Hat9; процедура установки не отличалась от обычной настольной системы за исключением того что вместо установочного диска использовался его образ загруженный на SD карту. В нашем эксперименте загрузка Tiny core linux без графического интерфейса занимает примерно 10 секунд, а загрузка Windows XP занимает примерно 3 минуту. Стандартные приложения типа блокнота и paint запускаются за 4 секунды. Набор текста, безусловно, выполняется на полной скорости, поиск по текстовым файлам большого размера выполняется с заметной задержкой, которая приведена на рисунке 2.
Рисунок 2. График задержки во время поиска в текстовой файле
Таким образом, система идеально подходит в качестве настольного компьютера для очень простых неграфических приложений. А для белее сложных требуется заменить видеокарту, требования к которой зависят от приложения.
4. Описание и некоторые особенности SOFT процессоров
На сегодняшний день существует достаточно большой выбор SOFT процессоров для FPGA, как старых так и относительно новых, но в большинстве их основной отличительной чертой является RISC архитектура позволяющая в лучшем случае запустить на них Linux.
К данной системе на роль ЦП были протестированы следующие SOFT процессоры: Amber – процессор совместимый с ARM A23; VexRiscv – процессор с набором инструкций RV32I; а также ряд других процессоров таких как: LEON; OpenSPARC; CPU86; ZetCPU(x8086); OpenRISC, NIOSII. Пространство занимаемое данными SOFT процессорами представлено на рисунке 3.
Рисунок 3. Пространство, занимаемое различными SOFT процессорами
5. Распределение объема системы эмулятора
В данной работе нами был с эмулирован компьютер на базе Pentium совместимого процессора на языке VHDL для Cyclone IV E EP4CE115F29C7 и было замечено, что использовалось более половины ресурсов устройства; соответствующие данные приведены в таблице ниже, взятой после завершения синтеза высокого уровня и картирования модели в Quartus.
Таблица.
Использование ресурсов системой на Cyclone IV
Ресурс |
Используемое пространство |
% использования |
Total logic elements |
104731 |
91% |
Total combinational functions |
95179 |
83% |
Dedicated logic registers |
71273 |
62% |
В нашем эксперименте 91% логических элементов были использованы для хранения всей логики системы. Кроме того, было использовано 62% блоков регистров. Не смотря на то, что было для эмуляции задействовано больше половины ресурсов FPGA, при этом остается достаточно не задействованных элементов на FPGA для расширения возможностей ПК. На рисунке 4 показана разбивка каждого ресурса Cyclone IV, используемого различными блоками в системе.
Рисунок 4. Занимаемое пространство компонентами ПК
Как видим из графика (рисунок 4) Большинство логических элементов как и регистров использовались процессором, звуковой картой и контроллером жестких дисков. Логические элементы Cyclone IV использовались в основном FPU, ALU, генерацией адресов и кэшем, преобразовании интерфейсов SD-IDE и аудио кодеков. Вся иерархия памяти в эксперименте (включая кэши и интерфейс шины) потребовала приблизительно 30% логических элементов, предполагая, что даже при рассмотрении только логики почти половина чипа отводится для связи, оставляя другую половину для управления и фактических вычислений. Особого внимания заслуживает организация доступа к оперативной памяти и взаимосвязь между большим количеством модулей через DMA непосредственно являющимся основным фактором, влияющим как на скорость, так и на объем занимаемого пространства.
6. Заключение
Эмулятор ПК на основе FPGA - это мощный инструмент для исследования архитектурных усовершенствований процессоров и других компонентов для настольных ПК. Его способность быстро создавать прототипы архитектурных изменений и измерять их влияние на уровне приложений при наличии реальной операционной системы обеспечивает более реалистичный инструмент исследования без дорогостоящих затрат и длительных сроков проектирования, связанных с созданием на кремниевой основе.
Эмулируемая нами система показала возможности её использования для развития и достижения большей эффективности исходного компьютера путем оптимизации по всему системному стеку: архитектуре, драйверам устройств с установленными инструкциями, операционным системам и приложениям без ограничения времени моделирования программного симулятора. Для иллюстрации мы использовали ПЛИС с достаточно ограниченными функциями, однако используя белее развитые ПЛИС, позволит эмулировать современные мультипроцессорные и мультикомпьютерные системы на основе нашей методики.
Так же стоит отметить, что эмулируемая нами система показала отличные результаты по сравнению с аналогами эмулирующими полноценный компьютер. Так же в нашем эксперименте доказала возможность применения её в качестве полноценного компьютера. Данный подход к эмуляции дает возможность внедрить эту систему в учебный процесс. Что позволит увеличить качество специалистов в области инженерии.