Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
100
Добавлен:
02.05.2014
Размер:
38.91 Кб
Скачать

4

Повышение производительности обработки информации.

За последние примерно 40 лет основными архитектурными решениями в области повышения производительности ЭВМ и вычислительных систем являются расслоение памяти, перекрытие, конвейеризация и параллелизм. Исторически эти решения появлялись в следующей последовательности.

К ранним моделям, в которых использовалось перекрытие относят UNIVAC 1. Прежде чем знакомить Вас с особенностями этой машины, остановлюсь на понятии перекрытие. Перекрытием называют способность ЭВМ одновременно выполнять не одну, а несколько операций обработки данных. В упоминаемой выше UNIVAC 1 было применено такое совмещение операций, которое впоследствии стало классическим: в ней перекрывались исполнение программы и выполнение операции ввода-вывода.

В IBM 7094 II сделан дальнейший шаг: использовано расслоение памяти для ускорения обращений к ней. Суть этого решения в том, что ОЗУ делят (расслаивают) на n независимых сегментов. Каждый сегмент имеет свое устройство управления. Величину n называют глубиной расслоения. Ячейки с последовательными номерами находятся в последовательных сегментах. Так, если n=4, то нулевая ячейка будет в первом сегменте , первая – во втором и т.д., иначе говоря, ячейка с номером 4i будет в первом сегменте, а с номером 4i+3 – в четвертом. Если полный цикл обращения к одному сегменту ОЗУ составляет К единиц времени, а глубина расслоения равна n, то к каждому последовательному сегменту можно обращаться через K/n единиц времени после обращения к предыдущему. Когда программа обратится к n подряд следующим ячейкам памяти, то пройдет время К и можно будет повторить цикл обращения. Быстродействие ОЗУ как будто увеличивается в n раз. Однако на практике такая оптимизация достигается редко из-за непоследовательных обращений к ячейкам памяти ЭВМ. Практика показала, что при обращении к адресам в памяти ЭВМ в случайном порядке, достигается продолжительность цикла обращения

Т.е. выигрыш от расслоения все равно получается существенным, хотя и не в n раз.

Разбиение процесса исполнения команды (конвейеризация) впервые применено в машинах STRETCH и LARC (в литературе идеи реализации машин датируются началом 60-х годов (1962), а описание достигнутых эффектов – к началу 70-х (1971, 1975)). В первой ЭВМ конвейер был двухступенчатым, во второй – четырехступенчатым. Существенному увеличению производительности за счет конвейеризации мешало то, что в этих машинах не была решена проблема снижения влияния помех.

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

Вернемся теперь к машинам STRETCH и LARC. В них зависимые команды вызывали приостановку конвейера. Здесь зависимость понимается в смысле, когда команда, находящаяся на одной ступени, зависит от результата выполнения команды, находящейся на другой ступени. Более того, в этих машинах останов на одной ступени приводил к приостанову на всех предшествующих ступенях, даже если какая-либо из предшествующих команд не зависела от остановленной команды и могла продвигаться по неиспользуемым ступеням.

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

К первым машинам с конвейерной организацией относят IBM 360/91 (1967 г.). В ней была реализована предварительная выборка команд, причем, если предполагалось ветвление, то выбирались команды из обеих ветвей и ставились в очередь на конвейер. Когда исполнение команды ветвление определяло одну из ветвей программы, ненужная последовательность команд отбрасывалась. Уже в этой ЭВМ некоторые команды выполнялись непоследовательно, но за счет правильной организации процесса пересылки результатов все они оказывались на своих местах.

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

К высокопараллельным ЭВМ относят ILLIAC IV (1968 г.). Построена была эта машина для решения очень больших научных задач. Такая ее специализация объясняет тот факт, что в ней использовались 64 копии блока, сходного с арифметическим устройством традиционной машины. Каждая копия имела свои регистры, сумматор и память, все копии могли работать одновременно. Следует отметить, что успехи конвейеризации не могли не повлиять на архитектуру параллельных машин, разрабатываемых в более поздние сроки. Так, в параллельной ILLIAC IV используется перекрытие выполнения команд.

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

  • создание многомашинных комплексов – это направление развивается как вычислительные сети;

  • создание многопроцессорных комплексов.

Многопроцессорные комплексы реализуются или с распределенной между процессорами памятью, или с общим ОЗУ, или смешанного типа. При работе с общей памятью возможны ситуации, когда один процессор заменил старые данные новыми, а второй обращается к ним, как к старым значениям. Чтобы избежать таких проблем, при каждом процессоре создается кэш-память, в которой помещаются защищенные от других процессоров данные.

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

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

Соседние файлы в папке Лекции по ассемблеру