Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Архитектура компьютера - Таненбаум Э

..pdf
Скачиваний:
485
Добавлен:
24.05.2014
Размер:
5.67 Mб
Скачать

Типы компьютеров

43

Развивать компьютерные технологии можно двумя путями: или создавать компьютеры все большей и большей мощности при постоянной цене, или выпускать один и тот же компьютер, с каждым годом снижая цену. Компьютерная промышленность использует оба эти пути, создавая широкий спектр разнообразных компьютеров. Очень приблизительная классификация современных компьютеров представлена в табл. 1.3.

Таблица 1.3. Типы современных компьютеров. Указанные цены приблизительны

Тип

Цена ($)

«Одноразовые» компьютеры

1

Встроенныекомпьютеры

10

Игровые компьютеры

100

Персональные компьютеры

1000

Серверы

10 000

Рабочие станции

100 000

Большие компьютеры

1 000 000

Суперкомпьютеры

10 000 000

Сфера применения

Поздравительные открытки Часы, машины, различные приборы

Домашние компьютерные игры Настольные и портативные компьютеры Сетевые серверы Мини-суперкомпьютеры Обработка пакетных данных в банке

Предсказание погоды на длительный срок

В самой верхней строчке находятся микросхемы, которые приклеиваются на внутреннюю сторону поздравительных открыток для проигрывания мелодий «Happy Birthday», свадебного марша или чего-нибудь подобного. Автор идеи еще не придумал открытки с соболезнованиями, которые играют похоронный марш, но поскольку он выпустил эту идею в потребительскую сферу, вскоре можно будет ожидать появления и таких открыток. Тот, кто воспитывался на компьютерах стоимостью в миллионы долларов, воспринимает такие доступные всем компьютеры примерно так же, как доступный всем самолет. Тем не менее такие компьютеры, вне всяких сомнений, должны существовать (а как насчет говорящих мешков для мусора, которые просят вас не выбрасывать алюминиевые банки?).

Вторая строчка — компьютеры, которые помещаются внутрь телефонов, телевизоров, микроволновыхпечей, CD-плейеров, игрушек, куколи т. п. Через несколько лет во всех электрических приборах будут находиться встроенные компьютеры, количество которых будет измеряться в миллиардах. Такие компьютеры состоят из процессора, памяти менее 1 Мбайт и устройств ввода-вывода, и все это на одной маленькой микросхеме, которая стоит всего несколько долларов.

Следующая строка — игровые компьютеры. Это обычные компьютеры с особой графикой, но с ограниченным программным обеспечением и почти полным отсутствием открытости, то есть возможности перепрограммирования. Примерно равныимпостоимостиэлектронныезаписныекнижкиипрочиекарманныекомпьютеры, а также сетевые компьютеры и web-терминалы. Все они содержат процессор, несколько мегабайтов памяти, какой-либо дисплей (может быть, даже телевизионный) и больше ничего. Поэтому они такие дешевые.

Далее идут персональные компьютеры. Именно они ассоциируются у большинства людей со словом «компьютер». Персональные компьютеры бывают двух видов: настольные и ноутбуки. Они обычно содержат несколько мегабайтов памяти, жесткий диск с данными на несколько гигабайтов, CD-ROM, модем, звуковую карту

44 Глава 1. Предисловие

и другие периферийные устройства. Они снабжены сложными операционными системами, имеют возможность наращивания, при работе с ними используется широкий спектр программного обеспечения. Компьютеры с процессором Intel обычно называются «персональными компьютерами», а компьютеры с другими процессорами — «рабочими станциями», хотя особой разницы между ними нет.

Персональные компьютеры и рабочие станции часто используются в качестве сетевых серверов как для локальных сетей (обычно в пределах одной организации), так и для Интернета. У этих компьютеров обычно один или несколько процессоров, несколько гигабайтов памяти и много Гбайт надиске. Такие компьютеры способны работать в сети с очень высокой скоростью. Некоторые из них могут обрабатывать тысячи поступающих сообщений одновременно.

Помимо небольших серверов с несколькими процессорами существуют системы, которые называются сетями рабочих станций (NOW — Networks ofWorkstations) иликластерамирабочих станций (COW — Clusters ofWorkstations). Онисостоят из обычных персональных компьютеров или рабочих станций, связанных в сеть, по которой информация передается со скоростью 1 Гбит/с, и специального программного обеспечения, позволяющего всем машинам одновременно работать над одной задачей. Такие системы широко применяются в науке и технике. Кластеры рабочих станций могут включать в себя от нескольких компьютеров до нескольких тысяч. Благодаря низкой цене компонентов отдельные организации могут приобретать такиемашины, которыепоэффективностиявляютсямини-суперкомпьютерами.

А теперь мы дошли до больших компьютеров размером с комнату, напоминающих компьютеры 60-х годов. В большинстве случаев эти системы — прямые потомки больших компьютеров серии IBM-360. Обычно они работают ненамного быстрее, чем мощные серверы, но у них выше скорость процессов ввода-вывода и обладают они довольно большим пространством на диске — 1 терабайт и более (1 терабайт=1012байт). Такие системы стоят очень дорого и требуют крупных вложений в программное обеспечение, данные и персонал, обслуживающий эти компьютеры. Многие компании считают, что дешевлезаплатить несколько миллионов долларов один раз за такую систему, чем даже думать о том, что нужно будет заново программировать все прикладные программы для маленьких компьютеров.

Именно этот класс компьютеров привел к проблеме 2000 года. Проблема возникла из-за того, что в 60-е и 70-е годы программисты, пишущие программы на языке COBOL, представляли год двузначным десятичным числом с целью экономии памяти. Они не смогли предвидеть, что их программное обеспечение будет использоваться через три или четыре десятилетия. Многие компании повторили ту же ошибку, добавив к числу года только два десятичных разряда. Автор этой книги предсказывает, что конец цивилизации произойдет в полночь 31 декабря 9999 года, когда сразу уничтожатся все COBOL-программы, написанные за 8000 лет1.

Вслед за большими компьютерами идут настоящие суперкомпьютеры. Их процессоры работают с очень высокой скоростью, объем памяти у них составляет множество гигабайтов, диски и сети также работают очень быстро. В последние годы многие суперкомпьютеры стали очень похожи, они почти не отличаются от кластеров рабочих станций, но у них больше составляющих и они работают быстрее.

Необходимо отметить, что в полночь 31 декабря 1999 гада катастрофы не произошло. — Примеч. перев.

Семейства компьютеров

45

Суперкомпьютеры используются для решения различных научных и технических задач, которые требуют сложных вычислений, например таких, как моделирование сталкивающихся галактик, разработка новых лекарств, моделирование потока воздуха вокруг крыла аэроплана.

Семейства компьютеров

В этом разделе мы дадим краткое описание трех компьютеров, которые будут использоваться в качестве примеров в этой книге: Pentium II, UltraSPARC II и picojava II.

Pentium II

В1968 году Роберт Нойс, изобретатель кремниевой интегральной схемы, Гордон Мур, автор известного закона Мура, и Артур Рок, капиталист из Сан-Франциско, основали корпорацию Intel для производства компьютерных микросхем. За первый год своего существования корпорация продала микросхем всего на $3000, но потом объем продаж компании заметно увеличился.

Вконце 60-х годов калькуляторы представляли собой большие электромеханические машины размером с современныйлазерный принтер и весили около 20 кг.

Всентябре 1969 года японская компания Busicom обратилась к корпорации Intel

спросьбой выпустить 12 несерийных микросхем для электронной вычислительной машины. Инженер компании Intel Тед Хофф, назначенный на выполнение этого проекта, решил, что можно поместить 4-битный универсальный процессор на одну микросхему, которая будет выполнять те же функции и при этом окажется проще и дешевле. Так в 1970 году появился первый процессор на одной микросхеме, процессор 4004 на 2300 транзисторах.

Заметим, что ни Intel, ни Busicom не имели ни малейшего понятия, какое грандиозное открытие они совершили. Когда компания Intel решила, что стоит попробовать использовать процессор 4004 в других разработках, она предложила купить все права на новую микросхему у компании Busicom за $60000, то есть за сумму, которую Busicom заплатила Intel за разработку этой микросхемы. Busicom сразу приняла предложение Intel, и Intel начала работу над 8-битной версией микросхемы 8008, выпущенной в 1972 году.

Компания Intel не ожидала большого спроса на микросхему 8008, поэтому она выпустила небольшое количество этой продукции. Ко всеобщему удивлению, новая микросхема вызвала большой интерес, поэтому Intel начала разработку еще одного процессора, в котором предел в 16 Кбайт памяти (как у процессора 8008), навязываемый количеством внешних выводов микросхемы, был преодолен. Так появился небольшой универсальный процессор 8080, выпущенный в 1974 году. Как и PDP-8, он произвел революцию на компьютерном рынке и сразу стал массовым продуктом: только компания DEC продала тысячи PDP-8, a Intel — миллионы процессоров 8080.

В 1978 году появился процессор 8086 — 16-битный процессор на одной микросхеме. Процессор 8086 был во многом похож на 8080, но не был полностью совместим с ним. Затем появился процессор 8088 с такой же архитектурой, как и у 8086.

46 Глава 1. Предисловие

Он выполнял те же программы, что и 8086, но вместо 16-битной шины у него была 8-битная, из-за чего процессор работал медленнее, но стоил дешевле, чем 80861. Когда IBM выбрала процессор 8088 для IBM PC, эта микросхема стала эталоном в производстве персональных компьютеров.

Ни 8088, ни 8086 не могли обращаться к более 1 Мбайт памяти. К началу 80-х годов это стало серьезной проблемой, поэтому компания Intel разработала модель 80286, совместимую с 8086. Основной набор команд остался в сущности таким же, как у процессоров 8086 и 8088, но память была устроена немного по-другому, хотя и могла работать по-прежнему из-за требования совместимости с предыдущими микросхемами. Процессор 80286 использовался в IBM PC/AT и в моделях PS/2. Он, как и 8088, пользовался большим спросом (главным образом потому, что покупатели рассматривали его как более быстрый процессор 8088).

Следующим шагом был 32-битный процессор 80386, выпущенный в 1985 году. Как и 80286, он был более или менее совместим со всеми старыми версиями. Совместимость такого рода оказывалась благом для тех, кто пользовался старым программным обеспечением, и некоторым неудобством для тех, кто предпочитал современную архитектуру, не обремененную ошибками и технологиями прошлого.

Через четыре года появился процессор 80486. Он работал быстрее, чем 80386, мог выполнять операции с плавающей точкой и имел 8 Кбайт кэш-памяти. Кэшпамять используется для того, чтобы держать наиболее часто используемые слова внутри центрального процессора и избегать длительного доступа к основной (оперативной) памяти. Иногда кэш-память находится не внутри центрального процессора, а рядом с ним. 80486 содержал встроенные средства поддержки многопроцессорного режима, что давало производителям возможность конструировать системы с несколькими процессорами.

В этот момент Intel, проиграв судебную тяжбу по поводу нарушения правил наименования товаров, выяснила, что номера (например, 80486) не могут быть торговой маркой, поэтому следующее поколение компьютеров получило название Pentium (от греческого слова ЛЕУТЕ — пять). В отличие от 80486, у которого был один внутренний конвейер, Pentium имел два, что позволяло работать ему почти в два раза быстрее (конвейеры мы рассмотрим подробно в главе 2).

Когда появилось следующее поколение компьютеров, те, кто рассчитывал на название Sexium (sex по-латыни — шесть), были разочарованы. Название Pentium стало так хорошо известно, что его решили оставить, и новую микросхему назвали Pentium Pro. Несмотря настоль незначительное изменение названия, этот процессор очень сильно отличался от предыдущего. У него была совершенно другая внутренняя организация, и он мог выполнять до пяти команд одновременно.

Еще одно нововведение у Pentium Pro — двухуровневая кэш-память. Процессор содержал 8 Кбайт памяти для часто используемых команд и еще 8 Кбайт для часто используемых данных. В корпусе Pentium Pro рядом с процессором (но не на самой микросхеме) находилась другая кэш-память в 256 Кбайт.

Насамомделе разницавстоимостисамихмикропроцессоровбыланезначительной. Нокомпьютеры, собираемые на базе микропроцессора 8088, были дешевле, чем если бы их строили на базе микропроцессора 8086. В то время были распространены 8-битные периферийные устройства, поэтому микропроцессор8088 позволял упростить сопряжениес внешнимиустройствами. — Примеч. научн.ред.

Семейства компьютеров

4 7

Вслед за Pentium Pro появился процессор Pentium II, по существу такой же, как и его предшественник, но с особой системой команд для мультимедиа-задач (ММХ — multimedia extensions). Эта система команд предназначалась для ускорения вычислений, необходимых при воспроизведении изображения и звука. При наличии ММХ специальные сопроцессоры были не нужны. Данные команды имелись в наличии и в более поздних версиях Pentium, но их не было в Pentium Pro. Таким образом, компьютер Pentium II сочетал в себе функции Pentium Pro с муль- тимедиа-командами.

В начале 1998 года Intel запустил новую линию продукции под названием Celeron. Celeron имел меньшую производительность, чем Pentium II, но зато стоил дешевле. Поскольку у компьютера Celeron такая же архитектура, как у Pentium II, мы не будем обсуждать его в этой книге. В июне 1998 года компания Intel выпустила специальную версию Pentium II — Хеоп. Он имел кэш-память большего объема, его внутренняя шина работала быстрее, были усовершенствованы средства поддержки многопроцессорного режима, но во всем остальном он остался обычным Pentium II, поэтому мы его тоже не будем обсуждать. Компьютеры семейства Intel показаны в табл. 1.4.

Таблица 1.4. Семейство процессоров Intel. Тактовая частота измеряется в МГц (1 МГц = 1 млн циклов/с)

Микросхема Дата

Тактовая

Количество

Объем

Примечания

 

выпуска

частота, МГц

транзисторов

памяти

 

4004

4/1971

0,108

2300

640 Кбайт

Первый

 

 

 

 

 

микропроцессор

 

 

 

 

 

на микросхеме

8008

4/1972

0,08

3 500

16 Кбайт

Первый 8-битный

 

 

 

 

 

микропроцессор

8080

4/1974

2

6 000

64 Кбайт

Первый многоцеле-

 

 

 

 

 

вой процессор

 

 

 

 

 

на микросхеме

8086

6/1978

5-10

29 000

1 Мбайт

Первый 16-битный

 

 

 

 

 

процессор

 

 

 

 

 

на микросхеме

8088

6/1979

5-8

29 000

1 Мбайт

Использовался

 

 

 

 

 

в IBM PC

80286

2/1982

8-12

134 000

1 Мбайт

Появилась защита

 

 

 

 

 

памяти

80386

10/1985

16-33

275 000

4 Гбайт

Первый 32-битный

 

 

 

 

 

процессор

80486

4/1989

25-100

1 200 000

4 Гбайт

8 Кбайт кэш-памяти

Pentium

3/1993

60-223

3 100 000

4 Гбайт

Два конвейера,

 

 

 

 

 

у более поздних

 

 

 

 

 

моделей — ММХ

Pentium Pro

3/1995

150-200

5 500 000

1

Два уровня кэш-

 

 

 

 

 

 

памяти

Pentium II

5/1997

233-400

7 500 000

64 Гбайт

Pentium Pro + ММХ

1Шина адреса у микропроцессоров Pentium Pro и Pentium II имеет ширину 36 битов, что позволяет адресовать непосредственно 64 Гбайт. — Примеч. научи, ред.

48 Глава 1. Предисловие

Все микросхемы Intel совместимы со своими предшественниками вплоть до процессора 8086. Другими словами, Pentium II может выполнять программы, написанные для процессора 80861. Совместимость всегда была одним из главных требований при разработке новых компьютеров, чтобы покупатели могли продолжать работать со старым программным обеспечением и не тратить деньги на новое. Конечно, Pentium II во много раз сложнее, чем 8086, поэтому он может выполнять многие функции, которые не способен выполнять процессор 8086. Все эти постепенные доработки в каждой новой версии привели к тому, что архитектура Pentium II не так проста, как могла бы быть, если бы разработчикам процессора Pentium II предоставили 7,5 млн транзисторов и команд, чтобы начать все заново.

Интересно, что хотя закон Мура раньше ассоциировался с числом битов в памяти компьютера, он в равной степени применим и по отношению к процессорам. Если напротив даты выпуска каждой микросхемы поставить число транзисторов на этой микросхеме (количество транзисторов показано в табл. 1.4), мы увидим, что закон Мура действует и здесь. График показан на рис. 1.7.

 

 

 

 

 

 

 

Pentium

ЮМ

 

 

 

Pentium

 

 

 

и

 

 

 

^

 

 

' •

 

 

 

 

 

 

 

 

 

 

 

Pentium

 

 

 

80286

80486

 

 

Pro

100К

 

Закон Мура

^

^

 

 

 

 

 

 

8086

 

80386

 

 

 

 

юк

 

8080Д.

8088

 

 

 

 

 

--

8008

 

 

 

 

 

 

100

-

 

 

 

 

 

 

 

10 h

 

 

 

 

 

 

 

1

i

I i I i I 1 ! 1

1 t I i

i 1 , 1 > I i I i

i

i i . i

 

 

 

 

 

 

 

 

1970 1972 1974 1976 1978 1980 1982 1984 1986 1988 1990 1992 1994 1996 1998 Год появления

Рис. 1.7. Закон Мура действует и для процессоров

UltraSPARCII

В 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Тбайт = 1012 байтов). Тем не менее некоторые версии 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 с суперскалярным процессором. Третий используется во встроенных системах. Эти три процессора сильно отличаются друг от друга, что дает нам возможность лучше увидеть диапазон компьютерных разработок.

Краткое содержание книги

Эта книга о многоуровневых компьютерах и о том, как они организованы (отметим, что почти все современные компьютеры многоуровневые). Подробно мы рассмотрим четыре уровня — цифровой логический уровень, микроархитектурный уровень, уровень архитектуры набора команд и уровень операционной системы. Основные вопросы, которые будут обсуждаться в этой книге, включают общую структуру уровней (и почему уровни построены именно таким образом), типы команд иданных, организацию памяти, адресацию, а также способы построения каждого уровня. Все это называется компьютерной организацией или компьютерной архитектурой.

Мы в первую очередь имеем дело с общими понятиями и не касаемся деталей и строгой математики. По этой причине многие примеры будут сильно упрощены, чтобы сделать упор на основные понятия, а не на детали.