Skip to content

Why is IPC Less Than 1? #541

Open
Open

Description

@icuuuuuuer

I am currently conducting research on the impact of DRAM bandwidth on the overall CPU system. During my investigation, I encountered an interesting phenomenon, which I have summarized into three questions:
1.When I set the CPU parameters quite aggressively and run 44 memory-intensive traces from SPEC2017, the geometric mean IPC still does not exceed 1. This seems counterintuitive, as an 8-wide issue CPU should typically have an IPC greater than 1. Could there be something unreasonable in my parameter settings? Below are my configurations, and I would greatly appreciate it if any experienced Champsim users could take a look and provide some feedback.
2.Is the following method correct for calculating the theoretical DRAM bandwidth? The amount of data (in GB) transferred per cycle: 8 / 1024 * 1024 * 1024, and the time per cycle (in seconds): 1 / 2554000000. When dividing GB by the time in seconds, the calculated DDR bandwidth comes out to be 19GB/s. Is this calculation accurate?
3.Lastly, can increasing or decreasing DDR bandwidth be achieved simply by adjusting the frequency parameter?
Thank you very much in advance for your time and assistance!

{
    "executable_name": "champsim",
    "block_size": 64,
    "page_size": 4096,
    "heartbeat_frequency": 10000000,
    "num_cores": 1,

    "ooo_cpu": [
        {
            "frequency": 4000,
            "ifetch_buffer_size":64,
            "decode_buffer_size":64,
            "dispatch_buffer_size":64,
            "rob_size": 512,
            "lq_size": 128,
            "sq_size": 72,
            "fetch_width": 8,
            "decode_width": 8,
           "dispatch_width": 8,
            "execute_width": 8,
            "lq_width": 3,
            "sq_width": 3,
            "retire_width": 8,
            "mispredict_penalty": 20,
            "scheduler_size": 128,
            "decode_latency": 2,
            "dispatch_latency": 1,
            "schedule_latency": 0,
            "execute_latency": 0,
            "branch_predictor": "hashed_perceptron",
            "btb": "basic_btb"
        }
    ],

    "DIB": {
        "window_size": 16,
        "sets": 32,
        "ways": 8
    },

    "L1I": {
        "sets": 256,
        "ways": 4,
        "rq_size": 64,
        "wq_size": 64,
        "pq_size": 32,
        "mshr_size": 12,
        "latency": 3,
        "max_tag_check": 4,
        "max_fill": 4,
        "prefetch_as_load": false,
        "virtual_prefetch": true,
        "prefetch_activate": "LOAD,PREFETCH",
        "prefetcher": "no_instr",
        "replacement": "lru"
    }, 

    "L1D": {
        "sets": 256,
        "ways": 4,
        "rq_size": 64,
        "wq_size": 64,
        "pq_size": 16,
        "mshr_size": 84,
        "latency": 3,
        "max_tag_check": 4,
        "max_fill": 4,
        "prefetch_as_load": false,
        "virtual_prefetch": false,
        "prefetch_activate": "LOAD,PREFETCH",
        "prefetcher": "no",
        "replacement": "lru"
    }, 

    "L2C": {
        "sets": 2048,
        "ways": 8,
        "rq_size": 32,
        "wq_size": 32,
        "pq_size": 50000,
        "mshr_size": 64,
        "latency": 5,
        "max_tag_check": 2,
        "max_fill": 2,
        "prefetch_as_load": false,
        "virtual_prefetch": false,
        "prefetch_activate": "LOAD,PREFETCH",
        "prefetcher": "no",
        "replacement": "srrip"
    },

    "ITLB": {
        "sets": 16,
        "ways": 4,
        "rq_size": 16,
        "wq_size": 16,
        "pq_size": 8,
        "mshr_size": 8,
        "latency": 1,
        "max_tag_check": 2,
        "max_fill": 2,
        "prefetch_as_load": false,
        "replacement": "lru"
    },

    "DTLB": {
        "sets": 16,
        "ways": 4,
        "rq_size": 16,
        "wq_size": 16,
        "pq_size": 8,
        "mshr_size": 8,
        "latency": 1,
        "max_tag_check": 2,
        "max_fill": 2,
        "prefetch_as_load": false,
        "replacement": "lru"
    },

    "STLB": {
        "sets": 96,
        "ways": 16,
        "rq_size": 32,
        "wq_size": 32,
        "pq_size": 8,
        "mshr_size": 16,
        "latency": 8,
        "max_tag_check": 1,
        "max_fill": 1,
        "prefetch_as_load": false,
        "replacement": "lru"
    },

	"PTW": {
		"pscl5_set": 1,
		"pscl5_way": 2,
		"pscl4_set": 1,
		"pscl4_way": 4,
		"pscl3_set": 2,
		"pscl3_way": 4,
		"pscl2_set": 4,
		"pscl2_way": 8,
		"rq_size": 16,
		"mshr_size": 5,
		"max_read": 2,
		"max_write": 2
	},

    "LLC": {
        "frequency": 4000,
        "sets":  1536,
        "ways": 32, 
        "rq_size":  32,
        "wq_size":  32,
        "pq_size":  5000,
        "mshr_size":  80,
        "latency": 31,
        "max_tag_check": 1,
        "max_fill": 1,
        "prefetch_as_load": false,
        "virtual_prefetch": false,
        "prefetch_activate": "LOAD,PREFETCH",
        "prefetcher": "no",
        "replacement": "drrip"
    },

    "physical_memory": {
        "frequency": 2554,
        "channels": 1,
        "ranks": 1,
        "banks": 8,
        "rows": 65536,
        "columns": 128,
        "channel_width": 8,
        "wq_size": 64,
        "rq_size": 64,
        "tRP": 12.5,
        "tRCD": 12.5,
        "tCAS": 12.5,
        "turn_around_time": 7.5
    },

    "virtual_memory": {
        "pte_page_size": 4096,
        "num_levels": 5,
        "minor_fault_penalty": 200
    }
}

Traces:

602.gcc_s-1850B.champsimtrace.xz
602.gcc_s-2226B.champsimtrace.xz
602.gcc_s-2375B.champsimtrace.xz
602.gcc_s-734B.champsimtrace.xz
603.bwaves_s-1740B.champsimtrace.xz
603.bwaves_s-2609B.champsimtrace.xz
603.bwaves_s-2931B.champsimtrace.xz
603.bwaves_s-891B.champsimtrace.xz
605.mcf_s-1152B.champsimtrace.xz
605.mcf_s-1536B.champsimtrace.xz
605.mcf_s-1554B.champsimtrace.xz
605.mcf_s-1644B.champsimtrace.xz
605.mcf_s-472B.champsimtrace.xz
605.mcf_s-484B.champsimtrace.xz
605.mcf_s-665B.champsimtrace.xz
605.mcf_s-782B.champsimtrace.xz
605.mcf_s-994B.champsimtrace.xz
607.cactuBSSN_s-2421B.champsimtrace.xz
607.cactuBSSN_s-3477B.champsimtrace.xz
607.cactuBSSN_s-4004B.champsimtrace.xz
619.lbm_s-2676B.champsimtrace.xz
619.lbm_s-2677B.champsimtrace.xz
619.lbm_s-3766B.champsimtrace.xz
619.lbm_s-4268B.champsimtrace.xz
620.omnetpp_s-141B.champsimtrace.xz
620.omnetpp_s-874B.champsimtrace.xz
621.wrf_s-6673B.champsimtrace.xz
621.wrf_s-8065B.champsimtrace.xz
623.xalancbmk_s-10B.champsimtrace.xz
623.xalancbmk_s-165B.champsimtrace.xz
623.xalancbmk_s-202B.champsimtrace.xz
627.cam4_s-490B.champsimtrace.xz
628.pop2_s-17B.champsimtrace.xz
649.fotonik3d_s-10881B.champsimtrace.xz
649.fotonik3d_s-1176B.champsimtrace.xz
649.fotonik3d_s-7084B.champsimtrace.xz
649.fotonik3d_s-8225B.champsimtrace.xz
654.roms_s-1007B.champsimtrace.xz
654.roms_s-1070B.champsimtrace.xz
654.roms_s-1390B.champsimtrace.xz
654.roms_s-293B.champsimtrace.xz
654.roms_s-294B.champsimtrace.xz
654.roms_s-523B.champsimtrace.xz
657.xz_s-2302B.champsimtrace.xz

Results:

602.gcc_s-1850B.champsimtrace_output.txt: 2.59 IPC, Accuracy: None, Timeliness: None, Bandwidth: 11.0 GB/S
602.gcc_s-2226B.champsimtrace_output.txt: 0.8119 IPC, Accuracy: None, Timeliness: None, Bandwidth: 13.47 GB/S
602.gcc_s-2375B.champsimtrace_output.txt: 1.593 IPC, Accuracy: None, Timeliness: None, Bandwidth: 0.47 GB/S
602.gcc_s-734B.champsimtrace_output.txt: 2.679 IPC, Accuracy: None, Timeliness: None, Bandwidth: 5.99 GB/S
603.bwaves_s-1740B.champsimtrace_output.txt: 0.7039 IPC, Accuracy: None, Timeliness: None, Bandwidth: 3.28 GB/S
603.bwaves_s-2609B.champsimtrace_output.txt: 0.7017 IPC, Accuracy: None, Timeliness: None, Bandwidth: 3.26 GB/S
603.bwaves_s-2931B.champsimtrace_output.txt: 0.6283 IPC, Accuracy: None, Timeliness: None, Bandwidth: 3.05 GB/S
603.bwaves_s-891B.champsimtrace_output.txt: 3.73 IPC, Accuracy: None, Timeliness: None, Bandwidth: 13.87 GB/S
605.mcf_s-1152B.champsimtrace_output.txt: 0.3592 IPC, Accuracy: None, Timeliness: None, Bandwidth: 1.6 GB/S
605.mcf_s-1536B.champsimtrace_output.txt: 0.4634 IPC, Accuracy: None, Timeliness: None, Bandwidth: 5.43 GB/S
605.mcf_s-1554B.champsimtrace_output.txt: 0.6155 IPC, Accuracy: None, Timeliness: None, Bandwidth: 5.13 GB/S
605.mcf_s-1644B.champsimtrace_output.txt: 0.1253 IPC, Accuracy: None, Timeliness: None, Bandwidth: 4.42 GB/S
605.mcf_s-472B.champsimtrace_output.txt: 0.6634 IPC, Accuracy: None, Timeliness: None, Bandwidth: 5.89 GB/S
605.mcf_s-484B.champsimtrace_output.txt: 0.6601 IPC, Accuracy: None, Timeliness: None, Bandwidth: 5.25 GB/S
605.mcf_s-665B.champsimtrace_output.txt: 0.4465 IPC, Accuracy: None, Timeliness: None, Bandwidth: 1.3 GB/S
605.mcf_s-782B.champsimtrace_output.txt: 0.1199 IPC, Accuracy: None, Timeliness: None, Bandwidth: 2.04 GB/S
605.mcf_s-994B.champsimtrace_output.txt: 0.5694 IPC, Accuracy: None, Timeliness: None, Bandwidth: 2.13 GB/S
607.cactuBSSN_s-2421B.champsimtrace_output.txt: 1.463 IPC, Accuracy: None, Timeliness: None, Bandwidth: 3.14 GB/S
607.cactuBSSN_s-3477B.champsimtrace_output.txt: 3.051 IPC, Accuracy: None, Timeliness: None, Bandwidth: 2.39 GB/S
607.cactuBSSN_s-4004B.champsimtrace_output.txt: 2.802 IPC, Accuracy: None, Timeliness: None, Bandwidth: 2.3 GB/S
619.lbm_s-2676B.champsimtrace_output.txt: 0.2944 IPC, Accuracy: None, Timeliness: None, Bandwidth: 4.08 GB/S
619.lbm_s-2677B.champsimtrace_output.txt: 0.2082 IPC, Accuracy: None, Timeliness: None, Bandwidth: 4.15 GB/S
619.lbm_s-3766B.champsimtrace_output.txt: 0.4426 IPC, Accuracy: None, Timeliness: None, Bandwidth: 3.97 GB/S
619.lbm_s-4268B.champsimtrace_output.txt: 0.2086 IPC, Accuracy: None, Timeliness: None, Bandwidth: 4.14 GB/S
620.omnetpp_s-141B.champsimtrace_output.txt: 0.8806 IPC, Accuracy: None, Timeliness: None, Bandwidth: 3.06 GB/S
620.omnetpp_s-874B.champsimtrace_output.txt: 0.9511 IPC, Accuracy: None, Timeliness: None, Bandwidth: 2.98 GB/S
621.wrf_s-6673B.champsimtrace_output.txt: 0.5347 IPC, Accuracy: None, Timeliness: None, Bandwidth: 3.78 GB/S
621.wrf_s-8065B.champsimtrace_output.txt: 1.684 IPC, Accuracy: None, Timeliness: None, Bandwidth: 4.09 GB/S
623.xalancbmk_s-10B.champsimtrace_output.txt: 1.86 IPC, Accuracy: None, Timeliness: None, Bandwidth: 4.16 GB/S
623.xalancbmk_s-165B.champsimtrace_output.txt: 4.668 IPC, Accuracy: None, Timeliness: None, Bandwidth: 1.75 GB/S
623.xalancbmk_s-202B.champsimtrace_output.txt: 3.103 IPC, Accuracy: None, Timeliness: None, Bandwidth: 10.54 GB/S
627.cam4_s-490B.champsimtrace_output.txt: 2.472 IPC, Accuracy: None, Timeliness: None, Bandwidth: 2.71 GB/S
628.pop2_s-17B.champsimtrace_output.txt: 3.002 IPC, Accuracy: None, Timeliness: None, Bandwidth: 3.55 GB/S
649.fotonik3d_s-10881B.champsimtrace_output.txt: 0.6033 IPC, Accuracy: None, Timeliness: None, Bandwidth: 4.11 GB/S
649.fotonik3d_s-1176B.champsimtrace_output.txt: 1.323 IPC, Accuracy: None, Timeliness: None, Bandwidth: 5.54 GB/S
649.fotonik3d_s-7084B.champsimtrace_output.txt: 0.915 IPC, Accuracy: None, Timeliness: None, Bandwidth: 4.71 GB/S
649.fotonik3d_s-8225B.champsimtrace_output.txt: 1.314 IPC, Accuracy: None, Timeliness: None, Bandwidth: 5.5 GB/S
654.roms_s-1007B.champsimtrace_output.txt: 1.334 IPC, Accuracy: None, Timeliness: None, Bandwidth: 1.69 GB/S
654.roms_s-1070B.champsimtrace_output.txt: 0.6004 IPC, Accuracy: None, Timeliness: None, Bandwidth: 3.89 GB/S
654.roms_s-1390B.champsimtrace_output.txt: 0.8392 IPC, Accuracy: None, Timeliness: None, Bandwidth: 4.66 GB/S
654.roms_s-293B.champsimtrace_output.txt: 2.496 IPC, Accuracy: None, Timeliness: None, Bandwidth: 3.93 GB/S
654.roms_s-294B.champsimtrace_output.txt: 1.325 IPC, Accuracy: None, Timeliness: None, Bandwidth: 3.82 GB/S
654.roms_s-523B.champsimtrace_output.txt: 0.9354 IPC, Accuracy: None, Timeliness: None, Bandwidth: 5.51 GB/S
657.xz_s-2302B.champsimtrace_output.txt: 1.203 IPC, Accuracy: None, Timeliness: None, Bandwidth: 0.8 GB/S
geomean:0.9322
bin/champsim --warmup_instructions 50000000 --simulation_instructions 50000000  ./traces
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions