
3. Разновидности параллельных числовых систем.
В соответствии с классификацией, предложенной М.Флинном еще в начале 60-х годов прошлого столетия, параллельные вычислительные системы имеют несколько разновидностей.При этом в основу данной классификации заложено два возможных вида параллелизма: независимость потоков заданий (команд), существующих в системе, и независимость (отсутствие логической связанности) данных, обрабатываемых в каждом потоке:
Магистральные(конвейерные),в которых процессоры одновременно выполняют разные операции.Над последовательным потоком обрабатываемых данных; по принятой классификации такие системы относятся к системам с многократным потоком команд и однократным потоком данных МКОД (MISD MultipleInstructionSingleData);
Векторные, в которых все процессоры одновременно выполняют одну команду. Над различными данными однократный поток команд с многократным потоком данных ОКМД (SIMD SingleInstructionMultipleData);
Матричные, в которых процессоры одновременно выполняют разные операции. Над несколькими последовательными потоками обрабатываемых данных многократный поток команд с многократным потоком данных МКМД (MIMD MultipleInstructionMultipleData).
В суперЭВМ используются все три варианта архитектуры параллельных вычислительных систем.
Классический тип суперкомпьютерной архитектуры (однопроцессорная и конвейерная) использует общую оперативную память. Обращение, к которой осуществляется через системную шину. Единое пространство оперативной памяти значительно упрощает программирование за счет более удобных механизмов синхронизации между задачами. Но с ростом числа процессоров наличие общей памяти приводит к возрастанию нагрузки на системную шину, которая в конце концов перестает обслуживать обмен данными между оперативной памятью и процессорами в требуемом темпе. Добавление локальной кэш-памяти в каждый процессор несколько снижает остроту проблемы. Тем не менее, вне зависимости от наличия локальной кэш-памяти системная шина все равно является уязвимым местом такой архитектуры при 8 и более процессорах.
Параллельная архитектура (векторная и матричная) позволяет избежать проблем с системной шиной за счет отсутствия общей для всех процессоров оперативной памяти. Каждый процессор снабжается своей локальной памятью. Чтобы осуществить доступ к локальной памяти другого процессора, используется сеть связи, объединяющая процессоры в систему. Таким образом, в параллельной архитектуре удается снизить нагрузку на шину, ведущую к локальной памяти процессоров, поскольку здесь она обслуживает только запросы на доступ именно к этой памяти, а не каждый запрос на доступ к общей оперативной памяти. Это позволяет строить суперкомпьютеры из сотен и даже тысяч процессоров.
Основным недостатком параллельной архитектуры является сложность программирования, особенно для задач, которым необходима память, превышающая размер локальной оперативной памяти одного процессора. Синхронизация также затруднена, особенно если ее требуется осуществить между параллельными ветвями алгоритма, выполняемыми процессорами, которые разделяет значительное расстояние в сети связи.