Una introducció als sistemes en xip multiprocessadors, presentada com a treball de l'assignatura Electronica Integrada de 5e curs a Enginyeria La Salle, Barcelona.
This document describes a proposed Direct Memory Access controller (DMAC) architecture that is compliant with the Advanced Microcontroller Bus Architecture (AMBA) specification. The DMAC uses AMBA High-Performance Bus (AHB) and Advanced Peripheral Bus (APB) standards. It contains an AHB slave, APB master, and APB master module to allow parallel operations on the AHB and APB buses. The DMAC supports multi-channel operations, channel chaining, and uses an arbitration mechanism to prioritize channel access. It utilizes dual clock domains with an asynchronous FIFO and pulse synchronization for communications between domains.
SystemVerilog Assertions (SVA) in the Design/Verification ProcessDVClub
1) Visual SVA tools like Zazz allow designers to create complex SystemVerilog assertions through a graphical interface, addressing issues with SVA syntax.
2) Zazz also enables debugging assertions as they are created by generating constrained random tests, improving assertion quality before use in verification.
3) Using assertions improved the author's verification and debugging process, identifying errors sooner and in corner cases, and provided additional value to IP customers through early fault detection.
This Presentation will Clear the idea of non linear Data Structure and implementation of Tree by using array and pointer and also Explain the concept of Binary Search Tree (BST) with example
This document discusses queues as an abstract data type and their common implementations and operations. Queues follow first-in, first-out (FIFO) ordering, with new items added to the rear and removed from the front. Queues can be implemented using either arrays or linked lists. Array implementations involve tracking the front, rear, and size of the queue, with special logic needed when the rear reaches the end. Linked list implementations use head and tail pointers to reference the front and rear of the queue. Common queue operations like enqueue and dequeue are also described.
This document describes a proposed Direct Memory Access controller (DMAC) architecture that is compliant with the Advanced Microcontroller Bus Architecture (AMBA) specification. The DMAC uses AMBA High-Performance Bus (AHB) and Advanced Peripheral Bus (APB) standards. It contains an AHB slave, APB master, and APB master module to allow parallel operations on the AHB and APB buses. The DMAC supports multi-channel operations, channel chaining, and uses an arbitration mechanism to prioritize channel access. It utilizes dual clock domains with an asynchronous FIFO and pulse synchronization for communications between domains.
SystemVerilog Assertions (SVA) in the Design/Verification ProcessDVClub
1) Visual SVA tools like Zazz allow designers to create complex SystemVerilog assertions through a graphical interface, addressing issues with SVA syntax.
2) Zazz also enables debugging assertions as they are created by generating constrained random tests, improving assertion quality before use in verification.
3) Using assertions improved the author's verification and debugging process, identifying errors sooner and in corner cases, and provided additional value to IP customers through early fault detection.
This Presentation will Clear the idea of non linear Data Structure and implementation of Tree by using array and pointer and also Explain the concept of Binary Search Tree (BST) with example
This document discusses queues as an abstract data type and their common implementations and operations. Queues follow first-in, first-out (FIFO) ordering, with new items added to the rear and removed from the front. Queues can be implemented using either arrays or linked lists. Array implementations involve tracking the front, rear, and size of the queue, with special logic needed when the rear reaches the end. Linked list implementations use head and tail pointers to reference the front and rear of the queue. Common queue operations like enqueue and dequeue are also described.
2. MP-SoC
“Multiprocessor systems-on-chips (MP-SoCs) have
emerged in the past decade as an important class of
very large scale integration (VLSI) systems. An
MPSoC is a system-on-chip (a VLSI system that
incorporates most or all the components necessary
for an application) that uses multiple programmable
processors as system components. MPSoCs are
widely used in networking, communications, signal
processing, and multimedia among other
applications”
– Wayne Wolf, Fellow, IEEE, Ahmed Amine Jerraya, and
Grant Martin, Senior Member, IEEE
• http://www.cs.unc.edu/~montek/teaching/Comp790-Fall11/Home/Home_files/2008Wolf.pdf
domenec.sos.valles@gmail.com
3. “Coming soon to a screen near you”
ENTENENT FENT
• Introducció als MP-SoC • Eines
– Definicions. – Processadors soft-core.
– Estat de l'art. – Sistemes operatius.
– Arquitectura, HW i SW. – Busos i xarxes
– Procès dedisseny. – IP cores
– Reptes.
• NIOS II
• MP-SoC en Altera DE1 – Introducció ràpida.
– “Yes, you can”
• Curiositats
domenec.sos.valles@gmail.com
4. Presentacions
Please allow me to introduce myself
I'm a man of wealth and taste
I've been around for a long, long years
(...)
Pleased to meet you
Hope you guess my name
But what's puzzling you
Is the nature of my game
[Jagger, Richards et al. 1968]
1, 2, 3, TFC, 4, PSS+5... MGTI 5... 5... ¡5!
domenec.sos.valles@gmail.com
7. #chucknorrisfacts
• Chuck Norris escriu codi VHDL
que compila, simula i funciona en la DE2
sempre a la primera.
domenec.sos.valles@gmail.com
8. #chucknorrisfacts
• No som Chuck Norris
– VHDL és un descriptor (molt bo)... de hardware.
– Hi ha processos que es poden definir més simplement en llenguatges
seqüencials.
• int hw(FILE *f) {
return fprintf(f,“Hello, world!n”);
}
domenec.sos.valles@gmail.com
13. Característiques
El fet que un MPSoC és un multiprocessador significa que:
• El disseny de programari és una part inherent del disseny general del sistema.
No s'enten el disseny d'un MPSoC sense tenir en compte tant el hardware com
el software.
• El paral·lelisme és necessari per aprofitar els recursos disponibles de
computació.
El disseny de MPSoC és interessant i desafiant, ja que és una barreja de les
disciplines de disseny de maquinari i programari:
• Diferent de l'habitual programació paral·lela.
• Prenent avantatge de la integració: ample de banda, latència, major accés a la
memòria.
domenec.sos.valles@gmail.com
14. Característiques
El fet d'usar un multi-processador no només té implicacions de software, també en el
hardware:
• S'estableix una barrera de velocitat al voltant del 1GHZ. Més funcionalitat implicará
més paral·lelisme.
• S'obtenen beneficis en termes de consum energètic. Aquest és un aspecte clau en
un dels àmbits d'aplicació principal dels MPSoC, que són els dispositius mòbils.
– Exemple: Una CPU RISC única a 620MHz pot lliurar una capacitat de procés de
900MIPS al cost de consumir 365mW. Tres CPU RISC menors a 225MHz
poden donar cada una 330 MIPS consumint tan sols 32mW. S'obté un 10%
més de capacitat amb només un 25% del consum d'energia.
domenec.sos.valles@gmail.com
15. Aplicacions
• Es poden trobar exemples d'aplicació en sistemes prou coneguts
(productes i fotografies de 2006)
– Emotion Engine de la Sony Playstation 2
• 3 processadors (general purpose CPU, 2 vector processing
units)
– CELL processor de Sony, Toshiba, IBM (Playstation 3)
• 9 processadors (CPU de propòsit general, 8 elements de
procés)
– Nomadik (de ST) per mòbils Nokia
– ST7200 (de ST) per DVD o HDTV
• 5 processadors (CPU de propòsit general, 4 processadors
digitals de senyal)
– DaVinci (Texas Instrument) for cameras
• 3 processadors (CPU de propòsit general, 2 processadors
digitals de senyal)
– Diopsis D940 (ATMEL) processador paral·lel massiu (Petaflop)
• 3 processadors (CPU de propòsit general, 1 DSP VLIW, 1
processor de xarxa) × 2048
domenec.sos.valles@gmail.com
16. Tendències del mercat
• Onades tecnològiques
– D'on venim i on anem.
domenec.sos.valles@gmail.com
17. Tendències del mercat
• Les onades de Makimoto
– 1947 to 1957 : Dawn of Semiconductor Age
– 1957 to 1967 : Era of Transistor
– 1967 to 1977 : Era of IC/LSI
– 1977 to 1987 : Era of MPU/Memory
– 1987 to 1997 : Era of ASIC
– 1997 to 2007 : Era of Field Programmability
domenec.sos.valles@gmail.com
18. Tendències del mercat
• Les onades de Makimoto responen a un
pèndol, com les marees responen a la
lluna.
– Quan s'han assolit els màxims nivells de
costumització, el pèndol es començarà a
moure cap a l'estandarització per les
necessitats de rapidesa per arribar al
mercat, d'eficiència de cost i d'ficiència
operacional.
– En sentit invers, pot ajudar a moure la
necessitat de diferenciació, l'afegiment de
valor o desequilibris entre demanda i
provisionament. En sentit contrari a aquests
facilitadors reactius de canvi, per sota del
pèndol en cada un dels dos extrems
empenyen cap amunt els facilitadors
proactius de la tendència que expresa el
pèndol.
domenec.sos.valles@gmail.com
19. Tendències del mercat
• El cicle d'estandarització fins 2007 ha
de ser seguit per un cicle de
customització. Aquest cicle de 10
anys en què ens trobem ara
coincideix al seu temps amb el que
Steve Trimberger de Xilinx defineix
com la quarta edat de les FPGA, la de
l'especialització.
• Les quatre edats de les FPGA:
– 1. 1984-1991 Invenció
– 2. 1992-1999 Expansió
– 3. 2000-2007 Acumulació
– 4. 2008-2015 Especialització
domenec.sos.valles@gmail.com
20. I els estudiants?
• Com a futurs professionals, molts reptes, moltes opcions.
domenec.sos.valles@gmail.com
22. Arquitectura
• Per les característiques que s'han donat, és evident que
cal pensar tant en l'arquitectura de software com en la
de hardware.
– El maquinari es compon de:
• CPU
• Memòria
• IP cores (Intellectual Properties)
• Xarxa de comunicació
• Mecanismes de comunicació (DMA)
• Interfície de xarxa
• Perifèrics
– El programari s'està executant en aquesta
arquitectura
• En paral·lel
• Basant-se en el suport de maquinari per a la
sincronització, comunicació, coherència...
• Res que no s'hagi inventat.
domenec.sos.valles@gmail.com
23. Arquitectura hardware, components
• CPU
– CPU de propòsit general, DSP (VLIW), ASIP. Proveïdors i/o famílies de processadors: ARM, MIPS, SPARC, PowerPC,
Intel, Motorola, ST, tensile, ATMEL, ...
• Memòria
– Locals o globals, compartides o privades, cachès, distribuides
– Diferents tipus de tecnologia: ROM, DRAM, SRAM, SDRAM, Flash, ...
– Diferents tipus d'ús: memòria de dades i de programa, cachès, scratchpad (memòria interna d'alta velocitat per a càlculs)
• IP cores (Intellectual Properties)
– Components específics que acceleren una determinada tasca, lliurats pels proveïdors IP.
• Perifèrics
– Específics o estàndard d'I/O (ports sèrie o paral·lel, USB...)
• Xarxes de comunicació simple
– Busos (AHB, STbus...)
• Xarxa de comunicació d'alt rendiment
– NOC (Network on Chip) Una NoC interconnecta els processadors en el SoC
• Interfície de xarxa
– Component capaç de fer l'adaptació física i estructural entre una xarxa de comunicacions i un altre component (CPU, IP,
xarxa de comunicació...)
• DMA (Direct Memory Access)
– La DMA permet que certs subsistemes de maquinari puguin accedir a la memòria del sistema per a la lectura i/o escriure
independentment de la CPU. És comunament usat pel controlador de disc dur, gràfics i targetes de so, i en comunicació
intra-xip dins del MPSoC.
• Components implícits
– Controlador d'interrupcions, controlador de memòria, àrbitrador ...
domenec.sos.valles@gmail.com
24. Xarxa d'interconnexió
• En els busos (shared medium networks)
existeix un medi comú compartit on es
troben connectats a la vegada tots els
processadors presents en el sistema.
• En les xarxes es forma una topologia
basada en el conjunt de camins de
comunicació entre els diversos
processadors.
• En una xarxa directa cada processador té
un switch que usa per comunicar-se
directament amb els switches d'altres
processadors.
• En una xarxa indirecta el processador
s'associa a un switch que li dóna entrada a
la xarxa, dins de la qual poden haver un o
més switches d'enrutament no associats a
cap processador.
• Una xarxa híbrida té característiques
barrejades de les anteriors.
domenec.sos.valles@gmail.com
25. Exemples de topologia
• Shared bus
• Pipeline
• Crossbar switch
domenec.sos.valles@gmail.com
26. Exemples de topologia
• Xarxa de commutació de paquets.
• Spidergon (polígon aranya)
domenec.sos.valles@gmail.com
27. Exemples d'arquitectura hardware
• MPSoC acadèmic implementat sobre FPGA Stratix, on diversos processadors
(homogenis) Nios d'Altera es comuniquen usant un bus HIBI (hierarchical
segmented bus).
• La imatge correspon compresor MPEG-4.
domenec.sos.valles@gmail.com
28. Exemples d'arquitectura hardware
• Exemple heterogeni i comercial, a sota l'STi7200: Triple display, HDTV set-top box,
dual decoder per H.264 i VC-1, amb 150 millions de transistors.
domenec.sos.valles@gmail.com
29. Exemples d'arquitectura hardware
• Atmel Diopsis D940++, un DSP format per 9 "tiles", cada una amb un DSP i un DNP
(processador de xarxa) que les interconnecta mitjançant un spidergon.
domenec.sos.valles@gmail.com
31. Arquitectura SW: Capes
• Aplicació
– La capa d'aplicació pot ser una descripció multi-tasca o una funció
de tasca única de l'aplicació específica que s'executa en el
processador de software del subsistema.
– Una tasca o fil d'execució (thread) és un procés que funciona de
manera seqüencial.
– Múltiples tasques es poden executar en paral·lel per una sola CPU
o per múltiples CPUs
– En una sola CPU, el multithreading es produeix compartint talls de
temps (time slicing), on un sol processador dedica temps a
diverses tasques. Aquest canvi de context de les tasques és
administrat per un sistema operatiu.
domenec.sos.valles@gmail.com
32. Arquitectura SW: Capes
• Sistema Operatiu (OS)
– El sistema operatiu gestiona la distribució dels recursos de
l'arquitectura. És responsable de la inicialització i la gestió de les
tasques d'aplicació i la comunicació entre elles.
– Ofereix serveis com ara la programació en el temps de tasques,
canvi de context, sincronització i gestió d'interrupcions
domenec.sos.valles@gmail.com
33. Arquitectura SW: Capes
• Comunicació
– Aquesta capa s'encarrega de gestionar les operacions
d'entrada/sortida (I/O) i, en general la interacció amb els
components de maquinari i dels altres subsistemes.
– Pot incloure diferents protocols de comunicació implementats per
programari o per comunicació amb components de maquinari
dedicats (direct memory access, DMA).
domenec.sos.valles@gmail.com
34. Arquitectura SW: Capes
• HAL (Hardware Abstraction Layer)
– El HAL proporciona una interfície de programació única per
manipular els dispositius de maquinari. Per única s'entén que es
idèntica (segons un estàndard) amb independència del maquinari
que hi hagi per sota.
– El HAL és una capa prima de programari que depèn totalment del
tipus de processador que s'executarà el programari, però també
depèn dels recursos de maquinari que interactuen amb el
processador.
domenec.sos.valles@gmail.com
35. Necessitat d'una API
• Per estandaritzar accesos entre capes cal una convenció que defineixi quines
són les operacions, les dades que prenen d'entrada i sortida i l'efecte esperat
sobre el sistema. Això permet la portabilitat de tot allò desenvolupat sobre l'API.
• Una interfície de programació d'aplicacions (API) és una especificació basada en
codi font i destinada a ser utilitzada com una interfície de components de programari
per comunicar-se entre ells. Una API pot incloure especificacions per a les rutines
(funcions, procediments), estructures de dades, classes d'objectes i variables.
– Una especificació d'API pot prendre moltes formes, incloent un estàndard
internacional com POSIX o documentació del proveïdor, com ara l'API de
Microsoft Windows, o les biblioteques d'un llenguatge de programació, per
exemple, l'Standard Template Library de C++ o la Java API.
• Un exemple de portabilitat es la pròpia API de POSIX (Portable Operating System
Interface), usada tant en el món MPSoC com en el món Unix, on va nèixer com
estàndard de l'IEEE. Existeix una implementació anomenada Cygwin pels SO
Windows que permet executar software Unix en aquests SO.
domenec.sos.valles@gmail.com
36. Necessitat d'un toolchain
• A diferència dels microprocessadors convencionals, que tenen un joc d'instruccions
predefinit, quan es creen processadors a mida per un MPSoC és possible fer el
mateix per al joc d'instruccions que executen, que poden ser modificats segons les
necessitats del projecte (instruction set architectures, ISA). Exemples de
modificacions possibles són: El tamany del fitxer de registres de la CPU,
"endianness" (big o no), unitats funcionals especials (multiplicadors, DSP's...),
interfaces de memòria local, interfaces de memòria de sistema per connexions
directes al bus del xip, ports de debug o trace o JTAG...
• Atés que posteriorment s'han de compilar aplicacions per a que funcionin en una
ISA que no existia cinc minuts abans, cal bastir una metodologia que permeti facilitar
totes les eines necessàries en el nou joc d'instruccions, d'una forma simple i fins i tot
automatitzada.
• Del món open source i dels projectes GNU es pren el concepte de tool-chain, que és
la forma de generar les eines de desenvolupament d'una plataforma des d'una altra.
És el cas del sabor Unix NetBSD (el més portable gràcies a... si, premi! la seva HAL)
que genera totes les seves distribucions binàries a partir d'una plataforma i fa
compilacions a través de tool-chain. De forma simplificada, en la plataforma X es pot
crear un compilador de C cc que executa en X però genera codi per Y. A partir
d'aquí es construeixen tots els binaris necessaris per Y.
domenec.sos.valles@gmail.com
38. Procés tradicional vs pràctic
• Procés tradicional
– El procés de disseny tradicional té dos punts de
partida:
• La definició de la HAL API, habitualment donada
amb la pròpia plataforma de hardware.
• El particionat de l'aplicació, que consisteix a
determinar quines parts corresponen al disseny
de hardware i quines al disseny de software.
Procés pràctic
– En la realitat, la plataforma de hardware és massa
costosa de desenvolupar i es fa servir la que
faciliten els fabricants, amb característiques
definibles per l'usuari.
– El disseny de HW queda centrat en la disposició
dels blocs constructius disponibles en la tecnologia
triada.
domenec.sos.valles@gmail.com
39. Nivells d'abstracció
• Un nivell d'abtracció és una forma d'amagar els
detalls d'implementació d'una funcionalitat durant el
procés de disseny.
• Les necessitats de detall apareixen de forma
seqüencial en el procés de disseny, raó per la qual
no és necessari fer-ho tot a la vegada.
• A mesura que s'avanci en el disseny el nivell de
detall s'aproparà al detall final.
• Es distingeixen quatre nivells d'abstracció.
domenec.sos.valles@gmail.com
40. Nivells d'abstracció
• System architecture
– El particionat i mapejat de l'aplicació cap a l'arquitectura de destinació
– L'assignació de la comunicació entre els recursos de maquinari
disponibles.
• Virtual architecture
– Tansformar les funcions de l'aplicació en tasques de codi C.
– L'assignació de la comunicació als recursos de maquinari disponibles en
l'arquitectura final.
• Transaction-accurate architecture
– Integrar el sistema operatiu i el component de comunicació amb el codi de
les tasques de l'aplicació
– Adaptar el programari a la sincronització del protocol de comunicacions.
• Virtual prototype
– La integració de l'API de la HAL al programari
– L'establiment de l'assignació de memòria final.
domenec.sos.valles@gmail.com
42. Reptes estructurals
• La tecnologia disponible ve donada per les estructures que es
poden crear, que es poden tipificar segons paràmetres com la
quantitat de processadors i la mida dels circuits.
domenec.sos.valles@gmail.com
43. Reptes estructurals
• El número d'elements de procés té previst un creixement exponencial
en els propers anys. Per assolir-ho, serà necessari que els circuits
redueixin la mida dels seus elements.
domenec.sos.valles@gmail.com
44. Aspectes claus de l'arquitectura
• El número i les configuracions de processadors requerits per a l'aplicació.
• La seva homogeneïtat o la seva heterogeneïtat.
• Les comunicacions entre processadors, triar un mix adequat entre busos
estàndard, comunicacions punt a punt, memòria compartida i plantejaments
Network-on-Chip.
• Concurrència, sincronització, control i models de programació. Habitualment
serà apropiat usar més d'un model de programació.
• Jerarquies de memòria, tipus, quantitat i mètodes d'accés, junt a l'estimació de
la latència requerida.
• Modes especials d'operació i controls per a la reducció de la potència requerida
per tal de rebaixar el consum energètic.
• Escalabilitat del disseny i de la plataforma. A mesura que hi hagi major
capacitat d'integració, quants processadors es faran servir, 10, 100, 1000?
Cada quan s'haurà de fer un redisseny major de l'arquitectura?
• Particionat d'aplicacions, ús de les API i models de comunicació adequadts, i
eines EDA, ESL i ESW adequades per a l'exploració de l'espai de disseny.
domenec.sos.valles@gmail.com
45. Reptes de disseny
• Els reptes a l'hora de dissenyar un MPSoC sobre la
tecnologia disponible passen per:
– Disseny de maquinari (hardware, HW)
– Disseny de programari (software, SW)
– Validació tant de SW com de HW (és a dir, simulació)
– Integració (interfaces) de HW i SW
• Amb les següents restriccions
– Limitacions de temps (càlculs en temps real)
– Eficiència energètica
– Eficiència en l'ús de l'àrea del xip
– Capacitats de connexió I/O (input/output)
– ...
domenec.sos.valles@gmail.com
46. Reptes de disseny
• Interfaces de HW i SW
– Problemes de cost
• El software depenent de hardware és tediós de desenvolupar i
difícil de depurar i validar.
• El software no optimitzat té una major emprempta (footprint) i
per tant una major necessitat de memòria interna.
– Problemes de rendiment
• Una interface subòptima entre HW i SW introdueix latències no
desitjables.
• El processador, la cachè i la memòria interna són
responsables del major consum d'energia dins del sistema.
domenec.sos.valles@gmail.com
47. Reptes de disseny
• Models de programació
– Els dos aspectes que fan difícil de programar un MPSoC
son la concurrència i la por a la concurrència.
– Dins d'un MPSoC els diversos processadors es poden
asimilar a "un ramat de nyús corrent a través de d'una
sabana de recursos de memòria, comunicacions i consum
d'energia" (D. Sos et al, 2012).
– Els desenvolupadors de software acumulen 6 decades
d'experiència definint els algorismes com una seqüència
ordenada d'instruccions, però no han vist grups de més d'un
nyú d'aprop.
domenec.sos.valles@gmail.com
48. Reptes de disseny
• Models de programació
– Els multiprocessadors es dividiran en dues grans
categories:
• SMP (symmetric multi-processing)
• AMP (asymmetric multi-processing)
– Com a solució s'aplica:
• L'ús d'API com OpenMP o Message Passing Interface (MPI)
• Models estandaritzats de threads com POSIX.
• Buscar el mix adequat de tècniques.
domenec.sos.valles@gmail.com
49. Reptes de disseny
• Sincronització i control
– Apareixen problemàtiques similars a les dels sistemes operatius en temps
real (RTOS) pel que fa a prevenció del deadlock, inversió de prioritat,
gestió de la prioritat, etc. El dissenyador es pot plantejar:
• Es deixa el control de l'execució de les tasques a un RTOS o es
delega en un mecanisme d'scheduling a mida?
• Es dissenyen tasques que treballen altament i freqüentment
comunicades entre si i en processadors similars, o es comuniquen
amb missatgeria a alt nivell i infreqüentment en el temps tasques en
diversos dominis (com ara audio, video o comunicacions)
implementades en processados dedicats i específics?
– El sistema a més no és sempre el mateix, la recerca de l'eficiència pot
portar a executar operacions que alteren la seva pròpia arquitectura
dinàmicament:
• Apagar parts que no estan en ús per estalviar energia.
• Escalar el voltatge i la freqüència d'un processador segons se li
requereixi (el que es coneix com Dynamic Voltage and Frequency
Scaling, DVFS)
domenec.sos.valles@gmail.com
50. Reptes de disseny
• Depuració
– No importa l'ús de les millors metodologies, el disseny final del software
tard o d'hora s'ha de probar, sigui ja en una implementació real del MPSoC
o un model cycle-accurate. Es clau la disponibilitat d'eines que permetin
debugar el codi que s'executa.
– Ara bé, comparats amb un debugger tradicional, en un MPSoC les eines de
depuració han de suportar una depuració "multiparadigma", o en altres
paraules ser capaces de depurar entre diversos models de programació.
– Es trobaran subsistemes dèbilment acoblats que executen diverses parts
de l'aplicació, comunicant per mètodes diversos, usant jocs d'instruccions
tunejats, escrits en diversos llenguatges de programació...
– Oferir una vista coherent del sistema per fer possible arribar a les causes
dels problemes i treure'n l'entrellat no és una tasca trivial.
– La depuració concurrent és una tasca formidable.
domenec.sos.valles@gmail.com
51. MP-SoC en Altera DE1
"Yes, you can"
domenec.sos.valles@gmail.com
52. MP-SoC en Altera DE1
• Treball de fi de carrera d'un equip de dos estudiants
finlandesos.
– Tot en software open source.
– Vida més enllà de Quartus.
– Adaptat a les restriccions de l'entorn.
domenec.sos.valles@gmail.com
53. Hardware proposat
• Respecte al que ha descrit aquest estudi per MPSoC
tenim:
– Dos processadors independents, amb les seves memòries locals.
– Un HIBI per a la comunicació entre processos. HIBI és un NoC
avant-la-lettre, encara que en l'exemple l'enrutament entre dos
nodes és òbviament simple.
domenec.sos.valles@gmail.com
54. Tria de dispositius físics
• Processador Leon3
– http://en.wikipedia.org/wiki/LEON
– LEON is a 32-bit CPU microprocessor core, based on the SPARC-V8 RISC
architecture and instruction set. It was originally designed by the European Space
Research and Technology Centre (ESTEC), part of the European Space Agency
(ESA), and after that by Gaisler Research. It is described in synthesizable VHDL.
• Advanced Microcontroller Bus Architecture (AMBA)
– http://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture
– The Advanced Microcontroller Bus Architecture (AMBA) is used as the on-chip bus in
system-on-a-chip (SoC) designs. Since its inception, the scope of AMBA has gone far
beyond microcontroller devices, and is now widely used on a range of ASIC and SoC
parts including applications processors used in modern portable mobile devices like
smartphones.
• Heterogeneous IP Block Interconnection (HIBI)
– http://en.wikipedia.org/wiki/Open_Core_Protocol
– HIBI (Heterogeneous IP Block Interconnection) is a wrapper-based, scalable, and
parameterizable Network-onChip targeted for efficient integration of coarse grain (e.g.
several kilogates) components.
domenec.sos.valles@gmail.com
55. Compilació creuada
L'arquitectura desplegada corre sobre un compilador Sparc estrany i usa
un sistema operatiu encara més exòtic. Les possibilitats de trobar a
Google un link de download és escasa. Per això, tal i com es va
descriure a la introducció, es crea una cadena de compilació creuada.
• Compilar de forma creuada el propi sistema operatiu eCos per a
Leon3.
• Compilar les pròpies aplicacions en C per a la plataforma Leon3.
La compilació és una versió que executa en CygWin del compilador gcc
que genera codi binari per a Leon 3. La seva línia de comandes és
més que familiar, llevat del nom del binari gcc que indica per a quina
plataforma genera el codi.
$ sparc-elf-gcc -g -Ixyz_install/include -Lxyz_install/lib -Ttarget.ld
-nostdlib hello.c -o hello
Per a més abundància, el propi CygWin és una implementació POSIX
compliant per tenir eines Unix sobre Windows.
domenec.sos.valles@gmail.com
56. Sistema operatiu eCos
• L'ús d'un sistema operatiu permet tot un seguit de serveis
per al desenvolupador.
• La tria ha estat per eCos ve imposada per l'escasetat de
memòria, en tant que s'adapta a un marge entre desenes
i cents de KB.
• Respecte les capes, facilita la compatibilitat amb POSIX.
– http://en.wikipedia.org/wiki/ECos
– eCos (embedded configurable operating system) is a free and
open source real-time operating system intended for embedded
systems and applications which need only one process with
multiple threads. It is designed to be customizable to precise
application requirements of run-time performance and hardware
needs. It is implemented in C/C++ and has compatibility layers and
APIs for POSIX and µITRON.
domenec.sos.valles@gmail.com
59. Processadors soft-core
• Molts per triar i remenar!
• Però amb restriccions de tipus diversos...
domenec.sos.valles@gmail.com
60. Soft-cores de 64 bits
• S1 Core
– http://www.srisc.com/?s1
– Implementació open-source de l'arquitectura SPARCv9 de
64 bits, cosa que la fa única entre la resta. Va ser cedida
per Sun el 2006. Es una versió retallada de l'UltraSparc T1,
que amb prou feines cap en la majoria d'FPGA, molt menys
la versió original de 8 nuclis per a entorns crítics
domenec.sos.valles@gmail.com
62. Soft-cores de 16 bits
• Categoria que apareix una mica deserta, sembla que
hom opti o bé per anar en gran amb 32 bits o es
constrenyi a l'economia dels 8 bits.
• Hi ha un DSPuva16 de la Universidad de Valladolid,
però la pàgina del projecte fa temps que és morta.
domenec.sos.valles@gmail.com
63. Soft-cores de 8 bits
• PicoBlaze i PacoBlaze
– http://www.xilinx.com/products/ipcenter/picoblaze-S3-V2-Pro.htm
– http://bleyer.org/pacoblaze/
• LatticeMico8
– http://www.latticesemi.com/products/intellectualproperty/referenced
esigns/8bitmicrocontrollermico8.cfm
domenec.sos.valles@gmail.com
64. Màquines virtuals Java
• Java Optimized Processor (JOP)
– http://www.jopdesign.com/
– Completem el repàs dels possibles soft-cores amb una
opció un tant exòtica, com pot ser una màquina virtual Java
implementada directament en hardware. Els avantatges del
llenguatge Java sobre el C la fan no descartable, junt al fet
que funcioni en diversos sistemes en producció.
domenec.sos.valles@gmail.com
66. Sistemes operatius en temps real
• De sistemes operatius en temps real (Real Time
Operating Systems, RTOS) n'hi ha gran quantitat,
òbviament no només per soft-cores sino per tota
mena de processadors.
domenec.sos.valles@gmail.com
67. On es Linux?!
• Pròpiament dit, Linux no és un sistema operatiu en
temps real.
– http://www.ibm.com/developerworks/linux/library/l-real-
time-linux/
– Anatomy of real-time Linux architectures
– It's not that Linux® isn't fast or efficient, but in some cases
fast just isn't good enough. What's needed instead is the
ability to deterministically meet scheduling deadlines with
specific tolerances. Discover the various real-time Linux
alternatives and how they achieve real time from the early
architectures that mimic virtualization solutions to the
options available today in the standard 2.6 kernel.
domenec.sos.valles@gmail.com
68. Linux en Altera
• Per als Alteramaniàtics hi ha l'opció d'instal·lar un
Linux sobre Nios II.
– http://www.altera.com/devices/processor/nios2/tools/em
bed-partners/ni2-linux-partners.html
– With the introduction of a Memory Management Unit (MMU)
for the Nios® II processor, you have a wide range of Linux
providers from which to choose. From commercial support
from industry leaders to a free open-source distribution,
Altera’s embedded Linux partners offer the right level of
support for your Linux project.
domenec.sos.valles@gmail.com
70. Busos i xarxes
• Advanced Microcontroller Bus Architecture (AMBA)
– http://en.wikipedia.org/wiki/Advanced_Microcontroller_Bus_Architecture
– The Advanced Microcontroller Bus Architecture (AMBA) is used as the on-
chip bus in system-on-a-chip (SoC) designs. Since its inception, the scope
of AMBA has gone far beyond microcontroller devices, and is now widely
used on a range of ASIC and SoC parts including applications processors
used in modern portable mobile devices like smartphones.
• Avalon (Altera)
– http://en.wikipedia.org/wiki/Nios_II#Avalon_switch_fabric_interface
– Nios II uses the Avalon switch fabric as the interface to its embedded
peripherals. Compared to a traditional bus in a processor-based system,
which lets only one bus master access the bus at a time, the Avalon switch
fabric, using a slave-side arbitration scheme, lets multiple masters operate
simultaneously.
domenec.sos.valles@gmail.com
71. Busos i xarxes
• Wishbone
– http://en.wikipedia.org/wiki/Wishbone_(computer_bus)
– The Wishbone Bus is an open source hardware computer bus intended to let the
parts of an integrated circuit communicate with each other. The aim is to allow the
connection of differing cores to each other inside of a chip. The Wishbone Bus is used
by many designs in the OpenCores project.
– A large number of open-source designs for CPUs and auxiliary computer
peripherals have now been released with Wishbone interfaces. Many can
be found at OpenCores, a foundation that attempts to make open-source
hardware designs available.
• IBM CoreConnect
– http://en.wikipedia.org/wiki/CoreConnect
– CoreConnect is a microprocessor bus-architecture from IBM for system-on-
a-chip (SoC) designs. It was designed to ease the integration and reuse of
processor, system, and peripheral cores within standard and custom SoC
designs.
domenec.sos.valles@gmail.com
72. Busos i xarxes
• Open Core Protocol
– http://www.ocpip.org/
– As seen in:
• Apple MacBook Air
• Blackberry Playbook
• Tablets iOS: Apple iPad / iPad 2
• Tablets Android: Motorola Xoom i Samsung Galaxy Tab
• Media players: Apple iPod Touch, Viliv X7, iRiver
• Televisors: Toshiba, Samsung
• Telèfons Android: HTC Evo, HTC Desire, Samsung Galaxy, Google
Nexus One
• Telèfons iOS: Apple iPhone 4.
• Telèfons diversos: Nokia N810, Palm Pre 2 i molts altres.
• Routers: Linksys, Buffalo, Apple Airport i més.
• Gaming: Nintendo Wii, Sony Playstation 2 i 3.
• HD set top boxes: Vudu XL, Apple TV.
• Netflix: Roku player.
domenec.sos.valles@gmail.com
73. Busos i xarxes
• Xpipes
– Projecte universitari (2002) de conmutació de paquets en una NoC.
– Concepte de Network Interface (NI), que abstreu el nucli connectat dels
detalls de funcionament de la xarxa (paquetització transparent als
components que segueixen treballant amb canals continus de dades).
– La interfície NI utilitza OCP com a protocol de comunicacions punt a punt.
– Capacity planning dels enllaços.
domenec.sos.valles@gmail.com
75. IP-cores
• Un IP-core (nucli de propietat intelectual, també dit
IP-block) és al disseny microelectrònic el que una
llibreria de codi és a l'escriptura d'una aplicació de
software:
• Un component desenvolupat i llicenciat per qui en té
la propietat intelectual i usat en dissenys de tercers,
tant per ASICs com per FPGAs.
• El terme deriva de la importància que té en aquest
mercat la propietat intellectual, transmesa tant per
llicenciament comercial com per llicències de
programari lliure.
• Soft-cores i hard-cores.
domenec.sos.valles@gmail.com
76. Ip-cores, hard & soft. Core, not ware
• Hard-core
– Analògics o digitals
– Es donen com a layouts de transistors fortament orientats a
la tecnologia i processos de fabricació del foundry (fàbrica
de chips) encarregada de crear el sistema físic.
– Això pot aportar avantatges quant als recursos consumits
en el chip o la predictabilitat dels timings, però fa
pràcticament inviable que el dissenyador que usa el core
pugui comprendre el seu funcionament i/o modificar-lo.
domenec.sos.valles@gmail.com
77. Ip-cores, hard & soft. Core, not ware
• Soft-core
– Descripcions en un llenguatge d'alt nivell de descripció de
hardware (HDL) que els fa portables a tots els dispositius
que suporten síntesi des d'aquests llenguatges.
– També és possible que s'entreguin com un netlist RTL,
l'expressió en àlgebra booleana del procés. Amb aquestsa
opció l'IP-core és virtualment portable a cada tecnologia.
– S'ha fet l'analogia que el netlist equival al llenguatge
ensamblador del software (discutible, els llenguatges d'alt
nivell són portables via compilador, l'ensamblador depén del
processador).
– A la fi, la classificació com a soft-core depén de que en el
flux de disseny es puguin seguir les etapes de síntesi,
emplaçament i encaminament de les connexions.
domenec.sos.valles@gmail.com
78. Soft-cores
• Dins dels soft-cores es pot fer una distinció basada
en la programabilitat o no del nucli:
– Els soft-core més importants són els microprocessors, el
que no treu que es complementin amb controladors de
perifèrics com ara SDRAM, ethernet, display LCD, audio
AC'97 i USB. Aquests al seu temps poden requerir
interfícies per rebre senyals analògiques, d'alt voltatge,
externes al chip o no, etc.
– Per contra, hi ha dispositius no programables que realitzen
tasques fixes per hardware, prenent avantatge del procés
paral·lel front al procés seqüencial, com poden ser
decodificació d'audio MP3, GPU 3D, decodificació digital de
vídeo, i funcions DSP com FFT, DCT, o codificació Viterbi.
domenec.sos.valles@gmail.com
79. Soft-cores
• Tipus de soft-cores
– http://en.wikipedia.org/wiki/List_of_semiconductor_IP_core_vendors
Analog-to-Digital Converters I/O pad libraries Radiation hardened
Broadband modem and error MIPI Security
correction Mobile Storage Serial ATA (SATA) controllers
Chip interconnection integrity NAND Flash memory controllers Standard cell libraries
Decimal Floating Point Arithmetic NAND Flash memory PHYs USB controllers
Digital Audio On-chip SRAMs Video processors and computer
Digital to Analog Converters On-chip non-volatile memory graphics
DRAM controllers i DRAM PHYs On-chip Bus Video Decoder
Ethernet interface controllers Phase Locked Loops (PLLs) Wi-Fi interface controllers
Ethernet PHYs Power Management External links
General purpose microprocessors Process monitoring and
HDMI characterization
ISP
domenec.sos.valles@gmail.com
80. Proveidors d'IP-cores
• Altera
– Altera organitza tot el seu ecosistema d'IP-cores a travès
del programa de partners, descrit en la seva pàgina web, de
caracter comercial de preferència.
– http://www.altera.com/products/ip/design/ipm-design.html
– Designing With Altera Intellectual Property
• Altera and its third-party intellectual property (IP) partners offer
a large selection of off-the-shelf IP cores optimized for Altera®
devices. All Altera IP cores are rigorously tested and optimized
for the highest performance and lowest cost in Altera's
programmable logic devices (PLDs). You can implement these
parameterized blocks of IP easily, reducing design and test
time.
domenec.sos.valles@gmail.com
81. Proveidors d'IP-cores
• Aeroflex Gaysler GRLIB IP Library
– http://www.gaisler.com/cms/index.php?
option=com_content&task=section&id=13&Itemid=125
• The GRLIB IP Library is an integrated set of reusable IP cores,
designed for system-on-chip (SOC) development. The IP cores are
centered around the common on-chip bus, and use a coherent method
for simulation and synthesis. The library is vendor independent, with
support for different CAD tools and target technologies. A unique
plug&play method is used to configure and connect the IP cores
without the need to modify any global resources.
• The library includes cores for AMBA AHB/APB control, the LEON3
SPARC processor, 32-bit PC133 SDRAM controller, 32-bit PCI bridge
with DMA, 10/100/1000 Mbit Ethernet MAC, 8/16/32-bit PROM and
SRAM controller, 16/32/64-bit DDR/DDR2 controllers, USB-2.0 host
and device controllers, CAN controller, TAP controller, SPI, I2C, ATA,
UART with FIFO, modular timer unit, interrupt controller, and a 32-bit
GPIO port. Memory and pad generators are available for Virage, Xilinx,
UMC, Atmel, Altera, Actel and Lattice.
domenec.sos.valles@gmail.com
82. Proveidors d'IP-cores
• OpenCores.org
– http://opencores.org/
• Finalment, l'alternativa open-source, el SourceForge d'aquest
món.
• Amb tots els aspectes bons i millorables d'aquestes iniciatives
que mereixen tota mena d'elogis.
• Més que una descripció estructurada i corporativa es
recomana entrar, cercar, i disfrutar :-)
• Actulment el projecte destacat d'OpenCores és la plataforma
OpenRISC 1200, al voltant d'un processador soft-core propi
OpenRISC 1000 que permet desenvolupaments de SoC i de
MPSoC
domenec.sos.valles@gmail.com
83. Proveidors d'IP-cores
OpenRISC1200 platform
– http://orsoc.se/openrisc1200-platform-2/
• The OpenRISC platform is a open-source processor platform
that provides many important advantages compared to other
commercial solutions.
• The platform is built around the worlds only LGPL-licensed
processor, the OpenRISC 32-bit processor developed at
OpenCores.org
domenec.sos.valles@gmail.com
84. Proveidors d'IP-cores
• OpenRISC SoC FPGA development board
– http://opencores.org/or1k/Ordb2a-ep4ce22
• This Altera FPGA board has been designed to fit OpenRISC
processor SoC designs perfectly, meaning that we have
focused on making sure that it supports the most
common/wanted interfaces, and that it's still expandable
through two GPIO connectors located on the bottom side.
• Another focus has been to make this board a low-cost product,
since the goal with this board is to spread the OpenRISC
processor platform and to enable more hardware and software
engineers to easily get started using the OpenRISC processor.
domenec.sos.valles@gmail.com
85. Acceleració hardware
• Una última eina que val la pena comentar és
l'acceleració hardware d'algorismes desenvolupats
en llenguatges tradicionals de programació
seqüencial, no pas en els llenguatges de descripció
de hardware.
• A grans trets, es pren un algorisme en C/C++ o un
subconjunt d'aquest llenguatge i es transforma en
codi VHDL automàgicament. De nou, hi ha
alternatives Open-source i comercials.
• Els motius per usar aquesta aproximació poden
variar des de l'estalvi d'esforç de disseny fins a la
necessitat peremptòria d'assolir velocitats de procés
inabastables en processadors seqüencials genèrics.
domenec.sos.valles@gmail.com
86. Acceleració hardware
• Nios II C-to-Hardware Acceleration Compiler
– http://www.altera.com/devices/processor/nios2/tools/c2h/ni2-
c2h.html
– The award winning Nios® II embedded processor C-to-
Hardware (C2H) acceleration compiler is a tool that boosts the
performance of your time-critical ANSI C functions by
converting them into hardware accelerators in the FPGA.
– Features
• Push-button acceleration of ANSI/ISO C code
• GHz performance with mW power consumption
• Tight integration with software design flow
• Direct connection of hardware accelerators to CPU's memory map
• Seamless support for pointers and arrays
• Efficient latency-aware scheduling and pipelining of memory
transactions
domenec.sos.valles@gmail.com
87. Acceleració hardware
• SystemC
– http://www.systemc.org/home/
– Welcome to Accellera Systems Initiative
– Formed by the merger of industry standards bodies
Accellera and Open SystemC Initiative (OSCI), our technical
committees work diligently to develop standards that
address the real needs of system and semiconductor
designers who must find new and smarter ways develop
increasingly complex chips for today’s products.
domenec.sos.valles@gmail.com
88. Acceleració hardware
• Open source, and free as in free beer:
• Jacquard Computing ROCCC 2.0
– http://www.jacquardcomputing.com/roccc/
– ROCCC 2.0 (Riverside Optimizing Compiler for Configurable Computing) is
a C to HDL compilation framework specifically focused on FPGA-based
code acceleration from a subset of the C language.
– Unlike similar tools designed for high-level synthesis, ROCCC 2.0 does not
focus on the generation of arbitrary hardware circuits. Rather, its focus is
on compile time transformations and optimizations aimed at providing an
application substantial speedup by replacing regions in software with a
dedicated hardware component.
• FPGAC
– http://fpgac.sourceforge.net/
– Molt més modest en organització, però actiu.
domenec.sos.valles@gmail.com
99. Arduino en FPGA
• http://gadgetforge.gadgetfactory.net/gf/project/wiringide/
– The Butterfly Wiring-Arduino IDE is a specially modified version of the Arduino
IDE that supports the AVR8 Soft Processor and the Butterfly Platform FPGA
development boards. Many Arduino sketches can run with no modification.
• Why?
– Why would you want to run the Arduino IDE on an FPGA? The answer is rapid
prototyping without limits. An FPGA is like a clean slate just waiting to become
anything you want.
• Features
– Works with existing Arduino sketches, anything that doesn't use analog should
compile.
– Familiar Arduino user interface.
– No special FPGA knowledge required, no HDL or synthesis tools to learn.
– Uses the AVR8 Soft Processor which is an Open Source RISC processor that
implements all the registers and instructions of an ATmega103 processor.
– AVR8 supports UART, timers, PWM, and interrupts.
– Everything from the processor to the IDE is Open Source and customizable. If
you need more digital I/O or more PWM's then you can just modify the source.
domenec.sos.valles@gmail.com
100. (c) 1982 Sinclair Research Ltd
• http://zxgate.sourceforge.net/
• ZXGATE - Old Computers in new FPGAs
• This projects original intention was to make an updated version of
Bodo Wenzels ZX97 ZX81 clone. All FPGA implementations have
been done in VHDL and the source code can be downloaded from this
projects CVS repository.
• Available systems:
– ZX81
– ZX Spectrum
– Jupiter ACE
– TRS80
• http://mikestirling.co.uk/2010/11/zx-spectrum-on-altera-de1-
source-code/
– Mike Stirling ha implementar un Sinclair ZX Spectrum en una
Altera DE1 que implementa un soft-core T80 en el lloc del Z80
físic.
domenec.sos.valles@gmail.com
101. FPGA Arcade
• http://www.fpgaarcade.com/
• Programmable Gaming Hardware
• This site is about recreating gaming hardware from the past in modern
programmable devices, known as FPGAs. Please see the FAQ page
for a more detailed discussion and commonly asked questions.
• The latest varients of the Opencores T65 and T80 cpu cores can be
found on the Library page
domenec.sos.valles@gmail.com
103. Bibliografia
• Katalin Popovici, Frédéric Rousseau, Ahmed A. Jerraya i Marilyn Wolf Embedded Software Design and Programming of Multiprocessor
System-on-Chip New York: Springer Science+Business Media, LLC 2010.
• Katalin Popovici i Ahmed Jerraya "Hardware Abstraction Layer, Introduction and Overview" Hardware-dependent software, principles and
practice. Springer Science + Business Media B.V. 2009
• Rainer Leupers, Olivier Temam Processor and System-on-Chip Simulation New York: Springer Science+Business Media, LLC 2010.
• Heikki Kariniemi On-line reconfigurable extended generalized fat tree Network-on-Chip for MPSoC Tampere university of technology.
Publication 614
• Davide Bertozzi and Luca Benini Xpipes: A Network-on-Chip Architecture for Gigascale Systems-on-Chip IEEE Circuits and Systems
Magazine 2004
• Harel Friedman, Ran Ginosar Advanced topics for NoC Seminar in VLSI architectures (048879), EE Department Technion, Haifa, Israel.
• Martin, G. Tensilica, Inc., Santa Clara, CA "Overview of the MPSoC design challenge" Design Automation Conference, 2006 43rd ACM/IEEE
2006 pàg 274 – 279.
• Hannu Penttinen, Tapio Koskinen Altera Innovate Nordic 2007: Leon3 MP on Altera FPGA, Final Report Tampere University of Technology
2007
• Olli Lehtoranta et al. "A parallel MPEG-4 encoder for FPGA based multiprocessor SoC" International Conference on Field Programmable
Logic and Applications, 2005. 24-26 agost 2005, pàg 380 – 385.
• Erno Salminen et al. Hämäläinen HIBI-based Multiprocessor SoC on FPGA Institute of Digital and Computer Systems, Tampere University of
Technology
• Pong P. Chu Embedded SoPC System with Altera NiosII Processor and VHDL Examples Wiley 2011
• Syed Zahid Ahmed, Gilles Sassatelli, Lionel Torres, Laurent Rougé Survey of new trends in Industry for Programmable hardware: FPGAs,
MPPAs, MPSoCs, Structured ASICs, eFPGAs and new wave of innovation in FPGAs 20th International Conference on Field Programmable
Logic and Applications Milano, ITALY, Aug. 31st - Sep. 2Nd, 2010
• Tsugio Makimoto The Hot Decade of Field Programmable Technologies Sony Corporation
• Frédéric Rousseau, Frédéric Pétrot MPSoC From System Specification to Hardware/Software Implementation TIMA Grenoble
nd
• Steve Furber ARM system-on-chip architecture (2 Edition) Addison Wesley 2000
• Anthony J. Massa Embedded Software development with eCos Prentice Hall, NJ 2002
domenec.sos.valles@gmail.com