CPU乱序执行

news2024/11/19 23:19:08

一、为什么CPU要乱序执行?

首先我们要明白一点,不是cpu真的乱序执行,而是为了提交执行效率,但这个所谓的乱序执行的前提下是有依据的,在没有互相依赖的代码行里才有可能产生这种乱序执行的现象。
1、有可能产生乱序执行案例,例如:

int A = 1int B = 2;

这种情况当cpu执行A 的时候,会先去内存里读取A的值为1的数据,而这个读数据的过程,CPU会判断int B = 2;的代码有没有跟A有依赖关系,如果没有,会先执行B的代码行,等A啥时候读取完数据在告诉CPU读取完了,在执行A。因为CPU效率比内存快100倍起步,不可能等到A读取完数据在执行下一行指令。

2、不可能产生乱序执行案例,例如:
如下代码就不可能产生乱序执行的现象,因为B是依赖A的,先有A在有B

int A = 1int B = A;

二、怎么验证CPU是乱序执行的?

代码如下(示例):


public class T04_Disorder {
private static int x = 0, y = 0;
private static int a = 0, b =0;
public static void main(String[] args) throws InterruptedException {
int i = 0;
for(;;) {
i++;
x = 0; y = 0;
a = 0; b = 0;
Thread one = new Thread(new Runnable() {
@Override
public void run() {
//由于线程one先启动,下面这句话让它等一等线程two. 读着可根据自己电脑的实际性能适当调整等待时间.
//shortWait(100000);
a = 1;
x = b;
}
});
Thread other = new Thread(new Runnable() {
@Override
public void run() {
b = 1;
y = a;
}
});
one.start();other.start();
one.join();other.join();
String result = "第" + i + "次 (" + x + "," + y + ")";
if(x == 0 && y == 0) {
System.err.println(result);
break;
} else {
//System.out.println(result);
}
}
}
public static void shortWait(long interval){
long start = System.nanoTime();
long end;
do{
end = System.nanoTime();
}while(start + interval >= end);
}
}

执行结果

"第1569421"次 ( 0 ,0);
最后会出现x=0,y=0的情况
整了

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1105529.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

员工考勤统计表怎么做?

员工考勤统计表怎么做? 总结了下题主的需求—— 简单的考勤统计基础报表生成能自动打通对接钉钉考勤数据 这些需求其实都是最基本的考勤管理需求,最难的在于,如何能将钉钉考勤数据自动同步过来,如果能做到这点至少能提升60%的工…

ssm+vue基本微信小程序的今日菜谱系统

项目介绍 谈到外出就餐,我们除了怕排队,也怕这家餐厅的服务员不够用,没人为我们点餐,那么一餐饭排队一小时,点餐恐怕也要花个半小时,这样不仅给消费者的用餐体验大打折扣同时也给商家的口碑造成了严重负面…

2023年中国彩色滤光片竞争格局、市场规模及行业技术趋势分析[图]

彩色滤光片指实现液晶彩色显示的重要组件,该膜片可使经液晶控制的光线被过滤为红、蓝、绿三种基本色素点阵,并最终实现彩色显示画面的显示,彩色滤光片与LCD面板为一对一对应关系,即大尺寸彩色滤光片用于生产大尺寸LCD面板&#xf…

面试算法29:排序的循环链表

问题 在一个循环链表中节点的值递增排序,请设计一个算法在该循环链表中插入节点,并保证插入节点之后的循环链表仍然是排序的。 分析 首先分析在排序的循环链表中插入节点的规律。当在图4.15(a)的链表中插入值为4的节点时&…

倒计时 2 天!聚焦 Arm 性能提升,助力龙蜥生态落地应用

「龙蜥社区“走进系列”MeetUp」是由龙蜥社区与生态合作伙伴联合主办的系列月度活动,每期走进一家企业,聚焦龙蜥社区和合作伙伴的技术、产品和创新动态,展示硬核技术,共建繁荣生态。 本次龙蜥社区走进Arm MeetUp 将于 10 月 20 日…

大模型相关基础(基于李沐)

InstructGPT 介绍 ChatGPT用到的技术和InstructGPT一样的技术,区别是InstructGPT是在GPT3上微调,ChatGPT是在GPT3.5上微调。 InstructGPT论文发表在2022年3月4号,标题是《训练语言模型使得它们能够服从人类的一些指示》。 标题解释&#…

8+NAM+分型+单细胞生信思路

今天给同学们分享一篇肿瘤NAM分型单细胞的生信文章“Comprehensive analysis of nicotinamide metabolism-related signature for predicting prognosis and immunotherapy response in breast cancer”,这篇文章于2023年3月8日发表在Front Immunol期刊上&#xff0…

2023年中国现制咖啡市场发展概述分析:交易笔数和客单价将持续上升[图]

受到疫情封控影响,咖啡线下门店受到影响,但线上外卖门店仍保持良好发展态势,整体零售规模增长稳中有升。2022年,中国现制咖啡总零售规模为640亿元,2017-2022年零售规模的年复合增长率为16.3%。受益于资本关注、茶饮品牌…

安徽怀宁领导一行莅临蓝海彤翔集团参观考察

10月17日上午,中共怀宁县委书记余学峰,怀宁县政府副县长谭宪锋、怀宁县委办主任刘劲松、怀宁县招商中心副主任余飞、怀宁县委办四级主任科员彭俊等领导一行莅临蓝海彤翔集团参观考察,集团总裁鲁永泉、集团CTO穆凯辉接待了考察团一行。 考察团…

UE4 AI群集实现

逻辑就不用说了,就是计算对应图形位置让每个Pawn移动到该位置 因为有时候AI与AI会卡住 所以加上这个Bool为true,以及设置两个AI之间至少隔的距离,设置在一个合理的参数即可 有时候AI群集,AI与AI会比较紧密,可以将Caps…

【完美世界】两男神一美女登场,石昊杀真神夺金果,战帝老天人出世,云曦参战

Hello,小伙伴们,我是小郑继续为大家深度解析国漫资讯。 完美世界动画终于更新第134集预告了,虽然不是云曦特别篇的内容,但是画质与特效明显提升了,打斗也开始燃起来了。而且还登场三位新角色,两大男神,一位…

c语言练习90:反转链表

反转链表 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 与方法一相比方法二的思路更容易实现 报错原因:head和n3不能为空,为空则不能执行后面的操作 报错原因:listnode*n1,n2,n3; 纠正:listnode *n1…

杨帆 2022年 毕业论文相关 基于WS-DAN与时空注意力的学生课堂行为检测研究

杨帆: 毕业论文相关 下面是我公开的毕业论文全部相关文件: https://share.weiyun.com/UhFV67ds https://share.weiyun.com/9qOxwpqz 下面是我曾经公开在b站上的视频,因为我导师不建议公开,今年9月删除了,下面是视频源…

私域流量经营怎么做?私域流量转化功能推荐

流量在商业中扮演着至关重要的角色。无论是在线下还是线上,谁能更快地获取和利用流量,谁就能在激烈的市场竞争中占据优势。然而,流量的转化方式在传统和数字化营销系统中有着显著的差异。 数字化营销系统,如分销系统、拼团系统、分…

《机器学习----简单的分类器》第二章、朴素贝叶斯,项目:使用特征值给语句打标签

贝叶斯分类器 1,朴素贝叶斯算法1. 朴素贝叶斯算法、2. 算法思路3. 贝叶斯定理4.特征的选用的要求和处理 2,算法应用1 文本分类2 垃圾邮件过滤3 情感分析 3. 朴素贝叶斯的优缺点1. 优点2. 缺点 项目实践1,算法流程2,具体实现 1,朴素贝叶斯算法…

第二证券:什么股票属于创业板?

股票商场是一种杂乱的国际,不同类型的股票对应不同的生意商场。其间,创业板股票是一个备受关注的论题。那么,什么样的股票归于创业板呢?本文将从商场定义、股票分类以及出资关键点三个角度分析这个问题,帮忙读者全面了…

Vue3+ElementPlus el-date-picker时间选择器,设置最多选择60天区间内,必须选择大于今天

Vue3ElementPlus el-date-picker时间选择设置&#xff0c; 必须选择大于今天&#xff1b;最多选择60天区间内&#xff1b; 使用disabled-date&#xff1a; 具体实现代码&#xff1a; <el-date-pickerv-model"state.queryParams.dateTime":editable"false&q…

红队专题-从零开始VC++C/S远程控制软件RAT-MFC-[4]客户端与服务端连接

红队专题 招募六边形战士队员服务端编写新建工程server函数创建主线程类获取配置信息运行command 命令头文件里创建引用win32 类库/头文件startsocket 开始监听 类函数添加类StartSocketmysend/myrecv 设置 m_sockCommon 头文件MSGINFO_S 结构体 ThreadMain头文件runflag 启动 …

RN:指定模拟器启动

背景 我们启动 react native 项目的时候&#xff0c;会打开一个模拟器&#xff0c;但是有时不是我们想要的&#xff0c;我们如何去指定一个模拟器启动呢&#xff1f; IOS xcrun simctl list devicesyarn ios --simulator"<模拟器的UDID>"Android 目前没发现…

量子力学应用的特殊函数1----谐振子场与线性场

量子力学应用的函数--谐振子 Hermite 函数 厄米函数的一些性质 Laguerre 函数 a不为零时&#xff0c;称之为广义拉盖尔函数&#xff0c;这里不去研究他的解的性质 拉盖尔函数的一些性质 /. AiryAi 函数 在脑海中补充他的边界条件通过傅里叶变换等一些列复杂的微操&#xff0c;…