отражает требование, чтобы каждый блок информации был распределен в ЗУ.
Любой набор tfk, |
Vih, удовлетворяющий ограниче |
ниям (6-38) — (6-42), |
является решением. Набор уh, Ѵщ, |
для которого полная стоимость С ВП минимальна, яв ляется оптимальным решением. Мы будем искать опти
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
мальное |
решение. |
|
|
Сформулированная за- |
|
|
|
|
|
|
|
|
|
' |
' |
|
~ " |
" |
дача |
является |
|
задачей |
|
|
Корень |
0-й уробещ, |
|
целочисленного |
програм |
|
|
|
|
|
мирования ЦП. Для ре |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
шения |
данной |
задачи |
ис |
|
|
|
|
|
|
|
пользуем |
|
метод |
ветвей и |
|
|
|
|
|
|
|
границ |
[Л. |
52, |
|
53]. |
Он |
|
|
|
|
JL'ÏL^JL—"— |
|
состоит в |
последователь- |
|
|
|
|
|
ном |
разбиении |
|
множе |
|
|
|
|
0 |
|
|
ства всех |
решений |
на |
все |
|
Рис. |
6-5. Граф |
последовательного |
|
более |
мелкие |
подмноже |
|
разбиения |
множества решений |
на |
ства, |
пока |
не |
будет |
най |
|
|
|
подмножества. |
|
|
дено |
оптимальное |
реше |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ние. |
Для |
определения |
|
направления, |
поиска |
для |
каждого |
подмножества |
ре |
|
шений вычисляется нижняя граница стоимости |
С. Под |
|
множества условно |
представляются |
вершинами |
гра |
фа-дерева. Разбиениям текущего подмножества реше ний на более мелкие соответствуют ветвления в дереве. Корнем дерева называется вершина 0-го уровня. Вер шина, ответвляющаяся от вершины і-го уровня, называ
ется вершиной |
1 + 1-го |
уровня (рис. |
6-5). |
|
|
Определение |
множества |
решений в |
вершине |
L . Рас |
смотрим вершину г-гсГуровня, например вершину L . Пусть |
t/д,, yN_v---, |
yN_t+l |
|
есть |
количества |
модулей |
ЗУ |
типа N, |
N—X, |
N— |
|
в |
множестве |
решений, |
соответст |
вующих вершине |
|
L . Величины yN, yN_v |
|
yN__i+i явля |
ются определенными неотрицательными |
целыми числами, |
например |
yN = y'N, |
yN_x—y'N_v |
.... |
yN_i+x |
= |
y'N_i+v |
Для |
оставшейся |
части |
данного |
множества |
решений |
делаем |
допущение, |
что |
емкости |
ЗУ |
типов |
N — i, N — i—1, ... |
..., 1, 0 могут быть |
произвольными, т. |
е. соответствующие |
количества |
модулей |
|
Р |
у', |
у'0 |
могут быть |
как целыми, так и дробными числами. В частности, как будет показано ниже, если количества модулей yLN_^
и1., . ,, .... и1, |
ц' |
являются целыми, то данное |
множест- |
во |
решений, |
|
соответствующее |
вершине L , |
является |
оптимальным |
решением. |
|
|
|
|
|
|
|
|
|
При |
ветвлении |
вершины L и переходе |
соответственно |
к вершинам г-f-l-ro уровня количества модулей yLN, |
yTN_{ ... |
|
yLN_i+l |
наследуются |
всеми вершинами |
* —j—-1 -го уровня, |
т. е. величины |
yN, yN_v |
|
yN_i+i |
всех |
вершин |
t-f-1-го |
уровня |
принимаются |
равными |
|
величинам yLN, |
y'N_v |
••• |
... , yN_i+v |
Например если вершина L ветвится на вершины |
Q |
и R, |
то |
количества |
модулей |
yN = yLN = yQN |
= yRN, ... |
- . УН-1+І=УѢ-І+1=У%-І |
|
+ |
І=УЫ-І+І А л я подмножеств ре |
шений, |
соответствующих |
вершинам L , R и Q. Множест |
во |
решений, |
соответствующих |
вершин |
L , есть |
подмно |
жество |
решений |
задачи |
ЦП, в которой количества |
моду |
лей ук = у^ для k = N, |
N — |
|
|
|
|
|
|
Определение |
|
границы |
для |
множества |
решений |
в |
вер |
шине L . Для вершины L задача |
ЦП заменяется |
задачей |
ЛП путем замены ограничений (6-40) и (6-41) в задаче
ЦП на следующие |
ограничения: |
|
|
Vih^O, |
Vik — не |
обязательно |
целые для всех i, |
k; |
|
Уъ = у\, k = N, N-l |
tf-i+l; |
|
Ук^О, |
уи — не обязательно целые для k = N—і, |
1. |
Пусть стоимость CL равна значению стоимости С, полученной в результате решения задачи ЛП для вер шины L . Тогда стоимость Сь является нижней границей стоимости ВП для множества решений, соответствующих вершине L .
Решение задачи ЛП для вершины L . Определим тре
буемое среднее время выборки |
для ВП, составленной |
из ЗУ типов N—i, N—i—1, . . . , 1,0, равным |
N |
M |
k=N—i+\ i=l
Тогда, если время Ть<0, то множество решений для вершины L пусто, так как нарушается ограничение на время (6-37). Поэтому вершину L в дальнейшем не рас сматриваем.
Предположим, что время TL^0. Тогда задачу ЛП
для вершины L сформулируем так. Пусть задано и мо- h 311
дулей ЗУ типа k |
{k = N, |
N—i+\) |
и требуемое сред |
нее время |
выборки — Т'-. |
Требуется |
пайги такие емкости |
ЗУ типов |
N—і, |
1, 0 |
и так распределить блоки ин |
формации, чтобы среднее время выборки из ВП, состоя
щей |
из |
ЗУ |
типов |
N—і, |
1, |
0, не |
превосходило |
время |
TL, |
а |
полная |
стоимость |
ВП |
была |
минимальной. |
При решении данной задачи предполагается, что ЗУ типов Л/—і, 1, О могут иметь произвольные емкости.
Очевидно, что блоки информации с малой активностью целесообразно размещать в более медленных ЗУ. Поэтому заданные yL модулей ЗУ типов k(k = N, /V —
заполним следующим образом. Из всех оставшихся бло ков выберем тот, который имеет наименьшую активность. Его поместим в самое медленное ЗУ. Данную операцию
будем повторять до |
тех пор, пока не заполним все |
у'' |
модулей |
(k = N, |
N—t'+l). |
В результате |
информация, |
заполненная в ЗУ типов N, |
N |
— н |
е |
будет |
зави |
сеть |
от |
количества |
модулей |
ЗУ |
типов |
k |
(k — N—i, ... |
|
1,0) |
во ВП. Поэтому числа блоков |
информации |
Ѵ\к |
для |
всех і и k = N, |
|
N—і+\ |
принимают определен |
ные |
положительные |
|
целые |
значения, |
например |
Vat = |
=-VL |
. Эти значения |
будут |
далее |
наследоваться |
всеми |
вершинами, преемниками вершины L . |
|
|
|
|
Количества оставшихся |
нераспределенных |
блоков |
найдем по формуле |
|
|
|
|
|
|
|
|
|
|
|
|
|
N |
|
|
|
|
|
|
|
WL |
= |
Wi- |
У |
V1. |
|
|
|
|
Если принять стоимость блоков модульной конструк ции равной
N
G L = S dky';,
a стоимость блоков произвольных емкостей равной
N—i M
312
то полная стоимость ВП определяется как
CL = GL + gL.
Тогда задача для вершины L состоит в минимизации стоимости
N—i м
gL = Cft Yi Vi*-
fc=0 (=1
при ограничениях на среднее время выборки
N—i м
ЯТЬѢРІѴІ^Т1-
и распределение блоков информации
|
|
ѴІЬ^О, |
Vis —любые. |
|
|
|
Данная задача является задачей ЛП и для ее реше |
ния применим |
алгоритм ЛП (см. § 6-5). |
|
|
|
•В результате решения |
найдем |
Сь—нижнюю |
границу |
стоимости |
для |
вершины |
L |
и |
количество |
|
модулей |
уъ. |
(k = N—і, |
|
1, 0), которые |
могут быть |
дробными |
и |
целыми. |
|
|
|
|
|
|
|
|
При последующем ветвлении из вершины L для |
количества |
модулей уы-і |
будем |
задавать |
определенные |
целые значения. Рассмотренные шаги вычислений объе
диним в следующий алгоритм. |
|
|
|
Алгоритм |
решения |
задачи |
целочисленного |
програм |
мирования |
(алгоритм |
ЦП). Исходное |
состояние. Строим |
корень дерева. Предполагаем, |
что ЗУ |
всех |
типов могут |
быть произвольных емкостей. Решаем задачу ЛП. По формуле (6-17) находим полную стоимость ВП — С, ко торую принимаем за нижнюю границу, и количество мо дулей уh (k = 0, 1, N). Если все уи получились це лыми, то они составляют оптимальное решение. Задача решена.
В противном случае |
осуществляется следующее: |
1. Среди вершин дерева, из которых не выходит ни |
одной ветви, выбираем |
вершину с минимальной нижней |
границей, |
например L . Если для вершины L все |
yT^(k—0, |
1, |
N) |
целые, то они составляют оптимальное |
реше |
ние. |
Задача решена. |
|
Mo des. вления |
После |
ветвления |
Р и с . 6-6. |
В е г в л е н и я в е р ш и н L и S . |
2. Производим ветвление из вершины L . Пусть вер шина L находится на і-м уровне (рис. 6-6). Проводим из вершины L ветви к двум вершинам Q и R, для которых количества модулей соответственно равны: у^_{—[у^_і] и
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
= |
[yjv-j + |
1 > г д е |
|
|
наибольшее |
целое |
число |
такое, что [yN_^ < |
|
Для вершин Q и R решаем за |
дачу ЛП. Находим соответственно стоимость CQ коли |
чества модулей yQ, |
|
|
и стоимость |
CR |
количест |
ва |
модулей |
у*, |
|
|
у%_і_г |
|
|
|
|
|
|
|
|
|
|
3. |
Ветвление |
из вершины, |
предшествующей |
|
вершине |
L . |
Пусть |
S — вершина, |
предшествующая |
вершине |
L |
(рис. 6-6). |
Если |
из |
вершины |
S |
не |
выходят |
ветви |
к |
по |
следующим |
вершинам, в |
которых |
количество |
|
модулей |
УІЧ-І+\ |
должно |
быть |
равно |
количеству г/^_і + 1 -(-1 |
(или |
#jv-j+i |
~ 1> е с л |
и |
і/ы-і+х — |
1 ^0)> т |
о |
и з |
вершины |
5 |
прово |
дим ветвь |
к |
новой |
вершине |
U, |
для |
которой |
|
yN_i |
+ l |
= |
= |
Уы-і+ і = |
Уы-і+і + 1 |
(или |
Уя-і + і - |
О- |
|
|
|
|
|
|
Пункты 1, 2, 3 повторяем |
до |
тех |
пор, |
пока |
задача |
не |
будет решена, |
|
|
|
|
|
|
|
|
|
|
|
Доказательство оптимальности алгоритма ЦП.
Предположим, что G* (q) есть значение стоимости С, по лученное при решении задачи ЛП для вершины L с до-
полнительньім ограничением: количество модулей |
yN_.=± |
— q. Тогда стоимость G* (q) есть выпуклая фунхшп |
от q |
и стоимость G* (Ум_{) 5з G* (q) для всех q. |
|
Из этого следует, что нет необходимости делить множество решений, представленных вершиной L , на два
подмножества, |
в которых |
количество модулей |
yN_-t^ |
^ [УІѵ-il и УN—i3 3 |
~Ь 1 ' |
т а к к а к минимальное значе |
ние стоимости С для подмножества решений, в котором
количество |
модулей yN_t < |
У к е получено для |
i / j v - ^ ^ - i l |
и аналогично для у ^ . 3* [у£_г] + 1. |
Значение стоимости С в решении, найденное с по мощью алгоритма ЦП, не превосходит нижнюю границу для любого решения, поэтому оно оптимально.
|
|
|
|
|
|
|
|
|
|
Пример. |
Пусть для |
комплекса программ |
и |
данных, |
для |
хране |
ния которых строится ВП, известен профиль |
|
активности: |
|
Тип активности і |
|
|
|
1 |
2 |
|
|
Активность |
РІ |
. . |
. |
0,60 |
0,05 |
|
Количество |
блоков |
i-ü активности Wt . |
. |
. |
1 |
|
8 |
|
И пусть задан набор готовых ЗУ модульной конструкции со |
следующими |
характеристиками. |
|
|
|
|
|
|
Тип ЗУ k |
|
dh |
0 |
|
1 |
2 |
3 |
Стоимость |
модуля |
|
4* |
|
9 |
8 |
1 |
Емкость модуля Ah |
|
|
1 |
|
3 |
4 |
10 |
Время |
выборки Th |
|
|
3 |
|
7 |
12 |
30 |
* Все числа указаны в условных единицах.
|
|
|
|
|
|
|
|
|
|
|
|
|
Для построения ВП требуется определить такое количество мо |
дулей ЗУ каждого |
типа — ук |
и такое |
распределение |
блоков |
инфор |
мации— Vih |
( і = 1 , 2; |
& = 0, |
1, 2, 3), |
чтобы |
среднее |
время |
выборки |
ВП |
не превосходило |
заданного времени — Г т р = 7,5, |
а полная стои |
мость ВП была |
минимальной. |
|
|
|
|
|
|
|
Решение. |
На 0-м уровне |
строим корень |
дерева |
(рис. 6-7,а). |
|
Определяем стоимость С и количество модулей ЗУ каждого ти |
па |
уз, уг, уі, |
у0. |
Для чего заменяем задачу |
ЦП задачей |
ЛП . Реше |
ние |
задачи |
Л П |
для |
данных |
условий |
было |
рассмотрено |
в примере |
§ 6-5. По формуле |
(6-17) найдем значение |
нижней |
границы |
С = 19. |
По формуле (6-39) определим количество модулей для ЗУ каждого
типа |
г/з=1/10; г/2 = 7/4; |
г/і = 0; |
г/о—1. |
|
Так как количества |
модулей |
Уз и г/г—'нецелые, поэтому переходим |
к выполнению 1-го |
шага. |
Из корня дерева проводим ветви к вершинам А и В (рис. 6-7,6), |
которые |
располагаем |
на 1-м уровне. |
Для вершины |
А |
принимаем |
(/з=0 |
и |
с |
помощью |
алгоритма |
Л П |
находим С = 19,625; |
</2 |
= 8/4 = 2; |
г/і = 0,3/3; |
#о=0,7/1. Вершину |
В |
не |
рассматриваем, |
так |
как |
Тв = |
= —22,5<0. Так как |
yf |
и |
у£ |
—нецелые, то переходим |
ко |
2-му |
шагу. |
|
|
|
|
|
|
|
|
|
|
|
|
|
Из вершины А проводим ветви к вершинам С и D (рис. 6-7,в), |
которые |
располагаем |
на 2-м |
уровне. |
Дл я вершины |
С |
принимаем |
(/2 = 2 и |
находим |
С = 19,625; |
t/t = |
0,3/3; г/0 = 0,7/1. |
Для вершины D |
принимаем (/2=( 1 |
и находим |
С = |
23,11 ; #і = 4,79/3; |
г/о = 0,21 /1. Так как |
CC<CD |
и уі, г/г — нецелые, то перехотим к 3-му |
шагу. |
Из |
вершины |
С проводим |
ветви к вершинам |
Е и F (рис. 6-7,г), |
которые располагаем на 3-м уровне. Кроме того, из вершины А про водим ветвь к вершине G, которую располагаем на 2-м уровне. Для
вершины Е принимаем |
г/і = 0 и находим |
С = 20, |
г/о=1- Для |
вершины |
G принимаем |
у 2 |
= 0 |
и находим |
С = 2 7 , г/і = 9/3, г/о = 0. |
|
|
исходное |
|
|
К{Карень дерева) |
0-ù уровень |
|
соЬтояйиес=юО |
Ветоление из К |
|
а) |
|
|
|
|
|
|
|
'-и шаг |
|
c*l9f\K |
|
|
|
о-й уровень |
|
|
|
|
|
ц |
&(Вершина В) |
|
|
|
|
g) |
|
c*iS,6}S |
''rfj |
• |
|
|
1-й уровень |
|
|
|
ВетвлениеизА |
|
|
|
|
|
|
|
|
|
|
|
|
|
0-й уровень |
|
|
|
|
|
|
|
|
|
|
1-й уровень |
|
|
Уг'г |
|
ИГ' |
|
|
|
2-й уровень |
|
|
6) |
С* 19,625 |
czsji |
ветвление из Си fi |
|
|
3-Ъ шае |
|
— |
o |
- |
|
ù |
уровень |
|
|
|
Уз'О |
И |
г")в |
|
|
1-й уровень |
|
|
|
» |
С / |
\ |
U >> |
я" |
|
|
|
|
|
|
|
|
О |
|
Пй=;Ѵ: й-в |
|
|
г-и уровень |
|
|
*/"" |
|
'-'V,"' |
|
|
|
3-" уровень |
|
|
_г)^0_ |
|
|
%± |
|
|
|
|
|
|
|
Рис. 6-7. Ветвления |
при решении задачи |
целочисленного программи |
|
|
|
|
|
|
рования. |
|
|
|
|
|
Вершину |
F не рассматриваем, так как |
TF = — 1 , 5 < 0 . |
Замечаем |
что СЕ < С° и, кроме того, |
= 0, |
у% = |
2, |
г/f=0, =1 — целые, по |
этому данное решение оптимальное. Искомые переменные имеют сле дующие значения:
00 |
= 1 |
= |
0 |
02 = |
2 |
Уз |
|
1 |
= |
0 |
V,2 = |
0 |
Vu |
ѵ2 „ |
= 0 |
V» = 0 |
V22 = 8 |
|
с= 20
6-7. ВОПРОСЫ ОПТИМИЗАЦИИ ИЕРАРХИЧЕСКОЙ СИСТЕМЫ
ПАМЯТИ
В современных ВС основная оперативная память (ООП) и внешняя память (ВП) объединяются в систему памяти.
Если ВП соединена с ООП, а ООП соединена с про цессором и имеется специальный блок или программа
автоматического |
управления |
обменом |
информацией |
ВП — ООП, то такая система |
памяти называется |
иерар |
хической (ИСП). |
|
|
|
|
К построению |
ИСП переходят тогда, |
когда |
требо |
вания хранимой информации с течением времени изме няются, вследствие чего их невозможно согласовать с различными характеристиками ООП и ВП, объединен ных в централизованную систему памяти подобно рас смотренной в § 6-5—6-6.
Переход к ИСП выгоден потому, что при наличии у ИСП большой емкости, равной емкостям ООП и ВП, можно организовать управление обменом информацией ВП — ООП таким образом, что «кажущееся» процессо ру быстродействие ИСП будет близким к быстродейст вию ООП.
При построении ИСП возникает ряд проблем, в част ности проблема достижения минимальной ценой кажу щегося быстродействия, близкого к быстродействию ООП.
Решение этой проблемы получают путем решения совокупности разных задач, которые ставятся в зависи мости от принятой страничной или нестраничной орга низации памяти.
Методы решения данных задач образуют совокуп ность алгоритмов управления обменом информацией в ИСП, которые реализуются специальным блоком или программой управления ИСП.
При страничной |
организации памяти |
пространства |
номеров ячеек ООП и ВП разбиваются |
на блоки рав |
ных размеров по р |
ячеек, называемые |
соответственно |
оперативными и внешними рамками страниц. Простран ство адресов множества программ и данных также разбивается на блоки равных размеров по р адресов, называемых страницами.
Количество внешних рамок выбирается равным ко личеству страниц k, а количество оперативных рамок обычно меньше k.
Все рамки и страницы имеют номера, причем номера оперативных и внешних рамок являются независимыми последовательностями чисел.
При неограниченном отображении пространства опе ративных и внешних рамок анонимны, т. е. в любую рамку можно поместить любую страницу. При распре делении страниц по рамкам соответствие их номеров
|
|
|
|
|
|
|
|
фиксируется |
в |
таблице |
страниц, |
называемой еще |
по-другому |
таблицей отображений. Поэтому обращению |
к |
памяти |
предшествует обращение к |
таблице |
страниц, |
в |
которой |
номер |
запрашиваемой страницы преобразует |
ся в соответствующий номер рамки. |
|
|
|
Таблица страниц может располагаться в ООП, ко |
торая имеет |
сравнительно |
большое |
время |
выборки, |
а следовательно, и большое время преобразования но меров. Для сокращения этого времени используются ассоциативные регистры с малым временем выборки. В один из регистров после первого обращения к стра нице записывают ее номер и номер соответствующей оперативной рамки. Тогда при повторном обращении к данной странице номер ее рамки будет выбираться не из медленной ООП, а из регистра.
Среди задач оптимизации иерархической памяти при страничной организации и использовании ассоциатив ных регистров выделяются две важные задачи: разбие ния множества программ и данных на страницы и орга низации замены страниц в ООП. Некоторые алгоритмы замены страниц в ООП описаны в работе [Л. 26]. В данном параграфе мы рассмотрим другую задачу: разбиение множества программ и данных на страницы.
Задача разбиения является экстремальной. При ее решении стремятся к минимизации числа переходов от страницы к странице, так как благодаря этому миними зируется время преобразования номеров, потому что большая часть обращений в таком случае будет произ
водиться к ассоциативным регистрам. Кроме |
того, и |
это наиболее важно, также минимизируется |
количество |
обменов между ООП и ВП. |
|
|
|
Для |
удобства |
решения данная |
задача |
разбивается |
на две частные задачи: разбиение |
множества |
программ |
и разбиение множества |
данных. |
|
|
|
Для решения первой задачи может использоваться |
метод, |
предложенный |
в і[Л. 54]. В |
данном |
параграфе |
рассматривается |
метод |
решения второй задачи. |
Подлежащее |
разбиению множество данных |
пред |
ставляется в виде графа G=G(V). |
Каждому і-му |
адресу |
сопоставляется |
|
отдельная вершина ѴІ<=Ѵ. Две |
вершины |
Ѵ{ и V] (/, / = 1 |
, |
q) |
соединяются |
ребром r= (Vi, |
|
Vj), |
если |
обращения по |
і-у и |
/-у адресам |
при выполнении |
про |
граммы производятся последовательно одно за другим. Если такие обращения по данным адресам производят ся несколько раз, то столько же раз соответствующие данным адресам вершины соединяются ребрами. Полу чается мультиграф с множеством ребер R . При наличии в программах условных переходов вершины соединяют ся ребрами, как было рассмотрено выше, и соответст вующим ребрам приписываются вероятности переходов.
Построенный мультиграф преобразуется к виду, удобному для разбиения, следующим образом.
Каждому ребру г= (ѵи и,-) из множества ребер, для которых не указаны вероятности переходов, приписыва ется цена сц=\. Оставшимся ребрам приписываются цены, вычисляемые как указано в [Л.- 58].
Для каждой пары вершин, соединенных больше чем одним ребром, оставляется только одно ребро, а осталь ные отбрасываются. Цена оставленного ребра опреде ляется как сумма его цены и цен отброшенных ребер.
|
Допустимым разбиением графа G называется такое |
разбиение |
его |
вершин V |
на k непересекающихся под |
множеств |
Vi, |
Ѵ2, |
Vk, |
что для і = 1 , 2, |
k выпол |
няется неравенство |
|
|
|
|
|
|
|
|
\ѴІ\<Р, |
|
|
где |
р — есть допустимый |
размер |
блока; |
| V j | — р а з м е р |
подмножества |
ѴІ |
(количество |
вершин в |
подмножест |
ве |
ѴІ). |
|
|
|
|
|
|
Подмножества Уг- из V называются блоками. Число блоков k называется размером разбиения. Число £* =
ГІ VI I
='-у- есть нижняя граница размеров разбиения, k*<,k
(символ [х] означает наименьшее целое, не превосходя щее х).
Цена разбиения С графа G для всех vt и Vj, распо ложенных в разных блоках, определяется как сумма цен Сі-у.