Nvidia Tegra system-of-chip (SoC)

Taustaa

Nvidia on tehnyt Tegra-nimisiä järjestelmäpiirejä vuodesta 2008. Uusia versioita on tullut suunnilleen 1,5 vuoden välein ja teho suunnilleen nelinkertaistunut joka sukupolvessa. Tegroissa on samassa kotelossa joku ARM-pohjainen prosessori, Nvidian integroitu näytönohjain, muistinohjain ja apupiirejä. Uusin versio on viidettä sukupolvea ja mallinimeltään K1.

Tegra K1

Tegra K1 on vähävirtainen, 28nm prosessilla valmistettu SoC-piiri, joka on suunniteltu kevyisiin pelikonsoleihin ja autojen mediakeskuksiin. Se käy kuitenkin ihan yleisprosessoriksi vaikka toimistoon, miniläppäriin tai tablettiin. Se erottuu muista mobiili SoC-piireistä tehokkaan integroidun näytönohjaimen perusteella, jonka teho riittää esim navigaattorin satelliittikuvien sujuvaan rullaamiseen auton kiitäessä moottoritiellä. Siihen tehdään myös paljon pelejä Unreal Engine 4 -pelimoottorilla ja se tukee uusinta OpenGL 4.4:ää. Hyvä grafiikkateho mahdollisti sen, että piiri tukee myös 4k-näyttöjä. Ainakin teoriassa, minun yksilön kuvan laatu 4k-resoluutiolla on kelvoton, joten oli pakko valita 2560x1440.

Samaan koteloon on pakattu ARM Cortex-A15 (4 corea, kuvassa isot keltaiset), yksi hitaampi virransäästö-ydin (Cortex-A7, pieni keltainen) ja yksi Kepler SMX-yksikkö, eli 192 cuda corea (kuvassa koko keskilohko matriisi). Sen lisäksi asic-yksiköitä mm. videopakkaus- ja purkupiiri, L2 välimuisti, DDR3 muistin hallinta, audiopiiri, ethernet ja AES-salaus.

Prosessorit ja cuda-coret voisivat itsekin hoitaa esim videon pakkaamista, mutta oma asic on aina se vähävirtaisin vaihtoehto, ja prossutehot vapautuu muuhun käyttöön. Toisaalta hardwarea ei voi päivittää uusiin standardeihin, kuten H.265 ja VP9, mutta nämä uusiutuvat vain n. 8 vuoden syklillä. Tegra K1:n teho on samaa luokkaa kuin Playstation-3 tai Xbox 360 konsolilla, mutta sähköä kuluu 90% vähemmän. Konsoleita ei olekaan suunniteltu akkukäyttöiseksi.

ARM Cortex-A15 CPU

Nvidia Tegra K1 sisältää ARM Cortex-A15 rev.3 prossun. Valmistuskelpoisia RTL-tiedostoja voi tilata ARM-yhtiöltä erilaisina versioina, esim ydinten lukumäärä, L2 välimuistin koko, tietyt apuyksiköt mukana tai ei jne. Sen lisäksi on aliversiot 4 kpl, eli pieniä parannuksia ja bugikorjauksia matkan varrella. Kaikki ne on julkaistu vuonna 2012. Nykyään uusin Cortex-A15 on rev.4 joka on julkaistu 2013. En käyttäisi rev.3:sta ainakaan serveriin, koska se sisältää bugeja. Ne liittyvät lähinnä L2 välimuistiin, joka voi lukkiutua. On ilmeisen haastavaa suunnitella toimiva L2 välimuisti, jota neljä corea käyttää samaan aikaan kaksisuuntaisesti.

Kuvassa näkyvä NEON on SIMD-vektorilaajennus, vastaava kuin Intel SSE-käskyt. Erillinen liukulukuyksikkö (FPU) on hyvä apu yleiskäyttöprossussa. Usein se jätetään pois mobiiliprossuista. Prossussa on neljä corea ja sitä ajetaan 2.3GHz taajuudella. Jokaisessa coressa on kolme rinnakkaista 15-paikkaista liukuhihnaa. L1 välimuistit (32kB+32kB) ovat core-kohtaisia ja L2 on näille yhteinen, 2 megatavua, mikä on liian vähän.

ARM Cortex-A7 ydin

Tegra K1:n virransäästöydin on Cortex-A7 yhdellä corella. Erona pääprossuihin on että L1 välimuisti on puolet pienempi, liukuhihnoja 2 kpl ja niiden pituus 8 paikkaa. Cortex-A15 on out-of order mutta A7 in-order. Ero merkitsee sitä, että kun core odottaa tavaraa muistista, niin out-of-order voi suorittaa odotusaikana tulevia käskyjä. Tämmöinen monimutkaistaa prossua niin paljon, että kaikkia bugeja ei helposti havaita. Ajoituksia ei saada täydellisesti testattua koska erilaisia yhdistelmiä on hitosti verrattuna in-order suoritukseen. Virransäästöydin käyttää samaa L2 välimuistia. Kokonaisuus on mutkikas, esim pääprossulla on 9 eri moodia. Loogisella tasolla kaikki voi toimia, mutta fyysisellä tasolla ajoitukset ja vuotovirrat tuovat yllätyksiä. Virransäästöydin on todennäköisesti paljon luotettavampi kuin pääprosessori.

Kilpailijoita

Samsung Galaxy S4 ja S5 käyttää samaa yhdistelmää Cortex-A15 & Cortex-A7 ja ARM:n nimi tälle yhdistelmälle on big.LITTLE. Samsungin SoC-piirin nimi on Exynos.

Applen iPhonet 3GS ja 4 sekä ensimmäinen iPad olivat Cortex-A8 yhdellä corella (Apple A4). iPhone4S ja iPad2 olivat dual-core Cortex-A9 (Apple A5). Kolmas iPad paransi lähinnä grafiikkayksikköä (A5X). Kellotaajuus on kaikissa 1.0 GHz kieppeillä, eli paljon vähemmän kuin Tegra K1 2.3GHz. Applen vanhemmat coret oli tilattu todennäköisesti ilman liukulukuyksikköä.

iPhone5 (Apple A6), iPad4 (A6X) ja iPhone5s ja iPad Air (A7) piireissä Apple on muokannut coreja itse (projektit Swift ja Cyclone). Cyclone on osittain 64-bittinen (käskyt ei, rekisterit joo). Nvidialla on vastaava projekti, nimeltään Denver, valmistunee loppuvuodesta 2014.

Apple A7 voisi sisältää Cortex-A57 coreja, ja virransäästöytimenä Cortex-A53.