- •Курсовая работа по курсу «Организация эвм»
- •Цель курсового проекта
- •Задание на курсовой проект.
- •Разработка и описание структурной схемы эвм.
- •Центральный процессор
- •Система прерываний
- •Описание блока синхронизации и таймера
- •Прямой доступ к памяти (пдп)
- •Клавиатура
- •Монитор
- •Основная память
- •Контроль памяти по Хэммингу
- •Разработка функциональной схемы кэШа команд и данных
- •Литература
Разработка функциональной схемы кэШа команд и данных
КЭШ-память (Cash Memory) – сверхоперативная память (СОЗУ). КЭШ-память не является самостоятельным хранилищем информации.
КЭШ команд и данных предназначен для хранения наиболее часто используемых команд и данных. Использование КЭШа увеличивает эффективность работы процессора.
КЭШ-память команд и данных (смешанная КЭШ-память) обладает тем преимуществом, что при заданной емкости ей свойственна более высокая вероятность попаданий по сравнению с разделенной, т.к. в ней оптимальный баланс между командами и данными устанавливается автоматически. Например, если в выполняемом фрагменте программы обращения к памяти связаны в основном с выборкой команд, а доля обращений к данным относительно мала, КЭШ-память имеет тенденцию насыщаться командами, и наоборот. Но при смешанной КЭШ-памяти выборка команд и данных не может производиться одновременно.
В общем виде кэш-память используется следующим образом. Когда ЦП пытается прочитать слово из основной памяти, то сначала осуществляется поиск копии этого слова в КЭШе. Если такая копия существует, обращение к ОП не производится, а в ЦП передается слово, извлеченное из КЭШ-памяти. Такую ситуацию называют успешным обращением или попаданием. При отсутствии слова в КЭШе, т.е. при неудачном обращении – промахе, - требуемое слово передается в ЦП из основной памяти, но одновременно из ОП в КЭШ-память пересылается блок данных, содержащий это слово.
КЭШ не может хранить копию всей ОП, т.к. его объем во много раз меньше объема ОП. Поэтому при взаимодействии с КЭШем ОП рассматривается как некоторое количество блоков фиксированной длины по Х слов в каждом. КЭШ-память тоже состоит из некоторого количество блоков аналогичного размера (блоки в КЭШ называют строками), но их число значительно меньше числа блоков в ОП. При считывании слова из какого-либо блока ОП этот блок копируется в одну из строк КЭШа. Т.к. число блоков ОП намного больше числа строк КЭШа, отдельная строка не может быть выделена постоянно одному и тому же блоку ОП. Поэтому каждой строке КЭШ-памяти соответствует ТЭГ (признак), содержащий сведения о том, копия какого блока ОП в данный момент хранится в данной строке. В качестве ТЭГа используется часть адреса ОП.
В данной работе будем разрабатывать многоклассовый КЭШ. Такой способ организации относится к группе методов частично-ассоциативного отображения, он является одним из возможных компромиссов между прямым и ассоциативным отображением. Вся КЭШ-память разбивается на некоторое количество классов, каждый класс содержит определенное число строк, состоящих из слов.
В нашем случае выберем емкость КЭШ-памяти 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 – Least Recently Used), при котором замещается та строка кэш-памяти, к которой дольше всего не было обращения. Существует два аппаратных способа реализации этого алгоритма:
В первом способе с каждой строкой КЭШ-памяти ассоциируют счетчик. К содержимому всех счетчиков через определенные интервалы времени (например, при приходе положительного фронта синхросигнала) добавляется единица. При обращении к строке ее счетчик обнуляется. Таким образом, наибольшее число будет в счетчике той строки, к которой дольше всего не было обращений, и эта строка – первый кандидат на замещение.
Второй способ реализуется с помощью очереди, куда в порядке заполнения строк кэш-памяти заносятся ссылки на эти строки. При каждом обращении к строке ссылка на нее перемещается в конец очереди. В итоге первой в очереди каждый раз оказывается ссылка на строку, к которой дольше всего не было обращений. Именно эта строка прежде всего и заменятся.
Мы будем использовать первый способ. В этом случае у нас будет 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 и вырабатываются сигналы чтения/записи в КЭШ-память. Выбор строки для замещения выбирается в соответствии с выражениями:
