Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

From OO to FPGA:, Schemes and Mind Maps of Programming Languages

ASIC and FPGA cheat sheet ... Virgil is an object-oriented language developed at UCLA ... targeted to programming small devices, e.g., sensor nodes.

Typology: Schemes and Mind Maps

2022/2023

Uploaded on 05/11/2023

anarghya
anarghya 🇺🇸

4.2

(21)

255 documents

1 / 31

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
From OO to FPGA:
From OO to FPGA:
Fitting Round Objects
Fitting Round Objects
into Square Hardware?
into Square Hardware?
Stephen Kou
Stephen Kou
Jens Palsberg
Jens Palsberg
UCLA Computer Science Department
UCLA Computer Science Department
University of California, Los Angeles
University of California, Los Angeles
Presented at OOPSLA 2010
Presented at OOPSLA 2010
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f

Partial preview of the text

Download From OO to FPGA: and more Schemes and Mind Maps Programming Languages in PDF only on Docsity!

From OO to FPGA:

From OO to FPGA:

Fitting Round Objects

Fitting Round Objects

into Square Hardware?

into Square Hardware?

Stephen Kou

Stephen Kou

Jens Palsberg

Jens Palsberg

UCLA Computer Science Department

UCLA Computer Science Department

University of California, Los Angeles

University of California, Los Angeles

Presented at OOPSLA 2010

Presented at OOPSLA 2010

Our tool: from OO to FPGA;

Our tool: from OO to FPGA; big energy savings

big energy savings

 OO = object oriented language

OO = object oriented language

 FPGA = field programmable gate array

FPGA = field programmable gate array

ASIC and FPGA cheat sheet

 Finished ASIC designs: 3,408 in 2006; 3,275 in 2007; then

fell 9.5% in 2008 and fell again about 22% in 2009

 Now: 30x more design starts in FPGA over ASIC

 Projected market for FPGAs in 2016: $9.6 billion

 Feature sizes: 2002 Virtex-2 90 nm

2008 Virtex-5 65 nm

2009 Virtex-6 40 nm

2010 Virtex-7 28 nm

The Challenge

 Compile a bare object-oriented program to an FPGA with

significant energy savings compared to a CPU, while still

maintaining acceptable performance and space usage.

How some people program FPGAs nowadays

 Program in a small subset of C

 Compile to VHDL or Verilog with a high-level synthesis tool

 AutoESL: AutoPilot ( based on xPilot [Cong et al., UCLA] )

 Synopsys: Synphony C Compiler

 Mentor Graphics: Catapult

 Ponder whether writing directly in VHDL is better

 Fine-tune speed?

 Fine-tune energy use?

 Fine-tune area

 Really?

From OO to FPGA: a JVM on an FPGA

 Schoeberl [2004]: execute bytecodes on a FPGA

 No comparisons with a CPU

From OO to FPGA: state of the art

 Liquid Metal (Auerbach, Bacon, Cheng, Rabbah, IBM)

 Goal: one language for all platforms

 Approach: careful language design

 Key papers: ECOOP 2008 (DES)

OOPSLA 2010 (DES + JPEG decoder)

Our goals:

  • work with an existing language
  • low energy use, good performance, small area

A match made in heaven?

A match made in heaven?

 Virgil is an object-oriented language developed at UCLA

Virgil is an object-oriented language developed at UCLA

[

[

Titzer

Titzer , OOPSLA 2006;

, OOPSLA 2006;

Titzer

Titzer & P., CASES 2007],

& P., CASES 2007],

targeted to programming small devices, e.g., sensor nodes

targeted to programming small devices, e.g., sensor nodes

 The Virgil compiler translates to C

The Virgil compiler translates to C

 AutoPilot

AutoPilot is a C to FPGA synthesizer

is a C to FPGA synthesizer

  Can we doCan we do

Virgil

Virgil C

FPGA

?? AutoPilot

The AutoPilot subset of C

 Places severe limitations on many C constructs

 Pointers

 Struct casting

 Contents of structs

 Rules out the traditional way of compiling OO languages

 Cannot represent objects with method tables

 Cannot use structs

Our technique

 OO to FPGA = type case for method dispatch +

grouped arrays +

hybrid object layout

Key features of OO

 Classes, extends, fields, constructors, methods

class Point {

int x,y;

Point(int a, int b) {

x=a; y=b;

void move(int d) {

x=x+d; y=y+d;

class ColorPoint extends Point {

int color;

ColorPoint(int a, int b, int c) {

super(a,b); color=c;

void bump(int c) {

color=c;

this.move(1);

Key features of OO

 Classes, extends, fields, constructors, methods

class Point {

int x,y;

Point(int a, int b) {

x=a; y=b;

void move(int d) {

x=x+d; y=y+d;

class ColorPoint extends Point {

int color;

ColorPoint(int a, int b, int c) {

super(a,b); color=c;

void bump(int c) {

color=c;

this.move(1);

Key features of OO

 Classes, extends, fields, constructors, methods

class Point {

int x,y;

Point(int a, int b) {

x=a; y=b;

void move(int d) {

x=x+d; y=y+d;

class ColorPoint extends Point {

int color;

ColorPoint(int a, int b, int c) {

super(a,b); color=c;

void bump(int c) {

color=c;

this.move(1);

Key features of OO

 Classes, extends, fields, constructors, methods

class Point {

int x,y;

Point(int a, int b) {

x=a; y=b;

void move(int d) {

x=x+d; y=y+d;

class ColorPoint extends Point {

int color;

ColorPoint(int a, int b, int c) {

super(a,b); color=c;

void bump(int c) {

color=c;

this.move(1);