Vortex86 (SX,DX) - parádní 486tka s mizivou spotřebou


formát Tiny Module

Obsah

Předmluva

Co říkáte na "fanless" počítače, po těch letech co jsou na trhu? Ano, je jich nepřeberné množství. Ale časem zjistíte, že se stále dokola opakují některá nedorozumění. Zákazník chce spolehlivý, "bezúdržbový" počítač. Takže bez točivých součástí. Čili bez točivého disku a hlavně bez ventilátorů. Počítač bez ventilátoru - ten musí určitě hrozně málo topit. Takže není potřeba ho moc chladit, starat se aby měl přísun chladného vzduchu. Takže ho zavřeme do nějaké skříňky, aby nehyzdil a nepřekážel - ta zběsile žebrovaná krabice je sice stylově průmyslová, ale popravdě řečeno nemusí tato estetika ladit se zbytkem pracoviště... Jo a vezmeme model s nejvýkonnějším procesorem, aby nám ty reklamní filmečky (nebo screensaver) necukaly, a 3D vizualizace řízeného stroje s použitím OpenGL aby byla trochu svižná...
Takže se výkonný žebrovaný počítač nakonec peče ve vlastní šťávě někde ve stísněném prostoru.
A jsou tu i další zajímavé otazníky - elyty uvnitř fanless=nevětrané skříně, cyklování teplot a tepelná dilatace vs. low-profile "board to board" konektory, míra svědomí různých výrobců při dimenzování teplosměnných povrchů, volbě součástek apod.

Jak z toho ven?
Pokud se zamyslíte nad přestupem tepla a měrnou tepelnou kapacitou vzduchu, případně si
načmáráte na papír pár jednoduchých vzorečků, určitě Vás napadnou dvě cesty, jak z toho ven:

  1. Pokud potřebujete pořádný výkon, je třeba problém pojmenovat, nazývat věci pravými jmény a nehrát si na schovávanou: ventilátor je jistota.
  2. Pokud na výkonu až tak nesejde, pomohl by nějaký počítač, který fakt netopí.

Anebo z jiné strany:
Hledáte nějaký maličký počítač na řízení něčeho, nebo třeba jenom na routování TCP/IP provozu s nějakou speciální "třešničkou na dortu". Chcete platit nula peněz za elektřinu, ale zároveň chcete, aby to "běželo furt".
Různé routovací krabičky a destičky Vám z nějakého důvodu nevyhovují - buď jim schází nějaká periferie, nebo je problém v nutnosti cross-kompilovat software, který píšete na x86 PC, na exotickou cílovou instrukční sadu (a možná na svéráznou maličkou libc). To není legrace - portovat velké distro nebo i jednotlivou rozsáhlejší aplikaci na ARM nebo MIPS není úloha snadno zvládnutelná pro jednotlivce, který má spoustu jiné práce a chce hlavně spustit svůj software a pracovat s ním - zejména pokud cílová platforma ani nemá dost hardwarových prostředků :-) Problémem může být už třeba jenom spustit si na cílovém hardwaru debugger, mít tam libc včetně debugovacích informací. Nebo třeba byste na tom počítači rádi provozovali Windows (ne, nestyďte se, není proč), třeba XPe.
Rozhlížíte se po trhu a jste masírování reklamou velkých výrobců: Což takhle ATOM? Ale ne, to je parodie na nízký příkon. Geode? Jasně, tradiční zápasník v superlehké váze. Ale pořád nežere tak málo jako MIPSy/ARMy. STPC = 486@66 zmizelo z trhu (a taky nebylo nijak zvlášť výkonné, přitom docela topilo). Kromě toho máte třeba historické zkušenosti s nekompatibilitou CF karet u Geode či s přehříváním DIMM modulů na maličkých průmyslových deskách na bázi 486 apod... Do tohoto segmentu se několik let tlačí také firma VIA, ale poslední dobou spíš tlačí procesorový výkon směrem nahoru, nežli spotřebu nadoraz dolů - navíc její formáty desek jsou "svoje", výběr v typických "embedded" formátech není velký.

Přátelé, nevěšte hlavu, ultra-low-power záchrana existuje - jmenuje se Vortex86.

Co je to Vortex86

Vortex86 je stručně řečeno taková hodně přetaktovaná 486tka, pohromadě na čipu s celým čipsetem včetně SuperIO.
Existuje starší Vortex86SX (běžně taktovaný do 300 MHz) bez matematického koprocesoru (FPU), a také novější Vortex86DX (běžně taktovaný na 600 nebo 800 MHz) který je matematickým koprocesorem vybaven.
Jedná se o jednočipové systémy (System on Chip, SoC) obsahující CPU jádro třídy 486, vyráběné v litografii 130 resp. 90 nm. Spotřeba samotného SoCu bez grafiky je cca 3W !!! To je zhruba na úrovni různých MIPSů a ARMů, používaných ve WiFi AP apod. Grafika SiS/XGI Volari Z9s, která je typickým souputníkem Vortexu, přidá cca 1W, podobný příkon má třeba WiFi karta v MiniPCI slotu.
Samotný Vortex používá paměti DDR, běžně jsou naletované onboard bez možnosti rozšíření a mívají kapacitu 128/256/512 MB. Grafika XGI má svou vlastní VideoRAM o kapacitě 32 MB.

Pokud se týče periferií, jednočip Vortex86SX/DX obsahuje vedle PCI ještě taky sběrnici ISA, USB 2.0, 10/100 Ethernet, dva kanály IDE s podporou UDMA, několik sériových portů (z nich jeden s podporou RS485 pro průmyslovou komunikaci), paralelní port, běžně 16 GPIO pinů (Vortex86DX s možností PWM), I2C port, grafika XGI mívá vedle DB15 VGA taky paralelní TTL výstup...
Zajímavá je taky možnost snížit takt jádra až na 1/8 nominální hodnoty - a to konfigurační volbou v BIOSu, nebo za běhu softwarově. Proudu se tím moc neuspoří, ale může se to hodit v případech, kdy potřebujete udržet v provozu starou DOSovou aplikaci, která na rychlých procesorech havaruje (viz např. problém s Pascalovou knihovnou CRT, ale jsou i další příklady).


formát 3.5" Biscuit

Proč zrovna Vám by se mohl líbit Vortex86

Možné scénáře / situace / osobní preference:


formát Half-Size PICMG CPU Board

Když Vortex do průmyslu, tak na desce od firmy ICOP

Je hezké, že samotný čip umí tolik věcí - ale návazný problém je, kde koupit motherboard / biscuit / PICMG desku s tímto procesorem. A také, jak neprohloupit právě "na úrovni desky" - pokud se týče příjemnosti BIOSu, kvality dílenského zpracování desky, dlouhodobé spolehlivosti apod.

Na tuto otázku je také snadná odpověď. Nejširší produktové portfolio průmyslových desek s procesory Vortex86 SX a DX nabízí firma ICOP. Desky jsou nejen napohled hezké, asi jako zmíněné Lego, ale také obdobně spolehlivé. Míra reklamací konverguje k nule.
Dokumentace je velmi slušná (včetně způsobů programování atypických periferií), kompatibilita se softwarem i s hardwarem (např. s CF kartami) rovněž prakticky stoprocentní. S deskami se dodává AMI BIOS, který je logicky uspořádaný, popisky položek v setupu jsou nadobyčej jednoznačné, dá se říci že těsně kopírují hardwarové vybavení SoCu. BIOS umí bootovat po síti (přes PXE) a je použitelný i bez VGA čipu (dá se do něj dostat přes sériový terminál).

Jedna nevýhoda by se našla: firma ICOP se příliš nevěnuje "mechanice", nemá v nabídce téměř žádné "průmyslové" skříňky (nedávno se objevila první vlaštovka). Zato desky jsou k dispozici v několika standardních formátech (PC104(+), 3.5" biscuit, PICMG half-size ISA) a přinejmenším v jednom nestandardním (maličký "tiny module").

Historie návrhu čipu Vortex je poměrně barvitá (tak jako u spousty jiných součástek a značek výrobců) - nicméně v tuto chvíli vyvíjí a prodává čipy Vortex firma DM&P. Na webu firmy ICOP se píše, že "ICOP je členem DM&P Group" - čili jedná se o sestřičky v holdingu. Výrobce desek je pod jednou střechou s výrobcem čipů, a tyto dvě firmy jsou si blízké ve vlastnické struktuře (mají i další sestřičky pro různé další oblasti trhu). Tyto úzké vztahy se zřetelně a pozitivně projevují na úrovni dokumentace (bohužel není veřejně dostupný kompletní popis čipu, ale důležité informace jsou k dispozici) a na svižnosti technické podpory.

V e-shopu firmy FCC PS je k nalezení dosud pouze několik konkrétních produktů z portfolia firmy ICOP. Máte-li zájem o nějaký kousek od ICOPu, ale u nás jste ho nenašli, dejte nám vědět a my ho obratem zařadíme do nabídky :-)


formát PC/104(+)

Srovnání výkonu s jinými procesory (nbench)

Pro srovnání výkonu samotného procesoru je užitečný například benchmark Nbench. Níže uvádíme skóre dvou běžných "Vortexů" a pro představu také skóre několika dalších procesorů - srovnatelných i nesrovnatelných :-)

Je třeba si uvědomit, že pro základní práci v operačním systému a provoz nenáročných ovládacích aplikací se výpočetní výkon procesoru promítá do subjektivní "živosti" počítače poměrně málo.

Podpora pro různé operační systémy

Procesor Vortex86 (zejména DX, ale i SX) umožňuje provozovat relativně čerstvé operační systémy. Pravda ale je, že na aktuální Windows Vista a 7 přece jen nestačí...
Proberme si jednotlivé varianty podrobněji:

DOS

DOS běží na všem od 8086 PC XT, takže samozřejmě i na Vortexu (SX/DX). Vortex SoC obsahuje klasický řadič PS/2 klávesnice a myši a další běžné součástky počítačů třídy 486, má taky klasický BIOS s obvyklými službami pro přístup k disku (int 13h) a k obrazovce (VESA BIOS).

Pro ethernetový čip RDC R6040 jsou k dispozici DOSové ovladače jak s rozhraním NDIS2 (pro klienta Microsoftích sítí) tak s rozhraním "CRYNWR Packet Driver".

USB si moc neužijete - nějaké univerzální ovladače pro DOS sice jsou, ale je to spíš bída. Za to ale Vortex vcelku nemůže. Konkrétně "USB Mass storage" zařízení jsou BIOSem prezentována jako disky přes službu int 13h, takže tady vcelku problém není.

Některé motherboardy ICOP obsahují onboard SPI flashdisk o kapacitě 2-4 MB, který je BIOSem prezentován jako emulovaná floppy.

Pro běh starých aplikací se může hodit možnost podtaktovat jádro procesoru poměrem 1:2 až 1:8 (tj. na osminu jmenovitého taktu).

On-chip UARTy ve Vortexu mají jeden quirk, který není vidět pod Windows a Linuxem (standardní ovladače na něj nenarážejí), ale můžete ho potkat pod DOSem, kde si prakticky každý software pracující se sériovým portem musí UART inicializovat a obsluhovat po svém, a každý to dělá trochu jinak. Konkrétně: 16bitový dělitel v generátoru baud rate, který se vkládá skrz dva 8bitové registry, je třeba vkládat "lsB first", tzn. napřed spodní bajt, pak horní bajt. V opačném pořadí to nefunguje správně (resp. funguje to jenom s poměrně dlouhým umělým delayem mezi oběma znaky).

Linux

Linux je v dnešní době pro Vortex asi nejpřirozenějším kamarádem. Linux je totiž velice přizpůsobivý pro velmi širokou výkonovou škálu hardwaru, lze ho osekávat a "skládat od nuly" téměř jako MS-DOS (pokud víte jak), přitom má moderní vnitřní architekturu (nechme stranou akademické debaty o dílčích aspektech) a nejenže neotravuje s licencemi, ukončením podpory apod., dokonce je "zadarmo". Dodnes existují aktuální "stolní" distribuce, které lze na Vortex přímo nainstalovat, tj. aniž by si člověk musel skládat bootovatelný image disku pro cílovou desku s Vortexem někde "bokem" na silnějším stroji... (což jistě taky lze).

Prakticky je potřeba (v případě Vortex86SX i DX), aby celé distro, tj. kernel i celý relevantní user space, počítal s procesorem nejvýše 486 - tj. nebudou fungovat distra zkompilovaná pro i686 a patrně ani pro i586 (možná na Vortex86DX, dokonce má TSC, ovšem každopádně zapomeňte na MMX, MTRR apod.). Čili chce to distro kompilované konzervativně postaru pro i386, případně pro i486.

V případě Vortex86SX je dále potřeba zařídit emulaci matematického koprocesoru. To je jedna jediná položka v konfiguraci jádra. User-space o absenci koprocesoru vědět nepotřebuje - není třeba rekompilovat ani libc, ani další knihovny, ani aplikace (pokud jsou zkompilované pro i386 nebo i486). Emulaci koprocesoru zařídí transparentně kernel, odchytáváním IRQ 13.
Problém může nastat pouze s aplikacemi, které třeba i dost nevinně/bezmyšlenkovitě/zbytečně používají matematiku v plovoucí čárce (matematické operace s datovými typy float a double, #include <math.h> a v něm obsažené knihovní funkce libc). Pokud nějaká aplikace běží na Vortexu SX znatelně dlouho/pomalu a "top" přitom ukazuje vysokou spotřebu procesoru, přičemž hodně času se stráví v kernelu a konkrétně v interruptu, tak je třeba podezírat právě matematické operace v plovoucí čárce. Například prvotní generování klíčů SSH po instalaci trvá několik minut.
Kernely kolem 2.6.28 měly emulaci x86 FPU rozbitou (výsledkem byl ošklivý panic hned při bootu). Kolem 2.6.33 už to zase funguje normálně.

Pokud jste zaslechli, že v kernelech 3.8 a vyšších končí podpora i386, tak se neděste - procesory i486 a vyšší jsou nadále podporovány, včetně "trochu slušných" variant 486SX (ne všech). Tahle událost se týká podpory některých instrukcí potřebných pro SMP, kde konkrétně Vortex86DX je na tom dokonce o něco líp než standardní solidní 486 (alespoň co do instrukční sady. Aktuální Vortex má jenom jedno jádro :-)
Takže konkrétně Vortex86DX je nadále podporován a Vortex86SX zřejmě taky - ačkoli třeba instalace Debianu na Vortex86SX vyžaduje nastartovat instalátor s upraveným jádrem, protože standardní jádro instalátoru neobsahuje emulaci koprocesoru (to je ale jiný problém, viz výše).

Pokud se týče ovladačů pro hardware, tak ve vanilkovém kernelu jsou k dispozici ovladače pro RDC R1010 IDE (CONFIG_BLK_DEV_IT821X) a RDC R6040 Ethernet (CONFIG_R6040 / r6040.ko).

Pokud se chcete pokoušet o Xwindows, tak pro obvyklou grafiku XGI Volari Z9s lze použít driver "SiS" (XGI byla a opět je divizí SiS). Debian 6 "Squeeze" se sice nainstaluje s generickým VESA ovladačem (bez jakékoli akcelerace), ale drobnou úpravou Xorg.conf lze dosáhnout zavedení ovladače "SiS", což zprovozní 2D akceleraci (fonty, blitter apod.)

Programování GPIO pod Linuxem není složité. Jde to i "holýma rukama", nicméně pro základní funkce už máme (FCCPS) hotovou knihovnu, kterou lze ještě trochu rozšířit. Pro práci s GPIO pomocí IRQ by nicméně bylo potřeba napsat modul (driver) do kernelu - to taky umíme.

Linux lze s příslušnými úpravami (nijak složitými) provozovat dokonce i na Vortexových motherboardech bez grafiky - například se sériovou konzolou, pokud je třeba. Na podrobnosti se kdyžtak zeptejte technické podpory FCCPS.

Jedna věc, pro kterou zatím podpora není, je on-chip řadič I2C. Není dokumentace a nejsou zdrojáky pro žádný OS. Existuje jistá nekompletní dokumentace I2C portu pro příbuzný SoC Advantech EVA. Pokud zabudovaný I2C řadič nepotřebujete pro nějaké svoje potřeby, tak se tím nemusíte vzrušovat.

Windows 98 SE

Máme vyzkoušeno, že na Vortex86DX (= varianta s matematickým koprocesorem) lze nainstalovat Windows98 SE. Jsou k dispozici ovladače pro R6040 LAN, pro obvyklou grafiku XGI Volari Z9s, dokonce i pro USB (neoficiální balík nusb33d/e v české/anglické jazykové mutaci). A konkrétně máme vyzkoušený i displej s touchscreenem TouchKit (výrobce dodává ovladač pro W98, který funguje nad stackem nUSB).

Windows XP a XPe

Máme vyzkoušeno, že na Vortex86DX (= varianta s matematickým koprocesorem) lze nainstalovat standardní stolní Windows XP, a máme také image Windows XP Embedded (Windows Embedded Standard). Pouze pro IDE řadič je potřeba "F6 floppy" (prakticky v USB mechanice), a je třeba mít na disketě správnou variantu driveru (driver pro XPe má nevhodný INF a chybí mu txtsetup.oem). UPDATE: poslední verze SoCu údajně už ani nepotřebuje F6 floppy (instalace proběhne ve standardním IDE režimu).
Pravda je, že stolní XPčka už se prakticky nedají koupit (leda nainstalovat starší multilicenci, pokud máte), zato Windows Embedded Standard (=XPe) mají být ještě pár let legálně dostupná.

Co do subjektivního uživatelského dojmu se XP a XPe chovají podobně jako na procesorech Geode = žádný kvapík, ale v zásadě použitelné. Jde spíš o kapacitu RAM, aby se Windows nepokoušely swapovat. Holá XP (lépe XPe) chodí trochu použitelně na 256 MB RAM a ještě zbyde něco na aplikace. Případně je možno objednat Vortex s 512 MB. Jde tedy spíš o nároky provozovaných aplikací na RAM a výkon procesoru a grafiky. (Budiž nám "v průmyslu" alibistickou výhodou, že typicky není třeba office, browser, skype, ba ani antivir.) Pokud srovnáváte se svými historickými dojmy z běhu XP na starších stolních sestavách, tak si uvědomte, že v dnešní době není problém použít pro start systému a aplikací flashdisk - i dnešní CF karty v mnoha ohledech předčí točivé disky z doby před pár lety (sekvenční rychlost nastejno, IOps klidně řádově vyšší).

Poněkud pikantně dopadl pokus o start XP na procesoru s jádrem podtaktovaným na 100 MHz (podniknutý čistě ze zvědavosti). Dlouhých několik minut strávil systém v úvodní černé obrazovce s "teploměrem" a barevným logem v nízkém rozlišení, patrně počítal Ludolfovo číslo na milion desetinných míst... (disk jenom občas mrknul). Po naskočení grafického režimu proběhl překvapivě svižný winlogon, ale vzápětí po naběhnutí kompletního desktopu spadl systém do modré smrti s nějakou nesmyslnou hláškou :-)

Windows Vista/7

Ani nápad :-) Málo RAMky, slabá grafika, slabý procesor, absence ACPI...

Windows CE

Zdá se, že firma DM&P poskytuje pro Windows CE poměrně rozsáhlou podporu. Pokud by měl někdo zájem, asi není problém...

QNX

Na oficiálním webu vortex86dx.com na stránce technické podpory je pouze zmínka, že v případě zájmu je třeba se zeptat mailem na technické podpoře DMP... (v souvislosti s QNX 6.3.2).

Phar Lap ETS

Oficiální podpora není, ovšem máme informaci od jednoho zákazníka, že ovladač pro Ethernet RDC R6040 pro tento OS existuje.

Společné zádrhele

Při pokusu o povolení všech periferií najednou může být znát, že systém nemá APIC = má k dispozici jenom standardních 16 IRQ (AT PIC = 2x i8259). Takže pod chytřejšími operačními systémy (Windows/Linux) je vidět sdílení IRQ několika zařízeními a ovladači. Přesto je výskyt zásadních hardwarových konfliktů naprosto ojedinělý, což je poměrně s podivem, při počtu přítomných onboard periferií (při vzpomínkách na dávné doby stolních ISA/PCI 486, kdy člověk musel často poslepu laborovat). Je znát, že vývoj v oblasti BIOSu za ta léta přece jen pokročil.

Konkrétně třeba PXE boot nefunguje v případě, že je zapnutý druhý řadič USB, a na některých motherboardech hardwarový řadič floppy koliduje s druhým kanálem IDE (alespoň Linux to tvrdí). Ale většinou to není problém, v konkrétních situacích či sestavách si lze vybrat "to či ono".
Potenciálně zajímavou variantou je (nestandardní) možnost konfigurovat jednotlivé vstupy řadiče přerušení natvrdo jako level-triggered, což se jinak vyskytuje až u IO/APICů. Teoreticky by to mohlo pomoci PCI zařízením, resp. všem hardwarovým zařízením, která generují de facto level-triggered logiku přerušení. Prakticky jsem to jednou zkusil pro konkrétní silně sdílené IRQ povolit, spíš ze zvědavosti, jak se s touto změnou popasuje "interrupt ACKing" v ovladačích - a nemělo to v daném případě žádný praktický vliv... Možná to PnP BIOS beztak zařídí na pozadí, alespoň v chytřejších OS.

Motherboardy s Vortexem (alespoň ty od ICOPu) nepodporují ACPI. Zřejmě ani není důvod.

Novější modely Vortex86

Postupem času se objevilo několik novinek:

Port PCI-e na Vortex86DX2 a Vortex86EX je připojen bridgem na interní PCI sběrnici Vortexe = root bridge je klasický vortexí PCI, interrupty z PCI-e jsou překládány bridgem PCI/PCI-e na PCI INT_A.
Vortex86EX umí PCI-e x1 i v "target" režimu = umí se tvářit jako zásuvná PCI-e karta (periferie).

Zajímavým "demonstračním produktem" je Arduino-kompatibilní projekt 86duino a v jeho rámci produkt Educake = 86duino s nepájivým kontaktním polem na hřbetě.

86duino EDUcake 86duino Zero