存储系统基本概念
CPU:运算器+控制器。 作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。
主存储器的基本组成
半导体元件的原理
在电容上面的金属板加一个5V的高电平,产生电压差,电容里面的电荷就会开始移动,就是所谓的给电容充电的过程,电容里面就会保存一定量的电荷。
在电容上面的金属板加一个0V/1V的低电平,电压差非常小,电容不会充电。
保存电荷-1 不保存电荷-0。
让MOS管断开,电荷就跑不出去。
红线连接了所有存储元的MOS管,如果给红线加一个5V的高电平,所有存储元的MOS管都可以被导通。
如果有电流-产生的是二进制的1,没有电流-产生的是二进制的0
一行存储元-存储单元 多个存储单元-存储体
一行n个存储元-存储字长n bit
字节 Byte 1Byte = 8bit
存储芯片的基本原理
译码器根据地址寄存器MAR里给出的几位地址转变成某一条选通线的高电平信号
比如CPU给的地址是000-翻译成十进制-第0根字选线
每一个地址会对应译码器的一条输出线
如何实现不同的寻址方式
DRAM和SRAM
只读存储器ROM
双端口RAM和多模块存储器
多模块存储器是一种空间并行技术,利用多个结构完全相同的存储器芯片(宏观上并行,微观上交替)并行工作来提高存储器的吞吐率,常用的有单体多字存储器,和多体低位交叉存储器。(多体高位交叉存储器也是多模块存储器,但是其比较难完成宏观上并行,因为地址是在一个存储器芯片内连续存放的)。
多体并行存储器分为低位交叉编址和高位交叉编址:
在多体并行存储器中,每个存储器芯片具有相同的容量和存取速度(其实就是相同的存储器芯片),每个存储器芯片都有独立的读写电路,数据寄存器,地址寄存器,能够做到并行工作(宏观上),交叉工作,既宏观上每次访存可以选择不同位置的芯片。
即使是单核的CPU,读写速度也比内存快得多。内存每一次读写后需要一定的恢复时间,当CPU想要连续读取一些数据的时候,就必须等待他的恢复时间。
高位交叉编址:采用内存地址的更高几位来区分我们要访问的是哪个存储体
因为在同一个存储体里,存取时间为r,等待时间为3r,高位交叉编址就花费很多时间
主存储器与CPU的连接
MAR(Memory Address Register) 存储器地址寄存器
MDR(Memory Date Register) 存储器数据寄存器
WE: Write Enable
位扩展
芯片有8K个存储单元,8K对应二进制的2^13,所以我们需要13根地址线来表示这8K个地址,因此这块存储芯片对外暴露出去的引脚是A0-A12,总共有13条。CPU会把他想要访问的地址通过地址总线给送过来,这样就完成了地址线的连接
在计算机中,K通常指的是Kibibyte,即1K = 2^10 = 1024。因此,8K实际上指的是8 * 1024 = 8192
8192转二进制 ->10000000000000 2^13
每块芯片都有2K个存储单元,A0-A12的这13位的地址信息会同时送给8片存储芯片,由于每片芯片的存储单元只有1bit的数据,所以我们会把这8块芯片的1位数据分别送到数据总线的不同位上,接下来数据总线可以同时把这8位的信息送给CPU,这样的话我们就把整个主存的存储字长扩展为了8bit,这种连接方式称为位扩展的方式
字扩展
假设我们买了一个8K*8位的存储芯片,CPU可以同时读/写8位的信息,完美匹配。
由于有8K个存储单元,因此我们需要有13位的地址信息。接下来再给片选信号加一个高电平,这块存储芯片就可以正常工作了。
CPU还有3个地址位的信息没有被利用到 (A13-A15).
这个CPU的MAR本来是有16位,也就是说这个CPU,他有2^16寻址能力,没有完全发挥出寻址能力。
买一块同型号的芯片,试一试原来的位扩展,把A0-A12也都连接到新芯片上,给新芯片一个高电平的片选信号,当CPU给出一个全0的地址之后,这个地址会传给两个芯片,此时这两个芯片的片选信号都是1,他们都在工作。因此这两块芯片的0号存储单元的8个bit的信息都会顺着数据总线传给CPU,两边同时传会导致数据总线的冲突。
现在把A13连到左边芯片,A14连到右边芯片,由于片选信号是高电平有效,因此当A13和A14分别为1和0的时候,就意味着左边的片选信号有效,他被选中,右边的芯片不会工作,没有被选中。
这种情况下CPU提供的低13位的地址其实只会读取出左面这块芯片对应的存储单元的8bit的数据。
现在换种情况,让A13和A14分别为0和1,这时左面芯片不工作,右面芯片工作。此时CPU提供的低13位的地址其实指明的是右面这块存储芯片的一个存储单元。
如果两个都是1,两个芯片都会被选中,两边会同时读/写数据,数据总线又会冲突,所以A13和A14只能一个为1,一个为0。
然后开始不理解。