yigal_s' Journal
 
[Most Recent Entries] [Calendar View] [Friends View]

Monday, March 11th, 2013

    Time Event
    2:12a
    Оказывается, тут с С++ недавно вышла очень нетривиальная ситуация касательно реализации на процессоре x86.

    Александр Терехов предложил совершенно очевидную реализацию тотально упорядоченных атомарных операций:
    http://www.decadent.org.uk/pipermail/cpp-threads/2008-December/001933.html

    Load Seq_Cst: LOCK XADD(0)
    Store Seq Cst: LOCK XCHG

    а приняли в работу совсем другую, совершенно неочевидную:
    http://www.cl.cam.ac.uk/~pes20/cpp/cpp0xmappings.html

    Load Seq_Cst: MOV (from memory)
    Store Seq Cst: (LOCK) XCHG

    на основании, кажется, единственно вот этой практически математической статьи: http://www.cl.cam.ac.uk/~pes20/cpp/popl085ap-sewell.pdf. Ничего больше мне пока раскопать в этом казусе не удалось.

    Понятно, что сама по себе команда MOV никакую тотальную упорядоченность не обеспечивает, но в сочетании с XCHG - якобы достигается ровно тот же эффект. И, конечно же, с колоссальной экономией на более частых операциях чтения. Не знаю даже что и сказать, статью пока читал по верхам, вглубь ниасилил.

    Между прочим, я лет 10 назад обо всём этом в ЖЖ писал: http://yigal-s.livejournal.com/2120.html - разумеется, о первом варианте, а не о втором.

    << Previous Day 2013/03/11
    [Calendar]
    Next Day >>

About LJ.Rossia.org