FPS AP-120B - FPS AP-120B
В FPS AP-120B был 38-битным, ориентированным на конвейер процессор массива изготовлены по Системы с плавающей запятой. Он был разработан для подключения к главному компьютеру, например к DEC. PDP-11 как быстрый вычислитель чисел. Передача данных осуществлялась с использованием прямой доступ к памяти.
Время цикла процессора составляло 167 наносекунд, что давало скорость 6 МГц. Поскольку он может отображать два результата с плавающей запятой за цикл, один от сумматора, а другой от умножителя, емкость 12 Мегафлопс был заявлен на процессор.
Архитектура
Процессор был разработан вокруг концепции нескольких параллельных процессоров, работающих синхронно. Одно 64-битное командное слово было разделено на поля, каждое из которых инструктировало конкретный модуль под управлением ЦП. Модули были следующими:
- 16-битный арифметико-логический блок (ALU)
- 38-битный сумматор с плавающей запятой (FADD) (два этапа)
- 38-битный умножитель с плавающей запятой (FMUL) (три этапа)
- Два регистра Data Pad для приема данных из памяти.
У процессора был доступ к памяти ядра с двойным чередованием, в которой адреса с нечетными номерами хранились в одном физическом банке, а адреса с четными номерами - в другом. Это представляло собой попытку использовать преимущество типичной последовательной выборки слов из памяти. Последовательная выборка из одного физического банка приведет к задержке в два цикла инструкций, прежде чем данные будут загружены в целевую панель данных. Чередование позволяло осуществлять последовательный доступ сразу после предыдущего. Для завершения обоих обращений потребовалось два цикла, но контактные площадки с перекрытием и двойным назначением максимально увеличили использование канала данных.
Оба модуля арифметики с плавающей запятой были многоступенчатыми процессорами, которые управлялись явными инструкциями. В двухступенчатом сумматоре инструкция ассемблера, такая как FADD DX, DY, будет загружать значения из панелей данных DX и DY в первую ступень сумматора. Для представления результата на выходе сумматора потребуется последующая инструкция FADD. Этот второй FADD может быть фиктивным без аргументов или может быть следующим вычислением в последовательности. Таким способом поток операций FADD может выполняться в конвейере с новым результатом в каждом цикле команд, хотя каждое добавление требует двух циклов.
Точно так же умножитель, трехступенчатый блок, требовал одного FMUL DX, DY для начала умножения, за которым следовали еще две инструкции FMUL для получения результата. Тщательное программирование конвейера позволило получить один результат за цикл, при этом каждый расчет занимал три цикла.
Для максимальной эффективности все вычисления были запрограммированы на языке ассемблера, поставляемом с оборудованием. Язык высокого уровня, напоминающий Фортран был предназначен для координации задач и управления передачей данных на главный компьютер и с него.
Таблицы поиска
Для поддержки типичных приложений в обработке сигналов оборудование поставлялось с предварительно рассчитанной поисковой таблицей синус и косинус значения. Синусы и косинусы для углов от 0 до π / 2 радиан были сохранены в альтернативных адресах, чтобы воспользоваться преимуществом перемежения, описанного выше. Значения для всех других углов можно вычислить, используя одно или другое значение из справочной таблицы, при необходимости отрицая, используя хорошо известные правила.
Типичный стиль программирования
Это было необычно, так как это было вызвано архитектурой синхронной параллельной обработки. Основную философию можно резюмировать следующим образом:
- Составьте кратчайшую последовательность инструкций для выполнения одного экземпляра желаемого вычисления с учетом двухцикловой задержки памяти и управления модулями с плавающей запятой с явными инструкциями FADD и FMUL.
- Проверьте последовательность, чтобы определить минимальное количество инструкций, образующих цикл, который будет выполнять вычисления повторно. Это требует внимания к конфликтам ресурсов. Например, шина данных для перемещения результатов может перемещать только одно слово данных за цикл. Точно так же ALU, используемый в основном для подсчета циклов и адресации памяти, может использоваться только для одной цели за цикл. Этот шаг обычно выполняется методом проб и ошибок.
- Концептуально «оберните» всю последовательность инструкций вокруг цикла, используя инструкции FADD и FMUL для проведения вычислений по конвейерам.
- Перед тем, как цикл начнется, добавьте при необходимости инициации параллельных процессов.
Последний пункт был выполнен следующим образом: предположим, что для всего расчета требуется 15 циклов, а минимальный размер цикла составляет 5 циклов. Первые 5 командных слов начинают итерацию 1 вычисления. Вторые 5 слов содержат как итерацию 1, так и начало итерации 2 параллельно. Обычно это копия операции, начинающейся с итерации 1. Следующие 5 слов содержат заключительные шаги итерации 1, середину итерации 2 и начало итерации 3. Эти пять слов образуют тело цикла, который повторяется до тех пор, пока желаемое количество точек данных было обработано.
Заявление
В качестве присоединенного процессора AP-120B обычно использовался в качестве недорогого / экономичного дополнения к таким системам, как системы диагностической медицинской визуализации и другим. В начале 80-х VAX 11/780 или 11/785 с FPS-AP-120B и плоттером Versatec были «рабочей лошадкой» для обработки сейсмических данных в нефтяной промышленности. Коммерческие пакеты обработки сейсмических данных были написаны так, чтобы они могли вызывать подпрограммы FPS AP-120B, если таковая имеется.