FPGA-företaget Xilinx mjuka processor Microblaze kommer i en 64-bitarsversion. Den största drivkraften för att ta steget upp från 32 bitar är att underlätta adresseringen av minne där 64 bitar blivit standard.
– Det finns inte så mycket på våra nya kretsar som adresserar med 32-bitar längre. Ta bara den nya NOC:en i Versal, det är en 48-bitarsadress. Kopplar du in Microblaze där och den bara kan generera 32-bitarsadresser blir det mycket stökigare för mjukvaran.
Det säger Göran Bilski som är pappa till Microblaze men också en av hjärnorna bakom företagets nya AI-processor som tagit plats i den nya systemkretsen Versal.
NOC:en som han pratar om är systembussen, även kallad Network on a Chip, som underlättar jobbet med att koppla ihop olika delar av Versal som ska utbyta data.
Men åter till Microblaze. Processorn lanserades år 2001 och har blivit en stor succé. Inte så att Xilinx tjänar några pengar på den, den är gratis. Men väldigt många kunder använder den i sina FPGA:er och dessutom används den flitigt internt.
– Det är mellan 5 000 och 10 000 nya designers per månad som kommer in webbportalen, men vi vet inte vad de gör.
I och med att kunderna inte behöver tala om vad de ska ha den till är det svårt för Xilinx att veta hur den används.
Microblaze är ingen fristående produkt utan ingår som del i de uppdateringar av verktygen som Xilinx släpper tre gånger per. I den version som kommer i december lanseras den första 64-bitarsversionen.
– Vi har gjort så att den är helt transparent. Man kan instansiera den och sedan köra sin 32-bitarskod rakt av, säger Göran Bilski.
Den stora skillnaden är som redan nämnts att den därmed kan adressera betydligt mer minne, och dessutom med samma bredd som övriga delar av i FPGA-kretsarna.
– Där det fanns hål i instruktionsuppsättningen stoppade vi in 64-bitarsvarianter, det var ganska smärtfritt.
Storleksmässigt innebär steget till 64 bitar att Microblaze ökat med 30 till 60 procent till mellan 1 000 och 7 000 uppslagstabeller. Som jämförelse tar den minsta varianten av 32-bitarsprocesorn inte mer än cirka 600 uppslagstabeller även om en mer normal siffra ligger runt 2 500. Siffrorna gäller enbart kärnorna, sedan tillkommer bland annat arbetsminnet.
Allt utvecklingsarbete har gjorts av kontoret i Göteborg som numera består av sex personer. I planerna finns att anställa ytterligare någon och för att alla ska få plats kommer man att flytta till en större lokal i samma hus.
Gruppen i Göteborg har också tagit fram Systemcache, det IP-block i programmerbar logik som hanterar trafik från Versals hårda block till minnet. CCIX, eller Cache Coherent Interconnect for Accelerators, fungerar som en trafikpolis för cacheminnet så att det förblir koherent med det lokala minnet även när acceleratorerna får tillgång till det.
– Det ser enkelt ut men det finns många detaljer plus att saker måste ske i rätt ordning annars kommer man snett.
Göran Bilski har dock inte varit lika delaktig som tidigare i utvecklingen av Microblaze.
– Jag har jobbat med AI-processorn de senaste åtta åren varav de senaste fyra på heltid. Jag har kodat det mest och gjort arkitekturen.
AI-processorn som tar plats i Versal används för maskininlärning på ett mycket effektivt sätt. Processorn är skalbar och varje byggblock kan betraktas som en 512 bitar bred vektorpipeline som utför en instruktion på flera data parallellt. Om data är åtta bitar (INT8) kan varje block bearbeta 128 stycken parallellt med en och samma instruktion, så kallad SIMD, Single Instruction Multiple Data.
Artikeln är tidigare publicerad i magasinet Elektroniktidningen. Prenumerera kostnadsfritt! |
Dessutom är arkitekturen av typen Very long instruction word (Vliw) vilket innebär att man förutom SIMD-instruktionen också laddar in två skalärer, två load-instruktioner liksom en instruktion för store och en för stream.
Det går att skala storleken på kretsen genom att addera fler kärnor. Spannet är från några tiotal till åtminstone tusen stycken.
– Om man hade gjort det som en standardiserad multikärna med L1- och L2-cache hade det inte fungerat.
AI-processorn kan istället liknas vid en pusselbit som kan kopplas ihop med andra AI-processorer på olika sätt, lite som rader och kolumner i en matris.
Några milstolpar
I samband med att FPGA-familjen Ultrascale+ presenterades år 2016 kom den första hårda varianten av Microblaze. Det var för en 16 nm-process och till att börja med tog de plats i transceivrarna och proecssorblocket.
– Ska man stödja många protokoll är det svårt med ren RTL-kod, det är mellan 300 och 400 register som måste ställas om. Har man en rommad Microblaze kan den köra all omkonfiguration och är enkel att stega och debugga, säger Göran Bilski.
Nästa större steg blev en version med bättre säkerhet, triple modular redundancy eller TMR.
– Det handlar om tillförlitlighet och säkerhet. Ett strålningsfel, ett SEU, ska inte slå ut den eller göra så att man kan knäcka den.
TMR-versionen används flitigt i den kommande 7-nm familjen Versal. Totalt finns uppåt 18 stycken per krets som gör allt från att boota kretsen till att vara en del i bland annat blocken för power management, i minneskontrollrarna och i de snabba transceivrarna.
– Om det ska skrivas i RTL i en tillståndsmaskin blir det lätt oerhört komplex och väldigt jobbiga att debugga. Då är det skönare att skriva i C-kod och sen ha det vanliga flödet där man kan stega och debugga.