Шпаргалки (двухсторонние) по курсу «Архитектура ЭВМ»
Лектор – Махортов С. Д.
© Воронеж, ВГУ - 2007
1. Понятие архитектуры ЭВМ. Языки, уровни и виртуальные машины ЭВМ, или цифровой компьютер (далее - просто компьютер) - это электронная машина, которая способна решать задачи, выполняя заданные команды.
Под архитектурой ЭВМ подразумевается совокупность логических принципов устройства и работы компьютера с точки зрения его пользователя (главным образом, программиста), включая как аппаратуру, так и применяемые программные средства.
При рассмотрении архитектуры ЭВМ применяется многоуровневый подход к организации компьютера,, согласно которому каждый новый уровень надстраивается над более низким уровнем. Известно, что на практике Компьютер понимает на всякий язык программирования, а только определенный набор команд, которые он способен распознать и выполнить. Для организации работы программ, написанной не на языке, понятном компьютеру существуют два способа: трансляция (программы называются трансляторами) – это когда программа переводится с неизвестного языка на известный компьютеру язык; интерпретация (программы называются интерпретаторами) – это когда берется последовательно каждая команда неизвестного языка, заменяется командами известного компьютеру языка и тут же выполняется.
Т. о. при использовании дополнительных программ, понимающих отличные от компьютерных языков (известных компьютеру), мя создаем как бы новый компьютер, понимающий уже не только свой язык, который принято называть виртуальной машиной. При написании программного обеспечения не обязательно знать более низкие уровни реализации того или иного языка, но для повышения свой квалификации программист должен интересоваться всеми уровнями реализации языка, на котором разрабатывает программное обеспечение. Знание основ работы самого компьютера позволяет программисту создавать более эффективные программы, а также повышает их скорость работы.
| 2. Уровни архитектуры современных уомпьютеров Архитектура большинства современных ЭВМ состоит из двух и более уровней. Мы приведем некоторую достаточно распространенную их иерархию.
-1 - уровень физических устройств, на котором находятся транзисторы, которые являются примитивами для разработчиков компьютера;
0 - цифровой логический уровень - представляет собой аппаратное обеспечение компьютера. Его электронные схемы выполняют программы, написанные на языке уровня 1. Объекты 0 уровня называются вентилями. У каждого вентиля есть одно или несколько цифровых входных данных (сигналов, представляющих 0 или 1). Вентиль вычисляет простые функции этих сигналов, такие как НЕ, И, ИЛИ. Каждый вентиль формируется из нескольких транзисторов. Несколько вентилей формируют 1 бит памяти, который может содержать 0 или 1. Биты памяти, объединенные в группы (по 16, 32 или 64), образуют регистры. Каждый регистр может содержать одно двоичное число определенного размера;
1 - микроархитектурный уровень. Здесь можно выделить совокупность нескольких регистров, которые представляют собой локальную память, а также схему АЛУ (арифметико-логическое устройство). АЛУ выполняет простые арифметические операции. Регистры вместе с АЛУ образуют тракт данных, по которому перемещаются данные. На некоторых ЭВМ работа тракта данных поддерживается особой программой, которая называется микропрограммой. Микропрограмма - это интерпретатор для команд на уровне 2. Микропрограмма выбирает команды из памяти компьютера и выполняет их одну за другой, используя при этом тракт данных;
2 - уровень архитектуры системы команд. Уровень, который поддерживает машинные команды каждого компьютера;
3 - уровнь операционной системы. Операционная система - это программа, работающая на 2-ом (иногда и на 1-ом) уровне, которая обеспечивает нормальное выполнение обычных прикладных программ. У третьего уровня есть существенные особенности: набор новых команд, называемых системными вызовами, другая организация памяти (виртуальная память), способность выполнять две и более программы одновременно, файловая система ввода-вывода и некоторые другие;
3.5 - уровнь платформо-независимых виртуальных машин. К нему относятся JVM (Java Virtual Machine) и Microsoft .NET Framework. Машины этого уровня предназначены для эффективного выполнения одних и тех же цифровых программ на различных платформах, что особенно актуально для WEB-приложений;
4 - уровень языков ассемблера - это первый из уровней, доступных для работы прикладных программистов. Главной особенностью языков этого уровня является то, что они символические, в отличие от двоичного характера языков нижних уровней. Начиная с четвертого уровня, языки содержат слова и сокращения, понятные человеку. Важное изменение также состоит в том, что команды уровней 2 и 3 обычно интерпретируются, а уровень 4 часто поддерживается трансляторами. Программа, которая выполняет такую трансляцию, называется ассемблером; (на обороте…)
| 3. Аппаратное и программное обеспечение. Роль микропрограммирования ОС Электронные схемы компьютера вместе с памятью и средствами ввода-вывода образуют аппаратное обеспечение. Оно состоит из осязаемых объектов - интегральных схем, печатных плат, кабелей, источников электропитания, запоминающих устройств и принтеров. Программное обеспечение, напротив, состоит из абстрактных алгоритмов (подробных последовательностей команд, которые описывают, как решить задачу) и их компьютерных представлений, то есть программ. Программы могут храниться на жестком, гибком, компакт-диске или других носителях, но программное обеспечение - это набор команд, составляющих программы, а не физические носители, на которых эти программы записаны.
В настоящее время сложно отделить эти два понятия друг от друга. Можно сказать, что аппаратное и программное обеспечение логически эквивалентны. Любая операция, выполняемая программным обеспечением, может быть встроена в аппаратуру. Верно и обратное: каждая команда, выполняемая аппаратным обеспечением, может быть смоделирована программой. У первых цифровых компьютеров в 1940-х годах было только 2 уровня: уровень архитектуры набора команд, на котором осуществлялось программирование, и цифровой логический уровень, который выполнял состоящие из команд программы. Схемы цифрового логического уровня были сложны для производства и ненадежны.
В 1951 году исследователь Кембриджского университета Морис Уилкс предложил идею трехуровневого компьютера. Эта ЭВМ имела встроенный неизменяемый интерпретатор (микропрограмму), выполняющий команды верхнего уровня. Аппаратное же обеспечение теперь вместо программ уровня архитектуры команд выполняло только микропрограммы с ограниченным набором более мелких команд. В связи с этим требовалось меньшее количество электронных схем, в то время - электронных ламп.
Микропрограммы разрастались, работали все медленнее, требовали большого объема памяти. В конце концов началась обратная тенденция. Исследователи осознали, что на современном этапе развития электроники с устранением микропрограммы резко сократится количество команд и компьютеры станут работать быстрее. Таким образом, в архитектуре некоторых современных компьютеров уровень микропрограммирования не используется. В ранние годя ЭВМ были большими и дорогостоящими. Для выполнения программы сначала следовало загрузить в паями специальные программы ассемблера, а только потом приступать к выполнению программы. С такими компьютерами работал специально обученный персонал – операторы ЭВМ. Для облегчения работы с компьютером была разработана специальное программное обеспечение – операционная система, которая постоянно содержалась в памяти компьютера и последовательно обрабатывала вводимые оператором пользовательские программы. Далее в 60-х годах была разработана операционная система с разделением времени, распределяющая работы с одним процессором между несколькими его пользователями, тем самым обеспечивалось быстрая обработка пользовательских программ и вывод результатов их работы.
| 4. Поколения ЭВМ. Типы компьютеров Нулевое поколение - механические компьютеры (1642-1945). Эти машины работали на основе шестеренок и ручного привода. Они выполняли небольшое количество арифметических операций.
Первое поколение - компьютеры на электронных лампах (1945-1955). Наиболее известным их создателем является один из самых знаменитых математиков Джон фон Нейман. Его проект известен сейчас как фон-неймановская вычислительная машина. Ее архитектура в значительной мере используется и сейчас. Она содержит 4 основные части: память, арифметико-логическое устройство, устройство управления, устройства ввода-вывода.
Второе поколение - ЭВМ на транзисторах (1955-1965). Транзистор был изобретен сотрудниками Bell Laboratories Джоном Бардином, Уолтером Браттейном и Уильямом Шокли.
Третье поколение - ЭВМ на интегральных схемах (1965-1980). Изобретение кремниевой интегральной схемы в 1958 году (Роберт Нойс) позволило помещать десятки транзисторов на одной небольшой микросхеме. Такие компьютеры были меньшего размера, работали быстрее и стоили дешевле своих предшественников.
Четвертое поколение – компьютеры на сверхбольших интегральных схемах – СБИС (1980 - …). Появление таких схем дало возможность размещать на одной плате сначала десятки тысяч, затем – сотни тысяч, и, наконец, миллионы транзисторов. Цены и размеры компьютеров уменьшились до такой степени, что их приобретение стало доступным не только фирмам, но и частным лицам. Наступила эра персональных компьютеров. Одной из важнейших тенденций, связанных с разработкой ЭВМ 4 поколения, является специализация, т.е. создание различных уровней архитектуры компьютера разными производителями. В настоящее время наиболее известны персональные компьютеры, однако существуют и другие типы машин. Главная тенденция их развития – способность производителей помещать все больше транзисторов на микросхему.
Можно привести следующую приблизительную классификацию современных ЭВМ.
Тип
| Порядок цен ($)
| Сфера применения
| “Одноразовые компьютеры”
| 1
| Поздравительные открытки
| Встроенные компьютеры
| 10
| Часы, автомобили, приборы
| Игровые компьютеры
| 100
| Домашние компьютерные игры
| Персональные компьютеры
| 1 000
| Настольные компьютеры
| Серверы
| 10 000
| Сетевые серверы
| Рабочие станции
| 100 000
| Мини-суперкомпьютеры
| Большие ЭВМ
| 1 000 000
| Обр-ка пакетных данных в банках
| Суперкомпьютеры
| 10 000 000
| Предсказание погоды на длит. срок
| (на обороте…)
| 5. Примеры семейств компьютеров: Pentium, UltraSPARC, picoJava Pentium.
Эта линия производится фирмой IBM на основе процессоров фирмы Intel. Все микросхемы Intel теоретически совместимы со своими предшественниками вплоть до процессора 8086, т.е. Pentium II может выполнять программы, написанные для процессора 8086. Совместимость всегда была одним из главных требований при разработке новых компьютеров IBM, чтобы покупатели могли продолжать работать со старым программным обеспечением и не тратить деньги на новое. Обратная сторона этой тенденции состоит в существенном усложнении архитектуры. Новые процессоры значительно сложнее, чем если бы они создавались заново без требования совместимости. UltraSPARC.
Первая ЭВМ этой архитектуры была создана в 1981 г. аспирантом Стэнфордского университета Энди Бехтольсхаймом с целью переноса популярной тогда операционной системы UNIX с PDP-11 и VAX на персональные компьютеры.
В то время как предыдущие машины работали только с символьными и числовыми данными, UltraSPARC с самого начала был предназначен для работы с мультимедиа. Помимо 64-битной архитектуры, появились 23 новые команды, в том числе команды для упаковки и распаковки пикселов из 64-битных слов, масштабирования и вращения изображений, перемещения блоков, а также для компрессии и декомпрессии видео в реальном времени.
UltraSPARC предназначался для web-серверов с десятками процессоров и большой физической памятью. Тем не менее некоторые версии UltraSPARC могут использоваться и в ноутбуках. picoJava.
В середине 90-х годов фирмой Sun Microsystems был создан язык программирования Java. Это объектно-ориентированный язык, основанный на C++, с усиленными ограничениями в целях безопасности. Основное его назначение - разработка двоичных программ, которые могут вызываться пользователями через Интернет и загружаться как часть web-страниц. Однако Java может применяться и при решении других прикладных задач.
Чтобы разрешить проблему совместимости (ведь в сети работают различные компьютеры), компания Sun разработала новую виртуальную машину JVM (Java Virtual Machine). Память у этой машины состоит из 32-битных слов, машина поддерживает 226 простых команд, но выполнение некоторых из них требует большого количества циклов обращения к памяти.
| 6. Общие функции и свойства процессоров. Архитектуры CISC и RISC Центральный процессор (или просто процессор, если это не вызывает неоднозначностей) – главная компонента компьютера. Он выполняет программы, находящиеся в основной памяти. Программа состоит из отдельных команд. Процессор выбирает каждую команду из памяти, определяет ее тип и выполняет ее. Компоненты компьютера связаны друг с другом шиной. Она представляет собой набор параллельно соединенных проводников (проводов), по которым передаются данные и сигналы управления. Шины бывают внешними (связывают процессор с памятью и внешними устройствами) и внутренними (связывают элементы процессора).
Процессор состоит из нескольких частей. Блок управления осуществляет выборку команд из памяти и определение их типов. Арифметико-логическое устройство (АЛУ) выполняет арифметические и логические операции. Центральный процессор содержит также внутреннюю память для хранения промежуточных результатов и некоторых команд управления. Она состоит из нескольких регистров, каждый из которых имеет свое предназначение. Содержимое регистров считывается и записывается с высокой скоростью.
Среди регистров обычно выделен счетчик команд. Он указывает на следующую выполняемую команду. Существует также регистр команд, который содержит очередную выполняемую команду. У большинства компьютеров имеются и другие регистры, одни из которых многофункциональны, а другие выполняют специфические функции (например, указатель стека).
Совокупность элементов процессора, по которым при выполнении программы перемещаются данные, принято называть трактом данных. Для процессора фон-неймановской архитектуры он состоит из регистров, АЛУ и нескольких соединяющих шин. Операнды (содержимое регистров или основной памяти) поступают во входные регистры АЛУ, над ними выполняется операция (сложение, вычитание, …), после чего результат помещается в выходной регистр АЛУ. Далее он может быть записан в регистр процессора или в память (обычно – на место одного из операндов). Этот процесс называется циклом тракта данных. Способы указания операндов в командах называются методами адресации.
Большинство команд можно разделить на два типа: “регистр-регистр” и “регистр-память” по признакам исходного расположения их операндов (методам адресации).
Центральный процессор выполняет типичную команду за несколько шагов:
на основе счетчика команд выбирает очередную команду из памяти и помещает ее в регистр команд;
меняет содержимое счетчика команд (чтобы он указывал на следующую команду в памяти);
определяет тип выбранной команды;
определяет местонахождение ее операндов;
при необходимости переносит их в собственные регистры;
выполняет операцию;
при необходимости записывает результат в регистр или память;
переходит к шагу 1 для выполнения следующей команды.
| | |