Reuben Townsend är Technical Solutions Manager på Future Electronics i Manchester. Han ansvarar för teknisk support och rådgivning åt kunder på kortnivå, bland annat avseende processorer och olika aspekter på digital konstruktion samt effekt- och analogteknik. Efter en elektronikexamen 1997 började han sin karriär som konstruktionsingenjör med inriktning på 32-bitarsprocessorkonstruktioner, inklusive FPGA- och CPLD-konstruktioner, i VHDL. Därefter har han arbetade med stöd för processorkärnor i asicar, vanligen Arm och Mips, samt stöd för avancerade periferifunktioner som USB, Ethernet, SDRAM-styrkretsar och PCI 32/64 på ett internationellt företag. |
Med tanke på att Arm är en universell kärna frågar sig många om den utjämnade prisnivån kommer att påverka valet av kärna i produkter som idag använder Coldfire- eller Mips-baserade egenutvecklade lösningar. Sanningen är att varje kärna har sin för- och nackdel. Det finns områden där en egenutvecklad kärna även framöver passar bästa.
Coldfire-familjen har många periferifunktioner, robust säkerhet på chipet samt prestandahöjande funktioner som cacheminne och matematikacceleration. Mips-teknologin ger istället en mängd processorkraft för pengarna - mer än 500 miljoner instruktioner per sekund i övre skiktet. Arm, slutligen, har sin styrka när det gäller låg effektförbrukning och snabba minneskonfigurationer.
Man bör dock notera att skillnaderna ändå är relativt små jämfört med likheterna. Stödet för periferifunktioner hos Arm och Mips är verkligen inte dåligt. Prestanda från Arm och Coldfire är inte heller dåligt. Coldfire har visserligen mycket goda säkerhetsfunktioner i hårdvaran - men man kan konstruera in säkerhet i Arm och Mips också.
Varje konstruktör som ska välja en 32-bitarsprocessor bör kunna rättfärdiga sitt val för sig själv och sina chefer. Valet påverkas av en mängd faktorer, allt från priser till tredjepartsstöd för stackar, drivrutiner och operativsystem. Syftet med denna artikel är att ge en översikt över marknaden för 32-bitarsprocessorer genom att jämföra Arm-, Coldfire- och Mips-arkitekturerna. Marknadsrepresentativa kretsar från AMD, Freescale och Philips Semiconductors kommer att behandlas där det är relevant.
Låt oss först titta på Arm (Advanced Risc Machine), en familj processorer från Arm Holdings. Företaget tillverkar inte några egna processorer. Istället konstruerar man CPU-kärnor baserade på Armkärnan åt olika kunder. Företaget tar ut licensavgifter och låter kunderna tillverka chipet där det passar bäst.
Den låga effektförbrukningen har gjort Arm-kärnan till ett vanligt alternativ för bärbara tillämpningar. Eftersom alla ARM-processorer har samma instruktionsuppsättning är nästan alla mjukvarukompatibla.
De flesta Arm-kärnor har ett produktnamn som direkt avslöjar ingående nyckelfunktionerna. ”D” står för avbuggningsstöd, ”M” för förbättrad multiplikation och ”I” för ICEbreaker, som innebär stöd på chipet för incircuit-emulering.
En annan vanlig bokstav är ”T”, kort för ”Thumb”. Detta är en valbar instruktionsuppsättning för risc-kärnor. Den består av en delmängd av 16-bitarsinstruktioner vilka representerar en kompakt ”stenografiform” av vanligt använda 32-bitarsarminstruktioner som minskar minneskraven. Alla 32-bitarsinstruktioner kan dock inte uttryckas på detta vis.
Arms minnesgränssnitt har konstruerats för att kärnans prestanda ska kunna realiseras utan att det medför höga kostnader för minnessystemet. Hastighetskritiska styrsignaler pipelinas genom systemet så att systemstyrfunktioner kan implementeras med vanlig lågeffektslogik. Dessa styrsignaler kan användas för att utnyttja de snabba arbetsmoder med skurvis och sidvis access som vanliga DRAM erbjuder.
ARM7TDMI är en 32-bitarskärna av medelklass. Det är en av de mest populära kärnorna, och helt säkert en av de bäst lämpade att användas i generella inbyggnadstillämpningar.
I verkliga livet gäller det att man måste vara noggrann med minnesaccesserna när man konstruerar med en ARM7-kärna. Philips har exempelvis modifierat och förbättrat minnesaccessen hos sina ARM7-baserade chip.
ARM7-kärnan klarar att arbeta upp till 70 MHz med encykelsexekvering av många instruktioner. Men det inbyggda flashminnet har en accesstid på typiskt 30 ns, vilket begränsar processorns exekveringshastighet till 33 MHz. Att köra kärnan från flashminne skulle vara att kasta bort processorprestanda.
För att komma runt detta har Philips konstruerat en Memory Accelerator Module (MAM). Philips ARM7TDMI-baserade krets LPC2106 delar således upp det 128 kByte stora flashminnet i ett par 128 bitar breda minnesbanker. Det gör att fyra instruktioner kan hämtas per access och allt accelereras genom att koden interfolieras mellan de båda bankerna.
MAM-modulen gör också att ARM7 kan köra med full fart vid sekventiell kod. Ett sista potentiellt problem är att förgreningar och anrop till adresser som inte finns i MAM-buffertarna kan ge upphov till en instruktionsmiss som kräver att en ny byte-kedja laddas in från flashminnet. Sådana instruktionsmissar kan minskas genom att man buffrar flashdata i en ”branch trail”-buffert, och utnyttjar spekulativa läsningar i en prefetch-buffert.
Freescales processor Coldfire är å sin sida en aggressivt prissatt arkitektur som utvecklats speciellt för inbyggda system. Den har anor från 68000-arkitekturen och finns idag i version 2, 3 och 4e (V2/3/4e). Coldfire ger typiskt omkring 100 miljoner instruktioner per sekund, men de senaste V4-kretsarna (54xx) ger 400 miljoner instruktioner per sekund.
Coldfire har instruktionsord med en variabel längd på 16, 32 eller 48 bitar för att minska minnes- och systemkostnaderna. De flesta instruktioner kodas till 16 bitar, medan komplexa instruktioner får 32 eller 48 bitar. En villkorlig förgrening med förskjutning 32 bitar Bcc blir till exempel en 48-bitarsinstruktion. Fördelen med detta är att koden blir mycket kompakt. Freescales tester (kan fås från Future Electronics) av Coldfire och MAC71xx (Arm) visar att Arms programkod är 27 procent större än Coldfires.
Den statiska Coldfire-kärnan är även helt syntetiserbar, och den låter sig enkelt integreras med minne, systemmoduler och periferifunktioner. Liksom Arm är Coldfire-kärnan syntetiserad och portabel, och har licensierats till tredje parter.
Coldfire-kärnor är bakåtkompatibila. De har en rik uppsättning periferifunktioner och tenderar att vara mycket konkurrenskraftiga kostnadsmässigt, jämfört med motsvarande ARM7/9-varianter.
Idag är Coldfire-kärnor väletablerade. Freescale har kretsar tillgängliga, eller under konstruktion, som tävlar i det övre 32-bitssegmentet mot ARM11 och Mips.
Arm och Coldfire erbjuder kretsfamiljer som är snarlika vad gäller prestanda och periferifunktioner. Men till skillnad mot Arms kompressionsansats med 16-bitars Thumb, drar Freescale istället nytta av instruktionsuppsättning med variabel ordlängd utan att hoppa in och ut ur olika arbetsmoder. Ansatsen begränsar inte programmeringsmöjligheterna genom att förhindra access till generella register.
Då Coldfire är en mer generell kärna tror man ofta att den ger sämre värden för effektförbrukning är exempelvis Armkärnan. Visserligen är det känt att Arm har mycket låg effektförbrukning i själva kärnan, men när man ser till den kompletta kretsens förbrukning framstår Coldfire som en värdig konkurrent. Detta kan förklara varför Coldfire-kärnor återfinns i ett allt större antal konsumenttillämpningar, som skrivare, hemnätverksprodukte och MP3-spelare.
Speciellt med Coldfire är förmågan att integrera en stor mängd olika periferifunktioner. Och arkitekturen har ett antal bussar som ger olika nivåer av bandbredd och integration.
Coldfire erbjuder också mycket goda säkerhetsmöjligheter direkt på chipet. Det finns exempelvis en integrerad hårdvarubaserad Security Engine (SEC) tillgänglig på Coldfire-familjerna MCF547x och MCF548x samt en krypteringsaccelerator i hårdvara på kretsfamiljerna MCF523x och MCF527X. Funktionerna kan ha avgörande betydelse i tillämpningar inom IP Internet och Ethernet.
I likhet med Arm licensierar Mips Technology CPU-kärnorna Mips till tredjepartstillverkare. Men till skillnad mot Arm finns det flera instruktionsuppsättningar implementerade, och dessa skiljer sig från varandra i olika grad. Både 32-bitars- och 64 bitarsmipsimplementeringar finns tillgängliga från ett antal halvledarleverantörer, däribland främst AMD.
En av de viktigaste fördelarna med Mips är att alla användarmodeller stöds. Det betyder att en produktutvecklare kan välja mellan ett brett sortiment av kompatibla produkter från olika tillverkare.
Därmed kan man köpa fristående processorer, integrerade processorer, hårda makrokärnor för implementering i avancerade system-på-kisel-kretar (SoC, System-on-Chip) och syntetiserbara kärnor för enklare SoC-implementeringar. Man kan även skaffa en fullständig arkitekturlicens och skapa sin egen syntetiserbara eller hårda implementering.
Den som vill använda Mips-arkitekturen kan alltså stiga in i arkitekturen på valfri nivå och sedan skala upp eller ned sin produktlinje om behovet uppstår. För att garantera kodkompatibiliteten har Mips-arkitekturen ett certifieringsprogram som garanterar att alla Mips-implementeringar är kompatibla. Mips-arkitekturen blir därmed en standard över ett antal olika leverantörer och flera olika implementeringar.
Om man ser på AMDs Mips-processorserie Alchemy Au1x00 framgår det tydligt att den är inriktad mot video och högintensiva beräkningar i tillämpningar som mediaspelare, VoIP, nätverksinfrastrukturer och strömmande video. 32-bitarsprocessorn Au1200 (fig. 4) stöder MPEG1, 2 och 4, WM9, H.263, DivX 3-5 och H.264 med CIF-upplösning (Common Intermediate Format). Processorn har en DDR SDRAM-styrkrets med versioner för 333, 400 eller 500 MHz, separata data- och instruktionscacheminnen, en LCD-styrkrets med RGB-stöd för upplösningar upp till 1024 x 768 pixel, USB2.0 med host/device-funktionalitet samt en modul med ett kameragränssnitt.
En fördel med Mips är att man i audiovisuella tillämpningar kan minska antalet utvecklingsmiljöer som konstruktören behöver för att få ut en tillämpning på marknaden. Man kan exempelvis använda ett chip för DSP-audioalgoritmer och ett annat för styrning.
Generellt sett ger Mips mest prestanda per krona. Mips erbjuder inte bara 64-bitarsprocessorer som är bakåtkompatibla med MIPS32, utan också flyttalsstöd (med register för 32 bitar dubbelprecision och 64 bitar flyttal) och enheter för minneshantering, vilket gör dem lämpliga för bland annat realtidsoperativsystem.
Det finns inga klara och tydliga regler när det gäller att välja den optimala 32-bitarsprocessorkärnan bland Arm, Coldfire och Mips. I vissa fall dikterar tillämpningen valet. I andra - särskilt mellan Arm och Coldfire - kan konstruktörens personliga preferenser vara avgörande.
För en tillämpning som kräver låg effekt, låga kostnader och medelhöga prestanda kan en Mipskärna vara överkvalificerad, jämfört med exempelvis en ARM7. För generella tillämpningar som kräver mer prestanda, som hårddiskstyrkretsar, Ethernet-tillämpningar och VoIP eller video, kan en ARM9 eller Coldfire vara det bästa valet - men här ska man inte räkna bort Mips.
Om det krävs en avancerad processor för tillämpningar som kräver hög prestanda men minimal access till omvärlden kan en Mips vara ett gott val. Samtidigt finner Arm och Coldfire sin väg in i ett stort antal traditionella tillämpningar där det tidigare var självklart att välja en Mipskrets.
Utöver detta kommer vi in på verktyg och personliga preferenser. Dessa kan dikteras av att man helt enkelt inte har tid att byta från en utvecklingsplattform till en annan.
Faktum är att konstruktörerna aldrig varit mer bortskämda när det gäller att välja mellan 32-bitarsprocessorer. Om det är bra eller dåligt beroende på vad man gör med sitt val. Därför kan någon som Future Electronics som levererar alla tre varianter - vara en användbar bundsförvant när valet ska göras.