From 0d74de5c344af01ac0c55138935cff380fb9c8d8 Mon Sep 17 00:00:00 2001 From: LYC Date: Tue, 29 Oct 2024 16:42:20 +0800 Subject: [PATCH] finish 1-1 --- .vscode/settings.json | 7 + .../Project1/Proj1-1/Proj1-1/output/test.txt | 1046 +++++++++++++++++ .../Project1/Proj1-1/Proj1-1/output/test1.txt | 1046 +++++++++++++++++ .../Project1/Proj1-1/Proj1-1/output/test2.txt | 24 + .../Project1/Proj1-1/Proj1-1/output/test3.txt | 54 + .../Project1/Proj1-1/Proj1-1/output/test4.txt | 86 ++ .../Project1/Proj1-1/Proj1-1/output/test5.txt | 30 + cache/Project1/Proj1-1/Proj1-1/src/Makefile | 4 +- cache/Project1/Proj1-1/Proj1-1/src/cache.cc | 104 +- cache/Project1/Proj1-1/Proj1-1/src/cache.h | 119 +- cache/Project1/Proj1-1/Proj1-1/src/cache.o | Bin 0 -> 289328 bytes cache/Project1/Proj1-1/Proj1-1/src/main.cc | 10 +- cache/Project1/Proj1-1/Proj1-1/src/main.o | Bin 0 -> 289392 bytes cache/Project1/Proj1-1/Proj1-1/src/public.h | 3 + cache/Project1/Proj1-1/Proj1-1/src/sim_cache | Bin 0 -> 285200 bytes cache/Project1/Proj1-1/Proj1-1/src/test.sh | 22 + .../Proj1-1/Proj1-1/src/Makefile | 4 +- .../Proj1-1/Proj1-1/src/cache.o | Bin 0 -> 332512 bytes .../Proj1-1/Proj1-1/src/main.o | Bin 0 -> 194216 bytes .../Proj1-1/Proj1-1/src/para.o | Bin 0 -> 135072 bytes .../Proj1-1/Proj1-1/src/sim_cache | Bin 0 -> 309640 bytes .../Proj1-1/Proj1-1/src/test.txt | 1046 +++++++++++++++++ 22 files changed, 3557 insertions(+), 48 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 cache/Project1/Proj1-1/Proj1-1/output/test.txt create mode 100644 cache/Project1/Proj1-1/Proj1-1/output/test1.txt create mode 100644 cache/Project1/Proj1-1/Proj1-1/output/test2.txt create mode 100644 cache/Project1/Proj1-1/Proj1-1/output/test3.txt create mode 100644 cache/Project1/Proj1-1/Proj1-1/output/test4.txt create mode 100644 cache/Project1/Proj1-1/Proj1-1/output/test5.txt create mode 100644 cache/Project1/Proj1-1/Proj1-1/src/cache.o create mode 100644 cache/Project1/Proj1-1/Proj1-1/src/main.o create mode 100644 cache/Project1/Proj1-1/Proj1-1/src/sim_cache create mode 100644 cache/Project1/Proj1-1/Proj1-1/src/test.sh create mode 100644 cache/TJU-2023-Computer-Organization/Proj1-1/Proj1-1/src/cache.o create mode 100644 cache/TJU-2023-Computer-Organization/Proj1-1/Proj1-1/src/main.o create mode 100644 cache/TJU-2023-Computer-Organization/Proj1-1/Proj1-1/src/para.o create mode 100644 cache/TJU-2023-Computer-Organization/Proj1-1/Proj1-1/src/sim_cache create mode 100644 cache/TJU-2023-Computer-Organization/Proj1-1/Proj1-1/src/test.txt diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..29adecb --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "files.associations": { + "iomanip": "cpp", + "iosfwd": "cpp", + "vector": "cpp" + } +} \ No newline at end of file diff --git a/cache/Project1/Proj1-1/Proj1-1/output/test.txt b/cache/Project1/Proj1-1/Proj1-1/output/test.txt new file mode 100644 index 0000000..ff276f6 --- /dev/null +++ b/cache/Project1/Proj1-1/Proj1-1/output/test.txt @@ -0,0 +1,1046 @@ + ===== Simulator configuration ===== + L1_BLOCKSIZE: 16 + L1_SIZE: 16384 + L1_ASSOC: 1 + L1_REPLACEMENT_POLICY: 0 + L1_WRITE_POLICY: 0 + trace_file: gcc_trace.txt + =================================== + +===== L1 contents ===== +set 0: 10015 D +set 1: 10015 D +set 2: 10015 D +set 3: 10015 D +set 4: 10015 D +set 5: 10015 D +set 6: 10015 D +set 7: 10015 D +set 8: 10015 D +set 9: 10015 D +set 10: 10015 D +set 11: 10015 D +set 12: 10015 D +set 13: 10015 D +set 14: 10015 D +set 15: 10015 D +set 16: 10015 D +set 17: 10015 D +set 18: 10015 D +set 19: 10015 D +set 20: 10015 D +set 21: 10015 D +set 22: 10015 D +set 23: 10015 D +set 24: 10015 D +set 25: 10015 D +set 26: 10015 D +set 27: 10015 D +set 28: 10015 D +set 29: 10015 D +set 30: 10015 D +set 31: 10015 D +set 32: 10015 D +set 33: 10015 D +set 34: 1000e D +set 35: 10015 D +set 36: 10012 +set 37: 1000e D +set 38: 1000e D +set 39: 1000e D +set 40: 10015 D +set 41: 10015 D +set 42: 10015 D +set 43: 1000e +set 44: 10015 D +set 45: 10015 D +set 46: 10015 D +set 47: 1000c D +set 48: 10015 D +set 49: 10015 D +set 50: 10015 D +set 51: 10015 D +set 52: 10015 D +set 53: 10015 D +set 54: 10015 D +set 55: 10015 D +set 56: 10015 D +set 57: 10015 D +set 58: 10015 D +set 59: 10015 D +set 60: 10015 D +set 61: 1000e +set 62: 10015 D +set 63: 10015 D +set 64: 10015 D +set 65: 10015 D +set 66: 10015 D +set 67: 10015 D +set 68: 10015 D +set 69: 10015 D +set 70: 10015 D +set 71: 10015 D +set 72: 10015 D +set 73: 10015 D +set 74: 10015 D +set 75: 10015 D +set 76: 10015 D +set 77: 1000c D +set 78: 1000c D +set 79: 10015 D +set 80: 10015 D +set 81: 10015 D +set 82: 10015 D +set 83: 10015 D +set 84: 10015 D +set 85: 10015 D +set 86: 10015 D +set 87: 10015 D +set 88: 10015 D +set 89: 10015 D +set 90: 10015 D +set 91: 10011 D +set 92: 10015 D +set 93: 10015 D +set 94: 10011 D +set 95: 10011 D +set 96: 10015 D +set 97: 10011 D +set 98: 10015 D +set 99: 10015 D +set 100: 10011 D +set 101: 10015 D +set 102: 10015 D +set 103: 10015 D +set 104: 10015 D +set 105: 10015 D +set 106: 10015 D +set 107: 10015 D +set 108: 10011 D +set 109: 10015 D +set 110: 10015 D +set 111: 10015 D +set 112: 10015 D +set 113: 10015 D +set 114: 10015 D +set 115: 10015 D +set 116: 10015 D +set 117: 10015 D +set 118: 10015 D +set 119: 10015 D +set 120: 10015 D +set 121: 10015 D +set 122: 10015 D +set 123: 10015 D +set 124: 10015 D +set 125: 10015 D +set 126: 10015 D +set 127: 10015 D +set 128: 10015 D +set 129: 10015 D +set 130: 10015 D +set 131: 10015 D +set 132: 10015 D +set 133: 10015 D +set 134: 10015 D +set 135: 10015 D +set 136: 10015 D +set 137: 10015 D +set 138: 10015 D +set 139: 10015 D +set 140: 10015 D +set 141: 1000f D +set 142: 10015 D +set 143: 10015 D +set 144: 10015 D +set 145: 10015 D +set 146: 10015 D +set 147: 10015 D +set 148: 10015 D +set 149: 10015 D +set 150: 10015 D +set 151: 10015 D +set 152: 10015 D +set 153: 10015 D +set 154: 10015 D +set 155: 10015 D +set 156: 10015 D +set 157: 10015 D +set 158: 10015 D +set 159: 10015 D +set 160: 10015 D +set 161: 10015 D +set 162: 10015 D +set 163: 10015 D +set 164: 10015 D +set 165: 10015 D +set 166: 10015 D +set 167: 10015 D +set 168: 10015 D +set 169: 10015 D +set 170: 10015 D +set 171: 10015 D +set 172: 10015 D +set 173: 10015 D +set 174: 10015 D +set 175: 10015 D +set 176: 10015 D +set 177: 10015 D +set 178: 10015 D +set 179: 10015 D +set 180: 10015 D +set 181: 10015 D +set 182: 10015 D +set 183: 10015 D +set 184: 10015 D +set 185: 10015 D +set 186: 10015 D +set 187: 10015 D +set 188: 10015 D +set 189: 10015 D +set 190: 10015 D +set 191: 10015 D +set 192: 10015 D +set 193: 10015 D +set 194: 10015 D +set 195: 10015 D +set 196: 10015 D +set 197: 10015 D +set 198: 10015 D +set 199: 10015 D +set 200: 10015 D +set 201: 10015 D +set 202: 10015 D +set 203: 10015 D +set 204: 10015 D +set 205: 10015 D +set 206: 10015 D +set 207: 10015 D +set 208: 10015 D +set 209: 10015 D +set 210: 10015 D +set 211: 10015 D +set 212: 10015 D +set 213: 10015 D +set 214: 10015 D +set 215: 10015 D +set 216: 10015 D +set 217: 10015 D +set 218: 10015 D +set 219: 10015 D +set 220: 10015 D +set 221: 10015 D +set 222: 10015 D +set 223: 10015 D +set 224: 10015 D +set 225: 10015 D +set 226: 10015 D +set 227: 10015 D +set 228: 10015 D +set 229: 10015 D +set 230: 10015 D +set 231: 10015 D +set 232: 10015 D +set 233: 10015 D +set 234: 10015 D +set 235: 10015 D +set 236: 10015 D +set 237: 10015 D +set 238: 10015 D +set 239: 10015 D +set 240: 10015 D +set 241: 10015 D +set 242: 10015 D +set 243: 10015 D +set 244: 10015 D +set 245: 10015 D +set 246: 10007 +set 247: 10007 +set 248: 10007 +set 249: 10007 +set 250: 10007 +set 251: 10007 +set 252: 1000d D +set 253: 10007 +set 254: 1000d D +set 255: 10015 D +set 256: 10015 D +set 257: 10015 D +set 258: 10015 D +set 259: 10015 D +set 260: 10015 D +set 261: 10015 D +set 262: 10015 D +set 263: 10015 D +set 264: 10015 D +set 265: 10015 D +set 266: 10015 D +set 267: 10015 D +set 268: 10015 D +set 269: 10015 D +set 270: 10015 D +set 271: 10015 D +set 272: 10015 D +set 273: 10015 D +set 274: 10015 D +set 275: 10015 D +set 276: 10015 D +set 277: 10015 D +set 278: 10015 D +set 279: 10015 D +set 280: 10015 D +set 281: 10015 D +set 282: 10015 D +set 283: 10015 D +set 284: 10015 D +set 285: 1000d D +set 286: 10015 D +set 287: 10015 D +set 288: 10015 D +set 289: 10015 D +set 290: 10015 D +set 291: 10015 D +set 292: 10015 D +set 293: 1000a +set 294: 10015 D +set 295: 10015 D +set 296: 1000a +set 297: 10015 D +set 298: 10015 D +set 299: 10000 +set 300: 10000 +set 301: 10000 +set 302: 10000 +set 303: 10000 +set 304: 10000 +set 305: 10000 +set 306: 10000 +set 307: 10000 +set 308: 10000 +set 309: 10000 +set 310: 10000 +set 311: 10014 D +set 312: 1000c D +set 313: 1000c +set 314: 10014 D +set 315: 10014 D +set 316: 10014 D +set 317: 10014 D +set 318: 10014 D +set 319: 1000d D +set 320: 1000c +set 321: 10014 D +set 322: 10014 D +set 323: 10014 D +set 324: 1000c +set 325: 1000c +set 326: 10014 D +set 327: 1000c +set 328: 1000c +set 329: 10014 D +set 330: 1000c +set 331: 1000c +set 332: 10014 D +set 333: 1000c +set 334: 10014 D +set 335: 10014 D +set 336: 10014 D +set 337: 1000d +set 338: 1000d +set 339: 1000d +set 340: 1000d +set 341: 1000d +set 342: 1000d +set 343: 1000d +set 344: 1000c D +set 345: 1000d +set 346: 10014 D +set 347: 10014 D +set 348: 10014 D +set 349: 10014 D +set 350: 10014 D +set 351: 10014 D +set 352: 10014 D +set 353: 1000d +set 354: 10014 D +set 355: 10014 D +set 356: 10014 D +set 357: 10014 D +set 358: 10014 D +set 359: 10014 D +set 360: 10014 D +set 361: 10014 D +set 362: 10014 D +set 363: 10014 D +set 364: 10014 D +set 365: 10014 D +set 366: 10014 D +set 367: 10014 D +set 368: 10014 D +set 369: 10014 D +set 370: 10014 D +set 371: 10014 D +set 372: 10014 D +set 373: 1000d D +set 374: 10014 D +set 375: 1000d +set 376: 10014 D +set 377: 1000d +set 378: 1000d D +set 379: 10014 D +set 380: 10014 D +set 381: 10014 D +set 382: 10014 D +set 383: 10014 D +set 384: 10014 D +set 385: 10014 D +set 386: 10014 D +set 387: 10014 D +set 388: 10014 D +set 389: 10014 D +set 390: 10014 D +set 391: 1000d D +set 392: 10014 D +set 393: 10014 D +set 394: 10014 D +set 395: 10014 D +set 396: 1000d D +set 397: 10014 D +set 398: 1000d +set 399: 10014 D +set 400: 10014 D +set 401: 10014 D +set 402: 10014 D +set 403: 10014 D +set 404: 10014 D +set 405: 10014 D +set 406: 10014 D +set 407: 10014 D +set 408: 10014 D +set 409: 10014 D +set 410: 10014 D +set 411: 10014 D +set 412: 10014 D +set 413: 10014 D +set 414: 10014 D +set 415: 10014 D +set 416: 10014 D +set 417: 10014 D +set 418: 10014 D +set 419: 10014 D +set 420: 10014 D +set 421: 10014 D +set 422: 10014 D +set 423: 10014 D +set 424: 10014 D +set 425: 10014 D +set 426: 10014 D +set 427: 10014 D +set 428: 10014 D +set 429: 10014 D +set 430: 10014 D +set 431: 10014 D +set 432: 10014 D +set 433: 10014 D +set 434: 10014 D +set 435: 10014 D +set 436: 10014 D +set 437: 10014 D +set 438: 10014 D +set 439: 10014 D +set 440: 10014 D +set 441: 10014 D +set 442: 10014 D +set 443: 10014 D +set 444: 10014 D +set 445: 1000c D +set 446: 1000c D +set 447: 1000c D +set 448: 10014 D +set 449: 10014 D +set 450: 10014 D +set 451: 10014 D +set 452: 10014 D +set 453: 10014 D +set 454: 10014 D +set 455: 10014 D +set 456: 10014 D +set 457: 10014 D +set 458: 10014 D +set 459: 10015 D +set 460: 10015 D +set 461: 10015 D +set 462: 10015 D +set 463: 10015 D +set 464: 10015 D +set 465: 10015 D +set 466: 10015 D +set 467: 10015 D +set 468: 10015 D +set 469: 1000d +set 470: 10015 D +set 471: 10015 D +set 472: 10015 D +set 473: 10015 D +set 474: 10015 D +set 475: 10015 D +set 476: 10015 D +set 477: 10015 D +set 478: 10015 D +set 479: 10015 D +set 480: 1000e +set 481: 10015 D +set 482: 10015 D +set 483: 10015 D +set 484: 10015 D +set 485: 10015 D +set 486: 10015 D +set 487: 10015 D +set 488: 1000c D +set 489: 1000c D +set 490: 1000c D +set 491: 1000c D +set 492: 10015 D +set 493: 10015 D +set 494: 10015 D +set 495: 1000d D +set 496: 10015 D +set 497: 10015 D +set 498: 10015 D +set 499: 10015 D +set 500: 1000c D +set 501: 1000c D +set 502: 10015 D +set 503: 10015 D +set 504: 1000c D +set 505: 10015 D +set 506: 1000d D +set 507: 10015 D +set 508: 10015 D +set 509: 10015 D +set 510: 10015 D +set 511: 10015 D +set 512: 10015 D +set 513: 10015 D +set 514: 10015 D +set 515: 10015 D +set 516: 10015 D +set 517: 10015 D +set 518: 10015 D +set 519: 1000d D +set 520: 10015 D +set 521: 10015 D +set 522: 10015 D +set 523: 10015 D +set 524: 10015 D +set 525: 10015 D +set 526: 10015 D +set 527: 10015 D +set 528: 10015 D +set 529: 10015 D +set 530: 10015 D +set 531: 10015 D +set 532: 10015 D +set 533: 10015 D +set 534: 10015 D +set 535: 10015 D +set 536: 10015 D +set 537: 10015 D +set 538: 10015 D +set 539: 10015 D +set 540: 10015 D +set 541: 1000e +set 542: 10015 D +set 543: 10015 D +set 544: 1000e D +set 545: 1000e D +set 546: 1000e D +set 547: 10015 D +set 548: 10015 D +set 549: 10015 D +set 550: 10015 D +set 551: 10015 D +set 552: 10015 D +set 553: 10015 D +set 554: 1000f D +set 555: 1000f D +set 556: 1000f D +set 557: 1000f D +set 558: 1000f D +set 559: 1000f D +set 560: 1000f D +set 561: 1000f D +set 562: 1000f D +set 563: 1000f D +set 564: 1000f D +set 565: 1000f D +set 566: 1000f D +set 567: 1000f D +set 568: 1000f D +set 569: 1000f D +set 570: 1000e D +set 571: 1000e D +set 572: 1000f D +set 573: 1000f D +set 574: 1000f D +set 575: 1000e D +set 576: 1000f D +set 577: 1000f D +set 578: 1000f D +set 579: 1000f D +set 580: 1000f D +set 581: 1000f D +set 582: 1000f D +set 583: 1000f D +set 584: 1000f D +set 585: 1000f D +set 586: 1000f D +set 587: 1000d D +set 588: 1000d D +set 589: 1000d D +set 590: 1000d D +set 591: 1000d D +set 592: 1000d D +set 593: 1000d D +set 594: 1000d D +set 595: 1000d D +set 596: 1000d D +set 597: 1000f D +set 598: 1000d D +set 599: 10013 D +set 600: 1000f +set 601: 1000f D +set 602: 1000d D +set 603: 1000a +set 604: 10013 D +set 605: 1000d D +set 606: 1000d D +set 607: 10013 D +set 608: 1000f D +set 609: 1000f D +set 610: 1000a D +set 611: 1000f D +set 612: 1000f D +set 613: 1000f D +set 614: 1000f D +set 615: 1000f D +set 616: 1000f D +set 617: 10013 D +set 618: 1000c D +set 619: 1000c D +set 620: 10013 D +set 621: 10013 D +set 622: 10013 D +set 623: 10011 +set 624: 10011 D +set 625: 10013 D +set 626: 10013 D +set 627: 1000c D +set 628: 10013 D +set 629: 10013 D +set 630: 10013 D +set 631: 10013 D +set 632: 1000a D +set 633: 1000a +set 634: 1000d D +set 635: 1000d D +set 636: 1000d D +set 637: 1000d D +set 638: 10013 D +set 639: 1000e D +set 640: 1000a D +set 641: 1000f D +set 642: 1000d D +set 643: 10013 D +set 644: 10013 D +set 645: 10013 D +set 646: 10013 D +set 647: 10013 D +set 648: 10010 +set 649: 10013 D +set 650: 10013 D +set 651: 10013 D +set 652: 10013 D +set 653: 10013 D +set 654: 10013 D +set 655: 10013 D +set 656: 10013 D +set 657: 10013 D +set 658: 10013 D +set 659: 10013 D +set 660: 10010 D +set 661: 10010 D +set 662: 10010 D +set 663: 10013 D +set 664: 10010 D +set 665: 1000f D +set 666: 10010 D +set 667: 10010 D +set 668: 10010 D +set 669: 10010 D +set 670: 10010 D +set 671: 10010 D +set 672: 10010 D +set 673: 10010 D +set 674: 10010 D +set 675: 10010 D +set 676: 10010 D +set 677: 10010 D +set 678: 10010 D +set 679: 10010 D +set 680: 10010 D +set 681: 10010 D +set 682: 10010 D +set 683: 10010 D +set 684: 10010 D +set 685: 10010 D +set 686: 10010 D +set 687: 10010 D +set 688: 10010 D +set 689: 10010 D +set 690: 10010 D +set 691: 1000d D +set 692: 1000d D +set 693: 1000d D +set 694: 1000d D +set 695: 1000d D +set 696: 1000d D +set 697: 1000d D +set 698: 1000d D +set 699: 1000f D +set 700: 1000f D +set 701: 1000f D +set 702: 10010 D +set 703: 10010 D +set 704: 10010 D +set 705: 10010 D +set 706: 10010 D +set 707: 10010 D +set 708: 10010 D +set 709: 10010 D +set 710: 10010 D +set 711: 10010 D +set 712: 10010 D +set 713: 10010 D +set 714: 10010 D +set 715: 10010 D +set 716: 10010 D +set 717: 10010 D +set 718: 1000f D +set 719: 10010 D +set 720: 10010 D +set 721: 10010 D +set 722: 10010 D +set 723: 10010 D +set 724: 10010 D +set 725: 10010 D +set 726: 10010 D +set 727: 10010 D +set 728: 10010 D +set 729: 10010 D +set 730: 10010 D +set 731: 10010 D +set 732: 10010 D +set 733: 1000d D +set 734: 1000d D +set 735: 1000d D +set 736: 10010 D +set 737: 10014 D +set 738: 10014 D +set 739: 1000d +set 740: 1000f D +set 741: 10014 D +set 742: 10014 D +set 743: 10014 D +set 744: 10014 D +set 745: 10014 D +set 746: 10014 D +set 747: 10014 D +set 748: 10014 D +set 749: 10014 D +set 750: 10014 D +set 751: 10014 D +set 752: 10014 D +set 753: 1000f D +set 754: 10007 +set 755: 10007 +set 756: 10007 +set 757: 10014 D +set 758: 10014 D +set 759: 10014 D +set 760: 10014 D +set 761: 10014 D +set 762: 10007 +set 763: 10007 +set 764: 10007 +set 765: 10014 D +set 766: 1000c D +set 767: 1000c D +set 768: 1000c D +set 769: 1000c D +set 770: 1000c D +set 771: 1000c D +set 772: 1000c D +set 773: 1000c D +set 774: 10014 D +set 775: 10014 D +set 776: 10014 D +set 777: 10007 +set 778: 10014 D +set 779: 10014 D +set 780: 10014 D +set 781: 10014 D +set 782: 10014 D +set 783: 10014 D +set 784: 10014 D +set 785: 10014 D +set 786: 10014 D +set 787: 10014 D +set 788: 10014 D +set 789: 10014 D +set 790: 10014 D +set 791: 10014 D +set 792: 10007 +set 793: 10014 D +set 794: 10014 D +set 795: 10014 D +set 796: 10014 D +set 797: 10014 D +set 798: 10014 D +set 799: 1000f D +set 800: 10014 D +set 801: 10014 D +set 802: 10014 D +set 803: 10014 D +set 804: 10014 D +set 805: 10014 D +set 806: 10014 D +set 807: 10014 D +set 808: 10014 D +set 809: 10007 +set 810: 10014 D +set 811: 10014 D +set 812: 10014 D +set 813: 10007 +set 814: 10007 +set 815: 10007 +set 816: 10007 +set 817: 1000b D +set 818: 10007 +set 819: 10014 D +set 820: 10014 D +set 821: 10014 D +set 822: 10014 D +set 823: 10014 D +set 824: 10014 D +set 825: 1000b D +set 826: 10014 D +set 827: 10014 D +set 828: 10014 D +set 829: 10014 D +set 830: 10014 D +set 831: 10010 D +set 832: 1000b D +set 833: 10014 D +set 834: 10014 D +set 835: 10014 D +set 836: 10014 D +set 837: 10014 D +set 838: 10014 D +set 839: 1000b D +set 840: 10014 D +set 841: 1000b D +set 842: 1000b +set 843: 10014 D +set 844: 10014 D +set 845: 10014 D +set 846: 10007 +set 847: 10007 +set 848: 10014 D +set 849: 10007 +set 850: 10007 +set 851: 10014 D +set 852: 10007 +set 853: 10014 D +set 854: 10014 D +set 855: 10009 +set 856: 10009 +set 857: 10014 D +set 858: 10014 D +set 859: 10009 +set 860: 10009 +set 861: 10009 +set 862: 10014 D +set 863: 10009 +set 864: 10014 D +set 865: 10014 D +set 866: 10009 +set 867: 10009 +set 868: 10014 D +set 869: 10009 +set 870: 10014 D +set 871: 10014 D +set 872: 10014 D +set 873: 10014 D +set 874: 10014 D +set 875: 10014 D +set 876: 10010 D +set 877: 10014 D +set 878: 10014 D +set 879: 1000d D +set 880: 1000b D +set 881: 1000b D +set 882: 10014 D +set 883: 1000b D +set 884: 10014 D +set 885: 10014 D +set 886: 10014 D +set 887: 10014 D +set 888: 10014 D +set 889: 10014 D +set 890: 10014 D +set 891: 10014 D +set 892: 10014 D +set 893: 10014 D +set 894: 10014 D +set 895: 10014 D +set 896: 10014 D +set 897: 10014 D +set 898: 10014 D +set 899: 10014 D +set 900: 10014 D +set 901: 10014 D +set 902: 10014 D +set 903: 1000d D +set 904: 10014 D +set 905: 10014 D +set 906: 10014 D +set 907: 10014 D +set 908: 10014 D +set 909: 1000d D +set 910: 10014 D +set 911: 10014 D +set 912: 1ec0c D +set 913: 1000f D +set 914: 10014 D +set 915: 1ec0c D +set 916: 1000f D +set 917: 10014 D +set 918: 10014 D +set 919: 1ec0c D +set 920: 10014 D +set 921: 10014 D +set 922: 10014 D +set 923: 10014 D +set 924: 1000f D +set 925: 10014 D +set 926: 1000f D +set 927: 1000f D +set 928: 1ec0c D +set 929: 1000f D +set 930: 1000f D +set 931: 1000f D +set 932: 1000f D +set 933: 1000f D +set 934: 1000d D +set 935: 10014 D +set 936: 10014 D +set 937: 10014 D +set 938: 10014 D +set 939: 10014 D +set 940: 10014 D +set 941: 10014 D +set 942: 10014 D +set 943: 10014 D +set 944: 10014 D +set 945: 10014 D +set 946: 1000b D +set 947: 1000f D +set 948: 10014 D +set 949: 10014 D +set 950: 10014 D +set 951: 10014 D +set 952: 10014 D +set 953: 1000d +set 954: 1000d D +set 955: 10014 D +set 956: 1000f D +set 957: 10014 D +set 958: 10014 D +set 959: 10014 D +set 960: 10014 D +set 961: 10014 D +set 962: 10014 D +set 963: 10014 D +set 964: 10014 D +set 965: 10014 D +set 966: 10014 D +set 967: 10014 D +set 968: 10014 D +set 969: 10014 D +set 970: 10014 D +set 971: 10014 D +set 972: 10014 D +set 973: 1000f D +set 974: 10014 D +set 975: 1000f D +set 976: 1000f D +set 977: 1000f D +set 978: 1000c D +set 979: 10014 D +set 980: 10014 D +set 981: 10014 D +set 982: 10014 D +set 983: 10014 D +set 984: 1000f D +set 985: 1000f D +set 986: 10014 D +set 987: 1000f D +set 988: 10014 D +set 989: 10014 D +set 990: 10014 D +set 991: 10014 D +set 992: 10014 D +set 993: 10014 D +set 994: 10014 D +set 995: 10014 D +set 996: 10014 D +set 997: 10014 D +set 998: 10014 D +set 999: 10014 D +set1000: 10011 +set1001: 10011 +set1002: 10011 +set1003: 10011 +set1004: 10011 +set1005: 10011 +set1006: 10011 +set1007: 10011 +set1008: 10011 +set1009: 10011 +set1010: 10011 +set1011: 10011 +set1012: 10011 +set1013: 10011 +set1014: 10011 +set1015: 10011 +set1016: 10011 +set1017: 10014 D +set1018: 10014 D +set1019: 10014 D +set1020: 10014 D +set1021: 10014 D +set1022: 10014 D +set1023: 10014 D + + ====== Simulation results (raw) ====== + a. number of L1 reads: 63640 + b. number of L1 read misses: 2138 + c. number of L1 writes: 36360 + d. number of L1 write misses: 4579 + e. L1 miss rate: 0.0672 + f. number of writebacks from L1: 3939 + g. total memory traffic: 10656 + + ==== Simulation results (performance) ==== + 1. average access time: 1.7551 ns \ No newline at end of file diff --git a/cache/Project1/Proj1-1/Proj1-1/output/test1.txt b/cache/Project1/Proj1-1/Proj1-1/output/test1.txt new file mode 100644 index 0000000..ff276f6 --- /dev/null +++ b/cache/Project1/Proj1-1/Proj1-1/output/test1.txt @@ -0,0 +1,1046 @@ + ===== Simulator configuration ===== + L1_BLOCKSIZE: 16 + L1_SIZE: 16384 + L1_ASSOC: 1 + L1_REPLACEMENT_POLICY: 0 + L1_WRITE_POLICY: 0 + trace_file: gcc_trace.txt + =================================== + +===== L1 contents ===== +set 0: 10015 D +set 1: 10015 D +set 2: 10015 D +set 3: 10015 D +set 4: 10015 D +set 5: 10015 D +set 6: 10015 D +set 7: 10015 D +set 8: 10015 D +set 9: 10015 D +set 10: 10015 D +set 11: 10015 D +set 12: 10015 D +set 13: 10015 D +set 14: 10015 D +set 15: 10015 D +set 16: 10015 D +set 17: 10015 D +set 18: 10015 D +set 19: 10015 D +set 20: 10015 D +set 21: 10015 D +set 22: 10015 D +set 23: 10015 D +set 24: 10015 D +set 25: 10015 D +set 26: 10015 D +set 27: 10015 D +set 28: 10015 D +set 29: 10015 D +set 30: 10015 D +set 31: 10015 D +set 32: 10015 D +set 33: 10015 D +set 34: 1000e D +set 35: 10015 D +set 36: 10012 +set 37: 1000e D +set 38: 1000e D +set 39: 1000e D +set 40: 10015 D +set 41: 10015 D +set 42: 10015 D +set 43: 1000e +set 44: 10015 D +set 45: 10015 D +set 46: 10015 D +set 47: 1000c D +set 48: 10015 D +set 49: 10015 D +set 50: 10015 D +set 51: 10015 D +set 52: 10015 D +set 53: 10015 D +set 54: 10015 D +set 55: 10015 D +set 56: 10015 D +set 57: 10015 D +set 58: 10015 D +set 59: 10015 D +set 60: 10015 D +set 61: 1000e +set 62: 10015 D +set 63: 10015 D +set 64: 10015 D +set 65: 10015 D +set 66: 10015 D +set 67: 10015 D +set 68: 10015 D +set 69: 10015 D +set 70: 10015 D +set 71: 10015 D +set 72: 10015 D +set 73: 10015 D +set 74: 10015 D +set 75: 10015 D +set 76: 10015 D +set 77: 1000c D +set 78: 1000c D +set 79: 10015 D +set 80: 10015 D +set 81: 10015 D +set 82: 10015 D +set 83: 10015 D +set 84: 10015 D +set 85: 10015 D +set 86: 10015 D +set 87: 10015 D +set 88: 10015 D +set 89: 10015 D +set 90: 10015 D +set 91: 10011 D +set 92: 10015 D +set 93: 10015 D +set 94: 10011 D +set 95: 10011 D +set 96: 10015 D +set 97: 10011 D +set 98: 10015 D +set 99: 10015 D +set 100: 10011 D +set 101: 10015 D +set 102: 10015 D +set 103: 10015 D +set 104: 10015 D +set 105: 10015 D +set 106: 10015 D +set 107: 10015 D +set 108: 10011 D +set 109: 10015 D +set 110: 10015 D +set 111: 10015 D +set 112: 10015 D +set 113: 10015 D +set 114: 10015 D +set 115: 10015 D +set 116: 10015 D +set 117: 10015 D +set 118: 10015 D +set 119: 10015 D +set 120: 10015 D +set 121: 10015 D +set 122: 10015 D +set 123: 10015 D +set 124: 10015 D +set 125: 10015 D +set 126: 10015 D +set 127: 10015 D +set 128: 10015 D +set 129: 10015 D +set 130: 10015 D +set 131: 10015 D +set 132: 10015 D +set 133: 10015 D +set 134: 10015 D +set 135: 10015 D +set 136: 10015 D +set 137: 10015 D +set 138: 10015 D +set 139: 10015 D +set 140: 10015 D +set 141: 1000f D +set 142: 10015 D +set 143: 10015 D +set 144: 10015 D +set 145: 10015 D +set 146: 10015 D +set 147: 10015 D +set 148: 10015 D +set 149: 10015 D +set 150: 10015 D +set 151: 10015 D +set 152: 10015 D +set 153: 10015 D +set 154: 10015 D +set 155: 10015 D +set 156: 10015 D +set 157: 10015 D +set 158: 10015 D +set 159: 10015 D +set 160: 10015 D +set 161: 10015 D +set 162: 10015 D +set 163: 10015 D +set 164: 10015 D +set 165: 10015 D +set 166: 10015 D +set 167: 10015 D +set 168: 10015 D +set 169: 10015 D +set 170: 10015 D +set 171: 10015 D +set 172: 10015 D +set 173: 10015 D +set 174: 10015 D +set 175: 10015 D +set 176: 10015 D +set 177: 10015 D +set 178: 10015 D +set 179: 10015 D +set 180: 10015 D +set 181: 10015 D +set 182: 10015 D +set 183: 10015 D +set 184: 10015 D +set 185: 10015 D +set 186: 10015 D +set 187: 10015 D +set 188: 10015 D +set 189: 10015 D +set 190: 10015 D +set 191: 10015 D +set 192: 10015 D +set 193: 10015 D +set 194: 10015 D +set 195: 10015 D +set 196: 10015 D +set 197: 10015 D +set 198: 10015 D +set 199: 10015 D +set 200: 10015 D +set 201: 10015 D +set 202: 10015 D +set 203: 10015 D +set 204: 10015 D +set 205: 10015 D +set 206: 10015 D +set 207: 10015 D +set 208: 10015 D +set 209: 10015 D +set 210: 10015 D +set 211: 10015 D +set 212: 10015 D +set 213: 10015 D +set 214: 10015 D +set 215: 10015 D +set 216: 10015 D +set 217: 10015 D +set 218: 10015 D +set 219: 10015 D +set 220: 10015 D +set 221: 10015 D +set 222: 10015 D +set 223: 10015 D +set 224: 10015 D +set 225: 10015 D +set 226: 10015 D +set 227: 10015 D +set 228: 10015 D +set 229: 10015 D +set 230: 10015 D +set 231: 10015 D +set 232: 10015 D +set 233: 10015 D +set 234: 10015 D +set 235: 10015 D +set 236: 10015 D +set 237: 10015 D +set 238: 10015 D +set 239: 10015 D +set 240: 10015 D +set 241: 10015 D +set 242: 10015 D +set 243: 10015 D +set 244: 10015 D +set 245: 10015 D +set 246: 10007 +set 247: 10007 +set 248: 10007 +set 249: 10007 +set 250: 10007 +set 251: 10007 +set 252: 1000d D +set 253: 10007 +set 254: 1000d D +set 255: 10015 D +set 256: 10015 D +set 257: 10015 D +set 258: 10015 D +set 259: 10015 D +set 260: 10015 D +set 261: 10015 D +set 262: 10015 D +set 263: 10015 D +set 264: 10015 D +set 265: 10015 D +set 266: 10015 D +set 267: 10015 D +set 268: 10015 D +set 269: 10015 D +set 270: 10015 D +set 271: 10015 D +set 272: 10015 D +set 273: 10015 D +set 274: 10015 D +set 275: 10015 D +set 276: 10015 D +set 277: 10015 D +set 278: 10015 D +set 279: 10015 D +set 280: 10015 D +set 281: 10015 D +set 282: 10015 D +set 283: 10015 D +set 284: 10015 D +set 285: 1000d D +set 286: 10015 D +set 287: 10015 D +set 288: 10015 D +set 289: 10015 D +set 290: 10015 D +set 291: 10015 D +set 292: 10015 D +set 293: 1000a +set 294: 10015 D +set 295: 10015 D +set 296: 1000a +set 297: 10015 D +set 298: 10015 D +set 299: 10000 +set 300: 10000 +set 301: 10000 +set 302: 10000 +set 303: 10000 +set 304: 10000 +set 305: 10000 +set 306: 10000 +set 307: 10000 +set 308: 10000 +set 309: 10000 +set 310: 10000 +set 311: 10014 D +set 312: 1000c D +set 313: 1000c +set 314: 10014 D +set 315: 10014 D +set 316: 10014 D +set 317: 10014 D +set 318: 10014 D +set 319: 1000d D +set 320: 1000c +set 321: 10014 D +set 322: 10014 D +set 323: 10014 D +set 324: 1000c +set 325: 1000c +set 326: 10014 D +set 327: 1000c +set 328: 1000c +set 329: 10014 D +set 330: 1000c +set 331: 1000c +set 332: 10014 D +set 333: 1000c +set 334: 10014 D +set 335: 10014 D +set 336: 10014 D +set 337: 1000d +set 338: 1000d +set 339: 1000d +set 340: 1000d +set 341: 1000d +set 342: 1000d +set 343: 1000d +set 344: 1000c D +set 345: 1000d +set 346: 10014 D +set 347: 10014 D +set 348: 10014 D +set 349: 10014 D +set 350: 10014 D +set 351: 10014 D +set 352: 10014 D +set 353: 1000d +set 354: 10014 D +set 355: 10014 D +set 356: 10014 D +set 357: 10014 D +set 358: 10014 D +set 359: 10014 D +set 360: 10014 D +set 361: 10014 D +set 362: 10014 D +set 363: 10014 D +set 364: 10014 D +set 365: 10014 D +set 366: 10014 D +set 367: 10014 D +set 368: 10014 D +set 369: 10014 D +set 370: 10014 D +set 371: 10014 D +set 372: 10014 D +set 373: 1000d D +set 374: 10014 D +set 375: 1000d +set 376: 10014 D +set 377: 1000d +set 378: 1000d D +set 379: 10014 D +set 380: 10014 D +set 381: 10014 D +set 382: 10014 D +set 383: 10014 D +set 384: 10014 D +set 385: 10014 D +set 386: 10014 D +set 387: 10014 D +set 388: 10014 D +set 389: 10014 D +set 390: 10014 D +set 391: 1000d D +set 392: 10014 D +set 393: 10014 D +set 394: 10014 D +set 395: 10014 D +set 396: 1000d D +set 397: 10014 D +set 398: 1000d +set 399: 10014 D +set 400: 10014 D +set 401: 10014 D +set 402: 10014 D +set 403: 10014 D +set 404: 10014 D +set 405: 10014 D +set 406: 10014 D +set 407: 10014 D +set 408: 10014 D +set 409: 10014 D +set 410: 10014 D +set 411: 10014 D +set 412: 10014 D +set 413: 10014 D +set 414: 10014 D +set 415: 10014 D +set 416: 10014 D +set 417: 10014 D +set 418: 10014 D +set 419: 10014 D +set 420: 10014 D +set 421: 10014 D +set 422: 10014 D +set 423: 10014 D +set 424: 10014 D +set 425: 10014 D +set 426: 10014 D +set 427: 10014 D +set 428: 10014 D +set 429: 10014 D +set 430: 10014 D +set 431: 10014 D +set 432: 10014 D +set 433: 10014 D +set 434: 10014 D +set 435: 10014 D +set 436: 10014 D +set 437: 10014 D +set 438: 10014 D +set 439: 10014 D +set 440: 10014 D +set 441: 10014 D +set 442: 10014 D +set 443: 10014 D +set 444: 10014 D +set 445: 1000c D +set 446: 1000c D +set 447: 1000c D +set 448: 10014 D +set 449: 10014 D +set 450: 10014 D +set 451: 10014 D +set 452: 10014 D +set 453: 10014 D +set 454: 10014 D +set 455: 10014 D +set 456: 10014 D +set 457: 10014 D +set 458: 10014 D +set 459: 10015 D +set 460: 10015 D +set 461: 10015 D +set 462: 10015 D +set 463: 10015 D +set 464: 10015 D +set 465: 10015 D +set 466: 10015 D +set 467: 10015 D +set 468: 10015 D +set 469: 1000d +set 470: 10015 D +set 471: 10015 D +set 472: 10015 D +set 473: 10015 D +set 474: 10015 D +set 475: 10015 D +set 476: 10015 D +set 477: 10015 D +set 478: 10015 D +set 479: 10015 D +set 480: 1000e +set 481: 10015 D +set 482: 10015 D +set 483: 10015 D +set 484: 10015 D +set 485: 10015 D +set 486: 10015 D +set 487: 10015 D +set 488: 1000c D +set 489: 1000c D +set 490: 1000c D +set 491: 1000c D +set 492: 10015 D +set 493: 10015 D +set 494: 10015 D +set 495: 1000d D +set 496: 10015 D +set 497: 10015 D +set 498: 10015 D +set 499: 10015 D +set 500: 1000c D +set 501: 1000c D +set 502: 10015 D +set 503: 10015 D +set 504: 1000c D +set 505: 10015 D +set 506: 1000d D +set 507: 10015 D +set 508: 10015 D +set 509: 10015 D +set 510: 10015 D +set 511: 10015 D +set 512: 10015 D +set 513: 10015 D +set 514: 10015 D +set 515: 10015 D +set 516: 10015 D +set 517: 10015 D +set 518: 10015 D +set 519: 1000d D +set 520: 10015 D +set 521: 10015 D +set 522: 10015 D +set 523: 10015 D +set 524: 10015 D +set 525: 10015 D +set 526: 10015 D +set 527: 10015 D +set 528: 10015 D +set 529: 10015 D +set 530: 10015 D +set 531: 10015 D +set 532: 10015 D +set 533: 10015 D +set 534: 10015 D +set 535: 10015 D +set 536: 10015 D +set 537: 10015 D +set 538: 10015 D +set 539: 10015 D +set 540: 10015 D +set 541: 1000e +set 542: 10015 D +set 543: 10015 D +set 544: 1000e D +set 545: 1000e D +set 546: 1000e D +set 547: 10015 D +set 548: 10015 D +set 549: 10015 D +set 550: 10015 D +set 551: 10015 D +set 552: 10015 D +set 553: 10015 D +set 554: 1000f D +set 555: 1000f D +set 556: 1000f D +set 557: 1000f D +set 558: 1000f D +set 559: 1000f D +set 560: 1000f D +set 561: 1000f D +set 562: 1000f D +set 563: 1000f D +set 564: 1000f D +set 565: 1000f D +set 566: 1000f D +set 567: 1000f D +set 568: 1000f D +set 569: 1000f D +set 570: 1000e D +set 571: 1000e D +set 572: 1000f D +set 573: 1000f D +set 574: 1000f D +set 575: 1000e D +set 576: 1000f D +set 577: 1000f D +set 578: 1000f D +set 579: 1000f D +set 580: 1000f D +set 581: 1000f D +set 582: 1000f D +set 583: 1000f D +set 584: 1000f D +set 585: 1000f D +set 586: 1000f D +set 587: 1000d D +set 588: 1000d D +set 589: 1000d D +set 590: 1000d D +set 591: 1000d D +set 592: 1000d D +set 593: 1000d D +set 594: 1000d D +set 595: 1000d D +set 596: 1000d D +set 597: 1000f D +set 598: 1000d D +set 599: 10013 D +set 600: 1000f +set 601: 1000f D +set 602: 1000d D +set 603: 1000a +set 604: 10013 D +set 605: 1000d D +set 606: 1000d D +set 607: 10013 D +set 608: 1000f D +set 609: 1000f D +set 610: 1000a D +set 611: 1000f D +set 612: 1000f D +set 613: 1000f D +set 614: 1000f D +set 615: 1000f D +set 616: 1000f D +set 617: 10013 D +set 618: 1000c D +set 619: 1000c D +set 620: 10013 D +set 621: 10013 D +set 622: 10013 D +set 623: 10011 +set 624: 10011 D +set 625: 10013 D +set 626: 10013 D +set 627: 1000c D +set 628: 10013 D +set 629: 10013 D +set 630: 10013 D +set 631: 10013 D +set 632: 1000a D +set 633: 1000a +set 634: 1000d D +set 635: 1000d D +set 636: 1000d D +set 637: 1000d D +set 638: 10013 D +set 639: 1000e D +set 640: 1000a D +set 641: 1000f D +set 642: 1000d D +set 643: 10013 D +set 644: 10013 D +set 645: 10013 D +set 646: 10013 D +set 647: 10013 D +set 648: 10010 +set 649: 10013 D +set 650: 10013 D +set 651: 10013 D +set 652: 10013 D +set 653: 10013 D +set 654: 10013 D +set 655: 10013 D +set 656: 10013 D +set 657: 10013 D +set 658: 10013 D +set 659: 10013 D +set 660: 10010 D +set 661: 10010 D +set 662: 10010 D +set 663: 10013 D +set 664: 10010 D +set 665: 1000f D +set 666: 10010 D +set 667: 10010 D +set 668: 10010 D +set 669: 10010 D +set 670: 10010 D +set 671: 10010 D +set 672: 10010 D +set 673: 10010 D +set 674: 10010 D +set 675: 10010 D +set 676: 10010 D +set 677: 10010 D +set 678: 10010 D +set 679: 10010 D +set 680: 10010 D +set 681: 10010 D +set 682: 10010 D +set 683: 10010 D +set 684: 10010 D +set 685: 10010 D +set 686: 10010 D +set 687: 10010 D +set 688: 10010 D +set 689: 10010 D +set 690: 10010 D +set 691: 1000d D +set 692: 1000d D +set 693: 1000d D +set 694: 1000d D +set 695: 1000d D +set 696: 1000d D +set 697: 1000d D +set 698: 1000d D +set 699: 1000f D +set 700: 1000f D +set 701: 1000f D +set 702: 10010 D +set 703: 10010 D +set 704: 10010 D +set 705: 10010 D +set 706: 10010 D +set 707: 10010 D +set 708: 10010 D +set 709: 10010 D +set 710: 10010 D +set 711: 10010 D +set 712: 10010 D +set 713: 10010 D +set 714: 10010 D +set 715: 10010 D +set 716: 10010 D +set 717: 10010 D +set 718: 1000f D +set 719: 10010 D +set 720: 10010 D +set 721: 10010 D +set 722: 10010 D +set 723: 10010 D +set 724: 10010 D +set 725: 10010 D +set 726: 10010 D +set 727: 10010 D +set 728: 10010 D +set 729: 10010 D +set 730: 10010 D +set 731: 10010 D +set 732: 10010 D +set 733: 1000d D +set 734: 1000d D +set 735: 1000d D +set 736: 10010 D +set 737: 10014 D +set 738: 10014 D +set 739: 1000d +set 740: 1000f D +set 741: 10014 D +set 742: 10014 D +set 743: 10014 D +set 744: 10014 D +set 745: 10014 D +set 746: 10014 D +set 747: 10014 D +set 748: 10014 D +set 749: 10014 D +set 750: 10014 D +set 751: 10014 D +set 752: 10014 D +set 753: 1000f D +set 754: 10007 +set 755: 10007 +set 756: 10007 +set 757: 10014 D +set 758: 10014 D +set 759: 10014 D +set 760: 10014 D +set 761: 10014 D +set 762: 10007 +set 763: 10007 +set 764: 10007 +set 765: 10014 D +set 766: 1000c D +set 767: 1000c D +set 768: 1000c D +set 769: 1000c D +set 770: 1000c D +set 771: 1000c D +set 772: 1000c D +set 773: 1000c D +set 774: 10014 D +set 775: 10014 D +set 776: 10014 D +set 777: 10007 +set 778: 10014 D +set 779: 10014 D +set 780: 10014 D +set 781: 10014 D +set 782: 10014 D +set 783: 10014 D +set 784: 10014 D +set 785: 10014 D +set 786: 10014 D +set 787: 10014 D +set 788: 10014 D +set 789: 10014 D +set 790: 10014 D +set 791: 10014 D +set 792: 10007 +set 793: 10014 D +set 794: 10014 D +set 795: 10014 D +set 796: 10014 D +set 797: 10014 D +set 798: 10014 D +set 799: 1000f D +set 800: 10014 D +set 801: 10014 D +set 802: 10014 D +set 803: 10014 D +set 804: 10014 D +set 805: 10014 D +set 806: 10014 D +set 807: 10014 D +set 808: 10014 D +set 809: 10007 +set 810: 10014 D +set 811: 10014 D +set 812: 10014 D +set 813: 10007 +set 814: 10007 +set 815: 10007 +set 816: 10007 +set 817: 1000b D +set 818: 10007 +set 819: 10014 D +set 820: 10014 D +set 821: 10014 D +set 822: 10014 D +set 823: 10014 D +set 824: 10014 D +set 825: 1000b D +set 826: 10014 D +set 827: 10014 D +set 828: 10014 D +set 829: 10014 D +set 830: 10014 D +set 831: 10010 D +set 832: 1000b D +set 833: 10014 D +set 834: 10014 D +set 835: 10014 D +set 836: 10014 D +set 837: 10014 D +set 838: 10014 D +set 839: 1000b D +set 840: 10014 D +set 841: 1000b D +set 842: 1000b +set 843: 10014 D +set 844: 10014 D +set 845: 10014 D +set 846: 10007 +set 847: 10007 +set 848: 10014 D +set 849: 10007 +set 850: 10007 +set 851: 10014 D +set 852: 10007 +set 853: 10014 D +set 854: 10014 D +set 855: 10009 +set 856: 10009 +set 857: 10014 D +set 858: 10014 D +set 859: 10009 +set 860: 10009 +set 861: 10009 +set 862: 10014 D +set 863: 10009 +set 864: 10014 D +set 865: 10014 D +set 866: 10009 +set 867: 10009 +set 868: 10014 D +set 869: 10009 +set 870: 10014 D +set 871: 10014 D +set 872: 10014 D +set 873: 10014 D +set 874: 10014 D +set 875: 10014 D +set 876: 10010 D +set 877: 10014 D +set 878: 10014 D +set 879: 1000d D +set 880: 1000b D +set 881: 1000b D +set 882: 10014 D +set 883: 1000b D +set 884: 10014 D +set 885: 10014 D +set 886: 10014 D +set 887: 10014 D +set 888: 10014 D +set 889: 10014 D +set 890: 10014 D +set 891: 10014 D +set 892: 10014 D +set 893: 10014 D +set 894: 10014 D +set 895: 10014 D +set 896: 10014 D +set 897: 10014 D +set 898: 10014 D +set 899: 10014 D +set 900: 10014 D +set 901: 10014 D +set 902: 10014 D +set 903: 1000d D +set 904: 10014 D +set 905: 10014 D +set 906: 10014 D +set 907: 10014 D +set 908: 10014 D +set 909: 1000d D +set 910: 10014 D +set 911: 10014 D +set 912: 1ec0c D +set 913: 1000f D +set 914: 10014 D +set 915: 1ec0c D +set 916: 1000f D +set 917: 10014 D +set 918: 10014 D +set 919: 1ec0c D +set 920: 10014 D +set 921: 10014 D +set 922: 10014 D +set 923: 10014 D +set 924: 1000f D +set 925: 10014 D +set 926: 1000f D +set 927: 1000f D +set 928: 1ec0c D +set 929: 1000f D +set 930: 1000f D +set 931: 1000f D +set 932: 1000f D +set 933: 1000f D +set 934: 1000d D +set 935: 10014 D +set 936: 10014 D +set 937: 10014 D +set 938: 10014 D +set 939: 10014 D +set 940: 10014 D +set 941: 10014 D +set 942: 10014 D +set 943: 10014 D +set 944: 10014 D +set 945: 10014 D +set 946: 1000b D +set 947: 1000f D +set 948: 10014 D +set 949: 10014 D +set 950: 10014 D +set 951: 10014 D +set 952: 10014 D +set 953: 1000d +set 954: 1000d D +set 955: 10014 D +set 956: 1000f D +set 957: 10014 D +set 958: 10014 D +set 959: 10014 D +set 960: 10014 D +set 961: 10014 D +set 962: 10014 D +set 963: 10014 D +set 964: 10014 D +set 965: 10014 D +set 966: 10014 D +set 967: 10014 D +set 968: 10014 D +set 969: 10014 D +set 970: 10014 D +set 971: 10014 D +set 972: 10014 D +set 973: 1000f D +set 974: 10014 D +set 975: 1000f D +set 976: 1000f D +set 977: 1000f D +set 978: 1000c D +set 979: 10014 D +set 980: 10014 D +set 981: 10014 D +set 982: 10014 D +set 983: 10014 D +set 984: 1000f D +set 985: 1000f D +set 986: 10014 D +set 987: 1000f D +set 988: 10014 D +set 989: 10014 D +set 990: 10014 D +set 991: 10014 D +set 992: 10014 D +set 993: 10014 D +set 994: 10014 D +set 995: 10014 D +set 996: 10014 D +set 997: 10014 D +set 998: 10014 D +set 999: 10014 D +set1000: 10011 +set1001: 10011 +set1002: 10011 +set1003: 10011 +set1004: 10011 +set1005: 10011 +set1006: 10011 +set1007: 10011 +set1008: 10011 +set1009: 10011 +set1010: 10011 +set1011: 10011 +set1012: 10011 +set1013: 10011 +set1014: 10011 +set1015: 10011 +set1016: 10011 +set1017: 10014 D +set1018: 10014 D +set1019: 10014 D +set1020: 10014 D +set1021: 10014 D +set1022: 10014 D +set1023: 10014 D + + ====== Simulation results (raw) ====== + a. number of L1 reads: 63640 + b. number of L1 read misses: 2138 + c. number of L1 writes: 36360 + d. number of L1 write misses: 4579 + e. L1 miss rate: 0.0672 + f. number of writebacks from L1: 3939 + g. total memory traffic: 10656 + + ==== Simulation results (performance) ==== + 1. average access time: 1.7551 ns \ No newline at end of file diff --git a/cache/Project1/Proj1-1/Proj1-1/output/test2.txt b/cache/Project1/Proj1-1/Proj1-1/output/test2.txt new file mode 100644 index 0000000..37310cb --- /dev/null +++ b/cache/Project1/Proj1-1/Proj1-1/output/test2.txt @@ -0,0 +1,24 @@ + ===== Simulator configuration ===== + L1_BLOCKSIZE: 128 + L1_SIZE: 2048 + L1_ASSOC: 8 + L1_REPLACEMENT_POLICY: 0 + L1_WRITE_POLICY: 1 + trace_file: go_trace.txt + =================================== + +===== L1 contents ===== +set 0: 4004e0 400321 40031f 40040c 400320 40040b 4004e1 40040d +set 1: 40040c 4004e1 4008b3 400652 400320 40031f 40040d 4004e0 + + ====== Simulation results (raw) ====== + a. number of L1 reads: 60613 + b. number of L1 read misses: 984 + c. number of L1 writes: 39387 + d. number of L1 write misses: 26075 + e. L1 miss rate: 0.2706 + f. number of writebacks from L1: 0 + g. total memory traffic: 40371 + + ==== Simulation results (performance) ==== + 1. average access time: 7.1539 ns \ No newline at end of file diff --git a/cache/Project1/Proj1-1/Proj1-1/output/test3.txt b/cache/Project1/Proj1-1/Proj1-1/output/test3.txt new file mode 100644 index 0000000..b77427f --- /dev/null +++ b/cache/Project1/Proj1-1/Proj1-1/output/test3.txt @@ -0,0 +1,54 @@ + ===== Simulator configuration ===== + L1_BLOCKSIZE: 32 + L1_SIZE: 4096 + L1_ASSOC: 4 + L1_REPLACEMENT_POLICY: 0 + L1_WRITE_POLICY: 1 + trace_file: perl_trace.txt + =================================== + +===== L1 contents ===== +set 0: 10007a 10006d 10007b 100075 +set 1: 1000b4 10007b 100073 100035 +set 2: 100035 10007b 1000b3 1000b4 +set 3: 1000b0 1000a1 100035 10007b +set 4: 100035 10006f 1000b4 10007b +set 5: 10007b 100058 10007a 10006f +set 6: 100079 1000a1 10006f 10007a +set 7: 100035 1000a1 10007a 1000b3 +set 8: 10007b 10007a 1000b4 1000a1 +set 9: 10007a 10006f 100079 10007b +set 10: 1000b2 1000ad 1000ae 10007a +set 11: 10002e 1000b2 1000a9 10007a +set 12: 1ec0cf 1000a9 100035 10007a +set 13: 10007a 1000ad 1ec0cf 10006f +set 14: 1000b2 1000b3 1000ad 10007a +set 15: 10007a 1000ad 1000b2 1000b3 +set 16: 10006f 1000b3 1000b0 1000ad +set 17: 1000b2 1000b1 1000ad 1000af +set 18: 1000b1 1000b3 1000b2 1000ad +set 19: 1000ab 1000b3 1000ad 1ec0cf +set 20: 1000b3 1000ad 1000aa 10007a +set 21: 1000ad 1000b2 100008 10007a +set 22: 1ec0cf 10007a 100008 1000b3 +set 23: 1000b2 1000b3 100064 1ec0cf +set 24: 1000b0 1000a0 1000af 100077 +set 25: 1000ab 1000b1 1000b2 1000b0 +set 26: 10004e 1000b3 100031 10004c +set 27: 1000b3 1ec0cf 10004e 100031 +set 28: 10007a 1000b0 1000af 1000a0 +set 29: 1ec0ce 1000b0 10007a 1000b3 +set 30: 1000b3 1ec0ce 1000b1 1000b2 +set 31: 100074 1000b3 100077 1000b1 + + ====== Simulation results (raw) ====== + a. number of L1 reads: 70107 + b. number of L1 read misses: 4739 + c. number of L1 writes: 29893 + d. number of L1 write misses: 6850 + e. L1 miss rate: 0.1159 + f. number of writebacks from L1: 0 + g. total memory traffic: 34632 + + ==== Simulation results (performance) ==== + 1. average access time: 2.8532 ns \ No newline at end of file diff --git a/cache/Project1/Proj1-1/Proj1-1/output/test4.txt b/cache/Project1/Proj1-1/Proj1-1/output/test4.txt new file mode 100644 index 0000000..98b631c --- /dev/null +++ b/cache/Project1/Proj1-1/Proj1-1/output/test4.txt @@ -0,0 +1,86 @@ + ===== Simulator configuration ===== + L1_BLOCKSIZE: 64 + L1_SIZE: 8192 + L1_ASSOC: 2 + L1_REPLACEMENT_POLICY: 1 + L1_WRITE_POLICY: 0 + trace_file: gcc_trace.txt + =================================== + +===== L1 contents ===== +set 0: 40033 D 7b035 D +set 1: 40056 D 40033 D +set 2: 7b035 D 4001f +set 3: 40056 D 40055 D +set 4: 40055 D 40056 D +set 5: 40056 D 7b035 D +set 6: 42355 4001f +set 7: 4003f D 40056 D +set 8: 40038 D 40056 D +set 9: 40048 40038 D +set 10: 40029 40001 +set 11: 4001f 40001 +set 12: 40001 4001f +set 13: 40001 40051 D +set 14: 40031 D 40051 D +set 15: 40035 D 40051 D +set 16: 40051 D 40031 +set 17: 40051 D 40031 +set 18: 4002f 40031 +set 19: df8 4001f +set 20: 4001f 40036 D +set 21: 4001f 40027 +set 22: 40027 4003e +set 23: 40027 40051 D +set 24: 4002a D 4001f +set 25: df8 40044 D +set 26: 40051 D 4003e D +set 27: 40037 D 40051 D +set 28: 40051 D 4002f D +set 29: 40035 D 40051 D +set 30: 40051 D 40035 +set 31: 40055 D 40051 D +set 32: 40136 D 4003e D +set 33: 40035 D 40051 D +set 34: 40051 D 40055 D +set 35: 40035 D 40051 D +set 36: 40138 D 7b033 D +set 37: 7b033 D 40042 D +set 38: 40051 D 40055 D +set 39: 40051 D 40055 D +set 40: 7b033 D 40051 D +set 41: 40051 D 40055 D +set 42: 40051 D 40055 D +set 43: 40051 D 40055 D +set 44: 40051 D 40055 D +set 45: 40055 D 40051 D +set 46: 40051 D 40031 D +set 47: 40051 D 40031 D +set 48: 40051 D 40055 D +set 49: 40055 D 40051 D +set 50: 7b034 D 40051 D +set 51: 7b034 D 4003e D +set 52: 40054 D 40055 D +set 53: 7b034 D 40035 +set 54: 4003f D 40055 D +set 55: 40036 D 40055 D +set 56: 40055 D 40039 +set 57: 40022 D 4003e D +set 58: 40031 D 40047 +set 59: 40047 40055 D +set 60: 40047 7b034 D +set 61: 7b034 D 40047 +set 62: 4001e 40031 D +set 63: 4001c 40032 D + + ====== Simulation results (raw) ====== + a. number of L1 reads: 63640 + b. number of L1 read misses: 3492 + c. number of L1 writes: 36360 + d. number of L1 write misses: 2096 + e. L1 miss rate: 0.0559 + f. number of writebacks from L1: 2415 + g. total memory traffic: 8003 + + ==== Simulation results (performance) ==== + 1. average access time: 1.6684 ns \ No newline at end of file diff --git a/cache/Project1/Proj1-1/Proj1-1/output/test5.txt b/cache/Project1/Proj1-1/Proj1-1/output/test5.txt new file mode 100644 index 0000000..9d3124d --- /dev/null +++ b/cache/Project1/Proj1-1/Proj1-1/output/test5.txt @@ -0,0 +1,30 @@ + ===== Simulator configuration ===== + L1_BLOCKSIZE: 32 + L1_SIZE: 1024 + L1_ASSOC: 4 + L1_REPLACEMENT_POLICY: 1 + L1_WRITE_POLICY: 1 + trace_file: go_trace.txt + =================================== + +===== L1 contents ===== +set 0: 4004e0 400321 40040d 4004e1 +set 1: 4004e0 4004e1 40040d 4004df +set 2: 4004df 4004e1 40040d 4004e0 +set 3: 4004e1 4004e0 4004df 40040d +set 4: 4004e1 4008b3 40040d 400652 +set 5: 4004e0 4004df 400320 40040c +set 6: 4004df 40040c 4004e0 4004de +set 7: 40040c 4004df 4004e0 400320 + + ====== Simulation results (raw) ====== + a. number of L1 reads: 60613 + b. number of L1 read misses: 4893 + c. number of L1 writes: 39387 + d. number of L1 write misses: 33648 + e. L1 miss rate: 0.3854 + f. number of writebacks from L1: 0 + g. total memory traffic: 44280 + + ==== Simulation results (performance) ==== + 1. average access time: 8.4985 ns \ No newline at end of file diff --git a/cache/Project1/Proj1-1/Proj1-1/src/Makefile b/cache/Project1/Proj1-1/Proj1-1/src/Makefile index 2f5e676..19e2e25 100644 --- a/cache/Project1/Proj1-1/Proj1-1/src/Makefile +++ b/cache/Project1/Proj1-1/Proj1-1/src/Makefile @@ -1,6 +1,6 @@ CC = g++ -OPT = -O3 -m32 -#OPT = -g -m32 +#OPT = -O3 -m32 +OPT = -g WARN = -Wall CFLAGS = $(OPT) $(WARN) $(INC) $(LIB) diff --git a/cache/Project1/Proj1-1/Proj1-1/src/cache.cc b/cache/Project1/Proj1-1/Proj1-1/src/cache.cc index 5c1c877..6d7916f 100644 --- a/cache/Project1/Proj1-1/Proj1-1/src/cache.cc +++ b/cache/Project1/Proj1-1/Proj1-1/src/cache.cc @@ -40,7 +40,7 @@ Cache::Cache(char *argv[]) this->indexMask = ((1 << this->index) - 1) << this->offset; this->L1.resize(this->getMaxIndex()); - for (auto &s : L1 ) + for (auto &s : L1) s.block.resize(this->getAssoc()); } @@ -48,14 +48,23 @@ Cache::~Cache() { } -uint32_t Cache::getMaxIndex(){ - return (1<index); +void Cache::StWrite() { this->writeCount++; } +void Cache::StWriteMiss() { this->writeMiss++; } +void Cache::StRead() { this->readCount++; } +void Cache::StReadMiss() { this->readMiss++; } +void Cache::StWriteBack() { this->writeBack++; } + +uint32_t Cache::getMaxIndex() +{ + return (1 << this->index); } -uint32_t Cache::getAssoc() { - return this->assoc; - } -int Cache::log2_floor(uint32_t x) { - return x == 0 ? -1 : 31 - __builtin_clz(x); +uint32_t Cache::getAssoc() +{ + return this->assoc; +} +int Cache::log2_floor(uint32_t x) +{ + return x == 0 ? -1 : 31 - __builtin_clz(x); } CacheTIO Cache::Address2TIO(uint32_t addr) { @@ -65,8 +74,81 @@ CacheTIO Cache::Address2TIO(uint32_t addr) return {tag, index, offset}; } -void Cache::writeCache(uint32_t address){ +void Cache::useCache(uint32_t address, int method) +{ + (method == WRITE)?this->StWrite():this->StRead(); + + auto addr = this->Address2TIO(address); + auto set = &L1[addr.index]; + auto tag = addr.tag; + + auto hit = find_if( + set->block.begin(), + set->block.end(), + [tag](const Block &b) + { + return b.valid && b.tag == tag; + }); + + if (hit != set->block.end()) + { + // Cache Hit! + hit->countBlock++; + hit->lastUsed = this->lru++; + if (method == WRITE && this->writePolicy == WBWA) + { + hit->dirty = true; + } + return; + } + + if (method == WRITE) + { + this->StWriteMiss(); + } + else + { + this->StReadMiss(); + } + + if (method == WRITE && this->writePolicy == WTNA) + return; + + auto toReplace = find_if( + set->block.begin(), + set->block.end(), + [](const Block& b){ + return !b.valid; + } + ); + + if (toReplace == set->block.end()){ + // Replace + toReplace = min_element( + set->block.begin(), + set->block.end(), + this->replicementPolicy == LRU + ? + [](const Block &a, const Block &b){ return a.lastUsed < b.lastUsed; } + : + [](const Block&a, const Block&b){ return a.countBlock < b.countBlock; } + ); + } + + if (toReplace->dirty) { + // Write to the L2 or Disk + this->StWriteBack(); + } + + set->countSet = toReplace->countBlock; + + *toReplace = {addr.tag, set->countSet + 1, lru ++, (bool)method, true}; + + + return; } -void Cache::readCache(uint32_t address); -void Cache::useCache(uint32_t address, int method); \ No newline at end of file + +void Cache::printResult(){ + return ; +} \ No newline at end of file diff --git a/cache/Project1/Proj1-1/Proj1-1/src/cache.h b/cache/Project1/Proj1-1/Proj1-1/src/cache.h index 6b8a129..487924d 100644 --- a/cache/Project1/Proj1-1/Proj1-1/src/cache.h +++ b/cache/Project1/Proj1-1/Proj1-1/src/cache.h @@ -3,35 +3,40 @@ #include #include #include +#include + using namespace std; -struct CacheTIO { +struct CacheTIO +{ uint32_t tag, index, offset; }; -struct Block{ - uint32_t tag = 0; // tag - uint32_t cb = 0; // count block - uint32_t lu = 0; // Last Used - bool d = false; // dirty - bool v = false; // valid - bool operator<(const Block &t) {return cb < t.cb;} - friend ostream& operator<<(ostream& os, Block&b) { - os << "{tag:" << b.tag << ", Count-Block:" << b.cb << ", Last-Used:" << b.lu << ", Dirty:" << b.d << ", Valid:" << b.v << "}"; - return os; - } - +struct Block +{ + uint32_t tag = 0; // tag + uint32_t countBlock = 0; // count block + uint32_t lastUsed = 0; // Last Used + bool dirty = false; // dirty + bool valid = false; // valid + bool operator<(const Block &t) { return this->countBlock < t.countBlock; } + friend ostream &operator<<(ostream &os, Block &b) + { + os << "{tag:" << b.tag << ", Count-Block:" << b.countBlock << ", Last-Used:" << b.lastUsed << ", Dirty:" << b.dirty << ", Valid:" << b.valid << "}"; + return os; + } }; -struct Set { - uint32_t countSet = 0; // count set - vector block; // Blocks +struct Set +{ + uint32_t countSet = 0; // count set + vector block; // Blocks }; class Cache { private: - //Param + // Param int blockSize; // Block Size int size; // Size int assoc; // Assoc @@ -45,29 +50,85 @@ private: uint32_t offsetMask; // offset mask uint32_t indexMask; // index mask - //Count - int readCount = 0; // Read Count - int readMiss = 0; // Read Miss - int writeCount = 0; // Write Count - int writeMiss = 0; // Write Miss - int writeBack = 0; // Write Back - uint32_t lru = 0; // LRU Global Counter + // Statistic + int readCount = 0; // Read Count + int readMiss = 0; // Read Miss + int writeCount = 0; // Write Count + int writeMiss = 0; // Write Miss + int writeBack = 0; // Write Back + uint32_t lru = 0; // LRU Global Counter // main cache - vector L1; - + vector L1; + // L2 cache - Cache * L2; + Cache *L2; + public: Cache(char *argv[]); ~Cache(); - + uint32_t getMaxIndex(); uint32_t getAssoc(); - int log2_floor(uint32_t x) + int log2_floor(uint32_t x); + + void StWrite(); + void StWriteMiss(); + void StRead(); + void StReadMiss(); + void StWriteBack(); + + void writeCache(uint32_t address); void readCache(uint32_t address); void useCache(uint32_t address, int method); + void printResult(); + + double GetHT() { + return 0.25 + 2.5 * (size/ (512.0 * 1024)) + 0.025 * (blockSize/ 16.0) + 0.025 * assoc; + } + + double GetMP() { + return 20 + 0.5 * (blockSize / 16.0); + } + + + void printCache(ostream& os, Cache c,string filename){ + + os << " ===== Simulator configuration =====\n"; + os << " L1_BLOCKSIZE:" << setw(22) << c.blockSize << endl; + os << " L1_SIZE:" << setw(27) << c.size << endl; + os << " L1_ASSOC:" << setw(26) << c.assoc << endl; + os << " L1_REPLACEMENT_POLICY:" << setw(13) << c.replicementPolicy << endl; + os << " L1_WRITE_POLICY:" << setw(19) << c.writePolicy << endl; + os << " trace_file:" << setw(24) << filename << endl; + os << " ===================================\n\n"; + + os << "===== L1 contents =====" << endl; + for (uint32_t i=0;i!=c.L1.size();i++){ + os << "set" << setw(4) << i << ":"; + for(auto &b:c.L1[i].block) + os << hex << setw(8) << b.tag << ' ' << ((c.writePolicy == WBWA && b.dirty) ? 'D' : ' '); + os << endl << dec; + } + + os << "\n ====== Simulation results (raw) ======\n"; + os << " a. number of L1 reads:" << setw(16) << c.readCount << endl; + os << " b. number of L1 read misses:" << setw(10) << c.readMiss << endl; + os << " c. number of L1 writes:" << setw(15) << c.writeCount << endl; + os << " d. number of L1 write misses:" << setw(9) << c.writeMiss << endl; + double mr = (c.readMiss + c.writeMiss) / (double)(c.readCount + c.writeCount); + os << " e. L1 miss rate:" << setw(22) << fixed << setprecision(4) << mr << endl; + os << " f. number of writebacks from L1:" << setw(6) << c.writeBack << endl; + os << " g. total memory traffic:" << setw(14) << ((c.writePolicy) ? (c.readMiss + c.writeCount) : (c.readMiss + c.writeMiss + c.writeBack)); + os << "\n\n ==== Simulation results (performance) ====\n"; + double ht = c.GetHT(); + double mp = c.GetMP(); + os << " 1. average access time:" << setw(15) << ht + mr * mp << " ns"; + + //return os; + } + CacheTIO Address2TIO(uint32_t addr); }; diff --git a/cache/Project1/Proj1-1/Proj1-1/src/cache.o b/cache/Project1/Proj1-1/Proj1-1/src/cache.o new file mode 100644 index 0000000000000000000000000000000000000000..694c149b8c3177680dc8be6c71b643c2dc0fc1ad GIT binary patch literal 289328 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