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 04:56 pm (UTC)
From: [identity profile] fat-crocodile.livejournal.com
Вот ещё интересное про кибернетику (в двух частях)

http://propaganda-journal.net/1034.html
http://propaganda-journal.net/1045.html (с уклоном в философию)

Date: 2010-01-28 05:12 pm (UTC)
From: [identity profile] ushastyi.livejournal.com
Да, это больше вопрос терминологии.

Кстати, надо бы еще написать про успехи советских программистов. Например, под руководством трижды чемпиона мира Михаила Ботвинника разрабатывались лучшие в свое время шахматные программы, которые уверенно побеждали американские аналоги.

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

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.

Date: 2010-03-26 05:12 am (UTC)
From: [identity profile] alex904.livejournal.com
Блин, ты хотя бы историю сначала подучил что ли. Отсюда и рождаются легенды. Если ты про Каиссу, то Ботвинник к ней имел отношение весьма косвенное. Он ничем не руководил.
Каиссу разработал Кронрод, Адельсон-Вельский и Донской. Точнее, это были три основных разработчика. Если уж стали интересоваться отечественной компьютерной историей, то такие вещи вы должны знать наизусть, молодой человек. "Эльбрус история легенды" вобще жуткая политка, не забивайте себе голову. Почитайте лучше Бурцева, который был главным конструктором 1-го и 2-го Эльбруса. Он хотя бы не врет так как Бабаян и Ко.

Date: 2010-03-26 08:26 am (UTC)
From: [identity profile] ushastyi.livejournal.com
О, как вы внимательно читаете комменты :) Это лестно.

Опять я неточен. Я еще с далекого детства помню, что Ботвинник занимался разработкой шахматных программ, но это была не Каисса. Когда я писал этот пост, я имел ввиду имеенно Каиссу, таким образом неточно связав два утверждения. Но я не был сильно неправ, потому что:

"Программа Ботвинника «Пионер» воспроизводила процесс мышления человека. Сенсации пришлось ждать пять лет. 28 января 1977 г., продумав 3 часа 45 минут, «Пионер» впервые решила шахматный этюд так, как это сделал бы человек. Машине потребовалось для этого перебрать 200 позиций. В том же году Ботвинник предложил решить этот этюд победителю очередного чемпионата мира среди компьютеров – американской программе Chess. Перебрав почти 2 млн. позиций, «американка» выбрала неправильное решение и в конце концов сдалась."
Взято с первой попавшейся ссылки: http://evrovien.ru/?p=88
Проверил еще по двум :)

А про Эльбрус я вашу претензию не принимаю, так как основные сведения о нем я почерпнул как раз из статьи-интервью Бурцева, на которую дал ссылку: http://www.electronics.ru/issue/2000/4/1 Вообще, очень хорошая статья про развитие советской вычислительной техники.

Date: 2010-03-26 05:05 am (UTC)
From: [identity profile] alex904.livejournal.com
> это был первый советский супер-компьютер, не уступавший американским Креям (Cray) того времени
Аффтар жжошь. Первый Cray появился в конце 75-го года, примерно 9 лет после появления БЭСМ-6. Если же ты про CDC-6600, над которым действительно работал Сеймур Крэй, то он превосходил БЭСМ-6 ровно в три раза и появился за два до нашей машины (серийное производство начато в 64-м году).

Date: 2010-03-26 08:12 am (UTC)
From: [identity profile] ushastyi.livejournal.com
Спасибо за отклик. Я не проверил всю информацию, к сожалению. Вы правы. БЭСМ-6 надо, действительно, сравнивать с CDC-1604 и CDC-6600, которую проектировал Крей (он был главным архитектором в CDC, насколько я понимаю). И БЭСМ-6 уступает CDC-1604 по производительности, хотя похожа по использованным инновациям, что позволяет их сравнивать на примерно одном уровне.

CDC-1604

Date: 2010-04-29 05:43 am (UTC)
From: [identity profile] malchish-org.livejournal.com
Вы уверены, что CDC-1604 бьёт БЭСМ-6 по производительности?

The 1604 was used by the Soviet nuclear weapons laboratory. Their BESM-6 super computer was designed to be somewhat software compatible with the CDC 1604, but it ran 10 times faster and had additional registers.

http://en.wikipedia.org/wiki/CDC_1604

Тактовый цикл у CDC-1604 всего 1 МГц. У БЭСМ - 10 МГц и она ещё имеет конвейер! Поэтому я не верю даже, что БЭСМ уступала CDC-6600 c той же тактовой частотой, ибо конвйер Крей "изобрёл" позже и ввёл только на CDC-7600.

Не было и программной совместимости БЭСМ-6 и CDC-1604, как пишут американцы. Они привирают, чтобы создать впечатление, что мы всё же содрали их дезайн.

Re: CDC-1604

Date: 2010-04-29 06:33 am (UTC)
From: [identity profile] ushastyi.livejournal.com
Я то ли запутался в цифрах, то ли разные источники пишут по-разному.

Скажем так. БЭСМ-6 сравнивают с CDC-1604, и БЭСМ-6 лучше. Но в 1964м году уже появился CDC-6600 на принципиально новой архитектуре, с декларируемой производительностью 3 MFLOPs. (У БЭСМ-6 - 1MFLOPs). Конечно, дело не только в производительности в флопсах, но это некоторый показатель.

Хотя про 3MFLOPs у CDC-6600 написано в русской википедии в статье про Крея, в английской про CDC-6600 фигурирует более скромная цифра в 1MFLOP, как у БЭСМ-6. Но уже в 69м вышел CDC-7600 с производительностью от 10 до 36 MFLOPs.

Re: CDC-1604

Date: 2010-04-29 06:41 am (UTC)
From: [identity profile] malchish-org.livejournal.com
Вот-вот. CDC-6600 не имела 3 MFLPS, а имела 3 MIPS. БЭСМ-6 имела 10 MIPS.
По операциям с плавающей точкой у них был примерный паритет в 1 MFLOPS.

CDC-7600

Date: 2010-04-29 06:58 am (UTC)
From: [identity profile] malchish-org.livejournal.com
CDC-7600 имел клок уже 27,5 нс и потому был быстрее CDC-6600 в три раза по частоте. Но он же получил ещё и конвейер, как у БЭСМ-6. И потому по целочисленным операциям CDC-7600 был в 4 раза быстрее БЭСМ-6. По плавающей арифметике сравнивать сложнее, поскольку там "use of pipelining on the 7600 improved performance over the 6600 by a factor of about 3":
http://en.wikipedia.org/wiki/CDC_7600
Там же:
"was generally about ten times as fast as the CDC 6600, and could deliver about 10 MFLOPS on hand-compiled code, with a peak of 36 MFLOPS[1]."

10 раз - это конвейер(3)+рост частоты(3). Но на плавающей арифметике это очень неоднозначно. Деление занимает 10 тактов и на делении конвейер может дать десятку роста. На умножении (3 такта) - только тройку. Однако компилятор не даёт конвейеру заполнить все такты! Это сложная задача для компилятора. Поэтому пишут про 10 MFLOPS и пиковую 36 MFLOPS. Но реально там ещё меньше должно получаться - 3MFLOPS стандарт и 10MFLOPS пиковой. Это опять быстрее в 3 раза, чем у БЭСМ-6. Теоретически. Реальность могли бы показать только сравнительные тесты.

Re: CDC-1604

Date: 2010-04-29 06:37 am (UTC)
From: [identity profile] malchish-org.livejournal.com
Пардон, цикл CDC-1604 был 5 мкс. CDC-1604 был в 50 раз медленнее 6600 с циклом 100 нс. Если считать по тактам, то производительность CDC-6600 и БЭСМ-6 должна была быть одинаковой. Однако CDC-6600 называют суперскаляром из-за того, что его функциональные блоки могли работать параллельно. Однако реально это происходит не часто из-за невозможности распараллелить вычисления. Оценка её производительности в 3 млн оп/сек - условная и исходит из того, что на опреацию уходит три такта - 300 нсек.

БЭСМ-6 имеет конвейер, который позволяет извлекать данные, производить арифметическую операцию и сохранять результат за один такт процессора. Таким образом можно оценивать производительность БЭСМ-6 в 10 млн оп/сек. Хотя операции с плавающей точкой занимают несколько тактов и потому производительность её также оценивают в 1 MFLOPS. Путаница MIPS и MFLOPS привела к тому, что БЭСМ-6 считают менее производительной, чем CDC-6600. Однако конвейер БЭСМ-6 позволял ей делать целочисленные операции в 3 раза быстрее CDC-6600, сохраняя паритет на операциях с плавающей точкой.

Re: CDC-1604

Date: 2010-04-29 08:02 am (UTC)
From: [identity profile] ushastyi.livejournal.com
Проблема в том, что в БЭСМ-6 отсутствовали целочисленные операции. Они эмулировались как операции с плавающей точкой. Взято отсюда:

http://www.mailcom.com/besm6/index_ru.shtml

Re: CDC-1604

Date: 2010-04-29 08:47 am (UTC)
From: [identity profile] malchish-org.livejournal.com
Под целочисленными операциями в отношении процессоров понимаются ВСЕ команды, отличные от арифметики с плавающей точкой. Туда относятся операции ветвления, загрузки регистров, сдвиги, сохранение в память. Они и составляют основную массу исполняемых команд в любой программе. Естественно, что они эмулироваться на блоке с плавающей точкой просто не могут. Да, деление и умножение - могут. Видимо про них и речь - просто не было целочисленного умножителя. Может быть и сложение/вычитание, хотя про неё-то как раз врядли - "(одна не считается :-) )." Для общей производительности системы это не слишком важно.

Ту ссылку, что вы тут даёте, лучше выкинуть. Непрофессиональная туфта с попыткой очернить совесткую технику. Более профессионально:
http://www.icmm.ru/~masich/win/lexion/besm6/besm6.htm

Re: CDC-1604

Date: 2010-04-29 09:24 am (UTC)
From: [identity profile] ushastyi.livejournal.com
Я бы разделял арифметические операции, целочисленные и с плавающей точкой, и прочие. Хотя вы правы, что под MIPS -- это операции вообще, инструкции. Кстати, по приведенной вами ссылке операции-инструкции как раз четко разделяются.

"Ряд необычных схемных решений в арифметическом устройстве (невидимых программисту) обеспечил возможность при такте 10 МГц получить высокое быстродействие выполнения операций: сложение – 1,1 мкс, умножение – 1,9 мкс, деление – 4,9 мкс, прочие операции – 0,5 мкс. Это позволяет оценить среднее быстродействие АУ в 1 млн. оп/с"

То есть если мы возьмем только умножение, то БЭСМ-6 может делать примерно 0.5 миллиона операций в секунду. В то время как CDC-6600 -- 1 млн. Параллельное выполнение умножения увеличивает эту оценку для CDC вдвое, насчет же БЭСМ-6 -- я не знаю, но похоже, что параллельно вычисляться ничего не могло. Надо подробнее посмотреть.

Вообще-то, FLOPS меряются не на бумаге, а тестом определенного вида. Например, http://en.wikipedia.org/wiki/LINPACK Только в этом случае можно померять производительность системы целиком, включая работу с памятью, эффективность конвеера, кэша, параллелизма и проч. То есть теоретическая оценка имеет место быть, но без реального эксперимента она остается теоретической.

P.S. "Моя" ссылка -- просто первое, что подвернулось под руку, идет напрямую с сайта ИТМиВТ. По-моему, это как раз сайт энтузиастов, которые до сих пор делают эмуляторы БЭСМ-6 и проч.

Re: CDC-1604

Date: 2010-04-29 10:16 am (UTC)
From: [identity profile] malchish-org.livejournal.com
Данные по скорости выислений для БЭСМ-6 тут приводятся для плавающей арифметики и без учёта конвейера. Оценку MFLOPS делают по самой быстрой операции - сложению. Так и получили 1 MFLOPS.

Насчёт умножения по CDC-6600. Что они сами пишут на этот счёт?

"Both the 6400 and 6600 CPUs had a cycle time of 100 ns (10 MHz). Due to the serial nature of the 6400 CPU, its exact speed was heavily dependent on instruction mix, but generally around 1 MIPS. Floating adds were fairly fast at 11 clocks, however floating multiply was very slow at 57 clocks. Thus its floating point speed would depend heavily on the mix of operations and could be under 200 kFLOPS. The 6600 was, of course, much faster. With good compiler instruction scheduling, the machine could approach its theoretical peak of 10 MIPS. Floating point adds took 4 clocks, and floating point multiplies took 10 clocks (but there were two multiply functional units, so two operations could be processing at the same time.) The 6600 could therefore have a peak floating point speed of 2-3 MFLOPS."
http://en.wikipedia.org/wiki/CDC_6000_series

6400 - это вариант 6600 без паралельных модулей. Поэтому для 6400 получаются честные данные, а для 6600 - не очень, поскольку подразумевают "good compiler instruction scheduling", чего ожидать не приходилось. Причём 10 тактов для умножения - тут какая-то уже путаница, ибо для 6400 было 57. Вот эти 57 я бы и взял для оценки времени умножения - 5,7 мкс.

Я почему об этом так уверенно пишу. В том процессоре, который я сам разрабатывал, так же были отдельные модули для разных операций с плавающей точкой. Был умножитель, был сумматор, был модуль СПЭФ - спецфункции (деление, синус-косинус, логарифм...). Эти модули также можно было загружать одновременно и каждый из них отрабатывал несколько тактов процессора (тоже 100 нс, кстати). И на уровне макробиблиотек нам удавалось немного распараллелить их работу. Но мы НИКОГДА не считали из-за этого, что у нас производительность удваивается или утраивается. Поскольку реальные программы этот эффект практически не замечали. Поскольку сумматор у нас отрабатывал за 2 такта (200 нс), то общую производительность системы мы указывали 5 MFLOPS. Хотя мы могли запихать к корзину до 5 сумматоров и указать 25 MFLOPS. Просто нам незачем было кого-то обманывать.

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. 13th, 2025 04:06 am
Powered by Dreamwidth Studios