- •Кафедра судовой автоматики и измерений Схемотехника
- •Санкт-Петербург
- •Введение
- •Конструкция персонального компьютера
- •1.1. Термины
- •1.2. Системные ресурсы пк
- •1.3. Клавиатура
- •1.4. Манипуляторы (mouse, trackball)
- •2. Системная плата
- •2.1. Конструктив и установка плат
- •2.3. Чипсет
- •2.4. Синхронизация компонентов системной платы
- •2.5. Шины расширения ввода/вывода
- •2.5.1. Шина isa (Industrial Standard Architecture)
- •2.5.2. Шина pci (Peripheral Component Interconnect bus)
- •2.5.3. Шина agp (Accelerated Graphic Port)
- •3. Процессоры
- •3.1. Питание и охлаждение процессоров
- •3.2.1. Процессоры 8086/8088 — родоначальники семейства
- •3.2.2. Процессор 80286
- •3.3.1. Архитектура процессоров
- •3.3.2. Внутренний кэш
- •3.4. Процессоры 386/387
- •3.5. Процессоры 486
- •3.5.1. OverDrive-процессоры фирмы Intel для системных плат 486
- •3.5.2. Процессоры, совместимые с i486
- •3.6. Обзор процессоров семейства Pentium
- •3.7. Процессоры пятого поколения класса Pentium
- •3.8. Процессоры, совместимые с Pentium
- •3.8.3. Малораспространенные Pentium-совместимые процессоры
- •3.9. Шестое поколение процессоров Pentium
- •3.9.1. Процессоры Pentium II
- •3.9.2. Процессоры Pentium III
- •3.9.3. Процессоры Celeron
- •3.10. Процессоры Pentium 4
- •3.11. Мобильные процессоры
- •3.12. Ошибки процессоров Pentium
- •3.13. Основные характеристики процессоров
3.12. Ошибки процессоров Pentium
Процессоры Pentium, как и любые сложные изделия, кроме штатных свойств имеют и недокументированные возможности, и, к сожалению, ошибки или опечатки (Erratum). Первая из серьезных обнаруженных ошибок — математическая — относилась к FPU процессора Pentium и известна под названием «floating point flaw». Эта ошибка выражалась в потере точности при выполнении деления с некоторыми сочетаниями операндов. Ошибка могла появляться от 4 до 19 разряда после десятичной точки. С начала 1995 года процессоры выпускались уже без ошибок. Статистические исследования показывают, что ошибка может проявляться раз в несколько лет. Тем не менее фирма Intel до сих пор обеспечивает бесплатную замену уже проданных процессоров с ошибкой на исправленные версии, но без апгрейда на более современные модели. Процессоры с ошибкой могут быть выявлены с помощью утилиты CPUIDF.EXE, которую можно получить на Web-сервере компании.
Весной 1997 года в процессорах Pentium Pro и Pentium II была обнаружена ошибка формирования флагов FPU при преобразовании форматов больших отрицательных чисел, в результате чего поведение FPU в некоторых случаях не подчиняется требованиям стандарта IEEE для обработки чисел с плавающей точкой. Этой ошибке, называемой в прессе «Dan-0411» по имени и дате ее первооткрывателя, фирма Intel дала официальное название «Flag Erratum».
Осенью 1997 года обнаружилась более серьезная ошибка, которая поначалу поставила под сомнение возможность применения процессоров Pentium (включая ММХ) в многопользовательских системах. Суть ошибки заключается в том, что любая задача может остановить процессор, независимо от уровня привилегий, что противоречит принципам защиты, провозглашенным для 32-разрядных процессоров. Штатным образом процессор останавливается по инструкции HALT, которая в защищенном режиме является привилегированной и не исполняется на уровне пользователя. Однако к блокировке процессора, оказывается, приводит и исполнение ошибочной инструкции, заданной последовательностью кодов F0 0F С7 С8. Этот код расшифровывается как инструкция LOCK: CMPXCHG8B ЕАХ (некорректная, поскольку пытается сравнить 32-битный операнд с 64-битным), доступная на любом уровне привилегий. Последний байт инструкции может принимать любое значение в диапазоне F8-FF, что будет соответствовать другим регистрам. Вместо вырабатывания исключения неверного кода инструкции процессор блокируется. Таким образом, любой пользователь многопользовательской системы может умышленно остановить компьютер-сервер. Эта ошибка, названная «Pentium FO bug», имеется во всех процессорах Pentium и Pentium ММХ. В процессорах Pentium Pro и Pentium II ее нет, как нет и в процессорах 5-6 поколений от AMD и Cyrix. Впоследствии оказалось, что все не так трагично. Если обработчик исключения находится в первичном кэше, блокировки не происходит. В принципе, обработчик можно навечно «поселить» в кэше — для этого после обращения к его коду, приводящему к его считыванию из ОЗУ в кэш, нужно установить бит CD (Cache Disable) в управляющем регистре CRO. Но при этом кэш превратится в «замороженную» область внутренней статической памяти и, естественно, по прямому назначению (кэшированию текущих обращений) работать не будет. Как это скажется на производительности компьютера, догадаться не сложно (можно ради интереса поработать на компьютере, у которого в BIOS Setup запрещена работа первичного кэша). Есть и другой способ «лечения» ошибки, который и применяют в многопользовательских ОС, — в дескрипторе обработчика исключений установить флаг недействительности страницы памяти, что приводит к двойному исключению, которое, к счастью, обрабатывается без блокировки. Однако такой обход ошибки может вызвать сложности при работе с отладчиками.