Nvidia Tegra 4: může se prosadit?
17.9.2013, Petr Štefek, recenze
Nvidia uvedla platformu Tegra 4 před zhruba půl rokem, ale teprve nyní se dostávají první zařízení na trh, a tak je dobrý čas si zrekapitulovat, jaký vlastně nový počin Nvidie je. Tegra 4 by měla dělat těžkou hlavu především konkurenčnímu SoC Snapdragon 800.
Kapitoly článku:
- Nvidia Tegra 4 - evoluce nebo revoluce?
- ARM Cortex A15 - základ pro Tegra 4
- Co bychom měli vědět o ARM Cortex A15
- Tegra 4 - pracovní frekvence a počet jader
- Integrovaná grafika a paměti
- Akvizice společnosti Icera - proč?
- Nvidia Chimera - HDR video a object tracking
- Nvida Phoenix a další zařízení na Tegra 4
- Bude Nvidia udávat trendy?
Pokud si chceme vysvětlit výhody a nevýhody platformy Tegra 4, tak chtě nechtě musíme osvětlit rozdíly mezi jádry Cortex A15 a Cortex A9 (Tegra 3). Největším rozdílem mezi oběma jádry, respektive architekturami, je v případě novějšího Cortex A15 výrazně delší integer (celočíselná) pipeline (15 stages) oproti Cortex A9 (9 stages). Nutností bylo také zlepšení branch predictoru, který musí být efektivnější a výkonnější kvůli delší pipeline.
Front-end Cortex A15 je zhruba o polovinu širší než u staršího jádra, což znamená především zvýšení ILP (Instruction Level Parallelism). Na rozdíl od konkurenčních architektur je Cortex A15 3-wide (three-issue) architektura čímž si výkonnostně poskočila oproti původnímu Cortex A9. Některé konkurenční architektury jsou i přes svou novotu dual-issue, což ovšem nic neznamená, protože každá společnost řeší u své jádra jiné problémy (ARM nedostatek výkonu – AMD a Intel spotřebu).
Cortex A9 zvládl ve svém bufferu uchovat 32 - 40 instrukcí a Cortex A15 se posunul až na 128 instrukcí v reorder bufferu (to je tedy až o 4 více). Cortex A15 není pouze malým evolučním krokem, za jaký jsme mohli třeba označit Cortex A9 vycházející z Cortex A8. Při návrhu Cortex A15 se evidentně počítalo s nasazením nejen u tabletů a telefonů, ale díky podstatně vyššímu výkonu také u nových serverových procesorů (AMD už podobný produkt se 16 jádry ARM ohlásilo).
Komplexnost jádra je v případě Cortex A15 podstatně vyšší, což dokládá i samotná exekuční část jádra. V případě zvýšeného single-threaded ILP výkonu má lví podíl zvýšený počet exekučních portů a jednotek. ARM ke slušnému výkonu potřebuje vysoké frekvence, takže nebylo jiné možnosti, než přidávat nezávislé jednotky při zachování základ z předchozí generace ARM. Nové jádro dokáže v každém kroku v instrukční frontě jednotce přiřadit k vykonání až trojici instrukcí a nebo vše řešit paralelně a rozdělat instrukce na aktuálně volné exekuční jednotky.
Cortex A15 je stejně jako předešlé jádro Cortex A9 schopné vykonávat instrukce out-of-order, ale v několika ohledech jde ještě dále. Například FP/NEON instrukce byly v případě Cortex A9 vykonávány in-order, což je nyní hlavní změnou v případě jádra Cortex A15, které již umí pracovat s FP/NEON instrukcemi out-of-order. Bohužel nové jádro stál neumí vykonat mimo pořádek všechny operace v paměti (mimo jiné to znamená, že load může být zpracován out-of-order, ale data v paměti již nemohou být zpracovaná před loady do paměti).
Jádro Cortex A15 se vrátilo k integrované L2 cache, což je změna oproti staršímu jádru A9, které vsázelo na jednotlivé IP bloky. Dobrá zpráva ovšem je, že se to nijak negativně neprojevilo na latenci přístupu k této L2 cache (je ovšem možné, že nějaký postih za toto řešení přeci jen nové jádro bude mít). Nové jádro si polepšilo na všech frontách datových struktur, což byla ostatně nutnost pro efektivní práci podstatně výkonnějších výpočetních jednotek a jejich větší počet.
Menší L1 cache zůstala ve své kapacitě (32kB instrukční + 32kB datová) zachována v případě Cortex A9. L2 cache narostla na 2 MB a je v tomto případě sdílena pro všechna 4 jádra. Doplňková jádra (companion cores) pro méně náročné úkoly mají svou vlastní L2 cache o kapacitě 512 kB, ale to samozřejmě vychází z designu SoC. Přístup do této menší cache je opět pro všechna jádra společný.
Cortex A9 zvládl ve svém bufferu uchovat 32 - 40 instrukcí a Cortex A15 se posunul až na 128 instrukcí v reorder bufferu (to je tedy až o 4 více). Cortex A15 není pouze malým evolučním krokem, za jaký jsme mohli třeba označit Cortex A9 vycházející z Cortex A8. Při návrhu Cortex A15 se evidentně počítalo s nasazením nejen u tabletů a telefonů, ale díky podstatně vyššímu výkonu také u nových serverových procesorů (AMD už podobný produkt se 16 jádry ARM ohlásilo).
Komplexnost jádra je v případě Cortex A15 podstatně vyšší, což dokládá i samotná exekuční část jádra. V případě zvýšeného single-threaded ILP výkonu má lví podíl zvýšený počet exekučních portů a jednotek. ARM ke slušnému výkonu potřebuje vysoké frekvence, takže nebylo jiné možnosti, než přidávat nezávislé jednotky při zachování základ z předchozí generace ARM. Nové jádro dokáže v každém kroku v instrukční frontě jednotce přiřadit k vykonání až trojici instrukcí a nebo vše řešit paralelně a rozdělat instrukce na aktuálně volné exekuční jednotky.
Cortex A15 je stejně jako předešlé jádro Cortex A9 schopné vykonávat instrukce out-of-order, ale v několika ohledech jde ještě dále. Například FP/NEON instrukce byly v případě Cortex A9 vykonávány in-order, což je nyní hlavní změnou v případě jádra Cortex A15, které již umí pracovat s FP/NEON instrukcemi out-of-order. Bohužel nové jádro stál neumí vykonat mimo pořádek všechny operace v paměti (mimo jiné to znamená, že load může být zpracován out-of-order, ale data v paměti již nemohou být zpracovaná před loady do paměti).
Jádro Cortex A15 se vrátilo k integrované L2 cache, což je změna oproti staršímu jádru A9, které vsázelo na jednotlivé IP bloky. Dobrá zpráva ovšem je, že se to nijak negativně neprojevilo na latenci přístupu k této L2 cache (je ovšem možné, že nějaký postih za toto řešení přeci jen nové jádro bude mít). Nové jádro si polepšilo na všech frontách datových struktur, což byla ostatně nutnost pro efektivní práci podstatně výkonnějších výpočetních jednotek a jejich větší počet.
Menší L1 cache zůstala ve své kapacitě (32kB instrukční + 32kB datová) zachována v případě Cortex A9. L2 cache narostla na 2 MB a je v tomto případě sdílena pro všechna 4 jádra. Doplňková jádra (companion cores) pro méně náročné úkoly mají svou vlastní L2 cache o kapacitě 512 kB, ale to samozřejmě vychází z designu SoC. Přístup do této menší cache je opět pro všechna jádra společný.