From c0221fe8b80b2cf54dec79399982c0b1d6447f1b Mon Sep 17 00:00:00 2001 From: GOPIKRISHNA44 Date: Sun, 23 Oct 2022 16:51:51 -0500 Subject: [PATCH 01/29] c --- .vscode/settings.json | 6 + cachesim.c | 5 +- cachesim.exe | Bin 0 -> 43409 bytes trace.stream_10 | 10 ++ trace.stream_10.txt | 10 ++ work.c | 263 ++++++++++++++++++++++++++++++++++++++++++ work.exe | Bin 0 -> 57198 bytes 7 files changed, 293 insertions(+), 1 deletion(-) create mode 100644 .vscode/settings.json create mode 100644 cachesim.exe create mode 100644 trace.stream_10 create mode 100644 trace.stream_10.txt create mode 100644 work.c create mode 100644 work.exe diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..064c150 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "files.associations": { + "cachesim.h": "c", + "cstdlib": "c" + } +} \ No newline at end of file diff --git a/cachesim.c b/cachesim.c index da1c0c6..25f1957 100644 --- a/cachesim.c +++ b/cachesim.c @@ -14,6 +14,7 @@ int main(int argc, char *argv[]) { + printf("Hi"); if (argc != 3) { printf("Usage: %s \n", argv[0]); return 1; @@ -48,11 +49,13 @@ int main(int argc, char *argv[]) /* Opening the memory trace file */ fp = fopen(trace_file_name, "r"); - if (strncmp(argv[1], "direct", 6)==0) { /* Simulating direct-mapped cache */ + if (strncmp(argv[1], "direct", 6)==0) { + /* Simulating direct-mapped cache */ /* Read the memory request address and access the cache */ while (fgets(mem_request, 20, fp)!= NULL) { address = convert_address(mem_request); direct_mapped_cache_access(&d_cache, address); + // printf("Looping"); } /*Print out the results*/ printf("\n==================================\n"); diff --git a/cachesim.exe b/cachesim.exe new file mode 100644 index 0000000000000000000000000000000000000000..68db14d6021b6647edbcf00eb69280c1f5182d73 GIT binary patch literal 43409 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 +#include +#include +#include +#include +char *trace_file_name; + +uint64_t convert_address(char memory_addr[]) +/* Converts the physical 32-bit address in the trace file to the "binary" \\ + * (a uint64 that can have bitwise operations on it) */ +{ + uint64_t binary = 0; + int i = 0; + + while (memory_addr[i] != '\n') + { + if (memory_addr[i] <= '9' && memory_addr[i] >= '0') + { + binary = (binary * 16) + (memory_addr[i] - '0'); + } + else + { + if (memory_addr[i] == 'a' || memory_addr[i] == 'A') + { + binary = (binary * 16) + 10; + } + if (memory_addr[i] == 'b' || memory_addr[i] == 'B') + { + binary = (binary * 16) + 11; + } + if (memory_addr[i] == 'c' || memory_addr[i] == 'C') + { + binary = (binary * 16) + 12; + } + if (memory_addr[i] == 'd' || memory_addr[i] == 'D') + { + binary = (binary * 16) + 13; + } + if (memory_addr[i] == 'e' || memory_addr[i] == 'E') + { + binary = (binary * 16) + 14; + } + if (memory_addr[i] == 'f' || memory_addr[i] == 'F') + { + binary = (binary * 16) + 15; + } + } + i++; + } + +#ifdef DBG + printf("%s converted to %llu\n", memory_addr, binary); +#endif + return binary; +} + +void readFileAndDoCacheHitOrMiss(int totalNumberOfBlocks, int nway, int blockSize) +{ + // Every thing is ready , just call the file and do the hit + int numberOfSets = totalNumberOfBlocks / nway; + struct direct_mapped_cache + { + unsigned valid_field[totalNumberOfBlocks]; /* Valid field */ + unsigned dirty_field[totalNumberOfBlocks]; /* Dirty field; since we don't distinguish writes and \\ + reads in this project yet, this field doesn't really matter */ + uint64_t tag_field[totalNumberOfBlocks]; /* Tag field */ + int hits; /* Hit count */ + int misses; /* Miss count */ + }; + struct direct_mapped_cache d_cache; + /* Initialization */ + for (int i = 0; i < totalNumberOfBlocks; i++) + { + d_cache.valid_field[i] = 0; + d_cache.dirty_field[i] = 0; + d_cache.tag_field[i] = 0; + } + d_cache.hits = 0; + d_cache.misses = 0; + + char mem_request[20]; + FILE *fp; + fp = fopen(trace_file_name, "r"); + uint64_t address; + + printf("%s IS THE FILENAME", trace_file_name); + while (fgets(mem_request, 20, fp) != NULL) + { + // printf("%s", mem_request); + address = convert_address(mem_request); + uint64_t block_addr = address >> (unsigned)log2(blockSize); + int setNumber = block_addr % numberOfSets; + uint64_t tag = block_addr >> (unsigned)log2(numberOfSets); + int startIndex = ((int)setNumber) * nway; + + int endIndex = startIndex + nway - 1; + + int hitMade = 0; + int isAnySpaceEmpty = 0; + // printf("nway is %d, The total nu,ber of blocks is %d, the number of sets are : %d,\n this address goes to setnumber : %d WITH start index : %d, end index %d", + // nway,totalNumberOfBlocks,numberOfSets,setNumber,startIndex,endIndex); + // printf("\n This is for address %s , start index %d, endIndex index %d\n", mem_request, startIndex, startIndex + nway - 1); + int nwayTemp = nway; + int loopIndex = startIndex; + int i = 0; + // printf("Coming the tag %d \n",tag); + for (int j = startIndex; j <= endIndex; j++) + { + // printf("\n\n\n **** At Index: %d Valid Field %d TagField %d",j,d_cache.valid_field[j],d_cache.tag_field[j]); + } + // printf("*********************"); + while (nwayTemp > 0) + { + i++; + // printf("%d ***********", loopIndex); + if (d_cache.valid_field[loopIndex] && d_cache.tag_field[loopIndex] == tag) + { /* Cache hit */ + d_cache.hits += 1; + hitMade = 1; + break; + } + if (d_cache.valid_field[loopIndex] == 0) + { + isAnySpaceEmpty = 1; + } + + loopIndex += 1; + nwayTemp--; + } + + if (hitMade == 0) + { + // printf("Hit was zero for the index %d", hitMade); + d_cache.misses += 1; + if (isAnySpaceEmpty > 0) + { + // printf("Going on empty"); + nwayTemp = nway; + loopIndex = startIndex; + while (nwayTemp > 0) + { + if (d_cache.valid_field[loopIndex] == 0) + { + // printf("\nInserting at the index : %d ", loopIndex); + d_cache.valid_field[loopIndex] = 1; + d_cache.tag_field[loopIndex] = tag; + break; + } + + loopIndex += 1; + nwayTemp--; + } + } + else + { + // pick a random index and replace + + int randomIndex = (rand() % (endIndex - startIndex + 1)) + startIndex; + // printf("Picking a rand variable %d",randomIndex); + d_cache.valid_field[randomIndex] = 1; + d_cache.tag_field[randomIndex] = tag; + } + } + } + printf("\n\n\n==================================\n"); + printf("Cache type:n-Mapped Cache\n with no of rows: %d, number of sets: %d", totalNumberOfBlocks, numberOfSets); + printf("==================================\n"); + printf("Cache Hits: %d\n", d_cache.hits); + printf("Cache Misses: %d\n", d_cache.misses); + printf("Cache HIT Rate : %0.9f\n", ((float)d_cache.hits / (float)(d_cache.hits + d_cache.misses))); + printf("Cache MISS Rate : %0.9f\n", ((float)d_cache.misses / (float)(d_cache.hits + d_cache.misses))); + printf("\n"); + fclose(fp); +} + +void startProcess(int cacheSize, int totalNumberOfBlocks, int nway, int blockSize) +{ + printf("The below output is for cache with %dKB and %d bytes and %d way associative ", cacheSize, blockSize, nway); + readFileAndDoCacheHitOrMiss(totalNumberOfBlocks, nway, blockSize); +} + +void performNwayAssociativeMappingforPart1() +{ + // printf("jhh"); + long cacheSize = 32 * 1024; + int totalNumberOfBlocks = 0; + // For blockSize of 16 bytes + printf("\n\n******* STARTING A NEW ONE 16 cache line\n\n********"); + totalNumberOfBlocks = (int)cacheSize / 16; + startProcess(32, totalNumberOfBlocks, 8, 16); + startProcess(32, totalNumberOfBlocks, 4, 16); + startProcess(32, totalNumberOfBlocks, 2, 16); + startProcess(32, totalNumberOfBlocks, totalNumberOfBlocks, 16); + printf("\n\n******* STARTING A NEW ONE 32 cache line\n\n********"); + totalNumberOfBlocks = (int)cacheSize / 32; + startProcess(32, totalNumberOfBlocks, 8, 32); + startProcess(32, totalNumberOfBlocks, 4, 32); + startProcess(32, totalNumberOfBlocks, 2, 32); + startProcess(32, totalNumberOfBlocks, totalNumberOfBlocks, 32); + printf("\n\n******* STARTING A NEW ONE for 128 cache line\n\n********"); + totalNumberOfBlocks = (int)cacheSize / 128; + startProcess(32, totalNumberOfBlocks, 8, 128); + startProcess(32, totalNumberOfBlocks, 4, 128); + startProcess(32, totalNumberOfBlocks, 2, 128); + startProcess(32, totalNumberOfBlocks, totalNumberOfBlocks, 128); + + // For blockSize of 32 bytes + + // For blockSize of 128bytes +} +void performNwayAssociativeMappingforPart2() +{ + // printf("jhh"); + long cacheSize = 16 * 1024; + int totalNumberOfBlocks = 0; + totalNumberOfBlocks = (int)cacheSize / 64; + printf("\n\n******* STARTING A NEW ONE WITH 16kb cache size and 64 line size/block size \n\n********"); + startProcess(16, totalNumberOfBlocks, 8, 64); + startProcess(16, totalNumberOfBlocks, 4, 64); + startProcess(16, totalNumberOfBlocks, 2, 64); + startProcess(16, totalNumberOfBlocks, totalNumberOfBlocks, 64); + printf("\n\n******* STARTING A NEW ONE WITH 32kb cache size and 64 line size/block size \n\n********"); + cacheSize = 32 * 1024; + totalNumberOfBlocks = (int)cacheSize / 64; + startProcess(32, totalNumberOfBlocks, 8, 64); + startProcess(32, totalNumberOfBlocks, 4, 64); + startProcess(32, totalNumberOfBlocks, 2, 64); + startProcess(32, totalNumberOfBlocks, totalNumberOfBlocks, 64); + printf("\n\n******* STARTING A NEW ONE WITH 64kb cache size and 64 line size/block size \n\n********"); + cacheSize = 64 * 1024; + startProcess(64, totalNumberOfBlocks, 8, 64); + startProcess(64, totalNumberOfBlocks, 4, 64); + startProcess(64, totalNumberOfBlocks, 2, 64); + startProcess(64, totalNumberOfBlocks, totalNumberOfBlocks, 64); +} + +int main(int argc, char *argv[]) +{ + trace_file_name = argv[2]; + int switchCase = 0; + printf("Press 0 for fully associative or 1 the nway associative"); + scanf("%d", &switchCase); + switch (switchCase) + { + case 0: + /* code */ + break; + + default: + performNwayAssociativeMappingforPart1(); + printf("######################NEW ONE ###############################"); + performNwayAssociativeMappingforPart2(); + break; + } +} \ No newline at end of file diff --git a/work.exe b/work.exe new file mode 100644 index 0000000000000000000000000000000000000000..b7a40052c06a595ea9e60d676420aada96a17795 GIT binary patch literal 57198 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%0Ak%DnVm7L1UOA4WMlP+R^}t?eBZp=&ze6Kp@l} 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 literal 0 HcmV?d00001 From f3e0fc5894844f946392715289be0ef821675301 Mon Sep 17 00:00:00 2001 From: GOPIKRISHNA44 Date: Sun, 23 Oct 2022 17:05:28 -0500 Subject: [PATCH 02/29] c --- .vscode/settings.json | 3 ++- work.c | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 064c150..24c6130 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,7 @@ { "files.associations": { "cachesim.h": "c", - "cstdlib": "c" + "cstdlib": "c", + "math.h": "c" } } \ No newline at end of file diff --git a/work.c b/work.c index 8a95304..d71e153 100644 --- a/work.c +++ b/work.c @@ -11,6 +11,7 @@ #include #include #include + char *trace_file_name; uint64_t convert_address(char memory_addr[]) From c6def89f352b2b034d61303b38f7897277705165 Mon Sep 17 00:00:00 2001 From: GOPIKRISHNA44 Date: Sun, 23 Oct 2022 17:08:32 -0500 Subject: [PATCH 03/29] c --- cachesim.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cachesim.c b/cachesim.c index 25f1957..3eabddf 100644 --- a/cachesim.c +++ b/cachesim.c @@ -112,7 +112,7 @@ uint64_t convert_address(char memory_addr[]) void direct_mapped_cache_access(struct direct_mapped_cache *cache, uint64_t address) { - uint64_t block_addr = address >> (unsigned)log2(BLOCK_SIZE); + uint64_t block_addr = address >> log2(BLOCK_SIZE); uint64_t index = block_addr % NUM_BLOCKS; uint64_t tag = block_addr >> (unsigned)log2(NUM_BLOCKS); From bc12bcd0a3b9127888e3b816310f7daa0d1943b4 Mon Sep 17 00:00:00 2001 From: GOPIKRISHNA44 Date: Thu, 27 Oct 2022 12:25:36 -0500 Subject: [PATCH 04/29] part3 --- cachesim.c | 2 +- p3.exe | Bin 0 -> 45178 bytes part3.c | 287 ++++++++++++++++++++++++++++++++++++++++++++ trace.stream_10 | 10 -- trace.stream_10.txt | 10 -- 5 files changed, 288 insertions(+), 21 deletions(-) create mode 100644 p3.exe create mode 100644 part3.c delete mode 100644 trace.stream_10 delete mode 100644 trace.stream_10.txt diff --git a/cachesim.c b/cachesim.c index 3eabddf..25f1957 100644 --- a/cachesim.c +++ b/cachesim.c @@ -112,7 +112,7 @@ uint64_t convert_address(char memory_addr[]) void direct_mapped_cache_access(struct direct_mapped_cache *cache, uint64_t address) { - uint64_t block_addr = address >> log2(BLOCK_SIZE); + uint64_t block_addr = address >> (unsigned)log2(BLOCK_SIZE); uint64_t index = block_addr % NUM_BLOCKS; uint64_t tag = block_addr >> (unsigned)log2(NUM_BLOCKS); diff --git a/p3.exe b/p3.exe new file mode 100644 index 0000000000000000000000000000000000000000..6ae73f892a125c2af72fb28d0c8b8ce0d47bdd3a GIT binary patch literal 45178 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 +#include +#include +#include +#include + +char *trace_file_name; + +struct L1Cache +{ + unsigned valid_field[1024]; + unsigned dirty_field[1024]; + uint64_t tag_field[1024]; + char data_field[1024][64]; + int hits; + int misses; +}; + +struct L2Cache +{ + unsigned valid_field[16384]; + unsigned dirty_field[16384]; + uint64_t tag_field[16384]; + char data_field[16384][64]; + int hits; + int misses; +}; + +uint64_t convert_address(char memory_addr[]) +/* Converts the physical 32-bit address in the trace file to the "binary" \\ + * (a uint64 that can have bitwise operations on it) */ +{ + uint64_t binary = 0; + int i = 0; + + while (memory_addr[i] != '\n') + { + if (memory_addr[i] <= '9' && memory_addr[i] >= '0') + { + binary = (binary * 16) + (memory_addr[i] - '0'); + } + else + { + if (memory_addr[i] == 'a' || memory_addr[i] == 'A') + { + binary = (binary * 16) + 10; + } + if (memory_addr[i] == 'b' || memory_addr[i] == 'B') + { + binary = (binary * 16) + 11; + } + if (memory_addr[i] == 'c' || memory_addr[i] == 'C') + { + binary = (binary * 16) + 12; + } + if (memory_addr[i] == 'd' || memory_addr[i] == 'D') + { + binary = (binary * 16) + 13; + } + if (memory_addr[i] == 'e' || memory_addr[i] == 'E') + { + binary = (binary * 16) + 14; + } + if (memory_addr[i] == 'f' || memory_addr[i] == 'F') + { + binary = (binary * 16) + 15; + } + } + i++; + } + +#ifdef DBG + printf("%s converted to %llu\n", memory_addr, binary); +#endif + return binary; +} + + +int isDataExistsInCacheL1(uint64_t address, int nway, struct L1Cache *l1) +{ + uint64_t block_addr = address >> (unsigned)log2(64); + int setNumber = block_addr % 512; + uint64_t tag = block_addr >> (unsigned)log2(512); + int startIndex = ((int)setNumber) * nway; + int nwayTemp = nway; + int loopIndex = startIndex; + while (nwayTemp > 0) + { + if (l1->valid_field[loopIndex] && l1->tag_field[loopIndex] == tag) + { + return 1; + } + loopIndex += 1; + nwayTemp--; + } + return 0; +} +int isDataExistsInCacheL2(uint64_t address, int nway, struct L1Cache *l2) +{ + uint64_t block_addr = address >> (unsigned)log2(64); + int setNumber = block_addr % 2048; + uint64_t tag = block_addr >> (unsigned)log2(2048); + int startIndex = ((int)setNumber) * nway; + int nwayTemp = nway; + int loopIndex = startIndex; + while (nwayTemp > 0) + { + if (l2->valid_field[loopIndex] && l2->tag_field[loopIndex] == tag) + { + return 1; + } + loopIndex += 1; + nwayTemp--; + } + return 0; +} +void insertDataInL1Cache(uint64_t address, int nway, struct L1Cache *l1) +{ + uint64_t block_addr = address >> (unsigned)log2(64); + int setNumber = block_addr % 512; + uint64_t tag = block_addr >> (unsigned)log2(512); + int startIndex = ((int)setNumber) * nway; + int nwayTemp = nway; + int loopIndex = startIndex; + int isAnySpaceEmpty = 0; + int endIndex = startIndex + nway - 1; + while (nwayTemp > 0) + { + if (l1->valid_field[loopIndex] == 0) + { + isAnySpaceEmpty = 1; + } + loopIndex++; + nwayTemp--; + } + if (isAnySpaceEmpty > 0) + { + nwayTemp = nway; + loopIndex = startIndex; + while (nwayTemp > 0) + { + if (l1->valid_field[loopIndex] == 0) + { + l1->valid_field[loopIndex] = 1; + l1->tag_field[loopIndex] = tag; + break; + } + + loopIndex += 1; + nwayTemp--; + } + } + else + { + int randomIndex = (rand() % (endIndex - startIndex + 1)) + startIndex; + // printf("Picking a rand variable %d",randomIndex); + l1->valid_field[randomIndex] = 1; + l1->tag_field[randomIndex] = tag; + } +} +void insertDataInL2Cache(uint64_t address, int nway, struct L1Cache *l2) +{ + + uint64_t block_addr = address >> (unsigned)log2(64); + int setNumber = block_addr % 2048; + uint64_t tag = block_addr >> (unsigned)log2(2048); + int startIndex = ((int)setNumber) * nway; + int nwayTemp = nway; + int loopIndex = startIndex; + int isAnySpaceEmpty = 0; + int endIndex = startIndex + nway - 1; + while (nwayTemp > 0) + { + if (l2->valid_field[loopIndex] == 0) + { + isAnySpaceEmpty = 1; + } + loopIndex++; + nwayTemp--; + } + if (isAnySpaceEmpty > 0) + { + nwayTemp = nway; + loopIndex = startIndex; + while (nwayTemp > 0) + { + if (l2->valid_field[loopIndex] == 0) + { + l2->valid_field[loopIndex] = 1; + l2->tag_field[loopIndex] = tag; + break; + } + + loopIndex += 1; + nwayTemp--; + } + } + else + { + int randomIndex = (rand() % (endIndex - startIndex + 1)) + startIndex; + // printf("Picking a rand variable %d",randomIndex); + l2->valid_field[randomIndex] = 1; + l2->tag_field[randomIndex] = tag; + } +} + + +int main(int argc, char *argv[]) +{ + FILE *fp; + trace_file_name = argv[2]; + char mem_request[20]; + uint64_t address; + struct L1Cache l1; + struct L2Cache l2; + int numberOfBlocksinl1 = 1024; + int numberOfBocksinl2 = 16384; + int l1nway = 2; + int l2nway = 8; + int numberOfSetsl1 = 512; + int numberOfSetsl2 = 2048; + for (int i = 0; i < numberOfBlocksinl1; i++) + { + l1.valid_field[i] = 0; + l1.dirty_field[i] = 0; + l1.tag_field[i] = 0; + } + for (int i = 0; i < numberOfBocksinl2; i++) + { + l2.valid_field[i] = 0; + l2.dirty_field[i] = 0; + l2.tag_field[i] = 0; + } + + l1.hits = 0; + l1.misses = 0; + l2.hits = 0; + l2.misses = 0; + + fp = fopen(trace_file_name, "r"); + + if (strncmp(argv[1], "direct", 6) == 0) + { + while (fgets(mem_request, 20, fp) != NULL) + { + address = convert_address(mem_request); + int dataInL1 = isDataExistsInCacheL1(address,l1nway,&l1); + if(dataInL1==1) + { + l1.hits++; + l2.hits++; + } + else + { + l1.misses++; + int dataInL2 = isDataExistsInCacheL2(address,l2nway,&l2); + if(dataInL2) + { + l2.hits+=1; + + } + else + { + l2.misses++; + insertDataInL2Cache(address,l2nway,&l2); + } + insertDataInL1Cache(address,l1nway,&l1); + } + } + printf("\n==================================\n"); + printf("Cache type: Direct-Mapped Cache for l1\n"); + printf("==================================\n"); + printf("Cache Hits: %d\n", l1.hits); + printf("Cache Misses: %d\n", l1.misses); + printf("\n"); + printf("\n==================================\n"); + printf("Cache type: Direct-Mapped Cache for l2\n"); + printf("==================================\n"); + printf("Cache Hits: %d\n", l2.hits); + printf("Cache Misses: %d\n", l2.misses); + printf("\n"); + } + + fclose(fp); + + return 0; +} \ No newline at end of file diff --git a/trace.stream_10 b/trace.stream_10 deleted file mode 100644 index c6e7483..0000000 --- a/trace.stream_10 +++ /dev/null @@ -1,10 +0,0 @@ -0000af40 -00000000 -00001000 -00002000 -00003000 -00004000 -00005000 -00006000 -00007000 -00008000 diff --git a/trace.stream_10.txt b/trace.stream_10.txt deleted file mode 100644 index c6e7483..0000000 --- a/trace.stream_10.txt +++ /dev/null @@ -1,10 +0,0 @@ -0000af40 -00000000 -00001000 -00002000 -00003000 -00004000 -00005000 -00006000 -00007000 -00008000 From 2ab21fcdb0bf020453859d62081e5ed0e39e19cf Mon Sep 17 00:00:00 2001 From: GOPIKRISHNA44 Date: Thu, 27 Oct 2022 12:43:30 -0500 Subject: [PATCH 05/29] c --- p3.exe | Bin 45178 -> 45178 bytes part3.c | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/p3.exe b/p3.exe index 6ae73f892a125c2af72fb28d0c8b8ce0d47bdd3a..a3d99af64a611953887bc60ec61af16c4ecda636 100644 GIT binary patch delta 47 zcmezMfa%u*rU@O)zYj%C?Dl1L`OUELb}tvB!{$tGCniRR$!mB+f#hi($<5My@rwWj CR1)X_ delta 49 zcmV-10M7sV-~#&K0+5IUe~?*`i%kQHPyw;qjS7>p3PrQ63;qFsJ8 diff --git a/part3.c b/part3.c index c50e2a4..89e5595 100644 --- a/part3.c +++ b/part3.c @@ -95,7 +95,7 @@ int isDataExistsInCacheL1(uint64_t address, int nway, struct L1Cache *l1) } return 0; } -int isDataExistsInCacheL2(uint64_t address, int nway, struct L1Cache *l2) +int isDataExistsInCacheL2(uint64_t address, int nway, struct L2Cache *l2) { uint64_t block_addr = address >> (unsigned)log2(64); int setNumber = block_addr % 2048; @@ -158,7 +158,7 @@ void insertDataInL1Cache(uint64_t address, int nway, struct L1Cache *l1) l1->tag_field[randomIndex] = tag; } } -void insertDataInL2Cache(uint64_t address, int nway, struct L1Cache *l2) +void insertDataInL2Cache(uint64_t address, int nway, struct L2Cache *l2) { uint64_t block_addr = address >> (unsigned)log2(64); From 7cc2fc8537b314223260dfbfda4f8cb88a6ac911 Mon Sep 17 00:00:00 2001 From: GOPIKRISHNA44 Date: Fri, 28 Oct 2022 17:05:37 -0500 Subject: [PATCH 06/29] c --- cachesim.c | 4 +- work.c => part2.c | 251 +++++++++++++++++++++++++++++++++++----------- part2.exe | Bin 0 -> 56686 bytes work.exe | Bin 57198 -> 57198 bytes 4 files changed, 195 insertions(+), 60 deletions(-) rename work.c => part2.c (51%) create mode 100644 part2.exe diff --git a/cachesim.c b/cachesim.c index 25f1957..f52c474 100644 --- a/cachesim.c +++ b/cachesim.c @@ -63,7 +63,9 @@ int main(int argc, char *argv[]) printf("==================================\n"); printf("Cache Hits: %d\n", d_cache.hits); printf("Cache Misses: %d\n", d_cache.misses); - printf("\n"); + printf("Cache Hit Rate: %f\n", (float)d_cache.hits / ((float)d_cache.hits + (float)d_cache.misses)); + printf("Cache Hit Rate: %f\n", (float)d_cache.misses / ((float)d_cache.hits + (float)d_cache.misses)); + } fclose(fp); diff --git a/work.c b/part2.c similarity index 51% rename from work.c rename to part2.c index d71e153..ad8b3e8 100644 --- a/work.c +++ b/part2.c @@ -92,7 +92,7 @@ void readFileAndDoCacheHitOrMiss(int totalNumberOfBlocks, int nway, int blockSiz fp = fopen(trace_file_name, "r"); uint64_t address; - printf("%s IS THE FILENAME", trace_file_name); + // printf("%s IS THE FILENAME", trace_file_name); while (fgets(mem_request, 20, fp) != NULL) { // printf("%s", mem_request); @@ -106,9 +106,6 @@ void readFileAndDoCacheHitOrMiss(int totalNumberOfBlocks, int nway, int blockSiz int hitMade = 0; int isAnySpaceEmpty = 0; - // printf("nway is %d, The total nu,ber of blocks is %d, the number of sets are : %d,\n this address goes to setnumber : %d WITH start index : %d, end index %d", - // nway,totalNumberOfBlocks,numberOfSets,setNumber,startIndex,endIndex); - // printf("\n This is for address %s , start index %d, endIndex index %d\n", mem_request, startIndex, startIndex + nway - 1); int nwayTemp = nway; int loopIndex = startIndex; int i = 0; @@ -171,8 +168,8 @@ void readFileAndDoCacheHitOrMiss(int totalNumberOfBlocks, int nway, int blockSiz } } } - printf("\n\n\n==================================\n"); - printf("Cache type:n-Mapped Cache\n with no of rows: %d, number of sets: %d", totalNumberOfBlocks, numberOfSets); + // printf("\n\n\n==================================\n"); + // printf("Cache type:n-Mapped Cache\n with no of rows: %d, number of sets: %d", totalNumberOfBlocks, numberOfSets); printf("==================================\n"); printf("Cache Hits: %d\n", d_cache.hits); printf("Cache Misses: %d\n", d_cache.misses); @@ -184,80 +181,216 @@ void readFileAndDoCacheHitOrMiss(int totalNumberOfBlocks, int nway, int blockSiz void startProcess(int cacheSize, int totalNumberOfBlocks, int nway, int blockSize) { - printf("The below output is for cache with %dKB and %d bytes and %d way associative ", cacheSize, blockSize, nway); + // printf("The below output is for cache with %dKB and %d bytes and %d way associative ", cacheSize, blockSize, nway); readFileAndDoCacheHitOrMiss(totalNumberOfBlocks, nway, blockSize); } void performNwayAssociativeMappingforPart1() { - // printf("jhh"); - long cacheSize = 32 * 1024; + int continueSelect = 0; + do + { + long cacheSize = 32 * 1024; int totalNumberOfBlocks = 0; - // For blockSize of 16 bytes - printf("\n\n******* STARTING A NEW ONE 16 cache line\n\n********"); - totalNumberOfBlocks = (int)cacheSize / 16; - startProcess(32, totalNumberOfBlocks, 8, 16); - startProcess(32, totalNumberOfBlocks, 4, 16); - startProcess(32, totalNumberOfBlocks, 2, 16); - startProcess(32, totalNumberOfBlocks, totalNumberOfBlocks, 16); - printf("\n\n******* STARTING A NEW ONE 32 cache line\n\n********"); - totalNumberOfBlocks = (int)cacheSize / 32; - startProcess(32, totalNumberOfBlocks, 8, 32); - startProcess(32, totalNumberOfBlocks, 4, 32); - startProcess(32, totalNumberOfBlocks, 2, 32); - startProcess(32, totalNumberOfBlocks, totalNumberOfBlocks, 32); - printf("\n\n******* STARTING A NEW ONE for 128 cache line\n\n********"); - totalNumberOfBlocks = (int)cacheSize / 128; - startProcess(32, totalNumberOfBlocks, 8, 128); - startProcess(32, totalNumberOfBlocks, 4, 128); - startProcess(32, totalNumberOfBlocks, 2, 128); - startProcess(32, totalNumberOfBlocks, totalNumberOfBlocks, 128); - - // For blockSize of 32 bytes - - // For blockSize of 128bytes + int ca = 0; + printf("For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : \n"); + scanf("%d", &ca); + int selection = 0; + printf("Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: "); + scanf("%d", &selection); + switch (ca) + { + case 1: + printf("\n\n******* STARTING EXECUTION FOR 16 BYTES cache line size\n\n********"); + totalNumberOfBlocks = (int)cacheSize / 16; + switch (selection) + { + case 8: + startProcess(32, totalNumberOfBlocks, 8, 16); + break; + case 4: + startProcess(32, totalNumberOfBlocks, 4, 16); + break; + case 2: + startProcess(32, totalNumberOfBlocks, 2, 16); + break; + case 1: + startProcess(32, totalNumberOfBlocks, totalNumberOfBlocks, 16); + break; + default: + break; + } + + break; + case 2: + printf("\n\n******* STARTING EXECUTION FOR 32 BYTES cache line size\n\n********"); + totalNumberOfBlocks = (int)cacheSize / 32; + switch (selection) + { + case 8: + startProcess(32, totalNumberOfBlocks, 8, 32); + break; + case 4: + startProcess(32, totalNumberOfBlocks, 4, 32); + break; + case 2: + startProcess(32, totalNumberOfBlocks, 2, 32); + break; + case 1: + startProcess(32, totalNumberOfBlocks, totalNumberOfBlocks, 32); + break; + default: + break; + } + + break; + case 3: + printf("\n\n******* STARTING EXECUTION FOR 128 BYTES cache line size\n\n********"); + switch (selection) + { + case 8: + startProcess(32, totalNumberOfBlocks, 8, 128); + break; + case 4: + startProcess(32, totalNumberOfBlocks, 4, 128); + break; + case 2: + startProcess(32, totalNumberOfBlocks, 2, 128); + break; + case 1: + startProcess(32, totalNumberOfBlocks, totalNumberOfBlocks, 1628); + break; + default: + break; + } + + break; + } + printf("===========XXXX EXECUTION ENDED XXXX ==========\n"); + + + + printf("Select 1 to continue the test cases, any other to exit: "); + scanf("%d",&continueSelect); + } while (continueSelect==1); + + + } void performNwayAssociativeMappingforPart2() { - // printf("jhh"); - long cacheSize = 16 * 1024; + + int continueSelect = 0; + do + { + long cacheSize = 16 * 1024; int totalNumberOfBlocks = 0; - totalNumberOfBlocks = (int)cacheSize / 64; - printf("\n\n******* STARTING A NEW ONE WITH 16kb cache size and 64 line size/block size \n\n********"); - startProcess(16, totalNumberOfBlocks, 8, 64); - startProcess(16, totalNumberOfBlocks, 4, 64); - startProcess(16, totalNumberOfBlocks, 2, 64); - startProcess(16, totalNumberOfBlocks, totalNumberOfBlocks, 64); - printf("\n\n******* STARTING A NEW ONE WITH 32kb cache size and 64 line size/block size \n\n********"); - cacheSize = 32 * 1024; - totalNumberOfBlocks = (int)cacheSize / 64; - startProcess(32, totalNumberOfBlocks, 8, 64); - startProcess(32, totalNumberOfBlocks, 4, 64); - startProcess(32, totalNumberOfBlocks, 2, 64); - startProcess(32, totalNumberOfBlocks, totalNumberOfBlocks, 64); - printf("\n\n******* STARTING A NEW ONE WITH 64kb cache size and 64 line size/block size \n\n********"); - cacheSize = 64 * 1024; - startProcess(64, totalNumberOfBlocks, 8, 64); - startProcess(64, totalNumberOfBlocks, 4, 64); - startProcess(64, totalNumberOfBlocks, 2, 64); - startProcess(64, totalNumberOfBlocks, totalNumberOfBlocks, 64); + int ca = 0; + printf("For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize \n \n"); + scanf("%d", &ca); + int selection; + printf("Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: "); + scanf("%d", &selection); + switch (ca) + switch (ca) + { + case 1: + totalNumberOfBlocks = (int)cacheSize / 64; + printf("\n\n******* STARTING EXECUTION OF 16kb cache size and 64 cache line size/block size \n\n********"); + switch (selection) + { + case 8: + startProcess(16, totalNumberOfBlocks, 8, 64); + break; + case 4: + startProcess(16, totalNumberOfBlocks, 4, 64); + break; + case 2: + startProcess(16, totalNumberOfBlocks, 2, 64); + break; + case 1: + startProcess(16, totalNumberOfBlocks, totalNumberOfBlocks, 64); + break; + + default: + break; + } + + break; + case 2: + printf("\n\n******* STARTING EXECUTION OF 32kb cache size and 64 cache line size/block size \n\n********"); + cacheSize = 32 * 1024; + totalNumberOfBlocks = (int)cacheSize / 64; + switch (selection) + { + case 8: + startProcess(32, totalNumberOfBlocks, 8, 64); + break; + case 4: + startProcess(32, totalNumberOfBlocks, 4, 64); + break; + case 2: + startProcess(32, totalNumberOfBlocks, 2, 64); + break; + case 1: + startProcess(32, totalNumberOfBlocks, totalNumberOfBlocks, 64); + break; + + default: + break; + } + break; + case 3: + printf("\n\n******* STARTING EXECUTION OF 64kb cache size and 64 cache line size/block size \n\n********"); + cacheSize = 64 * 1024; + totalNumberOfBlocks = (int)cacheSize / 64; + switch (selection) + { + case 8: + startProcess(64, totalNumberOfBlocks, 8, 64); + break; + case 4: + startProcess(64, totalNumberOfBlocks, 4, 64); + break; + case 2: + startProcess(64, totalNumberOfBlocks, 2, 64); + break; + case 1: + startProcess(64, totalNumberOfBlocks, totalNumberOfBlocks, 64); + break; + + default: + break; + } + break; + + default: + break; + } + + + printf("Select 1 to continue the test cases, any other to exit: "); + scanf("%d",&continueSelect); + } while (continueSelect==1); + + + } int main(int argc, char *argv[]) { trace_file_name = argv[2]; int switchCase = 0; - printf("Press 0 for fully associative or 1 the nway associative"); + printf("Select 1 to execute part1 or 2 to part2 :"); scanf("%d", &switchCase); + switch (switchCase) { - case 0: - /* code */ + case 1: + performNwayAssociativeMappingforPart1(); break; - default: - performNwayAssociativeMappingforPart1(); - printf("######################NEW ONE ###############################"); + case 2: performNwayAssociativeMappingforPart2(); break; } diff --git a/part2.exe b/part2.exe new file mode 100644 index 0000000000000000000000000000000000000000..f15cbd09fff5c8286a5ba39bb8736e1f5c7bc7a9 GIT binary patch literal 56686 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 literal 0 HcmV?d00001 diff --git a/work.exe b/work.exe index b7a40052c06a595ea9e60d676420aada96a17795..4ebe4aed4a625a640aad9372bede085c1656b727 100644 GIT binary patch delta 3345 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 delta 3230 zcmZuz3s6&68ouY`NeL#BpaCL;Bv=K+Py+<*u0aGH6^KHut`8CsRuoN&vFfZ-u}E7= zec1a3@=xF7CSO7VX{t1QVA|?@V&f`M&Re zo=5V-SJDO17?hq*;40z znLc)-7)`zV!KpA(?HG`UOoeuZRXKnuR%PzLli76_V|~iYLM{`chHpnXrqM)>t87P7yU<(ZwpTrpisV7PuOdbYSwSlaFC29km{sOkDW2o*0 zARm}g7&wZXxGwFNKqqfo$&ta)r2g*3zV~E8W>%)%^3BvB~j<>4r<0h+ksQ2!K=&9}6+?n2 zrt*$QA!rWx<`2k*$7t9ei-z|f3PQyN?UIh9I}d18$BqnAt*Ny04G|s@eO$;JqckK= zu@Z&t*zCHc0SouU*xeKA{aUM3iqpaM< zW+9t!c4`ZQx|Q3{B6NzWt25*k&xo=z1HDvqD7Fo`;cRqPxCi6n0^&Kw;vQgeJ~3m* z=_hHKVcEA87xYV(7j#rT*>M_M!2H1qeJ!!^qL{^$_9gPmji1O!E&m|yKQh%Jbm$4G z8uVs7!q!O-!QdNL$sss1Wjkqs8J0NG3TrK9(#jvS$X<(l+J%cV{NN51Y}iWnurVKF z`+|f}oMBc1XX7{rKiYO!#A{}@ldbl$qV?H>wn4Eyg;?N#J)UfWZo7+ior0g|=4SBf#;8C6tO~dlzi5=4O zCzEn`CqI(xg&p~M#KGUoHwMYD$6Pt~dGzvslNz&>7dsS`HYPymiWEtIf{jau`SoLY zvu!`wvr;8%MC5jY4Vv~vL)yMzK7Hj;osykH?RZ>=U}ca*w3HtzR}$Kvz$@N=qQW>g(#0=p$5xJ(|xHsTjQy6?-zkq%$s)^A^1!M-qu&5!6nBk8NM*Qw* zFw$NP)HWE{OK~iV_J@J0H7c$X-KfU+{TCDr$8-b`e?*k;KejryH$Y$v?jagG#`=x@ z(sGDDK9t%Uz?pI^Ze0id01ubJ5G&iv;eNz#>xN~Gvo!q?KgVmsp{+5CJ{Ik1Y7TD1 zW)D{%2iw}i;aKxbh-h}x?{x4<^N(~u0)s~*p`cj?U-Kr~uk)4Nuj3!{GYEag*oYdl z7#5zGK+RE%#0DKcF^kqlv6e{tFtbKBG|=ySh;|T>!Kk0-)E5P-TMe;}L_fjGl8ZRb zKG~1>%Q8b#t1-A1R}E=gHFZr)m^1>%jgx)J;VbH7R&Yx|AVtB}codkE{l1v@HxU_3 z`F|uE5gY!^dDYkgM0Srr%9zy%qyiDW)oeUzkk29LVlwSZ z1KY(~;)Z({jkM1S(oPHBc+)!ZSfzoZ(?Z*=@M))kdeh*W&ecQ@v6mL(HM;eZQPURi z%(5^AVLziFxAiADs$<{ Date: Fri, 28 Oct 2022 17:07:48 -0500 Subject: [PATCH 07/29] c --- cachesim.c | 2 +- cachesim.exe | Bin 43409 -> 43322 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/cachesim.c b/cachesim.c index f52c474..9708ce3 100644 --- a/cachesim.c +++ b/cachesim.c @@ -64,7 +64,7 @@ int main(int argc, char *argv[]) printf("Cache Hits: %d\n", d_cache.hits); printf("Cache Misses: %d\n", d_cache.misses); printf("Cache Hit Rate: %f\n", (float)d_cache.hits / ((float)d_cache.hits + (float)d_cache.misses)); - printf("Cache Hit Rate: %f\n", (float)d_cache.misses / ((float)d_cache.hits + (float)d_cache.misses)); + printf("Cache Miss Rate: %f\n", (float)d_cache.misses / ((float)d_cache.hits + (float)d_cache.misses)); } diff --git a/cachesim.exe b/cachesim.exe index 68db14d6021b6647edbcf00eb69280c1f5182d73..9f8af02752febd934b1cc8bde4e345d84c3cade1 100644 GIT binary patch delta 7209 zcmchbdt4J|y2s}o5{LqVa;+jn5)e>stspAWk&Bm#O1*SZ(SQh*T?E8pT3cxsC4%ny=~C;qTD8aRX*Di*YCmf|c6-{K-&WRh5@GQC+4 z`kKd#qNZ9E`UTM!PY@+85i&{`J+ zz~T)r5Os|tG<4`QO`}gYOTr-^u8^%&n6mu2o;lvB;$TUf?U%DW&P-s|Kj35vvU~8i ze&>&{U*ETSmige)J}UE!98v}aW0=!9=iTUP0JM2l4z4nGb^CzEI_W9;tyePJNf*6Fu~qbqSJk)>hyBIQ zrY6KhA5RyyqKn7S;aH1x@lboLl{|%?s75u?@Ku~3oaVi|8z5qUa(qmZ%2=<>hf#OE zwg3e`dS{p%jqdDvi34X-DZuD|W){0%ceW*)>(@EVS#7)BrwtJ|w;@1+)XFd0gJrkc zYxZvMLWYRJ)8I3>8d)N%g*0PGgyG9r0gJ+~Aq7r)(;Kt3`BgTbV74#*p-^;rTms~$vtKwrFCkeRM_97SSD`=zMUMLv^Yonua zi(jZk9e#K}cnIit6aiN|Fz=HS2XnksrX6-YTN~y!?r%Dc?9DIFe)+@A0=wT>?qFo> zJbS!>I{#}A68CT|#@%s@!%*|oq2GuU;~T-=G0*fp!$$AL%B@Rde)Z=u9(-IRltv$| zaZZPI4ypZ4VH^0|Z;ANh_vWYk|D8?jk)Z#hO+TjLy57eY_`1E_%ho->SmcEx;<^Vm zTb(6zX=n2FUeVaun8i$i4L#;LBa#?%d)qpa2oEDS34^o`O^1w51rKl$`P)@fKnsPh@l0@X)VeH;`%c1>U;u z*HFt_zL(HC)5Fn4zxt1W&Tws0ma6U%^J~ar7>iDy+8-^nJY@P4HxL&c34@wo?fuDS zvn%tfABMz-a>MG&br$u~<+@JeL+5UE#zJCfD?3VuLie#_Bt3D7g_?awT9mAqE=QEI z8#GD1MpUgZx2bnA-s8ym?2oi7auv&<|BO^KUvsF&D6-e+VALuWN8ZtS6R%;TG|j+< zr4KRXw3{SFU8jQIMrS$qXy{n?ttsbLcg`gwFBqYa)6TCRqCL@3Y#E)7-oYkQ*4W8> zzQ@+1?h*6)@S!UtLGNq4Z_WD7X6yDGx`K|!>=J((O4DMeh-ht&O%1IXg3++q*4;5p zSK&rd*IE40)w^YMDR!Js4z@F6CtsprE65`*Rt#T332}+M(8Yzb_h@rmJX=F;aj|TM z`Lnp687ri}jjv?)DJT8_i>5pAtMcNN+=umL6m^e0j2`-A>qyjV)4b6YeTdbUUq}=6 zXRIEmbqm4hVDBHS4;8$@cZ}Wx*1PtG$Qv#6*Z2@Nm)=V#_r3^R_h^LvvUMIMB<8dK zplyj=>~or%6v+^U0yKeoMpSSJn1akoaIqx+3GC!Im;F@Keam} z-PzjdEVtXs(k90ro>I&1Zn$i-Ig_yA=#V7jh^HzJ^O^}-=8LWfSo=0X5` z$yr6kt4h=}%k=8`Mf#G-Y8+9eLj?z(Q?_=koJ$ergh@xl6X_BQU&h@{8>VUyGkujF zi^cOk3j2FXI&jhNX!+D=G2~6!IyFOi<4v1wKb_4Apc_*qQTsN9XJoJkv@9b;^l78@ z8Ij7gHk&Psj;BXZdxlCJ-$q>-;bK7>-OiYdTW`$M<5&yLd3p*vO~$8Zh{8K``RNR? z@EsZfv^mJ32Cu)yT!n7yF!eg{zS}MChuS^>!`W&aOX%%9DnNl;K z6SeQsuFUCT`n&X5W}H~~E{RzQtb>xX5?KuuWi4g(^kLR7l;h9YY=5O?*`sJewidw` zXU`KuJL#?LOyqMfTLY8fIpgqJH#H|w3_MR2IU~iG^Ry#pKG@Bi#DtZ<5d{7QxUUI= z;ygBiZ3jC#fQ7y+2rbRcV}cDadjvs(j!)sT8f3*;c=B*X%_3i$`blLR3gk^sqt zEP<3m_^}D)R%d+=%7c&-kaLh8$XAd)$U}(OA_&7;1cMNaN+e`FBo&egc?Pl&vK+Ds zQU%!vse$Z(v_M)RZ$VB%+96$#%a9w8+mQQ^e?b)JzCVN?gF9>Zf9>ty&hlRVpZC@r zJCj7}dZvt$Xa8tU%Duu!%|gAT2uZjfE}4hV{U>Wq@-!>*d_++lWgapAXXd4jl7wfX zBs#8-ph_qi*cDsDNg>n1v^*tUejlO;1 z*8v}T3V5EX?OP+}7`xkRWO#9uaw2x&k+lEC=h=hiF+s}Pn2TH*^U@5lbqLMf63JSr z@g;X2!aRm_7H?I zv}R)v9p0?POU=d2W>FnPn++$JA0^jll(|7rr2{n~R8@0}<xR?Gx)IEuy6ZGdLA^Nti~Q;}c(y-<^KJSC&Nt{KoG;V<`d_h=g+p39P4*ytof`^b$wz5cHq)oYkz%r7$P(k{w6AYPyR4)utO?_M^ zb^IU_`8Y{wALJ+aah=p*s(wTt?i?kG3d-FUi3iEGof^Ca(>Bf0bC@|<;wk$E`91Nt zPU^wONlMEgt37mYn?`J5l)62VmDA$w8n%RfjWb@|aZaG~IET~S?HbY3gN7L+**_@R zs9{%W5zZER0q2wSI?e~_EY2jxo`x5*CHLC+UN7 zilJ9vkPWJ$Q~JadO#4k<%G12< zywz0nXHyfNo=Y**SIB_#G2D8i=%bw~O4~MqJ*3KQ8bgmO2fkdjXyrO{5CxsCxMX9Q zUU-x^@NP(lj@l8|x#!ITu|V+eBo(Nhbot?)4Ini#t7ec3)YzyoRLS_Cz;DD$C(x=xmbtzXQ@CBM(6YnP(Aeu|TF13X-IiDNO{bktxju$)g3kG=_~bZUhg- zg!4Ja)Z=&^WR*)trz@$huBa65%Tn)vPOB{9H4ypm-2>r2P#m7|4A@w%D;5;={jS~k zhSIQGQ?S={mB)P_kD5Z4PhHhI{aVnCvbYza(|>0z;!d|A(oP+cW+w-3Z0NuqGhOdF~y`n);9@BwQ7B@5NX z)o|dY-M-*9RF~;XgjQLM>(J?uS=|M>FC#yI;FHCGVe?UOzmn54ua7bS-IBSE;!4QY z5uPhe0ZEf}Xf{Za%xV$HLRWa*>XOyPRWAtJWjeovPK;~txaak%NtiZN+*50Ul6>|3 z9%Plw(Mgb2il+!e7i#?Ag=4BOquL}(_U|A*vat6-_;&$r;jsD%#9wCRgWu2FT|}p^ zEU(;9QZ2diu-^sr7t%yM0nHw}X1}+wAWbe!1QC)cphYul8h902Sk}(Cb3oKGvKWLP zd=WTuD+5VG%Wbue3@t$c$6VQQ{cX^?L2tH1#I~U3&PP{TSyfVj*8^8Ry5gep^2%at zcHg!{7!En(xu^RS$OG3@a^Dt^jk0Ke<5oz|ZDj>1cUkGGOYA|aTv53nPkeUhbLnsr zxCH1lD%fG1-Hid^Ew}5bApD|xk>rA;%N%h(M`bClq&vUS7%IREU7EVJWzSa>l?#Qg zwD3A>AB?>&f>^?KSPk6si_0t5mIxg(otL3=%;lL|9RcBoJM(J>puMuRz5}@`GqZtM zWv++fqdva}-HtRM{$TD^kz&`82Iyph@MnzMD$jc{%w!|C+-^2dsSyOL-#+?|1-BRE ziYrB3(Td7yyy5rAQanOMzttGdK=YPM6HbH+AT2U-6GV+G{W0(x79?AyV*|nWcjpr4 z+iFGe>Z+Nth#~mAGgCH{6H=;IuJb_jGO~^)?bR4|fdda1ts@}(aF5@6 zAfdA1>jLRts*b_>1mvnL(d!_OWD)OzsQIrBcz0MmGyw6#y{5f=AK&;!gB*1^(v?16 z!k?q3Wx>Wlhac{wXMoIfS@CO22I*A$;zxIwt7m+`%dtu1$y{%N*p%(dSzY>h6WtEw)m(3c7|vV@|bqi`k7dzK0!e^}&$ zti(>~9@h#G9*f@^j=|psvVhN`dr9sA@&|F>Uk5?bWZ~ODBv*=17XA!kb&;#)w_i1S KnX?Yg_4;quoM&VJ delta 7163 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 From 4013bcb4e91f726d9e63d94270c42249b3295b24 Mon Sep 17 00:00:00 2001 From: GOPIKRISHNA44 Date: Fri, 28 Oct 2022 17:27:26 -0500 Subject: [PATCH 08/29] c --- cachesim.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cachesim.c b/cachesim.c index 9708ce3..9a4708d 100644 --- a/cachesim.c +++ b/cachesim.c @@ -14,7 +14,7 @@ int main(int argc, char *argv[]) { - printf("Hi"); + if (argc != 3) { printf("Usage: %s \n", argv[0]); return 1; From 6d61541212f2513ca45d01bc01aff35940e7648c Mon Sep 17 00:00:00 2001 From: GOPIKRISHNA44 Date: Fri, 28 Oct 2022 17:33:40 -0500 Subject: [PATCH 09/29] c --- cachesim.c | 4 ++-- part2.c | 4 ++-- part3.c | 27 ++++++++++++++------------- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/cachesim.c b/cachesim.c index 9a4708d..e63ab7b 100644 --- a/cachesim.c +++ b/cachesim.c @@ -63,8 +63,8 @@ int main(int argc, char *argv[]) printf("==================================\n"); printf("Cache Hits: %d\n", d_cache.hits); printf("Cache Misses: %d\n", d_cache.misses); - printf("Cache Hit Rate: %f\n", (float)d_cache.hits / ((float)d_cache.hits + (float)d_cache.misses)); - printf("Cache Miss Rate: %f\n", (float)d_cache.misses / ((float)d_cache.hits + (float)d_cache.misses)); + printf("Cache Hit Rate: %f%%\n", ((float)d_cache.hits / ((float)d_cache.hits + (float)d_cache.misses)) *100); + printf("Cache Miss Rate: %f%%\n", ((float)d_cache.misses / ((float)d_cache.hits + (float)d_cache.misses))*100); } diff --git a/part2.c b/part2.c index ad8b3e8..1ae966a 100644 --- a/part2.c +++ b/part2.c @@ -173,8 +173,8 @@ void readFileAndDoCacheHitOrMiss(int totalNumberOfBlocks, int nway, int blockSiz printf("==================================\n"); printf("Cache Hits: %d\n", d_cache.hits); printf("Cache Misses: %d\n", d_cache.misses); - printf("Cache HIT Rate : %0.9f\n", ((float)d_cache.hits / (float)(d_cache.hits + d_cache.misses))); - printf("Cache MISS Rate : %0.9f\n", ((float)d_cache.misses / (float)(d_cache.hits + d_cache.misses))); + printf("Cache Hit Rate : %0.9f%%\n", ((float)d_cache.hits / (float)(d_cache.hits + d_cache.misses))*100); + printf("Cache Miss Rate : %0.9f%%\n", ((float)d_cache.misses / (float)(d_cache.hits + d_cache.misses))*100); printf("\n"); fclose(fp); } diff --git a/part3.c b/part3.c index 89e5595..b11646d 100644 --- a/part3.c +++ b/part3.c @@ -75,7 +75,6 @@ uint64_t convert_address(char memory_addr[]) return binary; } - int isDataExistsInCacheL1(uint64_t address, int nway, struct L1Cache *l1) { uint64_t block_addr = address >> (unsigned)log2(64); @@ -204,7 +203,6 @@ void insertDataInL2Cache(uint64_t address, int nway, struct L2Cache *l2) } } - int main(int argc, char *argv[]) { FILE *fp; @@ -244,8 +242,8 @@ int main(int argc, char *argv[]) while (fgets(mem_request, 20, fp) != NULL) { address = convert_address(mem_request); - int dataInL1 = isDataExistsInCacheL1(address,l1nway,&l1); - if(dataInL1==1) + int dataInL1 = isDataExistsInCacheL1(address, l1nway, &l1); + if (dataInL1 == 1) { l1.hits++; l2.hits++; @@ -253,31 +251,34 @@ int main(int argc, char *argv[]) else { l1.misses++; - int dataInL2 = isDataExistsInCacheL2(address,l2nway,&l2); - if(dataInL2) + int dataInL2 = isDataExistsInCacheL2(address, l2nway, &l2); + if (dataInL2) { - l2.hits+=1; - + l2.hits += 1; } else { l2.misses++; - insertDataInL2Cache(address,l2nway,&l2); + insertDataInL2Cache(address, l2nway, &l2); } - insertDataInL1Cache(address,l1nway,&l1); + insertDataInL1Cache(address, l1nway, &l1); } } printf("\n==================================\n"); - printf("Cache type: Direct-Mapped Cache for l1\n"); + printf("Cache type: l1\n"); printf("==================================\n"); printf("Cache Hits: %d\n", l1.hits); printf("Cache Misses: %d\n", l1.misses); + printf("Cache Hit Rate : %0.9f%%\n", ((float)l1.hits / (float)(l1.hits + l1.misses)) * 100); + printf("Cache Miss Rate : %0.9f%%\n", ((float)l1.misses / (float)(l1.hits + l1.misses)) * 100); printf("\n"); - printf("\n==================================\n"); - printf("Cache type: Direct-Mapped Cache for l2\n"); + printf("\n==================================\n"); + printf("Cache type: l2\n"); printf("==================================\n"); printf("Cache Hits: %d\n", l2.hits); printf("Cache Misses: %d\n", l2.misses); + printf("Cache Hit Rate : %0.9f%%\n", ((float)l2.hits / (float)(l2.hits + l2.misses)) * 100); + printf("Cache Miss Rate : %0.9f%%\n", ((float)l2.misses / (float)(l2.hits + l2.misses)) * 100); printf("\n"); } From 263e5a7712184d27c2c64944194b75541f430d36 Mon Sep 17 00:00:00 2001 From: GOPIKRISHNA44 Date: Fri, 28 Oct 2022 17:39:46 -0500 Subject: [PATCH 10/29] c --- part2.c | 8 ++++---- part2.exe | Bin 56686 -> 57710 bytes 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/part2.c b/part2.c index 1ae966a..e8d4c92 100644 --- a/part2.c +++ b/part2.c @@ -291,12 +291,12 @@ void performNwayAssociativeMappingforPart2() int selection; printf("Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: "); scanf("%d", &selection); - switch (ca) + switch (ca) { case 1: totalNumberOfBlocks = (int)cacheSize / 64; - printf("\n\n******* STARTING EXECUTION OF 16kb cache size and 64 cache line size/block size \n\n********"); + printf("\n\n******* STARTING EXECUTION OF 16kb cache size and 64 bytes cache line size/block size****\n"); switch (selection) { case 8: @@ -318,7 +318,7 @@ void performNwayAssociativeMappingforPart2() break; case 2: - printf("\n\n******* STARTING EXECUTION OF 32kb cache size and 64 cache line size/block size \n\n********"); + printf("\n\n******* STARTING EXECUTION OF 32kb cache size and 64 bytes cache line size/block size****\n"); cacheSize = 32 * 1024; totalNumberOfBlocks = (int)cacheSize / 64; switch (selection) @@ -341,7 +341,7 @@ void performNwayAssociativeMappingforPart2() } break; case 3: - printf("\n\n******* STARTING EXECUTION OF 64kb cache size and 64 cache line size/block size \n\n********"); + printf("\n\n******* STARTING EXECUTION OF 64kb cache size and 64 bytes cache line size/block size****\n"); cacheSize = 64 * 1024; totalNumberOfBlocks = (int)cacheSize / 64; switch (selection) diff --git a/part2.exe b/part2.exe index f15cbd09fff5c8286a5ba39bb8736e1f5c7bc7a9..ab6d57e26f95ca13891739855f82013b56004959 100644 GIT binary patch delta 4280 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 From ceb6d7a75ce02d31ef6cea0d2250c07a554febb0 Mon Sep 17 00:00:00 2001 From: GOPIKRISHNA44 Date: Fri, 28 Oct 2022 17:41:04 -0500 Subject: [PATCH 11/29] c --- part2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/part2.c b/part2.c index e8d4c92..f80ff54 100644 --- a/part2.c +++ b/part2.c @@ -381,7 +381,7 @@ int main(int argc, char *argv[]) { trace_file_name = argv[2]; int switchCase = 0; - printf("Select 1 to execute part1 or 2 to part2 :"); + printf("Select 1 to execute Question 1 or 2 to Question 2 :"); scanf("%d", &switchCase); switch (switchCase) From 14d7a92db5900d683cec68eb2ac868d697194399 Mon Sep 17 00:00:00 2001 From: GOPIKRISHNA44 Date: Fri, 28 Oct 2022 17:50:40 -0500 Subject: [PATCH 12/29] c --- part2.c | 13 +++++++------ part2.exe | Bin 57710 -> 57710 bytes 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/part2.c b/part2.c index f80ff54..ea8efd6 100644 --- a/part2.c +++ b/part2.c @@ -201,7 +201,7 @@ void performNwayAssociativeMappingforPart1() switch (ca) { case 1: - printf("\n\n******* STARTING EXECUTION FOR 16 BYTES cache line size\n\n********"); + printf("\n\n====== STARTING EXECUTION FOR 16 BYTES cache line size ========== \n"); totalNumberOfBlocks = (int)cacheSize / 16; switch (selection) { @@ -223,7 +223,7 @@ void performNwayAssociativeMappingforPart1() break; case 2: - printf("\n\n******* STARTING EXECUTION FOR 32 BYTES cache line size\n\n********"); + printf("\n\n====== STARTING EXECUTION FOR 32 BYTES cache line size ========== \n"); totalNumberOfBlocks = (int)cacheSize / 32; switch (selection) { @@ -245,7 +245,8 @@ void performNwayAssociativeMappingforPart1() break; case 3: - printf("\n\n******* STARTING EXECUTION FOR 128 BYTES cache line size\n\n********"); + printf("\n\n====== STARTING EXECUTION FOR 128 BYTES cache line size ========== \n"); + totalNumberOfBlocks = (int)cacheSize / 128; switch (selection) { case 8: @@ -296,7 +297,7 @@ void performNwayAssociativeMappingforPart2() { case 1: totalNumberOfBlocks = (int)cacheSize / 64; - printf("\n\n******* STARTING EXECUTION OF 16kb cache size and 64 bytes cache line size/block size****\n"); + printf("\n\n====== STARTING EXECUTION OF 16kb cache size and 64 bytes cache line size/block size=======\n"); switch (selection) { case 8: @@ -318,7 +319,7 @@ void performNwayAssociativeMappingforPart2() break; case 2: - printf("\n\n******* STARTING EXECUTION OF 32kb cache size and 64 bytes cache line size/block size****\n"); + printf("\n\n====== STARTING EXECUTION OF 32kb cache size and 64 bytes cache line size/block size=======\n"); cacheSize = 32 * 1024; totalNumberOfBlocks = (int)cacheSize / 64; switch (selection) @@ -341,7 +342,7 @@ void performNwayAssociativeMappingforPart2() } break; case 3: - printf("\n\n******* STARTING EXECUTION OF 64kb cache size and 64 bytes cache line size/block size****\n"); + printf("\n\n====== STARTING EXECUTION OF 64kb cache size and 64 bytes cache line size/block size=======\n"); cacheSize = 64 * 1024; totalNumberOfBlocks = (int)cacheSize / 64; switch (selection) diff --git a/part2.exe b/part2.exe index ab6d57e26f95ca13891739855f82013b56004959..92f629ccef9358377a5859e7f69fe9e2feb9c91b 100644 GIT binary patch delta 3354 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 ty=(fGH delta 3288 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 P??S<46!W#0? Date: Fri, 28 Oct 2022 20:34:54 -0500 Subject: [PATCH 13/29] c --- hack.c | 443 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ hack.exe | Bin 0 -> 57710 bytes 2 files changed, 443 insertions(+) create mode 100644 hack.c create mode 100644 hack.exe diff --git a/hack.c b/hack.c new file mode 100644 index 0000000..448745d --- /dev/null +++ b/hack.c @@ -0,0 +1,443 @@ +/* + * CS3375 Computer Architecture + * Course Project + * Cache Simulator Design and Development + * FALL 2017 + * By Yong Chen + */ + +#include +#include +#include +#include +#include + +char *trace_file_name; + +uint64_t convert_address(char memory_addr[]) +/* Converts the physical 32-bit address in the trace file to the "binary" \\ + * (a uint64 that can have bitwise operations on it) */ +{ + uint64_t binary = 0; + int i = 0; + + while (memory_addr[i] != '\n') + { + if (memory_addr[i] <= '9' && memory_addr[i] >= '0') + { + binary = (binary * 16) + (memory_addr[i] - '0'); + } + else + { + if (memory_addr[i] == 'a' || memory_addr[i] == 'A') + { + binary = (binary * 16) + 10; + } + if (memory_addr[i] == 'b' || memory_addr[i] == 'B') + { + binary = (binary * 16) + 11; + } + if (memory_addr[i] == 'c' || memory_addr[i] == 'C') + { + binary = (binary * 16) + 12; + } + if (memory_addr[i] == 'd' || memory_addr[i] == 'D') + { + binary = (binary * 16) + 13; + } + if (memory_addr[i] == 'e' || memory_addr[i] == 'E') + { + binary = (binary * 16) + 14; + } + if (memory_addr[i] == 'f' || memory_addr[i] == 'F') + { + binary = (binary * 16) + 15; + } + } + i++; + } + +#ifdef DBG + printf("%s converted to %llu\n", memory_addr, binary); +#endif + return binary; +} + +void readFileAndDoCacheHitOrMiss(int totalNumberOfBlocks, int nway, int blockSize) +{ + // Every thing is ready , just call the file and do the hit + int numberOfSets = totalNumberOfBlocks / nway; + struct direct_mapped_cache + { + unsigned valid_field[totalNumberOfBlocks]; /* Valid field */ + unsigned dirty_field[totalNumberOfBlocks]; /* Dirty field; since we don't distinguish writes and \\ + reads in this project yet, this field doesn't really matter */ + uint64_t tag_field[totalNumberOfBlocks]; /* Tag field */ + int hits; /* Hit count */ + int misses; /* Miss count */ + }; + struct direct_mapped_cache d_cache; + /* Initialization */ + for (int i = 0; i < totalNumberOfBlocks; i++) + { + d_cache.valid_field[i] = 0; + d_cache.dirty_field[i] = 0; + d_cache.tag_field[i] = 0; + } + d_cache.hits = 0; + d_cache.misses = 0; + + char mem_request[20]; + FILE *fp; + fp = fopen(trace_file_name, "r"); + uint64_t address; + + // printf("%s IS THE FILENAME", trace_file_name); + while (fgets(mem_request, 20, fp) != NULL) + { + // printf("%s", mem_request); + address = convert_address(mem_request); + uint64_t block_addr = address >> (unsigned)log2(blockSize); + int setNumber = block_addr % numberOfSets; + uint64_t tag = block_addr >> (unsigned)log2(numberOfSets); + int startIndex = ((int)setNumber) * nway; + + int endIndex = startIndex + nway - 1; + + int hitMade = 0; + int isAnySpaceEmpty = 0; + int nwayTemp = nway; + int loopIndex = startIndex; + int i = 0; + // printf("Coming the tag %d \n",tag); + for (int j = startIndex; j <= endIndex; j++) + { + // printf("\n\n\n **** At Index: %d Valid Field %d TagField %d",j,d_cache.valid_field[j],d_cache.tag_field[j]); + } + // printf("*********************"); + while (nwayTemp > 0) + { + i++; + // printf("%d ***********", loopIndex); + if (d_cache.valid_field[loopIndex] && d_cache.tag_field[loopIndex] == tag) + { /* Cache hit */ + d_cache.hits += 1; + hitMade = 1; + break; + } + if (d_cache.valid_field[loopIndex] == 0) + { + isAnySpaceEmpty = 1; + } + + loopIndex += 1; + nwayTemp--; + } + + if (hitMade == 0) + { + // printf("Hit was zero for the index %d", hitMade); + d_cache.misses += 1; + if (isAnySpaceEmpty > 0) + { + // printf("Going on empty"); + nwayTemp = nway; + loopIndex = startIndex; + while (nwayTemp > 0) + { + if (d_cache.valid_field[loopIndex] == 0) + { + // printf("\nInserting at the index : %d ", loopIndex); + d_cache.valid_field[loopIndex] = 1; + d_cache.tag_field[loopIndex] = tag; + break; + } + + loopIndex += 1; + nwayTemp--; + } + } + else + { + // pick a random index and replace + + int randomIndex = (rand() % (endIndex - startIndex + 1)) + startIndex; + // printf("Picking a rand variable %d",randomIndex); + d_cache.valid_field[randomIndex] = 1; + d_cache.tag_field[randomIndex] = tag; + } + } + } + // printf("\n\n\n==================================\n"); + // printf("Cache type:n-Mapped Cache\n with no of rows: %d, number of sets: %d", totalNumberOfBlocks, numberOfSets); + printf("==================================\n"); + printf("Cache Hits: %d\n", d_cache.hits); + printf("Cache Misses: %d\n", d_cache.misses); + printf("Cache Hit Rate : %0.9f%%\n", ((float)d_cache.hits / (float)(d_cache.hits + d_cache.misses))*100); + printf("Cache Miss Rate : %0.9f%%\n", ((float)d_cache.misses / (float)(d_cache.hits + d_cache.misses))*100); + printf("\n"); + fclose(fp); +} + +void startProcess(int cacheSize, int totalNumberOfBlocks, int nway, int blockSize) +{ + // printf("The below output is for cache with %dKB and %d bytes and %d way associative ", cacheSize, blockSize, nway); + readFileAndDoCacheHitOrMiss(totalNumberOfBlocks, nway, blockSize); +} + +void performNwayAssociativeMappingforPart1() +{ + int continueSelect = 0; + int t=1; + for(int i=1;i<=3;i++) + { + + int j=1; + while(j<=8){ + long cacheSize = 32 * 1024; + int totalNumberOfBlocks = 0; + int ca = 0; + printf("For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : %d\n",i); + // scanf("%d", &ca); + ca = i; + int selection = 0; + printf("Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: %d",j); + // scanf("%d", &selection); + selection = j; + switch (ca) + { + case 1: + printf("\n\n====== STARTING EXECUTION FOR 16 BYTES cache line size ========== \n"); + totalNumberOfBlocks = (int)cacheSize / 16; + switch (selection) + { + case 8: + startProcess(32, totalNumberOfBlocks, 8, 16); + break; + case 4: + startProcess(32, totalNumberOfBlocks, 4, 16); + break; + case 2: + startProcess(32, totalNumberOfBlocks, 2, 16); + break; + case 1: + startProcess(32, totalNumberOfBlocks, totalNumberOfBlocks, 16); + break; + default: + break; + } + + break; + case 2: + printf("\n\n====== STARTING EXECUTION FOR 32 BYTES cache line size ========== \n"); + totalNumberOfBlocks = (int)cacheSize / 32; + switch (selection) + { + case 8: + startProcess(32, totalNumberOfBlocks, 8, 32); + break; + case 4: + startProcess(32, totalNumberOfBlocks, 4, 32); + break; + case 2: + startProcess(32, totalNumberOfBlocks, 2, 32); + break; + case 1: + startProcess(32, totalNumberOfBlocks, totalNumberOfBlocks, 32); + break; + default: + break; + } + + break; + case 3: + printf("\n\n====== STARTING EXECUTION FOR 128 BYTES cache line size ========== \n"); + totalNumberOfBlocks = (int)cacheSize / 128; + switch (selection) + { + case 8: + startProcess(32, totalNumberOfBlocks, 8, 128); + break; + case 4: + startProcess(32, totalNumberOfBlocks, 4, 128); + break; + case 2: + startProcess(32, totalNumberOfBlocks, 2, 128); + break; + case 1: + startProcess(32, totalNumberOfBlocks, totalNumberOfBlocks, 1628); + break; + default: + break; + } + + break; + } + + + + + printf("===========XXXX EXECUTION ENDED XXXX ==========\n"); + + + if(i<3) + printf("Select 1 to continue the test cases, any other to exit: 1"); + else + printf("Select 1 to continue the test cases, any other to exit: 0"); + if(j==1) + j=2; + else if(j==2) + j=4; + else if (j==4) + j=8; + else + j=9; + + + } + + } + + + +} +void performNwayAssociativeMappingforPart2() +{ + + int continueSelect = 0; + for(int i=1;i<=3;i++) + { + + int j=1; + while(j<=8){ + long cacheSize = 16 * 1024; + int totalNumberOfBlocks = 0; + int ca = 0; + printf("For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize %d \n \n",i); + // scanf("%d", &ca); + ca=i; + int selection; + printf("Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: %d",j); + // scanf("%d", &selection); + selection=j; + + switch (ca) + { + case 1: + cacheSize = 16 * 1024; + totalNumberOfBlocks = (int)cacheSize / 64; + printf("\n\n====== STARTING EXECUTION OF 16kb cache size and 64 bytes cache line size/block size=======\n"); + switch (selection) + { + case 8: + startProcess(16, totalNumberOfBlocks, 8, 64); + break; + case 4: + startProcess(16, totalNumberOfBlocks, 4, 64); + break; + case 2: + startProcess(16, totalNumberOfBlocks, 2, 64); + break; + case 1: + startProcess(16, totalNumberOfBlocks, totalNumberOfBlocks, 64); + break; + + default: + break; + } + + break; + case 2: + printf("\n\n====== STARTING EXECUTION OF 32kb cache size and 64 bytes cache line size/block size=======\n"); + cacheSize = 32 * 1024; + totalNumberOfBlocks = (int)cacheSize / 64; + switch (selection) + { + case 8: + startProcess(32, totalNumberOfBlocks, 8, 64); + break; + case 4: + startProcess(32, totalNumberOfBlocks, 4, 64); + break; + case 2: + startProcess(32, totalNumberOfBlocks, 2, 64); + break; + case 1: + startProcess(32, totalNumberOfBlocks, totalNumberOfBlocks, 64); + break; + + default: + break; + } + break; + case 3: + printf("\n\n====== STARTING EXECUTION OF 64kb cache size and 64 bytes cache line size/block size=======\n"); + cacheSize = 64 * 1024; + totalNumberOfBlocks = (int)cacheSize / 64; + switch (selection) + { + case 8: + startProcess(64, totalNumberOfBlocks, 8, 64); + break; + case 4: + startProcess(64, totalNumberOfBlocks, 4, 64); + break; + case 2: + startProcess(64, totalNumberOfBlocks, 2, 64); + break; + case 1: + startProcess(64, totalNumberOfBlocks, totalNumberOfBlocks, 64); + break; + + default: + break; + } + break; + + default: + break; + } + + + printf("===========XXXX EXECUTION ENDED XXXX ==========\n"); + + + if(i==3 && j==8) + printf("Select 1 to continue the test cases, any other to exit: 0\n"); + else + printf("Select 1 to continue the test cases, any other to exit: 1\n"); + if(j==1) + j=2; + else if(j==2) + j=4; + else if (j==4) + j=8; + else + j=9; + } + + + } + + + +} + +int main(int argc, char *argv[]) +{ + trace_file_name = argv[2]; + int switchCase = 0; + printf("Select 1 to execute Question 1 or 2 to Question 2 :"); + scanf("%d", &switchCase); + + switch (switchCase) + { + case 1: + performNwayAssociativeMappingforPart1(); + break; + + case 2: + performNwayAssociativeMappingforPart2(); + break; + } +} \ No newline at end of file diff --git a/hack.exe b/hack.exe new file mode 100644 index 0000000000000000000000000000000000000000..634ebc4663e65a7a42dcfd17255b09e9d28a6bdf GIT binary patch literal 57710 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 V6#9r@Zl<@xmHLZeKft^B$shgSfMoyx literal 0 HcmV?d00001 From 80c22bb8fe551edb6216df915b593bb91b2ad8e8 Mon Sep 17 00:00:00 2001 From: GOPIKRISHNA44 Date: Fri, 28 Oct 2022 20:45:07 -0500 Subject: [PATCH 14/29] changes --- hack.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/hack.c b/hack.c index 448745d..220197a 100644 --- a/hack.c +++ b/hack.c @@ -280,10 +280,10 @@ void performNwayAssociativeMappingforPart1() printf("===========XXXX EXECUTION ENDED XXXX ==========\n"); - if(i<3) - printf("Select 1 to continue the test cases, any other to exit: 1"); + if(i==3 && j==8) + printf("Select 1 to continue the test cases, any other to exit: 0\n\n"); else - printf("Select 1 to continue the test cases, any other to exit: 0"); + printf("Select 1 to continue the test cases, any other to exit: 1\n\n"); if(j==1) j=2; else if(j==2) @@ -403,9 +403,9 @@ void performNwayAssociativeMappingforPart2() if(i==3 && j==8) - printf("Select 1 to continue the test cases, any other to exit: 0\n"); + printf("Select 1 to continue the test cases, any other to exit: 0\n\n"); else - printf("Select 1 to continue the test cases, any other to exit: 1\n"); + printf("Select 1 to continue the test cases, any other to exit: 1\n\n"); if(j==1) j=2; else if(j==2) From 61d2efa86703ea0c43d85c6e2defe3d135a3670d Mon Sep 17 00:00:00 2001 From: GOPIKRISHNA44 Date: Sat, 29 Oct 2022 09:25:01 -0500 Subject: [PATCH 15/29] c --- Outputs/part1.txt | 38 ++++++ Outputs/part2_Q1_tracehpcg.txt | 159 +++++++++++++++++++++++++ Outputs/part2_Q1_tracestream.txt | 159 +++++++++++++++++++++++++ Outputs/part2_Q1_tracestream_10.txt | 159 +++++++++++++++++++++++++ Outputs/part2_Q1_tracestream_20.txt | 160 ++++++++++++++++++++++++++ Outputs/part2_Q2_tracehpcg.txt | 172 ++++++++++++++++++++++++++++ Outputs/part2_Q2_tracestream.txt | 172 ++++++++++++++++++++++++++++ Outputs/part2_Q2_tracestream_10.txt | 172 ++++++++++++++++++++++++++++ Outputs/part2_Q2_tracestream_20.txt | 172 ++++++++++++++++++++++++++++ Outputs/part3.txt | 81 +++++++++++++ Report.docx | 0 p3.exe | Bin 45178 -> 0 bytes 12 files changed, 1444 insertions(+) create mode 100644 Outputs/part1.txt create mode 100644 Outputs/part2_Q1_tracehpcg.txt create mode 100644 Outputs/part2_Q1_tracestream.txt create mode 100644 Outputs/part2_Q1_tracestream_10.txt create mode 100644 Outputs/part2_Q1_tracestream_20.txt create mode 100644 Outputs/part2_Q2_tracehpcg.txt create mode 100644 Outputs/part2_Q2_tracestream.txt create mode 100644 Outputs/part2_Q2_tracestream_10.txt create mode 100644 Outputs/part2_Q2_tracestream_20.txt create mode 100644 Outputs/part3.txt create mode 100644 Report.docx delete mode 100644 p3.exe diff --git a/Outputs/part1.txt b/Outputs/part1.txt new file mode 100644 index 0000000..420701c --- /dev/null +++ b/Outputs/part1.txt @@ -0,0 +1,38 @@ +login-20-26:/CS5375$ gcc cachesim.c -o cachesim +login-20-26:/CS5375$ ./cachesim direct ./trace_for_students/trace.hpcg + +================================== +Cache type: Direct-Mapped Cache +================================== +Cache Hits: 1301327 +Cache Misses: 198673 +Cache Hit Rate: 86.755135% +Cache Miss Rate: 13.244867% +login-20-26:/CS5375$ ./cachesim direct ./trace_for_students/trace.stream + +================================== +Cache type: Direct-Mapped Cache +================================== +Cache Hits: 1059918 +Cache Misses: 2174137 +Cache Hit Rate: 32.773651% +Cache Miss Rate: 67.226341% +login-20-26:/CS5375$ ./cachesim direct ./trace_for_students/trace.stream_10 + +================================== +Cache type: Direct-Mapped Cache +================================== +Cache Hits: 0 +Cache Misses: 10 +Cache Hit Rate: 0.000000% +Cache Miss Rate: 100.000000% +login-20-26:/CS5375$ ./cachesim direct ./trace_for_students/trace.stream_20 + +================================== +Cache type: Direct-Mapped Cache +================================== +Cache Hits: 4 +Cache Misses: 16 +Cache Hit Rate: 20.000000% +Cache Miss Rate: 80.000000% +login-20-26:/CS5375$ diff --git a/Outputs/part2_Q1_tracehpcg.txt b/Outputs/part2_Q1_tracehpcg.txt new file mode 100644 index 0000000..ef49f24 --- /dev/null +++ b/Outputs/part2_Q1_tracehpcg.txt @@ -0,0 +1,159 @@ +login-20-25:/CS5375$ ./part2 direct ./trace_for_students/trace.hpcg +Select 1 to execute Question 1 or 2 to Question 2 :1 +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 1 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 1 + +====== STARTING EXECUTION FOR 16 BYTES cache line size ========== +================================== +Cache Hits: 1288305 +Cache Misses: 211695 +Cache Hit Rate : 85.887001038% +Cache Miss Rate : 14.112999916% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 1 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 2 + +====== STARTING EXECUTION FOR 16 BYTES cache line size ========== +================================== +Cache Hits: 1271623 +Cache Misses: 228377 +Cache Hit Rate : 84.774864197% +Cache Miss Rate : 15.225132942% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 1 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 4 + +====== STARTING EXECUTION FOR 16 BYTES cache line size ========== +================================== +Cache Hits: 1277153 +Cache Misses: 222847 +Cache Hit Rate : 85.143531799% +Cache Miss Rate : 14.856466293% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 1 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 8 + +====== STARTING EXECUTION FOR 16 BYTES cache line size ========== +================================== +Cache Hits: 1278586 +Cache Misses: 221414 +Cache Hit Rate : 85.239067078% +Cache Miss Rate : 14.760933876% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 2 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 1 + +====== STARTING EXECUTION FOR 32 BYTES cache line size ========== +================================== +Cache Hits: 1299112 +Cache Misses: 200888 +Cache Hit Rate : 86.607467651% +Cache Miss Rate : 13.392533302% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 2 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 2 + +====== STARTING EXECUTION FOR 32 BYTES cache line size ========== +================================== +Cache Hits: 1281291 +Cache Misses: 218709 +Cache Hit Rate : 85.419395447% +Cache Miss Rate : 14.580599785% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 2 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 4 + +====== STARTING EXECUTION FOR 32 BYTES cache line size ========== +================================== +Cache Hits: 1287229 +Cache Misses: 212771 +Cache Hit Rate : 85.815269470% +Cache Miss Rate : 14.184732437% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 2 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 8 + +====== STARTING EXECUTION FOR 32 BYTES cache line size ========== +================================== +Cache Hits: 1288697 +Cache Misses: 211303 +Cache Hit Rate : 85.913131714% +Cache Miss Rate : 14.086866379% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 3 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 1 + +====== STARTING EXECUTION FOR 128 BYTES cache line size ========== +================================== +Cache Hits: 1429196 +Cache Misses: 70804 +Cache Hit Rate : 95.279731750% +Cache Miss Rate : 4.720266342% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 3 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 2 + +====== STARTING EXECUTION FOR 128 BYTES cache line size ========== +================================== +Cache Hits: 1341934 +Cache Misses: 158066 +Cache Hit Rate : 89.462265015% +Cache Miss Rate : 10.537733078% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 3 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 4 + +====== STARTING EXECUTION FOR 128 BYTES cache line size ========== +================================== +Cache Hits: 1348062 +Cache Misses: 151938 +Cache Hit Rate : 89.870796204% +Cache Miss Rate : 10.129199982% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 3 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 8 + +====== STARTING EXECUTION FOR 128 BYTES cache line size ========== +================================== +Cache Hits: 1344947 +Cache Misses: 155053 +Cache Hit Rate : 89.663139343% +Cache Miss Rate : 10.336867332% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 0 + +login-20-25:/CS5375$ diff --git a/Outputs/part2_Q1_tracestream.txt b/Outputs/part2_Q1_tracestream.txt new file mode 100644 index 0000000..50db7de --- /dev/null +++ b/Outputs/part2_Q1_tracestream.txt @@ -0,0 +1,159 @@ +login-20-25:/CS5375$ ./part2 direct ./trace_for_students/trace.stream +Select 1 to execute Question 1 or 2 to Question 2 :1 +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 1 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 1 + +====== STARTING EXECUTION FOR 16 BYTES cache line size ========== +================================== +Cache Hits: 1054393 +Cache Misses: 2179662 +Cache Hit Rate : 32.602817535% +Cache Miss Rate : 67.397186279% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 1 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 2 + +====== STARTING EXECUTION FOR 16 BYTES cache line size ========== +================================== +Cache Hits: 1047765 +Cache Misses: 2186290 +Cache Hit Rate : 32.397872925% +Cache Miss Rate : 67.602127075% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 1 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 4 + +====== STARTING EXECUTION FOR 16 BYTES cache line size ========== +================================== +Cache Hits: 1048044 +Cache Misses: 2186011 +Cache Hit Rate : 32.406501770% +Cache Miss Rate : 67.593505859% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 1 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 8 + +====== STARTING EXECUTION FOR 16 BYTES cache line size ========== +================================== +Cache Hits: 1047903 +Cache Misses: 2186152 +Cache Hit Rate : 32.402141571% +Cache Miss Rate : 67.597862244% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 2 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 1 + +====== STARTING EXECUTION FOR 32 BYTES cache line size ========== +================================== +Cache Hits: 1068994 +Cache Misses: 2165061 +Cache Hit Rate : 33.054290771% +Cache Miss Rate : 66.945709229% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 2 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 2 + +====== STARTING EXECUTION FOR 32 BYTES cache line size ========== +================================== +Cache Hits: 1062504 +Cache Misses: 2171551 +Cache Hit Rate : 32.853614807% +Cache Miss Rate : 67.146385193% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 2 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 4 + +====== STARTING EXECUTION FOR 32 BYTES cache line size ========== +================================== +Cache Hits: 1062487 +Cache Misses: 2171568 +Cache Hit Rate : 32.853092194% +Cache Miss Rate : 67.146911621% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 2 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 8 + +====== STARTING EXECUTION FOR 32 BYTES cache line size ========== +================================== +Cache Hits: 1062604 +Cache Misses: 2171451 +Cache Hit Rate : 32.856708527% +Cache Miss Rate : 67.143287659% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 3 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 1 + +====== STARTING EXECUTION FOR 128 BYTES cache line size ========== +================================== +Cache Hits: 1082336 +Cache Misses: 2151719 +Cache Hit Rate : 33.466838837% +Cache Miss Rate : 66.533157349% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 3 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 2 + +====== STARTING EXECUTION FOR 128 BYTES cache line size ========== +================================== +Cache Hits: 1059297 +Cache Misses: 2174758 +Cache Hit Rate : 32.754451752% +Cache Miss Rate : 67.245552063% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 3 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 4 + +====== STARTING EXECUTION FOR 128 BYTES cache line size ========== +================================== +Cache Hits: 1062298 +Cache Misses: 2171757 +Cache Hit Rate : 32.847248077% +Cache Miss Rate : 67.152755737% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 3 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 8 + +====== STARTING EXECUTION FOR 128 BYTES cache line size ========== +================================== +Cache Hits: 1061428 +Cache Misses: 2172627 +Cache Hit Rate : 32.820343018% +Cache Miss Rate : 67.179656982% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 0 + +login-20-25:/CS5375$ diff --git a/Outputs/part2_Q1_tracestream_10.txt b/Outputs/part2_Q1_tracestream_10.txt new file mode 100644 index 0000000..1543dce --- /dev/null +++ b/Outputs/part2_Q1_tracestream_10.txt @@ -0,0 +1,159 @@ +login-20-25:/CS5375$ ./part2 direct ./trace_for_students/trace.stream_10 +Select 1 to execute Question 1 or 2 to Question 2 :1 +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 1 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 1 + +====== STARTING EXECUTION FOR 16 BYTES cache line size ========== +================================== +Cache Hits: 0 +Cache Misses: 10 +Cache Hit Rate : 0.000000000% +Cache Miss Rate : 100.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 1 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 2 + +====== STARTING EXECUTION FOR 16 BYTES cache line size ========== +================================== +Cache Hits: 0 +Cache Misses: 10 +Cache Hit Rate : 0.000000000% +Cache Miss Rate : 100.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 1 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 4 + +====== STARTING EXECUTION FOR 16 BYTES cache line size ========== +================================== +Cache Hits: 0 +Cache Misses: 10 +Cache Hit Rate : 0.000000000% +Cache Miss Rate : 100.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 1 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 8 + +====== STARTING EXECUTION FOR 16 BYTES cache line size ========== +================================== +Cache Hits: 0 +Cache Misses: 10 +Cache Hit Rate : 0.000000000% +Cache Miss Rate : 100.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 2 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 1 + +====== STARTING EXECUTION FOR 32 BYTES cache line size ========== +================================== +Cache Hits: 0 +Cache Misses: 10 +Cache Hit Rate : 0.000000000% +Cache Miss Rate : 100.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 2 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 2 + +====== STARTING EXECUTION FOR 32 BYTES cache line size ========== +================================== +Cache Hits: 0 +Cache Misses: 10 +Cache Hit Rate : 0.000000000% +Cache Miss Rate : 100.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 2 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 4 + +====== STARTING EXECUTION FOR 32 BYTES cache line size ========== +================================== +Cache Hits: 0 +Cache Misses: 10 +Cache Hit Rate : 0.000000000% +Cache Miss Rate : 100.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 2 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 8 + +====== STARTING EXECUTION FOR 32 BYTES cache line size ========== +================================== +Cache Hits: 0 +Cache Misses: 10 +Cache Hit Rate : 0.000000000% +Cache Miss Rate : 100.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 3 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 1 + +====== STARTING EXECUTION FOR 128 BYTES cache line size ========== +================================== +Cache Hits: 0 +Cache Misses: 10 +Cache Hit Rate : 0.000000000% +Cache Miss Rate : 100.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 3 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 2 + +====== STARTING EXECUTION FOR 128 BYTES cache line size ========== +================================== +Cache Hits: 0 +Cache Misses: 10 +Cache Hit Rate : 0.000000000% +Cache Miss Rate : 100.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 3 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 4 + +====== STARTING EXECUTION FOR 128 BYTES cache line size ========== +================================== +Cache Hits: 0 +Cache Misses: 10 +Cache Hit Rate : 0.000000000% +Cache Miss Rate : 100.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 3 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 8 + +====== STARTING EXECUTION FOR 128 BYTES cache line size ========== +================================== +Cache Hits: 0 +Cache Misses: 10 +Cache Hit Rate : 0.000000000% +Cache Miss Rate : 100.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 0 + +login-20-25:/CS5375$ diff --git a/Outputs/part2_Q1_tracestream_20.txt b/Outputs/part2_Q1_tracestream_20.txt new file mode 100644 index 0000000..8040d80 --- /dev/null +++ b/Outputs/part2_Q1_tracestream_20.txt @@ -0,0 +1,160 @@ + +login-20-25:/CS5375$ ./part2 direct ./trace_for_students/trace.stream_20 +Select 1 to execute Question 1 or 2 to Question 2 :1 +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 1 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 1 + +====== STARTING EXECUTION FOR 16 BYTES cache line size ========== +================================== +Cache Hits: 3 +Cache Misses: 17 +Cache Hit Rate : 15.000000954% +Cache Miss Rate : 85.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 1 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 2 + +====== STARTING EXECUTION FOR 16 BYTES cache line size ========== +================================== +Cache Hits: 3 +Cache Misses: 17 +Cache Hit Rate : 15.000000954% +Cache Miss Rate : 85.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 1 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 4 + +====== STARTING EXECUTION FOR 16 BYTES cache line size ========== +================================== +Cache Hits: 3 +Cache Misses: 17 +Cache Hit Rate : 15.000000954% +Cache Miss Rate : 85.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 1 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 8 + +====== STARTING EXECUTION FOR 16 BYTES cache line size ========== +================================== +Cache Hits: 3 +Cache Misses: 17 +Cache Hit Rate : 15.000000954% +Cache Miss Rate : 85.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 2 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 1 + +====== STARTING EXECUTION FOR 32 BYTES cache line size ========== +================================== +Cache Hits: 4 +Cache Misses: 16 +Cache Hit Rate : 20.000000000% +Cache Miss Rate : 80.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 2 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 2 + +====== STARTING EXECUTION FOR 32 BYTES cache line size ========== +================================== +Cache Hits: 4 +Cache Misses: 16 +Cache Hit Rate : 20.000000000% +Cache Miss Rate : 80.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 2 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 4 + +====== STARTING EXECUTION FOR 32 BYTES cache line size ========== +================================== +Cache Hits: 4 +Cache Misses: 16 +Cache Hit Rate : 20.000000000% +Cache Miss Rate : 80.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 2 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 8 + +====== STARTING EXECUTION FOR 32 BYTES cache line size ========== +================================== +Cache Hits: 4 +Cache Misses: 16 +Cache Hit Rate : 20.000000000% +Cache Miss Rate : 80.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 3 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 1 + +====== STARTING EXECUTION FOR 128 BYTES cache line size ========== +================================== +Cache Hits: 4 +Cache Misses: 16 +Cache Hit Rate : 20.000000000% +Cache Miss Rate : 80.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 3 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 2 + +====== STARTING EXECUTION FOR 128 BYTES cache line size ========== +================================== +Cache Hits: 4 +Cache Misses: 16 +Cache Hit Rate : 20.000000000% +Cache Miss Rate : 80.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 3 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 4 + +====== STARTING EXECUTION FOR 128 BYTES cache line size ========== +================================== +Cache Hits: 4 +Cache Misses: 16 +Cache Hit Rate : 20.000000000% +Cache Miss Rate : 80.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 32KB Cache size, Click 1 for 16 bytes cache line size, 2 for 32 bytes cache line size, 3 for 128 bytes cache line size : 3 +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 8 + +====== STARTING EXECUTION FOR 128 BYTES cache line size ========== +================================== +Cache Hits: 4 +Cache Misses: 16 +Cache Hit Rate : 20.000000000% +Cache Miss Rate : 80.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 0 + +login-20-25:/CS5375$ diff --git a/Outputs/part2_Q2_tracehpcg.txt b/Outputs/part2_Q2_tracehpcg.txt new file mode 100644 index 0000000..1c2b991 --- /dev/null +++ b/Outputs/part2_Q2_tracehpcg.txt @@ -0,0 +1,172 @@ + +login-20-25:/CS5375$ ./part2 direct ./trace_for_students/trace.hpcg +Select 1 to execute Question 1 or 2 to Question 2 :2 +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 1 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 1 + +====== STARTING EXECUTION OF 16kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 1313931 +Cache Misses: 186069 +Cache Hit Rate : 87.595397949% +Cache Miss Rate : 12.404600143% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 1 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 2 + +====== STARTING EXECUTION OF 16kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 1267220 +Cache Misses: 232780 +Cache Hit Rate : 84.481338501% +Cache Miss Rate : 15.518667221% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 1 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 4 + +====== STARTING EXECUTION OF 16kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 1268209 +Cache Misses: 231791 +Cache Hit Rate : 84.547271729% +Cache Miss Rate : 15.452733994% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 1 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 8 + +====== STARTING EXECUTION OF 16kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 1294809 +Cache Misses: 205191 +Cache Hit Rate : 86.320602417% +Cache Miss Rate : 13.679400444% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 2 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 1 + +====== STARTING EXECUTION OF 32kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 1321396 +Cache Misses: 178604 +Cache Hit Rate : 88.093063354% +Cache Miss Rate : 11.906932831% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 2 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 2 + +====== STARTING EXECUTION OF 32kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 1298104 +Cache Misses: 201896 +Cache Hit Rate : 86.540260315% +Cache Miss Rate : 13.459733009% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 2 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 4 + +====== STARTING EXECUTION OF 32kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 1304418 +Cache Misses: 195582 +Cache Hit Rate : 86.961196899% +Cache Miss Rate : 13.038800240% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 2 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 8 + +====== STARTING EXECUTION OF 32kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 1303147 +Cache Misses: 196853 +Cache Hit Rate : 86.876464844% +Cache Miss Rate : 13.123533249% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 3 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 1 + +====== STARTING EXECUTION OF 64kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 1325088 +Cache Misses: 174912 +Cache Hit Rate : 88.339195251% +Cache Miss Rate : 11.660799980% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 3 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 2 + +====== STARTING EXECUTION OF 64kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 1317601 +Cache Misses: 182399 +Cache Hit Rate : 87.840065002% +Cache Miss Rate : 12.159933090% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 3 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 4 + +====== STARTING EXECUTION OF 64kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 1316971 +Cache Misses: 183029 +Cache Hit Rate : 87.798065186% +Cache Miss Rate : 12.201933861% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 3 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 8 + +====== STARTING EXECUTION OF 64kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 1317500 +Cache Misses: 182500 +Cache Hit Rate : 87.833335876% +Cache Miss Rate : 12.166666985% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 0 + +login-20-25:/CS5375$ diff --git a/Outputs/part2_Q2_tracestream.txt b/Outputs/part2_Q2_tracestream.txt new file mode 100644 index 0000000..330b556 --- /dev/null +++ b/Outputs/part2_Q2_tracestream.txt @@ -0,0 +1,172 @@ + +login-20-25:/CS5375$ ./part2 direct ./trace_for_students/trace.stream +Select 1 to execute Question 1 or 2 to Question 2 :2 +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 1 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 1 + +====== STARTING EXECUTION OF 16kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 1074026 +Cache Misses: 2160029 +Cache Hit Rate : 33.209888458% +Cache Miss Rate : 66.790115356% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 1 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 2 + +====== STARTING EXECUTION OF 16kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 1044174 +Cache Misses: 2189881 +Cache Hit Rate : 32.286834717% +Cache Miss Rate : 67.713165283% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 1 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 4 + +====== STARTING EXECUTION OF 16kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 1037124 +Cache Misses: 2196931 +Cache Hit Rate : 32.068843842% +Cache Miss Rate : 67.931159973% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 1 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 8 + +====== STARTING EXECUTION OF 16kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 1059596 +Cache Misses: 2174459 +Cache Hit Rate : 32.763698578% +Cache Miss Rate : 67.236305237% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 2 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 1 + +====== STARTING EXECUTION OF 32kb cache size and 64 bytes cache line size/block size======= + ================================== +Cache Hits: 1075782 +Cache Misses: 2158273 +Cache Hit Rate : 33.264183044% +Cache Miss Rate : 66.735816956% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 2 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 2 + +====== STARTING EXECUTION OF 32kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 1062040 +Cache Misses: 2172015 +Cache Hit Rate : 32.839267731% +Cache Miss Rate : 67.160728455% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 2 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 4 + +====== STARTING EXECUTION OF 32kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 1061980 +Cache Misses: 2172075 +Cache Hit Rate : 32.837409973% +Cache Miss Rate : 67.162582397% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 2 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 8 + +====== STARTING EXECUTION OF 32kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 1060219 +Cache Misses: 2173836 +Cache Hit Rate : 32.782958984% +Cache Miss Rate : 67.217041016% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 3 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 1 + +====== STARTING EXECUTION OF 64kb cache size and 64 bytes cache line size/block size======= + ================================== +Cache Hits: 1076565 +Cache Misses: 2157490 +Cache Hit Rate : 33.288394928% +Cache Miss Rate : 66.711601257% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 3 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 2 + +====== STARTING EXECUTION OF 64kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 1070154 +Cache Misses: 2163901 +Cache Hit Rate : 33.090164185% +Cache Miss Rate : 66.909835815% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 3 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 4 + +====== STARTING EXECUTION OF 64kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 1070184 +Cache Misses: 2163871 +Cache Hit Rate : 33.091087341% +Cache Miss Rate : 66.908912659% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 3 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 8 + +====== STARTING EXECUTION OF 64kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 1070219 +Cache Misses: 2163836 +Cache Hit Rate : 33.092170715% +Cache Miss Rate : 66.907829285% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 0 + +login-20-25:/CS5375$ diff --git a/Outputs/part2_Q2_tracestream_10.txt b/Outputs/part2_Q2_tracestream_10.txt new file mode 100644 index 0000000..c959e26 --- /dev/null +++ b/Outputs/part2_Q2_tracestream_10.txt @@ -0,0 +1,172 @@ + +login-20-25:/CS5375$ ./part2 direct ./trace_for_students/trace.stream_10 +Select 1 to execute Question 1 or 2 to Question 2 :2 +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 1 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 1 + +====== STARTING EXECUTION OF 16kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 0 +Cache Misses: 10 +Cache Hit Rate : 0.000000000% +Cache Miss Rate : 100.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 1 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 2 + +====== STARTING EXECUTION OF 16kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 0 +Cache Misses: 10 +Cache Hit Rate : 0.000000000% +Cache Miss Rate : 100.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 1 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 4 + +====== STARTING EXECUTION OF 16kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 0 +Cache Misses: 10 +Cache Hit Rate : 0.000000000% +Cache Miss Rate : 100.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 1 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 8 + +====== STARTING EXECUTION OF 16kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 0 +Cache Misses: 10 +Cache Hit Rate : 0.000000000% +Cache Miss Rate : 100.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 2 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 1 + +====== STARTING EXECUTION OF 32kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 0 +Cache Misses: 10 +Cache Hit Rate : 0.000000000% +Cache Miss Rate : 100.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 2 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 2 + +====== STARTING EXECUTION OF 32kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 0 +Cache Misses: 10 +Cache Hit Rate : 0.000000000% +Cache Miss Rate : 100.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 2 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 4 + +====== STARTING EXECUTION OF 32kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 0 +Cache Misses: 10 +Cache Hit Rate : 0.000000000% +Cache Miss Rate : 100.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 2 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 8 + +====== STARTING EXECUTION OF 32kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 0 +Cache Misses: 10 +Cache Hit Rate : 0.000000000% +Cache Miss Rate : 100.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 3 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 1 + +====== STARTING EXECUTION OF 64kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 0 +Cache Misses: 10 +Cache Hit Rate : 0.000000000% +Cache Miss Rate : 100.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 3 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 2 + +====== STARTING EXECUTION OF 64kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 0 +Cache Misses: 10 +Cache Hit Rate : 0.000000000% +Cache Miss Rate : 100.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 3 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 4 + +====== STARTING EXECUTION OF 64kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 0 +Cache Misses: 10 +Cache Hit Rate : 0.000000000% +Cache Miss Rate : 100.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 3 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 8 + +====== STARTING EXECUTION OF 64kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 0 +Cache Misses: 10 +Cache Hit Rate : 0.000000000% +Cache Miss Rate : 100.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 0 + +login-20-25:/CS5375$ diff --git a/Outputs/part2_Q2_tracestream_20.txt b/Outputs/part2_Q2_tracestream_20.txt new file mode 100644 index 0000000..8cf4813 --- /dev/null +++ b/Outputs/part2_Q2_tracestream_20.txt @@ -0,0 +1,172 @@ + +login-20-25:/CS5375$ ./part2 direct ./trace_for_students/trace.stream_20 +Select 1 to execute Question 1 or 2 to Question 2 :2 +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 1 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 1 + +====== STARTING EXECUTION OF 16kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 4 +Cache Misses: 16 +Cache Hit Rate : 20.000000000% +Cache Miss Rate : 80.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 1 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 2 + +====== STARTING EXECUTION OF 16kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 4 +Cache Misses: 16 +Cache Hit Rate : 20.000000000% +Cache Miss Rate : 80.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 1 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 4 + +====== STARTING EXECUTION OF 16kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 4 +Cache Misses: 16 +Cache Hit Rate : 20.000000000% +Cache Miss Rate : 80.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 1 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 8 + +====== STARTING EXECUTION OF 16kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 4 +Cache Misses: 16 +Cache Hit Rate : 20.000000000% +Cache Miss Rate : 80.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 2 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 1 + +====== STARTING EXECUTION OF 32kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 4 +Cache Misses: 16 +Cache Hit Rate : 20.000000000% +Cache Miss Rate : 80.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 2 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 2 + +====== STARTING EXECUTION OF 32kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 4 +Cache Misses: 16 +Cache Hit Rate : 20.000000000% +Cache Miss Rate : 80.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 2 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 4 + +====== STARTING EXECUTION OF 32kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 4 +Cache Misses: 16 +Cache Hit Rate : 20.000000000% +Cache Miss Rate : 80.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 2 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 8 + +====== STARTING EXECUTION OF 32kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 4 +Cache Misses: 16 +Cache Hit Rate : 20.000000000% +Cache Miss Rate : 80.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 3 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 1 + +====== STARTING EXECUTION OF 64kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 4 +Cache Misses: 16 +Cache Hit Rate : 20.000000000% +Cache Miss Rate : 80.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 3 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 2 + +====== STARTING EXECUTION OF 64kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 4 +Cache Misses: 16 +Cache Hit Rate : 20.000000000% +Cache Miss Rate : 80.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 3 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 4 + +====== STARTING EXECUTION OF 64kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 4 +Cache Misses: 16 +Cache Hit Rate : 20.000000000% +Cache Miss Rate : 80.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 1 + +For execution over 64Bytes Cache line size ,Click 1 for 16KB Cachesize, 2 for 32KB Cachesize, 3 for 64KB Cachesize 3 + +Select 1 for fully associative execution, 2 for 2 way execution, 4 for 4 way execution, 8 for 8 way execution: 8 + +====== STARTING EXECUTION OF 64kb cache size and 64 bytes cache line size/block size======= +================================== +Cache Hits: 4 +Cache Misses: 16 +Cache Hit Rate : 20.000000000% +Cache Miss Rate : 80.000000000% + +===========XXXX EXECUTION ENDED XXXX ========== +Select 1 to continue the test cases, any other to exit: 0 + +login-20-25:/CS5375$ diff --git a/Outputs/part3.txt b/Outputs/part3.txt new file mode 100644 index 0000000..9885e24 --- /dev/null +++ b/Outputs/part3.txt @@ -0,0 +1,81 @@ +login-20-25:/CS5375$ clear +login-20-25:/CS5375$ part3.c -o part3 -lm +-bash: part3.c: command not found +login-20-25:/CS5375$ gcc part3.c -o part3 -lm +login-20-25:/CS5375$ ./part3 direct ./trace_for_students/trace.hpcg + +================================== +Cache type: l1 +================================== +Cache Hits: 1317655 +Cache Misses: 182345 +Cache Hit Rate : 87.843666077% +Cache Miss Rate : 12.156332970% + + +================================== +Cache type: l2 +================================== +Cache Hits: 1327929 +Cache Misses: 172071 +Cache Hit Rate : 88.528594971% +Cache Miss Rate : 11.471399307% + +login-20-25:/CS5375$ ./part3 direct ./trace_for_students/trace.stream + +================================== +Cache type: l1 +================================== +Cache Hits: 1070061 +Cache Misses: 2163994 +Cache Hit Rate : 33.087287903% +Cache Miss Rate : 66.912719727% + + +================================== +Cache type: l2 +================================== +Cache Hits: 1077514 +Cache Misses: 2156541 +Cache Hit Rate : 33.317737579% +Cache Miss Rate : 66.682258606% + +login-20-25:/CS5375$ ./part3 direct ./trace_for_students/trace.stream_10 + +================================== +Cache type: l1 +================================== +Cache Hits: 0 +Cache Misses: 10 +Cache Hit Rate : 0.000000000% +Cache Miss Rate : 100.000000000% + + +================================== +Cache type: l2 +================================== +Cache Hits: 0 +Cache Misses: 10 +Cache Hit Rate : 0.000000000% +Cache Miss Rate : 100.000000000% + +login-20-25:/CS5375$ ./part3 direct ./trace_for_students/trace.stream_20 + +================================== +Cache type: l1 +================================== +Cache Hits: 4 +Cache Misses: 16 +Cache Hit Rate : 20.000000000% +Cache Miss Rate : 80.000000000% + + +================================== +Cache type: l2 +================================== +Cache Hits: 4 +Cache Misses: 16 +Cache Hit Rate : 20.000000000% +Cache Miss Rate : 80.000000000% + +login-20-25:/CS5375$ diff --git a/Report.docx b/Report.docx new file mode 100644 index 0000000..e69de29 diff --git a/p3.exe b/p3.exe deleted file mode 100644 index a3d99af64a611953887bc60ec61af16c4ecda636..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45178 zcmeIb3w%`7wLiYkJd%NgoCJcRMjdQWun-6W1sgPz$>gDVnFpYPLmm?n&8x{7zy}gK z6U({N^wQt8&!4@OLVLNbx6+nI+EN=xOiqhOcO=5tUOef_<-eEz=|*zO^*>Hw zdnUa!bFWnL(#-0n<}PPPXZyO&+E!+nAR1iSLqxWLWr7I)Ex)$ijLn#UF#q$6otXfxgR&IgMg>%Nht4nIZq*#{#D^Liw4_5DT&8FxmbMWy^c<=vuqnj)&ZH2qF#VXL8FNwq+(E8s2pa zV}Wy$94tb)dVur}puKx;B@p5YtjD8HDZJG{rn5^-M%~=H>piyq&))~4K zzxhbysA2LPy_Dm@$msLtG_GW~mi8Y=>s4-Kn*25DZ>j>P(zh?I%_S{mpb(@7t`{;z zE#t^Y;8Ze&Q*&AP7_mBK3y;W*ZFf}UGS!wD{>7CL?>e;p?apq_Dlc?x|L1erj$}fB zGDGfE!Xr62ihwO3*nBgrf?(GG7QPKXq3N7MYWP#rk?qOT;n7s2%%v3K>)6haA2Hi* zqX0;^B{HTCgwLY|su`JK(qFW`0;h6%^E2o2x&k_iL{x~*rBZ`U>ULX2E(@HH5Kac_ zY|1129C!r=a|X7-zClAuk4%3G#S8z$tWS|{G1C9HIXyD#7^r&J>-vw(I*9nT=!N=N zfeJ|_U9ScE$0_4eHZq~_fvE;Y>FyN?J6eSJwrRko(h9gk9ik%6(SQXU*|CG6Xgz0@ zG)i+2p)GT7M=p!JvV8`n^eeXl;sQ}PL(lie$dxJ6iK3jiLBHn~kW3EsK+h3n5(tPk zas+_|>7cwCCfw^gckg{`22jjlJLO5&v-C5zWo$~ctQ0_b1E*$e=YsWfZd{;|?NlxZ zltdZ+8_&@8`~b%%dmZ+WPi4cNGvaZI9;5$?dI{B>3V9sTh}_3=mTh*$M(01eFyuKM zsyQR?JYd^@!lv$5e-V=|KieM&FZhadFzq$fb6TxAGkV83ezl4mgP-H_UuEJK=${-o z!USzBUY(gNFODo}Lb7@@nLCawc|x)VGg*Ed*^~*%d}cCF99hbQWQ}IBf;cicN*3^( zl48{|S?(!E;}9wg45r_^WLkO%Hl%IMvVgFcyS{hc@oC=kO zx4aoa<*2165e}_6h2%;5$0n(z$J8~ihe}V%PnV{urAI^bdnQzRR4qL{RuC#p53M;J zO8!dE^GddeY#E?|O>f4lp`_5gHudFO{KwSO>KnKCUsvB#4^P_P^SnQCFSYiuX#vk^ zDbRXG3T!&VHt*R>1{WAyN@o67Nlm^fM(U*fV@ZFD)Vcp1QllkRqp_%--62o1>e&-Q zpk|N!)JVeqcN0|43AN^A$a7*A*RHdv5b%>Jydf#WZTx$?@t5{snw*^Hv*eZu}2}1!D{Tb zSgJW9GHlyMv{Zwh)4gA&8Vq?xLN!NK+pB8ztF~=pRVKds#@yl6ABWx#gggg7?m5(3 zB&j1``QSXHl}1$0Am=(5%XM%fu7Sa7VWR(4wNX{as4Z##yGegfYJ&;=MYYYk`L9)5 z9M`DY(09YPPiNtc7&pur49}cI0wjlW9XmRxFA8QhAeCwp!L<|wF9cU3XhD4=xC%iU zo*-CF2mm8kK|z2KY@r~ov8s@W3;3FG40eN=xfFdoGanBml8$J21YxOiXoQ3y;e-SZDAnprTX^mTPMw34 zz`jg+NdB9EN<|9vOJGbP0H`zqK%vnQNC+quS3oJ$i@}+eE7`%Nb8Qj1E+y)Hne<@F zw75**T7>FE4y45YatK!D8ih3r3fcu;2$m! zVb1+lgu$KaA(s0s0!(U(<(?rZId_LZ;iZJ>xDe&tB#qk|wSVX*%mqY zt_6bq6u7EyknCnCymb~-lh4xjhiQ}+F2?+2&fu`;Buao0-%)x{O$~dGgW3Jsd@(R2$eMo!J5Z`^!9s z=Gn zb@?y&-w%0?q9Ufh`lSN zt=A*pHOQBXD+kMX@s9@1Z^uQnuF?UaNl%D&B+XZh-tTaOue8r zhQL7@YeBI#(DMp{9)(IL?N>)e9gsu))u@XeheziD3BWFT93DMHGCuLdD)qo(TIH57zyoYKMLjph1M+umnV}~#4k?{Q2akdu9A(aPh6m*{5&n3#;k=dQgJy5s&jpfLqd;Khu8nNvDo+A(1_tJVB zr^|)pB+?{1k=*+yI4tejo(eA&LX%Ri#|lW}w#W#F^j6qHxi)n=rNSsi1B1zb8ld`u zYnu_ecC80Z;$lRZ*>hY;j--E$$Hyf98Tjgv8{lx?{{!rLaK^m@*~iB$>Oiks3Z?fD zR?iXt>9OaH_PTvG1VZkKkcs#Y+X(=<+1TSGqF8Us44ktn=|D^6)j~^V$)df6s`(0r zErdlmbjc2~$Rd<922V6}Z9Ry5b9!KT12VCICR3R_Z08Z=7&vE9redK^xgE1L&fwnr zkk7N}Pv){Mzo*~8N7hH*&OROrPz2&wux>P9TlR+kcP0ujo=uK|ih-8mK-{T9u%`hS z+hLL?yWgk_DleB0TFi%l;b)xiD%a*9NJ}Kgm3fWZLRMmwg#>`mm#jtz6_kus4@byt zQx|1MMnd;GdXD>lsdKqXAVb1??;BWAm3@}h!*anCbg6)hrYroOmdEoNwvsLqNzGACv|h@qzD2`69)1_z3vEGDTlhFdzeJ|O zFK#c}X(19d=YX^1JrwcmRWdWdEeGSD-c`A9smbAXEap-*stOuPMkYD&@Y`7E4?l(k zVU{&3)t|4ZQU}ymFowY>B$L?EUVx6j1E}y6z#J-QwU`~|%&uq3d}CAKY@$-FZ`Rw^vJgtJdYvtAm*3@tk&{1q?+JR@)+ zSNT@pf=$`Z%OV(18(R>|$SN4=5}^EiSV~2KR;p=K*pCij`)b}0ltgX(v3F-ZRB0zD zDRCY}1LqPSJ;6tH&cL}O`Ey|;gcegu&sn+WpDA|jE{Yw;_?BW*oMi`{20=_FY+_J8hw9fdPm0^Te%p3;q7cCa5!d zNwL&v3hd4!fk7u~Y#_RxECinhxBWES3)T7(YQ^8s?NNT_OT@4d{Y}D_7qDs^ne(1> znAoZ%nHfK_kVv~A(r6OM&kvSg_s&t+sLoF=)Fd@GIiG)4Q`J>el zVZ+#*{Q#`G zTN|^B{)Nmjxtm2gQYZfklJJBmQ5hBXHh< z^U|Y0U!%+nT$m|;;egzCL^?dShx*g*jS}nauqaokr^ouB{~wc*IZ^fzbz~s>$kFH(;cGwN8q?Ick?N8}(zk>GY^_k}fb@HS-8ePOfzBIb2V=J z2 z;M!Xtaki8@*dg<6a$h2H&qD6gNma;wbQ2mz)ZPWZLav`Th#&OyBC#qItVpUI$X@>3 za{O|oygYWjVNWRf+}^oMdw!?PTXs?XvmCq=+@YXN5&uclW;po@6y`ZyK_6kMWX^Lv zzw`fMyn^Il4hSJ;icr$Kqp$Gt$CmduqP$}-Q^o81i!0UV$bRQ`-PI5C|kyyA@ohb0O5?x zITje4tJSyMS0kwd-4|~5r;7GEfcl$;xbl8>fAEO%%g`g4>F~{HCu7N?yxosRnDSHg zJa!C@g_B9W{r<4dQGRx1gbIY$M_BhJX{NFk)|?)m1%IqU(QBeIeQ(JzFCMp0m(;!*fLOEN7MQ!LiYE6zcO>V2<}fL+P;2v7~K*0T`t+ zOYXA*enrk^|L;-bljJ_Pgp{#2>F4d<2c*$#pb`kxH zQ_;ItNP+%TZTae-u!1^g5JSaen4*KG?o_H%K%?hpC*kQist(Z_f>`1TfB8Js8&)<7voOX1e7y0eZ^^+VJNP17NN_bIk&Z1JkOPg0MCIr{KYwfK4mntkX!rTm z{>)JiLR$Idz9K9c07VWykigUBU>yRz6_I7X@V_bd~TL3$GX=Tpcu)L}We7di=fc2c6kiv|+HSe{1o{UHxl=J;Af;o-+I+ zt)UdjoXrpzb2i9BNeDdZNcF$jdtY*>bc7akUJGaQ=H!1#er82N$n%uy+ufUQk+oXh zd6sIK=R-@2G`pZVK+hwb;~o^5*F0Ik+tO(g?OhDHFdYqlm4;wZYgx_tsHbUwhR$sY zye)<}!6RE&M3fAifS7%vmg#w7W+g9!n3WLZY6247u;LJ$eI%F`4R% z)MO%%mfEHNjc^&yh+}MiLp_WU*y|w>d-h`^-$!@0-?a|`;x zDu?{JW7KBcw$b-d$Ea!eZh9>uZ7Z@HLaqscVauokjXq~C7NUWmo};B?6cauYWWRI8gm)0eP=;V?EURe@pe2S z9UT1#GMx2{q{=<7L0{^cgF~JjtA{;1p)oevg*H!I{MdsC)$GO8BPmql2zmB~cYsT1 z)4pCWUTpf1M7|XwhYD@vf~JB|VACNiiKuJ#jaCv5{e3aK*+34uAIw9(-J_e3hRkhZ zfmQHR&k5f(ik8F~Vlf9UFxQ5qG|K2O!L1l%`~hxKYdPd2J^Lv22bAjDHQI*}2DK+Z zYxaa{`oR;;m;4W{YP1p-UaY`we_wub5*+o7=qGMa55l3K8LMbfr8~AJCyeGoK;!}Q zWTP~6goi`==p2Bd2y{H3M6bkq|6vamijC4<7Z$*{Z|Rvq73#7~KiI>t5y=)C!?~pOVM9 zn6a%eCaOwwC!LJv+$i{P0!3j5^j^#bXd?@Zv8t=?SFVK1RS)t( z@NfZ2goW4x)cynSq$(%rRS@4v8r}R3!xckQPh%B3RCJ9QFUEoR#%KB z{l8I5Pf)v>!fP<(!)rVz_O!znO@OX`9v=Is8U z_S{HPhYD<=73g`f1J;{Cb4d2+RiOe$;15#BHbZMb+o%wci2ofVpfxxJhtUTCruWf! z7UB&-ki*tUm*FI&qM8Sk$<)efCc{+>U{%ESAvCJvyn~@@$nW55%^pYhQs(~@P-r|$ z>rb|i1S&_ICh7Wo^n<i3*Nn|>j z1+~jP-=W`UO5bV>oS&~u#xJz_B^|b`2;5X2tFV!_4-X{+=G`3?o4h}-3i(KV=!cQ0y@pcqp0_RfKrw_Xw*b8P`28li2Rl@kz?TCqo=`DG@-1{v&u$Q7* zmF)1%2ya=M1QO-S@U@h%)S~<(JPn~?hSeK3_T6v-kEBy%d-yy?yTc4^k+ujYF3)|$ z<`ibZD314UE6#@LX3;hKjW1*PRmc-KH&r^AAR)E2Zv|Au;s08T*~MN z2fDk_CWDiS?l3zXIA)!54vUtyYr5fQ+}&_9xBX}}v<8oth#DPRK>goeVD=xtk23r5 z%@n)XsHP{4|5#IfGlE9y^Kb#sEK&Q+02aa3kT}AA=}ed+9O!SUP^`A`e9+DX?uB zBxPz1xpCY6cT=hL&`S+`Jg&uQfW_nCpCE(mvzq-J2tS4BFrxv%*bl>B*V4GveGB7= z?6YAvU}Im6j&HHl=LoINOvSqG$FU8Jtg#q^GW`n$A59AdNKQyKJI zB%2)SrZNWxlLx|$QJzAmccc2^`;!>XWb#6u-B?cLSqZ^0i12|C+J6I{&Bw zKZfxka+xNS40~NRq;ioqzpm{m^pSAkG5iQWp{;7^o=!X?vljfXTzr2JnKf5?&eoop z+S92$GqmRn?U}AUQ?+NZ_H<}ZoAzYd^FwU)P(J6h=NavJT6><-o?-2IQhT1zp08`q zquO&sdk$*PecE%6_S~&KcWKX^+VctRxm9}xwP&~Xd_;S0)Sim=?9iSq+OtV}HfYba z+H+STdYwl8fo!&-# z$LsSpw>7o{+TfcA&KcZ4FMElgy<@$%Qloaa)OL0Gx)|$Z4b7dtdWDKGdHG+wn7g*V z$>&ra?C{;{#Ffv9=atrWbod&aBC)Z()7g>@et(hMa*bV4v(m-c&1#sefl8Z6J^%@X z>%W@sLg4m)ESHrwx2@aY#K+A_bF0tUSlis<@ATa|nK_*+nmZMLZOdJLU+0570fLjr zvl^Ur4=TPcXRYF_ZD{E9b#*ysbx__;XHDA!ZS5P{oE=?0e?z;o)7R2oU#m2?1Jc>9 zwAZ({IM@3+y9h9=A&UgQ98F!b;_PaE$fx6Gv2`u&b*SM5^IA#lTc{9>rdx~^y4|-r zXBU>$%yBNsx+QDD9VJCk_YQh=20k;prEGFOVD$C5Y2 zo*%FhziQk?--twLHxYEX52x7ZeHGS%y901+>2iJq>&E@aIN0NWZ3T>vi4i8eUATiW zuuI838+asl6L8AnPIWT#^HRO5@h0IUlctt>&yCV|eEkQ5G{e-~q=DfJZ z>n0Om$|DnWZ;)+mm~&7GmbGcn4B0DHri2 z`VT=r7f)7}lDZnU=R|N3?)2S}NCBQy&VU65egEVXhYJi{N!-R(At@I)#DlI&$w}#S zF9NQc5W%VjO`|AjEplUw+C~oU2BZh@r2HPUxKfe>R$w+vPDw5pK*mEUHg{5!DJE=v zBS`jwmQ+jErR1P|NRB6fyB1G#J|!s`#VO8;lng2;|8=J%qqIC@ZkJTve$al}OzTN; zmOv`EhFYA|m6B0}5^^3Mr07hbHeSvrLGSopB=WyCK3umI&@EWlij#yO>x2jz^vt$BoRW?brlNk5UBghbjf#zR`rZ{SQmg31;mAaC;v`_&VQ!1=&5)=g^FzM2rWGMwWe;nAAWFfW2gN0mF zZw=2xB3EBJzg)|c6VwZ`yK@3C*={~~(h(MOe-w$VMwrT>)fem{V55TPqP|dqXnnbo zkc8$N1%Qlnw+(#q!KWDE82c+sakj^_n1UqoOZ$M^1l)i_;PSrHt@+LdYmD!7bA0;p z_Tc_VN$JczVr62|!g~|mEE%t9c5Q%s-e6tNY%g32uQPKvpO%0BN71G~{daQ8dzvy7|JS zG9yB$m#Rmy4Z1&kArhelJ)tw$hdv-8*gvknD-Bd^GsM}7{Z~4->WLWGlYnglY*!2{ z|BJu@Y@%!F|H3gDaUaDU#(e?z73ie0aNmY|HSYUyKZ2XC z&*J$-E&L5UzmNL>?jyKQ;C>JHhqx0SXKX6&>u}$Qdm-)|+y%HRao>Zx0e2hjjkvpU zZ^gY0_g8W6#JwB$k8uy;ei`>GxZl7X#(f6&N4Oo(#Z=t1Pkkfqg}CYZpIGLfvwUBR zPw}}so0aDJ+LkJ;?_gT2E<$Iy!HN0Z)@#FY*--P z;r063);D*e0$7iTH_}OajC}>ME}!DX;+dCL)EGO?y!AfR1!LDrUSDTtTRZhC-o_5B zM)?4}4`F{xOGmBJ#I{S`=JqYHji***#Z>wv8jRf5)R z>+}gGFWMj=t*Ev5*h{vq=5=kg7*fAxgTlF%-=t6r1YsvB)K=fx!TxMh+FRN;peAkh z_0W&VZJr&1DD4o5H-7Sq{|)z@p2{*$$t?@{Dk@l}gD2gsUF+*R6#<=%_}}9lDwl&Oq}{nJ1NYMITxNUnA9nCR$qHz`X5j_4@!u!s9L#^Tq$J&ieV-Ar>2b^Tl@Y{QCB`#^!bN zn{QdVWPbgF>ozpEWmU2HP3^6|`49M-m8SVb#rGLGZJoclrNQ8$??BG0?`-etn%9P1 z&hn}jFl*sbCUsZCPHlYQ!6s3PJ3CwKRXXRjD*iU#@^!v8UuSbY zqP3m%P0O1XFJ0oCw@&|GzR)>OzZ3gevD*w#L;OR24YU>@zXVrY&@MDpbo zAV?Qx)&Dn_nwDZLHakX|%zBE46a8&8TEzx30WFrqt|pAGoo1-R-qPN-&dGl`TC$CY z8`}MK81P!81U@{r(x<#&AH}oL@ZR5uL$i<2MwZ>%p>#6oDBskwd+U**^h*-MX7|?B zVy-5=LP-w0x3Q&m9g}`VX~~FT-iB||D3%H`jKqnl^eO?;LF#YBRy31dqxcNFS845N zY{QEMOgc{NGFXD`Harsxic369dVM8jaS}iDYS<(;nNLBaKb%I)VzGlEFOt6v)B@8 zqn=N$Cbwh$h>43ehs%W+{xj=xJw_s0Z_{HaDYLpr)+BF3?Sn1N>zWj1Tg|y9dFiEu zhcHuPwl&h7z~P0e!m@4hag;#1d+8{i~^#U{bR;P5EtkfalA<^+jNwOvi? zYg@buv)@bwOKehV>%0VI_W6BanPA(8-zksd=SAEp^aJ2wJY<3F`xLV;c@yyj+dKH3 zLPfiX07n)0lcQX{9qp)hDBk{)Zvsao_&#NTpFIMwMRG(ff?Itm=5uK7?H%6QmUYZV zk~*#pqdQA$Yo`e}PeTlCn&zoYO6&A>crhJrY~JY2_R%b6T=c;5<<23YFXmT6t1K;4bAJD zu`H5!l+tJ0Tie%nK@G1^QFAEv5Mtb`<=R`&yy)GhF6iPIQRfqa&kH>^x3k1o2~@;s z>RM2fwUGQc!Ai(`Yk=2(j%+G8080j)$oM}AvfAF*;U#7)@l7IWqPSr37NxgPTq8J1 zfQ|On){Pp)Z;2wv0fOY6lfc-@0UFIHLAKfPc9TXkMl@gM06}w#xIV!F8qMzsvWvJ7 znbMAu!(PzX5>FHH9(zl+x1L_i(rWuXg6_4qEHpv?M9_V9YCJwH$$0Cqk74%r()&l1m5WW?Tx z%4CTbC~_2NSdU4(NReaq#`-2iKBUO&_QtMHVKpl8&lEc`OZQfQ z)4JdSYCEC)Rz;ITl8Ew@o zn82j10<-FxGLN^)UF6BH!6+jJR^h6wE_Ri8D?NqYd{2d^EZ#BqtQw*Gn z%JP!(!WxgarizlGG7n2Jl06m0amligO!_MExImL?04r*$ioB&<*DTEd6aNxaIa1kF z1Ds!8lc$5H8DJf|yn>}0P#qc2=?1jImG7-8DzB{e7SxovtBcFa*cIl~N>6o7Wmy%w z(f}8f*Hn7%s6l0y6qgoPvl&Jbs;hdXs}izSdI~(S6w*wdr_57O?1oLVs|?f2>AjSF-Dk)T)y5mEL01JAO)USx7a(oR>&m%4QlVf-TU!g+?NoV9;QDrobQvFWQ8E?#n}YRUrxduW_8C-n{HOmrD8FLv4RYk=G)!8i1fZXGu zM!TvSy|!26RhG}(MmpMbX*u+vH9~SWEZ;~ja8*@nx?&y!9OD+fD=UkuJ*>b;Q;GQ`~7J zX$2znu@VC;Otqw3>maLGsgXv;xyoHsn8(V@K$K_!D>q9oAf-&#hLo;KjKrujGRG@O@!FVDL*byMd01MYfhGs8qLv~C zjy#@MwbE6gjT1S5%WM}iUxzHUF}4^MbHNOmZ59$Li3ZZq=@_PVEODBJihPB)p&j#7 zKTYMkkI%k#h*1i+DYmk3M(=Q6Jr znVeRPQTZy7l9X2BDRjYga1P07v7H;ni+qq-L5Ub0B2on_g>#^|oK}F|L>r%{rcs|) zP+SSap~N&%lvTWcK%kc2}>4@OKK2FUF$m+ zdE*IvJe6njs-8^}vp!GU$VkDiwTo6;*L(5iPiHNxt-Y=eR@o5E1}$-&gNUaaD@c6Z zlrQQfe&G1j)i6mo3OB|R7!-2TD0Z7*#n`ienHosNivY0105AotF0Lts^%_Vet~)VJ zD657o8$b;a0GM_hcoEk93}9I~%+LjcH$ZL-cNStoW9>rjk<`=k1vlpQK z7{I)Ih?f32UEDq@g zj^rR`dK%WNx4shyC&A}(mx~v@(DG(YA_VN^X!}8YaXYc*u43KkUb%0IZEJ}?g>5v&wh-p_T)#k-U5ZGZ1$Sh8)*Q+lG zdzoW41lf<97bwE4-$OVFZ>qI-)I&kEkW|MejY)(8aDB@|0`f-=No@4D)$`4$$u~!U zkzli91Mo`69}rGMi1uZ?G~dCL82;PKCeKd*7{L5k-~s~9AcCZnNp>rp*FWP%iphwz zAoh<-N@J-BY0^~5>bS-+%R#44J|fip>$9uq}j zr^m3dlXzEL2{t6rmDAZxc+6PD3Mmh}1wP>ay{i>Pvan+OO47xYDfpGJ*M#jsCS869 zJmwVu#-i^45G}J?=q&>4HzetX8}7by!Mf#l-@Rb|Z8zLtk-)wRC>B;q8H~>`_5}j% zBjtIAVM2%_9!&+h3=~O@9{%pN4Fq&)B-HjVX?PSBh=_-<;h)2>%W> zPyv~qHr6ov zerSJXoN&mBtrC3_XTGxd+a=-;cYlO)N!Cg5Hsl`g`jAqGvnJZI>b>oC_Y)OSb3U9! zi2sti;iBXBN!;Yd4aj#9%hhEjF(U_a1Y7b15mdmpv~Zy@&3ORo#kpQwvyQZ%5~g%c2AhtZ^HK-V+XfY9NQ zXj*K5^gK7J=a0oEMZ;95bch(qWQFU+pedTB2krsXnWB{x;qjMlhXRNA(6{(FcX`~^ z0NQ?3H`mx@_y`>0L*L$$ri@G1PbNS@KO}kl^&lumrd~QPqWCPyfPt1)r+6QWYPBK? z(aR2*rIm#9;c$6PpF=GjQOoXlSbS${Nl%H;ciRA5EWY-1f9hva!1 zI55+gOV4XAU?MM)%zS0JE2}eC<OQ&H|Wp_0rk zLDyIgsD;Ly#3=5X2FejkLd+lN5A#`YrT6G?Jxei6krKcFr|ITtzeNiom`dWo1GI4#84n=)kGl3RyDgpR7 zfg|)oeRn(>)hX4as8f2eHU8rL1&mPGAsqDtR|oivaQ!&302Gg)>rmiOU9zprBE`dXN(YXUy1d6%h?K!?&x;!67<%#caiRE`7PwoP}qy*VVDp(i`c?pmT6XZVu zdC~-VkEm{mrLscq1yP7zU;SCS4&Q{(P-x7R)!b04)MhST0A3`mm1&SA3sJEq$YL6A zm>^4TjKi57hm#S9Lq}(u`Am(&amL{|;&A8$3NxRNP(Bl6F^xq{kR@m0aMI&&=p9oN z)#B7RoHycdlH+h*iNkTk;k+D&V~fKXjKiTuW0G*mkK=I24$U~b<8aQ!;p~jVITMHT z)i@k_Z{D2Owm2L*VZ@BHH4cZ`vKgm44u{^_H{)!K!#NR$(-w#GdK^x}c$_8ojE5{f z8b?(bhcgm~Q!pN93B7}DF2%y}ki~;>d~O_%v*fz*kj4ArsHVo@?1{tq5Wd4C&*I&2 zIPb;b?25yox8u!xcE;fx7>~2$`{N;tpNOOS#(11XyWp|RdBssJ-Wtc}k@0*M2jg(= zkHhJX!&x1N^GF=dZE-jo<8ZR#aFjTlE8=iE;&3jE_X&$z;&8%oI8AXlN8@lB;&2Az zaMs4*d_N9nbsWylIGj~+IFHBSRL9|bIu55I4rhHFPDvb2QyflF98N_XPJSHD((yQp zD&lN4j%xAaaeTfQSMS^6a6UU8XVDXJdBsp^D_sk~CvK(7*VdpfyrhHc0t{c_I{4@c zb1Oh-1d5_*5L$<;SS&^$6V3u~HiH7}B922ND@4X!`iL>gc_JKb1y3JuPQ-`UzK%O8 zvy_9FnOWTG(*(0);^T>yi)5y;x0w&&&__-U(Q=WN;&FZp=r-WtKlsFty7kf5UXYsn z*ph@ekNs2}&Izy;RAA56BBr+stetAdZ*0Yo*%)JQ1kUa##H$@>;fO+rPY5_WapOO) zX{?qZxKGQS>K1Tj(3M_4VI4k5ERoP#Yj$uk+6 z(EYRE^D#gUn)0HabDN3kHb8W*C8(+a={MnY0iyQ~0_UFq(fyBrYzKrcTDuSs8bfuP za(@nxd{hM0g}|XdZqO0M!Lcd)0F-W1?jHhYfk_+FF~T)8k57Q;a1nMcI-W;_%>mBQ z7|z~}E#7+GMroBs+yrtvX2KOG0z4@d{7 zC_&_PBo5~-Ky=SWmPs-{#AmAp=l6i~WVBph#uA`TeMBudPX*+3REK1}U4$5gP~-;S z>@@MAztVBY1n~f}%S5#T5CCFI(GEzziRxiM!X~PJ21K9B2nqic5OFy%gT_=EZEyVb zL*P7#(h{nmdJ#e0vkAyCjgL`Zlb|ZyhYOr50U0z&coV4;7gd13Sqz9_QIxhy!!bD5 z5yWI04*{~r#CaZ}(IcI{@0x}zXj5<{SVJtT$cRGi$!^F9la7>!t0mwlU&JO_DZPL$A0nx`% zD5>_T8D1cOt-o?^Y3S&}ro1u$*%d9RSA6x%y@X+7 zS=2q^0y{1DTLE#JJXXQ+{OEiKxujH{v>+9n~QiveTf79k+<%#wtuW9|1=n*9n9|zaEv)D~@4fYfTcSkb&{biGGk)Qb928`WSG+Q9hKo0FWn45Dy?u zr05dhq(wmVS(}h&9UyaoBia|WCOTH_V6+C2#5M!xm`TDX0LhF}5zbS9oHFIU7m!Cx zkY58LE-DwTq#}9Tbrv`THS~-Zp7>=zt_NhcN%L8N=q*5$YZ)L-CYjyD$3%4(Ao@;? zpt_H6a2a*l1&GbHPX+SEXRFuboIGoo2(N~E@|4xV9 zjhO1<#ny(W2X0>s?j3ji50;oJwvS`+6DfNYFH@Pz_CH*aLA zCaPZG=qtcNhyMzQS!4ZxY=wA+R$l>RDL7M$5>$Txglf>R)eC@_TjgYIobNShBOQ>U zsDvPA3jsMDh2$cZTS0~?vc<7;raBO5dopXYtDzqasaVBIwwkUA0Ck}BaZgbP=043RM zLhwR>+qyta6vb^N*&KTuaG?gI!z5Am^;CxX4!>9bsD*2WfDP?l`g0~Yd!&J0h%pA^C5so|vKYk8tvJ_|4vIAnhs|Beyyjz6bF-IF zK9x22XagBnRC#Lh>6@eye3P!d9IkOPjy0WtsmLsPiYZJCc1kbn!`@Mlm;-1ribH;} z@0n}-Cz6X7K|e1QWGIk0{70j~>9Em*Yq9a@t-ADavOHhTPs@m(8Y}ENs;TIqxuhsE zcYIN!mq8S<+BlMybHs+cIKR_di-tm{GHIe+@^oAxoAB^o&JX(P=;C&-Wv%lQ!x1t6 zqfZxV>v5D145GQdi<=5R)uFwSe(sG7Td;w`TAo$3r-p3EG^6Jfm6E$n&QB4sTw}_K?wK(!Mj^EW_ zd_~ARzBVM$mCOH%7u9!rO9K_ysPQHo-Rl*vX0WUczS;+}CZ;E_r^qYXc%G-QxQy$Xo1ZpW z(hI1c7wq+7h1k&f4yswi`a9gsl7&dh#8DVq0Lncdg`H2u{iLky~|{!ydc`k zv>JN!tYa^}$;4SRF%1-4npiW=`gK6d|`tYQWA4oHQC7c zqK$WJ#rQf>FG)1>sI?&b%eq-~PudB~T2V~?F6xVz7b6D!C~%YI@{^b~*Q<+RI{TVC zZa1AE&FNyl079e0(Kd8OG%5v>7$;r}3)K11@`3Jxg#pw@i!25U4Ze-UgBu5(-eWQj zF(gN_DQ~aI>(OagdS!~ks=3@|-%NWw=E@S*H_^f4hLW^7FY=$D847nek%j4}V0*n( z!_gwecs43JRHVy2p@W&A&x;-#9`zdI$CBLdOzbx%Iw{^Ls&-O1I!ygE@^StkwkHs^ zr5Hs+NvWme(W!-?i*^yzZRqZbWj>&6aSYFH59S@ zqeaYzxuYUA%^Qw%T#}O2LoWAU8fjeO&pqm$uJA*#9WEV= zMSn69Cqs%3ooAz;pf1+!v;ixcCqFA*Q;9bDqc+#{K$r3Wz5|BDy8n5=*V*Q4!SOJ) z0LHen7<1LO)O06nRCla^T%PFP9pHv0d~$qQIBN9B_h`+T-HNGV8Zg(;I_m0iBP`DB zk^`p8xA%#<9L{gNXV;86#sgp4RqOpMdKN>u(ZQdWiXuEA24FFB8-n4u0P+!fbJLva NcuoC Date: Sat, 29 Oct 2022 09:28:35 -0500 Subject: [PATCH 16/29] c --- part2.c | 4 ++-- part2.exe | Bin 57710 -> 57710 bytes part3.c | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/part2.c b/part2.c index ea8efd6..e64b636 100644 --- a/part2.c +++ b/part2.c @@ -173,8 +173,8 @@ void readFileAndDoCacheHitOrMiss(int totalNumberOfBlocks, int nway, int blockSiz printf("==================================\n"); printf("Cache Hits: %d\n", d_cache.hits); printf("Cache Misses: %d\n", d_cache.misses); - printf("Cache Hit Rate : %0.9f%%\n", ((float)d_cache.hits / (float)(d_cache.hits + d_cache.misses))*100); - printf("Cache Miss Rate : %0.9f%%\n", ((float)d_cache.misses / (float)(d_cache.hits + d_cache.misses))*100); + printf("Cache Hit Rate : %0.3f%%\n", ((float)d_cache.hits / (float)(d_cache.hits + d_cache.misses))*100); + printf("Cache Miss Rate : %0.3f%%\n", ((float)d_cache.misses / (float)(d_cache.hits + d_cache.misses))*100); printf("\n"); fclose(fp); } diff --git a/part2.exe b/part2.exe index 92f629ccef9358377a5859e7f69fe9e2feb9c91b..71cea919351fcbff1b4fae1147880df142f238b1 100644 GIT binary patch delta 752 zcmaENi22_#MaJjMObn@;cd`E9Wc)LEGk+M6uO!OgR%H$uS_ZUA+zAom+cx1Dh_-zg*mekG63L=bJGO0lQ2mby4zc8l3 zfuZ$43H#yRZ45xLqaoda;W#Tulo80)ZJ6w+DCq(cZ2iXH+7A@!mTdv?Zu7S`f_S_g zK;G^ikkCo~mVH2>-5}N7&K%7@82MYBfu=Mc=4t%hFnOM$n`8^n-s3JRGC*YvFJAxs z{~xRvB>PuUR|2H5=u-0$h3L5W!=2xH_o#!^?QWRtq_luBVDn?8=bVfiHlNn{$}X@8 zXiy1n=Z6>0AOHV9&bDdt1(P$3nn4Fuf#l>#ZW27mCQRPy_7Y*b$mE^w)`CzAP>dFtEa`zurqaWj9ja&ZE)P5AO+N1u z86RwZzt)$LX%5RoMG@BjKzDxG9KL=zGZPEzrp;|kOkdb0e^@I$IerWK=2csJ7@0WO zfqbcn1}vMyw%0LoZ(wC$UL!qK)R$S_aB}P uOsVQeDj9*)!lU*~KNzWr`hMOJC^uR2qB0W$>t?@;3IYJq_6AA- delta 743 zcmZ`%T}V?=96$ei_u*!?nOD;^xHC;!8WT#eL0Pl8pjq@_4~@i}eNYdQJ}eNKY>Pxi z$3N($B%hLj1fD)Dmxwb)CDeSd$Oxo|t&(M+Hb}djlQDXz^Kk$F-{uxRaz8)<-{jRpnC{#ib;~qR*dzdyBkZ zF175brVF(?(3&?6E*-H*di@_{Ch3(4`FO&f|8LQ2ugpwa%>@#p|$YHZpX|aX<`OGDeRjo8T?|I^qQ3hAL>1)C%icq^IuP6@@j`D7_{K ziyB-SDa6M6S{i!L3j)zHye()^(S}EzkU6X-L}Vcma)PE@Tpnx945uj#qp1IJQYW~1 usu24lH`xO%o4yKc3_Uw2u(1%W;KT4Du4d!=t4gNfuGkJCrK0sQ+4u`S)&NQX diff --git a/part3.c b/part3.c index b11646d..47d7e73 100644 --- a/part3.c +++ b/part3.c @@ -269,16 +269,16 @@ int main(int argc, char *argv[]) printf("==================================\n"); printf("Cache Hits: %d\n", l1.hits); printf("Cache Misses: %d\n", l1.misses); - printf("Cache Hit Rate : %0.9f%%\n", ((float)l1.hits / (float)(l1.hits + l1.misses)) * 100); - printf("Cache Miss Rate : %0.9f%%\n", ((float)l1.misses / (float)(l1.hits + l1.misses)) * 100); + printf("Cache Hit Rate : %0.3f%%\n", ((float)l1.hits / (float)(l1.hits + l1.misses)) * 100); + printf("Cache Miss Rate : %0.3f%%\n", ((float)l1.misses / (float)(l1.hits + l1.misses)) * 100); printf("\n"); printf("\n==================================\n"); printf("Cache type: l2\n"); printf("==================================\n"); printf("Cache Hits: %d\n", l2.hits); printf("Cache Misses: %d\n", l2.misses); - printf("Cache Hit Rate : %0.9f%%\n", ((float)l2.hits / (float)(l2.hits + l2.misses)) * 100); - printf("Cache Miss Rate : %0.9f%%\n", ((float)l2.misses / (float)(l2.hits + l2.misses)) * 100); + printf("Cache Hit Rate : %0.3f%%\n", ((float)l2.hits / (float)(l2.hits + l2.misses)) * 100); + printf("Cache Miss Rate : %0.3f%%\n", ((float)l2.misses / (float)(l2.hits + l2.misses)) * 100); printf("\n"); } From 87cfaf8dbb27282350b28a351ce7a94bee54d918 Mon Sep 17 00:00:00 2001 From: GOPIKRISHNA44 Date: Sat, 29 Oct 2022 09:35:49 -0500 Subject: [PATCH 17/29] c --- hack.c | 22 +++++++++++----------- part2.c | 18 +++++++++--------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/hack.c b/hack.c index 220197a..824e30c 100644 --- a/hack.c +++ b/hack.c @@ -207,7 +207,7 @@ void performNwayAssociativeMappingforPart1() switch (ca) { case 1: - printf("\n\n====== STARTING EXECUTION FOR 16 BYTES cache line size ========== \n"); + printf("\n\n*********** STARTING EXECUTION FOR 16 BYTES cache line size **************** \n"); totalNumberOfBlocks = (int)cacheSize / 16; switch (selection) { @@ -229,7 +229,7 @@ void performNwayAssociativeMappingforPart1() break; case 2: - printf("\n\n====== STARTING EXECUTION FOR 32 BYTES cache line size ========== \n"); + printf("\n\n*********** STARTING EXECUTION FOR 32 BYTES cache line size **************** \n"); totalNumberOfBlocks = (int)cacheSize / 32; switch (selection) { @@ -251,7 +251,7 @@ void performNwayAssociativeMappingforPart1() break; case 3: - printf("\n\n====== STARTING EXECUTION FOR 128 BYTES cache line size ========== \n"); + printf("\n\n*********** STARTING FOR 128 BYTES cache line size **************** \n"); totalNumberOfBlocks = (int)cacheSize / 128; switch (selection) { @@ -277,13 +277,13 @@ void performNwayAssociativeMappingforPart1() - printf("===========XXXX EXECUTION ENDED XXXX ==========\n"); + printf("=============== EXECUTION ENDED ===============\n"); if(i==3 && j==8) - printf("Select 1 to continue the test cases, any other to exit: 0\n\n"); + printf("Select 1 to continue , any other to exit: 0\n\n"); else - printf("Select 1 to continue the test cases, any other to exit: 1\n\n"); + printf("Select 1 to continue , any other to exit: 1\n\n"); if(j==1) j=2; else if(j==2) @@ -326,7 +326,7 @@ void performNwayAssociativeMappingforPart2() case 1: cacheSize = 16 * 1024; totalNumberOfBlocks = (int)cacheSize / 64; - printf("\n\n====== STARTING EXECUTION OF 16kb cache size and 64 bytes cache line size/block size=======\n"); + printf("\n\n*********** STARTING EXECUTION OF 16kb cache size and 64 bytes cache line size/block size=======\n"); switch (selection) { case 8: @@ -348,7 +348,7 @@ void performNwayAssociativeMappingforPart2() break; case 2: - printf("\n\n====== STARTING EXECUTION OF 32kb cache size and 64 bytes cache line size/block size=======\n"); + printf("\n\n*********** STARTING EXECUTION OF 32kb cache size and 64 bytes cache line size/block size=======\n"); cacheSize = 32 * 1024; totalNumberOfBlocks = (int)cacheSize / 64; switch (selection) @@ -371,7 +371,7 @@ void performNwayAssociativeMappingforPart2() } break; case 3: - printf("\n\n====== STARTING EXECUTION OF 64kb cache size and 64 bytes cache line size/block size=======\n"); + printf("\n\n*********** STARTING EXECUTION OF 64kb cache size and 64 bytes cache line size/block size=======\n"); cacheSize = 64 * 1024; totalNumberOfBlocks = (int)cacheSize / 64; switch (selection) @@ -403,9 +403,9 @@ void performNwayAssociativeMappingforPart2() if(i==3 && j==8) - printf("Select 1 to continue the test cases, any other to exit: 0\n\n"); + printf("Select 1 to continue , any other to exit: 0\n\n"); else - printf("Select 1 to continue the test cases, any other to exit: 1\n\n"); + printf("Select 1 to continue , any other to exit: 1\n\n"); if(j==1) j=2; else if(j==2) diff --git a/part2.c b/part2.c index e64b636..ed624bd 100644 --- a/part2.c +++ b/part2.c @@ -201,7 +201,7 @@ void performNwayAssociativeMappingforPart1() switch (ca) { case 1: - printf("\n\n====== STARTING EXECUTION FOR 16 BYTES cache line size ========== \n"); + printf("\n\n*********** STARTING EXECUTION FOR 16 BYTES cache line size **************** \n"); totalNumberOfBlocks = (int)cacheSize / 16; switch (selection) { @@ -223,7 +223,7 @@ void performNwayAssociativeMappingforPart1() break; case 2: - printf("\n\n====== STARTING EXECUTION FOR 32 BYTES cache line size ========== \n"); + printf("\n\n*********** STARTING EXECUTION FOR 32 BYTES cache line size **************** \n"); totalNumberOfBlocks = (int)cacheSize / 32; switch (selection) { @@ -245,7 +245,7 @@ void performNwayAssociativeMappingforPart1() break; case 3: - printf("\n\n====== STARTING EXECUTION FOR 128 BYTES cache line size ========== \n"); + printf("\n\n*********** STARTING EXECUTION FOR 128 BYTES cache line size **************** \n"); totalNumberOfBlocks = (int)cacheSize / 128; switch (selection) { @@ -267,11 +267,11 @@ void performNwayAssociativeMappingforPart1() break; } - printf("===========XXXX EXECUTION ENDED XXXX ==========\n"); + printf("=============== EXECUTION ENDED ===============\n"); - printf("Select 1 to continue the test cases, any other to exit: "); + printf("Select 1 to continue , any other to exit: "); scanf("%d",&continueSelect); } while (continueSelect==1); @@ -297,7 +297,7 @@ void performNwayAssociativeMappingforPart2() { case 1: totalNumberOfBlocks = (int)cacheSize / 64; - printf("\n\n====== STARTING EXECUTION OF 16kb cache size and 64 bytes cache line size/block size=======\n"); + printf("\n\n*********** STARTING EXECUTION OF 16kb cache size and 64 bytes cache line size/block size=======\n"); switch (selection) { case 8: @@ -319,7 +319,7 @@ void performNwayAssociativeMappingforPart2() break; case 2: - printf("\n\n====== STARTING EXECUTION OF 32kb cache size and 64 bytes cache line size/block size=======\n"); + printf("\n\n*********** STARTING EXECUTION OF 32kb cache size and 64 bytes cache line size/block size=======\n"); cacheSize = 32 * 1024; totalNumberOfBlocks = (int)cacheSize / 64; switch (selection) @@ -342,7 +342,7 @@ void performNwayAssociativeMappingforPart2() } break; case 3: - printf("\n\n====== STARTING EXECUTION OF 64kb cache size and 64 bytes cache line size/block size=======\n"); + printf("\n\n*********** STARTING EXECUTION OF 64kb cache size and 64 bytes cache line size/block size=======\n"); cacheSize = 64 * 1024; totalNumberOfBlocks = (int)cacheSize / 64; switch (selection) @@ -370,7 +370,7 @@ void performNwayAssociativeMappingforPart2() } - printf("Select 1 to continue the test cases, any other to exit: "); + printf("Select 1 to continue , any other to exit: "); scanf("%d",&continueSelect); } while (continueSelect==1); From 3a82bfe7704e8ada6fb7eb658d894b44ec73e9e8 Mon Sep 17 00:00:00 2001 From: GOPIKRISHNA44 Date: Sat, 29 Oct 2022 09:40:56 -0500 Subject: [PATCH 18/29] c --- part2.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/part2.c b/part2.c index ed624bd..5a2d984 100644 --- a/part2.c +++ b/part2.c @@ -173,8 +173,8 @@ void readFileAndDoCacheHitOrMiss(int totalNumberOfBlocks, int nway, int blockSiz printf("==================================\n"); printf("Cache Hits: %d\n", d_cache.hits); printf("Cache Misses: %d\n", d_cache.misses); - printf("Cache Hit Rate : %0.3f%%\n", ((float)d_cache.hits / (float)(d_cache.hits + d_cache.misses))*100); - printf("Cache Miss Rate : %0.3f%%\n", ((float)d_cache.misses / (float)(d_cache.hits + d_cache.misses))*100); + printf("Cache Hit Rate : %0.1f%%\n", ((float)d_cache.hits / (float)(d_cache.hits + d_cache.misses))*100); + printf("Cache Miss Rate : %0.1f%%\n", ((float)d_cache.misses / (float)(d_cache.hits + d_cache.misses))*100); printf("\n"); fclose(fp); } From 78d93fe32f63154f9479b02bb7055dce683ad429 Mon Sep 17 00:00:00 2001 From: GOPIKRISHNA44 Date: Sat, 29 Oct 2022 09:41:22 -0500 Subject: [PATCH 19/29] c --- hack.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hack.c b/hack.c index 824e30c..6857b83 100644 --- a/hack.c +++ b/hack.c @@ -173,8 +173,8 @@ void readFileAndDoCacheHitOrMiss(int totalNumberOfBlocks, int nway, int blockSiz printf("==================================\n"); printf("Cache Hits: %d\n", d_cache.hits); printf("Cache Misses: %d\n", d_cache.misses); - printf("Cache Hit Rate : %0.9f%%\n", ((float)d_cache.hits / (float)(d_cache.hits + d_cache.misses))*100); - printf("Cache Miss Rate : %0.9f%%\n", ((float)d_cache.misses / (float)(d_cache.hits + d_cache.misses))*100); + printf("Cache Hit Rate : %0.1f%%\n", ((float)d_cache.hits / (float)(d_cache.hits + d_cache.misses))*100); + printf("Cache Miss Rate : %0.1f%%\n", ((float)d_cache.misses / (float)(d_cache.hits + d_cache.misses))*100); printf("\n"); fclose(fp); } From a16219c8bc8d52b1b68c29b2ff12bc8af8aa1a61 Mon Sep 17 00:00:00 2001 From: GOPIKRISHNA44 Date: Sat, 29 Oct 2022 09:59:43 -0500 Subject: [PATCH 20/29] c --- cachesim.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cachesim.c b/cachesim.c index e63ab7b..890de22 100644 --- a/cachesim.c +++ b/cachesim.c @@ -63,8 +63,8 @@ int main(int argc, char *argv[]) printf("==================================\n"); printf("Cache Hits: %d\n", d_cache.hits); printf("Cache Misses: %d\n", d_cache.misses); - printf("Cache Hit Rate: %f%%\n", ((float)d_cache.hits / ((float)d_cache.hits + (float)d_cache.misses)) *100); - printf("Cache Miss Rate: %f%%\n", ((float)d_cache.misses / ((float)d_cache.hits + (float)d_cache.misses))*100); + printf("Cache Hit Rate: %0.1f%%\n", ((float)d_cache.hits / ((float)d_cache.hits + (float)d_cache.misses)) *100); + printf("Cache Miss Rate: %0.1f%%\n", ((float)d_cache.misses / ((float)d_cache.hits + (float)d_cache.misses))*100); } From a31c675e23b108a3f901fcb642ce4d32aa6ce1ae Mon Sep 17 00:00:00 2001 From: GOPIKRISHNA44 Date: Sat, 29 Oct 2022 10:06:48 -0500 Subject: [PATCH 21/29] c --- cachesim.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cachesim.c b/cachesim.c index 890de22..e63ab7b 100644 --- a/cachesim.c +++ b/cachesim.c @@ -63,8 +63,8 @@ int main(int argc, char *argv[]) printf("==================================\n"); printf("Cache Hits: %d\n", d_cache.hits); printf("Cache Misses: %d\n", d_cache.misses); - printf("Cache Hit Rate: %0.1f%%\n", ((float)d_cache.hits / ((float)d_cache.hits + (float)d_cache.misses)) *100); - printf("Cache Miss Rate: %0.1f%%\n", ((float)d_cache.misses / ((float)d_cache.hits + (float)d_cache.misses))*100); + printf("Cache Hit Rate: %f%%\n", ((float)d_cache.hits / ((float)d_cache.hits + (float)d_cache.misses)) *100); + printf("Cache Miss Rate: %f%%\n", ((float)d_cache.misses / ((float)d_cache.hits + (float)d_cache.misses))*100); } From deeeaac6fcc3b769a25fe3fbf2300ea7dd201af3 Mon Sep 17 00:00:00 2001 From: BHARGAV Date: Sat, 29 Oct 2022 15:42:34 -0500 Subject: [PATCH 22/29] Update cachesim.c --- cachesim.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cachesim.c b/cachesim.c index e63ab7b..ec05927 100644 --- a/cachesim.c +++ b/cachesim.c @@ -60,7 +60,7 @@ int main(int argc, char *argv[]) /*Print out the results*/ printf("\n==================================\n"); printf("Cache type: Direct-Mapped Cache\n"); - printf("==================================\n"); + printf("*************************************\n"); printf("Cache Hits: %d\n", d_cache.hits); printf("Cache Misses: %d\n", d_cache.misses); printf("Cache Hit Rate: %f%%\n", ((float)d_cache.hits / ((float)d_cache.hits + (float)d_cache.misses)) *100); From d3af034f363076e08c335e73bbd7d5a1e0af2941 Mon Sep 17 00:00:00 2001 From: BHARGAV Date: Sat, 29 Oct 2022 16:25:35 -0500 Subject: [PATCH 23/29] Update cachesim.c --- cachesim.c | 58 +++++++++++++++++++++++++++--------------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/cachesim.c b/cachesim.c index ec05927..08cf119 100644 --- a/cachesim.c +++ b/cachesim.c @@ -30,41 +30,41 @@ int main(int argc, char *argv[]) #endif char* trace_file_name = argv[2]; - struct direct_mapped_cache d_cache; + struct direct_mapped_cache dir_cache; char mem_request[20]; uint64_t address; FILE *fp; - /* Initialization */ + /* variable_set_up */ for (int i=0; i= '0') { - binary = (binary*16) + (memory_addr[i] - '0'); + binary1 = (binary1*16) + (memory_addr[i] - '0'); } else { if(memory_addr[i] == 'a' || memory_addr[i] == 'A') { - binary = (binary*16) + 10; + binary1 = (binary1*16) + 10; } if(memory_addr[i] == 'b' || memory_addr[i] == 'B') { - binary = (binary*16) + 11; + binary1 = (binary1*16) + 11; } if(memory_addr[i] == 'c' || memory_addr[i] == 'C') { - binary = (binary*16) + 12; + binary1 = (binary1*16) + 12; } if(memory_addr[i] == 'd' || memory_addr[i] == 'D') { - binary = (binary*16) + 13; + binary1 = (binary1*16) + 13; } if(memory_addr[i] == 'e' || memory_addr[i] == 'E') { - binary = (binary*16) + 14; + binary1 = (binary1*16) + 14; } if(memory_addr[i] == 'f' || memory_addr[i] == 'F') { - binary = (binary*16) + 15; + binary1 = (binary*16) + 15; } } i++; } #ifdef DBG - printf("%s converted to %llu\n", memory_addr, binary); + printf("%s converted to %llu\n", memory_addr, binary1); #endif - return binary; + return binary1; } void direct_mapped_cache_access(struct direct_mapped_cache *cache, uint64_t address) @@ -119,7 +119,7 @@ void direct_mapped_cache_access(struct direct_mapped_cache *cache, uint64_t addr uint64_t tag = block_addr >> (unsigned)log2(NUM_BLOCKS); #ifdef DBG - printf("Memory address: %llu, Block address: %llu, Index: %llu, Tag: %llu ", address, block_addr, index, tag); + printf("The Memory address: %llu, The Block address: %llu, Index is: %llu, Tag is: %llu ", address, block_addr, index, tag); #endif if (cache->valid_field[index] && cache->tag_field[index] == tag) { /* Cache hit */ From 0c43a5c55a8a7396f7a56131a69a0d25db27ce13 Mon Sep 17 00:00:00 2001 From: BHARGAV Date: Sat, 29 Oct 2022 16:27:14 -0500 Subject: [PATCH 24/29] Update cachesim.c --- cachesim.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cachesim.c b/cachesim.c index 08cf119..2e93a69 100644 --- a/cachesim.c +++ b/cachesim.c @@ -100,7 +100,7 @@ uint64_t convert_address(char memory_addr[]) binary1 = (binary1*16) + 14; } if(memory_addr[i] == 'f' || memory_addr[i] == 'F') { - binary1 = (binary*16) + 15; + binary1 = (binary1*16) + 15; } } i++; From 861c50fa51c80ae3e8147b1d50bd72cc92d68e75 Mon Sep 17 00:00:00 2001 From: BHARGAV Date: Sat, 29 Oct 2022 16:33:50 -0500 Subject: [PATCH 25/29] Update cachesim.c --- cachesim.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/cachesim.c b/cachesim.c index 2e93a69..c683b77 100644 --- a/cachesim.c +++ b/cachesim.c @@ -77,39 +77,39 @@ uint64_t convert_address(char memory_addr[]) /* Conversion of the physical 32-bit address in the trace file to the form of "binary" \\ * (a uint64 that can have bitwise operations on it) */ { - uint64_t binary1 = 0; + uint64_t binary = 0; int i = 0; while (memory_addr[i] != '\n') { if (memory_addr[i] <= '9' && memory_addr[i] >= '0') { - binary1 = (binary1*16) + (memory_addr[i] - '0'); + binary = (binary*16) + (memory_addr[i] - '0'); } else { if(memory_addr[i] == 'a' || memory_addr[i] == 'A') { - binary1 = (binary1*16) + 10; + binary = (binary*16) + 10; } if(memory_addr[i] == 'b' || memory_addr[i] == 'B') { - binary1 = (binary1*16) + 11; + binary = (binary*16) + 11; } if(memory_addr[i] == 'c' || memory_addr[i] == 'C') { - binary1 = (binary1*16) + 12; + binary = (binary*16) + 12; } if(memory_addr[i] == 'd' || memory_addr[i] == 'D') { - binary1 = (binary1*16) + 13; + binary = (binary*16) + 13; } if(memory_addr[i] == 'e' || memory_addr[i] == 'E') { - binary1 = (binary1*16) + 14; + binary = (binary*16) + 14; } if(memory_addr[i] == 'f' || memory_addr[i] == 'F') { - binary1 = (binary1*16) + 15; + binary = (binary*16) + 15; } } i++; } #ifdef DBG - printf("%s converted to %llu\n", memory_addr, binary1); + printf("%s converted to %llu\n", memory_addr, binary); #endif - return binary1; + return binary; } void direct_mapped_cache_access(struct direct_mapped_cache *cache, uint64_t address) From 7726a778c47d6dd4a41ab4903aa507bb5ae1b3ae Mon Sep 17 00:00:00 2001 From: BHARGAV Date: Sat, 29 Oct 2022 16:38:38 -0500 Subject: [PATCH 26/29] Update cachesim.c --- cachesim.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cachesim.c b/cachesim.c index c683b77..afd0895 100644 --- a/cachesim.c +++ b/cachesim.c @@ -61,10 +61,10 @@ int main(int argc, char *argv[]) printf("\n==================================\n"); printf("The Cache type: Direct-Mapped Cache\n"); printf("*************************************\n"); - printf("Total_Cache_Hits: %d\n", dir_cache.hits); - printf("Total_Cache_Misses: %d\n", dir_cache.misses); - printf("Total_Cache_Hit-Rate: %f%%\n", ((float)dir_cache.hits / ((float)dir_cache.hits + (float)dir_cache.misses)) *100); - printf("Total_Miss-Rate: %f%%\n", ((float)dir_cache.misses / ((float)dir_cache.hits + (float)dir_cache.misses))*100); + printf("Number_of__Cache_Hits: %d\n", dir_cache.hits); + printf("Number_of_Cache_Misses: %d\n", dir_cache.misses); + printf("Number_of_Cache_Hit-Rate: %f%%\n", ((float)dir_cache.hits / ((float)dir_cache.hits + (float)dir_cache.misses)) *100); + printf("Number_of_Miss-Rate: %f%%\n", ((float)dir_cache.misses / ((float)dir_cache.hits + (float)dir_cache.misses))*100); } From 8c7eaafee42badda15797ba95f6636d18a9b2bff Mon Sep 17 00:00:00 2001 From: BHARGAV Date: Sat, 29 Oct 2022 17:26:24 -0500 Subject: [PATCH 27/29] Update part2.c --- part2.c | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/part2.c b/part2.c index 5a2d984..b9fcb6c 100644 --- a/part2.c +++ b/part2.c @@ -76,16 +76,16 @@ void readFileAndDoCacheHitOrMiss(int totalNumberOfBlocks, int nway, int blockSiz int hits; /* Hit count */ int misses; /* Miss count */ }; - struct direct_mapped_cache d_cache; + struct direct_mapped_cache dir_cache; /* Initialization */ for (int i = 0; i < totalNumberOfBlocks; i++) { - d_cache.valid_field[i] = 0; - d_cache.dirty_field[i] = 0; - d_cache.tag_field[i] = 0; + dir_cache.valid_field[i] = 0; + dir_cache.dirty_field[i] = 0; + dir_cache.tag_field[i] = 0; } - d_cache.hits = 0; - d_cache.misses = 0; + dir_cache.hits = 0; + dir_cache.misses = 0; char mem_request[20]; FILE *fp; @@ -119,13 +119,13 @@ void readFileAndDoCacheHitOrMiss(int totalNumberOfBlocks, int nway, int blockSiz { i++; // printf("%d ***********", loopIndex); - if (d_cache.valid_field[loopIndex] && d_cache.tag_field[loopIndex] == tag) + if (dir_cache.valid_field[loopIndex] && dir_cache.tag_field[loopIndex] == tag) { /* Cache hit */ - d_cache.hits += 1; + dir_cache.hits += 1; hitMade = 1; break; } - if (d_cache.valid_field[loopIndex] == 0) + if (dir_cache.valid_field[loopIndex] == 0) { isAnySpaceEmpty = 1; } @@ -137,7 +137,7 @@ void readFileAndDoCacheHitOrMiss(int totalNumberOfBlocks, int nway, int blockSiz if (hitMade == 0) { // printf("Hit was zero for the index %d", hitMade); - d_cache.misses += 1; + dir_cache.misses += 1; if (isAnySpaceEmpty > 0) { // printf("Going on empty"); @@ -145,11 +145,11 @@ void readFileAndDoCacheHitOrMiss(int totalNumberOfBlocks, int nway, int blockSiz loopIndex = startIndex; while (nwayTemp > 0) { - if (d_cache.valid_field[loopIndex] == 0) + if (dir_cache.valid_field[loopIndex] == 0) { // printf("\nInserting at the index : %d ", loopIndex); - d_cache.valid_field[loopIndex] = 1; - d_cache.tag_field[loopIndex] = tag; + dir_cache.valid_field[loopIndex] = 1; + dir_cache.tag_field[loopIndex] = tag; break; } @@ -163,18 +163,18 @@ void readFileAndDoCacheHitOrMiss(int totalNumberOfBlocks, int nway, int blockSiz int randomIndex = (rand() % (endIndex - startIndex + 1)) + startIndex; // printf("Picking a rand variable %d",randomIndex); - d_cache.valid_field[randomIndex] = 1; - d_cache.tag_field[randomIndex] = tag; + dir_cache.valid_field[randomIndex] = 1; + dir_cache.tag_field[randomIndex] = tag; } } } // printf("\n\n\n==================================\n"); // printf("Cache type:n-Mapped Cache\n with no of rows: %d, number of sets: %d", totalNumberOfBlocks, numberOfSets); printf("==================================\n"); - printf("Cache Hits: %d\n", d_cache.hits); - printf("Cache Misses: %d\n", d_cache.misses); - printf("Cache Hit Rate : %0.1f%%\n", ((float)d_cache.hits / (float)(d_cache.hits + d_cache.misses))*100); - printf("Cache Miss Rate : %0.1f%%\n", ((float)d_cache.misses / (float)(d_cache.hits + d_cache.misses))*100); + printf("Cache Hits: %d\n", dir_cache.hits); + printf("Cache Misses: %d\n", dir_cache.misses); + printf("Cache Hit Rate : %0.1f%%\n", ((float)dir_cache.hits / (float)(dir_cache.hits + dir_cache.misses))*100); + printf("Cache Miss Rate : %0.1f%%\n", ((float)dir_cache.misses / (float)(dir_cache.hits + dir_cache.misses))*100); printf("\n"); fclose(fp); } @@ -395,4 +395,4 @@ int main(int argc, char *argv[]) performNwayAssociativeMappingforPart2(); break; } -} \ No newline at end of file +} From 0d6ce2a727204a496a5edabc6120699a1d758e4e Mon Sep 17 00:00:00 2001 From: BHARGAV Date: Sat, 29 Oct 2022 17:37:59 -0500 Subject: [PATCH 28/29] Update part2.c --- part2.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/part2.c b/part2.c index b9fcb6c..bf56c38 100644 --- a/part2.c +++ b/part2.c @@ -15,7 +15,7 @@ char *trace_file_name; uint64_t convert_address(char memory_addr[]) -/* Converts the physical 32-bit address in the trace file to the "binary" \\ +/* Conversion of the physical 32-bit address in the trace file to the "binary" \\ * (a uint64 that can have bitwise operations on it) */ { uint64_t binary = 0; @@ -65,7 +65,7 @@ uint64_t convert_address(char memory_addr[]) void readFileAndDoCacheHitOrMiss(int totalNumberOfBlocks, int nway, int blockSize) { - // Every thing is ready , just call the file and do the hit + // Every thing is setup now , just call the file and do the hit int numberOfSets = totalNumberOfBlocks / nway; struct direct_mapped_cache { @@ -77,7 +77,7 @@ void readFileAndDoCacheHitOrMiss(int totalNumberOfBlocks, int nway, int blockSiz int misses; /* Miss count */ }; struct direct_mapped_cache dir_cache; - /* Initialization */ + /* Setup */ for (int i = 0; i < totalNumberOfBlocks; i++) { dir_cache.valid_field[i] = 0; @@ -92,7 +92,7 @@ void readFileAndDoCacheHitOrMiss(int totalNumberOfBlocks, int nway, int blockSiz fp = fopen(trace_file_name, "r"); uint64_t address; - // printf("%s IS THE FILENAME", trace_file_name); + // printf("%s IS_THE_FILENAME", trace_file_name); while (fgets(mem_request, 20, fp) != NULL) { // printf("%s", mem_request); @@ -109,7 +109,7 @@ void readFileAndDoCacheHitOrMiss(int totalNumberOfBlocks, int nway, int blockSiz int nwayTemp = nway; int loopIndex = startIndex; int i = 0; - // printf("Coming the tag %d \n",tag); + // printf("Coming_the_tag %d \n",tag); for (int j = startIndex; j <= endIndex; j++) { // printf("\n\n\n **** At Index: %d Valid Field %d TagField %d",j,d_cache.valid_field[j],d_cache.tag_field[j]); @@ -136,7 +136,7 @@ void readFileAndDoCacheHitOrMiss(int totalNumberOfBlocks, int nway, int blockSiz if (hitMade == 0) { - // printf("Hit was zero for the index %d", hitMade); + // printf("Hit_is_zero for the index %d", hitMade); dir_cache.misses += 1; if (isAnySpaceEmpty > 0) { @@ -147,7 +147,7 @@ void readFileAndDoCacheHitOrMiss(int totalNumberOfBlocks, int nway, int blockSiz { if (dir_cache.valid_field[loopIndex] == 0) { - // printf("\nInserting at the index : %d ", loopIndex); + // printf("\nInserting_in_at_the_index : %d ", loopIndex); dir_cache.valid_field[loopIndex] = 1; dir_cache.tag_field[loopIndex] = tag; break; @@ -159,10 +159,10 @@ void readFileAndDoCacheHitOrMiss(int totalNumberOfBlocks, int nway, int blockSiz } else { - // pick a random index and replace + // pick any index and replace int randomIndex = (rand() % (endIndex - startIndex + 1)) + startIndex; - // printf("Picking a rand variable %d",randomIndex); + // printf("Choosing_the_random_variable %d",randomIndex); dir_cache.valid_field[randomIndex] = 1; dir_cache.tag_field[randomIndex] = tag; } @@ -181,7 +181,7 @@ void readFileAndDoCacheHitOrMiss(int totalNumberOfBlocks, int nway, int blockSiz void startProcess(int cacheSize, int totalNumberOfBlocks, int nway, int blockSize) { - // printf("The below output is for cache with %dKB and %d bytes and %d way associative ", cacheSize, blockSize, nway); + // printf("Following_output is for cache with %dKB and %d bytes and %d way associative ", cacheSize, blockSize, nway); readFileAndDoCacheHitOrMiss(totalNumberOfBlocks, nway, blockSize); } @@ -201,7 +201,7 @@ void performNwayAssociativeMappingforPart1() switch (ca) { case 1: - printf("\n\n*********** STARTING EXECUTION FOR 16 BYTES cache line size **************** \n"); + printf("\n\n############### STARTING_THE_EXECUTION_OF_16_BYTES_cache_line_size **************** \n"); totalNumberOfBlocks = (int)cacheSize / 16; switch (selection) { @@ -223,7 +223,7 @@ void performNwayAssociativeMappingforPart1() break; case 2: - printf("\n\n*********** STARTING EXECUTION FOR 32 BYTES cache line size **************** \n"); + printf("\n\n*********** START_THE_EXECUTION_OF_32_BYTES_cache_line_size #################### \n"); totalNumberOfBlocks = (int)cacheSize / 32; switch (selection) { @@ -245,7 +245,7 @@ void performNwayAssociativeMappingforPart1() break; case 3: - printf("\n\n*********** STARTING EXECUTION FOR 128 BYTES cache line size **************** \n"); + printf("\n\n+++++++++++++++++++++EXECUTION_START_OF_128_BYTES_cache_line_size +++++++++++++++++++\n"); totalNumberOfBlocks = (int)cacheSize / 128; switch (selection) { @@ -267,7 +267,7 @@ void performNwayAssociativeMappingforPart1() break; } - printf("=============== EXECUTION ENDED ===============\n"); + printf("=============== END_OF_EXECUTION ===============\n"); @@ -297,7 +297,7 @@ void performNwayAssociativeMappingforPart2() { case 1: totalNumberOfBlocks = (int)cacheSize / 64; - printf("\n\n*********** STARTING EXECUTION OF 16kb cache size and 64 bytes cache line size/block size=======\n"); + printf("\n\n*^^^^^^^^^^^^^^^^ STARTING EXECUTION OF 16kb cache size and 64 bytes cache line size/block size ^^^^^^^^^^^^^\n"); switch (selection) { case 8: @@ -319,7 +319,7 @@ void performNwayAssociativeMappingforPart2() break; case 2: - printf("\n\n*********** STARTING EXECUTION OF 32kb cache size and 64 bytes cache line size/block size=======\n"); + printf("\n\n$$$$$$$$$$$$$$$$ STARTING EXECUTION OF 32kb cache size and 64 bytes cache line size/block size $$$$$$$$$$$$$$$$\n"); cacheSize = 32 * 1024; totalNumberOfBlocks = (int)cacheSize / 64; switch (selection) From 8452bc37445a31057f03a39aabd5b0b539c4d06f Mon Sep 17 00:00:00 2001 From: BHARGAV Date: Sat, 29 Oct 2022 17:45:56 -0500 Subject: [PATCH 29/29] Update part3.c --- part3.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/part3.c b/part3.c index 47d7e73..e97603e 100644 --- a/part3.c +++ b/part3.c @@ -27,7 +27,7 @@ struct L2Cache }; uint64_t convert_address(char memory_addr[]) -/* Converts the physical 32-bit address in the trace file to the "binary" \\ +/* Conversion of physical 32-bit address in the trace file to the "binary" \\ * (a uint64 that can have bitwise operations on it) */ { uint64_t binary = 0; @@ -264,25 +264,25 @@ int main(int argc, char *argv[]) insertDataInL1Cache(address, l1nway, &l1); } } - printf("\n==================================\n"); + printf("\n**********************************\n"); printf("Cache type: l1\n"); - printf("==================================\n"); - printf("Cache Hits: %d\n", l1.hits); - printf("Cache Misses: %d\n", l1.misses); - printf("Cache Hit Rate : %0.3f%%\n", ((float)l1.hits / (float)(l1.hits + l1.misses)) * 100); - printf("Cache Miss Rate : %0.3f%%\n", ((float)l1.misses / (float)(l1.hits + l1.misses)) * 100); + printf("************************************n"); + printf("Nof_Cache Hits: %d\n", l1.hits); + printf("Nof_Cache Misses: %d\n", l1.misses); + printf("Nof_Cache Hit Rate : %0.3f%%\n", ((float)l1.hits / (float)(l1.hits + l1.misses)) * 100); + printf("Nof_Cache Miss Rate : %0.3f%%\n", ((float)l1.misses / (float)(l1.hits + l1.misses)) * 100); printf("\n"); - printf("\n==================================\n"); + printf("\n+++++++++++++++++++++++++++++++\n"); printf("Cache type: l2\n"); - printf("==================================\n"); - printf("Cache Hits: %d\n", l2.hits); - printf("Cache Misses: %d\n", l2.misses); - printf("Cache Hit Rate : %0.3f%%\n", ((float)l2.hits / (float)(l2.hits + l2.misses)) * 100); - printf("Cache Miss Rate : %0.3f%%\n", ((float)l2.misses / (float)(l2.hits + l2.misses)) * 100); + printf("++++++++++++++++++++++++++++++++++\n"); + printf("Nof_Cache Hits: %d\n", l2.hits); + printf("Nof_Cache Misses: %d\n", l2.misses); + printf("Nof_Cache Hit Rate : %0.3f%%\n", ((float)l2.hits / (float)(l2.hits + l2.misses)) * 100); + printf("Nof_Cache Miss Rate : %0.3f%%\n", ((float)l2.misses / (float)(l2.hits + l2.misses)) * 100); printf("\n"); } fclose(fp); return 0; -} \ No newline at end of file +}