1.1 Analogy: Piano Architecture
Architecture applies to
buildings
,
landscapes
, computers, and even pianos. Let us
briefly
consider the architecture of pianos. Piano architecture can be defined by the specification of the keyboard, as shown in Figure 1-1a. The keyboard is the player (
user
) interface to this musical instrument. It consists of 88 keys: 36 black keys and 52 white keys. Striking a key causes a note of specified frequency to sound. As the size and the arrangement of the keys are identical for all modern piano keyboards,
anyone
who can play the piano can play
any
piano.
Many
implementations
of piano architecture are possible, as shown in Figure 1-1b. The implementation is
concerned
with the details of a particular maker's materials. The kinds of wood and metal used, the selection of ivory or plastic keys, and the size and shape of the instrument are all implementation decisions made by the piano builder. Regardless of the implementation decisions made, however, any piano player can play the final product.
Table 1-1. Generations of Computer Languages
|
1GL
|
Machine language
|
Each instruction speaks directly to the hardware level of a particular architecture. Instructions are numeric (i.e., binary patterns of 0s and 1s), but those can be made partially comprehensible by clustering adjacent bits together using an appropriate choice of base:
-
decimal (base 10), as in the IBM 1620
-
octal (base 8), as in the PDP
11
-
hexadecimal (base 16), as in the Alpha , Itanium
, and most other current architectures.
|
|
2GL
|
Assembly language
|
Each instruction is a mnemonic—e.g.,
ADD
—but stands in near one-to-one correspondence with machine instructions. Additional directives to the
assembler
program help with storage allocation and program segmentation.
|
|
3GL
|
High-level languages
|
A
compiler
program
translates
statements in an arbitrarily defined artificial programming language into the appropriate sequences of machine-level primitives. Examples include COBOL, FORTRAN, PL/I, BASIC, C, Pascal, and Ada.
|
|
4GL
|
Newer languages
|
Newer types of computer languages include:
-
artificial intelligence languages (e.g., LISP)
-
data access languages (e.g., SQL)
-
natural-language
query tools
-
object-oriented languages (e.g., C++, Smalltalk, or Java
).
|
In a computer system, the architecture consists of the programming interface: the instruction set, the structure and addressing of memory, the control of input and output (I/O), and so on. Several implementations of an architecture can be possible using different electronic design techniques that may have different size, cost, and performance characteristics. A program that runs on one machine should run on all machines conforming to the same architecture. Indeed, computer
architects
including Rau and Fisher of Hewlett-Packard have
expressed
that a contract exists between programs written for the architecture and the processor implementations of that architecture.
|