Аппаратное и программное обеспечение логически эквивалентны

Любая операция, выполняемая программным обеспечением, может быть реализована аппаратным обеспечением (желательно после того, как она будет про­думана). Известно выражение «Аппаратное обеспе­чение — это всего лишь окаменевшее программное обеспечение». Конечно, обрат­ное тоже верно: любая команда, выполняемая аппаратным обеспечением, может быть смоделирована программно. Решение разделить функции аппаратного и про­граммного обеспечения основано на таких факторах, как стоимость, быстродей­ствие, надежность, частота ожидаемых изменений. Существует несколько жестких правил, сводящихся к тому, что операция X должна быть реализована в аппарат­ном обеспечении, а операцию Y нужно программировать. Эти решения меняются в зависимости от тенденций экономического и технологического развития.

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

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

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

В 50-е годы было построено несколько трехуровневых компьютеров. В 60-х годах число таких компьютеров значительно увеличилось. К 70-м годам идея о том, что написанная программа сначала должна интерпретироваться микропрограммой, а не выполняться непосредственно электроникой, стала преобладающей.

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

В те времена, когда компьютеры только появились, принципы работы с ними сильно отличались от современных. Одним компьютером пользовалось большое количество людей. Рядом с компьютером лежал листок бумаги, и если программист хотел запустить свою программу, он записывался на какое-то определенное вре­мя. В назначенное время программист направлялся в ком­нату, где стоял компьютер, с пачкой перфокарт (которые тогда служили средством ввода) в одной руке и хорошо заточенным карандашом в другой. Каждая перфо­карта содержала 80 колонок; на ней в определенных местах пробивались отвер­стия. Войдя в комнату, программист вежливо просил предыдущего программи­ста освободить место и приступал к работе.

Если он хотел запустить программу на языке FORTRAN, ему необходимо бы­ло пройти следующие этапы:

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

2. Он помещал стопку карточек со своей программой, написанной на языке FORTRAN, в считывающее устройство и нажимал кнопку «Продолжить». Программа считывалась.

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

4. В конце концов трансляция завершалась. Программист часто становился очень нервным, потому что если компилятор находил ошибку в программе, ему приходилось исправлять ее и начинать процесс ввода программы заново. Если ошибок не было, компилятор выдавал в виде перфокарт программу на машинном языке.

5. Тогда программист помещал эту программу на машинном языке в устройство считывания вместе с пачкой перфокарт из библиотеки подпрограмм и загру­жал обе эти программы.

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

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

В 60-е годы попытались ускорить дело, автоматизировав работу опе­ратора. Программа под названием операционная система загружалась в компь­ютер на все время его работы. Программист приносил пачку перфокарт со спе­циализированной программой, которая выполнялась операционной системой.

Операционная система считывала перфокарту *JOB и использовала содержа­щуюся на ней информацию для учета системных ресурсов (звездочка ставилась, чтобы отличать перфокарты с управляющей программой от перфокарт с данны­ми). Затем операционная система считывала перфокарту *FORTRAN, которая представляла собой команду для загрузки компилятора FORTRAN с носителя (например. магнитной ленты). После этого компилятор считывал и компилировал программу, написан­ную на языке FORTRAN. Как только компилятор заканчивал работу, операци­онная система считывала перфокарту *ДАННЫЕ — команду по выполнению транслированной программы с использованием перфокарт данных.

Операционная система была придумана для того, чтобы автоматизировать ра­боту оператора (отсюда и название), но это — не единственное ее преимущество. Создание операционной системы было первым шагом в развитии нового вирту­ального компьютера. Перфокарту *FORTRAN можно рассматривать как виртуаль­ную команду к компилятору, а перфокарту "ДАННЫЕ — как виртуальную ко­манду для выполнения программы. И хотя этот уровень состоял всего из двух команд, он стал первым шагом в развитии виртуальных компьютеров.

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

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

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

2.7. Смещение функциональности на уровень микрокода

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

2.8. О терминах "архитектура и структура" компьютера

При описании компьютеров принято различать их архитектуру и структуру.

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

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

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

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

В число характеристик архитектуры входят:

- набор машинных команд;

- форматы и представление данных;

- методы адресации памяти;

- механизм обращения к средствам ввода-вывода и ряд других.

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

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

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

История развития вычислительной техники и современная практика проек­тирования компьютеров свидетельствуют о том, что разделение между структурной организацией и архитектурой имеет отнюдь не академический ин­терес. Многие фирмы — производители компьютерного оборудования предлага­ют на рынках целые семейства компьютеров, все члены которого имеют единую архитектуру, но отличаются структурной организацией. В результате разные модели семейства имеют разную цену и производительность. Опыт разработки семейств компьютеров показал, что архитектура может быть довольно консерва­тивной и сохраняться на протяжении длительного времени, в то время как структурная организация быстро изменяется вслед за изменениями в технологии производства отдельных компонентов системы. Прекрасным примером тому мо­жет служить история персональных компьютеров. Архитектура IA-32, впервые воплощенная в процессоре Intel 80386 в 1985 г. и сегодня реализуется во всех процессорах этой фирмы.

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

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  




Подборка статей по вашей теме: