Концепции аппаратных решений. Мультипроцессоры.

Многопроцессорные системы неоднократно пытались классифицировать, но ни одна из моделей не получила широкого распространения. Будем называть мультипроцессорными системы, в которых процессоры работают с общей памятью, а мультикомпьютерными - системы, в которых у каждого процессора есть своя собственная память. Таким образом, в мультипроцессорных системах все процессоры используют единое адресное пространство. Поэтому если один процессор записал в ячейку памяти с номером 256 значение 1003, то другой процессор прочтет из ячейки с номером 256 число 1003.

Мультипроцессорные системы строятся, как правило, из процессоров одного типа. Основная проблема при построении мультипроцессорной системы – организация совместного доступа к блокам памяти. Возможны две схемы организации: шинная и коммутируемая, причем коммутируемые схемы делятся в свою очередь на коммутационную решетку и омега-сеть.

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

P1   Ш M1
       
P2   И M2
       
P3   Н M3
       
P4   А M4

Рисунок 4 – Шинная схема SMP

 

Коммутационная решетка представляет собой набор скоростных узловых коммутаторов. Преимущество коммутационной решетки состоит в том, что возможен одновременный доступ к различным модулям памяти.

 

P1 M1 M2 M3 M4
P2  
P3  
P4  

Рисунок 5 – Коммутационная схема SMP

Для осуществления доступа некоторого процессора к заданному блоку памяти требуется установить соединение на одном узловом коммутаторе, находящемся на пересечении линии связи, идущей от процессора, и линии связи, идущей от блока памяти. Недостаток коммутационной решетки в том, что ее сложность, то есть количество узловых коммутаторов пропорционально произведению количества входных портов на количество выходных. Для соединения 4 процессоров (входы от процессоров обозначены, как P) с 4 блоками памяти (входы от них обозначены, как M) потребуется коммутатор с 16 узловыми коммутаторами, обозначенными на рисунке кружочками. Для суперкомпьютера с 7200 процессорами и приблизительно с таким же количеством блоков памяти потребовалась бы коммутационная решетка с 50 000 000 узловых коммутаторов. Трудно себе представить даже размер такого устройства. И совершенно очевидно, что даже вследствие его большого размера невозможно обеспечить высокую скорость работы.

Омега сеть – это сеть коммутаторов с фиксированным небольшим количеством портов. На рисунке изображена омега-сеть для четырех процессоров и четырех блоков памяти. Количество внутренних узловых коммутаторов в этой схеме значительно ниже: всего четыре против шестнадцати. Но время доступа процессора к оперативной памяти несколько больше: во-первых, связь осуществляется через два узловых коммутатора, а не через один, как в коммутационной решетке. Во-вторых, в омега-сети на обоих узловых коммутаторах по пути к памяти возможны конфликты одновременных запросов, причем даже если соперник обращается к другому блоку памяти. Тогда как в коммутационной решетке конфликт возникает только при одновременном доступе к одному и тому же блоку памяти.

 

 

P1       M1
P2         М2
P3         М3
P4       М4

Рисунок 6 – Связь типа «Омега-сеть»

 

Для построения омега-сети, реализующей доступ к большему количеству блоков памяти, но использующей четырехпортовые узловые коммутаторы, потребуется расположить их в три и более слоев.