计算机有五大部分:运算、控制、存储器,输入、输出设备。
运算、控制,合称为“中央控制单元(CPU)”。
CPU,必须外接存储器芯片,才能工作。
早期,由于技术水平的原因,存储器芯片的容量,不大。
那么,就必须由多片存储芯片,组装在一起,才能满足需求。
但是,各个存储芯片,都应该独立工作。
即:CPU 读写任何一个地址号码,只许有一个存储芯片配合工作。
绝不允许【两个或多个芯片,同时读出或写入。】
---------------------------
全译码方式,是把全部的地址线,都连接到译码电路。
这种方式,可以保证:
任意一个地址号码,只对应一个存储单元。
任意一个存储单元,也只有唯一的地址号码。
这样的方式,最稳定可靠。只是电路复杂,成本高。
部分译码方式,仅有部分地址线,连接到译码器。有一些地址线未用。
此时,任意一个地址号码,还是只对应一个存储单元。
但是,未用的地址线,可以随意的取 0 取 1。
那么,任意一个存储单元,就有了多个地址号码。
因此,就增加了读写存储单元的灵活性。编写软件时,就更加方便。
这种方式,电路简单一些,只是实际的地址稍少一些。
线选法,不使用译码电路,直接用高位地址线来发挥“译码”功能。
作为“译码”的功能,就必须令各个芯片单独工作。
那么,有些地址,有可能使得多片存储芯片同时工作。
这样的地址,就不可用了。
这种现象,就是多片芯片的地址,重叠在同一地址范围了。
优点:电路简单。
缺点:有【地址重叠】现象,可用地址较少。
若cpu的寻址空间等于存储器芯片的寻址空间,可直接将高低位地址线相连即可,这种方式下,可用单条读写指令直接寻址,寻址地址与指令中的地址完全吻合。
若cpu的寻址空间大于存储器芯片的寻址空间,可直接将高低位地址线相连即可,cpu剩余部分高位地址线,这种方式下,可用单条读写指令直接寻址,未连接的地址线在指令中可以以0或1出现,即有多个地址对应每个存储器空间,可在指令中将这些位默认为零。
若cpu的寻址空间小于存储器芯片的寻址空间,可将其它io口连接剩余存储器高位地址线,寻址前,需设置好这些io口。
当存在多片存储器,且希望节省cpu的io口时,需要外加译码电路。比如说,存储器地址线为13根,共8片存储器,可用74ls138连接cpu的高3位地址线,74ls38的8位输出分别连接8片存储器,读写时,寻址地址与指令中的地址完全吻合。
上一种情况中,若希望简化外围电路,也可用其余端口的8个io分别连接8片存储的片选,其寻址方式与第三种情况类似。