Шрифт:
Так как многие возможности Intel 386 довольно долгое время были не востребованы широким кругом пользователей, то для уменьшения цены на компьютеры в 1988 г. был выпущен процессор, который маркировался суффиксом SX. Процессор Intel 386SX, как и 8088, обладал сокращенной в два раза шиной данных, а для адресации ячеек памяти использовалось всего 24 разряда вместо 32-х. После выхода Intel 386SX полноразрядные варианты стали носить название Intel 386DX.
Для портативных компьютеров в 1990 г. был выпущен процессор Intel 386SL. Он полностью повторял основные технические характеристики Intel 386SX. Для целей энергосбережения использовались технические решения, которые позволяли отключать неиспользуемые внутренние блоки. Кроме того, в архитектуру процессора включили кэш-память и средства управления памятью. Количество транзисторов в процессоре увеличилось до 855 000 (технология 1 мкм).
Сопроцессоры
Прежде чем мы перейдем к обсуждению процессоров Intel 486, которые относятся ко второму поколению 32-разрядных процессоров, надо вспомнить еще об одной линии компьютерных микросхем – математических сопроцессорах, предназначенных для использования в компьютерах.
Когда-то тема использования сопроцессора была так же актуальна, как сегодня диспут о различных ускорителях для видеокарт. Теперь же, когда в процессорах Pentium сопроцессор встроен непосредственно в ядро, являясь одним из его многочисленных логических блоков, о нем вспоминают только программисты. Но поскольку принципы работы встроенного сопроцессора остались неизменными, и с учетом того, что в процессорах Pentium ММХ регистры сопроцессора используются по другому назначению, то кратко рассмотрим историю развития и этого семейства микросхем.
У компьютеров минимальная единица данных – это бит, который может быть равен 0 или 1. Наиболее популярное машинное слово – байт, в котором 8 битов. Если в байте все биты равны нулю, то считается, что в байте записано число 0.
Добавляя по 1 к содержимому байта, мы получим ряд:
• 0000 0001 – десятичное число 1;
• 1111 1111 – десятичное число 255 (в ряде случаев компьютер считает, что это минус единица).
Получается ряд целых чисел: 0, 1, 2, 3, …, 100, …, 255.
Микросхемы процессоров, рассматриваемые в этой книге, могут отлично проводить арифметические действия с любыми целыми числами: сложение, вычитание, умножение и деление. Но если попросить разделить, например пять на два, то процессор честно ответит – два. Оказывается, число 1,5 неизвестно процессору, т. к. оно является дробным числом.
Сделаем здесь небольшое отступление и рассмотрим используемые в информационных технологиях системы счисления. В компьютерной литературе широко используется двоичная и шестнадцатеричная системы счисления. Для непрограммиста такой подход несколько неожидан, т. к. в реальной жизни используется десятичная система счисления, например нумерация страниц этой книги. Правда, современный человек вполне усвоил, что компьютеры оперируют двоичной системой счисления: да – нет или 0–1, а вот шестнадцатеричная система счисления вызывает множество вопросов. Но тут следует сказать, что для описания работы современных процессоров такая система счисления дает возможность легко понимать содержимое регистров и разбираться с адресной информацией.
Для удобства запоминания связи между разными системами счисления рассмотрите табл. 2.1 и попробуйте перевести, не смотря уже в таблицу, несколько десятичных чисел, например 11 и 68, в разные системы счисления.
Обозначают, в какой системе счисления записано число, несколькими способами. Для шестнадцатеричных чисел наиболее очевиден вариант, когда к числу добавляется приставка Hex или Н. Но программисты обычно используют другой способ, который применяется в листингах программ и конфигурационных файлах. В этом случае шестнадцатеричное число начинается символами "0х", например 0x1, 0x367, 0xFF71.
К двоичные числам добавляется символ "Ь", например 100111b.
Для обозначения десятичных чисел в большинстве случаев не применяют дополнительных символов, хотя иногда может добавляться символ "D". В основном, такой способ выделения десятичных чисел применяется в литературе по языку Ассемблера.
Итак, возвращаясь к процессорам, заметим, что для вычисления дробных чисел используются специальные подпрограммы, которым требуется не один машинный такт, за который процессор может сложить два целых числа, а значительно больше. То есть при использовании в прикладной программе дробных чисел скорость работы компьютера резко снижается. Еще хуже дело обстоит, когда нужно рассчитать траекторию точек на окружности, используя тригонометрические функции – компьютер может задуматься очень надолго.
Для ускорения работы компьютера уже в эру процессора 8086 выпускались математические сопроцессоры, которые умели быстро выполнять операции с дробными числами, плавающей точкой, вычислять тригонометрические, экспоненциальные и логарифмические функции. На старых системных платах рядом с процессором (его также называют центральным процессором), всегда находился сокет для математического сопроцессора.
Аппаратный интерфейс позволял подключать сопроцессор непосредственно к выводам центрального процессора. Если в процессе работы программе надо было использовать сопроцессор, то центральный процессор передавал данные сопроцессору. Шина данных, когда это было нужно, переходила в распоряжение сопроцессора.
Математические сопроцессоры выпускались для процессоров 8086/8088, 80256, 80386 и имели маркировку 8087, 80287 и 80387. С первыми процессорами 486, в которых не было блока сопроцессора, можно было использовать сопроцессор 80387.
Пользователь для ускорения работы своего персонального компьютера мог купить сопроцессор и самостоятельно установить его в соответствующий сокет. Так как сопроцессоры были дорогими, то вместо микросхемы 80287 можно было установить 8087, а вместо 80387 – 80287.