Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

OVP : MultiCore24 Cortex-A9デモ


2コアだけでなく、なんと24コアのデモ(OVPsim_multicore24_arm_Cortex-A9UP)もあります。
基本的には、2コアと同じです。
ソースソード(OVPsim_multicore24_arm_Cortex-A9UP.c)を見てみると、
icmNewProcessor関数icmLoadProcessorMemory関数をコア数(24回)繰り返しているだけです。
変更している部分は、stepIndex変数の部分のみです

これなら、100コアでもOKですね!
#define MANYCORE 24

   for (stepIndex=0; stepIndex < MANYCORE; stepIndex++) {
       char cpuName[64];
       sprintf(cpuName, "CPU-%s-%d", variant, stepIndex);
       processor[stepIndex] = icmNewProcessor(
           cpuName,            // CPU name
           "arm",              // CPU type
           stepIndex,          // CPU cpuId
           0,                  // CPU model flags
           32,                 // address bits
           arm7Model,          // model file
           "modelAttrs",       // morpher attributes
           SIM_ATTRS,          // attributes
           icmAttr,            // user-defined attributes
           arm7Semihost,       // semi-hosting file
           "modelAttrs"        // semi-hosting attributes
       );

       // load the application executable file into processor memory space
       if(!icmLoadProcessorMemory(processor[stepIndex], application, False, Fal
e, False)) {
           return -1;
       }
   }
シミュレーション結果では、各コアは9.4MIPSで24コアでは、225MIPSでした。
Info ---------------------------------------------------
Info CPU '/CPU-Cortex-A9UP-0' STATISTICS
Info   Type                  : arm (Cortex-A9UP)
Info   Nominal MIPS          : 100
Info   Final program counter : 0xe98
Info   Simulated instructions: 25,596,689
Info   Simulated MIPS        : 9.4
Info ---------------------------------------------------
Info
Info ---------------------------------------------------
Info TOTAL
Info   Simulated instructions: 614,320,536
Info   Simulated MIPS        : 225.0
Info ---------------------------------------------------

検証、Verification、OVP