Сетунь的24条单播指令

1、Setun模拟器概述

        真的,想搞懂一台电脑是怎么运行的,那就搞懂它的指今集是怎么跑的,感觉很离了个大谱的,先看由铁氧体磁芯上的器件组成的RAM,容量为162个9-trit单元,即每个单元为9-trit,每页有54个单元,共有3页,地址和值可以用三进制和九位代码两种格式表示,这个可以看出它大概是怎么存储信息的,然后没了,接着找到了一个网页版的“Setun”模拟器,如下图所示:

        感觉跟原版的图片差不多,这个作者还是很厉害的,不仅搞出Setun模拟器,还有进制转换器,可将数字转换为二进制、三进制、八进制、九重码、十进制、十六进制;DSSP会话式结构化编程系统;三进制模拟时钟,可以用来看时间;三元简约码霍夫曼算法编码器,可将输入信息编码成二进制和三元代码树;三进制和九种数字系统的年历,可以看日期。


 2、Setun模拟器指令集

        当然有了Setun模拟器,它的作者肯定是搞懂了Setun的24条单播命令,这是它的操作码,也就是计算的的指令集,只是它是初始阶段没有那么的复杂,找到它的说明书,照着复制翻译下来就行了,如下图所示:

        九位代码也是一种表示方法,即九重码,它对平衡三进制的信息进行了编码操作,从而简化了输入,可以看上图绿色对照表,它的2位平衡三进制数表示为1位九重码,也就是说,最少的24个单播指令集用了3个Trit,而命令由9位三进制数字(存储单元为9-Trit)表示,最高5位为地址部分,3位为操作码(单播指令集),最低位1位作为地址修改的标志。

        然后操作这台Setun三进制电脑,就是不断的的输入与输出9位三进制数字,但它的的输入输出要看懂还是很麻烦的,所以有了上述九重码的表示方法,即3表示为+0、-3(x)表示为-0,上述图中,它是忽略了最后一位,然后5位九重码可以表示10位平衡三进制数,其中最高位的0被忽略,输入后面的九位,也就是一条指今,如下表格所示:

九重码平衡三进制数
112x40+0++--0++
zwwy30------++0
0110x000+0+00-0

        即然,有了九重码这种编码方式,那就可以理解五位纸打孔带是怎么输入的了,输入输出字符有可能就是上述的九重码的数字(0—4)与字母字符(w, x, y, z),跟acsii码一样,一行的孔表示一个字符,然后再用某一种组合来当分隔符,这思想确实很超前了,五位纸打孔带中间的小孔是对照孔,可以让机器很清楚知道读取到那了,如下图所示:

        当然,上述的九重码与五位纸打孔带的对应关系,并不知道清楚,毕竟过了那么久了,但确实是可以编码出来的,其实除了用纸带来存储信息,那时最多用的就是磁鼓,而Setun的主存储器也是一个磁鼓存储设备(DRAM),用于与分页内存组织交换特征(9-trites)的磁鼓,容量为36或72页(1944年9-trite单元),如下图所示:

照片来自喀山计算机科学博物馆

        当然Setun还有铁氧体三态存储器(FRAM),即三元铁氧体立方体,同时时期的还有磁环立方体存储器,如下图所示:

三元铁氧体立方体

一层磁环存储器
磁环立方体存储器

        当然那时没有晶体管,所以Setun用的是2个磁环,用磁化状态表示1位Trit,即2 位二进制编码三编码,用的是10(+)、11(0)、01(-)、00(?)还是10(+)、01(0)、00(-)、11(?)等方案,最终的结果不得而知,2个磁环可以表示或存储1位Trit,是Setun基础构建单位,如下图所示:

        然后多个累加在一起可以形成基本的运算单元等,如下图所示:

       


3、Setun模拟器

1、RAM(内存)

  • 仿真器中的 RAM 由三个存储体表示,每个存储体有 54 个单元。
  • 地址和值可以用三进制和九进制两种格式表示。
  • 原始Setun计算机中,有一个9位移位寄存器,能够将串行信息转换为并行信息进行存储,反之亦然。

2、寄存器

  • S寄存器:18位触发寄存器,具有左移和右移功能。在乘法操作中,S寄存器中的数字可以作为乘数或被乘数使用。可以从存储设备和移位计数器接收数字。
  • R寄存器:18位触发寄存器,用于乘法操作的控制。
  • F寄存器:五位修改寄存器。
  • C寄存器:五位命令地址寄存器。
  • K寄存器:九位命令寄存器,包含一个五位右移触发寄存器和四个操作码触发器,用于控制命令地址和执行操作。
  • w寄存器:控制条件跳转命令的执行。
  • MB寄存器:记录最后访问的磁鼓区域的地址。

3、输入设备

  • FT-1 和 FT-2:从穿孔磁带中读取数据的设备。

4、输出设备

  • EUM-46:部分实现的输出设备。
  • PL:输出设备。

5、控制面板

  • 初始启动:将FT-1设备中的打孔带数据加载到RAM中。
  • 启动:启动程序执行,如果启用“单周期模式”,则通过按下“单循环模式”按钮逐步执行程序。
  •  停止:终止程序执行。
  • 来自遥控器的命令:执行键入的命令。
  •  状态:显示操作结果。

### 模拟器操作指南

  • 初始启动:插入打孔带,按下启动按钮,将数据加载到RAM中。
  • 启动:按下“启动”按钮,程序开始执行。如果需要逐步调试程序,可以启用“单周期模式”。
  • 停止:按下“停止”按钮,程序执行中断。
  • 命令输入:通过遥控器键入命令,模拟器会执行相应的操作。
  • 状态显示:控制面板会显示当前的操作状态和结果。

        再看一下,使用24个单播指令进行简单的加法运算,利用三进制计算机的硬件和指令集,具体加法操作的流程如下:

1、加载操作数

  • 将要加的两个三进制数加载到寄存器中。操作数分别存储在寄存器 A 和 B 中。

2、加法运算

  • 加法操作会利用加法器对两个寄存器中的值进行逐位相加,并处理进位和借位。

3、存储结果

  • 将结果存储到目标寄存器中(例如,结果存储在 S寄存器中)。

示例指令序列:

  • 指令 1:03(00+),将操作数 A 加载到寄存器 A 中。
  • 指令 2:03(00+),将操作数 B 加载到寄存器 B 中。
  • 指令 3:33(+0+),执行 S=S+A,将 A 加到 S 中。
  • 指令 4:33(+0+),执行 S=S+B,将 B 加到 S 中。
  • 指令 5:S输出到指定位置,将S重置进行下一轮计算

        这24条单播最值的借鉴,就是这样的指令:(S)+(A*)=>(S)、(A*)+(S)(R)=>(S)、(S)+(A*)(R)=>(S),这样操作完后,数值又回到了自身,这对于连续的运算来说是有利的,只要知道地址可以对一个数进行多次加减乘除操作,然后操作完将操作数移交,自身清零进行下一次的计算,这种设计会大大提高效率,所以让它更现代化一点:

        如上图所示,图灵完备的设计可以直接般过来用,Setun定义的位为Trit,字节为Tryte,其中1Tryte=6Trit,但是工程上用的是9个Trit,所以参照图灵完备可得以下设计:

寄存器为9Trit:前3位表示寄存器的物理地址(地址符),后6位表示寄存器存储的值。

1、立即数模式

  • 前3位Trit组合中的一种,将后6位Trit输入到固定的寄存器中

2、算术模式

  • 前3位Trit组合中的一种,将后6位Trit分为两个3-Trit,前面的3-Trit表示地址符,后面的3-Trit表示要进行运算类型。
  • 它有个专属的S寄存器,可以给到地址,不断的累加计算。
  • 运算类型有加法、减法、乘法、除法等,要给到地址符,如加法(S)+(A*)=>(S),也就是将(A*)地址下寄存器的值与S寄存器值相加得到的结果,再送回S寄存器。
  • 运算类型还可以是重置运算符,如置零算术符,将S寄存器的值清零;立即数算术符,给到地址同时为立即数算术符,那么将地址下寄存器的值直接覆盖S寄存器的值。
  • 运算类型还可以是输出运算符,如输出置零运算符,当给到地址同时为输出置零运算符,那么会将输出运送到指定地址的寄存器,并将自身S寄存器的值清零。

3、复制模式

  • 前3位Trit组合中的一种,将后6位Trit分为两个3-Trit,前面的3-Trit表示源地址符,后面的3-Trit表示目标地址符。

4、条件跳转模式

  • 前3位Trit组合中的一种,将后6位Trit分为两个3-Trit,前面的3-Trit不使用,后面的3-Trit表示条件判断的跳转类型。

        RISC-V计算精简指令集ISA很有前景,也有人将RISC-V 架构应用到三进制计算setun的仿真中,采用汇编 RISC-V 语言的三进制机“SETUN”SETUN-1958 VM 的仿真器,同样的也有人将平衡三进制应用于大模型,即1 位 LLM 时代,所有大型语言模型的大小均为 1.58 位,是的时代属于你们。

参考资料:

1、https://www.trinary.su/projects/

2、Setun-1958 (Троичный компьютер "Сетунь") | VK

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

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

相关文章

【uni-app+Vue3】 API请求封装:让接口调用更便捷

前言:uni-app是一款基于Vue.js框架的跨平台开发工具,可以将代码编译成H5、小程序、App等不同平台的应用。在进行uni-app开发时,网络请求是必不可少的环节。为了方便开发,我们可以封装一些网络请求方法,以便在多个页面中…

About CAT7验证——CLASS F或者Fa测试FLUKE解决方案

七类CLASS F线缆认证测试标准在TIA的标准数据库中是直接跳过,取而代之的是八类的通道测试标准,真正认证七类测试的是在ISO标准数据库中,找到ISO11801 CHANNEL CLASS F或者FA,这就是标准的七类测试标准,测试频率需要达到…

一些学习网站分享

一些学习网站分享: ✅力扣(LeetCode) 力扣 (LeetCode) 官网 - 全球极客挚爱的技术成长平台 力扣是一个刷题站,支持C,Java,Python等多种编程语言,并按难度分为简单、中等、困难三个等级。是真的能刷到大厂真题 ✅Gith…

文本引导I2I迈向统一!北大王选所提出FCDiffusion:端到端适用于各种图像转换任务

文章链接:https://arxiv.org/pdf/2407.03006 github地址:https://github.com/XiangGao1102/FCDiffusion 最近,大规模的文本到图像(T2I)扩散模型在图像到图像(I2I)转换中展现出强大的能力,允许通过用户提供的文本提示进行开放域的图…

智能汽车网络安全笔记

汽车五大域 动力底盘、车身控制、智能座舱、智能网联和高级辅助驾驶五大域 国外汽车安全法规标准 汽车网络安全管理体系(CSMS) CSMS指的是管理汽车的网络威胁和风险,并保护车辆免受网络攻击的组织过程和管理系统 安全验证和安全测试 8…

使用Vue实现前后端分离 spring框架返回json数据中文乱码

SpringBoot返回的中文显示???的问题_spring boot response 中文????-CSDN博客 引入js的script标签到底是放在head还是body中_html页面中用<script>标签引入js代码,该标签放在<head>标签中和放在<body>标签-CSDN博客 vue.js 的问答 - SegmentFault 思…

ChatTTS使用

ChatTTS是一款适用于日常对话的生成式语音模型。 克隆仓库 git clone https://github.com/2noise/ChatTTS cd ChatTTS 使用 conda 安装 conda create -n chattts conda activate chattts pip install -r requirements.txt 安装完成后运行 下载模型并运行 python exampl…

java中方法的使用

方法的使用 方法的概念什么是方法方法定义方法的调用过程实参和形参的关系 方法重载为什么需要方法重载方法重载的概念方法签名 递归递归的概念递归过程分析递归练习 方法的概念 什么是方法 方法就是一个代码片段&#xff0c;类似于C语言的函数。 方法存在的意义&#xff1a;…

算法金 | 12 个最佳 Python 代码片段,帮我完成工作自动化,香~

​大侠幸会幸会&#xff0c;我是日更万日 算法金&#xff1b;0 基础跨行转算法&#xff0c;国内外多个算法比赛 Top&#xff1b;放弃 BAT Offer&#xff0c;成功上岸 AI 研究院 Leader&#xff1b; Python是一种多功能的编程语言&#xff0c;它提供了各种功能和库来有效地自动化…

Centos7 被停用!如何利用 Ora2Pg 将 Oracle 迁移至 IvorySQL?

在过去的社区讨论中&#xff0c;想要使用或正在使用IvorySQL的社区用户&#xff0c;经常问到Oracle 如何迁移到 IvorySQL 中&#xff0c;而且近期随着 Centos7 官方已经停止维护&#xff0c;这一变动促使了很多将 Oracle 部署在 Centos7 上的 Oracle 用户&#xff0c;开始准备 …

树莓派采集系统

树莓派&#xff08;Raspberry Pi&#xff09;是一款非常受欢迎的小型单板计算机&#xff0c;因其低成本、低功耗以及丰富的I/O接口&#xff0c;非常适合用来搭建数据采集系统。无论是环境监测、智能家居、工业自动化&#xff0c;还是科学实验&#xff0c;树莓派都能胜任。以下是…

机器学习笔记:初始化0的问题

1 前言 假设我们有这样的两个模型&#xff1a; 第一个是逻辑回归 第二个是神经网络 他们的损失函数都是交叉熵 sigmoid函数的导数&#xff1a; 他们能不能用0初始化呢&#xff1f; 2 逻辑回归 2.1 求偏导 2.1.1 结论 2.1.2 L对a的偏导 2.1.3 对w1&#xff0c;w2求偏导 w2同…

【组件库】element-plus组件库

文章目录 0. 启动项目1. gc.sh 新增组件2. 本地验证(组件注册的方式)3. 官方文档修改3-1. 左侧菜单3-2 . 配置md文档3-3. 代码问题:文档修改----------------------------------------------4. 将naiveui的split 分割组件【 复制、迁移】到 element-ui-plus组件库4.1 naiveu…

FastReport 指定sql,修改数据源 ( 非DataSet修改 )

FastReport 指定sql&#xff0c;修改数据源&#xff0c;非DataSet修改 介绍报告文件&#xff1a; codetest.frx 文件核心代码&#xff1a;&#xff08;扩展&#xff09;小结一下&#xff1a; 介绍 在FastReport中&#xff0c;经常会遇到需要给 sql 加条件的情况。 &#xff0…

爆破器材期刊

《爆破器材》简介   《爆破器材》自1958年创刊以来&#xff0c;深受广大读者喜爱&#xff0c;是中国兵工学会主办的中央级技术刊物&#xff0c;在国内外公开发行&#xff0c;近几年已发行到10个国家和地区。《爆破器材》杂志被美国著名检索机构《化学文摘》&#xff08;CA&a…

XTuner 微调 LLM:1.8B, 部署

扫码立刻参与白嫖A100&#xff0c;书生大模型微调部署学习活动。亲测有效 内容来源&#xff1a;Tutorial/xtuner/personal_assistant_document.md at camp2 InternLM/Tutorial GitHubLLM Tutorial. Contribute to InternLM/Tutorial development by creating an account on G…

设计无缝体验:交互设计流程全解析

完整的产品交互设计流程是什么&#xff1f;完整的产品交互设计流程包括研究用户需求、指定信息架构、制作产品原型、进行用户测试和实时发布产品。交互设计就是从人与产品之间的关系入手&#xff0c;通过产品设计来满足大众的日常需求。随着网络技术的流行&#xff0c;产品交互…

工业机床CNC设备如何上云?

工业机床CNC设备如何上云&#xff1f; 工业机床的计算机数控&#xff08;CNC&#xff09;设备实现远程监控数据上云&#xff0c;是现代制造业智能化转型的关键一环。这一过程不仅能够实时监测设备状态、优化生产流程&#xff0c;还能通过大数据分析提升生产效率与产品质量&…

Java包装类简单认识泛型

1 包装类 在 Java 中&#xff0c;由于基本类型不是继承自 Object &#xff0c;为了在泛型代码中可以支持基本类型&#xff0c; Java 给每个基本类型都对应了 一个包装类型。 例如我们之前的基本数据类型和包装类。 1. 装箱和拆箱 2.自动装箱和自动拆箱 2.泛型 1.什么是泛型 …

【C++项目】从零实现一个在线编译器

前言 身为一名程序员&#xff0c;想必大家都有接触过像leetcode这样的刷题网站&#xff0c;不知你们在刷题的过程中是否思考过一个问题&#xff1a;它们是如何实现在线编译运行的功能。如果你对此感到好奇&#xff0c;那么本文将一步步带你来实现一个简易在线编译器。 项目概…