#include #include #include "fib/fib.h" #include "git-tag.h" #include "sim/sim.h" #include "sim/queue.h" #include "uarch/exec.h" #include "uarch/fetch.h" #include "uarch/memory.h" #include "uarch/types.h" int main(int argc, const char *argv[]) { std::cout << "Version " << GIT_TAG << "\n"; fib::Fib<3> fib; sim::Scheduler sched; sim::Queue fillreqq(sched, 1); sim::Queue fillfetchq(sched, 0); sim::Queue fillexecq(sched, 0); sim::Queue storeq(sched, 1); sim::Queue execq(sched, 0); auto fetch = new uarch::FetchStage(sched, fib, fillreqq, fillfetchq, execq); auto exec = new uarch::ExecStage(sched, execq, fillreqq, fillexecq, storeq); auto mem = new uarch::MemStage(sched, fillreqq, {&fillfetchq, &fillexecq}, storeq); while (true) { std::cout << "\n*** cycle " << sched.now << "\n\n"; sched.clock(); } delete fetch; delete exec; delete mem; return 0; }