首页 > 编程知识 正文

寄存器,内存,存储器,缓存(寄存器和主存储器的区别)

时间:2023-05-04 15:25:10 阅读:85474 作者:532

1 .寄存器是中央处理器内的组成部分。 寄存器是存储容量有限的高速存储部件,可以用于暂时保存指令、数据、地址。 在中央处理装置的控制部中包含指令寄存器(IR )和程序计数器) PC )。 中央处理器的运算逻辑部件包括累加器(ACC )。 2 .内存包含的范围非常大,一般分为只读存储器(ROM )、随机访问存储器)、缓存存储器)。

3 .寄存器是CPU内部的元件,寄存器具有非常高的读写速度,所以寄存器之间的数据传输非常快。 4. Cache :即高速缓冲存储器,虽然CPU和主存储器之间的容量小,但是是高速的存储器。 由于CPU比主内存快得多,因此CPU直接从内存访问数据需要一定的时间。 Cache中存储了CPU的部分使用过或重用过的数据,CPU再次使用该数据时可以直接从Cache中调用,从而减少了CPU的等待时间,提高了系统效率。 Cache再分为一级Cache(L1 Cache )和二级Cache ) L2 Cache ),L1cache集成在CPU内部。 L2 Cache初期焊接在主板上,现在也集成在CPU内部,一般容量为256KB或512kb的L2 Cache。

总结:大致来说,数据通过内存-缓存-寄存器,缓存是为了弥补CPU和内存之间运算速度的差异而设置的部件。

首先,让我们来看看计算机存储系统“内存层次”的金字塔

接下来,让我们看看计算机的存储系统

Register

寄存器是CPU的内部组成部分,是CPU运算时获取指令和数据的地方,速度快,寄存器可以用于临时保存指令、数据和地址。 在CPU中,通常有指令寄存器IR这样通用寄存器; 程序计数器PC、sp等特殊功能寄存器。

Cache

缓存是为了暂时保存内存中的数据,如果寄存器想取出内存中的部分数据,可以直接从缓存中取出,从而提高速度。 高速缓存是内存的一部分副本。

CPU ---寄存器----高速缓存---内存

的动作很简单,只有两个阶段: (1)找到相关的位,)2)读取这些位。

内存的结构变得更复杂。

)1)找到数据的指针。 (由于指针可能存储在寄存器中,因此此步骤包含了寄存器的所有动作。 )

)2)将指针发送到存储器管理单元(MMU ),MMU将虚拟的存储器地址翻译为实际的物理地址。

)3)将物理地址发送到存储器控制器(memory controller ),存储器控制器找出该地址在哪个存储器插槽中。

4 )确定数据位于哪个存储器块(chunk ),从该块读取数据。

5 )数据被送回存储器控制器,送回CPU后再开始使用。

内存工作流比寄存器有更多的步骤。 每一步都有延迟,累积起来会比寄存器慢很多。

为了缓和寄存器和内存之间的巨大速度差,硬件设计者做了很多努力,如在CPU内部设置缓存,优化CPU的工作,以及尽可能一次性从内存中读取指令中使用的所有数据等。

RAM-memory

是存储器,是用于存储数据的单元。 其作用是暂时保存CPU内的运算数据,或与硬盘等外部存储器进行交换的数据。

HardDisk

硬盘

作者:时国怀链接: http://www.zhi Hu.com/question/20075426/answer/16354329来源:知乎著作权归作者所有,转载请联系作者获得授权。

一个汇编指令的大致执行过程是“不是绝对的,因平台而异”。 指(取指令(、解码)、将指令转换为微指令)、读取)、读取存储器中的操作数、计算)、写回),计算结果写回存储器),根据平台的不同,前两个阶段有首先,时钟绝对不等于每秒可以执行的指令数。 每个指令的执行成本不同。 例如,在x86平台上,汇编指令INC比ADD快。 具体各指令的时钟周期请参考intel的手册。 为什么要提高主频率? 上述执行中,各操作需要时钟周期,因此1个操作内存的加法运算需要5个时钟周期。 换言之,500Mhz主频的CPU最多执行100MHz的指令。 请仔细观察。 上述步骤不包括寄存器操作。 对CPU来说

说读/写寄存器是不需要时间的,或者说如果只是操作寄存器(比如类似mov BX,AX之类的操作),那么一秒钟执行的指令个数理论上说就等于主频,因为寄存器是CPU的一部分。然后寄存器往下就是各级的cache,有L1 cache,L2,甚至有L3的,以及TLB这些(TLB也可以认为是cache),之后就是内存,前面说寄存器快,现在说为什么这些慢:对于各级的cache,访问速度是不同的,理论上说L1cache(一级缓存)有着跟CPU寄存器相同的速度,但L1cache有一个问题,当需要同步cache和内存之间的内容时,需要锁住cache的某一块(术语是cache line),然后再进行cache或者内存内容的更新,这段期间这个cache块是不能被访问的,所以L1cache的速度就没寄存器快,因为它会频繁的有一段时间不可用。L1 cache下面是L2 cache,甚至L3 cache,这些都有跟L1 cache一样的问题,要加锁,同步,并且L2比L1慢,L3比L2慢,这样速度也就更低了。最后说说内存,内存的主频现在主流是1333左右吧?或者1600,单位是MHz,这比CPU的速度要低的多,所以内存的速度起点就更低,然后内存跟CPU之间通信也不是想要什么就要什么的。内存不仅仅要跟CPU通信,还要通过DMA控制器与其它硬件通信,CPU要发起一次内存请求,先要给一个信号说“我要访问数据了,你忙不忙?”如果此时内存忙,则通信需要等待,不忙的时候,通信才能正常。并且,这个请求信号的时间代价,就是够执行几个汇编指令了,所以,这是内存慢的一个原因。另一个原因是:内存跟CPU之间通信的通道也是有限的,就是所谓的“总线带宽”,但,要记住这个带宽不仅仅是留给内存的,还包括显存之类的各种通信都要走这条路,并且由于路是共享的,所以任何请求发起之间都要先抢占,抢占带宽需要时间,带宽不够等待的话也需要时间。以上两条加起来导致了CPU访问内存更慢,比cache还慢。举个更容易懂的例子:CPU要取寄存器AX的值,只需要一步:把AX给我拿来,AX就拿来了。CPU要取L1 cache的某个值,需要1-3步(或者更多):把某某cache行锁住,把某个数据拿来,解锁,如果没锁住就慢了。CPU要取L2 cache的某个值,先要到L1 cache里取,L1说,我没有,在L2里,L2开始加锁,加锁以后,把L2里的数据复制到L1,再执行读L1的过程,上面的3步,再解锁。CPU取L3 cache的也是一样,只不过先由L3复制到L2,从L2复制到L1,从L1到CPU。CPU取内存则最复杂:通知内存控制器占用总线带宽,通知内存加锁,发起内存读请求,等待回应,回应数据保存到L3(如果没有就到L2),再从L3/2到L1,再从L1到CPU,之后解除总线锁定。

磁盘缓存和内存缓存的区别

内存缓存

高速缓存(英语:cache,英语发音:/kæʃ/ kash [1][2][3],简称缓存),其原始意义是指访问速度比一般随机存取存储器(RAM)快的一种RAM,通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术。

原理 Cache一词来源于1967年的一篇电子工程期刊论文。其作者将法语词“cache”赋予“safekeeping storage”的涵义,用于电脑工程领域。

当CPU处理数据时,它会先到Cache中去寻找,如果数据因之前的操作已经读取而被暂存其中,就不需要再从随机存取存储器(Main memory)中读取数据——由于CPU的运行速度一般比主内存的读取速度快,主存储器周期(访问主存储器所需要的时间)为数个时钟周期。因此若要访问主内存的话,就必须等待数个CPU周期从而造成浪费。

提供“缓存”的目的是为了让数据访问的速度适应CPU的处理速度,其基于的原理是内存中“程序执行与数据访问的局域性行为”,即一定程序执行时间和空间内,被访问的代码集中于一部分。为了充分发挥缓存的作用,不仅依靠“暂存刚刚访问过的数据”,还要使用硬件实现的指令预测与数据预取技术——尽可能把将要使用的数据预先从内存中取到缓存里。

CPU的缓存曾经是用在超级计算机上的一种高级技术,不过现今电脑上使用的的AMD或Intel微处理器都在芯片内部集成了大小不等的数据缓存和指令缓存,通称为L1缓存(L1 Cache即Level 1 On-die Cache,第一级片上高速缓冲存储器);而比L1更大容量的L2缓存曾经被放在CPU外部(主板或者CPU接口卡上),但是现在已经成为CPU内部的标准组件;更昂贵的CPU会配备比L2缓存还要大的L3缓存(level 3 On-die Cache第三级高速缓冲存储器)。

概念的扩充 如今缓存的概念已被扩充,不仅在CPU和主内存之间有Cache,而且在内存和硬盘之间也有Cache(磁盘缓存),乃至在硬盘与网络之间也有某种意义上的Cache──称为Internet临时文件夹或网络内容缓存等。凡是位于速度相差较大的两种硬件之间,用于协调两者数据传输速度差异的结构,均可称之为Cache。

地址镜像与变换 主条目:CPU缓存#组相联 由于主存容量远大于CPU缓存的容量,因此两者之间就必须按一定的规则对应起来。地址镜像就是指按某种规则把主存块装入缓存中。地址变换是指当按某种镜像方式把主存块装入缓存后,每次访问CPU缓存时,如何把主存的物理地址(Physical address)或虚拟地址(Virtual address)变换成CPU缓存的地址,从而访问其中的数据。

缓存置换策略 主条目:CPU缓存#置换策略、分页和缓存文件置换机制 主存容量远大于CPU缓存,磁盘容量远大于主存,因此无论是哪一层次的缓存都面临一个同样的问题:当容量有限的缓存的空闲空间全部用完后,又有新的内容需要添加进缓存时,如何挑选并舍弃原有的部分内容,从而腾出空间放入这些新的内容。解决这个问题的算法有几种,如最久未使用算法(LRU)、先进先出算法(FIFO)、最近最少使用算法(LFU)、非最近使用算法(NMRU)等,这些算法在不同层次的缓存上执行时拥有不同的效率和代价,需根据具体场合选择最合适的一种。

磁盘缓存

磁盘缓存

16MB缓冲区的硬盘 磁盘缓存(Disk Buffer)或磁盘快取(Disk Cache)实际上是将下载到的数据先保存于系统为软件分配的内存空间中(这个内存空间被称之为“内存池”),当保存到内存池中的数据达到一个程度时,便将数据保存到硬盘中。这样可以减少实际的磁盘操作,有效的保护磁盘免于重复的读写操作而导致的损坏。

磁盘缓存是为了减少CPU透过I/O读取磁盘机的次数,提升磁盘I/O的效率,用一块内存来储存存取较频繁的磁盘内容;因为内存的存取是电子动作,而磁盘的存取是I/O动作,感觉上磁盘I/O变得较为快速。

相同的技巧可用在写入动作,我们先将欲写入的内容放入内存中,等到系统有其它空闲的时间,再将这块内存的资料写入磁盘中。

大小 现在的磁盘通常有32MB或64MB缓存。旧的硬盘则有8MB或16MB。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。