为什么寄存器比内存快_原因是这个

缓冲/存储技术

12人已加入

描述

  一、寄存器简介

  寄存器,是集成电路中非常重要的一种存储单元,通常由触发器组成。在集成电路设计中,寄存器可分为电路内部使用的寄存器和充当内外部接口的寄存器这两类。内部寄存器不能被外部电路或软件访问,只是为内部电路的实现存储功能或满足电路的时序要求。而接口寄存器可以同时被内部电路和外部电路或软件访问,CPU中的寄存器就是其中一种,作为软硬件的接口,为广泛的通用编程用户所熟知。

  寄存器特点:

  ①寄存器位于CPU内部,数量很少,仅十四个

  ②寄存器所能存储的数据不一定是8bit,有一些寄存器可以存储16bit数据,对于386/486处理器中的一些寄存器则能存储32bit数据

  ③每个内部寄存器都有一个名字,而没有类似存储器的地址编号。

内存

  寄存器分类:

  数据寄存器-用来储存整数数字(参考以下的浮点寄存器)。在某些简单/旧的CPU,特别的数据寄存器是累加器,作为数学计算之用。

  地址寄存器-持有存储器地址,以及用来访问存储器。在某些简单/旧的CPU里,特别的地址寄存器是索引寄存器(可能出现一个或多个)。

  通用目的寄存器(GPRs)-可以保存数据或地址两者,也就是说他们是结合数据/地址寄存器的功用。

  浮点寄存器(FPRs)-用来储存浮点数字。

  常数寄存器-用来持有只读的数值(例如0、1、圆周率等等)。

  向量寄存器-用来储存由向量处理器运行SIMD(SingleInstruction,MultipleData)指令所得到的数据。

  特殊目的寄存器-储存CPU内部的数据,像是程序计数器(或称为指令指针),堆栈寄存器,以及状态寄存器(或称微处理器状态字组)。

  指令寄存器(instructionregister)-储存现在正在被运行的指令

  索引寄存器(indexregister)-是在程序运行实用来更改运算对象地址之用。

  在某些架构下,模式指示寄存器(也称为“机器指示寄存器”)储存和设置跟处理器自己有关的数据。由于他们的意图目的是附加到特定处理器的设计,因此他们并不被预期会成微处理器世代之间保留的标准。

  有关从随机存取存储器提取信息的寄存器与CPU(位于不同芯片的储存寄存器集合)

  存储器缓冲寄存器(Memorybufferregister)

  存储器数据寄存器(Memorydataregister)

  存储器地址寄存器(Memoryaddressregister)

  存储器型态范围寄存器(MemoryTypeRangeRegisters)

内存

  寄存器工作原理:

  寄存器的功能十分重要,CPU对存储器中的数据进行处理时,往往先把数据取到内部寄存器中,而后再作处理。外部寄存器是计算机中其它一些部件上用于暂存数据的寄存器,它与CPU之间通过“端口”交换数据,外部寄存器具有寄存器和内存储器双重特点。有些时候我们常把外部寄存器就称为“端口”,这种说法不太严格,但经常这样说。

  外部寄存器虽然也用于存放数据,但是它保存的数据具有特殊的用途。某些寄存器中各个位的0、1状态反映了外部设备的工作状态或方式;还有一些寄存器中的各个位可对外部设备进行控制;也有一些端口作为CPU同外部设备交换数据的通路。所以说,端口是CPU和外设间的联系桥梁。CPU对端口的访问也是依据端口的“编号”(地址),这一点又和访问存储器一样。不过考虑到机器所联接的外设数量并不多,所以在设计机器的时候仅安排了1024个端口地址,端口地址范围为0--3FFH。

  二、内存简介

  内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。内存(Memory)也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。内存是由内存芯片、电路板、金手指等部分组成的。

  内存容量:

  内存容量同硬盘、软盘等存储器容量单位都是相同的,它们的基本单位都是字节(B),并且:

  1024B=1KB=1024字节=2^10字节(^代表次方)

  1024KB=1MB=1048576字节=2^20字节1024MB=1GB=1073741824字节=2^30字节

  1024GB=1TB=1099511627776字节=2^40字节

  1024TB=1PB=1125899906842624字节=2^50字节

  1024PB=1EB=1152921504606846976字节=2^60字节

  1024EB=1ZB=1180591620717411303424字节=2^70字节

  1024ZB=1YB=1208925819614629174706176字节=2^80字节

  内存大小:

  内存的种类和运行频率会对性能有一定影响,不过相比之下,容量的影响更加大。在其他配置相同的条件下内存越大机器性能也就越高。内存的价格小幅走低,2011年前后,电脑内存的配置越来越大,一般都在1G以上,更有2G、4G、6G内存的电脑。

  内存作为电脑中重要的配件之一,内存容量的大小确实能够直接关系到整个系统的性能。因此,内存容量已经越来越受到消费者的关注。尤其在目前WIN7操作系统已经开始取代XP之时,对于最新的WIN7操作系统,多数消费者都认为大容量能让其内存评分得到提升。

  内存的工作原理。从功能上理解,我们可以将内存看作是内存控制器与CPU之间的桥梁,内存也就相当于“仓库”。显然,内存的容量决定“仓库”的大小,而内存的速度决定“桥梁”的宽窄,两者缺一不可,这也就是我们常常说道的“内存容量”与“内存速度”。

  内存带宽的计算方法并不复杂,大家可以遵循如下的计算公式:带宽=总线宽度×总线频率×一个时钟周期内交换的数据包个数。很明显,在这些乘数因子中,每个都会对最终的内存带宽产生极大的影响。在PCMarkVantage测试中,可以看到2GB和4GBDDR3-1600内存性能比较接近,其中2GB内存仅在启动一些办公软件时候比较落后,毕竟少了一半容量所以运行起来比较吃力。而在3DmarkVantage游戏性能测试中,我们可以看出在Win7系统下,2GB和4GB内存的性能区别不是很大,成绩非常接近。同时,在WIN7环境下,2GB内存与4GB内存差别很小,有些情况下甚至没有差别,这时如果想提高内存性能,光想着升级容量意义并不是很大。

  内存选购方法:

  做工要精良

  对于选择内存来说,最重要的是稳定性和性能,而内存的做工水平直接会影响到性能、稳定以及超频。

  内存颗粒的好坏直接影响到内存的性能,可以说也是内存最重要的核心元件。所以大家在购买时,尽量选择大厂生产出来的内存颗粒,一般常见的内存颗粒厂商有三星、现代、镁光、南亚、茂矽等,它们都是经过完整的生产工序,因此在品质上都更有保障。而采用这些顶级大厂内存颗粒的内存条品质性能,必然会比其他杂牌内存颗粒的产品要高出许多。

  内存PCB电路板的作用是连接内存芯片引脚与主板信号线,因此其做工好坏直接关系着系统稳定性。目前主流内存PCB电路板层数一般是6层,这类电路板具有良好的电气性能,可以有效屏蔽信号干扰。而更优秀的高规格内存往往配备了8层PCB电路板,以起到更好的效能。

  SPD隐藏信息

  SPD信息可以说非常重要,它能够直观反映出内存的性能及体制。它里面存放着内存可以稳定工作的指标信息以及产品的生产,厂家等信息。不过,由于每个厂商都能对SPD进行随意修改,因此很多杂牌内存厂商会将SPD参数进行修改或者直接COPY名牌产品的SPD,但是一旦上机用软件检测就会原形毕露。

  因此,大家在购买内存以后,回去用常用的Everest、CPU-Z等软件一查即可明白。不过需要注意的是,对于大品牌内存来说SPD参数是非常重要的,但是对于杂牌内存来说,SPD的信息并不值得完全相信。

  假冒返修产品

  目前有一些内存往往使用了不同品牌、型号的内存颗粒,大家一眼就可以看出区别。同时有些无孔不入的JS也会采用打磨内存颗粒的作假手段,然后再加印上新的编号参数。不过仔细观察,就会发现打磨过后的芯片比较暗淡无光,有起毛的感觉,而且加印上的字迹模糊不清晰。这些一般都是假冒的内存产品,需要注意。

  此外,大家还要观察PCB电路板是否整洁,有无毛刺等等,金手指是否很明显有经过插拔所留下的痕迹,如果有,则很有可能是返修内存产品(当然也不排除有厂家出厂前经过测试,不过比较少数)。需要提醒大家的是,返修和假冒内存无论多么便宜都不值得购买,因为其安全隐患十分严重。

  三、寄存器比内存快的原因分析

  原因一:距离不同

  距离不是主要因素,但是最好懂,所以放在最前面说。内存离CPU比较远,所以要耗费更长的时间读取。

  以3GHz的CPU为例,电流每秒钟可以振荡30亿次,每次耗时大约为0.33纳秒。光在1纳秒的时间内,可以前进30厘米。也就是说,在CPU的一个时钟周期内,光可以前进10厘米。因此,如果内存距离CPU超过5厘米,就不可能在一个时钟周期内完成数据的读取,这还没有考虑硬件的限制和电流实际上达不到光速。相比之下,寄存器在CPU内部,当然读起来会快一点。

  距离对于桌面电脑影响很大,对于手机影响就要小得多。手机CPU的时钟频率比较慢(iPhone5s为1.3GHz),而且手机的内存紧挨着CPU。

  原因二:硬件设计不同

  苹果公司新推出的iPhone5s,CPU是A7,寄存器有6000多位(31个64位寄存器,加上32个128位寄存器)。而iPhone5s的内存是1GB,约为80亿位(bit)。这意味着,高性能、高成本、高耗电的设计可以用在寄存器上,反正只有6000多位,而不能用在内存上。因为每个位的成本和能耗只要增加一点点,就会被放大80亿倍。

  事实上确实如此,内存的设计相对简单,每个位就是一个电容和一个晶体管,而寄存器的设计则完全不同,多出好几个电子元件。并且通电以后,寄存器的晶体管一直有电,而内存的晶体管只有用到的才有电,没用到的就没电,这样有利于省电。这些设计上的因素,决定了寄存器比内存读取速度更快。

  原因三:工作方式不同

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

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

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

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

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

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

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

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

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

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分