Руководство по эффективному программированию на платформе «Эльбрус»¶
Мурад Нейман-заде.
Сергей Королёв.
Распространяется по лицензии Creative Commons BY 4.0 (CC BY 4.0).
Копирайт © 2021, АО «МЦСТ».
- 1. Введение в платформу «Эльбрус»
- 2. Работа с платформой
- 3. Отличия в интерфейсах
- 4. Введение в архитектуру «Эльбрус»
- 5. Анализ производительности программ
- 6. Повышение производительности
- 7. Использование оптимизированных библиотек
- 8. Рекомендации по оптимизации программ под архитектуру Эльбрус
- 8.1. Рекомендации по работе со структурами данных
- 8.2. Виды локальности данных
- 8.3. Рекомендации по оптимизации процедур
- 8.3.1. Анализ процедуры: начальный этап
- 8.3.2. Короткая ациклическая процедура (не более 30 тактов)
- 8.3.3. Процедура с горячими простыми циклами/гнездами циклов
- 8.3.4. Сложный цикл с управлением, гнездо с управлением
- 8.3.5. Громоздкая процедура
- 8.3.6. Процедура с превалирующим оператором switch
- 8.3.7. Библиотечная процедура
- 9. Интерфейсные программные соглашения
- 9.1. Модель памяти
- 9.2. Представление данных
- 9.3. Описание регистров
- 9.3.1. Рабочие регистры
- 9.3.1.1. Механизм регистровых окон
- 9.3.1.2. Пространство регистров текущего окна. Программные соглашения использования пространства регистров текущего окна
- 9.3.1.3. Пространство регистров подвижной базы. Программные соглашения использования базированных регистров
- 9.3.1.4. Пространство глобальных регистров. Программные соглашения использования глобальных регистров
- 9.3.2. Предикатные регистры
- 9.3.3. Регистры управления
- 9.3.4. Специальные регистры
- 9.3.1. Рабочие регистры
- 9.4. Локальный стек
- 9.5. Процедурный механизм
- 10. Команды микропроцессора
- 10.1. Структура описания операции
- 10.2. Спекулятивное исполнение
- 10.3. Обзор целочисленных операций
- 10.3.1. Операции сложения, вычитания, обратного вычитания
- 10.3.2. Операции умножения
- 10.3.3. Операции деления и вычисления остатка
- 10.3.4. Операции сравнения целых чисел
- 10.3.5. Логические поразрядные операции
- 10.3.6. Операции «взять поле произвольной длины»
- 10.3.7. Операции «вставить поле»
- 10.3.8. Расширение знаком или нулем
- 10.3.9. Выбор из двух операндов
- 10.4. Обзор вещественных скалярных операций
- 10.5. Предикатные операции
- 10.5.1. Операции вычисления предикатов
- 10.5.2. Вычисление первичного логического предиката (Evaluate Logical Predicate - ELP)
- 10.5.3. Направить логический предикат (Route Logical Predicate - RLP)
- 10.5.4. Условие для операции MERGE (Merge Condition - MRGC)
- 10.5.5. Вычисление логического предиката (Calculate Logical Predicate - CLP)
- 10.5.6. Условная пересылка логического предиката (Conditional Move Logical Predicate - MLP)
- 10.6. Операции обращения в память
- 10.7. Операции преобразования адресных объектов
- 10.8. Операции доступа к регистрам состояния
- 10.9. Операции подготовки передачи управления
- 10.9.1. Подготовка перехода по литеральному смещению (DISP)
- 10.9.2. Подготовка перехода по динамическому смещению (GETPL)
- 10.9.3. Подготовка перехода по метке из регистрового файла RF (MOVTd)
- 10.9.4. Подготовка возврата из процедуры (RETURN)
- 10.9.5. Подготовка программы предподкачки массива (LDISP)
- 10.9.6. Предварительная подкачка кода по литеральному смещению (PREF)
- 10.10. Операции передачи управления (CT)
- 10.11. Операции поддержки наложений цикла
- 10.11.1. Операции Set BR
- 10.11.2. Продвинуть базу вращения числовых регистров NR (ABN)
- 10.11.3. Продвинуть базу вращения предикатных регистров PR (ABP)
- 10.11.4. Продвинуть базу вращения глобальных числовых регистров NR (ABG)
- 10.11.5. Продвинуть счетчики циклов (ALC)
- 10.11.6. Операции асинхронной подкачки в буфер предподкачки массива
- 10.11.7. Начать предподкачку массива (BAP)
- 10.11.8. Остановить предподкачку массива (EAP)
- 10.11.9. Операции пересылки буфера предподкачки массива
- 10.12. Разные операции
- 11. Режим Безопасных Вычислений