ABSTRACT

Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

There are many interesting “laws” in the folklore of Information Technology. One of them, attributed to Niklaus Wirth, states that software is slowing faster than hardware is accelerating-a testimonial to the irony of modernday system design. The “slowing down” in Wirth’s law can refer to both the run-time performance as well as software development time. Due to time-tomarket pressure, the software designers do not have the luxury of optimizing the code. Software development for modern systems often happens in parallel to the development of the hardware platform, using simulation models of the target hardware. There is increased pressure on software developers to reuse existing IP, which may come from multiple sources, in various degrees of softness. Compilers and software optimization tools either do not exist, have limited capabilities, or are not available during the crucial periods of system development. Due to these reasons, application software development is a slow and daunting task, rarely permitting the use of advanced features supported in hardware due to lack of automated tools. It is quite common for software developers (e.g., video games) to resort to manual assembly-language coding.