33
| | Andreas Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core RISC-V SoC

PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

  • Upload
    hacong

  • View
    227

  • Download
    5

Embed Size (px)

Citation preview

Page 1: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| |

Andreas Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou,

Eric Flamand, Frank K. Gürkaynak, Luca Benini

PULPino: A small single-core RISC-V SoC

Page 2: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| |

ETH Zurich, Integrated Systems Lab (IIS)

University of Bologna, Micrel Lab

Around 40 people

Most involved in the PULP project

Close Collaborations

Politecnico di Milano

CEA-LETI

EPFL

Industrial Support from STMicroelectronics

Silicon access to 28nm FDSOI

06.01.2016 2

Our group: Prof. Luca Benini

Page 3: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| |

06.01.2016 3

Computing for the Internet of Things

Battery + Harvesting powered

a few mW power envelope

Analyze and Classify

µController

IOs

1 ÷ 25 MOPS

1 ÷ 10 mW

e.g. CortexM

Sense

MEMS IMU

MEMS Microphone

ULP Imager

100 µW ÷ 2 mW

EMG/ECG/EIT

Idle: ~1µW

Active: ~ 50mW

Long range, low BW

Short range, medium BW

Low rate (periodic) data

SW update, commands

Transmit

Page 4: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| |

06.01.2016 4

Computing for the Internet of Things

Battery + Harvesting powered

a few mW power envelope

Analyze and Classify

µController

IOs

1 ÷ 25 MOPS

1 ÷ 10 mW

e.g. CortexM

Sense

MEMS IMU

MEMS Microphone

ULP Imager

100 µW ÷ 2 mW

EMG/ECG/EIT

Idle: ~1µW

Active: ~ 50mW

Long range, low BW

Short range, medium BW

Low rate (periodic) data

SW update, commands

Transmit

L2 Memory

1 ÷ 2000 MOPS

1 ÷ 10 mW

Page 5: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| |

Exploit parallelism

Multiple small cores organized in

clusters

Share memory within the cluster

Multiple clusters per chip

Simple but efficient processor

cores

Based on OpenRISC/RISC-V

Custom ISA extensions

Dedicated accelerators

Multiple Technologies

Near-threshold operation

06.01.2016 5

PULP: Parallel Ultra-Low-Power Processor

L2

RAM

Clu

ste

r B

us

TCDM Logarithmic Interconnect

Cluster

IF

Bus

Adapter

DMA

Instruction Bus

Core

#1

Core

#2

Core

#N

Shared

Instruction Cache

L0 L0 L0

SRAM SRAM

SCM SCM

SRAM SRAM

SCM SCM

SRAM

SCM

HW

Acc. HW

Synch

Page 6: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| |

Main PULP chips (ST 28nm FDSOI)

PULPv1

PULPv2

PULPv3 (in production)

PULPv4 (in progress)

PULP development (UMC 65nm)

Artemis - IEEE 754 FPU

Hecate - Shared FPU

Selene - Logarithic Number System FPU

Diana - Approximate FPU

Mia Wallace – full system

Imperio - PULPino chip (Jan 2016)

Fulmine – Secure cluster (Jan 2016)

RISC-V based systems (GF 28nm)

Honey Bunny

Early building blocks (UMC180)

Sir10us

Or10n

Mixed-signal systems (SMIC 130nm)

VivoSoC

EdgeSoC (in planning)

IcySoC chips approx. computing

platforms (ALP 180nm)

Diego

Manny

Sid

06.01.2016 6

PULP related chips

180nm

130nm

28nm 28nm 28nm 65nm 65nm 65nm 65nm 65nm

180nm 180nm 180nm

180nm

28nm

Page 7: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| |

We want to publish our work as open-source

But PULP is huge

Energy efficient many-core SoC

Large number of IPs

Software frameworks (OpenMP, OpenVX, …)

Custom toolset (Virtual Platform, profiling tools, toolchain, …)

PULPino as a first step

Focused on simplicity

Minimal system

Single-core

06.01.2016 7

PULPino: A single-core RISC-V SoC

Motivation

Page 8: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| |

Microcontroller-style platform

Focused on core

No caches, no memory hierarchy, no DMA

Re-uses IPs from the PULP project

Same peripherals, same cores

Available for FPGA

First ASIC tapeout end of January

Student project using UMC 65nm

06.01.2016 8

PULPino: A single-core RISC-V SoC

Overview

Page 9: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| |

Core directly connected to instruction and data RAM

Single-cycle access, no waiting for memories

Single-port RAMs

Multi-banked RAMs for ASIC

Block RAMs for FPGA 06.01.2016 9

Page 10: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| |

Central AXI interconnect

Core connects via bridge

RAM multiplexed between AXI port and core port

06.01.2016 10

Page 11: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| |

APB for peripherals

Fine grained clock gating for peripherals

Easy to add new peripherals

06.01.2016 11

Page 12: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| |

Internal event unit

Clock gates core when inactive (sleep)

Waits for events and wakes up core

06.01.2016 12

Page 13: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| |

SPI slave acts as master on AXI

Provides access to whole memory map of the SoC from external

SPI slave supports standard SPI and QPI

06.01.2016 13

Page 14: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| |

Debug support via adv. debug unit

Provides JTAG port

Access to whole memory map via JTAG

06.01.2016 14

Page 15: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| |

Boot ROM

Bootloader loads program from SPI flash

06.01.2016 15

Page 16: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| | 06.01.2016 16

PULPino on FPGA

ZedBoard

Program PULPino via SPI or JTAG

Interface fully compatible with final ASIC

Page 17: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| | 06.01.2016 17

PULPino Build & Run Flow

Managed via CMake

Page 18: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| |

Evaluating RISC-V in comparisons to OpenRISC

Our interest in RISC-V

More modern than OpenRISC

No set flag instructions

No delay slot

Compressed instructions

Easily extendable

06.01.2016 18

RISC-V & OpenRISC

Page 19: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| |

Our goals

Energy-efficient signal processing

Tune the core micro-architecture and ISA towards this

Extensions should have low overhead in area & power

Adding non-standard extensions for

Hardware loops

Post-incrementing load and store instructions

Multiply-Accumulate

ALU extensions (min, max, absolute value, …)

06.01.2016 19

Extending RISC-V

Page 20: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| | 06.01.2016 20

RI5CY Extension: Hardware Loops

lp.setupi 100, Lend

lw x2, 0(x10)

addi x10, x10, 4

addi x2, x2, 1

sw x2, 0(x11)

Lend: addi x11, x11, 4

mv x4, 0

mv x5, 100

Lstart: lw x2, 0(x10)

addi x10, x10, 4

addi x2, x2, 1

sw x2, 0(x11)

addi x11, x11, 4

addi x4, x4, 1

bne x4, x5, Lstart

for (i = 0; i < 100; i++) {

d[i] = a[i] + 1;

}

Baseline with hardware loops

Simple vector addition

7 instr. + branch cost

5 instr.

Page 21: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| |

06.01.2016 21

RI5CY Extension: Post-incrementing LD/ST

for (i = 0; i < 100; i++) {

d[i] = a[i] + 1;

}

Simple vector addition

lp.setupi 100, Lend

lw x2, 0(x10)

addi x10, x10, 4

addi x2, x2, 1

sw x2, 0(x11)

Lend: addi x11, x11, 4

with hardware loops

5 instr.

lp.setupi 100, Lend

lw x2, 4(x10!)

addi x2, x3, 1

Lend: sw x2, 4(x11!)

with hardware loops & post-incr.

3 instr.

4 instructions + branch cost saved

Page 22: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| |

Full support for RV32I

Partial support for RV32M

Basically just the mul instruction

Single-cycle multiplication

Support for compressed instructions

Support for our own custom instruction set extensions

06.01.2016 22

RI5CY Core

ISA Support

Page 23: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| |

Interrupts

Vectorized on 32 lines

Events

Allows the core to sleep and wait for an event

Exceptions

Debug

Software breakpoints

Access to all registers

Performance Counters

06.01.2016 23

RI5CY Core

Features

Page 24: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| |

Simple 32-bit 4-stage in-order RISC-V core

06.01.2016 24

RI5CY Core

Page 25: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| |

Data Interface

Supports variable-latency systems

Request-Grant protocol

Instruction Interface

Identical to Data Interface, but read-only

Debug Interface

Aligned with Adv. Debug Bridge

06.01.2016 25

RI5CY Interfaces

Page 26: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| |

Compiler used

ARM: Official GCC ARM Embedded Toolchain (GCC 4.9)

OR1k: Custom GCC Toolchain (GCC 5.2)

RISC-V: Custom GCC Toolchain (GCC 5.2)

06.01.2016 26

RI5CY Performance

Page 27: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| |

Compiler used

ARM: Official GCC ARM Embedded Toolchain (GCC 4.9)

OR1k: Custom GCC Toolchain (GCC 5.2)

RISC-V: Custom GCC Toolchain (GCC 5.2)

06.01.2016 27

RI5CY Performance

Page 28: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| | 06.01.2016 28

RI5CY in Comparison

RI5CY ARM Cortex M42

Technology 65 nm 90nm 65 nm

Conditions 25°C, 1.2V 25°C, 1.2V 25°C, 1.2V

Dynamic Power

[𝜇𝑊/𝑀𝐻𝑧] 17.5 32.82 23.21

Area [𝑚𝑚2] 0.050 0.119 0.0621

1scaled from 90nm to 65nm

2ARM Cortex M4, http://www.arm.com/products/processors/cortex-m/cortex-m4-processor.php

Delay Delay [#ND2 Equiv.]

Internal 1.15 ns 29

Memory Request 0.6 ns + mem. delay 15 + mem. delay

Memory Response mem. delay + 0.4 ns mem. delay + 10

Critical paths in RI5CY

Page 29: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| |

PULPino RI5CY

06.01.2016 29

Area Breakdown

Component Area [GE]

Prefetch Buffer 3’500 10.1%

Decoder 420 1.2%

Compressed Decoder 400 1.1%

Register File 10’600 30.7%

Multiplier 4’300 12.5%

ALU 2’700 7.8%

LSU 1’500 4.3%

CSR 2’160 6.3%

Total 34’500 100%

Component Area [GE]

RI5CY Core 34’500 6.9%

Peripherals 50’000 10%

Instruction RAM (32kB) 190’000 38%

Data RAM (32kB) 190’000 38%

AXI Interconnect 10’000 2%

Adv. Dbg Unit 6’000 1.2%

Total 500’000 100%

Page 30: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| |

What we release

Complete PULPino RTL source

Including RI5CY core

Including all IPs

FPGA build flow

Simulation/build infrastructure for software

FreeRTOS port

Liberal license: SolderPad

When?

Awaiting final approval

06.01.2016 30

Open Source Release

Page 31: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| |

PULP: Energy-efficient many-core SoC

PULPino: Single-core SoC

A complete system that can be easily employed in various projects

Easily extendable

Ready to use system for educational purposes

RI5CY: Small and optimized RISC-V core

Check our website: pulp.ethz.ch

06.01.2016 31

Summary

Page 32: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| |

First tape out of PULPino end of this month

IP-XACT port of PULPino

RI5CY features

Floating-point support

Already available for our OpenRISC core

Branch prediction

Evaluate further non-standard ISA extensions

06.01.2016 32

Outlook

Page 33: PULPino: A small single-core RISC-V SoC Traber, Florian Zaruba, Sven Stucki, Antonio Pullini, Germain Haugou, Eric Flamand, Frank K. Gürkaynak, Luca Benini PULPino: A small single-core

| |

Questions? http://pulp.ethz.ch