Архитектура и структура транспьютеров фирмы Inmos

Лекция 12.

Мультипроцессорные системы управления. Транспьютеры - элементная база мультипроцессорных систем

Основные особенности транспьютеров


Концепция параллелизма давно привлекала внимание специалистов своими потенциальными возможностями повышения производительности и надежности вычислительных систем. В нашей стране с 60-х годов вы­полнялись теоретические, экспериментальные и промышленные разработ­ки в этом направлении. Именно с подобными системами связывается в настоя­щее время перспектива дальнейшего наращивания производительности. Исторически первой промышленной разработкой, ориентирован­ной на массово-параллельные системы стали транспьютеры.

Транспьютер - это микрокомпьютер с собственной внутренней памя­тью и линками (каналами) для соединения с другими транспьютерами. Термин "транспьютер", произошедший в результате объединения слов "транзистор" и "компьютер", отражает основную область его примене­ния - массово-параллельные вычислительные системы, в которых он игра­ет роль базового вычислительного элемента. Некоторые специалисты понимают термин "транспьютер" как назва­ние конкретного продукта фирмы Inmos, другие трактуют его как обоб­щенное наименование микропроцессоров со встроенными межпроцессор­ными интерфейсами. Используется также термин "транспьютеро-подобный микропроцессор", чтобы, с одной стороны, подчеркнуть, что речь идет не о продукте фирмы Inmos, а, с другой стороны, указать, что микропроцес­сор имеет встроенные линки для образования параллельных систем. Вполне возможно, что стремительное развитие микроэлектроники не позволит термину "транспьютер" устояться, и он будет поглощен более общим -микропроцессор, так как отличительный признак транспьютера - встро­енные межпроцессорные интерфейсы - появятся в том или ином виде у всех микропроцессоров.

Первый транспьютер - Т414 - был представлен фирмой Inmos, Inc. (Бри­столь, Великобритания) в 1983 г. Его основные характеристики:

• разрядность - 32 бит;

• объем внутренней памяти - 2 Кбайта;

• число коммуникационных каналов (линков)- 4;

• скорость обмена по линку - 5, 10, 20 Мбит/с;

• тактовая частота - внешняя - 5МГц, внутренняя - 15 МГц;

• производительность - 10 MIPS.

Широкую доступность и известность транспьютеры получили с 1985 г. Были выпущены модификации с большим объемом памяти (4 Кбайт) и более высокой тактовой частотой - семейство Т-4: Т424, Т425 - 20, 25 и 30 МГц, 16-разрядные модификации - семейство Т-2: Т212, Т222, транспью­теры со встроенным устройством выполнения операций с плавающей точ­кой - семейство Т-8: Т800, Т801, Т805. Производительность этих микро­процессоров достигает 30 MIPS и 4,3 MFLOPS. Выпускается ряд периферийных устройств транспьютерных семейств, к числу которых относятся микросхемы: М212 - контроллер НЖМД стан­дарта ST506, G412 - графический RGB-контроллер, С004 - программируе­мые 32-канальные коммутаторы и др.

Высокая степень "функциональной самостоятельности" транспьюте­ра, простота интеграции и наличие периферийных устройств позволяют в короткие сроки создавать системы на их основе. Коммуникационные ка­налы транспьютера могут осуществлять обмен данными одновременно с вычислениями, практически не снижая производительности процессора. Благодаря этому качеству транспьютеров системы на их основе обладают хорошей масштабируемостью и высоким значением показателя эффектив­ности - производительность/стоимость.
^

Архитектура и структура транспьютеров фирмы Inmos


Архитектура семейств Т-2, Т-4, Т-8

Транспьютеры относятся к классу RISC- процессоров. Система команд транспьютеров ориентирована на поддержку языка высокого уровня -ОККАМ (OCCAM). Это язык параллельного программирования, по­зволяющий задавать параллельные вычисления в соответствии с моделью взаимодействующих последовательных процессов (CSP). Программа на языке ОККАМ представляет собой совокупность асинхронных совме­стно протекающих взаимодействующих процессов, выполняющихся асин­хронно и параллельно. Под процессом понимается ход исполнения про­граммного кода некоторой программы или фрагмента программы. Взаи­модействие между процессами реализуется путем обмена данными по прин­ципу "рандеву". В транспьютере данная модель параллельных вычисле­ний поддерживается благодаря наличию аппаратно-реализованного дис­петчера, обеспечивающего выполнение параллельных процессов в режи­ме квантования времени. Причем количество одновременно выполняемых процессов не ограничено.

Мультипроцессорная система на базе транспьютеров представляет со­бой совокупность транспьютеров, соединенных линиями связи (непосред­ственно или через коммутатор).

Существенно упростить программирование мультипроцессорных ВС на базе транспьютеров позволяет тот факт, что одинаковая модель параллель­ных вычислений поддерживается как внутри отдельного транспьютера, так и в рамках мультитранспьютерной системы в целом. Благодаря этому програм­ма, разрабатываемая для мультипроцессорной системы, может быть создана и отлажена на одном единственном процессоре, а затем перенесена на сеть транспьютеров без существенных преобразований. Исключение составляет ограничение числа каналов связи процесса с процессами, протекающими на другом транспьютере. Это ограничение преодолено в транспьютере Т-9000.

Обобщенная структура транспьютера Т800 приведена на рис. 76. На этом же рисунке показаны архитектурные регистры процессора, управляю­щие структуры процессов и распределение их рабочих областей памяти.

В зависимости от модели, транспьютер состоит из 32- или 16-разряд­ного центрального процессора, интерфейса внешней памяти, 2 или 4 дву­направленных каналов - линков, программируемого блока событий (Event), таймера, внутреннего ОЗУ емкостью 2 или 4 Кбайт, блока режимов рабо­ты линков, блока системных функций. Некоторые модели могут содер­жать 64-разрядное устройство операций с плавающей точкой и (или) ин­терфейсные схемы внешних устройств, такие как НЖМД, ЭЛТ, сетевой адаптер. (Контроллеры внешних устройств обычно выполняются на кри­сталле вместо двух линков).

Центральный процессор

32-разрядный центральный процессор транспьютера работает на так­товой частоте до 30 МГц, формируемой из опорной внешней тактовой частоты 5 МГц внутренней схемой умножения. Внутренняя структура цен­трального процессора показана на рис. 77.

Аппаратный планировщик (диспетчер) центрального процессора ор­ганизует одновременное (в режиме разделения времени) выполнение не­скольких процессов. Каждому процессу в момент его создания в адресном пространстве транспьютера выделяется выровненная по границе слова рабочая область памяти и устанавливается приоритет. В транспьютере реализована двухуровневая схема приоритетов: 0 - высокий приоритет процесса, 1 - низкий приоритет. Объединение адреса рабочей области и приоритета образует дескриптор процесса.

Центральный процессор содержит два регистра-таймера, для низко- и высокоприоритетных процессов. Высокоприоритетный регистр инкрими­нируется каждую 1 мкс, низкоприоритетный - каждые 64 мкс.

Архитектура и структура транспьютеров фирмы Inmos - student2.ru

Рис. 76. Структура транспьютера Т800

Регистр W транспьютера указывает на рабочую область процесса, а в реги­стре указателе команды находится адрес следующей выполняемой команды.

Регистры общего назначения А, В, С, образуют регистровый стек ss память с дисциплиной доступа FIFO. АЛУ выполняет логические и ариф­метические операции над операндами, содержащимися в регистровом сте­ке. Операнды помещаются в стек через его вершину - регистр А. При за­грузке данных в А его содержимое переносится в В, содержимое В в С, а содержимое последнего теряется. Результаты операций также формиру­ются в регистре А, при этом содержимое регистра С "выталкивается" в регистр В и становится неопределенным.

Система команд транспьютера

Все команды транспьютера однобайтовые и выполняются за один такт процессора. Структура команды показана на рис. 76. Старшие 4 разряда -код команды, младшие 4 разряда используются для формирования опе­ранда команды или кода команды в регистре операнда - О.

Операции, реализуемые командами транспьютера, подразделяются на первичные и вторичные. 13 наиболее употребительных первичных опера­ций, такие, например, как сложение с константой со значением в диапазо­не 0 -15, безусловный переход, загрузка (запись) слова и т.п. Еще 3 коман­ды (мнемокоды pfix, nfix, opr) используются для реализации вторичных операций. Код вторичной операции формируется командами pfix, nfix и opr в регистре О, а операнды содержатся в регистрах.

Выполнение команд

Команды выбираются из памяти транспьютера и помещаются в буфер команд центрального процессора. За один такт выбирается 2 команды в Т-414 и 4 команды в Т-800.

Выполнение большинства команд осуществляется в три этапа:

1. Операнд команды помещается в младшие 4 разряда регистра опе­ранда- О;

2. Выполняется операция, задаваемая кодом команды. Содержимое регистра О интерпретируется как операнд.

3. Очищается регистр операнда - О.

Исключение составляют команды pfix, nfix и орr.

Команда pfix на этапе 2 осуществляет сдвиг содержимого О на 4 разря­да влево и не очищает регистр О на этапе 3. Команда nfix выполняется так же, как и pfix, но перед сдвигом О помещает туда арифметическое допол­нение его содержимого.

Поскольку после выполнения команд pfix и nfix содержимое О не очи­щается, последовательность команд pfix и nfix позволяет формировать в регистре О операнды с разрядностью до 32. Требуемая последовательность команд минимальной длины формируется компилятором.

Команда opr интерпретирует содержимое О как код вторичной опера­ции. В этом случае операнды содержатся в регистрах процессора. Код вто­ричной операции, таким образом, задается как операнд первичной опера­ции opr и может иметь до 232 различных значений. В существующих на сегодняшний день моделях транспьютеров используется около сотни вто­ричных операций.

Использование сопроцессора

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

Модуль операций с плавающей точкой, как показано на рис. 77, со­стоит из двух блоков: блока мантиссы и блока порядка со своим набором регистров (два регистровых стека). Все команды с плавающей точкой под­разделяются на два класса: полностью самостоятельные команды, никак не влияющие на состояние центрального процессора, и команды, пересы­лающие результаты выполнения операции в центральный процессор.

После передачи команды на исполнение в сопроцессор центральный процессор продолжает выполнение потока команд, если это команда от­носится к первому классу, или ожидает получения результата, если это ко­манда второго класса.

Распределение памяти транспьютера

Транспьютер может адресовать до 232 байт (4 Гбайт). Особенностью транспьютера является начало адресов в области отрицательных значе­ний. Младший адрес в дополнительном коде соответствует значению (80000000…).

Структурно (конструктивно) вся оперативная память подразделяется на внутрикристальную и внешнюю. Объем внутрикристальной памяти составля­ет 4 (2) Кбайт (в зависимости от модели транспьютера). Архитектурно (с точки зрения программиста) вся память транспьютера, как внешняя, так и внутрикристальная, равнодоступна и имеет единую адресацию. Внутрикристальной памяти соответствуют младшие адреса, а внешней памяти - старшие.

Поскольку внутрикристальная память имеет меньшее время доступа (один такт процессора), в нее обычно помещаются программистом часто используемые данные и подпрограммы. Пример распределения памяти показан на рис 76.

Несколько слов в младших адресах памяти используется для специаль­ных целей: для слов состояния аппаратных каналов - линков, блока Event, регистров таймера, в качестве рабочих областей памяти диспетчера.

Диспетчеризация процессов

Каждый из процессов в конкретный момент времени может быть вы­полняемым, активным (готовым к выполнению в очереди соответствующего приоритета), ожидающим сигнала таймера (в очереди к таймеру соответствующего приоритета), ожидающим ввода-вывода.

Для выполняемого процесса регистр I содержит адрес следующей ко­манды, регистр W содержит его дескриптор.

Для организации очереди процессов на выполнение (очередь актив­ных процессов) в диспетчере используются пары регистров FptrO, BptrO, Fptrl, Bptrl, указывающие на начало и конец очереди высоко- и низко­приоритетных процессов соответственно. В качестве элементов очередей используются рабочие области процессов, содержащие помимо данных процесса, управляющую информацию, требующуюся для сохранения и восстановления состояния процессов на этапе диспетчеризации (в том числе ссылку на рабочую область следующего процесса в очереди).

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

Высокоприоритетный процесс не прерывается и выполняется до тех пор, пока это возможно (до завершения или до момента ожидания ввода-вывода, сигнала таймера или сигнала внешнего события, выдаваемого блоком Event). Если высокоприоритетный процесс становится активным (например, получает сигнал таймера) в момент выполнения процесса с низким приоритетом, последний прерывается, его состояние сохраняется в области зарезервированных адресов памяти транспьютера и иницииру­ется выполнение прервавшего высокоприоритетного процесса. После его выполнения возобновляется прерванный низкоприоритетный процесс.

Ввод-вывод

Ввод-вывод для процессов в транспьютере организуется одинаковым образом как в случае использования аппаратных линков (внешний ввод-вывод), так и в случае использования виртуального линка (обмен между процессами одного транспьютера). В обмене всегда участвуют только два процесса: один вводит данные, другой выводит.

В момент выполнения команды описания канала и после завершения каждого обмена слово состояния канала (ССК) инициализируется констан­той Minint. Процесс, первым выполняющий команду обмена, приостанавливается и проверяется содержимое канала. Если оно Minint, то в ССК заносится дескриптор процесса, а в рабочую область процесса поме­щаются значение W и адрес передаваемых данных, после чего управление передается диспетчеру для планирования выполнения других процессов.

Если содержимое ССК не Minint, значит данный процесс "пришел" на "рандеву" вторым. В этом случае содержимое ССК - дескриптор процес­са, используя который находятся данные в случае ввода или буфер для данных в случае вывода.

Обмен по линкам осуществляется аналогично, с той разницей, что ССК имеют фиксированные адреса в памяти 80000000 - 8000001C,g, и в процессе обмена данные не пересылаются между областями памяти, а передаются по линии связи в стартстопном режиме с квитированием байтов.

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

Архитектура и структура транспьютеров фирмы Inmos - student2.ru Рис. 77. Внутренняя структура функциональных блоков транспьютера
Передача данных по линку

Все семейства транспьютеров Т-2 (Т-212, Т-222, Т-225), Т-4 (Т-414, Т-400, Т-425), Т-8 (Т-800, Т-801. Т-805) используют один и тот же протокол передачи данных по линкам. Взаимодействие между транспьютерами осу­ществляется посредством обмена сообщениями, состоящими из последо­вательности байтов. Данные передаются по одному проводу из пары про­водов. По другому проводу пары передаются подтверждения приема каж­дого байта.

Байт передается в обрамлении служебных битов, начиная со стартово­го бита, далее следует управляющий бит, а затем 8 информационных би­тов и столовый бит. Таким образом, на 8 информационных битов прихо­дится 3 управляющих, поддерживающих протокол передачи. На рис. 78. показан пример передачи по линку.

Архитектура и структура транспьютеров фирмы Inmos - student2.ru

Рис. 78. Передача данных по линку транспьютера

После передачи байта отправитель ждет подтверждения, которое со­стоит из стартового и управляющего бита. Причем если при передаче информационного байта управляющий бит равен 1, то в подтверждении он равен 0. При этом байты данных и подтверждения для переданных в про­тивоположном направлении байтов данных передаются по одному про­воднику. Подтверждения имеют приоритет перед байтами данных. Мож­но установить режим, при котором подтверждения начинают передавать­ся сразу после получения стартового и управляющего битов, что приво­дит к передаче байтов без задержки между ними.

Если один из обменивающихся через линк процессов не готов к приему данных, байты накапливаются в регистре данных линка. При заполнении регистра подтверждение после получения очередного байта не выдается, и передающий линк приостанавливает передачу до приема данных про­цессом и освобождения регистра линка.

При инициации передачи первого байта сообщения существует задерж­ка на настройку каналов прямого доступа в передающем и приемном транс­пьютерах, что обусловливает разную скорость при передаче коротких (от единиц до нескольких десятков байтов) и длинных (несколько тысяч бай­тов) сообщений. В первом случае скорость составляет 2-4 Мбит/с, во вто­ром - максимально возможную 10-20 Мбит/с, в зависимости от настройки передающего и принимающего транспьютеров.

Передача по линку асинхронна, приемный транспьютер не чувствителен к фазе принимаемых сигналов. Единственное, что требуется - точный кварце­вый генератор 5 МГц для задания тактовых сигналов транспьютеров.

Блок режимов работы линков позволяет задавать скорость передачи по линкам транспьютера (5, 10, 20 Мбит/с), причем для нулевого линка ско­рость устанавливается независимо от остальных. Установка осуществляет­ся подачей соответствующих уровней на входы LinkSpecial, LinkOSpecial, Linkl23Special.

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

Ожидание сигнала от блока событий

Блок событий (Event) выполняет преобразование внешних логиче­ских уровней на входе блока в байтовое сообщение со значением 0 или 1, передаваемое по внутреннему каналу. Поэтому программно блок Event воспринимается как специальный канал, отличием которого от обычного канала является то, что из этого канала можно только "чи­тать". ССК для блока Event имеет фиксированный адрес 80000020 Ожидать ввода из канала Event может одновременно только один про­цесс в транспьютере.

Обычно Event используется для регистрации внешних прерывании в транспьютерной системе. Сигнал прерывания подается на вход транспью­тера EventReq. Подтверждение приема сигнала прерывания (чтение из канала Event) выдается в виде уровня 1 по линии EventAck.

Ожидание сигнала от таймера

Программно таймер воспринимается как канал только для чтения, вы­дающий либо содержимое регистра таймера с соответствующим приори­тетом, либо сигнал наступления ожидаемого момента времени.

Все процессы, ожидающие наступления некоторого момента времени (истечения временного интервала) помещаются в очередь к таймеру, соот­ветствующему их приоритету. Очередь процессов отсортирована в поряд­ке наступления ожидаемого момента времени и организована с помощью ссылок между служебными словами в рабочей области процессов. Адрес первого процесса в очереди соответствующего приоритета содержится в служебных словах транспьютера (TPtrLocO, TPtrLocI), в младших адресах памяти. При достижении ожидаемого момента времени диспетчеру пере­дается дескриптор соответствующего процесса для его перевода в конец очереди активных процессов.

Инициализация системы после включения питания

Транспьютер и его ОЗУ построены по КМОП-технологии и не сохра­няют своего состояния после отключения питания. Поэтому после вклю­чения питания для начала функционирования в транспьютер необходимо загрузить некоторый минимум программного обеспечения. Транспьютер может быть загружен как из внешнего ПЗУ, так и из любого линка. Для указания режима начальной загрузки используется вывод BootFromROM. Если уровень BootFromROM равен 1, то управление передается по адресу FFFFFFFE, по которому обычно содержится команда безусловного пе­рехода на программу начальной загрузки.

Если BootFromROM равен 0, то производится загрузка из линка. По­сле включения питания транспьютер переходит в состояние ожидания прие­ма данных по линкам. Первый байт, принятый по любому из линков, управ­ляет дальнейшим режимом работы транспьютера. Если его значение боль­ше 1, то он интерпретируется как длина кода программы, принимаемой следом за ним. Принимаемые данные записываются в память транспьюте­ра начиная с адреса MemStart, с него же и начинается выполнение про­граммы. Как правило, первой загружается программа начальной загруз­ки транспьютера, которая обеспечивает загрузку остального программ­ного обеспечения.

Если первый принятый управляющий байт равен 0 или 1, то транспью­тер переходит в режим управления памятью.

Управляющий байт, равный 0, заставляет транспьютер интерпретиро­вать следующие 4 байта как адрес памяти, по которому в память будет за­писано слово, поступившее как следующие 4 байта. После этого транспью­тер снова переходит в режим управления памятью, из которого его может вывести лишь прием управляющего байта со значением, большим 1.

Если управляющий байт равен 1, следующие 4 байта задают адрес слова памяти, которое будет считано и передано как 4 байта по тому же линку, из которого поступили в противоположном направлении предыдущие 4 бай­та. После этого транспьютер остается в режиме управления памятью.

Режим управления памятью используется обычно для целей отладки.

Управление системой

Появление уровня 1 на входе Analyze переводит транспьютер, рабо­тающий по программе, в режим управления памятью. Как уже было ска­зано выше, в этом режиме может быть считано и изменено состояние па­мяти транспьютера.

Обработка ошибок

Программные ошибки, такие как арифметическое переполнение, де­ление на 0, выход за границы массива, вызывают установку в транс­пьютере флага error и появление сигнала на выходе Error. Флаг режима обработки ошибок транспьютера - HaltOnError - позволяет определять поведение транспьютера в случае ошибки (установки флага error): если был задан режим остановки (HaltOnError 1), то в случае возникнове­ния ошибки устанавливается еденица на выходе Error и транспьютер останавливается; если была выполнена установка HaltOnError=0, то в случае ошибки устанавливается в еденицу флаг error, однако транспью­тер продолжает работать.

В мультипроцессорных системах выводы Analyze, Reset, Error, Errorin всех транспьютеров обычно соединены согласно схеме, представленной на рис. 79. При такой схеме соединения появление сигнала Error на выво­де любого транспьютера переводит всю систему в режим управления па­мятью. Соответствующие программы в хост-машине позволят определить состояние системы и пути преодоления ошибочной ситуации.

Архитектура и структура транспьютеров фирмы Inmos - student2.ru

Наши рекомендации