闲得没事干,写了个这:
1.分支预测
程序:这道题的答案如果是1,就执行A,不是1就执行B。
cpu:大哥,那么多运算器闲着呢,非给我来个分支,等等,我记得前几次执行到这儿的时候,都是执行的A,唉干脆我就先看看A再说。现在的状态记一下,不对的话再重新来。
2.保护模式
程序:先算这道题,然后调用操作系统的显示功能,接着再算这道题。
cpu:遵命。
程序:然后我要看一下系统里面存的一个密码……
cpu:保护错误,操作系统你来收拾一下这个捣乱的。
3.高速缓存(Cache)
程序:(拿出一张纸)这上面这几个地方的数据我看一下。
cpu:去内存跑一趟?**这么远……
cpu:(很久以后)终于找到了……哎呦累死了……这几个数据你以后应该还经常用吧,那干脆先放我这儿得了,省得我以后又跑一趟。我这儿放不下再给你放回去。
4.Meltdown
攻击者:操作系统啊,我要是有什么对不住的,你别立马给我退出,通知我一下让我显示个错误窗口,也好让用户明白嘛。
操作系统:行吧。
攻击者:啊,先读一下从xxx到xxx这么一大片内存,接着我要看一下系统里面某个密码,然后如果大于127就读一下A那个位置,不然就读一下B那个位置。
cpu:哎呦,这什么古怪程序。先读一大堆内存……
cpu:(一千年以后)woc高速缓存都让你占满了,马上读完了,我先看看后面指令,额,那个密码,我看看,是xxx,然后如果……
保护部件:你等等啊,还没判断那个位置是不是受保护的啊。
cpu:唉急什么,反正出了事是要回滚重来的,如果真的没有权限,这小子最终是得不到这个信息的。
保护部件:emmmmmm……
cpu:嗯接着……它确实大于127,那就读A,**高速缓存刚才被他全填上那一堆内存了,我提前去把A拿进高速缓存吧。
cpu:诶,轮到那条没判断权限的指令了,看一下,**……原来你没权限啊,来,操作系统呢……
操作系统:哦,它刚才说过自己处理这个错误了来着,给它自己处理吧。
攻击者:好啊,嗯,我先访问一下A和B这两个位置吧……哦对了,你有个超高精度的计时器吧,给我看看?
cpu:咳,不就是想测测我性能嘛,来,尽管来看我风骚的速度吧……
cpu:(很快)唉还好我刚才已经把A放进缓存了,快不快?这下在内存只要拿B就行了。
cpu:(很慢)哎呦,内存跑一趟还真是不容易,B到手了(一脸得意)快不快?
攻击者:(看着自己手中的高精度秒表,一脸淫笑)是是是……蓝厂牙膏,天下第一。
1.分支预测
程序:这道题的答案如果是1,就执行A,不是1就执行B。
cpu:大哥,那么多运算器闲着呢,非给我来个分支,等等,我记得前几次执行到这儿的时候,都是执行的A,唉干脆我就先看看A再说。现在的状态记一下,不对的话再重新来。
2.保护模式
程序:先算这道题,然后调用操作系统的显示功能,接着再算这道题。
cpu:遵命。
程序:然后我要看一下系统里面存的一个密码……
cpu:保护错误,操作系统你来收拾一下这个捣乱的。
3.高速缓存(Cache)
程序:(拿出一张纸)这上面这几个地方的数据我看一下。
cpu:去内存跑一趟?**这么远……
cpu:(很久以后)终于找到了……哎呦累死了……这几个数据你以后应该还经常用吧,那干脆先放我这儿得了,省得我以后又跑一趟。我这儿放不下再给你放回去。
4.Meltdown
攻击者:操作系统啊,我要是有什么对不住的,你别立马给我退出,通知我一下让我显示个错误窗口,也好让用户明白嘛。
操作系统:行吧。
攻击者:啊,先读一下从xxx到xxx这么一大片内存,接着我要看一下系统里面某个密码,然后如果大于127就读一下A那个位置,不然就读一下B那个位置。
cpu:哎呦,这什么古怪程序。先读一大堆内存……
cpu:(一千年以后)woc高速缓存都让你占满了,马上读完了,我先看看后面指令,额,那个密码,我看看,是xxx,然后如果……
保护部件:你等等啊,还没判断那个位置是不是受保护的啊。
cpu:唉急什么,反正出了事是要回滚重来的,如果真的没有权限,这小子最终是得不到这个信息的。
保护部件:emmmmmm……
cpu:嗯接着……它确实大于127,那就读A,**高速缓存刚才被他全填上那一堆内存了,我提前去把A拿进高速缓存吧。
cpu:诶,轮到那条没判断权限的指令了,看一下,**……原来你没权限啊,来,操作系统呢……
操作系统:哦,它刚才说过自己处理这个错误了来着,给它自己处理吧。
攻击者:好啊,嗯,我先访问一下A和B这两个位置吧……哦对了,你有个超高精度的计时器吧,给我看看?
cpu:咳,不就是想测测我性能嘛,来,尽管来看我风骚的速度吧……
cpu:(很快)唉还好我刚才已经把A放进缓存了,快不快?这下在内存只要拿B就行了。
cpu:(很慢)哎呦,内存跑一趟还真是不容易,B到手了(一脸得意)快不快?
攻击者:(看着自己手中的高精度秒表,一脸淫笑)是是是……蓝厂牙膏,天下第一。