众所周知计算机的组成是由控制器、运算器、存储器、输入、输出设备五部分构成,而其中CPU就是由控制器、运算器、寄存器和时钟四部分构成,磁盘和内存就属于存储设备。
CPU指令主要有以下四个:
- 加载:把一个字节或一个字从内存中赋值到寄存器,覆盖原来寄存器的内容
-
2 存储:把一个字节或一个字从寄存器复制到内存中的某个位置,覆盖原来内存上这个位置的内容
-
3 操作:将两个寄存器的内容赋值到ALU,ALU对这两个字进行算术操作,将结果存储在某个寄存器中,以覆盖寄存器中原来的值
-
4 跳转:从指令本身抽取一个字,并将这个字复制到程序计数器中,就会覆盖原来的指令而执行当前指令
CPU:CPU的容量最小,但是它的运行速度最快,就好比阿甘,虽然脑子不够好使,但是跑的很快,傻傻的,系统让它干什么他就干什么,毫无怨言。而且在任何时候它都没有歇下来,都会指向内存中某条机器语言指令。CPU中寄存器保存着最常用的数据,控制器负责把指令以及数据读入到寄存器中,而运算器就负责将寄存器中的数据进行运算处理,控制器根据运行结果对计算机进行控制,时钟是CPU开始计时时的时钟信号。
内存:是CPU对硬盘中数据处理的中介,是一个临时存储设备。计算机的主存储器(main memory),由一组动态随机存取存储器芯片构成,每个字节都具有唯一的地址。通过控制芯片与CPU相连,并向CPU中发送数据,而CPU读取内存中的数据则是按照内存地址去查找数据,CPU在对内存中的数据处理完毕后还要再写入内存。但是断电后内存中的数据会丢失,而且它的速度是CPU的百分之一。
磁盘:利用磁效应进行存储数据,以供内存和CPU进行读取,还可以通过网络连接与其他机器进行数据交互,是本地数据缓冲区,当CPU对一个文件进行操作时,需要从磁盘读到内存中,然后对内存中的数据进行处理,它相比与内存和CPU是读取数据的速度最慢的,CPU完成一此计算只需要1ns,而硬盘处理的速度是CPU的100万倍。
而使用计算机时面对的最大的问题就是对数据处理时的速度不匹配问题,为了解决这个问题引入了异步处理、并发以及缓存的概念:
异步处理:CPU 发起一个硬盘读的操作以后,不等待硬盘完成,立刻去干别的事情,由DMA(Directory Memory Access)控制器来负责把数据从硬盘读到内存, 完成后通知CPU。好比去酒店吃饭,服务员把菜单给你,然后就去给下一桌客人点菜,等你菜点好了服务员再过来继续服务你,大大的提升了CPU(服务员)的利用效率。
并发:程序在执行时会霸占CPU(因为只有一个),操作系统发现一个程序需要等待IO操作(硬盘,网络等)的完成, 就会让这个程序进入等待队列,数据来了再唤醒它。 如果发现这个程序的时间片用完了, 就把这个程序放到就绪队列,等待下次运行 CPU释放给别的程序执行
在引入缓存之前需要先了解局部性原理:
- 1.时间局部性:是指如果程序中的某条指令一旦执行,则不久之后该指令可能再次被执行; 如果某数据被访问,则不久之后该数据可能再次被访问。
- 2.空间局部性: 是指一旦程序访问了某个存储单元,则不久之后。其附近的存储单元也将被访问。
所以根据局部性原理可以专门在内存中划分一块区域来存储从硬盘读入的数据,也可以在CPU中划分一块区域来存储从内存中读取的数据
缓存:当CPU要读取一个数据时,首先从CPU缓存中查找,找到就立即读取并送给CPU处理,没有找到,就从速率相对较慢的内存中读取并送给CPU处理,同时把这个数据所在的数据块调入缓存中,可以使得以后对整块数据的读取都从缓存中进行,不必再调用内存。相应的对于内存读取磁盘也是同样的道理。
网友评论