今天咱们来实现一个最简单内存。设计
因为在计算机中除了逻辑电路以外没有别的东西,咱们要存储也须要用逻辑电路来实现,接下来咱们先去实现一个简单的寄存器。3d
寄存器又分为两种一种只能存 1 ,一种只能存 0cdn
能存 1 和 0 的逻辑电路有了,咱们就能够存储所有状态了,咱们发现寄存器只能可以存一种状态而且没法清除保存的状态。blog
此次好了,设置端通电 1 就存起来了,想存 0 就给恢复端通电,这样咱们就简单实现了一个能存储一个 bit 的电路。可是咱们还会发现一个问题就是存 一、0 的状态须要两个线分别去处理,这样就会有不少不便。咱们继续往下看来解决这个问题。内存
这样一来咱们就能够用一根线控制锁存器的状态,而且添加了容许写入的线来控制切入权限。这样一来存一个 bit 的电路咱们就完成了。下面咱们来组合一下。it
这个电路就是咱们使用 8 个门锁组合成的存储单位,这样咱们就能够存储一个字节(Byte)了,可是咱们还会发现一些问题就是,若是内存这样设计的话,是否是要浪费不少线材,你能够简单计算一下,这样一个简单的寄存器须要使用多少线材。io
看到这个比较懵逼的图了没有,咱们使用矩阵的方式来组合门锁,这个地方我省略的一些格子,理论上应该是 16 *16 也就是存储 256 bit 的一个矩阵,这样一来咱们会节省不少线材。咱们接下来看看每一个格子里都是什么?class
说句题外话这个地方为何咱们选择是 16 * 16 的矩阵来说解?基础
- 咱们只讲简单的实现原理
- 咱们使用 8bit 的数据来表示 X、Y 的坐标,那么 X、Y 最大值就是 11111111,X:1111 Y:1111 换算成 10进制 就是 X:15 Y:15,从 0 - 15 也就是 16 个。
咱们来分析一下这个电路的优劣势?原理
继续看咱们怎么规避掉的。
这个图就是把咱们上面的门锁矩阵进行封装而成的内存块。
而后咱们再把 8 个内存块组合起来,这样咱们就能够继续存 1Byte 的数据了。
到此咱们就完成了一个简单的内存。
看到这个你们心中有没有解开一个疑惑。 为何计算机的基础单位是 1Byte(8bit)? 这是由于计算机的基础硬件就是这么设计的,这个标准被普遍应用后。出新的就会致使不兼容,而引起问题,若是要改变这是一个浩大的工程,1byte 为最小单位也没有什么太大的弊端,因此就成为计算机的标准而流传下来。