Архитектуры SRAM

Автор работы: Пользователь скрыл имя, 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

Вложенные файлы: 1 файл

Курсовая.docx

— 370.64 Кб (Скачать файл)

     

     Рисунок 5,6. Ячейка динамической памяти воплощенная в кристалле.

     1.1.5 Устройство интерфейсной обвязки

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

     Если  статическая память выполнена в  виде самостоятельной микросхемы, а  не располагается непосредственно  на кристалле процессора, линии ее входа зачастую объединяют с линиями  выхода, и требуемый режим работы приходится определять по состоянию  специального вывода WE (Write Enable). Высокое состояние вывода WE готовит микросхему к чтению данных, а низкое - к записи. Статическая память, размещенную на одном кристалле вместе с процессором, обычно не мультиплексирует, и в этом случае содержимое одной ячейки можно читать параллельно с записью другой (линии входа и выхода ведь раздельные!).

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

     

     Рисунок 7. Устройство типовой микросхемы SRAM-памяти.

     1.1.6 Временные диаграммы чтения/записи

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

     1.1.7 Цикл чтения

     Цикл  чтения начинается со сброса сигнала  CS (Chip Select - Выбор Чипа) в низкое состояние, давая понять тем самым микросхеме, что чип "выбран" и сейчас с ним будут работать (и работать будут, и прорабатывать!).

     К тому моменту, когда сигнал стабилизируется, на адресных линиях должен находиться готовый к употреблению адрес  ячейки (т.е. номер строки и номер  столбца), а сигнал WE должен быть переведен в высокое состояние (соответствующее операции чтения ячейки). Уровень сигнала OE (Output Enable - разрешение вывода) не играет никакой роли, т.к. на выходе пока ничего не содержится, точнее выходные линии находятся в, так называемом, высоко импедансом состоянии[3].

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

     1.1.8 Цикл записи

     Цикл  записи происходит в обратном порядке. Сначала мы выставляем на шину адрес  записываемой ячейки и одновременно с этим сбрасываем сигнал WE в низкое состояние. Затем, дождавшись, когда наш адрес декодируется, усилиться и поступит на соответствующие битовые линии, сбрасываем CS в низкий уровень, приказывая микросхеме подать сигнал высокого уровня на требуемую линию row. Защелка, удерживающая триггер, откроется и в зависимости от состоянии bit-линии, триггер переключится в то или иное состояние[3].

     

     Рисунок 8. Временные диаграммы чтения/записи асинхронной статической памяти.

     Задержка  данных относительно синхронизирующего перепада у современных микросхем РВ SRAM составляет 4,5-8 не! Но, как и в случае Sync Burst SRAM, этот параметр не является временем доступа в чистом виде (не следует забывать о двух-трех тактах в первой передаче), а отражает появление действительных данных относительно очередного перепада сигнала синхронизации. Интерфейс РВ SRAM аналогичен интерфейсу Sync Burst SRAM.

     1.2 Применение

 

     Самое распространенное применение статической памяти - кэширование ОЗУ. Когда процессор ПК работал на тактовой частоте 16 МГц и ниже, DRAM могла быть синхронизирована с системной платой и процессором, поэтому кэш был не нужен. Однако, как только тактовая частота процессора поднялась выше 16 МГц, синхронизировать DRAM с процессором стало невозможно, и именно тогда разработчики начали использовать SRAM в персональных компьютерах. Это произошло в 1986–87 годах, когда появились компьютеры с процессором 386, работающим на частотах 16 и 20 МГц. Именно в этих ПК впервые нашла применение так называемая кэш-память, т.е. высокоскоростной буфер, построенный на микросхемах SRAM, который непосредственно обменивается данными с процессором. Быстродействие кэша может быть сравнимо с быстродействием процессора, контроллер кэша может предугадывать потребности процессора в данных и предварительно загружать необходимые данные в высокоскоростную кэш память.

     На микросхемах статической памяти обычно строится внешний кэш, в котором используется архитектура прямого отображения или наборно-ассоциативная . Функции кэш-контроллера выполняет чипсет. Микросхемы хранения данных кэша организуются в банки, число микросхем в банке должно соответствовать разрядности системной шины процессора. Банк должен заполняться микросхемами одного объема, требуемое быстродействие микросхем зависит от частоты системной шины. Банков может быть и несколько, количество заполненных банков и организация установленных микросхем, определяющие объем кэш-памяти (VCACHE), задаются джамперами или определяются автоматически[4].

     Для хранения тегов обычно используется отдельная микросхема асинхронной SRAM - Tag SRAM, а для более чем 8-битного тега - пара микросхем. Здесь асинхронная память используется как для асинхронного, так и для синхронного кэша. Ее объем может и превышать минимально необходимый для установленной кэш-памяти. Требуемое быстродействие определяется тактовой частотой системной шины. Необходимый объем памяти тегов (количество ячеек) можно вычислить, разделив объем установленной кэш-памяти на длину строки кэша, определяемой чипсетом. Длина строки обычно равна количеству байт, передаваемых за один стандартный пакетный цикл (4х4=16 байт для i486, 4х8=32 байта для Pentium).

     Для старых системных плат с процессором Pentium были широко распространены модули COAST (Cache On A Stick) - "кэш на палочке". Это небольшой модуль с двусторонним печатным разъемом, устанавливаемый в специальный слот. Модуль содержит собственно кэш-память необходимой разрядности (асинхронную Async SRAM, синхронную пакетную Sync Burst SRAM или конвейерную РВ SRAM), на нем же может быть установлена и асинхронная память тегов. Модуль может использоваться и как расширение кэша, запаянного на системной плате. Аналогичные модули применялись и в других компьютерных платформах (например, в Power PC), но у них может не совпадать порядок следования адресов пакетного цикла синхронной памяти (у Power PC - последовательный) со специфическим порядком чередования, принятым для процессоров х86 Intel и совместимых с ними (порядок адресов задается логическим уровнем на одном из выводов микросхем Burst SRAM). В результате снижения цен на микросхемы статической памяти кэш фиксированного размера (чаще - максимального для конкретного чипсета) стали запаивать на системную плату, не применяя дополнительных модулей и разъемов[6].

     Перед пользователем обычно не встаёт проблема выбора кэш - памяти: в материнских  платах для Pentium кэш - память была просто распаяна на плате. Более того, кэш - память первого уровня давно встраивается в центральный процессор, а начиная с процессоров линии Pentium II эта участь постигла и кэш II-го уровня. То же самое произошло и с процессорами для Socket 7 (стандартный Pentium - разъем), например процессор AMD К6 - 3 содержит кэш второго уровня. В отличии от Pentium II он поддерживал кэш третьего уровня на материнской плате.  При этом кэш-память второго уровня работает на полной частоте процессора, обеспечивая на порядок большую производительность, чем кэш-память в более старых процессорах (произведенных до 1999 года), реализованная в виде отдельной внешней микросхемы. Кэш-память второго уровня во многих старых процессорах работает на частоте, составляющей половину или одну треть частоты ядра процессора. Быстродействие кэш-памяти имеет особое значение, поэтому компьютеры с кэш-памятью, представляющей собой отдельную микросхему, установленную на системной плате, обладали небольшой производительностью.

       Кэш-память второго уровня называется  вторичным или внешним кэшем; он устанавливался вне микросхемы процессора. Первоначально она устанавливалась на системной плате. (Так было во всех компьютерах на основе процессоров 386, 486 и Pentium.) Если кэш-память второго уровня установлена на системной плате, то она работает на ее частоте. В этом случае кэш-память второго уровня обычно находилась рядом с разъемом процессора[5].

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

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

     Кэш-память третьего уровня была впервые представлена в процессорах для рабочих  станций и серверов, таких, как  Xeon и Itanium, в 2001 году. Первым процессором для настольных ПК, в котором использовался кэш третьего уровня, был представленный в конце 2003 года процессор Pentium 4 Extreme Edition; он был оснащен интегрированным кэшем третьего уровня объемом 2 Мбайт[7].

Глава 2 SRAM в кэше

     2.1 Виды кэша

     2.1.1 Полностью ассоциативный кэш

     Пусть адрес байта оперативной памяти состоит из 32-х бит (4-х байт). Составим кэш из строк: пусть каждая строка содержит (хранит) адрес и байт, который соответствует этому адресу в оперативной памяти. Хранимый адрес принято называть тегом (tag), чтобы не путать его с адресом (номером) строки кэша.

     Такой кэш называется полностью ассоциативным, так как любой байт оперативной памяти может оказаться в любой строке кэша. Пусть, кроме того, каждая строка кэша снабжена устройством, которое сравнивает тег, хранящийся в строке, с адресом памяти, к которому обращается процессор, и, в случае совпадения, выдаёт соответствующий байт данных (рисунок 9). Про такую память говорят, что она адресуется данными[8].

     

     Рисунок 9. Пример поиска элемента в кэше по его адресу. 
Данные приведены в шестнадцатеричном виде.

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

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

     Выбрасывать нужно тот элемент, к которому наиболее долго не будет обращений. Но, так как кэш не знает, какие обращения к памяти будут в будущем, он вынужден использовать какое-то правило, которое бы хорошо «угадывало» нужный элемент. Например, можно выбрасывать случайную строку из кэша. Но на практике чаще всего выбрасывается тот элемент, который дольше всех не использовался. Мотивация такая: «если строка долго не использовалась, то она, скорее всего, ещё не скоро понадобится вновь»[9].

     Но  как определить, какая строка дольше всех не использовалась? Пусть, например, в кэше имеются 65536 строк. Тогда в каждую строку кэша можно добавить двухбайтовое целое число, которое будет обозначать «возраст» этой строки́. Строка, к которой обращались наиболее давно, имеет возраст, равный 65535. Строка, к которой было произведено обращение в последнюю очередь, имеет возраст 0.

     

     Рисунок 10. Дополнительные байты для хранения возраста строки.

     Пусть произошло попадание в кэш, и соответствующая строка имела возраст N. Присвоим ей возраст 0, а возрасты всех остальных строк, которые были меньше N, увеличим на единицу. Нетрудно видеть, что после такой операции все элементы кэша вновь имеют правильный возраст, соответствующий порядку их использования. Чтобы ускорить эту процедуру, нужно снабдить все стро́ки кэша устройствами, одновременно добавляющими единицу к возрасту своих строк. В случае промаха кэша из него выбрасывается элемент с максимальным (65535) возрастом, все возрасты увеличиваются на единицу, а новый элемент получает возраст 0.

     Теперь рассмотрим процесс записи. Пусть процессор хочет записать данные в память. Скорее всего, эти данные вскоре понадобятся вновь, поэтому они должны быть записаны в кэш. Но нужно ли писать их при этом ещё и в оперативную память? Если данные в оперативную память записываются одновременно с записью в кэш, то он называется кэшом со сквозной записью[9].

Информация о работе Архитектуры SRAM