Материал: 835

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

15

для дозаписи и т.п.). В основном используются две схемы организации кэша: с прямым отображением (direct mapped), когда каждый адрес памяти может кэшироваться только одной строкой (в этом случае номер строки определяется младшими разрядами адреса), и n-связный ассоциативный (n-way associative), когда каждый адрес может кэшироваться несколькими строками. Ассоциативный кэш более сложен, однако позволяет более гибко кэшировать данные. Наиболее распространены 4-связные системы кэширования: вся кэш-память разбивается на четыре блока (четырехстраничный кэш), в каждом из которых хранятся копии различных фрагментов основной памяти.

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

ется кэш со сквозной записью (write-through), при которой дан-

ные, записанные в кэш, автоматически записываются и в основную память.

В процессорах Pentium используется двунаправленный кэш (write-back), который работает при выполнении как операций считывания, так и операций записи. Это позволяет еще больше повысить производительность процессора. Хотя встроенный кэш

впроцессоре 486 используется только при чтении, внешний кэш

всистеме может быть двунаправленным. Кроме того, в процессорах 486 предусмотрен дополнительный 4-байтовый буфер, в котором можно хранить данные вплоть до передачи в память. Это необходимо в том случае, если шина памяти занята. Одной из функций встроенного кэш-контроллера является отслеживание состояния системной шины при передаче управления шиной другому устройству. Если устройство, управляющее шиной, записывает что-либо в область памяти, копия которой хранится во встроенном кэше, содержимое кэша перестает соответствовать содержимому основной памяти. В этом случае кэш-контроллер отмечает эти данные как ошибочные и при следующем обращении процессора к памяти обновляет содержимое кэша, поддерживая целостность системы.

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

16

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

Вторичный кэш для процессоров Pentium находится на системной плате, а для процессоров Pentium Рго и Pentium II (шестого поколения) — внутри корпуса процессора. Переместив вторичный кэш в процессор, можно заставить его работать с тактовой частотой, более высокой, чем у системной платы, — практически с такой же, как и сам процессор.

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

1.1.5 Режимы работы процессора

Все 32-разрядные и более поздние процессоры Intel, начиная с 386, могут выполнять программы в нескольких режимах. Режимы процессора предназначены для выполнения программ в различных средах: в разных режимах возможности чипа неодинаковы, потому что команды выполняются по-разному. В зависимости от режима процессора изменяется схема управления памятью системы и задачами. Процессоры могут работать в трех режимах:

реальном, защищенном и виртуальном реальном режиме (ре-

альном внутри защищенного).

Реальный режим. В первоначальном IВМ РС использовался процессор 8088, который мог выполнять 16-разрядные команды, используя 16-разрядные внутренние регистры, а адресовать только 1 Мбайт памяти, используя 20 разрядов для адреса. Все программное обеспечение первоначально было предназначено для этого процессора; оно было разработано на основе 16-разрядной системы команд и модели памяти объемом 1 Мбайт (например, DOS). Все программное обеспечение DOS, Windows от 1.x до 3.x и все их приложения написаны в расчете на

17

16-разрядные команды и для выполнения на первоначальном процессоре 8088.

Более поздние процессоры, например 286, могли также выполнять те же самые 16-разрядные команды, что и первоначальный 8088, но намного быстрее. Другими словами, процессор 286 был полностью совместим с первоначальным 8088 и мог выполнять все 16-разрядные рограммы точно так же, как 8088, но, конечно же, значительно быстрее. Шестнадцатиразрядный режим, в котором выполнялись команды процессоров 8088 и 286, был назван реальным режимам. Для программного обеспечения этого типа обычно используется однозадачный режим, т.е. одновременно может выполниться только одна программа. Нет никакой встроенной защиты для предотвращения перезаписи ячеек памяти одной программы или даже операционной системы другой программой; это означает, что при выполнении нескольких программ вполне могут быть испорчены данные или код одной из них.

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

Зная, что разработка новых операционных систем и приложений, использующих преимущества 32-разрядного защищенного режима, займет некоторое время, Intel предусмотрела в процессоре 386 обратно совместимый реальный режим. Благодаря этому процессор 386 мог выполнять немодифицированные 16-разрядные операционные системы и приложения. Причем они выполнялись намного быстрее, чем на любом процессоре предыдущего поколения. Для большинства пользователей этого было достаточно; им не требовалось все 32-разрядное программное обеспечение — достаточно было того, чтобы имевшиеся у них 16-разрядные программы работали быстрее. К сожалению, из-за

18

этого процессор никогда не работал в 32-разрядном защищенном режиме, и все возможности такого режима не использовались.

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

к32-разрядной среде. Сообщество пользователей оказалось весьма устойчивым в своих привязанностях и не желанию изменять привычек.

Из-за этого сопротивления 32-разрядные операционные системы типа Unix, OS/2 и даже Windows NТ вначале очень вяло продвигались на рынке персональных компьютеров. Из всех перечисленных систем только Windows NT, вероятно, была близка

ккоммерческому успеху, да и то благодаря огромной популярности семейства операционных систем Windows 9х. Последней полностью 16-разрядной операционной системой была Windows 3.x (правда, на самом деле она не была полной операционной системой, а выполнялась как надстройка над DOS).

Вавгусте 1995 года появилась ОС Windows 95 как промежуточная система для перехода в 32-разрядный мир. Windows 95 — в основном 32-разрядная операционная система, но в ней можно выполнять старые 16-разрядные приложения. Windows 95 появилась через 10 лет после появления первого 32-разрядного процессора для персонального компьютера.

Виртуальный реальный режим. Для обратной совмести-

мости 32-разрядная система Windows 95 использует третий ре-

жим в процессоре — виртуальный реальный режим. Виртуаль-

ный реальный, по существу, является режимом выполнения 16-разрядной среды (реальный режим), которое реализовано внутри 32-разрядного защищенного режима (т.е. виртуально, а не реально). Выполняя команды в окне подсказки DOS внутри Windows 95/98, вы создаете виртуальный сеанс реального режима. Поскольку защищенный режим является подлинно многозадачным, фактически можно выполнять несколько сеансов реального режима, причем в каждом сеансе собственное программное обеспечение выполняется на виртуальном компьютере. И все эти приложения могут выполняться одновременно, даже во время выполнения других 32-разрядньтх программ. Обратите внимание,

19

что любая программа, выполняющаяся в виртуальном окне реального режима, может обращаться только к памяти объемом до 1 Мбайт, причем для каждой такой программы это будет первый и единственный мегабайт памяти в системе. Другими словами, если вы выполняете приложение DOS в виртуальном реальном окне, ему будет доступна память только объемом до 640 Кбайт. Так происходит потому, что имеется только 1 Мбайт общей оперативной памяти в 16-разрядной среде, а верхние 384 Кбайт зарезервированы для системы. Виртуальное реальное окно полностью имитирует среду процессора 8088, и, если не учитывать быстродействие, программное обеспечение будет выполняться так, как оно выполнялось первым РС в реальном режиме. Каждая виртуальная машина получает собственный 1 Мбайт адресного пространства и собственный экземпляр реальных аппаратных подпрограмм управления аппаратурой (базовую систему вводавывода), причем при этом эмулируются все регистры и возможности реального режима.

Хотя реальный режим используется DOS и «стандартными» приложениями DOS, есть специальные программы, которые «расширяют» DOS и позволяют доступ к дополнительной памяти ХМS (сверх 1 Мбайт). Они иногда называются расширителями DOS и обычно включаются как часть программного обеспечения DOS или Windows З.х, в котором используется. Протокол, описывающий, как выполнять DOS в защищенном режиме, называ-

ется DPMI (DOS protected mode interface — интерфейс защищен-

ного режима DOS). DPMI использовался в Windows 3.х для обращения к дополнительной памяти ХМS при работе приложений для Windows 3.х. Этот протокол разрешал 16-разрядным приложениям использовать память, превышающую 1 Мбайт. Расширители DOS особенно часто применяются в играх DOS; именно благодаря им игровая программа может использовать намного больший объем памяти, чем стандартный (1 Мбайт), к которому может адресоваться большинство программ, работающих в реальном режиме. Эти расширители DOS переключают процессор в реальный режим и обратно, а в случае запуска под управлением Windows применяют интерфейс DРМI, встроенный в Windows, и тем самым позволяют другим программам совместно использовать часть дополнительной памяти ХМS системы.