русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

G.5. Команды работы с целыми числами


Дата добавления: 2015-06-12; просмотров: 659; Нарушение авторских прав


Процессор i486 может выполнять большинство часто используемых команд (таких, как загрузка или запоминание регистра, АЛУ-операции с регистром, и т.д.) за один такт. Однако, в отличие от процессора 386, некоторые из операций с памятью занимают теперь больше циклов, чем соответствующие операции с регистрами. Например, команда PUSH MEM :

+----------------------------------------------------------------+| Команда | Такты ЦПУ 386(ТМ) DX | Такты ЦПУ i486(TM) |+--------------------+----------------------+--------------------|| mov регистр,память | 4 | 1 || push регистр | 2 | 1 || push память | 5 | 4 |+----------------------------------------------------------------+

Tаким образом, для процессора i486, загрузка значения из памяти в регистр и затем занесение этого регистра в стек приведет к чистому сохранению 2 тактов; но для процессора 386 DX таже самая последовательность команд приведет к чистой потере одного такта. Однако для того, чтобы загрузить значение в регистр на процессоре i486, необходимо найти пустой регистр; если действие по загрузке значения уничтожит значение регистра, которое могло быть использовано позднее, то сохранение значения может привести к отрицательному результату по причине потери повторно используемого значения регистра.

Другим примером служит команда LEAVE :

+--------------------------------------------------------------+| Команда | Такты ЦПУ 386(ТМ) DX | Такты ЦПУ i486(TM) |+------------------+----------------------+--------------------|| mov esp, ebp | 2 | 1 || pop ebp | 4 | 1+1 (штраф за esp) || leave | 4 | 5 |+--------------------------------------------------------------+

Опять же, для процессора i486, выполнение последовательности команд MOV/POP приводит к чистому сохранению 2 тактов по сравнению с командой LEAVE; в то время, как выполняясь на процессоре 386 DX, команда LEAVE одновременно и быстрее, и короче. Однако, так как первая команда MOV использует регистр ESP в качестве приемника и команда POP также неявно использует регистр ESP в качестве базы (как уже упоминалось выше), эта последовательность действий приводит к получению одного штрафного такта, если только две команды не разделены другой командой. Если возможно таким образом переупорядочить команды, чтобы команды MOV/POP были бы разделены полезной командой, тогда чистый выигрыш в тактах по сравнению с командой LEAVE составил бы 3 такта на процессоре i486.



Так как процессор i486 может работать с операндами в регистрах быстрее, чем с операндами в памяти (как и почти большинство других архитектур), важно иметь хорошее размещение регистров и оптимизацию трекинга значений в любом из компиляторов. С другой стороны, нет сохранения при загрузке каждого значения перед его использованием, как это сделано в RISC архитектуре. Процессор i486 может выполнять команды АЛУ типа регистр,память также быстро, как и последовательности команд загрузить/операция/запомнить. Например, для присваивания : память1 = память1 + память2 - можно использовать следующие последовательности команд, с варьированием общего количества тактов для процессоров 386 DX и SX, но одним и тем же количеством тактов для процессора i486 :

+--------------------------------------------------------------+| Команда | Такты ЦПУ 386(ТМ) DX | Такты ЦПУ i486(TM) |+------------------+----------------------+--------------------|| mov eax, память1 | 4 | 1 || mov ebx, память2 | 4 | 1 || add eax, ebx | 2 | 1 || mov память1, eax | 2 | 1 || | | || mov eax, память1 | 4 | 1 || add eax, память2 | 6 | 2 || mov память1, eax | 2 | 1 || | | || mov eax, память1 | 4 | 1 || add память2, eax | 7 | 3 |+--------------------------------------------------------------+

Команда MOVZX является другим примером, в котором процессор i486 может работать быстрее с использованием простых команд, если приемником является регистр, который в свою очередь может быть адресуем побайтно. Например, загрузка значения байта :

+----------------------------------------------------------------+| Команда | Такты ЦПУ 386(ТМ) DX | Такты ЦПУ i486(TM) |+--------------------+----------------------+--------------------|| movzx eax, память1 | 6 | 3+1 (префикс 0Fh) || xor eax, eax | 2 | 1 || movb al, память1 | 4 | 1 |+----------------------------------------------------------------+

Таким образом, для процессора i486, сначала очистка регистра и затем загрузка значения регистра может дать в качестве результата чистую экономию двух тактов (в зависимости от того, где такт декодирования префикса может быть перекрыт предыдущей командой, смотри Раздел G.8, посвященный Префиксным кодам операций), в то время как нет разницы в выполнении команд на процессоре 386 DX.



<== предыдущая лекция | следующая лекция ==>
G.4. Команда NOP | G.6. Коды условия


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.067 сек.