Skriv ut
Det blir allt vanligare att FPGA-konstruktioner innehåller en eller flera mjuka processorer. Bättre verktyg, större FPGA:er, vanare utvecklare och krympande prestandaskillnad mot använda hårda kärnor – det är några av orsakerna.
kärnorGenom att offra ett par tusen av logikelementen, plus en stor tugga av det interna RAM-minnet, på att bygga en CPU i FPGA:n, får du en plattform som många tycker är betydligt enklare att utveckla för – du kan skriva C-program istället för att konstruera hårdvara.

År 2006 innehöll 16 procent av alla FPGA-konstruktioner minst en mjuk cpu. Det rapporterades i en läsarundersökning från tidningen EE Times.

Idag är siffran troligen betydligt högre.

—Vi räknar med att 30–35 procent av våra kunders konstruktioner innehåller en mjuk kärna, säger Stefano Zammattio, produktmarknadschef på FPGA-tillverkaren Altera.

Xilinx skattar andelen till 30–40 procent.

David Wheeler, teknikchef på brittiska designkonsulten Ensilica lägger sig högst.

—Uppskattningsvis 60 procent av de konstruktioner vi ser innehåller en processor som delsystem.

Elektroniktidningens källor är eniga: användandet fortsätter öka.  

—Lavinartat, säger Michael Unnebäck, processorexpert på SoC-konsulten Orsoc.

Stefano Zammattio hänvisar det ökade intresset till att konstruktörerna mognat.

—De har vant sig vid att utveckla med mjuka kärnor och börjar inse fördelerna vad gäller främst time to market och kostnadspress, säger Stefano Zammattio.

Mjuk kärna har evigt liv

Omvänt har också tekniken och verktygen mognat. Varje gång Moores lag gör FPGA:erna, större och billigare passeras nya gränser för vad som är realistiskt att implementera på dem.

—Verktygen förbättras och mängden tillgänglig IP och drivrutiner ökar, säger Mike Kendrick, marknadschef på Lattice.

Ett annat skäl är att mjuka cpu:er, till skillnad från hårda, aldrig går ur produktion. De kan flyttas till nya FPGA-teknologier när existerande teknologier fasas ut. Detta är speciellt viktigt för system som behöver underhållas under lång tid—konstruktionen, inklusive mjukvaran, lever bokstavligen för evigt.

mjukisar—Medan externa processorer får kortare och kortare livslängd, säger Michael Unnebäck.

Det har bland annat de som bygger industriella tillämpningar upptäckt.

—Där har mjuka kärnor blivit vanliga eftersom de har långa produktlivscykler och därmed problem med obsoleta processorer, säger Mike Kendrick.

Det finns många mjuka cpu:er att välja mellan, som dessutom oftast i stor utsträckning kan konfigureras till olika varianter. -Ibland fyller cpu:n ut i princip hela FPGA:n, exempelvis för att implementera en styrkrets i en liten FPGA. Ibland är den mjuka kärnan en liten prick i en stor FPGA och används kanske bara för att monitorera och rapportera en huvudbearbetning som sker i funktionsblock i grindnätet.

Mjuka cpu:er tycks inte ha en unik optimal branschnisch.

—Vi har integrerat dem inom telekom, multimedia, industri, och rymd berättar Michael Unnebäck.

Gör vad hårda kärnor gör

Mjuka cpu:er har använts som tillståndsmaskiner, hjälpprocessorer eller som styrprocessorer – i princip allt som hårda processorer används till.

—De kan användas för alla typer av tillämpningar där data bearbetas i någon typ av kontrollplan, för realtidsstyrning, för användargränssnitt, säger Craig Abramson, produktchef för cpu-kärnan Micoblaze på Xilinx.

—Vi ser också en ökad acceptans inom områden som kräver mer datorkraft, som Inbyggnadslinux.

Mjuka multikärnor finns också. Likadana, eller olika, processorer pluggas in i systembussen och delar på minnet. En processor kan användas för att köra ett operativsystem medan andra processorer används för specifika uppgifter som till exempel ljud- eller bildbehandling. Processorerna kommunicerar genom det gemensamt minnet, via mutexar eller interrupt.

Mjuka cpu:er används på de sätt som är typiska för hur hårda cpu:er används inom inbyggda system. Det är svårt att hitta exempel på funktioner som hårda processor klarar, men inte mjuka.  

Ett möjligt undantag är hårda symmetriska multikärnor.

—Multiprocessning i en FPGA handlar snarare om att bygga datapipelines än kommunicerande processorer. Det är där som den stora prestandapotentialen finns, säger Mike Kendrick.

Xilinx och Altera ger samma bild: parallella mjuka kärnor för prestandaberäkningar är något man sällan ser.

—Många använder fler än en Microblaze per FPGA, men de opererar typiskt ganska oberoende av varandra, säger Craig Abramson.

—Vi ser ibland utvecklare köra samma kod på multipla processorer för att öka genomströmningen, men vi ser inte den sortens komplexa konstruktioner av multikärnor som du ser i prestandaprocessorer, säger Stefano Zammattio.

Men inte SMP? Jo!

Men det finns också undantag. Svenska Aeroflex Gaislers kärnor Leon3 och Leon4 kan konfigureras till multikärnor med gemensamt cache. Flera av Gaislers kunder kör SMP-Linux på en dubbelkärnor i en FPGA. Kärnorna kommunicerar via Amba och använder cache snooping för att hålla cachen synkroniserad.

Det finns vissa kreativa saker du kan göra i en mjuk kärna men absolut aldrig i en hård. Som att använda den mjuka kärnan under utvecklingen, men plocka bort den under drift. Det har bland annat gjorts för att avlusning – det var enklare att jobba med avlusningen via en mjuk processor än via en hårdvaruprob.

Den typiska organisationen av funktionalitet på en FPGA är att låta grindnätet implementera bussgränssnitt, video-bearbetning, kryptering—typiskt repetitiva realtidsfunktioner—medan komplexa funktioner med lägre prestandakrav körs som mjukvara i en mjuk kärna. Cpu och grindblock integreras gärna intill varandra, de senare som acceleratorer till de förra.

På marknaden för funktionsblock finns många fynd för dig som söker färdigparallelliserad funktionalitet för grindnätet, som signalbehandling, kryptering eller kommunikationsgränssnitt.

Vissa av utvecklingsverktygen låter dig testa att flytta funktionalitet mellan mjuk kärna och grindnät genom att provkompilera en C-funktion till ett hårdvarublock för att jämföra prestanda.

Typiskt integreras den mjuka processorn med funktionsblocket via minnet. Det kan också finnas verktygsstöd för att generera nättopologier med hög dedicerad bandbredd mellan delar som behöver det. Gränssnittet kan ofta genereras auto-matiskt i form av en extrainstruktion för processorn.

När du lägger en funktion i en mjuk-cpu förlorar du potential för prestanda genom parallellism. Samtidigt vinner du flexibilitet – omprogrammering kan skötas via mjukvara. Den rationella slutsatsen är att om prestanda i mjukkärnan är tillräckligt bra för en viss funktion, finns det ingen anledning att flytta den till grindnätet.

—Nu för tiden brukar avvägningen snarare gå ut på att försöka få in konstruktionen i en så liten FPGA som möjligt med tillräcklig prestanda, säger Michael Unnebäck.

Mjuka cpu:er har fått MMU, snabb interrupthantering och annan ny funktionalitet sedan de introducerades, analogt med hur hårda kärnor utvecklats.

—Kärnorna som används blir mer sofistikerade eftersom FPGA:er används för att göra allt mer sofistikerade saker med dem, säger Craig Abramson.

Djävulen i detaljerna

I mjuka cpu:er adderas typiskt nya funktioner inte som nya cpu-versioner, utan som valbara tillägg. Du kan därmed skräddarsy din mjuka processor med  flyttalsehet, registerantal, MMU, interruptantal, cachestorlekar, debuglogik, bitoperationer, instruktioner som swap och min-max, hårdvarudivision, och så vidare, allt efter vad din tillämpning behöver.

Det finns vektorinstruktioner och VLIW-arkitekturer i framtidsplanerna för mjuka CPU:er för minst en tillverkare.

En del FPGA:er har en inbyggd hård kärna på chipet. Sådana är snabbare och äter både färre transistorer och joule.

Nackdelen är att de har kortare livstid – en hård kärna inbäddad i en FPGA må ha en bra prestanda idag, men så länge som Moores lag gäller kan du om några år få lika bra prestanda ur en mjuk processor på en FPGA av en senare generation. Enligt Stefano Zammattio har det redan förekommit att mjuka kärnor ersatt hårda kärnor som blivit för långsamma.

En extra djävul som ibland dyker upp i detaljerna är att en hård kärna i en FPGA tar upp så lite plats att det kan bli trångt om plats att dra ledningar för hög bandbredd.

Att döma av Elektroniktidningens sagesmän??om alla är i FPGA-branschen och därför förstås ska tas med en  nypa salt??inns det numera sällan anledning att tveka att byta en hård cpu mot en mjuk.

Undantagen kan vara när du har krav på kodkompatibilitet med tidigare generationer. Eller om du vill ha maximal prestanda.

Men prestandagapet minskar. Och kom också ihåg att om du arbetar med en FPGA behöver mjuk-cpu:n kanske inte ha lika hög prestanda som den hårda cpu den ersätter eftersom FPGA-lösningen kan avlasta tunga beräkningar till funktionsblock i grindnätet.