Компьютерная археология. Часть 1
(следующая часть - здесь)В этом цикле статей я собираюсь рассмотреть два "исторических" (если не сказать - археологических), вопроса до сих пор остро волнующих не только специалистов, но и широкую публику, касающихся развития советской вычислительной техники. Рассмотрения эти будут взаимно увязаны, ибо "высшее не стоит без низшего" и один вопрос важен для понимания мотивов принятия решения по другому.
Итак, мы рассмотрим два вопроса:
- Являлась ли БЭСМ-6 уникальной передовой машиной, или же это была копия знаменитой CDC-1604?
- Оправдан ли был переход со своих наработок (БЭСМ, УРАЛ, Минск) к копированию серии IBM/360/370?
Во второй части нашего обзора мы рассмотрим еще более сложную и неоднозначную тему - переход от собственных разработок к "точному копированию" системы IBM/360.
Ссылки на документацию и другие источники информации, равно как и благодарности будут помещены во второй части.
P.S. Ссылки на эту запись приветствуются (редкий случай).
P.P.S. И, конечно, не расслабляйтесь - вас ждет вторая серия!
Update:
Поскольку оказывается, что есть еще как минимум два (а то и три) заблуждения по поводу БЭСМ-6, я решил написать небольшое обновление по теме.
Первое заблуждение касается наличия в БЭСМ-6 кэш-памяти. Об этом пишет чуть не каждый второй. На самом деле, назвать то, что имелось в машине
"кэш-памятью" можно только с очень большой натяжкой. Примерно такой, как изобретение Рентгена Иваном Грозным. Да, принцип похож, но до полноценной реализации еще пахать и пахать. Что было на самом деле? Четыре т.н. буферных регистра числа (БРЧ) куда считывались слова из памяти, чтобы потом
к ним могло быстрее обратиться арифметическое устройство (АУ). Аналогично, имелось 8 (забавная асимметрия) буферных регистров записи (БРЗ) куда число помещалось перед отписыванием в память. Адрес, куда должен быть записан операнд, сохранялся в т.н. БАЗ (буферном регистре адреса записи). Если в дальнейшем
оказывалось, что исполнительный адрес совпадает с одним из адресов в БАЗ/БАС-ах, операнд брался из БРЗ/БРЧ а не из памяти. Вот и вся наука. Чтобы не утомлять вас дальше русскими TLA, отсылаю всех желающих к документации по АЛУ (http://www.mailcom.com/besm6/ALU.pdf). Полноценная же реализация кэш-памяти впервые появилась в машине IBM/360-85 в 1969 году.
Второе заблуждение говорит о БЭСМ-6, как якобы предвестнице RISC-архитектуры. На этой почве тоже строится много спекуляций. Но и тут, истина довольно далеко. Безусловно, в БЭСМ-6 не слишком много команд. Можно сказать даже - мало. И, разве что по этому параметру она сближается с RISC. Другое дело, что команды эти - совсем не похожи на традиционные RISC-овские. Они имеют совершенно различную сложность и времена выполнения. Ключевыми особенностями RISC можно считать:
- Небольшой набор простых команд
- Минимизация команд работы с памятью, за счет большого числа регистров общего назначения
- Небольшая длительность выполнения каждой команды (1-2 такта) CPU
Ни одна из этих особенностей не присуща системе команд БЭСМ-6. Она включает как очень простые команды (запись, сложение) так и довольно сложные (деление, сборка). Время выполнения команд различается в десятки раз! Например, чтение требует 3-х тактом, сложение - 11-ти, деление - 50 (в среднем). О максимальных временах выполнения говорить не приходится. Чтобы не быть голословным, и дать читателю более полную информацию, приведу страницу руководства с таймингом команд:
Последнее заблуждение частично вытекает из двух первых, и, кроме того, и сильно подогревает самомнение ура-патриотов. Состоит оно в том, что БЭСМ-6 была быстрой, и не просто быстрой, а прямо таки супер-быстрой машиной для своего времени. Спору нет, на европейском уровне характеристики БЭСМ-6 смотрятся неплохо. Но и только. Даже не беря творения Сэймура Крэя (по сути - тоже числодробилки) обычные майнфрэймы IBM были не хуже на научных расчетах, и существенно лучше на финансовых. Удивляться тут нечему. Еще раз напомню читателю, что БЭСМ-6 не имела полноценных команд целочисленной арифметики, и, значит любые арифметические команды выполнялись на вещественном сумматоре. Это приводило к тому, что даже в самом лучшем случае сложение занимало 5 тактов (в среднем - 11) а умножение - 15 тактов (в среднем - 18.5, в худшем - 162(!)). Что уж говорить о каком-нибудь сложением десятичных чисел. В результате, программы не только выполнялись медленнее, чем могли бы, но и занимали больше места. Об этом упоминает и В.В. Пржиялковский в своем обзоре - "Проведенные в ИПМ АН СССР исследования показали, что программы, составленные для IBM-360, требуют в 1,5-3 раза меньшего объема памяти, чем программы БЭСМ-6, “Весна”, М-20". Если же говорить о производительности в цифрах - по "популярному" тогда тесту Whetstone, БЭСМ-6 набирала примерно 0.3-0.4 миллиона операций с одинарной точностью в секунду, что было на уровне средних моделей IBM. И никаких чудес, увы...