Микропроцессоры и МПС. Лекции


Лекция 1. Введение.
Основные понятия и характеристики архитектуры микропроцессоров
Микропроцессор (МП) - это программноуправляемое устройство, которое предназначено для обработки цифровой информации и управления процессом этой обработки и выполнено в виде одной или нескольких больших интегральных схем (БИС).
Понятие большая интегральная схема в настоящее время четко не определено. Ранее считалось, что к этому классу следует относить микросхемы, содержащие более 1000 элементов на кристалле. И действительно, в эти параметры укладывались первые микропроцессоры. Например, 4-разрядная процессорная секция микропроцессорного комплекта К584, выпускавшегося в конце 1970-х годов, содержала около 1500 элементов. Сейчас, когда микропроцессоры содержат десятки миллионов транзисторов и их количество непрерывно увеличивается, под БИС будем понимать функционально сложную интегральную схему.
Микропроцессорная система (МПС) представляет собой функционально законченное изделие, состоящее из одного или нескольких устройств, основу которой составляет микропроцессор.
Микропроцессор характеризуется большим количеством параметров и свойств, так как он является, с одной стороны, функционально сложным вычислительным устройством, а с другой - электронным прибором, изделием электронной промышленности. Как средство вычислительной техники он характеризуется прежде всего своей архитектурой, то есть совокупностью программно-аппаратных свойств, предоставляемых пользователю. Сюда относятся система команд, типы и форматы обрабатываемых данных, режимы адресации, количество и распределение регистров, принципы взаимодействия с оперативной памятью и внешними устройствами (характеристики системы прерываний, прямой доступ к памяти и т. д.). По своей архитектуре микропроцессоры разделяются на несколько типов (рис. 1.1).
Универсальные микропроцессоры предназначены для решения задач цифровой обработки различного типа информации от инженерных расчетов до работы с базами данных, не связанных жесткими ограничениями на время выполнения задания. Этот класс микропроцессоров наиболее широко известен. К нему относятся такие известные микропроцессоры, как МП ряда Pentium фирмы Intel и МП семейства Athlon фирмы AMD.

Рис. 1.1. Классификация микропроцессоров
Характеристики универсальных микропроцессоров:
разрядность: определяется максимальной разрядностью целочисленных данных, обрабатываемых за 1 такт, то есть фактически разрядностью арифметико-логического устройства (АЛУ);
виды и форматы обрабатываемых данных;
система команд, режимы адресации операндов;
емкостьпрямоадресуемой оперативной памяти: определяется разрядностью шины адреса;
частота внешней синхронизации. Для частоты синхронизации обычно указывается ее максимально возможное значение, при котором гарантируется работоспособность схемы. Для функционально сложных схем, к которым относятся и микропроцессоры, иногда указывают также минимально возможную частоту синхронизации. Уменьшение частоты ниже этого предела может привести к отказу схемы. В то же время в тех применениях МП, где не требуется высокое быстродействие, снижение частоты синхронизации - одно из направлений энергосбережения. В ряде современных микропроцессоров при уменьшении частоты он переходит в <спящий режим>, при котором сохраняет свое состояние. Частота синхронизации в рамках одной архитектуры позволяет сравнить производительность микропроцессоров. Но разные архитектурные решения влияют на производительность гораздо больше, чем частота;
производительность: определяется с помощью специальных тестов, при этом совокупность тестов подбирается таким образом, чтобы они по возможности покрывали различные характеристики микроархитектуры процессоров, влияющие на производительность.
Универсальные микропроцессоры принято разделять на CISC - и RISC-микропроцессоры. CISC-микропроцессоры (CompletedInstructionSetComputing - вычисления с полной системой команд) имеют в своем составе весь классический набор команд с широко развитыми режимами адресации операндов. Именно к этому классу относятся, например, микро процессоры типа Pentium. В то же время RISC-микропроцессоры (reducedinstructionsetcomputing - вычисления с сокращенной системой команд) используют, как следует из определения, уменьшенное количество команд и режимов адресации. Здесь прежде всего следует выделить такие микропроцессоры, как Alpha 21x64, PowerPC. Количество команд в системе команд - наиболее очевидное, но на сегодняшний день не самое главное различие в этих направлениях развития универсальных микропроцессоров. Другие различия мы будем рассматривать по мере изучения особенностей их архитектуры.
Однокристальные микроконтроллеры (ОМК или просто МК) предназначены для использования в системах промышленной и бытовой автоматики. Они представляют собой большие интегральные схемы, которые включают в себя все устройства, необходимые для реализации цифровой системы управления минимальной конфигурации: процессор (как правило, целочисленный), ЗУ команд, ЗУ данных, генератор тактовых сигналов, программируемые устройства для связи с внешней средой (контроллер прерывания, таймеры-счетчики, разнообразные порты ввода/вывода), иногда аналого-цифровые и цифро-аналоговые преобразователи и т. д. В некоторых источниках этот класс микропроцессоров называется однокристальными микро-ЭВМ (ОМЭВМ).
В настоящее время две трети всех производимых микропроцессорных БИС в мире составляют МП этого класса, причем почти две трети из них имеет разрядность, не превышающую 16 бит. К классу однокристальных микроконтроллеров прежде всего относятся микропроцессоры серии MCS-51 фирмы Intel и аналогичные микропроцессоры других производителей, архитектура которых де-факто стала стандартом.
Отличительные особенности архитектуры однокристальных микроконтроллеров:
физическое и логическое разделение памяти команд и памяти данных (гарвардская архитектура), в то время как в классической неймановской архитектуре программы и данные находятся в общем запоминающем устройстве и имеют одинаковый механизм доступа;
упрощенная и ориентированная на задачи управления система команд: в МК, как правило, отсутствуют средства обработки данных с плавающей точкой, но в то же время в систему команд входят команды, ориентированные на эффективную работу с датчиками и исполнительными устройствами, например, команды обработки битовой информации;
простейшие режимы адресации операндов.
Основные характеристики микроконтроллеров (в качестве примера численные значения представлены для MK-51):
Разрядность (8 бит).
Емкость внутренней памяти команд и памяти данных, возможности и пределы их расширения:
внутренняя память команд - 4 Кбайт (в среднем команда имеет длину 2 байта, таким образом, во внутренней памяти может быть размещена программа длиной около 2000 команд); возможность наращивания за счет подключения внешней памяти до 64 Кбайт;
память данных на кристалле 128 байт (можно подключить внешнюю память общей емкостью до 64 Кбайт).
Тактовая частота:
внешняя частота 12 МГц;
частота машинного цикла 1 МГц.
Возможности взаимодействия с внешними устройствами: количество и назначение портов ввода-вывода, характеристики системы прерывания, программная поддержка взаимодействия с внешними устройствами.
Наличие и характеристики встроенных аналого-цифровых преобразователей (АЦП) и цифро-аналоговых преобразователей (ЦАП) для упрощения согласования с датчиками и исполнительными устройствами системы управления.
Секционированные микропроцессоры (другие названия: микропрограммируемые и разрядно-модульные) - это микропроцессоры, предназначенные для построения специализированных процессоров. Они представляют собой микропроцессорные секции относительно небольшой (от 2 до 16) разрядности с пользовательским доступом к микропрограммному уровню управления и средствами для объединения нескольких секций.
Такая организация позволяет спроектировать процессор необходимой разрядности и со специализированной системой команд. Из-за своей малой разрядности микропроцессорные секции могут быть построены с использованием быстродействующих технологий. Совокупность всех этих факторов обеспечивает возможность создания процессора, наилучшим образом ориентированного на заданный класс алгоритмов как по системе команд и режимам адресации, так и по форматам данных.
Одним из первых комплектов секционированных микропроцессоров были МП БИС семейства Intel 3000. В нашей стране они выпускались в составе серии К589 и 585. Процессорные элементы этой серии представляли собой двухразрядный микропроцессор. Наиболее распространенным комплектом секционированных микропроцессоров является Am2900, основу которого составляют 4-разрядные секции. В нашей стране аналог этого комплекта выпускался в составе серии К1804. В состав комплекта входили следующие БИС:
разрядное секционное АЛУ;
блок ускоренного переноса;
разрядное секционное АЛУ с аппаратной поддержкой умножения;
тип схем микропрограммного управления;
контроллер состояния и сдвига;
контроллер приоритетных прерываний.
Основным недостатком микропроцессорных систем на базе секционированных микропроцессорных БИС явилась сложность проектирования, отладки и программирования систем на их основе. Использование специализированной системы команд приводило к несовместимости разрабатываемого ПО для различных микропроцессоров. Возможность создания оптимального по многим параметрам специализированного процессора требовала труда квалифицированных разработчиков на протяжении длительного времени. Однако бурное развитие электронных технологий привело к тому, что за время проектирования специализированного процессора разрабатывался универсальный микропроцессор, возможности которого перекрывали гипотетический выигрыш от проектирования специализированного устройства. Это привело к тому, что в настоящее время данный класс микропроцессорных БИС практически не используется.
Процессоры цифровой обработки сигналов, или цифровые сигнальные процессоры, представляют собой бурно развивающийся класс микропроцессоров, предназначенных для решения задач цифровой обработки сигналов - обработки звуковых сигналов, изображений, распознавания образов и т. д. Они включают в себя многие черты однокристальных микро-контроллеров: гарвардскую архитектуру, встроенную память команд и данных, развитые возможности работы с внешними устройствами. В то же время в них присутствуют черты и универсальных МП, особенно с RISC-архитектурой: конвейерная организация работы, программные и аппаратные средства для выполнения операций с плавающей запятой, аппаратная поддержка сложных специализированных вычислений, особенно умножения.
Как электронное изделиемикропроцессор характеризуется рядом параметров, наиболее важными из которых являются следующие:Требования к синхронизации: максимальная частота, стабильность.
Количество и номиналы источников питания, требования к их стабильности. В настоящее время существует тенденция к уменьшению напряжения питания, что сокращает тепловыделение схемы и ведет к повышению частоты ее работы. Если первые микропроцессоры работали при напряжении питания+-15В, то сейчас отдельные схемы используют источники менее 1 В.
Мощность рассеяния - это мощность потерь в выходном каскаде схемы, превращающаяся в тепло и нагревающая выходные транзисторы. Иначе говоря, она характеризует показатель тепловыделения БИС, что во многом определяет требования к конструктивному оформлению микропроцессорной системы. Эта характеристика особенно важна для встраиваемых МПС.
Уровни сигналов логического нуля и логической единицы, которые связаны с номиналами источников питания.
Тип корпуса - позволяет оценить пригодность схемы для работы в тех или иных условиях, а также возможность использования новой БИС в качестве замены существующей на плате.
Температура окружающей среды, при которой может работать схема. Здесь выделяют два диапазона:
коммерческий (0 0С … +700С);
расширенный (-40 0С … +85 0С).
Помехоустойчивость - определяет способность схемы выполнять свои функции при наличии помех. Помехоустойчивость оценивается интенсивностью помех, при которых нарушение функций устройства еще не превышает допустимых пределов. Чем сильнее помеха, при которой устройство остается работоспособным, тем выше его помехоустойчивость.
Нагрузочная способность, или коэффициент разветвления по выходу, определяется числом схем этой же серии, входы которых могут быть присоединены к выходу данной схемы без нарушения ее работоспособности. Чем выше нагрузочная способность, тем шире логические возможности схемы и тем меньше таких микросхем необходимо для построения сложного вычислительного устройства. Однако с увеличением этого коэффициента ухудшаются помехоустойчивость и быстродействие.
Надежность - это способность схемы сохранять свой уровень качества функционирования при установленных условиях за установленный период времени. Обычно характеризуется интенсивностью отказов (час-1) или средним временем наработки на отказ (час). В настоящее время этот параметр для больших инте- гральных схем обычно не указывается изготовителем. О надежности МП БИС можно судить по косвенным показателям, например, по приводимой разработчиками средств вычислительной техники надежности изделия в целом.
Характеристики технологического процесса. Основной показатель здесь - разрешающая способность процесса. В настоящее время она составляет 32 нм, то есть около 30 тыс. линий на 1 мм. Более совершенный технологический процесс позволяет создать микропроцессор, обладающий большими функциональными возможностями.

Рис. 1.2. Затраты на производство микропроцессорной системы
Затраты на изготовление устройств, использующих микропроцессорные БИС, представлены на рис. 1.2. Здесь:
затраты на изготовление БИС (чем больше степень интеграции элементов на кристалле, тем дороже обходится производство схемы);
затраты на сборку и наладку микропроцессорной системы (с увеличением функциональных возможностей МП потребуется меньше схем для создания МПС);
общая стоимость микропроцессорной системы, которая складывается из затрат (1) и (2). Она имеет некоторое оптимальное значение для данного уровня развития технологии;
переход на новую технологию (оптимальным будет уже другое количество элементов на кристалле, а общая стоимость изделия снижается).
В 1965 году Гордон Мур сформулировал гипотезу, известную в настоящее время как <закон Мура>, согласно которой каждые 1,5-2 года число транзисторов в расчете на одну интегральную схему будет удваиваться. Это обеспечивается непрерывным совершенствованием технологических процессов производства микросхем.
Наиболее развитая в технологическом отношении фирма Intel в жизненном цикле полупроводниковых технологий, создаваемых и применяемых в корпорации, выделяет шесть стадий.
Самая ранняя стадия проходит за пределами Intel - в университетских лабораториях и независимых исследовательских центрах, где ведутся поиски новых физических принципов и методов, которые могут стать основой научно-технологического задела на годы вперед. Корпорация финансирует эти исследования.
На второй стадии исследователи Intel выбирают наиболее перспективные направления развития новых технологий. При этом обычно рассматривается 2-3 варианта решения.
Главная задача третьей стадии - полная черновая проработка новой технологии и демонстрация ее осуществимости.
После этого начинается четвертая стадия, главная цель которой - обеспечить достижение заданных значений таких ключевых технических и экономических показателей, как выход годных изделий, надежность, стоимость и некоторые другие. Завершение этапа подтверждается выпуском первой промышленной партии новых изделий.
Пятая стадия - промышленное освоение новой технологии. Эта проблема не менее сложна, чем разработка самой технологии, поскольку необычайно трудно в точности воспроизвести в условиях реального производства то, что было получено в лаборатории. Обычно именно здесь возникают задержки со сроками выпуска новых изделий, с достижением запланированного объема поставок и себестоимости продукции.
Последняя, шестая стадия жизненного цикла технологии (перед отказом от ее применения) - зрелость. Зрелая технология, подвергаясь определенному совершенствованию с целью повышения производительности оборудования и снижения себестоимости продукции, обеспечивает основные объемы производства. По мере внедрения новых, более совершенных технологий <старые> производства ликвидируются.
Но не сразу: сначала они переводятся на выпуск микросхем с меньшим быстродействием или с меньшим числом транзисторов, например, периферийных БИС.

Лекция 2. История развития и классификации микропроцессоров.
Этапы развития архитектуры универсальных микропроцессоров
Первый микропроцессор был разработан фирмой Intel в 1971 году. Он получил название I-4004, имел 4-разрядную структуру и был ориентирован на использование в калькуляторах. Впоследствии этой же фирмой был выпущен еще один 4-разрядный микропроцессор - I-4040.
На протяжении многих лет крупнейшими разработчиками и производителями универсальных микропроцессоров в мире являются компании Intel (70-75 % мирового производства) и AdvancedMicroDevices (AMD), занимающая 20-25 % рынка. Их разработки идут во многом параллельными путями. В нашем курсе мы будем рассматривать развитие архитектуры универсальных микропроцессоров на примере микропроцессоров фирмы Intel.
В 1972 году на рынке появился 8-разрядный МП I-8008, а вслед за ним, в 1974 году,- I-8080. Последний микропроцессор сыграл значительную роль в развитии микропроцессорной техники. Во многом он заложил основы архитектуры для всех последующих поколений микропроцессоров. Он имеет раздельные 8-разрядную шину данных и 16-разрядную шину адреса, возможность подключения памяти емкостью до 64 Кбайт и до 256 внешних устройств. Микропроцессор содержит 16-разрядные указатель команд (InstructionPointer - IP) и указатель стека (StackPointer - SP), шесть 8-разрядных регистров общего назначения (РОН), которые могут использоваться как три 16-разрядные. Система команд состоит из 78 базовых команд. При загрузке операнда из памяти применяется прямая, косвенная регистровая или стековая адресация. В общем случае программист может использовать регистровую, прямую, косвенную, непосредственную, индексную, прямую и косвенную автоинкрементную и автодекрементную адресации.
Микропроцессор содержит входные и выходные интерфейсные сигналы, обеспечивающие реакцию на сигналы запросов внешних прерываний, организацию прямого доступа к памяти, а также согласование своего цикла работы с медленными внешними устройствами (ВУ).
Его отличительной чертой стало создание микропроцессорного комплекта или семейства, то есть набора БИС, совместимых между собой по интерфейсным сигналам и функционально дополняющих друг друга. В нашей стране этот микропроцессорный комплект выпускался в составе серии К580, в которую вошли следующие микросхемы:
КР580ВМ80А - однокристальный 8-разрядный микропроцессор;
КР580ВВ51А - программируемый последовательный интерфейс;
КР580ВИ53 - программируемый таймер;
КР580ВВ55А - программируемый параллельный интерфейс;
КР580ВТ57 - контроллер прямого доступа к памяти;
КР580ВН59 - контроллер прерываний;
КР580ВВ79 - интерфейс клавиатуры и дисплея;
КР580ВГ75 - контроллер ЭЛТ;
КР580ВК91А - интерфейс МП - канал общего пользования;
КР580ГФ24 - генератор тактовых сигналов и некоторые другие схемы, предназначенные в основном для согласования работы отдельных частей микропроцессорной системы.
БИС данного микропроцессорного комплекта вследствие хороших архитектурных решений, широкой номенклатуры и совместимости до сих пор можно встретить в некоторых цифровых устройствах, не требующих высокого быстродействия и разрядности, а идеи, заложенные в таких схемах, как контроллер прерываний и контроллер прямого доступа к памяти, используются в современных наборах системной логики - чипсетах.
Очередным крупным шагом в развитии микропроцессорной техники стало появление в 1978 году 16-разрядных универсальных микропроцессоров. Здесь прежде всего следует выделить микропроцессор I-8086,
выпускавшийся отечественной электронной промышленностью в составе семейства К1810. Эти микропроцессоры, заложившие основы архитектуры x86, использовались при производстве первых персональных ЭВМ.
Основными отличительными чертами в архитектуре этого микропроцессора стали:
увеличение разрядности регистров общего назначения до 16 бит;
увеличение количества регистров общего назначения до 8;
увеличение количества режимов адресации операндов;
расширение количества флагов в регистре признаков, в том числе за счет введения флагов управления, обеспечивающих, например, возможность запрета внешних маскируемых прерываний;
появление сегментного механизма обращения к памяти, который обеспечил возможность обращения к памяти емкостью до 1 Мбайт при использовании 16-разрядных регистров.
Появившийся вслед за этим в 1982 году микропроцессор i286 явился переходной ступенью к 32-разрядным универсальным микропроцессорам. В процессоре i286 было реализовано два режима работы - защищенный и реальный. В реальном режиме работы процессор был полностью совместим с выпускавшимися ранее 16-разрядными микропроцессорами с архитектурой x86. В формировании адреса участвовали только 20 линий, поэтому максимальная емкость адресуемой памяти в этом режиме осталась прежней - 1 Мбайт. В защищенном режимепроцессор мог адресовать до 1 Гбайт виртуальной памяти. Шина адреса была увеличена до 24 бит, поэтому емкость адресуемой памяти составляла 16 Мбайт. Для защиты от несанкционированного доступа к программам и данным и выполнения привилегированных команд, которые могут кардинально изменить состояние всей системы, в процессоре i286 была введена защита по привилегиям. С этой целью микропроцессор поддерживал 4 уровня привилегий. Для выполнения операций над числами с плавающей точкой была разработана отдельная БИС - математический сопроцессор 80287.
В 1985 году был выпущен 32-разрядный универсальный микропроцессор i386 - первый полноценный представитель архитектуры IA-32 (IntelArchitecture-32). Развитие этой архитектуры продолжалось вплоть до последних моделей микропроцессора Pentium 4. Данную архитектуру отличает ряд изменений, некоторые из которых имеют чисто количественное значение, а другие носят принципиальный характер.
Главным внешним отличием является увеличение разрядности шины данных и шины адреса до 32 бит. Это, в свою очередь, связано с изменениями в разрядности внутренних элементов микропроцессора.
Большие качественные изменения произошли на уровне работы микропроцессора в защищенном режиме, который был существенно развит по сравнению с i286. Отметим основные черты этого режима.
Принципиально меняется механизм формирования физического адреса. Прежде всего, изменяется механизм использования сегментированной памяти. Сегменты в защищенном режиме могут иметь произвольную длину и располагаться в памяти начиная с произвольного адреса. Каждый сегмент снабжается рядом атрибутов (базовый адрес, длина сегмента, его тип, уровень защиты и т. п.), которые хранятся в специальной структуре, называемой дескриптором сегмента, и используются блоком управления памятью микропроцессора при формировании физических адресов операндов и команд. Появляется возможность использования страничного механизма организации памяти. Страница - это раздел памяти, который, в отличие от сегмента, имеет фиксированную длину. Страничная организация памяти служит основой виртуальной памяти и беспечивает более эффективное, по сравнению с сегментной, использование памяти.Организуется аппаратная поддержка мультипрограммного режима работы, при котором в памяти одновременно содержатся программы и данные для выполнения нескольких задач. Каждой задаче предоставляется свой <виртуальный процессор>. В каждый момент времени реальный процессор предоставляется одному из виртуальных процессоров, выполняющему свою задачу.
С целью обеспечения защиты информации и упрощения организации мультипрограммного режима работы микропроцессор снабжается специальными механизмами, определяющими, какие операции и обращения к памяти разрешается производить процессору при выполнении текущей задачи.
За время, прошедшее после появления первого 32-разрядного микропроцессора, только фирмой Intel было выпущено несколько десятков модификаций 32-разрядных МП.
Лекция 3. Поколения микропроцессоров.
К основным нововведениям микропроцессора i486, выпущенного в 1989 году, относятся два, которые связаны с расширившимися технологическими возможностями. Это размещение непосредственно на кристалле БИС двух важных блоков, которые раньше выполнялись в виде отдельных микросхем: кэш-памяти и блока процессора обработки чисел с плавающей точкой ( floatingpointunit - FPU ). Кэш-память имела объем 8
Кбайт и предназначалась для хранения программ и данных. FPU имел внутренний файл из восьми 80-разрядных регистров, свой регистр состояния и управления.
Главной отличительной чертой нового продукта в линейке 32-разрядных микропроцессоров - МП Pentium - явилась возможность конвейерной обработки информации. Хотя некоторые авторы считают, что конвейер появился уже в i486, это не является общепринятым мнением.
Высокая скорость выполнения команд в МП Pentium достигалась благодаря двум 5-ступенчатым конвейерам, позволявшим одновременно исполнять несколько инструкций. Обмен информацией с памятью через кэш данных осуществлялся независимо от процессорного ядра, а буфер инструкций был связан с ним через высокоскоростную 256-разрядную внутреннюю шину. Несмотря на то что новый кристалл был спроектирован как 32-разрядный, для связи с остальными компонентами системы использовалась внешняя 64-разрядная шина данных. Появление конвейера обусловило необходимость введения еще одного блока - схемы предсказания переходов. Эффективная работа данной схемы чрезвычайно важна для повышения производительности микропроцессора. Все последующие модификации микропроцессоров непременно связаны с улучшением ее работы.
Основным нововведением разработанного в 1997 году микропроцессора PentiumMMX стал блок, обеспечивавший новую схему обработки целочисленной информации - SIMD (SingleInstruction - MultipleData: одна команда - множество данных). До этого обработка велась по классической схеме SISD: каждая команда выполняла действия над своей парой операндов. Введение SIMD-операций позволило обрабатывать одновременно несколько операндов с использованием одной команды, что дало возможность существенно поднять производительность микропроцессора на тех задачах, где над большими массивами однородной информации выполнялись одинаковые операции, например, в мультимедийных приложениях. Появление таких возможностей потребовало введения в систему команд 57 новых инструкций, но регистровая структура микропроцессора не изменилась.
Микропроцессор Pentium III, появившийся в 1999 году, позволил обрабатывать по схеме SIMD не только целочисленные операнды, но и числа с плавающей точкой. Для этого система команд была расширена на 70 инструкций, а в структуре микропроцессора появился специальный блок SSE, содержащий, в частности, отдельный регистровый файл из восьми 128-разрядных регистров. Еще одной новинкой, использованной в Pentium III, было размещение на кристалле кэш-памяти второго уровня (начиная с ядра Coppermine), работающей на частоте ядра. Но это носило скорее количественный характер и не внесло существенных изменений в архитектуру.
Микропроцессор Pentium 4 завершает линейку 32-разрядных микропроцессоров. Основным вкладом этого микропроцессора в развитие архитектуры IA-32 стало еще большее увеличение глубины конвейера - до 31 стадии, что позволило сильно нарастить частоту процессора. Количество конвейеров возросло до 9. Кроме поддержки ставших традиционными инструкций MMX и SSE, в Pentium 4 добавили еще 144 команды SSE2, затем и SSE3, ориентированные в первую очередь на работу с потоковыми данными.
В 2001 году фирмой Intel был выпущен микропроцессор Itanium, положивший начало новой 64-разрядной архитектуре - IA-64, которая сменила архитектуру 32-разрядных микропроцессоров IA-32, господствовавшую на протяжении более 15 лет.
Данное учебное пособие в части универсальных микропроцессоров будет базироваться в основном на рассмотрении базовой архитектуры 32- разрядного микропроцессора, которая сложилась в микропроцессоре i486. Основные моменты, касающиеся развития этой архитектуры (конвейерная организация работы, обработка информации по схеме SIMD и т. д.), будут рассмотрены отдельно. Также отдельно будут рассмотрены современные направления развития архитектуры универсальных микропроцессоров и, в качестве примера, архитектура 80-ядерного микропроцессора фирмы Intel и микропроцессора Itanium.

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

Рис. 3.1. Обобщенная структура микропроцессора
Основным элементом для хранения информации внутри процессора являются регистры, которые выполняют функцию сверхоперативного ОЗУ с минимальным временем записи и считывания.
Регистр команд РгК (англ. IR - insructionregister) используется для фиксации кода команды после считывания ее из памяти. Как правило, в этом регистре фиксируется лишь код операции (КОП) - часть кода команды, определяющая выполняемое действие и способ адресации операндов (см. ниже).
Регистры операндов служат для хранения данных в процессе их обработки, позволяют избегать постоянных обращений к памяти. В современных процессорах количество регистров операндов может достигать 10-15 штук. По сути, они образуют внутреннюю память процессора. В однокристальных микроконтроллерах количество регистров операндов доведено до нескольких десятков, и применительно к ним вводится понятие регистрового файла. Некоторые из регистров операндов могут использоваться также для хранения или формирования адресов других операндов, т.е. на их основе реализуется механизм косвенной адресации данных в памяти (см. ниже). Данные, размещенные в регистрах операндов, поступают на обработку в арифметико-логическое устройство (АЛУ). В некоторых типах процессоров один из регистров операндов всегда является и приемником результата операции в АЛУ – такой регистр принято называть регистром-аккумулятором Процессоры, в которых принята схема выполнения операций в виде:
<аккумулятор> (операция) <операнд>Þ<аккумулятор>,
называются процессорами с аккумуляторно-ориентированной структурой.
Счетчик команд (англ. PC - programmingcounter) - регистр, в котором при выборке или выполнении текущей команды формируется адрес следующей команды. Модификация содержимого регистра PC – это средство управления последовательностью выборки команд из памяти и, следовательно, управления ходом вычислительного процесса (т.е. реализация ветвлений в алгоритмах).
Указатель стека (англ. SP - stackpointer ) - регистр, в котором при выполнении программы хранится адрес границы той области памяти, для которой программист использует принцип последовательного доступа к данным (так называемый протокол работы со стеком).
Регистр адреса - регистр, в котором формируется адрес любого устройства, внешнего по отношению к процессору (ячейки памяти или порта ввода-вывода), перед обращением к этому устройству. Данный регистр необходим, поскольку источником адресной информации могут являться различные регистры процессора. При этом регистр адреса играет роль накапливающего буфера, из которого адресная информация выдается на внешнюю шину адреса.
Регистр признаков (англ. F - flags) - это элемент внутренней памяти, в котором в виде отдельныхбитов фиксируются признаки, характеризующие результат операции, выполненной в АЛУ (нулевой результат, переполнение разрядной сетки и т.п.).
Арифметико-логическое устройство (АЛУ) - функциональный блок процессора, предназначенный для реализации действий по обработке данных.
Результат операции, выполненной в АЛУ, заносится в один из регистров или пересылается в память (в зависимости от команды). В регистре признаков автоматически формируются признаки, характеризующие этот результат.
Функционирование процессора всегда синхронизируется от внешнего генератора тактовых импульсов (ГТИ). Именно под влиянием импульсов от ГТИ устройство управления процессора автоматически реализует действия, связанные с выборкой команд из памяти и их дешифрацией.
Выполнение команды всегда занимает некоторое количество периодов тактовой частоты и состоит из последовательности элементарных действий процессора (выборка команды, чтение операнда, вычисление в АЛУ). Эти элементарные действия называют машинными циклами (МЦ). В течение каждого МЦ происходит генерация строго определенной комбинации управляющих сигналов для соответствующих узлов процессора и всей вычислительной системы.
Лекция 5.
Структура 32-разрядного универсального микропроцессора
Рассмотрение архитектуры IA-32 начнем с микропроцессора i486. В нем впервые появились те блоки, которых не было на кристалле первого 32-разрядного микропроцессора i386, - кэш-память и процессор обработки чисел с плавающей точкой. Именно его архитектуру можно рассматривать как базовую для IA-32. Структура микропроцессора i486 представлена на рис. 1.3.
Рассмотрим состав и назначение основных блоков этого микропроцессора.
Процессор обработки чисел с фиксированной точкой содержит 32-разрядное АЛУ и блок регистров общего назначения. АЛУ предназначено для обработки двоичных чисел длиной 1, 2 или 4 байта без знака или со знаком, а также двоично-десятичных чисел, не превышающих 99. Двоичные числа со знаком представляются в дополнительном коде. Блок регистров общего назначения содержит восемь 32-разрядных регистров, часть из которых допускает 16- и 8-разрядное обращение.

Рис. 1.3. Структура универсального микропроцессора
Процессор обработки чисел с плавающей точкой состоит из 80-разрядного АЛУ, блока из восьми 80-разрядных регистров общего назначения, а также управляющих регистров. Главным образом он предназначен для обработки чисел с плавающей точкой, но также используется для обработки целых чисел со знаком длиной 8 байт и двоично-десятичных чисел величиной от 100 до 99…9 (18 цифр). На первых этапах развития SIMD-обработки регистры FPU использовались для хранения операндов, представленных в новых форматах.
Блок управления памятью (MemoryManagementUnit - MMU) состоит из двух основных блоков в соответствии с организацией памяти.
В общем случае память в микропроцессоре делится на сегменты, которые, в свою очередь, делятся на страницы. В соответствии с этим, MMU содержит блок сегментации (или блок сегментного преобразования адреса) и блок страничного преобразования, в состав которого входит так называемый буфер ассоциативной трансляции адресов стра- ниц(TLB).
Кэш-память представляет собой промежуточную ступень между оперативной памятью и регистрами микропроцессора и предназначена для хранения наиболее часто используемой информации.
В состав блока управления входят:
собственноустройство управления, то есть та классическая схема, которая под действием кода команды вырабатывает набор управляющих сигналов, поступающих на разные узлы как самого микропроцессора, так и на блок интерфейса внешней шины;
управлениезащитой памяти: обеспечивает аппаратную защиту программ и данных при управлении памятью и по привилегиям;
блок управления предвыборкой команд: реализует опережающее заполнение буфера команд, представляющего собой некоторую буферную память. Буфер команд имеет емкость 32 байта и заполняется командами из следующих ячеек памяти команд по мере своего освобождения. Этим обеспечивается ускорение обработки микропроцессором следующей команды. Данный блок подвергался, пожалуй, наиболее существенным переработкам по мере развития архитектуры IA-32 - причина в широком последующем использовании конвейерной организации работы МП и связанной с этим необходимости постоянного совершенствования блока предсказания адреса следующей команды.
Блок интерфейса внешней шины осуществляет электрическое согласование параметров внутренней магистрали с сигналами внешних магистралей, формирование необходимых сигналов на внешнюю магистраль и прием сигналов извне. Внешняя магистраль микропроцессора состоит из шины адреса, шины данных и сигналов управления:
шина данных имеет ширину 32 разряда;
32-разрядный адрес передается по 34-разрядной шине А31...А2+(B3,B2,B1,B0). Чтобы с минимальными потерями согласовывать 32-разрядную шину данных с передачей данных меньшей разрядности, младшие разряды адреса (А1 и А0) передаются в дешифрированном виде (B3, B2, B1, B0). Они показывают, какие байты из 32-разрядной шины данных в данный момент реально востребованы: 1 байт, 2 младших байта, 2 старших байта либо все 32 разряда данных;
шина управления - 32-разрядная. По ней передаются сигналы записи и чтения содержимого оперативной памяти и внешних устройств, сигналы запросов прерываний, прямого доступа к памяти и т. д.
Особый интерес представляют три режима работы микропроцессора: реальный, защищенный и режим виртуального МП i8086. В реальном режиме обеспечивается совместимость на уровне объектных кодов с микропроцессором i8086 и микропроцессором i286, работающем в реальном режиме. В этом режиме архитектура 32-разрядного микропроцессора почти полностью идентична архитектуре 16-разрядного МП. Для программиста же он вообще представляется как МП i8086, выполняющий написанные программы с большей скоростью и обладающий расширенной системой команд и регистрами. Благодаря этим качествам фирма Intel сохранила прежних клиентов, которые хотели модернизировать свои системы, не отказываясь от имевшегося задела в области программного обеспечения, и привлекла тех, кому изначально требовалась высокая скорость обработки информации.
Одно из основных ограничений реального режима было связано с предельной емкостью адресуемой памяти, равной 1 Мбайт. От него свободен защищенный режим, позволяющий воспользоваться всеми преимуществами архитектуры нового МП. Размер адресного пространства в этом случае увеличивается до 4 Гбайт, а общий объем поддерживаемого адресного пространства - до 64 терабайт (1 Тбайт = 240байт). МП, работающие в защищенном режиме, обладают более высоким быстродействием и возможностями организации истинной многозадачности.
Наконец, режим виртуального МП открывает возможность одновременного исполнения программ, написанных для МП i8086, i286 и i386.
Поскольку емкость памяти, адресуемой микропроцессором, не ограничена значением 1 Мбайт, этот режим позволяет формировать несколько виртуальных сред i8086.
Краткие итоги. В лекции даны определения микропроцессора и микропроцессорной системы, архитектуры микропроцессора. Приведена классификация микропроцессоров по их архитектуре, представлены параметры, которые характеризуют микропроцессоры каждого класса как вычислительное устройство и как электронное изделие. Рассмотрены этапы развития архитектуры универсальных микропроцессоров на примере МП БИС фирмы Intel, занимающей доминирующее положение в этом секторе рынка. Описаны структура и основные блоки микропроцессора i486, являющегося базовым микропроцессором для этой архитектуры.

Лекция 6. Структура многоядерных микропроцессоров.
Многоя́дерный проце́ссор — центральный процессор, содержащий два и более вычислительных ядра на одном процессорном кристалле или в одном корпусе.
1Терминология2Архитектура многоядерных систем3Производительность4Наращивание количества ядер4.1История массовых многоядерных процессоров4.2История экспериментальных многоядерных процессоров5Многоядерные контроллеры6См. также7Ссылки8ПримечанияТерминология
В английском языке существует два часто употребляемых термина для процессоров, имеющих несколько ядер: multi-core и many-core.
Термин мультиядерный (англ. multi-coreHYPERLINK "https://ru.wikipedia.org/wiki/%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D1%8F%D0%B4%D0%B5%D1%80%D0%BD%D1%8B%D0%B9_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80" \l "cite_note-cit-2009-many-multi-1"[1]) обычно применяется к центральным процессорам, содержащим два и более ядра общего назначения, однако иногда используется и для цифровых сигнальных процессоров (DSP) и систем на кристалле (SoC, СнК). Под многоядерностью процессора понимают, что несколько ядер являются интегрированными на одну интегральную схему (изготовлены на одном кремниевом кристалле). Если же в один корпус были объединены несколько полупроводниковых кристаллов, то конструкцию называют многочиповый модуль (англ. multi-chipmodule, MCM).
Термином многопроцессорный обозначают компьютеры, имеющие несколько физически раздельных процессоров (например, серверные материнские платы часто имеют 2 или 4 сокета для подключения нескольких чипов), но управляемые одним экземпляром ОС.
Понятие многоядерныйHYPERLINK "https://ru.wikipedia.org/wiki/%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D1%8F%D0%B4%D0%B5%D1%80%D0%BD%D1%8B%D0%B9_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80" \l "cite_note-cit-2009-many-multi-1"[1] (англ. many-coreHYPERLINK "https://ru.wikipedia.org/wiki/%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D1%8F%D0%B4%D0%B5%D1%80%D0%BD%D1%8B%D0%B9_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80" \l "cite_note-2"[2] или англ. massivelymulti-core) может использоваться для описания многоядерных систем, имеющих высокое количество ядер, от десятков до сотен или более. Например, именно название «многоядерный» («many-core») использовалось Intel для вычислителей Intel MIC[3].
Архитектура многоядерных систем[править | править вики-текст]
Архитектура многоядерных процессоров во многом повторяет архитектуру симметричных мультипроцессоров (SMP-машин) только в меньших масштабах и со своими особенностями. В многоядерных процессорах тактовая частота, как правило, намеренно снижена. Это позволяет уменьшить энергопотребление процессора без потери производительности. В некоторых процессорах тактовая частота каждого ядра может меняться в зависимости от его индивидуальной нагрузки. Ядро является полноценным микропроцессором, использующим все достижения микропроцессорной техники: конвейеры, внеочередное исполнение кода, многоуровневый кэш, поддержка векторных команд. Суперскалярность в ядре не используется, так как она реализована самим наличием нескольких ядер в процессоре.
Каждое ядро также может использовать технологию SMT для поочередного исполнения нескольких потоков, создавая иллюзию нескольких «логических процессоров» на основе каждого ядра. На процессорах компании Intel эта технология носит название Hyper-threading и удваивает число логических процессоров по сравнению с физическими. На процессорах SunUltraSPARC такое увеличение может достигать 8 потоков на ядро.
Многоядерные процессоры можно подразделить по наличию поддержки когерентности (общей) кеш-памяти между ядрами. Бывают процессоры с такой поддержкой и без неё. Способ связи между ядрами:
разделяемая шина
сеть (Mesh) на каналах точка-точка
сеть с коммутатором
общаякэш-памятьКэш-память: Во всех существующих на сегодня многоядерных процессорах кеш-памятью 1-го уровня обладает каждое ядро в отдельности, а кеш-память 2-го уровня существует в нескольких вариантах:
разделяемая — расположена на одном кристалле с ядрами и доступна каждому из них в полном объёме. Используется в процессорах семейств IntelCore.
индивидуальная — отдельные кеши равного объёма, интегрированные в каждое из ядер. Обмен данными из кешей 2-го уровня между ядрами осуществляется через контроллер памяти — интегрированный (HYPERLINK "https://ru.wikipedia.org/wiki/Athlon_64_X2" \o "Athlon 64 X2"Athlon 64 X2, Turion X2, Phenom) или внешний (использовался в Pentium D, в дальнейшем Intel отказалась от такого подхода).
Многоядерные процессоры также имеют гомогенную или гетерогенную архитектуру:
гомогенная архитектура — все ядра процессора одинаковы и выполняют одни и те же задачи. Типичные примеры: IntelCoreDuo, SunSPARC T3, AMD Opteronгетерогенная архитектура — ядра процессора выполняют разные задачи. Типичный пример: процессор Cell альянса IBM, Sony и Toshiba, у которого из девяти ядер одно является ядром процессора общего назначения PowerPC, а восемь остальных — специализированными процессорами, оптимизированными для векторных операций, которые используются в игровой приставке SonyPlayStation 3Производительность
В приложениях, оптимизированных под многопоточность, наблюдается прирост производительности на многоядерном процессоре. Однако, если приложение не оптимизировано, то оно не будет получать практически никакой выгоды от дополнительных ядер, а может даже выполняться медленнее, чем на процессоре с меньшим количеством ядер, но большей тактовой частотой. Это в основном приложения, разработанные до появления многоядерных процессоров, либо приложения, в принципе не использующие многопоточность.
Большинство операционных систем позволяют выполнять несколько приложений одновременно. При этом достигается выигрыш в производительности, даже если приложения однопоточные.
Наращивание количества ядер
Первым процессором предназначенным для массового использования, а не для встроенных систем, стал POWER4 с двумя ядрами PowerPC на одном кристалле, выпущенный компанией IBM в 2001 году.
На сегодня многими производителями процессоров, в частности Intel, AMD, IBM, ARM дальнейшее увеличение числа ядер процессоров признано как одно из приоритетных направлений увеличения производительности.
В 2011 году компанией AMD освоено производство 8-ядерных процессоров для домашних компьютеров[4] и 16-ядерных для серверных систем[5].
Имеются экспериментальные разработки процессоров с большим количеством ядер (более 20). Некоторые из таких процессоров уже нашли применение в специфических устройствах.
История массовых многоядерных процессоров
Двухъядерные процессоры различных архитектур существовали ранее, например IBMPowerPC-970MP (G5), но их использование было ограничено узким кругом специализированных задач.
В апреле 2005 года AMD выпустила 2-ядерный процессор Opteron архитектуры AMD64, предназначенный для серверов. В мае 2005 года Intel выпустила процессор Pentium D архитектуры x86-64, ставший первым 2-ядерным процессором, предназначенным для персональных компьютеров.
В марте 2010 года появились первые 12-ядерные серийные процессоры, которыми стали серверные процессоры Opteron 6100 компании AMD (архитектура x86/x86-64).[6]В августе 2011 года компанией AMD были выпущены первые 16-ядерные серийные серверные процессоры Opteron серии 6200 (кодовое наименование Interlagos). Процессор Interlagos объединяет в одном корпусе два 8-ядерных (4-модульных) чипа и является полностью совместимым с существующей платформой AMD Opteron серии 6100 (HYPERLINK "https://ru.wikipedia.org/wiki/Socket_G34" \o "Socket G34"Socket G34).[7]Сводные данные по истории микропроцессоров и их параметров представлены в обновляющейся английской статье: Хронология микропроцессоров, 2010-е годы. Для получения числа ядер процессора надо умножить поля «Coresperdie» и «Diespermodule», для получения числа аппаратных потоков — умножить число ядер на число «threadspercore». Например, для Xeon E7, Intel: «4, 6, 8, 10» ядер на 1 die на 1-2 аппаратных потоков = максимум 10 ядер и 20 аппаратных потоков, AMD FX «Bulldozer» Interlagos «4-8» на 2 на 1 = максимум 16 ядер и 16 потоков.
История экспериментальных многоядерных процессоров
27 сентября 2006 года Intel представила прототип 80-ядерного процессора.[8] Предполагается, что массовое производство подобных процессоров станет возможно не раньше перехода на 32-нанометровый техпроцесс.
20 августа 2007 года компания Tilera, анонсировала чип TILE64 (англ.) с 64 процессорными ядрами и встроенной высокопроизводительной сетью, посредством которой обмен данными между различными ядрами может происходить со скоростью до 32 Тбит/с.[9][10]26 октября 2009 года Tilera анонсировала[11] 100-ядерный процессор широкого назначения серии TILE-Gx (англ.). Каждое процессорное ядро представляет собой отдельный процессор с кеш-памятью 1 и 2 уровней. Ядра, память и системная шина связаны посредством топологии meshnetwork. Процессоры производятся по 40-нм техпроцессу и работают на тактовой частоте 1,5 ГГц. Выпуск 100-ядерных процессоров назначен на начало 2011 года.
2 декабря 2009 года Intel представила одночиповыйHYPERLINK "https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D0%BB%D0%B0%D1%87%D0%BD%D1%8B%D0%B5_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F" \o "Облачные вычисления"«облачный»Single-chipCloudComputer (SCC) компьютер, представляющий собой 48-ядерный чип. «Облачность»процессора состоит в том, что все 48 ядер сообщаются между собой как сетевые узлы. SCC — часть проекта, целью которого является создание 100-ядерного процессора[12].
В июне 2011 годаIntel раскрыла детали разрабатываемой архитектуры ManyIntegratedCore (MIC) — эта технология выросла из проекта Larrabee. Микропроцессоры на основе этой архитектуры получат более 50 микроядер архитектуры x86 и начнут производиться в 2012 году по 22-нм техпроцессу. Эти микропроцессоры не могут быть использованы в качестве центрального процессора, но из нескольких чипов этой архитектуры будут строиться вычислительные ускорители в виде отдельной карты расширения и конкурировать на рынках GPGPU и высокопроизводительных вычислений с решениями типа NvidiaTesla и AMD FireStream.[13] По опубликованному в 2012 году описанию архитектуры, возможны чипы с количеством ядер до 60.В октябре 2011 года компания Adapteva представила 64-ядерные микропроцессорыEpiphany IV, которые показывают производительность до 70 гигафлопс (SP), при этом потребляя менее 1 Вт электроэнергии. Микропроцессоры спроектированы с использованием RISC-архитектуры и, ознакомительные образцы планировалось произвести в 2012 году по 28-нм техпроцессу GlobalFoundries. Данные процессоры не могут быть использованы в качестве центрального процессора, но компания Adapteva предлагает использовать их в качестве сопроцессора для таких сложных задач, как распознавание лиц или жестов пользователя. Компания Adapteva утверждает, что в дальнейшем число ядер данного микропроцессора может быть доведено до 4096[14][15].
В январе 2012 года компания ZiiLabs (дочернее предприятие CreativeTechnology) анонсировала 100-ядерную систему на чипе ZMS-40. Эта система, объединяющая 4-ядерный процессор ARMCortex-A9 1,5 ГГц (с мультимедийными блоками Neon) и массив из 96 более простых и менее универсальных вычислительных ядер StemCell. Ядра StemCell — это энергоэффективная архитектура SIMD, пиковая производительность при вычислениях с плавающей запятой (32 бит) — 50 гигафлопс, ядра которой работают скорее как GPU в других системах на чипе, и могут быть использованы для обработки видео, изображений и аудио, для ускорения 3D- и 2D-графики и других мультимедийных задач (поддерживается OpenGL ES 2.0 и OpenCL 1.1)[16].
Многоядерные контроллеры[правитьСуществует также тенденция внедрения многоядерных микроконтроллеров в мобильные устройства.
Например:
seaForth-24 — новая разработка multi-coreMISC-архитектуры ChuckMoore 1 ГГц 24-ядерный асинхронный контроллер.
Контроллер от Parallax[2] имеет восемь 32-разрядных процессоров (COG) в одном кристалле P8X32A.
KilocorePowerPC-процессор с 1024 8-битными ядрами, работающими на частоте 125 МГц. На данный момент существует 256-ядерный процессор.

Лекция 7. Команды пересылки данных, арифметических и логических операций.
В общем случае система команд процессора включает в себя следующие четыре основные группы команд:
команды пересылки данных;
арифметические команды ;логические команды ;команды переходов.
Команды пересылки данных не требуют выполнения никаких операций над операндами. Операнды просто пересылаются (точнее, копируются) из источника (Source) в приемник (Destination). Источником и приемником могут быть внутренние регистры процессора, ячейки памяти или устройства ввода/вывода. АЛУ в данном случае не используется.
Арифметические команды выполняют операции сложения, вычитания, умножения, деления, увеличения на единицу (инкрементирования), уменьшения на единицу (декрементирования) и т.д. Этим командам требуется один или два входных операнда. Формируют команды один выходной операнд.
Логические команды производят над операндами логические операции, например, логическое И, логическое ИЛИ, исключающее ИЛИ, очистку, инверсию, разнообразные сдвиги (вправо, влево, арифметический сдвиг, циклический сдвиг). Этим командам, как и арифметическим, требуется один или два входных операнда, и формируют они один выходной операнд.
Наконец, команды переходов предназначены для изменения обычного порядка последовательного выполнения команд. С их помощью организуются переходы на подпрограммы и возвраты из них, всевозможные циклы, ветвления программ, пропуски фрагментов программ и т.д. Команды переходов всегда меняют содержимое счетчика команд. Переходы могут быть условными и безусловными. Именно эти команды позволяют строить сложные алгоритмы обработки информации.
В соответствии с результатом каждой выполненной команды устанавливаются или очищаются биты регистра состояния процессора ( PSW ). Но надо помнить, что не все команды изменяют все имеющиеся в PSW флаги. Это определяется особенностями каждого конкретного процессора.
У разных процессоров системы команд существенно различаются, но в основе своей они очень похожи. Количество команд у процессоров также различно. Например, у упоминавшегося уже процессора МС68000 всего 61 команда, а у процессора 8086 — 133 команды. У современных мощных процессоров количество команд достигает нескольких сотен. В то же время существуют процессоры с сокращенным набором команд (так называемые RISC-процессоры), в которых за счет максимального сокращения количества команд достигается увеличение эффективности и скорости их выполнения.
Рассмотрим теперь особенности четырех выделенных групп команд процессора более подробно.
3.3.1. Команды пересылки данных
Команды пересылки данных занимают очень важное место в системе команд любого процессора. Они выполняют следующие важнейшие функции:
загрузка (запись) содержимого во внутренние регистры процессора;
сохранение в памяти содержимого внутренних регистров процессора;
копирование содержимого из одной области памяти в другую;
запись в устройства ввода/вывода и чтение из устройств ввода/вывода.
В некоторых процессорах (например, Т-11) все эти функции выполняются одной единственной командой MOV (для байтовых пересылок — MOVB ) но с различными методами адресации операндов.
В других процессорах помимо команды MOV имеется еще несколько команд для выполнения перечисленных функций. Например, для загрузки регистров могут использоваться команды загрузки, причем для разных регистров — разные команды (их обозначения обычно строятся с использованием слова LOAD — загрузка). Часто выделяются специальные команды для сохранения в стеке и для извлечения из стека ( PUSH — сохранить в стеке, POP — извлечь из стека). Эти команды выполняют пересылку с автоинкрементной и с автодекрементной адресацией (даже если эти режимы адресации не предусмотрены в процессоре в явном виде).
Иногда в систему команд вводится специальная команда MOVS для строчной (или цепочечной) пересылки данных (например, в процессоре 8086). Эта команда пересылает не одно слово или байт, а заданное количество слов или байтов ( MOVSB ), то есть инициирует не один цикл обмена по магистрали, а несколько. При этом адрес памяти, с которым происходит взаимодействие, увеличивается на 1 или на 2 после каждого обращения или же уменьшается на 1 или на 2 после каждого обращения. То есть в неявном виде применяется автоинкрементная или автодекрементная адресация.
В некоторых процессорах (например, в процессоре 8086) специально выделяются функции обмена с устройствами ввода/вывода. Команда IN используется для ввода (чтения) информации из устройства ввода/вывода, а команда OUT используется для вывода (записи) в устройство ввода/вывода. Обмен информацией в этом случае производится между регистром-аккумулятором и устройством ввода/вывода. В более продвинутых процессорах этого же семейства (начиная с процессора 80286) добавлены команды строчного (цепочечного) ввода (команда INS ) и строчного вывода (команда OUTS ). Эти команды позволяют пересылать целый массив (строку) данных из памяти в устройство ввода/вывода ( OUTS ) или из устройства ввода/вывода в память ( INS ). Адрес памяти после каждого обращения увеличивается или уменьшается (как и в случае с командой MOVS ).
Также к командам пересылки данных относятся команды обмена информацией (их обозначение строится на основе слова Exchange ). Может быть предусмотрен обмен информацией между внутренними регистрами, между двумя половинами одного регистра ( SWAP ) или между регистром и ячейкой памяти.
3.3.2. Арифметические команды
Арифметические команды рассматривают коды операндов как числовые двоичные или двоично-десятичные коды. Эти команды могут быть разделены на пять основных групп:
команды операций с фиксированной запятой (сложение, вычитание, умножение, деление);
команды операций с плавающей запятой (сложение, вычитание, умножение, деление);
команды очистки;
команды инкремента и декремента;
команда сравнения.
Команды операций с фиксированной запятой работают с кодами в регистрах процессора или в памяти как с обычными двоичными кодами. Команда сложения ( ADD ) вычисляет сумму двух кодов. Команда вычитания ( SUB ) вычисляет разность двух кодов. Команда умножения ( MUL ) вычисляет произведение двух кодов (разрядность результата вдвое больше разрядности сомножителей). Команда деления ( DIV ) вычисляет частное от деления одного кода на другой. Причем все эти команды могут работать как с числами со знаком, так и с числами без знака.
Команды операций с плавающей запятой (точкой) используют формат представления чисел с порядком и мантиссой (обычно эти числа занимают две последовательные ячейки памяти). В современных мощных процессорах набор команд с плавающей запятой не ограничивается только четырьмя арифметическими действиями, а содержит и множество других более сложных команд, например, вычисление тригонометрических функций, логарифмических функций, а также сложных функций, необходимых при обработке звука и изображения.
Команды очистки ( CLR ) предназначены для записи нулевого кода в регистр или ячейку памяти. Эти команды могут быть заменены командами пересылки нулевого кода, но специальные команды очистки обычно выполняются быстрее, чем команды пересылки. Команды очистки иногда относят к группе логических команд, но суть их от этого не меняется.
Команды инкремента (увеличения на единицу, INC ) и декремента (уменьшения на единицу, DEC ) также бывают очень удобны. Их можно в принципе заменить командами суммирования с единицей или вычитания единицы, но инкремент и декремент выполняются быстрее, чем суммирование и вычитание. Эти команды требуют одного входного операнда, который одновременно является и выходным операндом.
Наконец, команда сравнения (обозначается CMP ) предназначена для сравнения двух входных операндов. По сути, она вычисляет разность этих двух операндов, но выходного операнда не формирует, а всего лишь изменяет биты в регистре состояния процессора ( PSW ) по результату этого вычитания. Следующая за командой сравнения команда (обычно это команда перехода ) будет анализировать биты в регистре состояния процессора и выполнять действия в зависимости от их значений (о командах перехода речь идет в разделе 3.3.4). В некоторых процессорах предусмотрены команды цепочечного сравнения двух последовательностей операндов, находящихся в памяти (например, в процессоре 8086 и совместимых с ним).
Логические команды
Логические команды выполняют над операндами логические (побитовые) операции, то есть они рассматривают коды операндов не как единое число, а как набор отдельных битов. Этим они отличаются от арифметических команд. Логические команды выполняют следующие основные операции:
логическое И, логическое ИЛИ, сложение по модулю 2 (Исключающее ИЛИ);
логические, арифметические и циклические сдвиги;
проверка битов и операндов;
установка и очистка битов (флагов) регистра состояния процессора ( PSW ).
Команды логических операций позволяют побитно вычислять основные логические функции от двух входных операндов. Кроме того, операция И ( AND ) используется для принудительной очистки заданных битов (в качестве одного из операндов при этом используется код маски, в котором разряды, требующие очистки, установлены в нуль). Операция ИЛИ ( OR ) применяется для принудительной установки заданных битов (в качестве одного из операндов при этом используется код маски, в котором разряды, требующие установки в единицу, равны единице). Операция "Исключающее ИЛИ" ( XOR ) используется для инверсии заданных битов (в качестве одного из операндов при этом применяется код маски, в котором биты, подлежащие инверсии, установлены в единицу). Команды требуют двух входных операндов и формируют один выходной операнд.
Команды сдвигов позволяют побитно сдвигать код операнда вправо (в сторону младших разрядов) или влево (в сторону старших разрядов). Тип сдвига (логический, арифметический или циклический) определяет, каково будет новое значение старшего бита (при сдвиге вправо) или младшего бита (при сдвиге влево), а также определяет, будет ли где-то сохранено прежнее значение старшего бита (при сдвиге влево) или младшего бита (при сдвиге вправо). Например, при логическом сдвиге вправо в старшем разряде кода операнда устанавливается нуль, а младший разряд записывается в качестве флага переноса в регистр состояния процессора. А при арифметическом сдвиге вправо значение старшего разряда сохраняется прежним (нулем или единицей), младший разряд также записывается в качестве флага переноса.
Циклические сдвиги позволяют сдвигать биты кода операнда по кругу (по часовой стрелке при сдвиге вправо или против часовой стрелки при сдвиге влево). При этом в кольцо сдвига может входить или не входить флаг переноса. В бит флага переноса (если он используется) записывается значение старшего бита при циклическом сдвиге влево и младшего бита при циклическом сдвиге вправо. Соответственно, значение бита флага переноса будет переписываться в младший разряд при циклическом сдвиге влево и в старший разряд при циклическом сдвиге вправо.
Для примера на рис. 3.12 показаны действия, выполняемые командами сдвигов вправо.
Команды проверки битов и операндов предназначены для установки или очистки битов регистра состояния процессора в зависимости от значения выбранных битов или всего операнда в целом. Выходного операнда команды не формируют. Команда проверки операнда ( TST ) проверяет весь код операнда в целом на равенство нулю и на знак (на значение старшего бита), она требует только одного входного операнда. Команда проверки бита ( BIT ) проверяет только отдельные биты, для выбора которых в качестве второго операнда используется код маски. В коде маски проверяемым битам основного операнда должны соответствовать единичные разряды.

Рис. 3.12. Команды сдвигов вправо.
Наконец, команды установки и очистки битов регистра состояния процессора (то есть флагов) позволяют установить или очистить любой флаг, что бывает очень удобно. Каждому флагу обычно соответствуют две команды, одна из которых устанавливает его в единицу, а другая сбрасывает в нуль. Например, флагу переноса C (от Carry) будут соответствовать команды CLC (очистка) и SEC или STC (установка).
3.3.4. Команды переходов
Команды переходов предназначены для организации всевозможных циклов, ветвлений, вызовов подпрограмм и т.д., то есть они нарушают последовательный ход выполнения программы. Эти команды записывают в регистр-счетчик команд новое значение и тем самым вызывают переход процессора не к следующей по порядку команде, а к любой другой команде в памяти программ. Некоторые команды переходов предусматривают в дальнейшем возврат назад, в точку, из которой был сделан переход, другие не предусматривают этого. Если возврат предусмотрен, то текущие параметры процессора сохраняются в стеке. Если возврат не предусмотрен, то текущие параметры процессора не сохраняются.
Команды переходов без возврата делятся на две группы:
командыбезусловных переходов;
командыусловных переходов.
В обозначениях этих команд используются слова Branch( ветвление ) и Jump (прыжок).
Команды безусловных переходов вызывают переход в новый адрес независимо ни от чего. Они могут вызывать переход на указанную величину смещения (вперед или назад) или же на указанный адрес памяти. Величина смещения или новое значение адреса указываются в качестве входного операнда.
Команды условных переходов вызывают переход не всегда, а только при выполнении заданных условий. В качестве таких условий обычно выступают значения флагов в регистре состояния процессора ( PSW ). То есть условием перехода является результат предыдущей операции, меняющей значения флагов. Всего таких условий перехода может быть от 4 до 16. Несколько примеров команд условных переходов:
переход, если равно нулю;
переход, если не равно нулю;
переход, если есть переполнение;
переход, если нет переполнения;
переход, если больше нуля;
переход, если меньше или равно нулю.
Если условие перехода выполняется, то производится загрузка в регистр-счетчик команд нового значения. Если же условие перехода не выполняется, счетчик команд просто наращивается, и процессор выбирает и выполняет следующую по порядку команду.
Специально для проверки условий перехода применяется команда сравнения ( CMP ), предшествующая команде условного перехода (или даже нескольким командам условных переходов). Но флаги могут устанавливаться и любой другой командой, например командой пересылки данных, любой арифметической или логической командой. Отметим, что сами команды переходов флаги не меняют, что как раз и позволяет ставить несколько команд переходов одну за другой.
Совместное использование нескольких команд условных и безусловных переходов позволяет процессору выполнять разветвленные алгоритмы любой сложности. Для примера на рис. 3.13 показано разветвление программы на две ветки с последующим соединением, а на рис. 3.14 — разветвление на три ветки с последующим соединением.
Команды переходов с дальнейшим возвратом в точку, из которой был произведен переход, применяются для выполнения подпрограмм, то есть вспомогательных программ. Эти команды называются также командами вызова подпрограмм (распространенное название — CALL ). Использование подпрограмм позволяет упростить структуру основной программы, сделать ее более логичной, гибкой, легкой для написания и отладки. В то же время надо учитывать, что широкое использование подпрограмм, как правило, увеличивает время выполнения программы.

Рис. 3.13. Реализация разветвления на две ветки.

Рис. 3.14. Реализация разветвления на три ветки.
Все команды переходов с возвратом предполагают безусловный переход (они не проверяют никаких флагов). При этом они требуют одного входного операнда, который может указывать как абсолютное значение нового адреса, так и смещение, складываемое с текущим значением адреса. Текущее значение счетчика команд (текущий адрес) сохраняется перед выполнением перехода в стеке.
Для обратного возврата в точку вызова подпрограммы (точку перехода) используется специальная команда возврата ( RET или RTS ). Эта команда извлекает из стека значение адреса команды перехода и записывает его в регистр-счетчик команд.
Особое место среди команд перехода с возвратом занимают команды прерываний (распространенное название — INT ). Эти команды в качестве входного операнда требуют номер прерывания (адрес вектора). Обслуживание таких переходов осуществляется точно так же, как и аппаратных прерываний. То есть для выполнения данного перехода процессор обращается к таблице векторов прерываний и получает из нее по номеру прерывания адрес памяти, в который ему необходимо перейти. Адрес вызова прерывания и содержимое регистра состояния процессора ( PSW ) сохраняются в стеке. Сохранение PSW — важное отличие команд прерывания от команд переходов с возвратом.
Команды прерываний во многих случаях оказываются удобнее, чем обычные команды переходов с возвратом. Сформировать таблицу векторов прерываний можно один раз, а потом уже обращаться к ней по мере необходимости. Номер прерывания соответствует номеру подпрограммы, то есть номеру функции, выполняемой подпрограммой. Поэтому команды прерывания гораздо чаще включаются в системы команд процессоров, чем обычные команды переходов с возвратом.
Для возврата из подпрограммы, вызванной командой прерывания, используется команда возврата из прерывания ( IRET или RTI ). Эта команда извлекает из стека сохраненное там значение счетчика команд и регистра состояния процессора ( PSW ).
Отметим, что у некоторых процессоров предусмотрены также команды условных прерываний, например, команда прерывания при переполнении.
Конечно, в данном разделе мы рассмотрели только основные команды, наиболее часто встречающиеся в процессорах. У конкретных процессоров могут быть и многие другие команды, не относящиеся к перечисленным группам команд. Но изучать их надо уже после того, как выбран тип процессора, подходящий для задачи, решаемой данной микропроцессорной системой

Лекция 8. Режимы работы микропроцессоров.
Быстродействие процессора — это одна из важнейших его характеристик, определяющая эффективность работы всей микропроцессорной системы в целом. Быстродействие процессора зависит от множества факторов, что затрудняет сравнение быстродействия даже разных процессоров внутри одного семейства, не говоря уже о процессорах разных фирм и разного назначения.
Выделим важнейшие факторы, влияющие на быстродействие процессора.
Прежде всего, быстродействие зависит от тактовой частоты процессора. Все операции внутри процессора выполняются синхронно, тактируются единым тактовым сигналом. Понятно, что чем больше тактовая частота, тем быстрее работает процессор, причем, например, двукратное увеличение тактовой частоты какого-то процессора снижает вдвое время выполнения команд этим процессором.
Однако надо учитывать, что разные процессоры выполняют одинаковые команды за разное количество тактов, причем количество тактов, затрачиваемых на команду, может изменяться от одного такта до десятков или даже сотен. В некоторых процессорах за счет распараллеливания микроопераций на команду тратится даже меньше одного такта.
Количество тактов, затрачиваемых на выполнение команды, зависит от сложности этой команды и от методов адресации операндов. Например, быстрее всего (за меньшее число тактов) выполняются команды пересылки данных между внутренними регистрами процессора. Медленнее всего (за большое число тактов) выполняются сложные арифметические команды с плавающей запятой, операнды которых хранятся в памяти.
Первоначально для количественной оценки производительности процессоров применялась единица измерения MIPS (MegaInstructionPerSecond), соответствовавшая количеству миллионов выполняемых инструкций (команд) за секунду. Естественно, изготовители микропроцессоров старались ориентироваться на самые быстрые команды. Понятно, что подобный показатель не слишком удачен. Для измерения производительности при выполнении вычислений с плавающей запятой (точкой) чуть позже была предложена единица FLOPS (FloatingpointOperationsPerSecond), но она по определению узкоспециальная, так как в некоторых системах операции с плавающей запятой просто не используются.
Другой аналогичный показатель быстродействия процессора — время выполнения коротких (быстрых) операций. Для примера в таблице 3.1 представлены показатели быстродействия нескольких 8-разрядных и 16-разрядных процессоров. В настоящее время этот показатель практически не используется, как и MIPS.
Время выполнения команд — важный, но далеко не единственный фактор, определяющий быстродействие. Большое значение имеет также структура системы команд процессора. Например, некоторым процессорам для выполнения какой-то операции понадобится одна команда, а другим процессорам — несколько команд. Какие-то процессоры имеют систему команд, позволяющую быстро решать задачи одного типа, а какие-то — задачи другого типа. Важны и методы адресации, разрешенные в данном процессоре, и наличие сегментирования памяти, и способы взаимодействия процессора с устройствами ввода/вывода и т.д.
Существенно влияет на быстродействие системы в целом и то, как процессор "общается" с памятью команд и памятью данных, применяется ли совмещение выборки команд из памяти с выполнением ранее выбранных команд.
Таблица 3.1. Параметры некоторых процессоров.
Процессор 8085 6800 68000 8086
Фирма IntelMotorolaMotorolaIntelРазрядность 8 8 16 16
Количество команд 80 72 61 133
Тактовая частота, МГц 3 1 8 5
Время выполнения коротких операций, мкс 1,3 2 0,5 0,4
Быстродействие системы в целом определяется также и разрядностью процессора. Например, 8-разрядный процессор будет медленнее пересылать и обрабатывать большие массивы данных, чем 16-разрядный процессор. Точно так же 16-разрядный процессор будет значительно медленнее работать с большими числами (большими, чем 65536), чем 32-разрядный процессор.
При высокой сложности решаемых задач быстродействие системы зависит и от общего объема системной памяти. Ведь если системной памяти мало, системе приходится сохранять данные во внешней памяти (например, на магнитном диске), а это очень сильно (на несколько порядков) замедляет работу. Так что разрядность шины адреса процессора тоже важна.
Поэтому количественные показатели производительности процессоров очень условны, они лишь косвенно характеризуют быстродействие системы на базе этого процессора. Тем не менее, некоторые производители предлагают количественные показатели для своих процессоров, которые характеризуют время выполнения специально составленных тестовых программ, содержащих самые различные команды в тех или иных соотношениях.
Так, для сравнения производительности 32-разрядных процессоров фирма Intel, производящая процессоры для персональных компьютеров, в 1992 году предложила свою единицу измерения iCOMPIndex (IntelCOmparativeMicroprocessorPerformance). Для вычисления этого показателя используется смесь 16- и 32-битных целочисленных команд, команд с плавающей точкой, команд обработки графики и видео. В качестве базового взят процессор i486SX-25, чей индекс принят равным 100. В Таблице 3.2 приведены индексы iCOMP для некоторых процессоров фирмы Intel. Как видно из таблицы, за счет более развитой архитектуры процессоры семейства 486 всегда быстрее процессоров семейства 386, а любой Pentium быстрее любого процессора из семейства 486. Тактовая частота (указана в таблице через черточку) определяет производительность только в пределах одного семейства. В 1996 году разработчиками Intel был предложен другой показатель — iCOMPIndex 2.0, для вычисления которого не используются 16-разрядные команды, зато введен мультимедийный тест, а за базу взят Pentium-120, чей индекс принят равным 100. В таблице 3.3 представлены эти показатели для некоторых типов процессоров Intel.
При этом надо учитывать, что измерения проводятся в составе системы, настроенной на максимальное быстродействие именно данных процессоров, и только самой фирмой Intel.
Ценность этих показателей и всех им подобных не слишком велика. Для конкретного компьютера и разных процессоров величина показателя может предоставить вполне объективные данные, позволяющие оценить, например, целесообразность замены процессора на более мощный. Но усредненность показателей iCOMP не позволяет точно сказать, как будет себя вести процессор в различных задачах, которые ориентированы на преимущественное использование разных типов команд.
Таблица 3.2. Индексы производительности iCOMP.
i486SX-25 100 i486DX4-100 435
i386DX-33 56 Pentium-60 510
i486SX-33 136 Pentium-100 815
i486DX2-66 297 Pentium-133 1110
Таблица 3.3. Индексы производительности iCOMPIndex 2.0.
Pentium-100 90 Pentium MMX-166 160
Pentium-120 100 Pentium MMX-233 203
Pentium-150 114 Pentium Pro-200 220
Pentium-200 142 Pentium II-266 303
Точная оценка быстродействия процессора возможна только в составе конкретной системы при решении определенной задачи. Но все перечисленные здесь факторы можно и нужно учитывать при выборе процессора. А количественные показатели помогают сделать выбор.

Лекция 9. Принципы формирования адресного пространства.
Логическое адресное пространство
Для адресации операндов в физическом адресном пространстве программы используют логическую адресацию. Процессор автоматически транслирует логические адреса в физические, выдаваемые затем на системную шину.
Архитектура компьютера различает физическое адресное пространство (ФАП) и логическое адресное пространство (ЛАП). Физическое адресное пространство представляет собой простой одномерный массив байтов, доступ к которому реализуется аппаратурой памяти по адресу, присутствующему на шине адреса микропроцессорной системы. Логическое адресное пространство организуется самим программистом исходя из конкретных потребностей. Трансляцию логических адресов в физические осуществляет блок управления памятью MMU.
В архитектуре современных микропроцессоров ЛАП представляется в виде набора элементарных структур: байтов, сегментов и страниц. В микропроцессорах используются следующие варианты организации логического адресного пространства:
плоское (линейное) ЛАП: состоит из массива байтов, не имеющего определенной структуры; трансляция адреса не требуется, так как логический адрес совпадает с физическим;сегментированное ЛАП: состоит из сегментов - непрерывных областей памяти, содержащих в общем случае переменное число байтов; логический адрес содержит 2 части: идентификатор сегмента и смещение внутри сегмента; трансляцию адреса проводит блок сегментации MMU;
страничное ЛАП: состоит из страниц - непрерывных областей памяти, каждая из которых содержит фиксированное число байтов. Логический адрес состоит из номера (идентификатора) страницы и смещения внутри страницы; трансляция логического адреса в физический проводится блоком страничного преобразования MMU;
сегментно-страничное ЛАП: состоит из сегментов, которые, в свою очередь, состоят из страниц; логический адрес состоит из идентификатора сегмента и смещения внутри сегмента. Блок сегментного преобразования MMU проводит трансляцию логического адреса в номер страницы и смещение в ней, которые затем транслируются в физический адрес блоком страничного преобразования MMU.
Таким образом, основой получения физического адреса памяти служит логический адрес. В какой-то степени логическое адресное пространство, с которым имеет дело программист, можно сравнить со структурой книги, где аналогом сегмента выступает рассказ, страница книги соответствует странице ЛАП, а искомая информация - это некоторое слово. При этом если память организована как линейная, то номер искомого слова задается в явном виде и просто отсчитывается от начала книги. При сегментном представлении памяти искомое слово определяется его номером в заданном рассказе. Страничное представление памяти предполагает задание информации о слове в виде номера страницы в книге и номера слова на указанной странице. При сегментно-страничном представлении логический адрес слова задается номером слова в определенном рассказе. В этом случае по оглавлению книги определяется номер страницы, с которой начинается указанный рассказ. Затем, зная количество слов на странице и положение слова в рассказе, можно вычислить страницу книги и положение искомого слова на этой странице.
Формирование физического адреса в универсальном микропроцессоре при различных режимах работы
Микропроцессор способен работать в двух режимах: реальном и защищенном.
При работе в реальном режиме возможности процессора ограничены: емкость адресуемой памяти составляет 1 Мбайт, отсутствует страничная организация памяти, сегменты имеют фиксированную длину 216 байт.
Этот режим обычно используется на начальном этапе загрузки компьютера для перехода в защищенный режим.
В реальном режиме сегментные регистры процессора содержат старшие 16 бит физического адреса начала сегмента. Сдвинутый на 4 разряда влево селектор дает 20-разрядный базовый адрес сегмента. Физический адрес получается путем сложения этого адреса с 16-разрядным значением смещения в сегменте, формируемого по заданному режиму адресации для операнда или извлекаемому из регистра EIP для команды (рис. 3.1). По полученному адресу происходит выборка информации из памяти.

Рис. 3.1. Схема получения физического адреса
Наиболее полно возможности микропроцессора по адресации памяти реализуются при работе в защищенном режиме. Объем адресуемой памяти увеличивается до 4 Гбайт, появляется возможность страничного режима адресации. Сегменты могут иметь переменную длину от 1 байта до 4 Гбайт.
Общая схема формирования физического адреса микропроцессором, работающим в защищенном режиме, представлена на рис. 3.2.
Как уже отмечалось, основой формирования физического адреса служит логический адрес. Он состоит из двух частей: селектора и смещения в сегменте.
Селектор содержится в сегментном регистре микропроцессора и позволяет найти описание сегмента (дескриптор) в специальной таблице дескрипторов. Дескрипторы сегментов хранятся в специальных системных объектах глобальной (GDT) и локальных (LDT) таблицах дескрипторов. Дескриптор играет очень важную роль в функционировании микропроцессора, от формирования физического адреса при различной организации адресного пространства и до организации мультипрограммного режима работы. Поэтому рассмотрим его структуру более подробно.
Сегменты микропроцессора, работающего в защищенном режиме, характеризуются большим количеством параметров. Поэтому в универсальных 32-разрядных микропроцессорах информация о сегменте хранится в
Рис. 3.2. Формирование физического адреса при сегментно-страничной организации памяти
специальной 8-байтной структуре данных, называемой дескриптором, а за сегментными регистрами закреплена основная функция - определение местоположения дескриптора.
Структура дескриптора сегмента представлена на рис. 3.3.

Рис. 3.3. Структура дескриптора сегмента
Мы будем рассматривать именно структуру, а не формат дескриптора, так как при переходе от микропроцессора i286 к 32-разрядному МП расположение отдельных полей дескриптора потеряло свою стройность и частично стало иметь вид "заплаток", поставленных с целью механического увеличения разрядности этих полей.
32-разрядное поле базового адреса позволяет определить начальный адрес сегмента в любой точке адресного пространства в 232 байт (4 Гбайт).
Поле предела (limit) указывает длину сегмента (точнее, длину сегмента минус 1: если в этом поле записан 0, то это означает, что сегмент имеет длину 1) в адресуемых единицах, то есть максимальный размер сегмента равен 220 элементов.
Величина элемента определяется одним из атрибутов дескриптора битом G ( Granularity - гранулярность, или дробность):

Таким образом, сегмент может иметь размер с точностью до 1 байта в диапазоне от 1 байта до 1 Мбайт (при G = 0 ). При объеме страницы в 212 = 4 Кбайт можно задать объем сегмента до 4 Гбайт (при G = l ):

Так как в архитектуре IA-32 сегмент может начинаться в произвольной точке адресного пространства и иметь произвольную длину, сегменты в памяти могут частично или полностью перекрываться.
Бит размерности( Defaultsize ) определяет длину адресов и операндов, используемых в команде по умолчанию:

Конечно, этот бит предназначен не для обычного пользователя, а для системного программиста, применяющего его, например, для отметки сегментов для сбора"мусора" или сегментов, базовые адреса которых нельзя модифицировать. Этот бит доступен только программам, работающим на высшем уровне привилегий. Микропроцессор в своей работе его не меняет и не использует.
Байт доступа определяет основные правила обращения с сегментом.
Бит присутствия P (Present) показывает возможность доступа к сегменту. Операционная система (ОС) отмечает сегмент, передаваемый из оперативной во внешнюю память, как временно отсутствующий, уставливая в его дескрипторе P = 0. При P = 1 сегмент находится в физической памяти. Когда выбирается дескриптор с P = 0 (сегмент отсутствует в ОЗУ), поля базового адреса и предела игнорируются. Это естественно: например, как может идти речь о базовом адресе сегмента, если самого сегмента вообще нет в оперативной памяти? В этой ситуации процессор отвергает все последующие попытки использовать дескриптор в командах, и определяемое дескриптором адресное пространство как бы"пропадает".
Возникает особый случай неприсутствия сегмента. При этом операционная система копирует запрошенный сегмент с диска в память (при этом, возможно, удаляя другой сегмент), загружает в дескриптор базовый адрес сегмента, устанавливает P = 1 и осуществляет рестарт той команды, которая обратилась к отсутствовавшему в ОЗУ сегменту.
Двухразрядное поле DPL (DescriptorPrivilegeLevel) указывает один из четырех возможных (от 0 до 3) уровней привилегий дескриптора, определяющий возможность доступа к сегменту со стороны тех или иных программ (уровень 0 соответствует самому высокому уровню привилегий).
Бит обращения A (Accessed) устанавливается в"1" при любом обращении к сегменту. Используется операционной системой для того, чтобы отслеживать сегменты, к которым дольше всего не было обращений.
Пусть, например, 1 раз в секунду операционная система в дескрипторах всех сегментов сбрасывает бит А. Если по прошествии некоторого времени необходимо загрузить в оперативную память новый сегмент, места для которого недостаточно, операционная система определяет"кандидатов" на то, чтобы очистить часть оперативной памяти, среди тех сегментов, в дескрипторах которых бит А до этого момента не был установлен в"1", то есть к которым не было обращения за последнее время.
Поле типа в байте доступа определяет назначение и особенности использования сегмента. Если бит S ( System - бит 4 байта доступа) равен 1, то данный дескриптор описывает реальный сегмент памяти. Если S = 0, то этот дескриптор описывает специальный системный объект, который может и не быть сегментом памяти, например, шлюз вызова, используемый при переключении задач, или дескриптор локальной таблицы дескрипторов LDT. Назначение битов <3...0> байта доступа определяется типом сегмента (рис. 3.4).

Рис. 3.4. Формат поля типа байта доступа
В сегменте кода: бит подчинения, или согласования, C (Conforming) определяет дополнительные правила обращения, которые обеспечивают защиту сегментов программ. При C = 1 данный сегмент является подчиненным сегментом кода. В этом случае он намеренно лишается защиты по привилегиям. Такое средство удобно для организации, например, подпрограмм, которые должны быть доступны всем выполняющимся в системе задачам. При C = 0 - это обычный сегмент кода; бит считывания R (Readable) устанавливает, можно ли обращаться к сегменту только на исполнение или на исполнение и считывание, например, констант как данных с помощью префикса замены сегмента. При R = 0 допускается только выборка из сегмента команд для их выполнения. При R = 1 разрешено также чтение данных из сегмента.
Запись в сегмент кода запрещена. При любой попытке записи возникает программное прерывание.
В сегменте данных:
ED (ExpandDown) - бит направления расширения. При ED = 1 этот сегмент является сегментом стека и смещение в сегменте должно быть больше размера сегмента. При ED = 0 - это сегмент собственно данных (смещение должно быть меньше или равно размеру сегмента);
бит разрешения записи W(Writeable). При W = 1 разрешено изменение сегмента. При W = 0 запись в сегмент запрещена, при попытке записи в сегмент возникает программное прерывание.
В случае обращения за операндом смещение в сегменте формируется микропроцессором по режиму адресации операнда, заданному в команде. Смещение в сегменте кода извлекается из регистра - указателя команд EIP.
Сумма извлеченного из дескриптора начального адреса сегмента и сформированного смещения в сегменте дает линейный адрес (ЛА).
Если в микропроцессоре используется только сегментное представление адресного пространства, то полученный линейный адрес является также и физическим.
Если помимо сегментного используется и страничный механизм организации памяти, то линейный адрес представляется в виде двух полей: старшие разряды содержат номер виртуальной страницы, а младшие смещение в странице. Преобразование номера виртуальной страницы в номер физической проводится с помощью специальных системных таблиц: каталога таблиц страниц (КТС) и таблиц страниц (ТС). Положение каталога таблиц страниц в памяти определяется системным регистром CR3. Физический адрес вычисляется как сумма полученного из таблицы страниц адреса физической страницы и смещения в странице, полученного из линейного адреса.

Лекция 10. Системы адресации в микропроцессорах.
Одной из важнейших архитектурных характеристик МП является перечень возможных способов обращения к памяти или видов адресации. Возможности МП по адресации существенны с двух точек зрения.
Во-первых, большой объем памяти требует большой длины адреса, так как n-разрядный адрес позволяет обращаться к памяти емкостью 2n слов. Типовые 8-разрядные слова МП дают возможность непосредственно обращаться только к 256 ячейкам памяти, что явно недостаточно. Если учесть, что обращение к памяти является наиболее часто встречающейся операцией, то очевидно, что эффективность использования МП во многом определяется способами адресации к памяти большого объема при малой разрядности МП.
Во-вторых, для удобства программирования желательно иметь простую систему формирования адресов данных при работе с массивами, таблицами и указателями. Рассмотрим способы решения этих проблем.
Если адресное поле в команде является ограниченным и недостаточным для непосредственного обращения к любой ячейке памяти, то память в таких случаях разбивают на страницы, где страницей считается 2n ячеек памяти.
Для согласования адресного поля команды малой разрядности с памятью большого объема (для решения “страничной” проблемы) в МП применяются различные виды адресации:
Прямая адресация к текущей странице. При такой адресации программный счетчик разбивается на два поля; старшие разряды указывают номер страницы, а младшие - адрес ячейки на странице. В адресном поле команды размещается адрес ячейки на странице, а адрес страницы должен быть установлен каким-то другим способом, например с помощью специальной команды.
Прямая адресация с использованием страничного регистра.  В МП должен быть предусмотрен программно доступный страничный регистр, загружаемый специальной командой. Этот регистр добавляет к адресному полю команды несколько разрядов, необходимых для адресации ко всей памяти.
Прямая адресация с использованием двойных слов.  Для увеличения длины адресного поля команды под адрес отводится дополнительное слово (а если нужно, то и два).
Адресация относительно программного счетчика.  Адресное поле команды рассматривается как целое со знаком, которое складывается с содержимым программного счетчика для формирования исполнительного адреса. Такой способ относительной адресации создает плавающую страницу и упрощает перемещение программ в памяти.
Адресация относительно индексного регистра.  Исполнительный адрес образуется суммированием содержимого индексного регистра и адресного поля команды, рассматриваемого как целое со знаком. Индексный регистр загружается специальными командами.
Косвенная адресация. При косвенной адресации в адресном поле команды указывается адрес на текущей странице, по которому хранится исполнительный адрес. В поле команды при этом требуется дополнительный разряд - признак косвенной адресации. Исполнительный адрес может храниться не в ячейке памяти, а в регистре общего назначения. В этом случае косвенная адресация называется регистровой.

Лекция 11. Память как функциональный узел.
Для хранения информации в микропроцессорных системах используются запоминающие устройства на основе полупроводниковых материалов, а также магнитные и оптические внешние носители. Внутренняя память компьютера представлена в виде отдельных интегральных микросхем (ИМС) собственно памяти и элементов, включенных в состав других ИМС, не выполняющих непосредственно функцию хранения программ и данных - это и внутренняя память центрального процессора, и видеопамять, и контроллеры различных устройств.
Для создания элементов запоминающих устройств, в основном, применяют СБИС со структурой МДП (металл-диэлектрик-полупроводник) на основе кремния (в связи с тем, что в качестве диэлектрика чаще всего используют его оксид Si02, то их обычно называют МОП (металл-оксид-полупроводник) структурами).
Для функционирования компьютерной системы необходимо наличие как оперативного запоминающего устройства (ОЗУ), так и постоянного запоминающего устройства (ПЗУ), обеспечивающего сохранение информации при выключении питания. ОЗУ может быть статическим и динамическим, а ПЗУ однократно или многократно программируемым.
Степень интеграции, быстродействие, электрические параметры ЗУ при записи и хранении информации, помехоустойчивость, долговременная стабильность, стабильность к внешним неблагоприятным факторам при функционировании и т.д. зависят от физических принципов работы приборов, применяемых материалов при производстве ИМС и параметров технологических процессов при их изготовлении.
На развитие микропроцессорной техники решающее значение оказывает технология производства интегральных схем.
Полупроводниковые интегральные микросхемы подразделяются на биполярные ИМС и МОП схемы, причем первые - более быстродействующие, а вторые имеют большую степень интеграции, меньшую потребляемую мощность и меньшую стоимость. Цифровые микросхемы могут по идеологии, конструкторскому решению, технологии относится к разным семействам, но выполнять одинаковую функцию, т.е. быть инвертором, триггером или процессором. Наиболее популярными семействами можно назвать у биполярных ИМС: ТТЛ (транзисторно-транзисторная логика), ТТЛШ (с диодами Шоттки), ЭСЛ (эмиттерно-связанная логика); у МДП: n-МОП и КМОП.
Базовым материалом для изготовления ИМС является кремний. Несмотря на то, что он не обладает высокой подвижностью носителей заряда (mn=1500 см2/Вс), а значит, приборы на его основе теоретически будут уступать по быстродействию приборам на основе арсенида галлия GaAs, однако система Si-SiO2 существенно более технологична. С другой стороны, приборы на кремниевой основе кремний-оксид кремния) обладают совершенной границей раздела Si-SiO2, химической стойкостью, электрической прочностью и другими уникальными свойствами. Технологический цикл производства ИМС включает: - эпитаксиальное наращивание слоя на подготовленную подложку; - наращивание слоя SiO2 на эпитаксиальный слой; - нанесение фоторезиста, маскирование и вытравливание окон в слое; - легирование примесью путем диффузии или имплантацией; - аналогично повторение операций для подготовки других легиро-ванных областей; - повторение операций для создания окон под контактные площадки; - металлизацию всей поверхности алюминием или поликремнием; - повторение операций для создания межсоединений; - удаление излишков алюминия или поликремния; - контроль функционирования; - помещение в корпус; - выходной контроль.
Наиболее критичным для увеличения степени интеграции является процесс литографии, т.е. процесс переноса геометрического рисунка шаблона на поверхность кремниевой пластины. С помощью этого рисунка формируют такие элементы схемы, как электроды затвора, контактные окна, металлические межкомпонентные соединения и т.п. На первой стадии изготовления ИМС после завершения испытаний схемы или моделирования с помощью ЭВМ формируют геометрический рисунок топологии схемы. С помощью электронно-лучевого устройства или засветки другим способом топологический рисунок схемы последовательно, уровень за уровнем можно переносить непосредственно на поверхность кремниевой пластины, но чаще на фоточувствительные стеклянные пластины, называемые фотошаблонами. Между переносом топологического рисунка с двух шаблонов могут быть проведены операции ионной имплантации, загонки, окисления и металлизации. После экспонирования пластины помещают в раствор, который проявляет изображение в фоточувствительном материале - фоторезисте.
Увеличивая частоту колебаний световой волны, можно уменьшить ширину линии рисунка, т. е. сократить размеры интегральных схем. Но возможности этой технологии ограничены, поскольку рентгеновские лучи трудно сфокусировать. Один из вариантов - использовать сам свет в качестве шаблона (так называемое позиционирование атомов фокусированным лазерным лучом). Этим способом, осветив двумя взаимно перпендикулярными лазерными пучками, можно изготовить решетку на кремниевой пластине из хромированных точек размером 80 нм. Сканируя лазером поверхность для создания произвольного рисунка интегральных наносхем, теоретически можно создавать схемы с шириной линии рисунка в 10 раз меньшей, чем сегодняшние. Второе ограничение при литографии накладывает органическая природа фоторезиста. Путь ее решения - применение неорганических материалов, например, оксидов ванадия.
Физические процессы, протекающие в изделиях микроэлектроники (и в микросхемах памяти тоже), технология изготовления и конструктивные особенности ИМС высокой степени интеграции могут влиять на архитектуру и методы проектирования ЭВМ и систем. Естественно, уменьшение геометрических размеров транзисторов приводит к увеличению электрических полей, особенно в районе стока. Это может привести к развитию лавинного пробоя и, как следствие, к изменению выходной ВАХ МОП транзистора: - включению паразитного биполярного транзистора (исток-подложка-сток); - неравномерному заряжению диэлектрика у стока; - деградации приповерхностной области полупроводника; - пробою диэлектрика.
Поэтому необходимо уменьшение напряжения питания СБИС до 3.6, 3.3, 3 В и т.п., при этом известно, что блок питания компьютера обеспечивает обычно напряжения +5В, +12В, -12В.
Однако инжекция и заряжение диэлектрика не всегда процесс отрицательный или паразитный. Уменьшение напряжения записи информационного заряда в репрограммируемых ЗУ ниже 12 В позволяет их программировать внутри микропроцессорной системы, а не специальным устройством (программатором). Тогда для разработчика открываются большие возможности для программирования не только адреса микросхем контроллера или адаптера в пространстве устройств ввода/вывода или номера прерывания, но и творить необходимое устройство самому (если иметь такую ИМС). Однако отметим, что кроме "хозяина" это может сделать и компьютерный вирус, который будет, естественно, разрушать, а не созидать что-либо.

Лекция 12. Принципы организации памяти.
Основные характеристики полупроводниковой памяти
Полупроводниковая память имеет большое число характеристик и параметров, которые необходимо учитывать при проектировании систем:
1. Емкость памяти определяется числом бит хранимой информации. Емкость кристалла обычно выражается также в битах и составляет 1024 бита, 4 Кбит, 16 Кбит, 64 Кбит и т.п. Важной характеристикой кристалла является информационная организация кристалла памяти MxN, где M - число слов, N - разрядность слова. Например, кристалл емкостью 16 Кбит может иметь различную организацию: 16 Кx1, 4 Кx2 Кx8. При одинаковом времени обращения память с большей шириной выборки обладает большей информационной емкостью.
2. Временные характеристики памяти.
Время доступа - временной интервал, определяемый от момента, когда центральный процессор выставил на шину адреса адрес требуемой ячейки памяти и послал по шине управления приказ на чтение или запись данных, до момента осуществления связи адресуемой ячейки с шиной данных.
Время восстановления - это время, необходимое для приведения памяти в исходное состояние после того, как ЦП снял с ША - адрес, с ШУ - сигнал "чтение" или "запись" и с ШД - данные.
3. Удельная стоимость запоминающего устройства определяется отношением его стоимости к информационной емкости, т.е. определяется стоимостью бита хранимой информации.
4. Потребляемая энергия (или рассеиваемая мощность) приводится для двух режимов работы кристалла: режима пассивного хранения информации и активного режима, когда операции записи и считывания выполняются с номинальным быстродействием. Кристаллы динамической МОП-памяти в резервном режиме потребляют примерно в десять раз меньше энергии, чем в активном режиме. Наибольшее потребление энергии, не зависящее от режима работы, характерно для кристаллов биполярной памяти.
5. Плотность упаковки определяется площадью запоминающего элемента и зависит от числа транзисторов в схеме элемента и используемой технологии. Наибольшая плотность упаковки достигнута в кристаллах динамической МОП-памяти. 6. Допустимая температура окружающей среды обычно указывается отдельно для активной работы, для пассивного хранения информации и для нерабочего состояния с отключенным питанием. Указывается тип корпуса, если он стандартный, или чертеж корпуса с указанием всех размеров, маркировкой и нумерацией контактов, если корпус новый. Приводятся также условия эксплуатации: рабочее положение, механические воздействия, допустимая влажность и другие.
Лекция 13. Виртуальная память микропроцессора.
Виртуальная память- схема адресации памяти компьютера, при которой память представляется программному обеспечению непрерывной и однородной, в то время как в реальности для фактического хранения данных используются отдельные (разрывные) области различных видов памяти, включая кратковременную (оперативную) и долговременную (жёсткие диски, твёрдотельные накопители).
Страничный способ организации виртуальной памяти:
Способ разрывного размещения задач в памяти при котором все фрагменты задачи одинакового размера кратного степени двойки называется страничным, а фрагменты страницами. В этом случае память разбивается на физические страницы (кадры, фреймы). А программа разбивается на виртуальные страницы. Часть виртуальных страниц размещается в ОЗУ, а часть во внешней памяти. Место на жестком диске, где размещаются виртуальные страницы называют файлом подкачки или страничным файлом (SWAP-файл).
Физический адрес ячейки памяти определяется парой (Pp, i), а виртуальный (Pv, i). Pv – номер виртуальной страницы, Pp – номер физической страницы, а I – номер ячейки (индекс) внутри страницы. Для отображения виртуального адресного пространства на физическую память для каждой задачи необходимо иметь таблицы страниц для трансляции адресных пространств. Для описания каждой страницы диспетчер памяти операционной системы заводит соответствующий дескриптор. По номеру виртуальной страницы в таблице дескрипторов текущей задачи находится соответствующий элемент (дескриптор). Если бит присутствия равен единице, то данная страница находится в ОЗУ и в дескрипторе находится номер физической страницы, отведенной под данную виртуальную страницу.

Основным достоинством страничной организации является минимально возможная фрагментация, поскольку на каждую задачу может приходится по одной незаполненной странице.
Недостатки:
1) Накладные расходы, т.е. таблицы страниц нужно размещать в памяти и их нужно обрабатывать.
2) Программы разбиваются на страницы случайно без учета логических взаимосвязей имеющихся в коде программы. Поэтому межстраничные переходы осуществляются чаще нежели межсегментные и трудно организовать разделение программных модулей между выполняющимися программами.
Сигментно- страничная организация виртуальной памяти:
Виртуальная память каждой программы делится на части, называемые сегментами, с независимой адресацией байтов внутри каждой части. При этом к виртуальному адресу добавляются дополнительные разряды левее номера страницы. Эти разряды определят номер сегмента.
     Возникает определенная иерархия в организации программ, состоящая из четырех ступеней: программа-сегмент-страница-байт. Этой иерархии программ соответствует иерархия таблиц, служащих для перевода виртуальных адресов в физические. Программная таблица для каждой программы, загруженной в систему, указывает начальный адрес соответствующей сегментной таблицы. Сегментная таблица перечисляет сегменты данной программы с указанием начального адреса страничной таблицы, относящейся к данному сегменту. Страничная таблица определяет расположение каждой из страниц сегмента в памяти. Страницы сегмента могут располагаться не подряд – часть страниц данного сегмента может находиться в ОП, остальные во внешней памяти.
Виртуальная память в МП 386+:
При организации виртуальной памяти используется три вида адресов:
        Логический адрес ЛА ∈ ВАП.
        Физический адрес ФА ∈ ФАП.
        Линейный адрес – представляет собой объединение базового адреса сегмента и смещения в пределах сегмента.
Любое описание сегмента состоит из двух частей: программно- доступной, называемой селектором сегмента и размещаемой в одном из сегментных регистров, и скрытой, называемой дескриптором сегмента и находящейся в одной из специальных структур в ОП, называемых таблицами дескрипторов. Считается, что дескриптор после выборки размещается в скрытой части регистра сегментов, находящейся в памяти.

Основные поля сегмента размещены в различных частях дескриптора: 32-битная база сегмента размещена в трех частях и определяет его место внутри 4-Гбайтного линейного адресного пространства, 20-битная граница сегмента размещена в двух частях и определяет его длину, остальные биты дескриптора образуют поле атрибутов. Длина сегмента, в зависимости от бита дробности (G), задается либо в байтах, либо в страницах:
        0, байт;
        1, страница (С = 4Кб) 220 * 215 = 232 (4Гб).
Бит D задает тип данных, размещенных в сегменте:
        D = 0 – 16-битные данные,
        D = 1 – 32-битные данные.
AVL – бит, предоставляемый в распоряжение пользователя (available). Бит P – бит присутствия: 0 – на диске, 1 – в оперативной памяти Биты DPL – уровень привилегий дескриптора (DescriptorPrivilegeLevel), обеспечивающий защиту доступа. При доступе к сегменту запрашиваемый уровень привилегий RPL или текущий уровень привилегий CPL (соответствует уровню привилегий дескриптора кода выполняемой сейчас программы) должны быть больше DPL (в логическом смысле; для сравнения их числовых значений отношение должно быть меньше). Бит S – бит режима сегмента: пользовательский или системный (User / Supervisor). Биты типа говорят, является сегмент программой или данными и определяют режим доступа. Бит А – бит обращения к сегменту, устанавливается при обращении к сегменту и через некоторое время сбрасывается операционной системой (обеспечивает дисциплины замещения сегментов).

Лекция 14. Прерывания в микропроцессоре.
Прерывание (англ. interrupt) — сигнал, сообщающий процессору о наступлении какого-либо события. При этом выполнение текущей последовательности команд приостанавливается, и управление передаётся обработчику прерывания, который реагирует на событие и обслуживает его, после чего возвращает управление в прерванный код.[1]В зависимости от источника возникновения сигнала, прерывания делятся на:
асинхронные, или внешние (аппаратные) — события, которые исходят от внешних источников (например, периферийных устройств) и могут произойти в любой произвольный момент: сигнал от таймера, сетевой карты или дискового накопителя, нажатие клавиш клавиатуры, движение мыши. Факт возникновения в системе такого прерывания трактуется как запрос на прерывание (англ. Interrupt request, IRQ);
синхронные, или внутренние — события в самом процессоре как результат нарушения каких-то условий при исполнении машинного кода: деление на ноль или переполнение стека, обращение к недопустимым адресам памяти или недопустимый код операции;
программные (частный случай внутреннего прерывания) — инициируются исполнением специальной инструкции в коде программы. Программные прерывания, как правило, используются для обращения к функциям встроенного программного обеспечения (HYPERLINK "https://ru.wikipedia.org/wiki/Firmware" \o "Firmware"firmware), драйверов и операционной системы.
Термин «ловушка» (англ. trap) иногда используется как синоним термина «прерывание» или «внутреннее прерывание». Как правило, словоупотребление устанавливается в документации производителя конкретной архитектуры процессора.
1Маскирование2Приоритизация3Таблица прерываний4Программное прерывание5См. также6Примечания7ЛитератураМаскирование
Внешние прерывания в зависимости от возможности запрета делятся на:
маскируемые — прерывания, которые можно запрещать установкой соответствующих битов в регистре маскирования прерываний (в x86-процессорах — сбросом флага IF в регистре флагов);
немаскируемые (англ. Non-maskableinterrupt, NMI) — обрабатываются всегда, независимо от запретов на другие прерывания. К примеру, такое прерывание может быть вызвано сбоем в микросхеме памяти.
Обработчики прерываний обычно пишутся таким образом, чтобы время их обработки было как можно меньшим, поскольку во время их работы могут не обрабатываться другие прерывания, а если их будет много (особенно от одного источника), то они могут теряться. В Windows для этого применяется механизм отложенного вызова процедур.
ПриоритизацияДо окончания обработки прерывания обычно устанавливается запрет на обработку этого типа прерывания, чтобы процессор не входил в цикл обработки одного прерывания. Приоритизация означает, что все источники прерываний делятся на классы и каждому классу назначается свой уровень приоритета запроса на прерывание. Приоритеты могут обслуживаться как относительные и абсолютные.
Относительное обслуживание прерываний означает, что если во время обработки прерывания поступает более приоритетное прерывание, то это прерывание будет обработано только после завершения текущей процедуры обработки прерывания.
Абсолютное обслуживание прерываний означает, что если во время обработки прерывания поступает более приоритетное прерывание, то текущая процедура обработки прерывания вытесняется, и процессор начинает выполнять обработку вновь поступившего более приоритетного прерывания. После завершения этой процедуры процессор возвращается к выполнению вытесненной процедуры обработки прерывания.
Таблица прерываний
Вектор прерывания — закреплённый за устройством номер, который идентифицирует соответствующий обработчик прерываний. Векторы прерываний объединяются в таблицу векторов прерываний, содержащую адреса обработчиков прерываний. Местоположение таблицы зависит от типа и режима работы процессора.
Программное прерывание
Программное прерывание — синхронное прерывание, которое может осуществить программа с помощью специальной инструкции.
В процессорах архитектуры x86 для явного вызова синхронного прерывания имеется инструкция Int, аргументом которой является номер прерывания (от 0 до 255). В IBM PC-совместимых компьютерах обработку некоторых прерываний осуществляют подпрограммы BIOS, хранящиеся в ПЗУ, и прерывание служит интерфейсом для доступа к сервису, предоставляемому BIOS. Также обслуживание прерываний могут взять на себя BIOS карт расширений (например, сетевых или видеокарт), операционная система и даже обычные (прикладные) программы, которые постоянно находятся в памяти во время работы других программ (т. н. резидентные программы). В отличие от реального режима, в защищённом режиме x86-процессоров обычные программы не могут обслуживать прерывания, эта функция доступна только системному коду (операционной системе).
MS-DOS использует для взаимодействия со своими модулями и прикладными программами прерывания с номерами от 20h до 3Fh (числа даны в шестнадцатеричной системе счисления, как это принято при программировании на языке ассемблера x86). Например, доступ к основному множеству функций MS-DOS осуществляется исполнением инструкции Int 21h (при этом номер функции и её аргументы передаются в регистрах). Это распределение номеров прерываний не закреплено аппаратно и другие программы могут устанавливать свои обработчики прерываний вместо или поверх уже имеющихся обработчиков, установленных MS-DOS или другими программами, что, как правило, используется для изменения функциональности или расширения списка системных функций. Также этой возможностью пользуются вирусы
Лекция 15. Организация многозадачности в микропроцессоре.
Многозада́чность (англ. multitasking) — свойство операционной системы или среды выполнения обеспечивать возможность параллельной (или псевдопараллельной) обработки нескольких процессов. Истинная многозадачность операционной системы возможна только в распределённых вычислительных системах.
Существует 2 типа многозадачности[1]:
Процессная многозадачность (основанная на процессах — одновременно выполняющихся программах). Здесь программа — наименьший элемент управляемого кода, которым может управлять планировщик операционной системы. Более известна большинству пользователей (работа в текстовом редакторе и прослушивание музыки).
Поточная многозадачность (основанная на потоках). Наименьший элемент управляемого кода — поток (одна программа может выполнять 2 и более задачи одновременно).
Многопоточность — специализированная форма многозадачности[1].
Содержание
 [показать] 
1Свойства многозадачной среды2Трудности реализации многозадачной среды3История многозадачных операционных систем4Типы псевдопараллельной многозадачности4.1Невытесняющая многозадачность4.2Совместная или кооперативная многозадачность4.3Вытесняющая, или приоритетная, многозадачность (режим реального времени)5Проблемные ситуации в многозадачных системах5.1Голодание (starvation)5.2Гонка (race condition)5.3Инверсия приоритета6Ссылки7ПримечанияСвойства многозадачной среды[править | править вики-текст]
Примитивные многозадачные среды обеспечивают чистое «разделение ресурсов», когда за каждой задачей закрепляется определённый участок памяти, и задача активизируется в строго определённые интервалы времени.
Более развитые многозадачные системы проводят распределение ресурсов динамически, когда задача стартует в памяти или покидает память в зависимости от её приоритета и от стратегии системы. Такая многозадачная среда обладает следующими особенностями:
Каждая задача имеет свой приоритет, в соответствии с которым получает процессорное время и память
Система организует очереди задач так, чтобы все задачи получили ресурсы, в зависимости от приоритетов и стратегии системы
Система организует обработку прерываний, по которым задачи могут активироваться, деактивироваться и удаляться
По окончании положенного кванта времени ядро временно переводит задачу из состояния выполнения в состояние готовности, отдавая ресурсы другим задачам. При нехватке памяти страницы невыполняющихся задач могут быть вытеснены на диск (HYPERLINK "https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B4%D0%BA%D0%B0%D1%87%D0%BA%D0%B0_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86" \o "Подкачка страниц"своппинг), а потом, через определённое системой время, восстанавливаться в памяти
Система обеспечивает защиту адресного пространства задачи от несанкционированного вмешательства других задач
Система обеспечивает защиту адресного пространства своего ядра от несанкционированного вмешательства задач
Система распознаёт сбои и зависания отдельных задач и прекращает их
Система решает конфликты доступа к ресурсам и устройствам, не допуская тупиковых ситуаций общего зависания от ожидания заблокированных ресурсов
Система гарантирует каждой задаче, что рано или поздно она будет активирована
Система обрабатывает запросы реального времени
Система обеспечивает коммуникацию между процессами
Трудности реализации многозадачной среды[править | править вики-текст]
Основной трудностью реализации многозадачной среды является её надёжность, выраженная в защите памяти, обработке сбоев и прерываний, предохранении от зависаний и тупиковых ситуаций.
Кроме надёжности, многозадачная среда должна быть эффективной. Затраты ресурсов на её поддержание не должны: мешать процессам проходить, замедлять их работу, резко ограничивать память.
История многозадачных операционных систем[править | править вики-текст]
Поначалу реализация многозадачных операционных систем представляла собой серьёзную техническую трудность, отчего внедрение многозадачных систем затягивалось, а пользователи долгое время после внедрения предпочитали однозадачные.
В дальнейшем, после появления нескольких удачных решений, многозадачные среды стали совершенствоваться, и в настоящее время употребляются повсеместно.
Впервые многозадачность операционной системы была реализована в ходе разработки операционной системы Multics (1964 год). Одной из первых многозадачных систем была OS/360 (1966[2]), используемая для компьютеров фирмы IBM и их советских аналогов ЕС ЭВМ. Разработки системы были сильно затянуты, и на начальное время фирма IBM выдвинула однозадачный DOS, чтобы удовлетворить заказчиков до полной сдачи OS/360 в эксплуатацию. Система подвергалась критике по причине малой надёжности и трудности эксплуатации.
В 1969 году на основе Multics была разработана система UNIX с достаточно аккуратным алгоритмическим решением проблемы многозадачности. В настоящее время на базе UNIX созданы десятки операционных систем.
На компьютерах PDP-11 и их советских аналогах СМ-4 использовалась многозадачная система RSX-11 (советский аналог — ОСРВ СМ ЭВМ), и система распределения времени TSX-PLUS, обеспечивающая ограниченные возможности многозадачности и многопользовательский режим разделения времени, эмулируя для каждого пользователя однозадачную RT-11 (советский аналог — РАФОС). Последнее решение было весьма популярно из-за низкой эффективности и надёжности полноценной многозадачной системы.
Аккуратным решением оказалась операционная система VMS, разработанная первоначально для компьютеров VAX (советский аналог — СМ-1700) как развитие RSX-11.
Первый в мире мультимедийныйперсональный компьютерAmiga 1000 (1984 год) изначально проектировался с расчётом на полную аппаратную поддержку вытесняющей многозадачности реального времени в ОС AmigaOS. В данном случае разработка аппаратной и программной части велась параллельно, это привело к тому, что по показателю квантования планировщика многозадачности (1/50 секунды на переключение контекста) AmigaOS долгое время оставалась непревзойдённой на персональных компьютерах.Многозадачность обеспечивала также фирма Microsoft в операционных системах Windows. При этом Microsoft выбрала две линии разработок — на базе Windows 0.9[источник не указан 2264 дня], которая после долгой доработки системы, изначально обладавшей кооперативной многозадачностью, аналогичной Mac OS, вылилась в линейку Windows 3.x, и на основе идей, заложенных в VMS, которые привели к созданию операционных систем Windows NT. Использование опыта VMS обеспечило системам существенно более высокую производительность и надёжность. По времени переключения контекста многозадачности (квантование) только эти операционные системы могут быть сравнимы с AmigaOS и UNIX (а также его потомками, такими, как ядро Linux).
Интересно, что многозадачность может быть реализована не только в операционной, но и языковой среде. Например, спецификации языков программирования Modula-2 и Ada требуют поддержки многозадачности вне привязки к какой-либо операционной системе. В результате популярная в первой половине 1990-х годов реализация языка программирования TopSpeedМодула-2 от JPI/HYPERLINK "https://ru.wikipedia.org/wiki/Clarion" \o "Clarion"Clarion позволяла организовывать различные типы многозадачности (кооперативную и вытесняющую — см. ниже) для потоков одной программы в рамках такой принципиально однозадачной операционной системы, как MS-DOS. Это осуществлялось путём включения в модуль программы компактного планировщика задач, содержащего обработчик таймерных прерываний[3]. Языки программирования, обладающие таким свойством, иногда называют языками реального времени[4].
Типы псевдопараллельной многозадачности[править | править вики-текст]
Невытесняющая многозадачность[править | править вики-текст]
Тип многозадачности, при котором операционная система одновременно загружает в память два или более приложений, но процессорное время предоставляется только основному приложению. Для выполнения фонового приложения оно должно быть активизировано. Подобная многозадачность может быть реализована не только в операционной системе, но и с помощью программ-переключателей задач. В этой категории известна программа DESQview, работавшая под DOS и выпущенная первый раз в 1985 году.
Совместная или кооперативная многозадачность[править | править вики-текст]
Тип многозадачности, при котором следующая задача выполняется только после того, как текущая задача явно объявит себя готовой отдать процессорное время другим задачам. Как частный случай такое объявление подразумевается при попытке захвата уже занятого объекта mutex (ядро Linux), а также при ожидании поступления следующего сообщения от подсистемы пользовательского интерфейса (Windows версий до 3.x включительно, а также 16-битные приложения в Windows 9x).
Кооперативную многозадачность можно назвать многозадачностью «второй ступени», поскольку она использует более передовые методы, чем простое переключение задач, реализованное многими известными программами (например, DOS Shell из MS-DOS 5.0). При простом переключении активная программа получает все процессорное время, а фоновые приложения полностью замораживаются. При кооперативной многозадачности приложение может захватить фактически столько процессорного времени, сколько оно считает нужным. Все приложения делят процессорное время, периодически передавая управление следующей задаче.
Преимущества кооперативной многозадачности: отсутствие необходимости защищать все разделяемые структуры данных объектами типа критических секций и mutex’ов, что упрощает программирование, особенно перенос кода из однозадачных сред в многозадачные.
Недостатки: неспособность всех приложений работать в случае ошибки в одном из них, приводящей к отсутствию вызова операции «отдать процессорное время». Крайне затрудненная возможность реализации многозадачной архитектуры ввода-вывода в ядре ОС, позволяющей процессору исполнять одну задачу в то время, как другая задача инициировала операцию ввода-вывода и ждет её завершения.
Вытесняющая, или приоритетная, многозадачность
Основная статья: Вытесняющая многозадачностьВид многозадачности, в котором операционная система сама передает управление от одной выполняемой программы другой в случае завершения операций ввода-вывода, возникновения событий в аппаратуре компьютера, истечения таймеров и квантов времени, или же поступлений тех или иных сигналов от одной программы к другой. В этом виде многозадачности процессор может быть переключен с исполнения одной программы на исполнение другой без всякого пожелания первой программы и буквально между любыми двумя инструкциями в её коде. Распределение процессорного времени осуществляется планировщиком процессов. К тому же каждой задаче может быть назначен пользователем или самой операционной системой определенный приоритет, что обеспечивает гибкое управление распределением процессорного времени между задачами (например, можно снизить приоритет ресурсоёмкой программе, снизив тем самым скорость её работы, но повысив производительность фоновых процессов). Этот вид многозадачности обеспечивает более быстрый отклик на действия пользователя.
Преимущества: возможность полной реализации многозадачного ввода-вывода в ядре ОС, когда ожидание завершения ввода-вывода одной программой позволяет процессору тем временем исполнять другую программу. Сильное повышение надежности системы в целом, в сочетании с использованием защиты памяти — идеал в виде «ни одна программа пользовательского режима не может нарушить работу ОС в целом» становится достижимым хотя бы теоретически, вне вытесняющей многозадачности он не достижим даже в теории. Возможность полного использования многопроцессорных и многоядерных систем.
Недостатки: необходимость особой дисциплины при написании кода, особые требования к его реентрантности, к защите всех разделяемых и глобальных данных объектами типа критических секций и mutex’ов.Реализована в таких ОС, как:
Список примеров в этой статье или её разделе не основывается на авторитетных источниках непосредственно о предмете статьи или её разделе.
Добавьте ссылки на источники, предметом рассмотрения которых является тема настоящей статьи (раздела) в целом, и содержащие данные элементы списка как примеры. В противном случае раздел может быть удалён. VMS
MenuetOSLinuxв пользовательском режиме (а часто и в режиме ядра) всех UNIX-подобных ОС, включая версии Mac OS X, iOS; Symbian OSв режиме ядра ОС Windows 3.x — только при исполнении на процессоре 386 или старше, «задачами» являются только все Windows-приложения, вместе взятые, и каждая отдельная виртуальная машина ДОС, между приложениями Windows вытесняющая многозадачность не использовалась
Windows 95/98/ME — без полноценной защиты памяти, что служило причиной крайне низкой, на одном уровне с MS-DOS, Windows 3.x и Mac OS версий до X — надежности этих ОС
Windows NT/2000/XP/HYPERLINK "https://ru.wikipedia.org/wiki/Windows_Vista" \o "Windows Vista"Vista/7 и в режиме ядра, и в пользовательском режиме.
AmigaOS — все версии, до версии 4.0 без полноценной защиты памяти, что на практике для системных программ почти не сказывалось на надёжности из-за высокой стандартизированности, прозрачных API и SDK. Программы, ориентированные на «железо» Амиги, наоборот, не отличались надёжностью.
Проблемные ситуации в многозадачных системах[править | править вики-текст]
Голодание (starvation)[править | править вики-текст]
Задержка времени от пробуждения потока до его вызова на процессор, в течение которой он находится в списке потоков, готовых к исполнению. Возникает по причине присутствия потоков с большими или равными приоритетами, которые исполняются все это время.
Негативный эффект заключается в том, что возникает задержка времени от пробуждения потока до исполнения им следующей важной операции, что задерживает исполнение этой операции, а следом за ней и работу многих других компонентов.
Голодание создаёт узкое место в системе и не дает выжать из неё максимальную производительность, ограничиваемую только аппаратно обусловленными узкими местами.
Любое голодание вне 100 % загрузки процессора может быть устранено повышением приоритета голодающей нити, возможно — временным.
Как правило, для предотвращения голодания ОС автоматически вызывает на исполнение готовые к нему низкоприоритетные потоки даже при наличии высокоприоритетных, при условии, что поток не исполнялся в течение долгого времени (~10 секунд). Визуально эта картина хорошо знакома большинству пользователей Windows — если в одной из программ поток зациклился до бесконечности, то переднее окно работает нормально, несмотря на это — потоку, связанному с передним окном, Windows повышает приоритет. Остальные же окна перерисовываются с большими задержками, по порции в секунду, ибо их отрисовка в данной ситуации работает только за счет механизма предотвращения голодания (иначе бы голодала вечно).
Гонка (racecondition)[править | править вики-текст]
Основная статья: Состояние гонкиНедетерминированный порядок исполнения двух потоков кода, обрабатывающими одни и те же данные, исполняемыми в двух различных потоках (задачах). Приводит к зависимости порядка и правильности исполнения от случайных факторов.
Устраняется добавлением необходимых блокировок и примитивов синхронизации. Обычно является легко устраняемым дефектом (забытая блокировка).
Инверсия приоритета[править | править вики-текст]
Поток L имеет низкий приоритет, поток M — средний, поток H — высокий. Поток L захватывает mutex, и, выполняясь с удержанием mutex’а, прерывается потоком M, который пробудился по какой-то причине, и имеет более высокий приоритет. Поток H пытается захватить mutex.
В полученной ситуации поток H ожидает завершения текущей работы потоком M, ибо, пока поток M исполняется, низкоприоритетный поток L не получает управления и не может освободить mutex.
Устраняется повышением приоритета всех нитей, захватывающих данный mutex, до одного и того же высокого значения на период удержания mutexa. Некоторые реализации mutex’ов делают это автоматически

Лекция 16. Программы – отладчики.
Программа ”SID” представляет собой инструментальное средство символической отладки программ, написанных на языке ассемблера для микропроцессора Intel 8080 или Intel 8085. Программа ”SID” поставляется фирмой DigitalResearch. Эта программа выполняет в основном те же функции, что и программа ”DDT” (Инструментальное средство динамической отладки), Входящая в стандартный набор транзитных программ ОС СР/М. Отличие заключается в том, что программа ”SID” предоставляет пользователю дополнительные возможности по проверке и отладке программ. Программа ”SID” предоставляет пользователю следующие возможности: • Выполнение всех команд программы ”DDT” с некоторыми изменениями и расширениями. • Полный просмотр и изменение содержимого оперативной памяти. • Команды шестнадцатеричной арифметики. • Получение полной информации относительно исполнения программы. • Установление точек прерывания в реальном времени. • Реассемблирование части кода отлаживаемой программы.
• Просмотр текста отлаживаемой программы и таблицы символов. • Динамическая загрузка двух раздельных вспомогательных программ, трассировки и построения гистограмм. Команды программы ”SID” в основном совпадают с теми командами, которые выполняет программа ”DDT”. Помимо этого существует несколько команд, свойственных только программе ”SID”.
Автономная отладка
Процесс отладки прототипа проектируемой системы должен начинаться с отладки аппаратуры и отладки программ.
Отладка аппаратуры предполагает тестирование отдельных устройств микропроцессорной системы - процессора, ОЗУ, контроллеров, блока питания, генератора тактовых импульсов путем подачи тестовых входных воздействий и приема ответных реакций. Тестовые входные воздействия и ответные реакции определяются, исходя из спецификаций на устройства, а также структурных схем устройств. При этом проверяются реальная аппаратура прототипа, спецификации, структурные схемы и отлаживаются тесты. После отладки отдельных устройств проверяется их взаимодействие. Процессор системы работает с шинами адресов, данных и управления. Анализируя их сигналы, можно проконтролировать выполнение программы в процессоре.
Поскольку ША и ШД синхронные, их работу лучше всего проверить с помощью методов логических состояний. Перед анализом последовательностей данных на этих шинах необходимо удостовериться в том, что сигналы, управляющие взаимодействием процессора с другими устройствами, выдаются в соответствующем порядке. Поскольку ШУ состоит из линий, работающих асинхронно, необходимо просматривать сигналы многих линий в течение одного и того же промежутка времени. Для анализа асинхронной работы линий управления необходимо также наблюдать за сигналами на них при возникновении определенного события, чтобы можно было четко разделить и идентифицировать различные состояния линий. Например, среди сигналов ШУ могут быть сигналы длительностью всего несколько наносекунд, но могут также возникать кратковременные ложные узкие импульсы, вызванные перекрестными помехами или шумами.
После того как доказана работоспособность ШУ, проводится дальнейшая проверка работы аппаратуры при различных режимах адресации процессора и кодах выбираемых данных. Для проверки выполнения процессором инструкций разрабатывается тестовая программа, которая помещается в ОЗУ или ППЗУ. При этом проверяется временная диаграмма сигналов и прохождения данных в системе (как осуществляется передача информации по отношению к строб-сигналам). Если тестовая программа - системный проверяющий тест пройдет успешно, можно утверждать, что автономно аппаратура отлажена.
При автономной отладке аппаратуры могут потребоваться приборы, умеющие: а) выполнять функции аналогового прибора, т. е. измерять напряжение и ток; воспроизводить форму сигнала, подавать импульсы определенной формы и т. д.; б) подавать последовательность сигналов одновременно на несколько входов в соответствии с заданной временной диаграммой или заданным алгоритмом функционирования аппаратуры, представленным в спецификации на языке высокого уровня, или другим способом; собирать значения сигналов многих линий в течение одного и того же промежутка времени, который определяется задаваемыми, программируемыми событиями - комбинацией или последовательностью сигналов на линиях, например, ложным сигналом на линии; обрабатывать и представлять собранную информацию либо в виде временной диаграммы, либо в виде диаграммы или таблицы логических состояний, либо на языке высокого уровня, например, языке регистровых передач. Для автономной отладки аппаратуры широко используются осциллографы, вольтметры, амперметры, частотомеры, генераторы импульсов, позволяющие отлаживать аппаратуру на схемном уровне. Чтобы автономно отладить аппаратуру МПС на более высоком уровне, применяют логические анализаторы, генераторы слов, пульты, комплексы диагностирования.

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

Лекция 17. Способы программирования микропроцессоров.
1. Языки программирования

На своем рабочем уровне МП выполняет список операций, называемый машинной программой.
Машинная программа - программа, написанная на машинном языке.
Программа - упорядоченный список команд или операторов, выполняя которые микро – ЭВМ осуществляет решение задачи.
Машинный язык - язык, непосредственно используемый МП. Программа на машинном языке не требует интерпретации.
Операторы машинного языка записываются в двоичных кодах.
Поскольку писать программу в двоичных кодах тяжело и неудобно, используют для этой цели шестнадцатеричный код. Специальная управляющая программа, называемая монитором и хранимая в ПЗУ, переводит шестнадцатеричный код операторов в двоичный код.
Программа - монитор служебная программа, предназначенная для управления микро – ЭВМ в процессе трансляции, тестирования и ввода прикладных программ пользователя.
Однако, хотя двоичные данные записаны в шестнадцатеричном коде, программа продолжает рассматриваться как заданная на машинном языке и оказывается трудной для понимания. Более того, для различных МП коды операций различны. Поэтому, если программирование осуществляется на языках низкого уровня (в шестнадцатеричном или двоичном коде), необходимо знать коды операций системы команд для МП, которым пользуются.
Решение проблемы разработки языков программирования, не зависящих от специфики ЭВМ, явилась разработка алгоритмических языков, образующих класс машинно – независимых языков.
Используют следующие языки программирования МП:
1.                 Язык низкого уровня – машинный язык;
2.                 Язык типа АССЕМБЛЕР;
3.                 Языки высокого уровня: Бейсик, Pascal, Фортран;
Достоинства программирования МП на машинном языке:
- минимальный объем памяти;
- быстродействие выполнения программ, поскольку не требуется времени для их трансляции;
Недостатки:
- большая трудоемкость составления программ;
- большая вероятность ошибок и трудность их обнаружения;
- зависимость от типа применяемого МП.
Ассемблер является символическим аналогом машинного языка. По этой причине программа, написанная на ассемблере, отражает все особенности архитектуры МП: организацию памяти, способы адресации операндов, правила использования регистров и т.д. Из-за необходимости учёта подобных особенностей ассемблер уникален для каждого типа МП.
Язык АССЕМБЛЕР наиболее широко распространен для программирования МП. В языке АССЕМБЛЕР каждая машинная команда МП обозначается мнемоническим символом, представляющим собой сочетание трех или четырех букв, являющихся первыми буквами полной записи наименования этих команд на английском языке.
Очевидно, что мнемоническое (символическое) кодирование названия и содержания команд легче запоминается, чем ничего не говорящее сочетание нулей и единиц, представляющее собой двоичное кодирование. Язык АССЕМБЛЕР дает инженеру возможность писать инструкции в мнемонической форме, так что названия инструкций могут ассоциироваться с реально выполняемыми операциями.
Мнемокод - последовательность букв, заменяющая полное слово или фразу, удобную для запоминания. АССЕМБЛЕР - это язык мнемокодов.
Трансляция - замена символов и синтаксиса исходного языка программирования символами и синтаксисом другого языка с сохранением содержания переводимых выражений.
Ассемблер – служебная программа, преобразующая исходную программу, написанную на языке мнемокодов и символических адресов в программу в двоичных кодах. При этом создается объектная программа - программа на машинном языке, получаемая в результате трансляции исходной программы.
Объектный код - команды программы, представленные на машинном языке. Одной команде языка АССЕМБЛЕР соответствует одна машинная команда. Трансляция с языка АССЕМБЛЕР в машинный код называется ассемблированием.
Чтобы упростить и ускорить программирование микро – ЭВМ (МП), используют языки высокого уровня. Перевод текста программ с языков высокого уровня на язык машинных команд осуществляется транслятором.
В этом случае транслятор может работать в одном из двух режимов: либо в режиме интерпретатора, либо в режиме компилятора.
Транслятор – это программа перевода исходной программы на языке высокого уровня в объектную программу на машинном языке. Различают трансляторы интерпретирующего типа и компилирующего типа.
Интерпретатор работает в процессе выполнения программы. Каждая строка программы на языке высокого уровня преобразуется в машинные команды непосредственно перед её выполнением.
Компилятор осуществляет перевод программы с языка высокого уровня в машинные команды и эта программа в двоичных кодах помещается в память, а затем происходит ее реализация.
Компилятор во многом похож на ассемблер. Но если ассемблер преобразует в машинный код команды на языке АССЕМБЛЕРА, то компилятор производит те же действия над командами на языках высокого уровня.
Конфигурация системы транслирующих программ показана на рисунке.

Программа, подаваемая на вход транслятора, называется исходной программой. Выходом является двоичная форма программы, называемая объектной программой. Каждая из этих форм программы является языком, поскольку имеется некоторый набор синтаксических правил и заранее заданный набор символов.
Компилятору не всегда отдается предпочтение. Следует учитывать, что у микро – ЭВМ весьма ограниченный объем памяти. Программы с компилятором выполняются быстрее, чем в случае применения интерпретатора. Однако программа-компилятор значительно больше, чем программа - интерпретатор и требует для своего разрешения больший объем памяти. Только большие ЭВМ всегда позволяют использовать компиляторы. Компилятор в микро – ЭВМ используется редко, так как компилятор для одного и того же языка значительно сложнее интерпретатора и хранение программ компилятора в памяти микро – ЭВМ увеличивает объем памяти и удорожает стоимость систем.
2. Структура и типы команд
Команда МП - это такое двоичное слово, которое, будучи прочитано микропроцессором, обеспечивает выполнение им определенных действий.Другие, отличные от команд двоичные знаки подобных действий в МП вызывать не могут.
Группа команд, которые может выполнять данный МП, называется его составом команд.
Составы команд не являются нормализованными. Это неудобство связано как с индивидуальным подходом, так и с различиями архитектуры и назначений МП.
Длина команды 8 – ми разрядного МП может быть 8, 16, или 24 бит, но в любом случае будет кратной длине слова данных.
Команды МП должны содержать информацию двух видов. Во – первых, команда должна сообщить МП, что делать. Во – вторых команда должна указывать адрес (месторасположение) обрабатываемых данных. Поэтому команда состоит из двух частей: кода операции (КОП) и операнда.
Код операции (КОП) - комбинация двоичных знаков или ее мнемоническое обозначение, указывающее на определенную операцию, которую должен выполнить МП. КОП сообщает МП, что делать.
Адрес указывает местоположение данных, участвующих в операции.
Операндом называют данные, над которыми выполняются операции, указанные в команде.
Если длина команды составляет два или три слова, то первое из них - это код операции, а второе и третье - адрес. Из этого, однако, не следует, что все команды длиной в одно слово являются безадресными.
Формат машинной команды показан на рисунке. Из рисунка видно, что длина команды 8 – разрядного МП может равняться 8, 16 или 24 бит.
Система команд МП Intel 8080 содержит 237 команд. Современные МП имеют более 300 команд. С появлением каждой новой модели МП количество его команд, как правило, возрастает, отражая тем самым архитектурные новшества, отличающие эту модель от ее предшественниц. Набор машинных команд можно структурировать по группам. Приведем функциональную классификацию команд типового МП.
1 байт 2 байт 3 байт
Операнд
Код операции (КОП)
Младший байт адреса Старший байт адреса
Рис. Формат команд МП КР 580

Прочие
Работа с
подпрограммой
Команды ассемблера
Передачи данных
Арифметические
Логические
Передачи управления
Общего назначения
Работы состеком
Двоичной
арифметики
Десятичной
арифметики
Манипуляции битами
Сдвига
Безусловные
Условные

В большинстве случаев названия команд МП характеризуют их назначение. После ознакомления с описанием команд необходимо усвоить следующие характеристики:
1. Назначение.
2. Используемые способы адресации.
3. Мнемоническое обозначение.
Представление действий, выполняемых командой, с помощью логических символов.
5. Длину команды.
6. Воздействие результата выполнения команды на регистр состояния МП.
3. Способы адресации
Чтобы МП оказался в состоянии выполнить команду, ему необходимо сообщить месторасположение данных, которые обрабатывает команда.
Тип обращения к данным называют способом адресации.Способ адресации - способ определения места операнда команды.
Хотя МП располагают разными наборами команд, принципы адресации в них одни и те же. Число команд значительно больше, чем число различных кодов операций, поскольку при формировании команды один и тот же код операции может использоваться при различных способах адресации.
Рассмотрим пять основных способов адресации: неявная, регистровая, непосредственная, прямая и косвенная.
Два первых способа адресации (регистровый и неявный) касаются операндов, расположенных в самом МП. Три последних способа адресации (непосредственный, прямой и косвенный) относятся к операндам, расположенным вне МП, т.е. в ячейках памяти или портах ВВ. Разные ЭВМ имеют различные способы адресации. Набор способов адресации зависит от специализации ЭВМ. Кроме пяти основных в ЭВМ применяют и другие способы адресации. Например: страничная адресация, индексная адресация, относительная адресация.
Регистровая адресация
Команды с регистровой адресацией занимают 1 байт потому что они не требуют данных и адресов вне МП. Адреса данных подразумеваются самой командой. Однобайтовые команды адресуются к данным, расположенным только внутри МП. Они оперируют данными, загруженными в регистр или регистровую пару.
Пример.На рисунке команда пересылки данных из регистра А в регистр В состоит из кода операции, адреса источника данных (регистр А) и адресат приемника данных (регистр В).
0 1 0 0 0 1 1 1
4 7
КОП адрес регистра В адрес регистра А
Это команда MOVB, A её код 47.
Команда пересылки содержимого регистра А в регистр В, в которой использована регистровая адресация.
Адрес регистра А – 111, адрес регистра В – 000. Адреса источника и приемника данных встроены в команду и таким образом указаны неявно. Команды с регистровой адресацией отличаются наибольшей величиной быстродействия.
Под номера регистров в поле команды отводятся определенные разряды: три младших (В 2 – В 0) кодируют номер регистра – источника, содержащего операнд, а три средних (В 5 - В 3) - номер регистра – приемника, в который засылается результат операции.
Принято следующее кодирование регистров:
000 – регистр В 100 - регистр Н
001 – регистр С 101 - регистр L
010 – регистр D 110 – ячейка памяти
011 - регистр Е 111 - аккумулятор
Неявная адресация
Примерами команд с неявной адресацией могут служить следующие команды: STC, CMA, NOP.
STC– установить индикатор переноса.
CMA – инвертировать содержимое аккумулятора.
NOP- нет операций.
При выполнении команд с неявной адресацией не требуется искать данные или адреса в других регистрах МП, в памяти или портах УВВ.
Например, команда STC устанавливает индикатор переноса (CY) 1 без воздействия на другие регистры или индикаторы. Таким образом, командаSTC относится только к индикатору переноса и никакому другому регистру или памяти.
Команды с неявной адресацией занимают 1 байт памяти.
Непосредственная адресация
Код операции команды с непосредственной адресацией размещается в первом байте. Сразу же за КОП следуют данные, занимающие 1 или 2 байт. Эти данные берутся не из памяти. Их предоставляет программист при записи команды.Следовательно, при использовании данного способа адресации не требуется указание адреса памяти, необходим только код операции, после которого записываются данные. Таким образом, операнд следует в команде непосредственно за КОП. Рассмотрим пример этого типа команд. Команда загрузить данные в SP - это трехбайтовая команда.
2000 КОП 31 Н
2001 0111 0000
2002 000 0010
младший байтзагрузить SP
000 0010 01110000
LXI SP
старший байт
после операции

В рассматриваемом случае 2 байт данных берутся в памяти программы и помещаются в указатель стека. Младший байт 01110000 загружен первым, затем старший байт 000 0010.
Операции, задаваемые первым байтом команды (кодом операции), МП выполняет над данными, представленными её вторым байтом.
Прямая адресация
Команды с прямой адресацией имеют длину, равную 2 или 3 байт. Первый байт предназначен для КОП, второй и третий - для адреса.
Адрес указывает область памяти, в которой находятся подлежащие обработке данные. Совместное использование 2 и 3 байтов команды позволяет адресоваться к любой из 65536 областей памяти.
При этом способе адресации адрес операнда содержится в самой команде и для его формирования не используется никаких дополнительных источников или регистров.
При неявной адресации адрес местоположения данных встроен в команду, и программист лишен возможности самостоятельно обращаться к данным по их адресу. При непосредственной адресации данные указываются в самой команде, следуя сразу за кодом операции. В этом случае программист тоже не может адресоваться к данным. И только при прямой адресации у него имеется такая возможность, явным образом задавая адрес необходимых данных.
Примером использования такой адресации может служить команда записи содержимого аккумулятора в память по адресу 000ЕН. Этот адрес занимает второй и третий байты команды. Байты команды показаны на рисунке.
КОП М А
0ЕН
00Н
2 – й байт
3 – й байт
Косвенная адресация
Этот тип адресации реализуется командами длиной в один байт. Помимо кода операции в такой команде указывается номер регистра, содержимое которого - адрес местоположения данных в памяти.
Указанная адресация называется косвенной. При косвенной адресации соответствующая команда указывает, в какой регистровой паре размещается адрес местоположения данных в памяти.
Рассмотрим пример: загрузить в аккумулятор данные из ячейки памяти, адрес которой находится в регистровой паре НL. Обратимся к следующему рисунку.
До операции После операции
Память данных передать аккумулятор
MOV A,M 1111 0000
2080 H

2080H 11110000

Адрес Пара НLНа рисунке содержимое памяти по адресу 2080Н загружается в аккумулятор. Адрес ячейки памяти 2080Н указан содержимым пары НL, которая здесь играет роль адресного регистра.
Команды передачи данных
Команды общего назначения
Команды рассматриваемой группы выполняют передачу данных из регистра в регистр, размещение данных в памяти, размещение извлечённых из памяти данных в УВВ. В результате команд передачи данных никакие индикаторы не изменяются (биты регистра состояния). Некоторые характерные команды передачи данных приведены в следующей таблице.
Операция Адресация Мнемоника КОП Байты Формат команд Символика
Передать А в r Регистровая MOV r, A ….. 1 КОП
Передать r в АРегистровая MOV A, r….. 1 КОП
Передать HL в PC Регистровая PCHL E9 1 КОП
Передать HL в SP Регистровая SPHL F9 1 КОП
Загрузить А данными Непосредственная MVI A 3E 2 КОП данные
Загрузить LOC(HL) в АКосвенная MOV A,M 7E 1 КОП
Загрузить HL данными Непосредственная LXI H 21 3 КОП
Мл.байтСт. байт
Загрузить SP данными Непосредственная LXI P 31 3 КОП
Мл. байт
Ст. байт
Загрузить HL из LOC Прямая LHLD 2A 3 КОП
Мл. адрес
Ст. адрес
Загрузить А из LOC Прямая LDA 3A 3 КОП
Мл. адрес
Ст. адрес
Поместить А в LOC Прямая STA 32 3 КОП
Мл. адрес
Ст. адрес
Поместить HL в LOC Прямая SHLD 22 3 КОП
Мл. адрес
Ст. адрес

Поместить А в LOC (HL) Косвенная MOV M,A 77 1 КОП

Ввести в А из порта Прямая IN DB 2 КОП
Адр. порта
Вывести А в порт Прямая OUT D3 2 КОП
Адр. порта
Установить индикатор переноса Неявная STC 37 1 КОП
LOC от LOCATION
Команды работы со стеком
К командам передачи данных относятся команды работы со стеком. При выполнении команд работы со стеком индикаторы не изменяются. В следующей таблице указаны некоторые команды работы со стеком.
Операция Адресация Мнемоника КОП Байт Формат команды Символика
Поместить в стек А и индикаторы Косвенная PUSH PSW F5 1 КОП


Поместить в стек HL Косвенная PUSH H E5 1 КОП


Извлечь из стека А и индикаторы Косвенная POP PSW F1 1 КОП


Извлечь из стека HL Косвенная POP H E1 1 КОП


Команды PUSH и POP противоположны по своему действию и используются всегда совместно. Между этими командами располагаются другие команды программы, которые меняют содержимое регистров МП.
5. Арифметические команды
Команды арифметических действий устанавливают все индикаторы. Операции вычитания проводятся с использованием дополнительного кода.
Команды двоичной арифметики
Аккумулятор содержит одно из слагаемых. Каждая команда точно оговаривает различные источники другого слагаемого. Характеристики простых команд сложения и вычитания приведены в следующей таблице
Операция Адресация Мнемоника КОП Байты Формат команд Символика
Сложить А с данными Непосредственная ADI C6 2 КОП
данные
Сложить r с АРегистровая ADD R ….. 1 КОП
Сложить LOC (HL) с A Косвенная ADD M 86 1 КОП
Вычесть данные из АНепосредственная SUI D6 2 КОП
данные
Вычесть r из АРегистровая SUB R ….. 1 КОП
Вычесть LOC (HL) из АКосвенная SUB M 96 1 КОП
Стандартный МП имеет для реализации арифметики больших чисел команды сложения с переносом и вычитания с заемом. Основные сведения об указанных командах приведены в следующей таблице.
Операция Адресация Мнемоника КОП Байты Формат команд Символика
Сложить А с данными и переносом Непосредственная ACI CE 2 КОП
данные
Сложить A c r и переносом Регистровая ADC r….. 1 КОП
Сложить память LOC (HL) c A и переносом Косвенная ADC M 8E 1 КОП
Вычесть с заемомданные из АНепосредственная SBI DE 2 КОП
данные
Вычесть с заемом r из АРегистровая SBB r….. 1 КОП
Вычесть с заемом содержимое памяти LOC (HL) из A Косвенная SBB M 9E 1 КОП
Ниже рассматриваются команды положительного и отрицательного приращений:
INRr - содержимое регистра увеличивается на единицу, .
INRM - содержимое памяти, адрес которой находится в паре HL, увеличивается на единицу, .
DCRr - содержимое регистра уменьшается на единицу, .
DCRM - содержимое памяти, адрес которой находится в паре регистров HL, уменьшается на единицу, .
При выполнении этих команд устанавливаются все индикаторы, кроме переноса CY.
INXrp - содержимое пары регистров rp увеличивается на единицу,
.
DCXrp - содержимое пары регистров rp уменьшается на единицу,
.
При выполнении команд INX и DCX никакие индикаторы не устанавливаются.
Команды десятичной арифметики
В МП Intel 8080 к указанной группе команд относится только одна команда, а именно команда десятичной коррекции аккумулятора. Её формат следующий
DAA,.6. Логические команды
MП способны производить логическую обработку информации. Микро-ЭВМ может заменить множество логических схем.
Команды манипуляции битами
К этой группе относятся команды логических операций И, ИЛИ, ИСКЛ. ИЛИ, НЕ. Все логические операции являются побитовыми, а результат устанавливается в соответствии с их таблицами истинности. Логические операции выполняются всегда над содержимым аккумулятора и другим байтом из регистра или памяти. По окончании логической операции результат загружается в аккумулятор. Значение бита переноса CY от результата выполнения логических команд И, ИЛИ, ИСКЛ. ИЛИ не зависит. Основные характеристики этих команд представлены в следующей таблице.
Операция Адресация Мнемоника КОП Байты Формат команд Символика
А И данные Непосредственная ANI E6 2 КОП
данные
А И регистр Регистровая ANA r….. 1 КОП
А И LOC(HL) Косвенная ANA M A6 1 КОП
A ИЛИ данные Непосредственная ORI F6 2 КОП
данные
А ИЛИ регистр Регистровая ORA r….. 1 КОП
А ИЛИ LOC (HL) Косвенная ORA M B6 1 КОП
А ИЛИ ИСКЛ. данные Непосредственная XRI EE 2 КОП
данные
А ИЛИ ИСКЛ. регистр Регистровая XRA r….. 1 КОП
А ИЛИ ИСКЛ. LOC (HL) Косвенная XRA M AE 1 КОП
Инвертировать АНеявная CMA 2F1 КОП
Часто возникает необходимость сравнить два двоичных числа. Команды сравнения вычитают содержимое регистра или ячейки памяти из содержимого аккумулятора, но не изменяют данных ни того ни другого. Индикаторы подвержены влиянию результата сравнения. Применение этих команд позволяет принимать решения в ходе выполнения программы. Краткая характеристика команд сравнения приведена ниже.
Операция Адресация Мнемоника КОП Байты Символика Индикаторы
Сравнить А с данными Непосредственная CPI FE 2

Сравнить A с регистром rРегистровая CMP r….. 1
Сравнить А с LOC (HL) Косвенная CMP M BE 1

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




RAL - циклический сдвиг аккумулятора влево
, ,





RAR - циклический сдвиг аккумулятора вправо
, ,
При использовании команд циклического сдвига не происходит потерь данных, поскольку данные перемещаются по замкнутому контуру. Если выполнить циклический сдвиг девять раз, то окончательное содержимое аккумулятора и разряда переноса полностью совпадёт с исходным.




RLC - сдвиг содержимого аккумулятора влево
, ,
RRC - сдвиг содержимого аккумулятора вправо




, ,
7. Команды передачи управления (ветвления)
Команды перехода (ветвления) позволяют изменять последовательность выполнения команд программы. Бывают команды безусловного и условного перехода. Сведения об основных командах перехода представлены в следующей таблице.
Операция Адресация Мнемоника КОП Байты Формат команды Символика
Переход Прямая JMP C3 3 КОП
Мл. адрес
Ст. адрес
Перейти если 0 ___ JZ CA 3 ___
Перейти если не 0 ___ JNZ C2 3 ___
Перейти если перенос ___ JC DA 3 ___
Перейти если нет переноса ___ JNC D2 3 ___
Первая команда в таблице является командой безусловного перехода. Команды передачи управления (перехода) являются средством изменения содержимого счётчика команд и, следовательно, изменения последовательности выполнения программы. Команды перехода во 2 и 3 байтах содержат адрес, который загружается в счётчик команд. Этот адрес указывает на ячейку памяти, содержащей команду, которая должна выполняться следующей.
Команды условного перехода проверяют значения разрядов регистра признаков и определяют последующий ход выполнения программы в зависимости от результата проверки. Эти команды повлекут за собой загрузку адреса в счётчик команд только если условия будут выполнены. В противном случае PC будет инкрементирован нормально.
Команды ветвления используют для формирования циклов программы.
8. Команды работы с подпрограммой
Команды вызова подпрограммы (CALL) и возврата из неё (RET) всегда используются парами. При их выполнении содержимое регистра признаков (индикаторы) не изменяется. Характеристики команд представлены в таблице.
Операция Адресация Мнемоника КОП Байты Формат команды Символика
Вызов подпрограммы Прямая CALL CD 3 КОП
Мл. адрес
Ст. адрес
Возврат из подпрограммы Косвенная RET C9 1 КОП


Команда CALL сочетает функции операций загрузки в стек и перехода. Сначала загружается в стек содержимое счётчика команд. Затем PC должен быть загружен новым адресом для выполнения перехода в подпрограмму.
9. Прочие команды

Операция Адресация Мнемоника КОП Байт Формат команды Символика
Нет операций Неявная NOP 00 1 КОП ____
Останов Неявная HLT 76 1 КОП ____
Повторный пуск Неявная RST ….. 1 КОП

Лекция 18. Тенденции развития микропроцессоров корпораций Intel и AMD.
Эра больших чисел. 64 бит процессоры
Автор:orb(сайт автора)На компьютерном рынке сейчас существует практически два крупных производителя процессоров. Если задать любому из вас вопрос "Какой процессор лучше купить?", то за ним последует множество ответов, но, по сути, преобладать будут два варианта: Intel и AMD. Обе эти корпорации не останавливаясь ни на секунду выпускают все более производительные процессоры. При этом идет не простое наращение частоты ядра, а переработка всей архитектуры и блоков процессора. Новый этап эволюции процессоров обе компании видят в направлении увеличения разрядности процессора и использовании на одном кристалле нескольких "независимых" ядер (это уже другая история), которые будут функционировать параллельно. Преимущества микропроцессоров с большей разрядностью очевидны. Они позволяют адресовать больший объем памяти, дают возможность оперировать с большим диапазоном чисел, повышают эффективность параллельных и матричных вычислений и т.д. Начнем рассмотрение с ветерана процессостроения корпорации Intel и его продукта процессора Itanium.
IntelItaniumleft0"Раскрутка" процессора Itanium датируется ноябрем 1997 года. Однако хотелось бы напомнить, что история Itanium началась значительно раньше.
К 1994 г. корпорация Intel испытывала определенные трудности. Продолжавшаяся два года разработка 64-разрядной архитектуры Р7 натолкнулась на серьезные трудности. Впоследствии Intel отказалась от Р7 в пользу EPIC (ExplicitlyParallelInstructionComputing - детище Нewlett-Packard, 64-разрядная архитектура). В июне 1994 г. компании Intel и Hewlett-Packard подписали соглашение о совместной разработке новой 64-разрядной архитектуры, ориентированной на применение в серверах и рабочих станциях. Новый процессор получил название Merced в честь реки в Калифорнии (первоначально предполагалось, что системы Merced появятся в 1997 или 1998 г.).
Два года спустя, когда выяснилось, что мощности Merced недостаточно, чтобы при использовании HP-UX (64-разрядная система UNIX) обойти архитектуру PA-RISC, в Нewlett-Рackard решили самостоятельно создавать новый процессор на том же фундаменте, что и Merced, но с иной реализацией внутренних функциональных блоков. Обе компании расширили свое сотрудничество уже над новым 64-разрядным процессором McKinley (так называется высочайшая гора в Северной Америке).
В 1997 г. Intel и Hewlett-Packard представили архитектуру и набор команд IA-64 (IntelArchitecture).
В августе 1999 г. впервые появились опытные образцы процессора, а осенью Intel представила Itanium как коммерческое наименование своего первого 64-разрядного процессора.
right0В октябре 2000 г. появились пилотные образцы систем на основе Itanium.
Первые образцы 64-разрядного процессора Intel представляют собой картридж размером примерно 10х6 см, который включает в себя L3 (кэш-память третьего уровня) 2 либо 4 Мбайт и радиатор. Картридж монтируется в разъем типа Slot и имеет 418 выводов. Процессор имеет трехуровневую иерархию сверхоперативной памяти. Если L1 и L2 интегрирована на кристалле процессора, то микросхемы L3 расположены на самой плате картриджа. На реализацию процессора с соблюдением проектных норм 0,18 мкм потребовалось около 320 млн. транзисторов, из которых только 25 млн. пришлось на реализацию самого ядра, а остальные - на кэш-память. Блок вычислений с плавающей запятой, занимает около 10% площади кристалла. Производительность Itanium составляет до 6,4 млрд. операций с плавающей запятой в секунду. Благодаря архитектуре EPIC и 15 исполнительным устройствам процессор может выполнять до 20 операций одновременно. 266-МГц шина данных позволяет осуществлять быстрые транзакции со скоростью 2,1 ГБит/с, при этом он может непосредственно адресовать до 16 Тбайт памяти. Процессоры Itanium будут работать на тактовой частоте 800 или 733 МГц.
Архитектура Itanium включает такие уникальные средства повышения надежности, как усовершенствованная система обнаружения, исправления и локализации ошибок, предоставляемая архитектурой машинной проверки (MCA), ведение подробного журнала ошибок и код коррекции ошибок (ECC) на кэш-памяти всех уровней и системной шине. Масштабируемость до 512 процессоров.
Для двух- и четырехпроцессорных систем Intel выпустила специальный набор микросхем Intel 460GX, которые могут включаться каскадно, увеличивая число одновременно используемых процессоров. Поскольку конфигурация таких систем изначально предусматривает объемы оперативной памяти в несколько гигабайт, то в системах Itanium применяются сравнительно недорогие микросхемы памяти типа SDRAM. При этом для увеличения производительности, по словам представителей Intel, используются такие методы, как буферирование, чередование и деление памяти на несколько банков. Набор микросхем реально поддерживает работу с 64 Гбайт памяти при максимальной пропускной способности 4,2 Гбайт/с, хотя 64-разрядная адресация памяти теоретически позволяет обращаться к гораздо большему количеству адресов.
left0В архитектуре Itanium насчитывается по 128 64-разрядных целочисленных регистров общего назначения и 80-разрядных регистров вещественной арифметики, а также 64 одноpазpядныхпpедикатныхpегистpа. Все они доступны для программирования; кроме того, имеется множество недоступных внутренних служебных регистров, используемых самим процессором. 64 одноразрядных регистра используются для организации логики предсказания ветвления и выполнения команд в порядке, отличном от последовательного.
Современные тенденции развития микропроцессоров связаны с выполнением большего числа команд за один такт. Разработчики IA-64 полагают, что добиваться более высокого уровня суперскалярности (распараллеливания) в процессоре можно, только если отказаться от обычных последовательных кодов и ввести параллелизм прямо на уровень системы команд. В этом случае задача распараллеливания ложится не на аппаратуру процессора, а на компилятор. Как уже отмечалось, в основе IA-64 лежит технология EPIC, главная идея которой - введение явного параллелизма. С выходом Itanium сравнение процессоров по частоте практически теряет смысл. Теперь придется применять новые методики, учитывающие не только количество реально выполненных за один такт инструкций, но и качество анализа компилятором исполняемой программы, поскольку результирующая производительность будет сильно зависеть от этого (процессор ведь может работать с огромной скоростью, вычисляя ненужные ветви программы).
По заявлению разработчиков, Itanium полностью совместим с современными 32-разрядными приложениями. Однако вряд ли эти программы будут работать на 64-разрядном кристалле быстрее. Более того, как полагают некоторые специалисты, возможно, придется привыкать и к более медленным темпам.
IntelItanium 2
left0Процессор IntelItanium 2 (с ядром Madison) с объемом L3 6 МБ оптимизирован для выполнения требовательных корпоративных и научно-технических приложений.
Выпускается в 3-х модификациях:
с L3 объемом 6 МБ для многопроцессорных и двухпроцессорных серверов и рабочих станций;
с тактовой частотой 1,40 ГГц и L3 объемом 1,5 МБ, оптимизированный для двухпроцессорных серверов и рабочих станций;
с пониженным энергопотреблением, оптимизированный для двухпроцессорных серверов с высокой плотностью монтажа и рабочих станций (максимальная потребляемая мощность - 62 Вт).
Инструкции, обрабатываемые шестью параллельными конвейерами глубиной 8 команд, непосредственно выполняются в 23 функциональных блоках.
Исполняющие модули IntelItanium 2: 6 целочисленных модулей; 2 модуля для вычислений с плавающей точкой; 2 модуля для вычислений с плавающей точкой двойной точности; 6 модулей для обработки мультимедийных команд; 4 модуля, управляющих загрузкой и выгрузкой данных; 3 модуля ветвлений.
Количество соответствующих модулей оптимально подобрано с учетом потребности в вычислительных ресурсах приложений, характерных для корпоративных СУБД, сложных инженерных расчетов и др. При этом команды практически не "задерживаются" в ожидании, пока освободится нужный исполняющий модуль. Ширина системной шины, по которой осуществляется взаимодействие нескольких процессоров друг с другом и доступ к памяти, увеличена до 128 бит, что также кардинально сказывается на скорости работы.
Число регистров, в которых размещаются данные для непосредственной обработки их процессором, свыше трехсот. Большое их количество позволяет избежать дефицита регистров при параллельной обработке многих команд. Кроме того, в процессоре IntelItanium 2 реализованы такие механизмы повышения эффективности работы, как стек и переименование регистров.
Регистры IntelItanium 2: 128 регистров общего назначения; 128 регистров с плавающей запятой; 64 регистра предикатов; 8 регистров перехода.
Объем кэш-памяти третьего уровня процессора IntelItanium 2 достигает 6 Мб (доступ к кэшу в несколько раз быстрее, чем к "медленной" оперативной памяти, и составляет 48 Гб/с). Архитектура Itanium включает такие уникальные средства повышения надежности, как система расширенного самоконтроля EMCA, обеспечивающая обнаружение, коррекцию и протоколирование ошибок, а также поддержку обработки кода ECC - контроля четности.
Характеристики процессора IntelItanium 2:
Микроархитектура - IA-64;Частота до 1,6 ГГц;Кэш до 6 Мб, скорость доступа к кэшу - до 48 Гб/с;Адресуемое пространство - 16 Тб;Ширина системной шины - 128 бит, частота системной шины - 2х200 МГц;Число конвейеров - 6, глубина конвейера - 8, число исполняющих блоков - 23;Число регистров - более 300;Технология изготовления - 0,13 мкм;Пиковая производительность - 10 Гфлопс.
Hammer - процессор 8-го поколения корпорации AMD
left0left0Второй производитель микропроцессоров с архитектурой x86 - корпорация AMD тоже обнародовала свои планы создания 64-разрядных кристаллов. Однако в отличие от конкурентов она избрала эволюционный путь: добавила 32 разряда к уже имеющимся 32. Теперь регистры расширились до 64 разрядов, появились команды манипуляции с 64-разрядными данными, да и шина адреса увеличилась до 64 разрядов. В итоге родилась архитектура x86-64. Команды нового кристалла отличаются от команд процессоров x86 только наличием префикса, указывающего на их разрядность. Обеспечена полная аппаратная поддержка выполнения инструкций x86-32 на уровне ядра. В отличие от процессора Itanium, здесь должна обеспечиваться полноценная реализация 8-, 16- и 32-разрядных приложений без потери производительности. Таким образом, на одном процессоре смогут одновременно и независимо работать 16- и 32-разрядные приложения.
Весь поток процессоров Hammer "разбит" на два русла: Clawhammer (для настольных ПК и ноутбуков, Athlon64) и Sledgehammer (серверные процессоры рассчитанные на работу в конфигурациях от 2х до 8ми процессоров, Opteron). Процессоры Hammer производятся по технологии 0.13 микрон с медными межсоединениями и с использованием технологии SOI с дальнейшим переходом на технологию 0.09 микрон. Ядра процессоров Hammer закрыты металлическими пластинами, которые выполняют еще одну функцию - равномерно распределяют выделяемое тепло.
right0Athlon64 использует новый разъём Socket 754, а Opteron - Socket 940. Различие в числе контактов двух процессоров Hammer связано с наличием дополнительного канала памяти и двух портов HyperThransport на Opteron. Все процессоры Hammer будут использовать упаковку mPGA.
Если сравнивать новый процессор от AMD с поколением К7, то тут сразу бросаются в глаза основные отличия:
Интегрированный контроллер памяти, двухканальная или одноканальная, как небуферизованная (unbuffered), так и регистровая буферизованная.
16-битная 600/800 МГц DDR (dualsimplex) шина HyperTransport для соединения с AGP и южным мостом.
Поддержка инструкций SSE2 с 16 регистрами в 64-битном режиме.
12-уровневый целочисленный конвейер (Athlon имеет конвейер длиной 10 ступеней), 17-уровневый конвейер для вычислений с плавающей запятой Athlon имеет в этом конвейере 15 ступеней) для дальнейшего увеличения частоты. Дополнительная стадия конвейера анализирует зависимость инструкций сразу после их декодирования.
Немного более объемные целочисленные буферы (3x8 вместо 3x6).
TLB кэша первого уровня увеличилась с 24 до 40 записей.
TLB кэша второго уровня увеличилась вдвое: с 256 до 512 записей.
Фильтр "смыва", позволяющий сразу нескольким процессам разделять доступ к TLB.
Улучшенное прогнозирование ветвлений и увеличения глобального журнала ветвлений с 4 тысяч до 16 тысяч записей.
128-битный доступ к памяти к паре модулей DDR400 DIMM (только у Athlon 64 FX).
Ниже представлены некоторые процессоры нового поколения и их технические характеристики.
Athlon 64 3400+ (Clawhammer). Частота процессора - 2,2 GHz, L1-кэш - 128 KB, L2-кэш - 1 MB, шина CPU - 1600 MHz, 6,4 GBps, контроллер памяти - одноканальный, разъем - Socket 754. Он работает с нормальными (unbuffered) DDR400.Athlon 64 3700+ (NewCastle). Частота процессора - 2,4 GHz, L1-кэш - 128 KB, L2-кэш - 0,5 MB, контроллер памяти - одноканальный, разъем - Socket 754. Он работает с (unbuffered) DDR400.Athlon 64 3500+ (NewCastle). Частота процессора - 2,2 GHz, L1-кэш - 128 KB, L2-кэш - 0,5 MB, контроллер памяти - двухканальный (небуферизованный DDR400), разъем - Socket 939.Athlon 64 3800+ (NewCastle). Частота процессора - 2,4 GHz, L1-кэш - 128 KB, L2-кэш - 0,5 MB, шина CPU - 2000 MHz, 8,0 GBps, контроллер памяти - двухканальный (небуферизованный DDR400), разъем - Socket 939.Athlon64 FX 53 (Clawhammer, есть две модификации - разные разьемы + разная работа с памятью). Частота процессора - 2,4 GHz, L1-кэш - 128 KB, L2-кэш - 1 MB, шина CPU - 1600 MHz, 6,4 GBps, контроллер памяти - двухканальный. Разъемы: Socket 940, контроллер памяти - регистровый DDR400, с поддержкой ECC; Socket 939, контроллер памяти - небуферизованный DDR400.
Интересно отметить, что рейтинг, хотя и служит оценкой производительности, в то же время не дает однозначной информации о параметрах процессора. Например Athlon 64 3400+ есть в варианте 2,2 ГГц/1 МБ L2 и в варианте 2,4 ГГц/0,5 МБ L2. Аналогично и с 3200+ и 3000+. К счастью, цифра, которая показывает объем кэша L2, легко может быть найдена в маркировке. Еще большую путаницу вносит то, что бывают не только разные модели, имеющие одинаковый рейтинг, но и наоборот - по существу одинаковые процессоры могут иметь разные имена. Например, Athlon 64 FX-51 и Opteron 148, Athlon 64 FX-53 и Athlon 64 4000+.
Что бы не говорили, но корпорация Intel была (и является :-) ) законодателем "процессорной моды", теперь у нее появился серьезный конкурент, который не будет идти по пятам лидера. Сравнивать рассмотренные выше процессоры мы не будем, каждый вправе делать свой выбор самостоятельно. Какая архитектура выживет - покажет время.

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

Простой пятиуровневый конвейер в RISC-процессорах
На иллюстрации справа показан простой пятиуровневый конвейер в RISC-процессорах. Здесь:
IF (англ. InstructionFetch) — получение инструкции,
ID (англ. InstructionDecode) — раскодирование инструкции,
EX (англ. Execute) — выполнение,
MEM (англ. Memory access) — доступ к памяти,
WB (англ. Register write back) — запись в регистр.
Вертикальная ось — последовательные независимые инструкции, горизонтальная — время. Зелёная колонка описывает состояние процессора в один момент времени, в ней самая ранняя, верхняя инструкция уже находится в состоянии записи в регистр, а самая последняя, нижняя инструкция — только в процессе чтения.
Содержание
 [показать] 
1История2Тактовый генератор3Конфликт конвейера4Бесконвейерная архитектура5Преимущества и недостатки6Примеры6.1Общий конвейер6.1.1Пузырёк6.2Пример 16.3Пример 27Трудности8См. также9Примечания10СсылкиИстория[править | править вики-текст]
Сам термин «конвейер» пришёл из промышленности, где используется подобный принцип работы — материал автоматически подтягивается по ленте конвейера к рабочему, который осуществляет с ним необходимые действия, следующий за ним рабочий выполняет свои функции над получившейся заготовкой, следующий делает ещё что-то. Таким образом, к концу конвейера цепочка рабочих полностью выполняет все поставленные задачи, сохраняя высокий темп производства. Например, если на самую медленную операцию затрачивается одна минута, то каждая деталь будет сходить с конвейера через одну минуту.
Простейшая форма совмещения выполнения инструкций во времени была реализована в машине Z3Конрада Цузе в 1941 году[1]. Многостадийные конвейеры в современном представлении были реализованы в компьютерах М-100 (1959 год, СССР)[уточнить], UNIVAC LARC (1960 год, США), IBM Stretch (1961 год, США)[2], Atlas (1962 год, Великобритания) и БЭСМ-6 (1967 год, СССР). В проекте IBM Stretch были предложены термины «выборка» (англ. Fetch), «декодирование» (англ. Decode) и «выполнение» (англ. Execute), которые затем стали общеупотребительными.
Тактовый генератор[править | править вики-текст]
Многие современные процессоры управляются тактовым генератором. Процессор внутри состоит из логических элементов и ячеек памяти — триггеров. Когда приходит сигнал от тактового генератора, триггеры приобретают своё новое значение, и «логике» требуется некоторое время для декодирования новых значений. Затем приходит следующий сигнал от тактового генератора, триггеры принимают новые значения, и так далее. Разбивая последовательности логических элементов на более короткие и помещая триггеры между этими короткими последовательностями, уменьшают время, необходимое логике для обработки сигналов. В этом случае длительность одного такта процессора может быть соответственно уменьшена.
Например, простейший конвейер RISC-процессоров можно представить пятью стадиями с наборами триггеров между стадиями:
получениеинструкции (англ. InstructionFetch);
декодирование инструкции (англ. InstructionDecode) и чтение регистров (англ. Register fetch);
выполнение (англ. Execute);
доступ к памяти (англ. Memoryaccess);
запись в регистр (англ. Register write back).
Конфликт конвейера[править | править вики-текст]
При написании кода на языке ассемблера (либо при разработке компилятора, генерирующего последовательность инструкций) делается предположение о том, что выполнение каждой инструкции закончено до начала выполнения следующей инструкции. Использование конвейера сохраняет справедливость этого предположения, однако не обязательно сохраняет порядок выполнения инструкций. Ситуация, когда одновременное выполнение нескольких инструкций может привести к логически некорректной работе конвейера, известна как «конфликт конвейера (англ. HYPERLINK "https://en.wikipedia.org/wiki/Hazard_(computer_architecture)" \o "en:Hazard (computer architecture)"pipelinehazard)». Существуют различные методы устранения конфликтов: форвардинг (англ. HYPERLINK "https://en.wikipedia.org/wiki/Hazard_(computer_architecture)" \l "Register_forwarding" \o "en:Hazard (computer architecture)"registerforwarding) (иногда называется bypass) и другие.
Бесконвейерная архитектура[править | править вики-текст]
Бесконвейерная архитектура значительно менее эффективна из-за меньшей загрузки функциональных модулей процессора в то время, пока один или небольшое число модулей выполняет свою функцию во время обработки инструкций. Конвейер не убирает полностью время простоя модулей в процессорах как таковое и не уменьшает время выполнения каждой конкретной инструкции, но заставляет модули процессора работать параллельно над разными инструкциями, увеличивая тем самым количество инструкций, выполняемых за единицу времени, а значит, и общую производительность программ.
Процессоры с конвейером внутри устроены так, что обработка инструкций разделена на последовательность стадий, предполагая одновременную обработку нескольких инструкций на разных стадиях. Результаты работы каждой из стадий передаются через ячейки памяти на следующую стадию, и так — до тех пор, пока инструкция не будет выполнена. Подобная организация процессора, при некотором увеличении среднего времени выполнения каждой инструкции, тем не менее, обеспечивает значительный рост производительности за счёт высокой частоты завершения выполнения инструкций.
Не все инструкции являются независимыми. В простейшем конвейере, где обработка инструкции представлена пятью стадиями, для обеспечения полной загрузки, в то время, пока заканчивается обработка первой инструкции, должно обрабатываться параллельно ещё четыре последовательных независимых инструкции. Если последовательность содержит инструкции, зависимые от выполняемых в данный момент, то управляющая логика простейшего конвейера приостанавливает несколько начальных стадий конвейера, помещая этим самым в конвейер пустую инструкцию («пузырёк»), иногда неоднократно, — до тех пор, пока зависимость не будет разрешена. Существует ряд приёмов, таких, как форвардинг, значительно снижающих необходимость приостанавливать в таких случаях часть конвейера. Однако зависимость между инструкциями, одновременно обрабатываемыми процессором, не позволяет добиться увеличения производительности кратно количеству стадий конвейера в сравнении с бесконвейерным процессором.
Преимущества и недостатки[править | править вики-текст]
Конвейер помогает не во всех случаях. Существует несколько возможных минусов. Конвейер инструкций можно назвать «полностью конвейерным», если он может принимать новую инструкцию каждый машинный цикл. Иначе в конвейер должны быть вынужденно вставлены задержки, которые выравнивают конвейер, при этом ухудшат его производительность.
Преимущества:
Время цикла процессора уменьшается, таким образом увеличивая скорость обработки инструкций в большинстве случаев.
Некоторые комбинационные логические элементы, такие, как сумматоры или умножители, могут быть ускорены путем увеличения количества логических элементов. Использование конвейера может предотвратить ненужное наращивание количества элементов.
Недостатки:
Бесконвейерный процессор исполняет только одну инструкцию за раз. Это предотвращает задержки веток инструкций (фактически каждая ветка задерживается), и проблемы, связанные с последовательными инструкциями, которые исполняются параллельно. Следовательно, схема такого процессора проще, и он дешевле для изготовления.
Задержка инструкций в бесконвейерном процессоре слегка ниже, чем в конвейерном эквиваленте. Это происходит из-за того, что в конвейерный процессор должны быть добавлены дополнительные триггеры.
У бесконвейерного процессора скорость обработки инструкций стабильна. Производительность конвейерного процессора предсказать намного сложнее, и она может значительно различаться в разных программах.
Примеры[править | править вики-текст]
Общий конвейер[править | править вики-текст]

Общий четырёхуровневых конвейер; цветные квадраты символизируют независимые друг от друга инструкции
Справа изображён общий конвейер с четырьмя стадиями работы:
Получение (англ. Fetch)
Раскодирование (англ. Decode)
Выполнение (англ. Execute)
Запись результата (англ. Write-back)
Верхняя серая область — список инструкций, которые предстоит выполнить. Нижняя серая область — список инструкций, которые уже были выполнены. И средняя белая область является самим конвейером.
Выполнение происходит следующим образом:
Цикл Действия
0 Четыре инструкции ожидают исполнения
1 Зелёная инструкция забирается из памяти
2 Зелёная инструкция раскодируется
Фиолетовая инструкция забирается из памяти
3 Зелёная инструкция выполняется (то есть исполняется то действие, которое она кодировала)
Фиолетовая инструкция раскодируется
Синяя инструкция забирается из памяти
4 Итоги исполнения зелёной инструкции записываются в регистры или в память
Фиолетовая инструкция выполняется
Синяя инструкция раскодируется
Красная инструкция забирается из памяти
5 Зелёная инструкция завершилась
Итоги исполнения фиолетовой инструкции записываются в регистры или в память
Синяя инструкция выполняется
Красная инструкция раскодируется
6 Фиолетовая инструкция завершилась
Результаты исполнения синей инструкции записываются в регистры или в память
Красная инструкция выполняется
7 Синяя инструкция завершилась
Итоги исполнения красной инструкции записываются в регистры или в память
8 Красная инструкция завершилась
9 Все инструкции были выполнены
Пузырёк[править | править вики-текст]

Пузырек в третьем такте обработки задерживает исполнение
Для разрешения конфликтов конвейера процессор вынужден задерживать обработку инструкции путём создания «пузырька» в конвейере. Прохождение пузырька через исполнительные устройства не сопровождается никакой полезной работой. Во втором такте обработка фиолетовой инструкции задерживается, и на стадии декодирования в третьем такте теперь находится пузырёк. Все инструкции, следующие «за» фиолетовой инструкцией, задерживаются на один такт, тогда как инструкции, находящиеся «перед» фиолетовой инструкцией, продолжают исполняться.Очевидно, что наличие пузырька в конвейере даёт суммарное время исполнения в 8 тактов вместо 7 на схеме исполнения, показанной выше.
Исполнительные устройства должны выполнять какое-то действие на каждом такте. Пузырьки являются способом создания задержки при обработке инструкции без прекращения работы конвейера. При их выполнении не происходит полезной работы на стадиях выборки, декодирования, исполнения и записи результата. Они могут быть выражены при помощи инструкции NOP[3][4][5]ассемблера.
Пример 1[править | править вики-текст]
Допустим, типичная инструкция для сложения двух чисел — это СЛОЖИТЬ A, B, C. Эта инструкция суммирует значения, находящиеся в ячейках памяти A и B, а затем кладет результат в ячейку памяти C. В конвейерном процессоре контроллер может разбить эту операцию на последовательные задачи вида
ЗАГРУЗИТЬA,R1
ЗАГРУЗИТЬB,R2
СЛОЖИТЬR1,R2,R3
ЗАПИСАТЬR3,C
загрузитьследующуюинструкциюЯчейки R1, R2 и R3 являются регистрамипроцессора. Значения, которые хранятся в ячейках памяти, которые мы называем A и B, загружаются (то есть копируются) в эти регистры, затем суммируются, и результат записывается в ячейку памяти C.
В данном примере конвейер состоит из трех уровней — загрузки, исполнения и записи. Эти шаги называются, очевидно, уровнями или шагами конвейера.
В бесконвейерном процессоре только один шаг может работать в один момент времени, поэтому инструкция должна полностью закончиться прежде, чем следующая инструкция, в принципе, начнется. В конвейерном процессоре все эти шаги могут выполняться одновременно на разных инструкциях. Поэтому, когда первая инструкция находится на шаге исполнения, вторая инструкция будет на стадии раскодирования, а третья инструкция будет на стадии прочтения.
Конвейер не уменьшает время, которое необходимо для того, чтобы выполнить инструкцию, но зато он увеличивает объём (число) инструкций, которые могут быть выполнены одновременно, и таким образом уменьшает задержку между выполненными инструкциями — увеличивая т. н. пропускную способность. Чем больше уровней имеет конвейер, тем больше инструкций могут выполняться одновременно и тем меньше задержка между завершенными инструкциями. Каждый микропроцессор, произведенный в наши дни, использует как минимум двухуровневый конвейер.
Пример 2[править | править вики-текст]
Теоретический трёхуровневый конвейер:
Шаг Англ. название Описание
Выборка FetchПрочитать инструкцию из памяти
Исполнение ExecuteИсполнить инструкцию
Запись Write-backЗаписать результат в память и/или регистры
Псевдоассемблерный листинг, который нужно выполнить:
ЗАГРУЗИТЬ40,A;загрузитьчисло40вA
КОПИРОВАТЬA,B;скопироватьAвBСЛОЖИТЬ20,B;добавить20кB
ЗАПИСАТЬB,0x0300;записатьBвячейкупамяти0x0300
Как это будет исполняться:
Такт Выборка Исполнение Запись Пояснение
Такт 1 ЗАГРУЗИТЬ Инструкция ЗАГРУЗИТЬ читается из памяти.
Такт 2 КОПИРОВАТЬ ЗАГРУЗИТЬ Инструкция ЗАГРУЗИТЬ выполняется, инструкция КОПИРОВАТЬ читается из памяти.
Такт 3 СЛОЖИТЬ КОПИРОВАТЬ ЗАГРУЗИТЬ Инструкция ЗАГРУЗИТЬ находится на шаге записи результата, где её результат (то есть число 40) записывается в регистр А. В это же время инструкция КОПИРОВАТЬ исполняется. Так как она должна скопировать содержимое регистра A в регистр B, она должна дождаться окончания инструкции ЗАГРУЗИТЬ.
Такт 4 ЗАПИСАТЬ СЛОЖИТЬ СКОПИРОВАТЬ Загружена инструкция ЗАПИСАТЬ, тогда как инструкция СКОПИРОВАТЬ прощается с нами, а по инструкции СЛОЖИТЬ в данный момент производятся вычисления.
И так далее. Следует учитывать, что иногда инструкции будут зависеть от итогов других инструкций (например, как наша инструкция КОПИРОВАТЬ). Когда более, чем одна инструкция ссылается на определённое место, читая его (то есть используя в качестве входного операнда) либо записывая в него (то есть используя его в качестве выходного операнда), исполнение инструкций не в порядке, который был изначально запланирован в оригинальной программе, может повлечь за собой «конфликт конвейера (англ. HYPERLINK "https://en.wikipedia.org/wiki/Hazard_(computer_architecture)" \o "en:Hazard (computer architecture)"hazard)» (о чём упоминалось выше). Существует несколько зарекомендовавших себя приёмов либо для предотвращения конфликтов, либо для их исправления, если они случились.
Трудности[править | править вики-текст]
Множество схем включают в себя конвейеры в 7, 10 или даже 20 уровней (как, например, в процессоре Pentium 4). Поздние ядра Pentium 4 с кодовыми именами Prescott и CedarMill (и их Pentium D-производные) имеют 31-уровневый конвейер. Процессор Xelerator X10q имеет конвейер длиной более, чем в тысячу шагов[6]. Обратной стороной медали в данном случае является необходимость сбрасывать весь конвейер в случае, если ход программы изменился (например, по условному оператору). Эту проблему пытаются решать предсказатели переходов. Предсказание переходов само по себе может только усугубить ситуацию, если предсказание производится плохо. В некоторых областях применения, таких, как вычисления на суперкомпьютерах, программы специально пишутся так, чтобы как можно реже использовать условные операторы, поэтому очень длинные конвейеры весьма позитивно скажутся на общей скорости вычислений, так как длинные конвейеры проектируются так, чтобы уменьшить CPI (англ. clocksperinstruction, количество тактов на инструкцию). Если ветвление происходит постоянно, перестановка машинных инструкций таким образом, чтобы те инструкции, которые, скорее всего, понадобятся, были размещены в конвейере, может значительно уменьшить потери скорости по сравнению с необходимостью каждый раз полностью сбрасывать конвейер. Программы типа gcov могут использоваться для того, чтобы определять, как часто отдельные ветки исполняются на самом деле, используя технологию, известную как анализ покрытия кода (англ. codecoverageanalysis), хотя на практике подобный анализ является последней мерой при оптимизации.HYPERLINK "https://ru.wikipedia.org/wiki/%D0%92%D0%B8%D0%BA%D0%B8%D0%BF%D0%B5%D0%B4%D0%B8%D1%8F:%D0%A1%D1%81%D1%8B%D0%BB%D0%BA%D0%B8_%D0%BD%D0%B0_%D0%B8%D1%81%D1%82%D0%BE%D1%87%D0%BD%D0%B8%D0%BA%D0%B8" \o "Википедия:Ссылки на источники"[источник не указан 1731 день]
Высокая пропускная способность конвейеров приводит к уменьшению производительности в случае, если в исполняемом коде содержится много условных переходов: процессор не знает, откуда читать следующую инструкцию, и поэтому вынужден ждать, когда закончится инструкция условного перехода, оставляя за ней пустой конвейер. После того, как ветка будет пройдена и станет известно, куда процессору необходимо переходить в дальнейшем, следующая инструкция должна будет пройти весь путь через конвейер перед тем, как результат становится доступным и процессор снова «работает». В крайнем случае, производительность конвейерного процессора может теоретически упасть до производительности бесконвейерного, или даже быть хуже за счёт того, что будет занят только один уровень конвейера и между уровнями присутствует небольшая задержка.
Если процессор оснащён конвейером, код, читаемый из памяти, не выполняется сразу, а помещается в очередь (очередь предвыборки, prefetchinputqueue). Если код, содержащийся в памяти, будет изменён, код, содержащийся очереди конвейера, останется прежним. Также не изменятся инструкции, находящиеся в кэше инструкций. Стоит учитывать, что данная проблема характерна только для самомодифицирующихся программ и упаковщиковисполняемых файлов.

Лекция 20. Микропроцессоры неклассической архитектуры.
TrueNorth — исследовательский проект нейроморфического процессора второго поколения от компании IBM. Микрочип TrueNorth был разработан к лету 2014 года в рамках программы DARPASyNAPSE. Процессор имеет неклассическую архитектуру (не основан на архитектуре фон Неймана) и вдохновлен некоторыми моделями работы неокортекса.[1]Содержание
 [показать] 
1Характеристики2Применение3Примечания4Литература5СсылкиХарактеристики[править | править вики-текст]
Чип TrueNorth изготовлен по планарной полупроводниковой технологии по техпроцессу 28 нм на заводе Samsung. Он содержит 5.4 миллиарда транзисторов (что делает его одним из крупнейших на момент выпуска), с помощью которых реализованы:[1]один миллион эмулируемых «нейронов»
256 миллионов эмулируемых связей между нейронами — «синапсов».
около 400 мегабит SRAM памяти (приблизительно 50 мегабайт)
Для организации такого количества элементов использовалось 4096 блоков («ядер») в двухмерном массиве размером 64 на 64. Каждый блок («ядро») содержит планировщик, модуль управления токенами, около 100 килобит SRAM памяти для хранения состояния «синапсов» и «нейронов», модуль коммуникации с соседними ядрами (маршрутизатор, router), и логическую реализацию «нейронов»[1], которая позволяет каждому блоку моделировать 256 «нейронов» с частотой 1 кГц[2] Чип построен по асинхронной технологии, созданной в CornellUniversity.[3]Моделируются «нейроны» с двоичным состоянием (HYPERLINK "https://en.wikipedia.org/wiki/Spiking_neural_network" \o "en:Spiking neural network"Spikingneurons; Integrate-and-fire). Синапсы имеют веса, выражающиеся как 9-ти битные целые, и 4-битную временную задержку.[2]Энергопотребление чипа составляет 70-100 милливатт (при анализе видео 400x240 30 fps), производительность систем на базе чипа оценивается авторами в 46 млрд «синаптических операций в секунду на ватт»[1]Применение[править | править вики-текст]
TrueNorth подходит для исполнения рекуррентных нейронных сетей, которые могут применяться для классификации различной информации, в том числе, изображений, речи и видео.[1]Для программирования TrueNorth используется новый объектно-ориентированный язык Corelet.[4][5] Отладочная плата с 16 нейроморфическими процессорами IBM TrueNorth, каждый из которых содержит более 5 млрд транзисторов и имитирует работу до 1 миллиона модельных «нейронов» и до 250 миллионов связей между ними «синапсов»

Лекция 21. Назначение и принцип работы микроконтроллеров.
Микроконтроллер – самостоятельная микропроцессорная система, которая содержит центральный микропроцессор (ЦМП), вспомогательные схемы (буферные регистры, контроллер) и устройства ввода/вывода, размещенные в общем корпусе (одном чипе).
Это определение справедливо для восьмиразрядных микроконтроллеров, но недостаточно для шестнадцатиразрядного и тридцатидвухразрядного микроконтроллеров (МК), так как эти МК содержат больше одного чипа (программаторы, дисплеи и т.д.).
 
МК классифицируются:
По архитектуре
а) Принстонская архитектура (или фон Неймоновская).
Например, МК КР 580ВМ80, Z80.
В данном МК программы, память данных и стековая память хранятся в общем запоминающем устройстве (общая адресация памяти), и данные поступают в МП через одну шину данных.
Преимущества архитектуры: простота технической реализации, гибкость выполнения некоторых программных процедур.
б) Гарвардская архитектура.В ней хранение программ, данных и стека осуществляется в отдельных блоках запоминающего устройства и данные поступают по отдельным шинам.
Эта архитектура сложна в технической реализации. Преимущества архитектуры: меньшее количество тактов на выполнение команды (процессор точно знает, в каком блоке какая информация). Пример такой архитектуры: микроконтроллеры фирмы “Atmel”.
 
По функциональному назначению
а) встраиваемые восьмиразрядные микроконтроллеры.
б) шестнадцатиразрядные и тридцатидвухразрядные микроконтроллеры.
в) цифровые сигнальные микроконтроллеры (DSP). Их предназначение: для построения цифровых фильтров, вокодеров.
МК относится к числу встраиваемых с Гарвардской структурой микроконтроллеров.
Чтобы ввести в действие МК нужно на «Ассемблере» или «С» разработать программу, отладить с помощью отладчика (например, Studio 4.528) и записать с помощью программатора программу в МК. Подать питание, подключить тактовые сигналы, подсоединить порты и МК - составная часть управления в аппарате.
 
Основное назначение МК: обеспечить гибкое управление объектами с учетом сложившейся ситуации или режимов работы.

 
В состав МК входят следующие элементы:
· схема начального пуска МК (Reset);
· генератор тактовых импульсов (внешний или внутренний);
· процессор;
· память программ;
· память данных. RAM (ОЗУ) и ROM (ПЗУ);
· устройства ввода/вывода данных;
· таймеры, фиксирующие количество командных циклов.
 
Эту структуру можно представить следующем виде:
 
 

 
Тактовая частота МК 2…40 МГц. Более сложные МК содержат встроенные мониторы, отладчики программ, компараторы АЦП/ЦАП, подключение внешней памяти, параллельные и последовательные порты ввода/вывода.
Особенности построения МК AVR фирмы «Atmel»
МК серии AVR относятся к классу восьмиразрядных микроконтроллеров. Это значит, что большинство операций процессор производит с восьмиразрядными двоичными числам. Поэтому шина данных у этих МК восьмиразрядная. Все ячейки памяти и большинство регистров (например, РОН) восьми разрядные.
 
Для обработки 16-ти разрядных чисел некоторые регистры могут объединятся попарно.
 
Большинство команд МК выполняется за один такт. Поэтому быстродействие контроллеров может достигать 1млн. операций в секунду при тактовой частоте 1МГц.
 

Лекция 22. Области применения и перспективы развития микроконтроллеров.
Микроконтроллер - это специальная микросхема, предназначенная для управления различными электронными устройствами. Микроконтроллеры впервые появились в том же году, что и микропроцессоры общего назначения (1971).
Разработчики микроконтроллеров придумали остроумную идею – объединить процессор, память, ПЗУ и периферию внутри одного корпуса, внешне похожего на обычную микросхему. С тех пор производство микроконтроллеров ежегодно во много раз превышает производство процессоров, а потребность в них не снижается.
Микроконтроллеры выпускают десятки компаний, причем производятся не только современные 32-битные микроконтроллеры, но и 16, и даже 8-битные (как i8051 и аналоги). Внутри каждого семейства часто можно встретить почти одинаковые модели, различающиеся скоростью работы ЦПУ и объемом памяти.
Дело в том, что микроконтроллеры применяются преимущественно во встроенных системах, в игрушках, в станках, в массовой домашней технике, в домашней автоматике – там, где нужна не мощность процессора, а, скорее, баланс между ценой и достаточной функциональностью.
Именно поэтому самые старые типы микроконтроллеров еще до сих пор в ходу – они многое могут: от автоматического открывания дверей и включения полива газонов до интеграции в систему «умный дом». При этом существуют и более мощные микроконтроллеры, способные выполнять сотни миллионов операций в секунду и обвязанные периферией «до зубов». У них и задачи соответствующие. Таким образом, разработчик сначала оценивает задачу, а уж потом выбирает под нее подходящее «железо».
На сегодняшний день существует более 200 модификаций микроконтроллеров, совместимых с i8051, выпускаемых двумя десятками компаний, и большое количество микроконтроллеров других типов. Популярностью у разработчиков пользуются 8-битные микроконтроллеры PIC фирмы MicrochipTechnology и AVR фирмы Atmel, 16-битные MSP430 фирмы TI, а также 32-битные микроконтроллеры, архитектуры ARM, которую разрабатывает фирма ARM Limited и продаёт лицензии другим фирмам для их производства.

16-битный 28-pin PDIP PIC24 микроконтроллер

Микроконтроллер Atmel AVR ATmega8 в корпусе DIP

Устройство микроконтроллера AVR
Микроконтроллер характеризуется большим числом параметров, поскольку он одновременно является сложным программно-управляемым устройством и электронным прибором (микросхемой). Приставка "микро" в названии микроконтроллера означает, что выполняется он по микроэлектронной технологии.
В ходе работы микрконтроллер считывает команды из памяти или порта ввода и исполняет их. Что означает каждая команда, определяется системой команд микроконтроллера. Сиситема команд заложена в архитектуре микрконтроллера и выполнение кода команды выражается в проведении внутренними элементами микросхемы определенных микроопераций.
Микроконтроллеры позволяют гибко управлять различными электронными и электрическими устройствами. Некоторые модели микроконтроллеров настолько мощны, что могут непосредственно переключать реле (к примеру, на елочных гирляндах).
Микроконтроллеры, как правило, не работает в одиночку, а запаивается в схему, где, кроме него, подключаются экраны, клавиатурные входы, различные датчики и т.д.Софт для микроконтроллеров может привлечь внимание тех, кто обожает «гоняться за битами», так как обычно память в микроконтроллерах составляет от 2 до 128 Кб. Если меньше, то писать приходится на ассемблере или Форте, если есть возможность, то используют специальные версии Бейсика, Паскаля, но в основном – Си. Прежде чем окончательно запрограммировать микроконтроллер, его тестируют в эмуляторах – программных или аппаратных. 
Тут может возникнуть вопрос: микропроцессор и микроконтроллер это просто разное название одного и того же устройства, или это все-таки разные вещи?
Микропроцессор это центральное устройство любой ЭВМ, выполненный по интегральной технологии. Само название говорит о том, что именно в нем происходят вычислительные процессы. Чтобы из него получилась ЭВМ, пусть даже не очень современная и мощная (вспомните любительские конструкции Радио-86 или Синклер), его надо дополнить внешними устройствами. В первую очередь это оперативная память и порты ввода вывода информации.
Микроконтроллер имеет внутри себя процессор, оперативную память, память программ, а кроме этого целый набор периферийных устройств, которые превращают процессор в полнофункциональную ЭВМ. По старой терминологии советских времен подобные устройства назывались Однокристальными Микро ЭВМ. Но советская вычислительная техника, как известно, зашла в тупик, а вместе с ней и ОМЭВМ.
Зарубежная же вычислительная техника на месте не стояла, поэтому ОМЭВМ стали называться контроллерами (от англ. Control – управлять, управление). И в самом деле, контроллеры оказались весьма пригодны для управления различной техникой, даже не очень сложной. 
МИКРОКОНТРОЛЛЕР - это уже не процессор, но ещё и не компьютер.
Центральный процессор, имеющийся в каждом компьютере - главный вычислитель. Хотя компьютер и не предназначен исключительно для вычислительной нагрузки, процессор является в нём головным элементом. Но не только в компьютере имеется процессор.
Если вдуматься и присмотреться, то можно обнаружить, что процессоры применяются в большинстве приборов бытового предназначения. Только там используются не такие процессоры как в компьютере, а микропроцессоры и даже микроконтроллеры.
Так что же такое микроконтроллер и чем отличается от собственно процессора или это совершенно различные электронные компоненты?
Большие интегральные микросхемы или микросхемы с большой степенью интеграции и есть процессоры. Микропроцессоры, по сути те же процессоры, но из-за приставки «микро» определяется их суть, что они миниатюрнее своих «больших» собратьев. В своё историческое время процессор со своим размером мог занимать не одну комнату, впору их назвать как вымерших динозавров макро-процессорами, чтобы и их как-то упорядочить в современном представлении об электронике.
Уменьшенный в габаритах и скомпонованный процессор занимает меньше места и его можно поместить в более компактное изделие, это и есть микропроцессор. Но сам процессор мало что способен делать, кроме как данные пересылать между регистрами и совершать какие-то арифметические и логические действия над ними.
Чтобы микропроцессор мог переслать данные в память, эта самая память должна присутствовать либо на самом кристалле, на котором находится сам процессорный элемент, либо подключаться к внешней оперативной памяти выполненной в виде отдельного кристалла или модуля.
Кроме памяти процессор должен взаимодействовать с внешними устройствами – периферией. Иначе какой пользы можно ожидать от работы процессора, перемешивающего и перемещающего данные туда-сюда. Смысл возникает тогда, когда процессор взаимодействует с устройствами ввода-вывода. У компьютера это клавиатура, манипулятор мышь и устройства отображения как дисплей, опционально – принтер и, например, сканер опять же для ввода информации.
Чтобы управлять устройствами ввода-вывода, непременно необходимы соответствующие буферные схемы и элементы. На их основе реализуются интерфейсные так называемые аппаратные средства. Способы взаимодействия с интерфейсными элементами предполагают наличие схем портов ввода-вывода, дешифраторов адреса и формирователей шин с буферными схемами, для увеличения нагрузочной способности микропроцессора.
Интеграция процессора со всеми необходимыми дополнительными элементами, для того чтобы это изделие выливалось в какой-то завершённый конструктив и приводит к образованию микроконтроллера. Микросхема или микроконтроллерный чип реализует на одном кристалле процессор и интерфейсные схемы.
Самодостаточный чип, который содержит практически всё, чтобы этого хватало для построения законченного изделия и есть пример типового микроконтроллера. Например наручные электронные часы или часы-будильник имеют внутри микроконтроллер, который реализует все функции такового устройства. Отдельные периферийные устройства подключаются непосредственно к ножкам микросхемы микроконтроллера, либо совместно используются дополнительные элементы или микросхемы малой либо средней степени интеграции.
Микроконтроллеры широко используются в изделиях которые содержат всю систему целиком исключительно в одной миниатюрной микросхеме, часто называемой микросборкой. Например «чиповая» кредитная карточка содержит микроконтроллер внутри в пластиковой основе. Таблетка домофона так же внутри себя содержит микроконтроллер. И примеров использования и применения микроконтроллеров настолько обширен в современном мире, что легко обнаружить наличие контроллера в любом мало-мальски интеллектуальном устройстве от детской игрушки до беспроводной гарнитуры сотового телефона.

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

Рис. 1.1 Функциональная структура процессора (а) и ее разбиение для реализации процессора в виде комплекта секционных БИС.
Операционный процессор служит для обработки данных, управляющий процессор выполняет функции выборки, декодирования и вычисления адресов операндов и также генерирует последовательности микрокоманд. Автономность работы и большое быстродействие БИС УП позволяет выбирать команды из памяти с большей скоростью, чем скорость их исполнения БИС ОП. При этом в УП образуется очередь еще не исполненных команд, а также заранее подготавливаются те данные, которые потребуются ОП в следующих циклах работы. Такая опережающая выборка команд экономит время ОП на ожидание операндов, необходимых для выполнения команд программ. Интерфейсный процессор позволяет подключить память и периферийные средства к микропроцессору; он, по существу, является сложным контроллером для устройств ввода/вывода информации. БИС ИП выполняет также функции канала прямого доступа к памяти.
Выбираемые из памяти команды распознаются и выполняются каждой частью микропроцессора автономно и поэтому может быть обеспечен режим одновременной работы всех БИС МП, т.е. конвейерный поточный режим исполнения последовательности команд программы (выполнение последовательности с небольшим временным сдвигом). Такой режим работы значительно повышает производительность микропроцессора.
Многокристальные секционные микропроцессоры получаются в том случае, когда в виде БИС реализуются части (секции) логической структуры процессора при функциональном разбиении ее вертикальными плоскостями (рис. 1,б). Для построения многоразрядных микропроцессоров при параллельном включении секций БИС в них добавляются средства "стыковки".
Для создания высокопроизводительных многоразрядных микропроцессоров требуется столь много аппаратных средств, не реализуемых в доступных БИС, что может возникнуть необходимость еще и в функциональном разбиении структуры микропроцессора горизонтальными плоскостями. В результате рассмотренного функционального разделения структуры микропроцессора на функционально и конструктивно законченные части создаются условия реализации каждой из них в виде БИС. Все они образуют комплект секционных БИС МП.
Таким образом, микропроцессорная секция это БИС, предназначенная для обработки нескольких разрядов данных или выполнения определенных управляющих операций. Секционность БИС МП определяет возможность "наращивания" разрядности обрабатываемых данных или усложнения устройств управления микропроцессора при "параллельном" включении большего числа БИС.
Однокристальные и трехкристальные БИС МП, как правило, изготовляют на основе микроэлектронных технологий униполярных полупроводниковых приборов, а многокристальные секционные БИС МП на основе технологии биполярных полупроводниковых приборов. Использование многокристальных микропроцессорных высокоскоростных биполярных БИС, имеющих функциональную законченность при малой физической разрядности обрабатываемых данных и монтируемых в корпус с большим числом выводов, позволяет организовать разветвление связи в процессоре, а также осуществить конвейерные принципы обработки информации для повышения его производительности.
По назначению различают универсальные и специализированные микропроцессоры.
Универсальные микропроцессоры могут быть применены для решения широкого круга разнообразных задач. При этом их эффективная производительность слабо зависит от проблемной специфики решаемых задач. Специализация МП, т.е. его проблемная ориентация на ускоренное выполнение определенных функций позволяет резко увеличить эффективную производительность при решении только определенных задач.
Среди специализированных микропроцессоров можно выделить различные микроконтроллеры, ориентированные на выполнение сложных последовательностей логических операций, математические МП, предназначенные для повышения производительности при выполнении арифметических операций за счет, например, матричных методов их выполнения, МП для обработки данных в различных областях применений и т. д. С помощью специализированных МП можно эффективно решать новые сложные задачи параллельной обработки данных. Например, конволюция позволяет осуществить более сложную математическую обработку сигналов, чем широко используемые методы корреляции. Последние в основном сводятся к сравнению всего двух серий данных: входных, передаваемых формой сигнала, и фиксированных опорных и к определению их подобия. Конволюция дает возможность в реальном масштабе времени находить соответствие для сигналов изменяющейся формы путем сравнения их с различными эталонными сигналами, что, например, может позволить эффективно выделить полезный сигнал на фоне шума.
Разработанные однокристальные конвольверы используются в устройствах опознавания образов в тех случаях, когда возможности сбора данных превосходят способности системы обрабатывать эти данные.
По виду обрабатываемых входных сигналов различают цифровые и аналоговые микропроцессоры. Сами микропроцессоры цифровые устройства, однако могут иметь встроенные аналого-цифровые и цифро-аналоговые преобразователи. Поэтому входные аналоговые сигналы передаются в МП через преобразователь в цифровой форме, обрабатываются и после обратного преобразования в аналоговую форму поступают на выход. С архитектурной точки зрения такие микропроцессоры представляют собой аналоговые функциональные преобразователи сигналов и называются аналоговыми микропроцессорами. Они выполняют функции любой аналоговой схемы (например, производят генерацию колебаний, модуляцию, смещение, фильтрацию, кодирование и декодирование сигналов в реальном масштабе времени и т.д., заменяя сложные схемы, состоящие из операционных усилителей, катушек индуктивности, конденсаторов и т.д.). При этом применение аналогового микропроцессора значительно повышает точность обработки аналоговых сигналов и их воспроизводимость, а также расширяет функциональные возможности за счет программной "настройки" цифровой части микропроцессора на различные алгоритмы обработки сигналов.
Обычно в составе однокристальных аналоговых МП имеется несколько каналов аналого-цифрового и цифро-аналогового преобразования. В аналоговом микропроцессоре разрядность обрабатываемых данных достигает 24 бит и более, большое значение уделяется увеличению скорости выполнения арифметических операций.
Отличительная черта аналоговых микропроцессоров способность к переработке большого объема числовых данных, т. е. к выполнению операций сложения и умножения с большой скоростью при необходимости даже за счет отказа от операций прерываний и переходов. Аналоговый сигнал, преобразованный в цифровую форму, обрабатывается в реальном масштабе времени и передается на выход обычно в аналоговой форме через цифро-аналоговый преобразователь. При этом согласно теореме Котельникова частота квантования аналогового сигнала должна вдвое превышать верхнюю частоту сигнала.
Сравнение цифровых микропроцессоров производится сопоставлением времени выполнения ими списков операций. Сравнение же аналоговых микропроцессоров производится по количеству эквивалентных звеньев аналого-цифровых фильтров рекурсивных фильтров второго порядка. Производительность аналогового микропроцессора определяется его способностью быстро выполнять операции умножения: чем быстрее осуществляется умножение, тем больше эквивалентное количество звеньев фильтра в аналоговом преобразователе и тем более сложный алгоритм преобразования цифровых сигналов можно задавать в микропроцессоре.
Одним из направлений дальнейшего совершенствования аналоговых микропроцессоров является повышение их универсальности и гибкости. Поэтому вместе с повышением скорости обработки большого объема цифровых данных будут развиваться средства обеспечения развитых вычислительных процессов обработки цифровой информации за счет реализации аппаратных блоков прерывания программ и программных переходов.
По характеру временной организации работы микропроцессоры делят на синхронные и асинхронные.
Синхронные микропроцессоры - микропроцессоры, в которых начало и конец выполнения операций задаются устройством управления (время выполнения операций в этом случае не зависит от вида выполняемых команд и величин операндов).
Асинхронные микропроцессоры позволяют начало выполнения каждой следующей операции определить по сигналу фактического окончания выполнения предыдущей операции. Для более эффективного использования каждого устройства микропроцессорной системы в состав асинхронно работающих устройств вводят электронные цепи, обеспечивающие автономное функционирование устройств. Закончив работу над какой-либо операцией, устройство вырабатывает сигнал запроса, означающий его готовность к выполнению следующей операции. При этом роль естественного распределителя работ принимает на себя память, которая в соответствии с заранее установленным приоритетом выполняет запросы остальных устройств по обеспечению их командной информацией и данными.
По организации структуры микропроцессорных систем различают микроЭВМ одно- и многомагистральные.
В одномагистральных микроЭВМ все устройства имеют одинаковый интерфейс и подключены к единой информационной магистрали, по которой передаются коды данных, адресов и управляющих сигналов.
В многомагистральныхмикроЭВМ устройства группами подключаются к своей информационной магистрали. Это позволяет осуществить одновременную передачу информационных сигналов по нескольким (или всем) магистралям. Такая организация систем усложняет их конструкцию, однако увеличивает производительность.
По количеству выполняемых программ различают одно- и многопрограммные микропроцессоры.
В однопрограммных микропроцессорах выполняется только одна программа. Переход к выполнению другой программы происходит после завершения текущей программы.
В много- или мультипрограммных микропроцессорах одновременно выполняется несколько (обычно несколько десятков) программ. Организация мультипрограммной работы микропроцессорных управляющих систем позволяет осуществить контроль за состоянием и управлением большим числом источников или приемников информации.

Лекция 24. Многопроцессорные системы. Многомашинные системы.
Многопроцессорные и многомашинные вычислительные системы
В настоящее время тенденция в развитии микропроцессоров и систем, построенных на их основе, направлена на все большее повышение их производительности. Вычислительные возможности любой системы достигают своей наивысшей производительности благодаря двум факторам:
использованию высокоскоростных элементов и параллельному выполнению большого числа операций. Направления, связанные с повышением производительности отдельных микропроцессоров, мы рассматривали в предыдущих лекциях, а в этой лекции остановимся на вопросах распараллеливания обработки информации.
Существует несколько вариантов классификации систем параллельной обработки данных. По-видимому, самой ранней и наиболее известной является классификация архитектур вычислительных систем, предложенная в 1966 году М. Флинном. Классификация базируется на понятии потока, под которым понимается последовательность элементов, команд или данных, обрабатываемая процессором. На основе числа потоков команд и потоков данных выделяются четыре класса архитектур:
SISD, MISD, SIMD, MIMD.
SISD ( sINgleINsTRuctionsTReam / sINgledatasTReam ) - одиночный поток команд и одиночный поток данных. К этому классу относятся прежде всего классические последовательные машины, или, иначе, машины фон-неймановского типа. В таких машинах есть только один поток команд, все команды обрабатываются последовательно друг за другом и каждая команда инициирует одну операцию с одним потоком данных. Не имеет значения тот факт, что для увеличения скорости обработки команд и скорости выполнения арифметических операций процессор может использовать конвейерную обработку. В таком понимании машины данного класса фактически не относятся к параллельным системам.
SIMD ( sINgleINsTRuctionsTReam / multIPledatasTReam ) - одиночный поток команд и множественный поток данных. Применительно к одному микропроцессору этот подход реализован в MMX- и SSE- расширениях современных микропроцессоров. Микропроцессорные системы типа SIMD состоят из большого числа идентичных процессорных элементов, имеющих собственную память. Все процессорные элементы в такой машине выполняют одну и ту же программу. Это позволяет выполнять одну арифметическую операцию сразу над многими данными - элементамивектора. Очевидно, что такая система, составленная из большого числа процессоров, может обеспечить существенное повышение производительности только на тех задачах, при решении которых все процессоры могут делать одну и ту же работу.
MISD (multIPeINsTRuctionsTReam / sINgledatasTReam ) - множественный поток команд и одиночный поток данных. Определение подразумевает наличие в архитектуре многих процессоров, обрабатывающих один и тот же поток данных. Ряд исследователей к данному классу относят конвейерные машины.
MIMD (multIPeINsTRuctionsTReam / multIPledatasTReam ) - множественный поток команд и множественный поток данных. Базовой моделью вычислений в этом случае является совокупность независимых процессов, эпизодически обращающихся к разделяемым данным. В такой системе каждый процессорный элемент выполняет свою программу достаточно независимо от других процессорных элементов. Архитектура MIMD дает большую гибкость: при наличии адекватной поддержки со стороны аппаратных средств и программного обеспечения MIMD может работать как однопользовательская система, обеспечивая высокопроизводительную обработку данных для одной прикладной задачи, как многопрограммная машина, выполняющая множество задач параллельно, и как некоторая комбинация этих возможностей. К тому же архитектура MIMD может использовать все преимущества современной микропроцессорной технологии на основе строгого учета соотношения стоимость/производительность. В действительности практически все современные многопроцессорные системы строятся на тех же микропроцессорах, которые можно найти в персональных компьютерах, рабочих станциях и небольших однопроцессорных серверах.
Как и любая другая, приведенная выше классификация несовершенна: существуют машины, прямо в нее не попадающие, имеются также важные признаки, которые в этой классификации не учтены. Рассмотрим классификацию многопроцессорных и многомашинных систем на основе другого признака - степени разделения вычислительных ресурсов системы.
В этом случае выделяют следующие 4 класса систем:
системы с симметричной мультипроцессорной обработкой (symmeTRicmultIProcessINg), или SMP-системы;
системы, построенные по технологии неоднородного доступа к памяти (non-unIFormmemoryaccess), или NUMA-системы;
кластеры;
системы вычислений с массовым параллелизмом (massivelyparallelprocessor), или MPP-системы.
Самым высоким уровнем интеграции ресурсов обладает система с симметричной мультипроцессорной обработкой, или SMP-система (рис. 13.1).
В этой архитектуре все процессоры имеют равноправный доступ ко всему пространству оперативной памяти и ввода/вывода. Поэтому SMP-архитектура называется симметричной. Ее интерфейсы доступа к пространству ввода/вывода и ОП, система управления кэш-памятью, системное ПО и т. п. построены таким образом, чтобы обеспечить согласованный доступ к разделяемым ресурсам. Соответствующие механизмы блокировки заложены и в шинном интерфейсе, и в компонентах операционной системы, и при построении кэша.

Рис. 13.1. Система с симметричной мультипроцессорной обработкой
С точки зрения прикладной задачи, SMP-система представляет собой единый вычислительный комплекс с вычислительными ресурсами, пропорциональными количеству процессоров. Распараллеливание вычислений обеспечивается операционной системой, установленной на одном из процессоров. Вся система работает под управлением единой ОС (обычно UNIX-подобной, но для Intel-платформ поддерживается WINdows NT).
ОС автоматически в процессе работы распределяет процессы по процессорным ядрам, оптимизируя использование ресурсов. Ядра задействуются равномерно, и прикладные программы могут выполняться параллельно на всем множестве ядер. При этом достигается максимальное быстродействие системы. Важно, что для синхронизации приложений вместо сложных механизмов и протоколов межпроцессорной коммуникации применяются стандартные функции ОС. Таким образом, проще реализовать проекты с распараллеливанием программных потоков. Общая для совокупности ядер ОС позволяет с помощью служебных инструментов собирать статистику, единую для всей архитектуры. Соответственно, можно облегчить отладку и оптимизацию приложений на этапе разработки или масштабирования для других форм многопроцессорной обработки.
В общем случае приложение, написанное для однопроцессорной системы, не требует модификации при его переносе в мультипроцессорную среду. Однако для оптимальной работы программы или частей ОС они переписываются специально для работы в мультипроцессорной среде.
Сравнительно небольшое количество процессоров в таких машинах позволяет иметь одну централизованную общую память и объединить процессоры и память с помощью одной шины.
Сдерживающим фактором в подобных системах является пропускная способность магистрали, что приводит к их плохой масштабируемости. Причиной этого является то, что в каждый момент времени шина способна обрабатывать только одну транзакцию, вследствие чего возникают проблемы разрешения конфликтов при одновременном обращении нескольких процессоров к одним и тем же областям общей физической памяти. Вычислительные элементы начинают мешать друг другу. Когда произойдет такой конфликт, зависит от скорости связи и от количества вычислительных элементов. Кроме того, системная шина имеет ограниченное число слотов. Все это очевидно препятствует увеличению производительности при увеличении числа процессоров. В реальных системах можно задействовать не более 32 процессоров.
В современных микропроцессорах поддержка построения мультипроцессорной системы закладывается на уровне аппаратной реализации МП, что делает многопроцессорные системы сравнительно недорогими.
Так, для обеспечения возможности работы на общую магистраль каждый микропроцессор фирмы Intel начиная с PentiumPro имеет встроенную поддержку двухразрядного идентификатора процессора - APIC (AdvancedProgrammableINTerruptConTRoller). По умолчанию CPU с самым высоким номером идентификатора становится процессором начальной загрузки. Такая идентификация облегчает арбитраж шины данных в SMP-системе. Подобные средства мы видели и в МП Power4, где на аппаратном уровне поддерживается создание микросхемного модуля MCM из 4 микропроцессоров, включающего в совокупности 8 процессорных ядер.
Сегодня SMP широко применяют в многопроцессорных суперкомпьютерах и серверных приложениях. Однако если необходимо детерминированное исполнение программ в реальном масштабе времени, например, при визуализации мультимедийных данных, возможности сугубосимметричной обработки весьма ограничены. Может возникнуть ситуация, когда приложения, выполняемые на различных ядрах, обращаются к одному ресурсу ОС. В этом случае доступ получит только одно из ядер.
Остальные будут простаивать до высвобождения критической области.
Естественно, при этом резко снижается производительность приложений реального времени.
Исчерпание производительности системной шины в SMP-системах при доступе большого числа процессоров к общему пространству оперативной памяти и принципиальные ограничения шинной технологии стали причиной сдерживания роста производительности SMP-систем. На данный момент эта проблема получила два решения. Первое - замена системной шины на высокопроизводительный коммутатор, обеспечивающий одновременный неблокирующий доступ к различным участкам памяти. Второе решение предлагает технология NUMA.
Система, построенная по технологии NUMA, представляет собой набор узлов, каждый из которых, по сути, является функционально законченным однопроцессорным или SMP-компьютером. Каждый имеет свое локальное пространство оперативной памяти и ввода/вывода. Но с помощью специальной логики каждый имеет доступ к пространству оперативной памяти и ввода/вывода любого другого узла (рис. 13.2). Физически отдельные устройства памяти могут адресоваться как логически единое адресное пространство - это означает, что любой процессор может выполнять обращения к любым ячейкам памяти, в предположении, что он имеет соответствующие права доступа. Поэтому иногда такие системы называются системами с распределенной разделяемой памятью (DSM - disTRibutedsharedmemory).

Рис. 13.2. Система, построенная по технологии неоднородного до ступа к памяти
При такой организации память каждого узла системы имеет свою адресацию в адресном пространстве всей системы. Логика доступа к ресурсам определяет, к памяти какого узла относится выработанный процессором адрес. Если он не принадлежит памяти данного узла, организуется обращение к другому узлу согласно заложенной в логике доступа карте адресов. При этом доступ к локальной памяти осуществляется в несколько раз быстрее, чем к удаленной.При использовании наиболее распространенного сейчас варианта cc-NUMA (cache-coherent NUMA - неоднородный доступ к памяти с согласованием содержимого кэш-памяти) обеспечивается кэширование данных оперативной памяти других узлов.
Обычно вся система работает под управлением единой ОС, как в SMP. Возможны также варианты динамического разделения системы, когда отдельные разделы системы работают под управлением разных ОС.
Довольно большое время доступа к оперативной памяти соседних узлов по сравнению с доступом к ОП своего узла в NUMA-системах на настоящий момент делает такое использование не вполне оптимальным.
Так что полной функциональностью SMP-системNUMA-компьютеры на сегодняшний день не обладают. Однако среди систем общего назначения NUMA-системы имеют один из наиболее высоких показателей по масштабируемости и, соответственно, по производительности. На сегодня максимальное число процессоров в cc-NUMA-системах может превышать 1000 (серия OrigIN3000). Один из наиболее производительных суперкомпьютеров - Tera 10 - имеет производительностью 60 Тфлопс и состоит из 544 SMP-узлов, в каждом из которых находится от 8 до 16 процессоров Itanium 2.
Следующим уровнем в иерархии параллельных систем являются комплексы, также состоящие из отдельных машин, но лишь частично разделяющие некоторые ресурсы. Речь идет о кластерах.
Кластер представляет собой систему из нескольких компьютеров (в большинстве случаев серийно выпускаемых), имеющих общий разделяемый ресурс для хранения совместно обрабатываемых данных (обычно набор дисков или дисковых массивов) и объединенных высокоскоростной магистралью (рис. 13.3).
В кластерной системе некоторое распределенное приложение параллельно на нескольких узлах обрабатывает общий набор данных, как правило, таким образом, чтобы у пользователя возникла иллюзия работы на одной машине.
Обычно в кластерных системах не обеспечивается единая операционная среда для работы общего набора приложений на всех узлах кластера. То есть каждый компьютер кластера - это автономная система с отдельным экземпляром ОС и своими, принадлежащими только ей системными ресурсами: набором заведенных пользователей, системными буферами, областью свопинга и т. п. Приложение, запущенное на нем, может видеть только общие диски или отдельные участки памяти. На узлах кластера работают специально написанные для такой конфигурации приложения, параллельно обрабатывающие общий набор данных. На каждой из машин они представлены рядом процессов, программ, взаимодействующих с помощью кластерного программного обеспечения. Таким образом, кластерное ПО - это лишь средство для взаимодействия узлов и синхронизации доступа к общим данным. Кластер как параллельная система формируется на прикладном уровне, а не на уровне операционной системы.

Рис. 13.3. Структура кластера
В настоящее время такие системы имеют две основные области применения: параллельные серверы баз данных и высоконадежные вычислительные комплексы. Рынок параллельных СУБД и есть фактически рынок кластеров приложений. Высоконадежные комплексы представляют собой группу узлов, на которых независимо друг от друга выполняются некоторые важные приложения, требующие постоянной, непрерывной работы. То есть в такой системе на аппаратном уровне фактически поддерживается основной механизм повышения надежности - резервирование. Причем узлы находятся в так называемом "горячем" резерве, и каждый из них в любой момент готов продолжить вычисления при выходе из строя какого-либо узла. При этом все приложения с отказавшего узла автоматически переносятся на другие машины комплекса. Такая система также формально является кластером, хотя в ней отсутствует параллельная обработка общих данных. Эти данные обычно монопольно используются выполняемыми в рамках кластера приложениями и должны быть доступны для всех узлов.
Если в кластере его узлы разделяют некоторые ресурсы, то параллельные системы другого класса - системы вычислений с массовым параллелизмом (MPP) - строятся из отдельных полностью независимых компьютеров, соединенных только высокоскоростной магистралью или коммуникационными каналами (рис. 13.4). Это могут быть либо просто несколько серийно выпускаемых UNIX-машин, соединенных с помощью высокопроизводительной сетевой среды, либо специально сконструированная система из отдельных функциональных блоков, объединенных коммутатором.

Рис. 13.4. Структура MPP-системы
В такой системе адресное пространство состоит из отдельных адресных пространств, которые логически не связаны между собой и доступ к которым не может быть осуществлен аппаратно другим процессором.
При этом для обмена данными используется механизм передачи сообщений между процессорами. Поэтому эти машины часто называют машинами с передачей сообщений. Пользователь может определить логический номер процессора, к которому он подключен, и организовать обмен сообщениями с другими процессорами.
На машинах MPP-архитектуры используются два варианта работы операционной системы. В одном из них полноценная операционная система работает только на управляющей машине (front-end); на каждом отдельном модуле функционирует сильно урезанный вариант ОС, обеспечивающий работу только расположенной в нем ветви параллельного приложения. Во втором варианте на каждом модуле работает полноценная, как правило, UNIX-подобная ОС, устанавливаемая отдельно.
Программирование в такой системе - достаточно сложная задача.
Она требует специального инструментария и особого системного программного обеспечения для работы параллельных приложений, которые ориентированы на функционирование параллельных процессов, распределенных по узлам MPP-системы, с обменом сообщениями между ними.
Повышение производительности машин с массовым параллелизмом путем увеличения в них числа процессоров имеет определенные ограничения. Чем большее число процессоров входит в состав MPP-системы, тем длиннее каналы передачи управления и данных, а значит, и тем меньше тактовая частота. Происшедшее возрастание нормы массивности для больших машин до 512 и даже 64К процессоров обусловлено не ростом размеров машины, а увеличением степени интеграции схем, позволившей за последние годы резко повысить плотность размещения элементов в устройствах. Топология сети межпроцессорного обмена в такого рода системах может быть различной.
Главным преимуществом MPP-систем является их хорошая масштабируемость: в отличие от SMP-систем, здесь каждый процессор имеет доступ только к своей локальной памяти, в связи с чем не возникает необходимости в потактовой синхронизации процессоров. Практически все рекорды по производительности на сегодня устанавливаются на машинах именно такой архитектуры, состоящих из нескольких тысяч процессоров.
Основными недостатками систем данного типа являются следующие:
отсутствие общей памяти заметно снижает скорость межпроцессорного обмена, поскольку нет общей среды для хранения данных, предназначенных для обмена между процессорами;
требуется специальная техника программирования для реализации обмена сообщениями между процессорами;
каждый процессор может использовать только ограниченный объем локального банка памяти;
вследствие указанных архитектурных недостатков требуются значительные усилия для того, чтобы максимально задействовать системные ресурсы, следствием чего является высокая цена программного обеспечения для MPP-систем с раздельной памятью.
Подведем некоторые итоги, касающиеся областей применимости систем параллельной обработки данных различных типов.
SMP-системы потенциально обладают достаточными возможностями для обеспечения необходимой для большинства применений производительности: вполне естественно увеличивать число процессоров, а не ставить рядом еще один компьютер. Добавление одного процессора гарантированно увеличивает производительность, а добавление, например, узла в кластер адекватного ускорения не даст. Более того, в некоторых случаях общая производительность системы может даже упасть, когда узлы кластера начинают активно конкурировать за доступ к общим ресурсам, и взаимные блокировки сводят на нет преимущества параллельной обработки.
NUMA-системы создаются для вполне определенных целей - обеспечения масштабных расчетов. Системы, использующие эту архитектуру, прежде всего применяются для уникальных высококачественных и высокопроизводительных прикладных программ, требующих более восьми процессоров. Однако они имеют высокую стоимость и требуют уникального ПО (прикладные программы и ОС).
Для современных систем помимо вполне традиционных требований по производительности, масштабируемости, цене дополнительные высокие требования предъявляются к надежности их работы. Именно по этим соображениям вычислительные комплексы на основе кластеров или MPP-машин завоевывают все большую популярность.
MPP-системы обладают рядом преимуществ, главным из которых является лучшая среди всех рассмотренных архитектур масштабируемость. Именно поэтому MPP-компьютеры обычно используются при больших ресурсоемких вычислениях. Конечно, они применяются и при построении больших баз данных, и в отказоустойчивых вычислительных комплексах. Но здесь их использование довольно ограничено. Это отчасти связано с тем, что они все-таки дороже кластеров и имеют достаточно большую начальную цену. Кластер же можно построить из относительно дешевых машин произвольной конфигурации.
Приведенная классификация систем параллельной обработки данных достаточно условна. Разработчики вычислительных систем не проектируют машину какого-то специального класса, а стараются создать более производительную архитектуру. Кроме этого, сам пользователь может с использованием стандартных компонентов спроектировать комплекс, архитектурно и функционально наиболее подходящий для решения конкретной задачи.
Транспьютеры
Для построения многопроцессорных систем могут быть использованы специально разработанные процессоры, называемые транспьютерами. Они были созданы в середине 1980-х годов фирмой INMOS Ltd (ныне - подразделение STMicroelecTRoniCS).
Транспьютер - это микропроцессор со встроенными средствами межпроцессорной коммуникации, предназначенной для построения многопроцессорных систем. Его название происходит от слов TRansfer (передатчик) и computer (вычислитель).
Транспьютер включает в себя средства для выполнения вычислений (ЦП, АЛУ с плавающей точкой, внутрикристальную память) и 4 канала для связи (линка) с другими транспьютерами и/или другими устройствами. Каждый линк представляет собой 2 однонаправленных последовательных канала передачи информации. Встроенный интерфейс позволяет подключать внешнюю память емкостью до 4 Гбайт (рис. 13.5).

Рис. 13.5. Структура транспьютера
Многопроцессорная система может создаваться из набора транспьютеров, которые функционируют независимо и взаимодействуют через последовательные каналы связи (рис. 13.6).

Рис. 13.6. Структуры многопроцессорных систем на базе транспьютеров
Организация транспьютеров и многопроцессорных систем на их основе базируется на языке Occam, специально разработанном в начале 1980-х годов группой ученых из Оксфорда под руководством Дэвида Мэя по заданию компании INMOS в рамках работ по созданию транспьютеров. Отметим основные характеристики этого языка с точки зрения его применения для программирования транспьютерных систем:
выполнение задачи разбивается на процессы, которые могут выполняться параллельно;
размещение процессов не привязано к конкретному оборудованию: необязательно каждому процессу должен ставиться в соответствие свой транспьютер - несколько процессов могут выполняться на одном транспьютере;
язык позволяет описать размещение процессов по оборудованию;
язык позволяет описать, как эти процессы обмениваются между собой данными (какой процесс принимает информацию, от какого процесса и в каком объеме).
При передаче данных в линк процесс должен исполнить команду вывода. Процесс, исполнивший такую команду, задерживается до тех пор, пока все данные не будут переданы. Аналогично, при приеме данных из линка процесс должен исполнить команду ввода. При исполнении такой команды процесс блокируется до тех пор, пока буфер не будет заполнен данными. Взаимодействие с внешним устройством через линк позволяет транспьютеру синхронизовать свою деятельность с этими устройствами без использования механизма прерываний.
Использование такого подхода позволило организовать виртуальные каналы связи между процессами, которые могли размещаться как на единственном транспьютере, так и на нескольких транспьютерах, и виртуальные линки между процессами. Любой транспьютер может одновременно образовывать любое число параллельных процессов. Он имеет специальный планировщик, который производит распределение процессорного времени между этими процессами. Тем самым появляется возможность, имея всего лишь один транспьютер, написать параллельную программу, которая полностью выполняется на нем. Задача разбивается на ряд процессов, и все эти процессы параллельно протекают внутри одного транспьютера, периодически останавливаясь для получения данных друг от друга. Систему можно расширить другими транспьютерами и перенести на них ряд процессов. При этом нужно просто переопределить таблицу связей процессов, указав, на каком транспьютере теперь выполняется тот или иной процесс. Сама же программа изменений не претерпевает, а вычислительная мощность системы, естественно, увеличивается.
Помимо интересных возможностей, связанных с построением мультипроцессорных систем без привлечения дополнительного оборудования, в транспьютерах были реализованы идеи, направленные на повышение их вычислительной мощности. Среди них хотелось бы отметить то, что блок регистров транспьютера организован в виде стека. Это привело к использованию преимущественно безадресной системы команд, что обеспечило даже более высокую производительность, чем RISC-архитектура. Второй момент, который следует выделить, - это одновременное исполнение группы, в которую входило до 8 команд, что обеспечивало полную загрузку устройств процессора. И все это было реализовано в конце 1980-х годов, задолго до появления EPIC и Itanium.
На момент своего появления транспьютеры были самыми быстродействующими 32-разрядными микропроцессорами. В процессе своего недолго развития их характеристики достигли следующих значений:
производительность: 200 MIPS, 25 MFLOPS (на 64-разрядном процессоре с плавающей точкой);
емкостьвнутрикристальной памяти: 16 Кбайт;
скорость обмена по линку: 100 Мбит/с.
В середине 1990-х, в эпоху расцвета микропроцессоров этого семейства, фирма INMOS помимо собственно транспьютеров поставляла широкий набор трэмов (TRem - TRansputerExtensionModule) - устройств ввода-вывода с линком в качестве интерфейса. В частности, поставлялись трэмы, позволявшие подключить к транспьютеру через линк адаптеры Ethernet или SCSI. В целях увеличения числа физических связей был разработан программируемый коммутатор, осуществляющий передачу сообщения с любого из 32 входов на любой из 32 выходов.
Транспьютеры успешно использовались в различных областях от встроенных систем до суперЭВМ. Однако технология транспьютеров серьезного развития не получила, так как начиная с PentiumPro в универсальные микропроцессоры введена возможность соединения процессоров в микропроцессорную систему, что обесценило главное преимущество транспьютеров - возможность построения многопроцессорных систем без дополнительных аппаратных затрат. В настоящее время транспьютеры не производятся, они вытеснены похожими разработками конкурентов, особенно TexasINsTRuments (TMS320) и Intel (80860).
Краткие итоги. В лекции представлена классификация Флинна систем многопроцессорной обработки данных, основанная на понятии потока, а также классификация многопроцессорных и многомашинных вычислительных систем на основе степени разделения вычислительных ресурсов системы. Рассмотрены структура и особенности работы SMP-, NUMA-, MPP-систем, а также кластеров. Описан специальный класс микропроцессоров - транспьютеры, созданный для построения мультипроцессорных систем.

Лекция 25. Отличительные особенности и области применения различных систем.
Принципы организации взаимодействия микропроцессора с внешними устройствами
Функционирование микропроцессорной системы, особенно ориентированной на системы управления, во многом определяется взаимодействием микропроцессора с внешними устройствами. Такое взаимодействие может строиться по трем основным схемам:
программно управляемый обмен;
обмен по готовности внешнего устройства;
обмен по прерыванию.
В первом случае микроконтроллер при возникновении необходимости обмена обращается к ВУ и производит обмен информацией. Однако при этом программа МК должна быть составлена таким образом, чтобы к моменту обмена внешнее устройство было безусловно к нему готово.
Второй механизм обмена (обмен по готовности) предполагает перед началом обмена проверку состояния готовности внешнего устройства.
Обмен производится лишь при положительном результате такой проверки. Этот способ используется в основном в тех случаях, когда микроконтроллер не занят выполнением каких-либо иных задач и его работа строится по циклу "считывание показаний датчика - обработка - выдача управляющих воздействий - считывание показаний датчика - ...".Обмен по прерыванию предусматривает прерывание естественного порядка выполнения программы в случае запроса на обмен от внешнего устройства, который может поступить на МК в любой момент асинхронно по отношению к работе самого микроконтроллера. Появление запроса ведет к передаче управления специальной программе - обработчику прерывания, которая и выполняет все необходимые для обмена действия, после чего возвращает управление основной программе. Такой способ обмена может быть использован в тех случаях, когда запросы от внешних устройств поступают относительно редко, требуют быстрой реакции на них и в то же время на микроконтроллер возложено решение ряда дополнительных задач, выполнение которых может проходить не в реальном масштабе времени ("фоновые задачи").
Эти варианты взаимодействия можно проиллюстрировать бытовым примером. Предположим, необходимо вскипятить чайник. Для этого чайник ставится на плиту и зажигается огонь. Программно управляемый обмен соответствует ситуации, когда в определенный момент чайник снимается с плиты. При этом момент должен быть выбран таким образом, чтобы вода уже закипела, но еще не выкипела.
При вводе по готовности вы постоянно поднимаете крышку чайника, чтобы проверить, не кипит ли вода. Естественно, в это время никакой другой работой заниматься невозможно. Однако при этом момент закипания будет определен достаточно точно.
Использование прерываний при обмене информацией требует дополнительных программно-аппаратных средств. В данном случае это соответствует приобретению свистка для чайника. После включения плиты можно заниматься другой работой. О моменте закипания воды просигнализирует свисток, после чего следует прервать выполняемую работу и переключить свое внимание на чайник. Если при этом зазвонит, например, телефон, что можно рассматривать как еще один запрос прерывания, то в действие должна вступать уже система приоритетов и возможность обработки вложенных прерываний.
Рассмотрим реализацию этих принципов на примере разработки простейшей системы сбора и обработки информации, построенной на основе микроконтроллера типа МК-51: МПС считывает показания от аналоговых датчиков, преобразует эту информацию в цифровой код, обрабатывает его и фиксирует результат во внешнем устройстве.
Взаимодействие микроконтроллера с аналого-цифровым преобразователем рассмотрим на примере АЦП К1113ПВ1. Его упрощенное условно-графическое изображение, содержащее обозначения только тех входов и выходов, которые используются при работе с МК, приведено на рис. 15.1, а временная диаграмма, иллюстрирующая его работу, - на рис. 15.2. АЦП запускает преобразование "аналог-код" в момент переключения сигнала "Г/П" ("гашение/преобразование") с высокого уровня на низкий. Преобразование осуществляется не более 30 мкс (Tпр< 30мкс). Об окончании преобразования свидетельствует появление сигнала низкого уровня на выходе ГД ("готовность данных"). В этот момент цифровые выходы АЦП ( Q ) переходят из состояния высокого импеданса в состояние выдачи цифрового кода. Цифровой код на выходе АЦП - 10-разрядный (разряд Q0 - старший). Для выполнения следующего преобразования АЦП требует предварительной подачи сигнала гашения высокого уровня длительностью не менее 10 мкс на вход Г/П (Tг10мкс). При этом цифровые выходы Q переходят в состояние высокого импеданса, в котором остаются до появления сигнала низкого уровня на выходе ГД.

Рис. 15.1. Условно-графическое обозначение аналого-цифрового преобразователя К1113ПВ1

Рис. 15.2. Временная диаграмма работы аналого-цифрового преобразователя
Ввод по готовности проиллюстрируем на примере построения МПС, решающей следующую задачу.
Микропроцессорная система определяет среднее значение шести последовательных опросов датчика и выводит полученное значение на внешнее устройство через порт P2. Обращение к датчику осуществляется 1 раз в секунду. В промежутках между работой с датчиком МК на выходе P2.7 формирует периодическую последо1вательность импульсов длительностью t= 200 мкс и периодом T = 800 мкс. На время работы с датчиком генерация сигнала на выходе P2.7 приостанавливается.
Структурная схема системы представлена на рис. 15.3. На схеме изображены только те входы и выходы элементов, которые необходимы для понимания взаимодействия устройств и разработки программы. Здесь выход готовности данных аналого-цифрового преобразователя подсоединен к входу P1.5 микроконтроллера. Микроконтроллер запускает АЦП сигналом низкого уровня на выходе Р1.6 и постоянно контролирует состояние входа P1.5. Появление на нем сигнала низкого уровня свидетельствует о том, что преобразование закончено и микроконтроллер может приступить к обработке этих данных.

Рис. 15.3. Структурная схема микропроцессорной системы с вводом информации по готовности данных

Классификация по Флинну  Одиночный поток команд(SingleInstruction) Множество потоков команд(MultipleInstruction)
Одиночный поток данных(SingleData) SISD(ОКОД) MISD(МКОД)
Множество потоков данных(MultipleData) SIMD(ОКМД) MIMD(МКМД)
Лекция 26. Системы с различными потоками команд и данных.
MIMD (англ. MultipleInstructionstream, MultipleDatastream — Множественный поток Команд, Множественный поток Данных, сокращённо МКМД) — концепция архитектуры компьютера, используемая для достижения параллелизма вычислений. Один из классов вычислительных систем в классификации Флинна.
Машины имеют несколько процессоров, которые функционируют асинхронно и независимо. В любой момент различные процессоры могут выполнять различные команды над различными частями данных. MIMD-архитектуры могут быть использованы в целом ряде областей, таких, как системы автоматизированного проектирования / автоматизированное производство, моделирование, а также коммуникатор связей (communicationswitches). MIMD-машины могут быть либо с общей памятью, либо с распределяемой памятью. Эта классификация основана на том, как MIMD-процессоры получают доступ к памяти. Этот класс предполагает, что в вычислительной системе есть несколько устройств обработки команд, объединенных в единый комплекс и работающих каждое со своим потоком команд и данных.
Обработка разделена на несколько потоков, каждый с собственным аппаратным состоянием процессора, в рамках единственного определённого программным обеспечением процесса или в пределах множественных процессов. Поскольку система имеет несколько потоков, ожидающих выполнения (системные или пользовательские потоки), эта архитектура эффективно использует аппаратные ресурсы.

В MIMD могут возникнуть проблемы взаимной блокировки и состязания за обладание ресурсами, так как потоки, пытаясь получить доступ к ресурсам, могут столкнуться непредсказуемым способом. MIMD требует специального кодирования в операционной системе компьютера, но не требует изменений в прикладных программах, кроме случаев, когда программы сами используют множественные потоки (MIMD прозрачен для однопоточных программ под управлением большинства операционных систем, если программы сами не отказываются от управления со стороны ОС). И системное, и пользовательское программное обеспечение, возможно, должны использовать программные конструкции, такие, как семафоры, чтобы препятствовать тому, чтобы один поток вмешался в другой, в случае если они содержат ссылку на одни и те же данные. Такое действие увеличивает сложность кода, снижает производительность и значительно увеличивают количество необходимого тестирования, хотя обычно не настолько, чтобы свести на нет преимущества многопроцессорной обработки.
Подобные конфликты могут возникнуть на аппаратном уровне между процессорами, и должен обычно решаться аппаратными средствами, или с комбинацией программного обеспечения и оборудования.
SIMD (англ. singleinstruction, multipledata — одиночный поток команд, множественный поток данных, ОКМД) — принцип компьютерных вычислений, позволяющий обеспечить параллелизм на уровне данных. Один из классов вычислительных систем в классификации Флинна.
SIMD-компьютеры состоят из одного командного процессора (управляющего модуля), называемого контроллером, и нескольких модулей обработки данных, называемых процессорными элементами. Управляющий модуль принимает, анализирует и выполняет команды. Если в команде встречаются данные, контроллер рассылает на все процессорные элементы команду, и эта команда выполняется на нескольких или на всех процессорных элементах. Каждый процессорный элемент имеет свою собственную память для хранения данных. Одним из преимуществ данной архитектуры считается то, что в этом случае более эффективно реализована логика вычислений. До половины логических инструкций обычного процессора связано с управлением выполнением машинных команд, а остальная их часть относится к работе с внутренней памятью процессора и выполнению арифметических операций. В SIMD-компьютере управление выполняется контроллером, а «арифметика» отдана процессорным элементам.
Векторные процессоры также использовали принцип SIMD, одной командой могли обрабатываться векторы размером до нескольких тысяч элементов.
SISD (англ. SingleInstruction, SingleData) или ОКОД (Одиночный поток Команд, Одиночный поток Данных) — архитектура компьютера, в которой один процессор выполняет один поток команд, оперируя одним потоком данных. Относится к фон-Неймановской архитектуре. Один из классов вычислительных систем в классификации Флинна.
SISD-компьютеры — это обычные, «традиционные» последовательные компьютеры, в которых в каждый момент времени выполняется лишь одна операция над одним элементом данных (числовым или каким-либо другим значением). Большинство персональных ЭВМ до последнего времени, например, попадает именно в эту категорию. Иногда сюда относят и некоторые типы векторных компьютеров, это зависит от того, что понимать под потоком данных.
MISD-Архитектура (англ. MultipleInstructionstream, SingleDatastream, Множественный поток Команд, Одиночный поток Данных, МКОД) — тип архитектурыпараллельных вычислений, где несколько функциональных модулей (два или более) выполняют различные операции над одними данными. Один из классов вычислительных систем в классификации Флинна.
Отказоустойчивые компьютеры, выполняющие одни и те же команды избыточно с целью обнаружения ошибок, как следует из определения, принадлежат к этому типу. К этому типу иногда относят конвейерную архитектуру, но не все с этим согласны, так как данные будут различаться после обработки на каждой стадии в конвейере. Некоторые относят систолический массив процессоров к архитектуре MISD.
Было создано немного ЭВМ с MISD-архитектурой, поскольку MIMD и SIMD чаще всего являются более подходящими для общих методик параллельных данных. Они обеспечивают лучшее масштабирование и использование вычислительных ресурсов, чем архитектура MISD.

Лекция 27. Организация функционирования систем.
Микропроцессорная система представляет собой функционально законченное изделие, состоящее из одного или нескольких устройств, главным образом из микропроцессора и/или микроконтроллера.
Микропроцессорное устройство (МПУ) представляет собой функционально и конструктивно законченное изделие, состоящее из нескольких микросхем, в состав которых входит микропроцессор; оно предназначено для выполнения определённого набора функций: получение, обработка, передача, преобразование информации и управление.
1Состав2Применение в измерительных приборах3См. также4СсылкиСостав
Генератор тактовых временных интервалов, который является единицей измерения (Шергином[HYPERLINK "https://ru.wikipedia.org/wiki/%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:%D0%A2%D0%B5%D1%80%D0%BC%D0%B8%D0%BD%3F/doc" \o "Шаблон:Термин?/doc"неизвестный термин]) продолжительности выполнения команды. Чем выше частота, тем при прочих равных условиях более быстродействующей является МПС. МП, ОЗУ и ПЗУ — это неотъемлемые части системы. Интерфейсы ввода и вывода — устройства сопряжения МПС с блоками ввода и вывода информации. Для измерительных приборов характерны устройства ввода в виде кнопочного пульта и измерительных преобразователей (АЦП, датчиков, блоки ввода цифровой информации). Устройства вывода обычно представляют цифровые табло, графический экран (дисплей), внешние устройства сопряжения с измерительной системой. Все блоки МПС связаны между собой шинами передачи цифровой информации. В МПС используют магистральный принцип связи, при котором блоки обмениваются информацией по единой шине данных. Количество линий в шине данных обычно соответствует разрядности МПС (количеству бит в слове данных). Шина адреса применяется для указания направления передачи данных — по ней передаётся адрес ячейки памяти или блока ввода-вывода, которые получают или передают информацию в данный момент. Шина управления служит для передачи сигналов, синхронизирующих всю работу МПС.
Применение в измерительных приборах
Главная особенность микропроцессора — возможность программирования логики работы. Поэтому МПС используются для управления процессом измерения (реализацией алгоритма измерения), обработки опытных данных, хранения и вывода результатов измерения и пр. Рассмотрим основные преимущества микропроцессорных средств измерения.
Многофункциональность. Замена измерительного комплекса (совокупности различных измерительных приборов) одним, многофункциональным. Такая замена в приборах с «жесткой» логикой неэкономична. Так как добавление новой функции требует ввода дополнительного блока. Программируемая логика позволяет сделать это добавлением блока программы. Число программ ограничено возможностями ПЗУ и блока управления.
Повышение точности — наиболее важный момент. Уменьшение погрешностей по сравнению с обычными цифровыми приборами при прочих равных условиях достигается за счет исключения систематических погрешностей в процессе самокалибровки: коррекция смещения нуля, учет собственной АЧХ прибора, учет нелинейности преобразователей. Самокалибровка в данном случае — это измерение поправок или поправочных множителей и запоминание их в ОЗУ с целью использования на этапе обработки опытных данных.
Уменьшение влияния случайных погрешностей (путем проведения многократных измерений с последующей обработкой выборки — усреднением, вычислением мат. ожидания и пр.). Выявление и устранение грубых погрешностей (промахов). Вычисление и индикация оценки погрешности прямо в процессе измерения.
Компенсация внутренних шумов и повышение чувствительности средства измерения. Простое усреднение сигнала на входе прибора требует достаточно большого времени tycp. Один из вариантов — проведение многократных измерений и усреднение результатов с целью компенсации случайной составляющей измерительного сигнала. Пример — микропроцессорный ВЧ вольтметр среднеквадратического значения.
Расширение измерительных возможностей путем широкого использования косвенных и совокупных измерений, воспринимаемых оператором в этом случае как прямые (поскольку результат обработки появляется на индикаторе сразу после проведения измерения). Напомним, что косвенные измерения включают в себя вычисления результата по опытным данным по известному алгоритму. Совокупные измерения предполагают измерение нескольких одноименных физических величин путем решения системы уравнений, получаемых при прямых измерениях сочетаний этих величин. (Например, измерение сопротивления различных сочетаний резисторов — последовательное, параллельное, последовательно-параллельное, позволяют рассчитать сопротивление каждого из них). В этих случаях микропроцессор осуществляет управление процессом измерения по программе и проводит обработку опытных данных. Результат расчетов воспринимается оператором как результат прямых измерений, поскольку расчет делается быстро.
Упрощение и облегчение управления прибором. Все управление производится с кнопочной панели, выносные клавиатуры используют редко. Чем меньше кнопок, тем более «разумным» является прибор. Автоматизация установок прибора приводит к упрощению его использования (выбор пределов измерения, автоматическая калибровка и пр.). В ряде приборов использую контроль за ошибочными действиями оператора — индикация его неверных действий на табло или экране. Упрощает измерения визуализация результатов на экране в удобном виде, с дополнительными шкалами. Ряд приборов предусматривает вывод результатов на печатающее устройство или портативный носитель информации.

Приложенные файлы

  • docx lekcii
    Размер файла: 1 MB Загрузок: 0