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

Tuesday, October 11th, 2011

    Time Event
    1:13a
    когерентный кеш под мютексом )))
    Очередная мультитредная страшилка, на этот раз от Скотта Мейерса.

    http://skillsmatter.com/podcast/home/cpu-caches-and-why-you-care на 0.35:00 вплоть до начала 37-й минуты.

    Оказывается, когерентный кеш имеет страаашную проблему - если два процессора одновременно доступаются до одного и того же участка памяти - один с операцией чтения, а другой с операцией записи - когерентность кэша (кешей) будет нарушена. В чем это будет заключаться - Скотт вроде бы не поясняет, но угрожает страшными последствиями тем, кто не будет обращаться к разделяемому участку памяти под... мютексом или с помощью интерлок-операций! Хорошо хоть про интерлоки сказал, а то я б так и не догадался, как с подобной проблемой справляется код самих мютексов. )))

    Я, конечно, не большой специалист по когерентности кешей. Поиск по интеловской процессорной документации ничего подобного не обнаружил, ну да может я плохо искал?

    Забавно что сразу после этого Скотт рассуждает про false sharing, т.е. про использование несколькими процессорами приватных (не разделяемых) данных, находящихся на одной линии кеша, которое приводит к потере производительности. И там же говорит, что вообще вся эта механика кешей работает на уровне кеш-линий, а не на уровне отдельных слов памяти. Ну вот казалось бы, в этом самом месте нужно либо заявить, что на этом самом false sharing код должен вообще ЛОМАТЬСЯ, поскольку это вот ровно тот случай доступа к разделяемой кеш-линии без всяких мютексов и интерлоков, т.е. заявить, что практически ЛЮБОЙ мультитредный код сегодня может работать неверно, либо хлопнуть себя по лбу и сказать, что вообще-то когерентный кеш он на то и когерентный, что он когерентный ВСЕГДА и безо всяких исключений, а предыдущий пассаж с предупреждением об опасностях для кеша доступа без мютекса был полнейшей пургой.

    Остался от этого пассажа в полнейшем недоумении.

    << Previous Day 2011/10/11
    [Calendar]
    Next Day >>

About LJ.Rossia.org