
- •5. Способы адресации в пэвм с 32-разрядной архитектурой
- •9. Эффект гонок в микропрограммных автоматах и способы его устранения
- •17. Сегментация микропрограмм
- •18. Назначение, основные характеристики и функции систем прерывания программ
- •19. Запоминание состояния, переход к прерывающей программе и возврат из нее
- •20. Приоритетное обслуживание прерываний
- •22. Сравнение систем прерываний ес эвм и пэвм
- •23. Классификация систем памяти (см. Пособие Память эвм)
- •24. Сегментная адресация памяти
- •25. Страничная адресация памяти
- •26. Защита памяти
- •27. Защищенный режим в пэвм
- •28. Алгоритмы замещения информации в основной памяти
- •29. Алгоритмы управления очередностью обмена с внешними зу (см. Пособие Память эвм)
- •30. Принципы построения систем ввода-вывода в эвм
- •31. Организация интерфейсов ввода-вывода (должно дорабатываться)
- •32. Программное управление вводом-выводом
- •33. Передача данных с прямым доступом к памяти
- •34. Структура эвм Единой Системы и см эвм
- •35. Основные типы микропроцессоров. Структура микроЭвм
- •36. Совмещение во времени выполнения нескольких команд программы
- •37. Суперскалярная и пакетно-сетевая архитектуры процессоров пэвм
- •38. Процессоры с risc-архитектурой и эвм, управляемые потоками данных
- •39. Гиперпоточная архитектура в пэвм и архитектура эвм с большой длиной командного слова
- •40. Классификация вычислительных систем
17. Сегментация микропрограмм
Сегментация, как способ разделения некоторого информационного объекта или адресного пространства на части, в общем случае, используется с различными целями. Это может быть сделано для облегчения доступа к объекту, управления пересылками его между ступенями памяти, управления распределением памяти и т.п.
Сегментация микропрограмм применяется с целью сокращения разрядности адресной части микрокоманды. С развитием технологий производства микросхем острота этой задачи снизилась, там не менее этот вопрос рассматривается здесь для иллюстрации соотношений между определенными параметрами устройства микропрограммного управления и общей постановки подобного рода задач.
Пусть емкость памяти микропрограмм составляет N слов. Тогда разрядность адреса слова такой памяти составит n = log2 N. (при условии, что N равно степени 2).
Если эту память разбить (условно) на К сегментов (K < N) по N/K соседних слов, то количество разрядов в адресе слова, указывающих адрес (номер) сегмента составит k = log2 K , а количество разрядов, задающих адрес (номер) слова в сегменте n – k, как показано на рис. 17.1,б.
Рис.17.1. Формат адреса слова при сегментации памяти микропрограмм
В этом случае при указании в текущей микрокоманде адреса следующей микрокоманды можно, если обе микрокоманды размещаются в одном и том же сегменте, ограничиться указанием только номера слова в сегменте. Это позволит сократить разрядность адресной части микрокоманды на k разрядов, при условии, что адрес (номер) текущего сегмента где-либо хранится, например, в специальном регистре сегмента.
Однако, если следующая микрокоманда располагается не в том же сегменте, что и текущая, а в другом сегменте, то для перехода к этой микрокоманде необходимо указать ее полный адрес, включающий номер сегмента. Это можно сделать либо непосредственно в исполняемой микрокоманде, либо в специальной микрокоманде смены сегмента.
В первом варианте придется резервировать в адресной части микрокоманды количество разрядов, позволяющих указать полный адрес, а это исключает рассматриваемую экономию от указания сокращенного адреса (номера) слова в сегменте, что делает сегментацию ненужной.
В варианте использования дополнительных микрокоманд смены сегмента возникают затраты памяти микропрограмм на хранение этих микрокоманд и затраты времени на их выполнение.
Поэтому, если оценивать использование сегментации с точки зрения емкости памяти микропрограмм, то необходимо сопоставлять выигрыш от сокращения разрядности адресной части микрокоманд с затратами на появление дополнительных микрокоманд переходов между сегментами. (При этом следует помнить и о снижении быстродействия из-за включения в микропрограммы таких микрокоманд.)
Пусть m – исходная разрядность микрокоманды, включающей в себя как операционную, так и адресную части, n – разрядность адреса памяти микропрограмм, k – количество разрядов, необходимых для задания номера сегмента, p – вероятность перехода между сегментами при выполнении микропрограмм, а N – количество слов в памяти микропрограмм, которое будет считаться равным количеству микрокоманд. Пусть также адресная часть микрокоманды содержит только один адрес. Тогда изменение dE общей емкости памяти микропрограмм (в битах) при использовании сегментирования можно вычислить по следующему соотношению
dE = N (1 – p ) m – N (m – k) = N (k – p m)
В этом соотношении первое произведение N (1 – p ) m соответствует объему памяти, занимаемому исходными микрокомандами до сегментации (общий количество слов в памяти N уменьшено на долю микрокоманд перехода, которые появятся при сегментации), а второе произведение N (m – k) равно объему памяти с укороченными на k разрядов словами.
Из полученного выражения видно, что выигрыш от использования сегментации, зависит от соотношения k, p и m. Если m зависит от вида микрокоманд и может считаться в рассматриваемой ситуации константой, то k определяется количеством сегментов, на которое разделена память микропрограмм, а p зависит и от размера сегментов (или, иначе, от количества сегментов) и от структуры микропрограмм и размещения их по сегментам.
Поэтому, решая задачу максимизации выигрыша от использования сегментации, необходимо действовать итеративно, выбирая количество сегментов и решая задачу разбиения микропрограммы на выбранное количество частей (сегменты), таким образом, чтобы минимизировать количество переходов между сегментами при выполнении программы.
Если представить микропрограммы в виде графа, вершинами которого являются микрокоманды, а дугами – переходы между ними, то решение последней задачи проанализировано в теории графов.
Поскольку точное решение такой задачи требует значительных объемов вычислений (фактически сводящихся к перебору возможных вариантов) даже для нескольких десятков микрокоманд, то существуют и приближенные методы решения, например, парного разбиения графа на подграфы с минимальной связностью [Kernighan].