ProcesoareSoftware -...

56
Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016 Procesoare Software

Transcript of ProcesoareSoftware -...

Page 1: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Procesoare Software

Page 2: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

IP Core IP = Intellectual Property Modul hardware sau componentaCPU, Ethernet MAC, controller memorie, DSP, etc in interiorul FPGA“Soft”•IP core implementat cu ajutorul resurselor logice FPGA. •Se pot crea oricate instante (in functie de capacitatea FPGA)•Se pot parametriza in momentul procesului de sinteza din cadrulfluxului de proiectare specific FPGA“Hard”IP core implement in circuitul integrat. Se conecteaza la resursele FPGA prin intermediul resurselor de rutare standard. Implica implementarea la nivel silicon-level circuit in aria reconfigurabila FPGA ( terminologieutilizata FPGA fabric).Configuratia este predeterminata de fabricantul FPGA, este mai ieftinsi mai eficient dar mai putin flexibil.

Exemple:PowerPC 405/440 CPU in Xilinx FX Multichannel SDRAM / DDR controllers in Spartan6DSP blocks in toate circuitele moderne Xilinx FPGA

Page 3: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Limbajele de descriere hardware (HDL) permit implementareaunitatilor Intellectual Property (IP) = IP cores = componentereutilizabile care descriu si implementeaza functionalitatihardware.

Firm IP cores

Au un grad mai mare de optimizare si sunt proiectate pentruun anumit circuit sau arhitectura. Sunt mai putin portabile de cat variantele soft coreAnantajele proiectarii folosind soft IP core:

•Design reuse - refolosirea unitatilor de proiect•Simplifica proiectarea updatarea si modificarea unui proiect•Foloseste modularitatea intr-un design

Page 4: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Tehnologia System-on-a-chip(SoC) reprezintă încapsularea într-un singur circuit integrat a a tuturor circuitelor electronice necesare pentru funcţionarea unui sistem (cum ar fi o camera digitală sau un telefon mobil).

De exemplu• include memorii RAM şi ROM, microprocesor, diferite tipuri de interfeţe pentru periferice, convertoare de date, logică de control, funcţii logice şi analogice, precum şi alte componente care alcatuiesc un sistem informatic complex.

Aplicaţia tipică a acestor circuite o regasim în domeniul “embedded systems”.

Fluxul de proiectare pentru SoC implică atât dezvoltare pe parte de hardware cât şi pe parte software pentru a controla unitatea de microprocessor, modulele DSP, perifericele, interfeţele, etc.

SoC pot fi implementate ca şi circuite de tip ASIC (circuite integrate pentru aplicaţii specifice - Application-Specific Integrated Circuit) sau utilizând circuite de tip FPGA (Field Programmable Gate Array care se pot configura cu scopul de a realiza orice circuit digital dorit.

Page 5: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

O definiţie foarte generală pentru un embedded systems

orice dispozitiv care include un computer programabil, dar fără a fi însă un computer de uz general. Mai mult, calculatoarele personale sunt folosite în mod uzual pentru a construi un sistem integrat.

Orice sistem care este realizat folosind un microprocesor este un embedded computing systems, ceea ce conduce la faptul că există numeroare produse în care se aplică acest tip de proiectare, cum ar fi automobile, telefoane mobile până la aparatura electrocasnică.

Proiectantul va gândi o platformă hardware şi va implementa partea de software care va realiza funcţia dorită.

Tot în procesul de proiectare vor trebui rezolvate problemele legate de resursele optime de care avem nevoie, eficientizarea consumului de putere, posibilitatea de upgradare a sistemului etc. Un embedded system nu va fi proiectat de sine stătător, el va implica spre exemplu şi parte mecanică sau analogică.

Page 6: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Proiectarea de embedded systems folosind componentele de tip FPGA prezintă numeroase avantaje.

•Circuitele se pot configura după procesul de fabricaţie, după ce au fost instalate într-un produs sau chiar şi în momentul în care produsul a fost livrat către utilizator.• Un FPGA va furniza proiectantului de embedded systemsresurse hardware programabile şi reconfigurabile. •FPGA-urile cunosc o dezvoltare rapidă atât din punct de vedere al capacităţii logice (dat de numărul de porţi logice echivalente) cât şi din punct de vedere al capabilităţilor funcţionale (dat de blocurile funcţionale integrate).•Ca rezultat al dezvoltării circuitelor, circuitele FPGA pot integra procesoare, controllere de memorie, multiplicatoare, interfete reţea etc.

Page 7: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Platforma FPGA

Specifica un circuit care include suficiente resurse şi funcţionalitate pentru a permite definirea şi implementarea unui sistem complex folosind un singur circuit.

Pâna de curând un circuit FPGA era privit ca o componentă folosită pentru a implementa circuite periferice.

O platformă FPGA este definită ca având un rol central într-un sistem de calcul. Un astfel de exemplu este platforma Zynq- de la firma Xilinx

Page 8: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Procesoare integrate în circuite de tip FPGAÎn acest domeniu se remarcă două tipuri de abordări:

•Procesoare “hard”- Familii de circuite FPGA care au integrat fizic un procesor în aria circuitului. •Procesoare “soft” care folosesc resursele generale ale circuitelor de tip FPGA. Un astfel de processor este descris într-un limbaj de descriere hardware – Hardware Description Language (HDL) cum ar fiVerilog sau VHDL, sau poate fi descris sub formă de netlist (listă de legaturi). Pentru ambele cazuri, memoriile locale, magistralele, controllerele de memorie, controllerele pentru periferice se crează folosind resursele logice interne reconfigurabile ale circuitelor de tip FPGA.•Procesoarele soft au avantajul flexibilităţii, al costului şi faptul că se pot cu usurinţă realiza sisteme multi-procesor. Faţă de procesoarele hard din circuitele FPGA, procesoarele soft au însă dezavantajul performanţelor, al ariei ocupate (tipic dat de resursele FPGA folosite pentru implementare) şi al puterii consumate.

Page 9: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Din Wikipedia:Un procesor soft (sau “softcore microprocessor”, sau “soft processor”) este implementat integral prin sinteza logica

- are o descriere configware-Poate fi implementat pe diferite suporturi (morphware) de ex: FPGA, CPLD.- este de fapt un program sursa pentru înscrierea într-un FPGA/CPLD. Programul sursa se numeste IP core.

Desi majoritatea sistemelor se bazeaza pe un singur “soft processor” tendinta actuala este de a “impacheta” mai multeastfel de procesoare soft/hard in acelasi “morphware” (de ex. FPGA) In cazul sistemelor “multi-core” resursele rar utilizatepot fi accesate intre toate nucleele (procesoarele) grupate intr-un “cluster” . Este valabila regula lui Jan: Jan's Razor: “In a chip multiprocessor design, strive to leave out all but the minimal kernel set of features from each processing element, so as to maximize processing elements per die”.

Page 10: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Explicare termeni: Morphware – paradigma noua introdusa in principal de disciplina embedded system design care vizeaza System on Chip (SoC). (alternativa la modelul care foloseste o platforma de calcul de uz general bazata pe memorie RAM)

Structural este hardware programabil, interconexiunile dintreblocurile logice si/sau blocurile functionale, cat si functiileacestor blocuri pot fi modificate individual prin downloading configware, in configuration memory (configuration RAM) pentruun chip morphware.

Este nevoie de 2 tipuri de surse de intrare: software pentruprogramarea fluxului de instructiuni si configware pentrureconfigurarea structurala.

Page 11: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Granularity – granularitatea Termenul se refera la data path width . Pentru FPGA folosirea unui element de procesare de 1 bit in cazul CLB configurable logic blocks = fine-grained computing or fine-grained reconfigurability.In cazul in care se folosesc resurse de 32 bits microprocessor CPUs sau data-stream-driven data path units (DPU) in rDPU = coarse-grained computing coarse-grained reconfigurability.

Page 12: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Page 13: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Page 14: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Implementarea SoC folosind procesoare soft în circuite de tip FPGA.

Studii de caz: familiile de circuite FPGA de la Xilinx, Altera si Lattice.

Ce trebuie să ştim pentru proiectare

• Familiile de circuite FPGA (resurse disponibile) de la fiecareproducător în parte.

• Uneltele de dezvoltare pentru proiecte care folosesc circuite de tip FPGA

• Procesoarele soft pe care le putem integra, arhitectura acestora, limbaj de programare, precum si uneltele de dezvoltare hardware/software

Procesoarele software se găsesc atât în variantă comercială, cât şi în varianta open-source. De asemenea, pot fi dezvoltate, proiectate şi optimizate pentru anumite familii de circuite, sau pot fi folosite în mod general. Anumite variante comerciale pot avea şi clone de tip open-source.

Page 15: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Exemple:

Page 16: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Selectarea unui procesor de tip soft core pentru implementareaintr-unFPGA tine cont de:•costul implementarii•Performantele de operatii•Puterea consumata•Design-ul si uneltele de dezvoltare•Considerente referitoare la sistemul de operare•Optiuni de debug si capabilitati

Costul tipic este unul dintre factorii cei mai importanti in proiecte. Este o combinatie intre costul hardware-ului si cel al dezvoltarii. Conteaza: reutilizarea, flexibilitatea, portabilitatea, rezistenta la invechire, efortuldepus la implementare si durata de invatare.

Pentru compararea performantelor: se foloseste un benchmark. In mod curent se foloseste DMIPS (Dhrystone Million Instructions Per Second) benchmark (care se bazeaza pe executia unui algoritm folosind un procesor pentru a masura capabilitatile de procesare intr-un timpdefinit).

Page 17: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Factori care se evalueaza:•Tipul si marimea memoriilor si a bus-ului•Marimea si tipul spatiului de adrese•Tipul si marimea pentru cache (Instruction/data)•Tipul de controlere cum ar fi DMA si structura de intreruperi•Capabilitati de accelerare hardware (functionalitate co-processor)•Unitati functionale cum ar fi registri si unitati de executieFactori care influenteaza puterea consumata: viteza operatiilor, numarul si tipul resurselor necesare pentru a implementa core-ul de soft processor, caracteristicile componentelor FPGA, puterea consumata, temperatura.

Procesul de debug•Simularea (behavioral si timing)•Analiza de timp•Analiza logicii integrate•Simularea software•Debugger software in timp real•Controlul porturilor de intrare/iesire•Interfata standardizata JTAG

Page 18: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Exemple de procesoare soft în varianta open-source

•S1 CoreResursele pentru acest procesor se găsesc la http://www.srisc.com/Reprezintă o implementare simplificată a arhitecturii SPARCv9 şi este un procesor pe 64 de biţi.•Leon4, Leon3 şi Leon2Este o implementare a arhitecturii SPAECv8 pe 32 de biţi. Descriereacompletă a resurselor se regăşeste la http://www.gaisler.com/•OpenRisc1200Procesor pe 32 de biţi cu arhitectura de tip OpenRISC 1000 dezvoltat de comunitatea OpenCores.org

•De la firma Lattice

•LatticeMico32 – 32 de biţi de la – open source şi nu este limitat numai pentru circuitele de la Lattice•LatticeMico8 – 8 biţi– open source şi nu este limitat numai pentrucircuitele de la Lattice

Page 19: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Exemple de procesoare soft în varianta comercialăFirma Altera•NIOS II – 32 de biţi în 3 variante de arhitecturi (NIOS II/f, NIOS II/s, NIOS II/e)– numai pentru circuitele de la AlteraFirma XilinxMicroBlaze – 32 de biţi – numai pentru circuitele de la Xilinx•PicoBlaze – 8 biţi – numai pentru circuitele de la Xilinx, dar este învariantă gratuită

Exemple de procesoare soft în varianta open-source care reprezintă clone ale procesoarelor soft comerciale•AeMB (clonă MicroBlaze)•OpenFire (clonă MicroBlaze)•PacoBlaze (clonă pentru procesorul PicoBlaze de la Xilinx)•Leros (clonă îmbunătăţită open-source pentru procesorul PicoBlaze)Din punct de vedere al arhitecturii, interesează în mod general:

•Numărul de cicli pentru executarea instrucţiunilor•Resursele necesare din circuitele FPGA pentru implementare •Unitate de calcul în virgulă mobilă, etc.

Page 20: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Studiu de caz: procesorul soft LerosProcesorul soft Leros este documentat pe site-ul OpenCores.org şiface parte din categoria procesoarelor de tip open-source

Un procesor de 16 biţi, optimizat pentru circuite de tip FPGA. Pentru a fi implementat, acesta consumă mai puţin de 200 de celule logice şi de 1 sau 2 memorii on-chip.

Este programat folosind un limbaj de asamblare si într-un subset de instrucţiuni în Java.

Autorul prezintă acest proiect ca un bun competitor cu procesorul soft PicoBlaze de la Xilinx, fiind o versiune îmbunătăţită a acestuia.

Avantaje:

•nu există restricţii pentru mărimea codului sau mărimea datelor.

•instrucţiunile se execută într-un singur clock, spre deosebire de PicoBlaze unde instrucţiunile se execută în 2 cicli de ceas.

Page 21: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Fluxul de proiectare constă din:

•Aplicaţia în Java (fişierul cod sursă cu extensia .java) este compilată folosind un compilator standard de Java (javac). Rezultatul este un fişier cu extensia .class care reprezintă intrarea în compilatorul Muvium care va genera un singur fişier cu extensia .asm => programul procesorului

Fişierul cu extensia .asm va fi intrare pentru asamblorul Leros care va genera un fişier cod sursă în VHDL, corespunzător memoriei program.

partea software dezvoltată pentru procesorul soft Leros. Partea hardware a procesorului Leros este dată de

fişierul Leros.vhdl – care reprezintă descrierea procesorului folosind limbajul de descriere hardware VHDL. Acest fişier face parte dintre resursele care se pot descărca de pe site-ul OpenCores.org.

Page 22: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Partea hardware şi partea software se vor reuni în continuare într-un proiect dezvoltat folosind uneltele de la Xilinx sau de la Altera (depinzând de circuitul pentru care se face această dezvoltare). Aceste unelte sunt Xilinx ISE şi respectiv Altera Quartus II.

Respectând fluxul de proiectare pentru aplicaţii în FPGA, se obtine un fişier de configurare care poate fi înscris într-un circuit FPGA. Vom avea astfel un sistem cu procesor intergat înFPGA.

Page 23: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Studiu de caz: procesorul soft PicoBlaze

dezvoltat de Ken Chapman, Xilinx

•PicoBlaze este descris în limbaj de descriere hardware, respectiv în limbajul VHDL sau Verilog.

De pe site-ul firmei (după ce există un cont utilizator cu parolă)se descarca arhiva care conţine toate resursele utile pentru dezvoltarea de proiecte, şi implicit fişierul cod sursă pentru descrierea procesorului (kcpsm6.vhd sau kcpsm6.v).

•procesor pe 8 biţi care poate să execute până la 4K instrucţiuni. Fiecare instrucţiune este pe 18 biţi şi fiecare instrucţiune se execută în 2 cicli de ceas. Frecvenţa maximă este dependentă de circuitul în care se integrează (de exemplu pentru Virtex-6, această frecventă de lucru este până la 240 Mhz)La fel ca la procesorul Leros, proiectarea presupune o parte software, una hardware, precum şi o integrare intr-un proiect pentru FPGA folosind uneltele de la Xilinx.

Page 24: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Microcontroller in FPGA – comparat cu logica implementata in FPGA

Page 25: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Proiectarea hardwareimplică decât folosirea fişierului cod sursă pentru descriereaprocesorului (kcpsm6.vhd sau kcpsm6.v).

Proiectarea software implicăscrierea unui cod sursă în limbaj de asamblare specific procesorului PicoBlaze. Acest cod sursă se va gasi într-un fişier cu extensia .psm.

Asamblarea acestui cod sursă folosind asamblorul kcpsm6.exe împreună cu 1 fişier template numit Rom_form.vhd sauRom_form.v (depinzând de formatul pe care îl dorim ca rezultat –descriere în limbajul VHDL sau Verilog)

Rezultatul asamblării va fi un fişier care descrie in cod VHDL sau Verilog memoria program.

Page 26: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

FLUXUL DE PROIECTARE - PICOBLAZE

Page 27: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Diagrama bloc pentru microprocesorul integrat PicoBlaze

PicoBlaze este cunoscut şi sub denumirea de KCPSM = Constant (k) Coded Programmable State Machine

Page 28: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Performanţe: PicoBlaze execută 44 până la 100 millioane de instrucţiuni pe secunda (MIPS) în funcţie de familia de circuite şi gradul de viteză (speed grade) – ceea ce înseamnă că este mult mai rapid decât microcontrolerele comerciale.

Dimensiunea minimă a logicii — PicoBlaze ocupă 192 celule logice (ceea ce reprezinta 5% din circuitul Spartan-3 XC3S200), 76 celule logice Spartan-IIE (adica 9% din XC2S50E si 2.5% din circuitul XC2S300E). Deoarece ocupă numai o fracţiune din circuitul FPGA, se pot integra mai multe “PicoBlaze” pe un astfel de circuit.

Are 100% capacităţi de integrare: PicoBlaze este total integrabil în FPGA sau CPLD şi nu necesită nicio resursa externă. Un alt avantaj ar fi acela că funcţionalitatea de bază poate fi extinsă prin conectarea logicii adiţionale la porturile de intrare/ieşire ale microcontrollerului.

Page 29: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

►Arhitectura PicoBlaze

►►Regiştrii de uz general: în număr de 16, specificaţi ca s0 - sF (pot fi redenumiţiîn asamblor). Toate operaţiile cu regiştri sunt complet flexibile, fără regiştri rezervaţi. Nu există acumulator, dar oricare registru poate fi folosit pe post de acumulator. Unitatea aritmetică logică (ALU) asigură toate operaţiile simple care sunt de aşteptatpentru o unitate de procesare de 8 biţi. (operatii aritmetice de baza, cum ar fiadunarea si scaderea; operatii logice, cum ar fi AND, OR sau XOR; operatii aritmeticela nivel de biti; operatii de deplarare si rotatii). Toate operaţiile folosesc operandul furnizat de orice registru iar rezultatul este returnataceluiaşi registru. Pentru operaţii ce necesita un al doilea operand, se va folosi un al doilea registru sau o valoare constantă de 8-biţi.Pentru operaţii care necesită mai mult de 8-biţi, adunare sau scădere există opţiuneade a include CARRY. Sunt disponibili operatori la nivel de bit: LOAD, AND, OR, XOR.Operaţiile ALU afectează flag-urile ZERO şi CARRY. Aceste informaţii determinăsecvenţa de execuţie a unui program folosind instrucţiunile condiţionale şi ne-condiţionale. JUMP – specifică adresa absolută în spaţiul de program; CALL siRETURN furnizează facilităţile sub-rutinelor. Comanda CALL este facută către o adresa absolută, în timp ce se salvează adresa de întoarcere în stiva contorului de program. Comanda RESET forţează procesorul să se întoarcă la starea iniţială. Programul este executat de la adresa 00 şi întreruperile sunt inactive. “Flag”-urile de status şi stivă CALL/RETURN sunt de asemenea resetate, dar de notat ca regiştrii nu sunt afectaţi.

Page 30: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

►►Intrări/IeşiriModulul PicoBlaze are 256 porturi de intrare şi 256 porturi de ieşire. O adresă de 8-biţi furnizată la magistrala PORT_ID împreună cu semnalele READ_STROBE sau WRITE_STROBE indică portul care este accesat. Adresa portului poate fi în program o valoare absolută, sau poate fi specificată în mod indirect fiind înscrisă într-unul dintre cei 16 regiştri. Adresarea indirectă este ideală pentru accesarea unui bloc de memorie. Pentru o operaţie de intrare (indicată de READ_STROBE), valoarea la portul de intrare este transferată către oricare din cei 16 regiştri. Pentru o operatie de ieşire (WRITE_STROBE), conţinutul oricărui registru din cele 16 este transferat la portul de ieşire. ►►ÎntreruperiProcesorul dispune de un singur semnal de întrerupere. Semnalul de întrerupere este implicit inactiv şi este controlat de program pentru a fi activat sau nu. Activarea unei întreruperi forţează PicoBlaze macro să iniţieze o subrutina “CALL FF” (care apelează ultima locaţie de memorie program).În mod automat se salvează flag-urile ZERO şi CARRY şi sunt inactivate întreruperile viitoare. O comandă specială RETURNI asigură ca la finalul servirii rutinei de întrerupere să se refacă starea tuturor flag-urilor şi să controleze activarea viitoarelor întreruperi. Modulul PicoBlaze poate fi privit ca o maşină de stare bazată pe constante (valori constante pentru operaţii în ALU, adrese constante pentru porturi, valori constante de adrese pentru controlul execuţiei unui program)Toate instrucţiunile, în toate condiţiile sunt executate în 2 cicli de ceas. Lungimea programului este de 1024 instrucţiuni. PicoBlaze este furnizat sub forma de cod VHDL (kcpsm.vhd), care nu se va modifica în niciun fel.

Page 31: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Declararea componentei KCPSM în VHDL

Instanţierea componentei KCPSM în VHDL

Interfata semnalelor microprocesorului PicoBlaze

Page 32: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

PicoBlaze-Setul de instrucţiuni pentru a descrie instrucţiunile:1. “X” si “Y” se referă la regiştrii de stocare “s” în intervalul 0 - F.2. “kk” – valori constante în intervalul 00 - FF.3. “aa” – adrese în intervalul 00 - FF.4. “pp” – adresa unui port în intervalul 00 - FF.

►►Grupul instrucţiunilor pentru controlul programului JUMP aaJUMP Z,aaJUMP NZ,aaJUMP C,aaJUMP NC,aaCALL aa //Call şi Return suportă o stivă până la 15 CALL Z,aaCALL NZ,aaCALL C,aaCALL NC,aaRETURNRETURN ZRETURN NZRETURN CRETURN NC

Page 33: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

►►Grupul instrucţiunilor logiceLOAD sX,kkAND sX,kkOR sX,kkXOR sX,kkLOAD sX,sYAND sX,sYOR sX,sYXOR sX,sY

►►Grupul instrucţiunilor aritmeticeADD sX,kkADDCY sX,kkSUB sX,kkSUBCY sX,kkADD sX,sYADDCY sX,sYSUB sX,sYSUBCY sX,sY

►►Grupul instrucţiunilor de rotire şi deplasare

SR0 sXSR1 sXSRX sXSRA sXRR sXSL0 sXSL1 sXSLX sXSLA sXRL sX

►►Input/Output GroupINPUT sX,ppINPUT sX,(sY)OUTPUT sX,ppOUTPUT sX,(sY)

►►Interrupt GroupRETURNI ENABLERETURNI DISABLEENABLE INTERRUPTDISABLE INTERRUPT

Page 34: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

► Uneltele de dezvoltare pentru aplicatii cu procesorul PicoBlaze

Exista doua tipuri de unelte de dezvoltare:

•program asamblor DOS numit Kcpsm3.exe; •o aplicatie cu interfata utilizator care include asamblor, set de instructiuni, posibilitatea de depanare a aplicatiei precum si vizualizare a continutului registrilor – Mediatronix pBlazeIDE

Page 35: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Mediatronix pBlazeIDEEste un program gratuit, cu interfata utilizator care se poate descarca de pe site-ul firmei Mediatronix http://www.mediatronix.com/pBlazeIDE.htm

Sintaxa si instructiunile pBlazeIDE sunt diferite de cea in care se foloseste asamblorul Xilinx KCPSM3.exe. Programul pBlazeIDE foloseste un convertor care importa surse KCPSM3 pentru a fi folosit in mediul pBlazeIDE. Pentru a realiza acest import se va folosi optiunea File->Importsi se selecteaza fisierul in format KCPSM3 - fisier.psm.

Page 36: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

VIVADO – Xilinx IDE

Dezvoltare de sisteme cu Procesorul Software Xilinx MicroBlaze

32-bit Reduced Instruction Set Computer (RISC)

Page 37: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Diagrama bloc – proiectarehardware

Generate Block Design Flow Navigator

Page 38: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Generate Bitstream (fisierul de configurare)

File -> Export -> Export Hardware…. Include bitstream ->OK.

Proiectarea software (programarea procesorului)File -> Launch SDK to open SDK.

Programarea procesorului in C/C++

Exemplu de program: aprinderea sistingerea led-urilor de pe placa NexysDigilent

Page 39: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Page 40: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Page 41: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

T h e A R M C o r t e x - M 0 P r o c e s s o r A r c h i t e c t u r e P a r t - 1

Studiu de caz - Procesoare software ARM

ARM- University Program

Page 42: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

ARM-based SoC An basic ARM-based SoC usually consists of An ARM processor, such as Cortex-M0; Advanced Microcontroller Bus Architecture (AMBA), e.g. AMBA3 or AMBA4; Physical IPs (or peripherals) from ARM or third parties; Additionally, some SoCs may have a more advanced architecture, such as multi-bus

system with bus bridge, DMA engine, clock and power management, etc…

SystemControl ROM Boot

ROM RAM ROMTable

AHBPeripheral

APBPeripheral

UART

Timers

Watchdog

AP

B B

us

DMA

Mux

Low latency AHB IOP

ARM AMBA 3 AHB-Lite System Bus AHB to APBBus bridge

ClockGenerator

PowerManagement Unit

JTAG/ Serial wire

RAM UART VGA GPIO Timer 7-segmentDisplay

ARM Cortex-M0Microprocessor

ARM AMBA 3 AHB-Lite System Bus

An example of ARM-based SoC

ARM- University Program

Page 43: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

What is ARM Architecture ARM architecture is a family of RISC-based processor architectures Well-known for its power efficiency; Hence widely used in mobile devices, such as smartphones, and tablets Designed and licensed to a wide eco-systems by ARM.

ARM Holdings The company designs ARM-based processors; Does not manufacture, but licenses designs to semiconductor partners who fabricate

and sell to their customers; Also offer other designs available, such as physical IPs, graphics cores, and

development tools.

Page 44: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

ARM Processor Families Cortex-A series (Application)

High performance processors for open Operating Systems;

Applications include smartphones, digital TV, smart books, home gateways;

Cortex-R series (Real-time) Exceptional performance for real-time applications; Applications include automotive braking systems,

powertrains;

Cortex-M series (Microcontroller) Cost-sensitive solutions for deterministic

microcontroller applications; Applications include microcontrollers, mixed signal

devices, smart sensors, automotive body electronics and airbags;

SecurCore series High security applications.

Previous classic processors Include ARM7, ARM9, ARM11 families

Cortex-A

Cortex-A57Cortex-A53

Cortex-A15Cortex-A9Cortex-A8Cortex-A7Cortex-A5

Cortex-R7Cortex-R5Cortex-R4

Cortex-M4Cortex-M3Cortex-M1Cortex-M0+Cortex-M0

SC000SC100SC300

ARM11ARM9ARM7

Cortex-R

Cortex-M

SecurCore

Classic

As of Sept 2013

Page 45: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Design an ARM-based SoC Select a set of IP cores from ARM or other third-party IP vendors;

Integrate IP cores into a single chip design;

Give design to semiconductor foundries for chip fabrication.

ARM-basedMCU Chip

ROM ARMprocessor RAM

System bus

Peripherals

External Interface

SoC

SoC Design Chip ManufactureLicensable IPs

IP librariesCortex-A9 Cortex-R5 Cortex-M0

ARM7 ARM9 ARM11

AXI bus AHB bus APB bus

GPIO I/O blocks Timer

DRAM ctrl FLASH ctrl SRAM ctrl

Page 46: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Design a Simple ARM-based SoC In this set of teaching materials we are going to design a simplified version of

ARM-based SoC and prototype it onto a FPGA chip. The SoC will consist only some basic components:

An ARM Cortex-M0 microprocessor;

A single AHB Lite bus;

Customer-made physical IPs;

SystemControl ROM Boot

ROM RAM ROMTable

AHBPeripheral

ARM AMBA 3 AHB-Lite System Bus

RAM UART VGA GPIO Timer 7-segmentDisplay

ARM Cortex-M0Microprocessor

ARM AMBA 3 AHB-Lite System Bus

EDK: A simplified ARM-based SoC

Page 47: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

ARM Cortex-M Series Family Cortex-M series: Cortex-M0, M0+, M1, M3, M4. Energy-efficiency Lower energy costs, longer battery life

Smaller code Lower silicon costs

Ease of use Faster software development and reuse

Embedded applications Smart metering, human interface devices, automotive and industrial control systems,

white goods, consumer products and medical instrumentation

As of Sept 2013

Page 48: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

ARM Cortex-M Series Family

Processor ARM

Architecture

CoreArchitect

ureThumb® Thum

b®-2

Hardware

Multiply

HardwareDivide

SaturatedMath

DSPExtens

ions

FloatingPoint

Cortex-M0 ARMv6-M Von Neumann Most Subs

et1 or 32 cycle No No No No

Cortex-M0+ ARMv6-M Von

Neumann Most Subset

1 or 32 cycle No No No No

Cortex-M1 ARMv6-M Von Neumann Most Subs

et3 or 33 cycle No No No No

Cortex-M3 ARMv7-M Harvard Entire Entire 1 cycle Yes Yes No No

Cortex-M4 ARMv7E-M Harvard Entire Entire 1 cycle Yes Yes Yes Optional

Page 49: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Cortex-M0 Processor The smallest ARM processor Exceptionally small silicon area Ultra-low gate count (approx. 12k gates at minimum configuration)

High code density Fundamental base of 16-bit Thumb instructions Additional powerful 32-bit instructions

Lower power 16µW/MHz (90LP process, minimal configuration)

Simplicity Only 56 instructions C friendly More deterministic response time

Uses ARMv6-M Architecture

Page 50: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Cortex-M0 Overview 32-bit Reduced Instruction Set Computing (RISC) processor

Von-Neumann architecture

Both data and instructions share a single bus interface;

Instruction set

56 instructions as a subset of Thumb-1 (16-bit) and Thumb-2 (16/ 32-bit);

Supported Interrupts

Non-maskable Interrupt (NMI) + 1 to 32 physical interrupts

Supports Sleep Modes

Page 51: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Cortex-M0 Block Diagram Processor core

Contains internal registers, the ALU, data path, and some control logics; Three-stage pipeline: fetch, decode, and execution; Registers include sixteen 32-bit registers for both general and special usages.

Nested Vectored Interrupt Controller (NVIC) Up to 32 interrupt request signals and a non-maskable interrupt (NMI); Automatically handles nested interrupts, such as comparing priorities between interrupt

requests and the current priority level;

Fetch Decode Execute

Fetch Decode Execute

Fetch Decode Execute

Instruction 1 Instruction

2 Instruction 3 Fetch Decode ExecuteInstruction

4Time

Page 52: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Cortex-M0 Registers Processor registers The internal registers are used to store and process temporary data within the

processor core; All registers are inside the processor core hence can be accessed more

quickly; Load-store architecture To process a data in the memory, they have to be loaded from the

memory to a register, processed inside the processor, and then written back to the memory if needed;

Cortex-M0 register Register bank Sixteen 32-bit registers (thirteen are used for general-purpose);

Special registers;

Page 53: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Cortex-M0 Registers R0 – R12: general purpose registers

Low registers (R0 – R7) can be accessed by any instruction; High registers (R8 – R12) sometimes cannot be accessed by

some Thumb instructions;

R13: Stack Pointer (SP) Records the current address of the stack Used for saving the context of a program while switching

between tasks Cortex-M0 has two SPs: Main SP, used in applications that

require privileged access e.g. OS kernel, and exception handlers, and Process SP, used in base-level application code (when not running an exception handler)

Program Counter (PC) Records the address of the current instruction code; Automatically incremented by 4 at each operation (for 32-bit

instruction code), except branching operations; A branching operation, such as function calls, will change the

PC to a specific address, meanwhile save the current PC to the Link Register (LR);

Data Data

PC

SP

Address

Low

High

PUSH POP

Stack

Code

Heap

Page 54: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Cortex-M0 Memory Map The Cortex-M0 processor has 4 GB of memory address space

The 4GB memory space is architecturally defined as a number of regions.

Each region is given for recommended usage;

Easy for software programmer to port between different devices.

Nevertheless, despite of the default memory map, the actual usage of the memory map can also be flexibly defined by the user, except some fixed memory addresses, such as internal private peripheral bus.

Page 55: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Cortex-M0 Endianness Endian refers to the order of bytes stored in the memory

Little endian: lowest byte of a word-size data is stored in the bit 0 to bit 7

Big endian: lowest byte of a word-size data is stored in the bit 24 to bit 31

Cortex-M0 supports both little endian and big endian

However, Endianness only exists in the hardware level

Byte0Byte1Byte2Byte3

Byte0Byte1Byte2Byte3

Byte0Byte1Byte2Byte3

0x00000000

0x00000004

0x00000008

Address [7:0][15:8][23:16][31:24]

Byte0 Byte1 Byte2 Byte3

Byte0 Byte1 Byte2 Byte3

Byte0 Byte1 Byte2 Byte3

[7:0][15:8][23:16][31:24]

Word 1

Word 2

Word 3

Word 1

Word 2

Word 3

Little endian 32-bit memory Big endian 32-bit memory

Page 56: ProcesoareSoftware - atm.neuro.pub.roatm.neuro.pub.ro/radu_d/html/09_10/src2009/1/draft_curs6.pdf · există numeroare produse în care se aplică acest tip de proiectare, cum ar

Ioana Dogaru, Radu Dogaru, Curs Sisteme Reconfigurabile de Calcul, Univ. Politehnica din Bucuresti, 2016

Cortex-M0 Exception Handling Exception Priority

The exceptions (or interrupts) are commonly divided into multiple levels of priorities;

A higher priority exception can be triggered and serviced during a lower priority exception;

Commonly known as a nested exception.

Exceptions can be disabled or enabled by software.

Cortex-M0 Interrupt Controller

Supports up to 32 IRQ inputs and a non-maskable interrupt (NMI) inputs;

NMI is similar to IRQ but cannot be disabled and has the highest priority, useful for safety critical systems such as industrial control or automotive.