中央处理器内的组成部分,有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,存器有累加器(ACC)。寄存器,是集成电路中很是重要的一种存储单元,一般由触发器组成,寄存器拥有很是高的读写速度,因此在寄存器之间的数据传送很是快。算法
数据寄存器- 用来储存整数数字(参考如下的浮点寄存器)。在某些简单/旧的CPU,特别的数据寄存
器是累加器,做为数学计算之用编程
地址寄存器- 持有存储器地址,用来访问存储器。在某些简单/旧的CPU里,特别的地址寄存器是索引寄存器(可能出现一个或多个)缓存
通用目的寄存器(GPRs) - 能够保存数据或地址二者,也就是说它们是结合数据/地址 寄存器的功用,修改他们的值一般不会对计算机的运行形成很大的影响。微信
浮点寄存器(FPRs) - 用来储存浮点数字。性能
常数寄存器- 用来持有只读的数值spa
向量寄存器- 用来储存由向量处理器运行SIMD(Single Instruction, Multiple Data)指令所获得的数据设计
特殊目的寄存器- 储存CPU内部的数据,像是程序计数器(或称为指令指针),堆栈寄存器,以及状态寄存器(或称微处理器状态字组)。指针
指令寄存器(instruction register)- 储存如今正在被运行的指令code
索引寄存器(index register)- 是在程序运行时用来更改运算对象地址之用。对象
寄存器的基本单元是 D触发器,按照其用途分为基本寄存器和移位寄存器
基本寄存器(见图)是由 D触发器组成,在 CP 脉冲做用下,每一个 D触发器可以寄存一位二进制码。在 D=0 时,寄存器储存为 0,在 D=1 时,寄存器储存为 1
CPU的频率就是指数字集成电路的时钟频率
移位寄存器按照移位方向能够分为单向移位寄存器和双向移位寄存器,单向移位寄存器是由多个 D 触发器串接而成
寄存器所能存储的数据不必定是8bit,有一些寄存器能够存储16bit数据
主存储器,存放指令和数据,并能由中央处理器(CPU)直接随机存取,通常采用半导体存储器,与辅助存储器相比有容量小、读写速度快、价格高等特色,存放一个机器字的存储单元,一般称为字存储单元,相应的单元地址叫字地址,而存放一个字节的单元,称为字节存储单元,相应的地址称为字节地址,若是计算机中可编址的最小单位是字存储单元,则该计算机称为按字编址的计算机。若是计算机中可编址的最小单位是字节,则该计算机称为按字节编址的计算机。一个机器字能够包含数个字节,因此一个存储单元也能够包含数个可以单独编址的字节地址。
从一次读操做命令发出到该操做完成,将数据读入数据缓冲寄存器为止所经历的时间
连续启动两次独立的存储器操做(如连续两次读操做)所需间隔的最小时间
RAM
RAM通常使用动态半导体存储器件(DRAM),由于CPU工做的速度比RAM的读写速度快,因此CPU读写RAM时须要花费时间等待,这样就使CPU的工做速度降低。人们为了提升CPU读写程序和数据的速度,在RAM和CPU之间增长了高速缓存(Cache)部件。Cache的内容是随机存储器(RAM)中部分存储单元内容的副本
ROM
只读存储器,出厂时其内容由厂家用掩膜技术写好,只可读出,但没法改写。信息已固化在存储器中,通常用于存放系统程序BIOS和用于微程序控制
PROM
PROM是可编程ROM,只能进行一次写入操做(与ROM相同),可是能够在出厂后,由用户使用特殊电子设备进行写入。
EROM
EPROM是可擦除的PROM,能够读出,也能够写入。可是在一次写操做以前必须用紫外线照射,以擦除全部信息,而后再用EPROM编程器写入,能够写屡次
EEROM
EEPROM是电可擦除PROM,与EPROM类似,能够读出也可写入,并且在写操做以前,不须要把之前内容先擦去,可以直接对寻址的字节或块进行修改
闪速存储器
介于EPROM与EEPROM之间。闪速存储器也可以使用电信号进行快速删除操做,速度远快于EEPROM。但不能进行字节级别的删除操做,其集成度高于EEPROM
主存与CPU之间的硬链接:主存与CPU的硬链接有三组连线:地址总线(AB)、数据总线(DB)和控制总线(CB),存储器地址寄存器(MAR)和存储器数据寄存器(MDR)是主存和CPU之间的接口,MAR能够接收由程序计数器(PC)的指令地址或来自运算器的操做数的地址,以肯定要访问的单元。MDR是向主存写入数据或从主存读出数据的缓冲部件。MAR和MDR从功能上看属于主存,但一般放在CPU内
CPU-(须要读取数据的地址)->MAR->AB-(读命令)->DB-(交换信息)->MDR-(读数据)->CPU
CPU-(须要写数据的地址)->MAR->AB-(写命令)->MDR->DB
不管是读仍是写数据 DB起到了数据交换做用
CPU和主存间没有统一的时钟,由主存工做完成信号(MFC)通知CPU“主存工做已完成”。
CPU和主存采用统一时钟,同步工做,由于主存速度较慢,因此CPU与之配合必须放慢速度,在这种存储器中,不须要主存工做完成信号。
位于CPU与内存之间的临时存储器,它的容量比内存小的多可是交换速率却比内存要快得多。缓存的出现主要是为了解决CPU运算速率与内存读写速率不匹配的矛盾,缓存每每使用的是RAM,L1 Cache(一级缓存)是CPU第一层高速缓存,通常L1缓存的容量一般在32—256KB,L1分为数据Cache,指令Cache,L2 Cache(二级缓存)是CPU的第二层高速缓存,份内部和外部两种芯片,内部的芯片二级缓存运行速率与主频相同,而外部的二级缓存则只有主频的一半,缓存只是内存中少部分数据的复制品。二级缓存是比一级缓存速率更慢,容量更大的内存,主要就是作一级缓存和内存之间数据临时交换的地方用。为了适应速率更快的处理器。
缓存基本上都是采用SRAM存储器,SRAM是英文Static RAM的缩写,它是一种具备静态存取功能的存储器,不须要刷新电路即能保存它内部存储的数据。不像DRAM内存那样须要刷新电路,每隔一段时间,固定要对DRAM刷新充电一次,不然内部的数据即会消失,所以SRAM具备较高的性能,可是SRAM也有它的缺点,即它的集成度较低,相同容量的DRAM内存能够设计为较小的体积,可是SRAM却须要很大的体积,这也是不能将缓存容量作得太大的重要缘由。它的特色概括以下:优势是节能、速率快、没必要配合内存刷新电路、可提升总体的工做效率,缺点是集成度低、相同的容量体积较大、并且价格较高,只能少许用于关键性系统以提升效率。
缓存的工做原理是当CPU要读取一个数据时,首先从CPU缓存中查找,找到就当即读取并送给CPU处理;没有找到,就从速率相对较慢的内存中读取并送给CPU处理,同时把这个数据所在的数据块调入缓存中,可使得之后对整块数据的读取都从缓存中进行,没必要再调用内存。正是这样的读取机制使CPU读取缓存的命中率很是高,通常把静态RAM缓存叫一级缓存,而把后来增长的动态RAM叫二级缓存。
预读取
当硬盘受到CPU指令控制开始读取数据时,硬盘上的控制芯片会控制磁头把正在读取的簇的下一个或者几个簇中的数据读到缓存中,当须要读取下一个或者几个簇中的数据的时候,硬盘则不须要再次读取数据,直接把缓存中的数据传输到内存中就能够了,因为缓存的速率远远高于磁头读写的速率,因此可以达到明显改善性能的目的。
写入
当硬盘接到写入数据的指令以后,并不会立刻将数据写入到盘片上,而是先暂时存储在缓存里,而后发送一个“数据已写入”的信号给系统,这时系统就会认为数据已经写入,并继续执行下面的工做,而硬盘则在空闲(不进行读取或写入的时候)时再将缓存中的数据写入到盘片上,掉电时,磁头会借助惯性将缓存中的数据写入零磁道之外的暂存区域,等到下次启动时再将这些数据写入目的地。
从技术角度上说,高容量缓存的算法是直接影响到硬盘性能发挥的重要因素。更大容量缓存是将来硬盘发展的必然趋势
最近最少使用算法,最近一段时间内最少被访问过的行淘汰出局,所以须要为每行设置一个计数器,LRU算法是把命中行的计数器清零,其余各行计数器加1。当须要替换时淘汰行计数器计数值最大的数据行出局。这是一种高效、科学的算法
CPU在Cache中找到有用的数据被称为命中,当Cache中没有CPU所需的数据时(这时称为未命中),CPU才访问内存。从理论上讲,在一颗拥有2级Cache的CPU中,读取L1 Cache的命中率为80%。也就是说CPU从L1 Cache中找到的有用数据占数据总量的80%,剩下的20%从L2 Cache读取。因为不能准确预测将要执行的数据,读取L2的命中率也在80%左右(从L2读到有用的数据占总数据的16%)。那么还有的数据就不得不从内存调用,但这已是一个至关小的比例了。在一些高端领域的CPU(像Intel的Itanium)中,咱们常听到L3 Cache,它是为读取L2 Cache后未命中的数据设计的—种Cache,在拥有L3 Cache的CPU中,只有约5%的数据须要从内存中调用,这进一步提升了CPU的效率。
在BIOS设置中的StandardCMOSSetup(标准CMOS设定)有两项是用来打开或关闭缓存的:CPUInternalCache设为Enable时开启CPU内部的一级缓冲区,若设置为Disabl则为关闭,这时系统性能将大大下降;ExternalCache选项是控制主板上二级缓冲区,若是主板上有二级缓存则应设成Enable
感谢您的耐心阅读,若是您发现文章中有一些没表述清楚的,或者是不对的地方,请给我留言,你的鼓励是做者写做最大的动力,
若是您认为本文质量不错,读后以为收获很大,不妨小额赞助我一下,让我更有动力继续写出高质量的文章。
支付宝
微信
做 者 : @mousycoder
原文出处 : http://mousycoder.com/2015/10/14/the-pragmatic-sa-17/
创做时间:2015-9-15
更新时间:2015-10-16