《转载》前苏联的三进制计算机Setun

news2025/1/10 12:06:42

  1、苏联的三进制计算机概述

        早在 1956 年,就需要创建一种可在大学和实验室中使用的实用数字计算机模型。为此,需要一种易于学习、可靠、廉价但同时高效、专为大规模使用而设计的小型计算机。

对这种机器的要求:运行速度必须等于每秒数百次操作,“欢迎”编程的简单性和易用性,计算精度 - 6-8 位正确的小数,操作和维护高度可靠,尺寸适中,经济消耗能源,使用廉价且“非稀缺”的材料和零件。这样的要求在当时是“矛盾的”,因为创造一台对程序员来说更方便的机器将需要增加设备数量,这反过来会导致可靠性下降,不仅会导致成本增加,机器本身,还有它的操作。

为程序员提供便利,除了与机器复杂性相关的工程路径之外,还通过软件实现(标准子程序系统的开发、编译和解释系统的引入、编程程序),使用两种阶段存储系统,以及磁性元件上的电路构造。


2、使用三进制数字系统

        13世纪,意大利数学家斐波那契提出了使用三进制进行计算的想法。没有制定和解决“重量问题”(称为巴赫-门捷列夫)。问题的本质是:用什么重量系统,一次一个,可以自由地称量从0到最大负载Qmax的所有可能的负载Q,使得最大负载Qmax的绝对值是所有可能的品种中最大的。解决这个问题有两个条件:如果权重放在一个免费的权威碗上;如果允许把权重放在两个碗上。在第一种情况下,“最优权重体系”被简化为二进制权重体系:1、2、4、8、16等,出现的“最优”算法或测量方法产生了二进制权重体系。 “时尚”计算机的基础数字系统。第二种情况,最好的系统是权重系统:1、3、9、27、81等。如果你只能在天平的一个秤盘上放置重量,那么用二进制进行计算会更方便,更快捷,更经济,如果你可以在两个秤盘上放置重量,那么更建议采用二进制计算三元体系。

三进制数系统的一个特点是它的整数基数等于三。也就是说,整组整数可以仅使用三位数字来书写,例如 0、1、2、10、11、12 等(10 对应于我们熟悉的十进制系统中的数字 3)。


        在一年的时间里,专家们分析和研究了现有的计算机及其技术能力,最终决定在机器中不使用二进制,而是使用三进制对称码,这将是平衡数字系统的实施,首次开发三进制计算机,与具有数字0、1的二进制代码相比,具有数字-1、0、1的三进制代码提供了有符号数算术的最佳构造。通过此应用程序,算术具有许多优点:

  • 号码编码统一
  • 可变操作数长度
  • 移位操作的唯一性
  • 三位数功能数字符号
  • 通过简单地删除较低的数字来实现数字的最佳舍入
  • 计算过程中相互补偿舍入误差

由于三进制数系中存在“正”和“负”数字,因此数字代码中没有特殊的符号位,这大大简化了算术运算的逻辑。三进制字比二进制字短 1.6 倍,因此,三进制顺序算术器件中的加法运算等操作的执行速度也比二进制字快 1.6 倍。


数字为-1、0、1的三进制的优点是:

将数字x四舍五入到k个正确的三进制数字,这是通过丢弃从(k+1)开始的所有较低数字而获得的结果。

最接近数字 x 的整数,X=E 1 , E 2 ...E m+1 ...XE        是数字:[X] bl = E 1 , E 2 ...E m
其中 E i是三元数字。事实证明,选择数字最接近的整数部分的简单方法可以简化计算指数函数和三角函数的算法。


  1. 该三进制系统不需要特殊的符号位;数字的符号由最高有效三进制数字的符号确定。这使得处理相对数字变得非常简单。
  2. 任何寄存器的内容都会自动被视为相对数字。移位和标准化操作是通用的,并且还大大简化了缩放和浮点的编程操作。
  3. 所有这些对于构造用于执行浮点运算和计算初等函数的子程序是“有利的”,其总计算误差不超过尾数最低有效数字的两个单位。

与二进制系统一样,三进制数字系统也是基于编码数字的位置原理,但其中第i个位置/数字的权重不是2i,而是3i。数字是三位数,而不是两位数:0和1还允许第三个值-1,因此正数和负数都可以统一表示。

n - 普通整数 N 的值的确定与 n - 位的值类似:

        

其中 ai ∈ {1, 0, -1} 是第 i 位数字的值。
(根据虚拟计算机博物馆保存的资料)

在三元对称系统中,数字是用符号来指定的;他们写的是 +、0、-,而不是 1、0、-1。
这就是十进制数 13, 7,6, -6 在三进制表示法中的样子 13= +++, 7 = +-+, b = +-0, -6 = -+0。改变对称码中数字的符号相当于数字反转,发生“+”和“-”的互换,反之亦然。

下表是三元对称码中的加法和乘法运算:


三进制对称码不存在有符号数的问题。

与二进制不同,它是有符号数算术。数字的符号是最高有效(非零)数字的数字。有符号数的问题,在二进制码中没有完美的解决方案,在三进制对称码中根本不可能存在,而这已经是一个根本性的优势。

Trit是未来三进制计算机的基本元件生成的三种信号的名称。如果我们以比特作为信息量的衡量标准,那么trit的信息容量约为1.6。基于此,三进制计算机在单位时间内处理的信息比二进制计算机更多。

所设计的三进制计算机的最小可寻址内存单元是一个特征,等于六个 trites,取值范围为 -364 到 364。使用一系列负值是区分特征和二进制字节的一个特征,其值从0延伸到255。

得益于特征的信息容量及其帮助,您可以轻松地对俄语和拉丁字母、数学和服务符号的所有大写和小写字符进行编码。


罗维奇·布鲁森佐夫说:

Setun 计算机的历史,就像这台机器本身一样,是不寻常的 - 一切都是与普遍接受的方法和方法相反的。你可能会认为他们的行为遵循“不做其他人做的事”的原则。但原则不同——“越自然、越简单越好。”


世界上第一台也是唯一一台三元机器 Setun 的创造者尼古拉·彼得罗维奇·布鲁森佐夫 (Nikolai Petrovich Brusentsov) 的命运很复杂。

尼古拉·彼得罗维奇·布鲁森佐夫

尼古拉·彼得罗维奇·布鲁森佐夫 (Nikolai Petrovich Brusentsov) 1925 年 2 月 7 日出生于第聂伯罗捷尔任斯克市(乌克兰)。他的父亲彼得·尼古拉耶维奇·布鲁森佐夫是一名普通铁路工人的儿子,参加了第聂伯罗捷尔任斯克焦化厂的建设,并在37岁时去世,当时尼古拉只有14岁。母亲玛丽亚·德米特里耶芙娜独自一人带着三个孩子。战争已经开始了。 1943 年,尼古拉应征入伍,并被送往斯维尔德洛夫斯克学习无线电操作员课程。后来他成为第571炮兵团第2师侦察部第154步兵师的无线电操作员。他被授予“勇气”勋章和红星勋章。

1948年,他以优异的成绩从学校毕业,进入莫斯科电力工程学院无线电工程系。但是,由于患有肺结核,他在治疗中度过了第一年的学习。后来他迎头赶上,成为了成功的学生之一。

从该研究所毕业后,布鲁森佐夫被派往莫斯科大学特别设计局工作,后来又被派往一个问题实验室,开发供教育机构使用的计算机。在这里他遇到了谢尔盖·利沃维奇·索博列夫。索博列夫热衷于为研究所实验室创建一款价格低廉、体积小且可靠的小型计算机。组织了一次研讨会,Shura-Bura 先生、KA Semendyaev、EA Zhogolev 参加了研讨会。在研讨会上,他们分析了现有机器的缺点,估计了指挥系统和结构,考虑了技术实现的选择,倾向于磁性元件,因为还没有晶体管,立即排除了灯,可以获得磁芯和二极管,一切都可以由我们自己来完成。布鲁森佐夫对研讨会的回忆中的几句话:

这些报告一方面致力于机器技术实施的工程问题,另一方面致力于其架构的开发和优化,分析和概括这方面的可用经验。因此,Shura-Bura先生在1956年4月至5月的四次研讨会上分析了国产机器“Strela”,BESM,“Ural”,M-20的优点和缺点,谢尔盖·利沃维奇在库尔恰托夫研究所的员工GA Mikhailov和BI Shitikov在得知他们创建的 TsM-1 和 TsM-2 机器后,托木斯克大学研究生 AD Zakrevsky 做了题为“逻辑代数在计算机电路综合中的应用”的演讲。我们电子部门的员工在报告中讨论了基于半导体和磁性元件的数字设备的工程实现问题。我有机会与 EA Zhogolev 一起开发机器的功能图和命令系统,随着我们的进展,结果在我们的报告(有时是联合报告)中反复提交给研讨会:2056 年 9 月 17 日 - “机器示意图” 24.2.58 - “Setun 机器的方框图和命令系统。”

就在那时,布鲁森佐夫产生了使用三进制数字系统的想法。


尼古拉·彼得罗维奇·布鲁森佐夫 (Nikolai Petrovich Brusentsov) 是莫斯科国立大学计算数学与控制论学院计算机实验室的负责人。 MV 罗蒙诺索夫。他的科学活动的主要领域是:数字机器的体系结构、自动化教学系统、小型和微型计算机的编程系统。出版科研著作100余部,其中包括专着《Setun小型数字计算机》(1965年)、《小型计算机》(1979年)、《微型计算机》(1985年)以及教科书《基础Fortran》(1982年)。


苏联部长会议奖获得者布鲁森佐夫·尼古拉·彼得罗维奇拥有11项发明版权证书。他被授予荣誉勋章勋章和全德国民党国防军大金质奖章。

2014年,著名三进制计算机设计者、科学家尼古拉·布鲁森佐夫去世,享年90岁。正如他的朋友们所记得的那样,彼得罗维奇是一个非常谦虚、令人愉快的人,总是乐于助人。


莫斯科国立大学计算中心创建了 Setun,它成为苏联第一台带有字母数字输入和输出设备的机器。

苏联数学家谢尔盖·利沃维奇·索博列夫积极参与了计算机的发展;当时他是莫斯科大学力学与数学学院计算数学系主任。 Setun机器的创建和开发是由一群新手员工完成的,其中包括8名莫斯科动力工程学院和莫斯科国立大学的毕业生、12名技术人员和实验室助理。该工作在相当短的时间内完成,直接考验了三元数字技术的简单性;三元器件的架构实现了显着的简化和自然性。该架构是一个合理构建的编程系统,包括解释系统IP-2(浮点,小数点后8位)、IP-3(浮点,小数点后6位)、IP-4(复数,小数点后8位)、IP - 5(浮点,12 位小数),自动编码POLIZ(逆波兰表示法语言)以及操作系统和标准例程库(浮点,6 位小数)使小型 Setun 机器易于学习。

Setun机器具有最少的指令集,24个单播命令,进行定点和浮点计算,进行乘积加法运算,优化了多项式的计算,根据结果的符号进行条件跳转的三个命令,按位乘法运算,有一个索引寄存器。修改地址时,变址寄存器的值不仅可以加,还可以减。1959年底,该机器已经有了编程系统和一套应用程序。


3、机器参数

        要安装小型Setun机器,需要25-30 m2的面积,它被设计为具有以下参数的柜子形式:2.9 x 1.85 x 0.5 m,控制面板1.6 x 0.6 x 1 m,桌子用于外部设备 1.2 x 0.8 x 0.75 m。

        前面提到,数字和命令都是以三进制代码形式提供的(数字为 1、0、-1),Setun 使用 18 位和 9 位三进制代码进行操作,逗号总是在第二位数字之后,这意味着所有模数小于 4.5。命令由9位三进制数字表示,其中最高5位为地址部分,3位为操作码,最低位1位作为地址修改的标志。当执行该位中包含 1 或 -1 的命令时,通过添加或减去存储在特殊 5 位变址寄存器中的数字,它们的地址部分会自动相应地改变。

        RAM由铁氧体磁芯上的器件组成,容量为162个9-trit单元,即分为3页,每页54个单元,用于与主存储器逐页交换。主存储器是一个磁鼓存储设备,容量为36或72页(1944年9-trite单元)。存储设备之间的信息传输是通过包含 54 个九位代码的区域进行的。使用五位纸打孔带,通过光电输入设备将数据输入机器。该输入设备的运行速度为每秒 800 个字符。数据输出是通过以每秒 7 个字符的速度在纸带上打印和穿孔来进行的(输出三进制代码和具有任意形式分配的字母数字文本)。

计算机的结构单元是一个单元,它是一个组装在 getinax 底座上的铁氧体二极管磁放大器;这些单元又被排列成功能块(加法器、三进制代码解码器、移位寄存器)。

开发了一种特殊的高速磁放大器,它由带有铁氧体磁芯的微型变压器和半导体二极管组成。除了连接线之外,放大器之间没有任何电气部件连接。这项创新提高了机器的可靠性并降低了能耗。塞敦有3500个这样的磁放大器,该机采用三相220/380V电网供电,功耗2.5 kVA。


        Setun 由六个功能设备组成(NP Brusentsov。莫斯科国立大学计算机“Setun”。第 259 条):运算装置、控制装置、随机存储器、输入装置、输出装置、磁鼓存储装置。

        Setun第一款量产机型的工厂测试表明,该机器完全符合设定的技术参数。一切正常,没有失败,有用时间是测试时间的 95%。第一年,4,000 个零件中只更换了三个零件。生产了 7 台这样的小型计算机,并计划在 1963 年再生产 10 台这样的机器。随着需求的增长,早在 1964 年,该工厂就生产了 21 辆 Setun 汽车。但1965年,Setun停产。

        自 1959 年以来,Setun 在一个半月内完成的计算量比采用二进制数字系统的 Ural-2 计算机还多。小型 Setun 机器运行完美,但官员们对这样的计算机不感兴趣 - 它的成本只有 30,000 卢布。第一个 Setun 模型已经运行了 15 年。决定将批量生产推迟 15 年,但这从未发生。作为机器的创造者,布鲁森佐夫本人后来说:“塞顿干扰了那些占据高级领导职位、思维惰性的人。”最终,Setun 被自动发生器切碎并送去处理。

        1967-1969年,在Setun机器的基础上,开发了其改进版本——三元数字机Setun 70——一款“..”非传统二栈架构的机器,重点为进一步发展提供有利条件它使用解释系统方法的能力。”

        Setun-70开发了自己的编程语言——DSSP。这种编程语言的原理是“一个词就是一个词”,这意味着程序的一个词对应于代码的一个词。 DSSP的特点是二栈架构、字典、支持自上而下的编程、高级数据结构和操作、紧凑的代码以及移动性、灵活性和协程机制。

关于DSSP
DSSP 在很多方面都优于 Forth。 DSSP语言的编程复杂度明显低于汇编语言,在代码紧凑性和速度上也不逊于汇编语言,允许您以交互方式检查子程序的运行情况,并且能够在不更改其余部分的情况下实际修改程序的代码。

除了Setun之外,苏联没有其他基于三进制代码的计算机。


结尾:

据Setun Brusentsov的创造者本人介绍:

现在许多国家都在尝试创建自己的三进制计算机,但所有尝试都不成功:人们已经习惯了二进制逻辑,以至于很难掌握三进制逻辑。然而,这是一个有争议的问题:这些年来不太可能没有人想到如何制造这样一台计算机的硬件。如果全世界的计算机行业都使用二进制系统,并且还没有人转向三进制,那么也许没有必要这样做。

最后,是有关三进制计算机设计者访谈。。。


参考文献:

1、https://t.co/9rLr3y1sZ2

2、https://ka2.ru/nauka/rumjantsev.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1820545.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

破解发展难题 台山这家合作社以农业社会化服务助推乡村振兴

风吹稻田千层浪,眼下,台山四九镇的早稻长势喜人,沉甸甸的稻穗迎风而动,已进入破口抽穗的关键期,即将在6月底陆续迎来丰收。在台山市明华汇种养专业合作社管理的稻田里,合作社负责人梁明喜正仔细观察着稻苗的…

(代数:解一元二次方程)可以使用下面的公式求一元二次方程 ax2+bx+c0 的两个根:

(代数:解一元二次方程)可以使用下面的公式求一元二次方程 ax2bxc0 的两个根: b2-4ac 称作一元二次方程的判别式。如果它是正值,那么一元二次方程就有两个实数根。 如果它为 0,方程式就只有一个根。如果它是负值,方程式无实根。 编写程序,提示…

单点登录分析介绍

文章目录 1、单点登录解决方案1.1、后端保存登录状态1.2、token模式 2、user服务-登录接口2.1、UserController2.2、UserInfoServiceImpl2.3、载荷2.4、响应2.5、Redis Desktop Manager 1、单点登录解决方案 多个系统只有一个登录服务 1.1、后端保存登录状态 1.2、token模式 …

WordPress、Typecho 站点如何让 CloudFlare 缓存加速

众所周知 WordPress、Typecho 都是著名动态博客站点(一个最简单的判断依据就是都要依赖结合数据库),这类站点在 CDN 缓存上都有一个致命的缓存弊端就是动静态请求的区分,理论上要让 CDN 绕过所有的动态请求,缓存所有的静态请求,否则就会造成前端登录和非登录状态的混乱,…

聊聊分布式集群的基本概念

在当前主流的分布式架构中,各种各样的集群技术几乎成了任何想要提升系统稳定性和处理能力的团队的必备技能。虽然各种中间件和系统都有让人看似眼花缭乱的集群实现方案,但其背后仍然逃不过一些核心的技术概念,我会结合几个我比较熟悉的中间件…

java.nio.charset.UnmappableCharacterException

问题 java.lang.IllegalArgumentException: java.nio.charset.UnmappableCharacterException: Input length 1 解释为编码转换有问题 问题错在位置 非汉字存在 打包的时候就会报异常

怎么把wma格式转化为mp3格式?四种wma格式转成MP3格式的方法

怎么把wma格式转化为mp3格式?转换WMA格式音频文件为MP3格式是一个常见的需求,尤其是在我们希望在不同设备或平台上播放音频时。WMA格式虽然在Windows系统中较为常见,但在其他平台上的兼容性可能不如MP3格式。因此,将WMA转换为MP3是…

c#引用dll报错cs8370功能“本地函数特性“在c#7.3中不可用

cs8370:功能"本地函数特性"在c#7.3中不可用 解决方法: 代码放在form类里面

YOLOv5改进 | Head | 将yolov5的检测头替换为ASFF_Detect

💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 在目标检测中,为了解决尺度变化的问题,通常采用金字塔特征表示。然而,对于基于特征金字塔的单次检测器来…

NestJS学习笔记

一、安装NestJS CLI工具 环境检查 //查看node版本 node -v//查看npm版本 npm -v 安装nest/cli 使用npm全局安装nestjs/cli npm i -g nestjs/cli 查看nest版本 nest -v 结果如图: 创建nest项目 //命令行创建nest项目 nest new 【项目名】 VScode扩展下载 1、…

体验版小程序访问不到后端接口请求失败问题解决方案

文章目录 解决方案一:配置合法域名解决方案二:开发调试模式第一步:进入开发调试模式第二步:启用开发调试 注意事项结语 🎉欢迎来到Java面试技巧专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&…

银行业信息技术外包(ITO)深度解析:现状、挑战、业务分类与协同策略

一、引言 最近有朋友在咨询关于银行业信息技术外包(ITO)这块业务,同时也在网上看到了关于银行业信息技术外包(ITO)的相关信息,今天正好有时间,通过采集的相关信息结合自己的相关工作接触到的相关…

推挽与开漏输出

一般来说,微控制器的引脚都会有一个驱动电路,可以配置不同类型的数字和模拟电路接口。输出模式一般会有推挽与开漏输出。 推挽输出 推挽输出(Push-Pull Output),故名思意能输出两种电平,一种是推&#xf…

STM32开发过程中碰到的问题总结 - 1

文章目录 前言1. 怎么生成keil下可以使用的文件和gcc下编译使用的makefile2. STM32的时钟树3.怎么查看keil5下的编译工具链用的是哪个4. Arm编译工具链和GCC编译工具链有什么区别吗?5. 怎么查看Linux虚拟机是x86的还是aarch646. 怎么下载gcc-arm的编译工具链7.怎么修…

JavaScript的数组排序

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

css设置滚动条样式;滚动条设置透明

滚动条透明代码 .resizable-div {resize: both;/* 允许水平和垂直调整大小 */overflow: auto;/* 确保内容超出边界时出现滚动条 */ } /* 滚动条整体样式 */ .resizable-div::-webkit-scrollbar {width: 4px; /* 竖直滚动条宽度 */height: 4px; /* 水平滚动条高度 */ }/* 滚动条…

使用uniapp设置tabbar的角标和移除tabbar的角标

使用场景描述 在一进入到小程序的时候就要将用户在购物车中添加的商品总数&#xff0c;要以角标的形式显示在tababr中。 代码实现 //index.vue<script setup> import { onLoad } from dcloudio/uni-apponLoad(()>{uni.setTabBarBadge({index: 1,text: 5 //为了实现…

VBA实现关闭Excel自动计算,关闭屏幕刷新

Excel代码提速神器 涉及到提取表格大量数据操作&#xff0c;复制粘贴多个单元格时&#xff0c;尽量避免一个个单元格提取&#xff0c;或者一行行一列列提取数值&#xff0c;设计大量IO流操作非常浪费时间。尽量找出数据之间的规律&#xff0c;批量选中复制粘贴&#xff0c;找到…

【大数据】Spark使用大全:下载安装、RDD操作、JAVA编程、SQL

目录 前言 1.下载安装 2.RDD操作 3.JAVA编程示例 4.Spark SQL 前言 本文是作者大数据系列中的一文&#xff0c;专栏地址&#xff1a; https://blog.csdn.net/joker_zjn/category_12631789.html?spm1001.2014.3001.5482 该系列会成体系的聊一聊整个大数据的技术栈&…

P3388 【模板】割点(割顶)

题目背景 割点 题目描述 给出一个 n 个点&#xff0c;m 条边的无向图&#xff0c;求图的割点。 输入格式 第一行输入两个正整数 n,m。 下面 m 行每行输入两个正整数 x,y 表示 x 到 y 有一条边。 输出格式 第一行输出割点个数。 第二行按照节点编号从小到大输出节点&am…