Jun 302012

Yet another hiatus. Sorry, I was very busy with my job as a performance architect at Calxeda. Will try to be regular again. 

I have recently been interviewing people at Calxeda, my new employer. There are a few fundamental concepts I expect every engineer/CS major to understand, regardless of what position they are applying for. One of them is the difference between a channel’s throughput and its latency. It is surprising how many candidates get it wrong. I will not only try to explain the concepts of latency and throughput using a simple analogy, but also try to hypothesize why IMO most people get them confused.

Continue reading “Clarifying Throughput vs. Latency” »

Aug 242011

I typically do not share articles on this blog but I found this white paper today which was very enlightening and doesn’t seem to have gotten the deserved attention. The author has done an excellent job of explaining the shortcomings of GNU Make. I now question why I use Make:-)


Below is excerpt and a link to the article. Since the original post doesn’t have space for comments, we can use this post for our discussion.


GNU make is a widely used tool for automating software builds. It is the de facto standard build tool on Unix. It is less popular among Windows developers, but even there it has spawned imitators such as Microsoft’snmake.

Despite its popularity, make is a deeply flawed tool. Its reliability is suspect; its performance is poor, especially for large projects; and its makefile language is arcane and lacks basic language features that we take for granted in other programming languages.

Admittedly, make is not the only automated build tool. Many other tools have been built to address make’s limitations. Some of these tools are clearly better than make, but make’s popularity endures. The goal of this document is, very simply, to educate you about some of the issues with make—to increase awareness of these problems.


Read more

Aug 092011

Similar to other prediction mechanisms, branch predictors are also better at predicting strongly biased branch outcomes.

This rule is well-understood and commonly used, e.g., the Intel Itanium compiler assumes that prediction accuracy = MAX(percentage_taken, percentage_not_taken) when performing its profile-guided optimizations. Thus, to improve branch prediction, we must increase the number of biased branches while reducing branches that are oscillating. This post shows a simple trick to do so.

Continue reading “Quick Post: Software Trick to Improve Branch Prediction” »

Aug 072011

Big-O gives us a tool to compare algorithms’ efficiency and execution times without having to write the code and do the experiments. However, I feel that many people misuse the analysis unknowingly. Don’t get me wrong. I am also a big fan of analytic models and understand that they provide insights that cannot be found empirically. However, in case of Big-O, I feel that it has underlying assumptions that were true when it was formed but have since become false. Thus, we need a revision of how Big-O should be taught. This post explains why…

Continue reading “Why Big-O needs an update” »

Aug 072011

The purpose of this post is two fold. First, I want to raise awareness about the transformations a problem goes through before it can be solved by the electrons running around  in the hardware. It is common knowledge for many of you but listing this can be useful for the younger readers. Second, I want to share Prezi, a web-based tool to make presentations. This is my first experience with Prezi and I liked the interface and options better than Powerpoint. I figured I will convey some useful information with the demo.

Continue reading “Quick Post: Levels of Transformation in Computer Programs (+Prezi)” »

Aug 052011
Source: http://smartincomeblog.com/what-i-learned-from-creating-an-iphone-app

In a weak moment last July, I paid $99 for an Apple Developer Account with the intent to learn iPhone app development. However, I didn’t use it for 11.5 months. When I learned two weeks ago that I was about to lose my investment, I decided to salvage it. It has actually been a great experience and I don’t regret spending the week playing with iPhone apps. I have not become an expert by any means but I think I have learned enough to have some opinions. I am writing this article to share what I learned as it may interest some other “traditional” computer scientists to explore iOS.

Continue reading “iPhone App Development (for Old School Coders)” »

Jul 242011

In this post, I describe pipeline parallelism,  a powerful method to extract parallelism from loops which are difficult to parallelize otherwise. Pipeline parallelism is underrated because of a misunderstanding that it only applies to “streaming” workloads. This statement is very vague and misleading. I discuss the uses, trade-offs, and performance characteristics of pipelined workloads.

Continue reading “Parallel Programming: Do you know Pipeline Parallelism?” »

Jul 222011

I feel very excited writing this 51st post on Future Chips blog today. I started this blog 2 months ago knowing very little about how blogs work and I must admit that the results have far exceeded my expectations (thanks to all the readers). I just want to share some stats to (1) show how its been a very encouraging start, and (2) inspire other computer scientists in academia and industry to to share their thoughts on the net more freely. I will keep it very brief.

Continue reading “50 posts and …” »

Jul 212011

From the comments on my post which criticized Amdahl’s law, I got some very clear indication that awareness needs to be raised about the different types of serial bottlenecks that exist in modern parallel programs. I want to highlight their differences and explain why different bottlenecks ought to be treated differently from both a theoretical and practical standpoint.

Continue reading “Parallel Programming: Types of serial bottlenecks” »

Jul 112011

I am sorry for the hiatus. I had some business to take care of and that is why I was unable to write for a few days. I will be writing regularly again. As a come back post, I decided to create a small quiz  on the microrpcoessor industry. It has a few questions about the recent history of microprocessors. I am hoping that you will enjoy the questions and learn from them at the same time. Let us know how you did through your comment!

Continue reading “Quiz: How well do you know CPUs? (Fixed)” »