上帝为你关闭了一扇门,就一定会为你打开一扇窗

2个月前 (11-19 09:19)阅读2回复0
雕刻瞎
雕刻瞎
  • 管理员
  • 注册排名6
  • 经验值107870
  • 级别管理员
  • 主题21574
  • 回复0
楼主

媒介

天主为你封闭了一扇门,就必然会为你翻开一扇窗

那句话来描述我最适宜不外了。

我是CPU, 他们都叫我阿甘, 因为我和《阿甘正传》里的阿甘一样, 有点笨头笨脑的。

天主把我造造出来, 给我了一个很小的脑容量, 为数不多的存放器能临时的记一点工具, 但是天主给我翻开了一扇出格的窗户, 那就是像阿甘一样,跑的飞快。

到底有多快呢? 我那么比方一下吧, 我的工做都是以纳秒为单元的, 你们人世的一秒, 我可能已经做了1000,000,000 (10亿)次动做了。

比拟而言, 内存比我慢100倍, 硬盘比我慢1000多万倍, 你说我快不快?

启动

我住在一个机箱里,每天早上一阵电流把我叫醒, 还同化着嗡嗡的声音, 我晓得我忠实的护卫电电扇又起头工做了, 我出格怕热, 又运行的飞快, 若是没有电电扇给我降温, 我很快就会生病, 生病的后果很严峻, 那就是我的伙伴们像内存了,硬盘了。。全数都要歇工了, 没有我那个系统就会陷入的一片死寂。

我传闻有些CPU的福利很好,竟然待在恒温恒湿,明哲保身的托管机房里,让我好生羡慕。

我的脑容量很小, 所以醒来后只想起了我的创造者告诉我的几件工作 :

1. 你的工做就是运行指令

2. 你不克不及保留指令, 你的指令全在内存里

3. 你的第一条指令在内存的最顶端处0xFFFFFFF0

那还有什么可说的, 赶紧打德律风给内存要指令,德律风通过系统总线, 还得通过I/O桥德律风局需要转接一下, 再通过存储总线接通 内存。

"哥们, 把那个地址处的指令给我说一下吧"

"你是谁?" 内存竟然把我忘了, 当然,他断了电和我一样,失忆了。

"我是阿甘啊, 我们经常聊天来着, 你忘了?"

内存磨磨唧唧半天才把数据发了过来(比我慢100倍啊), 那是一条跳转指令, 我立即回忆起来了, 那是我的老伴侣BIOS 等着我去运行他那一堆指令呢。

我给BIOS打德律风: “老弟,今天干点啥?”

“阿甘,早上好 " BIOS从不失忆,把所有人都记得清清晰楚 “ 还不是老一套啊,无非做一下系统的自检, 看看内存,硬盘,显卡等那些老伴计们有没有问题, 有问题的话用小喇叭提醒一下仆人 ”

展开全文

那些过程我已经轻车熟路了, 很快搞定, 像往常一样,没有问题, 我还把一个叫做中断向量表的工具给弄好了, 我晓得一会而要用

那些工具都搞完了,BIOS公然告诉: "阿甘, int 0x19"

我赶紧去刚弄好的中断向量表中去查第19号, 顺藤摸瓜又找到对应0x19的一大堆指令。

施行吧, 那堆指令把将磁盘的第一扇区(磁盘最起头的512字节)运到内存的0X0000:0X7C00处,然后我就从此处接着施行。

我想起来了, 接下来有一大堆精巧的指令把迷含混糊的操做系统从硬盘中唤醒, 运输到内存中来。

(此处其实是复杂, 略去10万字。。。。)

你看那就是为啥他们叫我阿甘, 我干事飞快,但非得他人告诉去哪里施行才行, 要否则我就只会坐在那里无所适从。

运行

操做系同一旦进入内存,立即就是老迈, 所有人都得听他批示。

我也发现我的四周呈现了一个屋子:历程屋

屋里堆着一大堆工具, 什么历程描述信息包裹了, 历程掌握信息包裹了, 我都不太关切, 我只关切最最重要的两件工具:

1. 我工做必备的存放器, 就放在我面前的工做台上。

2. 法式计数器, 我用它记住我要施行的下一条指令地址。

"阿甘, 别来无恙啊" , 操做系统对我仍是挺不错的, 先给我打号召。

"Linux老迈, 今天有什么活啊", 我每次都表示的积极主动。

"来,把那个hello world 法式给运行了"

Hello world 法式还在硬盘上睡着呢, 得先把他也拆载到内存里, 要否则我怎么施行啊。

于是我就拿起德律风打给硬盘, 德律风通过系统总线来到IO桥德律风局, 再转接到IO总线,那才来到硬盘那里。

我在德律风里请他把数据给我运过来, 然后我就无所事事的坐在那里等。

Linux 老迈立即就怒了 : 阿甘, 告诉你几次了, 你小子怎么还在等硬盘给你发数据!

是的, 我忘了一件事,硬盘比我慢太多了, 我施行一条指令可能是1ns ,在用来读磁盘的16ms里, 我能潜在的施行1600多万条指令啊。

我感应深深的愧疚, 赶紧拿起德律风打给硬盘 : 哥们, 按我们之前筹议好的,用间接内存拜候(DMA)啊, 你间接把数据拆载到内存吧, 不消颠末我了, 拆载完成以后给我发个信号。

"那还差不多" Linux 老迈表情好了些

“阿甘,数据还没来, 别闲着, 那有一个菲波那切数列数列, 来算一下吧”

"肥波纳妾数列? 那名字好离奇,老迈, 其实你也晓得, 我脑子小,懒得去理解那是啥意思, 你把历程屋切换下,把法式计数器设置好,指向下一条指令, 我一条条指令施行就得了“ 我挺没逃求的。

"实是个阿甘啊! ”老迈慨叹到。

我所处的历程屋立即发作了改变(当然,那也是我辅助Linux老迈干的), 各类包裹的信息都变了, 尤其是存放器和法式计数器。

于是我就起头计算那个什么纳妾数列 ,但是那个数列似乎无限无尽, 哪个无脑子的法式员写了个无限轮回吧。

正在那时, 我便收到了一个德律风, 说是Helloworld的数据已经拆载到内存了, 让我去向理。

我放下手中的活, 保留好现场, 就去向理阿谁Helloworld, 公然数据已经都好了, 那就切换过去运行吧。

其实老迈其实不晓得, 任何人,只要你运行了相当多的数量的指令以后, 你都能悟到那些法式的奥秘。

我CPU阿甘固然傻傻的, 但也架不住施行那数以千万亿的指令给我的熏陶啊。

那个奥秘就是:法式都是由挨次,分收,轮回来构成的。 其实分收和轮回在我看来都是跳转罢了。

所以我的工做就是打德律风问内存要一条指令, 施行那个指令, 若是是个跳转指令的话,我就问内存要跳转的目的地址的那一条指令, 继续施行, 生活就是那么简单。

奥对了, 当然也有复杂的, 就是函数挪用, 我得和内存密切共同才气完成。 那个咱下回再说。

新配备:缓存

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

每次他都说: "阿甘, 好在有你给我聊天, 要否则我必定被活活的闷死不成, 阿谁硬盘说话是在太慢了"

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

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

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

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

确实是, 人不克不及把功德都占全了啊。

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

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

内存说: 挣脱, 那已经是我的极限了, 阿甘, 你本身再想想办法吧 ! 我给你说啊, 我留意了你比来拜候的指令和数据, 我发现了个法例“

"啥法例?"

"好比说吧, 你拜候了我一个内存位置以后过不多久还会屡次拜候, 还有,一个内存位置被拜候了, 附近的位置很快也会拜候到"

(码农翻身注: 那其实叫法式的部分性原理)

我还认为是啥法例, 其实我早就留意到了。

"那有啥用啊?”

"既然你经常拜候统一块区域的工具, 你想想若是把那些工具缓存在你那里会怎么样.... "

我一想有事理啊! 加个缓存尝尝!

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

公然, 因为部分性原理的存在, 我发现确实是快了很多啊。

当然也出缺点, 那就是Linux老迈在做法式切换的时候, 缓存就会失效,因为两个法式之间没什么联络,部分性原理不起感化, 所以需要重建缓存。

自我提拔:流水线

缓存让我的工做更有效率, 得到了Linux老迈的表彰:"阿甘, 我看你很伶俐嘛, 城市用缓存了"

"我哪有那么伶俐,都是内存的点子。老迈,不外我学会了一个重要的工具 :当你改动不了他人的话,责怪也没用, 仍是先改动一下本身吧"

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

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

"看来以后我们不克不及叫你阿甘了, 你已经起头思虑了" Linux老迈笑了

“那问题好处理, 给你举个例子,你传闻过洗车没有? 和你差不多, 也是先喷水, 再打洗洁剂, 再擦洗, 最初烘干, 但人家的工做体例和你纷歧样,人家是流水线功课, 你想想, 一辆车在烘干的时候, 后边是不是还有三辆车,别离在喷水, 打清洁剂 和擦洗 , 每个步调都不会闲暇。 ”

"那么简单的事理我怎么都没有想到呢? 我也能够搞个流水线啊, 如许每只手都操纵起来了"

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

有了缓存和流水线的搀扶帮助, 让我的工做大大的加快了,各人都对我另眼相看。 他们想给我起个新名字:超人 , 不外我仍是更喜好 他们叫我“阿甘”, 多亲热。

尾声

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

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

明天将会是新的一天。

0
回帖

上帝为你关闭了一扇门,就一定会为你打开一扇窗 期待您的回复!

取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息