
- •Введение
- •1. Архитектура ЭВМ
- •1.1. Структура МПС
- •1.2. Основные понятия в архитектуре МПС
- •1.3. Архитектура фон Неймана
- •1.4. Гарвардская архитектура
- •1.5. Параллельная архитектура
- •1.6. Конвейерная архитектура
- •1.7. Суперскалярная архитектура
- •1.8. Архитектура VLIW
- •1.9. Архитектуры CISC, RISC
- •1.10.2. Язык Ассемблер
- •1.10.4. API функции
- •1.11. Сообщения Windows
- •1.12. Версии ассемблеров
- •1.12.1. Microsoft Macro Assembler (MASM)
- •1.12.2. Flat assembler (FASM)
- •1.12.3. NASM (Netwide Assembler)
- •1.12.4. Turbo Assembler (TASM)
- •1.12.5. GoAsm
- •1.13. Среды разработки
- •1.13.1. RadASM
- •1.13.2. WinAsm Studio
- •1.13.3. Easy Code
- •2. Представление данных в ЭВМ
- •2.1. Системы счисления и преобразования между ними
- •2.2. Форматы представления чисел
- •2.2.1. Форматы представления двоичных чисел
- •2.2.2. Формат с плавающей точкой
- •2.3. Типы адресаций операндов
- •2.4. Интерфейсы
- •2.4.1. Последовательный интерфейс RS-232C
- •2.4.2. Интерфейс параллельного порта
- •2.4.3. Инфракрасный интерфейс
- •2.4.4. Интерфейс Bluetooth
- •2.4.5. Интерфейс USB
- •2.4.6. Интерфейс IEEE 1394 - FireWire
- •2.4.7. Сопроцессоры
- •2.4.8. Система прерываний и исключений
- •2.4.9. Интерфейс JTAG
- •3. Архитектура CISC от Intel
- •3.1. Введение
- •3.2. Микроархитектура Intel
- •3.2.1. Микроархитектура Р6
- •3.2.2. Микроархитектура NetBurst
- •3.2.3. Микроархитектура Pentium 4
- •3.2.4. Микроархитектура Intel Core
- •3.2.5. Микроархитектура Intel Core Duo
- •3.2.6. Микроархитектура Intel Nehalem
- •3.2.7. Микроархитектура Intel Sandy Bridge
- •3.2.8. Архитектура Haswell
- •3.2.9. Микроархитектура Intel Itanium
- •3.2.10. Микроархитектура Intel IA-64
- •3.3. Программная модель IA-32
- •3.3.1. Адресация памяти в IA_32
- •3.3.2. Наборы регистров
- •3.4. Целочисленный процессор
- •3.4.1. Регистры общего назначения (РОН)
- •3.4.2. Регистры флагов EFLAGS
- •3.4.3. Регистр указателя команд
- •3.4.4. Сегментные регистры
- •3.4.5. Управляющие регистры
- •3.4.6. Системные адресные регистры
- •3.4.7. Прямой и обратный порядок следования байтов
- •3.4.8. Виды адресации операндов в памяти
- •3.4.9. Цикл выполнения команды
- •3.4.10. Распределение адресного простраства
- •3.4.11. Образ программы в памяти.
- •3.4.12. Стек
- •3.5. Математический сопроцессор
- •3.6. MMX-технология
- •3.7. XMM технология
- •3.8.2. Классификация команд
- •3.8.3. Целочисленный процессор
- •3.8.4. Сопроцессор с плавающей точкой
- •3.8.5. Целочисленное MMX расширение
- •3.8.6. XMM расширение с плавающей точкой
- •3.9. Цикл трансляции, компоновки и выполнения
- •3.10. Ассемблер CISC
- •3.10.1. Введение
- •3.10.2. Средства программирования и отладки
- •3.11. Описание MASM
- •3.12. Структура программы на ассемблере
- •3.13. Типы данных
- •3.14. Макросредства
- •3.15. Директивы
- •4. Архитектура RISC
- •5. Архитектура VLIW
- •5.1. Архитектура вычислительных систем со сверхдлинными командами
- •5.2. Архитектура IA-64
- •5.3. Itanium
- •6. Многоядерные архитектуры
- •7.1.1. Основные параметры
- •7.1.2. Семейства
- •7.1.3. Описание выводов
- •7.1.4. Обзор архитектуры
- •7.1.5. Структура памяти
- •7.1.6. Режимы адресации
- •7.2. Ассемблер
- •7.2.1. Команды ассемблера
- •7.2.2. Директивы ассемблера
- •7.2.3. Выражения
- •7.3. ИСР AVR Studio
- •8.2. Архитектура F28x
- •8.3. Инструментальные средства разработки ПО
- •8.4. Ассемблер
- •8.5. Команды ассемблера
- •8.5.1. Операции с регистрами XAR0-XAR7
- •8.5.2. Операции загрузки регистра DP
- •8.5.3. Операции с регистром SP
- •8.5.4. Операции с регистрами AX (AH, AL)
- •8.5.5. Операции с регистрами ACC
- •8.5.6. Операции с регистрами P или XT
- •8.5.7. Операции прямого доступа к памяти
- •8.5.8. Операции ввода вывода
- •8.5.9. Операции с памятью программ
- •8.5.10. Операции ветвления, вызова, возврата
- •8.5.11. Математические
- •8.5.12. Ветвления
- •8.5.13. Основные инструкции для работы с регистрами
- •8.5.14. Основные команды для работы с вещественными числами
- •8.6. Листинги программ
- •8.7. Формат объектного файла
- •8.8. Директивы ассемблера
- •8.8.1. Разделы
- •8.8.2. Константы
- •8.8.3. Выравнивания
- •8.8.4. Листинг
- •8.8.5. Файлы
- •8.8.6. Условная трансляция
- •8.8.7. Структуры
- •8.8.8. Символы во время трансляции
- •8.8.9. Разные директивы
- •8.9. Макроязык и макрокоманды
- •8.10. Компоновщик
- •8.11. Архиватор
- •8.12. Абсолютный листер
- •8.13. Листер перекрестных ссылок
- •8.14. Утилита 16-ричного преобразования
- •8.15. Согласование заголовочных C/C++ файлов с ассемблером
- •8.16. ИСР Code Composer Studio (CCS)
- •9.1. Архитектура VelociTI
- •9.2. Структура и состав ЦСП С6x
- •9.3. Средства разработки ЦСП С6x
- •9.4. Ассемблер ЦСП С6x
- •9.5. Команды ассемблера
- •9.5.1. Основные команды для работы с целыми числами
- •9.5.2. Основные команды для работы с вещественными числами
- •9.6. Константы
- •9.7.2. Условные выражения
- •9.7.3. Законные выражения
- •9.8. Листинги
- •9.9. Листинги программ
- •9.9.1. Листинг перекрестных ссылок
- •9.10. Директивы ассемблера
- •9.10.1. Директивы, которые определяют разделы
- •9.10.2. Директивы, которые инициализируют константы (данные и память)
- •9.10.3. Директивы, которые выравнивают счетчик команд раздела (SPC)
- •9.10.4. Директивы, которые форматируют выходной листинг
- •9.10.5. Директивы, которые ссылаются на другие файлы
- •9.10.6. Директивы, которые допускают условную трансляцию
- •9.10.7. Директивы, которые определяют символы во время трансляции
- •9.11. Макроязык и макрокоманды
- •9.12. Компоновщик
- •9.13. Утилиты
- •9.13.1. Архиватор
- •9.13.2. Утилита 16-ричного преобразования
- •10.2. Встроенные платы для ЦСП ‘C6x
числу вычислительных устройств и обычно колеблется в диапазоне от 3 до 20. Все вычислительные устройства имеют доступ к данным, хранящимся в едином многопортовом регистровом файле. Отсутствие сложных аппаратных механизмов, характерных для суперскалярных процессоров (предсказание переходов, внеочередное исполнение и т.д.) дает значительный выигрыш в быстродействии и возможность более эффективно использовать площадь кристалла. Подавляющее большинство цифровых сигнальных процессоров и мультимедийных процессоров с производительностью более 1 млрд операций/с базируется на VLIW-архитектуре. Серьезная проблема VLIW – усложнение регистрового файла и связей этого файла с вычислительными устройствами.
5.2. Архитектура IA-64
Дальнейшим развитием идеи VLIW стала новая архитектура IA-64 – совместная разработка фирм Intel и Hewlett-Packard (IA – это аббревиатура от Intel Architecture). В IA-64 реализован новый подход, известный как вычисления с явным параллелизмом команд (EPIC, Explicitly Parallel Instruction Computing) и
являющийся усовершенствованным вариантом технологии VLIW. Первым представителем данной стратегии стал микропроцессор Itanium компании Intel. Корпорация Hewlett-Packard также реализует данный подход в своих разработках.
В архитектуре IA-64 предполагается наличие в процессоре 128 64-разрядных регистров общего назначения (POH) и 128 80-разрядных регистров с плавающей запятой. Кроме того, процессор IA-64 содержит 64 однобитовых регистра предикатов.
Формат команд в архитектуре IA-64:
320

Рис. 10.2. Формат сверхдлинной команды в архитектуре IA-64
Команды упаковываются (группируются) компилятором в сверхдлинную команду – связку (bundle) длиною в 128 разрядов. Связка содержит три команды и шаблон, в котором указываются зависимости между командами (можно ли с командой I0 запустить параллельно I1, или же I1 должна выполняться только после I0), а также между другими связками (можно ли с командой I2 из связки S0 запустить параллельно команду I3 из связки S1).
Перечислим все варианты составления связки из трех команд:
|
I0 |
║ I1 ║ I2 – все команды исполняются параллельно; |
|
I0 |
& I1 ║ I2 – сначала I0, затем исполняются параллельно I1 и I2; |
I0 ║ I1 & I2 – параллельно обрабатываются I0 и I1, после них – I2;
I0 & I1 & I2 – команды исполняются в последовательности I0, I1, I2 .
Одна связка, состоящая из трех команд, соответствует набору из трех функциональных блоков процессора. Процессоры IA-64 могут содержать разное количество таких блоков, оставаясь при этом совместимыми по коду. Благодаря тому что в шаблоне указана зависимость и между связками, процессору с N одинаковыми блоками из трех ФБ будет соответствовать сверхдлинная команда из N × 3 команд (N связок). Тем самым обеспечивается масштабируемость IA64.
Поле каждой из трех команд в связке состоит из пяти полей:13-разрядного поля кода операции;
321
6-разрядного поля предикатов, хранящего номер одного из 64 регистров предиката;
7-разрядного поля первого операнда (первого источника), где указывается номер регистра общего назначения или регистра с плавающей запятой, в котором содержится первый операнд;
7-разрядного поля второго операнда (второго источника), где указывается номер регистра общего назначения или регистра с плавающей запятой, в котором содержится второй операнд;
7-разрядного поля результата (приемника), где указывается номер регистра общего назначения или регистра с плавающей запятой, куда дол-жен быть занесен результат выполнения команды.
Предикация – это способ обработки условных ветвлений. Если в исходной программе встречается условное ветвление (по статистике через каждые 6 команд), то команды из разных ветвей помечаются разными регистрами предиката (команды имеют для этого соответствующие поля), далее они выполняются совместно, но их результаты не записываются, пока значения регистров предиката (РП) не определены. Когда вычисляется условие ветвления, РП, соответствующий «правильной» ветви, устанавливается в 1, а другой – в 0. Перед записью результатов процессор проверяет поле предиката и записывает результаты только тех команд, поле предиката которых указывает на РП с единичным значением.
Предикаты формируются как результат сравнения значений, хранящихся в двух регистрах. Результат сравнения («Истина» или «Ложь») заносится в один из РП, но одновременно с этим во второй РП записывается инверсное значение полученного результата. Такой механизм позволяет процессору более эффективно выполнять конструкции типа IF-THEN-ELSE.
Логика выдачи команд на исполнение сложнее, чем в традиционных процессорах типа VLIW, но намного проще, чем у суперскалярных процессоров с неупорядоченной выдачей. Особенностями архитектуры EPIC являются:
большое количество регистров;
масштабируемость архитектуры до большого количества функциональных блоков, т.е. наследственно масштабируемая система команд (ISIS - Inherently Scaleable Instruction Set);
явный параллелизм в машинном коде. Поиск зависимостей между командами осуществляет не процессор, а компилятор;
322
предикация – команды из разных ветвей условного предложения снабжаются полями предикатов (полями условий) и запускаются параллельно;
предварительная загрузка – данные из медленной основной памяти загружаются заранее.
Преимущества технологии VLIW. Использование компилятора позволяет устранить зависимость между командами до того, как они будут реально выполняться, в отличие от суперскалярных процессоров, где такие зависимости приходится обнаруживать и устранять «на лету». Отсутствие зависимостей между командами в коде, сформированном компилятором, ведет к упрощению аппаратных средств процессора и за счет этого к существенному подъёму его быстродействия. Наличие множества функциональных блоков дает возмож-ность выполнять несколько команд параллельно.
Недостатки технологии VLIW. Требуется новое поколение компиляторов, способных проанализировать программу, найти в ней независимые команды, связать такие команды в строки длиной от 256 до 1024 бит, обеспечить их параллельное выполнение. Компилятор должен учитывать конкретные детали аппаратных средств. При определенных ситуациях программа оказывается недостаточно гибкой.
Основные сферы применения. VLIW-процессоры пока еще мало распространены. Основными сферами применения технологии VLIW являются цифровые сигнальные процессоры и вычислительные системы, ориентированные на архитектуру IA-64. Наиболее известной была VLIW-система фирмы Multiflow Computer, Inc. В России VLIW-концепция была реализована в суперкомпьютере Эльбрус 3-1 и получила дальнейшее развитие в его последователе – Эльбрус2000 (E2k). К VLIW относится и семейство сигнальных процессоров TMS320C6x фирмы Texas Instruments. В начале 2000 года фирма Transmeta заявила процессор Crusoe, представляющий собой программно-аппаратный комплекс. В нем команды микропроцессоров серии х86 транслируются в слова VLIW длиной 64 или 128 бит. Оттранслированные команды хранятся в кэш-памяти, а трансляция при многократном их использовании производится только один раз. Ядро процессора исполняет элементы кода в строгой последовательности.
5.3. Itanium
В чем заключается революционность Itanium?
Сама Intel по праву называет Itanium «самой значительной новой разработкой Intel в области микропроцессорной архитектуры с момента выпуска процессора
323
i386 в 1985 году». Революционность состоит в отказе от давно морально устаревшей системы команд x86 (она в ходу с 1978 года) и в радикальном переходе к новой архитектуре, свободной от «пережитков прошлого».
Революционной в Itanium является не только 64-разрядность (у 32-разрядных процессоров теоретическое ограничение объема адресуемой оперативной памяти составляет 4 Гбайт, а у 64-битных — несколько терабайт), но и явный па-
раллелизм EPIC (Explicity Parallel Instruction Computing).
По сути, архитектура IA-64 (именно так называется технология, по которой проектируются процессоры Itanium, MсKinley и последующие) впитала в себя все лучшие идеи: VLIW (Very Long Instruction Word, архитектура с длинными командами), устранение ветвлений, улучшенный механизм предварительной подачи данных и пр.
Среди характеристик первого процессора архитектуры IA-64 можно также отметить увеличенное адресное пространство, обнаружение и исправление ошибок. В принципе, о силиконовой составляющей процессора Itanium давно уже известно многое.
Думаю, что к моменту выхода эта информация будет разниться только в деталях: станет известна точная частота (Intel может, к примеру, выдать не обещанные 800, а все 1000 МГц) и будет определена ценовая политика. Картридж Itanium предназначен для установки в Slot M — комбинированный процессорный разъем, сочетающий достоинства как Socket, так и Slot.
Сигнальная матрично-штырьковая часть разведена с силовой частью, по которой подается питание, с тем чтобы исключить помехи. На обратной стороне процессорного картриджа расположена массивная теплоотводная пластина, позволяющая равномерно распределять по всей поверхности процессора ватты, излучаемые в воздух. К тому же сильно нагревающиеся блоки процессора тоже размещены равномерно. Согласно предварительным данным Itanium поддерживает частоту шины памяти 266 МГц. Архитектура Itanium подразумевает использование 2 или 4 Мбайт кэш-памяти третьего уровня. Статическая кэшпамять новой конструкции размещена на одной плате с ядром процессора и работает с ним на одинаковой тактовой частоте.
324

Процессор Itanium, предназначенный для корпоративных серверов и рабочих станций самого высокого класса, не похож ни на одно из изделий, ранее выпущенных фирмой Intel. Разработчики этой модели отказались, наконец, от 32разрядного набора команд x86, который неизменно реализовывали микросхемы Intel с тех пор, как в 1985 г. дебютировал процессор 386. Itanium построен на базе абсолютно нового 64-разрядного набора команд, известного под названи-
ем IA-64.
325