Souběh hned dvou počítačů stejné kategorie je v AmigaNG světě něco naprosto neobvyklého, proto se často diskutuje který z nich je jaký a kdo je lepší.
V tomto článku se podíváme jak to je doopravdy z teoretické stránky. A co je na mé zvyklosti neobvyklé, článek neobsahuje jediný graf s benchmarky. O ty samozřejmě nakonec nepřijdete, jen si o nich povíme někdy později až se s novými stroji více seznámím.
Vysvětlivky | ||
Jasně zelená barva značí výhodu | ||
Tyrkysová barva je malá výhoda | ||
Žlutá je možná výhoda v budoucnu | ||
A oranžová je nevýhoda |
1. Kapitola první - základní desky
Při srovnání motherboardů je jeden rozdíl patrný na první pohled: Sam460LE je formátu Micro-ATX a A1222+ Mini-ITX.
Motherboard | ||
Sam460LE | A1222 PLUS | |
Výrobce | ACube Systems Srl | AAA Technology sarl |
CPU | AMCC PowerPC 460EX | NXP QorIQ P1022 |
Frekvence CPU | 1.14 GHz | 1.2 GHz |
Formát | Micro-ATX | Mini-ITX |
Firmware | U-Boot | U-Boot |
RAM | 2 GB DDR2-400 | 8 GB DDR3-800 |
Rozšiřující sloty | 1x PCIe v1.1 x4 ( x16 mechanický konektor ) 1x PCIe v1.1 x1 1x PCI v2.3, 32-bit / 66 MHz |
1x PCIe v1.0a x4 ( x16 mechanický konektor ) |
Ethernet | 1 x GbE | 2x GbE |
Koprocesor | Lattice XP2 FPGA | Lattice LCMX02-640 |
SATA | Sam460LE nemá, obvykle je osazen SATA I v PCI slotu | 2x SATA II ( v2.6 ) |
Audio | Nemá, obvykle osazena audio karta v PCIe x1 slotu | Wolfson WM8776 I2S codec |
Video | - | Display Interface ( DIU ), max. rozlišení 1280x1024 / 24 bit, bez HW akcelerace |
Operační systémy | AmigaOS, MorphOS, Debian 8 / Ubuntu 16.04 | AmigaOS, Debian 8 / Ubuntu 16.04 |
SD card | SDCard, lze z ní bootovat | microSD pouze pro U-Boot |
A1222+ je menší, má SATA II řadič a 8 GB DDR3 ( paměť využije linux i některé aplikace AmigaOS ).
A1222+ má další výhodu v tabulce nezmíněnou, a to filesystém NGFS. Je modernější i rychlejší než SFS/02 a zatím ho používají pouze A1222+ a X5000.
Další výhody jako dva Ethernetové porty a podstatně výkonnější koprocesor jsou jen teoretické, protože AmigaOS je zatím využít neumí.
1.1 Blokové diagramy počítačů
Původní model Sam460ex obsahoval také SATA II konektor a audio/video čip s 2D akcelerací. Verze cr/LE je již neobsahují, v praxi nebyly využívány.
Koprocesor Lattice je připojen na lokální sběrnici procesoru ( EBC, OPB, viz níže ).
SD karta je připojena jako USB zařízení a lze na ní mít moduly kernelu nebo celý operační systém a bootovat přímo z ní.
LCD interface u A1222+ je součást CPU a je bez hardwarové akcelerace. Pro desktopový systém se tedy nehodí. Dal by se dal využít pro server, kdy si použitím LCD interface uvolníme PCIe x4 slot.
Koprocesor Lattice je připojen přes hlavní CPLD, které kromě komunikace s koprocesorem řídí např. i otáčky ventilátorů. MCU pak monitoruje napětí a teploty CPU.
MicroSD je připojena na eSDHC řadič procesoru. Na kartě je pouze firmware ( U-Boot ) a není přístupná ze systému. Teoreticky by s vhodným ovladačem přístupná mohla být, MicroSD karta obsahuje mapu oddílů MBR, ale rozumné by to nebylo. Mohli bychom snadno firmware omylem poškodit.
Na první pohled jsou oba počítače tedy dosti podobné. Protože oba procesory jsou SOC ( System On Chip ) a tedy to nejdůležitější z počítačů je právě uvnitř nich, zaslouží si abychom se na mě podívali blíže.
2. Kapitola druhá - procesory
2.1 Blokový diagram procesoru AMCC PowerPC 460EX
Diagram procesoru 460ex je na první pohled trochu nepřehledný, protože je dosti podrobný. Tak si ho trochu vysvětlíme.
Předně FPU ( Floating point unit ) není součástí jádra jak je u Powerpc procesorů běžné. FPU je připojena k CPU jako APU ( Auxiliary Processor Unit ), sdílí jeho pipeliny a má standartní sadu 32x 64-bit FPR registrů. Proto ji budeme z našeho hlediska za součást jádra považovat.
Procesor má čtyři vnitřní sběrnice:
Processor Local Bus (PLB): na který jsou připojeny dva segmenty:
- High Bandwidth (HB) segment, který propojuje řadiče paměti, PCIe a PCI a také AHB bridge;
- Low Latency ( LL ) segment, propojuje On Chip paměť, dva řadiče DMA a OPB bridge.
On-chip Peripheral Bus (OPB): připojuje pomalejší periferie a je sem také připojen External Bus Controller (EBC), na který je u Sama připojen koprocesor Lattice XP2.
Advanced High-performance Bus (AHB): připojuje USB a v případě Sam460ex i interní SATA II řadič s vlastním DMA řadičem.
Device Control Register bus (DCR): vnitřní propojení pro stavové a řídicí informace z jednotlivých komponent CPU.
2.2 Blokový diagram procesoru NXP QorIQ P1022
Toto schema je méně podrobné, tedy stačí jen stručně:
Obě jádra procesoru se společnou L2 cache jsou propojeny přes Coherency Module na Systémovou sbětnici. Koprocesor Lattice LCMX02-640 je pak napojen přes Enhanced Local Bus Controller ( eLBC). Ostatní propojení jsou dostatečně zřejmá.
Kromě schemat nás budou hlavně zajímat rozdíly ve vlastnostech procesorů:
2.3 Základní informace o procesorech
CPU - základní informace | ||
AMCC PowerPC 460EX | NXP QorIQ P1022 | |
Určení CPU dle výrobce | PowerPC 460EX embedded processor is ideally suited to a wide range of high-performance applications, including imaging, industrial control and networking. |
The P1022 family of processors, a Freescale Energy-Efficient product solution, is designed to deliver complex application processing performance with exceptional feature integration and high-speed connectivity for IP networking and advanced media processing applications. |
Počet jader | 1 | 2 |
Frekvence CPU | 1.14 GHz | 1.2 GHz |
MIPS ( na jádro ) | 2000 | 2880 |
Typ jádra | PowerPC 440 | e500v2 |
Frekvence procesorů je podobná, ale P1022 má celkem výrazně vyšší hrubý výkon na jádro při dané frekvenci a navíc je dvoujádrový. To dnes sice využijeme pouze v linuxu, ale pracuje se na novém ExecSG, který obě jádra využije i v AmigaOS.
2.4 Paměťový subsystém procesorů
CPU - L2 cache a paměť | ||
AMCC PowerPC 460EX | NXP QorIQ P1022 | |
L2 cache | 256 KB | |
Koherence paměti | Zabezpečena sledováním Low Latency segmentu PLB sběrnice, nebo softwarově. Za určitých okolností může dojít ke ztrátě koherence. | Zabezpečena Coherency modulem (ECM), který sleduje transakce mezi sběrnicí, e500v2 jádry a L2 cache. |
On Chip Memory | 64 KB | - |
Řadič paměti | DDR2-400 | DDR3-800 |
Max. fyzické paměti | 8 GB | 32 GB |
Max. teoretická propustnost | 3.2 GB/s | 6.4 GB/s |
Počet Ranků / fyzických Banků / chip-select signálů | 4 | 4 |
Dual Channel / Controller Interleaving | ne | ne |
Rank Interleaving | ne | ano |
DMA řadiče | 1x high-speed jednokanálový 1x čtyřkanálový 1x pro SATA, u Sam460LE nepoužit |
2x čtyřkanálový univerzální |
Procesor 460ex má ale kromě L2 i dalších 64 KB rychlé On Chip Memory - je připojena 128-bitovou sběrnicí a používá se mimo jiné pro data paketů zpracovávaných moduly Security Engine a Ethernet.
Řadič DDR je u P1022 o generaci modernější. Může adresovat více fyzické paměti, je rychlejší a i když nemá Dual Channel, umí Rank Interleaving, který zrychlí operace o cca 10%. Bohužel, firmware A1222+ zatím neumí Rank Interleaving inicializovat, ale protože se U-Boot stále vyvíjí a X5000 to již umí, možná se v budoucnu dočkáme.
Protože oba počítače mají na základní desce pouze jeden konektor pro DDR, jsme omezeni maximální velikostí SO-DIMM modulů.
Do A1222 tak lze osadit až 8 GB s modulem DDR3 ( s geometrií 2R nebo 4R ). 8 GB modul ( 2R8 ) Kingston Fury ( KF318LS11IB/8 ) mám vyzkoušený.
Sam460LE může mít osazeno teoreticky až 4 GB s modulem DDR2 ( 2R nebo 4R ). To jsem nezkoušela, 4 GB modul nemám k dispozici. U Sama je sice uváděno jako maximum 2 GB paměti, ale protože U-Boot je zde také stále ve vývoji, šlo by podporu 4 GB doplnit ( pokud tam již není ).
U procesoru 460ex slouží jednokanálový DMA řadič pro transfery z rychlých periferií ( umí paměť<->paměť a paměť<->periferie, nikoli přímo periferie<->periferie ) a čtyřkanálový řadič je určen jen pro zařízení na On-chip Peripheral Bus.
P1022 má dva univerzální čtyřkanálové DMA řadiče pro jakékoli transfery.
2.5 Řadiče periferií procesorů
CPU - řadiče periferií, akcelerátory | ||
AMCC PowerPC 460EX | NXP QorIQ P1022 | |
PCIe | 2x PCI Express v1.1 interface: 1x 4-linky 1x 1-linka |
3x PCI Express v1.0a interface: 1x 4 linky PCIe |
PCI | 1x PCI v2.3 interface, 32-bit / 66 MHz | - |
SATA | 1x SATA II Rev. 2.5 ( u Sam460LE není zapojen ) |
2x SATA II Rev. 2.0 |
Ethernet | 2x 1 GbE ( u Sam460LE zapojen jen jeden ) QoS, Jumbo frames TCP/IP akcelerace: - offload GbE protokolu - rozpoznání hlaviček IPv4, IPv6 - podpora segmentace TCP - generování a verifikace kontrolních součtů |
2x 1 GbE QoS, Jumbo frames TCP/IP akcelerace: - offload GbE protokolu - rozpoznání hlaviček IPv4, IPv6 - podpora segmentace TCP - generování a verifikace kontrolních součtů - rozpoznání VLAN, Queue-in-Queue, PPPoE, MPLS, ESP/AH security headers |
Audio Video | - | LCD interface, 1280x1024P @ 60 Hz, 24 bit |
USB | 1x USB 2.0 Host 1x USB 2.0 OTG ( u Sam460LE nezapojeno ) |
2x USB 2.0 OTG ( u A1222+ zapojen jen jeden ) |
Security Engine | na čipu volitelně | na čipu volitelně |
eSDHC | - | enhanced secure digital host controller, pro SD/MMC karty u A1222+ použito pro U-Boot na MicroSD |
Fyzické zapojení v A1222+ je provedeno takto: 4x PCIe, 2x SATA. Pokud by to v budoucnu U-Boot umožňoval, lze na PCIe portu provést takzvanou bifurkaci ( rozdělení PCIe sběrnice bez switche ). Procesor může mít až tři PCIe rozhraní, takže reálně použitelné kombinace jsou:
PCIe x4 ( výchozí ), PCIe x2 + x2, PCIe x2 + x1 + x1. Tímto způsobem by v budoucnu bylo možné A1222+ rozšířit o další zařízení, samozřejmě za cenu omezení toku dat do grafické karty.
Procesor 460ex sdílí jeden SERDES ( na schematu ppc460ex označeno jako HSS ) pro PCIe x1 i SATA. U Sam460LE je napevno zapojeno PCIe x1.
Obě CPU mají hardwarovou akceleraci TCP, e500v2 má pak navíc i pokročilé VLAN, QiQ, MPLS ... Samozřejmě, v AmigaOS TCP stacku ( zatím ) nevyužité.
Oba procesory také mohou mít Security Engine ( SEC ) - hardwarovou akceleraci IPSEC, SSL/TLS a mnoha dalších krypto + hash algoritmů. Tato možnost je ale volitelná při objednání procesoru, takže předpokládám, že SEC verze CPU ani v Sam460LE ani v A1222+ nejsou ( a nechce se mi sundavat ventilátory jen abych se podívala na kód ).
Jako již velký hardcore by bylo možné procesory vyměnit za verze s tímto enginem. A pak ( ehm,... ) napsat ovladač pro AmigaOS ( linux byt o mohl umět ? ). Za odměnu bychom ovšem získali například podstatné urychlení provozu internetu. A to by v dnešní době, kdy se šifruje kde co, rozhodně neškodilo.
Na porovnání procesorů je vidět, že P1022 má výhod přeci jen o něco více. Ale to hlavní jsme ještě nezjistili.
3. Kapitola třetí - jádra procesorů
3.1 rozdíly v jádrech
jádro CPU | ||
PowerPC 440 | e500v2 | |
ISA | Power ISA v.2.03 - BookIII-E | |
Architektura | 32-bit | |
L1 cache | 32 KB I-cache, 32 KB-D cache | |
Virtuální adresový prostor | 41-bit ( 2 TB ) | |
Fyzický adresový prostor | 36-bit ( 64 GB ) | |
Hlavní registry | 32x 32-bit general-purpose ( GPR ) 32x 64-bit floating-point ( FPR ) Toto je powerpc standard. |
32x 64-bit general-purpose ( GPR ) Horních 32 bitů v registrech využívají pouze SPE, dual-precision floating-point a vector floating-point instrukce ( viz níže ). |
Powerpc FPU | Ano, připojena k jádru 440 jako APU ( Auxiliary Processor Unit ) 2 MFlops/MHz |
Nemá standartní jednotku, FPU je nahrazeno Embedded FPU jednotkami níže. |
Rozšíření standartní powerpc instrukční sady | DSP ( Digital Signal Processing ) rychlé jednotaktové instrukce: 32-bit x 32-bit -> 32-bit 16-bit x 16-bit -> 32-bit 16-bit x 16-bit + 32-bit -> 32-bit tedy celočíselné násobení a násobení se sčítáním ( MAC = multiple-accumulate ) |
SPE ( Signal Processing Engine ) SIMD, používá 64-bitové vektory se dvěma 32-bitovými integer hodnotami. Obsahuje také DSP instrukce které má jádro Powerpc 440. |
Embedded scalar single-precision floating-point ( SSPFP ) Single-precision FPU jednotka, pouze nemá standartní PPC FPU instrukce. | ||
Embedded vector single-precision floating-point ( VSPFP ) totéž, ale SIMD, 64-bitový vektor se dvěma 32-bitovými floating-point komponenty. | ||
Embedded scalar double-precision floating-point ( SDPFP ) Double-precision FPU jednotka, opět nemá standartní PPC FPU instrukce. | ||
Integer select instrukce ( isel ), která eliminuje v SIMD výpočtech segmenty podmíněných skoků. |
||
Determine Leftmost Zero Byte rychlá "string-search" instrukce ( dlmzb ) |
Obě jádra jsou 32-bitová a mají stejnou ISA. Liší se v sadách registrů, FPU jednotkách a SIMD jednotkách.
Ještě se podíváme na schemata jader. Tentokrát bude podrobnější schema e500v2.
3.2 blokový diagram PowerPC 440
Jádro PPC440 má tři výkonné pipeliny ( jednotky ), zpracuje až dvě instrukce za takt a provádí i ukončuje je out-of-order. Podrobnosti o způsobu zpracování instrukcí naleznete zde: https://www.amigaportal.cz/node/155095
FPU, i když přímo v jádru není, se jako součást jádra chová. Je napojena na APU interface a přímo sdílí pipeliny jádra ( Complex Integer Pipe ).
V jádře jsou pouze 32-bitové GPR registry. 64-bitové FPR registry jsou obsaženy opět v externí FPU a z hlediska ABI ( Application Binary Interface ) se jeví jako součást jádra.
Co je ovšem v jádru proti klasickým Powerpc procesorům navíc, je DSP / MAC rozšíření ( APU ). Je obsaženo přímo v Complex Integer Pipe. Čas provádění těchto instrukcí je jeden takt, hodí se proto pro zpracování toků podobných dat ( streamů ).
3.3 blokový diagram e500v2
Toto jádro má pět výkonných jednotek ( na schematu ty šedé ), instrukce zpracovává out-of-order ( až dvě instrukce + jeden skok za takt ) a ukončuje je in-order.
Toto jádro má také pouze GPR registry, tentokrát ale rozšířené na 64-bit. FPR registry neobsahuje vůbec.
Standartní powerpc FPU zde není, je nahrazena těmito jednotkami: Embedded scalar single-precision floating-point Embedded scalar double-precision floating-point Tyto jednotky mají ale jinou instrukční sadu něž powerpc FPU a místo FPR využívají přímo 64-bitové GPR. Na tomto procesoru jsou ale nejzajímavější SIMD jednotky ( Simple Instruction Multiple Data ). Obsahuje hned dvě: SPE ( Signal Processing Engine ) je vektorová jednotka, která zpracovává celočíselné vektory se dvěma 32-bitovými, nebo se čtyřmi 16-bitovými hodnotami. Embedded vector single-precision floating-point APU je vektorová jednotka pro vektory se dvěma floating-point hodnotami. SPE instrukce jsou prováděny přímo v 64-bitových Simple a Multiple jednotkách ( Unit ) a využívají opět 64-bitové GPR. Pro srovnání: Altivec / VMX zpracovává dvojnásobně dlouhé ( 128-bitové ) vektory a má navíc Permutační jednotku. Zde v jádrech je konečně odpověď na všechny diskuze o tom, je-li A1222+ ( respektive jeho CPU ) dostatečně výkonný či vhodný pro AmigaOS.
4. odpověď na základní otázku života, vesmíru a entry-level AmigaNG vůbec
Ta základní otázka zní: Je A1222+ výkonnější než Sam460LE ? My na rozdíl od myší nemusíme čekat na odpověď sedm milionů let. Odpověď sice není 42, ale přesto je velmi jednoduchá:
ANO i NE.
NE:protože běžný powerpc kód obsahující FPU instrukce musí být u procesoru P1022 obsloužen přes přerušení a emulován. K dispozici máme v AmigaOS dva emulátory FPU instrukcí:
- LTE ( load time emulátor ): Ten je výchozí. Jedná se JiT překladač s poměrně vysokou rychlostí - při testech mi vyšel pouze 1.2x až 4.5x pomalejší než originální FPU. Takže krása. Má to ovšem nevýhodu: jako každý JiT překladač nemá 100% kompatibilitu s původním kódem. Některé aplikace s ním pak nefungují.
- Standardní interpretační emulátor: Použijeme jej v případě že LTE nefunguje ( nastavuje se v Prefs:Compatibility ). Ten je již pomalejší výrazně ( 20x až 70x ) než klasické FPU, ale zato je 100% kompatibilní. Je to vlastně stejné, jako když máme v klasické Amize procesor MC68LC060 a softieee.library. Rychlé to není, ale funguje to.
A toto je právě ten důvod, proč aplikace jako Blender či některé 3D FPS hry budou na A1222+ pomalé, dokud je někdo nepřeloží nativně pro A1222+.
ANO: protože jádro e500v2 obsahuje embedded FPU jednotky, takže veškerý software může být zkompilován pro použití těchto jednotek a výsledek je tak stejně rychlý. Tedy vlastně ještě o kousek rychlejší, protože P1022 má o něco vyšší hrubý výkon než AMCC 460ex.
Ano a o hodně: protože e500v2 obsahuje i dvě SIMD rozšíření. Nejsou zdaleka tak výkonná jako zmíněný AltiVec / VMX, který mimochodem ve své době zcela překonával SSE a SSE2 u Intelu, ale přesto jsou zajímavá.
Jako doplněk pro vektorové výpočty pak slouží ještě instrukce "Integer select", která eliminuje v SIMD kódu podmíněné skoky. Viz. třeba zde, odstavec 2.5: http://ftp.cvut.cz/kernel/people/geo...ogramming.html
Pokud budeme mít kód aplikací napsaný přímo pro SIMD zpracování, bude výrazně rychlejší než běžný powerpc kód.
Z pohledu vývojáře je použití Embedded FPU a SPE ještě o něco složitější - eFPU má jinou sadu registrů než je standard powerpc, takže volání floating-point funkcí ze standardních knihoven nese jisté obtíže. A to nemluvím o tom, že SPE instrukce vyžadují 8-byte zarovnání zásobníku. To by sice dle standardu Powerpc ABI mělo být samozřejmé, ne všechny aplikace to ale dodržují.
Podrobněji např. zde: https://keasigmadelta.com/blog/tabor...-the-e500-spe/
Ale i Sam umí víc: Všichni Samové 460 i všichni Samové 440 umí rychlé jednotaktové DSP ( MAC ) instrukce ( viz výše). Ano všichni, protože jejich procesory mají stejné jádro, Powerpc 440. Pokud bychom měli úlohu s vysokou časovou složitostí, která závisí na celočíselném násobení a přičítání ( například většina kryptografických a hashovacích operací i některé kodeky ), také Sam může být rychlejší než klasický powerpc kód. SPE v P1022 či Altivec v G4 takové instrukce mají také, ale třeba G3 procesor to neumí. Tedy neumí tak rychle v jednom taktu.
Navíc, použití DSP instrukcí u Sama má velkou výhodu - používá standardní ABI, takže není třeba dělat žádné změny v ostatním kódu jako u SPE. Obecně bych se tedy u vývojářů přimlouvala, aby tuto možnost pro počítače Sam4x0 využili.
Sam obsahuje navíc ještě "dlmzb" instrukci. Ta slouží pro rychlé vyhledávání v řetězci přesně tím způsobem, jak její název naznačuje - vyhledá první nenulový byte. Pro jaké úlohy by se ovšem dala využít v desktopovém operačním systému to netuším.
5. Konec a co dál
Takže teď už víme jaké výhody oba počítače i jejich procesory mají. Své předchůdce prvních generací překonávají možností využití moderních PCIe karet i novějšími řadiči.
Nedosahují samozřejmě výkonu svých větších sestřiček AmigaOne X1000 a X5000, jsou to přeci jen entry-level systémy.
Oba mají ale něco navíc oproti desktopovým G3 procesorům. Mohou využít Multiply-accumulate instrukce a A1222+ také dvě SIMD jednotky. Je škoda aby tyto možnosti ležely ladem, určitě by stálo za to některé časově složité algoritmy znovu zkompilovat s ohledem na výhody SPE a MAC.
Poděkování:
ACube a AAA Technology za nové krásné hračky
Použité obrázky:
Loga: shop.acube-systems.biz, a1222plus.com, upraveno
Motherboardy: shop.acube-systems.biz, amigakit.fr, upraveno
Ledovec: flickr.com
Hlubokomořská chobotnice: g.cz
Schemata CPU: 460EX PowerPC 460EX Embedded Processor Datasheet a P1022 QorIQ Integrated
Processor Hardware Specifications, upraveno
Schema jader: PPC440x5 CPU Core User’s Manual a PowerPC e500 Core Family Reference Manual, upraveno
Kočička: the-great-beyond.blogspot.com
promptně změřeno: všechny provozní režimy obou počítačů se pohybují mezi spotřebou BananaPro a Powermac G5 Quad. Takže bych to tipla na remízu
To s tím FPU co jsem pochopil, byl ten hlavní důvod odkládání A1222+ . Otázka co dál s tíma hlavně jak jsou na tom ceny.