</p>
- <h1>The computer design abstraction stack</h1>
+<h1>The computer design abstraction stack</h1>
+
+ <h2>The six levels</h2>
<p>
- There are a number of discernable levels to the computer manufacturing abstraction stack, going from the highest down to the lowest level:
+ There are a number of discernable levels to the computer design abstraction stack:
</p>
<ol>
</p>
<p>
- The Turing Machine is a computation theory object that is suggestive of a simple architecture, and a computer organization. Any student who has had to do homework problems centered on Turing Machines, will have tracked the flow of data through the machine, i.e. worked at the register transfer level. However, a little work is needed to complete the architecture analog. The fundamentals are present, the read/write head, the tape, the procedure for using the tape, but other components are missing. The manipulation of symbols remains ungrounded. The tape is not well defined. The use of emptiness is non-architectural like. The tape transport is not articulated, though it is implied. The read buffer that holds a value read, so the programmed controller can do a write without clobbering the read data needed for the next transition is not identified as a component. As we proceed, we will likely discover other missing components.
- </p>
-
- <p>
- An <RT-term-em>architecture</RT-term-em> provides the programmer with information that is valuable when designing the logic of programs. This includes all ilks of programmers, including OS programmers, driver programmers, and application programmers. This is sometimes called the instruction set architecture. In addition to specifying the instructions, it includes specifying the behavior of the interrupt subsystem, the method of doing I/O (typically memory-mapped or dedicated I/O instructions), DMA, the special registers and their effects, and the standards to be followed for each if any. More recently, this also includes specifying how programs can make use of secure areas. The architecture is specified by an <RT-term>architect</RT-term>.
+ An <RT-term-em>architecture</RT-term-em> provides programmers with information that is valuable when designing the logic of programs. This includes programmers across the entire software stack, such as systems programmers, compiler writers, firmware engineers, and application developers. In addition to specifying the instructions (instruction set architecture), it includes describing the memory and hardware virtualization features, specifying the behavior of the interrupt subsystem, the method of doing I/O, DMA, the special registers and their effects, any architectural busses, and the standards to be followed for each if any. More recently, this also includes specifying how programs can make use of secure areas. The architecture is specified by an <RT-term>architect</RT-term>.
</p>
<p>
- It is not a requirement of a computer architecture that it can be realized. The Turing Machine architecture developed in a later section serves as an example. Instead, an architecture can serve other purposes, in this case as a stepping stone to another architecture that could be realized.
+ The classic text by Hamacher, Vranesic, and Zaky carefully defines the organizational level as sitting between architecture and implementation. <RT-cite ref="V. Carl Hamacher, Zvonko G. Vranesic, and Safwat G. Zaky, Computer Organization, 2nd Edition, McGraw Hill, 1984"></RT-cite>
+ <RT-term-em>Organization</RT-term-em> is the register-transfer level description of the machine, which includes internal buses, external buses and the state machines that implement the protocols used, control units, interrupt structures, and ALU layout. Crucially, it is at this level that decisions regarding instruction-level parallelism are made, such as whether the processor will employ a scalar, superscalar, or VLIW design, the depth of its execution pipelines, the use of out-of-order execution, branch prediction strategies, and the specific hierarchy of hardware caches. It dictates the logical arrangement of hardware and the procedures that force the data to flow to satisfy the architectural constraints. The organization is made by a <RT-term>design architect</RT-term>.
</p>
-
<p>
- <RT-term-em>Organization</RT-term-em> is the register-transfer level description of the machine, which includes internal buses, external buses and the state machines that implement the protocols used, control units, interrupt structures, methods of doing I/O, and ALU layout. It dictates the logical arrangement of hardware and the procedures that force the data to flow to satisfy the architectural constraints. The organization is made by a <RT-term>design architect</RT-term>. This level, and the next level, are defined in detail in the classic text by Hamacher, Vranesic, and Zaky <RT-cite ref="V. Carl Hamacher, Zvonko G. Vranesic, and Safwat G. Zaky, Computer Organization, 2nd Edition, McGraw Hill, 1984"></RT-cite>.
+ It is not a requirement of a computer organization, nor an architecture, that it be capable of physical realization. The abstract Turing Machine organization developed in a later section serves as an example. Instead, an abstract organization can serve other purposes, in this case as a stepping stone to a modern architecture that could be realized.
</p>
<p>
If a computer manufacturer keeps the architecture as a constant, all other levels can change, and a customer will be able to run the same software. The same organization can be used with different implementations. Minor changes in manufacturing process can sometimes be used with an older implementation, for example a simple transistor shrink.
</p>
-
<h2>The levels are not independent</h2>
<p>
This cascades down the stack, as organization instructs implementation, etc. For example, if the architecture has an instruction that names one of N registers as an operand, then the organization has a register file that data flows to and from, and busses to carry that data, the design will specify a register file and layout the busses, and the manufacturing people will build them.
</p>
+ <h2>Where the Turing Machine fits in</h2>
+
+ <p>
+ The Turing Machine is a computation theory object that is suggestive of a simple architecture, and a computer organization. Any student who has had to do homework problems centered on Turing Machines, will have tracked the flow of data through the machine, i.e. worked at the register transfer level. However, a little work is needed to complete the architecture analog. The fundamentals are present, the read/write head, the tape, the procedure for using the tape, but other components are missing. The manipulation of symbols remains ungrounded. The tape is not well defined. The use of emptiness is non-architectural like. The tape transport is not articulated, though it is implied. The read buffer that holds a value read, so the programmed controller can do a write without clobbering the read data needed for the next transition is not identified as a component. As we proceed, we will likely discover other missing components.
+ </p>
+
<h2>Computation theoretic consequentiality</h2>
<p>