而高速缓存分为一级缓存(即L1 Cache)和二级缓存(即L2Cache)。CPU在运行时首先从一级缓存读取数据,然后从二级缓存读取数据,然后从内存和虚拟内存读取数据,因此高速缓存的容量和速度直接影响到CPU的工作性能。 一级缓存都内置在CPU内部并与CPU同速运行,可以有效的提高CPU的运行效率。一级缓存越大,CPU的运行效率越高,但受到CPU内部结构的限制,一级缓存的容量都很小。 二级缓存对CPU运行效率的影响也很大,现在的二级缓存一般都集成在中,但有分为芯片内部和外部两种,集成在芯片内部的二级缓存与CPU同频率二级缓存(即全速二级缓存),而集成在芯片外部的二级缓存的运行频率 是CPU的运行频率的一半(即半速二级缓存),因此运行效率较低。 但是一级缓存和二级缓存的大,它究竟有多少好处呢?你得告诉我们经销商,实际上你得用最普通的话跟他讲。所以我们给他们打个比方,说这个就好比你开汽车的时候,后备箱是整个的一级缓存,假如说扶手里面有一个小箱子,那是你的二级缓存。二级缓存大好在哪里呢?就是你随时开车的时候,随时在里面都可以取东西了。假如你二级缓存小的话,你还得把车停下来,到后备箱里取东西。
首先我们来简单了解一下一级缓存。目前所有主流处理器大都具有一级缓存和二级缓存,少数高端处理器还集成了三级缓存。其中,一级缓存可分为一级指令缓存和一级数据缓存。一级指令缓存用于暂时存储并向CPU递送各类运算指令;一级数据缓存用于暂时存储并向CPU递送运算所需数据,这就是一级缓存的作用(如果大家对上述文字理解困难的话,可参照下图所示)。
那么,二级缓存的作用又是什么呢?简单地说,二级缓存就是一级缓存的缓冲器:一级缓存制造成本很高因此它的容量有限,二级缓存的作用就是存储那些CPU处理时需要用到、一级缓存又无法存储的数据。同样道理,三级缓存和内存可以看作是二级缓存的缓冲器,它们的容量递增,但单位制造成本却递减。需要注意的是,无论是二级缓存、三级缓存还是内存都不能存储处理器 *** 作的原始指令,这些指令只能存储在CPU的一级指令缓存中,而余下的二级缓存、三级缓存和内存仅用于存储CPU所需数据。
根据工作原理的不同,目前主流处理器所采用的一级数据缓存又可以分为实数据读写缓存和数据代码指令追踪缓存2种,它们分别被AMD和Intel所采用。不同的一级数据缓存设计对于二级缓存容量的需求也各不相同,下面让我们简单了解一下这两种一级数据缓存设计的不同之处。
一、AMD一级数据缓存设计
AMD采用的一级缓存设计属于传统的“实数据读写缓存”设计。基于该架构的一级数据缓存主要用于存储CPU最先读取的数据;而更多的读取数据则分别存储在二级缓存和系统内存当中。做个简单的假设,假如处理器需要读取“AMD ATHLON 64 3000+ IS GOOD”这一串数据(不记空格),那么首先要被读取的“AMDATHL”将被存储在一级数据缓存中,而余下的“ON643000+ISGOOD”则被分别存储在二级缓存和系统内存当中(如下图所示)。
需要注意的是,以上假设只是对AMD处理器一级数据缓存的一个抽象描述,一级数据缓存和二级缓存所能存储的数据长度完全由缓存容量的大小决定,而绝非以上假设中的几个字节。“实数据读写缓存”的优点是数据读取直接快速,但这也需要一级数据缓存具有一定的容量,增加了处理器的制造难度(一级数据缓存的单位制造成本较二级缓存高)。
二、Intel一级数据缓存设计
自P4时代开始,Intel开始采用全新的“数据代码指令追踪缓存”设计。基于这种架构的一级数据缓存不再存储实际的数据,而是存储这些数据在二级缓存中的指令代码(即数据在二级缓存中存储的起始地址)。假设处理器需要读取“INTEL P4 IS GOOD”这一串数据(不记空格),那么所有数据将被存储在二级缓存中,而一级数据代码指令追踪缓存需要存储的仅仅是上述数据的起始地址(如下图所示)。
由于一级数据缓存不再存储实际数据,因此“数据代码指令追踪缓存”设计能够极大地降CPU对一级数据缓存容量的要求,降低处理器的生产难度。但这种设计的弊端在于数据读取效率较“实数据读写缓存设计”低,而且对二级缓存容量的依赖性非常大。
在了解了一级缓存、二级缓存的大致作用及其分类以后,下面我们来回答以下硬件一菜鸟网友提出的问题。
从理论上讲,二级缓存越大处理器的性能越好,但这并不是说二级缓存容量加倍就能够处理器带来成倍的性能增长。目前CPU处理的绝大部分数据的大小都在0-256KB之间,小部分数据的大小在256KB-512KB之间,只有极少数数据的大小超过512KB。所以只要处理器可用的一级、二级缓存容量达到256KB以上,那就能够应付正常的应用;512KB容量的二级缓存已经足够满足绝大多数应用的需求。
这其中,对于采用“实数据读写缓存”设计的AMD Athlon 64、Sempron处理器而言,由于它们已经具备了64KB一级指令缓存和64KB一级数据缓存,只要处理器的二级缓存容量大于等于128KB就能够存储足够的数据和指令,因此它们对二级缓存的依赖性并不大。这就是为什么主频同为1.8GHz的Socket 754 Sempron 3000+(128KB二级缓存)、Sempron 3100+(256KB二级缓存)以及Athlon 64 2800+(512KB二级缓存)在大多数评测中性能非常接近的主要原因。所以对于普通用户而言754 Sempron 2600+是值得考虑的。
反观Intel目前主推的P4、赛扬系列处理器,它们都采用了“数据代码指令追踪缓存”架构,其中Prescott内核的一级缓存中只包含了12KB一级指令缓存和16KB一级数据缓存,而Northwood内核更是只有12KB一级指令缓存和8KB一级数据缓存。所以P4、赛扬系列处理器对二级缓存的依赖性是非常大的,赛扬D 320(256KB二级缓存)与赛扬 2.4GHz(128KB二级缓存)性能上的巨大差距就很好地证明了这一点;而赛扬D和P4 E处理器之间的性能差距同样十分明显。
最后,如果您是狂热的游戏发烧友或者从事多媒体制作的专业用户,那么具有1MB二级缓存的P4处理器和具有512KB/1MB二级缓存的Athlon 64处理器才是您理想的选择。因为在高负荷的运算下,CPU的一级缓存和二级缓存近乎“爆满”,在这个时候大容量的二级缓存能够为处理器带来5%-10%左右的性能提升,这对于那些要求苛刻的用户来说是完全有必要的。
提一个跟乳制品相关的冷门诺贝尔奖研究。
迅哥儿曾经曰过:我好像是一头牛,吃进去的是草,挤出来的是奶和血。由此可见迅哥儿是很有乡下生活经验的。
但是,这里有一个问题:有草的时候牛可以吃草,冬天没草的时候怎么办?
当然,牛的适应能力是相当强的,丹麦有一个变态的研究表明仅凭报纸和尿素就能让奶牛继续好好的活下去,当然产奶是甭想了。
事实上我们在冬天可以饲喂秸秆这些农副产品,但此类粗饲料的能值和营养成分远低于牧草,这势必影响冬季奶牛的泌乳性能。
奶牛冬天吃的不好挤不出奶,以乳制品为食的人就要饿肚子。那该怎么办呢?
这个问题在困扰了欧洲奶农几个世纪后,终于得到了解决,并为农业科学研究带来了迄今为止唯一一个诺贝尔奖。
这个牛人就是芬兰科学家阿尔图里•伊尔马里•维尔塔宁(Artturi Ilmari Virtanen,1895-1973),他也是我博士生导师的导师的导师的导师。
维尔塔宁出身于一个奶农世家,对于冬季奶牛优质粗饲料短缺这一现实问题有着深刻的认识。
他的解决办法很巧妙,非常类似于我们东北冬季腌的酸菜。简而言之,就是在夏秋季收割新鲜牧草或者全株农作物,添加乳酸菌后压实密封。
由于内部缺乏氧气,乳酸菌开始厌氧发酵分解糖类,并分泌乳酸使得饲料呈弱酸性(pH 3.5-4.2),从而有效地抑制其他微生物生长。最后,乳酸菌也被自身产生的乳酸抑制,发酵过程停止,饲料进入稳定储藏。
基于此原理,后来他还开发出了配合使用的复合酸制剂(早期配方:盐酸 + 硫酸 --&gt改良配方:甲酸 + 甲酸铵),显著提高了发酵过程中对于有害杂菌的抑制效果。
通过这种方法制备的粗饲料中的营养成分损失并不大,而产生的乳酸却可提高粗饲料的适口性,促进奶牛采食。
这就是青贮饲料的制备方法,此法既可防止优质粗饲料腐烂而又不影响其使用和营养价值,解决了冬季优质家畜粗饲料短缺的问题,并已成功推广到全世界各地,所带来的经济效益不可估量。维尔塔宁本人也因此荣获 1945 年诺贝尔化学奖。
你看,发明给动物吃的酸菜也能得诺贝尔奖!有时,一个小小的改变就可以撬动整个地球。
维尔塔宁这个名字可能不是很容易记住,但当寒冬来临,你手捧一杯温热的牛奶,或者品尝美味的芝士蛋糕时,他的工作就在影响着你的生活。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)