home   contents  previous      next        up

Модуль управления транспьютером

Модуль Управление транспьютером (System services) включает в себя средства инициализации и поддержания операций транспьютера, управления ошибками и анализа состояния транспьютера. Этот модуль обслуживает ниже описываемые сигналы.

Все транспьютеры фирмы INMOS имеют Входной Тактовый Сигнал (ClockIn) с частотой 5 МГц, которая не зависит от длины машинного слова и быстродействия транспьютера (ширина импульса - 200 нс). Входной тактовый сигнал служит для формирования всех внутренних тактовых сигналов транспьютера. Требуемая частота реализуется имеющимся в составе транспьютера умножителем частоты.

Скорость транспьютера IMS T805 может принимать несколько дискретных значений. Желаемая скорость процессора выбирается с помощью трех линий Выбора Скорости (ProcSpeedSelect0-2), которые определяют изменение тактовой частоты транспьютера. Управление выбором скорости непосредственно недоступно. При построении транспьютерных модулей на этих линиях устанавливают соответствующие высокий или низкие сигналы, определяющие производительность транспьютера. Можно установить следующие значения тактовой частоты процессора: 17.5, 20.0, 22.5, 25.0, 30.0, 35.0 МГц

Сигнал Инициализация (Reset) инициализирует транспьютер, запускает последовательность конфигурирования внешней памяти, вызывает программу начальной загрузки. После сброса сигнала Инициализация выполняется последовательность действий, позволяющая определить конфигурацию интерфейса памяти и провести ее регенерацию. Программа начальной загрузки транспьютера либо считывается из внешней памяти, либо поступает по одному из каналов. Перед началом исполнения программы начальной загрузки процессор находится в состоянии с низким приоритетом. Если после подачи сигнала Инициализация, но до того как он будет сброшен, выставлен сигнал Начальная Загрузка из ПЗУ (BootFromRom), то транспьютер начинает работу с двух байт внешней памяти, расположенных по адресу #7FFFFFFE. Эта ячейка должна содержать переход на программу начальной загрузки в ПЗУ.

Если сигнал Начальная Загрузка из ПЗУ не был подан, то транспьютер будет ожидать поступления сообщения по какому-нибудь входному каналу. Сообщение состоит из управляющего байта, за которым следуют данные. Управляющий байт определяет длину (в байтах) пакета данных и действие, которое должно быть выполнено при получении сообщения.

Если первый байт, поступивший по некоторой линии связи, содержит значение n>1, то считается, что n - это количество байт в программе начальной загрузки. Следующие за пакетом n байт считываются и помещаются во внутреннею память, начиная с адреса #80000070 (MemStart). После получения последнего байта программы начальной загрузки транспьютер начинает ее выполнение с этого адреса. Пространство памяти непосредственно выше загруженной программы используется как пространство рабочих данных. Сообщения, поступившие на этот канал после приема программы загрузки, и сообщения, поступившие на другие каналы после приема управляющего байта, будут сохранятся, пока какой-нибудь процесс не считает их. Пока транспьютер ожидает поступления по каналам программы начальной загрузки, можно исследовать и изменять содержимое любой ячейки памяти.

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

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

После считывания или записи слова транспьютер возвращается в исходное состояние, ожидая следующее сообщение.

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

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

Выходной сигнал Ошибка (Error) представляет логическую сумму значений внутреннего флага Ошибка (Error flag) и входного сигнала Внешняя Ошибка (ErrorIn). Сигнал Внешняя Ошибка непосредственно не воздействует на состояние процессора. Транспьютер располагает словом Состояния процессора (STATUS word), которое содержит различные флаги управления процессором, в частности, флаги Ошибка и ОстановПоОшибке (HaltOnError). Флаг Ошибка выставляется, например, при арифметических ошибках, не корректной адресации памяти. Его можно устанавливать, сбрасывать и тестировать непосредственно командами транспьютера. Процесс можно запрограммировать так, чтобы он останавливался при вызванном им подъеме флага Ошибки. Флаг Ошибка связан с уровнем приоритета. Если выставлен флаг ОстановПоОшибке, то при возникновении ошибки будет остановлены все процессы транспьютера, каналы перед отключением завершат поступившие запросы. Если после этого подан сигнал Анализ, то входные каналы продолжат работу, а выходные каналы больше не смогут обращаться к памяти и завершат работу, передав содержимое буфера канала.

Аналогично останову при Анализ-последовательности, в регистры транспьютера будет помещена информация о его состоянии на момент обнаружения ошибки:
IptrMemStart при загрузке по линии связи, иначе (загрузка из ПЗУ) адрес вектора загрузки.
WdescMemStart при загрузка из ПЗУ, иначе (загрузка по линии связи) адрес первого свободного слова за программой начальной загрузки.
AregIptr на момент останова процессора. При останове по ошибке Iptr указывает на два байта далее команды, вызвавшей ошибку, а при останове по сигналу Анализ Iptr указывает на один байт далее команды, обрабатывавшейся на момент подачи сигнала.
BregWdesc на момент останова процессора.
Cregномер линии связи при загрузке по линии связи.

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

Сигналы Инициализация, Анализ и Ошибка называются системными управляющими сигналами (System services). Объединительные вычислительные платы фирмы INMOS имеют общую схему распространения этих сигналов по сети транспьютеров. Каждая плата имеет три порта коммутации системных сигналов: От_Предыдущей (Up), К_Следующей (Down) и Собственные(Subsystem). На порт От_Предыдущей подаются системные сигналы от внешнего источника (внешние системные сигналы). Эти сигналы можно подать на все ТРАМы платы и передать на следующие платы. Это позволяет контролировать всю сеть сигналами от одного источника. Порт Собственные вычислительной платы соединен с внутренней шиной корневого транспьютера и контролируется регистрами, размещенными в зарезервированной области внутренней памяти. Он позволяет создать независимо управляемую подсеть из транспьютеров этой платы и подключаемых к ней других плат. Сигналы этого порта называются внутренними системными сигналами. Порт К_Следующей распространяет сигналы порта От_Предыдущей или порта Собственные на платы, подсоединяемые к рассматриваемой вычислительной плате.


Управление сигналами Ошибка в многотранспьютерной системе

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







home   contents  previous      next        up