社区
英特尔边缘计算技术
帖子详情
指令的原子操作特性在多核下会丧失么?
gaoteng1984
2008-07-26 11:55:42
单核下,线程的最小调度单位是指令吗?即每条指令都是原子操作,执行期间不能被换出?
如果是这样,那么在多核下,“指令”将会因为并行执行,而导致一些单核下不可能出现的错误。
比如,INC指令,单核下的多线程程序,不会出错。多核下,2个线程各自在自己的CPU上运行,如果同时执行INC,而这个INC的内存又是同一个,将有出错的可能性,即最后内存中的值是原值加一,而不是原值加二。
我的想法是正确的么?
...全文
417
14
打赏
收藏
指令的原子操作特性在多核下会丧失么?
单核下,线程的最小调度单位是指令吗?即每条指令都是原子操作,执行期间不能被换出? 如果是这样,那么在多核下,“指令”将会因为并行执行,而导致一些单核下不可能出现的错误。 比如,INC指令,单核下的多线程程序,不会出错。多核下,2个线程各自在自己的CPU上运行,如果同时执行INC,而这个INC的内存又是同一个,将有出错的可能性,即最后内存中的值是原值加一,而不是原值加二。 我的想法是正确的么?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
laxila
2008-09-30
打赏
举报
回复
最近正在研习中!!!
laxila
2008-09-30
打赏
举报
回复
顶了,不顶不好意思呀1
lehedele
2008-09-28
打赏
举报
回复
顶啊
formajia8
2008-09-26
打赏
举报
回复
看贴是学习,顶贴是义务。呵呵
majiajun_no_3
2008-09-25
打赏
举报
回复
学习中!继续关注...
majiajun_no_7
2008-09-25
打赏
举报
回复
N多高人牛人此帖让我受益匪浅,值得收藏! 继续关注
converf
2008-09-25
打赏
举报
回复
很有道理值得学习
gaoteng1984
2008-08-02
打赏
举报
回复
多谢楼上几位啊~
看来我要查查IA32 Intel CPU的开发者手册了
aero_boy
2008-08-02
打赏
举报
回复
这应该不是原子操作的问题,即使是不同的指令,如果两个核上的程序要写同一个地址时,CPU的多个核之间有同步处理,保证同一块内存只有一个核在操作,即使两个核使用不同的cache以有机制能保证cache一至性。
gaoteng1984
2008-08-01
打赏
举报
回复
感谢4楼大牛的回复!
您的意思是,指令前面加上"Prefix",就是不会被挂起吗?那么,普通指令不加"Prefix", 比如INC指令,有执行到一半被挂起的可能性吗?
intel_zhenyuwang
2008-08-01
打赏
举报
回复
原子操作和加锁是一个道理.
1. 记得最早是指令级,加一个"Prefix"在原有指令上, spin-wait?
2. 现在的原子操作主要是对某个变量(包含寄存器变量)保护.
3. 原子操作到一半时,
情形1)不会被挂起,
情形2)会 - 用户必须保证不会有逻辑错误
war3gu
2008-07-29
打赏
举报
回复
你说的好像是有可能的。我记得在多核的情况下,某些原子操作也不安全了,好像是因为指令缓存的缘故。
BigCarrot
2008-07-27
打赏
举报
回复
你对原子操作的理解有误
一般是指对内存访问的原子特性
gaoteng1984
2008-07-27
打赏
举报
回复
我的意思可能没说清楚,我想知道,是不是INC指令要么完全执行完,要么不执行?
即INC会不会执行到一半的时候(刚把寄存器里的值加1,还没来得及写入内存),该线程就被换出?
ARM/Linux嵌入式面经(四五):海康威视
局部性原理是计算机科学中的一个重要概念,它指的是处理器在访问存储器时,无论是存取
指令
还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。换句话说,处理器在短时间内访问的数据或
指令
往往具有局部性特征,即它们倾向于在相对较小的内存空间内聚集。时间局部性:如果一个数据项正在被访问,那么在近期它很可能还会被再次访问。这是因为程序在执行过程中,往往会重复访问某些数据或
指令
,特别是在循环和函数调用等结构中。时间局部性使得处理器可以通过缓存等技术来存储最近访问过的数据或
指令
,从而提高访问速度。空间局部性。
谈谈并发编程、JMM、volatile
最近看了一些关于java并发编程的知识,小厂工作用到的不多,但是知识储备还是得有呀,毕竟面试会用到。下面是总结的知识点、一下全部针对(单机、多CPU、
多核
)的架构 知识点储备篇 1、关于当前计算机硬件(多CPU、
多核
) 现代一台计算机的机构通常又多个CPU组成、每个CPU又有一定的核数。我们的java运行的线程都是在CPU中的寄存器执行 当一个线程执行的时候首先会从ARM中将变量copy一份放置到L3(CPU缓存区、CPU cache)中、 问1:为什么会有这么多CPU cache呢? 因为CP
JAVA面试——Redis
目录 一、什么是 Redis 二、Redis 与 Memcached 的区别 三、Redis 有哪几种数据淘汰策略 四、Redis 支持哪几种数据类型 五、Redis 集群方案什么情况
下会
导致整个集群不可用 六、Redis 哈希槽的概念 七、Redis 集群会有写操作丢失吗 八、Redis 集群之间是如何复制的 九、Redis 集群如何选择数据库 十、Redis 中的管道(Pipeline)有什么...
浅谈 JVM内存
内存布局Heap 堆区Metaspace 元空间JVM Stacks 虚拟机栈Native Method Stacks(本地方法栈)Program Counter Register (程序计数寄存器)小结JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的稳定高效运行。不同的JVM对于内存的划分方式和管理机制存在部分差异。结合JVM虚拟机规范,一起来探讨jVM的内存布局。如下图所示:堆区是Java发生(Out Of Memory)故障的地方,堆中存储着我们平时创建的,最终这些不
JVM基本问题?
1.运行时数据区域(内存模型)(必考) Java 内存区域和内存模型是不一样的东西: 内存区域是指 Jvm 运行时将数据分区域存储,强调对内存空间的划分。 而内存模型(Java Memory Model,简称 JMM )是定义了线程和主内存之间的抽象关系,即 JMM 定义了 JVM 在计算机内存(RAM)中的工作方式,如果我们要想深入了解Java并发编程,就要先理解好Java内存模型。 主要的运行时数据如下: 更为详细的如下========================================
英特尔边缘计算技术
567
社区成员
7,024
社区内容
发帖
与我相关
我的任务
英特尔边缘计算技术
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
复制链接
扫一扫
分享
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章