?

Log in

No account? Create an account
С девушкой Ириной - по Музею Истории Компьютеров. Часть 1. - Юрий Панчул [entries|archive|friends|userinfo]
Money can buy bandwidth. Latency requires bribing God.

[ website | My Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

С девушкой Ириной - по Музею Истории Компьютеров. Часть 1. [Sep. 6th, 2017|08:53 am]
Yuri Panchul
Господа! Сегодня мы пройдемся с сибирской девушкой Ириной по Музею истории компьютеров в Маунтин-Вью, Калифорния. Причем пройдемся не как туристы, а для принесения пользы России. Я уже писал в предыдущем посте, что один из эффективных способов для студента изучить проектирование процессоров - это взять какой-нибудь древний, но поучительный процессор, найди документацию по его архитектуре (и какую-нибудь информацию по его микроархитектуре), и спроектировать аналог этого процессора на языке описания аппаратуры SystemVerilog (или VHDL, если он вам больше нравится), после чего реализовать процессор на плате ПЛИС / FPGA (какой именно, не важно - Altera / Intel FPGA, Xilinx или Lattice). В качестве учебника для такого упражнения вы можете начать с Харрис & Харрис, после чего продолжить с книгами для более продвинутой стадии обучения, например Шень-Липасти.

Каким образом все это принесет пользу России? Под такие проекты мы собираемся раздавать FPGA платы на конференции которая пройдет 18-22 сентября в Томске. Туда приедут представители МГУ, МФТИ, МИЭТ, МЦСТ, Imagination Technologies, National Instruments итд. Они будет обсуждать, как обновить программу университетов, чтобы сегодняшние студенты через несколько лет проектировали росийские чипы на уровне передовых западных компаний. Там также будет школа-семинар, на которой будут обсуждать, как делать учебные процессоры - начиная от простейшего schoolMIPS от Станислава Жельнио @sparf.

Вот первая фотография из музея в Маунтин-Вью - на ней помимо Ирины и ракеты в центре виден небольшой ящичек. Это бортовой компьютер космической станции "МИР" , который проектировали инженеры советского объединения "ЭЛАС", которое трансформировалось в современную зеленоградскую компанию "ЭЛВИС":




Итак, темы для учебных проектов - начиная из дремучих десятилетий середины XX века:

Перед нами - блок для хранения таблицы результатов вычисления арифметических функций теплого лампового компьютера ENIAC, разработанного в 1943-1947 Преспером Экертом и Джоном Мочли из Университета Пенсильвании. В некоторый момент их коллега Джон фон Нейман предложил использовать этот блок для хранения программ. Так родилась "архитектура фон-Немана". Вообще ее правильно было бы назвать "архитектура Экерта-Мочли-фон-Неймана", но Экерту и Мочли не повезло - их имена были засекречены, а имя фон-Неймана - нет (компьютер предназначался для расчета артиллерийских таблиц).

Если вы хотите реализовать этот компьютер на FPGA, я нагуглил ENIAC_Operating_Manual, хотя превратить его в код на верилоге будет нетривиально:



Транзисторный суперкомпьютер IBM 7030 Stretch. Название (stretch - "растягивать") произошло от обещаний его создателей сделать компьютер в 100 раз быстрее предшествующего IBM 704. К сожалению, Stretch получился всего в 30 раз быстрее и бизнес-коммьюнити покрыло создателей позором и презрением. Тем не менее, в процессе этой "неудачи" айбиэмовские инженеры придумали конвейерность, многозадачность и защиту памяти:



CDC 6600 (1963). Первый "настоящий" суперкомпьютер в истории и первый процессор с внеочередным исполнением инструкций. До сих пор повсеместно используется в качестве примера scoreboarding-а на лекциях по микроархитектуре (см. напр. первые нагугленные (правда не очень свежие) слайды по CDC 6600 из Беркли ). Реализация упрощенного CDC 6600 на верилоге и FPGA - один из самых очевидных кандидатов для студенческого курсового проекта.





Вот отрывок про общую организацию CDC 6600 из книжки Microprocessor Architecture: From Simple Pipelines to Chip Multiprocessors by Jean-Loup Baer (2009). Несколько функциональных устройств, работающих параллельно (но без конвейера) и scoreboard, отслеживающий зависимости по данным между инструкциями, и приостанавливающий запуск выполнения инструкции, пока ее операнды не будут готовы:



IBM 360 (1964-1978). Эта линия компьютеров произвело настолько глубокое впечатление на ЦК КПСС СССР, что они, несмотря на сопротивление советских суперкомпьютерных авторитетов из ИТМиВТ (БЭСМов и Эльбрусов) насадили советские реализации IBM 360/370 по всем соцстранам под именем ЕС ЭВМ. Эти компьютеры изображены даже на рисунках советских детей брежневской эпохи "я у мамы на работе":



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



Впрочем проект IBM/360 принес пользу и для мира программирования. Вот видите слева от сумочки Ирины книжку "Мифический человеко-месяц" Фредерика Брукса? Автор книжки - менеджер проекта OS/360, который сделал наблюдение, что попытка исправить сорванный дедлайн добавлением в проект новых программистов часто ведет к ухудшению ситуации - дедлайн станет еще более сорванным. Книжку издали в 1975 году, тут же перевели в СССР, и местами она актуальна до сих пор:





Также линия IBM/360 ввела в мейнстрим концепцию "микропрограммирования" и "микрокода", которые стали неактуальны в процессе "RISC-революции" 1980-х (современные микропроцессоры преимущественно hardwired из-за необходимости все конвейеризовать). Однако эти концепции настолько крепко въелись в советские и пост-советские учебники компьютерной архитектуры, что люди до сих пор задают вопрос "а что, Verilog - это микропрограммирование?" - после чего долго приходится объяснять что это _не_ микропрограммирование.

Так зачем реализовывать IBM/360 на FPGA? Все реализовывать бессмысленно, но один аспект одной модели, а именно IBM System/360 Model 91, появляется среди современных студенческих курсовых проектов по микроархитектуре не реже, чем scoreboard от CDC 6600. Я говорю о так называемом "алгоритме Томасуло", способе организации внеочередного выполнения арифметических операций с аппаратным "переименованием регистров" и "блоками резервирования" (да, эти штуки есть и в процессорах в ваших айфонах, это не остатки мамонта). Довольно странно, что про алгоритм Томасуло нет статьи на русской википедии, хотя есть на украинской:


Алгоритм Томасуло — це алгоритм, який використовується в комп'ютерній архітектурі апаратного забезпечення, для динамічного планування команд, яке передбачає позачергове виконання, з метою ефективного використання функціональних блоків процесора. Алгоритм був розроблений Робертом Томасуло у 1967 році, коли він працював в IBM, і вперше реалізований в IBM System/360 Model 91 в блоці операцій з рухомою комою.

Головними нововведеннями алгоритму Томасуло є перейменування регістрів в апаратних засобах, блоки резервування[en] для всіх функціональних блоків, і спільна шина даних (СШД), по якій обчислені значення синхронно передаються в усі блоки резервування, які можуть мати потребу в них.


В одной из самых полезных современных книжек по разработке процессоров, Modern Processor Design: Fundamentals of Superscalar Processors by John Paul Shen and Mikko H. Lipasti (2013), наглядно показано, как выглядел блок операций с плавающей точкой у IBM/360-91 до улучшения Томасуло и после него. Такое же "до и после" можно сделать и для студенческого проекта, со сравнением производительности (количества тактов на разных последовательностях операций) и максимальной тактовой частоты (при реализации на FPGA):



После этого книжка Шен-Липасти описывает как это делается в современных процессорах с динамическим конвейером:



А вот ранний транзисторный мейнфрейм из Японии - NEAC 2203, сделанный в 1958 году. Он никогда не продавался вне Японии. Вообще тогда к японским товарам в мире было несерьезное отношение, но японские компании подавили в себе идолопоклонничество перед Западом и занялись капитализмом по-японски. Сначала они обкатывали технологические решения на внутреннем рынке (своего рода "импортозамещение"), а потом агрессивно атаковали мировой рынок. Через пару десятилетий Япония вытеснила американские компании с рынка микросхем памяти и домашней электроники, и тот же NEC построил самый мощный суперкомпьютер 1992 года - NEC SX-3/44. Одновременно в Японии стали появляться голоса о необходимости уменьшения политической зависимости от США, и японский министр транспорта написал книжку 「NO」と言える日本 ("Япония может сказать "NO"!). К сожалению, это вставание с колен подкосил последующий экономический кризис, но японский опыт 1950-1980-х интересен для изучения.



На этом мы заканчиваем первую часть прогулки по музею. Если вам понравилось начало, я могу написать еще - про суперкомпьютеры Cray и Illiac, мини-компьюеры HP, DEC и Data General, первые микропроцессоры и микрокомпьютеры, RISC-овые рабочие станции и Лисп-машины, игровые приставки и роботов.

Теперь мы напомним для чего все это:



Если вас интересуют open-source проекты такого типа для повышения общественной образованности, вы готовы их писать на SystemVerilog или VHDL, выкладывать код на GitHub и писать про них статьи на Хабре (с анализом производительности), но у вас нет FPGA платы - вы можете одолжить ее (и получить насовсем если проект будет успешен) в одном из трех мест:

1. Александр Романов из МИЭМ НИУ ВШЭ в Москве. Александр вводит курсы по Verilog для студентов, и у него в дополнение к обычным платам в университете есть разномастная коллекцию плат с Altera и Xilinx FPGA, как часто используемые платы от Terasic и Digilent, так и слабодокументированные китайские платы - именно для открытых проектов.

2. Ярослав Вознюк из Киево-Могилянской академии. Я приезжал на их хакатоне для школьников, и оставил там несколько плат Digilent Cmod A7 35T с Xilinx Artix-7 для бартера "плата за проект с статьей на Хабре".

3. Владимир Макуха из Новосибирского Технического Государственного Университета. Там есть набор плат для проходящей через неделю конференции в Томске. Часть их них (Digilent Nexys DDR4) останется у Владимира, часть (Terasic DE0-CV) пойдет на такие проекты.

В качестве вдохновления вы можете посмотреть на существующие проекты с реализованными на FPGA процессорами на Хабре от @SparF , @Frantony , @oleh_plotnikov , @Kingit , @VMSS , @kirill90 , @Boris_92 (вы можете добавлять свои в комментариях).

Дополнение про основы современной разработки процессоров



Древние процессоры делались из радиоламп, транзисторов, микросхем малой степени интеграции и рисования схем мышкой на экране. Сейчас это все нет так. Пару слов для тех читателей, которые не знакомы с тем, что такое Verilog, ASIC и FPGA:

Из поста на Geektimes "Оруженосцы микроэлектроники. Видеорепортаж с конференции по проектированию электроники в Сан-Франциско":

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

В последние 25 лет дизайн микросхемы чаще всего пишется на языке описания аппаратуры Verilog ([ранее] в Европе и у военных — VHDL), после чего специальная программа (logic synthesis) превращает дизайн в граф из проводов и логических примитивов, другая программа (static timing analysis) сообщает дизайнеру, вписывается ли он в бюджет скорости, а третья программа (place-and-route) раскладывает этот дизайн по площадке микросхемы.

Когда дизайн проходит все этапы: кодирование на верилоге, отладка, верификация, синтез, static timing analysis, floorplanning, place-n-route, parasitics extraction и т.д. — получается файл под названием GDSII, который отправляют на фабрику, и фабрика выпекает микросхемы. Самые известные фабрики этого типа принадлежат компании Taiwan Semiconductor Manufacturing Company или TSMC.


Из поста на Habrahabr Как начать разрабатывать железо, используя ПЛИС — пошаговая инструкция:

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

ПЛИС-ы / FPGA - не процессоры, "программируя" ПЛИС (заполняя конфигурационную память ПЛИС-а) вы создаете электронную схему (хардвер), в то время как при программировании процессора (фиксированного хардвера) вы подсовываете ему цепочку написанных в память последовательных инструкций программы (софтвер).




Про что рассказать в продолжениях к этому посту? Про что рассказать в продолжениях?

Про суперкомпьютеры Cray и Illiac
9(20.0%)
Про мини-компьюеры HP, DEC и Data General
5(11.1%)
Про первые микропроцессоры и микрокомпьютеры
8(17.8%)
Про RISC-овые рабочие станции и Лисп-машины
9(20.0%)
Про игровые приставки и роботов
7(15.6%)
Другое - пояснить в комментариях
4(8.9%)
Из-за бугра плюете?
3(6.7%)
LinkReply

Comments:
[User Picture]From: ardelfi
2017-09-06 04:16 pm (UTC)
Вроде было уже, или показалось? :)
(Reply) (Thread)
[User Picture]From: panchul
2017-09-06 05:02 pm (UTC)
Да, было, но ЖЖ стал глючить с картинками, я тот пост закрыл и сделал новый
(Reply) (Parent) (Thread)
[User Picture]From: ardelfi
2017-09-06 05:41 pm (UTC)
Тогда повторю по опросу. Другое :)
Например, транспьютеры Инмос, компьютер для ПРО "Сейфгард" или подобное из старых добрых времён пика технического прогресса (~1970).
(Reply) (Parent) (Thread)
[User Picture]From: spamsink
2017-09-06 04:26 pm (UTC)
Из этого поста я узнал, как будет floating point по-украински.

Российским студентам полезно будет также изучать и отечественные разработки в отношении оптимизации соотношения цена/производительность.
Например, почему производительность БЭСМ-6 с ее единственным арифметическим устройством и на 9 МГц была всего в ~2.5 раза ниже, чем у CDC 6600 с ее 9 функциональными юнитами на 10 МГц (0.81 MWhetstone/s против 2.1 MWhetstone/s).
(Reply) (Thread)
[User Picture]From: panchul
2017-09-06 05:04 pm (UTC)
Кстати, а есть микроархитектурное описание БЭСМ-6 ?


*** Из этого поста я узнал, как будет floating point по-украински. ***

Ты мог бы съездить на Украину, они были бы очень рады, что Synopsys ездит не только к москалям. Правда денег на богатеньких буратин из Silicon Valley у них нет (все появляющиеся деньги тратятся на покупку оборудования и местные расходы), так что приготовься, что с твоей стороны это будет благотворительность. Но Киев прикольный город для визита.

Edited at 2017-09-06 05:08 pm (UTC)
(Reply) (Parent) (Thread)
[User Picture]From: spamsink
2017-09-06 07:08 pm (UTC)
В принципе, есть:

https://github.com/besm6/besm6.github.io/tree/master/doc

Части III и IV, устройство управления и арифметическое устройство (качество сканов уж какое есть, вибачте). Язык и стиль просто восхитительные, а детальность описания реализации операции деления даст фору чему угодно. Опять же, реализация позволит ответить на многие тонкие вопросы о механизме работы, производительности и типа "а что, если", оставшиеся неизвестными или забытые со временем. Более того, в отличие от модели CDC или IBM, на полученном девайсе будет что запускать в ассортименте.


Если я решу поехать на Украину, то только в качестве туриста, а не культуртрегера, а в Украину как представителя Synopsys меня никто не пошлёт, чином не вышел.
(Reply) (Parent) (Thread)
[User Picture]From: podrivnik
2017-09-06 04:51 pm (UTC)
Тема не раскрыта
(Reply) (Thread)
[User Picture]From: panchul
2017-09-06 05:03 pm (UTC)
Какая именно тема?
(Reply) (Parent) (Thread)
[User Picture]From: podrivnik
2017-09-06 07:06 pm (UTC)
Симпатичной блондинки
(Reply) (Parent) (Thread)
[User Picture]From: stolbvoy_d
2017-09-06 07:23 pm (UTC)
Сисек блондинки ....
(Reply) (Parent) (Thread)
[User Picture]From: ultranomad
2017-09-06 05:36 pm (UTC)
У меня дома когда-то жил и маааленький IBM mainframe (точнее, плата XT/370, втыкаемая в PC/XT), и несколько DECов (PDP-11/73, VAXstation 4000/VLC, DECmate II и DECstation 5000 на чипсете RISC), и LISP-машина (Xerox 1186). При переезде большая часть ушла бесследно, но VLC до сих пор валяется на антресолях.
(Reply) (Thread)
[User Picture]From: con_vertor
2017-09-06 06:28 pm (UTC)
Про девушку Ирину же 💁
(Reply) (Thread)
[User Picture]From: stolbvoy_d
2017-09-06 07:26 pm (UTC)
А, где портрет Раймонда Луллия ?
(Reply) (Thread)
[User Picture]From: panchul
2017-09-07 06:14 pm (UTC)
А какое он имеет к этому отношение?
(Reply) (Parent) (Thread)
[User Picture]From: stolbvoy_d
2017-09-07 07:38 pm (UTC)
Ну, как ...
Отец вычислительной техники, предвосхитивший и всё такое.
При входе в музей портрет висеть должен.
(Reply) (Parent) (Thread)
[User Picture]From: fizzik
2017-09-07 12:06 am (UTC)
Замужем ли девушка Ирина?
(Reply) (Thread)
[User Picture]From: zack_broflovski
2017-09-07 02:04 am (UTC)
Удивляет узость взглядов и необразованность panchul, кроме VHDL и примитивных основ hardware Design он не знает ничего из IT.
Никогда не мог предположить, что человек может быть так темен и необразован.
(Reply) (Thread)
[User Picture]From: Станислав Рост
2017-09-07 04:36 am (UTC)
А тебе есть о чем подиспутировать с ним? Он хотя бы лица не прячет.
(Reply) (Parent) (Thread)
[User Picture]From: red_army_1917
2017-09-07 01:42 pm (UTC)

кроме VHDL

хотите, поговорим о фашизме на Украине
(Reply) (Parent) (Thread)
[User Picture]From: zack_broflovski
2017-09-07 11:53 pm (UTC)

Re: кроме VHDL

В Украине нет фашизма и не было, среди ватного быдла каждый первый фашист.
(Reply) (Parent) (Thread)
[User Picture]From: shadow_ru
2017-09-07 05:31 am (UTC)
Про что рассказать в продолжениях к этому посту? Про что рассказать в продолжениях?

Про Ирину! Ну или на худой конец про Лисп-машины.
(Reply) (Thread)
[User Picture]From: coralsteel
2017-09-07 03:51 pm (UTC)

А видеообработку типа

персептрона можно реализовать на FPGA?
Что-то между видеокартой и процессорной памятью.
(Reply) (Thread)
[User Picture]From: panchul
2017-09-07 06:13 pm (UTC)

Re: А видеообработку типа

Можно
(Reply) (Parent) (Thread)
[User Picture]From: Константин Морозов
2017-09-07 05:14 pm (UTC)
Пояснение к "Что рассказать? Другое": про историю отечественных разработок.
(Reply) (Thread)
[User Picture]From: panchul
2017-09-07 06:14 pm (UTC)
Там довольно много, и про это уже написано. Впрочем я помещу про Электронику СС БИС в разделе про Cray-1
(Reply) (Parent) (Thread)
[User Picture]From: Константин Морозов
2017-09-07 07:10 pm (UTC)
Да, но в рамках этой темы было бы интересно. Спасибо!
(Reply) (Parent) (Thread)
[User Picture]From: ultranomad
2017-09-08 08:37 pm (UTC)
Проголосовал сначала за DEC/DG/HP, в первую очередь за DEC - но надо признать, что DEC, помимо железа, не был бы DECом и без высочайшей культуры системного программирования на ассемблере и BLISSе. А с другой стороны, еще более интересен ассемблерный кодинг на IBM/360/370/... - при всей своей тяжеловесности, архитектура управляющих блоков OS/3x0, в нижней своей точке опертая в таблицу векторов прерываний (точнее, CVT)- это своего рода барокко системного программирования. Ну или на худой конец пламенеющая готика.
(Reply) (Thread)