cpu: `Minor' in-order CPU model
authorAndrew Bardsley <Andrew.Bardsley@arm.com>
Wed, 23 Jul 2014 21:09:04 +0000 (16:09 -0500)
committerAndrew Bardsley <Andrew.Bardsley@arm.com>
Wed, 23 Jul 2014 21:09:04 +0000 (16:09 -0500)
commit0e8a90f06bd3db00f700891a33458353478cce76
tree50742efcc18254a36e80029b522139e8bd601dc2
parent040fa23d01109c68d194d2517df777844e4e2f13
cpu: `Minor' in-order CPU model

This patch contains a new CPU model named `Minor'. Minor models a four
stage in-order execution pipeline (fetch lines, decompose into
macroops, decompose macroops into microops, execute).

The model was developed to support the ARM ISA but should be fixable
to support all the remaining gem5 ISAs. It currently also works for
Alpha, and regressions are included for ARM and Alpha (including Linux
boot).

Documentation for the model can be found in src/doc/inside-minor.doxygen and
its internal operations can be visualised using the Minorview tool
utils/minorview.py.

Minor was designed to be fairly simple and not to engage in a lot of
instruction annotation. As such, it currently has very few gathered
stats and may lack other gem5 features.

Minor is faster than the o3 model. Sample results:

     Benchmark     |   Stat host_seconds (s)
    ---------------+--------v--------v--------
     (on ARM, opt) | simple | o3     | minor
                   | timing | timing | timing
    ---------------+--------+--------+--------
    10.linux-boot  |   169  |  1883  |  1075
    10.mcf         |   117  |   967  |   491
    20.parser      |   668  |  6315  |  3146
    30.eon         |   542  |  3413  |  2414
    40.perlbmk     |  2339  | 20905  | 11532
    50.vortex      |   122  |  1094  |   588
    60.bzip2       |  2045  | 18061  |  9662
    70.twolf       |   207  |  2736  |  1036
56 files changed:
build_opts/ALPHA
build_opts/ARM
configs/common/CpuConfig.py
src/base/trace.hh
src/cpu/SConscript
src/cpu/TimingExpr.py [new file with mode: 0644]
src/cpu/minor/MinorCPU.py [new file with mode: 0644]
src/cpu/minor/SConscript [new file with mode: 0644]
src/cpu/minor/SConsopts [new file with mode: 0644]
src/cpu/minor/activity.cc [new file with mode: 0644]
src/cpu/minor/activity.hh [new file with mode: 0644]
src/cpu/minor/buffers.hh [new file with mode: 0644]
src/cpu/minor/cpu.cc [new file with mode: 0644]
src/cpu/minor/cpu.hh [new file with mode: 0644]
src/cpu/minor/decode.cc [new file with mode: 0644]
src/cpu/minor/decode.hh [new file with mode: 0644]
src/cpu/minor/dyn_inst.cc [new file with mode: 0644]
src/cpu/minor/dyn_inst.hh [new file with mode: 0644]
src/cpu/minor/exec_context.hh [new file with mode: 0644]
src/cpu/minor/execute.cc [new file with mode: 0644]
src/cpu/minor/execute.hh [new file with mode: 0644]
src/cpu/minor/fetch1.cc [new file with mode: 0644]
src/cpu/minor/fetch1.hh [new file with mode: 0644]
src/cpu/minor/fetch2.cc [new file with mode: 0644]
src/cpu/minor/fetch2.hh [new file with mode: 0644]
src/cpu/minor/func_unit.cc [new file with mode: 0644]
src/cpu/minor/func_unit.hh [new file with mode: 0644]
src/cpu/minor/lsq.cc [new file with mode: 0644]
src/cpu/minor/lsq.hh [new file with mode: 0644]
src/cpu/minor/pipe_data.cc [new file with mode: 0644]
src/cpu/minor/pipe_data.hh [new file with mode: 0644]
src/cpu/minor/pipeline.cc [new file with mode: 0644]
src/cpu/minor/pipeline.hh [new file with mode: 0644]
src/cpu/minor/scoreboard.cc [new file with mode: 0644]
src/cpu/minor/scoreboard.hh [new file with mode: 0644]
src/cpu/minor/stats.cc [new file with mode: 0644]
src/cpu/minor/stats.hh [new file with mode: 0644]
src/cpu/minor/trace.hh [new file with mode: 0644]
src/cpu/pred/SConscript
src/cpu/static_inst.hh
src/cpu/timing_expr.cc [new file with mode: 0644]
src/cpu/timing_expr.hh [new file with mode: 0644]
src/doc/inside-minor.doxygen [new file with mode: 0644]
src/sim/SConscript
src/sim/TickedObject.py [new file with mode: 0644]
src/sim/ticked_object.cc [new file with mode: 0644]
src/sim/ticked_object.hh [new file with mode: 0644]
util/minorview.py [new file with mode: 0755]
util/minorview/__init__.py [new file with mode: 0644]
util/minorview/blobs.py [new file with mode: 0644]
util/minorview/colours.py [new file with mode: 0644]
util/minorview/minor.pic [new file with mode: 0644]
util/minorview/model.py [new file with mode: 0644]
util/minorview/parse.py [new file with mode: 0644]
util/minorview/point.py [new file with mode: 0644]
util/minorview/view.py [new file with mode: 0644]