array allocation in non-cached memory systemsestrabd/lacsi2006/workshops/workshop5/tripp.pdfthe cost...

25
Array Allocation in Non-Cached Memory Systems Justin L. Tripp and Trident Compiler Team Los Alamos National Laboratory October 2006

Upload: others

Post on 18-Mar-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Array Allocation in Non-Cached Memory Systemsestrabd/LACSI2006/workshops/workshop5/tripp.pdfThe cost function considers the load on a memory’s bus caused by a given memory access

Array Allocation in Non-Cached MemorySystems

Justin L. Trippand Trident Compiler Team

Los Alamos National Laboratory

October 2006

Page 2: Array Allocation in Non-Cached Memory Systemsestrabd/LACSI2006/workshops/workshop5/tripp.pdfThe cost function considers the load on a memory’s bus caused by a given memory access

Overview

• Introduction

• Non-Cached Memory Systems

• Trident’s Approach

• Results

• Conclusions and Future Work

Unclassified 2 / LACSI 2006

Page 3: Array Allocation in Non-Cached Memory Systemsestrabd/LACSI2006/workshops/workshop5/tripp.pdfThe cost function considers the load on a memory’s bus caused by a given memory access

Scientific Applications

• Scientific Computing is typically floating

point (singles and doubles)

• Scientific Computing requires support of

legacy software

• Much of the software has high-level

parallelism already extracted (e.g., MPI,

etc.)

• It is desirable to provide acceleration

through more sophisticated high-level

compilers.

Unclassified 3 / LACSI 2006

Page 4: Array Allocation in Non-Cached Memory Systemsestrabd/LACSI2006/workshops/workshop5/tripp.pdfThe cost function considers the load on a memory’s bus caused by a given memory access

Coprocessor Acceleration

• Scientific Computing pushes the boundaries of computing

• Current microprocessors are not increasing in speed as they have

in the past.

• Solution – acceleration of code through “commodity”

co-processors

• An age old hardware solution to accelerating hard tasks.

(Think 8087.)

• Examples Floating-Point co-processors, FPGAs, GPUs, Physics

Processors, I/O controllers (SCSI, RAID, Ethernet, etc.)

Unclassified 4 / LACSI 2006

Page 5: Array Allocation in Non-Cached Memory Systemsestrabd/LACSI2006/workshops/workshop5/tripp.pdfThe cost function considers the load on a memory’s bus caused by a given memory access

Non-Cached Memory Systems

• Embedded Processors – 2kB to 64kB Scratch pad Memory,

DRAMS, ROMS (Flash, EEPROM, etc.)

• Cell - 256KByte Local Store (LS)

• Clearspeed coprocessor - Internal 128KB SRAM, 6KByte LS,

External DRAMs

• FPGAs - Internal Block Rams, External SRAMs, External DRAMs

Unclassified 5 / LACSI 2006

Page 6: Array Allocation in Non-Cached Memory Systemsestrabd/LACSI2006/workshops/workshop5/tripp.pdfThe cost function considers the load on a memory’s bus caused by a given memory access

FPGAs

Field Programmable Gate Arrays (FPGAs)

• Reprogrammable Logic

• Lookup Tables (LUTs), small RAMs, Registers, and Routing

• No free lunch – configurability costs

• Slower clock speeds, increased parallelism, more special blocks

(PPC405, DSP blocks, embedded multipliers, etc.)

• Very successful in signal and image processing, interconnects, glue

logic

• FPGAs continue to grow in size and slightly in speed.

Unclassified 6 / LACSI 2006

Page 7: Array Allocation in Non-Cached Memory Systemsestrabd/LACSI2006/workshops/workshop5/tripp.pdfThe cost function considers the load on a memory’s bus caused by a given memory access

FPGAs

Unclassified 7 / LACSI 2006

Page 8: Array Allocation in Non-Cached Memory Systemsestrabd/LACSI2006/workshops/workshop5/tripp.pdfThe cost function considers the load on a memory’s bus caused by a given memory access

FPGAs

• FPGAs are extremely Flexible.

• FPGAs provide a way to provide custom hardware.

• FPGA tools require some engineering knowledge.

• FPGA tools take a long time to run.

• FPGAs are normally programmed using VHDL or Verilog (HDL

Languages).

• However, HDL Languages are very low-level and difficult

Unclassified 8 / LACSI 2006

Page 9: Array Allocation in Non-Cached Memory Systemsestrabd/LACSI2006/workshops/workshop5/tripp.pdfThe cost function considers the load on a memory’s bus caused by a given memory access

Trident Compiler

FPGAs can perform high-performance floating-point (FP)

operations. However, traditional FPGA development is difficult and

few tools exist to specifically aid FP hardware development.

Trident Goals:

• Accept C input with double and float data types.

• Automatically extract available parallelism.

• Automatic pipelining of loops.

• Allow the selection from different FP libraries.

• Allow user developed FP libraries.

Unclassified 9 / LACSI 2006

Page 10: Array Allocation in Non-Cached Memory Systemsestrabd/LACSI2006/workshops/workshop5/tripp.pdfThe cost function considers the load on a memory’s bus caused by a given memory access

Organization

Four principal phases of compilation:

LLVM front−end Trident IRTransformation

Scheduling Synthesis

Selection

Trident IRBytecode to

IR to Bytecode

GCC front−end Predication

HyperblockFormation

Operation

Optimizations

Pipelining

DatapathGeneration

State MachineGeneration

High LevelOptimizations Register File

ControlGeneration

Generation

Final Output

Loop Block

C Input

VHDL

SelectionSchedule

AllocationArray

LLVM - Low Level Virtual Machine (www.llvm.org)

IR - Intermediate Representation

Unclassified 10 / LACSI 2006

Page 11: Array Allocation in Non-Cached Memory Systemsestrabd/LACSI2006/workshops/workshop5/tripp.pdfThe cost function considers the load on a memory’s bus caused by a given memory access

LLVM Intermediate Representation (IR)

• RISC-like three address code ($a = add float $b, $c)

• SSA Static Single Assignment form (infinite virtual register set

and explicit dataflow)

• Simple low-level control flow constructs create explicit

control-flow graph (ret, br, switch)

• Load/store instructions with typed pointers

• Explicit language-independent type information (void, bool, int,

float, double, ushort, ..., pointer, array, structure, function)

• Explicit typed pointer arithmetic (getelementptr takes a pointer

and returns element address)

Unclassified 11 / LACSI 2006

Page 12: Array Allocation in Non-Cached Memory Systemsestrabd/LACSI2006/workshops/workshop5/tripp.pdfThe cost function considers the load on a memory’s bus caused by a given memory access

Trident IR

Control Flow Graph

Control Edge

true

true

%b1

%~b1Boolean

HyperBlock

HyperBlock

Exit

Entry

Control Node

IR is used for:

Optimization, Resource

allocation, Scheduling,

Operation Mapping.

OperationOperator Operands

fpadd %tmp_21 %tmp_23

Predicate

%b1%tmp_24

Hyperblock

Operations also include:

• Start and Stop times

• Operand Type

• Hardware Reuse set

• Operator Class Information

Unclassified 12 / LACSI 2006

Page 13: Array Allocation in Non-Cached Memory Systemsestrabd/LACSI2006/workshops/workshop5/tripp.pdfThe cost function considers the load on a memory’s bus caused by a given memory access

Hardware Analysis and Instruction Scheduling

There is always limited memory bandwidth and physical resources on

any FPGA chip. Ensuring successful implementation of the circuit

on the target chip and achieving maximum execution speed requires

analysis of the hardware and scheduling of the available resources.

• Hardware Analysis

? Preliminary schedule to determine times of memory reads and writes? Array to memory allocation? Logic space requirements analysis

• Instruction Scheduling (schedule type chosen by user)

? non-loop code - ASAP, ALAP, Force-Directed? loop code - Modulo scheduling

Unclassified 13 / LACSI 2006

Page 14: Array Allocation in Non-Cached Memory Systemsestrabd/LACSI2006/workshops/workshop5/tripp.pdfThe cost function considers the load on a memory’s bus caused by a given memory access

Array Allocation

How is this different than a scratch pad RAM for an embedded

processor?

Unclassified 14 / LACSI 2006

Page 15: Array Allocation in Non-Cached Memory Systemsestrabd/LACSI2006/workshops/workshop5/tripp.pdfThe cost function considers the load on a memory’s bus caused by a given memory access

Array Allocation

How is this different than a scratch pad RAM for an embedded

processor?

• Wider Memory access

? More banks of SRAM – Multiple Busses – more Bandwidth!? Wider data sizes (32bit, 64bit)? Many different kinds of Memory (SRAM, BlockRAM, DRAM)? Any number of registers (no “stack” variables) and a small number of

allocatable BlockRAMs

• No “Code” – if you want to do it, you must make it. Functional call cachingdoes not make sense.

• DRAM requires a stall mechanism in the “code”. Pipelined sections must wait.

• DMA engines (or memory transfer engines) must be built.

Unclassified 15 / LACSI 2006

Page 16: Array Allocation in Non-Cached Memory Systemsestrabd/LACSI2006/workshops/workshop5/tripp.pdfThe cost function considers the load on a memory’s bus caused by a given memory access

Array Allocation

No memory allocation provided on FPGAs - Where should it go?

• Strategy – Using a greedy algorithm:

? Schedule memory accesses to maximize memory bus usage.

? Allocate data to memories.

? Evaluate memory allocation on # of cycles required.

? Repeat minimizing the # of cycles.

• Evaluate using function: c = cost function− attempts

If c ≤ 0, then schedule the memory access.

Unclassified 16 / LACSI 2006

Page 17: Array Allocation in Non-Cached Memory Systemsestrabd/LACSI2006/workshops/workshop5/tripp.pdfThe cost function considers the load on a memory’s bus caused by a given memory access

Choosing a Memory Allocation

Algorithm:

• Check to see if there memory is

available

• Iterate through each memory and each

array

• Check the cost in # of cycles for this

array in this memory

• Optimize through minimization in the

change in the overall allocation cost

While sufficient space in memory and all arrays have not yet been allocated

For each memorychoosen from a random list ofmemories, attemptto allocate array tothis memory

based on cost

For each arrayin random order

Evaluate allocation

the schedule trynext array

If cost to high

function

Unclassified 17 / LACSI 2006

Page 18: Array Allocation in Non-Cached Memory Systemsestrabd/LACSI2006/workshops/workshop5/tripp.pdfThe cost function considers the load on a memory’s bus caused by a given memory access

Array Allocation – Outer loop

• Pre-allocate to memories to

understand read and write latencies

• Preliminary schedule operations to

know where the reads and writes are

• Choose a memory allocation

• Evaluate memory allocation on # of

cycles required

Array Allocation

Repeat user−defined numberof times

allocationChoose initial

SchedulePreliminary

Scheduling

Continue

Unclassified 18 / LACSI 2006

Page 19: Array Allocation in Non-Cached Memory Systemsestrabd/LACSI2006/workshops/workshop5/tripp.pdfThe cost function considers the load on a memory’s bus caused by a given memory access

Cost Function

The cost function depends on the number and kind of busses or

ports that a memory has. It is not limited to one kind of memory

but supports:

Single Port

ROM

Port RAM

Dual Data Dual Port

RAM

Multi−Port

RAM

Single Port

RAM

addressin1

addressin0

dataout1

data in data out address data in data out address in

address out

data in1addressdata in/outaddressdata out data in0 data out0

address out0address out1

Port RAM

Dual Data Dual Port

RAM

Single Port

ROM

Multi−Port

RAM

Single Port

RAM

Unclassified 19 / LACSI 2006

Page 20: Array Allocation in Non-Cached Memory Systemsestrabd/LACSI2006/workshops/workshop5/tripp.pdfThe cost function considers the load on a memory’s bus caused by a given memory access

Cost Function

The cost function considers the load on a memory’s bus caused by a

given memory access.

For example:

Read A

Read A

Read ARead A

ScheduleCorrectedSchedule

Cycle

1

2

Cycle

1

2

0 0

Here due to a bus conflict, the second readmust be moved to the second cycle. Thecost is two since the schedule must belengthened to accommodate the secondread.

For the different memory types,the costs are different.

• ROM - 2

• SP RAM - 2

• DDP RAM - 2 (busy address)

• DP RAM - 2 (two reads)

• MP RAM - 1 (many ports)

Unclassified 20 / LACSI 2006

Page 21: Array Allocation in Non-Cached Memory Systemsestrabd/LACSI2006/workshops/workshop5/tripp.pdfThe cost function considers the load on a memory’s bus caused by a given memory access

Scheduling

Scheduling Example:

O = (A×B) + D × (C + D)

Cycle 1 Cycle 2 Cycle 3

ALAP

Cycle 1 Cycle 2 Cycle 3

Force Directed Chosen location

Cycle 1 Cycle 2 Cycle 3

ASAP

tmp1 = A*Btmp3 = tmp2*D

tmp2 = C+D tmp3 = tmp2*Dtmp1 = A*B tmp1 = A*B

tmp1 = A*Btmp2 = C+D

tmp2 = C+D O = tmp1+tmp3

O = tmp1+tmp3

O = tmp1+tmp3tmp3 = tmp2*D

Unclassified 21 / LACSI 2006

Page 22: Array Allocation in Non-Cached Memory Systemsestrabd/LACSI2006/workshops/workshop5/tripp.pdfThe cost function considers the load on a memory’s bus caused by a given memory access

Allocation ResultsAllocation Schedule Trident Exec. # of Avg Cycles

Benchmark Options Type Time (in sec) Hyperblocks per Block

Patmat Mult. Alloc. FD 10.043 5 7.600Patmat 1 Alloc. +Presch. FD 9.658 5 8.600Patmat 1 Alloc. + No Presch FD 6.208 5 7.800

Patmat Mult. Alloc. ASAP 6.530 5 7.400Patmat 1 Alloc. +Presch. ASAP 4.439 5 7.400Patmat 1 Alloc. + No Presch ASAP 3.601 5 7.400

Patmat Mult. Alloc. ALAP 7.042 5 6.400Patmat 1 Alloc. +Presch. ALAP 4.510 5 7.600Patmat 1 Alloc. + No Presch ALAP 3.740 5 7.600

Euclid Mult. Alloc. FD 48.050 1 86.000Euclid 1 Alloc. +Presch. FD 29.370 1 87.000Euclid 1 Alloc. + No Presch FD 34.383 1 87.000

Euclid Mult. Alloc. ASAP 8.155 1 86.000Euclid 1 Alloc. +Presch. ASAP 7.179 1 87.000Euclid 1 Alloc. + No Presch ASAP 5.959 1 87.000

Euclid Mult. Alloc. ALAP 8.902 1 82.000Euclid 1 Alloc. +Presch. ALAP 6.704 1 82.000Euclid 1 Alloc. + No Presch ALAP 6.158 1 87.000

Skeletonization Mult. Alloc. FD 41.677 37 6.432Skeletonization 1 Alloc. +Presch. FD 70.943 37 6.568Skeletonization 1 Alloc. + No Presch FD 39.949 37 6.432

Skeletonization Mult. Alloc. ASAP 35.424 37 6.243Skeletonization 1 Alloc. +Presch. ASAP 44.390 37 6.243Skeletonization 1 Alloc. + No Presch ASAP 34.724 37 6.297

Skeletonization Mult. Alloc. ALAP 36.320 37 6.405Skeletonization 1 Alloc. +Presch. ALAP 42.284 37 6.405Skeletonization 1 Alloc. + No Presch ALAP 35.600 37 6.405

Unclassified 22 / LACSI 2006

Page 23: Array Allocation in Non-Cached Memory Systemsestrabd/LACSI2006/workshops/workshop5/tripp.pdfThe cost function considers the load on a memory’s bus caused by a given memory access

Memory Type Results

Allocation Memory Trident Exec. # of Avg Cyc.

Benchmark Options Type Exec (sec) Hyperblks per Blk

syntheticMemTest Mult. Alloc. DP 14.789 3 22.33

syntheticMemTest Mult. Alloc. DDP 16.226 4 31.50

syntheticMemTest Mult. Alloc. SP 18.681 4 31.50

syntheticMemTest 1 Alloc. + Presch. DP 17.619 4 27.00

syntheticMemTest 1 Alloc. + Presch. DDP 16.368 3 22.33

syntheticMemTest 1 Alloc. + Presch. SP 17.919 4 27.00

syntheticMemTest 1 Alloc. + NoPresch. DP 9.936 4 31.25

syntheticMemTest 1 Alloc. + NoPresch. DDP 11.477 4 27.00

syntheticMemTest 1 Alloc. + NoPresch. SP 9.574 4 31.50

This was a synthetic test written to saturate the read and write busses. The code

has 8 times more reads than writes. The Dual Ported RAM performs best with the

best allocation, but other allocations the results are mixed.

Unclassified 23 / LACSI 2006

Page 24: Array Allocation in Non-Cached Memory Systemsestrabd/LACSI2006/workshops/workshop5/tripp.pdfThe cost function considers the load on a memory’s bus caused by a given memory access

Conclusions and Future Work

Results

• Best Allocation was found using multiple allocations with prescheduling

• Force Directed does move operations away, but usually results in a longerschedule.

• Complex method can take along time to execute

Future work

• Incorporate BlockRams for smaller data blocks

• Add ability to stall blocks and use DRAM

• Use profile analysis to determine SRAM, BlockRAM, or DRAM

• Evaluate the benefit of using SRAM as local cache for DRAM

Unclassified 24 / LACSI 2006

Page 25: Array Allocation in Non-Cached Memory Systemsestrabd/LACSI2006/workshops/workshop5/tripp.pdfThe cost function considers the load on a memory’s bus caused by a given memory access

Questions?

? ? ?Web address:

http://trident.sourceforge.net/

E-mail:

[email protected]

Unclassified 25 / LACSI 2006