| Software as abstraction - hardware limitations |
|
|
| Written by Daniel Leiderman-Gueller | |||
| Friday, 02 January 2009 00:00 | |||
|
Software is a fiction of our imagination forged into an actual physical representation, encased in a physical box called a computer. In the transition from an abstract imaginative form, to an actual representation in lines of code, several aspects limit the actual representation: limitation of the programmer's imagination to cover all details and aspects of the software, and limitations imposed by the hardware. The limitations imposed by the hardware are the topic of this post, as a way of showing how different limits can guide you to different design decisions.
The hardware of the computer is a physical entity, with restrictions governed by physical phenomena's, limiting the capacity or capabilities of a function. The limitations can be divided in two broad sections:
Generalizing, computational limits affect the complexity of the algorithm that can be used, guiding the design into efforts of distributing the load among processors, using better algorithms and a tradeoff of memory usage. Such systems normally have little data, but a lot of processing to be done on the information. Some examples are image processing, mathematical analysis and simulations. Since CPU prices have come down according to moore's law, many systems are becoming distributed computing clouds, turning the computational limit less restricting than transmission limits. Transmission limits affect how much information can be moved from entity to entity, whether processing engines (CPU's, Graphic cards) storage (memory, hard disks) or other components of the system (via network) in turn guiding the design into wider connection paths, optimization of transmission media and using better algorithms to minimize the required data. Transmission capabilities have increased but not as exponentially, where the last step of moving the information to / from hard disks has changed even less. Why the differentiation is important? It is important because each one affects different components and has different design decisions. In the end, the system design must take into account each of the limitations in each component and specify the dimensions accordingly.
|
|||
| Last Updated on Sunday, 11 January 2009 13:16 |