精华内容
下载资源
问答
  • 堆栈与寄存器的区别

    千次阅读 2019-03-10 14:51:32
    堆栈是内存的数据结构,内存是CPU和硬盘之间通道。 而寄存器是CPU存储器,速度快。

    内存是CPU和硬盘之间的通道,数据结构为堆栈

    C++中的内存分为两个部分:

    栈:在函数内部声明的所有变量都将占用栈内存,由系统自动分配。

    堆:这是程序中未使用的内存,在程序运行时可用于动态分配内存,需要程序员自己申请。

    寄存器是CPU的存储器,速度快。

    展开全文
  • 寄存器与内存的区别

    2018-05-18 15:23:38
    寄存器与内存的区别寄存器寄存器是有触发器或锁存器组成,通常由触发器组成,寄存器拥有非常高的读写速度,所以在寄存器之间传递数据非常快 内存内存就是存储器,由半导体器件构成。 计算机的存储层次(memory...

    寄存器与内存的区别

    寄存器:寄存器是有触发器或锁存器组成,通常由触发器组成,寄存器拥有非常高的读写速度,所以在寄存器之间传递数据非常快 
    内存:内存就是存储器,由半导体器件构成。 
    计算机的存储层次(memory hierarchy)之中,寄存器(register)最快,内存其次,最慢的是硬盘。这里写图片描述 
    同样都是晶体管存储设备,为什么寄存器比内存快呢? 
    Mike Ash写了一篇很好的解释,非常通俗地回答了这个问题,有助于加深对硬件的理解。 
    原因一:距离不同 
    距离不是主要因素,但是最好懂。内存离CPU比较远,所以消费更长的时间储存。 
    以3Ghz的CPU为例子,电流每秒可以震荡30亿次,每次耗时大概为0.33纳秒,光在1纳秒里可以前进30cm,也就是说一个CPU周期内,光可以前进10cm。因此如果内存距离CPU超过5cm,就不可能在一个时钟周期内完成数据的读写。这还没考虑硬件的限制和电流实际上达不到光速。相比之下,寄存器在CPU内部,当然读起来会快一点。 
    原因二:硬件设计不同 
    苹果公司新推出的iphone5s,CPU是A7,寄存器有6000多位(31个64位寄存器,加上32个128位寄存器)。而iphone5s的内存是1GB,约为80亿位(bit)。这意味着高性能、高成本、高耗电的设计可以用在寄存器上,反正只有6000多位,而不能用在内存上,因为每个位的成本和耗能只要增加一点点,就会被放大80亿倍。 
    事实上确实如此,内存的设计相对简单,每个位就是一个电容和一个晶体管,而寄存器的设计则完全不同,多出好几个电子元件。并且通电后,寄存器的晶体管一直有电,而内存的晶体管只有在用到的才有电,没用到的就没电,这样利于省电。这些设计上的因素,决定了寄存器比内存读取速度更快。 
    原因三:工作方式不同 
    寄存器的工作方式只有2步:(1)找到相关的位(2)读取这些位 
    内存的工作方式就复杂多: 
    (1)找到数据的指针(指针可能存放在寄存器内,所以这一步就已经包括寄存器的全部工作了。) 
    (2)将指针送往内存管理单元(MMU),由MMU讲虚拟的内存地址翻译成实际的物理地址。 
    (3)将物理地址送往内存控制器(memory controller),由于内存控制器找出该地址在哪一根内存插槽(bank)上. 
    (4)确定数据在哪一个内存块(chunk)上,从该块读取数据。 
    (5)内存先送回内存控制器,再送回CPU,然后开始使用。 
    内存的工作流程比寄存器多出许多步,每一步都会产生延迟,累积起来就使得内存比寄存器慢得多。 
    为了缓解寄存器和内存之间速度的巨大差异,硬件设计师做出了许多努力,包括CPU内部设置缓存,优化CPU工作方式,尽量一次从内存读取指令所要用到的全部数据等等。 
    转载自http://www.ruanyifeng.com/blog/2013/10/register.html

    展开全文
  • 内存寄存器和cache的区别与联系

    千次阅读 2018-08-15 21:11:00
    1. 寄存器是中央处理器内组成部份。寄存器是有限存贮容量高速存贮部件,...2. 内存包含范围非常广,一般分为只读存储器(ROM)、随机存储器(RAM)和高速缓存存储器(cache)。 3. 寄存器是CPU内部元件,寄...

    1. 寄存器是中央处理器内的组成部份。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。
    2. 内存包含的范围非常广,一般分为只读存储器(ROM)、随机存储器(RAM)和高速缓存存储器(cache)。

    3. 寄存器是CPU内部的元件,寄存器拥有非常高的读写速度,所以在寄存器之间的数据传送非常快。
    4. Cache :即高速缓冲存储器是位于CPU与主内存间的一种容量较小但速度很高的存储器。由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率。Cache又分为一级Cache(L1 Cache)和二级Cache(L2 Cache),L1 Cache集成在CPU内部,L2 Cache早期一般是焊在主板上,现在也都集成在CPU内部,常见的容量有256KB或512KB L2 Cache。

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

    http://blog.csdn.net/csuyishuan/article/details/52073421

     

     

    首先看一下计算机的存储体系(Memory hierarchy)金字塔

    其次我们看看一个计算机的存储体系

     

    Register

     

    寄存器是CPU的内部组成单元,是CPU运算时取指令和数据的地方,速度很快,寄存器可以用来暂存指令、数据和地址。在CPU中,通常有通用寄存器,如指令寄存器IR;特殊功能寄存器,如程序计数器PC、sp等。

    Cache

    缓存即就是用于暂时存放内存中的数据,若果寄存器要取内存中的一部分数据时,可直接从缓存中取到,这样可以调高速度。高速缓存是内存的部分拷贝。

    CPU  <--- > 寄存器<--- > 缓存<--- >内存

    寄存器的工作方式很简单,只有两步:(1)找到相关的位,(2)读取这些位。

    内存的工作方式就要复杂得多:

    (1)找到数据的指针。(指针可能存放在寄存器内,所以这一步就已经包括寄存器的全部工作了。)

    (2)将指针送往内存管理单元(MMU),由MMU将虚拟的内存地址翻译成实际的物理地址。

    (3)将物理地址送往内存控制器(memory controller),由内存控制器找出该地址在哪一根内存插槽(bank)上。

    (4)确定数据在哪一个内存块(chunk)上,从该块读取数据。

    (5)数据先送回内存控制器,再送回CPU,然后开始使用。

    内存的工作流程比寄存器多出许多步。每一步都会产生延迟,累积起来就使得内存比寄存器慢得多。

    为了缓解寄存器与内存之间的巨大速度差异,硬件设计师做出了许多努力,包括在CPU内部设置缓存、优化CPU工作方式,尽量一次性从内存读取指令所要用到的全部数据等等。


     

    RAM-memory

    即内存,是用于存放数据的单元。其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。

    HardDisk

    硬盘

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

    一条汇编指令大概执行过程是(不是绝对的,不同平台有差异):

    取指(取指令)、译码(把指令转换成微指令)、取数(读内存里的操作数)、计算(各种计算的过程,ALU负责)、写回(将计算结果写回内存),有些平台里,前两步会合并成一步,某些指令也不会有取数或者回写的过程。

    再提一下CPU主频的概念:首先,主频绝对不等于一秒钟可以执行的指令个数,每个指令的执行成本是不同的,比如x86平台里汇编指令INC就比ADD要快,具体每个指令的时钟周期可以参考intel的手册。

    为什么要提主频?因为上面的执行过程中,每个操作都需要占用一个时钟周期,对于一个操作内存的加法,就需要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。

    展开全文
  • 寄存器的区别? 8086CPU有20根地址线,最大可寻址内存空间为1MB。而8086的寄存器只有16位,指令指针(IP)和变址寄存器(SI、DI)也是16位的。用16位的地址寻址1MB空间是不可能的。所以就要把内存分段,...

    1.内存为什么要分段? 分成多少种段? 段与段寄存器的区别?


    8086CPU有20根地址线,最大可寻址内存空间为1MB。而8086的寄存器只有16位,指令指针(IP)和变址寄存器(SI、DI)也是16位的。用16位的地址寻址1MB空间是不可能的。所以就要把内存分段,也就是把1MB空间分为若干个段,每段不超过64KB,在8086中设置4个16位的段寄存器,用于管理4种段:CS是代码段,DS是数据段,SS是堆栈段,ES是附加段。

    把内存分段后,每一个段就有一个段基址,段寄存器保存的就是这个段基址的高16位,这个16位的地址左移四位(后面加上4个0)就可构成20位的段基址。
    一个是早期实模式下,寄存器16位,地址线20位。为了用16位的寄存器寻址20位的地址,引入了段(segment)的概念,所有的段都在一个地址空间。

    第二个是保护模式下,段(segmentation)强调的是分割,用来把内存分成不同的地址空间,每个段一个空间,而后通过CPU的MMU转换成实际物理地址。由于程序运行在不同的段里,根本上保护了CPU保护模式下的各个不相关的代码,所谓进程或者作业。

    注意,x86 CPU的段是永远存在的,不论哪个模式,不能禁止,参看Intel开发手册。
    2.访问内存空间与寄存器有啥关系啊?为什么16不能寻到1M?还有内存是不是分成四种段啊?(CS/DS/SS/ES)?段寄存器就是其管理作用吗?
    寄存器是CPU内部的存储部件与内存空间没有关系,设置寄存器的原因是为了减少CPU与内存交换数据的次数,以提高计算机的工作速度。
    内存空间和地址线的关系为:存储容量=2^n(n是地址线的数量),所以16根地址线只能访问2^16=64K的存储空间。
    内存是分成四种段,这是考虑到程序执行时需要的四个部分。但是,内存不止四个段,只是同时最多只有四个段在工作,其他的在“睡眠”,需要时再“唤醒”。
    内存分段后,内存的地址(又称物理地址)就由两部分组成:段地址和段内偏移地址,段寄存器管理的是段地址。
    展开全文
  • rs rt rd寄存器的区别与分辨

    千次阅读 2020-04-05 15:06:10
    老师教方法,觉得很实用,mark一下 这三个寄存器,总是分不清楚哪个是哪个, 比如下面这三个...比如LD R1, 0(R2)这条指令中,第一个被用到的寄存器是R2, 因为要读取R2,加上立即数部分0,计算内存地址,所以...
  • 1、存储器功能: 存放指令和数据,并能由...寄存器的速度比主存储器的速度要快很多,由于寄存器的容量有限,所以将不需要操作的数据存放在主存储器中,主存储器中的数据必须放入寄存器材能够进行操作。 简单地说...
  • (寄存的意思是,暂时存放数据,不中每次从内存中取,它就是一个临时放数据的空间,火车站寄存处就是这个意思)而寄存器的数据又来源于内存。于是CPU<--->寄存器<----->内存这就是它们之间的信息交换。....
  • 寄存器与缓存的区别

    千次阅读 2015-10-26 15:27:44
    这里的缓存是指的CPU的缓存。 ...按与CPU远近来分,离得最近的是寄存器,然后缓存,最后内存。...所以,寄存器是最贴近CPU的,而且CPU只与寄存器中进行存取...而寄存器的数据又来源于内存。于是 CPU寄存器内存 这就是
  • 文章目录关系寄存器缓存(Cache)寄存器和缓存的区别一级缓存和二级缓存内存**只读存储器**ROM(Read Only Memory)**随机存储器**RAM(Random Access Memory)静态RAM(Static RAM/SRAM)动态RAM(Dynamic RAM/DRAM...
  • 寄存器与存储器物理区别

    千次阅读 2018-11-07 14:14:25
    从根本上讲,寄存器与存储器RAM元件不一样???? memory is equivalent to a lot of registers. 寄存器存在于CPU中,速度很快,但是所占面积大,数目有限; 存储器就是内存,速度稍慢,所占面积小,但数量很大...
  • 2、CPU中有寄存器,因此寄存器的速度最快!内存、外存统称为CPU的“外存”。 3、高速缓存是存放在CPU中的,它是介于CPU与内存之间的,以缓解它们之间速度不匹配的矛盾,使得内存访问CPU的时候较快。 4、缓存是指在...
  • CPU只与寄存器中进行存取; 寄存器是中央处理器组成部分,是一种直接整合到cpu中有限高速访问速度存储器 Cache :即高速缓冲存储器,是位于CPU与主内存一种容量较小但速度很高存储器。由于CPU...
  • 内存寄存器就是为了解决存储器读写速度慢而产生多级存储机制,从20世纪50年代开始,磁芯存储器曾一度成为主存主要存储介质, 但从20世纪70年代开始,逐步被半导体存储器所取代,目前计算机都是用半导体...
  • 内存寄存器就是为了解决存储器读写速度慢而产生多级存储机制,从20世纪50年代开始,磁芯存储器曾一度成为主存主要存储介质,但从20世纪70年代开始,逐步被半导体存储器所取代,目前计算机都是用半导体存储器...
  • ARM寄存器定义_总线访问外部地址寄存器定义====51的区别。 (volatile unsigned long *)0x53000000 强制类型转换为无符号的长整形的指针,即指定0x53000000存储单元存储的变量是无符号的长整形 而volatile 关键字...
  • 这篇日志讲得主要是寄存器和存储器(这里指的是RAM)的区别,之后才是重点,说说我对外设的片内RAM地址映射的理解。如果你学过模电并且基本是醒着上课的话那你可以潇洒得路过了,对于那些本科期间不甚逃课的人本人...
  • 这篇日志讲得主要是寄存器和存储器(这里指...寄存器与存储器的区别   现代的计算机主要包括三级存储,寄存器、内存储器和外存储器,存储数据的速率也依次递减。(外存储器不在本次讨论之中,姑且略过不讲)我们不妨

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 844
精华内容 337
关键字:

内存与寄存器的区别