Введение

Первый массово параллельный компьютер

ILLIAC IV был первым массово параллельным компьютером. Система первоначально проектировалась с 256 64-битными блоками с плавающей запятой (FPU) и четырьмя центральными процессорами (CPU), способными обрабатывать 1 миллиард операций в секунду. Из-за бюджетных ограничений был построен только один "квадрант" с 64 FPU и одним CPU. Поскольку все FPU обрабатывали одну и ту же инструкцию – ADD, SUB и т. д. – в современной терминологии, эта архитектура считается архитектурой с единой инструкцией и множественными данными (SIMD). Идея создания компьютера на основе массива процессоров пришла Дэниелу Слотнику, когда он работал программистом на машине IAS в 1952 году. Формальное проектирование началось в 1960 году, когда Слотник работал в Westinghouse Electric и получил финансирование разработки по контракту с ВВС США. Когда это финансирование закончилось в 1964 году, Слотник перешел в Университет Иллинойса в Урбане-Шампейне и присоединился к команде Illinois Automatic Computer (ILLIAC). При финансировании от Агентства передовых исследовательских проектов (ARPA) они приступили к разработке новой концепции с 256 64-битными процессорами вместо первоначальной концепции с 1024 1-битными процессорами. Пока машина собиралась компанией Burroughs, университет начал строить новое здание для её размещения. Политическая напряженность, связанная с финансированием от Министерства обороны США, привела к тому, что ARPA и университет опасались за сохранность машины. Когда первый 64-процессорный квадрант машины был завершен в 1972 году, он был отправлен в Исследовательский центр NASA Ames в Калифорнии. После трех лет тщательной модификации для устранения различных дефектов ILLIAC IV был подключен к сети ARPANET для распределенного использования в ноябре 1975 года, став первым сетевым суперкомпьютером, опередив Cray 1 почти на 12 месяцев. Работающий на половине своей проектной скорости, единственный квадрант ILLIAC IV обеспечивал пиковую производительность 50 MFLOP, что делало его самым быстрым компьютером в мире в то время. Ему также приписывают использование первой крупной компьютерной системы с твердотельной памятью, а также он был самым сложным компьютером, построенным на тот момент, с более чем 1 миллионом логических элементов. Несмотря на то, что проект в целом считается неудачным из-за значительных превышений бюджета, он сыграл важную роль в разработке новых методов и систем для программирования параллельных систем. В 1980-х годах несколько машин, основанных на концепциях ILLIAC IV, были успешно поставлены.

Происхождение

В июне 1952 года Дэниел Слотник начал работать над машиной IAS в Институте перспективных исследований (IAS) в Принстонском университете. Машина IAS имела битово-параллельный математический блок, работавший с 40-битными словами. Изначально оснащенная памятью на электронно-лучевых трубках Williams, она позже была дополнена магнитным барабаном от Engineering Research Associates. Этот барабан имел 80 дорожек, что позволяло считывать два слова одновременно, и каждая дорожка хранила 1024 бита. Размышляя о механизме барабана, Слотник начал сомневаться, правильно ли устроена архитектура компьютера. Если бы биты слова записывались последовательно на одну дорожку, а не параллельно на 40 дорожек, то данные можно было бы напрямую подавать в битово-последовательный компьютер, бит за битом, прямо с барабана. Барабан по-прежнему имел бы несколько дорожек и головок, но вместо того, чтобы собирать слово и отправлять его в одно арифметико-логическое устройство (АЛУ), в этой концепции данные на каждой дорожке считывались бы по одному биту и отправлялись в параллельные АЛУ. Это был бы компьютер с параллельной организацией слов и последовательной передачей битов. Слотник предложил эту идею в IAS, но Джон фон Нейман отклонил её, посчитав, что для её реализации потребуется "слишком много ламп". Слотник покинул IAS в феврале 1954 года, чтобы вернуться в университет для получения докторской степени, и это предложение было забыто.

Соломон

После завершения докторской диссертации и некоторой постдокторской работы Слотник оказался в IBM. К этому времени, по крайней мере для научных вычислений, электронные лампы и барабанные накопители были заменены транзисторами и магнитной памятью на сердечниках. Идея параллельных процессоров, работающих с разными потоками данных, поступающими с барабана, уже не казалась столь очевидной. Тем не менее, дальнейший анализ показал, что параллельные машины все еще могли обеспечить значительную производительность в некоторых приложениях. В 1958 году Слотник и его коллега, Джон Кокк (более известный как изобретатель RISC), опубликовали статью на эту тему. После непродолжительной работы в IBM и затем в Aeronca Aircraft, Слотник перешел в подразделение Air Arm компании Westinghouse, занимавшееся разработкой радаров и подобных систем. По контракту с RADC ВВС США, Слотник смог собрать команду для разработки системы с 1024-битными последовательными арифметико-логическими устройствами (АЛУ), известными как "элементы обработки" или ПЭ. Этот проект получил название SOLOMON, в честь царя Соломона, известного своей мудростью и тысячей жен. Элементы ПЭ должны были получать инструкции от единого главного центрального процессора (ЦП), "блока управления" или ЦУ. ЦУ SOLOMON считывал инструкции из памяти, декодировал их и передавал на обработку элементам ПЭ. Каждый ПЭ имел собственную память для хранения операндов и результатов – модуль памяти ПЭ, или ПЭМ. ЦУ мог получить доступ ко всей памяти через выделенную шину памяти, в то время как ПЭ могли обращаться только к своей собственной ПЭМ. Для того чтобы результаты одного ПЭ могли использоваться в качестве входных данных для другого, отдельная сеть соединяла каждый ПЭ с восемью ближайшими соседями. Было построено несколько экспериментальных систем, включая систему 3x3 (9 ПЭ) и модель 10x10 с упрощенными ПЭ. В этот период рассматривались более сложные конструкции ПЭ, вплоть до 24-битной параллельной системы, организованной в матрицу 256x32. В 1963 году был создан один ПЭ, построенный по этой схеме. Пока велась проектная работа, основной спонсор в Министерстве обороны США погиб в аварии, и дальнейшее финансирование не последовало. Стремясь продолжить разработку, Слотник обратился в Ливермор, который в то время был лидером в закупках суперкомпьютеров. Они проявили большой интерес к проекту, но убедили его модернизировать фиксированные математические блоки текущей конструкции до блоков с плавающей точкой, что привело к созданию SOLOMON.2. Ливермор не стал финансировать разработку, а предложил контракт на аренду машины после ее завершения. Руководство Westinghouse посчитало это слишком рискованным и распустило команду. Слотник покинул Westinghouse, пытаясь привлечь венчурный капитал для продолжения проекта, но безуспешно. Впоследствии Ливермор выбрал CDC STAR 100 для этой роли, поскольку CDC был готов взять на себя расходы на разработку.

ILLIAC IV (всего лишь в США)

Когда SOLOMON был завершен, Slotnick присоединился к команде разработчиков Иллинойсского автоматического компьютера (ILLIAC) в Университете Иллинойса в Урбана-Шампейн. Иллинойс проектировал и строил большие компьютеры для Министерства обороны США и Агентства передовых исследовательских проектов (ARPA) с 1949 года. В 1964 году университет заключил контракт с ARPA на финансирование проекта, который получил название ILLIAC IV, поскольку это был четвертый компьютер, разработанный и созданный в университете. Разработка началась в 1965 году, а первоначальный проект был завершен в 1966 году. В отличие от последовательной (бит-серийной) концепции SOLOMON, в ILLIAC IV вычислительные элементы (PE) были модернизированы до полноценных 64-битных (параллельных) процессоров, использующих 12 000 логических элементов и 2048 слов тонкопленочной памяти. Каждый вычислительный элемент имел пять 64-битных регистров, каждый из которых выполнял определенную функцию. Один из них, RGR, использовался для передачи данных соседним вычислительным элементам, перемещая данные на один "шаг" за каждый тактовый цикл. Другой регистр, RGD, указывал, активен ли данный вычислительный элемент в данный момент. "Неактивные" вычислительные элементы не могли обращаться к памяти, но передавали результаты соседним вычислительным элементам с помощью RGR. Вычислительные элементы были разработаны для работы как один 64-битный блок вычислений с плавающей точкой (FPU), два 32-битных блока вычислений с плавающей точкой половинной точности или восемь 8-битных процессоров с фиксированной точкой. Вместо 1024 вычислительных элементов и одного центра управления (CU), новая конструкция включала в себя в общей сложности 256 вычислительных элементов, организованных в четыре "квадранта" по 64 вычислительных элемента, каждый со своим собственным CU. Центральные управления также были 64-битными, с шестьдесят четырьмя 64-битными регистрами и четырьмя 64-битными аккумуляторами. Система могла работать как четыре отдельных 64-элементных машины, две 128-элементных машины или одна 256-элементная машина. Это позволяло системе решать различные задачи, когда объем данных был недостаточен для использования всего массива из 256 вычислительных элементов. Основываясь на тактовой частоте 25 МГц, при одновременной работе всех 256 вычислительных элементов по одной программе, машина должна была выполнять 1 миллиард операций с плавающей точкой в секунду, или, в современной терминологии, 1 GFLOPS. Это делало ее намного быстрее любой другой машины в мире; современный CDC 7600 имел тактовый цикл 27,5 наносекунд, или 36 MIPS, хотя по ряду причин он обычно обеспечивал производительность около 10 MIPS. Для поддержки машины было построено расширение зданий Лаборатории цифровых компьютеров. Первоначальные работы в университете были в основном направлены на поиск способов эффективной загрузки вычислительных элементов данными, что позволило провести первый "стресс-тест" в разработке компьютеров. Чтобы максимально упростить эту задачу, было создано несколько новых языков программирования: IVTRAN и TRANQUIL были параллельными версиями FORTRAN, а Glypnir – аналогичным преобразованием ALGOL. Как правило, эти языки обеспечивали поддержку загрузки массивов данных "во все" вычислительные элементы для параллельного выполнения, а некоторые даже поддерживали развертывание циклов в операции с массивами.

Строительство, проблемы

В начале 1966 года университет направил запрос предложений, в котором искал промышленных партнеров, заинтересованных в создании проекта. В июле было получено 17 ответов, семь из которых откликнулись, и из них были выбраны трое. Некоторые из ответов, включая Control Data, пытались заинтересовать их в разработке векторного процессора, но поскольку работы над такими процессорами уже велись, команда не хотела создавать еще один. В августе 1966 года компаниям RCA, Burroughs и Univac были предложены восьмимесячные контракты на строительство машины. В конечном итоге контракт выиграла Burroughs, объединившись с Texas Instruments (TI). Обе компании предложили новые технические решения, которые сделали их предложение наиболее привлекательным. Burroughs предлагала создать новую и значительно более быструю версию тонкопленочной памяти, что должно было повысить производительность. TI предлагала производить 64-выводные интегральные схемы с эмиттерно-связанной логикой (ECL) с 20 логическими элементами в каждой. В то время большинство ИС использовали 16-выводные корпуса и содержали от 4 до 7 элементов. Использование ИС от TI позволило бы значительно уменьшить размеры системы. Burroughs также должна была поставлять специализированные дисковые накопители, оснащенные отдельной неподвижной головкой для каждой дорожки, обеспечивающие скорость до 500 Мбит/с и хранилище объемом около 80 МБ на 36-дюймовый диск. Они также должны были предоставить мэйнфрейм Burroughs B6500 для использования в качестве контроллера внешней памяти, загружающего данные из вторичного хранилища и выполняющего другие служебные задачи. К B6500 подключалось оптическое записывающее устройство на лазерном луче стороннего производителя – система однократной записи, способная хранить до 1 Тбит на тонкой металлической пленке, нанесенной на полосу полиэстеровой пленки, перемещаемой вращающимся барабаном. Строительство нового проекта началось в лаборатории Great Valley компании Burroughs. В то время предполагалось, что машина будет поставлена в начале 1970 года. После года работы над ИС компания TI объявила о невозможности создания 64-выводных схем. Более сложная внутренняя разводка вызывала перекрестные помехи в схемах, и они запросили еще год на устранение проблем. Вместо этого команда ILLIAC решила перепроектировать машину на основе доступных 16-выводных ИС. Это потребовало снижения тактовой частоты системы до 16 МГц вместо первоначальных 25 МГц. Переход с 64 на 16 выводов обошелся проекту в два года и миллионы долларов. Компания TI смогла запустить 64-выводную схему в работу чуть больше чем через год и начала предлагать ее на рынке до завершения проекта ILLIAC. В результате этого изменения размеры отдельных печатных плат увеличились примерно в квадрат до около. Это поставило крест на попытках Burroughs создать тонкопленочную память для машины, поскольку больше не хватало места для ее размещения в корпусе. Попытки увеличить размеры корпуса для размещения памяти вызвали серьезные проблемы с распространением сигнала. Slotnick изучил потенциальные альтернативы и выбрал полупроводниковую память от Fairchild Semiconductor, решение, вызвавшее столь сильное несогласие со стороны Burroughs, что последовало полное рассмотрение вопроса в ARPA. В 1969 году эти проблемы, в сочетании с возникшим в результате задержек перерасходом средств, привели к решению построить только один квадрант из 64 PE, что ограничило скорость машины примерно до 200 MFLOPS. В совокупности эти изменения обошлись проекту в три года и 6 миллионов долларов. К 1969 году проект тратил 1 миллион долларов в месяц, и его пришлось выделить из первоначальной команды ILLIAC, которая все более активно выражала свое несогласие с проектом.

Переезжайте в Эймс .

К 1970 году машина наконец-то строилась приемлемыми темпами и была готова к поставке примерно через год. 6 января 1970 года студенческая газета The Daily Illini сообщила, что компьютер будет использоваться для разработки ядерного оружия. В мае произошла стрельба в Кент-Стейт, и по университетским городкам прокатилась волна антивоенного насилия. Слотник стал выступать против использования машины в засекреченных исследованиях и объявил, что пока она находится на территории университета, все процессы, выполняемые на ней, будут публиковаться. Он также все больше беспокоился о том, что машина может стать объектом нападения со стороны более радикальных студенческих групп, что казалось разумным предостережением после того, как местные студенты присоединились к общенациональной студенческой забастовке 9 мая 1970 года, объявив «день Ильиакции», и особенно после взрыва здания математического факультета в Университете Висконсина–Мэдисон 24 августа. С помощью Ханса Марка, директора Исследовательского центра NASA в Эймсе, который в то время располагался в Силиконовой долине, в январе 1971 года было принято решение о поставке машины в Эймс, а не в университет. Расположенный на действующей военно-морской базе и охраняемый морской пехотой США, он обеспечивал необходимую безопасность. Машина была наконец доставлена в Эймс в апреле 1972 года и установлена в Центральном компьютерном центре в здании N 233. К этому моменту она отставала от графика на несколько лет и значительно превысила бюджет, достигнув общей стоимости в 31 миллион долларов, что почти в четыре раза превышало первоначальную оценку в 8 миллионов долларов за полную 256-процессорную машину. NASA также решило заменить вычислительный комплекс B6500 на PDP 10, которые широко использовались в Эймсе и облегчили бы подключение к сети ARPAnet. Это потребовало разработки нового программного обеспечения, особенно компиляторов, для PDP 10, что привело к дальнейшим задержкам в запуске машины. Управление Illiac IV было передано компании ACTS Computing Corporation, базирующейся в Саутфилде, штат Мичиган, компании, специализирующейся на организации разделения времени и удаленного ввода заданий (RJE), которая недавно была приобретена конгломератом Lear Siegler Corporation. Министерство обороны заключило контракт с ACTS на условиях «себестоимость плюс 10%». Эта необычная схема была обусловлена ограничением, согласно которому зарплата государственного служащего не могла превышать зарплату члена Конгресса, а многие сотрудники Illiac IV зарабатывали больше этой суммы. Доктор Мел Пиртл, имевший опыт работы в Калифорнийском университете в Беркли и Berkeley Computer Corporation (BCC), был назначен директором Illiac IV.

Заставляя это работать

Когда машина прибыла, её не удалось запустить. Она страдала от множества проблем – от трещин в печатных платах, некачественных резисторов, до высокой чувствительности к влаге упаковки интегральных схем TI. Эти проблемы решались постепенно, и к лету 1973 года первые программы смогли быть запущены в системе, хотя результаты были весьма сомнительными. Начиная с июня 1975 года, была начата четырехмесячная интенсивная работа, которая, помимо прочего, потребовала замены 110 000 резисторов, перекоммутации некоторых участков для устранения проблем с задержкой распространения сигнала, улучшения фильтрации в блоках питания и дальнейшего снижения тактовой частоты до 13 МГц. В результате этой работы система наконец заработала как положено. С тех пор система работала с понедельника утра до пятницы дня, обеспечивая пользователям 60 часов непрерывной работы, но требуя 44 часов планового простоя. Тем не менее, она все чаще использовалась, поскольку программисты NASA находили способы добиться производительности от этой сложной системы. Поначалу производительность была низкой, большинство программ работали со скоростью около 15 MFLOPS, что примерно в три раза превышало средний показатель для CDC 7600. Со временем производительность улучшилась, особенно после того, как программисты из Эймса разработали собственную версию FORTRAN и CFD, а также научились осуществлять параллельный ввод-вывод данных в ограниченные PEM. Для задач, которые можно было распараллелить, машина оставалась самой быстрой в мире, превосходя CDC 7600 в два-шесть раз, и общепризнанно считалась самой быстрой машиной в мире до 1981 года. 7 сентября 1981 года, после почти 10 лет эксплуатации, ILLIAC IV был выключен. Машина была официально выведена из эксплуатации в 1982 году, и вместе с ней прекратило своё существование передовое вычислительное подразделение NASA. Один блок управления и один шасси процессорного элемента от машины сейчас экспонируются в Музее истории компьютеров в Маунтин-Вью, менее чем в миле от места её эксплуатации.

Последствия

ILLIAC был запущен с большой задержкой, оказался очень дорогим и так и не достиг своей цели – производительности в 1 GFLOP. Он был широко признан неудачей даже теми, кто над ним работал; один из них просто заявил, что «любой непредвзятый наблюдатель должен рассматривать Illiac IV как техническую неудачу». С точки зрения управления проектом, ILLIAC также считается провалом: его стоимость превысила первоначальные оценки в четыре раза и потребовались годы исправительных работ, чтобы заставить его функционировать. Как позже выразился сам Слотник:

Однако последующие анализы отмечают, что проект оказал несколько долгосрочных влияний на компьютерный рынок в целом, как преднамеренных, так и непреднамеренных. Одним из косвенных эффектов стало быстрое развитие полупроводниковой памяти после проекта ILLIAC. Слотник подвергся критике, когда выбрал Fairchild Semiconductor для производства микросхем памяти, поскольку в то время производственная линия представляла собой пустую комнату, а дизайн существовал лишь на бумаге. Однако, после трех месяцев напряженной работы, Fairchild представил рабочий дизайн, который начал производиться массово. Как позже прокомментировал Слотник: «Fairchild великолепно справился с решением нашей проблемы. Память Fairchild была превосходной, и ее надежность до сих пор невероятно высока». Считается, что ILLIAC нанес смертельный удар по памяти на магнитных сердечниках и связанным с ней системам, таким как тонкопленочная память. Другой косвенный эффект был связан со сложностью печатных плат (PCB) или модулей. При первоначальной проектной частоте 25 МГц, импеданс в цепях заземления оказался серьезной проблемой, что требовало максимального уменьшения размеров PCB. По мере роста сложности плат приходилось добавлять все больше слоев, чтобы избежать увеличения их габаритов. В конечном итоге они достигли 15 слоев, что превышало возможности чертежников. Проект был завершен с использованием новых автоматизированных средств проектирования, предоставленных субподрядчиком, а полное проектирование потребовало двух лет вычислительного времени на мэйнфрейме Burroughs. Это был значительный шаг вперед в области автоматизированного проектирования, и к середине 1970-х годов такие инструменты стали обычным явлением. ILLIAC также стимулировал масштабные исследования в области параллельной обработки, которые оказали широкое влияние. В 1980-х годах, с падением цен на микропроцессоры в соответствии с законом Мура, ряд компаний создали системы MIMD (Multiple Instruction, Multiple Data) для построения еще более параллельных машин с компиляторами, способными эффективнее использовать параллелизм. Thinking Machines CM 5 является отличным примером концепции MIMD. Именно лучшее понимание параллелизма, полученное в ILLIAC, привело к улучшению компиляторов и программ, способных использовать эти архитектуры. Как выразился один из программистов ILLIAC: «Если кто-нибудь построит быстрый компьютер из множества микропроцессоров, Illiac IV внесет свой вклад в общее дело». Большинство суперкомпьютеров той эпохи использовали другой подход к повышению производительности, используя один высокоскоростной векторный процессор. Подобно ILLIAC в некоторых аспектах, эти конструкции процессоров загружали множество элементов данных в один специализированный процессор, а не в большое количество узкоспециализированных. Классическим примером такой конструкции является Cray 1, который демонстрировал производительность, сопоставимую с ILLIAC. В результате возникла определенная «обратная реакция» на конструкцию ILLIAC, и в течение некоторого времени рынок суперкомпьютеров с пренебрежением относился к массивно параллельным системам, даже когда они оказывались успешными. Как однажды остроумно заметил Сеймур Крей: «Если бы вы пахали поле, что бы вы предпочли использовать: двух сильных быков или 1024 цыплят?»

Физическое расположение

Каждый квадрант машины был высотой 3 метра, глубиной 2 метра и длиной 15 метров. Рядом с квадрантом располагалась система ввода/вывода (I/O), дисковая подсистема которой хранила 2,5 ГиБ и могла читать и записывать данные со скоростью 1 миллиард бит в секунду, а также компьютер B6700, который подключался к машине через тот же 1024-битный интерфейс, что и дисковая подсистема. Машина состояла из серии несущих шасси, содержащих множество небольших модулей. Большинство из них представляли собой процессорные блоки (ПУ), которые включали модули для одного ПЭ, его ПЭМ и блок логики памяти, отвечающий за преобразование адресов и ввод/вывод. ПУ были идентичны, поэтому их можно было заменять или переупорядочивать по мере необходимости.

Данные о процессоре

Каждая КУ содержала от 30 до 40 000 логических элементов. В КУ было шестнадцать 64-битных регистров и отдельный 64-слотовый 64-битный "буфер обмена", LDB. Присутствовали четыре аккумулятора, AC0–AC3, счетчик команд ILR и различные регистры управления. Система имела короткий конвейер команд и поддерживала предварительное чтение команд. У ПЭ было около 12 000 логических элементов. Он включал четыре 64-битных регистра: аккумулятор A, буфер операндов B и вторичный буфер обмена S. Четвертый регистр, R, использовался для широковещательной передачи или приема данных от других ПЭ. В ПЭ использовался сумматор с переносом по разряду, детектор старшего значащего бита для булевых операций и сдвигающий регистр. 64-битные сложения занимали около 200 нс, а умножения – около 400 нс. ПЭ были подключены к собственной банковской памяти, PEM, объемом 2048 64-битных слов. Время доступа составляло около 250 нс. ПЭ использовали архитектуру загрузки/сохранения. Набор команд (ISA) содержал два отдельных набора инструкций: один для КУ (или модуля в ней, ADVAST), а другой – для ПЭ. Инструкции для ПЭ не декодировались, а отправлялись непосредственно в регистр FINST для передачи в ПЭ для обработки. Инструкции ADVAST декодировались и поступали в конвейер обработки КУ.

Логическое расположение

Каждый квадрант содержал 64 ПЭ и один КУ. КУ имел доступ ко всей шине ввода-вывода и мог адресовать всю память машины. ПЭ могли обращаться только к своему локальному хранилищу, PEM, объемом 2048 64-битных слов. И ПЭ, и КУ могли использовать операции загрузки и сохранения для доступа к дисковой системе. Шкафы были настолько большими, что для прохождения сигнала от одного конца к другому требовалось 240 нс. По этой причине КУ не мог использоваться для координации действий, вместо этого вся система была синхронизирована по тактовым импульсам, и все операции в ПЭ гарантированно занимали одинаковое время, независимо от операндов. Таким образом, КУ мог быть уверен в завершении операций без ожидания результатов или кодов состояния. Для повышения производительности операций, требующих использования результатов одного ПЭ в качестве входных данных для другого ПЭ, ПЭ были соединены напрямую со своими соседями, а также с ПЭ, находящимися на расстоянии восьми шагов – например, ПЭ1 был напрямую соединен с ПЭ0 и ПЭ2, а также с ПЭ9 и ПЭ45. Соединения на расстоянии восьми шагов обеспечивали более быструю передачу данных, когда они должны были перемещаться между удаленными ПЭ. Каждый сдвиг данных перемещал 64 слова за один тактовый цикл в 125 нс. Система использовала одноадресный формат, в котором инструкции содержали адрес одного из операндов, а другой операнд находился в аккумуляторе ПЭ (регистр А). Адрес передавался в ПЭ по отдельной "шине широковещания". В зависимости от инструкции, значение на шине могло соответствовать ячейке памяти в PEM ПЭ, значению в одном из регистров ПЭ или числовой константе. Поскольку каждый ПЭ имел свою собственную память, в то время как формат инструкций и КУ видели все адресное пространство, система включала индексный регистр (X) для смещения базового адреса. Это позволяло, например, одному и тому же потоку инструкций работать с данными, расположенными не в одинаковых местах в разных ПЭ. Типичным примером является массив данных, загруженный в разные области PEM, который затем можно было унифицировать, установив индекс в разных ПЭ.

Филиалы

В традиционных компьютерных конструкциях инструкции загружаются в процессор по одной, по мере их чтения из памяти. Обычно, когда процессор завершает обработку инструкции, счётчик программы (PC) увеличивается на одно слово, и считывается следующая инструкция. Этот процесс прерывается переходами по условию, из-за которых PC переходит к одному из двух мест в зависимости от результата теста, например, содержит ли данный адрес памяти ненулевое значение. В конструкции ILLIAC каждый ПЭ применял бы этот тест к различным значениям и, следовательно, получал бы разные результаты. Поскольку эти значения были известны только соответствующему ПЭ, следующие инструкции должны были загружаться на основе значения, известного только этому ПЭ. Чтобы избежать задержек, связанных с перезагрузкой инструкций для ПЭ, ILLIAC загружал PEM инструкциями с обеих сторон ветвления. Логические тесты не изменяли PC, а устанавливали "биты режима", которые указывали ПЭ, выполнять или не выполнять следующую арифметическую инструкцию. Для использования этой системы программа писалась таким образом, чтобы за тестом следовал один из двух возможных потоков инструкций, заканчивающийся инструкцией инвертирования битов. Затем следовал код для второй ветви, заканчивающийся инструкцией установки всех битов в 1. Если тест выбирал "первую" ветвь, этот ПЭ продолжал работу как обычно. Достигнув конца этого кода, инструкция оператора режима переворачивала биты режима, и с этого момента ПЭ игнорировал последующие инструкции. Это продолжалось до тех пор, пока он не достигал конца кода для второй ветви, где инструкция сброса режима снова активировала ПЭ. Если в результате теста для конкретного ПЭ выбиралась вторая ветвь, он вместо этого устанавливал биты режима для игнорирования последующих инструкций, пока не достигал конца первой ветви, где оператор режима переворачивал биты и начинал обработку второй ветви, снова активируя их все в конце этой ветви. Поскольку ПЭ могут работать в 64-, 32- и 8-битном режимах, флаги режима содержали несколько битов, чтобы отдельные слова могли быть включены или выключены. Например, если ПЭ работал в 32-битном режиме, то на одной "стороне" ПЭ тест мог дать результат true, а на другой – false.