Информационные технологииStfw.Ru 🔍

Машинный язык и история процессоров Intel

🕛 17.09.2009, 13:00
Процессоры Intel в своем развитии прошли довольно сложный и насыщенный различными событиями путь. Корпорация Intel была основана в 1968 г. Первый процессор i4004был разработан Intel в 1969 г. Он представлял собой 4-разрядное параллельное вычислительное устройство с 2300 транзисторами. Его возможности были сильно ограничены - он выполнял всего лишь четыре основные арифметические операции. Поначалу i4004 применялся в карманных калькуляторах. Позднее сфера его использования была расширена за счет различных систем управления, в частности, систем управления светофорами.
В 1972 г. был выпущен 8-разрядный процессор i8008 с адресацией внешней оперативной памяти размером 16 Кбайт. Неожиданный успех этого процессора подтолкнул разработчиков Intel к дальнейшим изысканиям. В 1974 г. был выпущен i8080, который, оставаясь 8-разрядным, мог адресовать 64 Кбайт оперативной памяти. Для того времени это было революцией, этот процессор был выпущен в миллионах экземпляров. Историю современных Intel-совместимых процессоров принято вести именно от i8080.
Очередной революционный процессор Intel - i8086 - появился в 1978 г. Его основные характеристики - наличие 16-разрядных регистров, 16-разрядной шины данных. Поддержка сегментной организации памяти наряду с 20-разрядной шиной адреса позволяла организовать адресацию памяти в пределах 1 Мбайт при доступности адресного пространства размером 256 Кбайт. С целью занятия более широкой ниши на рынке Intel вскоре представила более дешевый вариант этого процессора - i8088. При внутренней 16-разряднойархитектуре i808он имел 8-разрядную шину данных, вследствие чего был менее производителен. Важно отметить, что дешевизна достигалась в основном не за счет дешевизны самого процессора, а за счет удешевления конечного продукта - компьютера на его основе. Другой причиной появления и широкого распространения i8088 было наличие большого количества 8-разрядных внешних устройств. 8-разрядная шина данных 18088 позволяла упростить процесс сопряжения с этими устройствами. Отметим, что одним из внешних устройств, поддерживаемых процессорами i8086/88,был математический сопроцессор 18087,который мог устанавливаться в специальный разъем материнской платы. Это позволяло более эффективно выполнять операции с плавающей точкой в соответствии со стандартом IEEE-754. Важно также подчеркнуть, что, начиная с i8086/88, все процессоры Intel совместимы «снизу вверх». Следствием этого является гарантированная возможность запуска на современном процессоре Pentium практически любой программы, написанной для i8086/88 (естественно, при соответствующей поддержке системного программного обеспечения).
Согласно известному закону, программное обеспечение (software), подобно газу, стремится заполнить весь доступный ему объем. Поэтому поначалу кажущиеся
фантастическими возможности новых процессоров со временем становятся узами, тем самым подталкивая конструкторов процессоров искать новые архитектурные и технологические решения для перевода программ в новые, более свободные рамки существования. Оперативная память объемом 1 Мбайт - это много. Долгая жизнь процессоров i8086/88 подтверждает это. Но с течением времени даже такой объем памяти превратился в ограничение, в связи с чем стали применяться различные технологии для обхода этого ограничения. Многие, наверное, еще помнят загрузку MS-DOS с драйверами расширенной памяти EMS (Expanded Memory Specification), с помощью которых через окно размером 64 Кбайт можно было обращаться к внешней дополнительной памяти размером до 32 Мбайт. Но это не могло продолжаться вечно, и в 1982 г. Intel представляет процессор i80286. И хотя он не решил окончательно проблему ограничения пространства памяти, в нем были реализованы определенные архитектурные изменения, благодаря которым последующие модели процессоров позволили разрядить ситуацию с доступом к памяти. К главным нововведениям следует отнести расширение шины адреса до 24 битов, что позволило адресовать уже 16 Мбайт оперативной памяти, а также появление еще одного режима работы процессора - защищенного. В этом отношении данный процессор также можно считать революционным. До этого в процессорах Intel отсутствовала поддержка на процессорном уровне какой-либо защиты программ от взаимного влияния. Введение подобных средств в архитектуру процессоров Intel . стимулировало производителей на разработку многозадачных операционных систем. Наиболее яркие примеры - Microsoft (ОС Windows) и IBM (OS/2). Справедливости ради следует отметить, что доминирующей системой для i286 была MS-DOS, и данный процессор использовался как более быстрый вариант i8086/88. Для широкого распространения многозадачные системы должны были пройти определенный путь развития.
Мощным стимулом к развитию многозадачных систем стали возможности, предоставляемые новым процессором i80386, выпущенным Intel в 1985 г. Это был первый 32-разрядный процессор, который положил начало семейству процессоров IA-32 (32-bit Intel Architecture). Главные отличительные особенности: 32-разрядные шины адреса и данных (адресация оперативной памяти - до 4 Гбайт); увеличенная до 32 битов разрядность внутренних регистров процессора; введение третьего режима работы процессора (режима виртуального процессора 8086); поддержка страничной адресации памяти, благодаря которой стало возможном за счет дисковой памяти виртуализировать доступ к оперативной памяти и теоретически расширить ее рамки вплоть до 4 Гбайт. Аналогично ситуации с i8086 и i8088, одновременно был выпущен более дешевый вариант процессора i80386 (i80386-DX) с 16-разрядной шиной данных - i80386-SX. При необходимости на материнскую плату можно было установить и математический сопроцессор i80387. Процессор i80386 первым из семейства процессоров Intel стал поддерживать возможность параллельного функционирования своих устройств: устройства шинного интерфейса (bus interface unit), блока предварительной выборки (code prefetch unit), блока декодирования команд (instruction decode unit), исполнительного блока (execution unit), блока сегментации (segment unit), блока страничной адресации (paging unit). Концепция параллельного функционирования устройств позже, а именно в i80486, стала основой другой концепции - конвейеризации вычислений.

Процессор i80486 появился в 1989 г. Основные его характеристики - наличие встроенного математического сопроцессора, поддержка многопроцессорного режима работы и работы с двумя видами кэш-памяти - внутренней размером 8 Кбайт (1-го уровня L1) и внешней кэш-памятью (2-го уровня L2). Важные изменения в архитектуре процессора i80486 коснулись концепции параллельных вычислений. Они стали воплощением идей, лежащих в основе RISC-технологии разработки процессоров. Согласно им, машинные команды со сложным алгоритмом работы (Complete-Instuction-Set Computing, CISC) на микропрограммном уровне реали-зовывались на основе более простых команд из ограниченного набора (Reduced Instruction Set Computer, RISC). Для выполнения CISC-команд требуется несколько тактов работы процессора, иногда несколько десятков. RISC-команды должны выполняться за один такт. Такое изменение внутреннего представления внешних команд, наряду с изменением последовательности их выполнения и режимов декодирования, позволило реализовать реальную конвейеризацию вычислений. В результате выполнение CISC-команды происходило за один такт процессора. Конвейер процессора i80486 состоял из 5 ступеней. Начиная с процессора i80486 процессоры Intel поддерживают различные концепции энергосбережения. Интересно, что совершенствование процессора 180486 шло в ходе его промышленного производства. Вследствие этого по своим возможностям следующие по времени выпуска процессоры i80486 в большей или меньшей степени отличались от предыдущих.
Ну и, наконец, ЭПОХА PENTIUM. Знаменитый своей ошибкой блока с плавающей точкой первый Pentium - Pentium-60 - был представлен в начале 1993 г. Благодаря суперскалярной архитектуре (с двумя конвейерами, известными как и и v) он мог выполнять две машинные инструкции за один такт. К внутреннему кэшу команд добавлен внутренний 8-килобайтный кэш данных. Реализована технология предсказания переходов (branch prediction). Для увеличения пропускной способности при обработке данных процессор Pentium поддерживает внутренние пути шириной 128 и 256 битов, внешняя шина данных увеличена до 64 битов. Добавлены средства для построения многопроцессорных систем, в частности расширенный программируемый контроллер прерываний (Advanced Programmable Interrupt Controller, APIC), дополнительные выводы и специальный режим дуальной обработки (dual processing), ориентированный на построение двухпроцессорных систем. Начиная с модели процессоров Pentium с тактовой частотой 133 МГц (1997 г.) в них был введен блок ММХ-команд (ММХ означает MultiMedia extensions). Реализованный на базе сопроцессора, данный блок поддерживал SIMD-технологию, которая предполагает обработку блока однородных данных одной машинной инструкцией. Цель введения данного расширения - увеличение производительности приложений, обрабатывающих массивы однородных целочисленных данных. Примеры таких приложений - программы обработки изображений, звука, архи-вирования-разархивирования данных и др. Излишне говорить, что все эти нововведения резко подняли производительность процессора Pentium по сравнению с его предшественником - процессором i486 - и не оставили последнему особых альтернатив для существования.
На сегодняшний день имеется три поколения, или семейства, процессоров Pentium - Pentium, P6 и Pentium IV с микроархитектурой NetBurst. К семейству

Pentium относятся упоминавшиеся ранее процессоры Pentium и Pentium MMX. История семейства Р6 началась в 1995 году с появлением процессора Pentium Pro. Несмотря на схожие названия, внутренние архитектуры процессоров двух семейств были совершенно разными. Не вдаваясь в новые схемотехнические решения, реализованные в процессоре Pentium Pro, отметим его основные архитектурные свойства. Процессор поддерживал работу трех конвейеров, то есть мог обрабатывать до трех команд за один такт. Для этого использовались особые технологии обработки потока команд, которые подробнее будут рассмотрены в следующей главе. Процессор Pentium Pro использовал новую технологию работы с кэш-памятью. Наряду с уже обычным внутренним кэшем первого уровня размером 8 Кбайт в одном корпусе (но не на одной микросхеме) с процессором располагалась кэшпамять второго уровня размером 256 Кбайт, для связи с которой имелась специальная 64-разрядная шина, работающая на частоте процессора. Шина данных процессора Pentium Pro имела разрядность 36 бита, что позволяло при определенных условиях организовать адресацию памяти до 64 Гбайт.
Процессор Pentium II, появившийся на свет в 1997 г., добавил к архитектуре процессора Pentium Pro поддержку ММХ-команд. Кроме того, были увеличены размеры кэш-памяти всех уровней - кэш-память команд и данных первого уровня выросла до 16 Кбайт каждая, кэш-память второго уровня могла иметь величину 256,512 Кбайт или 1 Гбайт. Кэш-память второго уровня могла работать на половине частоты работы процессора. Также процессор поддерживал множество технологий энергосбережения. Следующие две модели процессоров, выпущенные в 1998 г., -Celeron и Pentium II Xeon - были, соответственно, более «легкой» и более «тяжелой» модификациями процессора Pentium П. Celeron позиционировался как процессор для построения компьютерных систем массового использования. Pentium II Xeon предназначался для построения высокопроизводительных серверных систем.
Последний процессор семейства Р6 - Pentium III, - выпущен в 2000 г. Его основное отличие - поддержка дополнительного набора ММХ-команд, называемых SSE-расширением (SSE - Streaming SIMD Extensions) основного набора команд процессора. Для этого в архитектуру процессора был введен специальный блок.
На сегодняшний день последним 32-разрядным процессором является Pentium IV. Он позиционируется как процессор нового поколения с новым типом микроархитектуры, носящей название NetBurst. Подробнее основные архитектурные особенности процессора Pentium IV будут рассмотрены в следующей главе при обсуждении микроархитектуры NetBurst. Отметим лишь один важный в контексте нашего обсуждения момент - с появлением процессора Pentium IV система команд процессоров Intel пополнилась еще 144 новыми командами. В основном это команды для блока ММХ с плавающей точкой, а также команды управления кэшированием и памятью. Условное название этой группы команд - SSE2 (Streaming SIMD Extensions 2).

Итоги

Несмотря на значительные внешние различия структурно большинство современных компьютеров устроены примерно одинаково. В их состав обязательно входят центральный процессор, внешняя и оперативная память, устройства ввода-вывода и отображения информации.
Работать компьютер заставляет некий «серый кардинал» - машинный язык. Пользователь может даже и не подозревать о его существовании. Общаться с компьютером пользователю помогают операционные системы, офисные пакеты, системы программирования и т. д. Современные технологии программирования позволяют создавать программы, не написав ни строчки кода. Но в «мозг» компьютера команды все же поступают на машинном языке.
Машинный язык полностью отражает все архитектурные тонкости конкретного типа компьютеров. Следствием этого является его индивидуальность для каждого семейства ЭВМ. Чтобы эффективно использовать все возможности компьютера, применяют символический аналог машинного языка - язык ассемблера.
Работать на компьютере можно и без знания ассемблера. Но элементом подготовки программиста-профессионала обязательно является изучение этого языка. Почему? Изучая ассемблер, человек обязательно попутно знакомится с архитектурой компьютера. А это, в свою очередь, позволяет ему в дальнейшем создавать более эффективные программы на других языках и объединять их при необходимости с программами на ассемблере.
Процессоры Intel являются стандартом де-факто в своем сегменте рынка. За тридцать с лишним лет своего развития процессоры Intel из примитивных устройств, пригодных лишь для калькуляторов, превратились в сложные системы, содержащие более 7 000 000 транзисторов и поддерживающие работу высокопроизводительных приложений и многопроцессорных конфигураций.

Assembler   Теги: Intel

Читать IT-новости в Telegram
Информационные технологии
Мы в соцсетях ✉