Computer Architecture goes beyond just defining an [[Instruction Set Architecture (ISA)]|instruction set]] or high-level architecture.

The computer architect must not only understand but contribute to all levels of design in order to deliver the most appropriate design for a particular application and target market.

We are most concerned with how to best exploit technology to meet the marketplace demands, e.g. how can we use five billion transistors and a power budget of two watts to design the chip in a mobile phone.

It builds on a few simple concepts but we are always seeking new and improved solutions to the same questions. What constitutes “best” can very easily change between use-cases and even over time.

Each layer of design imposes different challenges and requirements.

You also need to plan ahead into the future to try not design a solution that will age poorly.

The Computer Architecture Arena:

Design Goals

- Functional:

This is immensely hard to correct unlike software, so Verification becomes perhaps the highest single cost in the design process. We also need to test our chips once they have been manufactured, and again this can be costly.

- Performance:

This is hard to quantify, as there is no single best answer, it always depends on the “workload”

- Power:

A large design constraint for modern systems; Power limits the performance of most systems.

- Security:

The ability to control and manipulate sensitive data should be stopped, as well as malicious inputs that hijack the control of the processor.

- Cost:

Design Cost (Complexity), die cost (the size/area of our chips), packaging, etc

- Reliability:

Do we need to regularly (or at all) detect and mitigate faults in operation.