Автор работы: Пользователь скрыл имя, 29 Апреля 2012 в 08:06, курсовая работа
Цель данной курсовой работы: анализ архитектуры SRAM. Начиная с первых 16-разрядных микросхем памяти; чипов памяти, применяемых в сегодняшних РС и перспективные направления развития статической памяти. Будут рассмотрены логическая организация памяти, быстродействие, синхронизация работы (по отношению к процессору), контроль чётности, режимы страничного доступа, расслоение ОЗУ на банки и пакетно - конвейерный режим.
Введение 3
Глава 1 Архитектура SRAM 4
1.1 Устройство 4
1.1.1 В ядре 5
1.1.2 Устройство триггера 6
1.1.3 Устройство элемента "НЕ" (инвертора) 7
1.1.4 Устройство матрицы статической памяти 8
1.1.5 Устройство интерфейсной обвязки 10
1.1.6 Временные диаграммы чтения/записи 11
1.1.7 Цикл чтения 11
1.1.8 Цикл записи 12
1.2 Применение 13
Глава 2 SRAM в кэше 16
2.1 Виды кэша 16
2.1.1 Полностью ассоциативный кэш 16
2.1.2 Кэш с прямым отображением адресов 19
2.1.3 N-ассоциативный кэш 23
Заключение 28
Список используемой литературы 29
Когда строка данных должна быть записана из оперативной памяти в кэш, однозначно определено подмножество строк, в которое она попадает, а конкретный элемент подмножества должен быть выбран контроллером. В этом случае 4 строки́ подмножества «соревнуются» друг с другом за вытеснение, причём стро́ки одного подмножества никогда не могут соревноваться со строками другого подмножества. Поэтому контроллеру нужно уметь определять, какая строка в пределах данного подмножества самая «старая». Так как в каждом подмножестве всего 4 элемента, достаточно всего двух бит для хранения возраста строки́ (рисунок 17)[11].
Рисунок 17. Строка четырёх-ассоциативной кэш-памяти.
Кроме того, в строках кэша теперь не требуются устройства для одновременного сравнения тэгов и для одновременного увеличения возраста, так как эти операции нужно делать не со всеми строками кэш-памяти, а только с четырьмя строками за один раз. Эти 4 строки́ могут быть, например, просмотрены/обработаны контроллером по очереди, не сильно снижая быстродействие кэша.
Однако, можно добиться одновременной обработки четырёх строк кэша. Для этого разделим кэш-память на 4 равных части («банка»), и свяжем с каждым банком своё устройство управления (рисунок 18). При таком подходе каждое подмножество из четырёх одновременно обрабатываемых строк окажется распределённым по четырём банкам, каждый из которых может работать параллельно с остальными. При записи данных в кэш hint, выбираемый контроллером, фактически будет представлять собой номер банка, в который данные будут записаны.
Рисунок
18. Пример поиска данных в четырёх-ассоциативном
кэше по адресу.
Когда процессор выдаёт запрос на чтение байта оперативной памяти, кэш-контроллер выполняет следующие действия:
разбивает адрес требуемого байта на части (как показано на рисунке 18), определяя тэг, номер строки́ кэша, и смещение в строке;
так как контроллер не знает, какое значение hint (номер банка) было выбрано им для этих данных, когда они записывались в кэш в прошлый раз (и записывались ли они вообще), контроллер, зная номер строки́ в банке, читает строки с этим номером одновременно со всех банков (рисунок 18), либо, если кэш не разбит на банки, читает четыре строки́ по очереди из кэш-памяти, подставляя в номер строки́ все возможные значения hint (рисунок 18);
контроллер сверяет тэги прочитанных из кэш-памяти строк с тэгом, выделенным из адреса;
если тэги не совпали (данные в кэше отсутствуют), выполняются следующие действия:
среди четырёх прочитанных строк выбирается для замещения строка с максимальным возрастом (если кэш не разбит на банки, а имеет сквозную нумерацию строк, то это действие как раз и означает выбор значения hint контроллером); возраст этой строки́ обнуляется, возрасты остальных трёх строк увеличиваются на единицу;
если бит модификации выбранной для замещения строки́ не равен нулю, то он обнуляется, и содержимое строки́ записывается в место оперативной памяти, определяемое хранящимся в строке тэгом и номером этой строки́ в банке;
в выбранную для замещения строку кэша из оперативной памяти загружаются 16 байт, среди которых находится требуемый процессором байт памяти (адрес этой последовательности байт равен адресу требуемого байта, но с обнулёнными последними четырьмя битами);
тэг строки́ заменяется на тэг, выделенный из адреса требуемого байта;
теперь требуемые данные точно присутствуют в кэше (тэг одной из четырёх строк совпадает с тэгом, выделенным из адреса); контроллер увеличивает на единицу возраст тех строк (среди четырёх прочитанных), возраст которых меньше возраста строки́ с нужными данными, а возраст строки́ с нужными данными обнуляет;
контроллер выдаёт байт процессору из строки́ кэша в соответствии со смещением, выделенным из адреса
Когда процессор выдаёт запрос на запись байта в оперативную память, кэш-контроллер выполняет следующие действия:
разбивает адрес требуемого байта на части (как показано на рисунке 18), определяя тэг, номер строки́ кэша, и смещение в строке;
контроллер, зная номер строки́ в банке, читает строки с этим номером одновременно со всех банков (рисунок 18).
контроллер сверяет тэги прочитанных из кэш-памяти строк с тэгом, выделенным из адреса;
если тэги не совпали (перезаписываемые данные не прокэшированы), то выполняются следующие действия:
среди четырёх прочитанных строк выбирается для замещения строка с максимальным возрастом; её возраст обнуляется, возрасты остальных трёх строк увеличиваются на единицу;
если бит модификации выбранной для замещения строки́ не равен нулю, то он обнуляется, и содержимое строки́ записывается в место оперативной памяти, определяемое хранящимся в строке тэгом и номером этой строки́ в банке;
в выбранную для замещения строку кэша из оперативной памяти загружаются 16 байт, среди которых находится перезаписываемый процессором байт памяти (адрес этой последовательности байт равен адресу требуемого байта, но с обнулёнными последними четырьмя битами);
тэг строки́ заменяется на тэг, выделенный из адреса требуемого байта;
теперь перезаписываемые данные точно присутствуют в кэше; контроллер увеличивает на единицу возраст тех строк (среди четырёх прочитанных), возраст которых меньше возраста строки́ с нужными данными, а возраст строки́ с нужными данными обнуляет;
контроллер модифицирует байт строки́ кэша в соответствии со смещением, выделенным из адреса;
бит модификации строки́ устанавливается в 1.
Мы видим, что N-ассоциативный кэш можно понимать, как N кэшей с прямым отображением адресов, которые, в свою очередь, являются элементами полностью ассоциативного кэша. Контроллер, размещая данные в кэш-памяти, оптимально выбирает один из N элементов полностью ассоциативного кэша. А в выбранном кэше он помещает данные в строку, номер которой жёстко определяется адресом этих данных в оперативной памяти.
Кэш с прямым отображением адресов и полностью ассоциативный кэш являются частными случаями (крайностями) N-ассоциативного кэша. Если , мы получаем кэш с прямым отображением адресов, если же N равно общему числу строк кэш-памяти, то получается полностью ассоциативный кэш[11].
N-ассоциативный кэш является самым распространённым видом кэша в современных компьютрерах, так как он гораздо эффективнее кэша с прямым отображением. В среднем, эффективность (отношение числа попаданий в кэш к общему числу обращений к памяти) работы двух-ассоциативного кэша объёмом V байт примерно равна эффективности работы кэша с прямым отображением объёмом байт. Аналогично, четырёх-ассоциативный кэш в 1.5–2 раза эффективней, чем двух-ассоциативный. С дальнейшим увеличением ассоциативности увеличение эффективности не так значительно[11].
В данном курсовом был проведён анализ архитектуры SRAM. Были рассмотрены логическая организация памяти, быстродействие, синхронизация работы (по отношению к процессору), контроль чётности, режимы страничного доступа, расслоение ОЗУ на банки и пакетно - конвейерный режим. Также рассмотрена SRAM Кэш память - (одноуровневая и двухуровневая), показаны её преимущества и недостатки. Так же освещены перспективы и прогрессивные технологии.
Например, SRAM непорядок быстрее чем DRAM, именно поэтому этот тип памяти часто применяется в кэше и в этом направлении он является доминирующим.
Если кэш такой быстрый, почему бы не поместить всю память в кэш? Одна из причин, по которой DRAM работает медленнее, чем SRAM - это постоянный процесс "обновления". А самый популярный способ "обновлять" данные - это считывать данные.
Все это было бы просто замечательно, если бы не необходимость в считывании или записи для "обновления" данных. SRAM избегает этого с помощью 4-6 транзисторов, которые статически сдерживают данные в памяти. С другой стороны, для хранения данных в DRAM используется всего лишь один транзистор в сочетании с конденсатором. Благодаря конденсатору значительно уменьшается размер ячеек DRAM на кристалле. В результате производство памяти обходится дешевле. Но при этом возникает проблема "обновления" данных, о которой мы уже рассказали.
Именно вследствие ценового фактора память SRAM не используется в больших количествах. Ведь она в несколько раз дороже DRAM. Поэтому SRAM не используют в качестве основной памяти системы. Но применение этой памяти в небольших объемах очень даже оправдано.