Сервер - статьи

       

Пифагоровы штаны — на все стороны равны


Как следует из названия, главная особенность данной технологии в том, что все процессоры имеют одинаковые приоритеты для доступа ко всем системным ресурсам и управлению ими. На практике получается: все процессоры симметричной системы «видят» ее ресурсы одинаково, не подозревая о существовании «коллег». Роль «администратора» в вопросах распределения задач между процессорами отводится операционной системе, самостоятельно решающей, какой из ветвей задачи нагрузить тот или иной процессор.

Поскольку оперативная память для процессоров также является разделяемым ресурсом, доступ к ней от процессоров должен осуществляться по единой шине. Необходимо сразу заметить, что симметричность системы относительно памяти — весьма важное преимущество SMP-систем, ведь в таком случае на всех процессорах может выполняться только одна копия операционной системы. И если все процессоры, которые разделяют системную память, разделяют и единый образ этой памяти (то есть используют одни и те же «координаты» данных), говорят о когерентной (согласованной) памяти. Так, если все процессоры читают байт по одному и тому же адресу, они получают одинаковое значение этого байта. В процессорах со встроенной кэш-памятью ее содержимое также должно быть согласовано с системной памятью. Существует целый ряд механизмов, позволяющих поддерживать когерентность данных на всех уровнях.

Что касается соединения процессоров и контроллера памяти, наиболее распространенным решением является использование одной системной шины. Впрочем, подобная архитектура плохо масштабируется, ведь при увеличении числа процессоров шина становится узким местом. Для преодоления данного ограничения были разработаны другие решения. Среди них наиболее распространена архитектура с иерархией шин. В этом варианте несколько процессоров объединяются одной шиной в узел, а узлы подключаются к общей шине, соединяющей их с контроллером памяти и другими контроллерами набора системной логики. Существует также решение, позволяющее объединять множество процессоров. Оно подразумевает использование коммутируемой памяти, при которой каждый процессор получает доступ к требуемому участку памяти по коммутируемому каналу. Когерентность памяти для коммутируемой архитектуры обеспечивается проще, чем для шинной, поэтому такие системы лучше масштабируются. Однако их стоимость возрастает линейно с числом процессоров, а большое число коммутаторов снижает общую производительность системы.



Содержание раздела