苏联导弹防御系统的诞生。 最伟大的苏联计算机
列别杰夫的垄断
让我们马上预订 BESM-6 是一台大型机器,从各个方面来说都是如此。 因此,简要地写它是行不通的。 由于材料丰富,我不得不将一篇巨大的文章分成三个部分,每个部分都继续前一个,所以为了完全沉浸,建议按顺序学习。
1958 年,列别杰夫同时推出了他的 BESM 的两个版本——军用的、速度更快的 M-20 和民用的、速度较慢的 BESM-2。 这一刻,他竟然在电脑厂商中占据了一个传奇的位置,类似于卡拉什尼科夫。
苏联对垄断的热爱并不比腐朽的资本主义更糟糕,但在我们国家,属于各个部委的各种通用设计师学校就像是公司。
ITMiVT 机器是按照苏联的标准在巨大的流通量中建造的 - 总共有几千个副本,包括几百个超级计算机。 它们无处不在——在杜布纳、在阿尔扎马斯、在莫斯科国立大学、在 MCC、在 A-135 导弹防御系统、在 S-300——但更容易列出它们不在的地方。
列别杰夫学派取得了如此大的垄断地位,以至于我们仍然带着他们的遗产生活,就像永恒不变的 AK。
ITMiVT 是如何走到这个位置的?
到 1958 年,列别杰夫有了两个最喜欢的学生和继承人——弗拉基米尔·安德烈耶维奇·梅尔尼科夫和弗谢沃洛德·谢尔盖耶维奇·布尔采夫。 第二个值得单独讨论与“厄尔布鲁士”有关,现在让我们考虑一下梅尔尼科夫的命运和工作。
1951年,“数学与计算装置与装置”专业学生的第一次毕业在MPEI举行,并于同年成立该系。 毕业是因为学生实际上已经在“自动化和远程控制”专业框架内接受了模拟计算机设计方面的培训。 当时还没有谈论数字机器,参谋长教授 G.M. 日丹诺夫和那一代几乎所有的科学家一样,只专注于模拟机器,1956 年出版了他的教科书“数学机器和连续运行设备”。
尽管有这种保守主义,日丹诺夫还是吸引了计算机体系结构方面的专家来教学,特别是莫斯科电力工程学院无线电工程系的两名毕业生——我们的老朋友卡尔采夫和马秋欣。 听到这样的案例,许多其他人并没有袖手旁观——我们也知道基托夫、拉米耶夫,当然还有列别杰夫,他刚刚开始成为国内计算机工程大师的道路。
正如我们已经提到的,Lebedev 是一位出色的电气工程师,最初他专门研究能源问题,甚至在 1945 年建造了一台模拟机来简化网络计算,同时在 MPEI 的电力系统继电保护和自动化部门工作。
早在 1939 年,反对教授的论文。 影音Netushila(未来自动化与计算机工程学院院长)Lebedev 研究了她的主题“高速脉冲计数器的触发元件分析”,并思考了一种相当不寻常的数字计算单元架构。
防御是在战后才进行的,3年后列别杰夫驱车前往基辅建立MESM(顺便说一下,赫鲁晓夫当时是乌克兰苏共中央委员会第一书记(布尔什维克),和他们的友谊就这样开始了)。 当拉夫连季耶夫从那里把他拉回莫斯科时(事实上,在此之前他曾邀请他到那里担任整个研究所的主任,这在莫斯科很难实现),我们记得,列别杰夫有大型机器的架构。
在创建 BESM 的同时,他继续在 MPEI 任教,并在第一批毕业研究生中招募了他的初始团队,他分配给他们设计新计算机节点的任务(更早的,学生的文凭更有趣的是:作为毕业作品,开发欧洲第一台计算机的节点并不是一个别墅村计算的变压器箱)。
1951 年最著名的是 V.A. 梅尔尼科夫和 V.S. Burtsev,后者的生活普遍困难,他在战争中失去了父母,把列别杰夫当作父亲一样对待。 除了这一对,A.G. 劳斯,I.D. Vizun, A.S. 费多罗夫和洛杉矶奥尔洛夫。
总的来说,列别杰夫有两个非常强大的方面。
首先,他是一流的组织者,在最短的时间内获得了人力资源并能熟练地适应工作,这一点只有布鲁克可以与他相提并论。
其次,即使在这里也没有人能与他相比,尽管外在严厉,列别杰夫是一个极其迷人、冷静、灵活和机智的人——横向基托夫、布鲁克、拉米耶夫、卡尔采夫、尤迪茨基所缺乏的品质——实际上对几乎所有人来说都是如此输给列别杰夫学校的国内设计师。
列别杰夫是唯一一个在他的严格指导下成功地将计算机的发展变成了一种传送带的人。 他自己设计了(他可以,本着老派的精神)基本的逻辑单元并发明了一套命令系统(严格按照 1940 年代的精神经典,事实上,他只发明了其中的两个——一个用于MESM / BESM / M-20,第二个是 BESM-6),其他一切都由他的学生完成,实际上是在制造机器。
他还负责任何苏联发展的一个极其重要的部分——与支持者的互动。
列别杰夫是苏联的一种乔布斯——他和科罗廖夫一样,知道如何在苏联体制的各个层面推动几乎任何事情,任何地方,但与科罗廖夫不同的是,他是如此美丽和狡猾,直到直到他的死(与所有其他设计师不同)不是单一的血统,他甚至受到那些失去他上学的人的爱戴和尊重。
结果,到 1951 年底,第一实验室的基础由莫斯科动力工程学院的毕业生组成,他们到 1 年已经完成了列别杰夫的 BESM。 梅尔尼科夫从事控制装置的开发,非常成功,在组装 BESM-1953 时,他成为了事实上的首席设计师,同时也是 BESM-2 的设计师。
关于 BESM-6 开发的初始阶段几乎一无所知(甚至不清楚为什么是 6 以及 5 在哪里),自 1964 年以来才发现了合理的参考资料。
探索类似的西方建筑可以帮助揭示一滴光。
IBM 7030拉伸
1959 年,用于科学计算的极其强大的商用计算机 IBM 7090 发布,并且出现了前两台真正的超级计算机——IBM 7030 Stretch 和 Remington Rand UNIVAC LARC。 LARC 特殊足迹 故事 没有离开,但 IBM 7030 已经成为一个真正的偶像。
IBM 7030 The Stretch Data Processing System 和它的剩余部分现在在山景城的博物馆中——两个用于控制和调试的巨大工程控制台以及控制机器的数学家程序员的控制台。 标准模块化卡,由 7030 组装而成 - 在三倍宽度的手上,在一个机架中 - 单一宽度。 下面是一个矩阵乘法程序的例子(照片 - 档案 https://www.ibm.com 和博物馆 https://www.computerhistory.org)
首先,它是第一个实现每秒超过一百万次操作的性能——1,2 年的 1959 MIPS,一个疯狂的数字; 第一个使用 SMS 系统 - 标准模块卡; 第一个,在开发过程中发现并应用了分层硬件设计的基本原则,从开发最佳命令系统开始,到在标准单元上实现单个模块结束。
Stretch 是第一台使用标准铁氧体内存模块的量产计算机,采用油浸冷却,这是另一项创新。 另外,Stretch 可以在 2 个并行线程中读写内存,这使得处理 RAM 的速度可以达到 XNUMX MIPS 的水平(是的,在那个年代,内存速度超过处理器)。
一个八位字节和8/32/64位的机器字,最方便,直到现在已经成为标准(不像国内狂热的机器字,宽度为22到50字节,往往甚至没有大小的倍数可寻址内存单元),也恰好出现在其中,并且 Stretch 处理器在 Intel Core 之前完全是 64 位的。 此外,计算机具有处理位域的硬件支持,这使得处理可变长度的数据类型成为可能。
Stretch 支持实数运算、整数运算和字母数字字符。 此外,它是第一个实现多道程序设计的,并在此框架内实现了内存保护和标准中断。
Stretch 是世界上第一个基于发射极连接的逻辑电路构建的,功能强大且需要良好的冷却,但在 1980 年代之前,各种形式的 ECL 逻辑以尽可能快的速度成为超级计算机硬件的标准。
第一次在处理器中使用 XNUMX 级标准流水线(经典的提取、解码、执行步骤)。 我们将在下面单独讨论传送带。 世界上第一次应用了与外围设备一起工作的最灵活、最有效(虽然不便宜)的通用实现,这已成为当今大型机的主要特征。
一个专门用于数据交换的协处理器(ESC——交换专用计算机,是的,当时还没有明确的术语区分,例如在LARC中,两个处理器中的每一个都被称为“计算机”,而I/O子系统被称为一个“处理器”)起到了主开关的作用,提供了32个I/O通道和RAM之间的通信,从而减轻了中央处理器的负担。 这个方案非常有效,以至于它迁移到 IBM S/360 并且今天仍然在大型计算机中使用。
此外,Stretch 的价值在于它与 IBM 的大量设备完全兼容 - 从所有类型的磁力驱动器到打字机和打孔机,并且由于通道协处理器,所有这些经济总是并行运行速度,并通过简单的插入所需的电缆连接。
苏联工程师在试图塞满不受支持的设备时会受苦(因为几乎所有大型计算机与外围设备的重要连接都需要巨大的拐杖),如果他们碰巧设置了 Stretch,他们会如释重负。
Stretch 命令系统的进步令人难以置信,Gene Amdahl、Stephen Dunwell、Fred Brooks 和 John Cocke 在开发过程中发现的许多想法实际上已用于现代微处理器并已成为标准。自 1960 年代以来:首先用于强大的系统,然后无处不在. 其中包括指令的预解码和操作数的预取(有史以来第一种基于分支预测的推测执行形式)、错误跳转后重新加载流水线、高级索引寄存器等等。
Stretch 处理器中的解码和预测单元实际上是一台拥有自己流水线的独立计算机。 因此,虽然正式保留为单处理器,但 Stretch 只需要 4 条矩阵乘法指令。 除其他外 - 这台机器非常紧凑,比 IBM 35 强大 704 倍,Stretch 需要相同的机器。 185平方米的大厅m. 并消耗大约相同数量的能量。
总的来说,描述这台机器的优点需要很长时间,最重要的是这一切都是1959年,而这一切都是在那个时代的开源中描述的,还有UNIVAC LARC的设计。
故事中最有趣的部分
现在故事中最有趣的部分——列别杰夫作为苏联专家小组的一员,于 1959 年 7090 月抵达美国的 IBM,学习计算机工程的先进经验。 在两周内,苏联代表团参观了麻省理工学院和 IBM 工厂,熟悉了科学计算机 XNUMX,并大致了解了“计算机公司 - 来自大学的客户”的生产和交互组织。 最有可能的,正是在这一刻形成了一个超级想法——在苏联重复同样的事情。 为科学中心创建统一的强大计算机架构。
IBM 的角色由 ITMiVT 扮演,Amdall 和 Brooks 的角色由 Lebedev 和 Melnikov 扮演。 仍然需要选择一辆原型车,未来的 BESM-6 将扮演它的角色。
顺便说一句,列别杰夫访问了很多地方——在德国,甚至 1965 年在日本,还有他的门生梅尔尼科夫——在印度和中国,并没有与印度一起成长,但在中国他帮助掌握了中国克隆 BESM—— 2 生产中...
IBM 7030 最接近的竞争对手是 UNIVAC Livermore Atomic Research Computer (LARC),在 Livermore 实验室的照片中,它的布局与机器之父之一——John Adam Presper Eckert、Harold Brown 和 Edward Teller 正在研究热核 武器,其中一个汽车零件交付的箱子,总共有 18 辆这样的卡车,计算机是在实验室现场组装的。 LARC 是世界上第一台超级计算机的想法本身,创建超级计算机的概念正是在他的影响下来自 IBM,但它比 7030 完成得晚,而且速度更慢,大约 1 MIPS,还有更多昂贵,只建造了两台机器...... LARC从架构的角度来看很奇怪,它使用60位指令,二进制十进制编码,而它是渐进式寄存器(最多99个通用寄存器),它应该成为共享RAM的双处理器(事实上,它只在单处理器配置中运行良好),有一个单独的 I/O 处理器和一个独特的芯片 - 电子页面记录器,它允许在 35 毫米胶片上显示文本和图形以创建幻灯片。 为了对抗寄生电流,汽车的整个车身从内部镀上了一层金,而底盘本身的触点则镀上了一层银。 照片来自 Livermore Archives,http://www.vintchip.com/ 和 https://www.computerhistory.org
没有人谈论克隆 Stretch - 这台机器极其复杂,苏联工业不会拉动它。 此外,实施的许多细节都是隐藏的,它本身占据了列别杰夫所针对的、苏联真正需要的一个略有不同的利基。
苏联迫切需要一台功能强大(比当时研究所中的任何东西都强大得多)、通用、廉价(相对)可以大规模复制的科学计算机。 它的应用点很多——库尔恰托夫研究所、莫斯科国立大学、鲍曼卡、杜布纳、新西伯利亚、阿尔扎马斯等等,都与核研究有关。 BESM-2 和 M-20 没有拉动——所有研究中心都要求模拟 7090,一种速度至少为 200 KIPS 的汽车。
在这种情况下,列别杰夫来美出差,大家都明白学习先进经验是必要的。
为此,他作为科学院、部长和赫鲁晓夫的宠儿,敲出了资金,组建了一个团队。 心情大好,大家都在上升——就在苏联将学习科学计算机有效发展的秘诀,并最终创造出自己的计算机,而不是动物园“明斯科夫”、“奈里”、“乌拉洛夫”等,互不相容,发行量小,不够强大。
从某种意义上说,列别杰夫真的很想从计算机变成卡拉什尼科夫 - 创造一个参考实施,苏联权力的象征,可以印上数百个。
他完成任务了吗?
说不完全是不会剧透的。
那么,列别捷夫为何以及在哪里失败,关于 BESM-6 的神话从何而来?
要回答这个问题,你首先需要更进一步地向西方走去。
因此,在 1959 年,列别杰夫受到启发,开始开发自己的架构——不仅仅是一台大型机器,而是一台建立在与 MESM 和 BESM 完全不同的原理上的科学超级机器,在怪物的背景下,它看起来像杂货店的计算器。 7030。
谁将领导开发——毫无疑问,当然,梅尔尼科夫,他已经在 BESM 和 BESM-2 中证明了自己。
也很明显谁将开发这些单位,即 Melnikovskaya 集团。
列别杰夫一如既往地处理组织问题,取消党内的资金和普遍支持,以及研究计算机工程的世界模型并为新机器开发命令系统。 还有一些东西要研究——有必要决定一个原型来复制。
1946 年,美国海军由在战争年代从事日本海军代码解码器工作的工程师创建了一家小公司 ERA(工程研究协会)。 该公司开发了多种民用车辆,包括 ERA 1103,但国会谴责海军作为商用车辆,并于 1952 年将公司出售给雷明顿兰德公司。 然后,Sperry(当时已经拥有 UNIVAC)又收购了 Remington 并剥离了 Sperry UNIVAC 的计算机部门,发布了重新设计的 ERA 作为 IBM 704 - UNIVAC 1103 的竞争对手。
CDC 1604
斯佩里显然瞄准了大规模商用大型机,决心成为市场上仅次于 IBM 的第二大玩家,1957 年,一群退伍的工程师对此感到厌烦。 William Norris、Robert Perkins、William R. Keye、Howard Shekels、Robert Kisch 和 Seymour Roger Cray 离开了 Sperry,拿出 5 美元注册了他们已经成为传奇的公司——Control Data Corporation。
总工程师是克雷,历史上最伟大的计算机架构师之一,被讽刺地称为所有超级计算机之父。
然而,他的第一个工作是一台简单得多的机器——CDC 1604。作为一台科学和商业计算机,在缺乏资金的情况下(这家初创公司甚至没有普通晶体管的资金,克雷用有缺陷的机器组装了一个原型那些他可以在当地无线电零件商店以便宜的价格买到的),他立即发现了克雷天才的所有不可思议的力量。
CDC 1604 比巨大的科学 IBM 7090 便宜几倍,结果证明比它更快,一段时间内成为地球上最强大的通用计算机,性能约为 200 KIPS。
CDC 1604 具有 1950 年代强大的美国机器的典型架构,带有加法器,而不是更渐进的通用寄存器(只有加法器寄存器本身,或有时称为累加器,6 个索引寄存器,一个程序计数器和一个算术辅助寄存器)和分别是一个单播的 48 位机器字,包含两条 24 位指令。 这台机器有整数和实数算法。
一个有趣的功能是工作指示。 DAC 可以读取电池的前三位,并使用控制台内置的电子管放大器通过扬声器播放。 该方案可以被编程用于向机器操作员发出各种声音效果和警告。 任何熟悉CDC 1604架构和可执行程序的人都可以通过声音立即了解错误发生的地方。
于是,原型就找到了。
CDC 1604 比 IBM 7090 更便宜、速度更快,它的架构更简单,一年之内就向美国实验室销售了巨大的销量。 这意味着到 1961 年,已经为它编写了大量 Fortran 程序,其中核科学家梦寐以求的软件被认为是最有价值的。
与硬件相比,破解程序要容易得多,因此目标 - 实现与 CDC 1604 的二进制兼容性从一开始就开始了。
即使在苏联,他们也知道软件比硬件更重要,计算机可以开发,但哪里有数百万工时为他们编写软件?
在 1960 年代,应该发生一场革命——应该出现一台苏联计算机,其中包含许多不逊于美国的应用程序(如果它们被盘绕会怎样)。
原则上,这样的计划会有成功的机会,但克雷失败了。
在准备克隆 CDC 1604 的过程中,22 年 1963 月 6600 日,Control Data 宣布了 CDC XNUMX,这是历史上最伟大的机器之一。
IBM 感到羞耻,他们还没有完成将 Stretch 运送给所有客户,而 Cray 的计算机已经将他送入了计算机科学的石器时代。 按照传统,它比 IBM 怪物更紧凑、更便宜,并且比它快 3,5 倍 - 超过 3 megaFLOPS。
有史以来第一个超标量处理器,10 个外围协处理器,氟利昂冷却(也是世界上第一个)在最新的平面硅晶体管上使用 Cordwood 专有技术组装的最紧凑的板(400 个!),一个先进的多任务操作系统 SIPROS(Simultaneous处理操作系统) - 这里只是这台机器的一些创新。 最早的计算机买家是原子能委员会和气象局,到 000 年,1967 台 CDC 63 掌握在精英客户手中,成为当时科学研究的中坚力量。
亚特兰特
与此同时,当时第三台标志性的超级计算机出现在英国——著名的阿特拉斯,由英国计算机科学的摇篮曼彻斯特大学联合政府委托Ferranti和Plessey公司共同开发生产使用在与 CDS 和 BESM 相同的困难业务中 - 制造核武器。
Atlas 建立在相当古老的锗双极晶体管上,但具有令人难以置信的进步架构,成为现代机器的第三支柱,与 IBM 7030 Stretch 和 CDC 6600 一起。总共制造了 3 个原始 Atlas 和另外两个升级的 Atlas 2 Titans .
Atlas 使用了第二种流行的计算机字方案,它也在 CDC 中使用 - 2/12/24 位格式,而不是 IBM 48/8/16 位标准(众所周知,IBM 赢得了更方便的)。 一个 32 位机器字可以包含一个浮点数、一条指令、两个 48 位地址或有符号整数,或八个 24 位字符。
在 Atlas 的创新中,有一个主管(三个自己的指令计数器寄存器)和虚拟内存(成熟的),与外部设备的工作以非常原始的方式组织,通过单独的寄存器与 I/O 通信,机器有当时的索引寄存器数量惊人——已经有 128 个。此外,Atlas 处理器有一个独特的异步管道,用于准备就绪,而不是像往常一样计时。
正因为如此,很难对其性能进行评估,但根据测试大致相当于Stretch(Atlas在1,59 μs左右加了两个浮点数,Stretch在1,38-1,5 μs左右)。 直到 1964 年 CDC 6600 出现时,Atlas 才明显被超越,克雷后来承认,正是对这台机器原型的描述促使他萌生了让 6600 比原来更早完成的想法故意的。
建筑的一个独特部分也成为了所谓的。 extracodes - 现在被称为固件,正是它们使构建超越 IBM 机器速度和功能的操作系统成为可能。 额外代码用于调用在硬件中执行效率太低的数学程序,例如正弦、对数和平方根,大约 150 个额外代码负责监督功能,这显着提高了操作系统的工作效率和安全性。
BESM-6 架构的三个来源和三个组件以及 Lebedev 对其实现细节的独特见解。 在照片中 - 严厉的列别杰夫和永远微笑的西摩克雷和汤姆基尔本(照片 http://www.histoire.info.online.fr, http://www.besm-6.su, http://www. chilton-computing .org.uk)。
事实证明,英国科学家是如此友好,以至于他们自己在 1963 年访问了苏联,甚至在 ITMiVT 上就 Atlas 机器进行了几次私人讲座,同年还出版了一本关于他们的结果的小册子。 结果,BESM-6 的工作像天鹅、癌症和梭鱼一样疯狂。 它开始从 CDC 1604 重写,以利用庞大的软件库,最终版本中包含的原始项目的许多架构特性证明了这一点。
在这两种情况下,元件基极都是晶体管(这在 1960 年是正常的,但在 1968 年尽可能奇怪),寻址是单播的,字宽是 48 位,命令长度是 24 位,2 个命令打包在一个字中,加法器宽度也为48位,地址宽度为15位,通用寄存器1+1寄存器-累加器,加法累加器电路,甚至匹配到位的RAM量 - 32.768字。
自然,这一切并非偶然——他们开始设计架构,重点是CDC 1604。令人惊奇的是——BESM-6电路板的尺寸是英寸(特别是6x8英寸),一般来说,只有硬件是公制。 TEZ 本身的架构(一种典型的替换元素,我们称之为组装机器的基本模块)也很明显地着眼于软木板,尽管安装密度降低了约 6 倍。 在苏联,晶体管很难用,所以逻辑本身就是二极管,晶体管只用于放大和反转信号。 结果,只需要 60 个二极管,但需要 000 个二极管(CDC 为 180 个晶体管组装)。
BESM-6 模块的设计部分借鉴了 CDC 6600,其封装密度降低了六倍。 CDC 6600 板的尺寸为 3"x 2,5" x 0,75",采用软木包装。BESM-6 板的尺寸为 6" x 8" x 0,5"。 图片来自 CDC 手册 - 6600 超级计算机和 https://www.1500py470.livejournal.com)
Seymour Cray 在寻找最美丽有效的工程解决方案方面有着惊人的天赋。 他的汽车不仅速度快,而且具有非常强大的魅力和美感,同时非常紧凑。 CDC 6600的中央处理器、控制单元和RAM的交叉只有4米的跨度和2的高度,它方便地打开,可以访问所有板,并且还用氟利昂冷却! 带有两个显示器眼睛的控制台的空间视图普遍进入了工业设计的黄金基金。 来自宣传册“CDC 宣传册 - 6600 超级计算机”和 https://ru.wikipedia.org 的照片
然后列别杰夫就吃亏了,都是他的想象力和阿特拉斯和CDC 6600的错,它们出现在BESM-6的制造过程中。
从第一个开始,他需要额外的代码和虚拟内存,从第二个开始 - 一个具有正交指令系统的超标量流水线处理器。 很多技术方案也被否决了——比如通道与外设协同工作的想法,在IBM机器上真的很成功。 从 1960 年到 1963 年,有投掷 - 让我们启动一辆车,继续第二辆,将筹码添加到第三辆。
因此,原始 CDC 1604 项目中保留了角和腿。
列别杰夫从机器中抛出整数算法,因为他无法实现整数-实数 ALU 的稳定运行,改变了实数的格式(1 位符号,11 位顺序,CDC 36 的 1604 位尾数,7 位顺序,1位符号、BESM-40 的 6 位尾数)和命令结构(6 位操作码、3 位索引或转换条件、CDC 15 的 1604 位地址或操作数和两个可能的选项:4 位索引寄存器、6-位操作码、12 位地址/操作数或 4 位索引寄存器、4 位操作码、15 位地址/操作数(BESM-6)。 由于尝试组织虚拟内存,索引寄存器的数量从 6 个扩展到 15 个。
命令系统已完全重新设计。
CDC 1604有11条整数指令和4条实数、9条移位指令、8条逻辑指令、15条内存指令、6条索引算术指令、4条跳转指令和3条I/O指令,总共57条。 BESM-6 有 12 个真实命令、2 个移位命令、7 个逻辑命令、5 个用于处理内存的命令、8 个索引算术命令、7 个跳转命令和 41 个(!)I/O 命令,总共 XNUMX 个。
BESM-6 的一个有趣功能是特殊位命令,包括“清除单位数量”和“清除单位的主页”。 这些团队是直接从 CDC 6600 中剥离出来的,代表了所谓的。 “NSA 指令” - 应 NSA 的要求添加到超级计算机处理器的指令,以方便密码学家。
例如,计算 10100110 的数量是命令 popcount,比如说 popcount (4) = 1980。它首先出现在 IBM Stretch 处理器中,然后被内置到所有较旧的 CDC 和 Cray 机器中,直到 XNUMX 年代和冷战结束时代和经典的超级计算机......
为什么需要?
从二进制编码中的零字符串计算汉明距离。 NSA 正在对截获的消息进行密码分析,由于 CDC 6600 有 60 位字,因此一个字足以存储大部分感兴趣的字母。
密码分析者将消息分成几行,用一位标记该行中的每个唯一字符,使用 popcount 计算汉明距离并将其用作进一步密码分析的散列。 不幸的是,不知道是否至少使用了 GRU 或 KGB 的 BESM-6,作者强烈怀疑这一点,并认为这些说明已被更改,而是出于演示目的 - 就像看,我们的汽车可以做到这一点!
指令“ASSEMBLY”和“DISSEMBLY”是通过掩码选择的某些位,专门用于组织至少一些正常的打印字符输入输出,例如,正如旧人提到的,例如,这些命令用于转置80x12 矩阵用于打孔卡。 将单词转换为文本八进制表示是通过分解为每字节三位的组来完成的,在 GOST 编码中,立即获得数字的代码。 通过汇编,八进制数的文本表示被转换为实际数。
自然不可能在苏联元素基地上组装Atlas或CDC,必须制作一堆补丁和拐杖。 其中一位设计师,V.N. 劳斯:
……当时还没有集成电路。
[在这里,不幸的是,劳斯是不诚实的,因为它们不再只是存在,而是被用来组装串行计算机,包括在苏联,列别杰夫根本不认为有必要出于他的一些哲学原因使用它们]。
工业生产的分立锗二极管和三极管性能很差。
[同样,有一些相当不错的硅,但是......]
是否有可能在其上为高性能机器开发元素? 到了这个时候,在专门的文献中已经有很多关于使用隧道二极管作为高速逻辑电路基础的报道。
这些二极管的开关时间很短,比晶体管好很多倍。 然而,基于隧道二极管的元件负载能力差,导致机器电路复杂,我们很快就放弃了它们。 使用晶体管的困难在于它们在饱和模式下工作非常缓慢,并且由于需要匹配输入和输出信号的电平,所以带有不饱和三极管的逻辑门很复杂。 不仅困难,而且不可靠。 一段时间以来,我们还没有看到走出僵局的出路。 但随后出现了一个全新的想法,以前从未描述过,至少对于计算技术的元素是这样。
在我看来,A.A. 索科洛夫。 这个想法的本质是将自主电源引入众所周知的“电流开关”元件,该元件不与其他电源电路电流连接。 例如,微型电子时钟电池可用于此目的。
在晶体管的集电极和集电极负载(电阻器)之间包含电池,使开关成为具有匹配输入和输出信号电平的元件,并且对自主电源没有特别复杂的要求。 当然,电池是不能放的,时间长了会放电,所以在实际电路中用一个微型整流器代替,整流器由铁氧体环上的微型变压器、两个半导体二极管和一个电容器组成。
这些整流器被称为“悬浮电源”(PPS)。 配备射极跟随器的电流开关的同相输出可以在 AND、OR 逻辑电路的输入上运行。 出现了以下电路:基于二极管电阻元件的无源组合逻辑
这些二极管的开关时间很短,比晶体管好很多倍。 然而,基于隧道二极管的元件负载能力差,导致机器电路复杂,我们很快就放弃了它们。 使用晶体管的困难在于它们在饱和模式下工作非常缓慢,并且由于需要匹配输入和输出信号的电平,所以带有不饱和三极管的逻辑门很复杂。 不仅困难,而且不可靠。 一段时间以来,我们还没有看到走出僵局的出路。 但随后出现了一个全新的想法,以前从未描述过,至少对于计算技术的元素是这样。
在我看来,A.A. 索科洛夫。 这个想法的本质是将自主电源引入众所周知的“电流开关”元件,该元件不与其他电源电路电流连接。 例如,微型电子时钟电池可用于此目的。
在晶体管的集电极和集电极负载(电阻器)之间包含电池,使开关成为具有匹配输入和输出信号电平的元件,并且对自主电源没有特别复杂的要求。 当然,电池是不能放的,时间长了会放电,所以在实际电路中用一个微型整流器代替,整流器由铁氧体环上的微型变压器、两个半导体二极管和一个电容器组成。
这些整流器被称为“悬浮电源”(PPS)。 配备射极跟随器的电流开关的同相输出可以在 AND、OR 逻辑电路的输入上运行。 出现了以下电路:基于二极管电阻元件的无源组合逻辑
[那时全世界都切换到TTL和ECL了。]
连接到放大有源元件的输入端,而放大有源元件的输出端又连接到组合电路等的输入端。因此,机器的电子体看起来像一个蛋糕:层层二极管逻辑电路散布着电流开关上的放大器层。
总的来说,正如我们所看到的,BESM-6 的第一个版本的元素基础即使在那个时候也是可怕的(即使按照苏联的标准,这更加惊人!),但尽管如此,像往常一样,我们有充分的理由为我们如何巧妙地克服我们自己造成的困难而感到自豪。
列别杰夫在描述 BESM-6 结构时的中文信函。 机器的所有计划都是通过列别杰夫自己的逻辑助记符以这种形式执行的。 接受试图迫使他以人的形式重写这一切,但他断然拒绝了。 右边是 Cray 笔记本中描述 Cray-1 结构的原始传单(照片 https://www.computerhistory.org)
导致
这一切的结果是出现了一个真正的突变体,在外部(即在总线宽度、机器字长等方面)类似于CDC 1604,但组装了Atlas和CDC 6600的元素,加了一点调味料列别杰夫自己独特的愿景和硬件实现,即使按照苏联的标准也是歪曲的。
1963 年,学生们开始对未来 BESM-6 的节点进行建模,首先,练习使用晶体管的技术,当时 ITMiVT 对此并不了解。 这一切都以这样一个事实结束,根据列别杰夫的年轻学生(比梅尔尼科夫的口径小)的回忆,A.A. Gryzlov,他们只是在晶体管上实现了 M-20 的节点,将由此产生的创造称为 BESM-3。
令人惊讶的是,正如我们已经说过的,他的倡议得到了组长的支持,并实现了迷你系列的推出,这就是 ITMiVT 树-BESM-4 上出现的侧芽,与 Lebedev 无关. 根据回忆录,列别杰夫本人对这种任性不太满意,他并不在意BESM-4,他所有的注意力和力量都被BESM-6项目吸收了,但他并没有干涉青年,甚至在聚会中按下了几个杠杆,这使他能够以创纪录的速度小批量发射四个。
1964 年,该研究所已经组装了一个原型 BESM-6,它只有一个内存立方体;逻辑元件中使用了较慢的晶体管。 1966 年,一个具有半容量随机存取存储器(4 个立方体而不是 8 个立方体)但在现代晶体管和二极管上以设计同步频率运行的原型已经进行了大量调试,并在秋天,并于 1967 年 XNUMX 月结束了国家测试。
BESM-6从1968年到1987年开始量产,共生产了355辆,1992年杜布纳的机器被关掉,倒数第二辆(在米高扬设计局)在1995年被关掉并拆除,但是非常最后的 ...
BESM-6 345号
BESM-6 No. 345于1980年制造,1981年在87286军事单位(列宁格勒地区Sosnovy Bor)注册,1982年由莫斯科专业总装部团队组建,1983年引进作为由 NITI 专家开发的复杂全尺寸模拟器“Diana-Bars”的中央计算机。 美联社亚历山德罗娃。 它的调试一直持续到 1986 年。
顺便说一下,请注意典型的苏联式安装方法,这在很大程度上反映了建筑和设备的质量。 机器的安装用了一年,又是不紧不慢的调试软件用了一年(虽然到1980年代已经积累了10年的经验和软件!),又用了三年的模拟器,因此,该机器仅在发布六 (!) 年后才能够计算出一些有用的东西。
这被认为是常规安装模式! 与此同时,该死的资本主义已经腐烂到这样一个阶段,以至于宣布推迟安装一台或另一台机器至少几个月成为终止合同并处以巨额罚款的理由。
Cray-3 的命运在这方面具有象征意义,它本应在 1991 年被利弗莫尔买下,但实验室得知延迟交付后立即撤销了合同,未能履行合同打击了克雷的名声如此之大,以至于他只能出售他的超级计算机 美国国家大气研究中心 (NCAR),军方和实验室拒绝与它合作,尽管过去有其优点。
1993年,Cray-3安装在NCAR,但一年未能稳定运行,后被拆除,Cray Research破产。
在苏联,即使是当时已经生产了 13 年的串行计算机的安装和调试也很容易需要五年的不慌不忙的完成工作,而这被视为绝对规范——联盟,似乎,不着急。
来自“明显-难以置信”的类别。 军事单位 6 中最后一个完全活着的 BESM-345 No. 87286 的独特照片(照片 https://ramlamyammambam.livejournal.com)
回到 BESM-6 第 345 号,它于 1986 年发射并工作......直到 2008 年!
这是超越善恶和常识的东西。 它被用作潜艇船员模拟器的计算机,在过去的 10 年里,它一直在努力制作一个诚实的不可印刷的词;工作人员一直在尽最大努力使博物馆的古代工作秩序远远超出其官方服务生活。
珍品的进一步命运未知——也许理工博物馆的 BESM-6 是她,也许是老太婆在废金属炉中结束了生命。
同时,注意列别杰夫的魔力——从BESM-6本身开发到系列仅3年时间,而且纯粹出于客观原因,摆弄汽车的文档、调试等,而Kartsev则是被党政官员从一个办公室赶到另一个办公室六年,使他心脏病发作,而在他去世后,工作人员又用了 1,5 年才完成了 M-13 的释放!
总
最后,迫切的问题,它发生了吗?
您是否设法创建了满足苏联研究机构需求的利基计算机? 相当于 CDC 1604 将运行您需要的所有程序?
唉,不,这里列别杰夫把一切都搞砸了。
试图同时关注架构的三个来源和三个组成部分导致失败——BESM-6 失去了与 CDC 1604 的兼容性,足以自豪地被认为是一个独立的架构,并足以停止运行令人垂涎的数百万行美国代码,每个人都为此而开始。
Lebedev 太聪明了,因此无法实现二进制兼容性——完美编译并在 CDC 上运行的 Fortran 程序在最意想不到的地方在 BESM-6 上失败了。 为了纠正它们,他们甚至开始编写整本教科书和专着(例如,Borovin G.K.、Komarov M.M.、Yaroshevsky V.S.“在 Fortran 中编程时的错误陷阱”),但浪费了宝贵的时间,任务仍然存在。
结果,即使在 1966 年的测试阶段,这个庞大的项目也以复杂的心情结束。
问题仍然存在 - 现在该怎么办?
结果如下。
一是下定决心不再变态,简单准确地复制整个西方架构,以实现二进制兼容。 值得称赞的是,列别杰夫自己意识到了错误,不再急于设计任何东西,而且在科学院会议上他支持借用 S/360 的想法(这个应该单独讨论)。
其次,梅尔尼科夫不再被允许独立发展。 BESM-10 项目甚至没有开始,只保留了描述和草稿,而他一直负责的“电子 SS BIS”将成为 Cray-1 的克隆。
第三,在该国最重要的核中心杜布纳,需要紧急交付一些适用于美国软件的东西,结果外交介入并试图购买或窃取,通过瑞士等中立国出口,真正的CDC 1604,以及更好的 - CDC 6600。尝试仅部分成功。
CDC 1604 被美国海军使用,也用于控制民兵 I 的发射,所以它是一种军事技术,但到 1968 年它已停产并过时,因此控制委员会并没有反对它的供应。 1968 年(与 BESM-6 同时)CDC 也落户 JINR。
特别令人感兴趣的是,CDC 公司本身并不反对向任何地方出售任何东西,甚至是向朝鲜出售,其董事威廉诺里斯 (William Norris) 给他的国会议员理查德·T·汉纳 (Richard T. Hanna) 写了一封特别信,要求他将该公司排除在与共产党的合作:
亲爱的国会议员汉娜: 5 年 1973 月 6200 日星期三,众议院科学与航天委员会科学与空间国际合作小组委员会作出了证词。 Benjamin Schemmer,国际武装部队杂志编辑。 该证词包括以下声明:Control Data Corporation 通过销售 Control Data XNUMX 计算机将苏联计算机技术的地位提高了 XNUMX 年。 此类关于向苏联转让技术的声明根本不符合事实,我们准备纠正该错误陈述以及其他不正确和误导性的引用,即 Control Data 与苏联的活动,以满足您的委员会的要求。 同时,我们恭请考虑以下事项。 我们只向社会主义国家提供标准的商用计算机,这些产品完全符合商务部的出口管制和行政指令......
包括社会主义者在内的所有国家都拥有坚实的计算机硬件技术基础,可以在此基础上进一步发展最先进的技术。 美国在计算机技术方面的主要优势在于它能够为广泛的应用销售具有卓越成本/性能的计算机系统。 这并不意味着对于任何给定的应用程序或应用程序组,就性能而言,另一个国家无法构建等效甚至超过美国可用的应用程序。 此外,据我所知,没有证据表明苏联因缺乏足够的计算机技术而被阻止实施军事项目......
我们恭请贵委员会审查上述要点并考虑将其纳入记录。 我们很高兴有幸出席您的委员会,就与社会主义国家的这些潜在关系发表更详细的看法,并说明我们支持政府和国会贸易倡议和目标的理由。
威廉·C·诺里斯 (William C. Norris) 的来信,主席
Control Data Corporation 致国会议员
理查德·T·汉纳,1973 年。
包括社会主义者在内的所有国家都拥有坚实的计算机硬件技术基础,可以在此基础上进一步发展最先进的技术。 美国在计算机技术方面的主要优势在于它能够为广泛的应用销售具有卓越成本/性能的计算机系统。 这并不意味着对于任何给定的应用程序或应用程序组,就性能而言,另一个国家无法构建等效甚至超过美国可用的应用程序。 此外,据我所知,没有证据表明苏联因缺乏足够的计算机技术而被阻止实施军事项目......
我们恭请贵委员会审查上述要点并考虑将其纳入记录。 我们很高兴有幸出席您的委员会,就与社会主义国家的这些潜在关系发表更详细的看法,并说明我们支持政府和国会贸易倡议和目标的理由。
威廉·C·诺里斯 (William C. Norris) 的来信,主席
Control Data Corporation 致国会议员
理查德·T·汉纳,1973 年。
机器交付时包括一个带有 Fortran 的编译器和源代码,Nikolai Nikolaevich Govorun 领导下的 JINR 程序员团队受到了他们的启发,并试图为 BESM-6 编写一个模拟程序,因为它拒绝直接工作。
因此,我首先不得不编写一个汇编程序(带有 Lebedev 助记符的自动代码非常不方便,实际上并没有使用它),然后是加载程序、库支持以及操作系统的其余部分,逻辑上将其命名为 Dubna。
自然,这是一个值得骄傲的理由——专业程序员部门的辛勤工作是由物理学家和业余工程师进行的,结果普遍令人满意。
这个故事的直接延续在下一篇文章中等着我们。
信息