Сетунь的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.mfbz.cn/a/788675.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kubelet 认证

当我们执行kubectl exec -it pod [podName] sh命令时,apiserver会向kubelet发起API请求。也就是说,kubelet会提供HTTP服务,而为了安全,kubelet必须提供HTTPS服务,且还要提供一定的认证与授权机制,防止任何知…

【PB案例学习笔记】-30动态打开窗口

写在前面 这是PB案例学习笔记系列文章的第30篇,该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码,小凡都上传到了gite…

Java | Leetcode Java题解之第225题用队列实现栈

题目&#xff1a; 题解&#xff1a; class MyStack {Queue<Integer> queue;/** Initialize your data structure here. */public MyStack() {queue new LinkedList<Integer>();}/** Push element x onto stack. */public void push(int x) {int n queue.size();…

用PlantUML和语雀画UML类图

概述 首先阐述一下几个简单概念&#xff1a; UML&#xff1a;是统一建模语言&#xff08;Unified Modeling Language&#xff09;的缩写&#xff0c;它是一种用于软件工程的标准化建模语言&#xff0c;旨在提供一种通用的方式来可视化软件系统的结构、行为和交互。UML由Grady…

HTML 标签简写和全称及其对应的中文说明和实例

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>HTML 标签简写及全称</title><style>…

WSL2编译使用6.6版本内核

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、有什么变化二、下载6.6内核三、开始编译1.安装环境2.开始编译 四、使用1.杀死虚拟机2.防止内核文件3.修改配置文件 总结 前言 最近出了一件不大不小的事&a…

Collection 和 Collections 的区别与用法

Collection 和 Collections 的区别与用法 1、Collection 接口1.1 主要特点1.2 常见方法 2、 Collections 工具类2.1 主要特点2.2 常见方法 3、示例代码3.1 使用 Collection 接口3.2 使用 Collections 工具类 4、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收…

PostgreSQL 里怎样解决多租户数据隔离的性能问题?

文章目录 一、多租户数据隔离的性能问题分析&#xff08;一&#xff09;大规模数据存储和查询&#xff08;二&#xff09;并发访问和锁争用&#xff08;三&#xff09;索引维护成本高&#xff08;四&#xff09;资源分配不均 二、解决方案&#xff08;一&#xff09;数据分区&a…

神经网络构成、优化、常用函数+激活函数

Iris分类 数据集介绍&#xff0c;共有数据150组&#xff0c;每组包括长宽等4个输入特征&#xff0c;同时给出输入特征对应的Iris类别&#xff0c;分别用0&#xff0c;1&#xff0c;2表示。 从sklearn包datasets读入数据集。 from sklearn import darasets from pandas impor…

申请商标用什么颜色:企业和个人申请注册商标攻略!

在申请注册商标到底要用什么颜色&#xff0c;许多初次申请注册主体都不是特别清楚&#xff0c;普推知产商标老杨建议&#xff0c;在一般情况下建议尽量用黑白色&#xff0c;因为商标用黑白色在使用时可以着任何色。 在用黑色申请注册成功&#xff0c;别的主体用其它颜色要在同…

前端javascript中的排序算法之插入排序

插入排序&#xff08;Selection Sort&#xff09;基本思想&#xff1a; 插入排序每次排一个数组项&#xff0c;以此方式构建最后的排序数组。假定第一项已经排序了&#xff0c;接着&#xff0c; 它和第二项进行比较&#xff0c;第二项是应该待在原位还是插到第一项之前呢&#…

类似评论、省市区这种具有层次结构的数据表怎么设计?

业务功能模块 评论、回复模块省市区表 设置一个给每个数据设置一个parent_id 例如&#xff1a; 某个视频下a写了条评论&#xff0c;那a的parent_id就是0;b回复了a&#xff0c;那b的parent_id就是a的id;c回复了b&#xff0c;那c的parent_id就是b的id; 这样&#xff0c;所有评论…

大话光学原理:1.“实体泛光说”、反射与折射

一、实体泛光说 在古希腊&#xff0c;那些喜好沉思的智者们中&#xff0c;曾流传着一个奇妙的设想&#xff1a;他们认为&#xff0c;我们的眼睛仿佛伸出无数触手般的光线&#xff0c;这些光线能向四面八方延伸&#xff0c;紧紧抓住周围的每一个物体。于是&#xff0c;当我们凝视…

Apache部署与配置

概述 介绍 Apache HTTP Server(简称Apache)是Apache的一个开源的网页服务器&#xff0c;它源自NCSAhttpd服务器&#xff0c;并经过多次修改和发展&#xff0c;如今已经成为全球范围内广泛使用的Web服务器软件之一 特点 跨平台&#xff1a;可以运行在几乎所有广泛使用的计算机平…

Java面试八股之描述一下MySQL使用索引查询数据的过程

描述一下MySQL使用索引查询数据的过程 1.解析查询语句与查询优化 用户提交一个 SQL 查询语句&#xff0c;MySQL 的查询解析器对其进行词法分析和语法分析&#xff0c;生成解析树。 查询优化器根据解析树、表结构信息、统计信息以及索引信息&#xff0c;决定是否使用 B树索引…

限流组件都有哪些

限流组件有很多&#xff0c;下面是一些常见的限流组件&#xff1a; 1.Sentinel&#xff1a;轻量级的流量控制、熔断降级组件&#xff0c;适用于分布式系统间的流量控制、负载保护和系统防护。 1.Guava RateLimiter&#xff1a;Google 的 Guava 库提供的限流器&#xff0c;基于令…

利用远程桌面进行开发,

现在的软硬件开发都涉及庞杂的软硬件环境和多种外设总线部署&#xff0c;这时我们利用远程工具和windows自带的wsl虚拟机环境再配合vscode的remote ssh远程开发模式&#xff0c;可自由的在linux windows android等平台上切换&#xff0c;让开发更顺畅&#xff0c;也可以更好的利…

python源码分享:视频srt字幕文件生成

前言 最近有个项目需要使用srt字幕&#xff0c;我通过数分钟了解了它&#xff0c;并快速使用python完成了这一功能&#xff0c;现在分享此源码&#xff1a; 1、已知目标时间段的srt弹幕文件生成 2、自动识别视频的最后五秒钟&#xff0c;并添加提示弹幕 已知目标时间段的srt弹幕…

LLM 研究方向(一): LLM Prompts--p-tuning、LoRA

目录 1. prompt-tuning background 2. Prompt Tuning 模型介绍 2.1 2021 prefix-tuning 2.2 2021 P-tuning v1 2.3 2021 Parameter-efficient prompt tuning (PET) 2.4 2022 P-tuning v2 2.5 2019 Adapter ​2.6 2021 LoRA (Low-Rank Adaptation) 2.7 2024 DoRA (…

Linux学习——Linux中无法使用ifconfg命令

Linux学习——Linux中无法使用ifconfg命令&#xff1f; &#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅…