Було запропоновано цю статтю або розділ з Транзакційна пам'ять, але, можливо, це варто додатково . Пропозиція із січня 2020. |
Транзакційна пам'ять — технологія синхронізації конкурентних потоків. Вона спрощує паралельне програмування, виділяючи групи інструкцій у атомарні транзакції. Конкурентні потоки працюють паралельно, поки не починають змінювати одну і ту ж ділянку пам'яті. Лише останнім часом почали з'являтися апаратні реалізації транзакційної пам'яті.
Sun Rock (SPARC v9) 2007-2008
Мікропроцесор Rock від компанії Sun Microsystems був першим мікропроцесором з апаратною підтримкою транзакційної пам'яті. 64-розрядний процесор архітектури SPARC v9 мав 16 ядер.
У 2007 компанія оголосила про підтримку технології. Для функціонування транзакційної пам'яті були додані дві нові інструкції chkpt і commit і один новий статусний регістр cps. Інструкція chkpt <fail_pc> використовувалася для початку транзакції, а інструкція commit для її завершення. При скасуванні транзакції відбувався перехід на <fail_pc>, в цей час можна було перевірити регістр cps для визначення причини скасування. Транзакції переривалися з причин конфліктів даних, промахів TLB, переривань, складних інструкцій. Тим не менш, у багатьох випадках використання транзакційної пам'яті в процесорі Rock давало переваги в синхронізації.
У 2008 інженери Sun представили інтерфейс транзакційної пам'яті і симулятор Adaptive Transactional Memory Test Platform. Після покупки компанії Sun корпорацією Oracle проект Rock був закритий: «Цей процесор мав дві приголомшливі властивості: він був неймовірно повільним і споживав величезну кількість енергії. Він був настільки гарячим, що їм довелося поставити зверху 12 дюймів охолоджуючих вентиляторів, щоб процесор не перегрівався. Було б божевіллям продовжувати цей проект.»
IBM BlueGene/Q (PowerPC A2) 2011
Суперкомп'ютер Sequoia з архітектурою BlueGene/Q став першою комерційною системою з апаратною підтримкою транзакційної пам'яті. Технологія працює в 32-мегабайтному кеші другого рівня процесора PowerPC A2 (PowerPC BQC 16C). Дані в кеші мають позначку "версія", і кеш здатний зберігати кілька версій одних і тих же даних.
Програма повідомляє процесору про початок транзакції, робить свою роботу і повідомляє, що потрібно завершити транзакцію (commit). У разі якщо інші потоки змінювали ті ж дані — створюючи версії — кеш відхиляє транзакцію і потік намагається провести її знову. Якщо інших версій даних не з'явилося, дані модифікуються і транзакція завершується успішно.
Технологія версійних міток в PowerPC A2 також використовується для спекулятивного виконання. Замість очікування нової версії потік даних може виконати обчислення з наявними даними, спекулятивно здійснюючи корисну роботу. Якщо дані були такими ж, як і після оновлення, потік завершує (commit) роботу з кешу. Продуктивність вища: потік виконав роботу до отримання фінального значення. В іншому випадку результати спекулятивної роботи відхиляються і потік виробляє обчислення з коректними значеннями.
Підтримка транзакційної пам'яті — в деякому роді логічне розширення можливості, давно присутня в процесорах PowerPC — "load-link/store-conditional", або LL/SC. LL/SC — примітивна операція, яка може використовуватися як будівельний блок для всіх потокобезпечних конструкцій. Перша частина LL/SC — load-link — використовується програмою для отримання даних з пам'яті. Далі потік змінює дані і записує їх назад в пам'ять з допомогою store-conditional. Команда завершується успішно, якщо дані не змінювались. В іншому випадку програма повторює дії з даними спочатку.
Транзакційна пам'ять — LL/SC на стероїдах: потоки виконують операції LL на безлічі різних областей пам'яті, а операція завершення транзакції атомарно змінює всі області пам'яті або скасовує транзакцію (SC).
Ruud Haring, який представив роботу IBM по транзакційній пам'яті на Hot Chips, зізнався, що при реалізації компанія зіткнулася з безліччю нетривіальних проблем. При всій складності, реалізація має обмеження: вона не надає міжпроцесорної підтримки транзакцій. Проблема не актуальна для Sequoia і в той же час дозволяє оцінити виграш від використання транзакційної пам'яті.
IBM Power8 (Power) 2013
Контролери пам'яті Power 8 підтримують транзакційну пам'ять. Підтримка технології в ядрі Linux з'явилася починаючи з версії ядра 3.9.
Intel Haswell (x86) 2013
У 2012 компанія Intel оголосила про введення розширень транзакційної синхронізації (Transactional Syncrhonization Extensions, TSX) в набір інструкцій x86. Розширення дозволяють програмістам позначати окремі ділянки коду як транзакції. У 2013 з виходом покоління процесорів Haswell апаратна підтримка транзакційної пам'яті вперше стає доступною на споживчому рівні.
Haswell управляє наборами читання і запису з гранулярністю лінії кешу, відстежуючи адреси кешу даних L1. Конфлікти визначаються за допомогою протоколу когерентності кешу. TSX складається з двох частин. Апаратне виключення блокувань (Hardware Lock Elision, HLE) надає просту конвертацію програм на основі блокувань в транзакційні програми, причому отримані програми будуть попередньо сумісні з існуючими процесорами. Обмежена транзакційна пам'ять (Restricted Transactional Memory, RTM) є більш повною реалізацією транзакційної пам'яті.
Hardware Lock Elision
HLE злегка модифікує інструкції для зміни ділянки пам'яті. Технологія додає префікси — інструкції, не виробляють будь-яких дій, але змінюють інтерпретацію наступної інструкції — для модифікації інструкцій взяття та звільнення блокування (XACQUIRE і XRELEASE відповідно).
Між взяттям і звільненням блокування процесор відстежує ділянки пам'яті, які читають і записують потоки. У випадку конфлікту — якщо два потоки модифікують одні дані, або один потік читає дані, які інший записує — процесор скасовує транзакцію при звільненні блокування. В іншому випадку, виконання триває нормально.
Таким чином, HLE дозволяє загальноприйнятому коду на основі блокувань працювати оптимістично. Кожен потік буде вважати, що отримав блокування, в той час як інші потоки можуть працювати одночасно. До тих пір поки це безпечно, транзакції не скасовуються.
Технологія попередньо сумісна з процесорами без підтримки HTM. Операції з управління блокуванням залишаються, але зі спеціальним префіксом. Процесори Haswell будуть враховувати префікс і використовувати транзакційні виконання замість маніпуляцій з блокуваннями. Будь-який інший процесор буде ігнорувати префікс і просто керувати блокуванням, використовуючи традиційну поведінку на основі блокувань. Інструкції XACQUIRE і XRELEASE вже існують, але не несуть будь-якого сенсу, поки не використовуються зі специфічними інструкціями.
HLE дозволяє писати програми та операційні системи, які будуть використовувати транзакції на Haswell, підвищуючи рівень паралелізму без блокувань. Код буде працювати коректно на поточних процесорах. У результаті, введення нової можливості буде простим і безпечним.
Restricted Transactional Memory
RTM вимагає більших зусиль: він відходить від зворотної сумісності та запроваджує три нові інструкції. У той час як HLE неявно використовують транзакції, дозволяючи коду на основі блокувань працювати паралельно, RTM робить початок, завершення і переривання транзакцій явними. Потік починає транзакцію інструкцією XBEGIN, надаючи "запасну" функцію, яка запускається в разі переривання транзакції. Транзакція завершується інструкцією XEND, при цьому процесор проводить транзакцію якщо не було конфліктів або перериває її, переходячи в запасну функцію. Транзакції явно перериваються в програмі інструкцією XABORT. Завдяки явному використанні границь і "запасному виходу", RTM дозволяє контролювати транзакції повніше, ніж HLE. У довгостроковій перспективі RTM спростить реалізацію можливостей транзакцій.
Див. також
Посилання
Clojure STM — What? Why? How? [ 11 листопада 2016 у Wayback Machine.]
Software transactional memory [ 30 червня 2016 у Wayback Machine.]
Sequoia — BlueGene/Q, Power BQC 16C 1.60 GHz, Custom [ 25 травня 2016 у Wayback Machine.]
IBM’s new transactional memory: make-or-break time for multithreaded revolution [ 29 травня 2016 у Wayback Machine.]
Transactional memory going mainstream with Intel Haswell [ 28 травня 2016 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Bulo zaproponovano ob yednati cyu stattyu abo rozdil z Tranzakcijna pam yat ale mozhlivo ce varto dodatkovo Propoziciya iz sichnya 2020 Tranzakcijna pam yat tehnologiya sinhronizaciyi konkurentnih potokiv Vona sproshuye paralelne programuvannya vidilyayuchi grupi instrukcij u atomarni tranzakciyi Konkurentni potoki pracyuyut paralelno poki ne pochinayut zminyuvati odnu i tu zh dilyanku pam yati Lishe ostannim chasom pochali z yavlyatisya aparatni realizaciyi tranzakcijnoyi pam yati Sun Rock SPARC v9 2007 2008Mikroprocesor Rock vid kompaniyi Sun Microsystems buv pershim mikroprocesorom z aparatnoyu pidtrimkoyu tranzakcijnoyi pam yati 64 rozryadnij procesor arhitekturi SPARC v9 mav 16 yader U 2007 kompaniya ogolosila pro pidtrimku tehnologiyi Dlya funkcionuvannya tranzakcijnoyi pam yati buli dodani dvi novi instrukciyi chkpt i commit i odin novij statusnij registr cps Instrukciya chkpt lt fail pc gt vikoristovuvalasya dlya pochatku tranzakciyi a instrukciya commit dlya yiyi zavershennya Pri skasuvanni tranzakciyi vidbuvavsya perehid na lt fail pc gt v cej chas mozhna bulo pereviriti registr cps dlya viznachennya prichini skasuvannya Tranzakciyi pererivalisya z prichin konfliktiv danih promahiv TLB pererivan skladnih instrukcij Tim ne mensh u bagatoh vipadkah vikoristannya tranzakcijnoyi pam yati v procesori Rock davalo perevagi v sinhronizaciyi U 2008 inzheneri Sun predstavili interfejs tranzakcijnoyi pam yati i simulyator Adaptive Transactional Memory Test Platform Pislya pokupki kompaniyi Sun korporaciyeyu Oracle proekt Rock buv zakritij Cej procesor mav dvi prigolomshlivi vlastivosti vin buv nejmovirno povilnim i spozhivav velicheznu kilkist energiyi Vin buv nastilki garyachim sho yim dovelosya postaviti zverhu 12 dyujmiv oholodzhuyuchih ventilyatoriv shob procesor ne peregrivavsya Bulo b bozhevillyam prodovzhuvati cej proekt IBM BlueGene Q PowerPC A2 2011Superkomp yuter Sequoia z arhitekturoyu BlueGene Q stav pershoyu komercijnoyu sistemoyu z aparatnoyu pidtrimkoyu tranzakcijnoyi pam yati Tehnologiya pracyuye v 32 megabajtnomu keshi drugogo rivnya procesora PowerPC A2 PowerPC BQC 16C Dani v keshi mayut poznachku versiya i kesh zdatnij zberigati kilka versij odnih i tih zhe danih Programa povidomlyaye procesoru pro pochatok tranzakciyi robit svoyu robotu i povidomlyaye sho potribno zavershiti tranzakciyu commit U razi yaksho inshi potoki zminyuvali ti zh dani stvoryuyuchi versiyi kesh vidhilyaye tranzakciyu i potik namagayetsya provesti yiyi znovu Yaksho inshih versij danih ne z yavilosya dani modifikuyutsya i tranzakciya zavershuyetsya uspishno Tehnologiya versijnih mitok v PowerPC A2 takozh vikoristovuyetsya dlya spekulyativnogo vikonannya Zamist ochikuvannya novoyi versiyi potik danih mozhe vikonati obchislennya z nayavnimi danimi spekulyativno zdijsnyuyuchi korisnu robotu Yaksho dani buli takimi zh yak i pislya onovlennya potik zavershuye commit robotu z keshu Produktivnist visha potik vikonav robotu do otrimannya finalnogo znachennya V inshomu vipadku rezultati spekulyativnoyi roboti vidhilyayutsya i potik viroblyaye obchislennya z korektnimi znachennyami Pidtrimka tranzakcijnoyi pam yati v deyakomu rodi logichne rozshirennya mozhlivosti davno prisutnya v procesorah PowerPC load link store conditional abo LL SC LL SC primitivna operaciya yaka mozhe vikoristovuvatisya yak budivelnij blok dlya vsih potokobezpechnih konstrukcij Persha chastina LL SC load link vikoristovuyetsya programoyu dlya otrimannya danih z pam yati Dali potik zminyuye dani i zapisuye yih nazad v pam yat z dopomogoyu store conditional Komanda zavershuyetsya uspishno yaksho dani ne zminyuvalis V inshomu vipadku programa povtoryuye diyi z danimi spochatku Tranzakcijna pam yat LL SC na steroyidah potoki vikonuyut operaciyi LL na bezlichi riznih oblastej pam yati a operaciya zavershennya tranzakciyi atomarno zminyuye vsi oblasti pam yati abo skasovuye tranzakciyu SC Ruud Haring yakij predstaviv robotu IBM po tranzakcijnij pam yati na Hot Chips ziznavsya sho pri realizaciyi kompaniya zitknulasya z bezlichchyu netrivialnih problem Pri vsij skladnosti realizaciya maye obmezhennya vona ne nadaye mizhprocesornoyi pidtrimki tranzakcij Problema ne aktualna dlya Sequoia i v toj zhe chas dozvolyaye ociniti vigrash vid vikoristannya tranzakcijnoyi pam yati IBM Power8 Power 2013Kontroleri pam yati Power 8 pidtrimuyut tranzakcijnu pam yat Pidtrimka tehnologiyi v yadri Linux z yavilasya pochinayuchi z versiyi yadra 3 9 Intel Haswell x86 2013U 2012 kompaniya Intel ogolosila pro vvedennya rozshiren tranzakcijnoyi sinhronizaciyi Transactional Syncrhonization Extensions TSX v nabir instrukcij x86 Rozshirennya dozvolyayut programistam poznachati okremi dilyanki kodu yak tranzakciyi U 2013 z vihodom pokolinnya procesoriv Haswell aparatna pidtrimka tranzakcijnoyi pam yati vpershe staye dostupnoyu na spozhivchomu rivni Haswell upravlyaye naborami chitannya i zapisu z granulyarnistyu liniyi keshu vidstezhuyuchi adresi keshu danih L1 Konflikti viznachayutsya za dopomogoyu protokolu kogerentnosti keshu TSX skladayetsya z dvoh chastin Aparatne viklyuchennya blokuvan Hardware Lock Elision HLE nadaye prostu konvertaciyu program na osnovi blokuvan v tranzakcijni programi prichomu otrimani programi budut poperedno sumisni z isnuyuchimi procesorami Obmezhena tranzakcijna pam yat Restricted Transactional Memory RTM ye bilsh povnoyu realizaciyeyu tranzakcijnoyi pam yati Hardware Lock Elision HLE zlegka modifikuye instrukciyi dlya zmini dilyanki pam yati Tehnologiya dodaye prefiksi instrukciyi ne viroblyayut bud yakih dij ale zminyuyut interpretaciyu nastupnoyi instrukciyi dlya modifikaciyi instrukcij vzyattya ta zvilnennya blokuvannya XACQUIRE i XRELEASE vidpovidno Mizh vzyattyam i zvilnennyam blokuvannya procesor vidstezhuye dilyanki pam yati yaki chitayut i zapisuyut potoki U vipadku konfliktu yaksho dva potoki modifikuyut odni dani abo odin potik chitaye dani yaki inshij zapisuye procesor skasovuye tranzakciyu pri zvilnenni blokuvannya V inshomu vipadku vikonannya trivaye normalno Takim chinom HLE dozvolyaye zagalnoprijnyatomu kodu na osnovi blokuvan pracyuvati optimistichno Kozhen potik bude vvazhati sho otrimav blokuvannya v toj chas yak inshi potoki mozhut pracyuvati odnochasno Do tih pir poki ce bezpechno tranzakciyi ne skasovuyutsya Tehnologiya poperedno sumisna z procesorami bez pidtrimki HTM Operaciyi z upravlinnya blokuvannyam zalishayutsya ale zi specialnim prefiksom Procesori Haswell budut vrahovuvati prefiks i vikoristovuvati tranzakcijni vikonannya zamist manipulyacij z blokuvannyami Bud yakij inshij procesor bude ignoruvati prefiks i prosto keruvati blokuvannyam vikoristovuyuchi tradicijnu povedinku na osnovi blokuvan Instrukciyi XACQUIRE i XRELEASE vzhe isnuyut ale ne nesut bud yakogo sensu poki ne vikoristovuyutsya zi specifichnimi instrukciyami HLE dozvolyaye pisati programi ta operacijni sistemi yaki budut vikoristovuvati tranzakciyi na Haswell pidvishuyuchi riven paralelizmu bez blokuvan Kod bude pracyuvati korektno na potochnih procesorah U rezultati vvedennya novoyi mozhlivosti bude prostim i bezpechnim Restricted Transactional Memory RTM vimagaye bilshih zusil vin vidhodit vid zvorotnoyi sumisnosti ta zaprovadzhuye tri novi instrukciyi U toj chas yak HLE neyavno vikoristovuyut tranzakciyi dozvolyayuchi kodu na osnovi blokuvan pracyuvati paralelno RTM robit pochatok zavershennya i pererivannya tranzakcij yavnimi Potik pochinaye tranzakciyu instrukciyeyu XBEGIN nadayuchi zapasnu funkciyu yaka zapuskayetsya v razi pererivannya tranzakciyi Tranzakciya zavershuyetsya instrukciyeyu XEND pri comu procesor provodit tranzakciyu yaksho ne bulo konfliktiv abo pererivaye yiyi perehodyachi v zapasnu funkciyu Tranzakciyi yavno pererivayutsya v programi instrukciyeyu XABORT Zavdyaki yavnomu vikoristanni granic i zapasnomu vihodu RTM dozvolyaye kontrolyuvati tranzakciyi povnishe nizh HLE U dovgostrokovij perspektivi RTM sprostit realizaciyu mozhlivostej tranzakcij Div takozhProgramna tranzakcijna pam yat en PosilannyaClojure STM What Why How 11 listopada 2016 u Wayback Machine Software transactional memory 30 chervnya 2016 u Wayback Machine Sequoia BlueGene Q Power BQC 16C 1 60 GHz Custom 25 travnya 2016 u Wayback Machine IBM s new transactional memory make or break time for multithreaded revolution 29 travnya 2016 u Wayback Machine Transactional memory going mainstream with Intel Haswell 28 travnya 2016 u Wayback Machine