## Тема 4 Многоуровневая компьютерная организация

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

1. Сложить два числа;

2. Проверить, не является ли число нулем;

3. Скопировать кусок данных из одной части памяти в другую.

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

Это привело к тому, что с течением времени появились ряд уровней абстракций, каждая из которых настраивается над абстракцией более низкого уровня. Такой поход называется многоуровневой компьютерной организацией. Такой подход в рассмотрении архитектуры компьютера принят в классической книге «Архитектура компьютера» Эндрю Таненбаума, ведущего специалиста в области разработки компьютеров из МТИ.

4.1 Современные многоуровневые машины

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

#### 4.1.1 Языки, уровни и виртуальные машины

Обозначим через Я1 – язык программирования, удобный для человека. Машинные команды также образуют некоторый язык, понятный компьютеру, который обозначим как Я0. Для того, чтобы перевести программы с языка Я1 на понятный компьютеру язык Я0 можно использовать следующие подходы.

Первый способ – замена каждой команды, написанной на языке Я1 эквивалентным набором команд, написанных на языке Я0. В этом случае компьютер выполняет новую программу, написанную на языке Я0 вместо старой, записанной на языке Я1. Такая технология называется трансляцией.

Второй способ – написание программы на языке Я0, которая берет команды, написанные на языке Я1 в качестве исходных данных, рассматривает каждую команду по очереди и сразу выполняет эквивалентный набор команд языка Я0. Эта технология не требует составления новой программы на языке Я0, Эта технология называется интерпретацией, а программа, осуществляющая интерпретацию называется интерпретатором.

Различия между трансляцией и интерпретацией заключается в том, что при трансляции все программа Я1 переделывается в программу Я0 и программа Я1 может быть отброшена, а в память компьютера загружается программа Я0. При интерпретации каждая команда перекодируется и тут же выполняется.

На практике проще представить себе существование некоторого гипотетического компьютера, или виртуальной машины, для которой машинным языком является удобный для нас язык Я1, чем думать о трансляции и интерпретации. Назовем такую машину М1, а машину, понимающую язык Я0, машиной МО.

Хотелось бы сконструировать машину, для которой машинным языком был бы язык Я1, однако эта машина была бы слишком дорогой.

Для целесообразности трансляции и интерпретации необходимо, чтобы языки Я0 и Я1 не очень отличались друг от друга. Казалось бы, это требование находится в некотором противоречии с целью создания языка Я1, удобного для человека. Однако это противоречие разрешается следующим очевидным образом.

Создается следующий набор команд Я2, который в большей степени ориентирован на человека. Этому языку соответствует виртуальная машина М2, соответствующие трансляторы или интерпретаторы Я2-Я1 и т.д. Изобретение ряда языков, каждый из которых более удобен для человека, чем предыдущий может продолжаться до тех пор, пока мы не дойдем до подходящего. Каждый последующий язык рассматривает предыдущий как основу и поэтому можно представить компьютер в виде уровней (см. рис. 4.1).

Уровень n |  | Виртуальная машина Mn С машинным языком Яn | à | Программы на языке Яn либо интерпретируются программой-интерпретатором, работающей на языке более низкого уровня, либо транслируются на машинный язык машины более низкого уровня
|  | : : |  |
Уровень 1 |  | Виртуальная машина M1 С машинным языком Я1 | à | Программы на языке Я1 либо интерпретируются программой-интерпретатором, работающей на языке Я0, либо транслируются на машинный язык Я0
Уровень 0 |  | Виртуальная машина M0 С машинным языком Я0 | à | Программы на языке Я0 непосредственно выполняются электронными схемами

Рис. 4.1

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

Деление на уровни является в некотором роде условным. Можно говорить о шести уровнях представления современного компьютера. (рис. 4.2).

Уровень 5 | Язык высокого уровня |
|  | Трансляция (компилятор)
Уровень 4 | Уровень языка ассемблера |
|  | Трансляция (ассемблер)
Уровень 3 | Уровень операционной системы |
|  | Трансляция (ассемблер)
Уровень 2 | Уровень архитектуры команд |
|  | Интерпретация (микропрограмма) или непосредственное выполнение
Уровень 1 | Микроархитектурный уровень |
|  | Аппаратное обеспечение
Уровень 0 | Цифровой логический уровень |

Рис. 4.2

На рисунке 4.2 отсутствует уровень физических устройств, расположенный ниже уровня 0. На этом уровне находятся электронные схемы, которые не являются предметом рассмотрения курса.

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

Следующий уровень – микроархитектурный. На этом уровне рассматриваются совокупности регистров, которые образуют локальную (или регистровую) память и арифметико-логическое устройство (АЛУ), предназначенное для выполнения простых операций. Регистры вместе с АЛУ образуют тракт данных. Основная операция состоит в следующем: выбирается один или два регистра, АЛУ производит над ними некоторую операцию (например, сложение), результат помещается в один из регистров. В некоторых машинах тракт данных контролируется микропрограммой. На других контроль осуществляется аппаратными средствами.

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

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

Нижние уровни конструируются не для того, что бы с ними работал обычный программист. Они предназначены для работы интерпретаторов и трансляторов и поддерживаются системными программистами. Уровни с четвертого и выше предназначены для работы прикладных программистов. Следующая особенность: уровни 2 и 3 обычно интерпретируются, а уровни 4 и выше как правило, поддерживаются транслятором. Уровни 1, 2 и 3 – цифровые, т.е. программы, написанные на языках этих уровней, состоят из наборов цифр. Начиная с четвертого уровня, языки содержат слова и сокращения, понятные человеку.

Четвертый уровень представляет собой символьную запись языка более низкого уровня. Программа, которая выполняет трансляцию называется ассемблером.

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

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

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

#### 4.1.2 Развитие многоуровневых машин

Аппаратное обеспечение состоит из электронных схем, памяти, устройств ввода-вывода, т.е. из осязаемых объектов.

Программное обеспечение состоит из алгоритмов и программ. В первых вычислительных машинах разница между программными и аппаратными средствами была очевидной. Со временем эта грань стала размываться. Сейчас можно говорить о том, что аппаратное и программное обеспечения логически эквивалентны. Карен Панетта Ленц говорил: «Аппаратное обеспечение – это всего лишь окаменевшее программное обеспечение». Разделение функций программного и аппаратного обеспечения определяется такими факторами как стоимость, скорость, надежность, а также частота ожидаемых изменений.

4.1.2.1. Изобретение микропрограммирования

У первых компьютеров было только два уровня уровень архитектуры набора команд и цифровой логический уровень.

В 1951 году Морис Уилкс (Кембриджский университет) предложил идею трехуровневого компьютера. Такой компьютер должен иметь встроенный неизменяемый интерпретатор (микропрограмму), функция которого заключалась в выполнении программ посредством интерпретатора. Таким образом, аппаратное обеспечение должно было выполнять только микропрограммы с ограниченным набором команд. Электронные схемы существенно упростились, цена уменьшилась, а надежность возросла. К 70-м годам идея микропрограммирования стала преобладающей.

4.1.2.2 Изобретение операционной системы

Первые операционные системы появились в 60-е годы. Придумана она была для того, чтобы автоматизировать работу оператора. Однако создание операционной системы было первым шагом на пути в развитии новой виртуальной машины. К уровню архитектуры команд добавлялись новые команды и в итоге сформировался новый уровень. Некоторые команды нового уровня были идентичны командам предыдущего, но появились и другие команды, которые полностью отличались. Эти команды тогда назывались макросами ОС или вызовами супервизора. Сейчас используют термин системный вызов. Первые операционные системы были ориентированы на работу в пакетном режиме. В начале 60-х годов в МТИ разработали операционную систему, которая позволяла одновременно работать нескольким пользователям. В такой системе ресурсы центрального процессора разделялись между несколькими пользователями. Такие системы назывались и сейчас называются системами с разделением времени.

4.1.2.3 Перемещение функциональности на уровень микрокоманд

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

1. Ускорение работы с массивами (индексная и косвенная адресация)

2. Системы прерывания, которые дают команду процессору, как только закончилась операция ввода или вывода;

3. Способность приостановить одну программу и начать другую, используя небольшое количество команд (переключение процесса);

4. Специальные команды для обработки изображений, мультимедийных данных.

4.1.2.4 Устранение микропрограммирования

В 60-х – 70-х годах количество микропрограмм увеличивалось, но они работали все медленнее и медленнее, т.к. требовали значительного объема памяти. Пришло понимание того, что с устранением микропрограмм резко сократится количество команд и компьютеры станут работать быстрее. Таким образом, компьютеры вернулись к тому состоянию, в котором они были до изобретения микропрограммирования.

Вывод: граница между аппаратным и программным обеспечением постоянно перемещается. Так же обстоит дело с уровнями – между ними нет четких границ.

### 4.2 Развитие компьютерной архитектуры

#### 4.2.1. Нулевое поколение – механические компьютеры (1642-1945)

Первую счетную машину создал французский ученый Блез Паскаль в 1642 году. Ему тогда было 19 лет, он создал машину для своего отца, сборщика налогов. Машина могла выполнять только операции сложения и вычитания.

Тридцать лет спустя великий немецкий математик Готфрид Вильгельм Лейбниц (1646-1716) построил счетную машину, которая помимо операций сложения и вычитания могла выполнять операции умножения и деления.

Еще через 150 лет профессор математики Кембриджского университета Чарльз Бэбидж (1792-1871) (изобретатель спидометра) разработал и сконструировал разностную машину, предназначенную для подсчета таблиц чисел морской навигации. Машина могла выполнять только один алгоритм – метод конечных разностей с использованием полиномов. Машина, выполнявшая только один алгоритм, Бэбиджу вскоре наскучила и он начал разрабатывать (и потратил на это очень много средств) аналитическую машину. У аналитической машины было запоминающее устройство, вычислительное устройство, устройство ввода (для перфокарт), устройство вывода (перфоратор и печатающее устройство). Машина могла выполнять разные задачи. Она считывала команды с перфокарт и выполняла их. Поскольку аналитическая машина программировалась на ассемблере, то ей было необходимо программное обеспечение. Первый программист – племянница поэта Байрона Ада Ловлейс. В ее честь назван язык программирования АДА. Аналитическая машина была механической. Идеи Бэбиджа опередили эпоху в том смысле, что технологическая база не позволяла создавать устройства такой сложности с приемлемой надежностью.

В конце 30-х -- начале 40-х годов ХХ века счетные машины были сконструированы в Германии и Америке, в которых были использованы электромагнитные реле. Машина Джона Атанасова была очень развита для своего времени. В ней использовалась бинарная арифметика, информационные емкости, которые периодически обновлялись. К сожалению, эта машина так и не заработала.

Говард Айкен, опираясь на исследования Бэбиджа, решил создать такой же компьютер, но на основе реле. Работа над первым компьютером была закончена в 1944 году. Называлась машина «MARK 1». Затем началась эра электроники.

#### 4.2.2 Первое поколение – электронные лампы (1945-1955)

Стимулом для разработки электронного компьютера стала Вторая мировая война. Машина создавалась для шифровки и дешифровки в Великобритании. Одним из создателей этой машины был Алан Тьюринг.

В Америке Джон Моушли со своим студентом Дж. Преспером Экертом начали конструировать компьютер, предназначенный в первую очередь для составления таблиц для нацеливания тяжелой артиллерии. К моменту завершения разработки война закончилась, машина стала не нужна для военных целей, и разработчикам было разрешено организовать школу, где они рассказывали о своей работе. Эта машина – ENIAC. Патент на ЦВМ они не получили, т.к. приоритет был отдан Атанасову.

В это же время в Институт специальных исследований в Принстоне приехал один из участников проекта ENIAC Джон фон Нейман, чтобы сконструировать свою версию компьютера.

Он предложил размещать программу вместе с данными в оперативной памяти и использовать бинарную арифметику. Основной проект известен теперь как фон-неймановская вычислительная машина. Он был использован в машине EDSAC. Практически все современные компьютеры являются фон-неймановскими машинами. Схема архитектуры этой машины приведена на рисунке В3. Машина не имела операций с плавающей точкой. Нейман полагал, что любой сведущий математик способен держать плавающую точку в голове.

Приблизительно в это же время в МТИ был создан компьютер Whirlwind-1. Особенности компьютера: слова небольшой длины (16 бит) и работа в РМВ. Он является прототипом мини-компьютера.

В 1953 году IBM создала свой первый компьютер IBM-704.

#### 4.2.3.Второе поколение – транзисторы (1955-1965)

Транзисторы были изобретены в лаборатории Bell Джоном Бардином, Уолтером Браттейном и Уильямом Шокли, за что в 1956 году им была присуждена Нобелевская премия. Первый компьютер на транзисторах был построен в МТИ и назывался ТХ-1, а затем ТХ-2. Практического значения эти компьютеры не имели, но один из разработчиков, Кеннет Ольсен в 1957 году основал фирму DEC и произвели первую серийную машину на транзисторах PDP-1 (1961 г.). Эта была самая быстродействующая машина того времени. Время цикла – 5 микросекунд. Это в два раза меньше, чем у IBM-7090 (транзисторного аналога IBM-709). Стоил PDP-1 $120 000, а IBM – миллионы. Компания DEC продала десятки компьютеров PDP и так возникла компьютерная промышленность. Один из компьютеров был отдан в МТИ, где был создан первый графический дисплей, а студенты написали первую компьютерную игру – «Война миров».

Затем была создана машина PDP-8, которая была 12-разрядной, стоила $16 000, а главное нововведение – одна шина. Шина – это набор параллельно соединенных проводов для связи компонентов компьютера. Структура компьютера с общей шиной приведена на рис. В4. Такая структура с тех пор используется во всех компьютерах.

В 964 году компания CDC выпустила машину CDC-6600, которая имела производительность на порядок выше, чем IBM-7090 и ее более дешевый аналог IBM-1401. Высокая производительность обеспечивалась за счет того, что внутри центрального процессора находилась машина с высокой степенью параллелизма. Разработчиком этого компьютера был Сеймур Крей. Он посвятил свою жизнь созданию мощных компьютеров, которые сейчас называются суперкомпьютерами. Это компьютеры CDC-6600, CDC-7600, Crey-1.

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

Следует отметить еще один проект – Burroughs B50000. Разработчики создавали компьютер с намерением программировать ее на языке Algol 60 (предшественник языка Pascal), сконструировав аппаратное обеспечение так, что бы упростить работу компилятору. Так появилась идея, что программное обеспечение тоже надо учитывать при разработке компьютера.

#### 4.2.4 Третье поколение – интегральные схемы (1965-1980)

В 1958 году была изобретена кремниевая технология (изобретатель – Роберт Нойс). Компьютеры на интегральных схемах были меньшего размера, работали быстрее, стоили дешевле. Наиболее значительные следующие.

К 1964 г. Фирма IBM лидировала на рынке, но выпускаемые ей компьютеры были программно несовместимы. Компания сделала решительный шаг. Она выпустила серию компьютеров на транзисторах System 360, которые были предназначены как для научных, так и для коммерческих расчетов. System 360 содержала много нововведений. Это было семейство компьютеров с одним и тем де ассемблером. Каждая новая модель была больше и мощнее предыдущей. Идея создания семейств компьютеров вскоре стала популярной и в течении нескольких лет большинство компьютерных компаний выпустило целые серии сходных машин.

Еще одно нововведение – мультипрограммирование. В памяти располагалось несколько программ и пока одна программа ждала окончания ввода-вывода, другая выполнялась.

Мир микрокомпьютеров сделал также большой шаг вперед вместе с производством компьютеров PDP-11. Во многих отношениях PDP-11 была младшим братом IBM 360 по организации компьютера и наличию в семействе машин разной стоимости и производительности.

#### 4.2.5. Четвертое поколение – сверхбольшие интегральные схемы

Появление СБИС в 80-х годах позволило помещать на одну плату сначала десятки тысяч, а затем и миллионы транзисторов. К 80-м годам цены на компьютеры упали на столько, что приобретать компьютеры смогли не только организации, но и отдельные люди. Началась эра персональных компьютеров. Первые персональные компьютеры продавались в виде комплектов, как правило, на базе Intel 8080. Программное обеспечение пользователь писал сам. Затем появилась операционная система CP/M. Эта ОС помещалась на дискету, включала систему управления файлами и интерпретатор для выполнения пользовательских команд, которые набирались на клавиатуре.

Компания IBM, лидирующая в то время на рынке компьютеров, тоже решила заняться производством персоналок. Для ускорения процесса разработки копания IBM предоставила одному своему сотруднику, Филипу Эстриджу крупную сумму денег на создание персонального компьютера. Компьютер IBM PC появился в 1981 году и стал самым покупаемым в истории.

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

Первая версия IBM PC была оснащена операционной системой MS-DOS, которую выпускала крошечная компания Microsoft. Эта компания разработала также собственную ОС Windows, которая работала на базе MS-DOS. Успех процессора 8088 воодушевил Intel на усовершенствования. Модель 386 – первый представитель линейки Pentium.

В середине 80-х годов на CISC-архитектурой на RISC-компьютеры, которые проще и работают быстрее. В 90-х годах появились суперскалярные компьютеры. Первый 64-разрядный компьютер был выпущен в 1992 году (Alpha, DEC), но коммерческий успех был скромным – 64-разрядные компьютеры приобрели популярность только в спустя десятилетие и в качестве персональных серверов.

#### 4.2.6 Пятое поколение – невидимые компьютеры

В 1981 году правительство Японии объявило о намерении выделить национальным компаниям 500 миллионов долларов на разработку компьютеров пятого поколения на основе технологий искусственного интеллекта. Однако проект, в целом, оказался несостоятельным. Причина, скорее всего, заключается в том, что идея несколько опередила технологию.

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

### 4.3 ТИПЫ КОМПЬЮТЕРОВ

#### 4.3.1 Технологические аспекты

Закон технологического прогресса, известный как закон Мура (Гордон Мур – один из основателей Intel) утверждает, что количество транзисторов на одной микросхеме удваивается каждые 18 месяцев. По сути закон Мура не закон, а эмпирическое наблюдение за развитием технологий, и, по мнению специалистов, продержится еще лет 10, может больше. Однако, существует физический предел, определяемый принципом неопределенности Гейзенберга.

Закон Мура связан с так называемым эффективным циклом. Т.е. новые возможности порождают новые потребности, для удовлетворения которых требуются новые возможности и т.д.

Еще один фактор развития компьютерных технологий – первый закон программного обеспечения, названный в честь Натана Мирвольда (главный администратор Microsoft). Закон гласит: программное обеспечение это газ, который полностью заполняет резервуар, в котором находится. Т.е. программное обеспечение продолжает развиваться и требовать все больше ресурсов.

Шутка Г. Мура на тему темпов развития IT-технологий: если бы авиационные технологии развивались такими же темпами, как компьютерные, то самолеты стоили бы $500, облетали Землю за 20 минут на 20 литрах керосина и были бы размером с обувную коробку.

#### 4.3.2 Широкий спектр компьютеров

Исследователь из лаборатории Bell Ричард Хамминг заметил, что количественное изменение характеристик на порядок ведет к качественному изменению. В компьютерных технологиях количественные характеристики изменились за 30 лет на 6 порядков. Компьютерные технологии развиваются как по пути увеличения мощности так и снижения цены на единицу мощности. Примерная классификация компьютеров приведена в таблице.

Таблица 1. Типы компьютеров

Тип | Цена $ | Сфера применения
«Одноразовые компьютеры» | 0,5 | Поздравительные открытки
Встроенные компьютеры | 5 | Часы, машины, бытовые приборы
Игровые компьютеры | 50 | Домашние компьютерные игры
Персональные компьютеры | 500 | Настольные и портативные компьютеры
Серверы | 5 тыс. | Сетевые серверы
Комплексы рабочих станций | 50 – 500 тыс. | Супер-мини компьютеры
Мэйнфреймы | 5 млн. | Пакетная обработка данных в банке

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

Наибольшим достижением в этой области можно считать появление микросхем RFID (Radio Frequency Identification – радиочастотная идентификация). Эти микросхемы без батареек, содержат приемо-передатчик, который по внешнему запросу выдает код. Это может быть использовано для снятия штрих-кодов, идентифицировать можно до конкретной единицы продукции, с увеличением объема памяти таких микросхем можно записывать и другие данные.

Микросхемы могут быть активными и пассивными, работать на разных частотах (чем выше частота, тем выше скорость передачи данных, но меньше радиус действия).

##### Микроконтроллеры

Микроконтроллеры выполняют функции управления устройствами и организации пользовательских интерфейсов. В отличие от RFID-микросхем, которые выполняют минимальный набор функций, микроконтроллеры представляют собой полноценные вычислительные устройства. Содержат процессор, память, устройства ввода-вывода. В ряде случаев программное обеспечение прошивается в памяти производителем.

Микроконтроллеры разделяются на универсальные и специализированные.

Особенности микроконтроллеров; низкие цены, работа в реальном масштабе времени, жесткие ограничения на размер и электропотребление.

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

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

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

Некоторые специалисты называют ПК с процессорами Intel, отделяя их от компьютеров, оснащенных высокопроизводительными RISC-микросхемами (Sun UltraSPARC), которые называют рабочими станциями. Но особой разницы между этими компьютерами нет.

К персональным компьютерам близки карманные компьютеры PDA.

##### Серверы

Мощные персональные компьютеры и рабочие станции часто используются в качестве сетевых серверов как в пределах локальной сети, так и в Интернете. Серверы поставляются в однопроцессорной или мультипроцессорной конфигурациях. Некоторые серверы способны обрабатывать до миллиона транзакций в секунду.

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

##### Комплексы рабочих станций

COW-системы (Clusters of Workstations) – кластеры рабочих станций состоят из нескольких персональных компьютеров или рабочих станций. Эти компьютеры соединены высокоскоростной сетью и снабжены специальным ПО. Предназначены для решения «больших» задач.

В виде кластеров могут быть организованы веб-серверы. Если частота обращения в страницам сайта исчисляется тысячами в секунду, то дешевле организовать кластер из нескольких сотен (или тысяч) серверов и распределить между ними нагрузку. Такие кластеры называются серверными фермами (server farms).

##### Мэйнфреймы

Это большие компьютеры, размером с комнату. В большинстве случаев эти системы – потомки больших компьютеров IBM 360/370. Обычно они работают не намного быстрее, чем мощные серверы, но у них выше скорость процессов ввода/вывода, обладают большим дисковым пространством. Эти системы дорогие. Многие компании считают, что выгоднее вложить деньги в такую систему, чем переписывать все программное обеспечение под персональные компьютеры. Именно из-за этих систем и возникла проблема 2000 года.

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

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

### 4.4 СЕМЕЙСТВА КОМПЬЮТЕРОВ

#### 4.4.1 Pentium 4

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

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

Новая микросхема вызвала большой интерес и Intel начала разработку новой микросхемы, у которой предел обращения к памяти в 16 Кбайт был преодолен. Так появился 8080, выпущенный в 1974 году. Этот процессор произвел революцию.

1978 год – процессор 8086. Он имел 16-разрядные внутренние регистры, 16-разрядные внутренние и внешние шины данных и мог адресовать до 1 Мб физической памяти. Быстродействие – 0,8 MIPS (миллион оп/с).

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

В начале 80-х годов Intel разработала 80286, совместимый с 8086. Он уже мог адресовать до 16 Мб физической памяти, имел специальный защищенный режим работы, который обеспечивал гибкий механизм адресации, управление доступом к памяти, управление привилегиями и т.п. Система команд также была расширена, а быстродействие достигало 2,7 MIPS.

Intel386 (1985) – это уже полностью 32-разрядный микропроцессор с 32-разрядными внутренними регистрами и шинами данных. Его адресное пространство – 4 Гб. Добавлены страничный механизм и добавлен новый режим работы V86, который обеспечивал совместимость данного микропроцессора с программами, написанными для предыдущих устройств серии. Внутренняя архитектура микропроцессора Intel386 позволила организовать параллельное выполнение нескольких операций (выборка команд, декодирование, исполнение команд) что позволило увеличить быстродействие до 6 MIPS. Приблизительно в это же время была разработана новая операционная система Windows.

В 1989 г. выпущен микропроцессор Intel486, который содержал интегрированное устройство вычислений с плавающей точкой (FPU) и внутреннюю кэш-память для данных и команд.

В 1993 году был создан первый микропроцессор семейства P5 – Pentium, характеризующийся значительно более совершенной архитектурой. В этих процессорах устройство целочисленных вычислений имело два практически идентичных блока, в которых различные команды могли выполняться параллельно. Были доработаны модули, отвечающие за выборку и декодирование команд: была предусмотрена возможность прогнозировать действия процессора, путем осуществления предвыборку и предекодирование команд еще до получения результатов предыдущих команд. Переработано FPU с целью повышения его быстродействия. Были внесены некоторые изменения в архитектуру процессов: появилась поддержка объемных страниц, более гибким стал режим V86, введены дополнительные средства внутренней самодиагностики. Быстродействие таких процессоров могло достигать 100 MIPS.

В 1993-1997 Intel продолжал работу по совершенствованию архитектуры своих процессоров. Был выпущен Pentium Pro – микропроцессор архитектуры P6, которая стала основной для более поздних микропроцессоров, вплоть до Pentium III. В этих процессорах: четыре модуля параллельно осуществляли выполнение команд, предвыборка дополнилась возможностями предсказания ветвлений, кэш-память стала двухуровневой, введена расширенная система обработки мультимедийной информации (MMX).

Pentium II/III – их быстродействие может достигать 1000 MIPS, объем оперативной памяти до 64 Гб, внутренней кэш-памяти – 2 Мб. Система обработки мультимедийной информации была усовершенствована: в микропроцессор Pentium III были введены 70 новых так называемых SIMD-команд.

Помимо основной линейки процессоров Intel разрабатывает специальные микросхемы. Например,

1. 1998 г. – Celeron, уступал по производительности Pentium, но и стоил дешевле.

2. 1988 г., Xeon – имеет кэш-память большего объема, ускоренная внутренняя шина, усовершенствованные средства поддержки мультипроцессорного режима.

3. Pentium 4 (2000 г.) – система основана на новом конструктивном решении, по традиции обошел все предыдущие модели по производительности. В версии с тактовой частотой в 3,06 ГГц была введена многопоточность. Для повышения скорости обработки звуковых и видеоданных был внедрен дополнительный набор SSE-команд.

4. В 2003 г. Появилась микросхема Pentium M – мобильный.

Все микросхемы Intel обратно совместимы. Закон Мура применим и к процессорам. Однако возникает проблема теплоотдачи, что, вероятно, внесет коррективы в этот закон.

В ноябре 2004 г. Intel прекратила выпуск Pentium 4 с тактовой частотой 4 ГГц из-за проблем с теплоотдачей. Проблему повышения быстродействия решают за счет размещения на одной микросхеме двух процессоров и увеличения объема кэш-памяти – память потребляет меньше энергии.

#### 4.4.2 UltraSPARC III

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

27-летний индиец Винод Косла предложил Энди Бехтольсхайму организовать компанию по производству рабочих станций SUN. Он нанял также аспиранта Скотта Мак-Нили и программиста Билла Джоя, главного создателя системы UNIX. Они организовали компанию Sun Microsystems. Первый компьютер был оснащен процессором Motorola 68020 и имел большой успех, так же, как и последующие модели. Они были мощнее персональных компьютеров и имели аппаратные и программные средства работы в сети ARPANET (предшественник Internet). В 1987 году компания решила разработать свой собственный процессор, основанном на революционном проекте Калифорнийского университета (RISC II). Этот процессор назывался SPARC (Scalable Processor ARCitecture – наращиваемая архитектура процессора).

В отличие от других компаний, Sun решила не производить процессоры, а предоставила патент нескольким компаниям. Так появились MicroSPARC, HyperSPARC, SuperSPARC, TurboSPARC.

Первый SPARC был 32-разрядным, а в 1995 году была разработана 64-разрядная версия. UltraSPARC с самого начала был предназначен для работы с изображениями, аудио, видео и мультимедиа вообще.

UltraSPARC IV представлят собой двухпроцессорный комплекс, где два процессора UltraSPARC III размещены на одной микросхеме с одним КЭШем.

#### 4.4.3 Микросхема 8051

Микросхема применяется во встроенных системах, ее история началась в 1976 году. В это время уже сформировался спрос на встраиваемые вычислительные устройства, а использовать процессор 8080 с дополнительными модулями памяти оказывалось дорого.

Модель 8748 (Intel) – микроконтроллер на основе 17 000 транзисторов, состоит из процессора типа 8080, постоянной памяти в 1 Кбайт для размещения программ, оперативной памяти 64 байт, 8-разрядный таймер, 27 шин ввода/вывода. Микросхема имела коммерческий успех.

Следующая модель 8051 на 60 000 транзисторах появилась в 1980 г., где процессор был более быстрый, 4К постоянной и 128 байт оперативной памяти, 32 шины ввода/вывода, последовательный порт и два 16-разрядных таймера. Вскоре вышли другие модификации и сформировалось семейство микроконтроллеров MSC-51.

Функциональность микросхем определялась программным обеспечением, которое прошивалось в постоянной памяти. Для создания ПО использовались модели 8751 и 8752, предусматривающие возможность тестирования ПО и перезаписи памяти, т.о. можно было корректировать и отлаживать ПО. Разработанное и отлаженное ПО передавалось производителю, который прошивал память программ уже без возможности перезаписи.

В настоящее время объем продаж микроконтроллеров на несколько порядков выше объема продаж процессоров Pentium, и только в 2001 году 8-разрядные стали продаваться лучше 4-х разрядных. Микросхемы серии 8051 одна из более распространенных.

Популярность объясняется ценой (10-15 центов в партии), производством микросхем по лицензии Intel занимаются множество фирм, поскольку микросхемы выпускаются давно, то для них имеется программное обеспечение и средства его разработки.

Актуальность архитектурных исследований. На одном из первых компьютеров мира EDSAC (1949 г., Кембридж) время такта 2 микросекунды (2*10-6), можно было 2*n операций выполнить за 18*n миллисекунд, т.е. 100 операций в секунду. Вычислительный узел суперкомпьютера HP V2600 время такта составляет 1.8 наносекунды (1.8*10-9 секунд), а пиковая производительность около 77 миллиардов арифметических операций в секунду. Таким образом производительность возросла в семьсот миллионов раз, а тактовая частота около 1000 раз.

#### Таблица 2. Единицы измерения

Основные метрические приставки | Память
Порядок | Приставка | порядок | Приставка | Объем | Название
10-3 | милли | 103 | кило | 210 | Кбайт
10-6 | микро | 106 | мега | 220 | Мбайт
10-9 | нано | 109 | гига | 230 | Гбайт
10-12 | пико | 1012 | тера | 240 | Тбайт
10-15 | фемто | 1015 | пета | 103 бит/с | Кбит/с
10-18 | атто | 1018 | экса | 106 бит/с | Мбит/с
10-21 | зепто | 1021 | зета | 109 бит/с | Гбит/с
10-24 | йокто | 1024 | йота | 1012 бит/с | Тбит/с