70 Part 1½ Fundamentals Section 2 ½ The Computer Space

Table 1 Abbreviations Used to Name Data-Types

 Precision Data-type name Length-type fractional/f boolean/b scalar ~ quarter/q sign vector/v half/h decimal digit/digit/d matrix single/s octal digit/octal/o array double/d character/char/oh/c» string/st triple/t byte/by quadruple/q syllable multiple/m word/w integer/i signed integer/i unsigned integer/ui fraction/fr fixed/mixed/mx floating/real/f unnormalized floating/uf complex real/complex/cx Examples: w word bv boolean vector i integer sfr single-precision fraction mx mixed di double integer 10d 10 decimal digit (scalar) ch.st character string sf single-precision floating suf single-precision unnormalized floating df double-precision floating duf double-precision unnormalized floating

~ May be optionally omitted from name.
» The most common character size is 8 bits and is called a byte. Hence byte º 8-bit character.

required. Alternatively, we can look to string-processing languages like SNOBOL to see the operations they require. If the strings also represent numeric quantities, then the arithmetic operations are necessary. Almost all arithmetic and symbolic data require relational operations between two quantities, yielding a boolean result (true or false). These relational operators are eq1 and neq, but for arithmetic quantities include gtr, geq, lss, leq. The more complex structured data-types (e.g., vectors and arrays) also have a range of certain primitive operations such as scalar accessing and transmission. Typical operations of vectors are search and element-by-element compare operations.

Although far from perfect, there is a rough order in which specific data-types are included in a computer (see Fig. 5). To be located at a point on the data-type dimension of the computer space (say at floating point) means to have all the data-types below on the dimension (i.e., integer, address, bit vector). Occasionally machines which violate this rule have arisen. Decimal machines do not generally have boolean data-types, and there has been some attempt at machines with only floating point, i.e., without a separate integer type (see Chap. 9).

The reason behind this cumulation of data-types in a fixed order is that certain general tasks must be performed by any computer. It must transmit data between the Pc and Mp, and this transmission has nothing to do with the meaning or content of the data; thus there is always the "unit of transmission," which is the word (except on character machines). Next, all computers manipulate addresses to achieve generality (e.g., to compile), providing for a second data-type. Next come integers-since almost all algorithms make use of arithmetic-and on up to floating-point numbers, multiple-precision, and vector and string operations. At each stage the uses are more specialized so that lower ones cannot be eliminated, except for a few cases such as handling addresses as regular integers.

Bytes of Virtual Address

As we saw in Chap. 1, the number of bytes of virtual address strongly correlates with computer class. From the computer class we can infer (at a given point in time) computer size, data-types, and word length. Thus the number of bytes of virtual address follows technology as the most important structural dimension of computer space.

The virtual address is the address produced by the processor and presented to the memory subsystem. This address is the result of an effective address calculation that may involve address displacements from the instruction and base/index/memory management registers from the processor state. The latter registers frequently expand the length of the address beyond the address displacement contained in the instruction. It is not surprising that the number of bytes of virtual address correlates with word length and data-types.

Since the Pc must manipulate virtual addresses as the most fundamental data-type, path width and word width are highly correlated with the number of bytes of virtual address. Internal Pc data-path width can be reduced either by time-multiplexing portions of the virtual address through the Pc data paths or by providing separate hardware, with wider data paths, for virtual address calculations. The first approach suffers a costly performance penalty, while the second approach is costly in terms of duplicate hardware functionality. Note, however, that the second approach has been used to retrofit an existing ISP with a larger virtual address in order to extend the useful life of the ISP (e.g., see Chap. 47).

Addresses per Instruction and Processor State

The number of addresses in an instruction has been a traditional way of describing processors (i.e., their ISPs) and hence the