Категории компьютерных систем

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

Один поток инструкций / один поток данных

Модель «один поток инструкций / один поток данных» (SISD) представляет собой классическую модель с одним процессором. К ней относятся как компьютеры предыдущих поколений, так и многие современные компьютеры. Процессор такого компьютера способен выполнять в любой момент времени лишь одну инструкцию и работать лишь с одним набором данных. В таких последовательных системах никакого параллелизма нет в отличие от прочих категорий.

Один поток инструкций / несколько потоков данных

В компьютерах с одним потоком инструкций и несколькими потоками данных (SIMD) имеется несколько процессоров, выполняющих одну и ту же операцию, но над различными данными. 57МО-машины иногда называются также векторными процессорами, поскольку они хорошо приспособлены для операций над векторами, в которых каждому процессору передается одна координата вектора и после выполнения операции весь вектор оказывается обработанным. Например, сложение векторов - покоординатная операция. Первая координата суммы векторов - сумма первых координат суммируемых векторов, вторая - сумма вторых координат, и т. д. В нашей 57М?)-машине каждый процессор получит инструкцию сложить пару координат входных векторов. После выполнения этой единственной инструкции результат будет подсчитан полностью. Заметим, что на векторе из N элементов SISD-машине потребуется выполнить N итераций цикла, a SIMD-машине с не менее чем N процессорами хватит одной операции.

Несколько потоков инструкций / один поток данных

Возможность одновременно выполнять различные операции над одними и теми же данными может поначалу показаться странной: не так уж часто встречаются программы, в которых нужно какое-то значение возвести в квадрат, умножить на 2, вычесть из него 10 и т. д. Однако, если посмотреть на эту ситуацию с другой точки зрения, то можно увидеть, что на машинах такого типа можно усовершенствовать проверку числа на простоту[1]. Если число процессоров равно N, то можно проверить простоту любого числа между 1 и jV на М/Ж-машине за одну операцию: если число X составное, то у него должен быть делитель, не превосходящий у[х. Для проверки простоты числа X < N2 поручим первому процессору делить на 2, второму - делить на 3, третьему - на 4, и так до процессора с номером К- 1, который будет делить на К, где К = 4х Если на одном из этих процессоров деление нацело проходит успешно, то число X составное. Поэтому результат достигается за одну операцию. Как нетрудно видеть, на последовательной машине выполнение этого алгоритма потребовало бы по меньшей мере | yfx проходов, на каждом из которых производится одно деление.

Несколько потоков инструкций / несколько потоков данных

Это наиболее гибкая из категорий. В случае M1MD-систем мы имеем дело с несколькими процессорами, каждый из которых способен выполнять свою инструкцию. Кроме того, имеется несколько потоков данных, и каждый процессор может работать со своим набором данных. На практике это означает, что M/MD-система может выполнять на каждом процессоре свою программу или отдельные части одной и той же программы, или векторные операции так же, как и 57М?>-конфигурация. Большинство современных подходов к параллелизму, включая кластеры компьютеров и мультипроцессорные системы, относятся к категории M1MD.

  • [1] Напомним, что простое число - это такое натуральное число, большее 1, которое делится нацело только на само себя и на 1. Например, число 17 простое, поскольку у негонет делителей среди чисел от 2 до 16.
 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >