60
Single and Multi-CPU Performance Modeling for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, Phd Candidate, UC Berkeley [email protected] February 26, 2008 Advisor: Alberto Sangiovanni-Vincentelli Dissertation Committee: Prof. Alper Atamturk, Prof. Rastislav Bodik, Prof. Alberto Sangiovanni-Vincentelli (chair) etropolis etropolis

Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley [email protected] February

  • Upload
    others

  • View
    15

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Single and Multi-CPU Performance Modelingfor Embedded Systems (Dissertation Talk)

Trevor Meyerowitz, Phd Candidate, UC Berkeley

[email protected]

February 26, 2008

Advisor: Alberto Sangiovanni-Vincentelli

Dissertation Committee: Prof. Alper Atamturk,

Prof. Rastislav Bodik,

Prof. Alberto Sangiovanni-Vincentelli (chair)

etropolisetropolis

Page 2: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Outline

� Introduction

� Motivation

� The Performance Modeling Problem

� Levels of Abstraction

� Metropolis

� Our Work

�Uniprocessor Modeling

�Multiprocessor Modeling

�Timing Annotation

�Conclusions and Future Work

Page 3: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Motivating Trends

� 2004 IRTS Update

� Key system-level design challenges include: � Design space exploration

� System-level estimation

� Intel CTO Greg Spirakis2003 EMSOFT Keynote

� Software is 80% of embedded system development cost

� more advanced research needed� Increase simulation speed of HLM for

architectural exploration and HW/SW codesign

� Multicore Explosion makes high level modeling even more important

� Cycle-Level Multicore simulation is HARD (and SLOW)

Moore’s Law (Source: Intel)

The Design Productivity Gap (Source: 1999 ITRS Roadmap)

Page 4: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Focus of This Work

Modeling ApproachesModeling Approaches

��Traditional ApproachesTraditional Approaches

�� CycleCycle--Accurate ModelsAccurate Models

�� Unacceptable PerformanceUnacceptable Performance

�� Long Development TimeLong Development Time

�� Hard to RetargetHard to Retarget

�� Prototypes and EmulationPrototypes and Emulation

�� Great PerformanceGreat Performance

�� Very ExpensiveVery Expensive

�� Very Long Development TimeVery Long Development Time

�� Not FlexibleNot Flexible

��Abstract ApproachesAbstract Approaches

�� Sacrifices some Detail and Sacrifices some Detail and

Accuracy for Speed of Accuracy for Speed of

Development and SimulationDevelopment and Simulation

�� Analytical ModelsAnalytical Models

�� Algebraic ModelsAlgebraic Models

�� Statistical ModelsStatistical Models

�� TransactionTransaction--Level Models (TLM)Level Models (TLM)

�� Higher Than RTL, lower than Higher Than RTL, lower than Analytical ModelsAnalytical Models

�� Separation of Communication and Separation of Communication and ComputationComputation

�� Communication via functionCommunication via function--callscalls

Page 5: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

The Performance Modeling Problem

�Major Factors to Consider

� Accuracy

� Speed

� Creation Effort

�Other Factors to Consider

� Retargetability

� Flexibility

� Modularity

� Modeling other quantities (e.g. Power, Area, etc)

Page 6: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Levels of Abstraction: The Hardware View

Register Transfer Level Models

Logic Gates

Layout

Algorithmic Models

Transaction-Level Models

Actual Gates

Languages:

C/C++, Matlab

SystemC, SpecC,

Metropolis

Verilog, VHDL

Communication:

Shared Variables

Method Calls to Channels

Wires and Registers

Page 7: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Register Transfer Level Models

Cycle-AccurateModels

Instruction Level Models

Algorithmic Models

Model Speed:

Native Speed (GHz)

~3 – ~900 MIPS

Microarchitecture / Timing:

None / None

None /Instruction Counts

~0.1 – ~30 MIPS“Full” /

Cycle-Counts

~0.1 – ~10 KHz“Full” /

Signal Level

Levels of Abstraction: A Software/Processor View

Page 8: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

My Work in Terms of Hardware and Software Views

Cycle-Accurate

Models

Instruction Level

Models

Algorithmic

Models

Logic Gates

Layout

Actual Gates

Register Transfer

Level Models

Transaction-Level

Models

Algorithmic

Models

Annotation

Framework

Multiprocessor

Modeling

Uniprocessor

Modeling

Hardware View Software/CPU View

Timed

Instruction

Trace

Timing

Annotated

Application

Application

Code and

Binary

Page 9: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Metropolis Framework – Key Features

�Orthogonalization of Concerns

� Function – Architecture

� Computation – Communication

� Behavior – Performance

�Flexible and Formal Semantics

� Can Represent a Wide Number of

Models of Computation (MoCs)

�Constraints

�Quantities

�Mapping

Platform-Based Design (ASV Triangles)Homepage: http://embedded.eecs.berkeley.edu/metropolis

etropolis

PlatformDesign-Space

Export

PlatformMapping

Architectural Space

Functional Space

Function Instance

Platform Instance

System Platform

PlatformDesign-Space

Export

PlatformMapping

Architectural Space

Functional Space

Function Instance

Platform Instance

System Platform

Metamodel

Compiler

Verification

tool

Synthesis tool

Front end

Meta model language

Simulator tool

...Back end1

Abstract syntax trees

Back end2Back endNBack end3

Metropolis

InteractiveShell

• Load designs

• Browse designs

• Relate designs

• Refine, map, etc.

• Invoke tools

• Analyze results

…tool

Metropolis Tool Framework

Page 10: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Metropolis : Functionality Example

process P{

port reader X;

port writer Y;

thread(){

while(true){

...

z = f(X.read());

Y.write(z);

}}}

medium M implements reader, writer{

int storage;

int n, space;

void write(int z){

await(space>0; this.writer ; this.writer)

n=1; space=0; storage=z;

}

word read(){ ... }

}

interface reader extends Port{

update int read();

eval int n();

}

interface writer extends Port{

update void write(int i);

eval int space();

}

MP1X Y P2X Y

Env1 Env2

MyFncNetlist

Source: Yosinori Watanabe

Page 11: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Metropolis: Architecture ComponentsAn architecture component specifies services, i.e.

• what it can do

• how much it costs

: interfaces

: quantities, annotation, logic of constraints

medium Bus implements BusMasterService …{

port BusArbiterService Arb;

port MemService Mem; …

update void busRead(String dest, int size) {

if(dest== … ) Mem.memRead(size);

[[Arb.request(B(thisthread, this.busRead));

GTime.request(B(thisthread, this.memRead),

BUSCLKCYCLE +

GTime.A(B(thisthread, this.busRead)));

]]

}

scheduler BusArbiter extends Quantity

implements BusArbiterService {

update void request(event e){ … }

update void resolve() { //schedule }

}

interface BusMasterService extends Port {

update void busRead(String dest, int size);

update void busWrite(String dest, int size);

}

interface BusArbiterService extends Port {

update void request(event e);

update void resolve();

}

BusArbiterBus

Source: Yosinori Watanabe

Page 12: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Metropolis: Architecture Netlist

Bus

ArbiterBus

Mem

Cpu OsSched

MyArchNetlist

Master

CPU +

OS

Slave

Mem

Arbiter

Architecture netlist specifies configurations of architecture components.

Each constructor

- instantiates arch. components,

- connects them,

- takes as input mapping processes.

Source: Yosinori Watanabe

Page 13: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Outline

�Introduction

�Uniprocessor Modeling

� Overview

� Related Work

� Double Process Models

� Results

�Multiprocessor Modeling

�Timing Annotation

�Conclusions and Future Work

Page 14: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Uniprocessor Modeling Overview

� Goals:

� Extensibility and Flexibility

� Simplicity

� Be “Data Sheet” accurate

� Separate Timing from Function

� Base MoC: Kahn Process Networks

� Concurrent Processes

� Communication via unbounded FIFOs

� Blocking Reads / Unblocking Writes

� Fully deterministic

� Untimed

� Scalar ARM Processors Modeled

� Strongarm – 5 stage pipeline

� XScale – 7 stage pipeline

ARM ISS

Microarch

Model

Input

Program

Inst.

Trace

Exec

Statistics

Tool Flow

Page 15: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Uniprocessor Modeling Related Work

� Microarchitectural Simulators / Frameworks

� SimpleScalar (Austin, et al)

� Liberty (August, et al)

� Operation State Machine (Simit-ARM) (Qin, Malik)

� ISS Technologies

� Vendor Provided ISS’s

� Compiled-Code ISS (e.g. VAST, LISAtek)

� Architecture Description Languages (ADL’s)

� Expression, LISAtek, Tipi, Etc

� System Level Design Environments

� e.g. Polis, Cosyma, VCC, CoWare

Page 16: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Double Process Model

�Needed For:� Modeling Forwarding

� Modeling Variable Instruction Latencies

�Leverages FIFO’s for modeling delays� Pre-execution Delay

� Execution Delay

� Synchronization

� Stalls

� Issue Stalls

� Result Stalls

Fetch Process

Execute Process

I-$

D-$

iTLB

dTLB

Bus

T. Meyerowitz, A. Sangiovanni-Vincentelli,“High Level CPU Micro-architecture Models Using Kahn Process Networks”, SRC Techcon Extended Abstract, October 2005, Portland, OR

Page 17: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Accuracy vs SimpleScalar

� Compared XScale and Strongarm

models to SimpleScalar-ARM

� With and Without Memory

� Instruction traces from modified

Sim-Safe ISS

� Based on four benchmarks

� Three from MiBench*

*Guthaus MR, Ringenberg JS, Ernst D, Austin TM, Mudge T,

Brown RB. “MiBench: A free, commercially representative

embedded benchmark suite.”, Proc. 4th IEEE International

Workshop on Workload Characterization, 2001, pp.3-14.

-15.00%

-10.00%

-5.00%

0.00%

5.00%

10.00%

15.00%

20.00%

Fib SSmall SLarge FFT-tiny

Strongarmnomem-Error

Strongarmmem-Error

XscaleNomem-Error

Xscale Mem-error

Page 18: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Performance vs SimpleScalar

� Optimizations

1. Results channels

changed to fixed arrays

2. Ported models to

SystemC

�Still ~15x performance gap

�Many optimizations are still

possible

� Caching of previously decoded

instructions

� Trace preprocessing

Model Performance (Cycles/Sec on a 3.0 GHz Xeon, Search-Large Benchmark)

Base

Metropolis

1. Optimized

Metropolis

2. Optimized

SystemC

Simplescalar

ARM

StrongARM Base 1997 5798 65537 916666

Xscale Base 2019 6086 67031 1013591

StrongARM Mem 1501 5865 60443 809229

Xscale Mem 1479 6036 60207 891007

Page 19: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Outline

�Introduction

�Uniprocessor Modeling

�Multiprocessor Modeling

� MuSIC Multiprocessor

� Architecture Model

� Functional Model

� Mapping

�Timing Annotation

�Conclusions and Future Work

Page 20: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

SIMD Core 4

64 KMEM

SIMD Core 3

64 KMEM

SIMD Core 2

64 KMEM

Shared Memory

96 K 96 K 96 K

SIMD Core 1

64 KMEM

Accel. Accel.

FIR FilterTurbo/Viterbi

SIMD Core ClusterARM/SC L1 CtrlMAC

I & D Cache

RFInterface

Bus Bridge

96 K

Multi-tasked SIMD Core

PE0

PE1

PE2

PE3

32 K Loc. MEMI & D Cache16 K + 16 K

PE Array

Multi-Layer System Bus

Peripherals

PE ArrayController

Multiple SIMD Cores (MuSIC)

SIMD Core 4

64 KMEM

SIMD Core 4

64 KMEM

SIMD Core 3

64 KMEM

SIMD Core 3

64 KMEM

SIMD Core 2

64 KMEM

SIMD Core 2

64 KMEM

Shared Memory

96 K 96 K 96 K

SIMD Core 1

64 KMEM

SIMD Core 1

64 KMEM

Accel. Accel.

FIR FilterTurbo/Viterbi

SIMD Core ClusterARM/SC L1 CtrlMAC

I & D Cache

RFInterface

Bus Bridge

96 K

Multi-tasked SIMD Core

PE0

PE1

PE2

PE3

32 K Loc. MEMI & D Cache16 K + 16 K

PE Array

Multi-Layer System Bus

Peripherals

PE ArrayController

Multiple SIMD Cores (MuSIC)

Baseband Processing Platform (Baseband Processing Platform (MuSICMuSIC))

•Each SIMD Core has 4 Control Processors

•MuSIC has a total of 19 Control Processors

•Control processors run a Multiprocessor OS

•Each Control Processor can run 1 thread at a

time (i.e. Processor ~= Thread)

Page 21: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Bus

Bridge0

RF

Interface1RF

Interface0-1

FIR

Process

ARMµµµµP

ARMµµµµP

ARM

Processes…………

CODEC

Process

Turbo/

Viterbi

Process

Medium

QuantityManager

Baseband Processing Platform Architecture Modeled in Metropolis (Simplified View)

Bus

Bridge1

System

Bus 0

SIMD

Core1

Shared

Mem0-3

KEY:

ARM

Scheduler

SIMD0

Scheduler

•Not Shown: Global Time, State Media, Sync Bus

System Bus 5

Scheduler

FIR

Filter

Shared Mem0-3

Schedulers

RF Interface0-1

Schedulers

SIMD

Core1

SIMD

Core 3

SIMD3

Processes …………

SIMD

Core1

SIMD

Core 0

SIMD0

Processes …………

System

Bus 3

SIMD3

Scheduler

System

Bus 4

System

Bus 5

AMBA

Bus0

AMBA

Bus1

Single connection

Multiple connections

System Bus 4

Scheduler

Page 22: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Functionality: 802.11 Receive Payload Processing

Rx_Splitter

Processingchain0

Processingchain5

PHY Merger

Processingchain1

MAC

- Data Channel

- State Channel

Modulator0Spreader0Coder0

… …

Page 23: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Mapping Functionality onto Architecture

�Mapping done via

Synchronization

ARMARM

Processing Chain 0Processing Chain 0

aProc

1

MACMAC

RxSplitterRxSplitter

PhyMergerPhyMerger

Buses

and

Bus Slaves

SIMD

0

sProc0_0

sProc0_1

SIMD

0

sProc0_0

sProc0_1

SIMD

0

SIMD

0

sProc0_0

sProc0_1

SIMD

1

sProc1_0

sProc1_1

SIMD

1

sProc1_0

sProc1_1

SIMD

1

SIMD

1

sProc1_0

sProc1_1

SIMD

2

sProc2_0

sProc2_1

SIMD

2

sProc2_0

sProc2_1

SIMD

2

SIMD

2

sProc2_0

sProc2_1

SIMD

3

sProc3_0

sProc3_1

SIMD

3

sProc3_0

sProc3_1

SIMD

3

SIMD

3

sProc3_0

sProc3_1

Processing Chain 4Processing Chain 4

Processing Chain 1Processing Chain 1

Processing Chain 5Processing Chain 5

Processing Chain 2Processing Chain 2

Processing Chain 3Processing Chain 3

Bus

Bridge0

Bus

Bridge0

RF

Interface1RF

Interface0-1

RF

Interface1

RF

Interface1RF

Interface0-1

RF

Interface0-1

FIR

Process

ARMµµµµP

ARMµµµµP

ARMµµµµP

ARMµµµµP

…………

CODEC

Process

Turbo/

Viterbi

CODEC

Process

CODEC

Process

Turbo/

Viterbi

Turbo/

Viterbi

Bus

Bridge1

Bus

Bridge1

System

Bus 3

System

Bus 3

SIMD

Core1

Shared

Mem0-3

SIMD

Core1

Shared

Mem0-3

Shared

Mem0-3

ARM

Scheduler

ARM

Scheduler

SIMD0

Scheduler

SIMD0

Scheduler

System Bus 5

Scheduler

System Bus 5

Scheduler

FIR

Filter

FIR

Filter

Shared Mem0-3

Schedulers

Shared Mem0-3

Schedulers RF Interface0-1

Schedulers

RF Interface0-1

Schedulers

System

Bus 0

System

Bus 0

SIMD3

Scheduler

SIMD3

Scheduler

System

Bus 4

System

Bus 4

System

Bus 5

System

Bus 5

AMBA

Bus0

AMBA

Bus0

AMBA

Bus1

AMBA

Bus1

System Bus 4

Scheduler

System Bus 4

Scheduler

ARM

Processes

SIMD

Core1

SIMD

Core 3

…………

SIMD3

Processes

SIMD

Core1

SIMD

Core 3

SIMD

Core1

SIMD

Core 3

SIMD

Core 3

…………

SIMD3

Processes

…………

SIMD3

Processes

SIMD

Core1

SIMD

Core 0

…………

SIMD0

Processes

SIMD

Core1

SIMD

Core 0

SIMD

Core1

SIMD

Core 0

SIMD

Core 0

…………

SIMD0

Processes

…………

SIMD0

Processes

Rx_Splitter

Processingchain0

Processingchain5

PHY Merger

Processingchain1

MAC … …Mapping

Architecture Function

Page 24: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Outline

� Introduction

�Uniprocessor Modeling

�Multiprocessor Modeling

�Multiprocessor Timing Annotation

� Tool Flow

� Uniprocessor Timing Annotation – XScale and MuSIC

� Multiprocessor Timing Annotation – MuSIC Only

� Results

� Related Work

�Conclusions and Future Work

T. Meyerowitz, M. Sauermann, D. Langen, A. Sangiovanni-

Vincentelli, “Source-Level Timing Annotation and Simulation

for a Heterogeneous Multiprocessor”, To appear in DATE 2008

Page 25: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Multi-Threaded

Application Code

(C + RTOS API)

Target Binary

(EXE, ASM, DIS) Cycle Accurate

Virtual Prototype

(SystemC, C++)

Target

Compilation

Timed

Functional Simulator

(SystemC/C++)

Performance

Traces

Timing Annotated

Multi-Threaded

Application Code

(SystemC +

RTOS API)

Host

Compilation

((Untimed)

Algorithmic)

Host

Compilation

(Annotated

Algorithmic)

Start (User

Input)

Finish

(Simulation Results)

Source Level

Timing Annotation

Framework

(Python)

Annotation Tool Flow

Timed

Functional Simulator

(SystemC/C++)

Page 26: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

UniprocessorUniprocessor Annotation AlgorithmAnnotation Algorithm

1.1. Unify Assembly and Disassembly information into Unify Assembly and Disassembly information into

Blocks, Lines, Functions, and FilesBlocks, Lines, Functions, and Files

2.2. Slice Blocks at Jumps in Processor Execution Slice Blocks at Jumps in Processor Execution

TraceTrace

3.3. Calculate BlockCalculate Block--Level AnnotationsLevel Annotations

��Add each blockAdd each block--level annotation to its linelevel annotation to its line’’s annotations annotation

4.4. Generate Annotated Source Code Generate Annotated Source Code

Page 27: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Annotation Example: Original Source FilesAnnotation Example: Original Source Files

void main (int argc, char** argv) {

short *InputI = (short *)Alloc_Mem(sizeof(short)*64); // line 23

short *InputQ = (short *)Alloc_Mem(sizeof(short)*64); // line 24

Sample Code (fft64_test.c) Excerpt

void main (int argc, char** argv) {

Delay_Thread(577); // line 23 annotation

short *InputI = (short *)Alloc_Mem(sizeof(short)*64); // line 23

Delay_Thread(351); // line 24 annotation

short *InputQ = (short *)Alloc_Mem(sizeof(short)*64); // line 24

Annotated Code Excerpt (annotated_code/fft54_test.c)

Page 28: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Annotation Example: Assembly and DisassemblyAnnotation Example: Assembly and Disassembly

.Fmain:

.L1:

sub r15, 0x1c

push r8..r14

add r15, r15, -0xcc

; End of Prologue

; **file '…/fft64_test.c', line 23

pgen2 r2, 7

mov r3, 4

mov r4, 2

jl .FAlloc_Mem

nop

nop

nop

nop

nop

nop

mov r12, r2

; **line 24

pgen2 r2, 7

mov r3, 4

mov r4, 2

[00020200] <.Fmain>: 2f3c sub r15, 28

[00020202]: e6de push r8..r14

[00020204]: f7ff 1f34 add r15, r15, -0x00cc

[00020208]: 0287 pgen2 r2, 7

[0002020a]: f534 mov r3, 4

[0002020c]: f542 mov r4, 2

[0002020e]: ecc1 0b78 jl .FAlloc_Mem:0x0216f0

[00020212]: 0000 nop

[00020214]: 0000 nop

[00020216]: 0000 nop

[00020218]: 0000 nop

[0002021a]: 0000 nop

[0002021c]: 0000 nop

[0002021e]: fac2 mov r12, r2

[00020220]: 0287 pgen2 r2, 7

[00020222]: f534 mov r3, 4

[00020224]: f542 mov r4, 2

Assembly File Disassembly File

Page 29: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

PROCESSOR EXECUTION TRACE

22421: 0.pc=00020200

22422: 0.pc=00020202

22435: 0.pc=00020204

...... Begin Line 23

22436: 0.pc=00020208

22437: 0.pc=0002020a

22445: 0.pc=0002020c

22446: 0.pc=0002020e

22447: 0.pc=00020212

22448: 0.pc=00020214

22449: 0.pc=00020216

...Alloc_Mem Function Execution

23012: 0.pc=0002021e

...... End Line 23

...... Begin Line 24

23019: 0.pc=00020220

23020: 0.pc=00020222

23021: 0.pc=00020224

23022: 0.pc=00020226

23023: 0.pc=0002022a

23024: 0.pc=0002022c

23031: 0.pc=0002022e

...Alloc_Mem Function Execution

23353: 0.pc=00020236

...... End Line 24

PROGRAM ASSEMBLY

WITH ADDRESSES

[00020200] <.Fmain>: 2f3c sub r15, 28

[00020202]: e6de push r8..r14

[00020204]: f7ff 1f34 add r15, r15, -0x00cc

[00020208]: 0287 pgen2 r2, 7

[0002020a]: f534 mov r3, 4

[0002020c]: f542 mov r4, 2

[0002020e]: ecc1 0b78 jl .FAlloc_Mem:0x0216f0

[00020212]: 0000 nop

[00020214]: 0000 nop

[00020216]: 0000 nop

[00020218]: 0000 nop

[0002021a]: 0000 nop

[0002021c]: 0000 nop

[0002021e]: fac2 mov r12, r2

[00020220]: 0287 pgen2 r2, 7

[00020222]: f534 mov r3, 4

[00020224]: f542 mov r4, 2

[00020226]: ecc1 0b78 jl .FAlloc_Mem:0x0216f0

[0002022a]: 0000 nop

[0002022c]: 0000 nop

[0002022e]: 0000 nop

[00020230]: 0000 nop

[00020232]: 0000 nop

[00020234]: 0000 nop

[00020236]: fab2 mov r11, r2

Annotation Example: Processor Execution TraceAnnotation Example: Processor Execution Trace

Sliced

Blocks

“22421: 0.pc=0020200” means:

Processor 0 fetches instruction

0x0020200 at cycle 22421

Page 30: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

PROCESSOR EXECUTION TRACE

22421: 0.pc=00020200

22422: 0.pc=00020202

22435: 0.pc=00020204

...... Begin Line 23

22436: 0.pc=00020208

22437: 0.pc=0002020a

22445: 0.pc=0002020c

22446: 0.pc=0002020e

22447: 0.pc=00020212

22448: 0.pc=00020214

22449: 0.pc=00020216

...Alloc_Mem Function Execution

23012: 0.pc=0002021e

...... End Line 23

...... Begin Line 24

23019: 0.pc=00020220

23020: 0.pc=00020222

23021: 0.pc=00020224

23022: 0.pc=00020226

23023: 0.pc=0002022a

23024: 0.pc=0002022c

23031: 0.pc=0002022e

...Alloc_Mem Function Execution

23353: 0.pc=00020236

...... End Line 24

PROGRAM ASSEMBLY

WITH ADDRESSES

[00020200] <.Fmain>: 2f3c sub r15, 28

[00020202]: e6de push r8..r14

[00020204]: f7ff 1f34 add r15, r15, -0x00cc

[00020208]: 0287 pgen2 r2, 7

[0002020a]: f534 mov r3, 4

[0002020c]: f542 mov r4, 2

[0002020e]: ecc1 0b78 jl .FAlloc_Mem:0x0216f0

[00020212]: 0000 nop

[00020214]: 0000 nop

[00020216]: 0000 nop

[00020218]: 0000 nop

[0002021a]: 0000 nop

[0002021c]: 0000 nop

[0002021e]: fac2 mov r12, r2

[00020220]: 0287 pgen2 r2, 7

[00020222]: f534 mov r3, 4

[00020224]: f542 mov r4, 2

[00020226]: ecc1 0b78 jl .FAlloc_Mem:0x0216f0

[0002022a]: 0000 nop

[0002022c]: 0000 nop

[0002022e]: 0000 nop

[00020230]: 0000 nop

[00020232]: 0000 nop

[00020234]: 0000 nop

[00020236]: fab2 mov r11, r2

Annotation Example: Block Slicing at JumpsAnnotation Example: Block Slicing at Jumps

Sliced Sliced

BlocksBlocks

Page 31: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

LineLine--Level AnnotationsLevel Annotations

�� Internal and External Costs for CyclesInternal and External Costs for Cycles

�� Internal: Internal:

�� Cycles of blocks inside of the line for the current iterationCycles of blocks inside of the line for the current iteration

�� External: External:

�� Cycles before this line (and after the previous block) and Cycles before this line (and after the previous block) and

�� Cycles between blocks for the current iterationCycles between blocks for the current iteration

��Detecting Iteration Count: (Approximate Solution)Detecting Iteration Count: (Approximate Solution)

�� Track internal blocksTrack internal blocks’’ iteration counts, and make line iteration count equal to iteration counts, and make line iteration count equal to

the maximum of these iteration countsthe maximum of these iteration counts

��Handling LoopsHandling Loops

�� Search source code for lines beginning with Search source code for lines beginning with ““forfor”” or or ““whilewhile””

�� Detect initialization statement and treat it separatelyDetect initialization statement and treat it separately

Page 32: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Generate Annotated Source Code: Different Cases

Normal Case

Delay_Thread(Dstatement1);

<statement1>

Delay_Thread(Dstatement2);

<statement2>

While Loop Case

Delay_Thread(Dtest);

while (<test>) {

Delay_Thread(Dtest);

Delay_Thread(Dbody);

<body>

}

Do-While Loop Case

(Normal Case)

do {

Delay_Thread(Dbody);

<body>

Delay_Thread(Dtest);

} while (<test>) ;

For Loop Case

Delay_Thread(Dinit + Dtest);

for( <init>; <test>; <update>) {

Delay_Thread(Dbody);

<body>

Delay_Thread(Dupdate + Dtest);

};

Page 33: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Multiprocessor Annotation AlgorithmMultiprocessor Annotation Algorithm

1.1. Calculate each processorCalculate each processor’’s block and lines block and line--level level

annotations as before except:annotations as before except:

�� Special care with startup delaysSpecial care with startup delays

�� Special handling of interSpecial handling of inter--processor functionsprocessor functions

�� Ignore their delaysIgnore their delays

�� Substitute in characterized delaysSubstitute in characterized delays

2.2. Unify lineUnify line--level annotations from all processorslevel annotations from all processors

3.3. Generate annotated source codeGenerate annotated source code

Page 34: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Sample Multiprocessor Application

�Creates Threads until limit is reached

�Motivates Special handling of

� Startup Delays

� Inter processor communication

Startup

Startup

Startup

Startup

Startup

Create

Thread

Create

Thread

Create

Thread

Create

Thread

Create

ThreadExit

Exit

Exit

Exit

Exit

10000 12000 14000 16000 18000 20000

Thread

4

Thread

3

Thread

2

Thread

1

Thread

0Wait Exit

Wait Exit

Wait Exit

Wait Exit

End of

Program

Cycles

static int val = 0;

void main(void) {

thread* next_thread;

val++; // line 20

Delay_Thread(<line22_delay>);

if (val < NUM_PROCS) { // line 22

next_thread =

Create_Thread(main); // line 24

}

...

} Thread Test Initial Code

Page 35: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Multiprocessor Annotation: Handling Startup Delays

static int val = 0;

void main(void) {

thread* next_thread;

Delay_Thread(<startup_delay>);

Delay_Thread(<line20_delay>);

val++; // line 20

Delay_Thread(<line22_delay>);

if (val < NUM_PROCS) { // line 22

Delay_Thread(<line24_delay>);

next_thread =

Create_Thread(main); // line 24

}

...

} (Buggy) Annotated Initial Code

static int val = 0;

static int started_up = 0;

void main(void) {

thread* next_thread;

if (started_up == 0) {

started_up = 1;

Delay_Thread(<startup_delay>);

}

Delay_Thread(<line20_delay>);

val++; // line 20

Delay_Thread(<line22_delay>);

if (val < NUM_PROCS) { // line 22

Delay_Thread(<line24_delay>);

threads[val] =

Create_Thread(main); // line 24

}

} Fixed Annotated Initial Code

Problem: Startup delay will occur

with each thread creation!!

Page 36: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Multiprocessor Annotation: Why Characterization? (1 of 2)

void main(void) {

thread* next_thread;

next_thread = Create_Thread(main);

wait_exit(next_thread);

exit();

} Initial Code

Program Properties:

•Wait_exit, Startup delays = 0

•Create_Thread, Exit delays = 1000

•System has 5 total processors

•Based on this Actual Delay = 10000

void main(void) {

thread* next_thread;

Delay_Thread(1000);

next_thread = Create_Thread(main);

Delay_Thread(4000);

wait_exit(next_thread);

Delay_Thread(1000);

exit();

} Direct Measurement Annotated Code

void main(void) {

thread* next_thread;

next_thread = Create_Thread(main);

wait_exit(next_thread);

Delay_Thread(1000);

exit();

} Characterization-Based

Annotated Code

Results:

Delay = 14000

Error = 40%

Results:

Delay = 10000

Error = 0%

Page 37: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Multiprocessor Annotation: Why Characterization? (2 of 2)

�Overlap between multiple

processor threads isn’t

captured in annotation

�Processor Execution Trace is

approximate

� Only gives fetch times

� No pipelining

� This means that intrinsic

instructions can magnify errors

void main(void) {

thread* next_thread;

Delay_Thread(1000);

next_thread = Create_Thread(main);

wait_exit(next_thread);

Delay_Thread(4000);

Delay_Thread(1000);

exit();

} Direct Measurement Annotated Code (v2)

Results:

Delay = 34000

Error = 240%

Thread 1 Thread 1

Thread 2

Thread 1

Thread 2

Thread 1

=?

Page 38: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

MiBench Uniprocessor Accuracy for XScale and MuSIC

�XScale Error Magnitudes

� Average: 3.76%

� Maximum : 11.06%

�MuSIC Error Magnitudes

� Average: 3.85%

� Maximum: 17.46%

Error Magnitudes for MiBench

0.00%2.00%4.00%6.00%8.00%

10.00%12.00%14.00%16.00%18.00%20.00%

adpc

m.e

ncode

adpc

m.d

ecode

dijks

trapa

trici

a

rijnd

ael.e

ncod

e

rijnd

ael.d

ecod

e

sha

strin

gsearc

hav

erag

e

|Xscale Small Error|

|Xscale Large Error|

|MuSIC Small Error|

|MuSIC Large Error|

Page 39: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

MiBench Uniprocessor Speedup for XScale and MuSIC

Annotation Speedup on MiBench

1

10

100

1,000

10,000

adpc

m.e

ncode

adpc

m.d

ecode

dijks

tra

patri

cia

rijnd

ael.e

ncod

erij

ndael

.dec

ode

sha

strin

gsearc

hav

erag

e

XScale Small Speedup

XScale Large Speedup

MuSIC Small Speedup

MuSIC Large Speedup

Averages

2.5 GHz !!

Average Minimum Maximum Average Minimum Maximum

XScale 2250 110 5900 2 1 8MuSIC 190 16 1030 290 1900 6

Annotation Speedup (vs. VP) Annotation Slowdown (vs. Native)

Page 40: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Multiprocessor Results

� Internal Tests

� Direct Measurement is much less

accurate than Characterization Based

because of double counting.

� For streaming_test benchmark

� Different data |error| <1.0%

� Different # of worker threads |error| <3.1%

� 5 Thread JPEG Encoder

� Max. and Avg. |error| are: ~8%

� Speedup of 14 – 18x

� Changing image sizes didn’t impact

error

� Annotated Code was 2x – 5x slower

than Non-Annotated Code

Test

Thread

Count

Direct

Meas.

Error %

Char.

Based

Error %

Char.

Based.

Speedup

message

test 3 0.00% 0.21% 80.1

streaming

test 4 48.77% 0.18% 207.5thread

test 19 767.24% -2.24% 526.9

avg. magnitude 272.01% 0.87% 271.5

max. magnitude 767.24% 2.24% 526.9

Num. of Rows

and Columns Error Speedup

32 -8.18% 14.00

64 -7.56% 18.49

160 -7.39% 17.03

avg. magnitude 7.71% 16.51

max magnitude 8.18% 18.49

Internal Multiprocessor Results

JPEG results for different image sizes

Page 41: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Scaling of Annotations

� For MuSIC: Annotator runtime ranged

from 0.5x to 3x of VP runtime

� For XScale: Annotator runtime ranged

from 7.5x to 75x of VP runtime

Streaming Test for Different #'s of Worker Threads

1.000

1.500

2.000

2.500

3.000

1 6

Number of Worker Threads

No

rmalized

Valu

e Normalized VP

Execution Time

Normalized Char.

Based Execution

Time

Normalized

Annotation Time

Source

Worker0

WorkerN

… SinkWorker1… …

Page 42: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Timing Annotation Related Work

� Software Performance Estimation

� Polis (UC Berkeley)� Based on CFSM and S-Graphs

� CABA – Lavagno and Lazarescu� Virtual Compilation

� Object Code Based

� Worst-Case Execution Time Analysis

� Cinderella (Li and Malik)

� AbsInt (Wilhelm, et al)

� MESH – Cassidy, Paul, Thomas

� High Level Simulation Framework for Multiprocessor Systems

� Hand-annotation of programs

� Compiled Code ISS (VaST, LISAtek,

etc)

� Fast and Accurate

� Time consuming to create and modify

� Multi-processors can still be slow

� Profiling

� General Profiling (e.g. Gprof) � Insturmentation + sampling

� Micro-profiling (Kempf, Meyr, et al)� Instrumentation at an IR Level

� ~9x Faster than Instruction Level Simulation

� 80% - 98% accuracy

� Other

� FastVeri from InterdesignTechnologies

Page 43: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Contributions

�Uniprocessor Modeling

� Intuitive, Accurate, and Retargetable

� Still needs more optimization

�Multiprocessor Modeling

� Simple, generic models that are highly reusable

� But, needs a direct connection pre-existing models

�Multiprocessor Source-Level Timing Annotation

� Framework is Highly Generic and Retargetable

� Extension of Functional Simulator to SystemC

� Achieved Good Speedup and Accuracy vs. Virtual Prototype

Page 44: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

My Work in Terms of Hardware and Software Views

Cycle-Accurate

Models

Instruction Level

Models

Algorithmic

Models

Logic Gates

Layout

Actual Gates

Register Transfer

Level Models

Transaction-Level

Models

Algorithmic

Models

Annotation

Framework

Multiprocessor

Modeling

Uniprocessor

Modeling

Hardware View Software/CPU View

Timed

Instruction

Trace

Timing

Annotated

Application

Application

Code and

Binary

Page 45: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Future Work in Terms of Hardware and Software Views

Cycle-Accurate

Models

Instruction Level

Models

Algorithmic

Models

Logic Gates

Layout

Actual Gates

Register Transfer

Level Models

Transaction-Level

Models

Algorithmic

Models

Extended

Annotation

Framework

Multiprocessor

Modeling

Uniprocessor

Modeling

Hardware View Software/CPU View

Timed

Instruction

and

Memory

Trace

Timing +

Communication

Annotated

Application

Application

Code and

Binary

Page 46: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Acknowledgements

� Microprocessor Modeling

� Intel Corporation for SRC sponsorship

� Summer Internship

� Mentors: Timothy Kam and Mike Kishinevsky

� Berkeley Liason: John Moondanos

� Other Mentors

� Luciano Lavagno, Yoshi Watanabe, Cadence Berkeley Labs

� Kees Vissers

� Student Collaborators

� Sam Williams, Min Chen, Qi Zhu, and Haibo Zeng

� Annotation Work

� Direct Collaboration with Mirko Sauermann and Dominik Langen at Infineon

� Infineon SDR Group: Wolfgang Raab, Dominik Langen, Cyprian Grassman, Mirko

Sauermann, Matthias Richter, Alfonso Troya, Jens Harnisch, et al.

� Software Licenses from CoWare

Page 47: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February
Page 48: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

SystemC

� IEEE Standardized C++-based Library for modeling Hardware and/or Software

Systems

� Open Source Reference Implementation available at: http://www.systemc.org

� Widely Supported in EDA and IP-Exchange Industries

� Version 1.0 – Primarily for accelerating RTL-level simulations

� Primitive Channels – Wires, Registers

� Version 2.2 – Support for complicated channels and other higher level concepts

� Higher-level Interface-based Channels

� Dynamic Process Control Constructs

� Official Libraries for:

� Verification and Testing

� Transaction-Level Modeling

Page 49: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Annotation Example: Annotation ResultsAnnotation Example: Annotation Results

�Annotated Delay Within 0.1% of actual results

void main (int argc, char** argv)

{

if (started_up == 0) {

started_up = 1; Delay_Thread(22436); // processor startup delay

}

Delay_Thread(577); // line 23 annotation

short *InputI = (short *)Alloc_Mem(sizeof(short)*64); // line 23

Delay_Thread(351); // line 24 annotation

short *InputQ = (short *)Alloc_Mem(sizeof(short)*64); // line 24

Annotated Code Excerpt (annotated_code/fft54_test.c)

Page 50: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Levels of AbstractionLevels of Abstraction

LevelLevel Speed / Speed /

AccuracyAccuracy

Function / Function /

ArchitectureArchitecture

AlgorithmicAlgorithmic Excellent Excellent / / NoneNone Concurrent / NoneConcurrent / None

Annotated AlgorithmicAnnotated Algorithmic ExcellentExcellent / / GoodGood Concurrent + Delays / Concurrent + Delays /

NoneNone

Abstract (TLM) ModelAbstract (TLM) Model GoodGood / / PoorPoor Concurrent / Concurrent /

Timed ResourcesTimed Resources

Annotated Abstract ModelAnnotated Abstract Model GoodGood / / Very GoodVery Good Concurrent + Delays /Concurrent + Delays /

Timed ResourcesTimed Resources

CycleCycle--Level Level

(Virtual Prototype)(Virtual Prototype)

OKOK / / Cycle LevelCycle Level ASM / ASM / SystemCSystemC

RTLRTL--levellevel HorribleHorrible / / Signal Signal

LevelLevel

ASM / ASM / SystemCSystemC

Our

Focus

Annotations

Page 51: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Single Process Model*

FRXW

IC

DC

RF

• Single Process Execution Order

1. Read operands

2. Execute

3. Write to register file

• Synchronous Assumption

•Parameterize the pipeline depth•Add hazard detection and bubble

insertion (stalls)

Haza

rd•Add a branch predictor

•Pass prediction and PC down pipeline

•Resolve branch when it commits

Bra

nch

Pre

dic

t

* Collaboration With: Sam Williams

Page 52: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

MuSIC Platform Software

� ILTOS Multiprocessor RTOS

� Architecture Specific Functions

� Basic Thread Operations (Create, Exit)

� Inter-Thread Messaging

� Synchronization Primitives (Events,

Mutexes, Etc)

� API-Compatible Simulator

� ILTOS API implemented on Windows API

� Ported to SystemC for timing annotation*

� Highly Optimized SystemC Cycle Accurate

Virtual Prototype

� Parameterizable (# CPUs, Tracing,

Accuracy of Models, etc)

� Uses JIT Cache-Compiled simulator from

CoWare

ILTOS LIBC

Multithreaded Application

ILTOS

x86 CompilerMuSIC Compiler

SystemC Lib

Sim Host (PC)

API-level Simulator

SystemC Lib

Sim Host (PC)

API-level Simulator

SystemC Lib

Sim Host (PC)

Virtual Prototype

SystemC Lib

Sim Host (PC)

Virtual Prototype

Cycle Accurate,

but Slow

No Accuracy, but Fast

ILTOS Simulation Targets

* Collaboration With: Mirko Sauermann @ Infineon

Page 53: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Performance Backwards Annotation: An ExamplePerformance Backwards Annotation: An Example

m1

beg

Startup_code();

for (x < num_strings) {

initsearch(find_str[x]);

strsearch(srch_str[x]);

} return 0; }

m2

m3

end

i1 i2

i3i4

s1 s2

s3s4s5

Function Level Annotation

Block Level Annotation

Page 54: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Characterization Example Actual Execution

060005000500040004

4000Avg.

600090008000200010001

200070006000400030003

400080007000300020002

8000100009000100000

Full

Wait

Delay

Exit

End

Wait

Exit

End

Wait

Exit

Begin

Create

Thread

Begin

Thread

Id

void main(void) {

thread* next_thread;

next_thread = Create_Thread(main);

wait_exit(next_thread);

exit();

} Initial Code

Program Properties:

•Wait_exit, Startup delays = 0

•Create_Thread, Exit delays = 1000

•System has 5 total processors

•Based on this Actual Delay = 10000

Page 55: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Characterization Example Direct Measurement Execution

100009000500040004

1300012000200010001

1100010000400030003

1200011000300020002

1400013000100000

Exit

End

Wait

Exit

End

Wait

Exit

Begin

Create

Thread

Begin

Thread

Idvoid main(void) {

thread* next_thread;

Delay_Thread(1000);

next_thread = Create_Thread(main);

Delay_Thread(4000);

wait_exit(next_thread);

Delay_Thread(1000);

exit();

} Direct Measurement Annotated Code

Results:

Delay = 14000

Error = 40%

Page 56: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Characterization Example Characterization-Based Execution

60005000500040004

90008000200010001

70006000400030003

80007000300020002

100009000100000

Exit

End

Wait

Exit

End

Wait

Exit

Begin

Create

Thread

Begin

Thread

Id

void main(void) {

thread* next_thread;

next_thread = Create_Thread(main);

wait_exit(next_thread);

Delay_Thread(1000);

exit();

} Characterization-Based

Annotated Code

Results:

Delay = 10000

Error = 0%

Page 57: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Characterization Example Direct Measurement Execution: With Wait Delay Pushed to After the Wait Function

100005000500040004

2800022000200010001

1600010000400030003

2200016000300020002

3400028000100000

Exit

End

Wait

Exit

End

Wait

Exit

Begin

Create

Thread

Begin

Thread

Id

void main(void) {

thread* next_thread;

Delay_Thread(1000);

next_thread = Create_Thread(main);

wait_exit(next_thread);

Delay_Thread(4000);

Delay_Thread(1000);

exit();

} Direct Measurement Annotated Code (v2)

Results:

Delay = 34000

Error = 240%

Page 58: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Internal Uniprocessor MuSIC Tests

�Compares Direct

Measurement and

Characterization-Based

Approaches

�Speedup ranges from 11x to

139x

�For Different Data

� Good for larger # of iterations

(within 3%)

� Smaller # causes bad

estimation due to cache

impact (within 50%) 1394.41%0.46%max. magnitude

470.75%0.08%avg. magnitude

230.00%0.00%udt_test2

139-0.15%-0.15%cck_test

48-0.03%0.00%fft64

25-0.02%-0.02%udt_test

131.59%0.00%syncmng_test

11-0.04%-0.04%ratematch

334.41%-0.02%payload1

94-0.46%-0.46%libc_test

47-0.21%-0.09%dhrystone

33-0.59%0.00%alloc_test

Char.

Based

Speedup

Char.

Based

Error %

Direct

Meas.

Error %Benchmark

Page 59: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Uniprocessor MiBench Results

� Information

� Run on benchmarks that compiled

with minimal changes and ran

properly

� Ran on small and large data sets

�Speedup of 15x-1030x vs. VP

�Accuracy

� For same data |error| is:

max 1%, avg. ~3%

� For different data |error| stayed

almost the same (<0.1% change)

Benchmark Error (%) Speedup Error (%) Speedup

adpcm.encode -1.67% 16.3 -0.70% 16.3

adpcm.decode -2.25% 15.6 -1.31% 40.1

dijkstra -12.63% 25.7 -17.46% 27.5

patricia -0.47% 81.6 -1.18% 65.5

rijndael.encode -1.26% 129.9 -2.96% 229.6

rijndael.decode -6.52% 159.1 -1.69% 234.5

sha 0.00% 1,030.8 0.00% 984.4

stringsearch 3.85% 14.6 -13.95% 28.7

avg. magnitude 2.80% 184.2 4.91% 203.3

max. magnitude 12.63% 1,030.8 17.46% 984.4

Small Results Large Results

MiBench results for large and small data sets

Page 60: Single and Multi-CPU Performance Modeling for Embedded ...€¦ · for Embedded Systems (Dissertation Talk) Trevor Meyerowitz, PhdCandidate, UC Berkeley tcm@eecs.berkeley.edu February

Assumptions and LimitationsAssumptions and Limitations

ASSUMPTIONSASSUMPTIONS

��Execution delays of individual Execution delays of individual

lines are close to fixedlines are close to fixed

��All code of interest available as: All code of interest available as:

�� C source codeC source code

�� DebugDebug--compiled ASM and EXEcompiled ASM and EXE

��Good coding practices are usedGood coding practices are used

�� No No gotogoto’’ss

�� 1 statement per line1 statement per line

�� If, for, doIf, for, do--while all have { }while all have { }’’ss

LIMITATIONSLIMITATIONS

��DoesnDoesn’’t handle optimized codet handle optimized code

��Some annotations can be Some annotations can be

placed illegallyplaced illegally

��Memory traffic and valueMemory traffic and value--

dependent execution times are dependent execution times are

not modelednot modeled

��Trace files can get HUGE!Trace files can get HUGE!