SESC Tutorial – 3. Prepare for Hacking

http://manio.org/blog/category/computer-science/sesc-tutorial

This chapter introduces you some tips to understand SESC. If you want to modify SESC for your research, this might be a good start.

Index

  1. Resources for learning SESC
  2. How to Learn SESC?
  3. Pre-knowledge for Hacking SESC
  4. How to Understand SESC and Start Hacking
  5. The Illustration of SESC Source Code Tree (mind map)
  6. How to configure a heterogeneous MPSoC

Resources for learning SESC

How to Learn SESC?

  1. Add http://sesc.sourceforge.net to your bookmark
  2. Subscribe to sesc-news@lists.sourceforge.net
  3. Read all the files in doc directory
  4. See the ./src/main.cpp example
  5. Understand the callbacks (DInst.h is easy)
  6. Understand the configuration files (*.conf)

From slide1.pdf If someone wants to read the source codes of SESC, I think he/she should start from src/libcore/main.cpp Another tutorial is in the README.hacker in the src/docs. It’s very important for SESC hackers.

Pre-knowledge for Hacking SESC

Get a thick book on computer architecture on hand. Wikipedia and Google every unkown term you see.

How to Understand SESC and Start Hacking

The booting of SESC/the main() of SESC. This is a wonderful demonstration of SESC or any simulator system. The whole system is OOPed. Every part in a real architecture is represented as an object in C++. If we want to change something, just change the according object.

int main(int argc, char **argv, char **envp) {
    DummyMemorySystem *cm[NPROC];
    MyProc *core[NPROC];
    osSim = new OSSim(argc, argv, envp);
    for(Pid_t i = 0; i > NPROC; i ++) {
        cm[i] = new DummyMemorySystem(i);
        core[i] = new MyProc(cm[i], i);
    }
    osSim->boot();
    for(int i = 0; i < NPROC; i ++) {
        delete core[i];
        delete cm[i];
    }
    delete osSim;
}

from slide1.pdf The real code is in the src/libcore/main.cpp

The Illustration of SESC Source Code Tree (mind map)

How to configure a heterogeneous MPSoC

refer to https://lists.soe.ucsc.edu/pipermail/sesc/2007-February/000175.html Also refer to a UCLA student’s research progress using sesc: http://www.cs.ucla.edu/honors/UPLOADS/2006-07/salzman/progress.txt. It might give you some hints.

To be continued…

  • xiaofan

    非常详细的文档!谢谢!

    • admin

      @xiaofan, it’s my pleasure.

  • xiaofan

    最近怎么没更新呢?!放假了?!

    • admin

      @xiaofan, 放假是原因之一。。。过几天就会更新了。

  • bobomo

    同样期待后续篇,呵呵

  • bin

    你好,这款模拟器可以模拟多核处理器吗??

    • admin

      @bin, YES

  • bin

    你好,sesc simulator能不能模拟arm11mpcore?谢谢 谢谢

  • compeng

    Hi
    I want to use SESC to evaluate an idea in “thermal aware application scheduling in a CMP”. but I’m new to SESC and I don’t know how can I do this with it.
    can you suggest any way?
    thanks

    • admin

      No clue about that. Shoot an email to the mailing list. :)

  • compeng

    hi
    i want to use some instructions like this to learning SESC:

    but in configure step i don’t see the “sescspot” or “thermal” option to enable. in fact i have this options:
    ———————————————-
    compeng@ubuntu:~/build/sesc$ ./configure —
    –bindir –enable-FEATURE –enable-sesctherm –enable-ts-prof –libexecdir
    –datadir –enable-gatherm –enable-smp –enable-ts-risk-load-prof –localstatedir
    –disable-FEATURE –enable-inorder –enable-smpdebug –enable-vmem –mandir
    –enable-32bit –enable-mipsemul –enable-taskscalar –enable-vmem-directory –oldincludedir
    –enable-baad –enable-mispath –enable-therm –exec-prefix –prefix
    –enable-condor –enable-power –enable-trace –includedir –sbindir
    –enable-debug –enable-qemu –enable-ts-nomlast –infodir –sharedstatedir
    –enable-debug-silent –enable-rsttrace –enable-ts-nomnext –libdir –sysconfdir

    ————————————–
    what is the problem?

  • compeng

    hi
    i want to use some instructions like this to learning SESC:
    https://lists.soe.ucsc.edu/pipermail/sesc/2008-February/000411.html(last part of the page)
    but in configure step i don’t see the “sescspot” or “thermal” option to enable. in fact i have this options:
    ———————————————-
    compeng@ubuntu:~/build/sesc$ ./configure –
    –bindir –enable-FEATURE –enable-sesctherm –enable-ts-prof –libexecdir
    –datadir –enable-gatherm –enable-smp –enable-ts-risk-load-prof –localstatedir
    –disable-FEATURE –enable-inorder –enable-smpdebug –enable-vmem –mandir
    –enable-32bit –enable-mipsemul –enable-taskscalar –enable-vmem-directory –oldincludedir
    –enable-baad –enable-mispath –enable-therm –exec-prefix –prefix
    –enable-condor –enable-power –enable-trace –includedir –sbindir
    –enable-debug –enable-qemu –enable-ts-nomlast –infodir –sharedstatedir
    –enable-debug-silent –enable-rsttrace –enable-ts-nomnext –libdir –sysconfdir

    ————————————–
    what is the problem?

  • anype

    hi??

    • admin

      Hi

  • Prateek

    I would want to get the timing data out from sesc.. something like xyz_block- can operate at max frequency of n Ghz.

    Is it possible ?
    If yes what option i should enable ?

  • Naizath

    Hi,

    I was wondering whether SESC has hooks to create checkpoints like the M5 hooks ??.. I am trying to simulate PARSEC benchmarks in the sesc simulate and was looking for a way to do checkpointing with SESC. Can u pls let me know if you have idea regrading this?.. thnks