Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801), страница 20
Текст из файла (страница 20)
Кзш позволяет компьютеру работать так, как если бы скорость оперативной памяти была такой же, как скорость центрального процессора. Даже такой небольшой объем кэша, как 32 Кбайт, позволяет увеличить эффективность работы процессора до 95 Ж, то есть поч~и до такого уровня, как если бы скорость оперативной памяти совпадала со скоростью центрального процессора. Операционная среда. Операционная среда компьютера обычно состоит из набора внешних запоминаюших устройств н устройств ввода-вывода. Эти устройства являются средством связи компьютера с внешним миром, и любое общение с компьютером возможно лишь через его операционную среду. Между различнымии типами внешних устройств, составляющих его операционную среду, су|цествуют аппаратные различия, обусловленные различным их назначением или скоростью доступа к ним.
Например, существуют быстрые запоминающие устройства (расширенная память), устройства хранения со средней скоростью доступа (гибкие диски и компакт-диски), медленные запоминаюшие устройства (ленты), а также устройства ввода-выволз (устройства чтения данных, принтеры, мониторы, линии передачи данных). Альтернативная архитектура компьютера.
Аппаратная часть компьютера может быть организована различиымн способами. Описанную выше архитектуру обычно называют аркитектурайфон Неймана. Но существуют и другие варианты, Архитектура фон Неймана. Компьютер фон Неймана назгявается так в честь математика Джона фон Неймана. Основные принципы устройства этого компьютера были разработаны им в начале 1940-х гг, как часть проекта создания одной из первых электронно-вычислительных машин ЕХ1АС. В варианте фон Неймана компьютер состоял нз небольшого центрального процессора (ЦП), который выполнял простейшие операции, осуществлял управление последовательностью действий н включал в себя регистры для хранения результатов простейших операций; также имелась оперативная память и была предусмотрена возможность получения, хранения и обмена данными в форме слов между ЦП и оперативной памятью.
До сих пор большинство компьютеров создается на основе этой модели, хотя для улучшения качества работы были сделаны такие дополнения, как кзш, виртуальная память и увеличение количества регистров ЦП. Мультипроцессоры. Как уже было сказано, основная проблема компьютера фон Неймана заключается в большой несбалансированности скоростей доступа к данным, хранящимся на внешних запоминающих устройствах, и в быстрых регистрах 2.1.
Структура и принципы работы компьютера 71 центрального процессора. Альтернативный путь решения атой проблемы заключается в использовании нескольких ЦП в олной системе. Такие мулылипроцессорные системы применяются уже более 30 лет. Объединение нескольких сравнительно недорогих процессоров с общей оперативной памятъю, запоминающими устройствами и аппаратурой ввола-вывода позволяет организовать достаточно эффективную систему. Произволительность этой системы возрастает за счет того, что каждый из этих процессоров выполняет какую-то определенную программу, таким образом олновременно выполняется несколько программ. По большей части эти усовершенствования не оказывают влияния на разработку языков программирования, так как каждый процессор работает только с одной программой, независимой от лругих. Тем не менее развитие языков программирования и компьютерной архитектуры идет в направлении создания таких систем, в которых программы, выполняемые на нескольких компьютерах, могут взаимодействовать друг с другом.
Мы обсудим альтернативные варианты компьютерной архитектуры, которые несколько отличаются от неймановской, в разделе 11.3.2, а также рассмотрим, как зти изменения архитектуры влияют на разработку языков программирования и их трансляцию. Состояния компьютера. Понимание статической организиции компъютера в терминах данных, операций, управляющих структур и т. п. представляет только часть общей картины. Для полного понимания необхолимо также ясно представлять себе динамику работы компьютера во время въшолнения программы.
То есть нужно знать, каково содержимое различных компонентов памяти в начале выполнения, какова последовательность выполнения различных операций, как различные элементы данных изменяются в процессе выполнения программы и каков конечный результат работы программы. Для наблюдения за динамикой работы компьютера удобно использовать понятие состояние компьюлгера. Рассмотрим процесс выполнения программы как последовательное прохождение компьютера через рял состояний. Каждое состояние характеризуется содержимым оперативной памяти, регистров и внешней памяти в определенные моменты времени в процессе выполнения программы. Исходное состояние этих областей памяти определяет соответственно исходное состояние компьютера. Кажлый шаг при выполнении программы преобразует существуюгцее состояние компьютера в некоторое новое состояние посредством изменения содержимого одной или нескольких указанных областей памяти.
Это преобразование называется смелой состояний. Когда выполнение программы заканчивается, окончательное содержимое этих областей памяти определяет конечное состояние компьютера. Таким образом, выполнение программы можно рассматривать как процесс последовательной смены состояний компьютера. 2.1.2. Программно-аппаратный компьютер Ранее мы определили компьютер как интегрированный набор алгоритмов и структур данных, способный хранить и выполнять программы. Программы, выполняемые каким-либо компьютером, коне <но, написаны ца машинном языке этого компьютера.
Обычно считается, что машинный язык — это язык низкого уровня с простыми форматами команд и операциями типа «сложить два числа» и «загру- 72 Глава 2. Влияние машинной архитектуры вить в регистр содержимое области памяти». Но в действительности машинный язык не должен быть непременно языком низкого уровня. Можно выбрать любой язык (напрнмер, РОКТВАХ или МВ) и точно определить набор структур данных и алгоритмов, которые залают правила выполнения любой программы, написанной на этом языке.
Тогда для организованного таким образом компьютера машинным языком будет выбранный язык программирования, Каждая программа определяет исходное состояние компьютера, а правила выполнения программы определяют последовательность смены состояний, через которые пройдет компьютер в процессе ее выполнения. Результат выполнения программы с>пределяется конечным состоянием компьютера, когда выполнение программы закончится (если это вообще произойдет). Имея точное определение того, что такое компьютер, всегда можно сконструировать аппаратное устройство, машинный язык которого булет в точности тем самым выбранным языком программирования.
Это утверждение остается в силе даже для таких языков высокого уровня, как С, Ада и др. (например, компьютер В5500 фирмы Вцггоцй)>з, упомянутый в разделе 1.2.1). Это утверждение основывается на важном основополагающем принципе компьютерного конструирования; любой точно определенный алп>ритм или структура данных могут быть реализованы в аппаратуре. Поскольку компьютер — это просто набор алгоритмов и структур данных, то можно прелположить, что его аппаратная реализация возможна независимо от сложности компьютера илн используемого машинного языка. На практике в качестве машинных языков обычно используются языки низкого уровня из тех соображений, что в противном случае (если взять, например, в качестве машинного язык С или Ада) компьютер был бы гораздо сложнее устроен и, следовательно, стоил бы значительно дороже.
Кроме того, такой компьютер в большинстве случаев оказался бы гораздо менее гибким средством решения задач программирования, чем компьютер с машинным языком низкого уровня. Аппаратный компьютер с универсальным набором команд низкого уровня, простой, неструктурированной оперативной памятью и набором регистров может быть сравнительно аффективно запрограммирован под любой тип из достаточно широкого класса компьютеров. Об этом пойдет речь в следующих разделах. Иногда создаются компьютеры с машинными языками высокого уровня, но обычно предпочитают другие (не аппаратные) способы реализации этих языков. Обычной альтернативой строго аппаратной реализации компьютера является прогр шо-аппаратный компьютер, который моделируется микропрограммой, выполняемой на специальном микропрограгсмирсуемом компьютере.
Машинный язык этого компьютера состоит из набора микрокоманд очень низкого уровня, которые обычно реализуют простые передачи данных между оперативной памятью и быстрыми регистрами, непосрелственно между самими регистрами и из одних регистров в другие через такие обрабатывающие устройства, как сумматоры и умножителп. На основе этого простого набора команд создается специальная микропрограмма, которая определяет цикл интерпретации и простейшие операции желаемого компьютера, Эта микропрограмма моделирует операцию желаемого компьютера на микропрограммируемом хост-компьютере.
Обычно эта микропрограмма размещается в специально отведенной для нее памяти, доступной только для чтения, на хост-компьютере и выполняется на нем с большой скоростью. Концеп- 2.1. Структура и принципы работы компьютера 73 ция микропрограммного моделирования, по существу, аналогична технологии моделирования при помощи программного обеспечения, которое мы будем обсуждать в следующем разделе.