Концепция эпидемиологического перехода
- 1 year ago
- 0
- 0
Кома́нда перехо́да — команда процессора , которая нарушает непрерывную последовательность исполнения команд, вынуждая выбирать и исполнять последующие команды с произвольно заданного адреса . Используется для организации условных операторов, циклов, для связи с подпрограммами . Исполнение команды перехода в современных микропроцессорах чревато потерями производительности из-за простоев конвейера .
Если счётчик команд программно доступен в качестве регистра-приёмника результатов операций, любая команда модификации счётчика команд будет служить командой перехода.
Организация цикла задержки в процессоре ARM:
MOV R0, #0x10000
delay:
SUBS R0, R0, #1
BNE delay
Переход по вычисляемому адресу в процессоре ARM:
MOV PC, R0
Условный переход — команда программируемому вычислительному устройству на изменение порядка выполнения программы в соответствии с результатом проверки некоторого условия.
Наиболее часто условный переход имеет две стадии: на первой происходит сравнение между собой некоторых величин, определяющих условие перехода, на второй выполняется сам переход.
Необходимость корректной обработки условных переходов накладывает серьёзный отпечаток на логику работы современных конвейерных процессоров . Условные переходы могут выполняться двумя способами. Выполняемые условные переходы меняют значение счётчика команд процессора на вычисленное значение адреса перехода. Невыполняемые — прибавляют к значению счётчика команд число, равное длине текущей команды в байтах, для перехода к выполнению следующей команды. Неправильное определение типа условного перехода может приводить к возникновению существенных задержек в работе конвейера и, соответственно, к большой потере производительности компьютера .
#include <iostream>
int main()
{
int i;
std::cout<<"Введите целое число"<<std::endl;
std::cin>>i;
std::cout<<"Вы ввели ";
if (i >= 0) { // Проверка условия
// Действия производимые, если условие выполнено
std::cout<<"положительное ";
}
else {
// Действия производимые, если условие не выполнено
std::cout<<"отрицательное ";
}
std::cout<<"число"<<std::endl;
return 0;
}
Для улучшения этой статьи
желательно
:
|