С развитием средств вычислительной техники, с усложнением задач, решаемых с помощью ЭВМ, наблюдается устойчивая тенденция повышения требований к информационной емкости и быстродействию ЗУ (устройств памяти) при одно­временном снижении их стоимости. Однако удовлетворить всем этим требованиям в одном ЗУ невозможно. Известно, что ЗУ высокого быстродействия обладают малой емкостью, а ЗУ большой емкости харак­теризуются невысоким быстродействием. Поэтому память современных ЭВМ имеет иерархическую многоуровневую структуру. Выделяют следую­щие (по уровням иерархии) виды памяти ЭВМ:

– местная память, которая представляет собой набор регистров процес­сора общей емкостью до нескольких десятков байт и временем обраще­ния t0 = (0,25... 0,5) ТП, где ТП – такт работы процессора;

– буферная (она же кэш) память (БП) временем обращения t0 = (0,5...1,0) ТП;

– основная (оперативная) память (ОП) обычно емкостью сотни Мбайт (для специализированных высокопроизводительных ЭВМ – десятки-сотни Гбайт) и временем обращения более 1,0 ТП.

Описанная структура отражает основную концепцию в построении иерархии памяти ЭВМ общего назначения.

Как следует из приведенной классификации, буферная память – быстродействующее ЗУ небольшой емкости для хранения информации, активно используемой процессором. Повышение производительности ЭВМ с иерархической организацией памяти достигается при оптимальном использовании БП, когда информация, наиболее интенсивно используемая процессором на данном этапе вычислений, хранится в БП (при этом сокращается число обращений к ОП). Так, если t0ОП и t0БП – периоды обращения к ОП и БП, соответственно, а РБП – вероятность обращения к БП, то среднее время обращения к буферизированной па­мяти (БП и ОП) составит величину

t0 = PБП t0БП + (1 – PБП) t0ОП.

Разделив обе части этого равенства на t0ОП и обозначив h = t0 / t0ОП и h1 = t0БП / t0ОП, получим

h = 1 – PБП (1 – h1).

Графики h приведены на рис. 1.40. Обычно быстродействие БП в 2...10 раз выше быстро-действия ОП, т.е. h = 1 – PБП(1 – h1)1 = 0,1...0,5, и применение буферизированной памяти в 1,25...4,0 раза повышает производительность ЭВМ (точнее, ее подсистемы памяти).

Рис. 1.40. Графики h при различной вероятности обращения к БП

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

Для построения БП можно использовать ИС, называемые регистровыми файлами. Например, ТТЛШ-ИС 1802ИР1 (рис. 1.41) представляет собою два блока из 16 четырехразрядных регистров, доступ к которым организован по двум каналам А и В.

Рис. 1.41. ТТЛШ-ИС 1802ИР1 – регистровый файл

Каждый из каналов работает независимо от другого. Выбор того или иного регистра производится кодом адреса АА (или АB). Слово, записываемое в выбранный регистр, или считываемое из него слово передается по двунаправленной магистрали DA (или DB). Управление режимами работы каждого канала осуществляется сигналами: активизации канала EA (или EB), записи WA (или WB), чтения RA (или RB). При EA = 1 (EB = 1) входы-выходы DA канала A (DB канала В) отключаются от нагрузки. Возможность одновременной работы по двум каналам с различными регистрами повышает производительность памяти на регистровых файлах.

Современные компьютеры имеют кэш-память, разделенную на два (как минимум) уровня (L1 и L2). В настоящее время для микропроцессоров общего назначения объем кэш-памяти первого уровня (L1) составляет 8...32 кбайт, кэш второго уровня (L2) – от 256 кбайт до 2-4 Мбайт.

Буферная память ассоциативного типа

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

Рассмотрим построение и работу БП ассоциативного типа. Программа на очередном этапе вычислений работает с некоторым набором данных из ОП, делает эти данные активными. Активизация того или иного слова состоит в том, что оно на некотором отрезке времени вовлекается в вычислительный процесс. По истечении этого времени программа перестает работать с этим словом, оно теряет активность. Набор активных слов перемещается в БП. Так, слово из ячейки номер А ОП помещается в ячейку номер a БП. Как только очередная команда программы сформирует исполнительный адрес А, АЛУ будет взаимодействовать не с ОП, а с ячейкой a БП.

Каждая ячейка ассоциативной БП разделена на три поля: адресное АП, рабочее РП и управляющее УП. При перемещении активного слова из ячейки А ОП в ячейку a БП код А записывается в поле АП(a), а само слово (А) – в поле РП(a). В дальнейшем при формировании программой кода А он сравнивается с содержимым полей АП всех ячеек БП. В вычисления вовлекается слово из той ячейки БП, у которой АП(a) = А. Значит, в поле АП записан ассоциативный признак А слова (А). Если БП полностью занята, а программа активизирует новое слово, то для него нужно освободить какую-то ячейку номер g. Значение g и определяется содержимым полей УП ячеек БП. Содержимое того или иного поля УП формируется в соответствии с принятой стратегией освобождения ячеек ассоциативной БП. Оптимальная стратегия состоит в следующем: удалению подлежит то слово, которое будет использовано программой позже, чем любое другое из хранящихся в БП. Однако априорной информации об использовании слов в будущем нет. Поэтому оптимальная стратегия может служить эталоном, с которым сравниваются все другие стратегии, например такая: удалению подлежит то слово БП, к которому не было обращений в течение некоторого промежутка времени. Сложные стратегии требуют больших аппаратурных и временных затрат и не дают существенного выигрыша в быстродействии по сравнению с простыми. Самая простая стратегия удаления заключается в том, что после удаления слова из ячейки g удаляться будет слово из ячейки g+1. Реализуется она так. Имеется кольцевой счетчик, каждый разряд g которого и является полем УП(g) ячейки БП номер g. Перед началом работы в счетчик заносится код 0M0M-1¼0g¼0110. Как видим, в поле УП(0) ячейки номер 0 стоит единица. Она означает, что первым будет удалено слово из этой ячейки, а содержимое кольцевого счетчика сдвигается на один разряд влево. Следующим будет удаляться слово из ячейки номер 1, у которой УП(1) = 1. И опять содержимое кольцевого счетчика сдвигается на один разряд влево. Таким образом, УП(g) = 1 означает, что освобождаться будет ячейка g БП. Простейшая стратегия чревата промахами, когда из БП может быть удалено самое активное слово.

На рис. 1.42, а показана структура ядра ЭВМ с ассоциативной БП, а на рис. 1.42, б – блок-схема алгоритма ее функционирования. АЛУ в структуре ядра представлено одним из регистров местной памяти RGMП, ассоциативная БП – ячейками с номерами a и g, ОП – ячейками с номерами А и G. К началу работы с ассоциативной БП определены адрес А активного слова и номер g ячейки, которая при необходимости может быть освобождена (блок 0 на рис. 1.42, б). Работа начинается с проверки наличия кода А среди кодов в адресных полях ячеек БП (блок 1). Если условие AÎАП выполняется, то активное слово находится в БП. Определяется номер a ячейки с этим словом (блок 2). Далее происходит взаимодействие АЛУ с ячейкой a БП. Если производится запись результата из АЛУ в БП, то реализуется блок 4. При чтении из БП в АЛУ реализуется блок 5. Если условие AÎАП не выполняется, то активного слова в БП нет и необходимо освободить ячейку номер g. Для этого содержимое АП ячейки номер g определяет адрес G той ячейки ОП (блок 6), в которую и записывается содержимое рабочего поля этой ячейки (блок 7). Теперь в освободившуюся ячейку g БП записывается слово из ячейки А ОП (блок 9). После этого вычисляется новое значение g (блок 10).

Рис. 1.42. Структура ядра ЭВМ с ассоциативной БП и блок-схема алгоритма ее функционирования

Буферная память типа «стек»

В современных ЭВМ некоторая часть БП или ОЗУ организована как стек. Стек (LIFO – от last input first output) – такая организация ЗУ, когда обращение к нему производится по принципу: последнее записанное слово считывается первым. Так, если в стек последовательно записаны слова А,В и С, считываются они в обратном порядке: С,В,А.

На рис. 1.43, а показана структура стека. Здесь RG0, RG1,...,RGM – выделенный под стек массив ячеек памяти. Адреса этих ячеек формируются в реверсивном счетчике SP, который называется указателем стека. D – элементы задержки сигналов записи W и чтения R. С помощью демультиплексора DX входная магистраль DI подключается к той из ячеек, на которую указывает SP при записи информации в стек. Для коммутации содержимого ЯП с номером SP на выходную магистраль DO служит мультиплексор MX. На рис. 1.43, б приведена блок-схема алгоритма функционирования стека. Перед началом работы в SP записывают число M+1. Здесь M – адрес вершины стека, а именно номер той его ЯП, в которую можно записать первое из помещаемых в стек слов. Запись слова А в стек происходит так. Сигналом записи W сначала уменьшается на единицу содержимое SP, а затем сигналом на выходе элемента задержки DW слово А по магистрали DI фиксируется в ЯП номер SP.

Рис. 1.43. Структура и блок-схема алгоритма функционирования стека

Чтение слова В из стека выполняется так. Сигналом чтения R содержимое ЯП номер SP выставляется на выходную магистраль DO, а затем сигнал на выходе элемента задержки DR увеличивает показания SP на единицу. В операциях со стеком необходимо следить за тем, чтобы не нарушались условия SP<M+1 и SP>-1. Нарушение первого из этих условий свидетельствует о попытке чтения из пустого стека, а нарушение второго – о попытке записи в полный стек (оборудование для проверки этих условий на рис. 1.43, а не показано).

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

Наряду с описанной организацией БП (LIFO), используется и так называемая БП «очередь» (FIFO – от first input first output), где первым считанным словом является первое записанное (вставшее в «очередь»).