12
Princeton University and ETH Zürich http://openpiton.org http://pulp-platform.org OpenPiton with RISC-V Cores A Hands-On Tutorial with the Open Source Manycore Processor

OpenPiton with RISC-V Cores A Hands-On Tutorial with the ... · *L1 cache goes to 2-ways at smallest size 3 Component Configurability Options Cores (per chip) Up to 65,536 Cores (per

  • Upload
    others

  • View
    15

  • Download
    0

Embed Size (px)

Citation preview

Page 1: OpenPiton with RISC-V Cores A Hands-On Tutorial with the ... · *L1 cache goes to 2-ways at smallest size 3 Component Configurability Options Cores (per chip) Up to 65,536 Cores (per

Princeton University and ETH Zürich

http://openpiton.orghttp://pulp-platform.org

OpenPiton with RISC-V CoresA Hands-On Tutorial with the

Open Source Manycore Processor

Page 2: OpenPiton with RISC-V Cores A Hands-On Tutorial with the ... · *L1 cache goes to 2-ways at smallest size 3 Component Configurability Options Cores (per chip) Up to 65,536 Cores (per

Configuration

2

Page 3: OpenPiton with RISC-V Cores A Hands-On Tutorial with the ... · *L1 cache goes to 2-ways at smallest size 3 Component Configurability Options Cores (per chip) Up to 65,536 Cores (per

Configurability Options

3*L1 cache goes to 2-ways at smallest size

Component Configurability Options

Cores (per chip) Up to 65,536

Cores (per system) Up to 500 million

Core Type OpenSPARC T1 Ariane 64 bit RISC-V

Threads per Core 1/2/4 1

Floating-Point Unit FP64, FP32 FP64, FP32, FP16, FP8, BFLOAT16

Stream-Processing Unit Present/Absent -

TLBs 8/16/32/64 entries Number of entries (16 entries)

L1 I-Cache 8*/16/32kB Number of Sets, Ways (16kB, 4-way)

L1 D-Cache 4*/8/16KB Number of Sets, Ways (8kB, 4-way)

L1.5 Cache Number of Sets, Ways (8kB, 4-way)

L2 Cache Number of Sets, Ways (64kB, 4-way)

Intra-chip Topologies 2D Mesh, Crossbar

Inter-chip Topologies 2D Mesh, 3D Mesh, Crossbar, Butterfly Network

Bootloading SDHC Card, UART SDHC Card, UART, RISC-V JTAG Debug

Page 4: OpenPiton with RISC-V Cores A Hands-On Tutorial with the ... · *L1 cache goes to 2-ways at smallest size 3 Component Configurability Options Cores (per chip) Up to 65,536 Cores (per

Setting configuration options

• Change a flag in sims• Add or edit flags in piton/tools/src/sims/manycore.config

• Examples:– -config_l15_size=16384

– -network_config=xbar_config

4

Page 5: OpenPiton with RISC-V Cores A Hands-On Tutorial with the ... · *L1 cache goes to 2-ways at smallest size 3 Component Configurability Options Cores (per chip) Up to 65,536 Cores (per

Configuration under the hood

• sims passes cache configurations as environment variables to PyHP

• Some others are passed as verilog defines-config_rtl= PITON_NO_FPU

5$DV_ROOT/tools/src/sims/sims,2.0

Page 6: OpenPiton with RISC-V Cores A Hands-On Tutorial with the ... · *L1 cache goes to 2-ways at smallest size 3 Component Configurability Options Cores (per chip) Up to 65,536 Cores (per

PyHP and parameterisation

• PyHP is a python preprocessor used in OpenPiton for generating complex RTL

• Embeds python inside the Verilog (Inspired by PHP)– Use print to output verilog code– <% print "wire a;" %>

• Better than Verilog’s generate?– Provides visibility of intermediate code

• Not perfect but very practical

6

Page 7: OpenPiton with RISC-V Cores A Hands-On Tutorial with the ... · *L1 cache goes to 2-ways at smallest size 3 Component Configurability Options Cores (per chip) Up to 65,536 Cores (per

Configuration under the hood

• PYHP reads the environment variables, prints sizes to .pyv files

7

piton/tools/bin/pyhplib.py

Page 8: OpenPiton with RISC-V Cores A Hands-On Tutorial with the ... · *L1 cache goes to 2-ways at smallest size 3 Component Configurability Options Cores (per chip) Up to 65,536 Cores (per

Configuration under the hood

• .pyv files use these parameters– Some code will print the parameters as Verilog

defines

8

piton/design/include/lsu.h.pyv

Page 9: OpenPiton with RISC-V Cores A Hands-On Tutorial with the ... · *L1 cache goes to 2-ways at smallest size 3 Component Configurability Options Cores (per chip) Up to 65,536 Cores (per

Configuration under the hood

• Adjusts instantiations according to # of icache ways

9

piton/design/chip/tile/sparc/srams/rtl/bw_r_ict.v.pyv

Page 10: OpenPiton with RISC-V Cores A Hands-On Tutorial with the ... · *L1 cache goes to 2-ways at smallest size 3 Component Configurability Options Cores (per chip) Up to 65,536 Cores (per

Configuration Examples

• Define core count:– sims -sys=manycore -x_tiles=16 -y_tiles=16 -ariane -vlt_build• If specified in build command, should also be in run

• Define network topology– sims -sys=manycore-network_config=xbar_config-x_tiles=4 -ariane -vlt_build

10

Page 11: OpenPiton with RISC-V Cores A Hands-On Tutorial with the ... · *L1 cache goes to 2-ways at smallest size 3 Component Configurability Options Cores (per chip) Up to 65,536 Cores (per

Configuration Examples

• Cache Defaults:– L1 I-cache 16KB, 4-way– L1 D-cache 8KB, 4-way– L1.5: 8KB, 4-way– L2: 64KB, 4-way

• Decrease L2 cache by factor of 4:– sims -sys=manycore -vlt_build-config_l2_size=16384 -ariane

11

Page 12: OpenPiton with RISC-V Cores A Hands-On Tutorial with the ... · *L1 cache goes to 2-ways at smallest size 3 Component Configurability Options Cores (per chip) Up to 65,536 Cores (per

Configuration Examples

• Run a coherent "hello world" on 2x2 tiles:

– sims -sys=manycore -vlt_build -x_tiles=2 -y_tiles=2 -ariane

– sims -sys=manycore -vlt_run-x_tiles=2 -y_tiles=2 –ariane hello_world_many.c–rtl_timeout=1000000

– cat fake_uart.log

12