Рубрика «сопроцессор»

Чип 8087 обеспечивал быстрые вычисления с плавающей запятой для первого IBM PC и со временем стал частью x86-архитектуры, используемой и сегодня. Одна необычная особенность 8087 — многоуровневое ПЗУ (ROM, Read-Only Memory), где каждая ячейка кодировала два бита (четыре уровня), что давало плотность примерно вдвое выше обычного ПЗУ. Вместо хранения двоичных данных каждая ячейка ПЗУ 8087 хранила одно из четырёх уровневых значений, которое затем декодировалось в два двоичных бита. Поскольку 8087 требовалось большое ПЗУ микрокода(примеч.1)Читать полностью »

Числа с плавающей запятой необходимы для научного программирования, однако первые процессоры напрямую поддерживали лишь операции с целыми числами. Но ранние микропроцессоры всё же могли производить операции с числами с плавающей запятой. Такие операции просто разбивались на множество целочисленных, манипуляции с экспонентой и дробной частью. Иначе говоря, поддержка плавающей запятой не сделала возможной операции с ней в принципе – она просто серьёзно их ускорила. Существует ещё один способ представления нецелых чисел – это числа с фиксированной запятой, у которых есть неизменное количество цифр после десятичного разделителя. С ними работать проще, однако с их помощью можно представить диапазон заметно меньшего размера.

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

8087 не был первым чипом с поддержкой плавающей запятой. National Semiconductor представила MM57109 Number Cruncher Unit [«перемалыватель цифр»] – так его реально назвали – в 1977-м. Это был, по сути, чип от научного калькулятора на 12 цифр в новом корпусе, работающий с десятичными значениями в двоичном представлении, и требовавший ввода данных в обратной польской записи. Чип работал до абсурдного медленно: к примеру, на вычисление тангенса могло уйти до секунды. AMD представила свой первый чип с поддержкой плавающей запятой, Am9511, в 1978-м. Этот чип поддерживал 32-битные числа с плавающей запятой, и на вычисление тангенса тратил до 1,4 мс. В итоге Intel купила у AMD лицензию на Am9511 и продавала его как 8231. 8087 на 10 МГц, для сравнения, мог вычислить тангенс за 54 мкс, работая с 80-битным числом с плавающей запятой. Вот насколько быстродействие и точность 8087 были выше его предшественников.
Читать полностью »

В 1980 году Intel представила чип 8087 для ускорения обработки чисел с плавающей запятой на 8086-х процессорах, и его использовали в оригинальном IBM PC. Поскольку первые микропроцессоры работали только с целыми числами, арифметика с числами с плавающей запятой была медленной, а с трансцендентными функциями вроде арктангенса или логарифмов дела обстояли ещё хуже. Добавление чипа сопроцессора 8087 к системе было способно ускорить операции с числами с плавающей запятой до ста раз.

Я вскрыл чип 8087 и сделал несколько его фотографий под микроскопом. На фото ниже показан крохотный кремниевый кристалл чипа. По его бокам крохотные проводники соединяют его с 40 внешними ногами. Разметка основных функциональных блоков на картинке сделана мною благодаря реверс-инжинирингу. Если внимательно изучить чип, то можно извлечь из его ПЗУ различные константы – такие числа, как π, используемые чипом в вычислениях.

Извлекаем константы с кристалла математического сопроцессора 8087 - 1
Кристалл чипа от Intel 8087 для работы с плавающей запятой с отмеченными основными функциональными блоками. ПЗУ с константами отмечен зелёным. Кликабельно.
Читать полностью »

Немного истории развития линейки восьмиразрядных процессоров, выпускаемых компанией Intel

Линейка восьмиразрядных процессоров начинает свою историю с апреля 1972 года. Intel 8008 вообще изначально планировался для использования в калькуляторах, устройствах ввода-вывода, но производитель хорошенько «поразмыслив», решил найти линейке новое предназначение — быть центральным процессором ПК. В зависимости от модификаций процессоров тактовая частота составляла 500 или 800 КГц, а производительность равнялась 45000-160000 операций в секунду.

Заглядывая внутрь сопроцессора Intel 8087 - 1
Intel C8008
Читать полностью »

Введение

При решении задач моделирования движения объектов в трехмерном пространстве практически всегда требуется использование операций пространственных преобразований, связанных с умножением матриц преобразований и векторов. Для задачи N тел эта операция используется многократно для задания поворота и смещения тела относительно начала координат. Матрица пространственного преобразования имеет размерность 4х4, а размерность вектора, к которому применяется преобразование, соответственно 4x1. Рассмотрим оптимизацию выполнения такой операции с большим числом матриц и векторов под архитектуру Intel® Xeon Phi™.

Читать полностью »

Quaternion Encryption Scheme (QES) на FPGA, XeonPhi, GPU

Привет!

Шифрование данных с помощью кватернионов выполнялось на FPGA DE5-NET, XeonPhi 7120P, GPU Tesla k20.
У всех троих приблизительно одинаковая пиковая производительность, но имеется разница в энергопотреблении.

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

Каким же образом можно зашифровать и расшифровать данные с помощью кватернионов? Довольно просто!
Для начала возьмем кватернион: q = w + x*i + y*j + z*k и составим на его основе матрицу поворота, которую назовем, например P(q).
Прим. картинка ниже из википедии и матрица там названа Q.

Quaternion Encryption Scheme (QES) на FPGA, XeonPhi, GPU
Читать полностью »

Боремся с ошибками акселерометра, гироскопа, M7, цифрового компаса и других датчиков в iPhone 5S и не только

Многие наслышаны о проблеме с неоткалиброванными датчиками в новом iPhone 5S – инструмент «уровень», встроенный в родной компас iOS 7 показывает отклонение в несколько градусов, если устройство положить на плоскую поверхность, например, стол.

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

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

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

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


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js