Hardware - разное

       

Логическая конфигурация и разделы


Принята следующая модель представления многопроцессорной системы: все процессоры ``заполняют'' ячейки в некоем трехмерном ``ящике''. Именно: каждому процессору приписаны уникальные координаты (тройка целых положительных чисел). Так что с точки зрения пользователя процессор кроме своего порядкового номера имеет ``координаты''.

В трехмерном ящике с узлами не может быть дыр: если существует процессор с координатами (0,0,0) и существует (0,0,2), значит обязан существовать и (0,0,1). Кстати, узел (0,0,0) существует всегда (если в системе ненулевое количество процессоров).

Сие означает, что логическое пространство, занимаемое процессорами можно характеризовать положением угловых узлов. В нашей системе логическая конфигурация линейна: (0,0,0)-(15,0,0). Логическая конфигурация может быть (относительно легко) изменена. В принципе в системе с 16 процессорами возможны также конфигурации вида квадрата (0,0,0)-(4,4,0), (0,0,0)-(4,2,2) и др. Удобство той или иной конфигурации определяется в конечном счете характером решаемых задач (так, для расчетов матриц, вероятно, наиболее удобна конфигурация (0,0,0)-(4,4,0)).

Конечная трехмерная решетка, включающая в себя все процессоры данной машины называется основным разделом. Обычно основной раздел делится на несколько более мелких (и, возможно, перекрывающихся) разделов. Самым мелким, понятно, является раздел, состоящий из одного узла. Например, (0,0,0)-(15,0,0) у нас поделен на четыре четырехпроцессорных раздела (0,0,0)-(3,0,0), (4,0,0)-(7,0,0), (8,0,0)-(11,0,0) и (12,0,0)-(13,0,0) и шестнадцать однопроцессорных раздела. В общем случае, разделы могут перекрываться. Важнейшей характеристикой раздела является его размер, т.е. размер трехмерного ящика с узлами, входящими в данный раздел. Размер раздела (0,0,0)-(15,0,0) есть (4,1,1).

ОС PARIX может запускать приложения не только на основном разделе, но и на любом из логических разделов. Так, можно запустить задачу на четырехпроцессорном разделе. При этом останутся свободными три четырехпроцессорных раздела. На них также можно что-нибудь запустить. В вырожденном случае можно запустить одновременно 16 PARIX-приложений, но каждое, увы, будет иметь лишь один процессор. Как ведет себя PARIX, если разделы перекрываются? Так: если из двух перекрывающихся разделов один занят, то на другом не может быть запущено PARIX-приложение (блокируется).

И последнее (перед последующим). Ваша прикладная задача может узнать о параметрах раздела, на котором она запущена. Однако, точка отсчета раздела всегда транслируется в ноль, так что, приложение не может отличить, скажем, запущено оно на (0,0,0)-(3,0,0) или на (8,0,0)-(11,0,0). Оба случая для прикладной задачи будут выглядеть как раздел (0,0,0)-(3,0,0) с размером (4,1,1).



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