Аппаратные средства персональных компьютеров. Самоучитель
Шрифт:
У компьютеров минимальная единица данных – это бит, который может быть равен 0 или 1. Наиболее популярное машинное слово – байт, в котором 8 битов. Если в байте все биты равны нулю, то считается, что в байте записано число 0.
Добавляя по 1 к содержимому байта, мы получим ряд:
• 0000 0001 – десятичное число 1;
• 1111 1111 – десятичное число 255 (в ряде случаев компьютер считает, что это минус единица).
Получается ряд целых чисел: 0, 1, 2, 3, …, 100, …, 255.
Микросхемы процессоров, рассматриваемые в этой книге, могут отлично проводить арифметические действия с любыми целыми числами: сложение, вычитание, умножение и деление. Но если попросить разделить, например пять на два, то процессор
Сделаем здесь небольшое отступление и рассмотрим используемые в информационных технологиях системы счисления. В компьютерной литературе широко используется двоичная и шестнадцатеричная системы счисления. Для непрограммиста такой подход несколько неожидан, т. к. в реальной жизни используется десятичная система счисления, например нумерация страниц этой книги. Правда, современный человек вполне усвоил, что компьютеры оперируют двоичной системой счисления: да – нет или 0–1, а вот шестнадцатеричная система счисления вызывает множество вопросов. Но тут следует сказать, что для описания работы современных процессоров такая система счисления дает возможность легко понимать содержимое регистров и разбираться с адресной информацией.
Для удобства запоминания связи между разными системами счисления рассмотрите табл. 2.1 и попробуйте перевести, не смотря уже в таблицу, несколько десятичных чисел, например 11 и 68, в разные системы счисления.
Обозначают, в какой системе счисления записано число, несколькими способами. Для шестнадцатеричных чисел наиболее очевиден вариант, когда к числу добавляется приставка Hex или Н. Но программисты обычно используют другой способ, который применяется в листингах программ и конфигурационных файлах. В этом случае шестнадцатеричное число начинается символами "0х", например 0x1, 0x367, 0xFF71.
К двоичные числам добавляется символ "Ь", например 100111b.
Для обозначения десятичных чисел в большинстве случаев не применяют дополнительных символов, хотя иногда может добавляться символ "D". В основном, такой способ выделения десятичных чисел применяется в литературе по языку Ассемблера.
Итак, возвращаясь к процессорам, заметим, что для вычисления дробных чисел используются специальные подпрограммы, которым требуется не один машинный такт, за который процессор может сложить два целых числа, а значительно больше. То есть при использовании в прикладной программе дробных чисел скорость работы компьютера резко снижается. Еще хуже дело обстоит, когда нужно рассчитать траекторию точек на окружности, используя тригонометрические функции – компьютер может задуматься очень надолго.
Для ускорения работы компьютера уже в эру процессора 8086 выпускались математические сопроцессоры, которые умели быстро выполнять операции с дробными числами, плавающей точкой, вычислять тригонометрические, экспоненциальные и логарифмические функции. На старых системных платах рядом с процессором (его также называют центральным процессором), всегда находился сокет для математического сопроцессора.
Аппаратный интерфейс позволял подключать сопроцессор непосредственно к выводам центрального процессора. Если в процессе работы программе надо было использовать сопроцессор, то центральный процессор передавал данные сопроцессору. Шина данных, когда это было нужно, переходила в распоряжение сопроцессора.
Математические сопроцессоры выпускались для процессоров 8086/8088, 80256, 80386 и имели маркировку 8087, 80287 и 80387. С первыми процессорами 486,
Пользователь для ускорения работы своего персонального компьютера мог купить сопроцессор и самостоятельно установить его в соответствующий сокет. Так как сопроцессоры были дорогими, то вместо микросхемы 80287 можно было установить 8087, а вместо 80387 – 80287.
Процессор Intel 486
10 апреля 1989 г. было объявлено о выпуске процессора Intel 486DX. Архитектура процессора не была повторением или улучшением Intel 386, а представляла совершенно оригинальное решение. Фактически, это была настоящая вычислительная машина, выполненная на одном кристалле кремния, у которой имелась оперативная память, периферийные устройства и даже набор микропрограмм для обработки внешних команд. По сути это означало возможность совершенствования внутреннего устройства микросхемы процессора, не меняя внешнего интерфейса. То есть появлялась возможность многократно увеличивать производительность компьютера, меняя только процессор (для компьютеров с процессором Intel 386, например, нужно было повышать тактовую частоту, но это требовало серьезной доработки системной платы, поэтому чаще всего процессор с частотой 33 и 40 МГц припаивался, а не устанавливался в сокет).
Если рассмотреть внутреннее устройство нового процессора, то оказывалось, что он только внешне напоминал Intel 386, хоть и работал с системой команд х86. "Внутри" использовался RISC-процессор, который имел сокращенный набор команд х86, а остальные команды, которые он не мог выполнять непосредственно, преобразовывались вспомогательными блоками в цепочку инструкций. Такое оригинальное решение было вызвано тем, что программисты использовали, в большинстве случаев, ограниченный набор команд процессоров х86 (CISC-процессоров), а остальные появлялись в программах крайне редко. Поэтому использование ядром сокращенного набора команд позволяло упростить конструкцию микросхемы и увеличить скорость работы процессора.
Примечание
CISC (Complex Instruction Command Set) – процессор с полным набором команд, в частности, это процессоры семейства х86. Набор команд CISC (концепция CISC) был разработан для удобства программистов, которые в те давние времена вынуждены были писать программы для маломощных компьютеров на языке Ассемблера (очень кропотливая и нудная работа!). Для ускорения процесса разработки программ в систему команд CISC были введены удобные команды, которые как бы представляли собой маленькие подпрограммы. В итоге, команды CISC-процессора имеют разную длину и время выполнения. К тому же CISC-процессор не отличается высокой производительностью, т. к. для выполнения некоторых команд требуется несколько машинных тактов.
RISC (Reduced Instruction Set Computer) – процессор с сокращенным набором команд. В процессорах с набором команд (концепцией) RISC все команды имеют одинаковую длину и формат, а также простую адресацию памяти. Каждая команда выполняет только простые действия за один такт. Программный код для таких процессоров легко поддается оптимизации, поэтому удается получить большую производительность для одной и той же технологии.
Разделение внутренней архитектуры на ядро и периферийные блоки в дальнейшем позволило организовать работу ядра на повышенной частоте. То есть интерфейс процессора работал на тактовой частоте, которую поддерживала системная плата, а ядро функционировало на более высокой, например, удвоенной или утроенной тактовой частоте.
Так как использование математического сопроцессора в компьютерах оказалось отличным способом повышения производительности, то в процессоре Intel 486 его разместили непосредственно на кристалле, сохранив программную совместимость с сопроцессором 80387.