Introduction What motivates system optimization? Often, it is the arrival of new customer demands: a higher throughput requirement, a tighter latency target, or a new use case that pushes a system beyond its original specifications. In short, the need for Continue reading
Raspberry Pi 2 is powered by a Broadcom BCM2836 chipset. Along with the typical peripheral IP blocks like UART, SD, etc, BCM2836 ASIC integrates four ARM Cortex A7 cores and a graphics processing engine. The primary intent of this post is to elaborate the Continue reading
Edit distance is quite useful to illustrate how we can optimize backtracking via memoization. Here we have two words word1 and word2, and the problem is about finding the minimum number of operations required to convert word1 to word2. Note Continue reading
Bioinformatics could be one of those areas where problems like substring with concatenation of all words might be relevant. Here we are actually looking for a sequence within a larger string, and this sequence has to be a concatenation Continue reading
Largest rectangle in a histogram is an interesting puzzle and can be solved in several different ways. One of the most popular O(n) method involves usage of stack, another one employs memoization to improve on the brute force approach, and then there is Continue reading
DMA hardware is integral to most ARM SoC designs. They are extensively used for driving various peripheral controllers related to flash memory, LCD displays, USB, SD etc. Here we elaborate the functioning of a typical ARM SoC DMA controller and briefly delve Continue reading
Use case optimizations are much more than implementing efficient modules, the overall architectural arrangement also impacts the performance. In that sense, several useful design methodologies can be observed from examining the storage sub system within Linux. Continue reading
Why software APIs and hardware protocols are two expressions of the same modular system When people speak of computer science and computer engineering, they often imagine two separate territories: one abstract, algorithmic, and mathematical; the other tangible, electrical, and physical. Continue reading
Linux file write methodology is specific to particular file systems, for example JFFS2 will sync data within the user process 'context' itself while file systems like UBIFS, LogFS, Ext FAT tends to create dirty pages and let the background flusher task manage the sync. Continue reading
All new SDCARDs conform to one of the speed classes defined by the specification, it s usually stamped on top of the card and they are quite relevant for multiple reasons. It defines the speed at which you can clock the Continue reading