ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 24.12.2021
Просмотров: 6674
Скачиваний: 8
28 Глава 1. Предисловие
режимом.
Чтобы получить результат, обычно нужно было ждать несколько часов.
При таких условиях было трудно развивать программное обеспечение.
В начале 60-х годов исследователи Массачусетского технологического институ-
та (МТИ) разработали операционную систему, которая давала возможность рабо-
тать с компьютером сразу нескольким программистам. В этой системе к центрально-
му компьютеру через телефонные линии подсоединялись отдаленные терминалы.
Таким образом, центральный процессор разделялся между большим количеством
пользователей. Программист мог напечатать свою программу и получить резуль-
таты почти сразу прямо в офисе, гараже или где бы то ни было еще (там, где нахо-
дился терминал). Эти системы назывались (и сейчас называются)
системами с
разделением времени.
Хотя нас интересуют только те части операционной системы, которые интер-
претируют команды третьего уровня, необходимо понимать, что это не единствен-
ная функция операционных систем.
Перемещение функциональности
системы на уровень микрокода
С 1970 года, когда микропрограммирование стало обычным, у производителей
появилась возможность вводить новые машинные команды путем расширения мик-
ропрограммы, то есть с помощью программирования. Это открытие привело к
виртуальному взрыву в производстве программ машинных команд, поскольку про-
изводители начали конкурировать друг с другом, стараясь выпустить лучшие про-
граммы. Эти команды не представляли особой ценности, поскольку те же задачи
можно было легко решить, используя уже существующие программы, но обычно
они работали немного быстрее. Например, во многих компьютерах использова-
лась команда INC (INCrement), которая прибавляла к числу единицу. Тогда
уже существовала общая команда сложения ADD, и не было необходимости вво-
дить новую команду, прибавляющую к числу единицу. Тем не менее команда INC
работала немного быстрее, чем команда ADD, поэтому ее также включили в набор
команд.
Многие программы были добавлены в микропрограмму по той же причине.
Среди них можно назвать:
1. Команды для умножения и деления целых чисел.
2. Команды для арифметических действий над числами с плавающей точкой.
3. Команды для вызова и прекращения действия процедур.
4. Команды для ускорения циклов.
5. Команды для работы со строкой символов.
Как только производители поняли, что добавлять новые команды очень легко,
они начали думать, какие дополнительные технические характеристики можно
добавить к микропрограмме. Приведем несколько примеров:
1. Ускорение работы с массивами (индексная и косвенная адресация).
2. Перемещение программы из одного раздела памяти в другой после запуска
программы (настройка).
Развитие компьютерной архитектуры 29
3. Системы прерывания, которые дают сигнал процессору, как только закон-
чена операция ввода или вывода
4. Способность приостановить одну программу и начать другую, используя
небольшое число команд (переключение процесса).
В дальнейшем дополнительные команды и технические характеристики вво-
дились также для ускорения работы компьютеров.
Устранение микропрограммирования
В 60-х-70-х годах количество микропрограмм сильно увеличилось. Однако они
работали все медленнее и медленнее, поскольку требовали большого объема памя-
ти. В конце концов исследователи осознали, что с устранением микропрограммы
резко сократится количество команд и компьютеры станут работать быстрее.
Таким образом, компьютеры вернулись к тому состоянию, в котором они находи-
лись до изобретения микропрограммирования.
Мы рассмотрели развитие компьютеров, чтобы показать, что граница между
аппаратным и программным обеспечением постоянно перемещается. Сегодняш-
нее программное обеспечение может быть завтрашним аппаратным обеспечением
и наоборот. Так же обстоит дело и с уровнями — между ними нет четких границ.
Для программиста не важно, как на самом деле выполняется команда (за исключе-
нием, может быть, скорости выполнения). Программист, работающий на уровне
архитектуры системы, может использовать команду умножения, как будто это
команда аппаратного обеспечения, и даже не задумываться об этом. То, что для
одного человека — программное обеспечение, для другого — аппаратное. Мы еще
вернемся к этим вопросам ниже.
Развитие компьютерной архитектуры
В период развития компьютерных технологий были разработаны сотни разных
компьютеров. Многие из них давно забыты, но некоторые сильно повлияли на со-
временные идеи. В этом разделе мы дадим краткий обзор некоторых ключевых
исторических моментов, чтобы лучше понять, каким образом разработчики дошли
до создания современных компьютеров. Мы рассмотрим только основные моменты
развития, оставив многие подробности за скобками.
Компьютеры, которые мы будем рассматривать, представлены в табл. 1.1.
Нулевое поколение — механические
компьютеры (1642-1945)
Первым человеком, создавшим счетную машину, был французский ученый Блез
Паскаль (1623-1662), в честь которого назван один из языков программирования.
Паскаль сконструировал эту машину в 1642 году, когда ему было всего 19 лет, для
своего отца, сборщика налогов. Она была механическая: с шестеренками и ручным
приводом. Счетная машина Паскаля могла выполнять только операции сложения
и вычитания.
30 Глава 1. Предисловие
Тридцать лет спустя великий немецкий математик Готфрид Вильгельм Лейбниц
(1646-1716) построил другую механическую машину, которая кроме сложения и вы-
читания могла выполнять операции умножения и деления. В сущности, Лейбниц
три века назад создал подобие карманного калькулятора с четырьмя функциями.
Еще через 150 лет профессор математики Кембриджского университета Чарльз
Бэббидж (1792-1871), изобретатель спидометра, разработал и сконструировал
разностную машину.
Эта механическая машина, которая, как и машина Паскаля,
могла только складывать и вычитать, подсчитывала таблицы чисел для морской
навигации. В машину был заложен только один алгоритм — метод конечных раз-
ностей с использованием полиномов. У этой машины был довольно интересный
способ вывода информации: результаты выдавливались стальным штампом на мед-
ной дощечке, что предвосхитило более поздние средства ввода-вывода — перфо-
карты и компакт-диски.
Хотя это устройство работало довольно неплохо, Бэббиджу вскоре наскучила
машина, выполнявшая только один алгоритм. Он потратил очень много времени,
большую часть своего семейного состояния и еще 17000 фунтов, выделенных пра-
вительством, на разработку
аналитической машины.
У аналитической машины
было 4 компонента: запоминающее устройство (память), вычислительное устрой-
ство, устройство ввода (для считывания перфокарт), устройство вывода (перфо-
ратор и печатающее устройство). Память состояла из 1000 слов по 50 десятичных
разрядов, каждое из которых содержало переменные и результаты. Вычислитель-
ное устройство принимало операнды из памяти, затем выполняло операции сло-
жения, вычитания, умножения или деления и возвращало полученный результат
обратно в память. Как и разностная машина, это устройство было механическим.
Преимущество аналитической машины заключалось в том, что она могла вы-
полнять разные задачи. Она считывала команды с перфокарт и выполняла их.
Некоторые команды приказывали машине взять 2 числа из памяти, перенести их
в вычислительное устройство, произвести над ними операцию (например, сложить)
и отправить результат обратно в запоминающее устройство. Другие команды про-
веряли число, а иногда совершали операцию перехода в зависимости от того, по-
ложительное оно или отрицательное. Если в считывающее устройство вводились
перфокарты с другой программой, то машина выполняла другой набор операций.
А разностная машина могла осуществлять только один алгоритм.
Поскольку эта аналитическая машина программировалась на ассемблере, ей
было необходимо программное обеспечение. Чтобы создать это программное обес-
печение, Бэббидж нанял молодую женщину — Аду Августу ЛовлеЙс, дочь знаме-
нитого британского поэта Байрона. Ада Ловлейс была первым в мире программи-
стом. В ее честь назван современный язык программирования Ada.
К несчастью, Бэббидж никогда не отлаживал компьютер. Ему нужны были ты-
сячи и тысячи шестеренок, сделанных с такой точностью, которая была невозмож-
на в XIX веке. Но идеи Бэббиджа опередили его эпоху, и даже сегодня большин-
ство современных компьютеров по строению сходны с аналитической машиной.
Поэтому справедливо будет сказать, что Бэббидж был дедушкой современного
цифрового компьютера.
Развитие компьютерной архитектуры
31
Таблица 1.1.
Основные этапы развития компьютеров
Год
выпуска
Название
компьютера
Создатель Примечания
1834
1936
1943
1944
1946
1949
1951
1952
1960
1961
1962
1963
1964
1964
1965
1970
1974
1974
1978
1981
1985
1987
Аналитическая
машина
Z1
COLOSSUS
Mark!
ENIAC I
EDSAC
Whirlwind I
IAS
PDP-1
1401
7094
B5000
360
6600
PDP-8
PDP-11
8080
CRAY-1
VAX
IBM PC
MIPS
SPARC
Бэббидж
Зус
Британское
правительство
Айкен
Экерт/
Моушли
У ил кс
МТИ
Фон Нейман
DEC
IBM
IBM
Burroughs
IBM
CDC
DEC
DEC
Intel
Cray
DEC
IBM
MIPS
Sun
1990
RS6000
IBM
Первая попытка построить цифровой компьютер
Первая релейная вычислительная машина
Первый электронный компьютер
Первый американский многоцелевой компьютер
Отсюда начинается история современных
компьютеров
Первый компьютер с программами, хранящимися
в памяти
Первый компьютер реального времени
Этот проект используется в большинстве
современных компьютеров
Первый мини-компьютер (продано 50 экземпляров)
Очень популярный маленький компьютер
Очень популярная небольшая вычислительная
машина
Первая машина, разработанная для языка
высокого уровня
Первое семейство компьютеров
Первый суперкомпьютер для научных расчетов
Первый мини-компьютер массового потребления
(продано 50 000 экземпляров)
Эти мини-компьютеры доминировали
на компьютерном рынке в 70-е годы.
Первый универсальный 8-битный компьютер
на микросхеме
Первый векторный супер-компьютер
Первый 32-битный суперминикомпьютер
Началась эра современных персональных
компьютеров
Первый компьютер RISC
Первая рабочая станция RISC на основе
процессора SPARC
Первый суперскалярный компьютер
В конце 30-х годов XX века немец Конрад Зус сконструировал несколько
автоматических счетных машин с использованием электромагнитных реле. Ему
не удалось получить денежные средства от правительства на свои разработки,
потому что началась война. Зус ничего не знал о работе Бэббиджа, и его машины
были уничтожены во время бомбежки Берлина в 1944 году, поэтому его работа
никак не повлияла на будущее развитие компьютерной техники. Однако он был
одним из пионеров в этой области.
32 Глава 1. Предисловие
Немного позже счетные машины были сконструированы в Америке. Машина
Атанасова была чрезвычайно развитой для того времени. В ней использовалась
бинарная арифметика и информационные емкости, которые периодически обнов-
лялись, чтобы избежать уничтожения данных. Современная динамическая память
(ОЗУ) работает точно по такому же принципу. К несчастью, эта машина так и не
стала действующей. В каком-то смысле Атанасов был похож на Бэббиджа: мечта-
тель, которого не устраивали технологии своего времени.
Компьютер Стибитса действительно работал, хотя и был примитивнее, чем ма-
шина Атанасова. Стибитс продемонстрировал работу своей машины на конферен-
ции в Дартмутском колледже в 1940 году. На этой конференции присутствовал
Джон Моушли, ничем не знаменитый профессор физики из университета Пенсиль-
вании. Позднее он стал очень известным в области компьютерных разработок.
Пока Зус, Стибитс и Атанасов разрабатывали автоматические счетные маши-
ны, молодой Говард Айкен с трудом проектировал ручные счетные машины как
часть своего философского исследования в Гарварде. После окончания исследова-
ния Айкен осознал важность автоматических вычислений. Он пошел в библиоте-
ку, узнал о работе Бэббиджа и решил создать из реле такой же компьютер, кото-
рый Бэббиджу не удалось создать из зубчатых колес.
Работа над первым компьютером Айкена «Mark I» была закончена в 1944 году.
Компьютер содержал 72 слова по 23 десятичных разряда каждое и мог выполнить
любую команду за 6 секунд. На устройствах ввода-вывода использовалась перфо-
лента. К тому времени, как Айкен закончил работу над компьютером «Mark II»,
релейные компьютеры уже устарели. Началась эра электроники.
Первое поколение — электронные
лампы (1945-1955)
Стимулом к созданию электронного компьютера стала Вторая мировая война.
В начале войны германские подводные лодки разрушали британские корабли. Гер-
манские адмиралы посылали на подводные лодки по радио команды, а англичане
могли перехватывать эти команды. Проблема заключалась в том, что эти радио-
послания были закодированы с помощью прибора под названием
ENIGMA,
пред-
шественник которого был спроектирован изобретателем-дилетантом и бывшим
президентом США Томасом Джефферсоном.
В начале войны англичанам удалось приобрести ENIGMA у поляков, которые,
в свою очередь, украли его у немцев. Однако чтобы расшифровать закодированное
послание, требовалось огромное количество вычислений, и их нужно было произ-
вести сразу после того, как радиопослание было перехвачено. Поэтому британское
правительство основало секретную лабораторию для создания электронного
компьютера под названием
COLOSSUS.
В создании этой машины принимал
участие знаменитый британский математик Алан Тьюринг. COLOSSUS работал уже
в 1943 году, но так как британское правительство полностью контролировало этот
проект и рассматривало его как военную тайну на протяжении 30 лет, COLOSSUS
не мог служить основой дальнейшего развития компьютеров. Мы упомянули его
только потому, что это был первый в мире электронный цифровой компьютер.