Горнец Н.Н., Рощин А.Г. Организация ЭВМ и систем (2006) (1186251), страница 47
Текст из файла (страница 47)
Классификация по числу процессоров на первый взгляд значительно проще: все компьютеры принято делить на однопроцессорные и мультипроцессорные (или многопроцессорные). Однако на современном этапе развития технологии практически любо" процессор персонального компьютера содержит несколько средств обработки, т.е. состоит из нескольких процессорных элементов, а в серверах может использоваться несколько процессоров, кото- 228 рые, в свою очередь, включают в себя несколько процессорных элементов.
Наибольший интерес представляет классификация ВС по архитектурным и структурным критериям, предложенная М. Флинном в 1966 г. Она основана на понятии потока, т.е. последовательности команд или данных. Все ВС Флинн предложил подразделять на четыре класса: ОКОД, ОКМД, МКОД и МКМД. ОКОД (одииочпый поток команд и одиночный поток данных). К этой группе относятся классические последовательные компьютеры, в которых в каждый момент может подвергаться обработке лишь один элемент данных по одной команде. В таких компьютерах может быть реализована конвейеризация команд, сопроцессирование, совмещение обработки и ввода-вывода. ОКМД (одипочиый поток команд и множественный поток дапиых).
Высокопроизводительные системы этой группы позволяют выполнять одну операцию сразу над несколькими данными, т.е. в этих компьютерах существует общее управление (один поток команд), обеспечивающее одновременную и синхронную обработку в разных процессорных элементах нескольких данных. К числу таких ВС относятся матричные системы, состоящие из множества процессоров, управление которыми осуществляет единое управляющее устройство. Все процессоры получают одну команду и выполняют ее над локальными данными. К этому классу иногда относят и векторно-конвейерные ВС, в которых обработка элементов данных происходит со смещением во времени.
МКОД (мпожествеппый поток команд и одиночный поток дапиых). К таким ВС следовало бы отнести гипотетические системы, состоящие из множества процессоров, обрабатывающих один элемент данных, но под управлением различных команд. К данному классу иногда относят конвейерные системы, но большинство исследователей считают его пустым. МКМД (миожествеипыи поток команд и множественный поток данных). Системы этого класса обладают несколькими процессорами, работающими со своими потоками данных и по своим командам. Этот класс очень широк: он включает в себя классические мультипроцессорные системы, машины потока данных, нейрокомпьютеры и многие другие.
К этому классу относят и ВС, состоящие из нескольких автономных систем ОКМД, так называемые системы МОКМД. Такая классификация позволяет оценить принцип работы ВС, поэтому часто бывает достаточной. Но в ней последний класс явно перегружен. Поэтому для более точного определения особенностей вычислительных систем Флинн предложил ряд дополнительных критериев: степень крупности операций, способ обмена результатами обработки, способ управления и синхронизации. 229 Процессор может выполнять операции, обладающие различнои мерой крупности — от отдельных аппаратно реализуемых опера ций до процедур и программ.
Поэтому ВС может иметь мелко средне- и крупноблочную структуру. Для организации вычислительного процесса чрезвычайно ва жен способ обмена результатами обработки в отдельных процес сорах. Такой обмен может осуществляться словами или сообше ниями. Для пословного обмена необходимо наличие глобальной (общей для всех процессоров) памяти, разделяющей общее ад ресное пространство, или специальной коммуникационной сети, Системы с пословным обменом называют сильнасвязанными. В них должны быть предусмотрены средства синхронизации процессов и защиты памяти.
Обычно в таких системах используют единую разделяемую во времени систему ввода-вывода. Обмен сообщениями осуществляется в слабосвязанных системах. Для таких систем характерно наличие локальной памяти в каждом процессоре, асинхронная обработка, значительные затраты времени на обмен. Как правило, в слабосвязанных системах процессоры обладают автономными средствами ввода-вывода.
(К таким системам можно отнести локальные сети.) Важным критерием для оценки ВС служит способ организации связей между процессорами и модулями памяти. Обычно используют один из следующих способов связи: через разделяемую магистраль (общую шину), с помощью коммутаторов, посредством многовходовой памяти. Способы управления и синхронизации важны для организации вычислительного процесса. Все ВС делят на синхронные и асинхронные, с централизованным и распределенным управлением. Если в ВС предусмотрена единая глобальная система синхронизации, осуществляющая жестким образом синхронизацию процессов, происходящих в различных процессорах, то такую систему называют синхронной.
Для асинхронных систем характерно распределенное управление, когда каждый процессор обладает собственной системой распределенного управления и синхронизации. Наконец, можно построить ВС, в которой реализация конкретного алгоритма происходит за счет изменения ее структуры: если перестройка структуры ВС производится до начала выполнения алгоритма, то такую ВС относят к статически, а если такая перестройка происходит в процессе выполнения алгоритма — то к динамически перестраиваемым.
Совместно используемая и распределенная память. Высокопроизводительные системы, в которых предусмотрена только общая совместно используемая память, часто называют системами с однородным доступом к памяти. Поскольку в таких системах все процессоры соединяются с модулями памяти при помощи какого- 230 либо коммутатора или шины, то производительность такой ВС определяется пропускной способностью шины. Обычно такие ВС содержат от 4 до 8 процессоров. Если каждый процессор имеет собственную локальную память (в дополнение к общей), то ВС называют системой с неоднород„ым достуном.
Наличие локальных памятей позволяет уменьшить число обращений в общую глобальную память и сделать систему эффективной при числе процессоров 20 ... 30. В многомашинных ВС каждый процессор обладает собственной памятью, к которой и может адресоваться; это системы с раснределенной памятью. Доступ к памяти другого процессора происходит путем обмена сообщениями с ним.
В таких системах (например, локальной сети) каждый процессор может самостоятельно изменять содержимое памяти, не заботясь о согласовании ее с другими процессорами. Но обмен сообщениями вызывает дополнительные издержки: нужно сформировать и передать сообщение, а принимающий процессор должен его обработать и передать ответное сообщение с требуемой информацией. Когеревтность кэш-памяти. В ВС, состоящих из нескольких процессоров и обладающих глобальной памятью, для уменьшения числа обращений к ней (а следовательно, и задержек) все процессоры снабжают собственной локальной кэш-памятью.
При этом каждый процессор способен модифицировать данные в индивидуальной кэш-памяти по своей программе. Затем модифицированные данные могут направляться назад в одну и ту же ячейку глобальной памяти. Таким образом, значение в этой ячейке будет зависеть от того, какой из процессоров последним произвел ее модификацию. В этом и состоит проблема когерентности кэш-памяти. При изменении элемента данных в своей кэш-памяти одним из процессоров необходимо произвести соответствующие изменения в кэш-памяти других процессоров и глобальной памяти системы, чтобы сохранить состоятельность данных. Для решения этой проблемы используют записи с аннулированием и обновлением.
Любая строка в кэш-памяти помечается тегом, состоящим из двух битов состояния: 1 (недействительное), Г (достоверное), А (резервированное) и 2) (измененное). При записи с аннулированием, если какой-либо процессор изменяет содержимое совместно используемого блока в своей кэшпамяти, то все копии этого блока в кэш-памяти других процессоров помечаются как недостоверные, для чего бит г" в них устанавливается в «Оь. При сквозной записи этот модифицированный блок записывается также в глобальную память.
При попытках этих процессоров прочитать отмеченный блок данных из своей кэш-памяти произойдет кэш-промах, т.е. появится необходимость прочитать модифицированный блок из глобальной памяти. При использовании обратной записи нужно вначале переписать этот 231 блок в глобальную память из того модуля, где он был модифи цирован. При залиси с обновлением любые изменения в записи, произве денные в локальной кэш-памяти одного из процессоров, немед лепно дублируются в кэш-памяти и всех остальных. Для внесени„ изменений в каждую кэш-память необходимо передать модифи цированный блок данных всем процессорам, что возможно дале ко не при всякой топологии сети и часто требует значительных затрат времени. Для поддержания когерентности кэш-памяти может быть ис пользовано несколько механизмов: совместно используемая кэшпамять, некэшируемые данные, широковещательная запись, а также протоколы наблюдения и на основе справочника.
При совместно используемой кэш-памяти и отсутствии локальной памяти решение проблемы когерентности тривиально, но такая организация ВС не позволяет добиться высокой производительности: совместная кэш-память удалена от процессоров, и обращение к ней требует выполнения арбитражных функций. Второй механизм — это запрет кэширования данных, которые могут быть изменены. Для реализации такого механизма нужно в памяти хранить признак, указывающий на возможность кэширования слова или блока данных.
Поскольку модификация команд в программах обычно не производится, то нужно помечать лишь кэшируемые данные. В любом случае это приводит к дополнительным затратам на программирование. Механизм широковещательной записи связан с передачей запросов на запись всей кэш-памяти системы, что заставляет все контроллеры проверять наличие копий модифицируемого блока. Этот механизм связан с дополнительными затратами времени на передачу сообщений, Наибольшее распространение получили следующие аппаратные механизмы, реализующие протокол когерентности кэш-памяти: протоколы наблюдения и на основе справочника. В протоколах наблюдения когерентность обеспечивается контроллерами кэшпамяти. Обычно такие протоколы используют в мультипроцессорных ВС с обшей шиной.