Skriv ut

Göran BilskiGöran Bilskis Microblaze – en strålande kärna i väst

En av världens mest använda processorer skapades som ett ”skunk work”. Idag görs utvecklingsarbetet av fyra personer på Xilinx kontor i Göteborg.
–  Varje gång jag besöker ett företag kryper det fram att de använder Microblaze någonstans. Jag skulle tippa att de flesta av Xilinx kunder använder den på något sätt, säger Göran Bilski.

Men eftersom det inte finns några licensavgifter eller något krav på att redovisa hur processorn används är det svårt att vara hundraprocentigt säker.

Dessutom kan det mycket väl finnas två, tre eller fler processorer i en och samma FPGA. En av processorerna kör operativsystemet och de andra avlastar den genom att till exempel ta hand om kommunikationen med omvärlden.

Även internt på Xilinx är Microblaze flitigt använd, både som hjälpreda i olika IP-block och för att avlusa nya generationer av FPGA-kretsarna.

– Det är ofta Microblaze som säger ”Hello World”. Den är såpass hårt optimerad för FPGA:an och använder väldigt många av delarna, att det är ett snabbt sätt att testa en ny kretsfamilj.

Processorns prestanda är dock inte bländande. I en minimalistisk variant och med full klockhastighet på FPGA:an når den runt 400 DMIPS. Storheten ligger istället i enkelheten och möjligheten att konfigurera den efter behov. Krävs det högre prestanda väljer man antingen den nya Zynqfamiljen med hård Arm-kärna eller så slänger man in en eller två extra Microblaze.

– Processorn kommer att bli samma typ av byggblock som minnen, man kommer att strö dem omkring sig.

Den första varianten av Microblaze släppes år 2001, ungefär ett år efter det att Göran Bilski flyttat till San José, Kalifornien, för att arbeta med framtida produkter på Xilinx marknadsavdelning.

– När jag anställdes sa min chef att jag inte skulle skriva en enda rad VHDL-kod.

GÖRAN BILSKI
Titel:
Principal Engineer.
Född: 1964.
Bor: Mölndal.
Familj: Två barn
(Henrik och Katarina).
Karriär: Saab Ericsson Space (1988–93), TietoEnator (1993–2000), Xilinx (2000–).
Intressen: Innebandy, hockey-
bockey, datorspel.
Drog fram den ur lådan
Men har man arbetat med processorer först på Saab Ericsson Space och sedan på Tieto Enator är det svårt att hålla fingrarna borta. När konkurrenten Altera runt millennieskiftet började prata om Nios, en mjuk processor, fick det fart även på Xilinx.

Företaget hade redan en produkt som kombinerade hårda processorer i form av PowerPC-kärnor med programmerbar logik. Men problem kring rättigheterna till processorn i kombination med att den var stor gjorde det svårt att ta fram en mjuk variant. Ett alternativ var såklart att köpa något och Xilinx tittade på några olika alternativ.

– Då drog jag fram min lilla 16-bitarsprocessor som jag utvecklat på min lediga tid.

Xilinx gillade den och bestämde sig för att bygga vidare på den för att ta fram en 32-bitarsvariant. Microblaze, som är en klassisk risc-arkitektur, utvecklades under hösten 2000 och vintern 2001 för att lanseras senare på året. Därefer har det rullat på och nya funktioner har adderats allt eftersom.

– 2003 ville min dåvarande fru flytta hem. Xilinx ville att jag skulle fortsätta jobba för dem, så i två år satt jag hemma i källaren. Men det var inte hållbart i längden med nio timmars tidsskillnad till USA.

Lösningen blev att skaffa ett kontor och dessutom fick han anställa två före detta kollegor från Saab Ericsson Space, som även de arbetat med Thorprocessorn, en processor som styr satelliter. Den fjärde i gänget kom in via ett exjobb.

– Vi är en väldigt tight grupp som kompletterar varandra bra. Har man nåt vänder man sig om och frågar, det spar man fruktansvärt mycket tid på.

Inga störande möten
Och de andra grupperna inom Xilinx som Göteborgskontoret samarbetar med finns huvudsakligen i Indien och i USA, så det är ingen som ringer och ”stör” under dagtid. Baksidan av myntet är telefonkonferenserna som sker på kvällstid, men de kan normalt skötas hemifrån.

Och fler än fyra personer behövs uppenbarligen inte för att producera fyra uppdateringar av processorn per år.

– Microblaze ska inte lösa världens problem, vi kan ligga några år efter fronten och sakta förbättra den.

Funktionsmässigt ligger Microblaze några år efter processorer från till exempel Arm, Mips eller Intel.

– Vi har inte 64-bitars virtualisering, inte multitrådning eller flerkärniga varianter. Behöver man mer prestanda bryter man ut en del av uppgiften och stoppar in den i en egen

Microblaze. De tar så liten plats att man kan ha många.

Det som öppnade för mjuka processorer runt millennieskiftet var dels att FPGA:erna blivit så stora att det var praktiskt möjligt att stoppa in CPU-kärnor och ändå ha logik över till andra uppgifter, dels att kretsarna fick Block RAM, eller BRAM.

– Utan minne är en processor rätt dum och att koppla in externa minnen blir en klumpig lösning.

Samma buss som Arm
Microblaze använde ursprungligen Core Connect, samma buss som PowerPC-processorn, som gränssnitt mot andra IP-block. Men Arms framgångar på inbyggnadsområdet har fått Xilinx att byta till Arms buss för alla företagets IP-block. Gruppen kring Microblaze var med och specificerade den senaste versionen av bussen, AXI-4.

– Vi jobbade ihop med Arm eftersom vi ville se till att den blev hyggligt effektiv i FPGA:an. Faktiskt var Microblaze en av de första komponenterna som använde den.

Så nu kan kunderna välja om de ska använda Core Connect eller AXI när de konfigurerar Microblaze. Och Xilinz har själv använt Microblaze för att testa att de interna IP-blocken fungerar med AXI-bussen.

Microblaze tar mellan 600 och 4 000 uppslagstabeller beroende på konfiguration. Till det får man såklart addera minnet som normalt tar mer plats än själva processorn.

– Den har inte blivit större med åren, varje ny funktion vi lägger till är en option och som standard är den inte på. Jag skulle vilja säga att det är den mest konfigurerbara mjuka processor som finns.

Totalt är det runt 70 parametrar som ska konfigureras vilket innebär att konstruktören ställs inför rätt många val som kan vara knepiga för en nybörjare. Ett antal hjälpredor, wizards, underlättar valen genom att till exempel föreslå vilka val man ska göra om man tänker köra Linux på processorn.

För att ytterligare förenkla kom det en färdigpaketerad Microblaze nu i januari. Den är ganska enkel med några periferienheter, in- och utgångar liksom timrar. Modellen är tänkt för kunder som behöver en processor som ska reagera på några inkommande data för att styra några utgångar.

– Det är lite som en Picoblaze på steroider.
Xilinx mjuka åttabitarsprocessor Picoblaze saknar C-miljö och bra debugger. Istället är kunderna hänvisade till assemblerprogrammering.

Fortfarande bakåtkompatibel
Men långt ifrån allt arbete med Microblaze handlar om nya funktioner. En stor del är att verifiera att processorn fungerar med de fyra releaser av mjukvaran som företaget släpper per år.

– Vi brukar bara höra från kunderna när det är problem, det är sällan de hör av sig för att önska nya funktioner.

Även om dagens Microblaze kan betydligt mer än när den lanserades för elva år sedan är den fortfarande bakåtkompatibel vad gäller både storlek och klockfrekvens.

– I princip kan man ta en ELF-fil från år 2001 och köra i dagens kretsar. Och skulle man ha en krets  från 2001 skulle dagens processor inte bli större om man använde samma optioner.

Att Xilinx gått över från fyrvägs till sexvägs uppslagstabeller för ett par år sedan har inte heller någon praktiskt betydelse ur mjukvarusynpunkt.

Det här innebär att mjuka processorer är ett attraktivt val i branscher där produkterna har lång livslängd, bland annat verkstadsindustrin och försvarsmateriel.

Huvudprocessorn kan till exempel köra Linux eller något realtidsoperativsystem. Dock bara operativsystem som är open source, de kommersiella kostar helt enkelt för mycket i licensavgifter för att det hittills har varit motiverat att portera dem.

En annan förklaring till att man vill ha Microblaze så liten hänger ihop med att arkitekturen i FPGA:n medför att ju större processorn blir, desto långsammare går den. Ett alternativ är såklart att göra en hård variant men hittills är det ingen som nappat på det.

– Det är en väldigt tilltalande idé i början av projektet men man kommer aldrig till den punkten att man är klar, det finns alltid något som måste uppgraderas.

Några universitet har dock fått källkoden och gruppen i Göteborg har syntetiserat den mot några olika halvledarprocesser för att se hur prestanda blir.

– En hård Microblaze har diskuterats internt några gånger men den skulle ta så fruktansvärt lite area, och så skulle den kanske gå dubbelt så fort, så prestandavinsten är inte så stor.

Avlastar Arm och PowerPC
När det gäller hårda processorer har Xilinx istället satsat på Arm i den nya Zynq-familjen. Men trots det räknar Göran Bilski med att det kommer att finnas en eller flera Microblaze i varje Zynq.

– De kommer att användas för att avlasta Arm-processorn med uppgifter som att reagera snabbt på en insignal. Skulle allt gå upp till Arm:en skulle den bli överlastad.

Även på den tiden Xilinx hade systemkretsar med hårda PowerPC-kärnor fanns det minst en Microblaze i 30–40 procent av alla konstruktioner.

Dessutom finns det Microblazekärnor i en del av Xilinx egna IP-block. Det är inget som företaget pratar högt om, men i vissa fall är det enklare och snabbare att kasta in en processor än att skriva VHDL-kod.

Ytterligare en anledning att stoppa in en Microblaze i FPGA:an är för att testa och verifiera en konstruktion. Det finns visserligen hjälpmedel som logikanalysatorer och FPGA-probar till oscilloskop men det kan vara bättre att stoppa in en processor och låta den testa konstruktionen. Då går det att köra kretsen med full klockhastighet samtidigt som man via en debugger kan studera vad som händer.

Att processorn är populär bevisas också av att det finns tre kloner av den på Opencores, samlingsplatsen på nätet för öppen IP till hårdvara. Klonerna har tagits fram utan medverkan av Xilinx.

– En av dem skrev till mig och undrade om Xilinx skulle skicka advokaterna på honom nu, som Arm alltid gör. Men ju fler som använder Microblaze desto bättre är det, säger Göran Bilski.