MaverickCrunch
MaverickCrunch предназначенное — это ядро математического сопроцессора с плавающей запятой, для цифрового звука. Впервые он был представлен Cirrus Logic в июне 2000 года. [1] вместе с целочисленным процессором ARM9 20T в их интегральных схемах «система-на-кристалле» EP9302, EP9307, EP9312 и EP9315 с частотой 200 МГц. Измучен аппаратными ошибками и плохой поддержкой компилятора. [ нужна ссылка ] он редко использовался ни в одном из устройств на основе этих чипов, и 1 апреля 2008 года производство линейки продуктов было прекращено.

Функции
[ редактировать ]Сопроцессор имеет 16 64-битных регистров, которые можно использовать для 32- или 64-битных операций с целыми числами и числами с плавающей запятой, а его формат с плавающей запятой основан на стандарте IEEE-754 . Он имеет собственный набор команд, который выполняет сложение, вычитание, умножение, отрицание, абсолютное значение и сравнение с плавающей запятой, а также сложение, умножение и битовый сдвиг целых чисел. Он также имеет четыре 72-битных регистра, в которых могут выполняться 32-битные инструкции умножения и накопления и регистр состояния, а также преобразования между целыми числами и значениями с плавающей запятой и инструкции для перемещения данных между собой и регистрами ARM или памятью. .
Он работает параллельно с основным процессором, причем оба процессора получают инструкции из одного 32-битного потока команд. Таким образом, для его эффективного использования инструкции с целыми числами и с плавающей запятой должны чередоваться, чтобы оба процессора были заняты.
Аппаратные ошибки
[ редактировать ]Было выпущено пять версий кремния EP93xx: «D0» и «D1»/«E0»/«E1» и «E2», с серьезными изменениями в ядре MaverickCrunch между D0 и D1 для исправления худших ошибок. Все они имеют дюжину или более аппаратных ошибок, которые либо дают неточные или мусорные результаты, либо затирают регистры или память, когда определенные последовательности инструкций выполняются в определенном порядке.
Поддержка компилятора
[ редактировать ]набор исправлений, В 2003 году Red Hat/Cygnus Solutions представила в коллекцию компиляторов GNU включающих в себя генератор кода для него с флагами для обхода его дефектов. Однако они никогда не работали достаточно хорошо, чтобы их можно было использовать. Он был удален в GCC 4.8 (сентябрь 2012 г.). [2]
Было предпринято несколько попыток исправить эту работу:
- от Cirrus Logic Инструменты Crunch , переупаковка инструментов GNU, модифицированная Nucleusys из Болгарии (или это они выполнили работу, позже представленную RedHat?)
- для Патчи futaris gcc 4.1.2 и 4.2.0, упакованные для Open Embedded.
- Мартина Гая Патчи gcc-crunch и собственные компиляторы , развитие патчей futaris, которые генерируют надежный код и проходят все наборы тестов.
Ссылки
[ редактировать ]- ^ Клаас, Джефф. «Представляем Maverick EP9312». Проверено 3 марта 2009 г. Архивировано 31 декабря 2009 г. на сайте Wayback Machine , представлено на Форуме встроенных процессоров, Сан-Хосе, Калифорния, 13 июня 2000 г.
- ^ Ричард Эрншоу в списке рассылки GCC по поводу удаления поддержки FPA и Crunch.
Внешние ссылки
[ редактировать ]- Глава 2 Руководства пользователя EP9307
- Оптимизация скорости кода для сопроцессора MaverickCrunch
- [1] Сообщается о многих проблемах с реализацией чипа.
- Ошибки Cirrus Logic для EP93XX
- Подробная статья о Debian Wiki, в которой рассматриваются ее проблемные функции, аппаратные ошибки и состояние поддержки GCC.
- Исправленные версии GCC, способные генерировать надежный код MaverickCrunch.
- Пакеты Debian перекомпилированы с ускорением MaverickCrunch