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

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

 

 








Дата добавления: 2015-09-29; просмотров: 2376;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.