Objective:
To simulate reading and writing to a custom-sized direct-mapped cache, involving a
custom-sized main memory.
Inputs:
The total size of accessible main memory (in words)
The total size of the cache (in words)
The block size (words/block)
A signal to read (0) or write (1) to the cache
The main memory address to read from/write to
The contents of the address for writing to the cache
Outputs:
The corresponding cache tag, block, and word for a main memory address
The contents of the address resulting from reading/writing to the cache
A message indicating either a hit or a miss to the cache
Specification:
The program simulates reading from and writing to a cache based on choosing from a
menu of choices, where each choice calls the appropriate procedure, where the choices
are:
1) Enter parameters
2) Access cache for reading/writing and transfer data
3) Quit program
Notes:
Use a structure (struct) to represent a cache line consisting of a tag (integer) and a
block (integer pointer). Define the cache to be a pointer to the struct.
Upon entering the parameters, the main memory and cache are to be dynamically
allocated based on their respective total sizes. Each word i of main memory is
initialized with the value M–i, where M is the size of main memory in words.
Reading/writing from/to a new block in the cache results in dynamically allocating
the block based on the block size.
Output:
Cache memory allocation and mapping:
------------------------------------
1) Enter parameters
2) Access cache for reading/writing and transfer data
3) Quit
Enter selection: 1
Enter main memory size (words): 65536
Enter cache size (words): 1024
Enter block size (words/block): 16
Cache memory allocation and mapping:
------------------------------------
1) Enter parameters
2) Access cache for reading/writing and transfer data
3) Quit
Enter selection: 2
Select read (0) or write (1): 1
Enter main memory address to write to: 65535
Enter value to write: 14
Write miss!
-----------------------------------------------------
| Tag: 63 | Block: 63 | Word: 15 (14) |
-----------------------------------------------------
Cache memory allocation and mapping:
------------------------------------
1) Enter parameters
2) Access cache for reading/writing and transfer data
3) Quit
Enter selection: 2
Select read (0) or write (1): 0
Enter main memory address to read from: 65535
Read hit!
-----------------------------------------------------
| Tag: 63 | Block: 63 | Word: 15 (14) |
-----------------------------------------------------
Cache memory allocation and mapping:
------------------------------------
1) Enter parameters
2) Access cache for reading/writing and transfer data
3) Quit
Enter selection: 2
Select read (0) or write (1): 1
Enter main memory address to write to: 65534
Enter value to write: 512
Write hit!
-----------------------------------------------------
| Tag: 63 | Block: 63 | Word: 14 (512) |
-----------------------------------------------------
Cache memory allocation and mapping:
------------------------------------
1) Enter parameters
2) Access cache for reading/writing and transfer data
3) Quit
Enter selection: 2
Select read (0) or write (1): 0
Enter main memory address to read from: 1023
Read miss!
-----------------------------------------------------
| Tag: 0 | Block: 63 | Word: 15 (64513) |
-----------------------------------------------------
Cache memory allocation and mapping:
------------------------------------
1) Enter parameters
2) Access cache for reading/writing and transfer data
3) Quit
Enter selection: 3
Hello. How are u.
I saw your description and attached files.
I understood it and can do it well.
I have done several project like this.
I'm an expert in Data Structures and Algorithms.
And I know Java ,C/C++,C# and Python well.
I'm interested this project.
I want to discuss with you about this project.
If it's possible,please contact me and explain more detail.
I wait your good reply.
Bye.