Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовой проект / микроЭВМ на PIC16C84 / Организация ЭВМ курсовик.doc
Скачиваний:
108
Добавлен:
21.02.2014
Размер:
352.77 Кб
Скачать
  1. Разработка функциональной схемы кэШа команд и данных

КЭШ-память (CashMemory) – сверхоперативная память (СОЗУ). КЭШ-память не является самостоятельным хранилищем информации.

КЭШ команд и данных предназначен для хранения наиболее часто используемых команд и данных. Использование КЭШа увеличивает эффективность работы процессора.

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

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

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

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

В нашем случае выберем емкость КЭШ-памяти 2Кслова. Разобьем его на классы по 4 строки в каждом и по 4 слова в строке. Таким образом получим 128 классов. Так как емкость ОП 128Мслов, то для ее адресации нужно 27 разрядов адреса. Для выбора слова в строке достаточно 2 младших бита, для выбора класса – 7 бит (AB[8..2] - индекс). Остальные разряды адреса отведем под ТЭГ (AB[26..9]).

Тэг

Индекс

Слово

26 9

8 2

1 0

Адрес в ОП

Схема КЭШа приведена в приложении 1.

Алгоритм работы КЭШа:

ЦП выставляет на шину ABадрес основной памяти. Этот адрес попадает в КЭШ. С помощью разрядовAB[9..2] выбирается один из 128 классов. Для организации классов и памяти тэгов используются 4 микросхемыSRAMпо 128 слов, соответствующие 4 строкам в классе (1-ая ИМС содержит все первые ТЭГИ 128 классов, 2-ая – все вторые и т.д.). При выборе нужного класса на выходе этих ИМС появятся 4 строки тэгов, соответствующие этому классу. Для того, чтобы узнать есть ли кэш-попадание, выходы этих ИМС заводятся на 4 компаратора, на них же заводятся битыAB[26..9] адреса, в которых содержится ТЭГ. Затем они сравниваются, и, если есть попадание, то один из компараторов даст на своем выходе 1. Выходы компараторов заводятся на входы разрешения выдачи кэш-памяти данных (кэш-память организована аналогично памяти тэгов, только в ней хранятся слова данных и команд, соответствующие своим Тэгам). Компаратор, который зафиксировал попадание, разрешит выдачу данных соответствующей микросхеме памяти данных. Выбор нужной строки из кэш-памяти данных осуществляется с помощью тех же битов, что и выбор класса (AB[8..2]). Выходы этих ИМС соединяются параллельно на общую шину, так как активной будет только одна из микросхем. Выбор нужного слова из строки производится с помощью двух младших бит адреса, которые заводятся на адресные входы мультиплексора. На входы данных мультиплексора подаются слова из полученной строки. В конечном итоге на шину данных будет выдано одно из четырех 32-разрядных слов.

Если компараторы не зафиксировали кэш-попадания, то вырабатывается сигнал cashe, равный 0, который подается на вход разрешения буферного регистра между шиной адреса и ОП, чтобы адрес прошел в ОП и было выбрано нужное слово. Одновременноcasheпроходит через комбинационную схему и в результате формируется сигнал записи в КЭШ выбранного из ОП слова. (? строка) Для того, чтобы поместить в КЭШ новую строку, нужно решить какую строку из КЭШа можно заменить. Основная цель стратегии замещения – удерживать в КЭШ-памяти строки, к которым наиболее вероятны обращения в ближайшем будущем, и заменять строки, доступ к которым произойдет в более отдаленном времени или вообще не случится. Алгоритм замещения реализуется аппаратно для достижения наиболее возможного быстродействия. Наиболее эффективным является алгоритм на основе наиболее давнего использования (LRU–LeastRecentlyUsed), при котором замещается та строка кэш-памяти, к которой дольше всего не было обращения. Существует два аппаратных способа реализации этого алгоритма:

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

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

Мы будем использовать первый способ. В этом случае у нас будет 512 счетчиков (512 строк). При обращении к какой-либо строке КЭШ-памяти, младшие бит адреса (AB[8..2] – индекс,AB[1,0] – номер слова) заводятся на дешифратор, выходы которого идут на входы сброса счетчиков. Таким образом, при кэш-попадании счетчик, соответствующий выбранной строке, обнуляется. Если был кэш-промах, то, т.к. номер выбираемого класса строго определен для каждого адреса, выбираем для замещения одну из строк в классе. Для этого выбираем с помощью дешифратора (на входы данных подаются биты индекса) один из счетчиков, соответствующих этому классу, счетчик с наибольшим значением и разрешаем запись в соответствующие микросхемы памяти тэгов и памяти данных в КЭШ, а выбранный счетчик обнуляем. Разрешение работы дешифраторов осуществляется с помощью комбинационных схем, на которые подаются сигналыcashe,MEMQ,RD/#WR. Для выбора счетчика с наибольшим значением используются программируемые логические матрицы (PLM). На входы каждойPLMподаются значения счетчиков, соответствующих одному классу. КаждаяPLMимеет 4 выхода, которые соответствуют четырем счетчикам. На них будут значения 0/1 в зависимости от содержимого счетчика (0 – у счетчика с наибольшим значением, остальные будут равны 1). Если счетчиков с наибольшим значением больше одного, то 0 появиться на выходе, соответствующем счетчику с наибольшим приоритетом. Сигналы с выходовPLMнаправляются на входы комбинационной схемы, управляющей чтением/записью кэш-памяти.

Для согласования информации в КЭШе и в ОП используем алгоритм сквозной записи. По этому методу прежде всего обновляется слово, хранящееся в ОП. Если в КЭШ-памяти существует копия этого слова, то она также обновляется. Если же в КЭШ-памяти отсутствует нужная копия, то выбирается строка для замещения. Этот метод реализуется с помощью комбинационной схемы, в которую подаются сигналы cashe,MEMQиRD/#WRи вырабатываются сигналы чтения/записи в КЭШ-память. Выбор строки для замещения выбирается в соответствии с выражениями: