kaipa: (Default)
[personal profile] kaipa
В последние дни мне попалось несколько материалов по советской вычислительной технике, и родился этот пост. Наверное, многие до сих пор считают, что советская вычислительная техника была сильно отсталой, по сравнению с американской. Однако, это было не так и не всегда. Тема для меня близкая.

Начнем с того, что триггер был изобретен советским ученым М.А.Бонч-Бруевичем в 1918г в нижегородской радиолаборатории, а его соратник О.В.Лосев в 22г изобрел "кристадин" -- прообраз современного транзистора. Нобелевскую премию за это получили, как обычно, американцы. Нескольками годами позже он же изобрел свето-диод и фото-диод. То есть определенный научный задел в области радиотехники в СССР существовал еще в 20е годы. Однако, острая необходимость в вычислительных машинах появилась только с развитием атомной и ракетной техники. И успех СССР в атомной энергетике, космосе, ракетной и противоректной технике -- это косвенное подтверждение высочайшего уровня вычислительной техники, которая разрабатывалась для военной и космической области.

Первые советские вычислительные машины создавались в Киеве, в Институте Электротехники АН УССР. Именно там бала создана и запущена в 1950г МЭСМ -- Малая Электронная Счетная Машина -- первая ЭВМ в континентальной Европе. Она создавалась под руководством С.А.Лебедева, который в 50г был переведен руководить в Москву Институтом Точной Механики и Вычислительной Техники (ИТМиВТ). МЭСМ задумывалась как макет для БЭСМ -- Большой (или Быстродействующей) Электронной Счетной Машины. В БЭСМ были впервые в мире применены такие базовые принципы, как конвеер и стэк. БАСМ-1 или БЭСМ-АН была завершена в 1952г и на выставке 1953г в Дармштате была лучшей в Европе. Ее усовершенствованная версия БЭСМ-2 была первой в мире серийной ЭВМ. Ей были оснащены все вычислительные центры СССР, на ней считались траектории спутников и космических кораблей. Полупроводниковая БЭСМ-6 была закончена в 1966 году, это был первый советский супер-компьютер, не уступавший американским Креям (Cray) того времени. Выпускался, кстати, до 1987года и использовался во всех областях промышленности и науки.

На основе БЭСМ-2 была создана военная ЭВМ М-40, которая в 1961 году смогла впервые в истории сбить ракету противоракетой. Американцы смогли повторить этот результат только спустя 23 (!!!) года. А 5Э26 -- это мобильная ЭВМ, созданная с 69 по 75 год специально для комплекса ПВО С-300. Комлекс до сих пор лучший в мире (ЭВМ, конечно, с тех пор несколько раз совершенствовалась). Система трех процессорная, но не для производительности, а для надежности. Все процессоры считают одно и то же, и если один выдает отличный от двух других результат -- он отключается. Ведь ошибка в военных системах может привести к катастрофе.

Машины семейства Эльбрус (1 и 2), созданные в 70-80 г были уже параллельными, построенные на суперскалярной архитекторе (первые в мире коммерческие ЭВМ такого типа, кстати). Причем, сначала на бумаге, а потом в железе была достигнута линейная масштабируемость производительности по количеству процессоров (до 10). Они использовали 10 процессоров, из них 2 резервных (как и в М-40), аппаратное динамическое распределение ресурсов и многие другие уникальные технические решения. Система Эльбрус-2 применяется в ПРО Москвы A-135 В то же время были разработаны векторные процессоры для Эльбрус-3, который был построен в 1988, до конца не отлажен, и пущен под пресс "за ненадобностью" в 1994м. Его производительность была бы в два раза выше современного ему "крея" Cray Y-MP

Помимо ИТМиВТ разработкой ЭВМ продолжали заниматься в Киеве, в Минске, в других городах и институтах. Список советских компьютерных систем занимает не одну страницу.

Началом заката советской вычислительной техники стало принятое в 1967 году решение хрущевского руководства перейти на «обезьянью политику» - копировать американскую вычислительную технику, запустить в производство машины IBM-360 под названием Единая Система «Ряд». И хотя ИТМиВТ продолжал разрабатывать уникальные ЭВМ вплоть до распада СССР, это уже происходило на энтузиазме Лебедевцев и вопреки официальной линии. Ну с крушением СССР все или почти все развалилось, и наследники Эльбруса уже 15 лет не могут ничего до вести до серийного производства. Возможно, в последнее время что-то меняется, так как руководство страны понимает, что без собственной вычислительной техники невозможно сохранять обороноспособность. Дай то Бог.

Использованные материалы:
Википедия по ряду вопросов.
Физик Лосев
Первая БЭСМ. Начало пути
Сталин и Кибернетика
Супер ЭВМ в России. История и перспективы
"Эльбрус". История легенды.
История разработок ИТМмВТ

Date: 2010-01-28 05:21 pm (UTC)
From: [identity profile] fat-crocodile.livejournal.com
Про Сетунь я читал, не знаю, на мой взгляд это было не очень перспективно. Быстрых три-стабильных элементов, вроде, нету. Хотя, конечно, разумно было дать им расти, пока они могли, глядишь, и выросло бы что-нибудь интересное.

С другой стороны, мнение товарищей, утвердивших "обезьянью политику" тоже было бы интересно услышать. Может у них были какие-то резоны?

Date: 2010-01-28 06:13 pm (UTC)
From: [identity profile] ushastyi.livejournal.com
Это было вполне перспекивно. Даже Кнут это отмечал :) Вот тут хорошо написано, почему: http://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D0%B0%D1%8F_%D0%AD%D0%92%D0%9C

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

Date: 2010-01-28 07:26 pm (UTC)
From: [identity profile] fat-crocodile.livejournal.com
Может быть.

Меня смущает лукавое "лучшее в Европе". Подозреваю, это было не очень круто. На данный момент что-то из европейской вычислительной техники вообще существует? Оригинальное?

Date: 2010-01-28 07:35 pm (UTC)
From: [identity profile] ushastyi.livejournal.com
На данный момент -- не знаю. А в то время оригинальная вычислительная техника была как минимум в Англии, Франции и Германии. Английские компьютеры существовали как минимум до начала 90х. Немецкая компания Parsytec выпускала оригинальные транспьютеры в 80-90х (я в ней даже успел поработать :). А потом все под себя окончательно подмяли американцы.

Date: 2010-01-28 07:53 pm (UTC)
From: [identity profile] fat-crocodile.livejournal.com
Но, видимо, до "лучшей в мире" наши не дотягивали. Может быть их просто решили "ускорить"? Да, я согласен, что очень недальновидно и с очевидным концом.

В википедии какая-то ересь написана, по-моему.

Особенно вот это http://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B5_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B

Не понятно, почему "на двоичных теряет скорость".
Нет никаких намёков на реализацию сортировок-поисков.
АЦП без вопросов можно сделать четверичный, он будет выдавать по два бита на каждой ступеньке и не будет требовать каких-то других процессоров. И работать ещё быстрее троичного.

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

Date: 2010-01-28 08:15 pm (UTC)
From: [identity profile] ushastyi.livejournal.com
Ну как не дотягивали. Во время стыковки Союз-Аппалон, наши на БЭСМ-6 успевали обработать телеметрию на полчаса раньше американцев :) Да и Эльбрусы были вполне на уровне Креев.

Троичные алгоритмы на двоичных компьютерах работают медленее, потому что на троичных умножение и деление на три -- это сдвиг регистра, так же как на двоичных -- деление и умножение на два -- это сдвиг. Ну а почему троичные алгоритмы поиска и сортировки быстрее, думаю, понятно.

АЦП можно сделать хоть 16ти, хоть 256битовый. Но если в основе лежит бита, то все равно все операции будут на уровне битов и уже потом "склеиваться" в байты и т.д. В троичных компьютерах элементраная операция происходит на трейте.

Про гладкие переходы, я тоже не совсем понимаю. Но вот эта статья, возможно, даст ответы на схемотехнические вопромы: http://314159.ru/kushnerov/kushnerov1.pdf

Date: 2010-01-28 08:26 pm (UTC)
From: [identity profile] fat-crocodile.livejournal.com
Чтобы сделать троичный поиск, нужно не только деление на 3, но и умножение на 2 (нам же на три части нужно разбить массив). Это раз.

Потом, нужно будет сравнить искомый элемент с двумя другими, т.е. две операции чтения и две операции сравнения (вместо одной и одной) и мы получаем 1/3 вместо 1/2. Но за два чтения и два сравнения двоичный поиск даёт уже 1/4.

Когда троичный может дать выгоду? Когда уже первое сравнение точно нам показывает, где находится элемент, т.е. в 1/3 случаев.

Прикинем среднее количество операций на цикл

1/3 * (1ч + 1ср) + 2/3 * (2ч + 2ср) = 5/3 (1ч + 1ср)

За это количество операций массив делится на 3. Чтобы разделить массив на 3*3*3*3*3*3 -- примерно тысяча, чуть меньше -- нужно 6 циклов, т.е. 10 * (1ч + 1ср) операций.

За такое количество операций двоичным делением мы делим массив на 1024 -- примерно тысяча, чуть больше.

Date: 2010-01-28 08:43 pm (UTC)
From: [identity profile] ushastyi.livejournal.com
Надо подумать, но сходу сравнение в троичной логике в два раза быстрее, чем в двоичной (из-за "кривой" реализации отрицательных чисел в двоичной).

Потом, троичное сравнение сразу дает результат >, < или =. Т.е. там где в двоичном поиске надо делать на самом деле два сравнения -- на равенство и неравенство -- в троичном достаточно одной операции.

Date: 2010-01-28 08:52 pm (UTC)
From: [identity profile] fat-crocodile.livejournal.com
Основные затраты это всё равно чтение :) Процессоры нынче куда быстрее памяти.

Что касается в два раза более быстрого сравнения, мне кажется, это тоже не совсем так. Во всяком случае, мне не очевидно, почему это так. Проверка знака и там и там делается проверкой старшего бита.

Двоичная команда cmp (ассемблер x86) по результатам выставляет флаги. Там и флаг equal есть, и всё остальное. Т.е. собственно сравнение одно, ветвления потом два. Но это и в троичном случае будет.

Date: 2010-01-29 06:41 am (UTC)
From: [identity profile] ushastyi.livejournal.com
Не, суть в другом. И там и там знак определяется старшим битом. Но в двоичной логике для сравнения двух чисел проверка знака нужна, т.е. сначала надо проверить знак, а потом делать сравнение, потому что в зависимости от знака оно разное. А в троичной сравнение от знака не зависит, в лоб побитово.

Т.е. возьмем 4х битовые числа со знаком. 0001 > 0000, но 1001 < 0000. А в троичной все честно.

Это верно для любой четной и нечетной логики.

Понятно, что в ассемблере есть флаги. Но выставить два двоичных флага дольше, чем один троичный :)

Насчет алгоритма поиска и сортировки я еще подумаю. Наверняка можно дать точную оценку.

Date: 2010-01-29 11:42 am (UTC)
From: [identity profile] fat-crocodile.livejournal.com
Вопрос, как устроено сравнение. Я два варианта вижу.

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

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

Из минусов -- практически пропадает операция xor. Троичный xor можно придумать, как определить, но таким красивым он уже не получится. Ну и остальные логические операции становятся странными, скажем так.

Date: 2010-01-29 12:43 pm (UTC)
From: [identity profile] ushastyi.livejournal.com
Ну как же не влияет?

Возмем две пары чисел. Одна кодируется 8ю битами, другая 5ю трейтами . Двоичные попадают в диапазон -127..127. Троичные -121..121, почти то же самое.

Для сравнения двух 8ми битовых чисел надо:
- 7 сравнений младших битов
- 1 сравнение старшего
- 1 инвертация результа

Для сравнения двух 5ти трейтовых чисел надо:
- 5 сравнений трейтов.

Все.

Насчет XOR надо подумать, как он делается в троичной логике и нужен ли вообще.
Вот тут очень много букв на эту тему http://ru.wikipedia.org/wiki/Троичная_логика Я даже чуть не вспомнил дискретную математику, когда это увидел :)

Date: 2010-01-29 01:04 pm (UTC)
From: [identity profile] fat-crocodile.livejournal.com
Для двоичных чисел нужно 8 сравнений. Для троичных 5. Для двоичных может понадобиться 1 инвертация. Ну, 9 двоичных операций против 5 троичных. С учётом того, что троичные выполняются медленнее, допустим, в 1,5 раза (это с потолка, так же как и отношение стоимости троичных железок к двоичным), получаем 9 против 7,5

Это не в два раза.

С xor-ом -- пропадает свойство a ^ b ^ b = a будет a ^ b ^ b ^b = a. Т.е. обратный элемент с точки зрения операции xor это будет уже совсем другой элемент.

Date: 2010-02-03 09:15 am (UTC)
From: [identity profile] ushastyi.livejournal.com
А почему троичные операции выполняются медленее? Скорость операций зависит исключительно от плотности монтажа. Лампы медленные -- потому что большие :) Пока там электроны долетят. Сейчас чем выше плотность, тем выше частота процессоров. Т.е. если бы троичные элементы могли делать с такой же плотностью, как и двоичные, то скорость операций отличаться не должна. Стоимость опять же определяется технологической развитостью, мы ее не берем. Рассматриваем чисто теоретически, при равных условиях.

Согласен, что разница тут не в два раза, но как минимум в полтора.

Я нашел у себя Кнута, почитаю подробнее по алгоритмы, и напишу отдельный пост про троичные компьютеры, наверное. С задачками :)

Date: 2010-02-03 09:27 am (UTC)
From: [identity profile] fat-crocodile.livejournal.com
Потому что на троичный нужно больше транзисторов, а значит там будут длиннее пути и дольше задержки. При той же плотности монтажа (плотность -- на уровне транзисторов считается, а не элементов).

А вот насколько больше -- этого я не знаю, потому и написал, что "с потолка". Это конкретные схемы нужно изучать, я сейчас не готов, схемотехнику я забыл основательно.

Date: 2010-02-03 09:50 am (UTC)
From: [identity profile] ushastyi.livejournal.com
Делать троичный компьютер на двоичных элементах, конечно, большого смысла не имеет :) Транзистор это бинарный переключатель, а для троичных компьютеров используются другие элементы, с симмитричным питанием, например. Полевые транзисторы или полупроводниковые негатроны (http://ru.wikipedia.org/wiki/%D0%9D%D0%B5%D0%B3%D0%B0%D1%82%D1%80%D0%BE%D0%BD_%28%D1%8D%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%B8%D0%BA%D0%B0%29), лавинные транзисторы, резонансно-туннельные диоды и т.п. То есть схемотехника совсем другая. У резонансно-туннельных диодов время перключения меньше одной пикосекунды. Это очень быстро.

Date: 2010-02-03 10:24 am (UTC)
From: [identity profile] fat-crocodile.livejournal.com
Да, пикосекунда это круто. А паковать их так же плотненько, как обычные транзисторы уже научились? И с тепловыделением у них не сильно хуже? Двоичная-то техника интенсивно развивалась последние 40 лет, техпроцессы отлажены.

Date: 2010-02-03 10:35 am (UTC)
From: [identity profile] fat-crocodile.livejournal.com
Кстати, полевые транзисторы в бинарной технике используются. Разве что их подключать как-то нестандартно? Но вообще в цифровой технике полевой транзистор работает как ключ, с положениями вкл/выкл. М.б. биполярные имеются ввиду, но и тут я не уверен.

Date: 2010-01-28 08:35 pm (UTC)
From: [identity profile] fat-crocodile.livejournal.com
Либо они имели ввиду какую-то иную реализацию поиска.

Да и к тому же, четверичный поиск прекрасно реализуется на двоичной технике. Без вопросов.

Про АЦП, боюсь, ты не совсем в курсе (могу заблуждаться). Речь об АЦП типа поразрядного уравновешивания. На каждом шаге получается очередной бит, сигнал сравнивается и оказывается либо больше, либо меньше. Предлагается делить на три части, типа быстрее. Не вопрос! Почему не на четыре? Мы будем получать по два бита с каждого сравнения.

Нет ничего волшебного в числе 3.

Profile

kaipa: (Default)
kaipa

April 2017

S M T W T F S
       1
2345678
9101112131415
16171819202122
23242526272829
30      

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 22nd, 2025 08:54 pm
Powered by Dreamwidth Studios