NEON Power Consumption

Setup

Power was supplied from a USB port on my laptop. Two 3.9 Ohm 5 W 10 % resistors were hooked in parallel and inserted into the ground line to the board. Note that the USB scope isn't isolated and shares the ground with the laptop.

Channel A was connected across the sense resistor. Channel B was connected to the positive supply into the board. Vb - Va gives the supply voltage to the board.

The board is a Cortex-A8 running at 720 MHz.

Method

Two programs were run, one that has a NOP in the core loop, the other that triggers the NEON unit using a VEOR.

int main()
{
   int i, j;

   for (i = 0; i < 1000000; i++)
     {
        for (j = 0; j < 1000*50/45; j++)
          {
             asm("nop");
          }
     }

   return 0;
}

int main()
{
   int i, j;

   for (i = 0; i < 1000000; i++)
     {
        for (j = 0; j < 1000*50/45; j++)
          {
             asm("veor d0, d1, d2");
          }
     }

   return 0;
}

Compiling the NOP version using gcc -O -save-temps -o nop nop.c gives the following code:

00000000 <main>:
   0:   f04f 0100       mov.w   r1, #0
   4:   468c            mov     ip, r1
   6:   f240 4257       movw    r2, #1111       ; 0x457
   a:   f244 2040       movw    r0, #16960      ; 0x4240
   e:   f2c0 000f       movt    r0, #15
  12:   e008            b.n     26 <main+0x26>
  14:   bf00            nop
  16:   f103 0301       add.w   r3, r3, #1
  1a:   4293            cmp     r3, r2
  1c:   d1fa            bne.n   14 <main+0x14>
  1e:   f101 0101       add.w   r1, r1, #1
  22:   4281            cmp     r1, r0
  24:   d001            beq.n   2a <main+0x2a>
  26:   4663            mov     r3, ip
  28:   e7f4            b.n     14 <main+0x14>
  2a:   f04f 0000       mov.w   r0, #0
  2e:   4770            bx      lr

which looks decent.

Both programs were tuned to run for five seconds. A script was written that loops and runs each program in turn.

Results

Vs: 4.88 V

  • Measured between the laptop ground and board +5V supply pin

Vslow: 1.237 V

  • Voltage drop across the sense resistors when running the core only program

Vshigh: 1.336 V

  • Voltage drop across the sense resistors when running the NEON program

Rmeasured: 2.4 Ohms

  • Sense resistor resistance as measured by the multimeter

Rleads: 0.5 Ohms

  • Resistance of the multimeter leads as measured by the multimeter

R: 1.9 Ohms

  • Corrected sense resistance

Rlabel: 3.9 Ohms

  • Label resistance of each of the sense resistors

Rcalc: 1.95 Ohms

  • Calculated parallel resistance. Matches the measured resistance well

Vlow: 3.643 V

  • Actual supply voltage after correcting for sense drop (Vlow = Vs - Vslow)

Ilow 0.651 A

  • Current through the sense resistor (Ilow = Vlow / R)

Plow: 2.372 W

  • Power consumed by the board (Plow = Vlow * ILow)

And for NEON:

Vhigh: 3.544 V

Ihigh: 0.703 A

Phigh: 2.491 W

So the extra power consumed by the NEON unit is:

Pdelta: 0.120 W

Caveats

  • None of the instruments are calibrated
  • Error estimates have not been carried through. The numbers above are less precise than written.
  • Power consumption covers the whole of the board
  • The kernel is older and doesn't include power management
  • The NEON unit is on but not fully utilized
  • It is assumed that VEOR is a cheap operation

  • The sense resistors were too big
  • The final board supply was low and should have been closer to 5 V. The base board regulator might be operating in a less efficient zone

MichaelHope/Sandbox/NEONPower (last modified 2010-11-28 22:21:08)