Интернет магазин китайских планшетных компьютеров



Компьютеры - Атомарные операции - Атомарные инструкции x86

23 января 2011


Оглавление:
1. Атомарные операции
2. Ассемблерные инструкции и атомарность
3. Атомарные инструкции x86
4. Поддержка атомарных операций в RISC процессорах
5. Атомарные инструкции и компилятор



  • CMPXCHG/CMPXCHG8B/CMPXCHG16B — основная атомарная команда x86 сравнение и обмен. Выполняет атомарно сравнение переменной с указанным значением и пересылку в зависимости от данного сравнения. Является основой реализации всех безблокировочных алгоритмов. Часто используется в реализации спинлоков и RWLockов, а также практически всех высокоуровневых синхронизирующих элементов таких как Семафоры, Мъютексы, События и пр в качестве внутренней реализации
  • XCHG — Операция обмена между памятью и регистром выполняется атомарно на x86-процессорах. Часто используется в реализации спинлоков

Кроме того, многие команды вида Чтение-Модификация-Запись могут быть сделаны искусственно атомарными с помощью префикса LOCK:

  • Команды сложения и вычитания ADD/ADC/SUB/SBB где операнд-приемник память
  • Команды инкремента/декремента INC/DEC
  • Логические команды AND/OR/XOR
  • Однооперандные команды NEG/NOT
  • Битовые операции BTS/BTR/BTC
  • Операция сложение и обмен XADD

Префикс LOCK вызывает блокировку доступа к памяти на время выполнения инструкции. Блокировка может распространяться на область памяти шире чем длина операнда, например на длину линии кэш.



Просмотров: 4297


<<< Алгоритм Петерсона
Блокировка (программирование) >>>