ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 13.01.2021

Просмотров: 253

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

4


Лекция 1


1. Обзор архитектуры ЭВМ


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

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

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


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


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

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

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

На практике используются оба эти метода, а также их комбинации.

При решении задачи пользователю удобнее представить себе существование гипотетического компьютера или виртуальной машины, для которой машинным языком является Я1, чем думать о трансляции или интерпретации. Назовем такую ма­шину М1, а виртуальную машину с языком Я0 - М0. Машина М1 - это М0, дополненная соответствующей программой (транслятором или интерпретатором). Таким образом, можно создавать новые программы для виртуальных машин, как будто эти машины действительно существуют.


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

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

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

1.2. Современные многоуровневые компьютеры


Архитектура большинства современных ЭВМ состоит из двух и более уровней. Мы приведем некоторую достаточно распространенную их иерархию.

Для полноты картины можно упомянуть о существовании уров­ня, расположенного ниже 0. Этот уровень находится в сфере электронной техники и не рассматривается в данном курсе. Он называется уровнем физических устройств. На этом уровне находятся транзисторы, которые являются примитивами для разработчиков компьютеров. Объяснение работы транзисторов - задача физики.

Уровень 0 - цифровой логический уровень - представляет собой аппаратное обеспечение компьютера. Его электронные схемы выполняют программы, написанные на языке уровня 1. Объекты 0 уровня называются вентилями. Хотя вентили состоят из аналоговых компонентов, таких как транзис­торы, они могут быть достаточно точно смоделированы как цифровые (дискретные) средства. У каждого вентиля есть одно или несколько цифровых входных данных (сигналов, представ­ляющих 0 или 1). Вентиль вычисляет простые функции этих сигналов, такие как НЕ, И, ИЛИ. Каждый вентиль формируется из нескольких транзисторов. Несколько вентилей формируют 1 бит памяти, который может содержать 0 или 1. Биты памя­ти, объединенные в группы (по 16, 32 или 64), образуют регистры. Каж­дый регистр может содержать одно двоичное число определенного размера.


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

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

Третий уровень называется уровнем операционной системы. Операционная система - это программа, работающая на 2-ом (иногда и на 1-ом) уровне, которая обеспечивает нормальное выполнение обычных прикладных программ. При построении третьего уровня архитектуры для различных компьютеров имеется больше вариантов, чем при построении первого и второго. У третьего уровня есть существенные особенности: набор новых команд, называемых системными вызовами, другая организация памяти (виртуальная память), способность выполнять две и более программы одновременно, файловая система ввода-вывода и некоторые другие.

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

Следующий уровень еще не упоминается в классических книгах, посвященных архитектуре, но уже занимает достойное место в многоуровневой архитектуре современных ЭВМ. Мы пока присвоим ему номер 3.5 и назовем уровнем платформо-независимых виртуальных машин. К нему относятся JVM (Java Virtual Machine) и Microsoft .NET Framework. Последняя, правда, на данный момент реализована лишь над уровнем операционной системы Windows, однако спроектирована с целью распространения не только на другие операционные системы, но и мобильные устройства. Машины этого уровня предназначены для эффективного выполнения одних и тех же цифровых программ на различных платформах, что особенно актуально для WEB-приложений.


Четвертый уровень - уровень языков ассемблера - это первый из уровней, доступных для работы прикладных программистов. Главной особенностью языков этого уровня является то, что они символические, в отличие от двоичного характера языков нижних уровней. Начиная с четвертого уровня, языки содержат слова и сокращения, понятные человеку. Четвертый уровень представляет собой символическую форму одного из языков более низкого уровня (3-3.5). Важное изменение также состоит в том, что команды уровней 2 и 3 обычно интерпретируются, а уровень 4 часто поддерживается трансляторами. Программа, которая выполняет такую трансляцию, называется ассемблером.

Пятый уровень состоит из языков, разработанных для прикладных про­граммистов. Такие языки называются языками высокого уровня. Существуют сотни языков высокого уровня. Наиболее известные среди них - BASIC, C++, Pascal, Java, C#, LISP и Prolog. Программы, написанные на этих языках, обычно транслиру­ются на уровень 3, 3.5 или 4. Трансляторы, которые обрабатывают эти программы, на­зываются компиляторами. Важным языком является также интерпретируемый язык SQL, предназначенный для формирования запросов к базам данных. К данному уровню часто относят также такие специализированные системы как интерпретаторы символьной математики.

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



Смотрите также файлы