Allt är inte ARM

Ibland kan man tro att alla konstruktioner kan lösas med en eller ett par ARM-processorer, några I/O-enheter och lite mjukvara (Linux och C-kod). Men fortfarande finns det gott om andra processorkärnor och andra sätt att närma sig problemet.

En av de mest annorlunda lösningarna kommer från brittiska XMOS. Företaget har en hel del erfarenhet från Inmos och Transputern (den minns ni väl?) och grundtanken är att multitasking inte behöver göras på en enda processor. I stället kan multicore anpassas för att effektivisera realtidstillämpningar.

I grunden är det hela ganska enkelt. Alla vet ju hur lätt det är att skriva ett program med bara en enda uppgift. Det blir liksom realtid och determinism alldeles av sig själv.

Men för det mesta vill man lösa ganska många uppgifter. Då krävs någon form av operativsystem och systemet blir större. För att klara realtidsprestanda kan man använda realtidsoperativsystem och/eller en snabbare processor.

Multicore liknar FPGA
Om man i stället lägger ut olika delar av systemet på olika processorkärnor går det ofta att hålla ner klockfrekvensen ganska ordentligt. Det innebär att den totala energiförbrukningen kan hållas låg, samtidigt som de realtidskrävande delarna slipper att dela plats med annat. Med lite optimering kan ett sådant här system bli väldigt effektivt.

Rent hårdvarumässigt finns också en hel del fördelar. Enkla RISC-kärnor kan göras väldigt små och tiotals processorkärnor ryms i ett litet chip.

Det saknas förstås inte nackdelar. Alla har väl lagt märke till att datorer med många processorkärnor inte nödvändigtvis blir särskilt mycket snabbare än de med lite färre. Generella program och generella operativsystem har svårt att dra nytta av de många processorkärnorna. Ett system med många kärnor kräver en hel del handpåläggning för att fungera effektivt.

Därför är det förmodligen rättvisare att jämföra xCORE-arkitekturen från XMOS med FPGA-arkitekturer. Eller kanske man bör placera xCORE någonstans emellan vanliga processorer och FPGA. Och det är ingen dålig position.

Åtta bit
XMOS är inte ensamma om att använda egna processorarkitekturer, även om man gör det på ett mycket eget sätt. Det finns fortfarande gott om arkitekturer som inte heter ARM, även om ARM har haft en fantastisk framgångssaga de senaste tjugo åren.

Men den kanske mest oväntade framgångssagan just nu heter nog 8051, alltså Intels gamla åttabitsprocessor från 1980. På Embedded World i Nürnberg var det lätt att hitta nya 8051-komponenter och för den delen andra åttabitsprocessorer också.

Vad som har hänt är helt enkelt att idén om den ”generella processorn” har blivit omodern. En enkel enkapseldator för en speciell uppgift behöver inte kunna mer än nödvändigt. Om en enkel åttabitsarkitektur klarar uppgiften finns det ingen anledning att dra på med något större. Det här märker också verktygstillverkare som IAR. Företaget säljer 8051-verktyg som aldrig förr.

För min egen del känns det lite lustigt att se 8051 ta fart igen. 1980 jobbade jag som applikationsingenjör och försökte övertyga konstruktörer att välja någon av Intels processorer. I ärlighetens namn var jag väl inte sådär helsåld på varken 8086-arkitekturen (16 bit) eller 8048-arkitekturen (enkapseldator).

Men 8051 var något helt annat. Konstruktörerna hade lyckats transformera den ganska hopplösa 8048-arkitekturen till något helt annat och väldigt mycket mera användbart. Att programmera 8051 var enkelt. Dumheterna från 8048 (t ex inga relativa hopp) var borta och i stället fanns en rad extrafinesser som bithantering och mycket annat.

I och för sig är väl 8086-arkitekuren några år äldre än 8051-arkitekturen, men dagens x86-arkitektur har inte särskilt stora likheter med den gamla 8086-processorn. Det skall vi vara glada för. Men dagens 8051-arkitektur är i stort sett identisk med den som introducerades för 35 år sedan. Det är inte illa.

Det finns förstås teknologi som har stått sig ännu bättre över tiden. Jag var i förrgår ute vid uppläggningsplatsen och vevade igång motorn på min segelbåt (dieselmotor på 8 hästkrafter). Den startade direkt, trots att startmotor och elsystem varit bortkopplade i femton år. Ett par varv med startveven räckte fint. Motorn är från 1974 vill jag minnas och den har tuffat på sedan dess, utan egentligt underhåll. Ganska imponerande faktiskt.

One Response to “Allt är inte ARM”

  1. Jag började 1973 att konstruera med Intel 4004, 4 bits ALU. Mina vägningsinstrument behövde hantera kommunikation, signalbehandling och användargränssnitt. Trots att 8008, 8048, 8051, 8080, Z80, 8086 därefter blev de populäraste valen kunde jag inte förstå varför utan använde de mer lineära arkitekturerna i 6502, 6800, 6300. T..ex. kunde man i dessa ha flera stackar, en för varje program som man växlade mellan med ett enkelt underliggande program. Ändå har de låsta registerbaserade arkitekturerna där stacken är låst, tagit större delen av marknaden.