extending the thread programming model across …...extending the thread programming model across...

39
Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David Andrews Information Technology and Telecommunications Center (ITTC) University of Kansas April 15, 2005

Upload: others

Post on 27-Jun-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures

Dissertation Defenseby

Razali Jidin

Advisor: Dr. David Andrews

Information Technology and Telecommunications Center (ITTC)University of Kansas

April 15, 2005

Page 2: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Thank you• Committee members

– Dr. David Andrews– Dr. Douglas Niehaus– Dr. Perry Alexander– Dr. Jerry James

– Dr. Carl E. Locke Jr.• Research members

– Wesley Peck– Jason Agron, Ed Komp, Mitchel Trope, Mike Finley, Jorge Ortiz,

Swetha Rao, …….

Page 3: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Presentation Outline

• Problem Statement & Motivation• Background – Previous works• Research Objectives• Hybrid Synchronization Mechanisms• Hardware Thread• Performance Results• Evaluation of Hybrid Thread - Image Processing• Conclusion & Future Works

Page 4: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Contributions• Status: Completed HW/SW co-design of multithreading programming model,

stable and running.• Publications:

1. Andrews, D.L., Niehaus, D., Jidin, R., Finley, M., Peck, W., Frisbee, M., Ortiz, J. Komp, E. Ashenden, P., Programming Model for Hybrid FPGA/CPU Computational Components: A Missing Link, IEEE Micro, July/Aug 2004

2. R.Jidin, D.L. Andrews, W. Peck, D. Chirpich, K. Stout, J. Gauch, Evaluation of the Hybrid Thread Multithreading Programming Model using Image Processing Transform, RAW 2005, April 4-5, 2005, Denver Colorado

3. R. Jidin, D.L. Andews, D. Niehaus, W. Peck, Fast Synchronization Primitives for Hybrid CPU/FPGA Multithreading, IEEE RTSS, WIP 2004, Dec 5-8, Lisbon Portugal

4. R.Jidin, D.L.Andrews, D. Niehaus, Implementing Multithreaded System Support for Hybrid Computational Components, ERSA 2004, June 21-24, Las Vegas

5. Andrews, D., Niehaus,D., Jidin, R., Implementing the Thread Programming Model on Hybrid FPGA/CPU Computational Components, WEPA, International Symposium on Computer Architecture, Feb 2004, Madrid, Spain

• Further impacts:Inquiries received from universities world wide and Cray Research

Page 5: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Problem Statement• FPGAs serve as computing platforms ?

– History: serve as prototyping and glue logics devices– Becoming more denser and complex devices– Hybrid devices: embedded CPUs + other resources– Require better tools to handle new complexities

• Current FPGA programming practices– Require hardware architecture knowledge – not familiar

to the software engineers– Have to deal with timing issues, propagation delays,

fan-out, etc.– Hardware and software components interaction using

low level communication mechanisms

Page 6: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Motivation: Hybrid CPU/FPGA Architectures

• Embedded PPC 405 CPU + Sea of free FPGA Gates (CLB’s) + …

• BRAM provides efficient storage to save system “states”.

• System components provided as libraries or soft IPs:- System buses (PLB, OPB)- Interrupt controllers, UARTs

• Migration of system services from CPU into FPGA can provide new capabilities to meet system timing performance. New services are provided in the form of soft IPs Source: IBM T.J Watson Research Center

Page 7: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Motivation: Higher Abstraction Level• Need to use high level of

abstraction to increase productivity– Focus on applications not on

hardware details.– Reduce the gap between

between HW and SW designs, to enable programmer access to hybrid devices.

• Hybrid Thread Abstraction Layer – abstract out hardware

architectures such as buses structure, low level peripheral protocols, CPU/FPGA components, etc.

system bus

Hardware ThreadInterface

Component

UserHardwareThread 2

CPU

Hybridthread

abstractionlayer

Software Thread Interface Component

Hardware ThreadInterface

Component

UserHardwareThread 1

SoftwareThread1

SoftwareThread 2

Hardware Threads

Page 8: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Previous Works• Research efforts to bring High Level Languages (HLL)

into hardware domain• Streams-C [Los Alamos]

– Supplements C with annotations for assigning resources on FPGA– Suitable for systolic based computations, compiler based on SUIF– Hardware/software communication using FIFO based streams– Programming productivity versus device area size

• Handel C [Oxford ]– Subset of C + additional constructs for specifying FPGA circuits– Compile Handel C programs into synchronous machines– Hardware/software interactions using low level communication

mechanisms • System level [System C, Rosetta]

– Attempt to remove hardware/software boundaries– High level integration between hardware & software components?

Page 9: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Research Objectives• Goal: Create an environment where programmers can express system

computations using familiar parallel thread model– standard thread semantics across CPU/FPGA boundaries– threads represented such that they can exist on both components– enable threads to share data with synchronization mechanisms

• Issues of interest:–– FPGA based Thread Control and ContextFPGA based Thread Control and Context:

• initiating, terminating, synchronizing threads• computational models (threads over FSM’s)• new definition of thread context

–– Synchronization Mechanisms for CPU/FPGA based ThreadsSynchronization Mechanisms for CPU/FPGA based Threads• Semaphore, lock (mutex) or condition variables

–– API and Operating System (OS) SupportAPI and Operating System (OS) Support• User Application Program Application (API) Library Functions• System services adaptation and migration

– Ex. thread scheduling

Page 10: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Current Thread Programming Model (TPM)

criticalsection

T15 T11

CPU

T3

Memory

bus

T7T5

queue

• An application can be broken into executable units called threads (a sequence of instruction).

• Threads execute concurrently on CPUs ( M threads map to N CPUs)

• Threads interleave on a single CPU to create an illusion of concurrency

• Accesses to shared data are serialized with the aid of synchronization mechanisms.

Page 11: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Current Synchronization Mechanisms• Current synchronization mechanisms

– Depend on atomic operations provided by HW or CPU– SW: CPU instructions Test and Set

• Set variable to one, return old value to indicate prior set– HW: Snoopy cache on multiprocessors

• Challenges– Current methods do not extend well to the HW based Thread– Do not want to increase overhead on CPU

• New methods– FPGAs provide new capabilities to create more efficient

mechanisms to support semaphores– No special instruction, no modification to processor core– New FPGA based synchronization mechanism provided as IP

cores

Page 12: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Achieving Atomic Operations with FPGA• Atomic transaction controller on FPGA

– Read acknowledgement is delayed– Hardware operation completes within this delay– Use lower order address lines to encode necessary information

such thread ID and lock ID– Controller returns status & grant to the application program

interface (API) request on data bus• Issues on cost of FPGA resources when the number of

synchronization variables in a system is large– Implement all the synchronization variables within a single entity.– Use a single controller to manage multiple synchronization

variables.– Use on chip block memory (BRAM) instead of LUT to save the

state of each individual variables– Example our multiple (64) spin locks core

Page 13: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Multiple Spin Locks Core• APIs

– Spin_lock– Spin_unlock

• Lock BRAM– 64 Recursive counters– 64 Lock Owner register

• Controllers– Common controllers for

multiple locks– Access to Lock BRAM– Atomic read transaction– Recursive error– Reset all locks

Controllers :- spin locks- recursive counters

3

1

2

Lock OwnerRegisters

Data Bus

Thread_7

Thread_9

Thread_1

RecursiveCounters

Address bus: 6 lines for spin lock ids 9 lines for thread ids 2 lines for operation codes

Page 14: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Blocking Type Synchronization• Spin vs. blocking type synchronization

– Blocking reduces bus activities and does not tie CPU– Blocking requires queues to hold the sleeping threads

• Mapping of synchronization variables to sleep queues– Provides a separate queue for each blocking semaphore is costly

when many semaphore variables are needed on a system

• Global Queue– Creates multiple semaphores with a single global queue– Efficient queuing operation but not at the expense of hardware

resources• Wakeup mechanism & delivery of unblocked threads

– De-queue operation of unblocked threads– Delivery of unblocked threads either to the scheduler queue or

individual hardware threads (bus master capability)

Page 15: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Hybrid Thread System

T7F1

F2T4T8

Threads in Sleep Queues

Mutexes IP

T15 T11

CPU

T3F3

HardwareAPI

HW Thread IP

Mutex 1

Mutex 2

API

Memory

criticalsection

OtherIP core

• Moves Mutexes + queues + wake-up into FPGA from memory• Provides synchronization services to FPGA & CPU threads

Page 16: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Blocking Synchronization Core Design• Global Queue

– Conceptually configured as multiple sub-queue associated with different semaphores

– Combined lengths of all sub-queues will not be greater than the number of total threads in the system as a blocked thread cannot make another request

– For efficient operation, the global queue is divided into four tables:

• Queue Length Table contains an array of queue lengths• Next owner Pointer Table contains an array of lock next

owners• Last Request Pointer Table contains an array of last requesters• Next Next Owner Table contains link pointers

Page 17: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

00

Link PointerTable

Last Request = 04

Last Request = 11

...

Last Request = 05

Last Request Pointer Table

Next owner = 08

Next owner = 07

...

Next owner = 20

Next OwnerPointer Table

Queue length = 0

Queue length = 3

Queue length = 8

….

Queue LengthTable

lock owner S0 = 00

lock owner S1 = 00

lock owner S2 = 99

lock owner S3 = 00

…...

lock owner S26 = 00

lock owner S27 = 00

…...

lock owner S40 = 00

…..

….

lock owner S63 = 01

Next next owner = 09

00

Next next owner = 11

00

indexedby

lock id

indexedby

lock id

indexedby

lock id

indexed bythread id

00

6263

6263

511

6263

00

00

000

008

02

325

02

009

007

011

02

Address

Address + 64

Lock owner registers

Global Queue & Lock Owner Registers

Page 18: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Multiple Recursive Mutexes Core• Provide exclusive accesses to shared data & allow threads to block• Operations: mutex_lock (recursive), unlock and trylock

Controllers :- recursive mutexes- global queue- bus master

3

1

2

Mutex OwnerRegisters

Data Bus

Gobal Queue

Last RequestPointers

MutexNext Owners

QueueLengths

Link ListPointers

Thread_7

Thread_9

Thread_1

RecursiveCounters

Address bus: 6 lines for mutex ids 9 lines for thread ids 2 lines for operation codes

mutex_lock( )if thread ID = OWNER

lock selected mutex

cnt = cnt + 1

else

queue thread ID

mutex_unlock( )cnt = cnt – 1

releases the mutex

when its cnt reaches 0

Page 19: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Multiple Semaphores Core

Controllers :- semaphores- global queue- bus master

3

1

2

Data Bus

Gobal Queue

Last Request

SemaphoreNext Owner

Queue Length

Link Pointer

SemaphoreCounters

Address bus: 6 lines for semaphore ids 9 lines for thread ids 3 lines for operation codes

• sem_wait(sm)– if C ≥ 1 then C = C - 1– else queues thread ID

• sem_post(sm)– if blocked thread,

dequeues– else C = C + 1

• sem_trywait(sm)– non blocking

Page 20: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

A Condition Variable• Implements sleep/wakeup semantics using

condition variables• Useful for event notification• Associated with a predicate which is protected by

a mutex or spin lock• Wakeup one or all sleeping threads• Up to 3 or more mutexes are typically required:

– one for the predicate– one for the sleep queue (or CV list)– one or more for the scheduler queue (context_switch)

• New approach requires one mutex (predicate)

Page 21: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Condition Variable APIsvoid signal (cv *c){ lock (&c->qlistlock);

remove a thread from listunlock (&c->qlistlock);if thread, make runnable;return; }

void broadcast (cv *c){ lock (&c->qlistlock);

while (qlist is nonempty) {remove a threadmake it runnable}

unlock (&c->qlistlock);return;}

void wait (cv *c, mutex *m){lock (&c->qlistlock);add thread to queueunlock (&c->qlistlock);unlock (m); //release mutexcontext_switch ( );/* when wakes-up */lock (m); //acquire mutexreturn;

}

Source: VAHALIA, UNIX Internals

Page 22: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Multiple Condition Variables Core

• cond_wait(cv, mutex)– Queuing of thread Ids

• cond_signal(cv)– De-queuing of a thread

ID

• cond_broadcast(cv)– De-queuing & delivery

of all blocked threads– Return busy status to

new requests if delivery is not complete yet.

Controllers :- condition variables- global queue- bus master

Data Bus

Gobal Queue

Last Request

Next Owner

Queue Length

Link Pointer

Address bus: 6 lines for condition var ids 9 lines for thread ids 2 lines for operation codes

Page 23: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Bus Master Interface(IPIF MASTER)

BBus Slave Interface (IPIF SLAVE)

A

1. Determine next owner: HW or SW thread2. Generate read or write to Bus Master3. Calculate next owner address

F Comparator

1. Enqueue blocking thread2. Dequeue next lock owner - signals E to update owner register - signals D to via F to deliver next owner3. Manage queue/4 tables4. Soft Reset, clear all the table

H Queue ControllerLink Pointers

Last Request

Next Owners

Queue Lengths

1. Manage recursive mutexes2. Update owner register - with new owner if free - with next owner (deque)3. Gen enque if lock not free4. Gen deque if lock release5. Soft Reset all own registers

E Controller for multiple mutexes

1. Request Handlers2. Bus Mastering - reader - writer

Bus MasterAtomic read operation - control owner register - read req ack delay

C Atomic transaction

mutex_id register

thread_id register

G Operation mode

enquedeque

deq_donedeq_noneenq_done

nx_owner

request*

release

a_enablea_r/w

opr

qread_write

qenable

qaddr

qdata_in

enableaddr

data_in

next_owner register

rreqwreq

ack

nx_owner

latch_next_owner

msc_start

- Decode address & read- Determine lock/unlock

saddrrdreq rd_ack

nx_ownerQueue with 4 tables

wr_ackwr_req

D

xaddr +control

qdata_out

prev statusregister

cur statusregister

- Status busy/OK- Xfer status betw regs

deq_donedeq_start

statusaddr_out

data_out

J Next Owner Address Generator

Parameters:- HW thread base address- HW Thread size- SW thread Manager address

data_out

addr_out

do_compare

K API return status

addr_out &data_out

regs

Multiplemutex

recursivecounters

Multiplemutexowner

registers

Data mux

statuserror bit

error bit

mutex ID

error

sel

sdata xdata& xack

msc_done

deq_startdeq_done

API ret status

rcntthr id

Multiple Mutex Core RTL level description

Page 24: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Hardware Thread Architecture

data-write

address

parameter1operation status

Hardware Thread Interface Component

User Hardware Thread

command

Bus Interface (Architectural dependent + independent components)

State Machines:- Thread state scheduler- Status process- Command process- Bus Slave Handshake

argument2

result1

result2

argument1

State.Machines:- Bus Master Handshake- Address Generator- Bus Writer/Reader- Data in/out- Synchronization tests, Busy wait

read data

parameter2

Control Unit uses API (operation=mutex, mutex_id=xx, parameter=thread_id

Data and data processing such as image processing algorithm like median filter

Page 25: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Read Addr Gen

Write Addr Gen

AddressMUX

Delay bet Reads

Repeat Rd Max

Bus Master (BM)- read/write reqs- coordinate test

Mutex Test

Sema Test

Read Req Handler

Write Req Handler

Mutex Req Handler Write Data A

Read Data

Write Data B

Data OutMUX

Sema Req Handler

Spin Lock Handler

Thread Scheduleridle/run/block

- request to Handlers- wait response fr BM

Cmd run/stop/wakeup

Read/Write ACK, MUX

Status

param1

param2

addr

StatusControl

Bus Interface (Architecture Dependent + Independent)Bus Interface

RdReq WrReqack

operation

addr data

states

semmtxreadwrite

cmd

APIs User Application

addrreq/ack

args

latch

latch

latchHardware Thread Interface Core (HWTI) RTL level description.

Page 26: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Hardware Thread States (Contexts)

idle

run

wait

usr_requestor

cmd stop

cmd_run

hw threadwaits formutex

reset

cmd_stop

wakeup_cmd

1. Moves to RUN if receives cmd_run2. Moves to WAIT while in the process of obtaining mutex or semaphore3. Moves to RUN state if mutex is obtained.4. If mutex is not available, block waits in WAIT state until wake-up command is received from the mutex core5. Thread state visible via status register6. User computation decides when it is appropriate to check status register and control it’s own operation

Page 27: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Hardware Thread APIs• HW_Thread_Create API on CPU

– CPU loads arguments to registers– CPU writes “code” into command register to start/stop

• HW APIs on HW Thread– Synchronization APIs

• Mutex: blocking lock, unlock• Semaphore: wait, post• Spin lock: lock, unlock

– Memory read/write accesses APIs– APIs write operation codes into the operation register,

and status register provides feedback to the user

Page 28: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

HW/SW Threads Spin Lock Access Ratios

• Baseline performance HW and SW thread run individually to own and release a spin lock, hw faster by a 6:1 ratio.

• Allow both Hardware/Software Hybrid Threads to compete:

0 . 5

2

5 . 4 4

8 . 8 7 5

2 3

0

5

10

15

20

25

0 0.2 0.4 0.6 0.8 1

HW + SW Accesses / Max HW Accesses

Page 29: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Timing Performance

Page 30: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Timing Performance

Page 31: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Synchronization Hardware Cost

Synchronization type

Total slices for 64 synchronization

variable

Number of slices per synchronization

variable

Spin Lock 123 1.9Mutex 189 3Semaphore 229 3.6Condition Variable 137 2.1

Resource Type

Resources Used

Total Resources

On-chip% Used

4-input LUT 328 9856 3.3%Flip-flop 134 9856 1.4%Slices 189 4928 3.8%BRAMs 2 44 4.5%

Hardware Resources for 64 MUTEXES (excluding bus interface)

Page 32: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Synchronization Access Time

spin_lock 8 3 11spin_unlock 8 3 11mutex_lock 8 3 11mutex_trylock 8 3 11mutex_unlock 13 10 23sem_post 9 10 19sem_wait 6 3 9sem_trywait 6 3 9sem_init 3 3 6sem_read 6 3 9cond_signal 11 10 21cond_wait 10 3 13cond_broadcast 6n 10n 16n

Synchronization APIs

internal operation

(clk cycles)

bus transaction after internal

operation start (clk cycles)*

Total clock cycles

Page 33: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Hybrid Threads: Image Processing

CPU

BRAM

Semaphores HWThread

SDRAM

Ethernet

bus

Ethernet

Virtex2ProP7

ControllerController

IBM Compatible

Camera: USBVISION

Image Display: SDL

O/S: Linux

Page 34: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Image Processing Flow Diagram

CPU loadsimage intomemory ataddress a1

HW threadinterface*

semas1

CPUinit( )

ether_init()a1 = malloc()a2 = malloc()hw_create( a1, a2)

receive imagerecv(a1, img_size)

get image frommemory- read ( a1 )

semas2

CPU readsmemory a2and sendprocessed

image

HW threadimage

processing*(Filter)

HW threadinterface*

store processedimage in memory- write ( a2 )

hw image process- 3x3 win median- invert- threshold- 3x3 win binomial

send image outsend(a2, img_size)

image in

image out

Note* VHDL

8 6

1 2 4

5

3

7

sem_post(s1) sem_wait(s1)

sem_wait(s2)

sem_post(s2)

Page 35: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Image Transform Example: SW + HW ComponentsPART HARDWARE (FPGA):If command == run {SW: sem_wait( &sema1 )RD: read data

processing waitwrite dataif count != image_size

RD:else

SP:SP: sem_post ( &sema2)

branch SW: }

PART OF SOFTWARE (CPU):addr1 = malloc(image_size) //raw image ptraddr2 = malloc(image size) //proc image ptr//Hardware thread create APIhw_thread_create(addr1, addr2, function )while (1) {//Get image from Ethernet

receive(src, addr1, img_size)//Let hw thread know image data is available

sem_post( &sema1 );//Wait for hw thread finish processing

sem_wait( &sema2 );//Send processed image

send(dest, addr2, img_size); }

Page 36: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Frame buffer & Parallel Median Filter

P0

P1

P2

P3

P4

P5

P6

P7

P8

Padding zeroes to handle boundary conditions

shift

0 21 w w+2w+1 2w

cc c

c c c c

2w+2

shift0 76

Pipelined Median filter9 stages 8 bit comparators,

Calculate median of 9 pixels

Boundary condition:top left, top side, top right,right side, etc

Frame Buffer Size (2W+3) * 8 bits Output: 3x3 window or 9 pixels Image size: W * H * N

8 x 8-bit shift register

4 byte outputs/ 4 medians

Image4 byte /pixels

Page 37: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

HW vs.SW Image Processing• Image frame size 240 x 320 x 8 bits• FPGA & CPU clocked at 100 MHz• For median transform, FPGA can process 100 frames/sec,

speed-up about 40x, consistence with [12, 27]• Execution time dominated by communication

Image Algorithms

HW Image Processing

SW Image Processing Cache OFF

SW Image Processing Cache ON

Threshold 9.05 ms 140.7 ms 19.7 msNegate 9.05 ms 133.9 ms 17.5 msMedian 11.2 ms 2573 ms 477 msBinomial 10.6 ms 1084 ms 320 ms

Page 38: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Conclusion & Future Works• Extend thread programming model across CPU/FPGA• Our synchronizations cores provides services similar to

POSIX thread.– Test program uses our CVs and mutex produced similar result when

port it to desktop running with Pthread.– Semaphores used in the image transform evaluations.

• Effective synchronization mechanism, improve system performance & reduce memory requirements.

• Improve programming productivity, while at the same time providing the benefit of customized hardware from within a familiar software programming model

• Hardware thread can be used as a base to implement other computations into hardware.

• High level language compiler that can translate applications into hybrid hardware and software components

Page 39: Extending the Thread Programming Model Across …...Extending the Thread Programming Model Across Hybrid FPGA/CPU Architectures Dissertation Defense by Razali Jidin Advisor: Dr. David

Thank You!