Микропроцессоры
Покупка
Основная коллекция
Тематика:
Микроэлектроника. Наноэлектроника
Издательство:
Инфра-Инженерия
Год издания: 2023
Кол-во страниц: 136
Дополнительно
Вид издания:
Учебник
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-9729-1291-9
Артикул: 811515.02.99
Рассмотрены проблемы низкоуровневых языков программирования. Приведены ключевые характеристики и технические особенности микропроцессоров. Показана система команд языка assembler. Для студентов, обучающихся по направлению подготовки 09.03.02 «Информационные системы и технологии», направленность «Создание, модификация и сопровождение информационных систем, администрирование баз данных», и смежных направлений подготовки, а также специалистов и инженеров в области компьютерных технологий, компьютерных систем, низкоуровневого программирования и подобных областей.
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
А. В. Параскевов МИКРОПРОЦЕССОРЫ Учебник Издание 2-е, исправленное и дополненное Москва Вологда «Инфра-Инженерия» 2023
УДК 004.31 ББК 32.971.32-04 П18 Рецензенты: профессор, д. э. н., к. т. н., профессор кафедры компьютерных технологий и систем ФГБОУ ВО «Кубанский государственный аграрный университет им. И. Т. Трубилина» Е. В. Луценко; доцент, к. п. н., доцент кафедры информационных технологий ФГБОУ ВО «Кубанский государственный университет» Н. Ю. Добровольская Параскевов, А. В. П18 Микропроцессоры : учебник / А. В. Параскевов. – 2-е изд., испр. и доп. – Москва ; Вологда : Инфра-Инженерия, 2023. – 136 с. : ил., табл. ISBN 978-5-9729-1291-9 Рассмотрены проблемы низкоуровневых языков программирования. Приведены ключевые характеристики и технические особенности микропроцессоров. Показана система команд языка assembler. Для студентов, обучающихся по направлению подготовки 09.03.02 «Информационные системы и технологии», направленность «Создание, модификация и сопровождение информационных систем, администрирование баз данных», и смежных направлений подготовки, а также специалистов и инженеров в области компьютерных технологий, компьютерных систем, низкоуровневого программирования и подобных областей. УДК 004.31 ББК 32.971.32-04 ISBN 978-5-9729-1291-9 Параскевов А. В., 2023 Издательство «Инфра-Инженерия», 2023 Оформление. Издательство «Инфра-Инженерия», 2023
ПРЕДИСЛОВИЕ Несмотря на общее название, язык ассемблера для каждого типа компьютеров свой. Это касается и внешнего вида программ, написанных на ассемблере, и идей, отражением которых этот язык является. Практически все компиляторы языков высокого уровня содержат средства связи своих модулей с модулями на ассемблере либо поддерживают выход на ассемблерный уровень программирования. Существует общая схема базовой подготовки всех программистов, своего рода фундамент, – это знание принципов работы компьютера, его архитектуры и языка ассемблера, отражающего устройство компьютера. Без рассмотрения этих вопросов невозможно серьезное компьютерное образование. В 1970 г. Маршиан Эдвард Хофф из фирмы Intel сконструировал интегральную схему, аналогичную по своим функциям центральному процессору – первый микропроцессор Intel, который уже в 1971 г. был выпущен в продажу. 15 ноября 1971 г. можно считать началом новой эры в электронике. В этот день компания приступила к поставкам первого в мире микропроцессора Intel-4004. Это был настоящий прорыв, Intel-4004 размером менее 3 см был производительнее гигантской машины ENIAC. Кристалл представлял собой 4-разрядный процессор с классической архитектурой ЭВМ гарвардского типа и изготавливался по передовой p-канальной технологии с проектными нормами 10 мкм. Чип i4004 имел адресный стек (счетчик команд и три регистра стека типа LIFO), блок РОНов (регистры сверхоперативной памяти или регистровый файл – РФ), 4-разрядное параллельное арифметико-логическое устройство, аккумулятор, регистр команд с дешифратором команд и схемой управления, а также схему связи с внешними устройствами. Такая организация сохранена и в последующих микропроцессорах фирмы Intel. Три регистра стека обеспечивали три уровня вложения подпрограмм. Низкоуровневый язык ассемблера является однозначным символическим представлением машинного языка, поэтому он неразрывно связан с архитектурой микропроцессора. По мере внесения в нее изменений совершенствуется язык ассемблера. 3
ГЛАВА 1. ВВЕДЕНИЕ В МИКРОПРОЦЕССОРЫ 1. Архитектура ЭВМ, характеристики микропроцессоров Архитектура – это наиболее общие принципы построения ЭВМ, отражающие ее структурную, схемотехническую и логическую организацию. Понятие архитектуры ЭВМ является комплексным и включает в себя: – структурную схему; – средства и способы доступа к элементам структурной схемы; – организацию и разрядность интерфейсов; – набор и доступность регистров; – набор машинных команд; – организацию и способы адресации памяти; – способы представления и форматы данных; – обработку прерываний; – форматы машинных команд. Микропроцессор – это устройство, выполняющее функции обработки информации на персональных компьютерах и управления вычислительным процессом, арифметическими и логическими операциями. Модели процессоров включают в себя следующие совместно работающие устройства. Устройство управления (УУ) – осуществляет координацию работы всех остальных устройств, выполняет функции управления устройствами и вычислениями в компьютере. Арифметико-логическое устройство (АЛУ) – выполняет целочисленные арифметические операции (сложение, умножение и деление), а также логические операции. Операции АЛУ составляют подавляющее число программных кодов в большинстве программ и производятся в регистрах – специально отведенных ячейках с различным функциональным назначением. В процессоре может быть несколько АЛУ, способных исполнять арифметические и логические операции одновременно и независимо от других. Логические операции делятся на две простые операции: «Да» и «Нет» («1» и «0»). Обычно эти два устройства выделяются условно, конструктивно они не разделены. Аddress Generаtiоn Unit (AGU) – устройство генерации адресов, отвечающее за корректную адресацию при загрузке или сохранении данных. Абсолютная адресация в программах используется только в редких исключениях. При учете массива данных в программном коде применяется косвенная адресация, заставляющая работать AGU. Математический сопроцессор. Процессор может содержать несколько математических сопроцессоров, каждый из них способен выполнять (да 4
и выполняет), по меньшей мере, одну операцию с плавающей точкой вне зависимости от других АЛУ. Метод конвейерной обработки данных позволяет одному математическому сопроцессору выполнять несколько операций одновременно. Сопроцессор, способный выполнять высокоточные вычисления как для целочисленных типов данных, так и для форматов с плавающей точкой, содержит набор «полезных» ускоряющих вычисления констант. Математический сопроцессор работает параллельно с центральным процессором, обеспечивая, таким образом, высокий уровень производительности микропроцессора. Система выполняет команды сопроцессора в том порядке, в котором они появляются в потоке. Математический сопроцессор персонального компьютера позволяет выполнять скоростные арифметические, логарифмические, логические и другие операции, а также тригонометрические функции с высокой степенью точности. Дешифратор инструкций (команд) анализирует инструкции с целью выделения операндов и адресов, по которым размещаются результаты. Затем следует сообщение другому независимому устройству о том, что необходимо сделать для выполнения инструкции. Дешифратор допускает выполнение нескольких инструкций одновременно для загрузки всех исполняющих устройств. Кэш-память – высокоскоростной участок памяти процессора, используемый в качестве буфера для ускорения обмена между процессором и оперативной памятью, а также для хранения копий инструкций и данных, которые недавно применялись процессором. Значения из кэш-памяти извлекаются непосредственно, без обращения к основной памяти. При изучении особенностей работы программ было обнаружено, что они обращаются к тем или иным областям памяти с различной частотой. Так, ячейки памяти, к которым программа обращалась недавно, скорее всего, будут использованы вновь. Микропроцессор способен хранить копии этих инструкций в своей локальной памяти и каждый раз использовать их на протяжении всего цикла. Доступ к памяти необходим только в самом начале поиска. Для хранения этих инструкций используется совсем незначительный объем памяти. Если инструкции в процессор поступают достаточно оперативно, то микропроцессор экономит время на ожидание и выполнение инструкций. Однако для быстродействующих микропроцессоров этого недостаточно. Решение этой проблемы заключается в улучшении организации памяти внутри микропроцессора, которая должна соответствовать скорости самого процессора. Кэш-память первого уровня (L1 cache) находится внутри процессора. Она оперативнее всех остальных типов памяти, но меньше по объему, а 5
также сохраняет совсем недавно применяемую информацию, которая может быть использована при выполнении коротких программных циклов. Кэш-память второго уровня (L2 cache) находится внутри процессора. Информация, хранящаяся в ней, используется реже, чем сведения первого уровня памяти, но по объему памяти превышает его. В настоящее время в процессорах применяется кэш-память третьего уровня. Основная память по объему значительно превышает кэш-память, но не отличается быстротой действия. Многоуровневая кэш-память позволяет снизить требования наиболее производительных микропроцессоров к быстродействию основной динамической памяти. Если сократить время доступа к основной памяти на 30 %, то производительность эффективно сконструированной кэш-памяти повысится только на 10–15 %. Кэш-память может достаточно сильно влиять на производительность процессора в зависимости от типа исполняемых операций. Однако ее увеличение вовсе не гарантирует возрастание общей производительности работы процессора. Необходимо учитывать, насколько приложение оптимизировано под выбранную структуру и использует кэш, а также помещаются ли различные сегменты программы в кэш целиком или частями. Кэш-память не только повышает быстродействие микропроцессора при выполнении операции чтения из памяти, но в ней также могут храниться значения, записываемые процессором в основную память. Зафиксировать эти значения можно позже, когда основная память будет свободна. Такая кэш-память называется «кэш с обратной записью» (write back сасhe). Ее возможности и принципы работы заметно отличаются от характеристик «кэш со сквозной записью» (write through cache), который участвует только в операции чтения из памяти. Шина – это высокоскоростной канал пересылки данных, используемый совместно различными блоками системы, представляет собой набор проводящих линий в печатной плате, провода, припаянные к выводам разъемов, в которые вставляются печатные платы, либо плоский кабель. Информация передается по шине в виде групп битов. В составе шины для каждого бита слова может быть предусмотрена отдельная линия (параллельная шина), или все биты слова могут последовательно во времени использовать одну линию (последовательная шина). К шине может быть подключено много приемных устройств-получателей. Обычно данные на шине предназначаются только для одного из них. Сочетание управляющих и адресных сигналов определяет конкретного получателя. Управляющая логика возбуждает специальные стробирующие сигналы, чтобы указать получателю, когда ему следует принимать данные. Получатели и отправители могут быть однонаправленными (осуществляют только пере6
дачу или прием) и двунаправленными (выполняют то и другое). Однако самая быстрая процессорная шина не окажется столь эффективной, если память не сможет доставлять данные с соответствующей скоростью. Типы шин Шина данных служит для быстрой пересылки данных от процессора к памяти и к устройствами ввода/вывода. Они могут являться как командами микропроцессора, так и информацией, которую он посылает в порты ввода/вывода или принимает от них. Шина адресов используется центральным процессором (ЦП) для выбора устройства ввода/вывода или требуемой ячейки памяти путем установки на шине конкретного адреса, соответствующего одной из ячеек памяти или одного из входящих в систему элементов ввода/вывода. Шина управления передает управляющие сигналы, предназначенные памяти и устройствам ввода/вывода и указывающие направление передачи данных (в процессор или из него). Регистры – это внутренняя память процессора, представляет собой ряд специализированных дополнительных ячеек памяти, а также внутренние носители информации микропроцессора для временного хранения данных, числа или команды и используется с целью упрощения арифметических, логических и пересылочных операций. Специальные электронные схемы могут выполнять определенный набор манипуляций над содержимым некоторых регистров. Например, «вырезать» отдельные части (компоненты) команды для последующего их использования или выполнять определенные арифметические операции над числами. Основным элементом регистра является электронная схема, называемая триггером, которая способна хранить одну двоичную цифру (разряд). Регистр представляет собой совокупность триггеров, связанных друг с другом определенным образом общей системой управления. Существует несколько типов регистров, отличающихся видом выполняемых операций. Наиболее распространенные регистры: – сумматор – регистр АЛУ, участвующий в выполнении каждой операции; – счетчик команд – регистр УУ, содержимое которого соответствует адресу очередной выполняемой команды; служит для автоматической выборки программы из последовательных ячеек памяти; – регистр команд УУ предназначен для хранения кода команды на период времени, необходимый для ее выполнения. Часть его разрядов используется для хранения кода операции, остальные – кодов адресов операндов. Понятие архитектуры содержит в себе практически всю необходимую информацию о компьютере. Все современные ЭВМ обладают как общи7
ми, так и индивидуальными свойствами и особенностями архитектуры, отличающими лишь конкретную модель компьютера от остальных. Присутствие общих архитектурных свойств объясняется тем, что большинство типов существующих машин принадлежат к так называемой «фоннеймановской» архитектуре. Общие свойства и принципы 1. Принцип хранимой программы, согласно которому код и данные находятся в одном адресном пространстве оперативной памяти вычислительной машины. 2. Принцип микропрограммирования предусматривает, что машинный язык еще не является той конечной субстанцией, которая физически приводит в действие процессы в машине. В состав процессора входит блок микропрограммного управления, который для каждой машинной команды имеет набор действий-сигналов, которые необходимо сгенерировать для физического выполнения требуемой машинной команды. 3. Линейное пространство памяти – совокупность ячеек, которым последовательно присваиваются адреса (номера, начиная от 0). 4. Последовательное выполнение программ – строго последовательно команды выбираются из памяти процессором. 5. Безразличие к целевому назначению данных. Для машины не имеет значения, какую логическую нагрузку несут обрабатываемые с помощью нее данные. 6. Отсутствие, с точки зрения обработки, принципиальной разницы между данными и командами. Данные и машинные команды находятся в одном адресном пространстве памяти в виде последовательности нулей и единиц. Процессор, исполняя содержимое последовательных ячеек памяти, воспринимает их как коды машинной команды. В противном случае происходит аварийное завершение программы, содержащей некоторый фрагмент. Конвейеризация вычислений – специальное устройство, конвейер, реализующий метод обработки команд внутри микропроцессоров, исполнение которых разбивается на несколько этапов. Первые конвейеры предусматривали пять этапов, составлявших обобщенный алгоритм их функционирования: – выборка команды из кэш-памяти или оперативной памяти; – декодирование команды; – генерация адреса (адреса операндов в памяти); – выполнение операции с помощью АЛУ; – запись результата, зависящая от алгоритма работы конкретной машинной команды). 8
PUBLIC _main PUBLIC ??_C@_0N@GCDOMLDM@Hello?5World?$CB?$AA@ ; `строка' EXTRN _printf:NEAR ;COMDAT ??_C@_0N@GCDOMLDM@Hello?5World?$CB?$AA@ ; Файл g:\wksrc\compout\main.cpp CONST SEGMENT ??_C@_0N@GCDOMLDM@Hello?5World?$CB?$AA@ DB 'Hello World!', 00H ; `строка' ; Флаги компиляции функции: /Ogty CONST ENDS ; COMDAT _main _TEXT SEGMENT _argc$ = 8 _argv$ = 12 _main PROC NEAR ; COMDAT push OFFSET FLAT:??_C@_0N@GCDOMLDM@Hello?5World?$CB?$AA@ call _printf add esp, 4 ; Строка 6 xor eax, eax ; Строка 7 ret 0 _main ENDP END 2. Особенности реализации микропроцессоров Исторически разделение вычислительных процессоров на процессоры и микропроцессоры возникло в начале 70-х г. XX в., что было обусловлено началом производства больших интегральных схем. Собственно микропроцессор отличается от обычных процессоров тем, что располагается на одном кристалле большой интегральной схемы. Отслеживание поколения ЭВМ по элементной базе показало, что с первого по третье поколение ЭВМ (на лампах, на транзисторах и на малых интегральных схемах) элементы ЭВМ (АЛУ, регистры) занимали большую часть площади платы. Поэтому объединять их в блоки по функциональному признаку не было смысла. Даже в ЭВМ третьего поколения существовали отдельные микросхемы сумматоров, регистров, дешифраторов. Зачастую проще заменить отдельную неисправную микросхему, чем весь процессорный блок. 9
Ситуация изменилась в конце 60-х гг. XX в., когда, во-первых, уменьшились размеры элементов (появились БИС), а, во-вторых, повысилась надежность и увеличился выход готовых микросхем. Проводились исследования по построению процессора на одной микросхеме. В результате сочетания слов «микросхема» («MICRОсhiр») и «процессор» («РRОCESSОR») возникло понятие «микропроцессор» («miсrорrосessоr»), а вовсе не от «миниатюрный процессор». Тогда микропроцессор считали утопией ученых и инженеров. В 1968 г. группа ученых во главе с Крэгом Барретом (Crag Barrett) отделилась от Американского исследовательского центра, занимающегося разработкой технологии интегральных микросхем, в отдельную фирму – Intel. Эта группа стала создавать микропроцессоры. В 1969 г. из этого центра выделилась фирма AMD. Объединение элементов процессора на одном кристалле способствовало повышению не только надежности, но в большой степени скорости его работы. Скорость работы процессора увеличивали повышением разрядности и его частоты. После возникновения микропроцессоров был сформулирован и доказан закон Мура – производительность ЭВМ возрастает в целом в два раза каждые девять месяцев. Hyperthreаding – метод, оптимизирующий возможность процессора с одним ядром переключаться между различными приложениями. В процессорах с использованием этой технологии каждый физический (реально существующий) процессор может сохранить состояние сразу двух потоков, что для операционной системы предусматривает наличие двух логических процессоров. Физически у каждого из них присутствуют свой набор регистров и контроллер прерываний, а остальные элементы процессора являются общими, когда при исполнении потока одним из логических процессоров возникает пауза. В результате кэш-промаха, ошибки предсказания ветвлений, ожидания результата предыдущей инструкции и др. управление передается потоку в другом логическом процессоре. Таким образом, пока один процесс прекращается, данные из памяти, вычислительные ресурсы физического процессора используются для обработки другого процесса. По наблюдениям Intel, первая реализация метода hyperthreading потребовала всего 5-процентного увеличения площади кристалла, но позволяла повысить производительность на 15–30 %. Однако hyperthreading не допускает выполнения процессов в действительно параллельном режиме. В отличие от этой технологии, двухядерный процессор позволяет двум приложениям работать параллельно или одновременно (благодаря наличию двух физических ядер). В результате повысилась производительность многозадачности внутри операционной среды, а также возросла эф10