Бесплатно
В избранное
Работа доступна по лицензии Creative Commons:«Attribution» 4.0

В настоящее время ведётся активная разработка моделей памяти, направленных на решение различных проблем многопоточного программирования. В частности, модель памяти языка OCaml [Dolan et al. PLDI 2018] позволяет точно описать поведение программ, содержащих гонки по данным. Чтобы использовать эту модель на практике, необходимо показать, что её можно корректно реализовать на распространённых архитектурах процессоров. На данный момент это выполнено для x86 и ARM, но не для Power – архитектуры, широко используемой в серверном оборудовании. В данной работе построена схема компиляции модели OCaml в Power (с использованием промежуточной модели памяти (IMM) [Podkopaev et al. POPL 2019]) и доказана её корректность. Кроме того, полученные результаты формализованы в Coq.

1. Введение
2. Постановка задачи
3. Обзор
3.1. Пример исполнения в слабой модели памяти
3.2. Проблема корректности компиляции на примерах . . . 8
3.3. Графыисполнения …………………. 12
3.4. Описание используемых моделей памяти . . . . . . . . 15
3.4.1. МодельпамятиOCaml(OCamlMM) . . . . . . . . . . 15
3.4.2. Промежуточная модель памяти . . . . . . . . . . 15
4. Обоснование схемы компиляции 18
4.1. Необходимость введения дополнительных инструкций 18
4.2. Схемакомпиляции …………………. 20
5. Доказательство корректности компиляции 21
5.1. Соответствиеграфовисполнения . . . . . . . . . . . . . 21
5.2. Построение графа, соответствующего данному . . . . . 22
5.3. Доказательство последовательной согласованности по от-
дельнымадресам ………………….. 24
5.4. Доказательство отсутствия буферизации при чтении . . 25
6. Формализация доказательства в Coq 30
7. Существующие исследования 33
8. Заключение
Список литературы

Результат исполнения многопоточной программы, как правило, яв- ляется недетерминированным. Конкретное множество допустимых ре- зультатов многопоточной программы определяется моделью памяти языка программирования. Наиболее известной является модель после- довательной согласованности (sequential consistency, SC [11]). Она пред- полагает, что любой результат исполнения программы может быть получен путём попеременного исполнения инструкций отдельных по- токов согласно программному порядку в них. Однако из-за оптимиза- ций, выполняемых современными компиляторами и процессорами, могут наблюдаться сценарии поведения, невозможные в такой моде- ли. Так, на архитектуре x86 чтение по адресу в памяти может вернуть не самое последнее записанное значение, так как операция записи может быть буферизована.
Отказ от подобных оптимизаций нежелателен, поэтому современ- ные модели памяти допускают некоторые сценарии поведения, невоз- можные в модели SC. Такие модели памяти называются слабыми. На- пример, слабыми являются модели памяти языков C++ [2], JavaScript [22] и Java [13], а также архитектур Power [1], x86 [16] и ARM [19].
Модель памяти OCaml [4] (далее — OCamlMM) отличается свойством т.н. локальной свободы от гонок по данным (local data race freedom). Имен- но, гарантируется, что выполнение конфликтующих обращений по выбранному адресу в памяти (т.е. ситуация гонки по данным) не вли- яет на обращения к другим адресам, а также на последующие обра- щения по тому же адресу. Благодаря этому даже при возникновении гонки по данным в некоторый момент исполнения следующие участ- ки программы будут исполнены согласно модели SC.
Чтобы гарантировать выполнение этого свойства, при компиляции нужно запретить некоторые оптимизации в зависимости от целевой архитектуры. Для этого может понадобиться, например, добавить в ассемблерный код инструкции-барьеры, которые запрещают нежела- тельные оптимизации на уровне процессора. Набор таких правил, по-
крывающий все возможные типы инструкций, называется схемой ком- пиляции. Схема компиляции должна быть корректной — при исполне- нии любой программы, полученной при компиляции согласно этой схеме, должно наблюдаться только сценарии поведения, разрешён- ные OCamlMM для исходной программы.
Авторы OCamlMM разработали схемы компиляции OCamlMM в модели x86-TSO и ARMv8 [4] и доказали их корректность. При этом отсутству- ет схема компиляции в модель архитектуры Power. А между тем дан- ная архитектура часто используется в современном серверном обору- довании [7]. Задача построения такой схемы осложнена тем, что мо- дель Power, в отличие от моделей x86-TSO, ARMv8 и OCamlMM, не обла- дает т.н. свойством multicopy atomicity. Такое свойство означает, что записанные в память значения становятся доступны всем потокам в одном и том же порядке [19]. Из-за отсутствия этого свойства коррект- ная схема компиляции OCamlMM в Power должна расставлять барьеры в результирующей программе так, чтобы запретить нежелательные сценарии поведения.
В рамках данной работы была поставлена задача разработать схе- му компиляции OCamlMM в модель Power и доказать её корректность. Для этого было решено использовать промежуточную модель памяти (Intermediate Memory Model, далее — IMM) [18], для которой уже доказа- на корректность компиляции в модель Power. Использование IMM как промежуточного этапа компиляции позволяет разбить доказательство корректности на два, которые впоследствии можно использовать в других доказательствах. Таким образом, построение схемы компиля- ции OCamlMM в IMM даёт схемы компиляции OCamlMM не только в Power, но и другие архитектуры, в которые компилируется IMM (на данный момент — x86 и ARM).

В данной работе представлена схема компиляции OCamlMM в проме- жуточную модель, позволяющая получить схему компиляции OCamlMM в Power. При этом были получены следующие результаты.
• ПредложенасхемакомпиляцииOCamlMMвIMM,использующаяба- рьеры памяти и инструкции read-modify-write для необходимой синхронизации доступов к памяти.
• Быладоказанакорректностьпредложеннойсхемы.Дляэтогобы- ло введено формальное понятие соответствия графов, которое позволило связать сценарии исполнения исходной и скомпили- рованной программ. Затем было доказано, что для каждого со- гласованного по IMM графа исполнения скомпилированной про- граммы существует соответствующий ему граф исполнения ис- ходной программы, согласованный по OCamlMM.
• ПолученноедоказательствобылоформализовановCoq.Безучё- та существующей формализации IMM формализация заняла по- рядка 8 тыс. строк кода.
Результаты работы были представлены на Открытой конференции ИСП РАН и опубликованы в ”Трудах Института системного програм- мирования РАН” [23].
Данное исследование может быть продолжено при реализации свой- ства локальной свободы от гонок в других моделях памяти. Например, изучается возможность реализовать это свойство в модели памяти C++ [3]. Результаты, полученные в данной работе, могут быть исполь- зованы для построения схем компиляции таких моделей. В частно- сти, сравнение схемы компиляции OCamlMM в ARMv8 [4] и полученной в данной работе позволяет предположить, что с большой вероятностью для компиляции инструкции атомарной записи в подобных моделях необходимо будет использовать инструкцию атомарной замены.

[1] Jade Alglave, Luc Maranget, and Michael Tautschnig. “Herding Cats: Modelling, Simulation, Testing, and Data Mining for Weak Memory”. In: ACM Trans. Program. Lang. Syst. 36.2 (July 2014), 7:1–7:74. ISSN: 0164-0925. DOI: 10.1145/2627752. URL: http://doi.acm.org/10.1145/2627752.
[2] Mark Batty et al. “Mathematizing C++ Concurrency”. In: POPL 2011. ACM, 2011, pp. 55–66. DOI: 10.1145/1925844.1926394.
[3] Simon Doherty. Local Data-race Freedom and the C11 Memory Model. Surrey Concurrency Workshop. 2019.
[4] Stephen Dolan, KC Sivaramakrishnan, and Anil Madhavapeddy. “Bounding Data Races in Space and Time”. In: Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation. 2018.
[5] Brijesh Dongol, Radha Jagadeesan, and James Riely. “Modular Transactions: Bound-
ing Mixed Races in Space and Time”. In: Proceedings of the 24th Symposium on Principles and Practice of Parallel Programming. PPoPP ’19. Washington, District of Columbia: Association for Computing Machinery, 2019, pp. 82–93. ISBN: 9781450362252. DOI: 10.1145/3293883.3295708. URL: https://doi.org/10.1145/3293883. 3295708.
[6] Georges Gonthier. “The Four Colour Theorem: Engineering of a Formal Proof”. In: Computer Mathematics: 8th Asian Symposium, ASCM 2007, Singapore, December 15-17, 2007. Revised and Invited Papers. Berlin, Heidelberg: Springer-Verlag, 2008, p. 333. ISBN: 9783540878261. URL: https://doi.org/10.1007/978-3-540-87827- 8_28.
[7] IBM Power Systems. IBM Power Systems Facts and Features:Enterprise and Scale- out Systems with POWER8 Processor Technology. https://www.ibm.com/downloads/ cas/JDRZDG0A. 2018.
[8] Jeehoon Kang et al. “A Promising Semantics for Relaxed-memory Concurrency”. In: Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages. POPL 2017. Paris, France: ACM, 2017, pp. 175–189. ISBN: 978-1-4503- 4660-3. DOI: 10.1145/3009837.3009850. URL: http://doi.acm.org/10.1145/ 3009837.3009850.
[9] Ori Lahav and Viktor Vafeiadis. “Explaining Relaxed Memory Models with Pro- gram Transformations”. In: FM 2016: Formal Methods. Ed. by John Fitzgerald et al. Cham: Springer International Publishing, 2016, pp. 479–495. ISBN: 978-3-319- 48989-6.
36
[10] Ori Lahav et al. “Repairing Sequential Consistency in C/C++11”. In: SIGPLAN Not. 52.6 (June 2017), pp. 618–632. ISSN: 0362-1340. DOI: 10.1145/3140587.3062352. URL: http://doi.acm.org/10.1145/3140587.3062352.
[11] Leslie Lamport. “How to Make a Multiprocessor Computer That Correctly Exe- cutes Multiprocess Programs”. In: IEEE Transactions on Computers C-28 9 (1979), pp. 690–691. URL: https://www.microsoft.com/en-us/research/publication/ make-multiprocessor-computer-correctly-executes-multiprocess-programs/.
[12] Xavier Leroy. “Formal verification of a realistic compiler”. In: Communications of the ACM 52.7 (2009), pp. 107–115. URL: http://xavierleroy.org/publi/compcert- CACM.pdf.
[13] Jeremy Manson, William Pugh, and Sarita V. Adve. “The Java Memory Model”. In: POPL 2005. ACM, 2005, pp. 378–391. DOI: 10.1145/1040305.1040336.
[14] Batty Mark et al. C/C++11 mappings to processors. https://www.cl.cam.ac.uk/ ~pes20/cpp/cpp0xmappings.html. 2016.
[15] Evgenii Moiseenko et al. “Reconciling Event Structures with Modern Multiproces- sors”. In: (Nov. 2019), Accepted for European Conference on Object–Oriented Pro- gramming 2020.
[16] Scott Owens, Susmit Sarkar, and Peter Sewell. “A Better x86 Memory Model: x86- TSO”. In: Theorem Proving in Higher Order Logics. Ed. by Stefan Berghofer et al. Berlin, Heidelberg: Springer Berlin Heidelberg, 2009, pp. 391–407. ISBN: 978-3- 642-03359-9.
[17] Anton Podkopaev, Ori Lahav, and Egor Namakonov. Intermediate Memory Model. https://github.com/weakmemory/imm. 2019.
[18] Anton Podkopaev, Ori Lahav, and Viktor Vafeiadis. “Bridging the Gap Between Programming Languages and Hardware Weak Memory Models”. In: Proc. ACM Pro- gram. Lang. 3.POPL (Jan. 2019), 69:1–69:31. ISSN: 2475-1421. DOI: 10.1145/ 3290382. URL: http://doi.acm.org/10.1145/3290382.
[19] Christopher Pulte et al. “Simplifying ARM Concurrency: Multicopy-atomic Axiomatic and Operational Models for ARMv8”. In: Proc. ACM Program. Lang. 2.POPL (Dec. 2017), 19:1–19:29. ISSN: 2475-1421. DOI: 10.1145/3158107. URL: http://doi. acm.org/10.1145/3158107.
[20] Coq development team. The Coq Proof Assistant. https://coq.inria.fr/.
[21] Viktor Vafeiadis, Ori Lahav, and Anton Podkopaev. Hahn library. https://github. com/vafeiadis/hahn/. 2020.
37

[22] Conrad Watt et al. “Repairing and mechanising the JavaScript relaxed memory model”. In: Proceedings of the 41st ACM SIGPLAN Conference on Programming Lan- guage Design and Implementation (2020). DOI: 10.1145/3385412.3385973. URL: http://dx.doi.org/10.1145/3385412.3385973.
[23] Егор Намаконов и Антон Подкопаев. «Компиляция модели памяти OCaml в Power». В: Труды ИСП РАН 31.5 (2019), с. 63—78. DOI: 10.15514/ISPRAS-2019- 31(5)-4.

Заказать новую

Лучшие эксперты сервиса ждут твоего задания

от 5 000 ₽

Не подошла эта работа?
Закажи новую работу, сделанную по твоим требованиям

    Нажимая на кнопку, я соглашаюсь на обработку персональных данных и с правилами пользования Платформой

    Последние выполненные заказы

    Хочешь уникальную работу?

    Больше 3 000 экспертов уже готовы начать работу над твоим проектом!

    Дарья С. Томский государственный университет 2010, Юридический, в...
    4.8 (13 отзывов)
    Практикую гражданское, семейное право. Преподаю указанные дисциплины в ВУЗе. Выполняла работы на заказ в течение двух лет. Обучалась в аспирантуре, подготовила диссерт... Читать все
    Практикую гражданское, семейное право. Преподаю указанные дисциплины в ВУЗе. Выполняла работы на заказ в течение двух лет. Обучалась в аспирантуре, подготовила диссертационное исследование, которое сейчас находится на рассмотрении в совете.
    #Кандидатские #Магистерские
    18 Выполненных работ
    Екатерина Б. кандидат наук, доцент
    5 (174 отзыва)
    После окончания института работала экономистом в системе государственных финансов. С 1988 года на преподавательской работе. Защитила кандидатскую диссертацию. Преподав... Читать все
    После окончания института работала экономистом в системе государственных финансов. С 1988 года на преподавательской работе. Защитила кандидатскую диссертацию. Преподавала учебные дисциплины: Бюджетная система Украины, Статистика.
    #Кандидатские #Магистерские
    300 Выполненных работ
    Дмитрий Л. КНЭУ 2015, Экономики и управления, выпускник
    4.8 (2878 отзывов)
    Занимаю 1 место в рейтинге исполнителей по категориям работ "Научные статьи" и "Эссе". Пишу дипломные работы и магистерские диссертации.
    Занимаю 1 место в рейтинге исполнителей по категориям работ "Научные статьи" и "Эссе". Пишу дипломные работы и магистерские диссертации.
    #Кандидатские #Магистерские
    5125 Выполненных работ
    Егор В. кандидат наук, доцент
    5 (428 отзывов)
    Здравствуйте. Занимаюсь выполнением работ более 14 лет. Очень большой опыт. Более 400 успешно защищенных дипломов и диссертаций. Берусь только со 100% уверенностью. Ск... Читать все
    Здравствуйте. Занимаюсь выполнением работ более 14 лет. Очень большой опыт. Более 400 успешно защищенных дипломов и диссертаций. Берусь только со 100% уверенностью. Скорее всего Ваш заказ будет выполнен раньше срока.
    #Кандидатские #Магистерские
    694 Выполненных работы
    Вики Р.
    5 (44 отзыва)
    Наличие красного диплома УрГЮУ по специальности юрист. Опыт работы в профессии - сфера банкротства. Уровень выполняемых работ - до магистерских диссертаций. Написан... Читать все
    Наличие красного диплома УрГЮУ по специальности юрист. Опыт работы в профессии - сфера банкротства. Уровень выполняемых работ - до магистерских диссертаций. Написание письменных работ для меня в удовольствие.Всегда качественно.
    #Кандидатские #Магистерские
    60 Выполненных работ
    Мария Б. преподаватель, кандидат наук
    5 (22 отзыва)
    Окончила специалитет по направлению "Прикладная информатика в экономике", магистратуру по направлению "Торговое дело". Защитила кандидатскую диссертацию по специальнос... Читать все
    Окончила специалитет по направлению "Прикладная информатика в экономике", магистратуру по направлению "Торговое дело". Защитила кандидатскую диссертацию по специальности "Экономика и управление народным хозяйством". Автор научных статей.
    #Кандидатские #Магистерские
    37 Выполненных работ
    Елена Л. РЭУ им. Г. В. Плеханова 2009, Управления и коммерции, пре...
    4.8 (211 отзывов)
    Работа пишется на основе учебников и научных статей, диссертаций, данных официальной статистики. Все источники актуальные за последние 3-5 лет.Активно и уместно исполь... Читать все
    Работа пишется на основе учебников и научных статей, диссертаций, данных официальной статистики. Все источники актуальные за последние 3-5 лет.Активно и уместно использую в работе графический материал (графики рисунки, диаграммы) и таблицы.
    #Кандидатские #Магистерские
    362 Выполненных работы
    Евгений А. доктор, профессор
    5 (154 отзыва)
    Более 40 лет занимаюсь преподавательской деятельностью. Специалист в области философии, логики и социальной работы. Кандидатская диссертация - по логике, докторская - ... Читать все
    Более 40 лет занимаюсь преподавательской деятельностью. Специалист в области философии, логики и социальной работы. Кандидатская диссертация - по логике, докторская - по социальной работе.
    #Кандидатские #Магистерские
    260 Выполненных работ
    Вирсавия А. медицинский 1981, стоматологический, преподаватель, канди...
    4.5 (9 отзывов)
    руководитель успешно защищенных диссертаций, автор около 150 работ, в активе - оппонирование, рецензирование, написание и подготовка диссертационных работ; интересы - ... Читать все
    руководитель успешно защищенных диссертаций, автор около 150 работ, в активе - оппонирование, рецензирование, написание и подготовка диссертационных работ; интересы - медицина, биология, антропология, биогидродинамика
    #Кандидатские #Магистерские
    12 Выполненных работ