CPU在进行读等待的同时执行指令,是CPU乱序的根源,不是乱,而是提高效率.
指令1:去内存中读取数据,等待内存返回,CPU去内存读取数据,CPU本身和内存的速度是100 : 1,所以他会一直等待内存返回;
指令2:与指令1没有任何依赖关系,且不去内存中读数据,那么指令2就会优先执行;
代码写的时候指令1在指令2前面,但实际上指令2比指令1优先执行完毕了。
典型例子:
如果不乱序执行:烧水壶、烧开水、洗茶壶、洗茶杯、拿茶叶泡茶。
乱序执行:烧水壶、烧开水的同时(洗茶壶、洗茶杯)、拿茶叶、泡茶.
代码实例:https://preshing.com/20120515/memory-reordering-caught-in-the-act/