URL данного справочника
НавигаторИнструкции
RV32A
RV64A
|
![]() Инструкции расширения A (атомарные операции)Инструкции этого расширения предназначены для организации совместной работы нескольких ядер на общую память. Они важны по целому ряду причин. Поскольку работа с памятью происходит значительно медленнее, чем с регистрами процессора, инженеры и программисты постоянно добавляют все новые и новые средства для повышения эффективности обслуживания памяти. Здесь и всевозможные средства аппаратного ускорения (буфера операций записи, кэш, опережающая выборка команд и данных, спекулятивное исполнение команд заранее и т.п.), и оптимизирующие компиляторы, также иногда переставляющие инструкции. С появлением многоядерности ситуации еще более усложняется, т.к. каждое ядро выполняет свою программу независимо от других. В результате обмен данными между потоками требует синхронизации. (Простейший пример: два потока при попытке увеличить счетчик считывают "старое" значение, каждый увеличивает его на 1 и по очереди записывает - в итоге первая из сумм может потеряться!) Атомарные (неделимые) инструкции призваны решить эту проблему. Расширение A в RISC-V предлагает три способа обмена данными через общую память.
Атомарные операции могут работать как с 4-байтовыми данными (суффикс .W), так с 8-байтовыми (суффикс .D) . Все инструкции имеют разрядность 32 бита. Примеры кодирования инструкций показаны при их описании. |