Ask Computer Engineering Expert

Project - Cache Coherence

1. Project Description

On the surface cache coherence seems straightforward; all caches simply must see all operations on a piece of data in the same order. Implementation of coherence, however, is not so simple. In this project, you will be creating a simulator that maintains coherent caches for a 4,8, and 16 core CMP. You will be implementing the MSI, MESI, MOSI, MOESI, and MOESIF protocols for a bus-based broadcast system.

2. Simulator Specifications and More Details

The following list details the simulator specifications, and describes your assignment more information can be found by reading the source code:

  • The simulator is capable of simulating a 4, 8, and 16 core CMP system. Each core will consist of a memory trace reader. This trace reader will read in trace files provided to you. The trace reader code will be provided to you.
  • Each core in the CMP has one level of cache. The cache is fully associative, has infinite size, and has a single cycle lookup time. The base cache code is provided for you. You will only need to implement the protocol files needed to process requests at the cache (described later). The CMP has a single memory controller which can access the off chip memory. This memory controller is provided for you and will respond to any query (GETS or GETM) placed on the bus with data after a 100 cycle delay.
  • The bus modeled is an atomic bus. This means that once a query is placed on the bus, the bus will not allow any other requests onto the bus until a DATA response is seen. Caches request the bus using the bus request() function. If the bus is not available, it will place the request on an arbitration queue to be scheduled in the future. This is done on a first come first served basis, with node 0 having the highest priority and node N having the lowest priority.
  • Each processor (trace reader) will have up to one outstanding memory request at a time. The processor will send a request to the cache and will wait until the cache responds with a DATA msg. (This will be done using the send DATA to proc() command)
  • We have provided a full simulator framework in C++. This framework creates the simulator, reads in the traces, creates a basic cache structure, and creates the memory controller. All of this code is in the sim/ directory of the downloadable code. You should not need to change ANY code in the sim/ directory.
  • The protocols/ directory contain files you may need to modify. Most notably, you need to implement the protocol files. When a request comes from a processor to the cache, the cache finds the entry and then calls process cache request()in the protocol. It is in this function that you should look at the cache entry's state and decide what messages (if any) should be sent, and what state the cache should transition to. When a request is snooped on the bus, the cache finds the entry and then calls process snoop request() in the protocol. It is in this function that you should look at the cache entry's state and decided what messages (if any) should be sent, and what state the cache should transition to.
  • To help you in understanding the framework, the MI protocol is already completed and given to you. You MUST fill in the following files: MSI protocolf.h/.cppg, MESI protocolf.h/.cppg, MOSI protocolf.h/.cppg, MOESI protocolf.h/.cppg, MOESIF protocolf.h/.cppg.

NOTE: In order to interface properly with the Simulator, do not change any of the class names or delete any functions. You may however need to add additional functions, states, and/or messages in order to complete the assignment.

Simulator Assumptions -

Important Notes About Simulator Assumptions:

1. All requests that are not DATA (GETS and GETM) always expect to have someone reply with DATA. To ensure this, the memory will always respond 100 cycles after the request with DATA unless another cache places DATA on the bus first.

2. There are cases in the traditional protocol where there were certain messages that did not expect replies (e.g. Bus Upgrade). These types of messages are not supported by the bus and memory, so you cannot use them. Instead you should always send a query that expects a data response (e.g. GETS and GETM). This creates situations where the cache sending the GETS or GETM may be the one that should supply the data. In these cases, the cache should simply send DATA to itself on the bus. Given the difficulties in identifying your own GETS or GETM request, the validations assume that you only reply when you are already responsible for supplying the data.

3. In general, there is more than one way to implement each protocol. For this project, the reference implementations were made with simple logic and emphasizing cache to cache transfers, while running in minimal time. For example, contrary to the MESIF article in Wikipedia, the reference implementation will keep the F state at the same processor and not move it.

3. Framework Details

You should download the file labeled Project3.tar.gz to get the simulator source code. This framework uses C++. We will be compiling and running your submitted code using a recent version of gcc. You are only responsible for filling in the code in the files in the protocols/ directory.

Running the Simulator

From the root directory of the project, run the make command and then use the following command to run a trace:

./sim trace -t trace directory -p protocol

As an example, you can run:

./sim trace -t traces/4proc validation -p MI

Trace directory is the directory with the trace you want to run. A trace directory consists of a trace for each core in the machine and a con?g ?le that contains the number of cores for this trace. Each line in the trace directory denotes one memory access and includes the action (read or write) and the address.protocol is the protocol you want to run. The options are: MI, MSI, MESI, MOSI, MOESI, and MOESIF.

Validation: Inside of each trace directory you will find multiple text files for the validation runs of each protocol. You should perform experiments on all of the provided experiment traces.

Statistics -

We are concerned about the following statistics:

  • Final cache coherence state (Already output by framework)
  • Number of cycles to complete execution (Already output by framework)
  • Number of cache misses (This can be due to a cold miss or coherence)
  • Number of cache accesses (Already output by framework)
  • Number of silent upgrades for the MESI protocol
  • Number of Cache-to-cache transfers (This refers to the number of times data is not supplied by Memory)

4. Validation and Experiments

You must run your simulator and debug it until it completely matches all the statistics in the validation outputs posted on t-square. You will not get credit for your experiments until you do this.

Experiments

Compare each of the provided programs (experiment1, ... experiment8) using the various protocols you implemented (MI, MSI, MESI, MOSI, MOESI, MOESIF). Plot the execution time and using the statistics above (and any other information you deem necessary) explain why certain protocols perform better for certain traces.

5. What to Hand In

You must make a single tar.gz file names (your gt account login.tar.gz) (eg. gburdell3.tar.gz) that contains the following:

1. The design results of the experiments for each trace file, with a persuasive argument of the choices that were made in PDF format

2. The commented source code for the protocols added to the simulator program.

Assignment Files -

https://www.dropbox.com/s/szbkh90yj0f8kk6/Assignment%20Files.zip?dl=0

Computer Engineering, Engineering

  • Category:- Computer Engineering
  • Reference No.:- M92273982

Have any Question?


Related Questions in Computer Engineering

Does bmw have a guided missile corporate culture and

Does BMW have a guided missile corporate culture, and incubator corporate culture, a family corporate culture, or an Eiffel tower corporate culture?

Rebecca borrows 10000 at 18 compounded annually she pays

Rebecca borrows $10,000 at 18% compounded annually. She pays off the loan over a 5-year period with annual payments, starting at year 1. Each successive payment is $700 greater than the previous payment. (a) How much was ...

Jeff decides to start saving some money from this upcoming

Jeff decides to start saving some money from this upcoming month onwards. He decides to save only $500 at first, but each month he will increase the amount invested by $100. He will do it for 60 months (including the fir ...

Suppose you make 30 annual investments in a fund that pays

Suppose you make 30 annual investments in a fund that pays 6% compounded annually. If your first deposit is $7,500 and each successive deposit is 6% greater than the preceding deposit, how much will be in the fund immedi ...

Question -under what circumstances is it ethical if ever to

Question :- Under what circumstances is it ethical, if ever, to use consumer information in marketing research? Explain why you consider it ethical or unethical.

What are the differences between four types of economics

What are the differences between four types of economics evaluations and their differences with other two (budget impact analysis (BIA) and cost of illness (COI) studies)?

What type of economic system does norway have explain some

What type of economic system does Norway have? Explain some of the benefits of this system to the country and some of the drawbacks,

Among the who imf and wto which of these governmental

Among the WHO, IMF, and WTO, which of these governmental institutions do you feel has most profoundly shaped healthcare outcomes in low-income countries and why? Please support your reasons with examples and research/doc ...

A real estate developer will build two different types of

A real estate developer will build two different types of apartments in a residential area: one- bedroom apartments and two-bedroom apartments. In addition, the developer will build either a swimming pool or a tennis cou ...

Question what some of the reasons that evolutionary models

Question : What some of the reasons that evolutionary models are considered by many to be the best approach to software development. The response must be typed, single spaced, must be in times new roman font (size 12) an ...

  • 4,153,160 Questions Asked
  • 13,132 Experts
  • 2,558,936 Questions Answered

Ask Experts for help!!

Looking for Assignment Help?

Start excelling in your Courses, Get help with Assignment

Write us your full requirement for evaluation and you will receive response within 20 minutes turnaround time.

Ask Now Help with Problems, Get a Best Answer

Why might a bank avoid the use of interest rate swaps even

Why might a bank avoid the use of interest rate swaps, even when the institution is exposed to significant interest rate

Describe the difference between zero coupon bonds and

Describe the difference between zero coupon bonds and coupon bonds. Under what conditions will a coupon bond sell at a p

Compute the present value of an annuity of 880 per year

Compute the present value of an annuity of $ 880 per year for 16 years, given a discount rate of 6 percent per annum. As

Compute the present value of an 1150 payment made in ten

Compute the present value of an $1,150 payment made in ten years when the discount rate is 12 percent. (Do not round int

Compute the present value of an annuity of 699 per year

Compute the present value of an annuity of $ 699 per year for 19 years, given a discount rate of 6 percent per annum. As