formát Tiny Module |
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:
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.
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 |
Možné scénáře / situace / osobní preference:
formát Half-Size PICMG CPU Board |
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(+) |
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.
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 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 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.
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).
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 :-)
Ani nápad :-) Málo RAMky, slabá grafika, slabý procesor, absence ACPI...
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...
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).
Oficiální podpora není, ovšem máme informaci od jednoho zákazníka, že ovladač pro Ethernet RDC R6040 pro tento OS existuje.
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.
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ě.