本篇先介绍了计算机中数字编码,地址的概念。然后介绍了组成计算机的另外一半内容,也就是CPU,和前面的计算机一半合起来就可以组成一个简易版的计算机了。至此终于大概看到了计算机的全貌。
数字编码系统
这里我们简单说一下计算机里数字编码系统。我们通常的0-9数字被称为十进制,因为在一些古代语言中,“dec”表示十。0-5系统将被称为senary系统,因为“sen”在其他一些古代语言中意味着六。这个只有0和1的新系统被称为二进制系统,因为“bi”意味着两个,也因为一些古老的语言。另一个新的系统,0-F系统,将被称为十六进制系统,因为“hex”是另一个古老的单词,意思是六,而“dec”仍然意味着十,所以它是六加十系统。
命名不同数字系统的另一种方法是根据它们所基于的数字来命名它们,例如“基数10”或“基数2”等,意思是十进制或二进制等。但请注意,单词“基数”后面的数字是用十进制写的以二进制形式写入的“2”是“10”,因此如果“10”是以二进制形式编写的,则“base 10”表示二进制。事实上,如果“10”写在数字系统的数字中,那么每个数字系统都将是“十进制”!所以,如果我们愿意的话,我们可以讨论以2为基数,以6为基数,10为基数,16为基数,只要我们记住这些基数是用十进制写的。如果我们谈论二进制、二进制、十进制和十六进制,这是同一回事,只是可能不那么容易混淆。
一个有趣的数字编码案例:比如罗马数字,它是一个也由两个元素组成的数字系统。第一个元素是符号,只是从字母表中选出的字母,“I”代表一个,“V”代表五个,“X”代表十个,“L”代表五十个,“C”代表一百个,“D”代表五百个,“M”代表一千个。第二个元素是一个方法,允许您表示没有单个符号的数字。罗马法要求你写下多个符号,首先是最大的符号,然后把它们加起来,除非一个较小的符号在一个较大的符号的左边,然后你减去它。因此,“II”是2(加1加1),“IV”是4(从5中减去1)。使这位作者对2000年的到来感到非常高兴的一件事是,代表年份的罗马数字变得更简单了。1999年是“MCMXCIX”,你必须在脑子里做三次减法才能读懂那个数。2000年只是“MM”。
我们今天使用的正常数字系统也由两种思想组成,但这两种截然不同的思想是通过阿拉伯而不是罗马传入我们的。第一个想法也是关于符号,在本例中是0、1、2、3、4、5、6、7、8和9。这些数字是表示数量的符号。第二个想法是我们习惯的方法,我们本能地使用它。这个方法说,如果你写下一个数字,它就意味着它所说的。如果你写下两个相邻的数字,右边的一个表示它所说的意思,左边的一个代表它所说意思的十倍。如果你在每一个数字的右边写下三个数字,右边的一个表示它所说的意思,中间的一个是它所说意思的十倍,左边的一个代表它所说内容的一百倍。当你想表达一个大于9的数字时,你可以用多个数字来表示,你使用的方法是,第一个数字左边的位置数告诉你在加起来之前你将它乘以10的次数。所以,如果你有246个苹果,那意味着你有200个苹果加上40个苹果加6个苹果。
在计算机行业,人们经常使用十六进制(他们称之为“十六进制”)。如果你看上面的图表,你可以看到二进制的四位数字可以用一位十六进制表示。如果你有一个包含0011100的字节,你可以将其转换为十进制的60,或者称之为十六进制的“3C”。
计算机里的地址
既然我们有了二进制代码,我们就可以在我们的计算机中将其用于各种用途。我们将首先使用它的地方之一是内存地址寄存器。我们放入该寄存器的比特位模式将使用二进制数代码。然后,MAR中该数字的位选择256个RAM存储位置中的一个。MAR中的数字被认为是介于0和255之间的数字,因此256个RAM字节中的每一个都可以被认为有一个地址。
这相当简单,但这里需要说明的是,计算机内部地址的确切含义。在一个住宅区,每间房子都有一个地址,比如枫树街125号。拐角处有一块牌子写着“枫树街”,房子上写着数字“125”。这是我们通常想到地址的方式。这里要说明的是,房子和街道上都有数字或名字。在计算机中,字节上没有任何识别信息。简单地说,它是当您将该数字放入内存地址寄存器时选择的字节。字节的选择取决于它所在的位置,而不是该位置包含的任何其他因素。想象一个有16条街的房子的社区,每条街道上有16栋房子。想象一下,街道上没有标志,房屋上也没有数字。你仍然可以找到任何特定的房子,例如,他们被告知去第七街的第四栋房子那所房子仍然有一个地址,也就是说,一种定位它的方法,它只是在这个位置没有任何识别信息。因此,一个计算机地址只是一个数字,当某个地址被放入内存地址寄存器时,它会使某个字节被选中。
计算机的另外半部分
计算机的另一半最终也是由NAND门组成的,它的总部件可能比我们所构建的RAM少,但它的布局并没有那么规则和重复,因此需要更长的时间来解释。我们将计算机的这一半称为“中央处理单元”,简称CPU,因为它对RAM中的字节进行处理。
这里就是CPU的开始了。RAM在右侧,总线在RAM上的两个总线连接之间形成一个大环路。CPU从连接到总线的六个寄存器开始。这六个寄存器是CPU用来“处理”字节的所有位置。稍后将详细介绍图中间标有“Control Section”的大框。它控制CPU和RAM中的所有“设置”和“启用”位。带有问号的方框将在本章之后立即解释。现在,我们将看看字节在CPU中的位置。
R0、R1、R2和R3是寄存器,用作CPU中所需字节的短期存储。它们的输入和输出连接到总线。它们可以用于许多不同的目的,因此被称为“通用寄存器”。名为“TMP”的寄存器表示临时。它的输入来自总线,它有一个向下的输出,然后到达另一个带问号的方框。TMP具有“设置”位,但没有“启用”位,因为我们从来没有理由关闭它的输出。
最后一个寄存器称为累加器,简称ACC。这个词来源于旧的机械加法机时代(1970年以前)。我想它的意思是,当你把一列数字加起来时,它会“累积”一个连续的总数。在计算机中,这仅仅意味着它临时存储了一个字节,这个字节来自于一个大的问号框。然后,ACC的输出连接到我们的老朋友总线上,因此可以根据需要将其发送到其他地方。
CPU和RAM中的寄存器是计算机运行时字节内容的来源和去向。所有的动作都涉及在总线上启用一个寄存器,并将总线的内容设置到另一个寄存器中。这就是计算机的核心部分了。