Linux kernel Memory Barrier

来源:互联网 发布:jdk 7u60 linux x64 编辑:程序博客网 时间:2024/05/19 23:01

Reportson the Barrier in Linux

 

Reporter: Harold Wang

http://blog.csdn.net/hero7935/

KernelEdition: 2.6.37.3

 

Abstract:本报告介绍LinuxMemoryBarrier使用环境、分类与典型应用举例,分析了MemoryBarrier在多处理机环境下对于维持指令按序执行的意义。

 

KeyWord: 内存屏障MemoryBarrier; 对称多处理机SMP;

 

Explanationsof Abbreviations used in this paper:

 

MB——MemoryBarrier

OOO——Out-Of-Order

Loadand Store——L&S

  1. LinuxMB Brief Preview

独立的内存操作是高效的,它提供了多处理机环境下指令执行的并发性;各自独立的内存操作同时意味着指令的执行可能导致OOO,在CPU之间交互、I/O设备中可能带来问题,于是我们需要一种机制,在需要的时候,来确保编译器和CPU按序存取内存——这种机制就是:内存屏障MB

  1. LinuxMB Analysis In Depth

  1. MB使用情景描述

每个CPU执行程序中具有独立访问内存的操作,这种独立地访问操作是非常宽松的,理论上可能以任意次序执行;同时编译器处于优化的目的也可能将指令以任意次序重新编排。本文中对MB的探讨是基于以上所描述的环境展开的。

 

 

  1. MB四种变体

  • Write(Store)MB:指定点前所有Store操作的完成在这个点之后的所有Store之前

  • Datadependency MB:同一数据对象的前后读写操作在同一CPU上是编译器自保证的,但是在不同CPU上需要MB提供保证。

  • Read(Load)MB:指定点前所有Load操作的完成在这个点之后的所有Load之前

  • GeneralMB:指定点前所有L&S操作的完成在这个点之后的所有L&S之前

  • LockOperation:Lock点后任何内存操作的发生必须在这个点之后才开始

  • UnLockOperation: Lock点前任何内存操作的完成必须在这个点之前发生

Lock/UnLock操作概念上类似其他操作系统中Barrier的概念

  1. MB使用场景

  • Datadependency: 同一CPU上由编译器、CPU可以自保证,不同CPU 上使用Datadependency MB提供支持。

  • Controldependency:可能需要使用ReadMB提供支持

  • SMPPairing: CPU之间交互时往往需要成对使用两种MB

 

Analysis

WriteMB目的是确保d不会读到a的旧值(1)

ReadMB 目的是确保c不会读到b的旧值(4)

我们先来看看如果没有MB可能的结果:

c=2;d=1

c=4;d=1

c=2;d=3

  •                          c=4;d=3

 

如果我们的本意是第四个,那么使用MB机制就可以确保结果是第四种情况。

 

 

Analysis

WriteMB 目的是确保b不会读到*pp的旧值(0)

Datadependency MB 目的是确保pp不会读到p的旧值(2)

 

同理,MB机制就可以确保最终b读到pp新值(1);而pp读到p的新值(1)

 

  1. Conclusion

内存屏障仅在CPU之间、CPU与外设之间交互时用到。当处理多处理器之间或硬件设备之间的同步问题时,可能存在以指定的顺序发出读内存和写内存的需求;在和硬件交互时,也需要确保一个给定的读操作发生在其他读或写操作之前;在多处理上,可能需要按写数据时的顺序读数据(通常确保后来以同样的顺序进行读取)。但是编译器和处理器为了提高效率,可能对读和写重新排序。指示编译器不要对给定的点周围的指令进行重新排序,这些确保顺序的指令由内存屏障MB机制提供保证。

Author: Harold Wang 
http://blog.csdn.net/hero7935

 

 

Reference:

  1. linux-2.6.37.3/Documentation/memory-barriers.txt

  2. linux-2.6.37.3/arch/barrier.h

  3. RobertLove. Linux Kernel Development 3rd Edition [M]. US:Addison-Wesley2010:203-206

 

原创粉丝点击