Multicore Reconfiguration Platform

Multicore Reconfiguration Platform —
A Research and Evaluation FPGA
Framework for Runtime Reconfigurable
Systems
Dipl.-Inf. Dominik Meyer
18. M¨arz 2015
Multicore Reconfiguration Platform —
A Research and Evaluation FPGA Framework
for Runtime Reconfigurable Systems
Von der Fakult¨
at Elektrotechnik
der Helmut-Schmidt-Universit¨
at/
Universit¨
at der Bundeswehr Hamburg
zur Erlangung des akademischen Grades
eines Doktor-Ingenieurs
genehmigte
DISSERTATION
vorgelegt von
Diplom-Informatiker Dominik Meyer
aus Rendsburg
Hamburg 2015
iii
Gutachter
Vorsitzender der Pr¨
ufungskommission
Tag der m¨
undlichen Pr¨
ufung
Prof. Dr. Bernd Klauer
Prof. Dr. Udo Z¨olzer
Prof. Dr. Gerd Scholl
16.03.2015
Gedruckt mit freundlicher Unterst¨
utzung der HSU-Universit¨at der Bundeswehr Hamburg.
iv
Curriculum Vitae
Personal information
Surname(s) / First name(s)
Meyer, Dominik
Email(s)
[email protected]
Nationality(-ies)
Date of birth
German
June 17, 1976
Education
Dates
Title of qualification awarded
Name and type of organisation
providing education and training
Dates
Title of qualification awarded
Name and type of organisation
providing education and training
1993 - 1997
Abitur
Helene Lange Gymnasium Rendsburg/ Germany
1998 - 2008
Diplom in Computer Science
¨ zu Kiel
Christian-Albrechts-Universitat
Work experience
Dates
Occupation or position held
Main activities and
responsibilities
Name and address of employer
Dates
Occupation or position held
Main activities and
responsibilities
Name and address of employer
Dates
Occupation or position held
Main activities and
responsibilities
Name and address of employer
2000 - 2003
technical advisor/manager
Buildup and management of the server infratructure of an
internet service provider and webhoster.
PcW KG
2003 - 2009
technical manager
Buildup and management of the server infratructure of a
webhoster. Development of firewall solutions.
die Netzwerkstatt
2009 - now
research assistant
research in runtime reconfigurable systems
Computer Engineering/ Helmut Schmidt University
Hamburg
v
Publications
[1] Dominik Meyer. Runtime reconfigurable processors.
Presentation at the Chaos Communication Camp, 2011.
[2] Dominik Meyer. Introduction to processor design. Presentation at the 30th Chaos Communication Congress,
2013.
[3] Dominik Meyer and Bernd Klauer. Multicore reconfiguration platform an alternative to rampsoc. SIGARCH
Comput. Archit. News, 39(4):102–103, December 2011.
v
Acknowledgments
This thesis is the result of my work at the Institute of Computer Engineering at the
Helmut Schmidt University/ University of the Federal Armed Forces Hamburg.
I want to thank Prof. Dr. Bernd Klauer, my chair, for his support and the opportunity
to work on this thesis. I also want to thank the remaining members of my dissertation
committee Prof. Dr. Scholl and Prof. Dr. Z¨olzer.
The discussions of my research results with my current and former colleagues at the
Helmut Schmidt University helped a lot. Therefore, I want to thank Marcel Eckert,
Rene Schmitt, Klaus Hildebrandt, Christian Richter and Jan Haase.
Finally, I want to thank my girl friend, Sarah Zingelmann, for her understanding and
support during the last years.
vii
viii
Acronyms
Acronyms
AES
ALU
AMBA
API
Advanced Encryption Standard.
Arithmetical Logical Unit.
Advanced Microcontroller Bus Architecture.
Application Programming Interface.
BRAM
Block RAM.
CAN
CDC
CEB
CLB
CMT
CPLD
CPU
CSMA/CD
CSN
Controller Area Network.
Clock Domain Crossing.
Configurable Entity Block.
Configurable Logic Block.
Clock Management Tiles.
Complex Programmable Logic Device.
Central Processing Unit.
Carrier Sense - Multiple Access / Collision Detection.
Circuit Switched Network.
DDR
DIP
DNF
DSP
Double Data Rate.
Dual Inline Package.
Disjunctive Normal Form.
Digital Signal Processor.
FF
FFT
FIFO
FPGA
FSM
FlipFlop.
Fast Fourier Transformation.
First In First Out.
Field Programmable Gate Array.
Finite State Machine.
GPIO
GPU
General Purpose Input Output.
Graphical Processing Unit.
HDL
HSTL
HTTP
Hardware Description Language.
High-Speed Transceiver Logic.
Hypertext Transfer Protocol.
I2C
IC
ICAP
ILP
IOB
IP
Inter-Integrated Circuit.
Integrated Circuit.
Internal Configuration Access Port.
Instruction Level Parallelism.
Input/Output Block.
Intellectual Property.
ix
Acronyms
x
ISA
ISO
ITU
Instruction Set Architecture.
International Organization for Standardization.
International Telecommunication Union.
LAN
LED
LUT
LVDS
LVTTL
Local Area Network.
Light Emitting Diode.
LookUpTable.
Low-Voltage Differential Signaling.
Low-Voltage Transistor Transistor Logik.
MAC
MPSoC
MPU
MRP
Media Access Control.
Multi-Processor System-on-Chip.
Multiplyer Unit.
Multicore Reconfiguration Platform.
NOC
Network On Chip.
OCSN
OS
OSI
On Chip Switching Network.
Operating System.
Open Systems Interconnection Model.
PAL
PCI
PCIe
PE
PLA
POP3
PR
PRHS
Programmable Array Logic.
Peripheral Component Interconnect.
Peripheral Component Interconnect Express.
Processing Element.
Programmable Logic Array.
Post Office Protocol Version 3.
Partial Reconfiguration.
Partial Reconfiguration Heterogenous System.
RAM
RampSoC
RC
RM
RO
RS
RTL
Random Access Memory.
Runtime adaptive multiprocessor system-on-chip.
Reconfigurable Computing.
Reconfigurable Module.
Ring Oscillator.
Reconfigurable System.
Register Transfer Layer.
SATA
SCI
SoC
SPI
SRAM
Serial Advanced Technology Attachment.
Scalable Coherent Interface.
System on Chip.
Serial Peripheral Interface.
Static Random Access Memory.
Acronyms
TCP
Transmission Control Protocol.
UART
UDP
USB
Universal asynchronous receiver/transmitter.
User Datagram Protocol.
Universal Serial Bus.
VA
VHDL
VR
Virtual Architecture.
Very High Speed Integrated Circuits HDL.
Virtual Region.
WAN
Wide Area Network.
XDL
XML
Xilinx Description Language.
Extensible Markup Language.
xi
List of Figures
1.1
1.2
History of the ic processing size[1] . . . . . . . . . . . . . . . . . . . . . .
partitioning of an FPGA for the Xilinx PR design flow[2] . . . . . . . . .
2.1
2.2
2.3
2.4
2.5
2.6
2.7
and/or Matrix . . . . . . . . . . . . . . . . . . . . .
Halfadder implemented in an and/or Matrix . . . . .
4 to 1 Multiplexer . . . . . . . . . . . . . . . . . . .
Cascaded 4 to 1 Multiplexer . . . . . . . . . . . . . .
Simple structure of an FPGA without interconnects
Structure of two Virtex5 CLBs[3] . . . . . . . . . . .
simple PR example[2] . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
9
10
11
12
13
14
16
3.1
3.2
3.3
3.4
3.5
3.6
example RAMPSoC Configuration[4] . . . . . . . . . . . . . . . . . . . . .
PRHS System Overview[5] . . . . . . . . . . . . . . . . . . . . . . . . . . .
Overview of the Convey HC1 architecture[6] . . . . . . . . . . . . . . . . .
Structure of an Intel Stellarton Processor, combined with an Altera FPGA
Structure of the Xilinx Zynq architecture[7] . . . . . . . . . . . . . . . . .
COPACOBANA and RIVYERA interconnection overview . . . . . . . . .
17
19
21
22
23
24
4.1
4.2
4.3
Example mobile phone SystemOnChip (SoC) . . . . . . . . . . . . . . . . 25
graphical representation of the ISO/OSI Model . . . . . . . . . . . . . . . 27
direct and indirect interconnection networks . . . . . . . . . . . . . . . . . 29
5.1
5.2
5.3
5.4
5.5
Example
Example
Example
Example
Example
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
39
40
43
45
46
6.1
6.2
6.3
6.4
Example granularity problem . . . . . . . . . . .
Example grouping solution configuration . . . . .
Example granularity solution configuration . . .
Area requirements of the different usage patterns
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
48
49
51
52
7.1
7.2
7.3
7.4
Example MRP System Overview .
OCSN frame description . . . . . .
OCSN network structure overview
OCSN address structure . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
53
56
56
57
Ring network with eight nodes
bus with 4 nodes . . . . . . . .
grid networks with 16 nodes .
tree networks . . . . . . . . . .
4×4 crossbar networks . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
3
xiii
LIST OF FIGURES
xiv
7.5
7.6
7.7
7.8
7.9
7.10
Example support platform . . . .
Example reconfiguration platform
CEB Signal Interface . . . . . . .
CSN group . . . . . . . . . . . .
full MRP design flow . . . . . . .
reduced MRP design flow . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
59
62
63
65
68
69
8.1
8.2
8.3
8.4
8.5
8.6
8.7
8.8
8.9
8.10
8.11
8.12
8.13
8.14
8.15
8.16
8.17
8.18
8.19
8.20
8.21
Clock Domain Crossing (CDC) component interface
Dual Port Block RAM interface . . . . . . . . . . . .
SimpleFiFo interface . . . . . . . . . . . . . . . . . .
Reception of one OCSN Frame . . . . . . . . . . . .
OCSN physical transmission component . . . . . . .
OCSN physical reception component . . . . . . . . .
Flowchart of OCSN identification protocol . . . . . .
Flowchart of OCSN flow control protocol . . . . . .
OCSN IF signal interface . . . . . . . . . . . . . . .
OCSN IF implementation schematic . . . . . . . . .
Graph of the OCSN IF FSM . . . . . . . . . . . . .
signal interface of an OCSN Switch . . . . . . . . . .
signal interface of the addr compare component . . .
OCSN switch implementation schematic . . . . . . .
OCSN application component basic schematic . . . .
OCSN Ethernet Bridge FSMs . . . . . . . . . . . . .
OCSN Ethernet Discovery Protocol . . . . . . . . . .
Crossbar Interconnection Schema . . . . . . . . . . .
CSN Crossbar Switch Signal Interface . . . . . . . .
CSN Crossbar Switch Implementation Schematic . .
CSN2OCSN Bridge Signal Interface . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
71
72
73
73
74
74
75
76
77
78
79
80
80
81
84
85
86
87
88
89
90
10.1
10.2
10.3
10.4
MRP Measurement Configuration for Setup 1 . . .
Floorplan of the reconfiguration platform . . . . .
Floorplan with interconnects of the reconfiguration
MRP CPU Configuration . . . . . . . . . . . . . .
. . . . .
. . . . .
platform
. . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
101
103
105
106
List of Tables
1.1
1.2
Configuration speed and -time for a Xilinx xc5vlx330 FPGA . . . . . . . .
Configuration speed and -time for a Xilinx xc5vlx330 FPGA with 0,25MB
Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
3
2.1
2.2
2.3
Truth table of a Halfadder . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
different Boolean functions implemented with a 4 to 1 multiplexer . . . . 11
Example LUT implementing ∧, ∨ and ⊕ . . . . . . . . . . . . . . . . . . . 13
5.1
5.2
5.3
5.4
5.5
5.6
Classification
Classification
Classification
Classification
Classification
Classification
7.1
variable speed of the OCSN . . . . . . . . . . . . . . . . . . . . . . . . . . 55
8.1
Address to register mapping . . . . . . . . . . . . . . . . . . . . . . . . . . 91
of
of
of
of
of
of
a bidirectional ring . . . . . . . . . . .
a bus . . . . . . . . . . . . . . . . . .
an open grid (mesh) with 4 × 4 nodes
a closed grid (illiac) with 4 × 4 nodes
a tree . . . . . . . . . . . . . . . . . .
a crossbar network with n nodes . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
39
42
43
44
44
46
10.1 Area usage of the MRP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
10.2 Maximum clock rates within each switch . . . . . . . . . . . . . . . . . . . 101
10.3 Propagation Delay Matrix for all CEBs in ns . . . . . . . . . . . . . . . . 102
A.1 used OCSN frame types . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
xv
Contents
List of Figures
xiii
List of Tables
xv
1 Introduction
1.1 Reconfigurable Hardware . . . .
1.1.1 Runtime Reconfiguration
1.2 Hybrid Hardware Approaches . .
1.2.1 Datapath Accelerators . .
1.2.2 Bus Accelerators . . . . .
1.2.3 Multicore Reconfiguration
1.3 Thesis Objectives . . . . . . . . .
1.4 Thesis Structure . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
2
2
3
4
4
4
5
7
2 Reconfiguration Fundamentals
2.1 Matrix Approach . . . . . . . . .
2.2 Multiplexer Approach . . . . . .
2.3 Look Up Table Approach . . . .
2.4 Field Programmable Gate Arrays
2.4.1 Input/Output Blocks . . .
2.4.2 Configurable Logic Blocks
2.4.3 Block RAM . . . . . . . .
2.4.4 Special IO Components .
2.4.5 Interconnection Network .
2.5 Partial Reconfiguration . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
9
9
11
12
13
14
14
15
15
15
16
.
.
.
.
.
.
.
.
.
17
17
17
18
20
20
20
21
22
24
3 Example Reconfigurable Systems
3.1 Research Systems . . . . . . . . .
3.1.1 RampSoC . . . . . . . . .
3.1.2 PRHS . . . . . . . . . . .
3.1.3 Dreams . . . . . . . . . .
3.2 Commercial Systems . . . . . . .
3.2.1 Convey HC1 . . . . . . .
3.2.2 Intel Stellarton . . . . . .
3.2.3 Xilinx Zynq Architecture
3.3 COPACOBANA and RIVYERA
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
xvii
Contents
4 Interconnection Networks
4.1 Open Systems Interconnection Model . . . . . . .
4.1.1 Application Layer . . . . . . . . . . . . .
4.1.2 Presentation Layer . . . . . . . . . . . . .
4.1.3 Session Layer . . . . . . . . . . . . . . . .
4.1.4 Transport Layer . . . . . . . . . . . . . .
4.1.5 Network Layer . . . . . . . . . . . . . . .
4.1.6 Data Link Layer . . . . . . . . . . . . . .
4.1.7 Physical Layer . . . . . . . . . . . . . . .
4.2 Topology . . . . . . . . . . . . . . . . . . . . . .
4.2.1 Interconnection Type . . . . . . . . . . .
4.2.2 Grade and Regularity . . . . . . . . . . .
4.2.3 Diameter . . . . . . . . . . . . . . . . . .
4.2.4 Bisection Width . . . . . . . . . . . . . .
4.2.5 Symmetry . . . . . . . . . . . . . . . . . .
4.2.6 Scalability . . . . . . . . . . . . . . . . . .
4.3 Interface Structure . . . . . . . . . . . . . . . . .
4.3.1 Direct Networks . . . . . . . . . . . . . .
4.3.2 Indirect Networks . . . . . . . . . . . . .
4.4 Operating Mode . . . . . . . . . . . . . . . . . .
4.4.1 Synchronous Connection Establishment .
4.4.2 Synchronous Data Transmission . . . . .
4.4.3 Asynchronous Connection Establishment
4.4.4 Asynchronous Data Transmission . . . . .
4.4.5 Mixed Mode . . . . . . . . . . . . . . . .
4.5 Communication Flexibility . . . . . . . . . . . . .
4.5.1 Broadcast . . . . . . . . . . . . . . . . . .
4.5.2 Unicast . . . . . . . . . . . . . . . . . . .
4.5.3 Multicast . . . . . . . . . . . . . . . . . .
4.5.4 Mixed . . . . . . . . . . . . . . . . . . . .
4.6 Control Strategy . . . . . . . . . . . . . . . . . .
4.6.1 Centralised Control . . . . . . . . . . . .
4.6.2 Decentralised Control . . . . . . . . . . .
4.7 Transfer Mode and Data Transport . . . . . . . .
4.8 Conflict Resolution . . . . . . . . . . . . . . . . .
5 Example Network On Chip Architectures
5.1 Ring . . . . . . . . . . . . . . . . . .
5.2 Bus . . . . . . . . . . . . . . . . . .
5.2.1 Bus-Arbitration . . . . . . . .
5.2.2 Data Transmission Protocol .
5.2.3 Classification . . . . . . . . .
5.3 Grid . . . . . . . . . . . . . . . . . .
xviii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
25
26
27
27
27
28
28
28
28
29
29
30
31
31
32
32
32
33
33
33
33
33
33
33
34
34
34
34
34
34
35
35
35
35
36
.
.
.
.
.
.
39
39
40
41
41
42
42
Contents
5.4
5.5
Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Crossbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
6 Granularity Problem of Runtime Reconfigurable
6.1 Solutions . . . . . . . . . . . . . . . . . . .
6.1.1 Grouping Solution . . . . . . . . . .
6.1.2 Granularity Solution . . . . . . . . .
6.2 Granularity Problem and Hybrid Hardware
7 Multicore Reconfiguration Platform
7.1 On Chip Switching Network . .
7.1.1 Physical Layer . . . . .
7.1.2 Data-link Layer . . . . .
7.1.3 Network Layer . . . . .
7.1.4 Transport Layer . . . .
7.1.5 Session Layer . . . . . .
7.1.6 Presentation Layer . . .
7.1.7 Application Layer . . .
7.2 Support Platform . . . . . . . .
7.2.1 GPIO . . . . . . . . . .
7.2.2 BRAM . . . . . . . . .
7.2.3 DDR3 RAM . . . . . .
7.2.4 UART Bridge . . . . . .
7.2.5 Ethernet Bridge . . . .
7.2.6 Soft-core SoC . . . . . .
7.3 Reconfiguration Platform . . .
7.3.1 ICAP . . . . . . . . . .
7.3.2 CEB . . . . . . . . . . .
7.3.3 CSN . . . . . . . . . . .
7.3.4 IOB . . . . . . . . . . .
7.4 Operating System Support . .
7.5 Design Flow . . . . . . . . . . .
Design Flow
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
Description
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
47
49
49
50
51
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
53
54
55
55
55
57
58
58
58
58
59
60
60
60
61
61
61
62
62
64
66
67
68
8 Implementation of the Multicore Reconfiguration Platform
8.1 General Components . . . . . . . . . . . . . . . . . . . .
8.1.1 Clock Domain Crossing . . . . . . . . . . . . . .
8.1.2 Dual Port Block RAM . . . . . . . . . . . . . . .
8.1.3 FiFo Queue Component . . . . . . . . . . . . . .
8.2 OCSN . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2.1 OCSN Physical Interface Components . . . . . .
8.2.2 OCSN Data-Link Interface Component . . . . .
8.2.3 OCSN Network Component . . . . . . . . . . . .
8.2.4 OCSN Application Components . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
71
71
71
72
72
73
73
75
80
82
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
xix
Contents
8.3
CSN . . . . . . . . . . . . . . . . . . .
8.3.1 Physical Layer Implementation
8.3.2 Network Layer Components . .
8.3.3 Application Layer Components
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
86
87
87
89
9 Operating System Support Implementation
93
9.1 OCSN Network Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
9.2 OCSN Network Device Driver . . . . . . . . . . . . . . . . . . . . . . . . . 96
10 Evaluation
10.1 Area Usage . . . . . . . . . . . . . . . . . . . . . .
10.2 Maximum CSN Propagation Delay Measurement .
10.2.1 RO-Component . . . . . . . . . . . . . . . .
10.2.2 ReRouter-Component . . . . . . . . . . . .
10.2.3 Measuring Setup . . . . . . . . . . . . . . .
10.2.4 Measurement Results . . . . . . . . . . . .
10.3 Example Microcontroller Implementation for MRP
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
97
97
99
99
100
100
100
104
11 Conclusion
109
11.1 Outlook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Appendix
113
A
OCSN Frame Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Bibliography
xx
115
1 Introduction
Gordon E. Moore[8] stated in 1965 in the growing Integrated Circuit (IC) market context:
“The complexity for minimum component costs has increased at a rate of roughly a factor
of two per year.” The main conclusion of his paper is that the density of transistors on
a IC periodically doubles. This prediction still holds after 48 years, according to Intel
employees Mark T. Bohr, Robert S. Chau, Tahir Ghani and Kaizad Mistry[9].
ICs, such as general-purpose processors, are now produced in a 14nm technology
process. Figure 1.1 displays the history of processing sizes for ICs of the last decades.
With every doubling of the transistor density, more logic components can be placed
onto one IC . Processor designers are using this newly available space to add more and
more Central Processing Unit (CPU) and Graphical Processing Unit (GPU) cores to
processors. For example the OpenSPARC T2 processor[10] has 8 CPU cores, and the
NVIDIA Fermi device[11] even has 512 GPU cores. This development is expected to
continue for a while, equipping general-purpose processors with more parallel computing
power. System on Chips (SoCs) are another product of the available space on ICs. They
feature single and multicore processors combined with a GPU and additional accelerator
hardware. This accelerator hardware improves the computing power with Digital Signal
10000
8000
Size in nm
6000
4000
2000
0
1970
1975
1980
1985
1990
1995
2000
2005
2010
2015
Year
Figure 1.1: History of the ic processing size[1]
1
1 Introduction
File Size (MB)
Interface
Bit-width
Clk (MHz)
Speed (Mb/s)
Time (ms)
9,6
9,6
9,6
SelectMap
SelectMap
SelectMap
8
16
32
50
50
50
400
800
1600
192
96
48
Table 1.1: Configuration speed and -time for a Xilinx xc5vlx330 FPGA
Processors (DSPs) or other mathematical functions implemented in hardware.
Beyond exploiting the available space with more and more static hardware, it can also
be used for adding reconfigurable hardware.
1.1 Reconfigurable Hardware
Reconfigurable hardware has the ability to change its function after chip assembly and
allows the configuration of every digital circuit, such as Advanced Encryption Standard
(AES)-, Fast Fourier Transformation (FFT) accelerators, other DSP like instructions
and even some specialised CPU cores. The industry has already reacted to the importance of reconfigurable hardware and produces different types of standalone ICs with
this feature. One example is the Field Programmable Gate Array (FPGA). It features a
large reconfigurable hardware area, some accelerator components like Arithmetical Logical Unit (ALU) and Multiplyer Unit (MPU), and distributed Random Access Memory
(RAM). Chapter 2 gives a more detailed introduction to reconfigurable hardware and
commercially available ICs. From now on, we will use FPGA as a synonym for reconfigurable hardware.
One important limitation of FPGAs was that they had to be reconfigured completely,
even for small system changes. Every computation taking place in hardware had to be
stopped and a programming file, representing the changed functionality, was loaded into
the FPGA. Even, if only half of the reconfigurable area was computing and the other
half was without functionality, the whole area had to be replaced. This was and still is
a very time intensive task. It takes many milliseconds for the reconfiguration process to
complete, depending on the size of the file and the configuration channel. This process
erases the internal states of all configured hardware components. Table 1.1 presents the
calculated minimal configuration times for a Xilinx FPGA and a 9,6MB configuration
file using the fastest available configuration interface.
1.1.1 Runtime Reconfiguration
Because of the configuration time limitation and to enable replacing one part of a design
while other parts are still doing computations, hardware vendors introduced the concept
of runtime reconfiguration. Runtime reconfiguration is also often referenced as dynamic
reconfiguration or partial runtime reconfiguration. Such a runtime reconfigurable project
is developed by dividing the FPGA into some Reconfigurable Modules (RMs) during
2
1.2 Hybrid Hardware Approaches
RM03.bit
RM02.bit
RM01.bit
RM00.bit
FPGA
RM0
,,static´´
Logic
RM13.bit
RM12.bit
RM11.bit
RM10.bit
RM1
Figure 1.2: partitioning of an FPGA for the Xilinx PR design flow[2]
the design phase. Figure 2.7 shows an example partitioning of a FPGA for use with
the Xilinx Partial Reconfiguration (PR) design flow[2]. This design flow targets partial
reconfiguration for Xilinx FPGAs. Two different sized RMs are available, each connected
to some special “static” control hardware.
This feature does not speed up the configuration process itself, but through the partitioning of the reconfigurable area the size of the individual configuration stream shrinks,
which reduces the time for the reconfiguration process of one RM . For example, if you
can reduce the size of the configuration stream for one RM to 0,25 MB, you achieve
the configuration times of Table 1.2. This is an enormous speed up, but it can only be
achieved, if the design is apportionable and the RMs can be reconfigured individually
rather than all at once.
The partitioning of a FPGA can only be altered by a full replacement of the configured
logic. More benefits of PR are summarized by Kao[12].
1.2 Hybrid Hardware Approaches
Systems combining a general-purpose von Neumann[13] CPU with some kind of configurable or reconfigurable area are often called Hybrid Hardware Systems.
The industry has already produced some hybrid systems, such as the Xilinx Zynq
architecture[7], the Intel Atom processor E6X5C series[14] and the Convey HC1/HC2[6].
The first combines an ARM Cotex A9 processor core with a Xilinx FPGA on the same
File Size (MB)
Interface
Bit-width
Clk (MHz)
Speed (Mb/s)
Time (ms)
0,25
0,25
0,25
SelectMap
SelectMap
SelectMap
8
16
32
50
50
50
400
800
1600
5
2,5
1,25
Table 1.2: Configuration speed and -time for a Xilinx xc5vlx330 FPGA with 0,25MB
Data
3
1 Introduction
chip, but not on the same die. The next combines an Intel Atom processor with an
Altera FPGA in the same manner. The last interconnects one Intel Xeon processor with
four Xilinx FPGAs through the Intel co-processor interface. Still missing are hybrid
hardware systems combined on a single die.
Extending a static processor core with some kind of reconfigurable hardware has already been the focus of research. The following classes of combining strategies have
already been evaluated.
1.2.1 Datapath Accelerators
Hallmannseder[15], Dales[16], Hauser et al. [17] and Razdan[18] added reconfiguration
directly into processor cores by adding reconfigurable accelerator units to the datapath
of the processor. These units are small and cannot be merged to form larger ones. They
improve the processor performance by exploiting Instruction Level Parallelism (ILP)
through additional computational datapath units, or by extending the Instruction Set
Architecture (ISA) with special instructions. Examples of these special instructions are
cryptograhic accelerators for AES and mathematical accelerators for FFT . Datapath
accelerators can improve the performance the most, if they are tightly integrated into
the processor core without long interconnects.
1.2.2 Bus Accelerators
Bus accelerators are small to medium-sized reconfigurable components and can be configured with specialised hardware to improve the runtime of a specific part of a program.
They are connected through a bus or a network to the processor. These accelerators
have to work independently on some part of data because of the high bus/network latency. This can release the static core(s) of some portion of parallel computable data.
Because of the independent nature of these accelerators, they have an internal state and
sometimes a connection to the main memory of the system. Bus Accelerators are a very
simple form of extending the performance of processor cores because existing Busses,
like Peripheral Component Interconnect (PCI) or Universal Serial Bus (USB), can be
used, but more tightly coupled interconnects are also possible.
1.2.3 Multicore Reconfiguration
The Runtime adaptive multiprocessor system-on-chip (RampSoC) framework of Gohringer
et al.[4, 19] evaluates the multicore reconfiguration approach. With Multicore Reconfiguration, multiple processor cores can be configured at system runtime. The system can
adjust itself to the nature of the current problem to solve. Some kind of dynamic or runtime reconfiguration design flow implements RMs, each containing one processor core.
These processor cores are called softcores because they are not staticly implemented.
The size of the largest one defines the size of the smallest RM , if every processor core
shall fit into every RM . An alternative to defining some different sized RMs for different
4
1.3 Thesis Objectives
sized processor cores, but this reduces the number of usable processor cores of the same
size.
1.3 Thesis Objectives
Most of the research about hybrid hardware systems focuses on one combining class
only, is always using a fixed number of static sized cores or units, and includes only high
performance computing applications. This is also true for industrial products.
These restrictions limit the number of application scenarios for each architecture. To
deploy hybrid hardware in a general-purpose environment and to support many applications, the number and the size of the components has to be variable. Example
applications benefiting from hybrid hardware in general-purpose computing are: image processing applications, simulation of electromagnetic fields, solid state physics and
computer games. Image processing applications could use hybrid hardware to accelerate
certain filter and transformation algorithms by uploading accelerator units into the reconfigurable hardware. The simulation of electromagnetic fields and solid state physics
can accelerate their computations by offloading certain calculations to the reconfigurable
hardware. Both fields already use modern graphic cards to accelerate their computations on general-purpose hardware. Reconfigurable hardware would enable developers
to use more specialised hardware and increase the calculation power even more. Computer games also use modern graphic cards to accelerate physical calculations for their
simulated world. Hence, with reconfigurable hardware, each computer game could bring
its own hardware for doing such calculations. All these reconfigurable hardware can be
implemented as an accelerator unit or multiple streaming processor cores. Individualising hardware for each computer application can increase the processing power or reduce
the power consumption of the whole system. Often, applications in a general-purpose
environment are running concurrently, inducing the requirement of a variable number
and a variable size of reconfigurable modules. This all-purpose computing capabilities
requires more flexible design rules than systems supporting just one combination class.
Computer systems are divisible into single-purpose computers, multipurpose computers and general-purpose computers. Single-purpose computers are designed for a specific
calculation. In this systems reconfiguration is used to update the system and to fix development mistakes. This is already very common. Multipurpose computers are specialised
for a group of computations, such as audio and video processing. A typical multipurpose computer is a DSP. In some DSPs reconfigurable accelerator units are available.
They enable developers to extend the functionality or integrate new algorithms. The
last computation class, the general-purpose computers, lacks support for reconfigurable
hardware at the moment. This situation shall be changed by this thesis.
As mentioned earlier, the FPGA has to be partitioned into multiple modules to support
runtime reconfiguration. This partitioning is fixed after the initial system design stage.
This early stage floorplaning leads to the granularity problem of runtime reconfigurable
design flow because different sized components shall be runtime reconfigurable with
maximum flexibility and good area usage ratio. During floorplaning, the maximum
5
1 Introduction
sized component determines the size of one module. This module size and the size of
the FPGA determines the number of available reconfigurable modules, which leads to a
very inefficient design, if components with very different sizes are used. This granularity
problem, and the solution proposed in this thesis, are described more in Chapter 6.
Deploying hybrid hardware into general-purpose computing leads to another problem.
At the moment it is relatively easy to write platform-independent programs by using
a higher level programming language like C. Languages like Java are ignored because
the programs are running in a runtime virtual machine, not on the bare hardware[20].
Virtual machines could be another target for hardware support in general-purpose computers. One advantage of current general-purpose CPUs is, that all of them are based
on the von Neumann architecture[13]. This simplyfies the development of platform independent code because a compiler can be written for all architectures, with the same
base assumptions, only differing in the ISA. Writing platform independent programs for
hybrid hardware is much more complicated because these programs consist of software
and hardware parts. The reconfigurable hardware in such a system is called configware.
While the software part can still be written in C and is based on the von Neumann architecture, the different FPGA and CPU vendors have not agreed upon an architecture
for the hardware part yet. It cannot be expected that all these companies decide for the
same reconfiguration approach for their hybrid hardware system. This complicates the
development of the configware because developers have to describe hardware for different
reconfiguration approaches.
Both problems — the granularity problem and the development of platform independent code — are addressed in this thesis by implementing a multi FPGA framework
called Multicore Reconfiguration Platform (MRP). This framework uses a new floorplaning technique for partitioning the FPGAs, and a Circuit Switched Network (CSN)
for interconnecting all the RMs. This combination of floorplaning and interconnection
network enables the framework to support a variable number of different sized reconfigurable components, only limited by FPGA size, in contrast to all other, at the moment
available systems. This is achieved by dividing larger components into multiple smaller
components, which fit into the RMs and interconnecting them through the CSN . This
framework also simplifies the development of platform independent software and configware because the framework can be synthesised for any FPGA. It abstracts from the
underlying FPGA and provides the same Application Programming Interface (API) for
every hybrid hardware developer.
The proposed floorplaning technique of the MRP and the CSN generate a medium
sized hardware overhead. Because of this overhead, the FPGA size is a limiting factor in
the evaluation process. To overcome this restriction, the MRP supports a flexible and
easily extensible packet switched network, called On Chip Switching Network (OCSN).
It allows intra FPGA communication for configuring the RMs and programming the
CSN , and also inter FPGA communication, to combine multiple FPGAs to form a
larger hybrid hardware system. This feature is also a novelty, like the solution to the
granularity problem and the platform independence of configware.
6
1.4 Thesis Structure
1.4 Thesis Structure
The thesis is organised in eleven chapters. The introduction in Chapter 1 briefly describes the frame and the objectives of the thesis. To understand hybrid hardware, the
principles of reconfigurable hardware, FPGAs, and runtime/dynamic reconfiguration
are introduced in Chapter 2 and some example Reconfigurable Systems (RSs), related
to the MRP, are presented in Chapter 3. The MRP uses two different kinds of Network On Chips (NOCs), the CSN and the OCSN . Chapter 4 introduces the principles
of NOCs. It describes the Open Systems Interconnection Model (OSI) and presents a
network classification based on work done by Schwederski et al. [21] and Feng[22]. Some
important interconnection networks are described and rated according to this classification in Chapter 5. After the introduction of all basic principles, Chapter 6 explains
the granularity problem of runtime reconfigurable design flow, occurring, if FPGAs are
divided into multiple RMs to support flexible PR designs and describes possible solutions to the problem. The main work of the thesis, the MRP, is presented in Chapter 7.
It introduces the CSN , OCSN and the design of the RMs. Chapter 8 describes the
implementation of the MRP in more detail. Because the MRP is designed as a hybrid
system it needs support from the Operating System (OS). The required device drivers
are described in Chapter 9. The verification, proving that the MRP is usable and allows the reconfiguration of multiple different sized computing elements, is presented in
Chapter 10. It evaluates the MRP according to area usage, maximum clock speed and
example implementations. The conclusion of the thesis results and an outlook to future
work is given in Chapter 11.
7
2 Reconfiguration Fundamentals
Reconfigurable hardware describes some kind of electronic circuit, whose Boolean function can be changed or reconfigured after production of the circuit. Such hardware
supports the creation of variable and specialised components the moment they are required. Different approaches exist to build basic elements of reconfigurable hardware.
These basic elements can be combined to form larger systems and are produced as ICs,
such as FPGAs, Programmable Logic Arrays (PLAs), Complex Programmable Logic Devices (CPLDs) and Programmable Array Logics (PALs). The most important difference
between these systems is their basic reconfigurable component. FPGAs are build out
of LookUpTables (LUTs), while PLAs, PALs and CPLDs use arrays of and/or matrices to configure Boolean functions. Another approach on reconfigurable hardware uses
multiplexers. All the reconfigurable ICs can be used to build RSs or hybrid hardware
systems. These systems often combine a general-purpose processor with some reconfigurable hardware to improve the computational power of the processor. This approach is
called Reconfigurable Computing (RC). The following sections give a short introduction
to reconfigurable hardware. Compton et al.[23] provides a more detailed overview of
reconfigurable hardware and related software.
2.1 Matrix Approach
The basis for the matrix approach is the and/or matrix. Figure 2.1 shows an example
a a b b c c d d 1 0
&
&
&
y0
y1
Figure 2.1: and/or Matrix
9
2 Reconfiguration Fundamentals
matrix. On the left side, the and matrix prepares the connection of input signals, the
negated input signals, a zero and a one signal to some and-gates. None of the vertical
signals are connected to the horizontal ones at the moment. The intersections of these
signals are connected to a programmable switch, such as an electronic fuse or a Static
Random Access Memory (SRAM) cell. An electronic fuse will make the matrix onetime programmable, while the SRAM or other memory types will cause a multiple
programmable matrix. On the right side, the or-matrix prepares the connection of the
and-gates to some or-gates. The intersections of the signals are used the same way as
the intersections of the and-matrix. To configure a Boolean function of type f : Bn → B
into this and/or matrix, the function is required in Disjunctive Normal Form (DNF). A
DNF is the normalisation of a logical function, displayed as a disjunction of conjunctive
clauses. Every logical function, without quantifiers, can be converted to DNF [24].
a
b
S
Cout
0
0
1
1
0
1
0
1
0
1
1
1
0
0
0
1
Table 2.1: Truth table of a Halfadder
a a b b c c d d 1 0
&
&
&
Cout
S
Figure 2.2: Halfadder implemented in an and/or Matrix
Figure 2.2 displays an example implementation of a HalfAdder with the truth table
given in Table 2.1. The formulas for S and Cout can be read out of the truth table:
S = (a ∧ ¬b) ∨ (¬a ∧ b),
Cout = a ∧ b
10
2.2 Multiplexer Approach
Both are in DNF and can be directly implemented into an and/or Matrix. The nodes
in Figure 2.2 represent connections at the intersection points of the signals.
Three forms of expressions exist for the matrix approach.
• The and and the or matrix are programmable.
• Only the and matrix is programmable, the or matrix has a fixed programming.
• Only the or matrix is programmable, the and matrix has a fixed programming.
Different ICs use different expressions of the matrix approach.
2.2 Multiplexer Approach
A multiplexer is a small digital selector device. It routes one of n input signals to its
output. The number of input signals depends on the number of selection signals. If x
selection signals are available, the multiplexer can process 2x input signals. Figure 2.3
shows a 4 to 1 multiplexer with data inputs e0 . . . e3 and selection inputs s0 and s1 .
s0 s1
e0
00
e1
01
e2
10
e3
11
4-1 MUX
y
Figure 2.3: 4 to 1 Multiplexer
Simple Boolean functions f : B × B → B can be build out of this multiplexer by using
s0 and s1 as the input variables and assigning each of the data inputs the results of the
function. Table 2.2 shows how to implement the logic functions ∧, ∨ and ⊕ with a mule0
e1
e2
e3
function
0
0
0
0
1
1
0
1
1
1
1
0
f (s0 , s1 ) = s0 ∧ s1
f (s0 , s1 ) = s0 ∨ s1
f (s0 , s1 ) = s0 ⊕ s1
Table 2.2: different Boolean functions implemented with a 4 to 1 multiplexer
tiplexer. To make this approach reconfigurable to different Boolean functions, FlipFlops
(FFs) can be connected to e0 , . . . , e3 . By saving new values into these FFs, different
11
4-1 MUX
11
00
01
10
11
00
01
10
11
e7
e8
e9
e10
e11
e12
e13
e14
e15
s0 s1
4-1 MUX
11
10
01
10
e6
s0 s1
4-1 MUX
01
e5
11
e3
00
10
e2
e4
01
e1
s0 s1
00
e0
s0 s1
4-1 MUX
00
s2 s3
4-1 MUX
y
2 Reconfiguration Fundamentals
Figure 2.4: Cascaded 4 to 1 Multiplexer
functions can be configured. This pattern can be extended to implement functions of
type f : Bn → B by cascading multiplexers. An example is given in Figure 2.4. There are
two additional input variables available: s2 and s3 . Hower, this pattern does not scale
because for every two input variables the required number of multiplexers quadruples.
Another method to increase the number of input variables is to increase the number
of selection signals, but this will not scale either due to signal fanning. For x selection
signals 2x input signals are required.
Functions of type f : Bn → Bm have to be split in m functions of type f : Bn → B to
be implementable with the multiplexer pattern.
2.3 Look Up Table Approach
A better solution to implement reconfigurable functions of type f : Bn → B is to use a
small RAM or LUT . The address signals of the RAM are used as the input parameters
and the data words hold the result of the function. Table 2.3 displays the implementation
of the simple Boolean functions ∧, ∨ and ⊕ in a LUT with an address width of three
and a data width of eight. Because only two operands are required for these operations,
a1 and a2 are selected as the input variables. The result is encoded in the dataword,
starting from the first left bit for ∧.
It is obvious that the LUT approach supports the calculation of multiple functions of
type f : Bn → B concurrently by using different bits of the data-word as the result.
This approach is better suited for the calculation of f : Bn → Bm functions than any
other presented approach because it only requires one LUT , as long as m is less or equal
the size of one data word. For functions with m greater the size of one data word, LUTs
can easily be chained together.
12
2.4 Field Programmable Gate Arrays
a0
a1
a2
Dataword (8bit)
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
00000000
01100000
01100000
11000000
00000000
00000000
00000000
00000000
Table 2.3: Example LUT implementing ∧, ∨ and ⊕
2.4 Field Programmable Gate Arrays
To extend boolean functions as explained in previous subsections to Finite State Machines (FSMs) or even more compley circuits it is necessary to have memory and interconnects.
Many IC provide the required resources to configure digital circuits, such as FPGAs,
PLAs, CPLDs and PALs. This section describes the general structure of FPGAs because they are used for the prototype system in this thesis. Many books provide this
information, but this section is based on the book by Urbanski et al. [25]. In contrast to
the name, a FPGA is not an array of gates, but an array of configurable basic elements,
as there are Configurable Logic Blocks (CLBs), Input/Output Blocks (IOBs), Block RAM
(BRAM), small DSPs and Clock Management Tiless (CMTs). Figure 2.5 displays the
IOB
IOB
IOB
IOB
IOB
IOB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
IOB
IOB
IOB
IOB
IOB
IOB
Figure 2.5: Simple structure of an FPGA without interconnects
basic FPGA structure with CLBs and IOBs, and without interconnects. They are organised in an array structure to simplify the interconnection of the blocks. All components
of the FPGA are vendor and device specific. The focus here is on Xilinx Virtex5 FPGAs.
The following information is taken from the Xilinx Vitex5 User Guide[3].
13
2 Reconfiguration Fundamentals
2.4.1 Input/Output Blocks
IOBs are the interface from the configured hardware to the input and output pins of the
FPGA. They are also configurable by the developer to support different voltage levels
and input/output signal standards, such as Low-Voltage Transistor Transistor Logik
(LVTTL), Low-Voltage Differential Signaling (LVDS), and High-Speed Transceiver Logic
(HSTL).
2.4.2 Configurable Logic Blocks
CLBs are the main reconfigurable elements of the Virtex5 FPGAs. Figure 2.6 displays
COUT
Slice
Y1Y1
Slice
X1Y0
Switch
Matrix
SHIFT
COUT
CIN
Slice
X0Y1
Slice
X0Y0
Fast
Connects
to neighbors
CIN
Figure 2.6: Structure of two Virtex5 CLBs[3]
the structure of two CLBs. The switch matrix is already part of the FPGAs interconnection network. One CLB consist of two slices. These slices are tightly interconnected
through carry lines to increase the operand size of Boolean functions. Always two CLBs
are connected through a shift line to form large shift registers.
Every slice contains four LUTs, which are the basic reconfigurable elements of FPGAs,
four storage elements, wide-function multiplexers, and carry logic[3].
The used LUTs have six independent inputs and two independent outputs. This
structure supports the configuration of one Boolean function of type f : B6 → B or
two Boolean functions of type f : B5 → B if the two functions share the same input
parameters. Three multiplexers are connected to the four LUTs in one slice to support
combining two LUTs to increse the number of possible inputs to seven or eight. Functions
with more inputs are implemented by combining slices.
D-type FFs provide storage functionality within each slice. Their input can be directly
driven from a LUT . Some special slices provide more storage capacity by merging LUTs
into a small RAM . Different merging strategies are supported.
14
2.4 Field Programmable Gate Arrays
2.4.3 Block RAM
FPGAs support BRAM to provide reconfigurable hardware with fast and area inexpensive RAM . On Xilinx FPGAs BRAM is provided in 36kbyte blocks. They are placed in
columns on the FPGA. The number of available blocks is FPGA dependent. For Virtex5
devices the available BRAM ranges from 144 kbytes up to 2321 kbytes.
BRAM can be used as single port, dual port RAM , or as First In First Out (FIFO)
queues. Virtex5 FPGAs even provide dedicated hardware for asynchronous FIFO queues,
reducing space requirements of the reconfigurable hardware. Access times for BRAM are
very fast, compared to off-chip Double Data Rate (DDR) RAM . A dataword is available
one clock tick after issueing the address into the RAM , making it a good choice for fast
buffers or caches.
2.4.4 Special IO Components
Often, reconfigurable hardware requires special I/O components, such as Ethernet, Serial
Advanced Technology Attachment (SATA), PCI , etc.. Implementing these I/O components in reconfigurable hardware is possible, but requires much FPGA space. Therefore, the FPGAs support some special non-reconfigurable I/O hardware. This hardware
implements common parts of I/O devices, which can be used to create the required
components. The Virtex5 FPGA family supports Ethernet MACs, and RocketIO GTP
Transceivers.
Ethernet MACs reduce the area usage for Ethernet devices because they implement
the Media Access Control (MAC) layer of the Ethernet protocol.
RocketIO GTP Transceivers support general components for high speed serial I/O like
8b/10b encoders/decoders and fast serialiser and deserialiser. These transceivers can be
used to implement the physical layer of the PCI or SATA bus. The correct working mode
can be set through special instructions in the Hardware Description Language (HDL).
2.4.5 Interconnection Network
The interconnection network and the CLBs are the most important parts of the FPGA.
Without the interconnection network the CLBs can not be combined and larger components can not exchange data. FPGAs distinguish three different signal types, which
have to be routed through the interconnection network with different priorities and signal
latencies.
clock signals Clock signals require a fast distribution time throughout the FPGA
because they synchronise all the components to its rising or falling edge.
reset signals Reset signals are similar to clock signals. Through reset signals components are initialised at the same moment. This also requires a fast distribution
throughout the FPGA.
I/O signals For I/O signals a fast distribution is also important, but the maximum
clock rate a design can work at, is calculated using the I/O signal line latencies.
15
2 Reconfiguration Fundamentals
Another important requirement for I/O signals is their number. A normal design only
has around one to three different clock signals and as much reset signals, but the
number of I/O signals are very huge.
Therefor, the FPGAs support two different interconnection networks. One for clock
and reset signals and one for all the I/O signals, required to exchange data between
components.
2.5 Partial Reconfiguration
PR is a feature and a design flow of Xilinx Virtex5, Virtex6, and Virtex7 FPGAs[2]. It
extends the normal configuration possibility of FPGAs with the ability to modify parts
of a running configuration, without interrupting the computation.
The design is divided into a static and a reconfigurable part during development. For
the static part special entities, called reconfiguration modules, are defined, which hold
the reconfigurable components. This definition includes a signal interface declaration
for communicating with the static part. There can be different reconfiguration modules
in one design with variable number of instances. The reconfigurable part of the design
consist of entity descriptions for every component, which should be configurable into one
module.
RM03.bit
RM02.bit
RM01.bit
RM00.bit
FPGA
RM0
,,static´´
Logic
RM1
RM13.bit
RM12.bit
RM11.bit
RM10.bit
Figure 2.7: simple PR example[2]
The synthetisis process creates some FPGA configuration files. The main file includes
the static design and a component for each instance of a reconfiguration module. For
every component and every instance an additional partial configuration file is created.
These files can be loaded into the FPGA after the main file to reconfigure certain reconfiguration module instances. Figure 2.7 shows a simple example of a reconfigurable
system. It features two reconfiguration module instances and four partial configuration
files per module. Instances can only be configured into the RMs for which they have
been synthesised, placed, and routed.
16
3 Example Reconfigurable Systems
3.1 Research Systems
3.1.1 RampSoC
A RampSoC is a Multi-Processor System-on-Chip (MPSoC) that can be adapted during
run-time by exploiting dynamically and partially reconfigurable hardware[4]. A special
design-flow is used, which combines the top-down and bottom-up approach. The bottomup approach is used during design time to set up the basic conditions of a RampSoC
according to the problem-space it should be used in. In the top-down approach the
software is optimised for this initial setup. Parts of this initial setup can be reconfigured
to meet arising needs of applications during runtime, such as a different processor core
or a special accelerator unit. Figure 3.1 shows a possible RampSoC configuration at
FPGA
Switch
MicroProcessor
(Type 1)
Switch
MicroProcessor
(Type 1)
Accelerator
Accelerator
Switch
MicroProcessor
(Type 1)
Switch
MicroProcessor
(Type 1)
Accelerator
Accelerator
Switch
MicroProcessor
(Type 2)
Accelerator
Switch
MicroProcessor
(Type 1)
Accelerator
Accelerator
Accelerator
Figure 3.1: example RAMPSoC Configuration[4]
17
3 Example Reconfigurable Systems
some point in time. Two types of processor cores are supported in this configuration,
each having at least one accelerator unit. Switches connect the individual cores to the
communication network.
The implementation of a RampSoC is done using the early access PR concept of Xilinx. This design flow is not supported by the Xilinx toolchain anymore. The early
access PR design flow requires, that reconfigurable modules are defined before synthesis of the project. To reconfigure different cores, accelerators and the communication
infrastructure all reconfigurable parts have to be defined at the system design stage.
The maximum number of accelerators and processor cores is fixed during runtime. The
developer has to decide, if each type of core requires its own reconfiguration module
defined or if the biggest core size is selected as the size for the reconfiguration unit. He
has to balance between space exploitation and flexibility. The RampSoC approach uses
proprietary processor cores, such as Pico- and Microblaze cores from Xilinx. To this
cores accelerator units are connected, which can change their hardware function while
the processor is executing a program.
The RampSoC approach is a very flexible improvement compared to normal multicoreprocessors or MPSoCs. Its heterogeneous structure allows the optimal execution of
applications with different hardware requirements and can adapt to applications needs
during runtime very easily. Processor cores can even be exchanged by special FSMs
supporting calculations in special hardware components.
3.1.2 PRHS
The Partial Reconfiguration Heterogenous System (PRHS) developed by Eckert[5] tries
to exploit the available new space on ICs also by reconfiguration. The PRHS is a softcore
SoC , configured onto a FPGA. It features one RM of the Xilinx PR design-flow. In the
available RM different hardware components can be configured. The RM can accelerate
computations on the SoC , but its main pupose is virtualisation.
Virtualisation in this case means the instantiation of a full SoC running under the
supervision of the static core. The virtualised SoC also runs Linux as OS. Figure 3.2
displays this scenario. The static system on the right is running Linux as its OS. It
has full access to memory and memory mapped IO hardware components like Universal
asynchronous receiver/transmitters (UARTs) or timers. On the left a RM is available
and connected to the static system. The SoC configured at runtime into this RM has
only partial access to the memory. The accessible memory space is configured from the
static system before the virtualised system is started. A memory mapped IO component
interconnects the RM and the static system. It supports starting and stopping the
virtualised system, but not suspending it. Providing a virtualised hard-disk to the
reconfigurable system is another feature of the static system.
The PRHS is an interesting way of using tighly couple reconfigurable hardware from
a static processor core. The virtualised processor cores can feature different ISAs and
run without performance losses, compared to the static processor core.
18
PRHS Bus
RS232 Tx/Rx
lines 1
<option base>
uart1
(uart4prhs)
PRextension_inst (PRextension)
baseReconf
<option reconf>
icap4prhs
reconfiguration
guard
reconfIF4prhs
RS232 Tx/Rx
lines 0
icnExtInterrupts
28
30
BCS
secondary
data bus
timers and uart0
present information
icBusStatusLines
28
30
32
(busComponentStatus)
PRextension or uart1
present information
SysIntChip
(intchip4prhs)
uart0
(uart4prhs)
32
ClockSourceTimer
(timer4prhs)
ClockEventTimer
(timer4prhs)
bootRam
(bram4prhs)
secondary
instruction bus
processor
(prhspA)
dataCache
(Cache)
primary
data bus
dataBusCtrl
(BusCtrl)
processor
data bus
nIRQ
processor
instruction bus
instrBusCtrl
(BusCtrl)
primary
instruction bus
instrCache
(Cache)
instruction SD bus
data SD bus
reconfigurable module
staticSys
(base)
reconf PRHS SD Bus
ReconfArbiter
(prhsSDbusArbiter)
<option reconf>
<option base>
PRHS SD Bus
3.1 Research Systems
Figure 3.2: PRHS System Overview[5]
19
systemArbiter
(prhsSDbusArbiter)
static PRHS SD Bus
3 Example Reconfigurable Systems
3.1.3 Dreams
Dreams is not directly a RS, but it is a tool to build runtime reconfigurable systems.
It processes Xilinx Description Language (XDL) files, created by the Xilinx tools, and
provides a partial reconfiguration design flow on top of PR. While the Xilinx design flow
enforces the developer to run the synthesis, place, and route process for every RM and
every implementation of a module, the dreams design flow does not. It supports easy
relocation of RMs just synthesised, placed and routed one time.
XDL is a human readable language for describing netlists. It is compatible with the
ncd netlist file format and Xilinx provides programs for easy conversion.
Dreams is developed by Otera et al.[26]. It tries to improve the Xilinx design flow in
four different ways:
1. Module relocation in any compatible region in the device
2. Independent design of modules and the static system
3. Hiding low level details from the designer
4. Enhanced module portability among different reconfigurable devices
Its design flow targets reconfigurable architectures build out of disjoint rectangular regions.
The system architecture, enforced by the Dreams tool, is divided into Virtual Regions
(VRs) and Virtual Architectures (VAs). A VA combines FPGA resources for use as a RM
or static module. The VA describes the full system, including static and reconfigurable
parts and how they are interconnected using the FPGAs interconnect. The VRs and
the VA description are provided by Extensible Markup Language (XML) files by the
developer.
Dreams is a very interesting tool. Very large reconfigurable systems suffer in the Xilinx
PR design flow from very long placement and routing times. Dreams could significantly
reduce these times and improve the development time of such systems.
3.2 Commercial Systems
3.2.1 Convey HC1
One commercially available RS is the Convey HC1[6]. It combines four Xilinx Virtex5
FPGAs with an Intel Xeon processor through the X86 co-processor interface. Figure 3.3
gives an overview of this architecture. The system contains two memories, one connected
to the processor cores and another one connected to the four FPGAs. Both are accessible
from the processor and the FPGA side. Hardware ensures cache-coherency between
them. The memory on the FPGA side is specially partitioned to support concurrent
access to different memory banks from different FPGAs to increase the overall memory
access speed.
20
3.2 Commercial Systems
"Commodity" Intel Server
Intel 5138
Dual Core
Processor
Application
Engine Hub
Intel 5400
MCH
Intel IO
Subsystem
Convey FPGA-based coprocessor
Memory
Intel x86-64 Server
x86-64 Linux
Application Engines
Virtex5 Virtex5 Virtex5 Virtex5
FPGA FPGA FPGA FPGA
Memory
FPGA based
Shared cache-coherent memory
Figure 3.3: Overview of the Convey HC1 architecture[6]
Communication with the FPGAs is implemented using the coprocessor interface of Intel processors. Software running on the Xeon processor can trigger hardware operations
running on one of the FPGAs by issuing special coprocessor instructions and writing
data, required for the operation, to special memory regions. Programs can change configurations in idle times of the FPGA. The Xilinx PR design flow is basically available,
but is not supported yet by Convey, enforcing long reconfiguration latencies and very
fixed FPGA designs. Still, the Convey HC1 is a very interesting platform for high performance computing. In high performance computing the accelerator hardware seldom
changes and one important factor is memory access. Memory access is very fast on the
HC1 because of their special memory layout.
3.2.2 Intel Stellarton
Another commercial RS is the Intel Stellarton processor and FPGA SoC [14]. It combines
a standard Intel Atom Stellarton processor core with an Altera FPGA on the same chip,
but not on the same die. Figure 3.6 gives an overview of its hardware structure. The SoC
contains all the standard components of the Intel Atom processor, like DDR interface,
graphics adaptor/accelerator, audio component and Peripheral Component Interconnect
Express (PCIe) bus interface.
The Altera FPGA[27] ist connected to the processor by this PCIe bus. Through this
bus the FPGA is configurable and application data can be exchanged between FPGA
and processor. The main purpose of this RS was to improve the performance of host
programs by accelerator hardware.
The production of the system has been discontinued, but a new approach by Intel
seems to be on its way, according to Diane Bryant[28]. According to her, Intel is working
on combining their Xeon server processors with FPGAs to improve the performance of
internet cloud services, such as Ebay, Amazon, etc..
21
3 Example Reconfigurable Systems
Intel Atom Processor
DDR2 IF
Graphics
SPI, SMBus
Legacy
GPIO
Intel Audio
PCIe Gen 1
PCIe
PCIe
FPGA
Figure 3.4: Structure of an Intel Stellarton Processor, combined with an Altera FPGA
3.2.3 Xilinx Zynq Architecture
Zynq[7] is a very new hybrid hardware system produced by Xilinx. It features a dual
ARM Cortex A9 processor core connected to many peripherals and a FPGA through an
Advanced Microcontroller Bus Architecture (AMBA) bus. Figure 3.5 presents the overall
system structure. Processor core and FPGA share the same chip, but not the same die,
like the Intel Stellarton processor. It supports a lot of static hardware components to
connect to common embedded devices, such as Inter-Integrated Circuit (I2C) controller,
Serial Peripheral Interface (SPI) controller, or Controller Area Network (CAN) controller. The FPGA is connected to the processor through an AMBA bus. The AMBA
bus is a very common bus in embedded devices. It supports general-purpose ports and
high performance ports from the processor to the FPGA. The FPGA has access to high
speed serial I/O transceivers going offchip and to the AMBA bus. All other features of
a Virtex7 FPGA are also supported, including PR.
The Zynq architecture is an interesting system for embedded hardware developers.
On the ARM processor cores a standard embedded OS can run and the FPGA can
improve calculation performance for special applications, like audio and video editing,
radio transmissions, and cryptographic algorithms.
22
3.2 Commercial Systems
Figure 3.5: Structure of the Xilinx Zynq architecture[7]
23
3 Example Reconfigurable Systems
3.3 COPACOBANA and RIVYERA
FPGA
2
FPGA
3
FPGA
4
FPGA
5
FPGA
1
FPGA
0
FPGA
7
FPGA
6
Host Interface
Svc
FPGA
Backplane
Figure 3.6: COPACOBANA and RIVYERA interconnection overview
The Copacobana and Revyera systems developed by SciEngines hybrid hardware systems optimized for cryptoanalysis and scientific computing.
Both systems consist of many interconnected FPGAs working together to solve a
problem. The host system is connected through 10Gbit Ethernet cards, 4Gb Fibre
Channel cards, or InfiniBand. The Copacobana can try the complete 56-Bit DES key
space within 12.8 days. The Revyera is the advancement of the Copacobana.
24
4 Interconnection Networks
Modern hardware design often requires the development of some interconnected components. Different interconnection network schemes are available today. If more tightly
coupled systems are required these components are combined on a single chip. Such a
tightly connected system is called SoC .
Figure 4.1 displays an example mobile phone system, with three different interconnection schemes. This system can be developed as a multi-chip system or as a SoC .
The shown mobile phone system consist of a CPU , memory, a DSP, a keypad, and a
Memory
RF
Keypad
Memory
RF
Keypad
Memory
RF
Switch
Switch
CPU
DSP
a) bus connection
CPU
DSP
b) P2P connection
CPU
Keypad
DSP
c) noc connection
Figure 4.1: Example mobile phone SystemOnChip (SoC)
radio transceiver. These components interact in different ways to get the mobile phone
running. The interactions can be implemented using different kinds of interconnection
networks. Figure 4.1 shows three possible topologies. In a) all components are connected
to a bus with the typical bus communication restrictions, such as exclusive bus access for
a single component and poor scaleability. In b) all components are directly connected
with all components they are interacting with. This network topology supports a very
flexible communication, but requires many interconnection links. The last displayed
topology is a packet switched network build out of the components and switches. This
kind of networks are called NOCs. NOCs are very similar to the communication infrastructure of inter computer networks, such as Local Area Networks (LANs) or Wide Area
Networks (WANs).
Much more different network architectures exist. To distinguish these networks and to
easily highlight their differences and performance properties a classification is necessary.
In this work part of the classification done by Schwederski et al. [21] is used, which is
based on research done by Feng[22].
25
4 Interconnection Networks
The base for a classification is usually a mathematical representation of the entity of
interest. In this case finite graphs are a good representation of interconnection networks.
The edges of the graph model the interconnection links and the nodes are the Processing
Elements (PEs), connected to the network. A PE is the component doing calculations
and using the network for communication purposes, such as a processor core, a DSP, or
some other kind of device controller.
This chapter is organised as follows: Section 4.1 describes the OSI . It is an industrial
standardising model for different communication protocols, simplifying their development.
The distinguishing characteristics of NOCs are explained and described from Section 4.2 to Section 4.8.
4.1 Open Systems Interconnection Model
Communication systems mostly consist of more than just two communication partners.
These communication partners can be under the control of the same developer or company, but this is not always the case. Data is transmitted over multiple nodes to reach
its destination and the underlying infrastructure can differ from node to node because of
different responsibilities. The transmitted data can be divided into a header, enclosing
source and destination addresses, payload size, quality of service information, and the
actual payload. The position of the header data and the payload has to be defined to
help every developer and manufacturer to produce compatible hardware. Later in this
work, protocols will be described, using the terminology of the OSI .
The International Telecommunication Union (ITU) and the International Organization for Standardization (ISO)[29] developed the OSI model to simplify the definition
of communication protocols. Seven functional distinct layers divide the communication
process. Figure 4.2 gives a graphical representation of these layers and the expected
protocol flow. The flow starts at either side of the network stack. If some data shall
be transmitted to another communication partner, the communication usually starts
at the application layer. Every layer processes the data and passes it down to the next
layer until reaching the physical layer. Each layer adds header information or transforms
the data according the network requirements. Sometimes control messages are created,
passed down the layers and send to their corresponding layer at the next communication
partner, to create a virtual connection between them.
The physical layer transmits the data through some kind of medium (wire, air, fibre
optic, . . . ) to the next node. After the transmission, the data passes the layers up.
If the node is just an intermediate one the data moves up to the network layer, where
it gets formatted for the transmission to the next node. If the data has arrived at its
destination, it gets passed up to the application layer.
In the following sections each of the seven layers is briefly described. More information
about the OSI model can be found in [29] or [30].
26
4.1 Open Systems Interconnection Model
Network Stack
Data
Protocol
Network Stack
application layer
application layer
presentation layer
presentation layer
session layer
session layer
transport layer
transport layer
network layer
network layer
data link layer
data link layer
physical layer
physical transmission of bits
Data
physical layer
Figure 4.2: graphical representation of the ISO/OSI Model
4.1.1 Application Layer
The application layer is the interface between a program or application running on a PE
and the communication infrastructure. It defines the interaction between two or more
communication partners, such as how to request some data or how to send the partner
data. For this interaction the application does not require any information about the
underlying network, the destination address is enough. Very common application layer
protocols used in the Internet are Hypertext Transfer Protocol (HTTP) and Post Office
Protocol Version 3 (POP3).
4.1.2 Presentation Layer
Data can be presented in multiple forms. For example some processor cores use big
endian or little endian byte encoding for working with structures bigger than one byte.
A higher level form ist the language encoding with ISO codes or UTF-8.
To allow the application layer to just use the passed data, the presentation layer
converts and transforms the data to the required representation.
The presentation layer can be used to implement point to point encryption too.
4.1.3 Session Layer
A communication session consists of the connection establishment, the transmission and
reception of multiple data and the detachment of the connection.
27
4 Interconnection Networks
Not every communication requires the establishment of a session. For example in a
network, where every information is broadcasted to every network member, it is not possible to establish a session. Sessions are always necessary, if multiple requests, belonging
to the same context, have to be transmitted.
The Session layer is responsible for connection establishment before the data of session
is transmitted and the tear down of the connection, when the session is finished.
4.1.4 Transport Layer
The transport layer defines at least one protocol or method, on how to transmit data to
another node in the network. This protocol can be connection less or connection oriented.
In a connection oriented protocol the connection establishment, data transmission and
the connection tear down has to be described. In this case the data transmission ensures
the reception of the data at the communication endpoint. For a connection less protocol
only the data transmission is required, without acknowledgement of receipt.
Well known transport layer protocols are the User Datagram Protocol (UDP) and the
Transmission Control Protocol (TCP).
4.1.5 Network Layer
Networks can be build with different topologies. How data is transmitted from a start
node to a destination node depends on this topology because it specifies if nodes are
directly connected, or how many intermidate nodes exist between them. The network
layer is responsible for defining routing and path finding algorithms for transmitting data
beween the network nodes. If necessary, it creats an abstraction layer over all network
nodes with its own distinct address range. In this logical view the nodes seem to be
directly connected. Common network layer protocols are IPv4 and IPv6.
4.1.6 Data Link Layer
The data-link layer is responsible, that the entities forming the network, can communicate securely with each other. If the underlying physical connection is not very robust,
the data link layer ensures error-detection through some kind of checksum and, if possible, error-correction. This is achieved by requesting a retransmission of the data from
the data-link layer on the other communication side or by recalculating lost data. If the
physical transmission has a maximum number of bits, it can transmit at one time the
data-link layer arranges the framing of the data.
4.1.7 Physical Layer
The physical layer of the OSI transmits data from one network entity to another one.
The structure of the data is not important at this layer because just bits are transferred.
The physical layer describes the electrical and physical specification for transmitting one
bit. It determines the modulation of the data and which transfer medium is used. It
offers the data-link layer an interface to transmit x bits of data.
28
4.2 Topology
4.2 Topology
The physical layer of the OSI describes how bits are transferred between network entities.
These entities are organised in a specific structure, such as a star, ring or cube. This
structure, represented by a finite graph, is called the network topology. Because it is
obviously a distinctive feature of a network and influencing the performance significantly,
the following topology classification properties are very important. For all the properties
we assume that the network N has n interconnected PEs numbered pe0 . . . pen−1 .
4.2.1 Interconnection Type
The network entities can be interconnected in different ways when forming a network.
The following values describe the interconnection type in this classification:
static
If entities are statically linked, the link cannot be changed during runtime of the network.
The network has to be recreated to change them. Such a network ist called static network.
An example static network is a ring.
dynamic
A dynamically linked network is called dynamic network. It allows the alteration of
connection links between two components during runtime of the network. A good example of a dynamic network is a bus. The address signals of a bus allow the selection
of different communication partners.
direct
In a directly connected network (direct network) each network entity or PE is connected
to at least one other network entity through some fixed links. No other component is
PE
PE
PE
PE
SW
PE
PE
PE
PE
SW
PE
a) direct net
PE
b) indirect net
Figure 4.3: direct and indirect interconnection networks
29
4 Interconnection Networks
required to communicate with other entities. If data needs to be transferred through
intermediate nodes to its destination, the network entities have to provide this functionality on their own. Figure 4.3 a) shows a direct network of five PEs.
indirect
The opposite of a directly connected network is an indirectly coupled one (indirect network). In this type of networks the entities or PEs are connected through some kind
of network infrastructure, which is responsible for data routing, for example a network
switch or hub. The individual entities only possess uni- or bidirectional links to one
network infrastructure component. Such a network is displayed in Figure 4.3 b).
combination
The properties mentioned above rule out each other in pairs. Overall, a static network
cannot be a dynamic network at the same time. The same holds for direct and indirect
networks. There could be special cases, in which this is not the case, but these will not
be considered in this work.
The combination of the pairs are possible. For example a static and indirect network
is a very common case, looking at the interconnection of computer systems. Another
example is a bus, which can be implemented as a dynamic and direct network.
4.2.2 Grade and Regularity
It is always important to know, how many data can be transferred between PEs in
parallel and if this value is the same between all network entities. These values always
differ between different network topologies.
The grade Γ of a PE is defined as:
Γ(pei ) = number of connections of pei f or i ∈ 0 . . . n − 1
The grade measures the density of interconnection links in a network. We define:
δ(N ) = M inimum(Γ(pei )) ∀i ∈ 0 . . . n − 1
and
∆(N ) = M aximum(Γ(pei )) ∀i ∈ 0 . . . n − 1
The term regularity describes, if the structure of the interconnection links is the same
at all PEs of the network:
N is r-regular if δ(N ) = ∆(N ) = r
This implies:
Γ(pei ) = r ∀i ∈ 0 . . . n − 1
This characteristic is only important for direct networks because usually the PEs of
an indirect network just have one bidirectional connection to an infrastructure element.
30
4.2 Topology
4.2.3 Diameter
The network diameter quantifies the maximum distance between network nodes. The
classification by Schwederski et al. [21] defines the diameter for direct networks only. But
the diameter is such an important characteristic that in this work it is also extended to
indirect networks.
direct networks
Let N be a direct network with n nodes numbered 0, . . . , n − 1. Let da,b be the minimum
number of steps (connection links) between the nodes a and b. The diameter is defined:
Φ(N ) = max(da,b ), ∀a, b ∈ N, 0 ≤ a < n, 0 ≤ b < n
indirect networks
An indirectly coupled network consists of at least one level of coupling elements. These
coupling elements take over the routing functions of the nodes in a direct network. Every
node or PE in an indirect network has one connection to a coupling element. Let N be
an indirect network with s level of coupling elements and n nodes numbered 0, . . . , n − 1.
Let a, b ∈ N and a connected to coupling element X and b connected to coupling element
Y . Let dC
x,y the minimum number of steps (connection links) between X and Y . Now,
let da,b = dC
X,Y + 2 be the minimum number of steps between the nodes a and b. The
diameter is defined again:
Φ(N ) = max(da,b ), ∀a, b ∈ N, 0 ≤ a < n, 0 ≤ b < n
Dimension of the diameter
Sometimes it is not possible to calculate an exact number for the diameter. Still, it is
important to know the dimension the diameter can take on. For this case we define:
Φ(N ) = Θ(f (n))
for a function f and a parameter n. The meaning of this is, that the diameter of a
network depends on a function f and the parameter n of this function.
4.2.4 Bisection Width
We still have our network N with n PEs. The bisection width partitions the network
into two halves and measures the minimum interconnection links between these halves.
The segmentation into M1 and M2 is done according to these equations:
M1 = bn/2c P Es
and
M2 = dn/2e P Es
31
4 Interconnection Networks
.
The bisection width Wk (M1 , M2 ) of a single segmentation is given by:
Wk (M1 , M2 ) = minimum number of interconnection links between M1 and M2
The bisection with of the whole network N is given by:
W (N ) = M inimum(Wk (M1 , M2 )) ∀ segementations M1 , M2
The bisection width is an important metric for the performance of networks because
many algorithms require that the nodes of one halve of the network communicate with
corresponding nodes in the other halve.
4.2.5 Symmetry
The symmetry of a network simplifies the writing of distributed algorithms. A network
can be asymmetric, node-symmetric or link-symmetric. In a node-symmetric network,
the network structure looks the same from every PE. This symmetry allows the deployment of the same algorithm to all PEs in the network. In a link-symmetric network the
network is identical, looking from every link. This may simplify the scalability of the
network. If the network is asymmetric, every PE has to be considered individually.
4.2.6 Scalability
After deployment of a network, whether it be between some small hardware components
or between computer systems, the scalability is always very important. If a SoC is
extended for a new revision, new components are added to the system and have to be
integrated into the NOC . If the NOC is not scalable, integrating the component will be
a very big problem, possibly leading to a complete redesign of the system.
A network is scalable if:
1. the topology mostly stays the same, if a new component is integrated. In the best
case all existing connections and nodes are fixed and only the new connections for
the PE have to be appended.
2. the communication performance does not suffer by increasing the number of nodes.
3. the increase of the network complexity is limited.
4.3 Interface Structure
The interface is the bridge between one PE and the network. Its structure determines
the communication between PEs. The requirements for such an interface differ in direct
and indirect networks, but the implementation varies within each network type too.
32
4.4 Operating Mode
4.3.1 Direct Networks
The requirements for direct networks are very versatile because the PEs are directly
responsible for the network access. The interfaces in a direct network have to implement
the wire selection, path finding and data forwarding algorithms. These tasks require lots
of hardware, such as multiplexers for selecting the correct path or buffers to store data
before forwarding it.
4.3.2 Indirect Networks
Interfaces in indirect networks are normally very simple because one PE has only one
bidirectional connection to the network. The interface does not require any complex
multiplexer or router functionality. The hardware just transmits and receives data from
a network infrastructure component. At most a small buffer is necessary.
4.4 Operating Mode
The operating mode of networks refers to the connection establishment and the data
transmission of PEs. Both task can be executed synchronously or asynchronously.
4.4.1 Synchronous Connection Establishment
In this operating mode all PEs are establishing their network connection or communication link at the same time. The exact point of time is synchronised by a global clock
signal.
4.4.2 Synchronous Data Transmission
Data designated for transmission can be divided into individual bits or groups of bits,
such as one byte. These groups are transmitted at the appearance of one global clock
tick. So every network interface transmits its own group of bits at the same time.
4.4.3 Asynchronous Connection Establishment
The PEs need not wait for a specific global clock signal or a number of clock ticks to be
allowed to establish communication. It can happen at any clock tick.
4.4.4 Asynchronous Data Transmission
As with synchronous data transmission, the data can be divided into groups of bits. But
in this case, handshake protocols are used, to ensure the transmission of the data. For
example, the sender is only allowed to put the next group of bits onto the transmission
line, if the receiver has acknowledged the reception of the current group.
33
4 Interconnection Networks
4.4.5 Mixed Mode
All these operating modes can be mixed. A very common mixture is the combination
of asynchronous connection establishment with synchronous data transmission. This
combination allows a very simple transmission hardware because it is controlled by
a central clock signal and a flexible communication pattern because PEs can start a
communication at any time.
4.5 Communication Flexibility
Communication within a network can follow different strategies or patterns. A network
can support all of them or just one. The level of communication flexibility is dependend
on how many and which of the strategies the network supports.
4.5.1 Broadcast
The simplest communication strategy in a network is a broadcast. If a PE wants to
transmit data to another PE, it sends the data to all the other PEs. The receiving PE
recognises the data for himself and can use it. All the other PEs just drop the data. This
is not very flexible or efficient, but does not require a very complex routing algorithm.
4.5.2 Unicast
The unicast communication strategy is the opposite of a broadcast. PEs address exactly
one other PE and the data is only transmitted to this one. No other element in the
network receives the data.
4.5.3 Multicast
A broadcast is often too expensive because the data is transmitted to all PEs in the
network. To improve the flexibility and the cost of the communication pattern the
multicast strategy was developed. It allows the addressing of a subset of all the PEs in
the network. This improves the flexibility much because the network can be divided into
different groups, which can be address individually.
4.5.4 Mixed
All the strategies mentioned above can be combined within a network. For example in
TCP/IP networks you find all of them. But it is also very common, to combine the
unicast and multicast strategy. This combination increases the flexibility of a network
a lot because you can on the one hand address individual PEs and on the other hand
groups of them.
34
4.6 Control Strategy
4.6 Control Strategy
As mentioned earlier in this chapter, networks can be divided into static and dynamic
ones. If a network is dynamic, the control over the dynamic links can be organised in
different ways. This property is inapplicable for static networks because their links are
fixed.
4.6.1 Centralised Control
In a centralised controlled dynamic network a single control unit is responsible for the
selection of the source and destination of the interconnecting links.
This often requires much hardware because the central control unit needs to control
all components in the network, which can switch the connection links. The configuration
of all the links requires a very complex algorithm too. This strategy is best used in an
environment with very few changes.
But in such a network all connected resources can be configured at once and in cooperation with all the others to achieve the best possible interconnection pattern for the
current work.
4.6.2 Decentralised Control
The opposite of a central controlled network is a decentral controlled network. In this
kind of network many network components exist, which organise the connection links
for a small part of the network. These networks are called self-routing networks too
because if data is transmitted through the network, the decentralised components need
to decide how to switch the connection links and route the data without a view onto the
complete network.
This leads to a network without the optimal interconnection pattern, but is very
flexible and adaptable to different communication requirements on the fly.
4.7 Transfer Mode and Data Transport
Two network transfer modes are common today. In a circuit switched network a complete
link is established between two communicating PEs through every intermediate PE. This
can be done in a centralised or decentralised manner, explained earlier in this chapter.
In a packet switched network, data is grouped by packets. These packets contain the
source and destination address in a header section. In a direct network the PEs and in
an indirect network some infrastructure component forwards these packets according to
an algorithm, until received by its destination.
Detached from the actual hardware implementation, communication within a network
can be connection oriented or connection less. In a connection oriented communication the source always establishes a connection with the destination first, which stays
active for the whole communication. In packet switched networks this is always done
using some kind of virtual connection, where the destination is told when a connection
35
4 Interconnection Networks
starts and when it ends. In a circuit switched network a “real” connection can be established between both communication partners. In a connection less communication
the source just sends data packets into the network. These packets travel along the
cheapest interconnection links. No preferred communication way exists. Connection
less communication is only possible in a packet switched network.
According to the underlying hardware and the connection type, different routing algorithms have to be used, to get the data to its destination.
Store and Forward Routing This kind of routing is used in packet switched networks
to forward packets between network entities in a whole. The packet is transmitted
completely and is saved at the next component into a buffer. If the link to the next
component is ready, it is forwarded again. This routing mechanism is very simple, but
very hardware consuming. Much buffer space is required at each network component.
Wormhole Routing Wormhole Routing uses the advantages of packet and circuit
switched networks in environments, where the data transport is done over intermediate nodes. The data packets are divided into smaller pieces, called flits. The first flit
contains the connection information. Each level in the network, builds up the connection link if it receives the first flit. After this connection establishment there is a
complete link between source and destination and all flits of the packet are somewhere
in between. The last flit tears down the link. The advantage of this strategy is a
reduced latency between transmission and reception of a message. The disadvantage
is the possibility of deadlocks because one transfer locks multiple network components
at a time.
Virtual Cut Through Routing This routing schema is related to the wormhole routing. It is used in packet switched networks. In each level of the network there is
enough buffer space available for saving the complete data packet. Packets are transferred into the network and each level forwards it to the next level. If the way to the
next level is blocked, the packet is detained. If the way is free the forwarding of the
packet is immediately started, without waiting for the reception of the full packet.
Like in wormhole routing, a packet may distribute through multiple levels of the network. A long blocking of the network is prevented by buffering packets, if the way is
blocked.
4.8 Conflict Resolution
Networks can differ in the mode, they dissolve conflicts. The two main network conflicts
are output conflicts and internal conflicts.
output conflict These conflicts occur, if messages are transferred from multiple sources
to one destination, but only one connection can be established between source and destination. This conflict cannot be dissolved by changing the network topology because
the destination can only support one connection.
36
4.8 Conflict Resolution
internal conflict Even, if all messages are addressed to different destinations, an internal conflict can occur. In networks consisting of consecutively interconnected links,
a message can travel partly the same way as another message, leading to a conflict because only one message can pass this link at a time. This conflict is traffic induced and
can be dissolved by changing the network topology, for example, creating redundant
links to bridge the part of the network with the bottleneck.
To dissolve these conflicts, without changing the topology if possible, three resolution
methods are available.
Block Method If a message cannot be routed to the destination or the next network
level, the message has to wait at the source. This requires the source component to
have enough buffer space for at least one message.
Drop Method In this case, a non routable message is discarded. No additional attempt to deliver the message will be made, the data is lost.
modified Drop Method A small change can reduce the impact of the drop method.
In this mode packets are only dropped, if buffer space is exhausted or the network has
been blocked a certain duration.
37
5 Example Network On Chip Architectures
Many NOCs exist today. This chapter will introduce the reader to some simple NOCs,
which will later be used to compare to the NOCs developed in this work. For information
about more complex NOCs the reader can use Schwederski et al. [21] or Bjerregaard et
al. [31]. The last are giving a very interesting survey of research in NOC architectures.
5.1 Ring
Ring networks are one of the simplest networks available. Its communication can be
unidirectional or bidirectional. Figure 5.1 shows an example bidirectional ring with
0
1
2
3
7
6
5
4
Figure 5.1: Example Ring network with eight nodes
eight communication elements. Every one of these can transmit a message at the same
moment. A bidirectional ring can transmit data in both directions, a unidirectional ring
just in one. The structure of the ring allows very fast local communication between two
neighbouring nodes, but only a slow global communication. Table 5.1 presents some
classification properties for a bidirectional ring with N nodes. A ring is a static network,
Type
Grade
Regularity
Diameter
Symmetry
Scalability
Bisektion-Width
direct-static
Γ=2
2 − regular
ΦRIN G = bN/2c
node & link
WRIN G = 2
Table 5.1: Classification of a bidirectional ring
39
5 Example Network On Chip Architectures
because the communication partners are always fixed. In this case, the communication
infrastructure is located in the PEs and is therefore a direct network. But by moving
the communication infrastructure outside the PE, it can become an indirect one. The
grade and the regularity explain, that the nodes in the network have a maximum of two
communication links and that all of them have the same number. The diameter is bN/2c
in a bidirectional ring and N − 1 in an unidirectional ring.
The following are examples of a specific implementation of the ring architecture:
• Token-Ring[32]
• Register Insertion Rings[33]
• Scalable Coherent Interface (SCI) Ring[34]
5.2 Bus
A bus is a very simple and flexible network architecture. It is mostly used for accessing
components in a memory like manner. The interconnection links are divided into data-,
address and control signals and are shared by all network nodes. Figure 5.2 shows an
example bus with four interconnected components. Because the network is using a shared
8 bit Data signal
4 bit Address Signal
2 Bit Control Signal
Address : 0000
Address : 0001
Address : 0010
Address : 0011
Node 0
Node 1
Node 2
Node 3
Figure 5.2: Example bus with 4 nodes
medium for data transfer the maximum number of components is limited. The access to
the medium is implemented in a time-multiplexed way. The data transmission between
network nodes is more complicated than in a ring. First the access to the interconnection
links, the bus arbitration, has to be organised. This can be implemented in a centralised
or decentralised style. The true data transmission can be synchronous or asynchronous.
The destination of a transmission is selected by the value of the address signals. This
explicit address selection allows a direct communication between two components. One
of the components, the initiator of the communication is controlling the communication
and the other, the responder, is answering the request.
40
5.2 Bus
5.2.1 Bus-Arbitration
The bus arbitration decides, which component is allowed access to the interconnecting
links. This is necessary because a bus uses a shared medium and only one active component is allowed on the bus. The access decision can be made by a central control
unit. Each network component has a bus-request and a bus-grant line to this central
control unit. This unit selects the one bus component with the highest priority out of
all components requesting bus access.
If no central control unit is available, or not practical, the access decision can be made
decentral. An example decentral decision making patter is daisy chaining the network
components. With daisy chaining the bus-request signals are combined with the and
operation in pairs. The resulting request line is combined with the next bus component
in the same way. This physically ordered network nodes determines the access priority.
Another decentralised access method is Carrier Sense - Multiple Access / Collision
Detection (CSMA/CD). This method requires the network node to listen on the interconnection lines all the time. If the lines are not in use, the node can start a transmission
of its own. If multiple components try to access the bus at the same time, the nodes can
recognise this, by comparing the data on the bus with the data they transmit. If such
a collision is detected the components stop transmitting and wait for a random time,
before trying again.
These arbitration methods are not fixed to busses. They can be used for any other
decentralised network too.
5.2.2 Data Transmission Protocol
While the bus arbitration is responsible for allowing access to the bus, protocols organise
the data transfer between two bus nodes. Two different kind of protocols are common.
synchronous protocol
The synchronous protocol requires the data transmission concurrently to a global clock
signal. This clock rate determines the transmission speed for all network components.
Because of the synchronicity to a global clock signal this transmission scheme is very
fast and very simple. The communication partners save the applied signal values at the
rising edge of a clock tick.
asynchronous protocol
The asynchronous transmission protocol is more complex compared to the synchronous
one. The transmission is not controlled by a central clock signal, but by four additional
handshake signals. These signals are working in pairs assigned to the communication
partners. Each pair consist of a request-start signal applied by the sender of a message
and a request-done signal applied by the receiver of the message. The data signal can
only be updated if the request-done signal has been applied. This handshaking allows
components to have different transmission speeds, but reduces the overall transfer speed.
41
5 Example Network On Chip Architectures
5.2.3 Classification
Table 5.2 displays the classification of the described simple bus. The interconnection type
Type
Grade
Regularity
Diameter
Symmetry
Scalability
Bisektion-Width
direct-dynamic
ΓBU S = 1
1 − regular
ΦBU S = 1
node & link
no
WBU S = 1
Table 5.2: Classification of a bus
is direct-dynamic because the bus participants are responsible for the data transmission
and the bus arbitration and the connections between two components can be changed
through the address signals. All network nodes have only one connection to the bus and,
if connected, the transmission is done without any intermediate nodes. The grade of the
bus is one and it is 1-regular. The diameter is one. The bus is not scaleable because
the medium access gets more and more difficult the more components want to share it.
If another component shall be added to an existing bus, the central arbiter has to be
extended or the priority in a decentral controlled network has to be changed.
5.3 Grid
Grid networks arrange their nodes in a two or more dimensional array. Every node is
connected to its neighbours and supports direct communication with them. Figure 5.3
displays two different kinds of grid networks. The difference between both types is, that
the mesh network is irregular because the edge and border nodes have a different grade
than the other nodes. The Illiac network is based on the famous illiac computer[35]. The
simplest versions of grid networks are 2-dimensional. The nodes are arranged in rows
and columns with the same number of nodes, as displayed in Figure 5.3. In the more
general case the number of nodes per row or column can be different and the dimension
can be more than two.
The transmission of messages between nodes is much more complex than in a ring or
bus. Multiple shortest paths exist between the source and the destination of a message.
The selection of the path is a hard decision, but will not be part of this introduction.
Closed grids often have the ability to reconfigure the interconnection of their border
and edge nodes to adapt to required communication patterns.
The disadvantage of grid networks is there long diameter. This disadvantage can be
reduced by adding more dimensions to the network, but increasing the complexity of the
path finding algorithm.
Table 5.3 and Table 5.4 show the classification for the grid networks presented in Figure 5.3. The interconnection type of both networks is direct-static because the nodes
42
5.4 Tree
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(a) open grid (mesh)
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(b) Illiac network
Figure 5.3: Example grid networks with 16 nodes
are responsible for all the communication, including path finding, and there is no possibility of reconfiguring the interconnection network. The mesh network is irregular, as
Type
Grade
Regularity
Diameter
Symmetry
Scalability
Bisectionwidth
direct-static
ΓM ESH = undef
irregular
ΦM ESH = 6
unsymmetrical
no
WM ESH = 2
Table 5.3: Classification of an open grid (mesh) with 4 × 4 nodes
mentioned earlier because of the different interconnection links at the border nodes. The
longest path between two nodes is six intermediate transfers. Because of the irregularity,
the network is unsymmetrical. In contrast to the mesh network, the illiac network is
4-regular. Every node has connections to exactly four neighbours. This reduces the
network diameter to three.
5.4 Tree
A tree is an undirected coherent azyclic graph. It has exactly one root node spreading
into multiple child nodes. A node without any children is a leaf node. The depth T of
a tree is the maximum number of edges from a leaf node to the root. Many distributed
algorithms prefer this topology because the structure of the algorithm can easily be
43
5 Example Network On Chip Architectures
Type
Grade
Regularity
Diameter
Symmetry
Scalability
Bisectionwidth
direct-static
ΓILLIAC = 4
4 − regular
ΦILLIAC = 3
node-symmetric
no
WILLIAC = 4
Table 5.4: Classification of a closed grid (illiac) with 4 × 4 nodes
mapped on the nodes in a tree network, such as “Divide and Conquer” algorithms[36].
Trees can be classified by the number of children per node too. If we name a tree, the
maximum number of children per node is given at the beginning. For example a 2-tree
is a binary tree with a maximum of two children per node and a 4-tree is a quadruple
tree with a maximum of four children per node. Figure 5.4 shows exactly these two
tree networks. A tree is called complete, if all nodes have all their edges assigned,
except the leafs. Table 5.5 shows the classification of a simple tree. It is a direct-static
Type
Grade
Regularity
Diameter
Symmetry
Scalability
Bisection-Width
direct-static
ΓT REE = undef
irregular
ΦT REE = 2T
asymmetric
yes
WT REE = 1
Table 5.5: Classification of a tree
network because their communication infrastructure is located within each node and
the communication partners cannot be changed. The number of connection on the leaf
nodes differ from all the other nodes, leading to an irregular and asymmetric network.
The diameter is calculated through the maximum path between nodes in the network.
The longest path in a tree is from the leaf of the left side of the root node to a leaf node
on the right side leading to a diameter of 2T. The Bisection-Width is determined by the
path through the root node.
5.5 Crossbar
Crossbar networks are indirect networks build out of network nodes and the network
infrastructure component, the crossbar. The crossbar interconnects all output signals of
the nodes with all their input nodes. Through the crossbar configuration the nodes can
be interconnected with each other, supporting all possible permutations.
44
5.5 Crossbar
0
1
2
3
7
5
4
9
8
10
6
11
13
12
14
(a) binary tree of depth 3
0
1
5
6
3
2
7
8
9
10
11
12
13
14
4
15
16
17
18
19
20
(b) quadruple tree of depth 2
Figure 5.4: Example tree networks
Figure 5.5 displays an example crossbar with four nodes. The boxes within the crossbar
are configuration elements. By turning them on a connection between the horizontal and
the vertical signal lines can be established. Only one active element per vertical signal
line is allowed, resulting in a conflict otherwise. Through activating multiple elements
per horizontal signal line, broadcast and multicast communication can be implemented.
Table 5.6 shows the classification of a n-node crossbar. A crossbar is an indirect-static
network because the nodes are not responsible for the routing of data and the nodes are
always connected to the crossbar. Each node has only one bidrectional connection to
the crossbar, resulting in a 1-regular system. The diameter of the network is calculated
according to the definition of the diameter for indirect networks in Section 4.2.3. Because
the crossbar network has only one level of interconnection infrastructure, the diameter
is two. A crossbar is a very flexible and fast interconnection method, but requires many
hardware resources to implement. n × n configuration elements are required to build the
crossbar. These configuration elements are often multiplexer. A 4 × 4 crossbar requires
four 4–1 multiplexer. This does not scale for larger crossbars. Even adding another
node is not that simple because you have to replace all n-1 multiplexers with (n+1)-1
45
5 Example Network On Chip Architectures
0
1
2
3
0
1
2
3
Figure 5.5: Example 4×4 crossbar networks
Type
Grade
Regularity
Diameter
Symmetry
Scalability
Bisectionwidth
indirect-static
ΓCROSSBAR = 1
1 − regular
ΦCROSSBAR = 2
node-symmetric
no
WCROSSBAR = n
Table 5.6: Classification of a crossbar network with n nodes
multiplexers.
46
6 Granularity Problem of Runtime
Reconfigurable Design Flow
Dynamic- or runtime reconfiguration is becoming more and more important in FPGA
design. It enables the designer to fit more hardware onto the chip than is physically
available by swapping components in and out as required by the system. Another possible use is the optimisation of the configured hardware to runtime requirements. The
communication stack within a network switch can be optimised for the negotiated speed
(10/100Mbit/1/10Gbit) or CPU cores can be improved by configuring special accelerator units. Section 2.5 gives a more detailed introduction to the Xilinx PR design flow,
which is used in this thesis.
The general steps to create a partial runtime reconfigurable system with multiple
reconfiguration components are:
1. decide for the number of reconfigurable modules
2. decide the size of each reconfigurable module
3. decide where to place each reconfigurable module
4. decide which interconnection network to use
5. decribe the static system and the interconnection network in a HDL
6. describe every reconfigurable system for placing into the reconfigurable modules
in a HDL
7. synthesise, place and route the static system
8. synthesise, place and route each reconfigurable system for every reconfigurable
module
Because of the fixed decision about the size, number and placement of RMs during the
first three steps of the design flow, the repositioning or resizing is impossible during
runtime.
In many designs this fixed decision is not a problem. For example in a one or two
RMs design with nearly same sized reconfigurable components it is rarely necessary to
resize or reposition the RMs during runtime.
But in designs with more RMs and many, different sized components the fixed decision
limits the flexibility and creates much slack space in RMs.
47
6 Granularity Problem of Runtime Reconfigurable Design Flow
The granularity problem describes the difficulty to choose the right size and number of
RMs in such a system.
If different sized components shall fit into all available RMs, most developers will
choose the maximum component size as the RM size. This will reduce the number of
configurable smaller components, but allows the configuration of all components into any
RM . Figure 6.1 displays an example granularity problem. The FPGA is divided into four
FPGA
reconf Module
reconf Module
Small CPU
(PIC/ATmega)
CPU
(ARM,MIPS)
reconf Module
reconf Module
FSM
Figure 6.1: Example granularity problem
same sized RMs. ARM and MIPS processor cores, PIC and ATmega microcontrollers,
FSMs and Boolean functions are available as components to configure into these modules.
The displayed system tries to solve a problem by using one ARM/MIPS processor core,
one PIC/ATmega microcontroller and one FSM . The components easily fit onto the
FPGA, but only the ARM/MIPS core exploits all the available space in its RM . The
unused space in the other RMs is wasted because it is linked to the modules and cannot
be configured independently.
The space on the FPGA could be exploited much more efficient, if the placement of
the components would be more flexible and the RM boundaries would not exist. This
would possibly allow more than one system doing computations on the FPGA.
48
6.1 Solutions
6.1 Solutions
The following sections describe two different solutions to reduce the effects of the granularity problem to runtime reconfigurable system design. They use different floorplaning
strategies to achieve this goal.
6.1.1 Grouping Solution
A very simple solution, reducing the consequences of the granularity problem, is having
groups of different sized RMs on the FPGA. Figure 6.2 presents an example system
using the grouping solution. The FPGA is partitioned into three regions, each holding
f(B)
f(B)
f(B)
f(B)
FSM
CPU Core
FSM
f(B)
f(B)
f(B)
f(B)
FSM
CPU Core
f(B)
f(B)
FSM
f(B)
f(B)
Figure 6.2: Example grouping solution configuration
different sized RMs. In this case the sizes are chosen to fit two CPU sized, four medium
sized FSMs and 12 small sized Boolean function components onto the FPGA. The RMs
of each group feature the same signal interface and are interconnected staticly.
Advantages
Because of the same signal interface and interconnection network within each group of
RMs, converting a design from the standard PR design flow to the grouping solution
is very easy. Every reconfigurable component can be reused without adaptions. The
static system requires some small changes to the interconnection and management part
to operate the groups concurrently. In comparison to the standard flow the overhead is
very small.
49
6 Granularity Problem of Runtime Reconfigurable Design Flow
The computable outline of the design is another advantage of this solution. An algorithm with the parameters number of groups, size of the RM in each group and number
of RMs per group can compute the outline of the RMs groups very fast. This greatly
speeds up and simplifies the whole development process.
Disadvantages
Despite the advantages of this system, the design process requires a decision about the
size, number and position of the RMs, leading to the granularity problem at some size
of the overall system. A change in these parameters requires a full re-synthesizing of
the whole system. After configuring the FPGA with the new partitioning all running
computation have been stopped and their current state is lost. Within the regions the
design is still bounded by the maximum number of RMs in it.
The structure of each RM is regular, but the full system is not. The groups of RMs
enforce their own signalling interface. This prevents components to be configured in RMs
outside their RM group. This even prevents the development of components fitting into
all RMs.
6.1.2 Granularity Solution
The granularity solution partitions the FPGA into many same sized RMs. These RMs
have the same signal interface to the interconnection network. They can be combined to
form larger components by interconnecting them through the interconnection network.
The size of one RM is the only parameter required at design time. During runtime
configuration files belonging to a reconfigurable component can be placed into any RM
on the FPGA. These RMs are not required to be positioned next to each other. Figure 6.3
presents an example partitioning. The FPGA is devided into 7 × 6 RMs. The example
design contains two different sized CPU cores at the moment, a FSM and two different
sized Boolean functions. Still, there is more space available for additional components.
Advantages
It is obvious, that the placement of the reconfigurable components in this solution is very
flexible and does not create as much slack space as the standard PR design flow. The
number of RMs is only bounded by the size of the FPGA. At design time the number
of reconfigurable components fitting onto the FPGA is unknown. All the RMs can be
used for one or two CPUs or for many small Boolean functions. Any component, which
is dividable into multiple smaller sub components, is possible.
The regular structure of the whole system enables each entity, configurable into a RM ,
to look at the system the same way from any RM . This promotes the simple development
of components. The same interface for all the RM supports this simple development too.
50
6.2 Granularity Problem and Hybrid Hardware
CPU1 Core
FSM
f1(B)
f2(B)
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
RM
CPU2 Core
Figure 6.3: Example granularity solution configuration
Disadvantages
The disadvantages of the granularity solution starts with the decomposition of the reconfigurable components into smaller components fitting into one RM . The decomposition
and the different signal interface prevent the re-usage of the reconfigurable components of
a standard PR design. The decomposition is also not a simple task. It is not guaranteed
that all components can be divided into smaller parts.
Another disadvantage is the interconnection network. It has to span the whole FPGA
connecting all RMs. This requires additional FPGA space. The number of RMs and the
used interconnection/management space has to be balanced to get a good design. The
path delay of the interconnection lines between the RMs can be another problem. They
could not be fast enough to support the connection speeds, required within reconfigurable
components.
6.2 Granularity Problem and Hybrid Hardware
The granularity problem occur on any runtime RS where multiple different sized reconfigurable components shall be used. In the scenario of coupling processor cores and recon-
51
6 Granularity Problem of Runtime Reconfigurable Design Flow
figurable hardware, introduced in Section 1.2, this is also the case. The standard methods
to couple processors with reconfigurable hardware are datapath-, bus-accelerator or multicore reconfiguration. Datapath accelerators commonly use a very small area, while bus
accelerator are medium sized, and multicore reconfiguration requires much space on a
FPGA. Figure 6.4 gives a graphical overview of this space requirements. Each pattern
CPU Core
CPU Core
reconf
reconf
reconf
(a) Datapath Accelerator
CPU Core
(b) Bus Accelerator
CPU Core
CPU Core
(c) multicore reconfiguration
Figure 6.4: Area requirements of the different usage patterns
has its unique type of use. Datapath accelerators are used to increase the instruction
flexibility. It allows the appending of different instructions to the processors ISA. Bus
accelerators are the most common usage pattern at the moment. It allows the configuration of different kind of accelerators into the reconfigurable area and connect these
through a bus to the processor. With the multicore reconfiguration pattern the reconfigurable area is used to instantiate multiple processor cores. These cores can run on
their own or form a multicore system. In this work, all these connection methods shall
be combined into one system, leading to the granularity problem.
52
7 Multicore Reconfiguration Platform
Description
After introducing the basics of reconfiguration and NOCs and describing the granularity
problem of runtime reconfigurable design flows, this chapter presents the main part of
this thesis, the Multicore Reconfiguration Platform (MRP).
The MRP is a hybrid hardware system. In contrast to the existing research- and
commercially available systems, the MRP uses the Xilinx PR design flow to implement
its reconfigurability. The use of dynamic- or runtime reconfiguration helps to solve the
granularity problem by using the granularity solution presented in Section 6.1.2. This
granularity solution enables the MRP to support multiple different sized reconfigurable
components, without taking component sizes into account at the initial floorplaning
stage.
Inter FPGA connections are another new feature of the MRP. A packet switched network, called OCSN , can interconnect multiple FPGAs. Figure 7.1 displays an overview
OCSN
to host
system
OCSN
support platform
OCSN
reconfiguration platform
reconfiguration platform
softcore
Figure 7.1: Example MRP System Overview
of an example MRP system, consisting of three FPGAs. By adding more FPGAs to
the OCSN , the reconfiguration area of the MRP is easily extensible. This extensibility
helps, if applications require more reconfiguration space during runtime.
As Figure 7.1 shows, a MRP system is divided into support- and reconfiguration
platforms. The first provides access to system resources through the OCSN , like BRAM ,
DDR RAM , General Purpose Input Output (GPIO), USB controllers, and mass storage
and the second provides many RMs. This setup allows a maximum of reconfigurable
space, while still supporting additional hardware resources. The number of platforms is
only limited by the addressing space of the OCSN .
The platforms and the host system, such as a server or workstation, are also connected
through the OCSN . To support high speed connection between the MRP and its host
system, the connection is implemented using 1Gbit Ethernet as its physical layer. As an
alternative to a full featured host system, the support platform can provide a soft-core
SoC connected to the OCSN . This SoC can control the MRP and distribute hardware
applications.
53
7 Multicore Reconfiguration Platform Description
Except for the Convey HC1, most of the other hybrid systems, suffer from direct
operating system support. The MRP is directly integrated in the Linux OS. The device
drivers provide a network API to communicate with all OCSN components and to
configure the RMs.
The remainder of this chapter introduces the OCSN in Section 7.1, the support platform in Section 7.2 and the reconfiguration platform in Section 7.3. Furthermore, it
describes the OS support in Section 7.4 and the design flow for working with the MRP
in Section 7.5.
7.1 On Chip Switching Network
The requirements for a NOC , which interconnects the support and reconfiguration platform are diverse.
First, the NOC has to support the interconnection of multiple FPGAs with different
physical connections and variable signal lengths. FPGA boards can be interconnected
by Ethernet, CAN, simple wires using some kind of serial protocol like SPI or RS232, or
other interconnection schemes.
Scaleability is another very important requirement. Adding another platform or component should not lead to the reconstruction of the whole NOC .
The network should support broadcast and unicast connections because information
has to be distributed through the network very fast and certain components require a
lot of data transfer.
Because many components participate in this network, the hardware requirements for
connecting one component to the network should be as small as possible.
Most networks cannot satisfy all these requirements. For example, a bus is not
scaleable and does not permit multiple components to communicate concurrently. But
a static indirect packet switched network fulfils all the requirements.
The OCSN is a static indirect packet switched network. It supports the interconnection of multiple FPGA boards by using bridges through different physical connection
and different protocols. It is limited scaleable by adding components to network switches
and by increasing their number. Broadcast and unicast packet transmission is supported
by routing all broadcast packets to all outgoing connections of a network switch. The
usage of network switches for most of the network organisation reduces the interface size
in the network devices.
The OCSN uses the OSI model to divide functionality into layers to ease the adaption
to different hardware and software, and standardise the interconnection points. Therefore, the OCSN description starts with the definition of the physical layer, walking up to
the application layer. All these layers are implemented in hardware, without the usage
of additional micro-controllers, to save configuration space onto the FPGAs.
54
7.1 On Chip Switching Network
Clock
Bit-width
Speed
200MHz
200MHz
200MHz
100MHz
100MHz
100MHz
8
12
26
8
12
26
1.267Gbit/s
2.235Gbit/s
4.843Gbit/s
0.634Gbit/s
1.118Gbit/s
2.421Gbit/s
Table 7.1: variable speed of the OCSN
7.1.1 Physical Layer
At the physical layer always two network interfaces are connected to each other. Each
interface transmits a full OCSN frame of 39bytes in one transfer. Using such large
frames in one transfer often leads to transmission errors. In this case the network spans
mostly over one FPGA, reducing the error probability approximately to zero. The simple
approach of transmitting a full frame at once, reduces the area usage for each network
interface. In this case, the advantage of reduced area usage outweighs the disadvantage.
The 39bytes of each transfer are divided into a configurable number of bits, transmitted
concurrently at each clock tick. The allowed bit-widths are {x : 312 mod x = 0}bits
because 39bytes × 8bits = 312bits. Full duplex mode, by using dedicated transmission
and reception lines, is also supported. The typical clock rates at this layer are 100MHz
and 200MHz, resulting in the maximum network speed displayed in Table 7.1.
7.1.2 Data-link Layer
The data-link layer of the OCSN is responsible for detecting and identifying the remote
device. To prevent overflowing of the receive buffer, it implements hardware flow control
between the two directly coupled interfaces. If the receive buffer of one interface hits
an upper bound, it signals the other interface to stop transmitting. If, after stopping
the transmission, a bottom bound is reached, the interface request the continuing of the
transmission.
The data-link layer of the OCSN does not provide any error detection/correction
methods because the error probability, if configured onto a FPGA, is very small. But
this feature can easily be added, if required.
7.1.3 Network Layer
The network layer defines everything required for routing OCSN frames through the
network to the correct destination. Figure 7.2 displays the structure of one OCSN frame.
It is build out of source and destination addresses, additional source and destination port
fields, a frame type field and the payload of the frame. For the network layer the 16bit
source and destination addresses are of interest.
55
7 Multicore Reconfiguration Platform Description
16bit
16bit
SRC Address
SRC Port
DST Address
DST Port
Frame Type
DATA
31 byte DATA
Figure 7.2: OCSN frame description
The network infrastructure components of the OCSN are OCSN switches. They
are organised in a tee structure to reduce routing complexity. A grid network would
be faster and more flexible because different routes between two components exist, but
would increase the routing overhead. A big disadvantage of a tree is its bisection width of
one. Regardless of how you divide a network organised in a tree structure, the maximum
connection number between two halves is always one. This leads to a big bottleneck, if
components from one side have to communicate intensely with components on the other
side. This disadvantage can be reduced by interconnecting all switches of one level in
a ring, but this is not applicable in this network because the tree spans over multiple
FPGAs. Furthermore, most of the components in this network will communicate with
their direct neighbours. This communication will usually be taking place over one switch.
All of these OSI layers have to be implemented in hardware, without the usage of
additional micro-controllers. To generate this hardware with a very small area footprint,
the advantages of simple routing outweighs the bandwidth disadvantages in this case.
An example OCSN , consisting out of OCSN switches only, is displayed in Figure 7.3.
The example network is organised as a binary tree, but more outgoing edges per OCSN
Root Switch: 1.0.0.0.0.0
OCSN
Switch
1.1.0.0.0.0
1.2.0.0.0.0
OCSN
Switch
1.1.1.0.0.0
OCSN
Switch
OCSN
Switch
1.1.2.0.0.0
OCSN
Switch
1.2.1.0.0.0
OCSN
Switch
1.2.2.0.0.0
OCSN
Switch
Figure 7.3: OCSN network structure overview
switch are also possible. Switches are only specialised network devices. This flexible
design allows replacing switches by any other component and using switch ports for
switches and devices without reconfiguring the system.
To get routing working in this tree network, the 16bit network addresses have to
56
7.1 On Chip Switching Network
respond to the tree structure of the network. Therefore, the addresses are divided into
the six parts shown in Figure 7.4. To support broadcast and unicast in the network,
the first bit (r) of an address selects broadcast or unicast mode. The remaining bits are
partitioned into five groups of three bits each. In the figure these groups correspond to
the coloured characters a1 a2 a3 . . . e1 e2 e3 . If the value of r is one, the address 1.0.0.0.0.0
identifies the root node of the tree. Looking at Figure 7.3 the root node is the top switch.
The switches generate the tree, while devices are leaves of the tree. Switches always own
an address starting with a zero at their group.
The second group consisting of the bits a1 a2 a3 and addresses all tree components
directly connected to the root switch. They are the second level components of the tree.
The bits b1 b2 b3 identify all components directly connected to switches of the second level,
like shown in Figure 7.3. This makeup goes on until group e1 e2 e3 , which identifies all
components connected to switches of the fifth level. The six level cannot hold any more
switches because there are no addresses left. This limitation can easily be removed by
extending the address space.
This addressing scheme enables all switches in the network to identify their uplink
and downlink ports by checking the addresses of all connected devices. One advantages
of a tree is the existence of only one route from one component to another. This eases
the routing decision, to only identify the uplink of a switch and the calculation, to which
of the connected switches the address belongs. Frames with a broadcast destination are
transmitted to all ports, except the incoming one.
Because all frames in the OCSN have the same size of 39bytes, no framing or padding
is required.
7.1.4 Transport Layer
To access the interconnected components, the network has to transport frames. In
this scenario, the network is required to transmit configuration data, request status
information, or access some kind of RAM . Because of the small error probability and
the fact, that frames cannot be reordered while transmitted through the network, no
connection oriented transport protocol is required. Instead, a connection less, UDP like,
protocol is responsible for the data transport within the OCSN . The protocol features
8bit source and destination ports (Figure 7.2) and a 8bit frame-type field to identify
the service at the destination. The maximum payload length is 31bytes. The frames
are routed from source to destination using the network layer. If a service is listening
at the destination on the destination port, the payload is processed and an answer is
r a 1 a 2 a 3 b 1 b 2 b 3 c 1 c 2 c 3 d 1 d 2 d 3 e 1 e2 e 3
r=0
r=1
broadcast address
unicast address
Figure 7.4: OCSN address structure
57
7 Multicore Reconfiguration Platform Description
transmitted.
7.1.5 Session Layer
The session layer starts and tears down connections in a connection oriented protocol.
Because the transport layer of the OCSN only specifies a connection less protocol the
session layer is not required.
7.1.6 Presentation Layer
Like in the TCP/IP suit the presentation layer is merged into the application layer. The
main purpose of the merged presentation layer is, to ensure all information in an OCSN
frame is in big endian byte order.
7.1.7 Application Layer
Accessing components in the OCSN requires different application layer protocols. The
main distinction between these protocols is, if they require an answer frame or not.
Usually it is enough to send one frame to a destination device to set registers or to
request information. Still, the application layer defines the structure of the payload.
Looking at the communication with an OCSN connected RAM the access mode (read,
write), the access size (byte, word, double-word, . . . ) and the data for a write operation
has to be encoded into the payload of an OCSN frame. In case of a frame send to a
BRAM connected to the OCSN the first byte of the payload identifies the operation
to perform. Bytes eight to five encode the RAM address and bytes twelve downto nine
encode the dataword. In the answer frame from the BRAM the first byte signals what
kind of answer this frame holds and bytes 8 downto 5 encodes the first data word. If
more datawords are requested from the BRAM they are encoded after the first word.
7.2 Support Platform
The support platform combines all system resources of one FPGA board, including
off-board extensions, into one platform. Using a distinct FPGA board, reduces the
space requirements for the reconfigurable platforms because no additional hardware is
required. The reconfigurable platforms can concentrate on providing reconfigurability.
Figure 7.5 presents an example support platform with all supported FPGA resources.
These resources are connected through an interface to the OCSN . At the moment the
following components are supported:
• GPIO
• BRAM
• DDR RAM
58
7.2 Support Platform
Uplink
Ethernet/
Uart
FPGA - support plattform
OCSN
Switch
BRAM
GPIO
DDR RAM
Softcore SoC
Downlink
Ethernet/
Uart
Figure 7.5: Example support platform
In addition an uplink and downlink device exist, to connect a host system or other
platforms to this FPGA. Two alternative devices are available. One UART and one
Ethernet based bridge.
7.2.1 GPIO
For querying and inserting debug data out of/into the OCSN , the GPIO component
is very helpful. Outgoing GPIO signals can be set to certain values and drive, for
example Light Emitting Diodes (LEDs). By sending status request frames the settings
of a connected Dual Inline Package (DIP) switch can be checked using the pulling
approach. It would be possible to implement interrupts by sending an OCSN frame out,
if a DIP switch changes its status.
59
7 Multicore Reconfiguration Platform Description
7.2.2 BRAM
The FPGA used for the support platform has BRAM resources left, after using much
of it for buffers in the OCSN . These BRAM can be combined to form a BRAM OCSN
device. It allows access to the RAM from the OCSN with different access modes. The
following access modes are supported at the moment:
READ{length} read a data word of length bytes
WRITE{length} write a data word of length bytes
SWAP{length} atomic swap of a data word of length bytes
The supported number of bytes for length are: 4,8,16,32,64 and 128 bytes. For initialising
the RAM , two commands are available:
INIT ZERO initialise the RAM from a given start address and some 4 byte words
with “00000000000000000000000000000000”
INIT ONE initialise the RAM from a given start address and some 4 byte words with
“11111111111111111111111111111111”
The following commands are planed as future extensions to support concurrent access
to the RAM from different OCSN devices.
LOCK lock the device for use by the source of this command only
UNLOCK unlock the device for use by everyone, only possible from same device,
which send the lock command or some master device to prevent a deadlock
LOCK RANGE lock part of the address space for use by the source of this command
only
UNLOCK RANGE unlock a previously locked address space
LIST LOCKS list all enforced locks
7.2.3 DDR3 RAM
This component uses the same interface and access model like the BRAM device. The
difference is the used DDR RAM controller, instead of a BRAM one.
7.2.4 UART Bridge
To get a very simple option to connect additional off-board components and additional
FPGA boards to a support or reconfiguration platform, the UART bridge is used. It is
build out of one OCSN interface and a UART . The interface receives an OCSN frame and
the UART just transmits every byte of the frame through RS232 to the remote device.
In the other direction the UART receives exactly 39bytes and transmits these bytes as a
60
7.3 Reconfiguration Platform
frame through the OCSN interface. The bridge sends end of frame synchronisation bytes
to the remote bridge through the UART by using the parity bit to distinguish between
data and control bytes. This interconnection method is very slow (max 2Mbps), but is
stable and requires only three wires.
7.2.5 Ethernet Bridge
For connecting the OCSN to the host system and other FPGA boards, a high speed
connection is essential. The Ethernet bridge encapsulates an OCSN frame into an Ethernet frame and transmit it over a 1Gbit Ethernet network device. Crossover cables and
switches between the Ethernet bridge and the remote station are supported. The maximum bandwidth of 1Gbit Ethernet cannot be achieved because the Ethernet packets
transmitted and received are always 60bytes long. The maximum Ethernet payload size
is 1500 bytes. Still, a maximum throughput of 465Mbit/s is possible.
7.2.6 Soft-core SoC
A soft-core SoC consist of at least one processor core and additional components for
storing program code and data input/output. Soft-core SoCs, provided by the support
platform, can replace a full featured host system, such as a server or workstation, for controlling the MRP. The MRP supports only the PRHS SoC , written by Eckert[5], at the
moment. The integration into the OCSN has been done by Grebenjuk[37]. The PRHS
runs Linux as its OS. Access to the OCSN is implemented through a communicator
device and a network card device driver for Linux.
7.3 Reconfiguration Platform
The reconfiguration platform provides the reconfigurable resources for the MRP. The
prototype uses Xilinx Virtex5 FPGAs at the moment and requires the availability of
the Xilinx PR design flow. Figure 7.6 presents an example reconfiguration platform. It
is divided into a reconfiguration module, supplying many same sized RMs, and the infrastructure connecting host systems or additional FPGAs. The reconfiguration module
encapsulates all the structure required for runtime reconfiguration into one component.
This encapsulation simplifies the instantiation of the runtime reconfiguration on different
FPGAs because the FPGA specific requirements can be implemented without interfering
with the runtime reconfigurable implementation.
The connection infrastructure is basically the same as on the reconfiguration platform.
Bridges to and from the OCSN are used to provide the interconnection functionality.
The reconfiguration module uses the granularity solution, presented in Section 6.1.2,
to reduce the effects of the granularity problem, while partitioning the FPGA into many
RMs. These RMs are called Configurable Entity Blocks (CEBs) because they can be configured with entities of the Register Transfer Layer (RTL), not only of the logical layer.
These CEBs are interconnected by a CSN for combining them into larger components.
61
7 Multicore Reconfiguration Platform Description
Uplink
Ethernet/
Uart
FPGA - reconfiguration plattform
reconfiguration Module
OCSN
Switch
ICAP
OCSN
Switch
CEB
IOB
CEB
CEB
SW
CEB
SW
OCSN
Switch
CEB
CEB
CEB
CEB
CEB
CEB
CEB
CEB
IOB
SW
SW
CEB
CEB
CEB
CEB
Downlink
Ethernet/
Uart
Figure 7.6: Example reconfiguration platform
The Internal Configuration Access Port (ICAP) of Xilinx Virtex{5,6,7} devices is
used, to configure the CEBs through the OCSN .
7.3.1 ICAP
Like the resources of the support platform, the reconfiguration platform has one important device, the ICAP. The ICAP configures the CEBs of the reconfiguration module
during runtime of the system. It is connected to the OCSN and accepts up to seven
32bit configuration words in one OCSN frame. These configuration words are written
to the ICAP with 50MHz at the moment, but can be increased up to 100MHz. The
maximum configuration speed is 381 MB/s at 100MHz.
7.3.2 CEB
The CEB is the main building block of the MRP. It is the one component providing
the reconfigurability of the system. Different components can be configured into a CEB.
62
7.3 Reconfiguration Platform
All the CEBs in the reconfiguration module have the same size and provide the same
static signal interface to the interconnection network. Figure 7.7 describes this signal
odID
8
ocDebug
icEnabled
idSingle
odSingle
idBus
odBus
icReset
4
4
ic25MhzClk
CEB
128
128
ic50MhzClk
ic100MhzClk
ic200MhzClk
Figure 7.7: CEB Signal Interface
interface. Every CEB has four different clock inputs reducing the hardware complexity
in a CEB for additional clock dividers. A clock divider is only necessary, if none of the
provided clock rates (25, 50, 100 and 200MHz) fit into the design. The clock signals are
generated on the FPGA for system wide usage. They are not distributed through the
CSN , but use the dedicated clock lines of the FPGA.
After the configuration of a component into a CEB, the state of the component is
unknown. For setting it in a known state, a reset signal (scReset) exist.
During the configuration process the values of the input/output signals can fluctuate.
To prevent the flooding of the whole MRP with invalid data, the components have to
be disabled during the configuration process. All components, developed to fit into a
CEB, have to react to the active high scEnable signal. It also starts a component at a
specific moment in time.
The MRP requires a way to evaluate, which CEB is already configured and what kind
of component is using the CEB. This is achieved through the eight bit odID signal. If the
CEB is empty, the signal is not driven by any component. The signal is configured at the
FPGA level as a pull up, returning 0xFF at an empty state. Each possible component
has been assigned a distinct id, which has to be put onto odID.
A debugging signal (scDebug) is also available, to connect one CEB to off-chip components, such as a LED or a logic analyser.
For receiving and transmitting data from and into a CEB, two kinds of input/output
signals exist. The first are simple single lines. idSingle provides four single lines input
and odSingle four single lines output in this example. The second kind of input/output
signals are signal clusters. Signal clusters are useful for designing busses or register
input/output. In this example the CEB supports four 32bit signal clusters (idBus,
odBus). The number of signals is chosen as small as possible to be easily routable onto
the FPGA and as large enough to support a wide range of components.
63
7 Multicore Reconfiguration Platform Description
7.3.3 CSN
To interconnect CEBs to the reconfiguration module, different requirements exist. The
signal interface requires at the moment four single signals and four clustered signals
for each CEB, but this requirement can change in the future. Because of the possible
requirement change, the interconnection network should be scalable in the number of
signal lines it can support.
Most larger components of the RTL synchronise each other by using a global clock
signal. To support such larger components on the MRP, low latency signal lines are
very important because the largest latency is responsible for the maximum achievable
clock-rate. In this case the clock signals are using dedicated signal lines of the FPGA
to connect to each CEB. Still, the data has to travel from one CEB to another. The
latency of these transmissions selects the usable clock rates.
The network may be divided into fast localised signals, tightly interconnecting a small
group of CEBs and long distance signals interconnecting these groups. The last are
allowed to have a slightly higher latency.
To form larger components one CEB possibly has to connect to multiple different
other CEBs or to connect to one other CEB multiple times. These connection schemes
require the network to support multipath links and multiple routes from a source to a
destination.
These requirements suggest a dynamic indirect circuit switched network. Through
the dynamic part, connections can easily be changed, rerouted and even shared among
CEBs. The indirect aspect reduces the space requirements for the network interface
hardware, like done with the OCSN . To use single signals and signals clusters as the
main kind of communication a circuit switched network is best suited because the signal
lines can just be routed to their destination. It is not necessary to sample the signals
and transmit the results in a multibyte frame. This reduces the latency for all signals.
The following sections describe this network in more detail, by using the OSI model.
Physical Layer
The physical layer of the CSN uses the communication infrastructure of the underlying FPGA. The FPGA provides a low latency network connecting all the CLBs. This
network is best suited to work as the physical layer for the CEBs interconnection because it has the same base requirements. Additional parameters, enforced by the used
application, has to be implemented inside each CEB.
Data-link Layer
The data-link layer is not necessary in this network, because no actual data is transmitted, just a direct connection established. If an application is using the CSN to transmit
data, it has to implement its own data-link layer.
64
7.3 Reconfiguration Platform
Network Layer
The CSN is an indirect network build out of crossbar switches. A crossbar interconnects
all inputs to its outputs (see Section 5.5). Only one permutation of these connections
is possible at one moment. In this network each input has a corresponding output and
two different kinds of inputs/outputs exist. The first kind are single signals and the
other clustered signals. The inputs/outputs are divided between the connected CEBs
and extension devices. The extension device inputs/outputs are used to interconnect
the switches. In Figure 7.6 four CEBs are connected to one switch and the switches
are interconnected in a grid (see Section 5.3). Because the connections at the end of
each row and column of the grid are open, this connection scheme is called a mesh. The
number of inputs/outputs of a switch can be easily increased to support more CEBs,
more extension devices or more inputs/outputs for each of them by the cost of a higher
area usage on the FPGA.
Figure 7.8 gives a more detailed view of the connection interface of one switch in
the example network. The inputs/outputs are numbered from 31 downto 0. Signals
ocRO
CEB0
ocRO
11 .. 8
31 .. 28
15 .. 12
19 .. 16
CEB1
27 .. 24
CSN Switch
3 .. 0
CEB3
7 .. 4
23 .. 20
CEB2
ocRO
ocRO
Figure 7.8: CSN group
31 downto 28, 27 downto 24, 23 downto 20 and 19 downto 16 are always reserved for
connecting CEBs. All switches are programmable through the OCSN by sending configuration frames for single or clustered signals to it. Through status requests the MRP
controller can read the current crossbar configuration and what kind of components are
configured into a CEB. Through the programming interface the MRP controlling device
65
7 Multicore Reconfiguration Platform Description
can select which input is connected to which output. By programming different switches
all CEBs connected to all the switches can be interconnected.
Transport, Session, Presentation and Application Layer
All OSI layers above the network layer have to be implemented by the application/component using the CSN for interconnections. The CSN does not provide any interface
for a transport protocol or any application layer protocols.
7.3.4 IOB
Like any digital hardware component, the interconnected CEBs have to communicate
with the outside world at some point in time. Parameters and results of computations
have to be fed into and out of the components. This is done by using IOBs. The IOBs
of the MRP are very similar to the IOBs of FPGAs. On FPGAs they are connected
to the pins of the chip housing. They allow components on the FPGA to communicate
with off-chip components.
The MRP supports two different kinds of IOBs. Both are connected to the extension
ports of a CSN switch and to an OCSN switch.
CSN2OCSNsimple bridge The CSN 2OCSN simple bridge maps the signals of the
extension ports to internal registers. These registers can be read and written using
OCSN network frames. By reading the registers, the values of the connected signal
lines can be identified and the outgoing signals can be set to special values. This
component is very useful for debugging the CSN because the value of every signal can
be read and written. The disadvantage of this bridge is, that it cannot react to fast
changing signals because the OCSN requires multiple clock ticks to transmit a frame.
CSN2OCSNbridge The CSN 2OCSN bridge is the preferred IOB for the MRP. It
maps a normal OCSN IF to the CSN physical layer. A component in a CEB is
connected to the CSN 2OCSN bridge with two 32bit busses input and two 32bit busses
output. One input and output bus is responsible for data transfer and the other
for control lines. The CEB can create a full OCSN frame by providing data at its
output bus and selecting, through the control lines, which part of the frame to set.
For example, to set the source and destination addresses of the OCSN frame, the
component writes the source address to the upper 16bit of the data bus and the
destination address to the lower 16bit. Then it selects the input zero, through the
control lines. Reading an OCSN frame works very similar. The component selects,
which part of the frame to read, through the control lines, and can read the data
through the data input bus. All control signals from the OCSN IF component are
mapped to the control bus, within the CSN . All data signals are selectable through
the control signals and can be read and written through the data bus.
66
7.4 Operating System Support
7.4 Operating System Support
A system like the MRP requires some kind of controlling master component, such as a
workstation, server or soft-core SoC . But providing the hardware is not enough. The OS
of these systems has to support the MRP and the concept of reconfigurable hardware.
For the host systems of the MRP, Linux was chosen as the OS because its source code is
available as open-source and it is running on most platforms, including the PRHS SoC .
Linux is a UNIX-like operating system[38]. It is build out of the Linux OS kernel and
additional applications. Device drivers extend the Linux kernel and integrate additional
hardware and network protocols.
There are two interfaces from the MRP to the host system. An Ethernet bridge
(Section 8.2.4) and a native memory mapped OCSN device for the PRHS SoC . Both
have to be integrated into the Linux kernel for accessing the OCSN and the components
configured into a CEBs.
The OS support is partitioned into the implementation of the network driver and
the device driver. The network driver is responsible for the socket interface. It is the
interface to the Linux user space. Programmers get access to the OCSN using socket
programming. The device driver is responsible for copying the OCSN frames from and
to the hardware. For the PRHS memory mapped io device, the driver copies data to
and from memory addresses to/from internal kernel structures. For the Ethernet bridge
this is not necessary because device drivers for Ethernet cards are already available in
the kernel.
The implementation of the OS support is described in Chapter 9. Accessing the
components connected to the OCSN is done through user space programs at the moment.
The following programs are available:
lsocsn list all devices connected to the OCSN
ocsn-ping check if a device is alive and get its round trip time
ocsn-switch-status get the status of an OCSN switch (free/used ports, connected
devices, received/transmitted frames)
ocsn-file2icap copy a partial bitfile to a ICAP for configuration
ocsn-file2ram copy a file to a RAM device
ocsn-ram2file copy part of a RAM to a file
ocsn-print-ram print part of a RAM to the output
ocsn-init-ram initialise part of a RAM to a given value
lscebs list all CEBs connected to all CSN switches
ocsn-csn-status get the status of a CSN switch (connected CEBs, if active or not)
ocsn-csn-get-routing print the routing information of one CSN switch
67
7 Multicore Reconfiguration Platform Description
ocsn-csn-set-single set the routing for a single signal
ocsn-csb-set-bus set the routing for a clustered signal
ocsn-csn-ceb-on activate a configured CEB
ocsn-csn-ceb-off deactivate a configured CEB
7.5 Design Flow
At this moment the MRP only supports the Xilinx PR design flow (see Section 2.5). It
is the base for the MRP design flow. It can be divided into a full design flow, in which
all components including the static MRP system are synthesised, placed and routed,
and a reduced design flow, in which only the CEB components are synthesised, placed
and routed. Figure 7.9 presents the eight step full design flow. The first five steps are
1. create/adapt the static MRP system in Very High Speed Integrated Circuits
HDL (VHDL)
2. add VHDL entities for using as CEB components
3. create the netlist for the static system, using CEBs as black-boxes
4. place and route the static system
5. create bitfile for the whole system with CEBs as black-boxes
6. create netlists for all the CEB components
7. place and route the static system including one CEB component at a time
8. create bitfiles for the whole system, including one CEB component and partial
bitfiles for each CEB component and every CEB
Figure 7.9: full MRP design flow
required to create the bitfile for a MRP system without any CEB components. After
configuring the created bitfile, all CEBs are empty. The last three steps create bitfiles
for all the CEB components. The normal Xilinx PR design flow would create all these
components successively. The MRP design flow uses a parallel approach.
The reduced design flow displayed in Figure 7.10 assumes that the MRP static system
is already created and running on a FPGA. The already available placement and routing
information is used in the reduced design flow to place and route the components for
the CEBs only.
68
7.5 Design Flow
1. add VHDL entities for using as CEB components
2. create netlists for all the CEB components
3. place and route the static system including one CEB component at a time
4. create bitfiles for the whole system, including one CEB component and partial
bitfiles for each CEB component and every CEB
Figure 7.10: reduced MRP design flow
69
8 Implementation of the Multicore
Reconfiguration Platform
After introducing the MRP in the previous chapter, this chapter describes the implementation of the important MRP components.
8.1 General Components
In the design process of digital circuits some components are reused constantly. These
components provide common functionality, like FIFO queues, small BRAM , decoders,
and encoders. The general components, used throughout the MRP, are described in the
following subsections.
8.1.1 Clock Domain Crossing
In larger digital circuit designs multiple different clock domains may exist. One clock
domain contains all the digital components running at one specific clock rate, for example
25Mhz. Often data has to cross the boundary of two clock domains, differing in speed
and polarity. Special actions are required to ensure the integrity of the data. The
problem of clock domain crossing is described, among others, by Biddappa[39].
idData
gen_data_size
ocDataAvail
icWe
icRe
CDC_fifoIF
ocFull
icWriteClk
odData
icReadClk
icReset
gen_data_size
Figure 8.1: Clock Domain Crossing (CDC) component interface
The CDC fifoIF, displayed in Figure 8.1, is a simple component for clock domain
crossing, using the recommended solution of Biddappa. It uses a FIFO queue interface
to connect to other components, allowing it to replace FIFO queues, which are often used
to cross domain boundaries. The usage of FIFO queues is often very expensive because
71
8 Implementation of the Multicore Reconfiguration Platform
they are build out of scarce resources, BRAM . Not all designs/components require a
queue at the domain boundaries. In these cases the CDC fifoIF can replace them.
Internally a handshake protocol and multiple register stages move the data to the
other clock domain. The handshake protocol drives the external FIFO signals ocFull and
ocDataAvail. The sizes of the data signals (idData, odData) are configurable through a
generic, a VHDL parameter for configuring individual components.
8.1.2 Dual Port Block RAM
Dual ported BRAM provides two interfaces to a RAM . Through the one interface a component writes data into it while another component reads data from the RAM through
the second interface. This is often useful while working on data streams or building FIFO
queues. Figure 8.2 describes the signal interface of the dual port block ram component.
icClkA
icClkB
icWeA
icEnB
dual_port_block_r
am
icEnA
idAddrA
idDataA
gen_addr_size
gen_addr_size
gen_width
idAddrB
odDataB
gen_width
Figure 8.2: Dual Port Block RAM interface
The Xilinx tools identify the component as an onboard BRAM , if available onto the
used FPGA. Otherwise, the RAM is build out of logic cells. This kind of implementation allows the flexible usage of this component on any FPGA, without the requirement
of available BRAM .
8.1.3 FiFo Queue Component
FIFO queues are a very common component on the RTL. The queues can be used to
cross clock boundaries (like described earlier in this section) or to implement buffers.
They are often implemented using BRAM components, available on certain FPGAs.
This requires the creation of special Intellectual Property (IP) cores for each FPGA.
The SimpleFifo, shown in Figure 8.3, implements a simple Fifo using the techniques
described by Cummings[40]. It uses the dual port block ram component for saving the
queue objects. To prevent buffer over- and underflow the write and read addresses are
converted into gray code and propagted through two register stages into the other clock
domain. In Gray code the code distance between two adjacent words is just one (only one
bit can change from one Gray count to the next)[40]. This ensures that all changing bits
72
8.2 OCSN
odData
gen_width
ocEmpty
icReadClk
ocFull
icReadEnable
idData
ocAempty
gen_width
SimpleFifo
icWriteClk
ocAfull
icClkEnable
icWe
icReset
Figure 8.3: SimpleFiFo interface
of the address are synchronized at the same clock tick into the other clock domain. The
SimpleFifo can be synthesised for any FPGA without the need of a special IP core. The
design of the dual port block ram ensures that Xilinx tools can use BRAM , if available.
It supports different read and write clock signals for clock domain crossing. Through the
generics gen width and gen depth the data-width and the maximum number of queue
elements can be selected. The thresholds for the ocAFull and ocAEmpty signals are
selectable through the generics gen a full and gen a empty.
8.2 OCSN
The OCSN implementation is divided into multiple components, according to the OSI
model.
8.2.1 OCSN Physical Interface Components
The OCSN physical interface consist of the five signals idOCSNdataIN, odOCSNdataOUT,
icOCSNctrlIN, ocOCSNctrlOUT and icOCSNclk. They are used to interconnecting all
the OCSN devices. Figure 8.4 shows the reception of a single OCSN frame through
icOCSNclk
icOCSNctrlIN
idOCSNdataIN
Figure 8.4: Reception of one OCSN Frame
these five signals. The transmission of a packet works alike.
icOCSNclk is the clock signal for the whole OCSN on one FPGA. icOCSNctrlIN and
ocOCSNctrlOUT are active low signals for controlling, when a transmission is taking
place. The transmission in Figure 8.4 starts when icOCSNctrlIN is going from high to
73
8 Implementation of the Multicore Reconfiguration Platform
low and ends when it is going from low to high again. The number of required clock ticks
varies according to the number of bits transmitted concurrently. The generic data link
determines these number of bits.
This simple interface is chosen in favour of a more sophisticated physical interface because it reduces the design complexity of the system. Using a high speed serial io physical
interface would require much more components, such as some high speed serialiser and
deserialiser and a special transmission encoding like 8b/10b[41].
The interface to the data link layer are 312bit data input/output signals and control
signals for signalling the reception or transmission of the data and a trigger signal for
starting the transmission.
implementation
The implementation of the OCSN physical layer is done through two components. The
ocsn write component is responsible for transmitting data and the ocsn read component
for the reception of data.
ocsn write is a simple shift register implementing the OCSN physical output interface.
The signal interface of csn write is given in Figure 8.5. In addition to the OCSN physical
odOCSNdata
data_link
icSend
ocOCSNctrl
ocReady
OCSN_WRITE
icOCSNclk
idData
312
icClkEnable
icReset
Figure 8.5: OCSN physical transmission component
interface it features a 312bit data input for the OCSN frame and control signals to start
transmission and signal the end of transmission (icSend, ocReady).
idOCSNdata
data_link
icOCSNctrl
OCSN_READ
icOCSNclk
odData
ocReceived
icClkEnable
icReset
312
Figure 8.6: OCSN physical reception component
74
8.2 OCSN
ocsn read likewise is a simple shift register implementing the OCSN physical input
interface. It works in the opposite direction than ocsn write. Figure 8.6 displays its
signal interface. A new OCSN frame is received and its data is only valid for the one
clock tick the ocReceived signal is high.
8.2.2 OCSN Data-Link Interface Component
The data link layer is implemented in the OCSN IF component. It is responsible for
identifying the remote interface and for initiating flow control, before the receive buffer
overflows. The flowchart in Figure 8.7 describes the used identification protocol. Both
IF0
IF1
identify
identity
Figure 8.7: Flowchart of OCSN identification protocol
endpoints of the communication send an identification request to the OCSN physical
interface. If a remote interface is connected, it responds with an identity response.
Sending an identification request is repeated, with a short timeout, until an identification
response is received.
The flow control protocol is similar easy as the identification protocol. An example
flow chart is given in Figure 8.8. IF1 is transmitting many OCSN frames to IF0. At
some point the receive buffer of IF0 will hit an upper bound. At this moment IF0
transmits a wait request to IF1. IF1 stops sending frames as soon as it processes this
wait request, still some more frames can be transmitted. Because of these frames, the
upper bound cannot be the maximum FIFO queue depth. At some later point in time
IF0 has processed most of the frames in its receive buffer and will hit a lower bound. At
this moment is transmits a continue request and IF1 starts transmitting again.
Both protocols are identified through OCSN frame type zero and the first byte of the
payload. Appendix A gives an overview of all available OCSN frame types.
The OCSN IF encapsulates the components of the physical layer. Therefore, it provides the OCSN physical interface to the outside and passes it through to these components. Figure 8.9 displays the full signal interface of the OCSN IF component. In
addition to the OCSN physical interface, it has to provide an interface to the network
75
8 Implementation of the Multicore Reconfiguration Platform
IF0
IF1
frame
receive buffer reaches
upper bound
wait
receive buffer reaches
lower bound
continue
frame
Figure 8.8: Flowchart of OCSN flow control protocol
layer. This interface includes signals for controlling the status of the connection, for
working with OCSN frames, for controlling the transmission and reception of frames
and for resetting and running the component.
The following signals are used for controlling the status of the connection between two
connected OCSN IF components.
identity input for the 16bit OCSN address of the interface
icIdentity this active high control signal selects, if the identity is automatically set
for each transmitted frame
odIdentity 16bit output of the OCSN address of the remote interface
ocIdvalid active high validity signal for odIdentity
The interface to the network layer consist of the frame and frame controlling signals.
It simplifies the usage of OCSN frames by dividing them into individual signals for each
frame part.
{id,od}DST destination address of the OCSN frame
76
8.2 OCSN
idOCSNdataIN
data_link
16
8
icOCSNctrlIN
odOCSNdataOUT
data_link
8
8
ocOCSNctrlOUT
256
icOCSNclk
identity
idDST
idSRC
idType
idSrcPort
idDstPort
idData
16
odSrcPort
odDstPort
odData
ocDataAvail
icReadEn
OCSN_IF
8
icIdentity
8
16
8
odIdentity
ocIdvalid
256
icReset
icSend
icClkEn
ocReady
odDST
odType
icForward
16
16
odSRC
icClk
16
Figure 8.9: OCSN IF signal interface
{id,od}SRC source address of the OCSN frame
{id,od}DstPort destination port of the OCSN frame
{id,od}SrcPort source port of the OCSN frame
{id,od}Type the frame type of this OCSN frame
{id,od}Data the 31byte payload of the OCSN frame
The frame control signals form a simple FIFO queue interface. The active high ocReady signal indicates, if the interface is ready to transmit a new frame. Through the
icSend signal, the frame, created in the frame part, is transmitted. icDataAvail indicates the availability of OCSN frames in the receive FIFO queue. ocReadEn removes
the first queue element.
The system interface consist of the main clock signal icClk, an active high asynchronous
reset signal icReset and an active high clock enable signal icClkEn.
77
8 Implementation of the Multicore Reconfiguration Platform
implementation
The OCSN interface is build out of the components ocsn write, ocsn read, SimpleFifo,
CDC FifoIF and a FSM controlling all these components. Figure 8.10 displays a simpli-
idOCSNdataIN
icWe
ocsn_read odData
idData
Register
ocReceived
icOCSNctrlIN
OCSNFrameOUT
odData
SimpleFIFO
icWe
ocDataAvail
icReadEn
ocFifoWe
scReady
ocReady
FSM
ocReady
ocOCSNctrlOUT
odOCSNdataOUT
OCSNCMACFrameIN/icSend
icSend
ocsn_write
idData
MUX
icSend
OCSNFrameIN/icSend
CDC
OCSNFrameIN
Figure 8.10: OCSN IF implementation schematic
fied block diagram of the OCSN IF buildup. ocsn read and ocsn write are responsible
for the physical communication. If an OCSN frame is received it is cached in a register
and the FSM evaluates the frame at the same moment. If the frame belongs to the
identification or flow control protocol, the frame is not stored in the FIFO queue. If
the frame is a normal OCSN frame the FSM sets the write enable signal (icWe) of the
FIFO queue to append the frame. Through the multiplexer the FSM controls, if a frame
from the outside is transmitted through ocsn write or if a control frame generated by
the FSM . Figure 8.11 shows the FSM graph. The FSM starts with the state st start
on the left side. After waiting for the ocsn write component getting ready the FSM
switches to the st identify state. In this state it transmits the identify request to the
remote interface and switches to st wait id for waiting for an identity response. The
internal signals scSendIdentity and scIdentityReceived are control flags. The first flag
request that the interface should transmit its own identity and the other shows, if the
remote identity has already been received. If the remote interface is identified, the FSM
switches to the st idle state. The st idle state is the main state of the FSM . The states
st wait, st cnt send, st wait send are just intermediate states returning to the st idle
state as soon as an OCSN frame has been successfully been sent to the network. All
other states are only reachable from st idle. If a new identify request is received, the
FSM switches to the st identify state. If a wait request is received from the remote
interface the FSM stays in the st stop state until a continue request is received. If the
FIFO queue is almost full the FSM transmits a wait request in the st wait state and, if
the FIFO is almost empty again a continue request in st continue.
78
st_start
scReady = 0
scReady=1
st_identify
st_wait_id
scIdentityReceived=1
scSendIdentity = 0 & scIdentityReceived=0
st_idle
scSendIdentity=1
scAlmostFull = 1 & scAF=0
scAlmostFull = 0 & scAF=1
scWait = 1
scWait=0
scCDCdataAvail = '1' and scReady='1'
scSendIdentity=1
scReady=1
scReady=1
st_send_wait
scReady=1
st_continue
st_stop
scWait=1
scReady=1
st_send
st_identity
st_wait_send
scReady=0
st_cnt_send
scReady=0
st_wait
scReady=0
st_id_send
scReady=0
8.2 OCSN
Figure 8.11: Graph of the OCSN IF FSM
79
8 Implementation of the Multicore Reconfiguration Platform
8.2.3 OCSN Network Component
The OCSN switch implements the network layer of the OCSN . It uses the OCSN IF
of the previous section to provide seven ports for interconnecting devices, including
additional switches. Because of the addressing scheme introduced in Section 7.1.3, seven
is the maximum number of ports at one switch. Figure 8.12 displays the signal interface
16
icOCSNclk
idOCSNdataIN
7*data_link
7
icOCSNctrlIN
odOCSNdataOUT
7
OCSN_Switch_7Port
7*data_link
identity
odLED
icReset
icClkEn
7
ocOCSNctrlOUT
Figure 8.12: signal interface of an OCSN Switch
of an OCSN switch. Switches are devices of the OCSN too and, as such, require its
own address, given by the identify signal. odLED is a debug interface showing at which
ports a remote interface has been detected. Devices are connected through the OCSN
physical signal interface. The switch implements the same interface than an OCSN IF
, but has seven control signals and seven times data link data signals. data link is the
number of data signals for one OCSN IF . The icOCSNclk is shared by all the OCSN
devices.
The main task of a switch is routing incoming OCSN frames according to their destination address to another port. This includes forwarding frames to other connected
switches. Because of the tree structure, a switch has to identify its uplink switch, which
can be connected to any of the seven ports. A connected switch A is the uplink of a
switch B, if the address of B is a postfix of the address of A. The same comparison has
to be done for the destination address of each incoming OCSN frame.
The addr compare component, shown in Figure 8.13, is responsible for this comparison
process. Two OCSN addresses are inducted into the component and it calculates, if
idAddr2 is a postfix of idAddr1. It uses a chain of multiplexer to compare every subidAddr1
idAddr2
16
16
isNet
addrCompare
ocValid
Figure 8.13: signal interface of the addr compare component
part of the OCSN addresses, leading to very long signal propagation delays, reducing
80
8.2 OCSN
the maximum clock rate for an OCSN switch. The alternative is to implement the
component clock triggered and invest multiple clock cycles for the comparison. This
would increase the complexity of the FSM , controlling the OCSN switch. Furthermore,
the comparison of two addresses could require a different number of clock cycles, making
it harder to calculate the actual switch throughput. The multiplexer approach is used
in this work because a simpler implementation is better suited for a prototype system
than the higher performance solution.
While forwarding OCSN frames, multiple problems can occur, which has to be addressed by the switch. If multiple received frames have the same destination address,
the switch has to select one for transmission at a time for preventing a deadlock. The
transmission of the frames has to occur as soon as possible and no starvation of interface
ports have to take place. No frame-drop is allowed to occur on switches other than the
root switch.
ac
ac
idOCSNdataIN0
ac
ac
icOCSNctrlIN0
ac
ac
ac
ac
ac
ac
ac
ac
odOCSNdataOUT0
OCSN IF 0
FSM0
odOCSNctrl0
ac
ac
idOCSNdataIN1
ac
ac
icOCSNctrlIN1
ac
ac
ac
ac
ac
ac
ac
ac
odOCSNdataOUT1
OCSN IF 1
FSM1
odOCSNctrl1
ac
ac
idOCSNdataIN2
ac
ac
icOCSNctrlIN2
ac
ac
ac
ac
ac
ac
ac
ac
odOCSNdataOUT2
OCSN IF 2
FSM2
odOCSNctrl2
ac
ac
idOCSNdataIN3
ac
ac
icOCSNctrlIN3
ac
ac
ac
ac
ac
ac
ac
ac
odOCSNdataOUT3
odOCSNctrl3
OCSN IF 3
FSM3
idOCSNdataIN4
FSM4
OCSN IF 4
icOCSNctrlIN4
odOCSNdataOUT4
odOCSNctrl4
idOCSNdataIN5
FSM5
OCSN IF 5
icOCSNctrlIN5
odOCSNdataOUT5
odOCSNctrl5
idOCSNdataIN6
FSM6
OCSN IF 6
icOCSNctrlIN6
odOCSNdataOUT6
odOCSNctrl6
Uplink
Check
FSM Main
ac
Figure 8.14: OCSN switch implementation schematic
Figure 8.14 gives a simplified overview of the OCSN switch implementation. Each of
the seven OCSN IF components has a FSM connected. For each port six add compare
components (ac) calculate, if any incoming frame is designated for it. Another seven
add compare components compare the remote interface addresses of each switch port
with the address of the switch to identify the uplink port of this switch. The FSMs
81
8 Implementation of the Multicore Reconfiguration Platform
implement, together with the main FSM , a snapshot based pulling algorithm.
The algorithm ensures fairness by saving the availability of incoming frames of each
OCSN port in a snapshot. Every available incoming frame is pulled to its destination
port in a round robin manner. If the snapshot is processed, another is created. Listing 8.1
displays this algorithm in a C like pseudo language.
Lines 3 to 6 are responsible for doing the snapshot by saving the data available signal
from each OCSN port and marking each port as not transmitted.
In lines 8 to 44, two encapsulated for loops, with the indices s for source and d for
destination port, walk through all port combinations. The snapshot is tested, if any port
combination has an available and not yet transmitted incoming frame.
If source and destination port are the same and the destination address of the frame
is the address of the switch, the destination of the frame is the switch itself and has to
be processed appropriately. Processing such a frame only, if source and destination port
are the same, ensures that it is processed once.
If source and destination ports differ and the destination of the frame at source port
s is a sub-address of the remote address at destination port d, the frame is forwarded to
d.
If d is identified as the uplink port of the switch and the destination of the frame at
source port s is not a sub-address of any remote address, the frame is forwarded to d.
After working through all ports in the snapshot, all frames are removed from the
incoming queue. Frames not transmitted yet are dropped. This happens at the root
switch only because all other switches have an uplink port, to which all not directly
routable frames are sent.
The hardware implementation of this algorithm uses two different kind of FSMs.
The main FSM takes the snapshot and removes frames from the incoming queues. It
synchronises the seven FSMs, of the second type. Each of these FSMs is responsible
for one OCSN port. They test, if incoming frames in the snapshot from any port are
destined for their assigned port and implement all the tests described in Listing 8.1 line
8 to 44.
Through the partitioning of the algorithm in multiple FSMs, its implementation is
straight forward and clear.
8.2.4 OCSN Application Components
The components of the OCSN application layer are connected to OCSN switches through
OCSN interfaces. All of them have the same basic structure, consisting out of an
OCSN IF and a FSM , processing the incoming data. Figure 8.15 displays this basic
structure. The device has the OCSN physical signal interface as minimum input/output
signals. More signal are added according to the application specific hardware part, such
as the GPIO pins of a OCSN GPIO device.
The FSM divides into a general and application specific part. The application specific
part implements actions for incoming OCSN frames specific to this device, such as
reading and writing internal registers or RAM . The general part implements actions
for OCSN frames, which are common to all OCSN devices. This includes reactions to
82
8.2 OCSN
1
while (1) {
// create the snapshot , save which ports have data available
for ( int i =0; i <7; i ++) {
3
snapshot [ i ]. avail = port [ i ]. dataAvail ;
snapshot [ i ]. transmitted =0;
5
}
// pull frames from source ( s ) to destination ( d ) ports
for ( int d =0; d <7; d ++) {
for ( int s =0; s <7; s ++) {
// only do something if a frame is available and not transmitted yet
if ( snapshot [ s ]. transmitted ==0 && snapshot [ s ]. avail ==1) {
// destination and source port are the same and the dest .
// address is the same as the switch address of port d
if ( d == s && port [ s ]. frame . dst == switch . address ) {
// do something according to the frame type , destination port and payload
// eg . send a ping response
} else
// if destination and source port differ and the
// destination address is a subaddr of the remoteAddr of
// port d
if ( subAddr ( port [ s ]. frame . dst , port [ d ]. remoteAddr ))) {
// forward frame to this port
send (d , port [ s ]. frame );
snapshot [ s ]. transmitted =1;
} else
// if d is the uplink port and the frame is not destined for any other port
// forward it to i
if ( uplink ( d )==1 && (
! subAddr ( port [ s ]. frame . dst , port [ d +1%7]. remoteAddr ) &&
! subAddr ( port [ s ]. frame . dst , port [ d +2%7]. remoteAddr ) &&
! subAddr ( port [ s ]. frame . dst , port [ d +3%7]. remoteAddr ) &&
! subAddr ( port [ s ]. frame . dst , port [ d +4%7]. remoteAddr ) &&
! subAddr ( port [ s ]. frame . dst , port [ d +5%7]. remoteAddr ) &&
! subAddr ( port [ s ]. frame . dst , port [ d +6%7]. remoteAddr )
)
) {
// forward frame to this port
send (d , port [ s ]. frame );
snapshot [ s ]. transmitted =1;
}
}
}
}
// remove frames in snapshot from fifo queue
for ( int i =0; i <7; i ++) {
if ( snapshot [ i ]. avail ==1) {
snapshot [ i ]. avail =0;
port [ i ]. removeFromQueue ();
}
}
7
9
11
13
15
17
19
21
23
25
27
29
31
33
35
37
39
41
43
45
47
49
51
}
Listing 8.1: basic snapshot based pulling algorithm
83
8 Implementation of the Multicore Reconfiguration Platform
idOCSNdataIN
icOCSNctrlIN
OCSN IF
odOCSNdataOUT
FSM
application specific
hardware
odOCSNctrl
Figure 8.15: OCSN application component basic schematic
ICMP ping requests only at the moment. Through ICMP ping requests, the identify of
a OCSN component can be determined.
OCSN BRAM device
The VHDL description of the application specific part is very similar to the description
of the dual ported block ram, described earlier, but it uses only one port for read and
write access. Each of the supported frames, as described in Section 7.2.2, corresponds
to a state in the application specific part of the FSM . Data read or written from and to
the BRAM has to be encoded into the payload of OCSN frames. The address, to read
from or to write to, is also encoded into the payload. The main function of the FSM
states is to read the requested number of bytes from the RAM and write them into the
payload of the frame, or otherwise round, writing the given number of bytes from the
frame to the RAM .
OCSN ICAP device
The ICAP device takes the number of bytes to write and the bytes from an OCSN frame.
The FSM always writes 32 bit data words to the ICAP component at 50MHz.
OCSN GPIO device
The GPIO device maps registers to external input and output pins. The FSM takes
bytes from an OCSN frame and writes them into internal registers, leading to a change
in the GPIO pins. If the status of the input pins is requested, the FSM returns the
internal register, connected to these pins.
OCSN PRHS device
The OCSN PRHS device connects the OCSN to the PRHS SoC through a memory
mapped input/output interface. The implementation is described by Grebenjuk[37].
84
8.2 OCSN
OCSN Ethernet Bridge
The OCSN Ethernet Bridge device consist of the basic OCSN device structure, an
Ethernet MAC IP core and two synchronised FSMs, for controlling the transmission
and reception of data. Figure 8.16 displays both FSMs. The numbers at the beginning
of the transition labels set the priority of each transition. They implement a simple
synchronisation protocol (shown in Figure 8.17) to ensure, the Ethernet MAC addresses
of both endpoints are known to each other.
st_start
st_idle
(1)sdRemoteMAC = 000000000000
&& scDiscoverTimerInterrupt=1
st_discover
(2)sdRemoteMAC /= 000000000000
&& srSelectionACKsend=0
st_sel_ack
(3)scOCSNdataAvail = 1
st_prepare
st_ocsn
(1)sdTransmitCounter = 0
st_send
(2)
st_wait
scTXdstRDY = 0
(a) Transmission FSM
scRXsrcRDY=0 && scRXsof=0
(scRXeof =0 &&
sdReceiveCounter<60)||
(scRXeof = 1 &&
sdReceiveCounter>60)
st_start
st_idle
st_receive
scRXeof =0 && sdReceiveCounter = 60
st_check1
sdReceivedETH.DST_MAC = idInitialMAC &&
sdReceivedETH.FRAME_TYPE=0x81fc &&
sdReceivedETH.OCSN_OP=OP_SELECTION
st_check2
sdReceivedETH.DST_MAC = idInitialMAC &&
sdReceivedETH.FRAME_TYPE=0x81fc &&
sdReceivedETH.OCSN_OP=OP_OCSN_FRAME
st_send_frame
scFIFOfull=0
(b) Reception FSM
Figure 8.16: OCSN Ethernet Bridge FSMs
The OCSN2Ethernet bridge starts by sending discovery Ethernet frames through the
Ethernet MAC IP core every second. If a host system is available on the other side of
the connection or connected to the same Ethernet switch, it answers with a selection
frame to the MAC address of the OCSN2Ethernet bridge. The OCSN2Ethernet bridge
confirms the reception of the selection frame by sending a selection ack frame.
After this handshake protocol every OCSN frame is encapsulated into an Ethernet
frame and transmitted to the remote device. The FSMs do not support answering to
OCSN ping frames.
85
8 Implementation of the Multicore Reconfiguration Platform
Host
OCSN2Ethernet
discover
selection
selection ack
Figure 8.17: OCSN Ethernet Discovery Protocol
OCSN UART Bridge
Like all application devices, the base of the OCSN UART Bridge is the basic application
device structure of Figure 8.15. The application specific hardware consist of a UART
component and another FSM , which controls the incoming data from the UART . No
special handshake protocol is implemented. The device just starts transmitting through
the UART as soon as an OCSN frame arrives and builds an OCSN frame out of the
incoming data from the UART . Sending an end of frame byte, identified through the
Parity bit, is the only used synchronisation method between local and remote bridge
component.
8.3 CSN
Like the description of the OCSN implementation, the implementation of the CSN is
divided into different components, according to the OSI model. Section 7.3.3 already
described the required OSI layers.
86
8.3 CSN
8.3.1 Physical Layer Implementation
The CSN uses the interconnection network of the underlying FPGA. This reduces the
implementation complexity of the CSN physical layer. The signal interface, to communicate through the CSN , is the only implementation specific part of it. It is already
described in Section 7.3.3.
8.3.2 Network Layer Components
The CSN is an indirect network with crossbar switches as the main network components.
Through the crossbar switches application layer devices can be connected and other
crossbar switches, to extend the network. Figure 8.18 displays the connection schema of
ocRO
CEB0
ocRO
11 .. 8
31 .. 28
15 .. 12
19 .. 16
CEB3
ocRO
CEB1
27 .. 24
CSN Switch
3 .. 0
7 .. 4
23 .. 20
CEB2
ocRO
Figure 8.18: Crossbar Interconnection Schema
one CSN crossbar switch. There are dedicated ports for connecting CEBs, and dedicated
extension ports, for connecting switches and application layer devices. Each device is
connected with four single signal lines and four clustered or bus signal lines. One bus
line is 32 bit wide.
The CSN crossbar switch requires a complex signal interface, to support this kind
of connection schema. Figure 8.19 presents this signal interface. The first six signals
on the left side belong to the OCSN physical interface, because the routing table of the
CSN crossbar switch is programmable through the OCSN . Additional status information
concerning CEBs can be requested from the OCSN too.
icSWid identifies all connected switches. It consists of eight times the number of
connectable switches bits. For every switch eight bits of identifier are available, limiting
the number of switches for one CSN to 256. Each switch connects to this signal starting
with the “top” switch at bits 8 × nr sw − 1 down to 7 × nr sw.
ocResetCEB and ocEnabled are control signals to the CEBs. The first resets the
component configured into the CEB to a known state, the second enables the clock for
the component. Both signals have bit width number of connectable CEBs.
87
8 Implementation of the Multicore Reconfiguration Platform
idOCSNdataIN
data_link
nr_cebs*8
2**ctrl_lines_single
icOCSNctrlIN
odOCSNdataOUT
idCtrl
data_link
2**ctrl_lines_single
odCtrl
2**ctrl_lines_bus*bus_size
ocOCSNctrlOUT
idBUS
icOCSNclk
identity
icSWid
ocResetCEB
ocEnabled
icCEBid
CSN_Switch
2**ctrl_lines_bus*bus_size
16
nr_sw*8
nr_cebs
odBUS
icClkEnable
icReset
icClk
nr_cebs
Figure 8.19: CSN Crossbar Switch Signal Interface
icCEBid is the same as icSWid but identifies the connected CEBs. The eight bits
width per CEB limits the number of CEBs on a reconfiguration platform to 256. But
this value is easily extended, if necessary.
idCtrl, odCtrl, idBUS and odBUS are the data signals of the CSN . The first two
have a bit width of 2nr ctrl lines single and the later two of 2nr ctrl lines bus × bus size. At
the moment there are five control lines for single signal lines and five control lines for
clustered or bus signal lines. The bus width is 32. Eight components can connect to one
crossbar switch, leading to four signals of each type for one component. The components
connect to the crossbar switch according to the connection schema of Figure 8.18.
implementation
Figure 8.20 displays the main components of a CSN crossbar switch. Its main structure resembles the basic structure of a OCSN application layer component. An OCSN
interface and a FSM manage the connection to the OCSN .
The number of single and cluster control lines is reduced to two, in this example.
This simplifies the display of all required components. The more control lines, the more
components are required.
With two control lines four signal lines or signal clusters can be addressed. In this
example, four outgoing single signal lines are shown on the left side and four outgoing
clustered signals on the right. Each of these outputs is connected to the outgoing port
of a multiplexer. The incoming signal lines are connected to the input ports of the
multiplexer. Through a connected routing register, the signal passing through to the
output is selected.
The outgoing signals for resetting and enabling CEBs and the incoming signals for
CEB and switch identifiers are connected to registers too.
All the available registers, except the identification registers, can be set by sending
special OCSN frames to the switch and program the routing.
88
8.3 CSN
idCtrl(3 downto 0)
Routing Register
Routing Register
odCtrl(0)
MUX
MUX
MUX
MUX
MUX
MUX
MUX
MUX
idOCSNdataIN
icOCSNctrlIN
odOCSNdataOUT
OCSN IF
odBUS(63 downto 32)
Routing Register
Routing Register
odCtrl(3)
odBUS(95 downto 64)
Routing Register
Routing Register
odCtrl(2)
odBUS(127 downto 96)
Routing Register
Routing Register
odCtrl(1)
idBUS(127 downto 0)
odBUS(31 downto 0)
Reset Reg
ocResetCEB
Enable Reg
ocEnabled
FSM
odOCSNctrl
CEB IDs
icCEBid
SW IDs
icSWid
Figure 8.20: CSN Crossbar Switch Implementation Schematic
8.3.3 Application Layer Components
The application layer components of the CSN divide into the CEBs and other extension
devices. At the moment only one extension device is available, the OCSN2CSN bridge
to communicate with the outside world.
89
8 Implementation of the Multicore Reconfiguration Platform
CEB
The interface of the CEBs has already been described in Section 7.3. The implementation
is application specific and is not described here.
OCSN2CSNsimple Bridge
Both OCSN2CSN bridges are gateways between the packet switched OCSN and the
circuit switched CSN . Therefore, they require a physical OCSN signal interface and a
physical CSN signal interface. Figure 8.21 displays these signal interfaces. The OCSN
idOCSNdataIN
data_link
4
4*bus_size
icOCSNctrlIN
odOCSNdataOUT
data_link
ocOCSNctrlOUT
4*bus_size
CSN2OCSN
icOCSNclk
identity
idSingle
odSingle
idBus
odBus
icReset
icClkEnable
16
icClk
4
Figure 8.21: CSN2OCSN Bridge Signal Interface
interface is the same as for any other OCSN device and enables the bridge to connect
to an OCSN switch or directly to any other OCSN application layer component.
The CSN signal interface ist designed to connect directly to the extension ports of a
CSN crossbar switch.
The OCSN2CSNsimple Bridge is implemented as an OCSN application layer device,
introduced in Section 8.2.4. It supports four different OCSN network frames.
readSingle returns the value of the idSingle lines
writeSingle sets the value of the odSingle lines
readBus returns the value of the idBus lines
writeBus sets the value of the odBus lines
The values returned are sampled at the moment the OCSN frame is processed by the
bridge.
OCSN2CSN Bridge
The structure of OCSN2CSN bridge is nearly the same as of the OCSN2CSNsimple
bridge. The signal interface is the same displayed in Figure 8.21 and it is also an OCSN
90
8.3 CSN
application layer component. The difference is, that the OCSN2CSN bridge enables a
CEB to create a full OCSN frame and transmit it and to receive a full OCSN frame.
To create the OCSN frame, the following signal mapping on the CSN physical layer is
used:
idBus(31 downto 0) data input from the CSN
odBus(31 downto 0) data output to the CSN
idBus(32) directly mapped to the OCSN IF icSend signal
idBus(33) directly mapped to the OCSN IF icReadEn signal
idBus(63 downto 60) request to which register the incoming data should be written
idBus(59 downto 56) request which register to put on the output data bus
odBus(32) directly mapped to the OCSN IF ocIDvalid signal
odBus(33) directly mapped to the OCSN IF ocReady signal
odBus(34) directly mapped to the OCSN IF ocDataAvail signal
The CEBs can use this interface to create or read an OCSN frame. Table 8.1 describes
the selectable registers. New values are written to the register at the next clock tick.
Address
Register
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
rest
source address and destination address
source port, destination port and frame type
bits 31 downto 0 of OCSN payload
bits 63 downto 32 of OCSN payload
bits 95 downto 64 of OCSN payload
bits 127 downto 96 of OCSN payload
bits 159 downto 128 of OCSN payload
bits 191 downto 160 of OCSN payload
bits 223 downto 192 of OCSN payload
bits 255 downto 224 of OCSN payload
identity of the remotly connected OCSN device
Table 8.1: Address to register mapping
After creating an OCSN frame, it can easily be transmitted by setting the icSend signal
to high.
If an OCSN frame is available, it can also be read through this interface.
The interface is necessary because the CSN only features four 32bit busses and four
single lines for each connected component at the moment. One OCSN frame is 312bit
wide and has to be mapped to fewer signals.
91
8 Implementation of the Multicore Reconfiguration Platform
One problem arises from the fact that each CEB can be operated with a different clock
speeds and this clock speed is not required to match the clock speed of the OCSN2CSN
bridge. If the clock signals do not match the CDC problems arises, described in Section 8.1.1.
Different solutions, to ensure, that the data is correctly saved into the internal registers, exist:
• The interface can be extended by read and write acknowledge signals. These
acknowledge signals ensure that the data can correctly cross the clock boundaries,
like a CDC component does. It requires additional hardware in the CEBs and the
OCSN2CSN bridge for handling the acknowledge signals.
• Using clock speed selections lines instead of acknowledge signals, would reduce the
hardware requirements within a CEB because no FSM is required to handle the acknowledge signals, but would require the usage of special BUFG-MUX components
in the OCSN2CSN bridge. These special components are multiplexer dedicated to
global clock lines of the FPGA and are limited in number. This approach is only
feasible, if the number of clock signals and the number of OCSN2CSN bridge
components is very small.
• The simplest solution is to reduce the flexibility of the overall design and determine
one fixed clock rate for communication with OCSN2CSN bridges. This increases
the hardware requirements in the CEBs only, if the CEB is running at a different
clock rate than the OCSN2CSN bridge.
For the prototype of the MRP the last option is chosen because the implementation
complexity is very small and using a simple interface without additional control signals
reduces the error probability in CEB implementations. The determined clock rate is
25MHz at the moment.
92
9 Operating System Support
Implementation
Section 7.4 described the overall idea of the OS support for the MRP. At the moment
only support for the OCSN is required to interact with the MRP, especially the CEBs.
Linux is chosen as the OS for the host system of the prototype. It is an UNIX like OS[38]
and divides into the Linux kernel and user applications. The current kernel version is
3.14.3.
The MRP operating system support requires adaption of the Linux kernel and writing
user applications for managing the different tasks of the MRP.
Robert Love[42] gives a good introduction to Linux Kernel Development. The Linux
OS has different ways of extending its functionality. The main, and most used, way is
writing device drivers. These device drivers interact with hardware devices connected
to the system, and integrate them into the Linux kernel as character, block or network
devices. Character and block devices are represented as ordinary files in the Linux device
tree and require the implementation of at least open, read, write and release callback
functions. The network device driver requires read, write and poll callbacks. The kernel
uses these callback functions to interact with the hardware devices.
Another extension point of the Linux kernel are network drivers. Network drivers are
different from network device drivers. While the later interact with hardware, network
drivers implement the BSD socket API for every supported network. This includes
creating a kernel structure, representing the addressing schema of the network, callbacks
for bind, connect, release, accept, listen, poll, sendmsg and recvmsg. The socket interface
allows user space applications to open sockets and transmit and receive data through
the network. Common network drivers of the Linux kernel are IPv4, IPv6, AppleTalk
and Ethernet.
All drivers of the Linux Kernel register at least one C structure with the kernel. These
C structures contain configuration parameters, like names and sizes of other structures,
and function pointers to callbacks.
The OS support for the MRP uses a device driver and a network driver. The network
driver for the OCSN allows user application to directly create, transmit and receive
OCSN frames. The frames are en-/decapsulated by the network driver into/from Ethernet frames and transmitted/received using the Ethernet network driver. If the OCSN
is connected natively to the host system, for example using the PRHS SoC , a OCSN
network device driver interacts with the OCSN network interface hardware. The driver
fetches received frames from the interface hardware, encapsulates them into Ethernet
frames. The Ethernet frames are passed to the OCSN network driver. The network
driver delivers the frame to the corresponding user space process. A frame transmitted
93
9 Operating System Support Implementation
from a user space application is first processed by the OCSN network driver and than
delivered to the network interface connected to the OCSN .
9.1 OCSN Network Driver
The first part of the network driver initialisation is registering a new network protocol
to the Linux kernel with its name and the size of its socket data structure (Listing 9.1).
1
static struct proto ocsn_proto = {
. name = " OCSN " ,
. owner = THIS_MODULE ,
. obj_size = sizeof ( struct ocsn_sock ) };
3
Listing 9.1: OCSN protocol structure
The ocsn sock structure represents a network socket. In the OCSN context it consist of
the basic kernel socket structure, src and dst address, src and dst port and the application
layer frame type as presented in Listing 9.4.
2
4
6
8
struct ocsn_sock {
struct sock
sk ;
unsigned short
unsigned short
unsigned char
unsigned char
unsigned char
ocsn_dst ;
ocsn_src ;
ocsn_src_port ;
ocsn_dst_port ;
protocol ;
};
Listing 9.2: OCSN socket structure
The basic socket structure sk holds information about the incoming or outgoing network
device and a queue for incoming network frames.
The second initialisation step is registering a new sub-packet of an Ethernet packet,
with a fixed Ethernet frame type of ETH P OCSN(0x81fc) and the callback function
ocsn rcv.
static struct packet_type ocsn_packet_type __read_mostly = {
. type = cpu_to_be16 ( ETH_P_OCSN ) ,
. func = ocsn_rcv
2
4
};
Listing 9.3: OCSN packet structure
This packet type is represented by the structure displayed in Listing 9.3. This step
ensures that all incoming Ethernet frames of type ETH P OCSN are forwarded to this
network driver by calling the ocsn rcv function and the Ethernet frame as a parameter.
The ocsn rcv function is responsible for processing the incoming Ethernet frames, extract the OCSN frame from its payload and find the destination socket from a list of
sockets, by comparing destination address and destination port of the incoming frame
and every existing socket. If the OCSN is connected to the host system through an
94
9.1 OCSN Network Driver
OCSN Ethernet bridge, ocsn rcv has to respond according to the handshake protocol
described in Section 8.2.4 too.
The last step registers the socket interface of the network driver at the kernel. The
implemented interface is identified by the structure given in Listing 9.4.
static const struct proto_ops ocsn_dgram_ops =
2
{
. family = PF_OCSN ,
. owner = THIS_MODULE ,
. release = ocsn_release ,
. bind = ocsn_bind ,
. connect = sock_no_connect ,
. socketpair = sock_no_socketpair ,
. accept = sock_no_accept ,
. getname = sock_no_getname ,
. poll = datagram_poll ,
. ioctl = sock_no_ioctl ,
. listen = sock_no_listen ,
. shutdown = sock_no_shutdown ,
. setsockopt = sock_no_setsockopt ,
. getsockopt = sock_no_getsockopt ,
. sendmsg = ocsn_sendmsg ,
. recvmsg = ocsn_recvmsg ,
. mmap = sock_no_mmap ,
. sendpage = sock_no_sendpage ,
4
6
8
10
12
14
16
18
20
};
Listing 9.4: OCSN socket interface structure
Only the bind, release, poll, sendmsg and recvmsg callbacks are implemented, because
the OCSN does not feature a connection oriented transmission protocol.
bind The bind function creates a persistent OCSN socket with a fixed OCSN src port.
This src port identifies the user space application and every OCSN frame received
with the same destination address is delivered to this socket. The user application
can choose a new random src port or request a specific port, if it is available.
release The release function removes a previously created OCSN socket from the list
of sockets and frees its used memory.
poll Poll uses a standard datagram polling function.
sendmsg The sendmsg function creates an OCSN frame out of a given address structure and data buffer. It creates the kernel structure for transmitting Ethernet frames
and passes this structure to the network device for transmission.
recvmsg The recvmsg function is called for receiving data from an OCSN socket. It
fetches a received frame from the socket queue and creates an OCSN address structure
and data buffer from it. These are returned to the user application.
95
9 Operating System Support Implementation
9.2 OCSN Network Device Driver
The network device driver for the OCSN -PRHS-SoC memory mapped io interface was
written by Grebenjuk[37] and its implementation is only briefly described here.
The hardware OCSN network interface is connected to an OCSN IF on the one side
and on the other side to the memory bus of the PRHS SoC .
The network driver is responsible for copying received OCSN frames from the memory mapped registers to the kernel space, encapsulate them into Ethernet frames and
pass them to the Linux network stack for more processing. In the opposite direction
the network stack delivers Ethernet frames to the network device driver. The device
driver extracts the OCSN frame and copies it to the memory mapped io registers of the
hardware interface.
96
10 Evaluation
The usability of the presented framework is evaluated using the two dimensions space
and time and an example application. The space dimension is analysed by looking at the
area usage of the MRP. For the time dimension the maximum clock rates, achievable by
CEBs interconnected through the CSN are measured. For the example implementation
a small general-purpose processor is ported to the MRP.
10.1 Area Usage
The area required to support the MRP onto the FPGA is a very important factor how
efficient designs using the MRP can be. The area is measured in FPGA LUTs (see
Section 2.4).
The reconfiguration platform of the MRP is configured into a Xilinx xc5vlx330 Virtex5
FPGA supporting 207360 LUTs divided into 51840 slices.
The CEBs consist of slices only. The integration of special purpose hardware, such as
DSPs and BRAM , is not supported at the moment. To use the available special purpose
hardware the usage requirements for the complete MRP infrastructure has to be aquired.
The available resources have to be evenly distributed through all CEBs. The CEBs have
to be placed in such a way on the FPGA that each of them encapsulates all the hardware
resources it should support. The size of the used FPGA does not allow that. The MRP
uses 156096 LUTs of the FPGA, including the area for the CEBs. This is roughly 75%
of the available resources. Relocating the CEBs leads to an unroutable design. A larger
FPGA can support the placement of CEBs with integrated special purpose hardware.
Table 10.1 displays the area usage of the MRP system. The given Percentage relates to
the number of LUTs not the maximum number available.
A CEB consist out of 800 CLBs, which equals 3200 LUTs. All the CEBs together
require 32.8% of the used FPGA area. The CSN switches differ in size because during
design synthetisis the components get optimised for area usage. Switch 3 and 1 only
support two switch extension ports, while the other feature three. These additional port
and the number of used connections per port determine the size of each switch. They are
roughly three time larger than a CEB and together require 21.86% of the used FPGA
space. The IOB components are only the size of halve a CEB. Most of the area is required
by the OCSN . Alltogether it requires 43.31% of the used FPGA space. The reason for
this is the complex routing algorithm within the OCSN switches. A simple BUS can
replace the OCSN and reduce the area usage of the interconnection infrastructure, but
would limit the flexibility of communication, for example with resources like RAM ,
processor cores and additional FPGAs. Another drawback would be the limited size and
97
10 Evaluation
Component
clkManager
OCSN-Switch0
OCSN-Switch2
OCSN-Switch1
OCSN2BRAM
OCSNbridgeUART
OCSN2ICAP
CEB-0-0
CEB-0-1
CEB-0-2
CEB-0-3
CEB-1-0
CEB-1-1
CEB-1-2
CEB-1-3
CEB-2-0
CEB-2-1
CEB-2-2
CEB-2-3
CEB-3-0
CEB-3-1
CEB-3-2
CEB-3-3
CSN-Switch3
CSN-Switch2
CSN-Switch1
CSN-Switch0
CSN2OCSN
CSN2OCSNsimple
Gesamt:
Nr. LUTs
Nr. MUXFX
Nr. BRAM
40
11920
34627
14747
1834
2594
1886
3200
3200
3200
3200
3200
3200
3200
3200
3200
3200
3200
3200
3200
3200
3200
3200
7840
10024
7585
8682
1502
1613
156096
0
1153
2208
1351
4
2
6
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
801
1157
715
781
22
2
8202
0
35
35
35
6
7
5
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
5
5
5
5
5
5
153
Table 10.1: Area usage of the MRP
98
Area Usage Percentage
0,03
7,64
22,18
9,45
1,17
1,66
1,21
2,05
2,05
2,05
2,05
2,05
2,05
2,05
2,05
2,05
2,05
2,05
2,05
2,05
2,05
2,05
2,05
5,02
6,42
4,86
5,56
0,96
1,03
100
10.2 Maximum CSN Propagation Delay Measurement
extensibility of busses. Looking only at the CSN and the CEBs the hardware overhead is
not that big because four switches provide interconnectivity to 16 CEBs. The overhead
can be reduced even more by increasing the number of CEBs per switch and improve
the multiplexer implementation within them.
10.2 Maximum CSN Propagation Delay Measurement
The CSN is a very critical part of the MRP. It is an indirect network and has no
direct connections between network components, such as CEBs and IOBs. Virtual
paths through CSN switches have to be created to interconnect them. The propagation
delay of a path is an important factor in digital circuit design because it determines the
maximum clock rate of the overall system. At least two physical paths are necessary to
create a virtual path within the CSN because it has to connect a CEB or IOB to a CSN
switch, and this switch has to connect to the other CEB or IOB. If the second component
is connected to a different switch, more physical paths are necessary. It is obvious that
the propagation delay of the created virtual path is composed of the propagation delay of
the individual physical paths and the gate delay within each CSN switch. It is important
to analyse all the possible path delays within the CSN to determine the maximum overall
clock frequency, and to indentify areas of the same maximum clock frequency.
The measurement of propagation delays on a FPGA is difficult because the start and
endpoints are not directly accessible from outside. Routing both to I/O pins of the
FPGA would greatly distort the measurement result because the additional path to the
I/O buffer, and the I/O buffer itself are affecting the propagation delay with an unknown
factor. Another not feasible method is grinding the FPGA to get access to the path. A
working solution to analyse the propagation delay of paths on a FPGA was published
by Ruffoni and Bogliolo[43]. They used two Ring Oscillators (ROs) R0 and R1 on the
FPGA. R1 was extended by the path p to analyse. They determined the periods T0
and T1 of the ROs. The period of a RO is twice the propagation delay of its loop[43].
Adding a path to the loop extends the period by twice the propagation delay of the path
p: T1 = T0 + 2dp . Hence, the delay d of the path is calculated by dp = (T1 − T0 )/2. This
method has been adapted for the MRP.
10.2.1 RO-Component
A special RO component has been developed for configuring into any of the CEBs. It
consists of a RO, whichs path can be extended by using a control output and a control
input of the CEB interface. The switching between the base and the extendend path is
implemented using a 2-1 multiplexer and a 2-1 demultiplexer. The control line of each
of them is connected to the CEBs enable signal (see Figure 7.7). The RO is driving the
clock input of a 32bit counter. The enable and reset signal of the counter is driven by
a FSM , clocked at 50Mhz. Both signals are passed into the clock domain of the RO
using two FFs connected in a row. The FSM is responsible for doing the measurement
of the number of RO ticks within a given amount time. If it receives the start signal
99
10 Evaluation
from the outside the FSM enables the counter, waits for a given number of 50Mhz clock
cycles, and disables the counter. The counters value is connected to an outgoing 32bit
bus connection. On reception of a reset signal from the outside, the FSM resets the
counter. The component can be used to first measure the base period TB of the RO and
afterwards the period TE of the RO with the extended path. The period in nanoseconds
can be calculated from the measured number of ticks by
T =
1
RO ticks
f [M hz] ticks
× f [M hz]
× 1000
The propagation delay of the extended path p can then be calculated with:
dp = (TB − TE )/2
10.2.2 ReRouter-Component
Another component is required to measure the propagation delay of all paths within
the CSN . The RO requires an extended path to start and stop at itself. Therefore,1 a
component is necessary, which can route the incoming singals of a CEB back through its
outputs. The component is called ReRouter. Its implementation is very simple because
it just connectes its inputs to its outputs.
10.2.3 Measuring Setup
To get as much information as possible out of the propagation delay measurement all
the paths between the CEBs are analysed. Figure 10.1 displays one configuration of
the measurement setup. This configuration is used to measure all path delays between
CEB0 at CSN switch 0 to any other CEBs. Hence, the RO component is configured
into CEB0 at CSN switch 0. All the other CEBs are configured with the ReRouter
component. The red line shows one of the measurement virtual paths. It consists out of
six physical paths (CEB0 to SW0, SW0 to SW2, SW2 to CEB0, CEB0 to SW2, SW2 to
SW1, SW1 to CEB0). As you can see, the round trip time between the two CEBs are
measured. Therefore, the result has to be divided by two to estimate the one way time.
First the base period of the one RO component is determined. After that the CSN is
programmed to every possible virtual path and the period of it is measured. The last
step is to calculate the individual virtual path propagation delay.
10.2.4 Measurement Results
Table 10.3 presents the propagation delay matrix for the full MRP. To improve the
table size the column and row names are shortend. The format “x-y” states CEBy at
CSN switch x. The measurment results are symmetric with small variations. The blue
marked leading diagonal represents the propagation delays of the CEB to its switch.
The results are already divided by two to estimate the one way trip time, not the round
trip time. There are a few variants in the symmetrie of the matrix, which need to be
explained.
100
10.2 Maximum CSN Propagation Delay Measurement
ReRouter
ReRouter
ReRouter
0
1
0
1
31...28
27..24
31...28
27..24
RO
CSN SW 0
CSN2OCSN
1.2.2.2.5.9
CSN SW 1
15...12
7...4
15...12
1.2.2.2.1.0
1.2.2.2.2.0
3...0
3...0
23...20
19..16
23...20
19..16
ReRouter
ReRouter
ReRouter
ReRouter
3
2
3
2
ReRouter
ReRouter
ReRouter
ReRouter
0
1
0
1
31...28
27..24
31...28
27..24
11...8
11...8
CSN SW 2
CSN2OCSNsimple
7...4
15...12
1.2.2.2.6.0
CSN SW 3
15...12
1.2.2.2.3.0
1.2.2.2.4.0
23...20
19..16
23...20
19..16
ReRouter
ReRouter
ReRouter
ReRouter
3
2
3
2
Figure 10.1: MRP Measurement Configuration for Setup 1
1. There is always at least a small variant within the propagation delay of the path
to a CEB and back.
2. Sometimes a propagation delay from one CEB to another is shorter than the sum
of the propagation delay to their switch. An example of this phenomenon is the
path between CEB1-2 and CEB1-1. Their propagation delay is measured 1.86ns
while their propagation delays to their switch are measured 3.15ns and 2.39ns.
The problem with measuring the propagation delay within the CSN is, that it is not
regularly placed into the FPGA. Figure 10.2 displays the placement of all four CSN
switches. It is clearly visible that all the switches are distributed throughout the FPGA,
Switch
Clks (Mhz)
Clkc (Mhz)
0
1
2
3
135
150
162
159
67
75
81
79
Table 10.2: Maximum clock rates within each switch
101
102
0-1
5.61
2.90
7.22
6.19
9.36
10.62
11.80
12.47
9.79
11.49
10.31
9.26
10.99
10.39
9.53
10.74
0-0
2.36
5.72
5.32
5.05
7.57
8,63
10.00
10.68
8.86
10.56
9.38
8.34
10.06
9.46
8.60
9.81
CEB
0-0
0-1
0-2
0-3
1-0
1-1
1-2
1-3
2-0
2-1
2-2
2-3
3-0
3-1
3-2
3-3
5.34
7.37
3.07
5.85
7.39
8.65
9.82
12.47
8.43
10.13
8.95
7.90
9.63
9.03
8.17
9.38
0-2
7.75
9.28
7.46
9.12
1.83
4.60
5.50
5.40
10.72
12.43
11.24
10.20
9.96
9.54
8.92
10.00
1-0
8.58
10.11
8.29
9.95
4.15
2.39
6.65
6.48
11.51
13.22
12.03
10.99
10.21
9.79
9.17
10.24
1-1
9.61
11.14
9.32
10.98
5.25
1.86
3.15
5.74
12.90
14.60
13.42
12.38
10.86
10,43
9.82
10.89
1-2
10.82
12.35
10.53
12.18
5.46
1.91
6.05
2.70
13.90
15.61
14.43
13.38
10.92
10.50
9.88
10.96
1-3
8.70
9.74
8.24
8.43
10.42
11.68
12.85
13.53
1.87
5.22
5.86
4.55
9.50
8.91
8.04
9.25
2-0
10.41
11.45
9.94
10.14
12.12
13.38
14.56
15.23
5.22
3.01
5.99
5.38
10.09
9.50
8.63
9.84
2-1
9.41
10.45
8.94
9.14
11.12
12.38
13.56
14.24
6.04
6.16
2.44
6.07
9.31
8.72
7.85
9.06
2-2
2-3
8.25
9.29
7.78
7.97
9.96
11.22
12.40
13.07
4.62
5.45
1.33
2.63
9.51
8.92
8.05
9.26
Table 10.3: Propagation Delay Matrix for all CEBs in ns
5.07
6.32
5.82
2.31
8.19
9.45
10.62
11.30
8.60
10.31
9.12
8.08
9.80
9.21
8.35
9.55
0-3
10.33
11.37
9.86
10.06
9.62
10.32
10.76
10.50
9.45
10.04
9.08
9.38
3.24
6.26
5.78
5.98
3-0
9.82
10.85
9.35
9.54
9.13
9.83
10.27
10.01
8.78
9.38
8.42
8.72
6.19
3.00
4.28
5.72
3-1
9.65
10.69
9.19
9.38
8.89
9.60
10.04
9.78
8.32
8.91
7.95
8.25
6.10
4.67
2.17
4.95
3-2
9.65
11.37
9.86
10.05
9.70
10.40
10.84
10.58
9.25
9.85
8.89
9.19
6.03
5.84
4.67
2.70
3-3
10 Evaluation
10.2 Maximum CSN Propagation Delay Measurement
yellow CSN Switch 0, red CSN Switch 1, green CSN Switch 2, purple CSN Switch 3
Figure 10.2: Floorplan of the reconfiguration platform
103
10 Evaluation
and are even entangled. This distribution leads to very different gate delays for different
parts of the CSN switches. This can lead the second phenomenon because the route
through the used multiplexer to another CEB can be very short while the path back to
itself is very long.
Another problem is the placement within each CEB area. The RO could be placed
very near the I/O signals or very far away. The placement process is a highly randomised
process, so this scenario is likely. Figure 10.3 shows the CEB to CSN switch 0 connections in orange and the connections from CSN switch 0 to switch 2 in pink. The lengths
of these paths are very different, such as the paths to the left of CEB0-3.
The result of these measurements are, that CEBs connected through one switch can be
clocked at a higher frequency than CEBs connected at different switches. For example
components configured into the CEBs at switch 0 can be clocked at 135Mhz if sequential
circuits are used and at 67Mhz if a combinational circuit is required in at least one CEB.
The clock frequencies are calculated using the worst case propagation delay at one switch.
The clock rates for the other switches are displayed in Table 10.2. Clks is the maximum
achievable clock rate using sequential circuits only. Clkc is the maximum clock rate with
at least one combinational circuit, but ignoring its gate delay. As soon as a CEB at a
different switch is connected to a system, the clock rate is at least halved.
10.3 Example Microcontroller Implementation for MRP
Showing that the MRP can support complex digital components is very important for the
framework evaluation. Therefore, a small CPU has been ported to run as a distributed
core onto the MRP. The used processor core was developed for teaching purposes by
the Computer Engineering group of the Helmut Schmidt University in Hamburg. It
supports 16 32bit registers, a 32bit ISA, a 32bit databus, and a 16bit address bus. A
simple assembler is available for easier software development.
To port the processor core onto the MRP the processor core has to be divided into
its core parts, such as fetch and decode unit, control unit, register file, and ALU . These
components have to be encapsulated into the CEB signal interface. The fetch and decode
unit has to be divided into two units. One unit is responsible for fetching datawords
from a RAM component within the OCSN using the CSN2OCSN bridge. The second
one decodes the fetched words for the datapath of the processor core. The control unit
was extended by two states in its FSM to use the additional fetch stage, enforced by the
OCSN access.
The fetch unit is accessible from the OCSN to select the address of the OCSN RAM
component and its port. Additional command frames are available to start, stop, and
reset the proccessor core. This is necessary because programms running on the MRPs
host system shall manage the processor core and its software. Figure 10.4 presents the
MRP configuration for the processor core. All components, except the ALU , fit into
the CEBs of CSN switch 0. The ALU is configured into CEB 1 of switch 1. Without
the MRP and configured as a SoC onto a Xilinx Virtex5 FPGA the processor core can
run at 30Mhz. Hence, 25Mhz is the maximum frequency of the core on the MRP. Using
104
10.3 Example Microcontroller Implementation for MRP
yellow CSN Switch 0, red CSN Switch 1, green CSN Switch 2, purple CSN Switch 3
Figure 10.3: Floorplan with interconnects of the reconfiguration platform
105
10 Evaluation
Fetch
ALU
Control
0
1
0
1
31...28
27..24
31...28
27..24
CSN SW 0
CSN2OCSN
1.2.2.2.5.9
CSN SW 1
15...12
7...4
15...12
1.2.2.2.1.0
1.2.2.2.2.0
3...0
3...0
23...20
RegFile
19..16
Decode
23...20
19..16
3
2
3
2
0
1
0
1
31...28
27..24
31...28
27..24
11...8
11...8
CSN SW 2
CSN2OCSNsimple
7...4
15...12
1.2.2.2.6.0
CSN SW 3
15...12
1.2.2.2.3.0
1.2.2.2.4.0
23...20
19..16
23...20
19..16
3
2
3
2
Figure 10.4: MRP CPU Configuration
the propagation delay matrix in Table 10.3 one can look up the maximum path delay
between all components. The ALU is connected to the control unit, the decode unit
and the register file. The maximum propagation delay between these components is
10.62ns. We have to take into account that the ALU is a combinational circuit. So the
1
maximum possible clock frequency is 10.62×2
= 47M hz, but the processor can not run
at this speed.
The software running on the host system of the MRP is responsible for programming
the fetch unit, start the processor core, and stop it after program execution. Further it
emulates an OCSN RAM interface to supply the processor core with an easy to debug
memory. At program start, the internal RAM buffer is filled from a file given on the
command line. The program uses socket programming to communicate through the
OCSN with the fetch unit. It programs the fetch unit to use the host system at OCSN
port 100 as its RAM , and starts the processor core. After that it waits for RAM requests
from the fetch unit and serves the correct data.
Multiple programs were executed on the distributed processor core without any problems, such as a simple multiplication and printing the fibonacci progression of f ib(33).
The processor was also tested against the OCSN2BRAM component, which improves
execution speed because the RAM is not emulated in software. There are more performance improvements possible, such as implementing a small cache into the fetch unit or
106
10.3 Example Microcontroller Implementation for MRP
extending the number of registers by adding another register file component.
This example system shows, that is is possible to run complex distributed components
onto the MRP. The divided processor core easily fits into the five CEBs.
107
11 Conclusion
This thesis addresses the usage of partial runtime reconfiguration in a general-purpose
environment, such as standard personal computers. Such hybrid-hardware systems are
commonly used for high performance computing, single-purpose computers and multipurpose computers, but not in general-purpose computers yet. Image processing applications, simulation of electromagnetic fields, solid state physics and computer games
among others can benefit from this integration by bringing their own hardware accelerators. These accelerators can be simple filter algorithms implemented in hardware or
many streaming processors tightly interconnected. The requirements for hybrid hardware systems in general-purpose computing are different from high performance computing. Application software changes very fast in general-purpose computing. The processing tasks are very variable in contrast to high performance computing. Therefore, many
components in many different sizes have to be configured into the runtime reconfigurable
hardware. This requirement leads to the granularity problem of runtime reconfigurable
design flows. The effects of this problem can be reduced using the grouping and the granularity solution presented in Chapter 6. Platform independence is another requirement
in general-purpose computing because many CPU and FPGA vendors exist. OS integration is also very important to get a wide acceptance of the reconfigurable hardware
by developers and users.
In this thesis a multi FPGA framework, called MRP, is presented. It uses the granularity solution (Chapter 6) to build an easy extensible reconfigurable system for generalpurpose computing. In contrast to many other reconfigurable systems it supports a
packet switched network spanning multiple FPGAs. This network features fast interconnection links up to 4.8Gbit/s. It supports a bridge to 1Gbit/s Ethernet. Through
the Ethernet it is connectable to offboard host systems, such as a workstation or server.
An onboard host system using a PRHS SoC is also available. Operating system support for the OCSN is available, enabling users and developers to access any component
connected to the OCSN using BSD socket programming. This easy access supports
the platform independence because it standardises hardware access to a common API .
No other RS has this kind of OS integration. The MRP is divided into support and
reconfiguration platforms. The first provides access to FPGA board resources like RAM
or storage devices, while the second provides the runtime reconfigurability. The reconfiguration platform is implemented using the PR design flow of Xilinx Virtex5 FPGAs.
Therefore, it is partitioned into many same sized RMs, called CEBs. These CEBs are
interconnected using a CSN and a common signal interface. Through this buildup they
reduce the effects of the granularity solution. Components, to be used on the MRP,
have to be divided into smaller components fitting into a CEB. Through the CSN they
are interconnected to form the complex component again.
109
11 Conclusion
Chapter 10 evaluates the MRP according the area usage, maximum clock speed measurement and an example CPU based application.
The example MRP system, presented in this thesis, requires 75% of a Xilinx xc5vlx330
Virtex5 FPGA. The OCSN uses the most of this space (43.31%). But this investment in
area provides a very flexible and fast interconnection network with unique features. The
actual hardware providing the runtime reconfiguration uses 54.66% of the used area.
This area can be divided into 32.8% for the CEBs and 21.86% for the CSN . This is
a hardware overhead of 0.6, but there is still improvement potential by increasing the
number of CEBs per switch and optimizing the switch implementation.
Table 10.3 presents a matrix of the propagation delays of all possible CEB connections.
The minimum clock frequency for CEBs connected to one switch is 135MHz using sequential circuits only and 67MHz with at least one combinational circuit. The maximum
clock rates are 162MHz and 81MHz. Common clock rates for normal FPGA designs on
a Virtex5 range from 25MHz up to 200MHz for very optimised designs. Hence, the
measured minimum and maximum clock rates range in between. A reduced clock rate
is the price for the improved flexibility.
The last evaluation property is a complex example application. A 32bit microcontroller for teaching purposes has been ported to the MRP. It is divided into the five
CEBs, fetch unit, decode unit, control unit, register file and ALU . The fetch unit requests datawords from OCSN components providing RAM , such as the OCSN 2BRAM
device. It is even possible to emulate a RAM on the host system using a user space
program. An application on the host system loads the microcontroller program into
some RAM , instantiates all the microcontroller components within the MRP and starts
it. Programs like a simple multiplication or calculating the fibonacci progression run on
this distributed microcontroller without any problems.
This evaluation shows that the MRP fullfils the requirements for a RS in a generalpurpose environment. The implementation of the MRP can be seen as a success.
11.1 Outlook
The development of the MRP is finished, but many development steps to integrate
runtime reconfiguration into general-purpose computing need to be done.
OS support for runtime reconfiguration needs to be improved. At the moment reconfiguration is not part of any modern OS. Most research concerning this topic is done to
evaluate reconfiguration speed and schedule reconfigurable hardware like processes, but
this approach is not feasible at the moment because reconfiguration times are not fast
enough (see Table 1.1). Therefore, a more general approach would be better suited, such
as looking at reconfigurable hardware more like a memory resource, not like a process.
In this way reconfigurable hardware could be requested in a malloc style.
The MRP provides many CEBs for configuration. These CEBs are very similar to
the CLBs of the FPGA infrastructure. Another field of research could be to implement
a synthesis, placing and routing environment based on the MRP. The first step would
be to design a generic CEB component, which could be the target of the synthetisation
110
11.1 Outlook
process. The source of this process could be a hardware description in a HDL or even
a C program would be possible. Such a process enables the developer to optimise the
implementation from two different directions, from the hardware and software side.
Another research topic could be to implement runtime reconfigurable processors onto
the MRP. Some basic approaches to runtime reconfigurable processors have been made
by Dales[16], Hauser et al. [17], Razdan[18], Hallmanseder[15] and Niyonkuru[44]. These
approaches could be advanced and tested on the MRP because it provides the basic infrastructure for this research. The implemented microcontroller system is divided into
some individually reconfigurable CEB. This is a base requirement for all the reconfigurable processors.
111
Appendix
A OCSN Frame Types
Table A.1 shows all, at the moment assgined, frame types.
Type ID
Protocol
Description
0
MAC
1
2
ICMP
LED
3
DATA
4
5
CEB
ICAP
6
CSN SW
used at the data-link layer for identifying remote interfaces
and flow control
used at the application layer for ping like operation
application layer protocol for communication with LED component
application layer protocol for communication with RAM devices
application layer protocol for communucation with CEBs
application layer protocol for communication with ICAP devices
application layer protocol for communication with CSN
switch
Table A.1: used OCSN frame types
113
Bibliography
[1] Wikipedia, “14 nanometer — wikipedia, the free encyclopedia,” May 2014.
[Online]. Available: http://en.wikipedia.org/w/index.php?title=14 nanometer&
oldid=599971737
[2] Xilinx, Inc., Partial Reconfiguration User Guide, 2010, http://www.xilinx.com.
[3] ——, Virtex-5 FPGA User Guide, 2012, http://www.xilinx.com.
[4] D. Gohringer, M. Hubner, V. Schatz, and J. Becker, “Runtime adaptive multiprocessor system-on-chip: Rampsoc,” in Parallel and Distributed Processing, 2008.
IPDPS 2008. IEEE International Symposium on, Apr. 2008, pp. 1 –7.
[5] M. Eckert, “Fpga-based system virtual machines,” Ph.D. dissertation, HelmutSchmidt-Universit¨
at/Universit¨
at der Bundeswehr Hamburg, 2014.
[6] Convey Computer Corporation, Convey Personality Development Kit Reference
Manual, December 2010, http://www.conveycomputer.com.
[7] Xilinx Zynq Product brief, Xilinx Inc., Xilinx Inc., 2100 Logic Drive, San Jose,
CA 95124, USA. [Online]. Available: http://www.xilinx.com/products/silicondevices/soc/zynq-7000/
[8] G. E. Moore, “Cramming more components onto integrated circuits,” Electronics,
vol. 38, no. 8, pp. 114–117, 1965.
[9] M. Bohr, R. Chau, T. Ghani, and K. Mistry, “The high-k solution,” Spectrum,
IEEE, vol. 44, no. 10, pp. 29 –35, oct. 2007.
[10] Sun Microsystems, Inc., “Opensparc t2 processor design and verification users’s
guide,” November 2008, https://www.opensparc.net/.
[11] NVIDIA Corporation, “Nvidia’s next generation cuda compute architecture:
Fermi,” 2009, http://www.nvidia.com/.
[12] C. Kao, “Benefits of partial reconfiguration,” Xcell journal, vol. 55, pp. 65–67, 2005.
[13] J. Von Neumann, “First draft of a report on the edvac,” IEEE Annals of the History
of Computing, vol. 15, no. 4, pp. 27–75, 1993.
115
Bibliography
R atomTM = configurable processor,”
[14] K. Williston, “Roving reporter: Fpga + intel
http://embedded.communities.intel.com/community/en/hardware/blog/2010/12/
10/roving-reporter-fpga-intel-atom-configurable-processor, Dec. 2010. [Online].
Available:
http://embedded.communities.intel.com/community/en/hardware/
blog/2010/12/10/roving-reporter-fpga-intel-atom-configurable-processor
[15] D. Hallmannseder and B. Klauer, “Compilerunterst¨
utzung f¨
ur die Dynamische
Rekonfiguration eines Mikroprozessors,” in PII Workshop. Hamburg: Technische
Informatik, Helmut-Schmidt-Universit¨at, 2009.
[16] M. Dales, “The proteus processor - a conventional cpu with reconfigurable functionality,” in FPL ’99: Proceedings of the 9th International Workshop on FieldProgrammable Logic and Applications. London, UK: Springer-Verlag, 1999, pp.
431–437.
[17] J. R. Hauser and J. Wawrzynek, “Garp: A mips processor with a reconfigurable
coprocessor,” in Proceedings of the FCCM’97, 1997, pp. 12–21.
[18] R. Razdan, “Prisc: programmable reduced instruction set computers,” Ph.D. dissertation, Harvard University, Cambridge, MA, USA, 1994.
[19] D. Gohringer, M. Hubner, T. Perschke, and J. Becker, “New dimensions for multiprocessor architectures: On demand heterogeneity, infrastructure and performance
through reconfigurability; the rampsoc approach,” in Field Programmable Logic and
Applications, 2008. FPL 2008. International Conference on, Sep. 2008, pp. 495 –
498.
[20] B. Venners, Inside the Java Virtual Machine. New York, NY, USA: McGraw-Hill,
Inc., 1996.
[21] T. Schwederski and M. Jurczyk, Verbindungsnetze, ser. Leitf¨aden der Informatik.
Teubner, 1996.
[22] T.-Y. Feng, “A survey of interconnection networks,” Computer, vol. 14, no. 12, pp.
12–27, 1981.
[23] K. Compton and S. Hauck, “Reconfigurable computing: a survey of systems and
software,” ACM Computing Surveys, vol. 34, no. 2, pp. 171–210, 2002, an excellent
survey paper on reconfigurable computing.
[24] H.-D. Ebbinghaus, J. Flum, and W. Thomas, Einf¨
uhrung in die mathematische
Logik (5. Aufl.). Spektrum Akademischer Verlag, 2007.
¨
[25] K. Urbanski and R. Woitowitz, Digitaltechnik: ein Lehr- und Ubungsbuch,
ser.
Engineering online library. Springer, 2004.
[26] A. Otero, E. de la Torre, and T. Riesgo, “Dreams: A tool for the design of dynamically reconfigurable embedded and modular systems,” in Reconfigurable Computing
and FPGAs (ReConFig), 2012 International Conference on, 2012, pp. 1–8.
116
[27] Altera Product Catalog, Altera Inc. [Online]. Available: http://www.altera.com/
literature/sg/product-catalog.pdf
[28] D.
Bryant,
“Disrupting
the
data
center
to
create
the
digital
services
economy,”
June
2014.
[Online].
Available: https://communities.intel.com/community/itpeernetwork/datastack/blog/
2014/06/18/disrupting-the-data-center-to-create-the-digital-services-economy
[29] I. T. U. T. S. S. Itu-T, “X.200 : Information technology - open systems
interconnection - basic reference model: The basic model,” ISOIEC, no.
7498-1, p. 59, 1994. [Online]. Available: http://www.iso.org/iso/iso catalogue/
catalogue tc/catalogue detail.htm?csnumber=20269
[30] A. S. Tanenbaum, “Network protocols,” ACM Comput. Surv., vol. 13, no. 4, pp.
453–489, 1981.
[31] T. Bjerregaard and S. Mahadevan, “A survey of research and practices of
network-on-chip,” ACM Comput. Surv., vol. 38, no. 1, 2006. [Online]. Available:
http://doi.acm.org/http://doi.acm.org/10.1145/1132952.1132953
[32] K. C. Sevcik and M. J. Johnson, “Cycle time properties of the fddi token ring,”
IEEE Transactions on Software Engineering, vol. 13, 1987.
[33] W. H. Bahaa-El-Din and M. T. Liu, “Register-insertion: a protocol for the next
generation of ring local-area networks,” Computer networks and ISDN systems,
vol. 24, no. 5, pp. 349–366, 1992.
[34] H. Hellwagner and A. Reinefeld, SCI: Scalable Coherent Interface. Springer, 1999.
[35] G. Barnes, R. Brown, M. Kato, D. J. Kuck, D. Slotnick, and R. Stokes, “The illiac
iv computer,” Computers, IEEE Transactions on, vol. C-17, no. 8, pp. 746–757,
Aug 1968.
[36] R. Knecht, “Implementation of divide-and-conquer algorithms on multiprocessors,”
in Parallelism, Learning, Evolution, ser. Lecture Notes in Computer Science,
J. Becker, I. Eisele, and F. M¨
undemann, Eds. Springer Berlin Heidelberg, 1991, vol.
565, pp. 121–136. [Online]. Available: http://dx.doi.org/10.1007/3-540-55027-5 7
[37] N. Grebenjuk, “Conecting of ocsn to prhs framework,” Bachelor Thesis, Helmut
Schmid University, 2014.
[38] Wikipedia, “Linux — wikipedia, the free encyclopedia,” February 2014. [Online].
Available: http://en.wikipedia.org/w/index.php?title=Linux&oldid=597293747
[39] R. Biddappa, “Clock domain crossing,” The Cadence India Newsletter, pp. 2–8, May
2005. [Online]. Available: http://www.cadence.com/india/newsletters/icon 200505.pdf
117
Bibliography
[40] C. E. Cummings, “Simulation and synthesis techniques for asynchronous fifo design,” in SNUG 2002 (Synopsys Users Group Conference, San Jose, CA, 2002)
User Papers, 2002.
[41] A. Athavale and C. Christensen, High-speed serial I/O made simple.
[42] R. Love, Linux-Kernel-Handbuch: Leitfaden zu Design und Implementierung von
Kernel 2.6, ser. Open source library. Addison-Wesley, 2005.
[43] M. Ruffoni and A. Bogliolo, “Direct measures of path delays on commercial fpga
chips,” in Signal Propagation on Interconnects, 6th IEEE Workshop on. Proceedings,
may 2002, pp. 157 –159.
[44] A. Niyonkuru and H. C. Zeidler, “Designing a runtime reconfigurable processor for
general purpose applications,” in IPDPS, 2004.
118