background image

Contents

vi

2.1.1

Datapath Size

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.1.2

Subword Parallelism

. . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.1.3

Predication

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.2

Processor Implementation

. . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.3

The first pipeline stage

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.3.1

The Program Counter

. . . . . . . . . . . . . . . . . . . . . . . . . 18

2.3.2

Program Counter Metric Statistics

. . . . . . . . . . . . . . . . . . 19

2.3.3

The Instruction Memory

. . . . . . . . . . . . . . . . . . . . . . . . 20

2.3.4

The data multiplexers

. . . . . . . . . . . . . . . . . . . . . . . . . 20

2.3.5

The stage 1 data flow

. . . . . . . . . . . . . . . . . . . . . . . . . 21

2.4

The second pipeline stage

. . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.5

The third pipeline stage

. . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.5.1

The Arithmetic Logic Unit(ALU)

. . . . . . . . . . . . . . . . . . . 22

2.5.2

The Multiplier

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.5.3

The Mix Unit

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.5.4

The Shifter Unit

. . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2.5.5

Predicate File, Sign Extension Unit and multiplexers

. . . . . . . . 28

2.6

The fourth Pipeline

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2.7

The Fifth Pipeline Stage

. . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.7.1

The register Input Unit

. . . . . . . . . . . . . . . . . . . . . . . . 29

2.8

The control Unit

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.8.1

The operation decoder

. . . . . . . . . . . . . . . . . . . . . . . . . 30

2.8.2

The stall unit

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

2.8.3

The Flag Unit

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

2.9

The processor top module

. . . . . . . . . . . . . . . . . . . . . . . . . . . 33

2.10 Hazards and data corruption

. . . . . . . . . . . . . . . . . . . . . . . . . 34

2.10.1 Read after write hazard

. . . . . . . . . . . . . . . . . . . . . . . . 34

2.10.2 Branch Hazards

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

2.10.3 Structural Hazards

. . . . . . . . . . . . . . . . . . . . . . . . . . . 35

2.10.4 Pipeline bubbling

. . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

2.10.5 Register Forwading

. . . . . . . . . . . . . . . . . . . . . . . . . . . 36

3

The Floating Point Unit(FPU)

37

3.1

Floating point addition-subtraction

. . . . . . . . . . . . . . . . . . . . . . 38

3.1.1

FPU Adder testbench

. . . . . . . . . . . . . . . . . . . . . . . . . 39

3.2

Floating point multiplication

. . . . . . . . . . . . . . . . . . . . . . . . . 41

3.3

Floating point division

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

3.4

The FPU Top Module

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

4

The Processor Customization

48

4.1

Compatibility

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

4.2

ISA Customization

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

4.3

Wiring and stalling

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

4.4

Processor Testing

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

4.4.1

Data Synchronization

. . . . . . . . . . . . . . . . . . . . . . . . . 51

4.4.2

Execution Testing

. . . . . . . . . . . . . . . . . . . . . . . . . . . 53