|
|
Компьютеры - Атомарные операции - Атомарные инструкции x8623 января 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
|