先来了解一下什么是闪存:本质是区别就是——断电后是否数据是否保存。
计算机组成原理的本质是做什么?
数据处理
,计算机所有操作所有都是围绕数据(或者可以理解为0,1),可以分为两大个方面:
1、
数据存储
:数据存储依赖于
增删改查
操作得以实现,而存储的物理介质依赖于
磁介质
(你也可以粗略理解为磁盘)
2、
数据传输
:数据传输依赖于
总线
(数据总线、地址总线、控制总线),而总线或者说数据传输的物理介质依赖于
导线/半导体
说到存储,先说一下数据存储的介质有哪些:磁盘(持久化)、内存(中介)、CPU(高速缓存),重点说一下磁盘:
磁盘靠什么存储信息?磁盘表面的磁颗粒对外显正负极(0,1由此而来);磁盘区域是怎么划分的呢?众所周知——磁面、磁道,扇区;磁道宽度和什么有关呢?总线(32位/64位)每个扇区的大小是多少呢?默认4KB(这个是可调的,最常见的内存划分,格式化的时候,4K对齐熟悉吧,对就是这样的)
那为什么是4KB呢?
一方面,如果是4B,那么每个扇区是需要存地址的吧,一个4B,那它所对应的地址存储所占的内存比本身还大,已经失去了它本身的意义,就好比你要建一个目录,目录索引比内容还多(目录占4页,内容只有一页),那目录还有什么用呢?你直接看一页内容不就行了;
另一方面,如果是400KB,那一个磁盘块就这么大,你存一个文件100KB,那后面的300KB只能浪费掉,分配是按磁盘块为单位分的。
所以,太大不行,太小也不行,所以经过前辈不断的实践、测试,找出了这么一个折中的方案,目的只有一个,希望
磁盘读取信息的速度更快
一些——
一方面让扇区的地址存储小一些,另一方面也要兼顾磁盘块的空间不过与浪费
。
我们都知道数据在计算机中是这样传输的:
那为啥它不拿磁盘数据直接攻CPU呢?我们假设直接这样攻,
CPU内存是很少的
,因为它的
主要作用是计算
,计算速度是放在第一位的,这就限制了它的内存只有必要的寄存器组(后来也加了高速缓存L1\L2\L3这些)
磁盘内存多,但读取是要靠移动磁头来获取数据的,而
机械移动
的速度是很慢很慢的,这就造成了
发送和接收数据速度不匹配
的问题,即磁盘一下拿了很多数据给CPU,但CPU每次只能拿很少的数据,CPU很快就计算完了,再拿就又要到磁盘中取,但这个速度差是非常大的,万倍以上的数量级,即CPU工作一年,要等磁盘数万年,是不是很大的浪费;
为了缩小这个差距,提升效率,引入内存作为中间介质,缓存数据,内存数据传输是通过
电信号
来传输的,速度自然比磁盘快了许多,这时它的速度差少了两个数量级,在百倍上;
当然而后为了
优化,在内存和CPU 之间也采取以上的这种模式
,在CPU上加高速缓存L1,L2,L3,现在CPU的利用率大概控制在了20%左右,那什么情况下CPU会打满呢?即
短指令的执行
,比如64位的指令,包含8个8位的短指令,那CPU就计算八次相当于,CPU使用率就上去了。
对于总线,总结几个注意的点吧
-
各个元器件之间也是有各自相连接的处理器的,
CPU是中央处理器,但不是唯一处理器
-
总线为什么用高低电压表示0,1?零电压不行吗?
零电压在断路的时候分不出来
-
电路控制靠的不是我们书上学的电路开关,
靠的是半导体控制电路