1answer.
Ask question
Login Signup
Ask question
All categories
  • English
  • Mathematics
  • Social Studies
  • Business
  • History
  • Health
  • Geography
  • Biology
  • Physics
  • Chemistry
  • Computers and Technology
  • Arts
  • World Languages
  • Spanish
  • French
  • German
  • Advanced Placement (AP)
  • SAT
  • Medicine
  • Law
  • Engineering
Roman55 [17]
3 years ago
5

Programs for embedded devices are often written in assembly language. Some embedded processors have limited instructions, like M

ARIE. Create a MARIE program which determines whether a given address is a cache hit or not. For this assignment, the cache is 2-way set associative, addresses are 8 bits, blocks are 8 bytes, and the cache has 8 blocks.
Requirements
1. The program must be written in MARIE.
2. The input is a hex address (2 hex digits), the output is 1 for a cache hit and 0 for a cache miss.
3. The cache table is
Set 0 1 5
Set 1 2 4
Set 2 3 2
Set 3 6 0
4. Unlike a real memory system, for this assignment, the cache table won’t change on a cache miss.
Hints: 1.
You have already written a multiply subroutine for MARIE. You could use a similar integer divide subroutine for this. It could return both a quotient and a remainder.
2. I recommend writing this in Java or C++ first to test your algorithm. Write the divide method using repeated subtraction as you will in MARIE.
3. The textbook describes the LoadI instruction, but the MARIE simulator does not recognize that. You can accomplish the same thing using Clear and AddI.
Upload: Your MARIE source file (.mas)
Sample Output
Input: B5, Output: 0
Input: A5, Output: 1
Input: 6C, Output: 0
Input: 7D, Output: 0
Input: 8B, Output: 1
Computers and Technology
1 answer:
oksano4ka [1.4K]3 years ago
4 0

Answer:

#include <iostream>

using namespace std;

int main()

{

   char address[2];

   int tag, firstBit, secondBit, setNumber;

   int cache[4][2]={{1,5}, {2,4}, {3,2}, {6,0}};

   cout << "Enter the address as hex(in small letters: "<

   cin >> address;

   for (int i < 0; i < 8; i++){

       if (address[0] == '0'){

           tag = 0;

           firstBit = 0;

        } else if (address[0] == '1'){

           tag = 0;

           firstBit = 1;

        } else if (address[0] == '2'){

           tag =1;

           firstBit = 0;

        } else if (address[0] == '3'){

           tag = 1;

           firstBit = 1;

        } else if (address[0] == '4'){

           tag = 2;

           firstBit = 0;

        } else if (address[0] == '5'){

           tag = 2;

           firstBit = 1;

        }  else if (address[0] == '6'){

           tag = 3;

           firstBit = 0;

       } else if (address[0] == '7'){

           tag = 3;

           firstBit = 1;

       }  else if (address[0] == '8'){

           tag = 4;

           firstBit = 0;

       } else if (address[0] == '9'){

           tag = 4;

           firstBit = 1;

       }   else if (address[0] == 'A'){

           tag = 5;

           firstBit = 0;

       } else if (address[0] == 'B'){

           tag = 5;

           firstBit = 1;

       }  else if (address[0] == 'C'){

           tag = 6;

           firstBit = 0;

       } else if (address[0] == 'D'){

           tag = 6;

           firstBit = 1;

        }  else if (address[0] == 'E'){

           tag = 7;

           firstBit = 0;

       } else if (address[0] == 'F'){

           tag = 7;

           firstBit = 1;

       } else{

           cout<<"The Hex number is not valid"<< endl;

        }

   }

   if(address[1]>='0' && address[1]<'8'){

       secondBit = 0;

  }  else if(address[1]=='8'|| address[1]=='9'||(address[1]>='a' && address[1]<='f')){

       secondBit = 1;

   }  else{

       cout<<"The Hex number is not valid"<< endl;  

       return 0;

   }

   setNumber = firstBit * 2 + secondBit;

   if(cache[setNumber][0]==tag || cache[setNumber][1]==tag){

       cout<<"There is a hit";

   } else{

       cout<< "There is a miss";

   }

   return 0;

}

Explanation:

The C++ source code prompts the user for an input for the address variable, then the nested if statement is used to assign the value of the firstBit value given the value in the first index in the address character array. Another if statement is used to assign the value for the secondBit and then the setNumber is calculated.

If the setNumber is equal to the tag bit, Then the hit message is printed but a miss message is printed if not.

You might be interested in
Its Inventiveness, uncertainty and futuristic ideas typically deals with science technology, what is it?
Margarita [4]

Answer:

It disrupt the established social contract, in the same way that invasive species do in natural ecosystems.

Explanation:

8 0
3 years ago
Read 2 more answers
What is one similarity between low-and high-level programming languages? (5 points)
aleksandr82 [10.1K]

Answer:

Both high and low level computer languages are used to communicate directly with a computer, so the answer is D.

Explanation:

5 0
3 years ago
toThePowerOf is a function that accepts two int parameters and returns the value of the first parameter raised to the power of t
zlopas [31]

Answer:

cubeVolume = toThePowerOf(cubeSide, 3);

Explanation:

The line above accomplishes the task of calling the function toThePowerOf(). We are told in the question that the method accepts two int parameters these integer parameters are given as cubeSide and 3. They are passed as arguments when the method is called. The result of the function's computation is then assigned/stored to the the variable cubeVolume.

4 0
3 years ago
Computer programs can be opened from where?
lions [1.4K]

Answer:

Desktop

Explanation:

Start button on windows:  Start allows you to access your computer programs and configure Microsoft Windows easily by accessing the Start menu.

Finder on macs:  the Finder is your gateway to all of the files, apps, and downloads on your Mac.

6 0
3 years ago
Read 2 more answers
You are a project manager for Laredo Pioneer's Traveling Rodeo Show. You're heading up a project to promote a new line of souven
Tamiku [17]

Answer:

A. These describe the authority level of workers, fair payment practices, communication channels, and the like.  

Explanation:

As seen in the question above, you have been asked to write the project management plan and know that you need to consider elements such as policies, rules, systems, relationships and standards in the organization. These elements are part of EEF's entry into this process, in addition they are fundamental and indispensable for the description not only of the organizational governance structure, but also describe the management elements that will be adopted and used.

However, there is no way to use them to describe the level of authority of workers, fair payment practices, communication channels and the like, as this is not the function of this.

8 0
3 years ago
Other questions:
  • How does the zone theory of optical systems resolve the apparent incompatibility of trichromacy and opponency?
    5·1 answer
  • Which is an unbound form with menu options for navigating a database?
    11·2 answers
  • How do I mirror cast my smart lg tv?​
    11·1 answer
  • Which of the following combines something you know, such as a password, with something you are (a biometric device such as a fin
    13·1 answer
  • Create an application for a library and name it FineForOverdueBooks. TheMain() method asks the user to input the number of books
    7·1 answer
  • I need help please?!!!
    8·2 answers
  • Scott is an aspiring software developer. During an interview for a new job, his prospective employer asks what kind of program h
    12·1 answer
  • PLEASE HELP ASAP!!
    11·1 answer
  • What is the setting an alarm clock output??
    10·1 answer
  • Submit your business presentation that clearly compares and contrasts three different cell phone service plans..
    14·2 answers
Add answer
Login
Not registered? Fast signup
Signup
Login Signup
Ask question!