A Flexible SystemC Simulator for Multiprocessor … Flexible SystemC Simulator for Multiprocessor...

15
A Flexible SystemC Simulator for Multiprocessor Systems- on-Chip Luca Benini Davide Bertozzi Francesco Menichelli Mauro Olivieri DEIS - Università di Bologna DEIS - Università di Bologna DIE - Università di Roma “La Sapienza” DIE - Università di Roma “La Sapienza”

Transcript of A Flexible SystemC Simulator for Multiprocessor … Flexible SystemC Simulator for Multiprocessor...

Page 1: A Flexible SystemC Simulator for Multiprocessor … Flexible SystemC Simulator for Multiprocessor Systems-on-Chip Luca Benini Davide Bertozzi Francesco Menichelli Mauro Olivieri DEIS

A Flexible SystemC Simulatorfor Multiprocessor Systems-

on-Chip

Luca BeniniDavide BertozziFrancesco MenichelliMauro Olivieri

DEIS - Università di BolognaDEIS - Università di BolognaDIE - Università di Roma “La Sapienza”DIE - Università di Roma “La Sapienza”

Page 2: A Flexible SystemC Simulator for Multiprocessor … Flexible SystemC Simulator for Multiprocessor Systems-on-Chip Luca Benini Davide Bertozzi Francesco Menichelli Mauro Olivieri DEIS

Summary

• Introduction– Design concept– Overview of the AMBA bus

• System architecture– Processing unit– AMBA AHB bus and interfaces

• Simulation– Bus contention and test applications– Signal tracing

• Conclusions and future works

Page 3: A Flexible SystemC Simulator for Multiprocessor … Flexible SystemC Simulator for Multiprocessor Systems-on-Chip Luca Benini Davide Bertozzi Francesco Menichelli Mauro Olivieri DEIS

Project description:A SystemC shared memory multiprocessor simulator composed bymultiple instruction level models of cached ARM cores connected toa bus supporting multiple master arbitration.

Introduction

BusController ARM coreARM core

Shared memory

Page 4: A Flexible SystemC Simulator for Multiprocessor … Flexible SystemC Simulator for Multiprocessor Systems-on-Chip Luca Benini Davide Bertozzi Francesco Menichelli Mauro Olivieri DEIS

Introduction

Design basics- SystemC 1.0.2 library- SWARM simulator (C++ class):

-http://www.dcs.gla.ac.uk/~michael/phd/swarm.html

- Multiple master bus (AMBA) SystemC implementation- RedHat Linux 7.2 and gcc 2.95.3- UClinux single processor 2.4.0 kernel- gcc 3.0.4 ARM cross-compiler

Why SystemC based design?- re-use of C/C++ code- modularity- standard interface between modules (SystemC)

Page 5: A Flexible SystemC Simulator for Multiprocessor … Flexible SystemC Simulator for Multiprocessor Systems-on-Chip Luca Benini Davide Bertozzi Francesco Menichelli Mauro Olivieri DEIS

Outlines of the AMBA bus

Figure: AHB and APB in a typical AMBA system.

AMBA (Advanced Microcontroller Bus Architecture) is an on-chip communicationstandard for high-performance embedded microcontroller supporting multiple unitsable to initiate read and write operations (bus masters)

- AHB: high performance, high clock frequency system modules- APB: low power peripherals

Page 6: A Flexible SystemC Simulator for Multiprocessor … Flexible SystemC Simulator for Multiprocessor Systems-on-Chip Luca Benini Davide Bertozzi Francesco Menichelli Mauro Olivieri DEIS

Full SystemC AMBA AHB bus implementation- clycle accurate bus transactions- internal multiplexers support up to seven bus masters (ampliable)- internal arbiter resolve bus contention through round robin policy

SystemC modules (masters and slaves)- complete SystemC description (lower abstraction level)- encapsulation of C/C++ code (higher abstraction level)

System architecture – Overview

Can coexistin the samesimulation

environment

AMBAAHB

multimasterunit

masterdevice #1

masterdevice #2

masterdevice #N

slavedevice #1

slavedevice #2

slavedevice #N

Page 7: A Flexible SystemC Simulator for Multiprocessor … Flexible SystemC Simulator for Multiprocessor Systems-on-Chip Luca Benini Davide Bertozzi Francesco Menichelli Mauro Olivieri DEIS

System architecture – Processing module

Processing module (master)- include CPU, cache memory and peripherals (C++ class derived fromopen source SWARM simulator)- a wrapper realizes the interface and synchronization layer betweenthe instruction simulator and the SystemC simulation framework

ARM7core

InterruptController

Timer

InstructionandData

Cache

UART

LocalBus

AMBAAHB I/F(SystemC)

C++ class

SystemC module (wrapper)

SystemCsignals

C++ classproperties

and methods

Page 8: A Flexible SystemC Simulator for Multiprocessor … Flexible SystemC Simulator for Multiprocessor Systems-on-Chip Luca Benini Davide Bertozzi Francesco Menichelli Mauro Olivieri DEIS

System architecture – AMBA AHB BUS modules

mast[ ]

hmaster

address[ ]

haddr

ctrl_sign

Address and control mux

N

N

mast[ ]

hmaster

hwdata[ ]

hwdataout

Write data mux

N

N

selector

hready

hsel[ ]

readdata[ ]

hrdata

N

N

Read data mux

hsel

[ ]

hadd

r

decoder

N

hre

q[ ]

ctr

l_si

gn

hre

ady

sel

ecto

r

hm

aste

r

hgr

ant[

]

NN

arbiter

ctrl_sign

haddrhwdataout

readdata

hmaster

ready

hsel

mastaddresshwdata

hrdatahgranthready

hreq

AHB I/F mastermodule

AHB I/F slavemodule

AHB mux - arbiter – decoder module

Page 9: A Flexible SystemC Simulator for Multiprocessor … Flexible SystemC Simulator for Multiprocessor Systems-on-Chip Luca Benini Davide Bertozzi Francesco Menichelli Mauro Olivieri DEIS

System architecture – Test configuration

ARM7 core

Interrupt Controller

Timer

Instruction and Data

Cache

UART

Local Bus

C++ class

SystemC module (wrapper)

AMBA MASTER #1

AMBAAHB I/F

AMBAAHB I/F

AMBA SLAVE #1

Memory

ARM7 core

Interrupt Controller

Timer

Instruction and Data

Cache

UART

Local Bus

C++ class

SystemC module (wrapper)

AMBA MASTER #2

AMBAAHB I/F

AMBAAHB I/F

AMBA SLAVE #2

Memory

Arbiter

Decoder

AMBA AHB

AMBAAMBA

AMBA AMBA

Shared memory dual processor – dual memory system

Page 10: A Flexible SystemC Simulator for Multiprocessor … Flexible SystemC Simulator for Multiprocessor Systems-on-Chip Luca Benini Davide Bertozzi Francesco Menichelli Mauro Olivieri DEIS

Modules declaration and connection//instantiation of the first processing modulearmsystem soc0("Arm_System0");

soc0.clock(clock); soc0.pinoutdef(armmaster[0]); soc0.readymaster(readymast[0]); soc0.requestmaster(requestmast[0]);

soc0.burst_ready(burstready[0]);//instantiation of the second processing modulearmsystem soc1("Arm_System1");

soc1.clock(clock); soc1.pinoutdef(armmaster[1]); soc1.readymaster(readymast[1]); soc1.requestmaster(requestmast[1]);

soc1.burst_ready(burstready[1]);

//instantiation of the first memory moduleram Memory0("RAM_Memory0");

Memory.clock(clock); Memory.rampin(memoryslave[0]); Memory.readymem(readyram[0]); Memory.requestmem(requestram[0]);

//instantiation of the second memory moduleram Memory1("RAM_Memory1");

Memory1.clock(clock); Memory1.rampin(sott2ram); Memory1.readymem(sottfwdready); Memory1.requestmem(sottdlyrequest);

Master modulesdeclaration:

Two identicalmodules areinstantiated andconnected to theAMBA interface

Slave memorymodules:

Two identicalmodules areinstantiated andconnected to theAMBA interface

Page 11: A Flexible SystemC Simulator for Multiprocessor … Flexible SystemC Simulator for Multiprocessor Systems-on-Chip Luca Benini Davide Bertozzi Francesco Menichelli Mauro Olivieri DEIS

Simulator Test – Processing units and bus contentions

Screen capture of our dual processor simulator booting multipleparallel UClinux kernels. The two CPU work independently, contendingthe bus for memory access.

Page 12: A Flexible SystemC Simulator for Multiprocessor … Flexible SystemC Simulator for Multiprocessor Systems-on-Chip Luca Benini Davide Bertozzi Francesco Menichelli Mauro Olivieri DEIS

Simulator Test – Parallel Matrix Multiplication

Application:Shared memory matrix multiplication executed bytwo parallel algorithm running on separateprocessors

Collateral developing activities and tests:- Manual binding at compilation time of programfunctions to each processor- Dual processor startup and initialization code- Dual processor linker script

Page 13: A Flexible SystemC Simulator for Multiprocessor … Flexible SystemC Simulator for Multiprocessor Systems-on-Chip Luca Benini Davide Bertozzi Francesco Menichelli Mauro Olivieri DEIS

Simulation - AMBA burst access timings example

Through SystemC tracing capabilities, cycle accurate signal activitycan be visualized

Page 14: A Flexible SystemC Simulator for Multiprocessor … Flexible SystemC Simulator for Multiprocessor Systems-on-Chip Luca Benini Davide Bertozzi Francesco Menichelli Mauro Olivieri DEIS

Conclusion and Future Works

We have implemented a multiprocessor simulation environment inSystemC 1.0, containing an AMBA bus model, along with masters (CPUs)and slaves (memories) SystemC modules. The AMBA bus model itself iscomposed by several SystemC modules (arbiter, decoders,multiplexers). AMBA master devices (processors) are represented byinstruction-level models of cached ARM cores.

• Characteristics- Easily scalable through multiple instantiation of modules- Easily expandable through new modules implementation- Standard and well defined interface for modules interoperability

• Future works- Multiprocessor operating system, currently under development (RTEMS)- Expansion of the simulator with new master and slave modules

Page 15: A Flexible SystemC Simulator for Multiprocessor … Flexible SystemC Simulator for Multiprocessor Systems-on-Chip Luca Benini Davide Bertozzi Francesco Menichelli Mauro Olivieri DEIS

AMBAAHBBUS

CPU(master #1)

CPU(master #2)

CPU(master #3)

DMA controller(master #4)

Memory(slave #1)

Memory(slave #2)

I/O(slave #3)

AHB/APBbridge

(slave #4)

System Architecture – Future Expansions