К. Касперски - Техника оптимизации программ, Эффективное использование памяти (1127752), страница 49
Текст из файла (страница 49)
К недостаткам триггеров следует отнести их высокую стоимость и низкую плотность хранения информации. Если для создания ячейки динамической памяти достаточного всего одного транзистора и одного конденсатора, то ячейка статической памяти состоит как минимум из четырех, а в среднем шести-восьми транзисторов, поэтому мегабайт статической памяти оказывается по меньшей мере в несколько раз дороже. Устройство триггера В основе всех триггеров лежит кольцо из двух логических элементов "НЕ" (инверторов), соединенных по типу "защелки" (рис.
3.1). Рассмотрим, как он, работает. Если подать на линию О сигнал, соответствующий единице, то он поступив на вход элемента Р.Р2 и пройдя сквозь него, обратится в ноль. Затем этот сигнал, поступив на вход другого элемента Р.Р1, — вновь превратится в единицу. Поскольку выход элемента Р.Р2 подключен ко входу элемента Р.Р!„то даже после исчезновения сигнала с линии О он будет поддерживать себя самостоятельно, т.
е. триггер перейдет в устойчивое состояние. Образно это можно уподобить дракону, кусающему себя за хвост. Рис. 3.1. Устройство простейшего триггера (слева). Образно триггер можно представить драконом, кусающим свой хвост Глава 3 246 Естественно, если на линию () подать сигнал, соответствуюьций логическому нулю, — все будет происходить точно так же, но с противоположными сигналами! Устройство элемента нНЕв (инвертора) Как устроен элемент "НЕ"2 На этот вопрос нельзя ответить однозначно.
В зависимости от имеющейся у нас элементарной базы конечная реализация варьируется в очень широких пределах. Ниже в качестве примера приведена принципиальная схема простейшего инвертора, сконструированного из двух последовательно соединенных комплементарых (взаимно дополняемых) СМОК-транзисторов О2 и О1 — р- и и-канального (рис.
3.2). Если на затворы полается нулевой уровень, то открывается только р-канал, а и-канач остается разомкнутым. В результате, на выходе мы имеем питающее напряжение (т. е. высокий уровень). Напротив, если на затворы подается высокий уровень, размыкается п-канач, а р-канал — замыкается. Выход оказывается закорочен на общую точку ("землю") и на нем устанавливается нулевое напряжение (т. е, низкий уровень). Чвых Чвх -о" Рис. 3.2. Устройство элемента "НЕ" (инверторв) Устройство матрицы статической памяти Подобно ячейкам динамической памяти (свь разд.
"Салгелг!ала! !)ЛАМ (Ра~е Мабе !)ВАМ) — «обычная» !)ЛАМ" главы 2), триггеры объединяются в единую матрицу, состоящую из строк (готу) и столбцов (со1пщп), последние из которых так же называются битами ((пт). Кзш 247 В отличие от ячейки динамической памяти, для управления которой достаточно всего одного ключевого транзистора, ячейка статической памяти управляется как минимум двумя. Это не покажется удивительным, если вспомнить, что триггер, в отличие от конденсатора, имеет раздельные входы для записи логического нуля и единицы соответственно.
Таким образом, на ячейку статической памяти расходуется целых восемь транзисторов (рис. 3.3) — четыре идут собственно на сам триггер и еще два — на управляющие "ключи". Инвертср Рис. 3.3. Устройство 8-транзисторной однопортовой ячейки ЯЯАКЛ-памяти Причем, шесть транзисторов на ячейку — зто еше пе предел! Существуют и более сложные конструкции! Основной недостаток 6-транзисторной ячейки заключается в том, что в каждый момент времени может обрабатываться всего лишь одна строка матрицы памяти. Параллельное чтение ячеек, расположенных в различных строках олного и того же банка, невозможно, равно как невозможно и чтение одной ячейки одновременно с записью другой.
Этого ограничения лишена мпогопортовап память. Каждая ячейка многопортовой памяти содержит один-единственный триггер, но имеет несколько комплектов управляющих транзисторов, каждый из которгях подключен к "своим" линиям В0% и В1Т, благодаря чему различные ячейки матрицы могут обрабатываться независимо. Такой подход намного более прогрессивен, чем деление памяти на банки. Ведь в последнем случае параллелизм достигается лишь при обращении к ячейкам различных банков, что не всегда выполнимо, а многопортовая память допускает одновременную обработку любых ячеек, избавляя программиста от необходимости вникать в особенности ее архитектуры. Печально, но кзш-память семейства х86-процессоров не истинно многопортовая, а состоит из восыии однопортовых матриц, подключенных к двухпортовой интерфейсной обвязке; см, так же раэд.
"Оптимизация обращения к памятп и кашу: этой главы. 248 Глава 3 Наиболее часто встречается двухпортовая память, устройство ячейки кото- рой изображено на рис. ЗА. Это совсем не та память, которая, в частности, применяется в кэше первого уровня микропроцессоров 1п1е! Реп1юпт. Нетрудно подсчитать, что для создания одной ячейки лвухпортовой памяти расходуется аж восемь транзисторов. Пусть емкость кэш-памяти составляет 32 Кбайт, тогда только на одно ядро уйдет свыше двух миллионов транзисторов! Рис. 3.4.
Устройство 8-транэистроной двухпортовой ячейки ЯВЯМ-памяти Рис. 3.6. Ячейка динамической памяти, воплощенная в кристалле (увеличено) Рис. 3.5. Ячейка динамической памяти, воплощенная в кристалле Устройство интерфейсной обвязки По своему устройству интерфейсная обвязка матрицы статической памяти практически ничем не отличается от аналогичной ей обвязки матрицы динамической памяти Гсм. Разд. "Солтелггола! РЙАМ (Раде Моде ХИАМ)— «обычнаяк ОйАМ" главы 2). Поэтому не будем подробно останавливаться на этом вопросе и рассмотрим его лишь в общих чертах.
249 Каш Пожалуй, единственное различие в интерфейсах статической и динамической памяти заключается в том, что микросхемы статической памяти, имея значительно меньшую емкость (а, следовательно — и меньшее количество адресных линий) и физически располагаясь гораздо ближе к процессору, могут позволить себе роскошь не прибегать к мультиплексированию.
И потому для достижения наивысшей производительности номера строк и столбцов чаще всего передаются одновременно. Если статическая память выполнена в виде самостоятельной микросхемы, а не располагается непосредственно на кристалле процессора, линии ее входа зачастую объединяют с линиями выхода, и требуемый режим работы приходится определять по состоянию специального вывода %Е (ттгйе ЕпаЫе). Высокое состояние вывода ттЕ готовит микросхему к чтению данных, а низкое — к записи. Статическую память, размещенную на одном кристалле вместе с процессором, выполняют обычно без использования мультиплексирования входов и выходов, и в этом случае содержимое одной ячейки можно читать параллельно с записью другой (линии входа и выхода ведь раздельные!). Рис.
3.7. Устройство типовой микросхемы ЯНАМ-памяти Глава о гво Номера столбцов и строк поступают на декодеры столбца и строки соответственно (рис. 3.7). После декодирования расшифрованный номер строки поступает на дополнительный декодер, вычисляющий принадлежащую ей матрицу. Оттуда он попадает непосредственно на выборщик строки, который открывает "ключи" требуемой страницы. В зависимости от выбранного режима работы чувствительный усилитель, подсоединенный к битовым линейкам матрицы, либо считывает состояние триггеров соответствующей гаилинейки, либо "перезашелкивает" их согласно записываемой информации.
Временные диаграммы чтения/записи Временные диаграммы чтения/записи статической памяти практически ничем не отличаются от аналогичных им диаграмм микросхем динамической памяти (что и неудивительно, т. к. интерфейсная обвязка в обоих случаях схожа). Цикл чтения Цикл чтения начинается с установки сигнала СЯ (С)йр Яе!ест — выбор чипа), т. е.
перевода его в низкое (активное) состояние, давая "понять" тем самым микросхеме, что чип "выбран" и сейчас с ним будут работать (рис. З.Я). чтение — Ччн мк к Ачии ! АО-А1 9 ОЕ Оа1аОгд Рио. 3.8. Временные диаграммы чтения/записи асинхронной статической памяти Кэш гбг Примечание "Установка" сигнала — это перевод его в активное состояние, а "сброс" — в пассивное. При этом сипсал может иметь активный высокий или низкий уровень в зависимости от самого сигнала. Черта над наименованием сигнала указывает на его активный низкий уровень. К тому моменту, когда сигнал стабилизируется, на алресных линиях должен находиться готовый "к употреблению" адрес ячейки (т. е.