EEJournal

专题文章
现在就订阅

建造一台电脑,如果你不小心穿越回过去(上)

我有时在想我是不是花了太多时间读科幻小说。一般来说,科幻电影和电视剧也是如此,尤其是《神秘博士》。我这样说的原因是,我确实倾向于花更多的时间来思考如果我无意中进入了一个时间点,发现自己回到了20世纪30年代末或40年代初,我会做什么。如果这个错误也把我带到了一个平行的维度——比如一个从来没有发现布尔代数这样的东西的维度——在那个维度里,计算机科学仍然牢牢地扎根于模拟领域,问题只会更加严重。

我认为自己擅长的一件事是从头开始设计数字计算机。这里有很多事情需要思考,所以——万一你身上发生了类似的事情——我想我应该提供一些相关的建议,供你细读和思考。

让我们假设你的任务是建造地球上第一台数字计算机。首先,您需要很好地理解二进制数系统,包括有符号整数和无符号整数、1和2补值,并基本掌握浮点概念。这周早些时候的一个晚上,我在一个朋友家(我们几个人每周聚在一起看几集《神秘博士》),他上大学的儿子问了我一些关于基数补语和减基数补语的问题,所以我送给他一本我写的书,从比博普到布尔布吉(电子学非常规指南),书中对此进行了极其详细的讨论。

一旦你决定了你的实现技术(继电器、真空管、晶体管)——这在很大程度上取决于你发现自己的时间——一个好的起点将是决定你的中央处理器(CPU)的基本架构。它是有一个蓄能器(ACC),两个蓄能器,一个蓄能器和一些通用寄存器,还是只有寄存器?在此基础上,下一步将是决定CPU将要使用的一组机器级指令,以及它将如何处理它们(参见我喜欢的奇怪指示吉姆·特里著)。比如移位和旋转二进制值的能力,执行逻辑运算(and, OR, XOR),执行数学运算(ADD, SUBTRACT),比较两个值以查看哪个更大,以及根据这些运算的结果跳转到计算机内存中的另一个位置。

为了简单起见,让我们假设—在您的业余时间—您还创建了某种形式的只读存储器(ROM)和随机存取存储器(RAM),以及某种形式的长期存储器,可能以穿孔纸制品的形式,如穿孔卡片或纸带。

一旦你真正构建了你的机器,事情就开始变得有趣了,因为现在你必须给它编程。计算机本身在机器代码指令的级别上工作——这些指令是您决定由CPU实现的——每一个指令都由二进制0和1的不同模式表示。

那么,您将如何捕获并进入您的程序呢?方法使用的第一个数字计算机在我们的多宇宙并行是(a)指定一个地址在二进制计算机的内存使用一组切换开关,(b)指定一个指令或一个你想要的数据加载到内存中,再以二进制,使用一组切换开关,(c)迫使这些信息加载到指定的内存位置,和(d)重复一遍又一遍地剩下的指令和数据。除了花费大量的时间和容易出错之外,这真的不像我说的那么有趣。

您的下一步将是定义某种汇编语言,这涉及到将助记符与您的每个指令相关联,例如,“跳跃”的JMP和“逻辑左移”的“LSHL”。当然,这不仅仅是简单地选择一组助记符—您还需要描述相关的语法(允许什么结构,如何指定注释,等等)。

有趣的是,在这个阶段,您现在已经有了一种汇编语言,但实际上并没有什么可以用它来做的。当然,这并不完全正确。您所能做的就是使用铅笔和纸来用汇编语言捕获您的程序。然后手工将程序组装成其等效的机器代码指令(计算机使用的0和1的二进制模式)。然后,使用可靠的拨动开关将这些指令输入计算机。

这可能是您捕获、手动组装和手动加载一些简单实用程序的时候,这些程序将允许您做一些使您的生活更容易的事情,例如从纸带上读取机器代码指令。在此过程中,您还将发明某种代码(就像我们世界中的ASCII),可以使用它来表示人类可读字符的文件,如字母、数字和标点符号等。

您真正需要的是能够使用一个简单的文本编辑器以人类可读的形式(即使用汇编语言)捕获您的程序,然后使用一个称为汇编程序的程序将此汇编代码转换为计算机能够理解的等效机器代码。不幸的是,你现在没有这两个小家伙。

这有点像先有鸡还是先有蛋的情况——先有哪个,汇编器还是编辑器?如果是我,我想我会首先使用我的铅笔和纸来捕获一个简单汇编程序的汇编语言描述,然后手工组装它来创建我的第一个汇编程序的机器代码。接下来,我将使用我的铅笔和纸来捕获一个简单编辑器的汇编语言描述,然后使用我的基本汇编程序将其组装到与编辑器对应的机器代码中。

此时,我们实际上是在热炉子上做饭,因为现在我们可以使用简单的文本编辑器为更复杂的汇编程序捕获汇编语言表示,然后我们可以使用基本汇编程序组装漂亮的新汇编程序,然后然后我们可以使用原来的编辑器和漂亮的新汇编器来创建更复杂的编辑器。一圈又一圈地循环。

在某个阶段,信不信由你,用汇编语言捕获程序的乐趣将开始减弱,在这一点上,我们将开始考虑升级到更复杂的编程语言,但这将采取什么形式呢?我告诉你,我将让你思考一段时间,然后我们将在下一篇专栏文章中回到这个主题。与此同时,一如既往,我很想听听你对这一切的看法。

关于“建造一台计算机,如果你不小心穿越回过去(上)”的一个想法

留下回复

有特色的博客
2023年1月11日
寄生电容的影响是关注高频PCB设计的主要原因。寄生电容是由于在电路中放置得太近而在两个元件之间积聚电荷而形成的。这种意想不到的电容可能是t…
2023年1月10日
ChatGPT会发展到能够写出C.S. Lewis写的《纳尼亚传奇》这样的作品吗?
2023年1月10日
回归计划为那些结束职业中期休息的人创造了就业机会;探索我们为工程师和计算机科学家提供的RIYA回国计划。《向前和向上:回归计划如何提供新的职业机会》一文首次出现在《来自S…
2023年1月9日
Calibre在Kubernetes上运行,而大多数Calibre半制造作业仍然在使用... ...的本地计算集群上运行

有特色的视频

基于软件的自检作为处理单元的安全机制

Synopsys对此

了解Synopsys ARC软件测试库如何帮助您在动力和区域预算范围内进行高性能安全关键型汽车设计。

了解更多

特色粉笔谈话亚博里的电子竞技

用于家庭保健的电源转换

逮老鼠的电子产品而且崔公司。

你知道吗,到2030年,全球家用医疗设备市场预计将超过550亿美元。在这集粉笔谈话中,CUI公司的布鲁斯·亚博里的电子竞技罗斯和阿米莉亚·道尔顿探索了家庭保健设计所需的各种安全认证和法规。他们还研究了温度、隔离和漏电流在家庭医疗保健电源转换中的作用,以及家庭医疗保健应用所需电源的额外要求。

点击这里了解更多关于CUI Inc SDM300G-U和SDM300G-UR GaN适配器的信息

Baidu