40
© 2015 IBM Corporation The IBM z13 SIMD Accelerators for Integer, String, and Floating-Point Eric Schwarz June 22, 2015

The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

Embed Size (px)

Citation preview

Page 1: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

The IBM z13 SIMD Accelerators for Integer, String, and Floating-Point

Eric Schwarz

June 22, 2015

Page 2: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

z Systems - Processor Roadmap

Core 0

L3_0

L3_1

L2

CoPMCU

L2

Core 1

L3_0

L3_1

Core 2

L2

CoP GX

L2

Core 3

L3_0 Controller

L3_1 Controller

MC

IOs

MC

IOs

GX

IOs

GX

IOs

L3B

L3B

Core 0

L3_0

L3_1

L2

CoPMCU

L2

Core 1

L3_0

L3_1

Core 2

L2

CoP GX

L2

Core 3

L3_0 Controller

L3_1 Controller

MC

IOs

MC

IOs

GX

IOs

GX

IOs

L3B

L3B

z1969/2010

zEC128/2012

z102/2008

z131/2015

Leadership Single Thread,

Enhanced Throughput

Improved out-of-order

Transactional Memory

Dynamic Optimization

2 GB page support

Step Function in System

Capacity

Top Tier Single Thread

Performance,System Capacity

Accelerator Integration

Out of Order Execution

Water Cooling

PCIe I/O Fabric

RAIM

Enhanced Energy

Management

Leadership System Capacity

and Performance

Modularity & Scalability

Dynamic SMT

Supports two instruction threads

SIMD

PCIe attached accelerators (XML)

Business Analytics Optimized

Workload Consolidation

and Integration Engine for

CPU Intensive Workloads

Decimal FP

Infiniband

64-CP Image

Large Pages

Shared Memory

Page 3: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

0

1000

2000

3000

4000

5000

6000

z900 z990 z9ec z10ec z196 zEC12 zNext

EC

770 MHz

1.2 GHz

1.7 GHz

4.4 GHz

5.2 GHz5.0 GHz

5.5 GHz

2000z900

189 nm SOI16 Cores**Full 64-bit

z/Architecture

2003z990

130 nm SOI32 Cores**Superscalar

Modular SMP

2005z9 EC

90 nm SOI54 Cores**

System level scaling

2012zEC12

32 nm SOI101 Cores**

OOO and eDRAMcache

improvementsPCIe Flash

Arch extensionsfor scaling

2010z196

45 nm SOI80 Cores**OOO core

eDRAM cacheRAIM memoryzBX integration

2008z10 EC

65 nm SOI64 Cores**

High-freq core3-level cache

2015z13

22 nm SOI141 Cores**

SMT &SIMD

Up to 10TB of Memory

MH

z/G

Hz

1000

0

2000

3000

4000

5000

6000

1695*+12%

GHz

-9%1202

*+33%

GHz

+18%

1514

*+26%

GHz

+6%902*+50%

GHz

+159

%

z13 Continues the CMOS Mainframe Heritage Begun in 1994

* MIPS Tables are NOT adequate for making comparisons of z Systems processors. Additional capacity planning required** Number of PU cores for customer use

Page 4: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation4

z13 Core changes

1Q 2015 GA

8 cores per die

24 CP chips in system

192 cores x 2 threads => 384 threads

Grow LSPR 8way by 11%, up to 1.4x perf with SMT2

ST -> 2 way SMT

Double the instruction fetch, decode, dispatch bandwidth

Frequency hit (5.2 GHz z196 -> 5.6 GHz zEC12 -> 5.0 GHz z13)

Double the number of execution units

– 2 FXU writers, 2 FXU cc,

– 2 BFU, 2 DFU• Quad precision is faster, Divide is faster

– 2 SIMD units

– 2 DFX – accelerate SS decimal

Page 5: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation5

GR 0

z13 Instr / Execution Dataflow

LSU

pipe

0

FXU*

0a

BFU0

IssQ side0 IssQ side1

BFU1

DFU0

Vector0 / FPR0

register

128b string/int

SIMD0

FXU

0b

GR 1

LSU

pipe

1

FXU

1a

FXU

1b

additional execution units for

higher core throughput

new arch registers / execution units

to accelerate business analytics workloads

Instr decode/ crack / dispatch / map

I$

SBBB

33

33

additional instruction flow for

higher core throughput

Branch Q

VBU1VBU0

D$

*FXa pipes execute reg

writers and support b2b

execution to itself

FXb pipes execute non-reg

writers and non-relative branches

(needs 3w AGEN)

DFU1

Vector1 / FPR1

register

128b string/int

SIMD1

VFU0 VFU1

Page 6: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

Performance

Technology is not getting any faster

System z is already the fastest at 5 GHz for the past couple generations

Parallelism is the future

– Simultaneous Multi-Threading – SMT

– Single Instruction Multiple Data – SIMD

Huge performance gains possible through parallelism

Got to be smarter and figure out best ways to utilize parallelism

Page 7: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

SIMD – Single Instruction Multiple Data

Old road

New super highway

Page 8: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

SIMD – Single Instruction Multiple Data

+

+ + + ++ + + + + + + ++ + + +

One 64 bit operation Versus many operations up to 128 bit

such as Sixteen 8 bit operations

OLD

NEW

Page 9: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

Different size data types – all 128 bit wide

16 x 8 , 8 x 16, 4 x 32, 2 x 64 or 1 x 128 vs 1x64b

byte byte bytehalfword word doubleword quadword

Page 10: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

Datatypes

-561

Page 11: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

Data Types Supported

Integers – unsigned and two’s complement

Floating-point – System z supports more types than any other platform– 32 (Single Precision - SP),

– 64 (Double Precision – DP), and

– 128 bit (Quad Precision – QP)

– Radices of 2 (Binary Floating-Point – BFP),

– 10 (Decimal – DFP),

– 16 (Hexadecimal – HFP)

Character Strings

– Characters 8, 16, and 32 bit

– Null terminated( C ) and Length based (Java)

Page 12: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

Z13 SIMD accelerates:

Integer

Binary Floating-Point Double Precision – BFP DP

– Also indirectly quad precision

Strings

Page 13: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

SIMD Integer

z13 has 2 new SIMD execution pipelines each 128 bits wide

16 x 8 bit / 8 x 16 bit / 4 x 32 bit / 2 x 64 bit / 1 x 128 bit

Add, Subtract, Compare

Logical operations

Shifts

Min / Max / Absolute Value

Select

CRC / Checksum

Page 14: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

SIMD Integer - types

Byte, Halfword, Word, Doubleword, Quadword in 128 bit register

128b wide vector:16xB, 8xHW, 4xW, 2xDW, 1xQW

Page 15: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

zEC12 (grey) integer vs. z13 (grey + purple)

Increased from 2 x 64 bit pipelinesTo 8 x 64 bit pipelines but even moreParallelism with smaller integer datatypes

FX0

A

FX1

A

FX0

B

FX1

B

GPR

16 x 64bitVR

32 x 128bit

SIMD 0 SIMD 1

Page 16: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

Integer Dataflows from zEC12 to z13

New 64 bit one lane road

New 64 bit one lane road

New 128 bit SIMD highway

New 128 bit SIMD highway

Integer Dataflow Roads are 4 times as wide supporting up to 18 times the number of elements

OLD 64 bit one lane road

OLD 64 bit one lane road

Page 17: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

Integer – Error Coding Acceleration

Includes 64 bit Cyclic Redundancy Coding (CRC) assists to perform

– AxB + CxD + E of 64 bit in carryless form.

Also includes a Checksum accelerator to add 5 x 32 bit operands modulo 2**32 to

accumulate a new 128 bit operand to a running sum every cycle.

Page 18: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

More Execution Pipelines Need More Data

Quadrupled the FPRs to create the Vector Register file

VRs contains floats, integers, and strings

FPRs

Vector register file

15

63

0

31

0 127

Bits

Register

GPRs

Think of this as a parking lot for rental carsOr a truck depot.

0

15

Page 19: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

Speeding Up Hash Functions / Integer Divide

Z196

– Multiplicative integer divide algorithm

– Inside BFU, 1x, blocking

zEC12

– SRT based, 1st generation (k=2)

– Speedup over z196: 1.4 – 3.6x

z13

– SRT based, 2nd generation (k=3)

– Stand-alone engines in FXU, 2x

– Non-blocking

– Speedup over zEC12: 1.7x

Throughput: 3.4x

0

10

20

30

40

50

60

70

80

90

1 4 7

10

13

16

19

22

25

28

31

34

37

40

43

46

49

52

55

58

61

64

Number of non-zero quotient bits

Cyc

les

z196 zEC12 zNext

Latency of 64b Integer Divide

Ex.: 234876 ÷ 2 = 78292234876 ÷ 7893 = 29

Page 20: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

Z13 Floating Point throughput is twice as wide

zEC12 has 1 BFU pipeline

z13 has 2 BFU pipelines

SIMD / Vector architecture makes it easy to clump dataTo fully utilize 2 BFUs with 1 thread.Note we double pump a vector to the same BFU pipeline

Page 21: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

Improved Binary Floating-Point (DP, SP) Latencies

z196 / zEC12 z13

Add, sub,

mul, FMA,

convert

8 8

Compare 8 3

Divide 32b

64b

33

40

17

27

SQRT 32b

64b

39

53

21

36

Page 22: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

Z13 allows multiple floating point units to execute at same time and does not stall on long operations like divide and square root.

All Float Operations

Divide

/Sqrt

BFP

HFP

FMA

DFP

and

quad

Fixpt

BCD

Add/

Sub

Integer

&

String

zEC12z13

Divide

/Sqrt

BFP

HFP

FMA

DFP

and

quad

Fixpt

BCD

Add/

Sub

Integer

&

String

Page 23: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

z13 does not stall on divide, each floating-point pipeline now consists of 5 sub-pipelines.

zEC12 has 1 pipelineRun-on instructionsBlock pipeline

z13 has non-blocking pipelines, only blocks on specific resource /sub pipeline, such as divider

Page 24: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

Floating-point Quad precision is much faster

All other platforms use software, z is only platform to use hardware

Moved quad precision to wide pipeline

Now over 3x faster with 2x the bandwidth for a total of 6x performance over zEC12

Also non-blocking

zEC12 z13 side A z13 side B

Multiplepasses

Page 25: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

BFP Quad Precision latency in cycles

zEC12 z13

add, sub 35 11

multiply 55 - 97 23

divide ~165 49

sqrt ~170 66

1 engine 2 engines

Each 3 X faster

Page 26: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

String Acceleration

Character types supported are Byte, Half Word, and Word

Loads and Stores for both

– known length strings (Java strings), and

– those with a null terminating character (C strings)

String Search Acceleration

– Find Equal

– Find Not Equal

– Range Compare

Page 27: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

In the past, loading or storing to a string could result in exceptions

PRIVATE

DON’T

TOUCH

THAT

MEANS

YOU!!!

PAGE

FAULT

SS #, password, “THE END\0”

Normal Loads

NEW INSTRUCTIONS:Load with Length

Java strings

Load to Block Boundary C strings

Are exact and will not set off an alarm.

Page 28: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

String Acceleration with Powerful New Instructions

Vector Find Element Equal – “Barak”

Returns a Pointer

Returns a pointer

16 characters of the string can beExamined every cycleSearch text can be 16 charactersOr 8 pairs of characters for ranges

John Doe 123-45-6789 845-555-1212Barak Hussein Obama II 987-65-4321 212-555-1212Mary H Lamb 555-55-5555 555-555-5555Humpty Dumpty 666-66-6666 666-666-6666Kings Men 777-77-7777 777-777-7777Emergency 911-91-1911 ???-???-?????

Vector String Range Compare Use it to Find IsNotAlphaNumericORHyphen(GE ‘0’ LE ‘9’) or (GE ‘a’ LE ‘z’) or(GE ‘A’ LE ‘Z’) or(EQ ‘-” EQ ‘-’) ;

Page 29: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

MATRIX MULTIPLICATION

Page 30: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

30

Matrix multiply - DGEMM

A product matrix element p(i,j) is equal to the sum of a row i x

column j

x =

Row i Column jForm product i,j

To create independent operations we do the opposite,We multiply a column by a row and form independent product elements

FPRs are allocated to accumulated product elements (in green)An iteration consists of accumulating one new product to a set of independentProduct elements.

Page 31: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

31

DGEMM 4x4

6 7x Load 8 FPRs

16 FMAs With 2 BFU pipes

Could separate by 8 cycles

Need 24 arch FPRs (use Vector Scalar)

# Regs = NxM + N + M, could do 4x5 with 32 regs but not power of 2

Other algorithms could separate the adds to not delay multiplies

4 5

4x0=>8 4x1=>9 4x2=>10 4x3=>11

5x0=>12 5x1=>13 5x2=>14 5x3=>15

6x0=>16 6x1=>17 6x2=>18 6x3=>19

7x0=>20 7x1=>21 7x2=>22 7x3=>23

x =

4 rows 4 columnsForm 16 entriesAt a time

2

3

0

1

Page 32: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

32

DGEMM 4x4 Vector-Scalar

loads

16 independent FMAs

BFU0

BFU1

No stall cycles

WFMA

8cyc

8cyc

WFMA

8cyc

8cyc

WFMA

8cyc

8cyc

WFMA

8cyc

8cyc

WFMA

8cyc

8cyc

WFMA

8cyc

8cyc

loads loads loads

WFMA

8cyc

8cyc

WFMA

8cyc

8cyc

WFMA

8cyc

8cyc

WFMA

8cyc

8cyc

WFMA

8cyc

8cyc

WFMA

8cyc

8cyc

WFMA

8cyc

8cyc

WFMA

8cyc

8cyc

WFMA

8cyc

8cyc

WFMA

8cyc

8cyc

WFMA

8cyc

8cyc

WFMA

8cyc

8cyc

loads loads loads loads loads loads

TIME

Page 33: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

33

DGEMM Conclusions

So 2x4 algorithm about optimal for 16 regs and only 1 BFU needed.

To use bandwidth of 2 BFUs with 8 cycle latency then 4x4 needed. This would

approximately double the throughput.

– Can form 16 entries in same time to form 8.

Use of vectorized 4x8 causes no slow down to code now, and in the future may allow for up

to 2x performance.

Page 34: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation34

Pip

e c

tl

FWD

CPM

RFecc +

parity

FPdiv

BFU

DFU

RF64x127

6w4r

PX – permute & simple

DFX

R/WR/W

Ecc

SX – string & mpy

RF64x127

6w4r

RFecc +

parity

RFecc +

parity

FPdiv

RFecc +

parity

RF64x127

6w4r

PX

DFX

R/WR/W

Ecc

SX

RF64x127

6w4r

BFU

DFU

Page 35: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

Backup / Old slides

Page 36: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

36

Range comparefor isAlphaNumeric() in one instruction

0 1 15

0 ‘a’ GE1 ‘z’ LE

15 Cntl 15

2 ‘A’ GE

3 ‘Z’ LE

4 ‘0’ GE

5 ‘9’ LE

A b c 0 5 6 7 d z Z

F T T F F F F T T F …T T T T T T T T T T …T T T F F F F T T T …

T F F T T T T F F T …

T T T T T T T T T T …

F F F T T T T F F F …

1 1 1 1 1 1 1 1 1 1 …

AND

AND

AND

OR

OR

Page 37: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

37

DGEMM 2x4

20

6 5

8 A

4 3

1 7

x Load 0,2,9,E,C,B

A = A + 2xB

8 = 8 + Bx0

7 = 7 + 2x9

5 = 5 + 2xE

3 = 3 + 2xC

1 = 1 + 0x9

6 = 6 + Ex0

4 = 4 + Cx0

6 Loads followed by 8 FMAs

x =

E

C

B

9

Form 8 entriesAt a time

This is the actual sequence used:

Each iteration move

Page 38: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

38

2x4 scroll pipes

First iteration

– 6 Loads come back in different cycles

– So FMAs start up randomly

Further iterations

– Loads done ahead of time

– Critical path is FMA to FMA for accumulation

Page 39: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

39

FMAs Dependent due to Accumulation

Loads are doneearly

FMA dep on Prior FMA

SCROLL PIPELINESD-decode, m-mapping, I-issue, F-fpu execution, p-putaway, r-checkpointed

Page 40: The IBM z13 SIMD Accelerators for Integer, String, and ...arith22.gforge.inria.fr/slides/s1-schwarz.pdf · 4 © 2015 IBM Corporation z13 Core changes 1Q 2015 GA 8 cores per die 24

© 2015 IBM Corporation

40

DGEMM 2x4

loads

madbr

madbr

madbr

FPU pipeline latency criticalAnd how many multiplies can youStick between dependent accumulation

8 FMAs

If you could stick 16 FMAsBetween dependent onesYou’d get 2 FMAs per cycle

8cyc

8cyc

8cyc