指令的原子操作特性在多核下会丧失么?

gaoteng1984 2008-07-26 11:55:42
单核下,线程的最小调度单位是指令吗?即每条指令都是原子操作,执行期间不能被换出?
如果是这样,那么在多核下,“指令”将会因为并行执行,而导致一些单核下不可能出现的错误。
比如,INC指令,单核下的多线程程序,不会出错。多核下,2个线程各自在自己的CPU上运行,如果同时执行INC,而这个INC的内存又是同一个,将有出错的可能性,即最后内存中的值是原值加一,而不是原值加二。
我的想法是正确的么?
...全文
417 14 打赏 收藏 转发到动态 举报
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,还没来得及写入内存),该线程就被换出?

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧