Назад |  Содержание  |  Вперед

2 ИЕРАРХИЧЕСКАЯ ПАМЯТЬ ОДНОПРОЦЕССОРНЫХ ВС


2.1 Архитектура однопроцессорной ВС
2.2 Алгоритм сквозной записи
2.3 Алгоритм простого свопинга
2.4 Алгоритм свопинга с флагами
2.5 Алгоритм регистрового свопинга с флагами
2.6 Способы улучшения эффективности подсистемы памяти в однопроцессорных ВС

2.1 Архитектура однопроцессорной ВС

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


Рисунок 2.1 Однопроцессорные ВС с иерархической системой памяти
Рисунок 2.1 Однопроцессорные ВС с иерархической системой памяти

Применение кэша в таких системах обусловлено только экономической эффективностью функционирования систем с кэш памятью.

2.2 Алгоритм сквозной записи

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

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

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

Обратной стороной простоты алгоритма является его малая эффективность: в нем не заложена тенденция к минимизации доли обращений к основной памяти. При увеличении объема кэш-памяти доля обращений к основной памяти асимптоматически приближается к доле обращений для записи в основную память (а не к нулю). На рисунке 2.1 приведена блок-схема алгоритма сквозной записи.


Рисунок 2.2 Блок-схема алгоритма сквозной записи
Рисунок 2.2 Блок-схема алгоритма сквозной записи

2.3 Алгоритм простого свопинга

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

2.4 Алгоритм свопинга с флагами

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

2.5 Алгоритм регистрового свопинга с флагами

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

2.6 Способы улучшения эффективности подсистемы памяти в однопроцессорных ВС

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

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

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

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

Большой класс задач решаемых на ЭВМ имеет дело с большими объемами данных хранимых в массивах. Для улучшения производительности ВС на таких задачах можно применять многомодульную систему основной памяти с горизонтальным расслоением [4] (рис 2.2).


Рисунок 2.2 Память с горизонтальным расслоением
Рисунок 2.2 Память с горизонтальным расслоением

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


Назад |  Содержание  |  Вперед

© Прокопенко Я.А., 2001