Транспьютеры

Транспьютер (transputer = transfer (передатчик) + computer (вычислитель)) является элементом построения многопроцессорных систем, выполненном на одном кристалле СБИС (рис. 3.7, а). Он включает средства для выполнения вычислений (центральный процессор, АЛУ для операций с плавающей запятой, внутрикри-стальную память объемом 2...4 кбайта) и 4 канала для связи с дру-гими транспьютерами и внешними устройствами. Встроенный интерфейс позволяет подключать внешнюю память объемом до 4 Гбайт.

Рис. 3.7.Структура транспьютера и систем на его основе

Для образования транспьютерных систем требуемого размера каналы различных транспьютеров могут соединяться непосредственно (рис. 3.7, б, в) или через коммутаторы типа координатный переключатель на 32 входа и выхода, который обеспечивает одно-временно 16 пар связей (рис. 3.7, г). Такие переключатели могут настраиваться программно или вручную и входят в комплект транспьютерных СБИС.

Размер транспьютерных систем не ограничен, а структура системы может быть сетевой, иерархической или смешанной.

Организация транспьютеров основана на языке Оккам (Occam), разработанном под руководством Хоара (C.A.R.Hoar) в 1984 году. Основой языка являются: средства описания параллелизма выполняемых процессов; средства описания межпроцессорного обмена данными; средства описания размещения процессов по единицам оборудования. Дооплнительные сведения можно найти в книге Г.И. Шпаковского.

Организация транспьютеров.

Состав оборудования транс-пьютера представлен на рис. 3.7. Рассмотрим особенности его структуры.

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

АЛУ транспьютера, а значит, и система команд строятся по стековому принципу. На рис. 3.10 представлена регистровая структура центрального процессора.

Рис. 3.10. Обработка параллельных процессов

В ЦП используются 6 регистров по 32 разряда каждый:

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

Наличие вычислительного стека устраняет необходимость задания в командах явного указания регистра. Например, команда ADD складывает значения из регистров A и B, помещает результат в A и копирует C в B. Поэтому большинство команд транспьютера (70-80%) являются однобайтовыми.

В транспьютере, кроме вычислительного стека ЦП для цело-численной арифметики, имеется стек для работы над данными с плавающей запятой с регистрами AF, BF, CF.

Список команд транспьютера включает 110 команд. Они де-лятся на две группы: с прямой адресацией (один байт) и с косвен-ной адресацией (два или более байтов).

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

Активные процессы, ожидающие выполнения, помещаются в планировочный список. Планировочный список является связным списком рабочих областей этих активных процессов в памяти и задается значениями двух регистров, один из которых указывает на первый процесс в списке, а другой - на последний. Состояние процесса, готового к выполнению, сохраняется в его рабочей области. Состояние определяется двумя словами - текущим значением указателя инструкций и указателем на рабочую область сле-дующего процесса в планировочном списке. В ситуации, изображенной на рис. 3.10, имеется четыре активных процесса, причем процесс S выполняется, а процессы P, Q и R ожидают выполнения в планировочном списке.

Команда транспьютера start process создает новый активный процесс, добавляя его в конец планировочного списка. Перед выполнением этой команды в A-регистр вычислительного стека должен быть загружен указатель инструкций этого процесса, а в B-регистр - указатель его рабочей области. Команда start process позволяет новому параллельному процессу выполняться вместе с другими процессами, которые транспьютер обрабатывает в данное время.

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

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

Коммуникации между параллельными процессами осуществляются через каналы. Для организации этого объема используются команды транспьютера "input message" и "output message". Эти команды используют адрес канала, чтобы установить, является он внутренним (в том же транспьютере) или внешним. Внутренний канал реализуется одним словом памяти, а обмен осуществляется путем пересылок между рабочими областями этих процессов в памяти транспьютера.

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

Рассмотрим пересылку данных по внешнему каналу. Команда пересылки направляет автономному канальному интерфейсу задание на передачу данных и приостанавливает выполнение процесса.

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

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

В следующем примере процессы P и Q, которые выполняются на различных транспьютерах, обмениваются данными по внешнему каналу C, реализованному в виде линии связи, соединяющей эти два транспьютера (рис. 3.11).

Рис. 3.11. Пересылка данных по внешнему каналу

Пусть P передает данные, а Q принимает (рис. 3.11, а). Когда процесс P выполняет команду output message, регистры канального интерфейса транспьютера, на котором выполняется P, инициализируются, а процесс P прерывается и становится неактивным. Аналогичные действия происходят в другом транспьютере при выполнении процессом Q команды input message (рис. 3.11, б).

Когда оба канальных интерфейса инициализированы, происходит копирование данных по межтранспьютерной линии связи. После этого процессы P и Q становятся активными и возвращаются в свои планировочные списки (рис. 3.11, в).

Для пересылки данных используется простой протокол, не зависящий от разрядности транспьютера, что позволяет соединять транспьютеры разных типов.

Сообщения передаются в виде отдельных пакетов, каждый из которых содержит один байт данных, поэтому наличие буфера в один байт в принимающем транспьютере является достаточным для исключения потерь при пересылках.

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

Рис. 3.12. Форматы пакетов данных и пакетов подтверждения

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

В последних модификациях транспьютеров для упрощения программирования и увеличения пропускной способности физиче-ских каналов связи используется процессор виртуальных каналов VCP (Virtual Chanal Processor). VCP позволяет использовать на этапе программирования неограниченное число виртуальных каналов.

ХАРАКТЕРИСТИКИ ТРАНСПЬЮТЕРОВ

Транспьютеры выпускаются фирмой INMOS, начиная с 1985 года. За исключением транспьютера Т212, который имеет только две связи и 16-разрядные АЛУ, все остальные типы транспьютеров имеют 4 связи и 32 или 64-разрядные АЛУ.

Система команд транспьютеров относится к классу CISC.

В семействе транспьютеров только Т9000 является суперскалярным, то есть может выполнять более 1 команды за такт. Он имеет следующие особенности:

  1. Введен 5-ступенчатый конвейер: выборка команды, генерация адреса, выборка операнда из памяти, операция АЛУ-I/АЛУ-F, запись результата.
  2. В Т9000 возможно одновременное выполнение нескольких команд как за счет конвейеризации, так и за счет распараллеливания операций на ступенях конвейера. Так, ступень 1 позволит извлечь значения двух локальных переменных, ступень 2 - вычислить два адреса, ступень 3 - извлечь два значения из памяти.
  3. Внутренняя память имеет объем 16 Кбайт и в зависимости от необходимости может использоваться как КЭШ или адресная память.
  4. Введено устройство группирования команд, которое выявляет пары параллельных инструкций в процессе исполнения программы.
  5. Введен блок виртуальных каналов, число которых для пользователя не ограничено. Аппаратура динамически преобразует номера виртуальных каналов в номера физических каналов. В результате введения виртуальных каналов значительно возросла загрузка физических каналов.
  6. В комплект Т9000 входит микросхема коммутатора IMS C104, которая имеет 32x32 неблокируемых одноразрядных линий. С104 принимает на вход линии заголовков передаваемого пакета, за 700 нс по заголовку определяет точку выхода пакета, подключает этот выход и передает сообщение в темпе работы связей Т9000. С104 позволяет строить многотранспьютерные системы практически неограниченного размера.

Транспьютер Т9000 выпущен в серию в 1994 году. Назначение - резко поднять быстродействие за счет суперскалярной обработки и тем самым восстановить позиции в конкурентной борьбе с новыми RISC-МП.

В состоянии разработки находится новый транспьютер Hameleon (1996 год).

В комплект транспьютерных наборов входят вспомогательные кристаллы: IMS C011, C012 - для связи с ПЭВМ, коммутато-ры С004, C104, ряд контроллеров.

Транспьютеры используются как для построения мощных многотранспьютерных систем (сотни и тысячи транспьютеров), так и для построения акселераторов для ПЭВМ. В области акселераторов работают фирмы: INMOS (семейство плат TRAM), Microway (Biputer, Quadputer), Quintek (Fast4, Fast9, Fast17) и другие.

Ниже в таблице приводятся некоторые характеристики транспьютеров.


N пп

Тип транспьютера, год

Состав АЛУ, объем внутренней памяти

Частота синхронизации, МГц

Быстродействие

Число транзисторов, млн

1

Т414 (1985)

АЛУ-I-32 разр. 2 Кбайт

15 20 10

Мипс 0,1 МФлопс

0,2

2

Т800

АЛУ-I-32 разр. АЛУ-F-64 разр.4 Кбайт

20 30

2,2 МФлопс

0,3

3

Т9000 (1995)

АЛУ-I-32 разр. АЛУ-F-64 разр. 16 Кбайт

20 40 50

200 Мипс 25 МФлопс

3,3

Примечание: АЛУ-I, АЛУ-F - соответственно АЛУ для целочисленной и плавающей арифметики


Составлено по материалам книги Г.И. Шпаковский. Организация параллельных ЭВМ и суперскалярных процессоров