ILLIAC IV был первым массивно параллельным компьютером . [1] Первоначально система была спроектирована так, чтобы иметь 256 64-битных блоков с плавающей точкой (FPU) и четыре центральных процессора (CPU), способных обрабатывать 1 миллиард операций в секунду. [2] Из-за бюджетных ограничений был построен только один «квадрант» с 64 FPU и одним CPU. Поскольку все FPU обрабатывали одну и ту же инструкцию – ADD
и SUB
т. д. – в современной терминологии, дизайн можно было бы считать одноинструкционным , многоданных или SIMD. [3]
Концепция создания компьютера с использованием массива процессоров пришла к Дэниелу Слотнику во время работы программистом на машине IAS в 1952 году. Официальное проектирование началось только в 1960 году, когда Слотник работал в Westinghouse Electric и организовал финансирование разработки по контракту с ВВС США . Когда это финансирование закончилось в 1964 году, Слотник перешел в Иллинойсский университет в Урбане-Шампейне и присоединился к команде Illinois Automatic Computer (ILLIAC). При финансировании от Агентства перспективных исследовательских проектов (ARPA) они начали проектирование новой концепции с 256 64-битными процессорами вместо первоначальной концепции с 1024 1-битными процессорами.
Пока Burroughs собирал машину , университет начал строить новое здание для ее размещения. Политическая напряженность из-за финансирования со стороны Министерства обороны США привела к тому, что ARPA и университет стали опасаться за безопасность машины. Когда в 1972 году был завершен первый 64-процессорный квадрант машины, ее отправили в исследовательский центр NASA Ames в Калифорнии. После трех лет тщательной модификации для исправления различных недостатков ILLIAC IV был подключен к ARPANET для распределенного использования в ноябре 1975 года, став первым доступным в сети суперкомпьютером , опередив Cray-1 почти на 12 месяцев.
Работая на половине своей проектной скорости, одноквадрантный ILLIAC IV выдавал пиковую производительность 50 МФЛОПС, [4] что делало его самым быстрым компьютером в мире на тот момент. Ему также приписывают то, что он был первым большим компьютером, использовавшим твердотельную память , а также самым сложным компьютером, построенным на тот момент, с более чем 1 миллионом вентилей. [5] Обычно считавшийся неудачным из-за огромного перерасхода бюджета, [5] [6] проект сыграл важную роль в разработке новых методов и систем для программирования параллельных систем. В 1980-х годах было успешно поставлено несколько машин, основанных на концепциях ILLIAC IV.
В июне 1952 года Дэниел Слотник начал работать над машиной IAS в Институте перспективных исследований (IAS) Принстонского университета . [7] Машина IAS имела параллельный математический блок, который оперировал 40-битными словами . [8] Первоначально оборудованная ламповой памятью Уильямса , позже был добавлен магнитный барабан от Engineering Research Associates . Этот барабан имел 80 дорожек, поэтому за раз можно было считывать два слова, и каждая дорожка хранила 1024 бита. [9]
Размышляя о механизме барабана, Слотник начал задаваться вопросом, является ли это правильным способом построения компьютера. Если бы биты слова записывались последовательно на одну дорожку, а не параллельно на 40 дорожках, то данные могли бы подаваться в последовательный по битам компьютер непосредственно с барабана бит за битом. Барабан все еще имел бы несколько дорожек и головок, но вместо того, чтобы собирать слово и отправлять его в одно АЛУ, в этой концепции данные на каждой дорожке считывались бы по биту за раз и отправлялись в параллельные АЛУ. Это был бы параллельный по словам, последовательный по битам компьютер. [7]
Слотник поднял эту идею в IAS, но Джон фон Нейман отклонил ее, как требующую «слишком большого количества трубок». [7] Слотник покинул IAS в феврале 1954 года, чтобы вернуться в школу для получения докторской степени , и этот вопрос был забыт. [7]
После завершения своей докторской диссертации и некоторой постдокторской работы Слотник оказался в IBM . К этому времени, по крайней мере для научных вычислений, трубки и барабаны были заменены транзисторами и памятью на магнитных сердечниках . Идея параллельных процессоров, работающих с различными потоками данных с барабана, уже не имела такой очевидной привлекательности. Тем не менее, дальнейшее рассмотрение показало, что параллельные машины все еще могут обеспечивать значительную производительность в некоторых приложениях; Слотник и его коллега Джон Кок (более известный как изобретатель RISC ) написали статью об этой концепции в 1958 году. [10]
После недолгого времени работы в IBM, а затем еще одного в Aeronca Aircraft , Слотник оказался в подразделении Westinghouse Air Arm, которое работало над радарами и подобными системами. [11] По контракту с RADC ВВС США Слотник смог собрать команду для проектирования системы с 1024 последовательными АЛУ, известными как «элементы обработки» или ПЭ. Эта разработка получила название SOLOMON, в честь царя Соломона , который был очень мудрым и имел 1000 жен. [12]
PE будут получать инструкции от одного главного центрального процессора (ЦП), «блока управления» или CU. CU SOLOMON будет считывать инструкции из памяти, декодировать их, а затем передавать их PE для обработки. Каждый PE имел свою собственную память для хранения операндов и результатов, модуль памяти PE, или PEM. CU мог получить доступ ко всей памяти через выделенную шину памяти , тогда как PE могли получить доступ только к своему собственному PEM. [13] Чтобы результаты из одного PE могли использоваться в качестве входов в другом, отдельная сеть соединяла каждый PE с его восемью ближайшими соседями. [14]
Было построено несколько систем испытательных стендов, включая систему 3 на 3 (9 PE) и модель 10 на 10 с упрощенными PE. В этот период некоторое внимание уделялось более сложным конструкциям PE, становясь 24-битной параллельной системой, которая будет организована в конфигурации 256 на 32. Единственный PE, использующий эту конструкцию, был построен в 1963 году. По мере продолжения проектных работ основной спонсор в Министерстве обороны США погиб в результате несчастного случая, и дальнейшего финансирования не последовало. [15]
Желая продолжить разработку, Слотник обратился к Ливермору, который в то время был в авангарде закупок суперкомпьютеров. Они были очень заинтересованы в проекте, но убедили его обновить блоки с фиксированной точкой текущего проекта до настоящих плавающих точек , что привело к проекту SOLOMON.2. [16]
Ливермор не стал финансировать разработку, вместо этого они предложили контракт, по которому они будут сдавать машину в аренду после ее завершения. Руководство Westinghouse посчитало это слишком рискованным и закрыло команду. Слотник покинул Westinghouse, пытаясь найти венчурный капитал для продолжения проекта, но потерпел неудачу. Ливермор позже выбрал CDC STAR-100 для этой роли, поскольку CDC была готова взять на себя расходы на разработку. [17]
Когда SOLOMON закончился, Слотник присоединился к команде Illinois Automatic Computer design (ILLIAC) в Университете Иллинойса в Урбане-Шампейне. Иллинойс проектировал и строил большие компьютеры для Министерства обороны США и Агентства перспективных исследовательских проектов (ARPA) с 1949 года. В 1964 году университет подписал контракт с ARPA на финансирование проекта, который стал известен как ILLIAC IV, поскольку это был четвертый компьютер, разработанный и созданный в университете. Разработка началась в 1965 году, а первый проход был завершен в 1966 году. [18]
В отличие от концепции последовательной передачи битов SOLOMON, в ILLIAC IV PE были модернизированы до полноценных 64-битных (бит-параллельных) процессоров, использующих 12 000 вентилей и 2048 слов тонкопленочной памяти . [19] PE имели пять 64-битных регистров, каждый из которых имел специальное назначение. Один из них, RGR, использовался для передачи данных соседним PE, перемещая один «прыжок» за такт. Другой регистр, RGD, указывал, активен ли в данный момент PE. «Неактивные» PE не могли получить доступ к памяти, но они передавали результаты соседним PE, используя RGR. [14] PE были разработаны для работы в качестве одного 64-битного FPU, двух 32-битных FPU половинной точности или восьми 8-битных процессоров с фиксированной точкой. [19]
Вместо 1024 PE и одного CU, новый дизайн имел в общей сложности 256 PE, организованных в четыре 64-PE "квадранта", каждый со своим CU. CU также были 64-битными конструкциями, с шестьюдесятью четырьмя 64-битными регистрами и еще четырьмя 64-битными аккумуляторами. Система могла работать как четыре отдельных 64-PE машины, две 128-PE машины или одна 256-PE машина. Это позволяло системе работать над различными проблемами, когда данные были слишком малы, чтобы требовать весь массив 256-PE. [19]
Машина была разработана на основе тактовой частоты 25 МГц, со всеми 256-PE, работающими на одной программе, и была разработана для выполнения 1 миллиарда операций с плавающей точкой в секунду, или, по современной терминологии, 1 GFLOPS . [20] Это делало ее намного быстрее любой машины в мире; современный CDC 7600 имел тактовый цикл 27,5 наносекунд, или 36 MIPS, [21] хотя по ряду причин она обычно предлагала производительность, близкую к 10 MIPS. [22] [a]
Для поддержки машины было построено расширение зданий Лаборатории цифровых компьютеров. [23] [24] Образцы работ в университете были в первую очередь направлены на способы эффективного заполнения PE данными, таким образом, проводя первый «стресс-тест» в разработке компьютеров. Чтобы сделать это как можно проще, было создано несколько новых языков программирования ; IVTRAN и TRANQUIL были распараллеленными версиями FORTRAN , а Glypnir был похожим преобразованием ALGOL . Как правило, эти языки обеспечивали поддержку загрузки массивов данных «через» PE для параллельного выполнения, а некоторые даже поддерживали разворачивание циклов в операции с массивами. [25]
В начале 1966 года университет разослал запрос предложений в поисках промышленных партнеров, заинтересованных в создании проекта. В июле было получено семнадцать ответов, семь ответили, и из них три были выбраны. [26] Несколько ответов, включая Control Data , пытались заинтересовать их в разработке векторного процессора , но поскольку они уже разрабатывались, команда не была заинтересована в создании другого. В августе 1966 года [b] восьмимесячные контракты были предложены RCA , Burroughs и Univac для участия в торгах на создание машины. [19]
Burroughs в конечном итоге выиграл контракт, объединившись с Texas Instruments (TI). Обе компании предложили новые технические достижения, которые сделали их предложение наиболее интересным. Burroughs предлагал построить новую и гораздо более быструю версию тонкопленочной памяти , которая улучшила бы производительность. TI предлагал построить 64-контактные эмиттерно-связанные логические интегральные схемы ( ИС ) с 20 логическими вентилями каждая. [c] В то время большинство ИС использовали 16-контактные корпуса и имели от 4 до 7 вентилей. Использование ИС TI сделало бы систему намного меньше. [19]
Burroughs также поставляла специализированные дисководы , которые имели отдельную стационарную головку для каждой дорожки и могли обеспечивать скорость до 500 Мбит/с и хранить около 80 МБ на 36-дюймовом диске. Они также поставляли мэйнфрейм Burroughs B6500 , который действовал как интерфейсный контроллер, загружая данные из вторичного хранилища и выполняя другие хозяйственные задачи. К B6500 был подключен лазерный оптический носитель записи стороннего производителя, система однократной записи, которая хранила до 1 Тбит на тонкой металлической пленке, нанесенной на полосу полиэфирного листа, перемещаемую вращающимся барабаном. Строительство новой конструкции началось в Great Valley Lab Burroughs. [13] В то время предполагалось, что машина будет доставлена в начале 1970 года. [27]
После года работы над ИС TI объявила, что им не удалось построить 64-контактные конструкции. Более сложная внутренняя проводка вызывала перекрестные помехи в схеме, и они попросили еще год, чтобы исправить проблемы. Вместо этого команда ILLIAC решила перепроектировать машину на основе доступных 16-контактных ИС. Это потребовало, чтобы система работала медленнее, используя тактовую частоту 16 МГц вместо исходных 25 МГц. [28] Изменение с 64-контактных на 16-контактные стоило проекту около двух лет и миллионов долларов. TI смогла заставить работать 64-контактную конструкцию всего через год и начала предлагать их на рынке до того, как ILLIAC был завершен. [28]
В результате этого изменения отдельные платы ПК увеличились примерно с 1 дюйма (2,5 см) до 6 на 10 дюймов (15 см × 25 см). Это обрекли усилия Берроуза по производству тонкопленочной памяти для машины, поскольку теперь больше не было достаточно места для памяти, чтобы поместиться в корпусах конструкции. Попытки увеличить размер корпусов, чтобы освободить место для памяти, вызвали серьезные проблемы с распространением сигнала. [29] Слотник изучил потенциальные замены и выбрал полупроводниковую память от Fairchild Semiconductor , решение, которое было настолько воспротивилось Берроузу, что последовал полный обзор ARPA. [19]
В 1969 году эти проблемы в сочетании с перерасходом средств из-за задержек привели к решению построить только один квадрант 64-PE, [19] тем самым ограничив скорость машины примерно до 200 MFLOPS. [30] В совокупности эти изменения обошлись проекту в три года и 6 миллионов долларов. [19] К 1969 году проект тратил 1 миллион долларов в месяц, и его пришлось отделить от первоначальной команды ILLIAC, которая все громче выступала против проекта. [31]
К 1970 году машина, наконец, была построена с разумной скоростью, и ее подготовили к поставке примерно через год. 6 января 1970 года студенческая газета The Daily Illini заявила, что компьютер будет использоваться для разработки ядерного оружия. [32] В мае произошли расстрелы в Университете Кента , и в университетских городках вспыхнуло антивоенное насилие. [31]
Слотник стал выступать против использования машины в секретных исследованиях и объявил, что пока она находится на территории университета, вся обработка, которая происходит на машине, будет публично опубликована. Он также все больше беспокоился, что машина может подвергнуться нападкам со стороны более радикальных студенческих групп. [31] позиция, которая казалась мудрой после того, как местные студенты присоединились к общенациональной студенческой забастовке 9 мая 1970 года , объявив «день Иллиакции», [33] и особенно после взрыва 24 августа здания математического факультета в Университете Висконсин-Мэдисон . [34]
С помощью Ганса Марка , директора исследовательского центра NASA Ames в том, что стало Кремниевой долиной , в январе 1971 года было принято решение доставить машину в Ames, а не в университет. Расположенная на действующей базе ВМС США и защищенная морскими пехотинцами США , безопасность больше не была проблемой. Машина была наконец доставлена в Ames в апреле 1972 года и установлена в Центральном вычислительном комплексе в здании N-233. [35] К этому моменту она опоздала на несколько лет и значительно превысила бюджет при общей цене в 31 миллион долларов, что почти в четыре раза больше первоначальной оценки в 8 миллионов долларов для полной машины 256-PE. [31] [2] [d] [e]
NASA также решила заменить фронтальную машину B6500 на PDP-10 , которые широко использовались в Эймсе и значительно упростили бы подключение к ARPAnet. [36] Это потребовало разработки нового программного обеспечения, особенно компиляторов, на PDP-10. Это вызвало дальнейшие задержки в запуске машины в эксплуатацию. [31]
Illiac IV был заключен контракт на управление корпорацией ACTS Computing Corporation со штаб-квартирой в Саутфилде, штат Мичиган, компанией Timesharing and Remote Job Entry (RJE), которая недавно была приобретена конгломератом Lear Siegler Corporation . Министерство обороны заключило контракт с ACTS по контракту с надбавкой к стоимости в размере 10%. Эта необычная договоренность была обусловлена ограничением, согласно которому ни один государственный служащий не мог получать больше, чем конгрессмен, а многие сотрудники Illiac IV получали больше этого лимита. Доктор Мел Пиртл, имеющий опыт работы в Калифорнийском университете в Беркли и Berkeley Computer Corporation (BCC), был нанят в качестве директора Illiac IV.
Когда машина впервые прибыла, ее нельзя было заставить работать. Она страдала от всевозможных проблем, от растрескивания печатных плат до плохих резисторов и упаковки TI IC, которая была очень чувствительна к влажности. Эти проблемы медленно решались, и к лету 1973 года первые программы смогли запуститься на системе, хотя результаты были весьма сомнительными. Начиная с июня 1975 года, начались согласованные четырехмесячные усилия, которые потребовали, среди прочих изменений, замены 110 000 резисторов, перемонтажа деталей для устранения проблем с задержкой распространения, улучшения фильтрации в источниках питания и дальнейшего снижения тактовой частоты до 13 МГц. В конце этого процесса система, наконец, заработала должным образом. [31] [2]
С тех пор система работала с понедельника по пятницу днем, обеспечивая 60 часов бесперебойной работы для пользователей, но требуя 44 часов запланированного простоя. [2] Тем не менее, она все чаще использовалась, поскольку программисты NASA узнавали, как добиться производительности от сложной системы. Сначала производительность была удручающей, большинство программ работали со скоростью около 15 MFLOPS, что примерно в три раза больше среднего для CDC 7600. [ 37] Со временем она улучшилась, особенно после того, как программисты Ames написали свою собственную версию FORTRAN , CFD и научились выполнять параллельный ввод-вывод в ограниченных PEM. На задачах, которые можно было распараллелить, машина по-прежнему была самой быстрой в мире, превосходя CDC 7600 в два-шесть раз, и ее обычно считают самой быстрой машиной в мире до 1981 года. [31]
7 сентября 1981 года, после почти 10 лет работы, ILLIAC IV был выключен. [38] Машина была официально выведена из эксплуатации в 1982 году, и передовое вычислительное подразделение NASA прекратило свое существование вместе с ней. Один блок управления и одно шасси процессорного элемента от машины теперь выставлены в Музее компьютерной истории в Маунтин-Вью, менее чем в миле от ее рабочего места. [39]
ILLIAC был очень поздно, очень дорого и так и не достиг своей цели — произвести 1 GFLOP. Он был широко признан неудачей даже теми, кто работал над ним; один просто заявил, что «любой беспристрастный наблюдатель должен рассматривать Illiac IV как неудачу в техническом смысле». [40] С точки зрения управления проектом он широко признан неудачей, превысившей смету расходов в четыре раза и потребовавшей годы усилий по исправлению положения, чтобы заставить его работать. Как позже выразился сам Слотник:
Я горько разочарован и очень рад... рад и обескуражен. Рад, что общие цели в итоге были достигнуты. Расстроен, что это стоило слишком дорого, заняло слишком много времени, не делает достаточно, и мало людей этим пользуются. [41]
Однако более поздние анализы отмечают, что проект имел ряд долгосрочных последствий для компьютерного рынка в целом, как преднамеренных, так и непреднамеренных. [42]
Среди косвенных эффектов было быстрое обновление полупроводниковой памяти после проекта ILLIAC. Слотник получил много критики, когда он выбрал Fairchild Semiconductor для производства микросхем памяти, так как в то время производственная линия была пустой комнатой, а дизайн существовал только на бумаге. [43] Однако после трех месяцев интенсивных усилий Fairchild выпустила рабочий дизайн в массовом порядке . Как позже прокомментировал Слотник, «Fairchild проделала великолепную работу по вытаскиванию наших каштанов из огня. Память Fairchild была превосходной, и ее надежность по сей день просто невероятно хороша». [29] Считается, что ILLIAC нанес смертельный удар по памяти на магнитных сердечниках и связанным с ней системам, таким как тонкопленочные. [29]
Другой косвенный эффект был вызван сложностью печатных плат (ПП) или модулей. При исходной скорости проектирования 25 МГц импеданс в заземляющей проводке оказался серьезной проблемой, требуя, чтобы ПП были как можно меньше. По мере роста их сложности ПП приходилось добавлять все больше и больше слоев, чтобы избежать увеличения. В конце концов, они достигли глубины в 15 слоев, что оказалось далеко за пределами возможностей чертежников. Проектирование в конечном итоге было завершено с использованием новых автоматизированных инструментов проектирования, предоставленных субподрядчиком, и полное проектирование потребовало двух лет компьютерного времени на мэйнфрейме Burroughs. Это был большой шаг вперед в области автоматизированного проектирования , и к середине 1970-х годов такие инструменты стали обычным явлением. [44]
ILLIAC также привел к крупным исследованиям в области параллельной обработки, которые имели широкомасштабные эффекты. В 1980-х годах, когда цены на микропроцессоры падали в соответствии с законом Мура, ряд компаний создали MIMD (Multiple Instruction, Multiple Data) для создания еще более параллельных машин с компиляторами, которые могли бы лучше использовать параллелизм. Thinking Machines CM-5 является прекрасным примером концепции MIMD. Именно лучшее понимание параллелизма в ILLIAC привело к появлению улучшенных компиляторов и программ, которые могли бы использовать преимущества этих конструкций. Как сказал один программист ILLIAC, «Если кто-то построит быстрый компьютер из множества микропроцессоров, Illiac IV внесет свою лепту в общую схему вещей». [45]
Большинство суперкомпьютеров той эпохи использовали другой подход к повышению производительности, используя один очень высокоскоростной векторный процессор . Подобно ILLIAC в некотором роде, эти конструкции процессоров загружали множество элементов данных в один специализированный процессор вместо большого количества специализированных. Классическим примером такой конструкции является Cray -1 , производительность которого была схожа с ILLIAC. В результате возникло немало «обратной реакции» против конструкции ILLIAC, и некоторое время рынок суперкомпьютеров с презрением относился к конструкциям с массовым параллелизмом, даже когда они были успешными. Как метко заметил Сеймур Крэй : «Если бы вы пахали поле, что бы вы предпочли использовать? Двух сильных вола или 1024 цыплят?» [46]
Каждый квадрант машины имел высоту 10 футов (3 м), глубину 8 футов (2,4 м) и длину 50 футов (15 м). [47] Рядом с квадрантом располагалась система ввода-вывода (I/O), дисковая система которой хранила 2,5 ГиБ и могла считывать и записывать данные со скоростью 1 миллиард бит в секунду , а также компьютер B6700, подключенный к машине через тот же 1024-битный интерфейс, что и дисковая система. [48]
Машина состояла из ряда шасси-носителей, удерживающих ряд небольших модулей. Большинство из них были процессорными блоками (PU), которые содержали модули для одного PE, его PEM и логического блока памяти, который обрабатывал трансляцию адресов и ввод/вывод. PU были идентичны, поэтому их можно было заменять или переупорядочивать по мере необходимости. [49]
Каждый CU имел около 30–40 000 вентилей. [50] CU имел шестнадцать 64-битных регистров и отдельный 64-битный «блокнот», LDB, на шестьдесят четыре слота. Было четыре аккумулятора, от AC0 до AC3, программный счетчик ILR и различные регистры управления. Система имела короткий конвейер инструкций и реализовала опережающий просмотр инструкций . [51]
PE имели около 12 000 вентилей. [50] Он включал четыре 64-битных регистра, использующих аккумулятор A, буфер операндов B и вторичный блокнот S. Четвертый, R, использовался для трансляции или приема данных от других PE. [52] PE использовали сумматор с предпросмотром переноса , детектор ведущей единицы для булевых операций и сдвигатель с циферблатом . 64-битные сложения занимали около 200 нс, а умножения — около 400 нс. PE были подключены к частному банку памяти, PEM, который содержал 2048 64-битных слов. Время доступа составляло порядка 250 нс. [53] PE использовали архитектуру загрузки/хранения . [54]
Набор инструкций (ISA) содержал два отдельных набора инструкций, один для CU (или блока внутри него, ADVAST) и другой для PE. Инструкции для PE не декодировались, а вместо этого отправлялись непосредственно в регистр FINST для отправки в PE для обработки. Инструкции ADVAST декодировались и поступали в конвейер обработки CU. [55]
Каждый квадрант содержал 64 PE и один CU. CU имел доступ ко всей шине ввода-вывода и мог адресовать всю память машины. PE могли получать доступ только к своему локальному хранилищу, PEM, из 2048 64-битных слов. Как PE, так и CU могли использовать операции загрузки и сохранения для доступа к дисковой системе. [48]
Шкафы были настолько большими, что требовалось 240 нс для прохождения сигналов от одного конца до другого. По этой причине CU не мог использоваться для координации действий, вместо этого вся система была синхронизирована по часам, и все операции в PE гарантированно занимали одинаковое количество времени, независимо от операндов. Таким образом, CU мог быть уверен, что операции были завершены, не дожидаясь результатов или кодов состояния. [47]
Для повышения производительности операций, требующих использования выходных данных одного PE в качестве входных данных для другого PE, PE были напрямую подключены к своим соседям, а также к тем, которые находились на расстоянии восьми шагов — например, PE1 был напрямую подключен к PE0 и PE2, а также PE9 и PE45. Соединения на расстоянии восьми шагов обеспечивали более быструю передачу данных, когда данные необходимо было перемещать между более удаленными PE. [48] Каждый сдвиг данных перемещал 64 слова за один тактовый цикл длительностью 125 нс. [47]
Система использовала одноадресный формат, в котором инструкции включали адрес одного из операндов, а другой операнд находился в аккумуляторе PE (регистр A). Адрес отправлялся в PE по отдельной «широковещательной» шине. В зависимости от инструкции значение на шине могло ссылаться на ячейку памяти в PEM PE, значение в одном из регистров PE или числовую константу. [56]
Поскольку каждый PE имел свою собственную память, в то время как формат инструкций и CU видели все адресное пространство, система включала индексный регистр (X) для смещения базового адреса. Это позволяло, например, одному и тому же потоку инструкций работать с данными, которые не были выровнены в тех же местах в разных PE. Распространенным примером был бы массив данных, который загружался в разные места в PEM, которые затем можно было сделать однородными, установив индекс в разных PE. [56]
В традиционных компьютерных конструкциях инструкции загружаются в ЦП по одной за раз по мере их считывания из памяти. Обычно, когда ЦП завершает обработку инструкции, счетчик программ (PC) увеличивается на одно слово и считывается следующая инструкция. Этот процесс прерывается ветвлениями , что заставляет ПК переходить в одно из двух мест в зависимости от теста, например, содержит ли данный адрес памяти ненулевое значение. В конструкции ILLIAC каждый PE будет применять этот тест к разным значениям и, таким образом, иметь разные результаты. Поскольку эти значения являются частными для PE, следующие инструкции должны быть загружены на основе значения, известного только PE. [57]
Чтобы избежать задержек, которые могла вызвать перезагрузка инструкций PE, ILLIAC загружал PEM инструкциями с обеих сторон ветви. Логические тесты не изменяли PC, вместо этого они устанавливали «биты режима», которые сообщали PE, следует ли запускать следующую арифметическую инструкцию. Чтобы использовать эту систему, программа должна была быть написана так, чтобы один из двух возможных потоков инструкций следовал за тестом и заканчивался инструкцией инвертировать биты. Затем следовал код для второй ветви, заканчивающийся инструкцией установить все биты в 1. [57]
Если тест выберет «первую» ветвь, то PE продолжит работу как обычно. Когда он достигнет конца этого кода, инструкция оператора режима перевернет биты режима, и с этого момента этот PE будет игнорировать дальнейшие инструкции. Это будет продолжаться до тех пор, пока он не достигнет конца кода для второй ветви, где инструкция сброса режима снова включит PE. Если тест конкретного PE приведет к выбору второй ветви, он вместо этого установит биты режима на игнорирование дальнейших инструкций, пока не достигнет конца первой ветви, где оператор режима перевернет биты и заставит вторую ветвь начать обработку, снова включив их все в конце этой ветви. [57]
Поскольку PE могут работать в 64-, 32- и 8-битных режимах, флаги режима имели несколько бит, поэтому отдельные слова могли быть включены или выключены. Например, в случае, когда PE работал в 32-битном режиме, одна «сторона» PE могла иметь тест, который выходил истинным, в то время как другая сторона была ложной. [57]