Questions

New to XMOS and XCore? Get started here.
Post Reply
User avatar
Kane281
New User
Posts: 3
Joined: Fri Dec 11, 2009 4:47 am
Contact:

Questions

Post by Kane281 »

So just a bit of a background on myself first, I like to think I'm pretty familiar with C++ and computer science, though I don't have much electronics experience, and I'm learning new things every day with the great help of the world wide web. About the most I have accomplished so far is lighting an LED (gotta start somewhere :D). Though to help this journey along I have an Arduino on it's way.

Anyway that's not really too relevant, just wanted to state my "experience level" so to speak. What I am wondering is how intensive of a program is too intensive for an XMOS chip. Let's just say we wanted to design a very basic cellphone. Doesn't seem too processing intensive, just need to mainly interface with a display, microphone, wireless module, and speaker. Shouldn't really use very much memory either. So XMOS already seems like a fine fit. What if we take that a step further and want to include media functions? Music and video playback, perhaps 3D graphics processing even. Depending on the scale of this, it's likely we might want to add external memory to the project. How feasible are these things with XMOS?


User avatar
jason
XCore Expert
Posts: 577
Joined: Tue Sep 08, 2009 5:15 pm
Contact:

Post by jason »

Glad to see some fellow computer scientists on here! I am one too!

In the same way, my background is not electronics and lower level stuff. I am all about the higher level things!

Anyhow, I am sure someone will get back to you regarding your cell phone question, however check out the below youtube videos from our official YouTube channel. Someone has already cracked basic 3d stuff, so that at least I know is do-able!

-qipkPjkV0c
User avatar
Bianco
XCore Expert
Posts: 754
Joined: Thu Dec 10, 2009 6:56 pm
Contact:

Post by Bianco »

Kane281 wrote: Anyway that's not really too relevant, just wanted to state my "experience level" so to speak. What I am wondering is how intensive of a program is too intensive for an XMOS chip. Let's just say we wanted to design a very basic cellphone. Doesn't seem too processing intensive, just need to mainly interface with a display, microphone, wireless module, and speaker. Shouldn't really use very much memory either. So XMOS already seems like a fine fit.
From the processing point of view this should be no problem. Most lower end cellphones incorporate an ARM7 processor these days and a XMOS processor has a lot more processing power (5-10 times).
The only possible drawback is power consumption. A mobile phone needs to have some decent processing power when actively used, but 90% of the time a mobile phone is not actively used and it should draw as less current as possible. Although the new Xs-1L chips are fairly energy efficient i don't think they will defeat newer ARM chips on power consumption.
Kane281 wrote: What if we take that a step further and want to include media functions? Music and video playback,
Music playback is easy. A 320kbit MP3 stream can be decoded with about 30-50 MIPS (source) to a PCM stream.

Video decoding might be a bit harder. One of the constraints is that each thread can utilize a maximim of 100 MIPS. To efficiently decode video for higher resolutions one should divide the decoding process in several steps executed by different threads, creating a pipeline. I don't know enough about video codecs if this is easily archievable.
Kane281 wrote: perhaps 3D graphics processing even.
The youtube video mentioned by Jason is made by me. Unfortunately rendering a simple 3D cube is something whole different as having a 3D engine usable for games. There is not much needed to render a 3D cube, even an arduino can do it (Arduino's have an AVR microcontroller).

Creating a 3D engine uses a lot more calculations and we have the same 100 MIPS constraint per thread. Performance depends on how well the workload can be divided by several threads. Still i think the performance will be pretty poor compared to other processors with dedicated hardware such as higher end mobile phones with a PowerVR graphics unit. Not even talking about the power consumption that will be a lot lower when using dedicated hardware.

From a thread view the XMOS processor is not SIMD (Single Instruction, Multiple Data) while SIMD architectures are really needed to archieve high performance. In fact dedicated graphics processors are just large SIMD units. Also the XMOS processor lacks enough RAM for this task to do some higher resolutions.

A possible way is to hook up an FPGA to a XMOS link (400Mbit/s) with the FPGA doing the hard work and the XMOS processor used as the application processor.
Kane281 wrote: Depending on the scale of this, it's likely we might want to add external memory to the project. How feasible are these things with XMOS?
64KB ram per core is indeed not much and for buffering of video and other applications problably not enough. There is a SD-RAM project on xmoslinkers that archieved about 50MB/sec.
User avatar
Kane281
New User
Posts: 3
Joined: Fri Dec 11, 2009 4:47 am
Contact:

Post by Kane281 »

Hmm, interesting stuff. Thanks for taking the time to respond. So basically, even though we can potentially achieve higher end things, the performance is going to be largely dependent on our ability to split the task into different threads (and in some cases may even be better suited for a different type of processing unit). I haven't played around with threads too much. Guess this would be a good time to learn.
User avatar
leon_heller
XCore Expert
Posts: 546
Joined: Thu Dec 10, 2009 10:41 pm
Location: St. Leonards-on-Sea, E. Sussex, UK.
Contact:

Post by leon_heller »

The easiest way to build a cell phone is to use a suitable module, like those made by Telit or Sagem, and interface it to an MCU, which could be an XMOS chip or even a lowly PIC. I designed a prototype GSM/GPS tracker with a Telit GE863-GPS module and a PIC16F88. Obviously, the XMOS chip would let you do a lot more in terms of the user interface. Battery life might be a problem, of course.

Leon
Post Reply