Конвейерная обработка данных процессором



СИСТЕМЫ С КОНВЕЙЕРНОЙ ОБРАБОТКОЙ ИНФОРМАЦИИ

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

Магистральные системы относятся к классу МКОД — системы с множественным потоком команд и одиночным потоком данных. Принцип магистральной обработки основан на разделении вычислительного процесса на несколько подпроцессов, каждый из которых выполняется на отдельном устройстве, причем последовательные подпроцессы могут выполняться на своих устройствах подобно тому, как это имеет место на промышленных конвейерных линиях. Этот принцип может применяться на различных иерархических уровнях вычислительного процесса, начиная с уровня логического вентиля.

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

На рис. 35а показана схема четырехэтапной арифметика-магистральной обработки, когда каждая команда выполняется последовательно на четырех устройствах, а последовательность четырех соседних команд заполняет арифметическую магистраль системы так, что одновременно на последнем четвертом устройстве выполняется завершающий четвертый этап первой команды, на третьем устройстве — третий этап второй команды, на втором устройстве — второй этап третьей команды и на первом устройстве -начальный, первый этап четвертой команды. После завершения выполнения устройствами своих этапов обработки первая команда оказывается выполненной и выводится из магистрали, вторая, третья и четвертая команды поступают на очередные четвертый, третий и второй этапы соответственно, а в первое устройство поступает очередная пятая команда для начала выполнения на первом этапе и так далее. Арифметико-магистральная обработка реализована в системах STAR 100 и ASC, в первой из которых используется четырехэтапная магистраль для сложения и шестиэтапная магистраль для умножения, а во второй -магистраль — из восьми этапов общего назначения.

Более высокий уровень магистральной обработки представляет собой командно-магистральная обработка (рис. 356). В этом случае каждая команда потока команд выполняется на соответствующем ей функциональном обрабатывающем устройстве, которые могут работать одновременно. Ясно, что для эффективной работы обрабатываемые команды должны быть независимыми, а их состав в динамике счета — по возможности идентичным составу функциональных устройств, чтобы одновременно загружать как можно большее число функциональных устройств. Такой способ магистральной обработки является развитием способа опережающего просмотра команд в обычных ЭВМ и называется также способом «параллелизма функциональных устройств», Наиболее известным примером реализации командно-магистральной обработки является система CDC 6600, в которой имеется 10 специализированных устройств обработки (устройства умножения с плавающей запятой, сложения целых чисел, приращения и другие). На практике оказалось, что в среднем загружена примерно четвертая часть ее функциональных устройств одновременно. Концепция макромагастральной обработки (рис. 35в) основана на следующих соображениях. Пусть множество данных может быть обработано посредством решения последовательно двух (или более) различных задач. Тогда эту обработку можно осуществить при помощи двух различных процессоров, каждый из которых выполняет решение одной из задач. Данные га буфера поступают на исполнение в первый процессор, который выполняет решение первой задачи, после чего результаты поступают в следующий буфер, откуда они передаются во второй процессор для решения второй задачи. В это же время следующий массив данных поступает из первого буфера в первый процессор для решения первой задачи и так далее, в результате чего оба процессора работают одновременно (в наиболее благоприятном случае -без перерывов). Ясно, что макромагистральная обработка может быть реализована при помощи обычных процессоров. Таким образом, все три вида обработки характерны тем, что имеется магистраль (конвейер) обработки с независимыми компонентами, которые при заполнении магистрали работают, по возможности, одновременно и без перерывов. Магистральные системы можно различать не только по способу магистральной обработки, но и по типу конфигурации магистрали — статические и динамические с аппаратной или с программной перестройкой, а также по типу команд — с обычными или векторными командами. Функциональные возможности магистральной обработки наиболее полно проявляются при векторной обработке данных, когда при помощи так называемых векторных команд выполняются однотипные операции над упорядоченной группой данных.

Читайте также:  Видеокарты амд 2020 список

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

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

1) число конвейерных процессоров в системе определяется алгоритмическими возможностями решаемых задач, надежностью управляющего устройства и технико-экономическими ограничениями; это число существенно меньше 10;

2) число модулей в одном конвейерном процессоре не может быть произвольно большим, что следует, например, из алгоритмов решения сложных задач и неабсолютной надежности электронных компонентов; это число порядка 10;

3) число секций в любом модуле (при реализации конвейерного способа обработки информации на микроуровне) ограничивается алгоритмами выполнения арифметических операций и имеет порядок 10.

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

Читайте также:  Вентилятор на процессоре выдувает или вдувает

Источник

Конвейерная обработка

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

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

· С 1 – выборка команды (по адресу, заданному счетчиком команд, из памяти извлекается команда и помещается в буфер);

· С 2 – декодирование команды (определение КОП и типа операндов);

· С 3 – выборка операндов (определение местонахождения операндов и вызов их из регистров);

· С 4 – выполнение команды;

· С 5 – запись результата в нужный регистр.

Работу конвейера можно условно представить в виде временной диаграммы на которой обычно изображаются выполняемые команды, номера тактов и этапы выполнения команд. В качестве примера рассмотрим конвейерную машину с пятью этапами выполнения операций, которые имеют длительность 50, 50, 60, 50 и 50 нс соответственно. Пусть накладные расходы на организацию конвейерной обработки составляют 5 нс. Тогда среднее время выполнения команды в не конвейерной машине будет равно 260 нс. Если же используется конвейерная организация, длительность такта будет равна длительности самого медленного этапа обработки плюс накладные расходы, т.е. 65 нс. Это время соответствует среднему времени выполнения команды в конвейере. Таким образом, ускорение, полученное в результате конвейеризации, будет равно отношению:

Среднее время выполнения команды в не конвейерном режиме:

——-= 4
Среднее время выполнения команды в конвейерном режиме: 65

Рис. 12.2 Диаграмма работы простейшего конвейера

Рис. 12.3 Эффект конвейеризации – четырехкратное ускорение

Мы уже упоминали, что параллелизм нижнего уровня реализуется на однопроцессорных машинах. Название однопроцессорные предполагает, что подобные архитектуры выполняют только один поток команд. Классическим примером однопроцессорной архитектуры является архитектура фон Неймана со строго последовательным выполнением команд. По мере развития вычислительной техники архитектура фон Неймана обогатилась сначала конвейером фаз операций, а затем многофункциональной обработкой и получила обобщенное название SISD. Оба вида средств низкоуровнего параллелизма впервые были введены в компьютерах Control Data 6600 и 7600 в начале 70-х годов и с тех пор применяются во всех компьютерах повышенного быстродействия. Наибольшее развитие идеи SISD-параллелизма получили в RISC-архитектурах.

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

Читайте также:  Видеокарта msi geforce rtx 3080 ventus 3x oc 10gb retail

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

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

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

Конфликты по данным возникают в случаях, когда выполнение одной команды зависит от результата выполнения предыдущей команды. Устранение конфликтов по данным типов WAR и WAW достигается путем отказа от неупорядоченного исполнения команд, но чаще всего путем введения буфера восстановления последовательности команд.

Источник