This is in continuation of the last week’s post: LINK.
Following last post, we all can see a lot of reference on 4 Cores vs 2 Cores. 2 Cores does look underwhelming, right? Let me ask you another question, there is a bike with 2 tyres and a car with 4 tyres, which one will go faster? Answer for both the question somewhat related.
What do you think Mr. Amdahl?
“If for a given problem size a parallelized implementation of an algorithm can run 12% of the algorithm’s operations arbitrarily quickly (while the remaining 88% of the operations are not parallelizable), Amdahl’s law states that the maximum speedup of the parallelized version is 1/(1 – 0.12) = 1.136 times as fast as the non-parallelized implementation.” – WikiPedia
Let’s check this image:
You can see the 4 cores here, but you can also see HD Video Decoder and Encoder blocks. Now let’s see this image:
Observe few things here. We are comparing 2 (dual) vs 3 (quad) here (for power). We are focusing on Video power saving, which should be handled by HD Video Blocks. There is a separate Audio, Image, HDMI, Display and really awesome GPU Blocks.
So where does the 4 cores actually help? Or to be contextually correct, where have we added parallelism to use these 4 cores? More over there are other SIMD which when code is optimized (NEON) does acceleration. There is this brilliant article on “death of cpu scaling” which you must read. I think it will be safe to say in current context that adding more cores to GPU will make much more sense unless we see OS or an API which lets developer use these cores.
If all the video, audio, imaging, graphics, etc processing requirements are taken away from CPU, it must now be mostly responsible for the Operating System Demands (you are aware that ICS uses Hardware Acceleration for its User Interface, which is again another block outside CPU). Android must have the answer for this.
RenderScript is finally (Cuda is still not available on embedded devices) (Dalvik is Closed source, so I can’t comment on it) a great way of using the Parallelism available with the number of increase in cores. RS does two tasks, compute and graphics. Graphics is on GPU and Compute is on Core. So if you want to compute then you can use these cores. Current applications would be linear algebra, Fourier transforms, n-body problems, graph traversal, hidden Markov models (eg. speech recognition), and finite-state machines. We’d love to see SoC manufacturers or Open Source community come forward with APIs which developers, students, professionals and hobbyists can comprehend easily and actually improve performance of their applications.
We have no idea on the amount of Parallelism available on Android, but yes, in marketing and on paper, 4 does look AWESOME!
We were also to cover some of the blocks on OMAP. Here is the image again for the reference:
Let’s talk a bit on IVA today.
IVA stands for Image and Video Accelerator and as expected it does lot:
- 1080P video
- Slow Motion Camcorder
- Real-time Transcoding up-to 720p
- Video Conferencing up-to 720p
Other interesting components are:
- Video DMA Processor
- Shared L2 interface and Memory
- Motion Estimation Acceleration Engine
- Entropy coder/decoder
- and much more.. Check out the TI OMAP TRM for more information.
Why do we (hw designers, programmers and interested users) know about IVA? Because this is the part which will decide what all video formats we can play? As a normal user, max we know about a video is that it is mp4, avi, dvi etc. We let manufacturers claim (including us) that we can do 1080P and when we get the device we realize that there are multiple variants of these formats technically called, Constrained Baseline, Main, High, Simple, Advanced Simple Profile and many more. Not all formats are free, some have royalties (like MPEG) which in the end will add to the overall cost of the device. Also, not all formats are supported and but SoC vendors will share details on what all are enabled and what OEMs should work on. This time we know what all formats are already working and what we need to work on. We will share all profile support and not just 1080P since this is very important for the end usability, cos frankly user doens’t give a damn, his video should “just work”
I think it becoming a long post, so let’s stop here. Next time we will cover ISP and more.