• 精选
  • 会员

太慢了,使用缓存策略和并行处理

2019年5月4日  来源:小智雅汇 作者: 提供人:laogan45......

3、内存太慢了,使用缓存策略

提到内存, 这真是我的好哥们, 没有他,我几乎什么事儿都干不成, 更重要的是他比硬盘快的多, 读取一次数据, 只需要 100 纳秒左右。 这样我们俩说起话来就轻松多了。

每次他都说: "阿甘, 幸亏有你给我聊天, 要不然我肯定被活活的闷死不可, 那个硬盘说话实在太慢了"

"它为啥那么慢?" 我每次都问

"硬盘是个机械玩意, 一个磁头在一碟高速旋转的磁片上挪来挪去,光定位就慢死了!"

"那主人为什么要用硬盘?"

"人家虽然慢, 但是不怕停电, 哪像你和我,一停电全部都失去记忆了。"

确实是, 人不能把好事都占全了啊。

我的指令中有些完全用我的寄存器就能完成, 但是有很多都需要读写内存的数据, 再加上所有的指令都在内存中存着, 虽然它只比我慢个100倍, 但指令多了我还是有点受不了。

我给内存说:"哥们, 你能不能再快点!"

内存说: 拜托, 这已经是我的极限了, 阿甘, 你自己再想想办法吧 ! 我给你说啊, 我留意了你最近访问的指令和数据, 我发现了个规律。“

"啥规律?"

"比如说吧, 你访问了我一个内存位置以后过不多久还会多次访问, 还有,一个内存位置被访问了, 附近的位置很快也会访问到。( 这其实叫程序的局部性原理)"

我还以为是啥规律, 其实我早就注意到了。

"这有啥用啊?”

"既然你经常访问同一块区域的东西, 你想想如果把这些东西缓存在你那里会怎么样.... "

我一想有道理啊! 加个缓存试试!

从此以后,我每次读写指令和数据, 都问缓存要, 缓存没有才给内存打电话。

果然, 由于局部性原理的存在, 我发现的确是快了不少啊。

当然也有缺点, 那就是Linux老大在做程序切换的时候, 缓存就会失效,因为两个程序之间没什么联系,局部性原理不起作用, 所以需要重建缓存。

4、单条指令按部就班太慢,用流水线技术实现并行处理

缓存让我的工作更有效率, 得到了Linux老大的表扬:"阿甘, 我看你很聪明嘛, 都会用缓存了!"

"我哪有那么聪明,都是内存的点子。老大,不过我学会了一个重要的东西 :当你改变不了别人的话,抱怨也没用, 还是先改变一下自己吧!"

"挺有哲理的吗, 希望你明天重启后还能想起来。" Linux老大笑话我。

"我最近又发现了一个问题, 正苦恼着呢, 你看我有四只手, 第一只手负责打电话问内存要指令, 第二只手翻译指令, 第三只手真正执行, 第四只手有时候还得把结果写回内存。 问题是, 我发现经常只有一只手在忙活, 其他都在闲着, 你看第一只手取指令, 其他手只能等着。 第二只手翻译指令的时候,其他三只也得等“

"看来以后我们不能叫你阿甘了, 你已经开始思考了!" Linux老大笑了。

“这问题好解决, 给你举个例子,你听说过洗车没有? 和你差不多, 也是先喷水, 再打洗洁剂, 再擦洗, 最后烘干,每个工序专人负责,但人家的工作方式和你不一样,人家是流水线作业, 你想想, 一辆车在烘干的时候, 后边是不是还有三辆车,分别在喷水, 打清洁剂和擦洗 , 每个步骤第个工序的人都不会空闲。 ”(流水线就是多个工位上有多个产品同时在流动)

"这么简单的道理我怎么都没有想到呢? 我也可以搞个流水线啊, 这样每只手都利用起来了。"

别人都说我们高科技, 但其实原理都蕴含在生活之中啊。

有了缓存和流水线的帮助, 让我的工作大大的加快了,大家都对我刮目相看。 他们想给我起个新名字:超人, 不过我还是更喜欢他们叫我“阿甘”,多亲切。

我一丝不苟,兢兢业业的运行指令, 时不时和伙伴们聊天, 很快一天就过去了, 又到了晚上,我知道关机的时刻到了, 赶紧挨个给他们道别。

很快那些让我兴奋的电流消失了,风扇的嗡嗡声也没有了, 我再也无法打出电话,整个世界沉寂了。

明天将会是新的一天。

计算机系统

如涉及版权,请著作权人与本网站联系,删除或支付费用事宜。

0000