- •Глава 37. Многоядерные мультипроцессорные системы
- •37.1. Общая структура многоядерных мультипроцессорных систем
- •37.2. Классификация мпс
- •37.3. Протокол когерентности памяти mesif
- •37.4. Примеры структур современных мпс Структуры современных мпс с процессорами фирмы Intel
- •37.5. Мпс с процессорами Opteron фирмы amd
- •37.6. Структуры мпс на базе процессоров power6, power7 фирмы ibm
- •37.7. Масштабируемость мпс при увеличении числа ядер
- •37.8. Контрольные вопросы
Глава 37. Многоядерные мультипроцессорные системы
37.1. Общая структура многоядерных мультипроцессорных систем
С конструктивной точки зрения процессор - это микросхема. В одной микросхеме (процессоре) может быть реализовано много ядер (единицы или даже десятки).
Операционная система (ОС) оперирует такими единицами работы как процесс и поток. С точки зрения программиста аппаратура ядра - это часть процессора, которая выполняет какую-либо программу (поток).
Многоядерные мультипроцессорные системы (МПС) в общем случае состоят из (рис. 37.1):
нескольких многоядерных процессоров. Каждое ядро имеет в своем составе несколько уровней кэш-памяти.
оперативной памяти и подсистемы ввода-вывода, разделяемыми всеми ядрами процессоров;
коммутационной подсистемы между процессорами, оперативной памятью и подсистемой ввода-вывода.
Рис. 37.1. Упрощенная структура МПС
В процессоре, как правило, также имеется:
последний уровень кэш-памяти, общий для всех ядер;
многоканальный контроллер оперативной памяти, общий для всех ядер;
контроллеры для связи с периферией;
контроллеры интерфейсов для связи с другими процессорами в МПС.
МПС работает под управлением единой операционной системы.
37.2. Классификация мпс
По структуре коммуникационной подсистемы различают МПС:
с общей шиной;
с коммутатором;
с прямыми (непосредственными) связями;
с комбинацией общей шины и коммутатора;
с комбинацией непосредственных связей и коммутатора.
По способам работы с оперативной памятью МПС могут быть:
с логически и физически общей оперативной памятью с равным по времени доступом к любой ячейке памяти (Uniform Memory Access –UMA);
с логически и физически общей оперативной памятью, но с не равным по времени доступом к любой ячейке памяти (NonUniform Memory Access – NUMA). Среди NUMA МПС различают МПС без аппаратной поддержки когерентности кэш-памятей и с аппаратной поддержкой когерентности кэш-памятей (CC-NUMA МПС).
По функциям операционной системы различают:
МПС с равноправным участием всех процессоров (ядер) системы в выполнении функций операционной системы;
МПС с выделенным главным (ведущим) процессором (ядром), который выполняет функции операционной системы. Все остальные (ведомые) процессоры выполняют приложения.
По совокупности всех рассмотренных классификационных параметров МПС делят на симметричные и не симметричные МПС.
Симметричные МПС
В симметричной многоядерной мультипроцессорной системе:
все процессоры и ядра идентичные;
все ядра разделяют общую оперативную память;
время доступа каждого ядра в любую область оперативной памяти одинаково;
одна операционная система;
операционная система равномерно распределяет нагрузку на ядра;
для выполнения приложения могут использоваться несколько ядер;
может применяться та же модель программирования, что и в одноядерной системе;
каждое ядро может выполнять любые процедуры операционной системы, в том числе и по управлению вводом-выводом;
для наращивания мощности (масштабирования) системы достаточно добавить в нее еще несколько процессоров (соответственно, n*k ядер, где: n – количество добавленных процессоров; k – количество ядер в одном процессоре). Однако необходимо реально оценивать, насколько может возрасти производительность МПС при добавлении ядер и неизменности пропускной способности общей оперативной памяти.
Структура симметричной МПС аналогична структуре МПС, приведенной на рис. 37.1.
Основной недостаток симметричных МПС - существуют пределы для наращивания количества ядер при неизменности пропускной способности общей оперативной памяти.
Несимметричные МПС типа CC-NUMA
В не симметричной МПС типа CC-NUMA:
все ядра идентичные;
все ядра разделяют общую оперативную память и общую подсистему ввода-вывода;
оперативная память является логически общей (с единым адресным пространством), но физически распределенной. Это означает, что отдельные части оперативной памяти физически закреплены за каждым процессором. Каждому ядру системы доступна любая ячейка оперативной памяти командами LOAD и STORE. Время доступа ядра в локальную (т.е., закрепленную за данным процессором) область оперативной памяти и в «чужие» области (т.е. области оперативной памяти, закрепленные за другими процессорами) различно.
связи ядер с «чужими» областями оперативной памяти осуществляются через специальные каналы связи;
отдельные части подсистемы ввода-вывода также физически закреплены за каждым процессором.
одна операционная система;
операционная система относительно равномерно распределяет нагрузку на ядра;
для выполнения приложений могут использоваться несколько ядер;
может применяться та же модель программирования, что и в одноядерной системе;
каждое ядро может выполнять любые процедуры операционной системы, в том числе и по управлению вводом-выводом.
для наращивания мощности (масштабирования) системы достаточно добавить в нее еще несколько процессоров с закрепленной за ними оперативной памятью (соответственно, n*k ядер + n*m, где: n – количество добавленных процессоров; k – количество ядер в одном процессоре, m – объем локальной оперативной памяти). При этом одновременно увеличивается число процессоров (ядер), объем и пропускная способность общей оперативной памяти.
Основной недостаток не симметричных МПС – различное время доступа в «локальную» и «чужие» (удаленные) области оперативной памяти.
Типичная структура несимметричной МПС приведена на рис. 37.2.
Рис. 37.2. Типичная структура не симметричной МПС
В настоящее время идеальными симметричными МПС являются только системы, состоящие из одного процессора с n ядрами. Только в таком варианте выполнимы все требования к идеальной (симметричной) МПС.
Все современные МПС, состоящие из нескольких процессоров, являются не симметричными, так как не соблюдается требование об одинаковом времени обращения любого ядра в любую ячейку общей оперативной памяти.
