您的位置:首页 > 理论基础

计算机系统结构--为什么用缓存?

2015-03-05 12:51 134 查看
关于计算机的体系结构,对于一个不是计算机专业的人来说,有点迷糊,我把经过总结之后的几点向各位大神简单的叙述下,如果有错误问题和认识,希望同行们及时指正。
说道计算机的体系结构,首先关注的就是CPU

1、CPU号称核心处理器,是计算机的大脑,负责调度系统运行,保证系统的稳定、快速性。
而在CPU上有两大极品的快速存储器:(寄存器和缓存器),寄存器的读取速度堪称NB,2纳秒就能完成数据的读取,寄存器的大小,根据系统来定,比如说32为系统,那么一个寄存器就有32个触点,存储空间为4K。CPU运行中,每次都需要读取数据。从内存中读取数据则需要耗时100纳秒左右,相比于2纳秒来说,基本又是太NB,如果说读取多个数据,就需要一次又一次的读取,那么耗费的时间来说,真的就太长了,用网络用语来说(35太难了)。那么CPU会怎么操作减少耗费的时间呢?设计操作系统的人站不住了,推出了缓存器的概念,在两者之间加入个缓存器,因为从缓存器中读取数据的时间为10纳秒,同时缓存器又可以很大。可以一次在混存器中多存储点,以后每次取数据,直接从缓存中取得,就不需要直接从内存中获取了,省去了好多好多的时间。如果不明白可以举个例子,老板让你去楼下买水喝,你去一次买一瓶,下次又买一瓶,如果老板天天让你去,你很愿意去么?多浪费时间,所以说如果老板让我去买,我就多买几瓶,放在我这里,每次老板要了,我就给他一瓶,减少了时间提高了效率。老板也会乐呵呵。一个字“爽”;

2、估计这个时候你就会问,如果说有很多东西我不常用,而又放到缓存器上,那么是不是缓存器的利用率比较低?
这个问题问的非常好,缓存器的利用率高低,也反应了CPU的效率。在C语言中,有一个关键字likely,是告诉系统这个常用,所以就可以将它加入到缓存中,如果说不常用的话就用关键字unlikely,就是告诉系统这个这个内容99%不会被利用到。

3、因为寄存器每次读取数据都固定的字节数,那么怎么想才能提高效率呢?
首先,你需要明白一点,从内存中读取数据,是从0开始读取,不可间断的读取,比如说第一次读取4个字节,读到了32(0-32),那么下一次只能读取到64(32-64),不可以从中间读取,要问这个原因,你就得明白自动对齐的问题了。所以说程序实际的时候最好把相应的挨着使用的变量,在设计的时候挨在一起,方便一次性读取出来,也就提高了效率。而不爱在一起的变量或者函数,就需要inline(内联函数)来调用了,用了inline这个函数关键字,就是告诉系统,在其他的地方调用时,就直接把函数相应的复制过去执行,而不需要从从栈中出栈读取,也提高了效率。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: