Транспьютер

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 17:46, 10 января 2019.
Транспьютер
Transputer Костя 1.JPG
Дата выпуска 1983 г.
Снято с производства 1990-2000


Транспьютер (англ. transputer) — элемент построения многопроцессорных систем, выполненный на одном кристалле большой интегральной схемы, продукт английской компании INMOS Ltd. (ныне — подразделение STMicroelectronics). Этот термин происходит от слов Transistor и Computer. Такой генезис должен, по мнению разработчиков, подчёркивать возможность построения сложных вычислительных комплексов на базе транспьютеров, где их роль уподоблялась бы роли транзисторов, выступающих основным элементом при проектировании электронных схем.[Источник 1]

Описание

Транспьютер включает в себя:

  • средства для выполнения вычислений (ЦП, АЛУ с плавающей точкой, внутрикристальную память)
  • 4 канала для связи (линка) с другими транспьютерами и/или другими устройствами.
  • Каждый линк представляет собой 2 однонаправленных последовательных канала передачи информации.
  • Встроенный интерфейс позволяет подключать внешнюю память емкостью до 4 Гбайт.
  • 32-разрядная шина памяти.
  • Таймер.
  • Генераторы системных управляющих сигналов “инициализация”, “анализ”, “ошибка”, управляющие загрузкой и анализом состояния транспьютера, сигнализирующие об ошибках.
  • Интерфейс внешних событий (event), обеспечивающий асинхронную связь внутреннего процесса и внешнего события.

[Источник 2]

Язык Oceam

Схема транспьютера
Схема транспьтера .jpeg


Язык программирования Occam был разработан компанией Inmos на основе теории Энтони Хоара о взаимодействующих процессах. Occam является алголоподобным языком высокого уровня; при этом язык оптимизирован с точки зрения эффективности его трансляции в систему команд транспьютера. Первоначально Inmos даже предлагала использовать Occam в качестве транспьютерного ассемблера, но позже выпустила пакет низкоуровневых средств для разработчиков компиляторов, а также включила в Occam конструкцию, позволяющую вставлять код на уровне процессора. [Источник 1]

Предпосылки появления

В начале 1980-х традиционные центральные процессоры (ЦП), по-видимому, достигли предела производительности. До этого времени производственные трудности ограничивали количество схем, которые могли поместиться на чипе. Продолжающиеся улучшения в процессе изготовления, однако, сняли это ограничение. В течение десятилетия чипы могли содержать больше схем, чем разработчики умели использовать. Традиционные конструкции компьютеров с комплексными инструкциями (CISC) достигли плато производительности, и было неясно, что это можно было преодолеть.

Казалось, что единственным выходом из положения было увеличение использования параллелизма, так как использование нескольких процессоров, которые будут работать вместе, чтобы решить несколько задач одновременно. Это зависело от способности таких машин выполнять несколько задач одновременно, процесс называется многопроцессорным. Как правило, это было слишком сложно для предыдущих разработок ЦП, но более поздние разработки смогли добиться этого эффективно. Было ясно, что в будущем это будет характерно для всех операционных систем (ОС).

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

История

Многопроцессорная система может создаваться из набора транспьютеров, которые функционируют независимо и взаимодействуют через последовательные каналы связи. Организация транспьютеров и многопроцессорных систем на их основе базируется на языке Occam, специально разработанном в начале 1980-х годов группой ученых из Оксфорда под руководством Дэвида Мэя по заданию компании INMOS в рамках работ по созданию транспьютеров. Отметим основные характеристики этого языка с точки зрения его применения для программирования транспьютерных систем:

  • выполнение задачи разбивается на процессы, которые могут выполняться параллельно;
  • размещение процессов не привязано к конкретному оборудованию: необязательно каждому процессу должен ставиться в соответствие свой транспьютер - несколько процессов могут выполняться на одном транспьютере;
  • язык позволяет описать размещение процессов по оборудованию;
  • язык позволяет описать, как эти процессы обмениваются между собой данными (какой процесс принимает информацию, от какого процесса и в каком объеме).
  • При передаче данных в линк процесс должен исполнить команду вывода. Процесс, исполнивший такую команду, задерживается до тех пор, пока все данные не будут переданы. Аналогично, при приеме данных из линка процесс должен исполнить команду ввода. При исполнении такой команды процесс блокируется до тех пор, пока буфер не будет заполнен данными. Взаимодействие с внешним устройством через линк позволяет транспьютеру синхронизовать свою деятельность с этими устройствами без использования механизма прерываний. [Источник 3]

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

Помимо интересных возможностей, связанных с построением мультипроцессорных систем без привлечения дополнительного оборудования, в транспьютерах были реализованы идеи, направленные на повышение их вычислительной мощности. Среди них хотелось бы отметить то, что блок регистров транспьютера организован в виде стека. Это привело к использованию преимущественно безадресной системы команд, что обеспечило даже более высокую производительность, чем RISC-архитектура. Второй момент, который следует выделить, - это одновременное исполнение группы, в которую входило до 8 команд, что обеспечивало полную загрузку устройств процессора. И все это было реализовано в конце 1980-х годов, задолго до появления EPIC и Itanium.

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

  • производительность: 200 MIPS, 25 MFLOPS (на 64-разрядном процессоре с плавающей точкой);
  • емкость внутрикристальной памяти: 16 Кбайт;
  • скорость обмена по линку: 100 Мбит/с.

В середине 1990-х, в эпоху расцвета микропроцессоров этого семейства, фирма INMOS помимо собственно транспьютеров поставляла широкий набор трэмов (TRem - TRansputer Extension Module) - устройств ввода-вывода с линком в качестве интерфейса. В частности, поставлялись трэмы, позволявшие подключить к транспьютеру через линк адаптеры Ethernet или SCSI. В целях увеличения числа физических связей был разработан программируемый коммутатор, осуществляющий передачу сообщения с любого из 32 входов на любой из 32 выходов.[Источник 3]

Транспьютеры успешно использовались в различных областях от встроенных систем до суперЭВМ. Однако технология транспьютеров серьезного развития не получила, так как начиная с Pentium Pro в универсальные микропроцессоры введена возможность соединения процессоров в микропроцессорную систему, что обесценило главное преимущество транспьютеров - возможность построения многопроцессорных систем без дополнительных аппаратных затрат.

Инструкции транспьютера

Набор команд транспьютера состоял из 8-битных инструкций, собранных из кода операции и отрывков операнда. Верхний клев содержал 16 возможных кодов первичной инструкции, что делало его одним из очень немногих коммерчески доступных компьютеров с минимальным набором команд. Нижний полубайт содержал один непосредственный постоянный операнд, обычно используемый как смещение относительно указателя рабочей области (стека памяти). Две префиксные инструкции позволили построить более крупные константы, добавив их нижние полубайты к операндам следующих инструкций. Дальнейшие инструкции поддерживались через код инструкции Operate (Opr), который декодировал постоянный операнд как расширенный код операции с нулевым операндом, обеспечивая почти бесконечное и простое расширение набора команд по мере появления новых реализаций транспьютера.[Источник 4]

«Первичных»

16 «первичных» однооперационных инструкций:

Mnemonic Description
REV Reverse – swap two top items of register stack
LB Load byte
BSUB Byte subscript
ENDP End process
DIFF Difference
ADD Add
GCALL General Call – swap top of stack and instruction pointer
IN Input – receive message
PROD Product
GT Greater Than – the only comparison instruction
WSUB Word subscript
OUT Output – send message
SUB Subtract
STARTP Start process
OUTBYTE Output byte – send one-byte message
OUTWORD Output word – send one-word message

«Вторичные»

Первые 16 «вторичных» инструкций с нулевым операндом (с использованием первичной инструкции OPR) были:

Mnemonic Description
REV Reverse – swap two top items of register stack
LB Load byte
BSUB Byte subscript
ENDP End process
DIFF Difference
ADD Add
GCALL General Call – swap top of stack and instruction pointer
IN Input – receive message
PROD Product
GT Greater Than – the only comparison instruction
WSUB Word subscript
OUT Output – send message
SUB Subtract
STARTP Start process
OUTBYTE Output byte – send one-byte message
OUTWORD Output word – send one-word message

Виды транспьютера

Так как первые транспьютеры были анонсированы в 1983 году и выпущены в 1984 году то за все время их существования были создано большое количество видов этих микропроцессоров.

T2: 16-битный

T2: 16-битный

Прототипом 16-битного транспьютера был S43 , в котором отсутствовал планировщик и DMA-контролируемая передача блоков по ссылкам. На момент запуска T212 и M212 (последний с встроенным дисковым контроллером) были 16-разрядными. T212 был доступен с тактовой частотой процессора 17,5 и 20 МГц. T212 был заменен T222 , с объемом оперативной памяти, увеличенной с 2 ​​кБ до 4 кБ, а затем и T225 . Это добавило поддержку точки останова отладки (путем расширения инструкции " J 0 "), а также некоторые дополнительные инструкции из набора команд T800. Оба T222 и T225 работали на 20 МГц. [Источник 5]

T4: 32-битный

T4: 32-битный

Первоначально первым 32-разрядным вариантом должен был быть T424 , но трудности изготовления означали, что он был перепроектирован как T414 с 2 КБ встроенной оперативной памяти вместо предполагаемых 4 КБ. T414 был доступен в вариантах 15 и 20 МГц. Позже ОЗУ было восстановлено до 4 кБ на T425 (в вариантах 20, 25 и 30 МГц), что также добавило поддержку точки останова J 0 и дополнительные инструкции T800. T400 , выпущенный в сентябре 1989 года, представлял собой недорогую 20 МГц производную T425 с 2 кБ и двумя вместо четырех каналов, предназначенную для рынка встроенных систем .[Источник 5]

T8: с плавающей точкой

T8: с плавающей точкой

Транспортер второго поколения T800 , представленный в 1987 году, имел расширенный набор инструкций. Наиболее важным дополнением был 64-разрядный модуль с плавающей запятой (FPU) и три добавленных регистра для с плавающей запятой, реализующие стандарт IEEE754-1985 с плавающей запятой. Он также имел 4 КБ встроенной оперативной памяти и был доступен в версиях 20 или 25 МГц. Поддержка точек останова была добавлена ​​в более поздние версии T801 и T805 , первые из которых имели отдельные адреса и шины данных для повышения производительности. T805 также был позже доступен как 30 МГц.[Источник 6]

Был запланирован улучшенный T810 , который имел бы больше оперативной памяти, больше и более быстрые ссылки, дополнительные инструкции и улучшенный микрокод, но это было отменено примерно в 1990 году.

Компания Inmos также выпустила различные чипы поддержки для процессоров транспорта, такие как 32-канальный коммутатор связи C004 и «адаптер связи» C012, который позволял связывать транспьютерные соединения с 8-битной шиной данных.

T400

T400

Частью оригинальной стратегии Inmos было сделать процессоры настолько маленькими и дешевыми, чтобы их можно было объединить с другой логикой в ​​одном устройстве. Хотя система на чипе (SoC), как их обычно называют, сейчас повсеместно распространена, концепция была почти неслыханной в начале 1980-х годов. Примерно в 1983 году были запущены два проекта, M212 и телевизионная игрушка . M212 был основан на стандартном ядре T212 с добавлением дискового контроллера для стандартов ST 506 и ST 412 Shugart. Телевизионная игрушка должна была стать основой для игровой приставки и была совместным проектом Inmos и Sinclair Research .

Ссылки в транспортерах T212 и T414 / T424 имели аппаратные механизмы DMA, так что передачи могли происходить параллельно с выполнением других процессов. Был разработан вариант конструкции, названный T400, который не следует путать с более поздним транспьютером с тем же именем, где ЦП обрабатывал эти передачи. Это значительно уменьшило размер устройства, так как 4 механизма связи были примерно того же размера, что и весь процессор. T4 предназначался для использования в качестве ядра в так называемых системах на кремниевых (SOS) устройствах, которые теперь называются и более известны как системы на кристалле (SoC). Именно этот дизайн должен был стать частью телевизионной игрушки. Проект был отменен в 1985 году.[Источник 5]

T100

T100

Хотя предыдущие проекты SoC имели лишь ограниченный успех (M212 был продан на некоторое время), многие дизайнеры все еще твердо верили в концепцию, и в 1987 году был запущен новый проект T100, который объединил 8-битную версию транспьютера. Процессор с настраиваемой логикой на основе конечных автоматов. Набор команд транспьютера основан на 8-битных инструкциях и может легко использоваться с любым размером слова, кратным 8 битам. Целевым рынком для T100 должны были стать контроллеры шины, такие как Futurebus, и обновление для стандартных адаптеров связи (C011 и т. Д.). Проект был остановлен, когда был запущен T840 (позже ставший основой T9000).

T9000

T9000

Inmos улучшил производительность транспортеров серии T8 с введением T9000 (кодовое название H1 во время разработки). T9000 поделился большинством функций с T800, но перенес несколько частей дизайна в аппаратное обеспечение и добавил несколько функций для поддержки суперскалярных функций. В отличие от более ранних моделей, T9000 имел истинный высокоскоростной кеш 16 КБ (с произвольной заменой) вместо ОЗУ, но также позволял использовать его в качестве памяти и включал MMU-подобную функциональность для обработки всего этого (так называемый PMI ) , Для большей скорости T9000 кэшировал верхние 32 позиции стека, а не три, как в более ранних версиях.[Источник 3]

T9000 использовал пятиступенчатый конвейер для еще большей скорости. Интересным дополнением был grouper, который собирал инструкции из кеша и группировал их в большие пакеты по 4 байта для более быстрой загрузки конвейера. Затем группы выполняются за один цикл, как если бы они были единичными большими инструкциями, работающими на более быстром процессоре.[Источник 6]

Система связи была модернизирована до нового режима 100 МГц, но, в отличие от предыдущих систем, каналы больше не были совместимы снизу. Этот новый протокол связи на основе пакетов получил название DS-Link , и позже стал основой стандарта последовательного межсоединения IEEE 1355 . В T9000 также добавлено оборудование для маршрутизации каналов, называемое VCP (процессор виртуальных каналов), которое изменило ссылки с точки на точку на настоящую сеть, что позволяет создавать любое количество виртуальных каналов в каналах. Это означало, что программы больше не должны были знать о физическом расположении соединений. Был также разработан ряд чипов поддержки DS-Link, в том числе 32-полосный коммутатор C104 и адаптер связи C101 .

Длительные задержки в разработке T9000 означали, что более быстрые проекты загрузки / хранения уже превосходили его к тому времени, когда он должен был быть выпущен. Он последовательно не смог достичь своей собственной цели по производительности, опередив T800 в 10 раз. Когда проект был окончательно отменен, он все еще достигал лишь около 36 MIPS на частоте 50 МГц. Задержки производства привели к тому, что лучшей хост-архитектурой для T9000 был оверхед.[Источник 6]

Это было слишком для Инмоса, у которого не было финансирования, необходимого для продолжения разработки. К этому времени компания была продана SGS-Thomson (сейчас STMicroelectronics ), чей фокус был на рынке встраиваемых систем, и в итоге проект T9000 был заброшен. Однако позже был разработан полностью переработанный 32-разрядный транспортер, предназначенный для встраиваемых приложений, серии ST20 , с использованием некоторых технологий, разработанных для T9000. Ядро ST20 было включено в наборы микросхем для приставок и приложений глобальной системы позиционирования (GPS).

ST20

ST20

Хотя не строго транспьютер, ST20 находился под сильным влиянием Т4 и Т9 и лег в основу Т450, который, возможно, был последним из транспьютеров. Миссия ST20 состояла в том, чтобы стать повторно используемым ядром на развивающемся рынке SoC. Первоначальное название ST20 было многоразовым микроядром (RMC). Архитектура была свободно основана на оригинальной архитектуре T4 с микрокод-контролируемым путем данных. Тем не менее, это был полный редизайн с использованием VHDL в качестве языка проектирования и с оптимизированным (и переписанным) компилятором микрокода. Проект был задуман еще в 1990 году, когда стало понятно, что T9 будет слишком большим для многих приложений. Фактические проектные работы начались в середине 1992 года. Было выполнено несколько пробных проектов, от очень простого ЦП в стиле RISC со сложными инструкциями, реализованными в программном обеспечении через ловушки, до довольно сложного суперскалярного проекта, похожего по своей концепции на алгоритм Томасуло . Окончательный дизайн выглядел очень похоже на исходное ядро ​​T4, хотя для повышения производительности были добавлены несколько простых групп инструкций и кеш рабочего пространства .[Источник 6]

Окончание работы

В настоящее время транспьютеры не производятся, они вытеснены похожими разработками конкурентов, особенно Texas INsTRuments (TMS320) и Intel (80860).

Источники

  1. 1,0 1,1 Транспьютер//Wikipedia. [2018-2018]. URL: https://ru.wikipedia.org/wiki/Транспьютер (дата обращения: 12.12.2018).
  2. Лекция 8//Студопедия. [2018-2018]. URL:https://studopedia.su/6_5507_lektsiya--transpyuteri-i-transpyuteropodobnie-sistemi.html (дата обращения: 12.12.2018).
  3. 3,0 3,1 3,2 Лекция13: Многопроцессорные и многомашинные вычислительные системы// НОУ ИНТУИТ. [2018-2018]. URL:https://www.intuit.ru/studies/courses/604/460/lecture/10345?page=3 (дата обращения: 12.12.2018).
  4. Transputer//Wikipedia. [2018-2018]. URL:https://en.wikipedia.org/wiki/Transputer (дата обращения: 12.12.2018).
  5. 5,0 5,1 5,2 транспьютер[2018-2018]. URL: https://translate.google.com/translate?hl=ru&sl=en&u=https://en.wikipedia.org/wiki/Transputer&prev=search(дата обращения: 12.12.2018).
  6. 6,0 6,1 6,2 6,3 Transputer [2018-2018]. URL: https://en.wikipedia.org/wiki/Transputer (дата обращения: 12.12.2018).