Я делаю проект для моего модуля компьютерной архитектуры, и реализация проекта довольно расплывчата. Я просто не уверен, как реализовать алгоритм предсказания ветвлений в c ++
Это то, что я пытался сделать до сих пор:
int random(int& branchNum); //passed by reference to update the global variable when random function is called
int main()
{
//branch prediction
//global variable as per request from document
int myBranchNumber;
cout << "Enter a branch number from 0 to 100" << endl;
cin << myBranchNumber;
//10 different executable branches
if (myBranchNumber >= 90 && myBranchNumber <= 100) {
cout << "Scored an A+ of " << myBranchNumber << endl;
}
else if (myBranchNumber >= 80 && myBranchNumber >= 89) {
cout << "Scored an A- of " << myBranchNumber << endl;
}
else if (myBranchNumber >= 70 && myBranchNumber <= 79) {
cout << "Scored an B+ of " << myBranchNumber << endl;
}
else if (myBranchNumber >= 60 && myBranchNumber <= 69) {
cout << "Scored an B+ of " << myBranchNumber << endl;
}
else if (myBranchNumber >= 50 && myBranchNumber <= 59) {
cout << "Scored an D of " << myBranchNumber << endl;
}
else if (myBranchNumber >= 40 && myBranchNumber <= 49) {
cout << "Scored an E of " << myBranchNumber << endl;
}
else if (myBranchNumber >= 30 && myBranchNumber <= 39) {
cout << "Scored an F of " << myBranchNumber << endl;
}
else if (myBranchNumber >= 20 && myBranchNumber <= 29) {
cout << "Scored an G of " << myBranchNumber << endl;
}
else if (myBranchNumber >= 10 && myBranchNumber <= 19) {
cout << "Scored an H of " << myBranchNumber << endl;
}
else if (myBranchNumber >= 0 && myBranchNumber <= 9) {
cout << "Scored an I of " << myBranchNumber << endl;
}
//4 random numbers in a reasonable range and range selected is 0-100
random(myBranchNumber);
cout << "random number is : " << random(myBranchNumber) << endl;
cout << "my branch number is now:" << myBranchNumber;
//function keep track of time taken to complete N runs
return 0;
}
//function for randomising
int random(int& branchNum)
{
srand(time(NULL)); //srand is declared once only and we using randomising
branchNum = (rand() % 100) + 1;
return branchNum;
}
Вопрос:
Используя любой язык программирования высокого уровня по вашему выбору, разработайте программу для проверки работы метода «прогнозирования отрасли», который используется в компьютерной инженерии для повышения производительности. При разработке этой программы предлагается учитывать следующие возможности:
[1] Напишите основную программу, которая имеет как минимум десять различных исполняемых веток. Выполненная ветвь должна определяться значением глобальной переменной, скажем, myBranchNumber.
[2] Для десяти ветвей, предложенных в [1] выше, убедитесь, что они имеют сопоставимые вычисления.
[3] Помимо десяти ветвей в [1], основная программа должна содержать не менее тридцати (30) последовательно выполняемых инструкций.
[4] Напишите функцию, которая генерирует случайные числа в разумных пределах, и обновите глобальную переменную, как предложено в [1].
[5] Должна быть функция, которая отслеживает время, необходимое для выполнения N запусков программы. Эта функция должна хранить в файле запись предсказанных и выполненных ветвей, а также время для завершения N запусков.