Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Arkhitektura_IS.doc
Скачиваний:
9
Добавлен:
15.05.2015
Размер:
406.53 Кб
Скачать

48

Литература

  1. Введение. Краткая история развития ЭВМ. Общие сведения об архитектуре ЭВМ. Классифиация ЭВМ по архитектурным особенностям (

Литература:

  1. Бройдо В.Л., Ильина О.П. Архитектура ЭВМ и систем: Учебник для вузов. – СПб.: Питер, 2006. – 718 с.: ил.

  2. Хорошевский В.Г. Архитектура вычислительных систем: Учеб. пособие для вузов. – М.: Изд-во МГТУ им. Н.Э. Баумана, 2005. – 512 с.: ил.

  3. Королев Л.Н. Архитектура электронных вычислительных машин – М., Научный мир, 2005, 272 с., 65 илл.

  4. Assembler/ В. Юров. – СПб: Питер, 2001. – 624 с.: ил.

  5. Пирогов В.Ю. Ассемблер. Учебный курс. – 2-е изд., перераб. и доп. – СПБ.: БХВ-Петербург, 2003. – 1056 с.: ил.

  6. Юров В.И. Assembler. Практикум. 2-е изд. – СПб.: Питер, 2006 – 399 с.: ил.

  7. Гук М. Аппаратные средства IBM PC. Энциклопедия. – СПб: Питер, 2001. – 816 с.: ил.

  8. Гук М., Юров В. Процессоры Pentium 4. Athlon и Duron. – СПб.: Питер, 2001. – 512 с.: ил.

Введение.

Что такое ЭВМ?

Не калькулятор. Вычисление. Вычислимость. Тесно связана с понятием алгоритма.

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

Что же такое алгоритм?

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

Алгоритмы служат для того, чтобы решать определенные задачи.

Например, рецепт приготовления пиццы – это алгоритм для повара. Цель в этом случае – приготовление пиццы. Вид алгоритма зависит от того, для кого он формулируется.

Возьмем последовательность действий, состоящую ровно из одного действия: приготовить пиццу. Является ли это алгоритмом?

Каждое действие этого алгоритма (а оно одно!) понятно опытному повару, который знает, как приготовить пиццу, следовательно, для него эта последовательность действия, состоящая лишь из одного действия, является алгоритмом. Но, например, для меня это не является алгоритмом. Я не знаю как выполнить действие «приготовить пиццу». Для того, чтобы достигнуть цели создать пиццу мне нужен более подробный алгоритм ее приготовления. Например, действия что то взять с чем то перемешать, что то держать под огнем столько то минут, я знаю как и могу выполнить. Следовательно, для меня рецепт приготовления пиццы станет алгоритмом только тогда, когда я буду понимать как делать каждый его пункт.

В математике точное понятия алгоритма вводится через понятие универсальной машины Тьюринга. Которая является моделью практически всех современных ЭВМ. Алгоритм с точки зрения математики – это программа для этой машины. Подробно с математическим понятием алгоритма вы ознакомитесь в курсе «теория алгоритмов». Вообще говоря, это очень серьезная, фундаментальная наука, имеющая огромный практический смысл. Вы, наверное, уже знаете, что классическая физика запрещает создание вечных двигателей. И мы теперь знаем, что вечный двигатель на практике не создать. Теория алгоритмов, например, доказывает существование некоторых алгоритмически неразрешимых задач. Например, там доказано, что нельзя создать программу, которая бы определяла алгоритмическую эквивалентность двух других программ. То есть невозможно в принципе написать, например, на языке Паскаль (или Си или Джава) такую программу, которая бы считывала исходные тексты двух других программ, анализировала их и выдывала, эквивалентны они или нет, то есть дают ли они одинаковые выходные данные над одинаковыми входными. Это не проще, чем создать вечный двигатель. Хотя попытки написать такую программу были. То есть теория алгоритмов нужна, как минимум, затем, чтобы не тратить время на попытки решения принципиально нерешаемых задач. Но все эти вопросы вы будете рассматривать в курсе теории алгоритмов.

Сейчас же вам достаточно такого определения – алгоритм - это последовательность действий компьютера, при котором каждое такое действие он может выполнить.

Какие же действия может выполнять компьютер?

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

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

Итак, как бы не выглядело в конечном счете то, что делает компьютер – это всего лишь некоторые довольно простые манипуляции с нулями и единичками. Рассмотрению этих простых манипуляций (машинных инструкций) будет посвящена важная часть нашего курса.

На заре компьютерной техники программист, чтобы добиться от компьютера своей цели, формулировал последовательность действий (алгоритм) как раз в терминах этих элементарных операций. Это довольно трудоемко. Поэтому разрабатывались специальные программы (алгоритмы), упрощающие этот процесс. В настоящее время уже мало кто общается с компьютером на его «родном» языке – языке элементарных его операций. 90% пользователей компьютера сейчас вообще даже не догадываются об устройстве и принципах работы компьютера.

Написание программы действий компьютера (программы) на языке его элементарных операций (машинных инструкций) называется низкоуровневым программированием, программированием в машинных кодах или программированием на языке Ассемблер. Вы уже, наверное, имели дело с так называемым высокоуровневым программированием – составление программ (последовательности действий) для компьютера на языках высокого уровня (Паскале, Си, Джава и т.п.). В этом случае Вы пишете программу на этом языке, а переводом Вашей программы на низкоуровневый язык занимается специальная программа – компилятор.

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

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

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

Большинство современных ЭВМ основаны на принципах, выдвинутых Джоном фон-Нейманом в 1945 г.

За основную долю работ по обработке информации – вычислительный процесс отвечает центральный процессор, который состоит из УУ и АЛУ.

В основу работы ЭВМ положены следующие принципы:

    1. Программное управление работой.

Программы состоят из отдельных шагов – команд (инструкций). То есть программа это последовательность шагов, необходимая для реализации алгоритма.

Этапы цикла выполнения инструкций:

1. Процессор выставляет число, хранящееся в регистре счётчика команд, на шину адреса, и отдаёт памяти команду чтения;

2. Выставленное число является для памяти адресом; память, получив адрес и команду чтения, выставляет содержимое, хранящееся по этому адресу, на шину данных, и сообщает о готовности;

3. Процессор получает число с шины данных в устройство управления (УУ), интерпретирует его как команду (машинную инструкцию) из своей системы команд и исполняет её (для этого, в зависимости от того, что это за команда, ему могут понадобятся данные из регистров или основной памяти, если это так, то процессор инициирует их получение, они помещаются в АЛУ);

4. Если последняя команда не является командой перехода, процессор увеличивает на единицу (в предположении, что длина каждой команды равна единице, если нет, то на длину команды) число, хранящееся в счётчике команд; в результате там образуется адрес следующей команды;

5. Снова выполняется п. 1.

Данный цикл выполняется неизменно, и именно он называется процессом (откуда и произошло название устройства).

Во время процесса процессор считывает последовательность команд (программу), содержащихся в памяти, и исполняет их. Очерёдность считывания команд изменяется в случае, если процессор считывает команду перехода — тогда адрес следующей команды может оказаться другим. Условный переход позволил легко организовать в программе циклы, итерационные процессы и т.п. Другим примером изменения процесса может служить случай получения команды останова или переключение в режим обработки аппаратного прерывания.

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

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

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

    1. Принцип хранимой программы. Согласно этому принципу программа хранится вместе с исходными данными в одной и той же оперативной памяти.

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

  1. Использование двоичной системы счисления для представления информации.

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

  1. Иерархичность запоминающих устройств (ЗУ).

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

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

Лекция 2.

Под архитектурой ЭВМ понимают ее внутреннюю организацию, состав различных ее устройств, логику их работы и их взаимодействие. Уровень детализации сведений об архитектуре может быть разным и зависит от категории пользователей ЭВМ. Лицам, использующим ЭВМ как игровой автомат, нужен небольшой объем сведений о своем компьютере – частота процессора, объем оперативной и дисковой памяти, марка видеоадаптера и т.п. Системному программисту, конечно, понадобятся более детальные сведения об архитектуре ЭВМ. Чем более детальные представления имеет пользователь об архитектуре ЭВМ, тем более эффективно он может использовать ее возможности. Глубокие знания архитектуры ЭВМ нужны не только инженеру-схемотехнику, проектирующему ее блоки, или системному программисту, разрабатывающему программное обеспечение для взаимодействия этих блоков, но и любому более-менее серьезному пользователю ЭВМ.

Классификация архитектур ВС на основе потоков команд и данных была предложена в 1966 г. Профессором Стэнфорда М.Д. Флинном. В соответствии с ней выделяют четыре типа архитектур:

  1. SISD (Single Instruction stream Single Data stream) или ОКОД

Схема функционирования проста:

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

  1. SIMD

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

  1. MIMD

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

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

  1. MISD

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

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

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

Лекция 3.

Центральным устройством ЭВМ является микропроцессор. Он управляет работой всех остальных ее блоков, а также осуществляет арифметические и логические операции над числами.

Современные ЦП, выполняемые в виде отдельных микросхем (чипов), называют также микропроцессорами. Сейчас не микропроцессорных ЦП практически не осталось, поэтом ЦП и микропроцессор сейчас почти одно и тоже. Исключения составляют суперкомпьютеры, но о них речь пойдет позже.

В состав микропроцессора входят следующие компоненты:

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

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

Арифметико-логическое устройство (АЛУ) – выполняет все арифметические и логические операции над данными.

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

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

Интерфейс – совокупность средств связи устройств компьютера, обеспечивающая их эффективное взаимодействие.

Порты ввода-вывода – это элементы интерфейса ЭВМ, через которые ММП обменивается информацией с другими устройствами.

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

Под микроархитектурой МП понимается внутренняя реализация этой программной модели. Для одной и той же архитектуры применяются различные микроархитектурные реализации.

Сейчас существует множество архитектур процессоров, которые можно разделить на две категории RISC и CISC:

RISC (Reduced Instruction Set Computer) – МП с сокращенной системой команд. Имеется набор однородных регистров универсального назначения. Система команд отличается простотой, коды инструкций имеют четкую структуру. В результате чего аппаратная реализация такой архитектуры позволяет с небольшими затратами декодировать и исполнять эти инструкции за минимальное (в пределе 1) число тактов. При необходимости выполнения более сложных программ в МП производится их сборка из более простых.

Такую архитектуру имеют, например, процессоры PowerPC (которые используются, в частности в ЭВМ типа Macintosh).

CISC (Complete Instruction Set Computer) – МП с полным набором инструкций. Состав и назначение регистров существенно неоднородны, широкий набор команд, что усложняет декодирование инструкций, на что расходуется аппаратные ресурсы. Возрастает число тактов, необходимых для выполнения инструкций.

К этой архитектуре относятся популярные среди ПЭВМ процессоры x86, которые являются основой семейства компьютеров IBM PC.

Эти процессоры имеют самую сложную в мире систему команд. Насколько это хорошо или плохо – вопрос спорный. Так получилось, что первые процессоры этого семейства (8086 и 8088) имели именно CISC архитектуру и для совместимости с уже написанным для IBM PC ПО, следующие процессоры также ее поддерживали. Однако в процессорах этого семейства, начиная с 486, применяется комбинированная архитектура: CISC-процессор имеет RISC-ядро. То есть на уровне программной модели эти процессоры представляют собой CISC архитектуру, а микроархитектура этих процессоров близка к RISC. Такая организация, с одной стороны, позволяет сохранить совместимость с нижними моделями семейства, а с другой, позволяет использовать преимущества быстродействия RISC архитектуры. Физически это выглядит так: сложные CISC-инструкции, задаваемые программистом, разбиваются сначала на последовательности более простых RISC-микроинструкции, которые и исполняются микропроцессором.

Архитектура IA-32.

Эту архитектуру поддерживают 32-разрядные процессоры семейства x86, начиная с Intel386. Она полностью совместима с предшествующей 16-разрядной архитектурой процессоров 8086\88 и 80286.

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

1. Real Address mode (Режим реальной адресации или реальном режим), полностью совместимом с 8086. В этом режиме возможна адресация до 1 Мбайта физической памяти (шина адреса в 16-битных процессорах этой архитектуры была 20-битной).

2. Protected Virtual Address Mode (защищенный режим виртуальной адресации или просто защищенный режим). В этом режиме МП позволяет адресовать до 4Гбайт физической памяти. Помимо этого предусмотрены аппаратные средства (блок управления памятью), которые позволяют отображать на эти 4ГБайта до 64Тбайт виртуальной памяти.

Одним из вариантов работы защищенного режима является Virtual 8086 Mode – режим виртуального процессора 8086. В этом режиме псевдопараллельно может выполняться несколько программ, как будто у нас имеется несколько процессоров, каждый из которых работает со своей оперативной памятью и решает свою задачу. Попытки выполнения «чужих» команд, выход за рамки «своей» памяти контролируется системой защиты.

Другим вариантом работы защищенного режима является так называемый неофициальный режим Big Real Mode, который позволяет адресоваться ко всему 4Гб пространству памяти одной программе. То есть получается как будто реальный режим, но с возможностью доступа ко всему пространству памяти.

Начиная с процессоров 486 процессор поддерживает особый системный режим работы System Management Mode (SMM), при котором процессор использует иное, изолированное от всех других режимов, пространство памяти. Этот режим используется в служебных и отладочных целях.

Особенности представления информации:

Числовая информация кодируется в двоичной или двоично-десятичной системах счисления. Для кодирования буквенной и символьной информации и при вводе-выводе информации используются специальные коды представления информации – коды ASCII.

Целочисленные блоки АЛУ 32-рарзядных процессоров х86 могут работать со следующими форматами данных:

Бит (Bit) – единица информации.

Битовое поле (Bit Field) – последовательность до 32 смежных бит

Битовая строка (Bit String) – последовательность до 4 Гбит смежных бит

Байт – 8 бит.

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

Числа без знака:

Байт\слово\двойное слово\учетверенное слово (Unsigned Byte/Word/Double Word/Quad Word), соответственно 8\16\32\64 бит

Целые числа со знаком:

Байт\слово\двойное слово\учетверенное слово (Integer Byte/Word/Double Word/Quad Word), соответственно 8\16\32\64 бит

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

Двоично-десятичные числа (BCD – Binary Coded Decimal)

8 – разрядные упакованные (Packet BCD)

Кодируют два десятичных разряда в одном байте

8 – разрядные неупакованные (Unpacked BCD)

Кодируют один десятичный разряд в одном байте (биты 4-7 должны быть пустыми для операций умножения\деления)

Указатели:

Длинный указатель (48 бит) – 16 битный сегмент и 32 битное смещение;

Короткий указатель – 32 битное смещение;

Указатель (32 бит) – 16 битный сегмент и 16 битное смещение.

Блоки FPU работают со следующими данными:.

Двоичные числа с плавающей запятой:

Одинарной точности (Single Precision) – 32 бит: 23 бит мантисса, 8 бит порядок, 1 бит знак.

двойной точности (Double Precision) – 64 бит: 52 мантисса, 11 порядок, 1 знак

повышенной точности (Extended Precision) – 80 бит: 64 мантисса, 15 порядок, 1 знак.

BCD-числа переменной длинны:

Упакованный:

Каждый десятичный разряд числа занимает 4 бита (полубайт), знак числа кодируется в крайнем правом полубайте (1100 – «+», 1101 – «-») (или оба полубайта используются для кодирования цифр десятичного разряда)

Неупакованный:

Для каждого десятичного разряда отводится по целому байту, при этом старшая его часть заполняется кодом 0011. Старший полубайт самого правого байта используется для кодирования знака числа.

Различные блоки расширения, такие как MMX, SSE и т.п. имеют некоторые свои форматы данных.

Лекция 4.

Регистры процессора.

Регистры процессора — сверхбыстрая память внутри процессора, предназначенная прежде всего для хранения промежуточных результатов вычисления (регистр общего назначения/регистр данных) или содержащая данные, необходимые для работы процессора — смещения базовых таблиц, уровни доступа и т. д. (специальные регистры).

Доступ к значениям, хранящимся в регистрах как правило в несколько раз быстрее чем доступ к ячейкам оперативной памяти (даже если кеш-память содержит нужные данные), но объем оперативной памяти намного превосходит суммарный объем регистров (объем среднего модуля оперативной памяти сегодня составляет 512 Мб - 1 Гб[1], суммарная «ёмкость» регистров общего назначения/данных для процессора Intel 80x86 16 битов * 4 = 64 бита (8 байтов)).

Регистры процессоров x86 подразделяются на следующие категории: