Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Применение алгоритма банкира




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

begin integer array Заем, Требование, Клиент_Сем,

Клиент_Пер, Номер_Талера,

Возвращенные_Талеры[1..N],

Талер_Сем, Талер_Пер,

Номер_Клиента[1..M];

integer Взаимн_искл, наличные, k;

boolean procedure Попытка_выдать_талер_клиенту (integer j);

begin

if Клиент_Пер[j]=1 then begin

integer i, Своб_Деньги;

boolean array Заверш_под_сомн[1..N];

Своб_Деньги:=наличные -1;

Требование[j]:=Требование[j]-1;

Заем[j]:=Заем[j]+1;

for i:=1 step 1 until N do

Завершен_под_сомн[j]:=true;

L0: for i:=1 step 1 until N do begin

if Завершен_под_сомн[j] and

(Требование[i]=<Своб_Деньги) then begin

if i<>j begin

Заверш_под_сомн[i]:=false;

Своб_Деньги:=Своб_Деньги+Заем[i];

goto L0;

end

else begin

i:=0;

L1: i:=i+1;

if Талер_Пер[i] = 0 then goto L1;

Номер_Талера[j]:=i;

Номер_Клиента[i]:=j;

Клиент_Пер[j]:=0;

Талер_Пер[i]:=0;

Наличные:=Наличные-1;

Попытка_Выдать_Талер_Клиенту:=true

V (Клиент_Сем[j]);

V (Талер_Сем[j]);

goto L2;

end;

Требование[j]:=Требование[j]+1;

Заем[j]:=Заем[j]-1;

end;

Попытка_Выдать_Талер_Клиенту:=false;

L2: end /* процедуры */

 

Взаимн_искл:=1; Наличные:=M;

for k:=1 step 1 until N do begin

Заем[k]:=0;

Клиент_Сем[k]:=0;

Клиент_Пер[k]:=0;

Требование[k]:=Потребность[k];

Возвращенные_Талеры[k]:=Потребность[k];

end;

for k:=1 step 1 until M do begin

Талер_Сем[k]:=0;

Талер_Перем[k]:=1;

end;

parbegin

Клиент 1: begin... end;

Клиент i: begin...

P(Возвращенные_Талеры[i]); P(Взаимн_искл);

Клиент_Пер[i]:= 1;

Попытка_выдать_талер_клиенту(i);

V(Взаимн_искл);

P(Клиент_Сем[i]);

end;

Талер 1: begin... end;

Талер m: begin integer h;

начало: P(Талер_Сем[m]); P(Взаимн_искл);

Требование[Номер_Клиента[m]]:= Требование[Номер_Клиента[m]] - 1;

Талер_Перем[m]:= 1;

наличные:= наличные + 1;

V(Возвращенные_Талеры[Номер_Клиента[m]]);

for h:=1 step 1 until N do begin

if (Попытка_выдать_талер_клиенту(h))

then goto выход;

end;

выход:V(Взаимн_искл);

goto начало

end;

parend;

end;

Сущность: есть клиент и есть талер. Каждый клиент имеет переменную состояния Клиент_Пер. Если Клиент_Пер = 1 – это означает: “хочу получить заем”. Иначе Клиент_Пер = 0. Каждый талер имеет переменную состояния Талер_Пер. Если Талер_Пер = 1 – это означает: “нахожусь среди свободного капитала”. Клиенты пронумерованы от 1 до N, а талеры от 1 до M. С каждым клиентом связывается переменная Номер_Талера, значение которой после очередной выдачи талера клиенту определяет номер только что выделенного талера. В свою очередь с каждым талером связана переменная Номер_Клиента, значение которой указывает клиента, которому выдан этот талер. Имеются семафоры Клиент_Сем, и Талер_Сем. Фактически возврат талера заканчивается после того, как тот действительно присоединится к наличному капиталу банкира: об этом талер будет сообщать клиенту с помощью общего семафора клиента "Возвращенные_талеры". Значение булевой процедуры "Попытка_выдать_талер_клиенту" говорит о том, удовлетворен ли задержанный запрос на талер. В программе для талера используется тот факт, что возврат талера может теперь привести к удовлетворению единственного задержанного запроса на талер (если банкир распоряжается услугами более чем одного вида, то последнее свойство уже не будет выполняться).

 

Вычислительные структуры

Машины, управляемые контроллерами

Системы типа ОКОД

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

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

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

 

Основные направления совершенствования структуры

Совершенствование логической структуры сводится к минимизации сбоев конвейера и обеспечению получения результата в каждом машинном цикле и идёт по следующим направлениям:

 

1. Расширение КЭШ памяти

2. Быстрое преобразование адресов

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

4. Рассредоточение микропрограмм по определенным устройствам

5. Применение встроенных матричных и арифметических процессоров

6. Распараллеливание операций в операционном устройстве

 

Системы с параллельным выполнением операций. Параллельные процессы.

С точки зрения организации обработки параллельные процессоры занимают промежуточное положение между системами ОКОД и ОКМД.

Различают два типа параллельных процессов:

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

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

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

 

Схемы типа ОКМД

· ЛП ¾ локальная память

· ПЭ ¾ процессорный элемент

· УУ ¾ управляющее устройство

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

 

Особенности организации процессоров по принципу ОКМД (одиночный поток команд – множественный поток данных)

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

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

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

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

 

Для примера рассмотрим организацию взаимодействия процессорных элементов и памяти в процессоре BSP (Burroughs Scientific Processor). Содержит 16 процессорных элементов, выполняющих арифметические операции, которые через сеть координатной коммутации соединены с памятью, состоящей из 17 банков. Устройство управления, декодируя машинные команды, преобразует их в микрокоманды длиной 128байт. Микрокоманды поступают на процессорные элементы, в каждом из которых находятся одни и те же операции. Чтобы все процессорные элементы работали без простоев, необходимо непрерывно подавать на них данные из памяти и предотвращать возникновение конфликтов при обращении к памяти. Число банков больше, чем число процессорных элементов, обеспечивает возможность одновременного считывания элементов строк, столбцов и диагоналей матричных данных. Рассмотрим для примера распределение по матрице 6 процессорных элементов из 7 банков памяти.

a11 a12 a13 a14 a15

a21 a22 a23 a24 a25

a31 a32 a33 a34 a35

a41 a42 a43 a44 a45

Банк памяти: (Процессорные элементы)

Системы с операционным конвейером

Пример такой структуры рассмотрим на принципе машины изображений, которая имеет следующую структуру:

Один из способов обработки изображений – фильтрация. Элементы изображения F, начиная с левого верхнего угла, последовательно через одну микросекунду подаются в строчный буфер. Когда в строчный буфер поступает 7 строк по 512 элементов +1, с его выхода выделяется вектор F1. затем через такт в 1 микросекунду будет выдаваться вектор F1, F2 и т.д. В ходе выполнения пространственной фильтрации над векторами F необходимо вычислять такое выражение: Fiw1 + Fi+1w2 + Fi+2w3 +…+ Fi+8w8. когда в текущий момент на выходе строчного буфера находится Fi, через каждые 125 наносекунд с выхода буфера весовых коэффициентов на элементы умножения выдаются вектора w1, w2, …, w8, и получаются значения частичных произведений:

 

Fiw1 Fiw2 … Fiw7 Fiw8

Fi+1w1 Fi+!w2 … Fi+1w7 Fi+!w8

 

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

Мультипроцессорные системы

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

К мультипроцессорным системам относятся систолические матрицы или систолические процессоры. Систолические матрицы являются одной из структур специализированных операционных устройств, предназначенных для скоростной обработки больших объемов данных. Систолические матрицы обладают следующими особенностями:

1. Удобна для выполнения в виде СБИС ‑ в ней одинаковые операционные элементы размещаются строго регулярно в виде одно- и двумерных массивов. Каждый процессорный элемент обменивается данными с соседними элементами.

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

Структура связей в матрице определяется конкретным применением. Рассмотрим работу матрицы на основе перемножения линейчатой матрицы и вектора.

 

В начальном состоянии все Yi равны 0. На ПЭ с интервалом 2 такта, в порядке возрастания i, подают слева Xi и справа Yi. В самих процессорных устройствах Xi и Yi перемещаются соответственно вправо и влево, с интервалом в 1 такт. Элементы A ленточной матрицы перемещаются сверху вниз. В ПЭ поступившие значения X и A перемножаются, а результаты суммируются с поступившим значением Y. Такие операции циклически повторяются и с выхода ПЭ1, через каждые 2 такта, выдаются значения Yi в порядке возрастания i. Если ширина ленточной матрицы M, то все рачёты завершаются через 2M+N тактов, N = p+q-1. При обычных вычислениях потребовалось бы MN тактов.

 

Транспьютеры

Факторы, определяющие производительность машины:

1. Время переключения вентилей.

2. Расстояние между устройствами.

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

Inmos ¾ первый разработчик транспьютеров. В это же время был разработан язык программирования Okkam.

Транспьютеры относятся к классу RISC-процессоров (выполнение команды за 1 такт). Система команд ориентирована на поддержку языка высоко уровня Okkam ¾ язык параллельных программ.

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

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

Мультипроцессорная система на базе транспьютеров представляет собой совокупность транспьютеров, соединённых линиями связи. Одинаковая модель параллельных вычислений поддерживается как внутри отдельного транспьютера, так и рамках мультипроцессорной системы => программа, написанная на для мультипроцессорной системы может быть отлажена на одном транспьютере. Исключение составляет ограничение числа каналов связи процесса с процессами, протекающими на других транспьютерах.

Процессор транспьютера состоит из 32- или 16- разрядного CPU, интерфейса внешней памяти, двух или четырёх двунаправленных каналов (линков), таймера, программируемого блока событий, внутреннего ОЗУ (4 Кб). Некоторые модели содержат 64-разрядный процессор с плавающей точкой и интерфейсы для подключения HDD, дисплеев, сетевых карт...

 

Центральный процессор

Центральный 32-разрядный процессор работает на частоте до 30 МГц. Аппаратный планировщик CPU организует в режиме разделения времени одновременное выполнение нескольких процессов.

Каждому процессу в момент его создания в адресном пространстве выделяется рабочая область памяти и устанавливается его приоритет. Реализована двухуровневая система приоритетов: 0 ¾ высокий приоритет, 1 ¾ низкий приоритет. Адрес рабочей области и приоритет образуют дескриптор процесса.

Центральный процессор содержит два регистра таймера. Высокоприоритетный регистр инкрементируется каждую мкс, а низкоприоритетный ¾ каждые 64 мкс.

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

Регистры общего назначения A, B, C образуют регистровый стек с FIFO режимом;-) (A ¾ вершина. Операнды помещаются в A и происходит смещение A à B, B à C; результат операции формируется в регистре A).

Все команды транспьютера ¾ однобайтовые и выполняются за один такт. Старшие 4 бита ¾ код операции, младшие 4 ¾ формирование операнда или команды в регистре операндов.

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

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

Выполнение операций с плавающей точкой, распознавание команд и передача их на выполнение осуществляется аппаратно в CPU, там же выполняется вычисление адресов операндов и загрузка их в FPU, который также содержит три регистра A, B, C. После передачи команды на исполнение в FPU CPU продолжает выполнение потока команд, если команда относится к первому классу или ожидает результат выполнения, если команда относится ко второму классу.

 

Распределение памяти в транспьютерах

Может быть адресовано до 232=4 Гб. Адресация начинается с отрицательного адреса 8000:0000 (доп. код). Структурно вся оперативная память подразделяется на внутрикристальную и внешнюю. Объём внутрикристальной равен 2 или 4 Кб. Внешняя и внутренняя памяти равнодоступны и имеют единую адресацию. Внутрикристальная память находится в младших адресах. В неё обычно помещают наиболее часто используемые подпрограммы, т.к. время доступа к ней меньше.

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

 

Диспетчеризация процессов

Каждый из процессов в данный момент времени может быть:

1. Выполняемым

2. Активным (готовым к выполнению и находящимся в очереди соответствующего приоритета)

3. Ожидающим сигнала таймера

4. Ожидающим ввода/вывода

 

Для выполняющегося процесса регистр I содержит адрес выполняемой команды, а W ¾ его дескриптор. Для организации очереди процессов используется две пары регистров, указывающих на начало и конец очереди высокого и низкого приоритетов:

Fptr0 Bptr0

Fptr1 Bptr1

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

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

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

Если высокоприоритетный процесс становится активным в момент выполнения низкоприоритетного процесса, то последний прерывается, его состояние сохраняется в области зарезервированных адресов и инициируется выполнение высокоприоритетного процесса. После завершения выполнения высокоприоритетного процесса, возобновляется выполнение прерванного низкоприоритетного процесса.

 

Ввод / вывод

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

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

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

Если содержимое слова состояния канала не равно MinInt => данный процесс подошёл к обмену вторым и в слове состояния канала находится дескриптор процесса, ранее инициировавшего обмен. По этому дескриптору находятся данные при операции ввода или буфер для данных в случае операции вывода.

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

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

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

Если один из общающихся через линк процессов не готов к приёму данных, байты накапливаются в регистрах данных линка. При заполнении регистра подтверждение после получения очередного байта не выдаётся и передающий линк останавливает передачу до освобождения регистра линка.

Передача по линку асинхронна, требуется только точный кварцевый генератор для задания частоты 5 МГц.

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

 

Транспьютероподобные процессоры

серии Квант

Это семейство 32-разрядных процессоров с оригинальной структурой, сочетающей RISC-подход с методикой длинного командного слова. Характеризуется:

1. Высокой степенью внутреннего параллелизма процессов обработки

2. Конвейерное выполнение команд

3. Гарвардской архитектурой памяти

4. Наличием последовательных коммуникационных каналов или линков.

Микропроцессор работает с внешними раздельными КЭШ-памятями команд и данных и может использовать сопроцессор. Память данных может хранить только данные, а память команд – как команды, так и данные. Такой подход называется Модифицированной Гарвардской архитектурой.

 

Устройство управления

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

Адресное устройство

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

Адресное устройство содержит в программном счетчике адрес следующей команды, поддерживает в памяти стек адресов возврата из подпрограммы, выполняет все вычисления адреса в 16-разрядном адресном сумматоре. Файл адресных регистров содержит 8 или 4 16-разрядных адресных регистра.

 

Арифметическое устройство

Арифметический блок способен выполнять 16 логических и 14 арифметических операций, в том числе байтовые операции или пошаговое умножение 32-разрядного множимого на 2 разряда множителя. Логический блок параллельно может выполнять логические операции с арифметическими. Все операции выполняются над 32-разрядными операндами за один такт. Универсальный сдвигатель способен выполнять за один такт логический, арифметический или циклический сдвиг 32-разрядного слова влево или вправо на число разрядов от 0 до 31, а также осуществлять циклические сдвиги внутри байтов, тетрад и пар.

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

 

Системные устройства

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

 

Конвейер процессоров

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

 

Система команд

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

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

Конвейеризация внутренних процессов и совмещение во времени выполнения операций в различных функциональных устройствах микропроцессора позволяет выполнять до четырех команд за один такт.

 

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...