计算机最基础的部分:存储逻辑电路

今天咱们来实现一个最简单内存。设计

因为在计算机中除了逻辑电路以外没有别的东西,咱们要存储也须要用逻辑电路来实现,接下来咱们先去实现一个简单的寄存器。3d

寄存器

寄存器又分为两种一种只能存 1 ,一种只能存 0cdn

能存 1

image

能存 0

image

能存 1 和 0 的逻辑电路有了,咱们就能够存储所有状态了,咱们发现寄存器只能可以存一种状态而且没法清除保存的状态。blog

锁存器

image

此次好了,设置端通电 1 就存起来了,想存 0 就给恢复端通电,这样咱们就简单实现了一个能存储一个 bit 的电路。可是咱们还会发现一个问题就是存 一、0 的状态须要两个线分别去处理,这样就会有不少不便。咱们继续往下看来解决这个问题。内存

门锁

image

门锁符号

image

这样一来咱们就能够用一根线控制锁存器的状态,而且添加了容许写入的线来控制切入权限。这样一来存一个 bit 的电路咱们就完成了。下面咱们来组合一下。it

8位寄存器

image

这个电路就是咱们使用 8 个门锁组合成的存储单位,这样咱们就能够存储一个字节(Byte)了,可是咱们还会发现一些问题就是,若是内存这样设计的话,是否是要浪费不少线材,你能够简单计算一下,这样一个简单的寄存器须要使用多少线材。io

门锁矩阵

image

看到这个比较懵逼的图了没有,咱们使用矩阵的方式来组合门锁,这个地方我省略的一些格子,理论上应该是 16 *16 也就是存储 256 bit 的一个矩阵,这样一来咱们会节省不少线材。咱们接下来看看每一个格子里都是什么?class

说句题外话这个地方为何咱们选择是 16 * 16 的矩阵来说解?基础

  1. 咱们只讲简单的实现原理
  2. 咱们使用 8bit 的数据来表示 X、Y 的坐标,那么 X、Y 最大值就是 11111111,X:1111 Y:1111 换算成 10进制 就是 X:15 Y:15,从 0 - 15 也就是 16 个。

放大单个格子

image

咱们来分析一下这个电路的优劣势?原理

优点

  1. 咱们只须要把全部格子的 输入/输出线,容许读取线,容许写入线 都连起来、这样只须要给相应的位置就能作到对不一样格子的读取或写入了。
  2. 咱们给相应的 X、Y 轴通电,而后给容许写入线通电,在 输入/输出 端口传入相应的状态,就会存起来
  3. 咱们给相应的 X、Y 轴通电,而后给容许读取线通电,在 输入/输出 端口就会传出相应的状态
  4. 若是 X、Y 只有一个有电,那么第一个 AND 门就已经断开了,没有办法对格子读取或写入,正是有第一个 AND 门的存在会减小不少错误,这样一来只有肯定坐标才能进行访问或读取。

劣势

  1. 不能多个位置同时读写了,否则就会位置乱掉

继续看咱们怎么规避掉的。

简易内存块

image

这个图就是把咱们上面的门锁矩阵进行封装而成的内存块。

内存

image

而后咱们再把 8 个内存块组合起来,这样咱们就能够继续存 1Byte 的数据了。

写入数据

  1. 首先咱们给一个地址
  2. 给容许写入端通电
  3. 在数据端口放入数据,这样咱们就能够在同一个地址,同时存入 8bit 的数据了。

读取数据

  1. 首先咱们给一个地址
  2. 给容许读取端通电
  3. 在数据端口就能获得 8bit 的数据了。

到此咱们就完成了一个简单的内存。

小结

看到这个你们心中有没有解开一个疑惑。 为何计算机的基础单位是 1Byte(8bit)? 这是由于计算机的基础硬件就是这么设计的,这个标准被普遍应用后。出新的就会致使不兼容,而引起问题,若是要改变这是一个浩大的工程,1byte 为最小单位也没有什么太大的弊端,因此就成为计算机的标准而流传下来。

相关文章
相关标签/搜索