Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на вопросы по АВС (окончательная версия)...docx
Скачиваний:
9
Добавлен:
01.07.2025
Размер:
226 Кб
Скачать
☆

8. Стандартный цикл выполнения команд, структура цикла.

Командные циклы – последовательность действий при реализации команд. Одна и та же команда при разной адресации может относится к разным командным циклам.

Командный цикл состоит из нескольких этапов:

  1. Чтение кода команд из памяти . УУ передает адрес команды из СК в ОП (память). Память считывает соответствующую ячейку и возвращает код команды, который помещается в РК. Далее код декодируется.

  2. Загрузка операнда из памяти в АЛУ.

УУ выделяет код А1 и формирует адрес операнда. После этого полученный адрес операнда передается в память и далее операнд передается в АЛУ.

  1. Если операция двуместна, то аналогично производится третий этап В АЛУ.

  2. Выполнение – формирует операции и флаги.

  3. Запись результата в память.

УУ вычисляет адрес результата. Он передается в ОП, а в АЛУ подается приказ.

  1. Формирование адреса следующих команд.

Адрес изменяется в процессе изменения команды. Практически аналогично выполняются команды передачи с тем отличием, что отсутствует этап выполнения команды.

Очень часто в жизни встречаются повторяющиеся процессы, тое есть процессы, состоящие из определенных шагов, повторяющиеся до тех пор, пока не выполнится какое либо условие. Так например, повторять набор номера телефона, до тех пор, пока не будет установлено соединение. Различаются три основных вида циклических процессов. Первое, это циклический процесс со счетчиком.. Этот вид циклического процесса подразумевает повторение одних и тех же операций, определенное число раз. Например, телефонный номер состоит из 10 цифр, то есть для набора телефонного номера, нам необходимо ввести последовательность из 10 цифр. Получается, что для набора номера телефона, мы используем цикл со счетчиком, то есть по очереди набираем цифры с первой по десятую. Рассмотрим простой арифметический пример, вычисление суммы чисел последовательности M размерности N, рисунок 21. Как и в предыдущих примерах сначала определяемся с исходными данными. В данной задаче первым делом определяемся с исходными данными. В данном случае, это размерность N и сама последовательность M. И с результатами работы алгоритма. В данном случае это сумма S. Далее непосредственно с процессом, выполняемым внутри алгоритма. Для определения суммы всех элементов какой либо последовательности нам необходимо их всех сложить. Для складывания всех элементов любой последовательности M необходимо перебрать их всех. Для перебора всех элементов любой последовательности необходимо организовать цикл со счетчиком. Счетчик в данном случае необходим для определения текущего номера элемента, а так же определения конца последовательности, и при каждом повторении цикла прибавлять значение элемента к символическому объекту, определяющему сумму. Кроме того, поскольку мы определяем сумму элементов, необходимо начальное значение символического объекта S приравнять нулю, поскольку при определении суммы цифра «0» не меняет результата. Общая структура цикла со счетчиком приведена на рисунке 22.

Второй вид циклического процесса, это циклический процесс с предусловием. Этот вид циклического процесса применяется в ситуациях, когда процесс, повторяемый в цикле выполняется только в случае выполнения условия, причем перед началом цикла проверяется истинность этого условия. Цикл со счетчиком является частным случаем цикла с предусловием, однако в структуре цикла со счетчиком, за ранее известно сколько раз будет повторен процесс, а в общем случае цикла с предусловием нет. Цикл с предусловием, может не выполнится ни одного раза, если заранее заданы параметры невыполнимого условия, например, если телефон работает, то набирать номер пока не произойдет соединение. В этом примере видно, что для выполнения цикла должны выполниться условия «телефон работает» и «нет соединения», то есть если телефон не работает или соединение уже установлено цикл не выполниться ни одного раза. Рассмотрим алгоритм включающий в себя цикл с предусловием на примере. Найти сумму цифр от Aнач до Aкон с шагом dA, рисунок 23. Исходными данными для построения алгоритма решения задачи являются Aнач, Aкон и dA. Результатом работы алгоритма будет являться сумма, придадим ей символическое название S. Для решения этой задачи нам необходимо сложить все числа, которые входят в промежуток от Aнач до Aкон с шагом dA, то есть на первом шаге мы присвоим символическому объекту значение ноль S=0, на втором шаге мы прибавим к S=Aнач, далее S=S+dA,…, S=S+dA до тех пор, пока Aнач+n*A будет меньше или равно Aкон. Для того, чтобы не повторять одну и туже операцию некоторое количество раз и организуется цикл с предусловием, который будет выполнять этот процесс автоматически.

 

При выполнении циклического процесса, сначала проверяется условие, и если исходные данные заданы таким образом, что Aнач заранее больше Aкон, то при таких исходных данных процесс внутри цикла не выполнится ни разу. Общая структура алгоритма организации цикла с предусловием приведена на рисунке 24.

И последним вариантом циклического процесса является цикл с постусловием, единственным отличие данного вида цикла является то, что сначала выполняется какое либо действие, а затем проверяется, требуется повторить или нет. В примере с набором номера телефона, формулировка будет звучать так: набирать номер телефона и если нет соединения, то повторить. Общая структура алгоритма организации цикла с постусловием приведена на рисунке 25.

9.Простейшая организация конвейера и оценка его производительности

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

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

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

10. Структурные конфликты и способы их минимизации

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

Машина без структурных конфликтов будет всегда иметь более низкий CPI (среднее число тактов на выдачу команды).

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

Как правило, можно разработать неконвейерное, или не полностью конвейерное устройство, имеющее меньшую общую задержку, чем полностью конвейерное.

11. Конфликты по данным, остановы конвейера и реализация механизма обходов

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

Проблема может быть разрешена с помощью достаточно простой аппаратной техники, которая называется пересылкой или продвижением данных (data forwarding), обходом (data bypassing), иногда закороткой (short-circuiting). Эта аппаратура работает следующим образом. Результат операции АЛУ с его выходного регистра всегда снова подается назад на входы АЛУ. Если аппаратура обнаруживает, что предыдущая операция АЛУ записывает результат в регистр, соответствующий источнику операнда для следующей операции АЛУ, то логические схемы управления выбирают в качестве входа для АЛУ результат, поступающий по цепи "обхода" , а не значение, прочитанное из регистрового файла.

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

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

12. Сокращение потерь на выполнение команд перехода и минимизация конфликтов по управлению

Конфликты по управлению могут вызывать даже большие потери производительности конвейера,

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

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

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

перехода, то это может существенно отразиться на производительности машины. При частоте команд

условного перехода в программах, равной 30% и идеальном CPI, равным 1, машина с приостановками

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

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

вопросом. Число тактов, теряемых при приостановках из-за условных переходов, может быть уменьшено

двумя способами:

1. Обнаружением является ли условный переход выполняемым или невыполняемым на более

ранних ступенях конвейера.

2. Более ранним вычислением значения счетчика команд для выполняемого перехода (т.е.

вычислением целевого адреса перехода).

Реализация этих условий требует модернизации исходной схемы конвейера

13. RISC-архитектуры.

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

Наборы инструкций в более ранних архитектурах, для облегчения ручного написания программ на языках ассемблеров или прямо в машинных кодах, а также для упрощения реализации компиляторов, выполняли как можно больше работы. Нередко в наборы включались инструкции для прямой поддержки конструкций языков высокого уровня. Другая особенность этих наборов — большинство инструкций, как правило, допускали все возможные методы адресации (т. н. «ортогональность системы команд (англ.)») — к примеру, и операнды, и результат в арифметических операциях доступны не только в регистрах, но и через непосредственную адресацию, и прямо в памяти. Позднее такие архитектуры были названы CISC (англ. Complex instruction set computer).

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

14. Архитектуры с полным набором команд

Современная технология программирования ориентирована на языки высокого уровня (ЯВУ), главная задача которых — облегчить процесс написания программ. Более 90% всего процесса программирования осуществляют на ЯВУ. К сожалению, операции, характерные для ЯВУ, отличаются от операций, реализуемых машинными командами. Эта проблема получила название семантического разрыва и ведет она к недостаточно эффективному выполнению программ. Пытаясь преодолеть семантический разрыв, разработчики ВМ расширяют систему команд, дополняя ее командами, реализующими сложные операторы ЯВУ на аппаратурном уровне, вводят дополнительные виды адресации и т. п. Вычислительные машины, где реализованы эти средства, принято называть ВМ с полным набором команд (CISC — Complex Instruction Set Computer). К типу CISC можно отнести практически все ВМ, выпускавшиеся до середины 80-х годов и значительную часть из выпускаемых в настоящее время. Характерные для CISC способы решения проблемы семантического разрыва, вместе с тем ведут к усложнению архитектуры ВМ, главным образом устройства управления, что, в свою очередь, негативно сказывается на производительности в целом. Кроме того, в CISC очень сложно организовать эффективный конвейер команд, который, как уже отмечалось, является одним из наиболее перспективных путей повышения производительности ВМ. Все это заставило более внимательно проанализировать программы, получаемые после компиляции с ЯВУ. Был предпринят комплекс исследований, в результате которых обнаружились интересные закономерности: - Реализация сложных команд, эквивалентных операторам ЯВУ, требует увеличения емкости управляющей памяти в микропрограммном УУ. Микропрограммы требуют существенного объёма памяти для хранения, между тем как их доля в общем объеме программы зачастую не превышает 0,2%. - В откомпилированной программе операторы ЯВУ реализуются в виде процедур (подпрограмм), поэтому на операции вызова процедуры и возврата из нее приходится от 15 до 45% вычислительной нагрузки. - При вызове процедуры вызывающая программа передает этой процедуре некоторое количество аргументов. В 98% случаев число передаваемых аргументов не превышает шести. Примерно такое же положение сложилось и с параметрами, которые процедура возвращает вызывающей программе. Более 80% переменных, используемых программой, являются локальными, то есть создаются при входе в процедуру и уничтожаются при выходе из нее. Количество локальных переменных, создаваемых отдельной процедурой, в 92% случаев не превышает шести. - Почти половину операций в ходе вычислений составляет операция присваивания, сводящаяся к пересылке данных между регистрами, ячейками памяти или регистрами и памятью.

15. Меры производительности ВС

Число выполненных команд в единицу времени:

- MIPS – миллион команд в секунду;

- BOPS – миллиард операций в секунду;

- TOPS – 10 в 12 степени операций в секунду;

- FLOPS – число операций с плавающей точкой в секунду.

Число тактов на команду CPI.

CPI =

Абсолютная тактовая производительность.

Основа для сравнения ЭВМ различных типов – это производительность ЭВМ, то есть время, которое затрачивает ЭВМ на выполнение некоторого объёма работы.

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

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

Самой простой (и самой неточной) характеристикой производительности является число MIPS [Million Instructions Per Second] - миллион команд в секунду. В общем случае MIPS определяется как отношение количества команд в программе ко времени её выполнения. Большее число MIPS на практике не значит более высокой производительности ЭВМ. Это число, вообще говоря, может меняться при выполнении разных программ даже на одной ЭВМ. Операции с плавающей точкой состоят из нескольких десятков обычных целочисленных операций, поэтому если ЭВМ с низким числом MIPS имеет боле эффективную реализацию плавающей арифметики, то такая ЭВМ может быть более производительной, чем ЭВМ с высоким числом MIPS.

Для оценки производительности ЭВМ, предназначенных для решения научно-технических задач, в которых существенно используется плавающая арифметика, применяется оценка по числу MFLOPS [Million Floating Point Operations Per Second] - миллион плавающих операций в секунду. Эта оценка гораздо более точна, чем оценка по MIPS, но справедлива только для оценки возможностей ЭВМ при работе с плавающими числами.

Другие способы оценки производительности основаны на использовании специально подобранных тестовых задач. Наиболее известными являются тесты LINPACK, SpecInt92 и SpecFp92, AIM.

16. Основные классы современных параллельных компьютеров

Основным параметром классификации паралелльных компьютеров является наличие общей (SMP) или распределенной памяти (MPP). Нечто среднее между SMP и MPP представляют собой NUMA-архитектуры, где память физически распределена, но логически общедоступна. Кластерные системы являются более дешевым вариантом MPP. При поддержке команд обработки векторных данных говорят о векторно-конвейерных процессорах, которые, в свою очередь могут объединяться в PVP-системы с использованием общей или распределенной памяти. Все большую популярность приобретают идеи комбинирования различных архитектур в одной системе и построения неоднородных систем.

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

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

  • краткое описание особенностей архитектуры,

  • примеры конкретных компьютеров,

  • перспективы масштабируемости,

  • типичные особенности построения операционных систем,

  • наиболее характерная модель программирования (хотя возможны и другие).