Скачиваний:
406
Добавлен:
22.01.2014
Размер:
3.77 Mб
Скачать

Лекция 29. Лекция №30 архитектура компьютера

План лекции

1. Понятие архитектуры ПК.

2. Однопроцессорные ПК.

3. Многопроцессорные ПК.

4. Выбор архитектуры.

30.1. Параллелизм, компьютерная архитектура и приложения пользователя

Термин "архитектура" в вычислительной технике означает способ обработки данных, например, "архитектура фон Неймана" или "параллельная архитектура", или определяет принципы организации и функционирования вычислительной системы, выпускаемой промышленностью, например, "архитектура IBM ESA" или "архитектура DEC AXP". Оба этих значения тесно связаны.

Каждая промышленная система базируется на строго определенном подходе к реализации процесса обработки информации. Основная масса современных вычислительных систем функционирует в соответствии с принципом фон Неймана, получившего название "управление потоком команд", так как процесс образуется последовательностью (потоком) команд, задаваемых программой, и имеет архитектуру класса SISD (Single Instruction Single Data - один поток команд, один поток данных). По фон Нейману данные занимают подчиненное положение, последовательность и способ их обработки определяются командами программы, т.е. ход выполнения вычислительного процесса определяется только потоком команд. Задача процессора сводилась к выбору команд программы и обработке данных по очереди.

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

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

Простейшим примером параллелизма данных является последовательность из двух команд:

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

Другой вид параллелизма, как правило, возникает в циклических программных конструкциях типа DO, когда одни и те же операции выполняются N раз. Эти циклы, занимая около 4% кода программы требуют половины времени выполнения программы. Ускорение выполнения циклических вычислений решается с помощью класса векторных операций. простейшим примером цикла может служить операция сложения двух одномерных матриц (векторов) A[1:N] и B[1:N]:

При использовании компьютера фон Неймана последний должен выполнить как минимум N операций сложения элементов векторов A и B, не считая 2N команд приращения индекса и условного перехода. Идея векторной обработки циклов такого рода заключается в том, что в систему команд компьютера вводится операция сложения <A+B>, которая задает сложение всех элементов векторов-операндов. при этом реализуются две возможности ускорения вычислений: во-первых, сокращается число выполняемых процессором команд объектного кода, так как отпадает необходимость в пересчете индексов и организации условного перехода; во-вторых, все операции сложения элементов векторовоперандов могут быть выполнены одновременно в силу параллелизма этих операций. Если в компьютере заложена возможность одновременного выполнения N элементарных операций цикла, то исполнение векторной команды <A+B> потребует в N раз меньше времени, чем последовательная обработка всех операций A[i]+B[i] исходного цикла. В более общем случае, когда цикл DO содержит группу команд, можно говорить о том, что один поток команд (последовательность команд, записанных в теле цикла) обрабатывает множество потоков параллельных данных (рис.30.1). Существует достаточно широкий класс задач (аэродинамика, ядерная физика, обработка изображений и т.д.), в которых процент операций, выполняемых в циклах DO, достаточно велик и достигает 80...90%.

Рис.30.1.

Разработка проблемы программного параллелизма привела к классификации по шести уровням параллелизма. Три верхних уровня параллелизма занимают крупные программные объекты - независимые задания, программы и процедуры программы. Несвязанные операторы, циклы и операции образуют нижние уровни параллелизма (рис.30.2).

Рис. 30.2.

Если сравнить такое ранжирование с категориями "параллельные потоки команд" и "параллельные потоки данных", то становится очевидно, что параллелизм верхнего уровня в основном достигается за счет множества независимых командных потоков, а параллелизм нижнего уровня обязан своим существованием, главным образом, несвязанным потокам данных.

Возникает вопрос, как параллельные потоки команд и параллельные потоки данных связаны с архитектурой компьютеров ?

Ответ прост и заключается в следующей логической цепочке. Если все компьютерные системы различаются по архитектуре, а каждая архитектура ориентирована на определенный вид параллелизма, то для обеспечения наибольшей отдачи от работы вычислительной системы необходимо знать, какой тип параллелизма доминирует в задаче пользователя и как этот программный потенциал реализуется средствами системы. Используемая в компьютере операционная система и параллельный компилятор не могут достичь оптимального распараллеливания операций и в качестве обязательных средств содержат интерактивные оптимизаторы и анализаторы затрат. Более того, знание программистом особенностей функционирования кэш-памяти позволяет увеличить производительность своей задачи на 20...30%.

Какими средствами располагают современные компьютеры для превращения программного параллелизма в характеристики производительности системы ?

В первую очередь, это многопроцессорная обработка, с помощью которой реализуется параллелизм верхнего уровня (рис.30.2). На противоположном полюсе средств параллельной обработки располагается конвейер фаз операций, основной принцип которого следующий: каждый блок процессора выполняет только одну операцию, но зато очень быстро. Процесс выполнения команды разбивается на последовательность типовых этапов (обычно выборка команды, дешифрация операции, чтение операндов, исполнение и запись результата), и большая часть вычислительного процесса проходит в режиме совмещения выполнения команд в конвейере.

Конвейерная обработка является "естественным" средством реализации параллелизма несвязанных операций и циклов, но в каждом конкретном случае со своими нюансами. Несвязанные операции выполняются с помощью набора самостоятельных арифметических устройств в составе центрального процессора (принцип многофункциональной обработки). Обычный набор таких устройств состоит из устройств сложения, умножения, деления и выполнения логических и сдвиговых операций. Эти исполнительные устройства могут иметь конвейерную организацию, как в RISC-процессорах, или более дешевую последовательную структуру, но процессор, рассчитанный на многофункциональный параллелизм, всегда содержит конвейер совмещения операций.

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

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