Аннулирование строк выполняется внешними схемами – оно необходимо в системах, у которых в оперативную память запись может производить не только один процессор, а и другие контроллеры шины – процессор или периферийные контроллеры. В этом случае требуются специальные средства для поддержания согласованности данных во всех ступенях памяти – в первичной и вторичной кэш-памяти и динамического ОЗУ. Если внешний (по отношению к рассматриваемому процессору) контроллер выполняет запись в память, процессору должен быть подан сигнал AHOLD. По этому сигналу процессор немедленно отдает управление шиной адреса A[31:4], на которой внешним контроллером устанавливается адрес памяти, сопровождаемый стробом EADS#. Если адресованная память присутствует в первичном кэше, процессор аннулирует строку – сбрасывает бит достоверности этой строки (она освобождается). Аннулирование строки процессор выполняет в любом состоянии.
Управление заполнением кэша возможно и на аппаратном и на программном уровнях. Процессор позволяет кэшировать любую область физической памяти, но внешние схемы могут запрещать процессору кэшировать определенные области памяти. Это делается по различным причинам, зачастую связанным с определенными условиями создания компьютерной системы.
В отличие от внутренней кэш-памяти, внешняя больше напоминает обычную память. Однако алгоритм работы с ней практически такой же.
Внешняя кэш-память состоит из памяти данных, построенная на микросхемах SRAM, и контроллера кэша. В кэш-памяти хранится информация, копируемая из основной оперативной памяти. Каждый раз при обращении микропроцессора к памяти контроллер кэш-памяти проверяет наличие данных в кэше. Если эти данные в кэше есть (“попадание”), то микропроцессор получает данные из кэша. Если этих данных нет (“промах”), выполняется обычный цикл обращения к оперативной памяти DRAM.
Основным фактором, определяющим вероятность попадания, является емкость кэш-памяти. Как правило, при объеме кэша в 2 Кбайта вероятность попадания составляет от 50 до 60%. Поскольку размер кэш-памяти на современных компьютерах превышает 256 Кбайт, то вероятность попадания будет выше 90% (для компьютеров с объемом памяти ~ 256 Мбайт.)
Для реализации кэш-памяти в настоящее время разработаны эффективные однокристальные контроллеры. Наиболее широкое распространение получили контроллеры i82385 фирмы Intel и A38152 фирмы Asustec Microsystems.
Контроллер i82385 поддерживает 32 Кбайта кэш-памяти, и может работать в двух конфигурациях:
кэш-память с прямым отображением;
двухканальная модульно-ассоциативная кэш-память.
Первая конфигурация характеризуется простотой реализации, однако она оказывается неэффективной при работе в мультизадачных системах. В двухканальной реализации кэш-память разбивает все 4 Гбайтное адресное пространство на 262144 страницы по 16 Кбайт. 32-х разрядный физический адрес состоит из четырнадцатиразрядного адреса, определяющего информацию в кэш-памяти, и восемнадцатиразрядного тега, определяющего номер страницы. Каждый адрес оперативной памяти может быть отображен в одну из двух ячеек кэш-памяти.
Особенность контроллера кэш-памяти – обеспечение возможности параллельной работы микропроцессора с кэш-памятью и периферийных устройств с оперативной памятью в режиме прямого доступа. При записи данных по адресам, находящихся в кэше, контроллер ликвидирует копии этих блоков в кэше. Всю работу по синхронизации данных в DRAM и кэше берет на себя этот контроллер.
Одним из популярных контроллеров кэш-памяти является однокристальный контроллер кэш-памяти фирмы ASUSTEC, совместно с памятью данных 32 Кбайта обеспечивает вероятность попадания более 95%. Это достигается благодаря использованию четырехканального модульно-ассоциативного обращения, который отображает адрес оперативной памяти в одну из четырех ячеек кэш-памяти. При этом, вследствие организации последовательного обращения к памяти данных, требуется подключение всего одного банка памяти данных.
Контроллер A38152 фирмы Asustec имеет аппаратные и программные средства, обеспечивающие связанность информации: логика слежения за шиной, которая обеспечивает ликвидацию копий блоков в кэш-памяти, задание области адресов, не отображаемой в кэш-память.
На многих материнских платах можно выбирать между одноуровневой или многоуровневой системами организации памяти. По умолчанию устанавливается ражим многоуровневой памяти. Если Вы установите режим одноуровневой памяти, то кэш-память SRAM просто добавляется к адресному пространству основной оперативной памяти. Одноуровневую память лучше использовать, когда внутренний кэш процессора по объему превосходит емкость кэш-памяти на материнской плате.
4. Дополнительная кэш-память и программное кэширование
Однако кэш-память процессора и оперативной памяти – это не единственный вариант ее использования. Фактически кэширование как процесс увеличения скорости за счет подмены устройства более быстрым, используется уже давно. Причем не аппаратно, а программно (аппаратно тоже, но это остается за высоким забором закрытых технологий производителей жестких дисков и других устройств).
Операционная система MS-DOS с 4 версии имеет в своем составе программу smartdrive, позволяющую наиболее используемые данные с жесткого диска (или дисков) перенести в память компьютера. При этом ОС, обращаясь к диску, будет фактически обращаться к памяти, за счет чего увеличится быстродействие. Позже, при наименьшей загрузке данные из памяти будут скинуты на диск.
Естественно, так как идеала не существует, то и в данной модели приходится чем-то жертвовать. Такой жертвой является свободная память. Однако если на первых компьютерах с объемом памяти 1-16 Мб это было существенно, то сегодня, когда объем памяти нередко всего лишь в несколько раз меньше объема диска, выделить под кэш 4-16 Мб не так уж и страшно.
Но сегодня думать об этом пользователю нет необходимости. Современные операционные системы Windows 95/98/Me/2000/XP организуют кэш для жесткого диска (и вообще для всех устройств хранения информации) в памяти самостоятельно, автоматически выделяя под любое устройство требуемый объем и делая это совершенно незаметно для пользователя.
Единственным недостатком подобной организации остается то, что в случае пропадания питания (и не очень хорошем блоке питания) данные из памяти на диск ОС сбросить не успеет, и они будут утеряны.
Стоит добавить, что сегодня практически все жесткие диски имеют встроенный кэш для увеличения работы. Причем ему не свойственен недостаток, описанный нами выше. Современные технологии позволяют жесткому диску даже после пропадания питания нормально очищать кэш и завершать работу.
Однако говоря о кэш, нельзя не упомянуть о такой его своеобразной реализации, как файл подкачки в Windows. Казалось бы: если компьютер и так тормозит из-за работы с ОЗУ, то зачем создавать лишние проблемы и скидывать часть данных из ОЗУ на диск - ведь это еще сильнее уменьшит скорость работы системы. Однако цели здесь совсем иные.
Основное назначение файла подкачки заключается в том, чтобы позволить активной программе воспользоваться практически всем объемом памяти, установленным на компьютере. Естественно, что если вы работаете в word и печатаете (уже два часа) три страницы какого-то текста, то все 512 Мб ОЗУ вам не нужны. Но если сфера вашей деятельности – видео, звуки либо работа в интернете (особенно в роли web-мастера), то это уже является существенным плюсом ОС. Вы можете запустить все нужные вам программы, а затем не только пользоваться практически 100% объема ОЗУ, установленного на компьютере, но и использовать его в качестве этакого громадного буфера обмена.
Кроме того, данная организация позволяет выполнить еще одну функцию: периодическую оптимизацию данных, содержащихся в ОЗУ с целью более рационального его использования. Удаление данных, уже не используемых, а также сохранение данных, редко используемых, на диске, позволяет высвободить дополнительный объем пространства.
Кэш-память, появившаяся в конце 80-х, первоначально была доступна немногим и зачастую ей пророчили короткое будущее: цены на нее были астрономические, а реальной прибавки быстродействия было недостаточно. Однако бум высоких технологий в 90-х изменил отношение пользователей и специалистов к подобному явлению: сейчас кэш любят и уменьшают зачастую в случае опять же дороговизны со слезами.
Выпустив 486 процессор, фирма Intel произвела настоящую революцию. Здесь не только наличие встроенного математического сопроцессора и умножение частоты, но еще и наличие встроенного кэш. Грустно признать, но с этого момента подобных революций Intel уже не производила.
После этого был PentiumPro, несущий на себе уже два уровня кэш-памяти, а затем и PentiumII, аналогичный предыдущему, но более быстрый и более дешевый.
Затем наметилось разделение: встроенный кэш второго уровня обеспечивал серьезный подъем производительности, но стоил дорого. Поэтому в дешевых моделях процессоров (CeleronCovington – 266-300 МГц) его устанавливать не спешили (опять же есть мнение, что кэш-то там есть, просто его работа запрещена).
Однако в следующей модели Celeron – Mednocino (300-433 МГц) кэш второй памяти уже был. И на сегодняшний день, по крайней мере Intel, больше не заявляет о том, что собирается лишать какой-либо свой будущий процессор этого полезного довеска.
Гук. М. Процессоры intel от 8086 до Pentium 4. С-Питербург -“Питер Паблишинг” – 2002.
В.Э. Фигурнов IBMPC для пользователя; 8 издание. Москва - «Финансы», 2001.
Обзор процессоров и шин ПВМ. Москва – 2001.
Косячков Р. Дед мороз – красный нос. Компьютерра-Спецвыпуск, Зима 2002, Зимние подарки. С. 8-13.
Радовский Н. Пути апгрейда. Компьютерра-Спецвыпуск, Зима 2002, Зимние подарки. С. 14-21.