ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 24.12.2021
Просмотров: 6682
Скачиваний: 8
48
Глава 1. Предисловие
Все микросхемы Intel совместимы со своими предшественниками вплоть до
процессора 8086. Другими словами, Pentium II может выполнять программы, на-
писанные для процессора 8086
1
. Совместимость всегда была одним из главных
требований при разработке новых компьютеров, чтобы покупатели могли продол-
жать работать со старым программным обеспечением и не тратить деньги на но-
вое. Конечно, Pentium II во много раз сложнее, чем 8086, поэтому он может выпол-
нять многие функции, которые не способен выполнять процессор 8086. Все эти
постепенные доработки в каждой новой версии привели к тому, что архитектура
Pentium II не так проста, как могла бы быть, если бы разработчикам процессора
Pentium II предоставили 7,5 млн транзисторов и команд, чтобы начать все заново.
Интересно, что хотя закон Мура раньше ассоциировался с числом битов в памя-
ти компьютера, он в равной степени применим и по отношению к процессорам.
Если напротив даты выпуска каждой микросхемы поставить число транзисторов
на этой микросхеме (количество транзисторов показано в табл. 1.4), мы увидим,
что закон Мура действует и здесь. График показан на рис. 1.7.
Pentium
ЮМ
1М
100К
юк
1К -
100 -
10 h
1
Закон Мура
8080Д.
- 8008
i I i I i I
8086
1 ! 1
80286
8088
1 t I i
^
^
80386
i 1 ,
Pentium
80486
1 > I i I i
и
^ ' •
Pentium
Pro
i i i . i
1970 1972 1974 1976 1978 1980 1982 1984 1986 1988 1990 1992 1994 1996 1998
Год появления
Рис.
1.7. Закон Мура действует и для процессоров
UltraSPARC II
В 70-х годах во многих университетах была очень популярна операционная систе-
ма UNIX, но персональные компьютеры не подходили для этой операционной
системы, поэтому любителям UNIX приходилось работать на мини-компьютерах
с разделением времени, таких как PDP-11 и VAX. Энди Бехтольсхайм, аспирант
Стэнфордского университета, был очень расстроен тем, что ему нужно посещать
Существуют сотни и тысячи программ, которые не могут быть выполнены на современных быстро-
действующих микропроцессорах, совместимых с микропроцессором 8086, хотя на более старых (мед-
ленных) микропроцессорах они и выполняются. —
Примеч. научн. ред.
Семейства компьютеров 49
компьютерный центр, чтобы работать с UNIX. В 1981 году он разрешил эту про-
блему, самостоятельно построив персональную рабочую станцию UNIX из стан-
дартных частей, имеющихся в продаже, и назвал ее SUN-1 (Stanford University
Network — сеть Стэнфордского университета).
На Бехтольсхайма скоро обратил внимание Винод Косла, 27-летний индиец,
который горел желанием годам к тридцати стать миллионером и уйти от дел. Косла
предложил Бехтольсхайму организовать компанию по производству рабочих стан-
ций Sun. Он нанял Скота Мак-Нили, другого аспиранта Стэнфордского универси-
тета, чтобы тот возглавил производство. Для написания программного обеспече-
ния они наняли Билла Джоя, главного создателя системы UNIX. В 1982 году они
вчетвером основали компанию Sun Microsystems. Первый компьютер компании,
Sun-1, был оснащен процессором Motorola 68020 и имел большой успех, как и по-
следующие модели Sun-2 и Sun-З, которые также были сконструированы с исполь-
зованием микропроцессоров Motorola. Эти машины были гораздо мощнее, чем
другие персональные компьютеры того времени (отсюда и название «рабочая стан-
ция»), и изначально были предназначены для работы в сети. Каждая рабочая стан-
ция Sun была оснащена сетевым адаптером Ethernet и программным обеспечени-
ем TCP/IP для связи с сетью ARPANET, предшественницей Интернета.
В 1987 году компания Sun, которая к тому времени продавала рабочих станций
на полмиллиарда долларов в год, решила разработать свой собственный процес-
сор, основанный на новом революционном проекте калифорнийского университе-
та в Беркли (RISC II). Этот процессор назывался
SPARC (Scalable Processor
ARCitecture — наращиваемая архитектура процессора).
Он был использован при
производстве рабочей станции Sun-4. Через некоторое время все рабочие станции
компании Sun стали производиться на основе этого процессора.
В отличие от многих других компьютерных компаний, Sun решила не занимать-
ся производством процессоров SPARC. Вместо этого она предоставила патент на
их изготовление нескольким предприятиям, надеясь, что конкуренция между ними
повлечет за собой повышение качества продукции и снижение цен. Эти предприя-
тия выпустили несколько разных микросхем, основанных на разных технологиях,
работающих с разной скоростью и отличающихся друг от друга по стоимости.
Микросхемы назывались MicroSPARC, HyperSPARK, SuperSPARK и TurboSPARK.
Мало чем отличаясь друг от друга, все они были совместимы и могли выполнять
одни и те же программы, которые не приходилось изменять.
Компания Sun всегда хотела, чтобы разные предприятия поставляли для SPARK
составные части и системы. Нужно было построить целую индустрию, только в этом
случае можно было конкурировать с компанией Intel, лидирующей на рынке персо-
нальных компьютеров. Чтобы завоевать доверие компаний, которые были заинте-
ресованы в производстве процессоров SPARC, но не хотели вкладывать средства
в продукцию, которую будет подавлять Intel, компания Sun создала промышлен-
ный консорциум SPARC International для руководства развитием будущих версий
архитектуры SPARC. Важно различать архитектуру SPARC, которая представляет
собой набор команд, и собственно выполнение этих команд. В этой книге мы будем
говорить и об общей архитектуре SPARC, и о процессоре, используемом в рабочей
станции SPARC (предварительно обсудив процессоры в третьей и четвертой главах).
50 Глава 1. Предисловие
Первый SPARC был 32-битным и работал с частотой 36 МГц. Центральный
процессор назывался
Ш (Integer Unit — процессор целочисленной арифметики)
и был весьма посредственным. У него было только три основных формата команд
и в общей сложности всего 55 команд. С появлением процессора с плавающей точ-
кой добавилось еще 14 команд. Отметим, что компания Intel начала с 8- и 16-бит-
ных микросхем (модели 8088, 8086, 80286), а уже потом перешла на 32-битные
(модель 80386), a Sun, в отличие от Intel, сразу начала с 32-битных.
Грандиозный перелом в развитии SPARC произошел в 1995 году, когда была
разработана 64-битная версия (версия 9) с адресами и регистрами по 64 бит. Пер-
вой рабочей станцией с такой архитектурой стал UltraSPARC I, вышедший в свет
в 1995 году. Он был полностью совместим с 32-битными версиями SPARC, хотя
сам был 64-битным.
В то время как предыдущие машины работали с символьными и числовыми
данными, UltraSPARC с самого начала был предназначен для работы с изображени-
ями, аудио, видео и мультимедиа вообще. Среди нововведений, помимо 64-битной
архитектуры, появились 23 новые команды, в том числе команды для упаковки
и распаковки пикселов из 64-битных слов, масштабирования и вращения изобра-
жений, перемещения блоков, а также для компрессии и декомпрессии видео в ре-
альном времени. Эти команды назывались
VIS (Visual Instruction Set)
и предназ-
начались для поддержки мультимедиа. Они были аналогичны командам ММХ.
UltraSPARC предназначался для web-серверов с десятками процессоров и физи-
ческой памятью до 2 Тбайт (терабайт, 1Тбайт = 10
12
байтов). Тем не менее некото-
рые версии UltraSPARC могут использоваться и в ноутбуках.
За UltraSPARC I последовали UltraSPARC II и UltraSPARC III. Эти модели
отличались друг от друга по скорости, и у каждой из них появлялись какие-то но-
вые особенности. Когда мы будем говорить об архитектуре SPARC, мы будем иметь
в виду 64-битную версию компьютера UltraSPARC II (версии 9).
PicoJava II
Язык программирования С придумал один из работников компании Bell Laboratories
Деннис Ритчи. Этот язык предназначался для работы в операционной системе
UNIX. Из-за большой популярности UNIX С скоро стал доминирующим языком
в системном программировании. Через несколько лет Бьярн Строуструп, тоже из
компании Bell Laboratories, добавил к С некоторые особенности из объектно-ори-
ентированного программирования, и появился язык C++, который также стал очень
популярным.
В середине 90-х годов исследователи в Sun Microsystems думали, как сделать
так, чтобы пользователи могли вызывать двоичные программы через Интернет
и загружать их как часть web-страниц. Им нравился C++, но он не был надежным
в том смысле, что программа, посланная на некоторый компьютер, могла причи-
нить ущерб этому компьютеру. Тогда они решили на основе C++ создать новый
язык программирования Java, с которым не было бы подобных проблем. Java —
объектно-ориентированный язык, который применяется при решении различных
прикладных задач. Поскольку этот язык прост и популярен, мы будем использо-
вать его для примеров.
Семейства компьютеров 51
Поскольку Java — всего лишь язык программирования, можно написать ком-
пилятор, который будет преобразовывать его для Pentium, SPARC или любого
другого компьютера. Такие компиляторы существуют. Однако этот язык был со-
здан в первую очередь для того, чтобы пересылать программы между компьютера-
ми по Интернету и чтобы пользователям не приходилось изменять их. Но если
программа на языке Java компилировалась для SPARC, то когда она пересылалась
по Интернету на Pentium, запустить там эту программу было уже нельзя.
Чтобы разрешить эту проблему, компания Sun придумала новую виртуальную
машину
JVM ( J
a v a
Virtual Machine — виртуальная машина Java).
Память у этой
машины состояла из 32-битных слов, машина поддерживала 226 команд. Большин-
ство команд были простыми, но выполнение некоторых довольно сложных команд
требовало большого количества циклов обращения к памяти.
В компании Sun разработали компилятор, преобразующий программы на язы-
ке Java на уровень JVM, и интерпретатор JVM для выполнения этих программ.
Этот интерпретатор был написан на языке С и, значит, мог использоваться прак-
тически на любом компьютере. Следовательно, чтобы компьютер мог выполнять
двоичные программы на языке Java, нужно было всего лишь достать интерпрета-
тор JVM для соответствующего компьютера (например, для Pentium II с системой
Windows 98 или для SPARC с системой UNIX) вместе с определенными програм-
мами поддержки и библиотеками. Кроме того, большинство браузеров в Интерне-
те содержат интерпретатор JVM, что позволяет легко запускать апплеты (неболь-
шие двоичные программы на Java, связанные со страницами World Wide Web).
Большинство этих апплетов поддерживают анимацию и звук.
Интерпретация программ JVM (и любых других программ) происходит мед-
ленно. Альтернативный подход — сначала скомпилировать апплет или другую
программу JVM для вашей собственной машины, а затем запустить скомпилиро-
ванную программу. Такая стратегия требует наличия компилятора с JVM на машин-
ный язык внутри браузера и возможности активизировать его, когда необходимо.
Эти компиляторы называются
JIT-компиляторами (Just In Time
— «как раз вовре-
мя»), и они широко распространены. Однако эта система создает некоторую задержку
между получением JVM-программы и ее выполнением, поскольку JVM-программа
компилируется на машинный язык.
Кроме программного обеспечения JVM (JVM-интерпретаторов и JIT-компи-
ляторов) Sun и другие компании разработали микросхемы JVM — процессоры,
которые сразу выполняют двоичные программы JVM без какой-либо интерпрета-
ции и компиляции. Picojava I и picojava II были разработаны для рынка встроен-
ных систем. На этом рынке требуются мощные и очень дешевые процессоры (цена
ниже $50), встраиваемые внутрь пластиковых карточек, телевизоров, телефонов
и других устройств, особенно таких, которые обеспечивают связь с внешним ми-
ром. Предприятия, имеющие патент на производство микросхем компании Sun,
могли производить собственные микросхемы на основе проекта picojava, в той или
иной степени изменяя их, включая и убирая процессор с плавающей точкой, пре-
образуя размер кэш-памяти и т. п.
Ценность микросхемы Java состоит в том, что она способна менять функции
в процессе работы. Например, представим себе администратора, у которого есть
телефон с процессором Java. Администратору никогда не приходилось читать фак-
52 Глава 1. Предисловие
сы на крошечном экране телефона, но в один прекрасный день ему это понадоби-
лось. Тогда он звонит провайдеру и просит предоставить ему апплет для просмот-
ра факсов, и таким образом добавляет новую функцию к своему телефону. Но из-
за некоторых особенностей прибора и недостатка памяти невозможно использовать
интерпретаторы и JIT-компиляторы, поэтому именно в таких случаях необходи-
мы микросхемы JVM.
Picojava II — не физическая микросхема (вы не можете пойти в магазин и ку-
пить ее), а проект, который является основой для ряда микросхем, например
Sun Microjava 701 и других. Эти микросхемы производятся предприятиями, полу-
чившими патент Sun. Мы будем использовать процессор picojava II в качестве
иллюстративного примера, поскольку он очень сильно отличается от Pentium II
и UltraSPARC II и имеет совершенно другую сферу применения. Picojava II пред-
ставляет особый интерес для нас, поскольку в главе 4 мы расскажем, как можно
создать JVM с помощью микропрограммирования. Тогда мы сможем сравнить
спрограммированный JVM с аппаратным обеспечением JVM.
Picojava II содержит два факультативных процессора: кэш-память и процессор
с плавающей точкой, которые каждый производитель может включать или не вклю-
чать в разработку. В целях простоты мы будем рассматривать picojava II как мик-
росхему, хотя на самом деле это не микросхема, а проект микросхемы. Иногда мы
будем говорить о микросхеме Sun Microjava 701, которая является воплощением
проекта picojava II. Но даже если мы не будем упоминать конкретные микросхе-
мы, читатели должны помнить, что picojava II — это не физическая микросхема,
а проект, на основе которого производители разрабатывают разные микросхемы.
Используя Pentium II, UltraSPARC II и picojava II в качестве примеров, мы
можем изучить три разных типа процессоров. Первый из них представляет собой
CISC с суперскалярным процессором, второй — RISC с суперскалярным процес-
сором. Третий используется во встроенных системах. Эти три процессора сильно
отличаются друг от друга, что дает нам возможность лучше увидеть диапазон
компьютерных разработок.
Краткое содержание книги
Эта книга о многоуровневых компьютерах и о том, как они организованы (отме-
тим, что почти все современные компьютеры многоуровневые). Подробно мы рас-
смотрим четыре уровня — цифровой логический уровень, микроархитектурный
уровень, уровень архитектуры набора команд и уровень операционной системы.
Основные вопросы, которые будут обсуждаться в этой книге, включают общую
структуру уровней (и почему уровни построены именно таким образом), типы ко-
манд и данных, организацию памяти, адресацию, а также способы построения каж-
дого уровня. Все это называется компьютерной организацией или компьютерной
архитектурой.
Мы в первую очередь имеем дело с общими понятиями и не касаемся деталей
и строгой математики. По этой причине многие примеры будут сильно упрощены,
чтобы сделать упор на основные понятия, а не на детали.