计算机之所以被广泛的应用,其主要原因就在于它能够"记忆"。即将数据储存在它的"存储器"中。那么数据究竟是以何种形式存于存储器中的呢?前面已经讨论过,一位二进制数只能表达0和1两种状态,用于表示数字也只能表达0和1两个数字。而我们平时应用的数的范围是很大的。因此,若数据在存储器中是按"位"存放,即CPU每次仅能从存储器中取得1bit数据进行处理,那么这样的计算机效率是极低的。所以,"位"(bit)并不是存储器中所使用的最小存储单元。
实际上,数据是按照每八个"位"为一组的形式存于存储器中,也就是说,CPU每次从存储器中取出或放入数据的最小宽度是八个bit。我们把这八个bit单独取了个名字--"字节"(BYTE)。所以说,存储器的最小单元就是"字节"。
有时我们嫌"字节"这个单位太小,因此在实际应用中还常用"千字节"(KB),"兆字节"(MB)和"千兆字节"(GB)。1KB=1024B,1MB=1024KB,1GB=1024MB。
不同的CPU所能配备的存储器的容量是不同的,例如8086/88最多可配备1MB存储器,而80286最多可配备16MB存储器,为什么有这样的差别呢?图1-4表示了CPU同存储器之间的联接形式:
可以看到,存储器中的每个字节都有一个编号,这个编号在技术上称为存储单元的"地址"(Address)。这就象是生活中的门牌号码一样。假如要把一封信邮寄到收信人手中,势必要写出收信人的地址。同样,CPU要想把数据发到存储器的某个单元中,也要给出这个存储单元的"地址"。因此,在CPU和存储器之间就有一组专门传送"地址"的线路,这组线路称为"地址总线"。
地址总线不是一根,而是一组。每根地址线都有0或1两种状态,这一系列的0和1组成一个二进制数,当CPU把这个二进制数传到存储器后,哪个存储单元的编号恰好和这个数相等,则这个存
① 这里所说的"千"、"兆"指得是"210"、"220",不是一般意义上的"103"、"106"
储单元就被CPU"选中",那么CPU就可以把这个存储单元所存的数据通过另一组线路(数据总线)取出,或向这个存储单元存入新的数据。 不同的CPU所具有的地址线数量是不一样的,像8086/88只有20根地址线,所能给出的地址范围是0-220-1(1048575),所以8086/88只能配备1MB存储器。而286有24根地址线,当然可配备224个字节的存储器。386/486有32根地址线,所以最多可配备4GB存储器。
前面所说的存储器都是直接和CPU相联接的,这些存储器和CPU往往安装在同一块电路板上,因此通常把这类存储器称为"内存储器"(内存)。在机器中还有另一类存储器-"外存储器",这类存储器一般指得是软盘、硬盘、磁带和光盘等容量较大的存储设备。
外存储器和内存相联接而不和CPU直接联接,即CPU无法直接将外存中的数据取到自己内部进行处理,而只能先通过另一部分控制电路将外存中的数据取到内存中,再进行进一步的处理。处理后的数据也是先放在内存中,再传至外存。
正是由于这个原因,外存的容量并不受CPU地址线数量的限制。其容量可从几百KB直至几个GB不等。而且外存往往是机械--电子结合的设备,其数据存取速度远低于内存。