Екі рет салыстыру және ауыстыру - Double compare-and-swap

Екі рет салыстыру және ауыстыру (DCAS немесе CAS2) болып табылады атомдық қарабайыр белгілі бір қолдауды ұсынды бір уақытта бағдарламалау техникасы. DCAS жадының екі міндетті емес орналасуын алады және жаңа мәндерді алдын-ала берілген «күтілетін» мәндерге сәйкес келген жағдайда ғана жазады; Осылайша, бұл әлдеқайда танымал кеңейту салыстыру және ауыстыру (CAS) жұмысы.

DCAS кейде екі ені бойынша салыстыру және айырбастау (DWCAS) x86 CMPXCHG16B сияқты нұсқаулармен жүзеге асырылады. DCAS, мұнда талқыланғандай, жадының екі үзіліс орнымен, әдетте көрсеткіштің өлшемімен жұмыс істейді, ал DWCAS екі көршілес өлшемді жад орнын өңдейді.

Докторлық диссертациясында Майкл Гринвальд DCAS-ты заманауи жабдыққа қосуды ұсынды, оны қолдану оңай, бірақ тиімді жасау үшін қолдануға болатындығын көрсетті бағдарламалық жад (STM). Гринвальд DCAS-тің CAS-қа артықшылығы жоғары деңгейлі (бірнеше тармақтан тұратын) CAS екенін атап өттіn іске асырылуы мүмкін O (n) DCAS көмегімен, бірақ O (n журнал б) бірыңғай CAS-пен уақыт, қайда б бұл даулы процестердің саны.[1]

DCAS артықшылықтарының бірі - атомды іске асыру мүмкіндігі декалар (яғни қосарланған тізімдер ) салыстырмалы түрде оңай.[2]Алайда жақында STM салыстырмалы қасиеттермен жүзеге асырылатындығы көрсетілген[түсіндіру қажет ] тек CAS қолдану арқылы.[3] Жалпы алғанда, DCAS а күміс оқ: іске асыру құлыпсыз және күтусіз алгоритмдер оны пайдалану, әдетте, CAS сияқты күрделі және қателіктерге бейім.[4]

Motorola бір уақытта DCAS-ны оның нұсқаулар жиынтығына енгізді 68k серия;[5] дегенмен, DCAS-тің басқа қарабайырларға қатысты баяудығы (кэшпен жұмыс істеу мәселелеріне байланысты) оны практикалық тұрғыдан болдырмауға әкелді.[6] 2015 жылғы жағдай бойынша, DCAS-ті өндірісте кең таралған кез-келген процессор қолдамайды.

DCAS-ті екіден көп адреске жалпылауды кейде MCAS деп атайды (көп сөзді CAS); MCAS ұяшық арқылы жүзеге асырылуы мүмкін LL / SC, бірақ мұндай қарабайыр жабдықта тікелей қол жетімді емес.[3] MCAS бағдарламалық қамтамасыз етуде DCAS тұрғысынан әртүрлі тәсілдермен жүзеге асырылуы мүмкін.[7] 2013 жылы Тревор Браун, Сенім Эллен және Эрик Руппер бағдарламалық жасақтамада LLAS мекен-жайын кеңейтеді (оны LLX / SCX деп атайды), MCAS-ге қарағанда шектеулі[8] оларға кейбір автоматтандырылған код генерациясы арқылы ең жақсы нәтижелі параллельдің бірін жүзеге асыруға мүмкіндік берді екілік іздеу ағашы (шын мәнінде а хромат ағашы ), сәл соққы JDK CAS негізіндегі өткізіп жіберу іске асыру.[9]

Жалпы, DCAS-ны неғұрлым мәнерлі аппараттық қамтамасыз ете алады транзакциялық жад.[10] IBM ҚУАТ8 және Intel Intel TSX транзакциялық жадының жұмыс жасауын қамтамасыз ету. Күн күші жойылды Рок-процессор оны да қолдаған болар еді.

Әдебиеттер тізімі

  1. ^ М. Гринвальд. «Блоктаусыз синхрондау және жүйені жобалау». Стэнфорд университетінің техникалық есебі STAN-CS-TR-99-1624 [1]. (әсіресе 10-бет)
  2. ^ Ole Agesen, David L. Detlefs, Christine H. Flood, Alexander T. Garthwaite, Paul A. Martin, Mark Mark, Nir N. Shavit, and Guy L. Steele Jr. «DCAS-based Concurrent Deques». Есептеу жүйелерінің теориясы 35, жоқ. 3 (2002): 349-386.
  3. ^ а б Кейр Фрейзер (2004), «Практикалық құлып еркіндігі» UCAM-CL-TR-579.pdf
  4. ^ Саймон Дохерти және басқалар. «DCAS бұл блоктан алгоритмді жобалауға арналған күміс оқ емес». Алгоритмдер мен архитектуралардағы параллелизм бойынша 16-жылдық ACM симпозиумы, 2004, 216–224 бб. [2].
  5. ^ CAS2
  6. ^ Гринвальд, Майкл және Дэвид Черитон. «Блоктаусыз синхрондау мен операциялық жүйенің құрылымы арасындағы синергия.» OSDI '96 Операциялық жүйелерді жобалау және енгізу бойынша екінші USENIX симпозиумының материалдары (1996 ж.): 123-136. (атап айтқанда, 7.1-бөлім «Эксперименттік енгізу»)
  7. ^ Харрис, Тимоти Л .; Фрейзер, Кейр; Пратт, Ян А. (2002). Көп сөзді салыстыру және ауыстыру тәжірибесі. Proc. Халықаралық симптом. Таратылған есептеу. CiteSeerX  10.1.1.13.7938.
  8. ^ Тревор Браун, Фейт Эллен және Эрик Рупперт. «Мәліметтердің блокталмайтын құрылымдарына арналған прагматикалық примитивтер». Таратылған есептеу принциптері бойынша 2013 ACM симпозиумының материалдарында, 13-22 бб. ACM, 2013 ж.
  9. ^ Тревор Браун, Фейт Эллен және Эрик Рупперт. «Бөгелмейтін ағаштарға арналған жалпы техника». Параллель бағдарламалаудың принциптері мен практикасы бойынша 19-ACM SIGPLAN симпозиумының материалдарында, 329-342 бб. ACM, 2014 ж.
  10. ^ Дэйв Дайс, Йоси Лев, Марк Моир, Дэн Нуссбаум және Марек Ольшевский. (2009) «Коммерциялық аппараттық транзакциялық жадыны енгізудің алғашқы тәжірибесі». Sun Microsystems техникалық есебі (60 б.) SMLI TR-2009-180. Қысқа нұсқасы ASPLOS’09-да пайда болды дои:10.1145/1508244.1508263. Толық метражды есепте 5-бөлімде HTM-ді қолдану арқылы DCAS-ті қалай енгізу туралы айтылады.

Сыртқы сілтемелер