Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1 / Lectures / Lect3v12.doc
Скачиваний:
79
Добавлен:
28.05.2015
Размер:
706.05 Кб
Скачать

17. Сегментация микропрограмм

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

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

Пусть емкость памяти микропрограмм составляет N слов. Тогда разрядность адреса слова такой памяти составит n = log2 N. (при условии, что N равно степени 2).

Если эту память разбить (условно) на К сегментов (K < N) по N/K соседних слов, то количество разрядов в адресе слова, указывающих адрес (номер) сегмента составит k = log2 K , а количество разрядов, задающих адрес (номер) слова в сегменте nk, как показано на рис. 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 (mk) равно объему памяти с укороченными на k разрядов словами.

Из полученного выражения видно, что выигрыш от использования сегментации, зависит от соотношения k, p и m. Если m зависит от вида микрокоманд и может считаться в рассматриваемой ситуации константой, то k определяется количеством сегментов, на которое разделена память микропрограмм, а p зависит и от размера сегментов (или, иначе, от количества сегментов) и от структуры микропрограмм и размещения их по сегментам.

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

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

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

Соседние файлы в папке Lectures