русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Ошибки процессоров Pentium


Дата добавления: 2015-08-14; просмотров: 1256; Нарушение авторских прав


Процессоры 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 запрещена работа первичного кэша). Есть и другой способ «лечения» ошибки, который и применяют в многопользовательских ОС, — в дескрипторе обработчика исключений установить флаг недействительности страницы памя­ти, что приводит к двойному исключению, которое, к счастью, обрабатывается без блокировки. Однако такой обход ошибки может вызвать сложности при работе с отладчиками.





<== предыдущая лекция | следующая лекция ==>
Мобильные процессоры | Основные характеристики процессоров


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.694 сек.