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

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

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

Добавлен: 19.06.2021

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

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

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

Тема 2. Основные стадии выполнения команды


1. Лекция 2.

1. Общие сведения об архитектуре и принципах организации вычислительного процесса в современных ВМ.

2. Архитектура системы команд.

2. Лекция 3. Программирование на языке ассемблера.

1. Синтаксис ассемблера

2. Операнды

3. Виды адресации ассемблера

3. Лекция 4. Программирование на языке ассемблера.

1. Команды пересылки данных.

2. Ввод из порта и вывод в порт.

3. Команды работы с адресами памяти.

4. Команды работы со стеком.



1. Общие сведения об архитектуре принцип организации вычислительного

процесса в современных ВМ


Хабовая архитектура (рис.1).

Рис. 1.


GMCH-микросхема Intel 82815 – это головной хаб чипсета. В ней интегрированы:

контроллер системной шины;

контроллер SDRAM-памяти, поддерживающий несколько спецификаций памяти;

контроллер AGP-шины – поддерживает универсальный AGP-слот (AGP Universal Connector), обеспечивая при этом обмен данными с установленной в него картой в соответствии с предусмотренной спецификацией;

графический контроллер (графический 3D-ускоритель с аппаратной поддержкой билинейной/трилинейной/анизотропной фильтрации при работе с 3D-графикой и алгоритмов motion compensation при MPEG/DVD-декодировании; имеет встроенный 230-мегагерцевый ЦАП; оснащен интерфейсом Digital Video Out;

контроллер локальной видеопамяти (в документации может называться двояко — как Local Graphics Memory Controller или как Display Cache);

контроллер хабовой шины (Hub Interface) — используется для передачи данных между MCH и ICH2. Изготавливается GMCH в виде 544-контактной BGA-микросхемы.

ICH2 — это хаб подсистемы ввода/вывода. В него встроены:

контроллер PCI-шины (соответствует спецификации PCI 2.2, поддерживает, помимо самого ICH2, до 6 PCI Bus Master-устройств);

IDE-контроллер (два Ultra ATA/100 канала — поддержка до четырех IDE-устройств);

LAN-контроллер (соответствует спецификации WfM 2.0);

два USB-контроллера (UHCI-реализация; каждый контроллер имеет два USB-порта, в сумме — четыре USB-порта);

контроллер AC'97 (имеет интерфейс AC’97 Digital Link, через который может подключаться аудио кодек AC’97, или модемный кодек AC’97, или аудио/модемный кодек AC’97, или одновременно два кодека — аудио AC’97 и модемный AC’97);

контроллер прерываний;

LPC-контроллер;

Enhanced DMA-контроллер;

RTC-контроллер (Real-Time Clock);

контроллер SMBus.


«Бриджевая» (мостовая) архитектура (рис. 2).


Рис. 2.


Данный набор микросхем построен в соответствии с классической двухмостовой архитектурой.

Северный мост SiS 645 имеет контроллер системной шины, обеспечивающий работу с шиной процессора Intel Pentium 4, контроллер памяти, поддерживающий работу с SDRAM-памятью и AGP-контроллер, обеспечивающий работу графической подсистемы. Для реализации высокоскоростного обмена в чипсете реализован координатор транзакций, который реализует механизм предвыборки при чтении из основной памяти.

Южный мост SiS 645 предоставляет стандартный набор функциональных возможностей: двухканальный IDE-контроллер, шестиканальный аудиоконтроллер AC97, двухканальный USB-контроллер, сетевой контроллер.


Взаимодействие между мостами осуществляется по высокоскоростной двунаправленной шине, обеспечивающей пропускную способность 266 Мбайт/с в каждом из направлений.


Блок-схема процессора Intel Pentium 4 (рис.3)



Рис. 3.

Execution Trace Cache. Execution Trace Cache — это название и одновременно способ реализации L1-кэша инструкций в архитектуре NetBurst. Смысловое содержание этого термина можно перевести как «кэш трассировки выполняемых микроопераций».

В Execution Trace Cache хранятся микрооперации (µops), которые были получены в результате декодирования входного потока инструкций исполняемого кода и готовы для передачи на выполнение конвейеру.

Execution Trace Cache устроен таким образом, что вместе с кодом каждой микрооперации в нем хранятся результаты выполнения ветвей кода для этой микрооперации — в той же строке кэша (cache line), что и сама микрооперация. Это позволяет легко и своевременно выявлять микрооперации, которые никогда не будут выполнены, и быстро удалять их из L1-кэша инструкций, а также оперативно «вычищать» Execution Trace Cache от «лишних» микроопераций в случае обнаружения ошибочно предсказанного перехода. Последнее обстоятельство особенно важно, так как позволяет сократить общее время реинициализации конвейера после его остановки в результате выполнения перехода, который был «угадан» неправильно.

Rapid Execution Engine. Так, в архитектуре NetBurst назван блок выполнения арифметико-логических операций. Конструктив Rapid Execution Engine довольно оригинален: во-первых, он состоит из двух ALU-модулей, работающих параллельно; во-вторых, рабочая тактовая частота этих ALU-модулей в два раза выше тактовой частоты процессора — это достигается за счет регистрации как переднего, так и заднего фронта задающего тактового сигнала. Таким образом, каждый ALU-модуль способен выполнить до двух целочисленных операций за один рабочий такт процессора, а весь Rapid Execution Engine в целом — до четырех таких операций.

400 MHz System Bus. Физически системная шина у Intel Pentium 4 тактируется частотой в 100 МГц, однако благодаря использованию технологии Quad Pumping по этой шине передается четыре блока данных за один такт (аналогично тому, как это делается при передаче данных в режиме AGP 4X по AGP-шине). Так что эффективная рабочая частота системной шины у Intel Pentium 4 (которую также называют Quad Pumped Bus) составляет 400 МГц, а пропускная способность — 3,2 Гбайт/с.

Advanced Dynamic Execution. Advanced Dynamic Execution — это обобщенное название механизма динамического выполнения команд (dynamic execution), используемого в NetBurst, построенного на трех базовых концепциях: предсказание переходов (branch prediction), динамический анализ потока данных (dynamic data flow analysis) и спекулятивное выполнение инструкций (out-of-order execution). Аналогичный механизм, названный Dynamic Execution, используется в процессорах семейства P6, однако в Intel Pentium 4 он улучшен.

Так, например, емкость пула, в котором хранятся готовые для обработки инструкции (out-of-order instruction window), у Intel Pentium 4 увеличена до 126 инструкций — против 42 у процессоров семейства P6.


Кроме того, в Intel Pentium 4 интегрирован более совершенный механизм предсказания переходов и количество ошибочно предсказанных переходов у него в среднем на 33% меньше, чем у процессоров с архитектурой P6.

Advanced Transfer Cache. Под этим именем в архитектуре NetBurst «скрывается» L2-кэш процессора емкостью в 256 Кбайт. Ширина шины, по которой идет обмен данными между Advanced Transfer Cache и процессором, составляет 256 бит (32 байта), а ее тактовая частота совпадает с тактовой частотой ядра процессора.

Streaming SIMD Extensions 2 (SSE2). В Intel Pentium 4 также интегрирован набор из 144 новых SIMD-инструкций, получивший название Streaming SIMD Extensions 2 (сокращенно — SSE2), который добавлен к базовому набору SSE-инструкций, реализованному ранее в процессоре Intel Pentium III.

Из этих 144 инструкций 68 — расширяют возможности старых SIMD-инструкций по работе с целыми числами, а 76 — являются совершенно новыми. Среди последних — инструкции, позволяющие оперировать со 128-разрядными числами (как целыми, так и вещественными с двойной точностью).

Новые SSE2-инструкции были добавлены с той же целью, что и появившийся ранее набор SSE-инструкций — для увеличения производительности системы при обработке аудио- и видеоданных.


Этапы работы процессора

1.1

Нажатие клавиши с цифрой "2" приводит микропроцессор в состояние готовности и подает блоку предварительной выборки сигнал на запрос в системной памяти компьютера инструкции в отношении вновь поступивших данных, поскольку командная кэш-память такой инструкции не содержит.

1.2

Новая инструкция по работе с данными поступает из системной памяти компьютера через блок шины в микропроцессор и записывается в командную кэш-память, где ей присваивается код "2=X".

1.3.

Вслед за этим блок предварительной выборки запрашивает из кэш-памяти копию кода "2=X", которую направляет для дальнейшей обработки в блок декодировки.

1.4.

Блок декодировки раскодирует инструкцию "2=X", преобразуя ее в цепочку двоичных символов, которая пересылается в управляющий блок и в кэш данных, давая им указание о том, как с полученной инструкцией поступать дальше.

1.5.

Поскольку блоком декодировки принято решение о сохранении цифры 2 в кэш данных, управляющий блок выполняет соответствующую инструкцию для кода "2=X": цифре 2 в кэш-памяти данных присваивается адрес "Х", здесь она и будет находиться в ожидании дальнейших указаний.


2.1.

Нажав клавишу с цифрой "3", Вы дадите блоку предварительной выборки команду на запрос в системной памяти компьютера и в командной кэш-памяти инструкций о действиях в отношении вновь поступивших данных. Поскольку командная кэш-память таких инструкций не содержит, они поступят из системной памяти.

2.2.

Аналогично команде "2=X," новые инструкции по данным поступают из системной памяти компьютера в микропроцессор и записываются в командную кэш-память, где получают код адресации "3=Y".


2.3.

После этого копия кода "3=Y" поступает из командной кэш-памяти в блок предварительной выборки, откуда переправляется в декодирующий блок для дальнейшей обработки.

2.4.

Декодирующий блок раскодирует инструкцию "3=Y", преобразуя ее в цепочку двоичных символов, которую направляет в управляющий блок и в кэш-память данных, давая им указание о том, как с данной инструкцией поступать дальше.

2.5.

Поскольку декодирующий блок принимает решение о сохранении цифры 3 в кэш-памяти данных, то он выполняет соответствующую инструкцию для кода "3=Y": цифре 3 присваивается в кэш-памяти данных адрес "Y", где она, аналогично цифре 2, и будет находиться в ожидании дальнейших указаний.


3.1.

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

3.2.

Поскольку речь идет о не использовавшейся ранее инструкции, "плюс" поступает в микропроцессор из системной памяти компьютера и записывается в командную кэш-память с присвоением адресного кода "X+Y=Z", обозначающего операцию сложения.

3.3.

Вслед за этим блок предварительной выборки запрашивает из командной кэш-памяти копию кода "X+Y=Z" и пересылает ее блоку декодировки для дальнейшей обработки.

3.4.

Блок декодировки раскодирует инструкцию "X+Y=Z", преобразуя ее в цепочку двоичных символов, которую направляет в управляющий блок и в кэш-память данных, давая им указание о том, как с данной инструкцией поступать дальше. Одновременно арифметическое логическое устройство (ALU) получает указание на выполнение операции СЛОЖЕНИЯ.

3.5.

Управляющий блок расчленяет код, а арифметическое логическое устройство (ALU) выполняет по команде операцию СЛОЖЕНИЯ чисел, закодированных как "X" и "Y" и извлеченных из кэш-памяти данных. После этого ALU, "посовещавшись" со своими "партнерами" — регистрами, пересылает им полученное число 5 для записи по одному из адресов.


4.1.

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

4.2.

Инструкция для значка "=" поступает в микропроцессор из системной памяти компьютера через блок шины и записывается в командную кэш-память, получив код адресации "Print Z" ("отобразить на экране символ Z").

4.3.

Вслед за этим блок предварительной выборки запрашивает из командной кэш-памяти копию кода "Print Z", которую пересылает декодирующему блоку для дальнейшей обработки.

4.4.

Декодирующий блок раскодирует инструкцию "Print Z", преобразуя ее в цепочку двоичных символов, которая затем пересылается управляющему блоку с указанием на то, как с полученной инструкцией поступать дальше.


4.5.

Теперь, когда значение величины, представленной кодом Z, уже вычисленно и записано в позиции № 5 блока регистров, для завершения операции сложения 2+3 остается выполнить команду вывода содержания регистра 5 на экран дисплея. На этом работа микропроцессора заканчивается.


Блок шины:
Блоком шины называется то место, куда поступают инструкции по пути от системной памяти к микропроцессору и обратно.

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

Блок предварительной выборки:
Исходя из содержания текущей команды или поставленной задачи, блок предварительной выборки определяет порядок запроса соответствующих данных и инструкций из командной кэш-памяти или системной памяти компьютера. По мере поступления инструкций, важнейшей задачей блока предварительной выборки становится их правильное "выстраивание" и пересылка в блок декодировки.

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

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

Арифметическое логическое устройство (ALU):
В ALU — "умном" компоненте микросхемы — проходит завершающий этап процесса обработки данных и команд: выполнение операций сложения, вычитания, умножения и деления. Кроме того, ALU знает, что означают логические команды — такие, как ИЛИ, И, НЕТ. Сообщения, поступающие из управляющего блока, указывают ALU, что ему надлежит делать, а для выполнения поставленной задачи устройство пользуется данными, которыми его снабжают ближайшие "сотрудники" — регистры. В нашем примере, именно здесь и осуществляется сама операция сложения чисел 2 и 3.

Регистры:
Регистрами называется тот "мини-склад", где хранятся данные, используемые арифметическим логическим устройством (ALU) при выполнении задач согласно указаниям, полученным из управляющего блока. Данные, поступающие сюда из кэш-памяти данных, системной памяти или управляющего блока, хранятся в особых местах, выделяемых регистрами с тем, чтобы ALU могло их извлечь быстро и эффективно.