Monday, January 30, 2012

Apples and Oranges (GA144 and ARM Cortex A8)

In my previous posts I mention about how multiple CPU processors such as a GA144 are different than multi-core CPUs.  I also talked about how having multiple independent processes may work better some problem spaces.  In broad terms, the GA144 can be viewed as a very low level Erlang for modeling lightweight (low memory, low computationally-complex) problems. Viewing it this way, it really isn't competing (for my purposes -- a sensor base station) with most (bare) MCUs.
(Additional similarity:  Forth, like Erlang frowns upon having lots of variables so data is carried as functions/parameters (Erlang) or the words/stack (Forth).)

Now, if you throw an ARM + Linux + Erlang (http://www.erlang-embedded.com/) at my sensor base station, what do you get?  (If Erlang doesn't really work well on the ARM, replace it with your favorite language plus lots of processes/threads. Also, keep in mind that my sensor base station needs to run for days on battery backup.)

Now, let's pick an ARM/Linux system for comparison:  How about the beagleboard bone?
This $89 beauty looks really appealing. I could see using it as my base station.  It is based on a new Cortex A8 and is feature rich for its size.

I can't compare (yet) how well it would do against a GA144. The GA144 certainly looks anemic compared to it (from just the Cortex A8 perspective).

However, I can take a quick look at power:


  • The Beagleboard bone consumes 170mA@5VDC with the Linux kernel idling and 250mA@5VDC peak during kernel boot. (from pages 28-29 of http://beagleboard.org/static/BONESRM_latest.pdf )
  • The GA144 consumes 7uA@1.8VDC (typical)  with all nodes idling and 540mA@1.8VDC (typical)  with all nodes running. (from the G144A12 Chip Reference).
Of course, you can't directly compare the two, but consider this interesting tidbit: The power performance of the GA144 is directly related to how many nodes you run.

I haven't looked at any performance numbers between the two, but I'll wager that the Cortex A8 ultimately outperforms the GA144.  But, my sensor base station is neither CPU bound (no complex calculations) nor RAM bound (important data points are persisted in flash storage and fetched as needed).

The real question is: How much useful work can I get done in 1 node?




5 comments:

Anonymous said...

Don't fortget that you must pass messages between each of your processors. Talking about a single computer is no use, since you must have them communicating. So of course 1 computer would handle the RF stuff and then there would be up to 3 computers connected to that one, receiving "mail" from the sensor link. Also if you have questions like 'how long is grandma cooking', you must distribute a clock signal, since the computers can only be woken up by neigbor nodes (if you want a on-chip timer, you have to keep one processor running, burning 4 mA). An external low quality, low speed cristal can also be driven with very low power required(though i don't have measurement data on that)

Todd Coram said...

Of course you are right regarding the communication needs, but if the receiving node is "suspended" and the sending node "suspends" after it is done, isn't that effectively running 1 node at a time (between the two communicating nodes)? I'm referring to Section 3.2 in the F18a doc.

Regarding the real time clock/calendar. I'm not a purist. Even with the other MCUs I am considering, I'm planning on using a dedicated RTC like http://www.nxp.com/documents/data_sheet/PCF2123.pdf , which sips microamps
.

Anonymous said...

Yep you are right. The processor which is going to wait for a message (or external bit toggle) will fall asleep instantly (nanosecond scale)

esaid said...

Hi,

I have a current = 18mA when I use Ga144 with SRAM with eforth , . I think with eForth you can easily programming and using Ga144 for several applications.


http://esaid.free.fr/tutoriel_arrayforth/test_Ga144Pcb/test_Ga144_pcb.htm

Todd Coram said...

18mA isn't bad. Is this with eforth idle (ok prompt)? Or is eforth "doing something" (executing words)?

Nice board! :-)