单核,多核CPU的原子操作.pdf





《单核,多核CPU的原子操作.pdf》由会员分享,可在线阅读,更多相关《单核,多核CPU的原子操作.pdf(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单核,多核 CPU的原子操作 一.何谓 原子操作:原子操作就是:不可中断的一个或者一系列操作,也就是不会被线程调度机制打断的操作,运行期间不会有任何的上下文切换(context switch).二.为什么关注原子操作?1.如果确定某个操作是原子的,就不用为了去保护这个操作而加上会耗费昂贵性能开销的锁.-(巧妙的利用原子操作和实现无锁编程)2.借助原子操作可以实现互斥锁(mutex).(linux中的 mutex_lock_t)3.借助互斥锁,可以实现让更多的操作变成原子操作.三.单核 CPU的原子操作:在单核 CPU中,能够在一个指令中完成的操作都可以看作为原子操作,因为中断只发生在指令间.四
2、.多核 CPU的原子操作:在多核 CPU的时代(确实 moore定律有些过时了,我们需要更多的 CPU,而不是更快的 CPU,无法处理快速 CPU中的热量散发问题),体系中运行着多个独立的 CPU,即使是可以在单个指令中完成的操作也可能会被干扰.典型的例子就是 decl指令(递减指令),它细分为三个过程:读-改-写,涉及两次内存操作.如果多个 CPU运行的多个进程在同时对同一块内存执行这个指令,那情况是无法预测的.五.硬件支持&多核原子操作:软件级别的原子操作是依赖于硬件支持的.在 x86体系中,CPU提供了HLOCK pin引线,允许CPU在执行某一个指令(仅仅是一个指令)时拉低 HLOCK
3、 pin引线的电位,直到这个指令执行完毕才放开.从而锁住了总线,如此在同一总线的 CPU就暂时无法通过总线访问内存了,这样就保证了多核处理器的原子性.(想想这机制对性能影响挺大的).六.哪些操作可以确定为原子操作了?对于非 long和 double基本数据类型的 简单操作 都可以看作是原子的.例如:赋值和返回.大多数体系中 long和 double都占据8 个字节,操作系统或者 JVM很可能会将写入和读取操作分离为两个单独的 32 位的操作来执行,这就产生了在一个读取和写入过程中一个上下文切换(context switch),从而导致了不同任务线程看到不正确结果的的可能性.递增,递减不是原子操
4、作:i+反汇编的汇编指令:(需要三条指令操作,和两个内存访问,一次寄存器修改)1 2 3 movl i,%eax /内存访问,读取 i 变量的值到cpu的 eax寄存器 addl$1,%eax /增加寄存器中的值 movl%eax,i /写入寄存器中的值到内存 七.如何实现+i和 i+的原子性:1.单 CPU,使用锁或则禁止多线程调度,因为本身单核 CPU的并发就是伪并发.(在单核 CPU中,在没有阻塞的程序中使用多线程是没必要的).2.多核 CPU,就需要借助上面说道的 CPU提供的 Lock,锁住总线.防止在 读取,修改,写入 整个过程期间其他 CPU 访问内存.(那么“读写,修改,写入”
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单核 多核 CPU 原子 操作

限制150内