Implement a program to simulate how a variety of caches

Assignment Help C/C++ Programming
Reference no: EM133018443

Assignment Cache simulator

Cache simulator
Acknowledgment: This assignment was originally developed by Peter Fröhlich for his version of CSF.

This problem focuses on simulating and evaluating caches. We'll give you a number of memory traces from real benchmark programs. You'll implement a program to simulate how a variety of caches perform on these traces. You'll then use your programs and the given traces to determine the best overall cache configuration.

Submission Part 1

For this submission, you must have started working on your code and have at least one submission uploaded to G radescope.

A good idea would be to make sure that parsing command-line options and reading traces works correctly.

Getting some of the core data structures and functions in place to do the actual cache simulation would also be a great idea, even if they're not fully implemented yet.

Submission Part 2

For this submission, you must have implemented your cache simulation for LRU.

Submission Part 3
All functions must be written with full assignment specifications met.

Programming Languages
You can use either C or C++ for this assignment. You're allowed to use the standard library of your chosen language as much as you would like to, but you are not allowed to use any additional (non-standard) libraries.

One advantage of choosing C++ is that you can use the built-in container data structures such as map , vector , etc. (Note however that it is entirely possible to create a straightforward and robust implementation of this program using dynamically-allocated arrays.) Regardless of which language you use, we highly encourage you to write modular, well-designed code, and to develop data types and functions to manage the complexity of the program. Strive for simplicity.

You must provide a makefile such that

make clean removes all object files and executables, and
make or compiles and links your program, producing an executable called

Your code should compile cleanly with gcc 7.x using the compiler flags. Important: your makefile must use these options. If your Makefile does not compile your code with these options, you will forfeit all of the points for design and coding style.

Part (a): Cache Simulator

You will design and implement a cache simulator that can be used to study and compare the effectiveness of various cache configurations. Your simulator will read a memory access trace from standard input, simulate what a cache based on certain parameters would do in response to these memory access patterns, and finally produce some summary statistics to standard output. Let's start with the file format of the memory access traces:

s 0x1fffff50 1
l 0x1fffff58 1
l 0x1fffff88 6
l 0x1fffff90 2
l 0x1fffff98 2
l 0x200000e0 2
l 0x200000e8 2
l 0x200000f0 2
l 0x200000f8 2
l 0x30031f10 3
s 0x3004d960 0
s 0x3004d968 1
s 0x3004caa0 1
s 0x3004d970 1
s 0x3004d980 6
l 0x30000008 1
l 0x1fffff58 4
l 0x3004d978 4
l 0x1fffff68 4
l 0x1fffff68 2
s 0x3004d980 9
l 0x30000008 1

As you can see, each memory access performed by a program is recorded on a separate line. There are three "fields" separated by white space. The first field is either or depending on whether the processor is "loading" from or "storing" to memory. The second field is a 32-bit memory address given in hexadecimal; the at the beginning means "the following is hexadecimal" and is not itself part of the address. You can ignore the third field for this assignment.

Note that you should assume that each load or store in the trace accesses at most 4 bytes of data, and that no load or store accesses data which spans multiple cache blocks (a.k.a. "lines".)

Your cache simulator will be configured with the following cache design parameters which are given as command-line arguments (see below):

number of sets in the cache (a positive power-of-2)

number of blocks in each set (a positive power-of-2)
number of bytes in each block (a positive power-of-2, at least 4)
write-allocate or
or write-back
lru (least-recently-used) or fifo evictions

Note that certain combinations of these design parameters account for direct-mapped, set-associative, and fully associative caches:

a cache with n sets of 1 block each is direct-mapped
a cache with n sets of m blocks each is m-way set-associative

a cache with 1 set of n blocks is fully associative

The smallest cache you must be able to simulate has 1 set with 1 block with 4 bytes; this cache can only
remember a single 4-byte memory reference and nothing else; it can therefore only be beneficial if consecutive memory references in a trace go to the exact same address. You should probably use this tiny cache for basic sanity testing.

A few reminders about the other three parameters: The write-allocate parameter determines what happens for a
cache miss during a store:

for write-allocate we bring the relevant memory block into the cache before the store proceeds
for a cache miss during a store does not modify the cache

Note that this parameter interacts with the following one. The write-through parameter determines whether a store always writes to memory immediately or not:

for write through a store writes to the cache as well as to memory

for write-back a store writes to the cache only and marks the block dirty; if the block is evicted later, it has to be written back to memory before being replaced

It doesn't make sense to combine actually write to the cache for the store!

with

because we wouldn't be able to

The last parameter is only relevant for associative caches: in direct-mapped caches there is no choice for which block to evict!

for lru (least-recently-used) we evict the block that has not been accessed the longest for fifo (first-in-first-out) we evict the block that has been in the cache the longest

Your cache simulator should assume that loads/stores from/to the cache take one processor cycle; loads/stores from/to memory take 100 processor cycles for each 4-byte quantity that is transferred. There are plenty of things about caches in real processors that you do not have to simulate, for example write buffers or smart ways to fill cache blocks; implementing all the options above correctly is already somewhat challenging, so we'll leave it at that.

We expect to be able to run your simulator as follows:

./csim 256 4 16 write-allocate write-back lru < sometracefile

This would simulate a cache with 256 sets of 4 blocks each (aka a 4-way set-associative cache), with each block containing 16 bytes of memory; the cache performs write-allocate but no write-through (so it does write-back instead), and it evicts the least-recently-used block if it has to. (As an aside, note that this cache has a total size of 16384 bytes (16 kB) if we ignore the space needed for tags and other meta-information.)

After the simulation is complete, your cache simulator is expected to print the following summary information in exactly the format given below:

Total loads: count Total stores: count Load hits: count
Load misses: count
Store hits: count
Store misses: count
Total cycles: count

The count value is simply an occurrence count. As a concrete example, here is an example invocation of the program on one of the example traces, gcc.trace :

./csim 256 4 16 write-allocate write-back fifo < gcc.trace

This invocation should produce the following output:

Total loads: 318197
Total stores: 197486
Load hits: 314171
Load misses: 4026
Store hits: 188047
Store misses: 9439
Total cycles: 9845283

Note that due to slight variations in how you might reasonably interpret the simulator specification, your value could be slightly different, but should be fairly close. For all of the other counts, your simulator's output should exactly match the output above.

We strongly encourage you to use Campuswire to post traces and simulator results, so that you can compare your results with other students' results.

Reporting invalid cache parameters

Before starting the simulation, your simulator should check to make sure that the simulation parameters are reasonable. Examples of invalid configuration parameters include (but are not limited to):

block size is not a power of 2 number of sets is not a power of 2 block size is less than 4
and were both specified

If the configuration parameters are invalid, the program should

1. Print an error message to
2. Exit with a non-zero exit code

Part (b): Best cache, contributions

For part (b), you'll use the memory traces as well as your simulator to determine which cache configuration has the best overall effectiveness. You should take a variety of properties into account: hit rates, miss penalties, total cache size (including overhead), etc. In your README.txt , describe in detail what experiments you ran (and why!), what results you got (and how!), and what, in your opinion, is the best cache configuration of them all.

Finally, you will write a brief summary of how you divided up the work between partners and what each person contributed. This section is not required if you worked alone.

Attachment:- Assignment Cache simulator.rar

Reference no: EM133018443

Questions Cloud

Describe business model canvas of bbva : Can you describe business model canvas of BBVA
Tax-deferred reserves of catastrophe insurance : (1) What are the positive and negative impacts on Tax-deferred reserves of Catastrophe insurance?
Propose a redesign of service : Select a service at school, such as financial aid, library, curriculum advising, and so on. Propose a redesign of this service and its service-delivery system.
Efficiency of submitting an online grant application : Create twenty (20) annotated bibliography on the efficiency of submitting an online grant application.
Implement a program to simulate how a variety of caches : Implement a program to simulate how a variety of caches perform on these traces. You'll then use your programs and the given traces
Propose control measures for the three hazards : -Identify and describe three potential hazards in your home, office, a nearby grocery shop, a hardware store, or any other workplace you are familiar with.
Identify and describe three potential hazards in home : -Identify and describe three potential hazards in your home, office, a nearby grocery shop, a hardware store, or any other workplace you are familiar with.
Organising and preparing food : What are three tasks you might complete when organising and preparing food?
Describe the stakeholders : As a health informatics consultant, you have been asked to research clinical decision support (CDS) tools for a local health organization. With the Advancing Ca

Reviews

Write a Review

C/C++ Programming Questions & Answers

  Compute the number of words

Rewrite your C++ program in Project 1 to compute the number of words, average length and lengths of the words in the text file words.txt - the input file

  Discuss the common components of class apple

Discuss inheritance from class Apple for other closely related derived classes; and Discuss the common components of class Apple.

  Complete an ipo chart for the given problem

Program should display the projected sales for each berry type. Complete an IPO chart for this problem. Desk-check algorithm twice, using your own sets of data.

  SIT771 Object Oriented Development Assignment

SIT771 Object Oriented Development Assignment Help and Solution, Deakin University - Assessment Writing Service - Concept Visualisation

  Review a phonebook program

Add a command ‘d' for delete to delete an entry corresponding to a name typed by the user. Add a command "u" to allow a user to update (edit) one or more of the fields in the phonebook

  Write table_avg function to find the average of an array.

Write table_print function to print out a table of size. Print output on one line.table_print(array, size);

  Weeks of discussions and assignments

For this Discussion, please reflect on your past seven weeks of Discussions and Assignments. Then, consider the organization you work for, or one that you would wish to work for.

  Create a program that takes in a positive integer number

Create a program that takes in a positive integer number from the user and searches for the number with the highest sum of divisors from the 1 to the user imputed number

  Generate optimal solution for symmetric tsp

Write a program for improved nearest neighbour algorithm to generate optimal solution for Symmetric TSP in terms - Total number of possible paths

  Explain understanding about the basic programming concepts

STRUCTURED PROGRAMMING IN C-NATIONAL COUNCIL FOR HIGHER EDUCATION-Explain the key differences between the various programming languages

  Extend the definition of the class clocktype by overloading

a. Extend the definition of the class clockType by overloading the post-increment operator function as a member of the class clockType

  Write a c program to read from a file called input

Write a C program to read from a file called "input.txt" information about 5 workers. Each line of input would contain two values respectively, an employee ID and the employee's monthly salary.

Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd