Какие архитектуры ЦП поддерживают Сравнить и подкачку (CAS)?

Надлежащие службы REST следуют архитектурным правилам, изложенным в главе пятой диссертации Роя Филдинга. Большинство людей ошибочно используют термин «REST API», когда они действительно означают «HTTP API». Безгражданство является необходимым, но не достаточным условием для API, чтобы соответствовать архитектурным рекомендациям REST.

33
задан 3 revs, 3 users 100% 30 September 2008 в 13:46
поделиться

8 ответов

Powerpc имеет более мощные примитивы в наличии: "lwarx" и "stwcx"

lwarx загружают значение из памяти, но помнят местоположение. Любой другой поток или CPU, который касается того местоположения, заставят "stwcx", условную инструкцию по хранилищу, перестать работать.

, Таким образом, lwarx/stwcx комбинация позволяет Вам реализовывать атомарный инкремент / декремент, сравнивать и подкачивать, и более мощные атомарные операции как "атомарный инкрементный индекс кольцевого буфера"

10
ответ дан 27 November 2019 в 18:22
поделиться

Intel x86 имеет эту поддержку. IBM в он , Солярис к Linux, Портирующему Руководство , дает этот пример:

bool_t My_CompareAndSwap(IN int *ptr, IN int old, IN int new)
{
        unsigned char ret;

        /* Note that sete sets a 'byte' not the word */
        __asm__ __volatile__ (
                "  lock\n"
                "  cmpxchgl %2,%1\n"
                "  sete %0\n"
                : "=q" (ret), "=m" (*ptr)
                : "r" (new), "m" (*ptr), "a" (old)
                : "memory");

        return ret;
}
5
ответ дан 27 November 2019 в 18:22
поделиться

x86 и Itanium имеют CMPXCHG (сравните и обменивайтесь)

3
ответ дан 27 November 2019 в 18:22
поделиться

Запуск с архитектуры ARMv6, ARM имеет инструкции LDREX/STREX, которые могут использоваться для реализации атомарной сравнивать-валютной-операции.

5
ответ дан 27 November 2019 в 18:22
поделиться

Только для завершения списка MIPS имеет Загрузку, Связанную (ll) и Условное выражение Хранилища (кв/см) инструкции, которые загружают значение из памяти и позже условно хранят, если никакой другой ЦП не получил доступ к местоположению. Его истинное, что можно использовать эти инструкции выполнить подкачку, инкремент и другие операции. Однако недостаток - то, что с большим количеством центральных процессоров, осуществляющих блокировки очень в большой степени, Вы входите в динамическую взаимоблокировку: условное хранилище будет часто приводить к сбою и требовать другого цикла, чтобы попробовать еще раз, который перестанет работать, и т.д.

, программное обеспечение mutex_lock реализация может стать очень сложной попыткой реализовать экспоненциальную задержку, если эти ситуации считают достаточно важными для волнения о. В одной системе я продолжил работать с 128 ядрами, они были.

4
ответ дан 27 November 2019 в 18:22
поделиться

Sparc v9 имеет инструкцию по аварии. Руководство по архитектуре SPARC v9 обсуждает использование инструкции CAS в Приложении J, взгляд конкретно на примеры J.11 и J.12.

я полагаю, что название инструкции на самом деле "casa", потому что это может получить доступ или к пространству текущего адреса или к альтернативе. "авария" является ассемблерным макросом, который получает доступ к текущему ASI.

существует также статья о developers.sun.com обсуждение различных атомарных инструкций, которые процессоры Sparc реализовали за эти годы, включая аварию

2
ответ дан 27 November 2019 в 18:22
поделиться

Другой и более простой способ ответить на этот вопрос может заключаться в перечислении многопроцессорных платформ, которые НЕ поддерживают сравнение и обмен (или условие загрузки / сохранения, которое можно использовать для написания одного

Единственный, о котором я знаю, - это PARISC, в котором есть только атомарная инструкция чистого слова. Это можно использовать для создания мьютекса (при условии, что слово выравнивается по границе 16 байт). В этой архитектуре нет CAS (в отличие от x86, ia64, ppc, sparc, mips, s390, ...)

8
ответ дан 27 November 2019 в 18:22
поделиться

Сравнение и замена были добавлены в мэйнфреймы IBM в 1973 году. Он (и сравнивать двойное и свопинг) все еще находится в мэйнфреймах IBM (вместе с более поздними многопроцессорными функциями, такими как PLO - выполнение заблокированных операций).

3
ответ дан 27 November 2019 в 18:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: