Application of the following great ideas has accounted for much of the tremendous growth in computing capabilities over the past 50 years
Design for Moore’s Law
Use Abstraction to Simplify Design
An abstraction is a concept of layering multiple levels with each level hiding the details of levels below it
1.
Use simple higher level models to hide more detailed lower level models
2.
Important for improving productivity as software programs become more complex
3.
Increase productiry as programs become more complex
4.
Object Oriented Design and Function Oriented Design
Make the Common Case Fast
A designing concept of improving the common case areas where the current design is spending the most time rather than speding time in rare cases.
1.
Also refer to as Amdahl’s Law
2.
Enhance performnace better
3.
Often common cases are simpler to solve
4.
Includes
a.
Identifying what the common case is, perhaps through analysis or experimentation
b.
Using the common case to direct any deviations, to try and make the rare cases less complex
Performance via Parallelism
Techniques to make programs faster by performing several computations at the same time.
1.
Performance is frequently derived from the parallel operation of tasks
2.
Asynchronous
a.
Increase the number of roads, not the speed of the car
3.
Includes
a.
Identify and reduce processing bottlenecks
b.
Using pipelining to orchestrate a sequence of tasks
Performance via Pipelining
A technique where multiple instructions are overlapped during execution.
1.
Similar to an assembly line
a.
As soon as the first activity of an instruction is done, move to second activity and start the first activity of a new instruction
b.
This results in executing more instructions per unit time
c.
No need to wait for the entire process to end, it can start as soon as the activity is empty
Performance via Prediction
An optimization technique in which a processor performs a series of tasks before it is prompted, in order to have the information ready if it is required at any point.
1.
Sometime it’s faster to guess the requirements than to wait until it is confirmed
2.
Programmers have to be aware of the consequences of mis-prediction
Hierarchy of Memories
Dependability via Redundancy
An approach to improve the reliablity and availability of a system as any physical devices can fail.
1.
Redundant devices can take over when failure occurs, and can help detect failures
2.
Pros
a.
Help detect failures
b.
Reduce failure occurrence
3.
Cons
a.
Increase cost
b.
More complex



.png&blockId=1f0d10fa-ce3c-451b-8869-6d884517ff14)
