打游戏断电后损失数据,原因是电脑用“随机存取存储器”简称RAM中信息丢失,它只能在有点情况下存储东西,比如游戏状态。
另一种存储叫持久存储,电源关闭数据也不会丢失。
锁存器
我们拿一个OR门,把输入连回输出,如果把A变成1,1or 0输出0,所以看到两个输出都是1,将A改为0输出仍为0,所以电路能记录1.这是永久的,无论如何都不会变为0
与之相反,and门可记录0
为了能做出有用存储,我们把两个电路结合起来
它有两个输入,设置输入把输出变为1,复位输入,把输出变为0
如果设置和复位都是0,电路回输出最后放入的内容,也就是存住了1位的信息
为了更容易用,我们只希望一条输入线,将他设为0或1来储存值,还需要一根线来启用内存,加一些额外逻辑门,可以做出这个电路 ,这叫门锁,因为门可以打开和关上
数据从0换到1,从1换到0,允许输入线为0,内容不会改变,允许输入线为1,可以输入数据,输入1后,保存一位信息,再将允许输入线改为0,则不会改变。
寄存器
一组锁存器叫寄存器,寄存器能存多少个数字,叫位宽,早期电脑用8位寄存器,然后是16位,32位。如今63位
写入寄存器前,要先启用里面所有寄存器,我们可以用一根线连接所有“允许输入线”,把他设为1,然后用8条数据线发数据,然后将允许写入线设为0,这样8位就存储起来了
如果位少并排也可以,但64位寄存器要64根数据线,64根连到输出端,加一条控制,一共129条,如果存256位要513根线,解决的方法就是矩阵。
在矩阵中,我们并不并列排放锁存器,我们做成网络,存256位,我们用1616网格锁存器,要启用某个锁存器,就打开相应的行线和列线
我们只打开交叉处锁存器的“允许写入线”,所有其他写入线保持关闭,我们可以用and门,只有行线和列线均为1,and门才输出1,所以可以单独使用一个锁存器,这种行列排列法,用一根允许写入线,连所有锁存器,为了写入锁存器,行列的允许写入线都必须是1
所以对于256位只要35条线,1条数据线,一条允许写入线,一条允许输出线,还有16行16列线用于选择锁存器(16+16+3)
我们刚存了一位地址假设是12行8列,由于最多16行,用4位就够了,12用二进制表示1100,列地址也这样表示,用二进制1000,刚才说的12行8列可以写成11001000,为了将地址转为行和列,我们需要多路复用器
你输入一个4位数字,他会把那根线连到相应输出线,一个多路复用器用于处理行,一个多路复用器用于处理列
进一步抽象,他输入一个8位地址,4位代表列,4位代表行 ,我们还需要一条数据线用于读/写数据,不幸的是,256位内存也无法做什么事,所以要扩大规模。
我们把它并排放置,一行8个,可以存一个8位数字,8位也可以叫一个字节,为了存一个8位数字,我们需要同时给8个256位内存一样的地址,每个地址存一位,一位总共存256个字节
进一步抽象,看成一个整体可寻址内存,我们有256个地址,每个地址能读或写一个8位值。
内存一个重要特效,是可以随时访问任何位置,因此叫随机存储器,简称RAM
如图是一条真的内存,上面焊了8个内存模块
将其中一个放大,会看到有32个内存方块
放大其中一个方块可以看到4个小块
再放大可以看到一个位的矩阵,这个矩阵128位64位,总共8192位,每个方块5个矩阵,一个方块32768位,一个芯片大概存100万位,一个ram 800万位,也就是1m