Исследование скорости обмена данными между ядрами в двухъядерных процессорах
Илья
0
11 мая 2006
Прошлый 2005 год ознаменовался началом массового повсеместного появления и внедрения двухъядерных процессоров в настольные компьютеры. Двухъядерные процессоры представляют собой два расположенных на одной кремниевой пластине полноценных процессорных ядра с полным набором ресурсов, в том числе с кэш-памятью первого уровня (L1D). Кэш-память второго уровня (L2) может быть раздельной для каждого ядра или общей для обоих ядер. На той же подложке может располагаться контроллер шины памяти, контроллер межъядерных коммуникаций, коммутатор и т.п. Многочисленные тестирования показывают преимущества двухъядерных процессоров над одноядерными в ряде задач, поддерживающих многопоточную работу. Но до сих пор не было ни одного тестирования, проливающего свет на то, с какой скоростью ядра могут обмениваться данными. Для понимания материала статьи вспомним, какие проблемы встают при взаимодействии процессоров в многопроцессорной системе. Процессоры работают с данными, которые читаются из оперативной памяти, изменяются и записываются назад в память. Данные, прочитанные из оперативной памяти, кэшируются в процессоре, что значительно ускоряет обработку данных. В многопроцессорной системе к одним и тем же данным может одновременно обращаться более чем один процессор. Если оба процессора читают данные, то проблем не возникает, так как оба процессора получают последние действительные данные из оперативной памяти. Если хоть один из процессоров данные меняет, то данные сначала изменяются в кэш-памяти и лишь много позже могут быть выгружены в оперативную память. При этом возникают потенциальные конфликтные ситуации, если один из процессоров пытается считывать из оперативной памяти данные, которые изменены и находятся в кэш-памяти другого процессора.Методы решения конфликтов, происходящих при обращении к общим данным, называются протоколами поддержания когерентности кэш-памяти. Существует несколько разновидностей таких протоколов, но описание принципов их работы выходит за рамки данной статьи, поэтому более детально читатель может ознакомиться с ними самостоятельно в других источниках (например, о них можно почитать в этой статье, а также в документации производителей процессоров).