- •Архитектура эвм
- •Введение
- •Структура мпс
- •Основные понятия в архитектуре мпс
- •Архитектура фон Неймана
- •Гарвардская архитектура
- •Параллельная архитектура
- •Конвейерная архитектура
- •Суперскалярная архитектура
- •АрхитектурыCisc
- •Архитектуры risc
- •Архитектуры misc
- •Ассемблеры
- •Программа Ассемблер
- •Язык Ассемблер
- •Основы 32-битного программирования в Windows
- •Api функции
- •Сообщения Windows
- •Версии ассемблеров
- •Среды разработки
- •Представление данных в эвм
- •Системы счисления и преобразования между ними
- •Форматы представления чисел
- •Форматы представления двоичных чисел
- •Формат с плавающей точкой
- •Типы адресаций операндов
- •Интерфейсы
- •Последовательный интерфейс rs-232c
- •Интерфейс параллельного порта
- •Инфракрасный интерфейс
- •Интерфейс Bluetooth
- •Интерфейс usb
- •Интерфейс ieee 1394 - FireWire
- •Сопроцессоры
- •Система прерываний и исключений
- •Интерфейс jtag
- •Символы и строки
- •Архитектура cisc от Intel
- •Введение
- •Микроархитектура Intel
- •Микроархитектура р6
- •Микроархитектура NetBurst
- •Микроархитектура Pentium 4
- •Микроархитектура Intel Pentium Mobile
- •Микроархитектура Intel Core
- •Микроархитектура Intel Core Duo
- •Микроархитектура Intel Nehalem
- •Адресация памяти в ia_32
- •Наборырегистров
- •Целочисленныйпроцессор
- •Регистры общего назначения (рон)
- •Регистры флагов eflags
- •Регистр указателя команд
- •Сегментные регистры
- •Управляющие регистры
- •Системные адресные регистры
- •Прямой и обратный порядок следования байтов
- •Виды адресации операндов в памяти
- •Цикл выполнения команды
- •Распределение адресного простраства
- •Образ программы в памяти.
- •Математический сопроцессор
- •Xmm технология
- •Система команд
- •Формат команды
- •Классификация команд
- •Целочисленный процессор
- •Команды общего назначения
- •Команды ввода-вывода
- •Инструкции работы со стеком
- •Арифметико-логические инструкции
- •Цепочечные операции
- •Команды управления
- •Команды поддержки языков высокого уровня
- •Команды прерываний
- •Команды синхронизации процессора
- •Команды обработки цепочки бит
- •Команды управления защитой
- •Команды обмена с управляющими регистрами
- •Команды идентификации и управления архитектурой
- •Управление кэшированием
- •Команды управления кэшированием
- •Сопроцессор с плавающей точкой
- •Классификация команд
- •Команды управления сопроцессором
- •Команды передачи данных
- •Команды сравнения данных
- •Арифметические команды
- •Трансцендентные функции
- •Целочисленное mmx расширение
- •Синтаксис ммх-команд
- •Классификация команд
- •Инициализация
- •Передача данных
- •Упаковка данных
- •Распаковка данных
- •Арифметика
- •Сравнения
- •Дополнительные команды
- •XmMрасширение с плавающей точкой
- •Типы данных
- •Передача данных
- •Арифметика
- •Сравнения
- •Преобразования
- •Управление состоянием
- •Распаковка данных
- •Управление кэшированием
- •Дополнительные команды
- •Цикл трансляции, компоновки и выполнения
- •Ассемблер cisc
- •Введение
- •Средства программирования и отладки
- •Описание masm
- •Структура программы на ассемблере
- •Типы данных
- •Макросредства
- •Директивы
- •Архитектура risc
- •Система команд
- •Архитектура misc
- •Архитектура vliw
- •Архитектура вычислительных систем со сверхдлинными командами
- •Архитектура ia-64
- •Многоядерные архитектуры
- •Микроконтроллер avr от Atmel
- •Архитектура avr от Atmel
- •Ассемблер
- •Команды ассемблера
- •Директивы ассемблера
- •Выражения
- •Микроконтроллеры c28x
- •Архитектура c28x
- •Архитектура f28x
- •Инструментальные средства разработки по
- •Ассемблер
- •Команды ассемблера
- •Формат объектного файла
- •Директивы ассемблера
- •Макроязык и макрокоманды
- •Компоновщик
- •Архиватор
- •Абсолютный листер
- •Листер перекрестных ссылок
- •Утилита 16-ричного преобразования
- •Архитектура VelociTi
- •Структура и состав цсп с6x
- •Средства разработки цсп с6x
- •Ассемблер цсп с6x
- •Команды ассемблера
- •Выражения
- •Листинги
- •Листинги программ
- •Директивы ассемблера
- •Макроязык и макрокоманды
- •Компоновщик
- •Утилиты
- •Поддержка в matlab
- •Введение
- •Встроенные платы для цсп ‘c6x
Гарвардская архитектура
Существует альтернативный тип архитектуры МП системы — это архитектура с раздельными шинами данных и команд (двухшинная, или гарвардская). Эта архитектура предполагает наличие в системе отдельной памяти для данных и отдельной памяти для команд. Обмен процессора с каждым из двух типов памяти происходит по своей шине.
В случае двухшинной архитектуры обмен по обеим шинам может быть независимым, параллельным во времени. Соответственно, структуры шин (количество разрядов кода адреса и кода данных, порядок и скорость обмена информацией и т.д.) могут быть выбраны оптимально для той задачи, которая решается каждой шиной. Поэтому при прочих равных условиях переход на двухшинную архитектуру ускоряет работу МП системы, хотя и требует дополнительных затрат на аппаратуру, усложнения структуры процессора. Память данных в этом случае имеет свое распределение адресов, а память команд — свое.
Архитектура с раздельными шинами данных и команд сложнее, она заставляет процессор работать одновременно с двумя потоками кодов, обслуживать обмен по двум шинам одновременно. Программа может размещаться только в памяти команд, данные — только в памяти данных. Такая узкая специализация ограничивает круг задач, решаемых системой, так как не дает возможности гибкого перераспределения памяти. Память данных и память команд в этом случае имеют не слишком большой объем, поэтому применение систем с данной архитектурой ограничивается обычно не слишком сложными задачами.
В чем же преимущество архитектуры с двумя шинами (гарвардской)? В первую очередь, в быстродействии. Проще всего преимущества двухшинной архитектуры реализуются внутри одной микросхемы. В этом случае можно также существенно уменьшить влияние недостатков этой архитектуры. Поэтому основное ее применение — в микроконтроллерах, от которых не требуется решения слишком сложных задач, но зато необходимо максимальное быстродействие при заданной тактовой частоте.
Параллельная архитектура
Архитектура фон Неймана обладает тем недостатком, что она последовательная. Какой бы огромный массив данных ни требовалось обработать, каждый его байт должен будет пройти через МП, даже если над всеми байтами требуется провести одну и ту же операцию. Этот эффект называется узким горлышком фон Неймана.
Для преодоления этого недостатка предлагались и предлагаются архитектуры процессоров, которые называются параллельными. Параллельные процессоры используются в суперкомпьютерах. Возможными вариантами параллельной архитектуры могут служить (по классификации Флинна):
SISD — один поток команд, один поток данных;
SIMD — один поток команд, много потоков данных;
MISD — много потоков команд, один поток данных;
MIMD — много потоков команд, много потоков данных.
Конвейерная архитектура
Конвейерная архитектура (Pipelining) была введена в ЦП с целью повышения быстродействия. Обычно для выполнения каждой команды требуется осуществить некоторое количество однотипных операций, например: выборка команды из ОЗУ, дешифровка команды, адресация операнда в ОЗУ, выборка операнда из ОЗУ, выполнение команды, запись результата в ОЗУ. Каждую из этих операций сопоставляют одной ступени конвейера. Например, конвейер МП с архитектурой IA-32 содержит 6 модулей, корые выполняют стадии обработки:
Модуль шинного интерфейса , ввод/вывод данных.
Модуль предварительной выборки, считывание инструкции и помещение ее в очередь.
Модуль декодирования, выборка инструкции из очереди и ее декодирование.
Модуль выполнения, исполняет последовательность инструкций, полученных от модуля декодирования. операций,
Модуль сегментации, преобразует логические адреса в линейные адреса и выполняет проверки, связанные с защитой памяти.
Модуль страничной организации преобразует линейные адреса в физические адреса памяти, выполняет проверки адресов, связанные с защитой страниц памяти, а также ведет список страниц, к которым недавно осуществлялся
Предположим, что каждый этап выполнения команды в процессоре длится ровно 1 машинный такт. На рисунке показана матрица шестиступенчатого выполнения команд в процессоре, не поддерживающем режим конвейерной обработки. Подобный режим выполнения команд был реализован в процессорах фирмы Intel до появления на свет модели Intel486.
Как только завершается этап Э6 выполнения команды К-1, начинается выполнение этапа Э1 команды К-2. При этом для выполнения двух команд К-1 и К-2 требуется 12 машинных тактов. Другими словами, если цикл выполнения команды состоит из к этапов, то для выполнения последовательности из n команд потребуется n x к машинных тактов. Очевидно, что подобный ЦП работает крайне неэффективно, поскольку за 1 машинный такт выполняется только одна шестая часть команды.
В то же время, если в процессоре поддерживается режим конвейерной обработки, то уже на втором машинном такте процессор может приступить к этапу Э1 выполнения новой команды. При этом предыдущая команда будет находиться на этапе Э2 своего выполнения. Таким образом, конвейерная обработка позволяет совместить выполнение двух машинных команд во времени. Как только процессор переходит к этапу Э2 выполнения команды K1, начинается выполнение этапа Э1 команды К-2. Вследствие этогодля выполнения 2 машинных команд требуется уже не 12, а всего лишь 7 машинных тактов. При полной загрузке конвейера, в текуший момент времени работают все 6 его ступеней.
Факторы, снижающие эффективность конвейера:
Простой конвейера, когда некоторые ступени не используются (например, адресация и выборка операнда из ОЗУ не нужны, если команда работает с регистрами).
Ожидание: если следующая команда использует результат предыдущей, то последняя не может начать выполняться до выполнения первой (это преодолевается при использовании внеочередного выполнения команд— out-of-order execution).
Очистка конвейера при попадании в него команды перехода (эту проблему удаётся сгладить, используя предсказание переходов).
Некоторые современные процессоры имеют более 30 ступеней в конвейере, что увеличивает производительность процессора, однако приводит к большому времени простоя (например, в случае ошибки в предсказании условного перехода). Не существует единого мнения по поводу оптимальной длины конвейера: различные программы могут иметь существенно различные требования.
Процессор с одним конвейером называется скалярным.