- •V. Ya. Krakovsky, m. B. Fesenko
- •In Computer Systems and Networks
- •Contents
- •Preface
- •Introduction
- •Module I. Basic Components of Digital Computers
- •1. The Structure of a Digital Computer
- •1.1. Introduction to Digital Computers
- •1.2. The Computer Work Stages Implementation Sequence
- •Questions for Self-Testing
- •Questions for Self-Testing
- •1.3. Register Gating and Timing of Data Transfers
- •Questions for Self-Testing
- •1.4. Computer Interface Organization
- •Questions for Self-Testing
- •1.5. Computer Control Organization
- •Questions for Self-Testing
- •1.6. Function and Construction of Computer Memory
- •Questions for Self-Testing
- •1.7. Architecturally-Structural Memory Organization Features
- •Questions for Self-Testing
- •2. Data processing fundamentals in digital computers
- •2.1. Element Base Development Influence on Data Processing
- •Questions for Self-Testing
- •2.2. Computer Arithmetic
- •Questions for Self-Testing
- •2.3. Operands Multiplication Operation
- •Questions for Self-Testing
- •2.4. Integer Division
- •Questions for Self-Testing
- •2.5. Floating-Point Numbers and Operations
- •Questions for Self-Testing
- •Questions for Self-Testing on Module I
- •Problems for Self-Testing on Module I
- •Module II. Digital computer organization
- •3. Processors, Memory, and the Evolution System of Instructions
- •3.1. Cisc and risc Microprocessors
- •Questions for Self-Testing
- •3.2. Pipelining
- •Questions for Self-Testing
- •3.3. Interrupts
- •Questions for Self-Testing
- •3.4. Superscalar Processing
- •Questions for Self-Testing
- •3.5. Designing Instruction Formats
- •Questions for Self-Testing
- •3.6. Building a Stack Frame
- •Questions for Self-Testing
- •4. The Structures of Digital Computers
- •4.1. Microprocessors, Microcontrollers, and Systems
- •Questions for Self-Testing
- •4.2. Stack Computers
- •Questions for Self-Testing
- •Questions for Self-Testing
- •4.4. Features of Organization Structure of the Pentium Processors
- •Questions for Self-Testing
- •4.5. Computers Systems on a Chip
- •Multicore Microprocessors.
- •Questions for Self-Testing
- •4.6. Principles of Constructing Reconfigurable Computing Systems
- •Questions for Self-Testing
- •4.7. Types of Digital Computers
- •Questions for Self-Testing
- •Questions for Self-Testing on Module II
- •Problems for Self-Testing on Module II
- •Module III. Parallelism and Scalability
- •5. Super Scalar Processors
- •5.1. The sparc Architecture
- •Questions for Self-Testing
- •5.2. Sparc Addressing Modes and Instruction Set
- •Questions for Self-Testing
- •5.3. Floating-Point on the sparc
- •Questions for Self-Testing
- •5.4. The sparc Computers Family
- •Questions for Self-Testing
- •6. Cluster Superscalar Processors
- •6.1. The Power Architecture
- •Questions for Self-Testing
- •6.2. Multithreading
- •Questions for Self-Testing
- •6.3. Power Microprocessors
- •Questions for Self-Testing
- •6.4. Microarchitecture Level Power-Performance Fundamentals
- •Questions for Self-Testing
- •6.5. The Design Space of Register Renaming Techniques
- •Questions for Self-Testing
- •Questions for Self-Testing on Module III
- •Problems for Self-Testing on Module III
- •Module IV. Explicitly Parallel Instruction Computing
- •7. The itanium processors
- •7.1. Parallel Instruction Computing and Instruction Level Parallelism
- •Questions for Self-Testing
- •7.2. Predication
- •Questions for Self-Testing
- •Questions for Self-Testing
- •7.4. The Itanium Processor Microarchitecture
- •Questions for Self-Testing
- •7.5. Deep Pipelining (10 stages)
- •7.6. Efficient Instruction and Operand Delivery
- •Questions for Self-Testing
- •Instruction bundles capable of full-bandwidth dispersal
- •Questions for Self-Testing
- •7.7. High ilp Execution Core
- •Questions for Self-Testing
- •7.8. The Itanium Organization
- •Implementation of cache hints
- •Questions for Self-Testing
- •7.9. Instruction-Level Parallelism
- •Questions for Self-Testing
- •7.10. Global Code Scheduler and Register Allocation
- •Questions for Self-Testing
- •8. Digital computers on the basic of vliw
- •Questions for Self-Testing
- •8.2. Synthesis of Parallelism and Scalability
- •Questions for Self-Testing
- •8.3. The majc Architecture
- •Questions for Self-Testing
- •8.4. Scit – Ukrainian Supercomputer Project
- •Questions for Self-Testing
- •8.5. Components of Cluster Supercomputer Architecture
- •Questions for Self-Testing
- •Questions for Self-Testing on Module IV
- •Problems for Self-Testing on Module IV
- •Conclusion
- •List of literature
- •Index and Used Abbreviations
- •03680. Київ-680, проспект Космонавта Комарова, 1.
Questions for Self-Testing
1. What kind of means allows using the Power-3 in SMP-systems?
2. What is the structure of the Power-3 microprocessor?
3. What are the peculiarities of the Power-4 structure?
4. What stages does the Power-4 conveyer have?
5. What structure does the 4-processor cluster-system based on Роwеr 4 have?
6. How to split the eight basic renaming alternatives into 16 feasible implementation schemes?
7. Why do relevant superscalar processors use only four of the eight possible basic alternatives of renaming?
8. What is the technology of register renaming used for?
9. What is the role of the reorder buffer (ROB) in the renaming technology?
10. What is the essence of the method of register mapping?
6.4. Microarchitecture Level Power-Performance Fundamentals
At the elementary transistor gate level, we can formulate total power dissipation as the sum of three major components: switching loss, leakage, and short-circuit loss.
PWdevice = (1/2)C VDD Vswing af + Ileakage VDD + Isc VDD (6.1)
Here, C is the output capacitance, VDD is the supply voltage, f is the chip clock frequency, and a is the activity factor (0<a<1) that determines the device switching frequency. Vswing is the voltage swing across the output capacitor. Ileakage is the leakage current, and Isc is the average short-circuits current.
The literature often approximates Vswing as equal to VDD (or simply V for short), making the switching loss around (1/2)CV2af. Also for current ranges of VDD (say, 1 volt to 3 volts) switching loss, (1/2)CV2af remains the dominant component. So as a first-order approximation for the whole chip we may formulate the power dissipation as
PWchip
=
(6.2)
Ci, Vi, ai, and fi are unit- or block-specific average values. The summation is taken overall blocks or units i, at the microarchitecture level (instruction cache, data cache, integer unit; floating-point unit, load-store unit, register files, and buses). For the voltage range considered, the operating frequency is roughly proportional to the supply voltage; C remains roughly the same if we keep the same design, but scale the voltage. If a single voltage and clock frequency is used for the whole chip, the formula reduces to
(6.3)
where K's are unit- or block-specific constants. If we consider the worst case activity factor for each unit i – that is, if ai=1 for all i, then
PWchip=KvV3=Kf f 3 (6.4)
where Kv and Kf are design-specific constants, where K's are unit- or block-specific constants.
That equation leads to the so-called cube-root rule. This point to the single most efficient method for reducing power dissipation for a processor designed to operate at high frequency: reduce the voltage (and hence the frequency). This is the primary mechanism of power control in Transmeta's Crusoe chip. There's a limit, however, on how much VDD can be reduced (for a given technology), which has to do with manufacturability and circuit reliability issues. Thus, a combination of microarchitecture and circuit techniques to reduce power consumption – without necessarily employing multiple or variable supply voltages – is of special relevance.
Performance Basics. The most straightforward metric for measuring performance is the execution time of a representative workload mix on the target processor. We can write the execution time as
T
=PL
CPI
CT
=PL
CPI
(1/f
)
(6.5)
Here, PL is the dynamic path length of the program mix, measured as the number of machine instructions executed. CPI is the average processor cycles per instruction incurred in executing the program mix, and CT is the processor cycle time (measured in seconds per cycle) whose inverse determines clock frequency f. Since performance increases with decreasing T, we may formulate performance PF as
PFchip=Kpf f = KpvV (6.6)
Here, the K's are constants for a given microarchitecture-compiler implementation. The Kpf value stands for the average number of machine instructions executed per cycle on the machine being measured. PFchip in this case is measured in MIPS.
Adopting a noncontroversial weighted mix is not easy. Each ratio is calculated as the speedup with respect to execution time on a specified reference machine. This method has the advantage of allowing us to rank different machines unambiguously from a performance viewpoint. That is, we can show the ranking as independent of the reference machine used in such a formulation.
SMT/CMP Differences and Energy-Efficiency Issues. Consider the floating-point loop kernel shown in Table 6.1.
Table 6.1.
Example loop test case
Parallel instruction tags |
Instruction |
Load/store instruction |
Description |
T |
A |
fadd fp3, fp1, fp0 |
; add FPR fp1 and fp0; store into target register fp3 |
U |
B |
lfdu fp5, 8(r1) |
; load FPR fp5 from memory address: 8 + contents of GPR r1 |
V |
C |
lfdu fp4, 8(r3) |
; load FPR fp4 from memory address: 8 + contents of GPR r3 |
W |
D |
fadd fp4, fp5, fp4 |
; add FPR fp5 and fp4; store into target register fp4 |
X |
E |
fadd fp1, fp4, fp3 |
; add FPR fp4 and fp3; store into target register fp1 |
Y |
F |
stfdu fp1, 8(r2) |
; store FPR fp1 to memory address: 8 + contents of GPR r2 |
Z |
G |
bc loop_yop |
; branch back conditionally to top of loop body |
The loop body consists of seven instructions labeled A through G. The final instruction is a conditional branch that causes control to loop back to the top of the loop body. Labels T through Z are used to tag the corresponding instructions for a parallel thread when considering SMT and CMP. The lfdu/stfdu instructions are load/store instructions with update where the base address register (say, r1, r2, or r3) is updated to hold the newly computed address. We assumed that the base machine is a four-wide superscalar processor with two load-store units supporting two floating-point pipes. The data cache has two load ports and a separate store port. The two load-store units (LSU0 and LSU1) are fed by a single issue queue LS0; similarly, the two floating-point units (FPU0 and FPU1) are fed by a single issue queue FPQ. In the context of the loop just shown, we essentially focus on the LSU-FPU subengine of the whole processor.
Assume that the following high-level parameters (latency and bandwidth) characterizing the base superscalar machine:
Instruction fetch bandwidth fetch_bw of two times W is eight instructions per cycle.
Dispatch/decode/rename bandwidth equals W, which is four instructions/cycle; dispatch stalls beyond the first branch scanned in the instruction fetch buffer.
Issue bandwidth from LSQ (reservation station) lsu_bw of W/2 is two instructions/cycle.
Issue bandwidth from FPQ fpu_bw of W/2 is two instructions/cycle.
Completion bandwidth compl_bw of W is four instructions/cycle.
Back-to-back dependent floating-point operation issue delay fp_delay is one cycle.
The best-case load latency from fetch to write back is five cycles.
The best-case store latency, from fetch to writing in the pending store queue is four cycles. (A store is eligible to complete the cycle after the address-data pair is valid in the store queue.)
The best-case floating-point operation latency from fetch to write back is seven cycles (when the FPQ issue queue is bypassed because it's empty).
Load and floating-point operations are eligible for completion (retirement) the cycle after write back to rename buffers. For simplicity of analysis assume that the processor uses in-order issue from issue queues LSQ and FPQ. In our simulation model, superscalar width W is a ganged parameter, defined as follows:
W= (fetch_bw/2) = disp_bw = compl_bw.
The number of LSD units, Is_units, FPL units, fp_units, data cache load ports, I_ports, and data cache store ports, the term s_ports, vary as follows as W is changed: Is_units = fp_units = I_ports = max [floor(W/2), 1 ]. s_ports = max [floor(I_ports/2), 1 ].
We assumed a simple analytical energy model in which the power consumed is a function of parameters W, Is_units, fp_units, I_ports, and s_ports. In particular, the power (PW) in pseudowatts is computed as
PW = W 0.5 + Is_units + fp_units + I_ports + s_ports.
Fig. 6.10 shows the performance and performance/power ratio variation with superscalar width. The MIPS values are computed from the CPI values, assuming a 1-GHz clock frequency.
T
he
graph in Fig. 6.10,a
shows that a maximum issue width of four could be used to achieve
the best (idealized) CPI performance. However as shown in Fig.
6.10,b,
from a power-performance efficiency viewpoint (measured as a
performance over power ratio in this example), the best-case design
is achieved for a width of three. Depending on the sophistication
and accuracy of the energy model (that is, how power varies with
microarchitectural complexity) and the exact choice of the
power-performance efficiency metric, the maximum value point in the
curve in Fig. 6.10,b
will change. However beyond a certain superscalar width, the
power-performance efficiency will diminish continuously.
Fundamentally, this is due to the single-thread ILP limit of the
loop trace.
Note that the resource sizes (number of rename buffers, reorder buffer size, sizes of various other queues, caches, and so on) are assumed to be large enough that they're effectively infinite for the purposes of our running example. Some of the actual sizes assumed for the base case (W = 4) are
completion (reorder) buffer size cbuf_size of 32,
load-store queue size lsq_ of 6,
floating-point queue fpqze of 8, and
pending store queue size psq_size of 16.
The microarchitectural trends beyond the current superscalar regime are effectively targeted toward the goal of extending the processing efficiency factors. That is, the complexity growth must ideally scale at a slower rate than performance growth. Power consumption is one index of complexity; it also determines packaging and cooling costs. (Verification cost and effort is another important index.) In that sense, striving to ensure that the power-performance efficiency metric of choice is a nondecreasing function of time is a way of achieving complexity-effective designs.
In a multiscalar-type CMP machine, different iterations of a loop program could be initiated as separate tasks or threads on different core processors on the same chip. Thus in a two-way multiscalar CMP, a global task sequencer would issue threads A-B-C-D-E-F-G and T-U-V-W-X-Y-Z derived from the same user program in sequence to two cores.
Register values set in one task are forwarded in sequence to dependent instructions in subsequent tasks. For example, the register value in fp1 set by instruction E in task 1 must be communicated to instruction T in task 2. So instruction T must stall in the second processor until the value communication has occurred from task 1. Execution on each processor proceeds speculatively, assuming the absence of load-store address conflicts between tasks. Dynamic memory address disambiguation hardware is required to detect violations and restart task executions as needed. If the performance can be shown to scale well with the number of tasks, and if each processor is designed as a limited-issue, limited-speculation (low-complexity) core, we can achieve better overall scalability of power-performance efficiency.
