如果一台计算机可以用一条指令完成图灵,那么拥有多条指令的目的是什么



我理解计算机是图灵完备的概念(具有MOV或命令或SUBNEG命令,因此能够"合成"其他指令,如)。如果这是真的,那么拥有100条像x86这样的指令的目的是什么?是为了提高效率吗?

是。

同样,任何逻辑电路都可以仅使用NAND来制造。但这并不会使其他组件变得多余。用NAND门制造CPU的效率将非常低,即使该CPU只执行一条指令。

操作系统或应用程序具有与CPU类似的复杂程度。

你可以编译它,这样它只需要一条指令。但你最终会得到世界上最臃肿的操作系统。

因此,在设计CPU的指令集时,选择是在减少CPU大小/开销和更小的大小意味着更容易冷却(RISC)之间进行权衡,前者允许每秒有更多的指令,因为它们更简单;以及增加CPU的功能,包括需要多个时钟周期才能完成的指令,但使其更大、更麻烦地冷却(CISC)。

这种权衡就是为什么数学协处理器在486年还是一件事。浮点数学可以在没有指令的情况下进行模拟。但如果它有一个协同处理器来完成那些浮点运算的繁重工作,它会快得多。

请记住,图灵机通常被理解为抽象概念,而不是物理事物。这是一台计算机可以采用的理论上的最小形式,它仍然可以计算任何东西。理论上。重理论。

一个真正的图灵机,做一些像解码MP3这样简单的事情,会非常复杂。对它进行编程将是一场彻头彻尾的噩梦,因为机器受到了极大的限制,即使将两个64位数字相加并将结果记录在第三个位置,也需要大量的"磁带"和一大堆"指令"。

当我们说某个东西是"图灵完备"时,我们的意思是它可以执行一般计算。老实说,这是一个相当低的门槛,疯狂的东西,比如《生命的游戏》,甚至CSS都被证明是图灵完备的。这并不意味着为它们编程是个好主意,或者把它们当作一个计算平台来认真对待。

在计算机的早期,人们必须手工输入机器代码。将两个数字相加并存储结果通常最多是一两次操作。在图灵机中完成这项工作需要数千人。复杂性使得它在最基本的层面上完全不切实际。

作为一个挑战,尝试编写一个简单的4位加法器。如果你已经成功地解决了这个问题,那么写一个4位乘法器。一旦你转向32或64位值,复杂性就会呈指数级上升,当你试图处理除法或浮点值时,你很快就会淹没在这一切的暴行中。

当你输入机器代码时,你不会告诉CPU要翻转哪些晶体管,指令就像宏一样为你做这件事,但当你编写图灵机代码时,由你来命令它如何翻转每一位

如果你想了解更多关于CPU历史和设计的信息,有很多信息,你甚至可以使用晶体管逻辑或FPGA套件来实现自己的功能,在那里你可以使用Verilog等更高级别的设计语言来编写。

英特尔4004芯片是为计算器设计的,因此操作代码在很大程度上是针对这一点的。随后的8008建立在这一基础上,当8086在指令集中滚动时,它已经呈现出了熟悉的x86风格,尽管它是一个16位版本。

在定义单个位的行为(图灵机)和某种假设的CPU之间有一个抽象谱,每个场合都有一条指令。20世纪80年代和90年代的RISC和CISC设计在哲学上有所不同,RISC通常有更少的指令,CISC有更多的指令,但这些差异在很大程度上被消除了,因为RISC获得了更多的功能,为了简单起见,CISC变得更像RISC。

在CPU设计方面,图灵机是"绝对零"。如果你能想出一些更简单或更简化的东西,你可能会获奖。

最新更新