在计算机科学中, 对计算机的系统结构有这样一个简化的模式:
- 存储器存储数据和程序
- CPU等执行单元负责控制指令的执行
-
在我们一般的编程当中, 这个模式显然是成立的。但是, 在这之中, 对于存储系统而言, 由于不同的技术差异使得计算机的存储系统往往分为多个层次, 了解他们, 对我们后续的编程有很大的好处。
多种存储元件
RAM
RAM分为DRAM和SRAM两种, 一般来说, SRAM的存储速度以及单子节的耗费要明显高于DRAM, 所以, SRAM在计算机的存储系统中常常作为cache. 而DRAM常常作为主存储器或者图形化界面的缓冲器。
SRAM
如上面的图, 我们可以知道, SRAM的电路由多个晶体管组成, 他的一个性质是总是趋向于两个相对稳定的状态, 所以要改变它所存储的数据的时候, 我们只要改变其所处的状态即可。在不带电的情况下, SRAM就能够存储它所带的数据。DRAM
DRAM的存储方式和SRAM明显不同, DRAM用电容器来存储多带的数据。但是, 这样做的情况下, DRAM上的数据极易发生流失造成存储的数据错误。所以, 一般采用下面的方法来防止这种情况的发生。
- 使用刷新电路来对DRAM来进行刷新(在读或写的同时进行)
- 使用校验码(个人感觉比较复杂, 在此不再讨论)
-
传统的DRAM
传统的DRAM一般采用行列地址编码, 并同时采用读写控制电路和片选信号来控制芯片的选择和数据的输出。总的来说, 将会有下面的几种信号:
- 行列地址, 地址数据
- 数据线, 负责传输数据
- 片选或读写控制等信号
- 刷新电路等
-
ROM
ROM在断电之后数据不会失去, 但是很难对其进行多次编程, 或者存储的速度过慢。
- ROM: 只读存储器
- PROM: 只可写一次的存储器, 在生产中所有的二进制位被预置为0或1, 只可以被改写一次。
- EPROM: 可以使用紫外光将其复原
- E 2 PROM: 可以使用读写电路重写
-
磁盘
磁盘是计算机系统中容量较大, 同时较为廉价的一种了.一般用下面这几个参数来衡量它的性能:
- 容量密度: 单个磁道内可以写入的二进制位数
- 磁道密度: 单个柱面可以写入多少磁道
-
简单来说就是: 磁盘是一个圆柱形状的存储设备, 它被划分成为多个盘片, 而每个盘片上又引出多个柱面, 每个柱面上又存在有多个磁道, 计算机会在相应的磁道上获取相应的数据。
扩展主存的方法
在计算机中, 往往一块存储芯片的存储容量是非常小的。所以我们需要相应的进行位数的扩展和字长的扩展。
我们将一片芯片包装成一个模块作为大容量芯片当中, 然后根据地址信号决定从哪一片芯片中读取数据, 如下图:
获取主存数据的方法
想要知道计算机获取数据的渠道, 我们又需要来了解计算机的总线结构。
计算机中总线的数目
- 数据总线: 负责传输数据
- 地址总线: 负责传输操作数的地址
- 控制总线: 负责传输指令
-
获取数据的步骤
- CPU产生指令, 包括读写控制, 数据在磁盘上的位置等
- 磁盘控制器负责读出相应的数据到主存
- 在读出数据完成后, 向CPU发送相应的打断信号, CPU开始从主存中读取相应的数据。