1.8地址总线
现在我们知道,CPU是通过地址总线来指定存储单元的。可见地址总线能传输多少个不同的信息,CPU就可以对多少个存储单元进行寻址。
如果一个CPU有10根地址总线,那么它的寻址能力为2的10次方。我们知道在电子计算机中,一根导线可以传送的稳定状态只有俩种,高电平或者低电平。用二进制表示就是1和0,10根导线可以传送10位二进制数据。根据排列组合原理,总共可以组合成2^10个不同的数据。最小数为0,最大数为1023。
下图展示了一个具有10根地址线的CPU向内存发出地址信息11时10根地址线上传送的二进制信息。考虑一下,如果访问12、13、14呢?地址总线上传送的内容又是什么?
1.9数据总线
CPU与内存或者其他器件之间的数据传递是通过数据总线传递的。数据总线的宽度决定了CPU和外界的数据传递速度。8根数据总线一次可传递一个8位二进制数据(即一个字节)。16根数据总线一次可以传递俩个字符。
8086CPU有16根数据线,可以一次性传送16位数据,所以可以一次性传递89D8H;8088CPU只有8根数据总线,需要俩次才能够传递完整的89D8H。
1.10控制总线
CPU对外部器件的控制是通过控制总线来进行的。这里控制总线是个总称,控制总线是一些不同控制线的集合。有多少根控制总线,就意味着CPU提供了对外部器件的多少种控制。所以,控制总线的宽度决定了CPU对外部器件的控制能力。
前面所讲的内存读写命令是由几根控制线综合发出的。其中有一根被称为读信号输出的控制线负责由CPU向外发出读的信号,CPU向该控制线上面输出低电平表示将要读取数据。有一根被称为写信号的输出控制线则负责传递写信号。
检测点1.1
习题解析
(1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为 13位。
(2)1KB的存储器有 1024 个存储单元,存储单元的编号从 0 到 1023 。
(3)1KB的存储器可以存储 8192(2^13) 个bit, 1024个Byte。
(4)1GB是 1073741824 (2^30) 个Byte、1MB是 1048576(2^20) 个Byte、1KB是 1024(2^10)个Byte。
(5)8080、8088、80296、80386的地址总线宽度分别为16根、20根、24根、32根,则它们的寻址能力分别为: 64 (KB)、 1 (MB)、 16 (MB)、 4 (GB)。
(6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。则它们一次可以传送的数据为: 1 (B)、 1 (B)、 2 (B)、 2 (B)、 4 (B)。
(7)从内存中读取1024字节的数据,8086至少要读 512 次,80386至少要读 256 次。
(8)在存储器中,数据和程序以 二进制 形式存放。
1.11内存地址空间(概述)
什么是内存地址空间呢?举例来说,一个CPU的地址总线宽度为10,那么可以寻址1024个内存单元,这1024个可寻找的内存单元就构成这个CPU的内存地址空间,下面进行深入的讨论。首先介绍俩部分基础知识:主板和接口卡
1.12主板
在每一台PC机中,都有一个主板,主板上有核心器件和一些主要的器件,这些器件通过总线(地址总线、数据总线、控制总线)相连。这些器件有CPU、存储器、外围芯片组、扩展插槽等、扩展插槽上一般插有RAM内存条和各类接口卡。
1.13接口卡
计算机系统中,所有由程序控制的设备,必须受到CPU的控制。CPU对某些外部设备例如:显示器、音箱、打印机等,不能够直接控制。直接控制这些外部设备的是接口卡,接口卡插在扩展插槽中,CPU通过直接控制这些接口卡,从而实现对外部设备的间接控制。简单一点说:CPU通过总线向接口卡发送命令,接口卡根据CPU的命令控制外部设备进行工作。
1.14各类存储器芯片
一台PC机中,装有多个存储器芯片,这些存储器芯片从物理连接上看是相互独立的、不同的器件。从读写属性上看分为俩类:随机存储器(RAM)和只读存储器(ROM)。随机存储器可读可写,但必须带电储存,关机后储存的内容丢失;只读存储器只能读取不能写入,关机后其中的内容不丢失,这些存储器从功能和连接上又可分为以下几类:
随机存储器
用于存放CPU使用的绝大部分程序和数据,主随机存储器一般由俩个位置上的RAM组成,装在主板上RAM和插在插槽上的RAM。
随机存储器装有BIOS(Basic Input/Output SSystem)的ROM
BIOS是由主板和各类接口卡厂商提供的软件系统,可以通过BIOS系统的ROM。例如,主板上的ROM中存储着主板的BIOS(通常成为系统BIOS);显卡上的ROM中存储着显卡的BIOS;如果网卡装有ROM,那其中就可以存储网卡的BIOS
接口卡上的RAM
某些接口卡需要对大批量输入、输出数据进行暂时存储,在其中装有RAM。最典型的就是显卡上的RAM,一般称为显存。显卡随时将显存中的数据向显示器上输出。换句话说,我们将需要显示的内容写入显存,就会出现在显示器上。
1.15内存地址和空间
上述的那些存储器,在物理上是独立的器件,但是在以下俩点相同。
- 都和CPU的总线相连
-
CPU对它进行读写的时候都通过控制线发出内存读写命令
下图展示了CPU如何控制各类存储器的情况:
在图1.8中,所有的物理存储器被看做是一个由若干存储单元组成的逻辑存储器,每个物理存储器在这个逻辑存储器中占有一个地址段,即一段地址空间。CPU在这段地址空间中读写数据,实际上就是在相对应的物理存储器中读写数据。
假设图1.8中的内存地址空间分配如下。
地址0~7FFFH的32KB空间为主随机存储器的地址空间。
地址8000H-9FFFH的8KB空间为显存地址空间。
地址A000H-FFFFH的24KB空间为各个ROM地址空间。
这样CPU向内存地址为1000H的内存单元中写入数据,这个数据就被写入主随机存储器中;CPU向内存地址为8000H的内存单元中写入数据,这个数据就被写入显存中,然后会被显卡输出到显示器上面;CPU向内存地址为C000H的内存单元写入数据操作是没有结果的,C000H单元中的内容不会被改变,C000H单元实际上就是ROM存储器中的一个单元。
内存地址空间的大小受CPU地址总线宽度的限制。8086CPU的地址总线宽度为20,它可以传送220次方个不同的地址信息。即可以定义220次方个内存单元,则8086CPU的内存地址空间大小为1MB。同理,80386CPU的地址总线宽度为32,则内存地址空间最大为4GB。
我们在基于一个计算机硬件系统编程的时候,必须了解这个计算机的内存地址空间的分配情况。因为当我们想在某类存储器中读写数据的时候,必须知道它的第一个单元的地址和最好一个单元的地址,才能保证读写操作是在预期的存储器中进行。比如我们希望向显示器输出一段信息,那么必须将这段信息储存到显存中,显卡才能将它输出到显示器上。要向显存中写入数据,必须要知道显存在内存地址空间中的地址。
不同的计算机系统的内存地址空间的分配情况是不同的。图1.9展示了8086CPU机内存地址空间分配的基本情况。
图1.9告诉我们,地址0-9FFFF的内存单元中读取数据,实际上就是在读取主随机存储器中的数据;地址A0000-BFFFF的内存单元中读取数据,实际上就是在读取显存中的数据;地址C0000-FFFFF的内存单元中写入数据的操作是无效的。
在下一章节中,喵星人老师会带领大家学习寄存器的相关知识,感谢大家的浏览!
网友评论