为什么使用二进制而不是三元计算?


79

三态对象不是立即就能容纳更多信息并处理更大的值吗?我知道处理器当前使用大量的XOR门网络,这需要重新设计。

由于我们处于64位(我们可以表示2 ^ 63个可能的状态),因此计算等效的三元数生成可以支持具有30个十位数log(3 ^ 63-2 ^ 63)的数字。

我认为检测+1和0之间的电位差与-1和0之间的电位差一样容易。

硬件,功耗或芯片密度的某种兼容性是否会抵消存储和计算能力方面的任何收益?


1
64位-> 2 ^ 64,64个Trits-> 3 ^ 64,而不是63
Oskar Skog

Answers:


66
  • 构建使用两个以上状态/级别/任何状态的组件要困难得多。例如,逻辑中使用的晶体管要么处于闭合状态,根本不导通,要么处于全开状态。将它们打开一半将需要更高的精度并使用额外的功率。但是,有时会使用更多状态来打包更多数据,但很少使用(例如现代NAND闪存,调制解调器中的调制)。

  • 如果使用两个以上的状态,则需要与二进制兼容,因为世界其他地方都在使用它。之所以不存在三点,是因为转换为二进制将需要昂贵的乘法或除法运算。相反,您直接进入4或2的更高幂。

这些都是未完成的实际原因,但是在数学上,完全有可能在三元逻辑上构建计算机。


7
我们这里不是在谈论现代。在考虑三元计算机的时候,世界其他地方仍在(也)在二进制计算机上工作
paweloque

1
是的,现代硬件将是一个问题,但这就是为什么需要新的硬件,是的,一开始它会很昂贵,但与当前的硬件价格随着时间的推移而下降一样。作为另一个与这个主题密切相关的人,我说没有充分的理由不这样做。
ars265 2011年

2
另外:如果一点是二进制数据,那么什么是三元数据呢?
aaron-bond 2014年

4
@Askan可以肯定,它被称为Trit。
2014年

“昂贵”??听起来好像您在进行微优化。
Quip Yowert 2015年

38

这里有很多错误信息。二进制文件具有简单的开/关开关。三进制/三进制可以使用以下两种模式之一:平衡的aka -1、0,+ 1或不平衡的0、1、2,但不是简单地打开或关闭,或更准确地说,具有2个“打开”状态。

随着光纤和扩展硬件的扩展,三元实际上将带我们进入更扩展,更快的状态,而成本却更低。至少在最初,仍可以使用现代编码(类似于32位软件仍可以在64位硬件上使用)与较新的三进制代码结合使用。只是需要早期的硬件来检查通过哪条信息,或者需要一点点的软件就可以提前宣布。相同或更少功率的代码可以一次发送3个,而不是现代版本的2个。

使用光纤硬件,而不是现代的开/关二进制过程,它将由0 = off确定,其他2个开关作为光的正交偏振来确定。至于安全性,实际上可以使个人更加安全,因为每个PC甚至用户都被设置为特定的极化“规范”,该规范仅在用户与目的地之间发送/接收。与其他硬件的“门”也一样。它们不必更大,只需选择3种可能性即可,而不是2种。

甚至有一些理论,甚至可能对约瑟夫森效应进行了一些测试,这些测试将允许三元存储单元使用顺时针,逆时针或断开的循环超导电流。

直接比较时,三进制是基数经济性最高的整数基,紧随其后的是二进制和四进制。甚至某些现代系统都使用一种三元逻辑,也称为SQL,该SQL将三元逻辑实现为一种处理NULL字段内容的方法。SQL使用NULL表示数据库中丢失的数据。如果字段不包含定义的值,则SQL假定这表示存在实际值,但是该值当前未记录在数据库中。请注意,缺少的值不同于数字值零或长度为零的字符串值。将任何内容与NULL(甚至另一个NULL)进行比较都会导致未知状态。例如,对于在“城市”字段中带有“芝加哥”的记录,SQL表达式“ City ='Paris'”解析为FALSE,但是对于带有空City字段的记录,它将解析为UNKNOWN。换句话说,对于SQL,未定义的字段可能表示任何可能的值:缺少的城市可能代表巴黎,也可能不代表巴黎。这是三元逻辑与现代二进制系统一起使用的地方,尽管很粗糙。


这是一个较晚的响应,可能对任何人都没有好处,但是我认为您对二进制/三进制转换类似于32位/ 64位转换的比较是错误的。在后一种情况下,从根本上说,硬件功能并没有真正改变。该指令mov eax, ebx将在任一指令集中执行完全相同的操作。由于三进制/二进制的区别,这不再是合理的保证:三进制寄存器看起来可能与二进制寄存器有很大不同;mov eax ebx两种编码可能含义不同。
bionicOnion

1
@bionicOnion:我没有看到向后兼容性的问题。89 d8在0/1位中的二进制代码在Trits中将保持不变,但是在这16个Trit中的任何一个中,您将获得更多的操作码-1。这些不是相同的操作码。
Jongware '16

什么是内存速度方面?
Zeshan Sajid'7

@RadLexus我想他是在看硬件方面,而不是软件方面。三元处理器,或者至少是早期处理器,可能会具有不同的二进制和三元模式,并且需要在它们之间进行切换。即使不是很多,这也会产生一些开销。此外,根据其设计方式,将数据移至三进制寄存器的过程可能与将数据移至二进制寄存器的过程完全不同。如果是这样,我们将失去mov eax, ebx始终执行相同流程的保证。
贾斯汀时间-恢复莫妮卡

“三进制是基数经济性最高的整数基,紧随其后的是二进制和四进制”。这是一个有争议的问题,因为存储在二进制介质上的所有三进制数据都会由于中等阻抗失配而遭受基数损失。除非整个系统是三元的,否则没有收益,只有净亏损。
协调员

16

当然,我们可以每位保留更多数据,就像我们的十进制数字系统可以以一位保留更多数据一样。

但这也增加了复杂性。在许多情况下,二进制文件的表现都非常好,使其操作起来非常简单。二进制加法器的逻辑要比三进制数(或就此而言,十进制数)的逻辑简单得多。

您将无法神奇地存储或处理更多信息。硬件必须更大,更复杂,以至于不能抵消更大的容量。


6
这是来自设计硬件的实际经验还是仅仅是直觉?
ojblass

7
ojblass:它来自1940年代开始实际制造十进制计算机的人们。周围也有三元逻辑门,但三元计算机很少。例如,请参阅维基百科有关计算硬件历史的文章:en.wikipedia.org/wiki/History_of_computing_hardware,http : //…en.wikipedia.org/wiki/Ternary_computer
Doug

1
根据定义,trits的逻辑比位更复杂。对于二进制,如果有两个位输入,则有2 * 2 == 4个输出。对于三进制,您有3 * 3 + 9个输出。
詹姆斯

1
@IsaacKotlicky噪声抗扰性与以往一样重要。只要您以某种方式使用电压电平,它们之间的余量就会直接转换为时间和能量。
Potatoswatter 2015年

3
@Potatoswatter三元可以很好地基于电子信号。约瑟夫森结专用存储电路使用方向电流来确定值。因此,顺时针= 1,cc = -1,关闭= 0(很明显)。与简单的位置值三元相比,它具有更多的优势。
艾萨克·科特里基

11

这在很大程度上与以下事实有关:最终,位被表示为电脉冲,并且更容易构建简单地区分“带电”和“不带电”的硬件,并轻松检测状态之间的转换。利用三种状态的系统在区分“带电”,“部分带电”和“不带电”方面必须更加精确。除此之外,电子设备中的“充电”状态不是恒定的:能量最终开始“泄漏”,因此实际的能量“水平”变化为“充电”状态。在三态系统中,也必须考虑到这一点。


实际上,我认为大多数三元逻辑使用+1、0和-1状态,而不是0,+ 0.5和+1.0状态。
里克·科普兰

好吧,无论什么意思……但是我想这很容易检测+1和0之间的差异以及-1和0之间的差异
。– ojblass

5
尝试编写仅使用一个if语句区分三个值的代码。(不允许情况下)
SingleNegationElimination

2
我可以组成一种语言结构吗?
ojblass

1
@IfLoop您是指Fortran的算术If吗?
纳文2014年

11

我一直认为,将单词作为基础的力量通常更有意义。在二进制文件中,我们看到了8位,16位,32位和64位字。因此,以3为底的机器会自动输入9个trit字(大约±9841),然后是27个trit字(±3.8e + 12)。给定这些单词的长度,我完全希望得到9 trit / trite!:(
Mooing Duck

7

好吧,一方面,没有比这更小的信息单位了。按位操作是处理信息的最基本和最基本的方法。

也许更有力的原因是因为制造具有两个而不是三个稳定状态的电子组件要容易得多。

顺便说一句:您的数学有点过时了。64位三进制数中大约有101.4个二进制数。说明:最大的64位三进制数是343368382029251212484657849089280(3 ^ 64-1)。表示为二进制,需要102位:101011010100101101101010010101111100011110111100100110010001001111000110001111001011111101011110100000000

这很容易理解,log2(3 ^ 64)约为101.4376


2到6是64,3到6是729 ...对不起,我太稠密了吗?
ojblass

您当然是对的...我的头很痛,但您是对的...您能以某种有意义的方式纠正这个问题吗?
ojblass

1
关于“更容易制造具有两个而不是三个稳态的电气元件”,在更现代的未来中是否有可能改变?
Pacerier,2012年

@Pacerier:并不是我所知道的,但是我不是专家。这可能是physics.stackexchange.com
SingleNegationElimination

6

等价于“位”的三元数引起了太多的愤怒!


8
我一点都不喜欢这个笑话。
dogwynn

5

还有理论表明,光纤可以使用光频率(即颜色)来区分状态,从而允许几乎无限(取决于检测单元的分辨率)的基本可能性。

逻辑门对于任何基础绝对都是收费的,但让我们以三进制为例:

对于三进制XOR门,它可能不属于它正在比较的三个状态之一(或任何一个),或者是其他三个状态之一。它还可以将三个状态中的两个绑定在一起,以产生二进制输出。可能性从字面上成倍增加。当然,这将需要更复杂的硬件和软件,但是复杂性应该减小尺寸,更重要的是减小功率(读取热量)。甚至有人谈论在纳米计算系统中使用三进制,其中存在微观的“凸点,“孔”或“不变”以表示这三种状态。

现在,我们遇到了QWERTY类型的问题。Qwerty被设计为效率低下的原因是打字机制方面的问题不再存在,但是今天使用键盘的每个人都学会了使用qwerty系统,而且没人愿意更改它。当我们达到二进制计算的物理限制时,三进制和更高的基数将有朝一日突破这个问题。也许不会再二十年了,但是我们都知道,我们不可能永远每年一倍半地继续将我们的能力加倍。


3

Screwball的答复是正确的,并纠正了此处提供的某些错误陈述。那些回答分数正值的人完全错过了基于0,+ 1和-1的三元系统的概念。当俄国人在1950年代首次建造时,苏联与美国之间的竞争非常激烈。我怀疑两者之间的政治关系与美国二元制最终在苏联三元制中的普及有关。

根据我的阅读,正在使用三元计算机。莫斯科的一些大学正在使用这些软件,而IBM的一些实验室正在使用这些软件。提到了其他人,但我无法区分它们的严重程度,或者它们只是用于实验还是玩耍。显然,它们的建造成本要低得多,并且它们使用的能源也少得多。


我找不到对“使用中”计算机的任何引用。它们都在博物馆或大学的古老玩具中。在过去的40年中,没有人建立。
Mooing Duck,

2

我认为这有两个原因(如果我错了,请纠正我):首先是因为0和1的值实际上不是无电流/无电流或类似的东西。噪声非常高,并且电子组件必须能够区分从0.0到0.4波动的值为零,而从0.7到1.2波动的值为1。如果添加更多级别,则基本上使这种区分更加困难。

第二:所有布尔逻辑将立即失去意义。而且,由于您可以从布尔门中实现求和,并且可以从所有其他数学运算中求和,因此最好将某些东西很好地映射到数学的实际使用中。在false / maybe / true之间的任意对的布尔真值表将是什么?


10
好吧...实际上,布尔真值表只是数量= 2的一种特殊情况。您可以很容易地定义三元逻辑en.wikipedia.org/wiki/Ternary_logic为了使它更有趣,实际上每台标准计算机/电子设备都使用Z /高阻抗状态来实现总线,该总线可以在一条线上处理多个设备。
viraptor

我不同意维基百科关于Z是逻辑状态的说法。您不能在现实世界中在所有操作中都使用Z。一个人如何构建与Z配合使用的XOR门?
MadCoder

2

另一个主要障碍是,需要定义大量的逻辑运算。运算符的数量可通过公式b ^(b ^ i)找到,其中b是基数,i是输入数。对于两输入二进制系统,这需要16个可能的运算符。并非所有这些通常都在门中实现,并且某些门涵盖了不止一种情况,但是可以使用三个或更少的标准门来实现所有这些门。对于两输入三元系统,该数字要高得多,大约为19683。尽管这些门中的几个彼此相似,但最终几乎不可能手动设计基本电路。即使是大一工程学的学生,也可以在脑海中设计基本的二进制电路。


请解释为什么运算符的数量是b ^(b ^ i)
恩里克(Erique

1

我敢肯定,很多事情与数字信号的错误检查有关。例如,在量子计算中,要实现非克隆原理几乎是不可能的,但并非不可能,这也是由于存在状态数量增加这一事实。对于两种状态,错误检查的过程并不容易,但是相对容易。对于三个状态,错误检查变得越来越困难。这也是为什么排除了状态数量几乎无限的模拟计算机的原因。

如果您对量子计算感兴趣,但是可以研究球体填充和量子误差检查,那么那里有一些非常整洁的东西。


作为对此问题的一点更新。我实际上是在考虑有一天要实现一台非常基本的基于FPGA的三元计算机。
cwoodall 2011年

1

要使电路以二进制以外的任何方式运行,必须定义其他状态的表示方式。您已经提出了一个-1、0和+1的系统,但是晶体管不能那样工作,它们希望电压或电流仅朝一个方向流动。要使一个3状态位需要2个晶体管,但是您可以在同一个晶体管中使2个二进制位变为4个而不是3个状态。

如果您尝试在电路上设置阈值并改用0,+ 1,+ 2,则会遇到另一组问题。我还不了解详细信息,但是对于逻辑电路而言,这麻烦多于其应有的价值,尤其是当该行业已经完全致力于二进制的时候。

在一个区域中,使用多个级别来获得每位2个以上的状态:MLC闪存。即使电平数达到2的幂,也可以将输出轻松转换为二进制,以供系统的其余部分使用。


0

我认为三元会更有效。它只是从未流行。Binary登上舞台,现在切换到三进制将改变我们所知道的一切。


3
在硬件级别上绝对不是“只是更流行”:假设一个简单的二进制逻辑门的+ 1V定义为0,+ 5V定义为1,则实际电压将在附近-例如,可能为+ 2V和+ 3.5V,但仍能正常工作:在这种情况下,仍然有一个合理的间隙来区分高态和低态;对于三元,您必须a)具有更严格的操作(并通过扩展制造)公差,从而导致更昂贵的铁,和/或b)以更高的电压(例如+ 1 / + 5 / + 9V)工作,再次有其自身的工程陷阱(因此又要花费更多)。
Piskvor在2011年

0

当然,但是三元的“位”(tet?)会更复杂,您仍然会在base3而不是base2中存储相同数量的信息,而如果使用两个状态的分量则很简单。为什么不继续做一个十州制基地呢?

二进制计算与二进制“与”,“或”和“非”门有关,它们的简单性很强,并且可以组合成任意复杂的结构。它们实际上是计算机执行的所有处理的基石。

如果有严重的情况,切换到三进制或十进制,那么他们会。这不是“他们像那样尝试并且只是卡住了”的情况


2
注意:这是一个“ trit”,从三进制数字开始。
2013年

2
注意事项2:实际上,您可以在Trit中存储更多内容。对于带符号的值,trit可以保留二进制的1和0,但也可以保留-1,而无需符号位。对于无符号,trit可以容纳0、1和2。Binary将需要2位才能相等。而对于十进制系统,您将可以保留一点点甚至三点零零的信息。
doogle 2014年

0

如果我们使用3个状态,则由此引起的主要问题是

  1. 如果我们使用单极性信号,则噪声容限将减小,从而增加误码率。
  2. 为了使单极信号保持噪声容限恒定,我们必须增加电源,因此功耗会增加。
  3. 如果使用双极性信号,则信号的总摆幅将增加,从而增加损耗。
  4. 为了解决双极性信号的负摆幅,必须在多层PCB中增加额外的层。

希望我有说服力


-2

我认为它与可编程性,条件语句以及晶体管的有效使用和功能性息息相关。显然,如果有电流通过电路,则嵌套IF是正确的,但是如果可以通过一千种不同的路径来实现解决方案,程序将如何知道该怎么办?对于AI而言,这很有趣,因为其中的记忆和学习远比简单的计算能力重要。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.