Забытая американская ЭВМ AN/FSQ–7

Тема в разделе "WASM.ARTICLES", создана пользователем aa_dav, 6 янв 2022.

  1. aa_dav

    aa_dav Active Member

    Публикаций:
    0
    Регистрация:
    24 дек 2008
    Сообщения:
    247
    На ArsTechnica вышла статья про забытый ныне комп AN/FSQ–7 который был мозгом распределённой сети противовоздушной обороны SAGE в США (англ.): https://arstechnica.com/science/2022/01/the–most–important–computer–youve–never–heard–of/
    Однако быстро находится и статья на хабре с общим описанием интересностей: https://habr.com/ru/post/174845/
    Из неё я процитирую самые понравившиеся части:
    [​IMG]
    Вот такой вот циклопический монстр пожиравший до трёх мегаватт существовал.
    Я же не мог пройти мимо архитектуры этой эпической машины и она тоже нашла чем удивить.
    Теорию программирования на нём можно почитать тут (англ.): http://www.bitsavers.org/pdf/ibm/sage/3–112–0_Theory_Of_Programming_Apr59.pdf

    Видно, что некоторые особенности дизайна IBM потащит в следующие свои серии компьютеров — в частности инструкцию Clear and Add.

    Память машины могла состоять из двух банков по 65536 32–битных слова (плюс незримый бит контроля чётности).
    Архитектура классическая на то время — аккумулятор–память.
    Кодирование инструкций делило 32–битное слово на две части: 15 бит на код операции и 17 бит на выбор слова с которым работает аккумулятор. По сути 17–ый бит и выбирал один из двух банков памяти. В большинстве инструкций адрес памяти мог быть индексирован одним из четырёх индексных регистров или правой половинкой аккумулятора.

    Но вот 32–битные слова как данные тоже делились на две независимых части: 16 бит в каждой. Бит знака + 15 бит числа. Эти половинки назывались левой и правой соответственно.
    И они были реально независимые: и аккумулятор тоже состоял из двух половинок и в такой операции как сложение ADD они складывались параллельно.
    Таким образом этот дизайн в какой то степени предвосхищает самый настоящий SIMD! :D

    Чтобы загрузить в аккумулятор ячейку памяти используется инструкция Clear and Add (CAD) — и она действительно честно зануляла аккумулятор и потом выполняла сложение его с ячейкой памяти — это подчёркивается в документации. Сейчас такое известно как MOVE, но IBM еще использует тот же принцип в других своих машинах которые я обозревал тут ранее.
    Есть пара Clear and Sub (CSU) — по сути загрузка с инверсией знака.
    Фактически это частные случаи обычных ADD и SUB, но надо помнить что тут идёт параллельная обработка двух данных сразу (и шкафов с арифметическим устройством было реально два вроде).
    Инструкция Full Store (FST) сохраняла аккумулятор в память — опять таки обе половинки откуда и Full в названии.

    Однако для скалярных операций были инструкции Left Store и Right Store (LST и RST) которые сохраняли в память только левую или правую часть аккумулятора не затрагивая другую.
    Еще интереснее были арифметические инструкции Twin and Add и Twin and Sub (TAD и TSU) — они складывали или вычитали обе половинки аккумулятора только с левой частью слова в памяти.

    Условные переходы в связи с этим всем были тоже богаче на варианты — BLM означало не black lives matter, а branch (if) left is minus и переходило по адресу если левая половинка аккумулятора была меньше нуля. Была пара — BRM где проверялась уже правая половинка аккумулятора.
    Были так же BFM (branch on full minus) и BFZ (branch on full zero) которые совершали переход если обе половинки аккумулятора были меньше нуля или равны нулю.

    Конечно же есть инструкция для модификации адресной части инструкции: Add One Right (AOR). Она инкрементирует адресную часть слова в памяти подразумевая, что это инструкция (оно 17–битное, т.е. затрагивается один бит в левой части) и сохраняет обратно. И хотя в машине уже были индексные регистры, но вот любили инженеры технику самомодификации и долго еще её тащили и в последующие машины IBM.

    Еще в базовых инструкциях есть загрузка индексных регистров (XIN) и декремент индексного регистра с переходом по выбранному адресу, если он еще положителен (BPX).

    Ну и есть еще куча инструкций типа более изощрённых операций с индексами или умножение/деление, но общие принципы уже вырисованы.

    SIMD в 1955 году!