- A hozzászóláshoz be kell jelentkezni
- 1335 megtekintés
Hozzászólások
Tok jo, megcsinaltak amit az arm, ppc, etc. mar 30 eve is tudott.
I hate myself, because I'm not open-source.
- A hozzászóláshoz be kell jelentkezni
Mondjuk eleve a RISC architektúrák egyik jellemzője volt a több általános célú regiszter, kompenzálandó a kevesebb utasítást. Egyszerűbb kombinációs logikai háló (vagy hogy is hívták a felépítést, amit az utasításdekódoló is használt) több regiszterrel megtámogatva. Most meg amilyen bonyolult egy bármilyen processzor, sokat nem kér pár plusz regiszter.
Színes vászon, színes vászon, fúj!
Kérem a Fiátot..
- A hozzászóláshoz be kell jelentkezni
Most meg amilyen bonyolult egy bármilyen processzor, sokat nem kér pár plusz regiszter.
Ezeket a regisztereket a címzési módokban is kódolni kell tudni, azaz az utasítások kódolása is változni fog (compilereket módosítani kell), emiatt változni fog az utasításdekóder is. Át kell alakítani emiatt persze nagyon sok alrendszert még, hogy tudjanak róla, hogy vannak ám az új regiszterek. Mivel ezen regiszterek részei a processz állapotterének, ezért ezt el kell menteni/visszatölteni context switchkor (ha az OS nem az XSAVE/XRSTOR utasításpárt használja erre, az OS-eket fel kell rá készíteni). Nem olyan triviális dolog egy ISA-t bővíteni új általános célú (gyakorlatilag bármilyen alap utasításban használható) regiszterekkel és a hozzájuk tartozó új utasításokkal, címzési módokkal.:
We significantly expand the conditional instruction set of x86, which was first introduced with the Intel® Pentium® Pro in the form of CMOV/SET instructions. These instructions are used quite extensively by today’s compilers, but they are too limited for broader use of if-conversion (a compiler optimization that replaces branches with conditional instructions).
Intel APX ultimately comes down to 16 more general purpose registers, three-operand instruction formats with a new data destination register for many integer operations, conditional ISA improvements, optimized register state save/restore operations, and a new 64-bit absolute direct jump instruction.
- A hozzászóláshoz be kell jelentkezni
Jo de ez igaz volt amikor bejottek az mmx meg sse (meg talan mas is) regiszterek is. Sot, az tippre sokkal bonyolultabb, megmondani a compilernek hogy abbol a general purpose regiszterbol amibol idaig is hasznalhatott 8-at most hirtelen lett meg plusz 16 nem olyan nagy szivas, tekintve hogy idaig is kellett 38 fele CPU architekturat tamogatniuk. (Es CPUn belul se hiszem hogy olyan hu de nagy dolog lenne, ideig se direkt a regisztereken dolgozott a CPU, hanem volt benne vagy legalabb 2x annyi es register renaming-el szorakozott hogy jobban kihasznalja a pipelinet meg nem tudom en mit.) Az uj utasitasok amivel itt inkabb lesz problema compiler teren. OS-nel meg kb ahol elmenti a regisztereket, ott kell egy plusz par sort beirni, meg a strukturat nagyobbra venni.
Szerintem a nagyobb szivas az lesz, hogy ha ujraforditasz egy appot ami hasznalja ezeket a regisztereket, akkor az nyilvan nem fog futni regi procikon, ugyhogy nem hiszem hogy az elkovetkezendo 10 evben nagyon lesz hasznalva barmire (egy-ket specializalt, idaig is assemblyban irt es runtime cpu detektalt eljarast leszamitva). Nyilvan aki gentoot hasznal legujabb intel procin, az mas teszta :)
I hate myself, because I'm not open-source.
- A hozzászóláshoz be kell jelentkezni
ilyenkor jon be a jvm es hasonlo JIT compilerek elonye. az siman day 1-tol hasznalja az uj architekturat.
- A hozzászóláshoz be kell jelentkezni
Mondjuk azért ott sem árt néha átnézni a kódot és átírni a kritikusabb részeket újabb API-kra, pl Stream meg Vector, biztos, ami biztos, hátha nem sikerül kapásból optimalizálni mindent. Valamint a futtatókörnyezetet át kell majd valakinek írni és nem biztos, hogy azonnal prioritás lesz pl az APX.
Színes vászon, színes vászon, fúj!
Kérem a Fiátot..
- A hozzászóláshoz be kell jelentkezni
Igen, annal a kb 3 db programnal ami valami jit-elt nyelven van irva es szamit a teljesitmeny es beupdatelik erre a jitet. A legtobb hely ahol szamit a teljesitmeny mai napig valami nativ kodra van forditva, runtime CPU detection meg tobbfele valtozatban leforditott kod meg azert joval ritkabb; hogy javascriptben egy onclick handler 1ms helyett 0.999ms alatt fut le az meg kb tokmindegy.
I hate myself, because I'm not open-source.
- A hozzászóláshoz be kell jelentkezni
annal a kb 3 db programnal ami valami jit-elt nyelven van irva
Mármint az összes webalkalmazásra gondolsz?
- A hozzászóláshoz be kell jelentkezni
Olvasd vegig az egesz mondatot.
I hate myself, because I'm not open-source.
- A hozzászóláshoz be kell jelentkezni
Szerintem nem tudod, hogy miből áll egy modern webalkalmazás. Nem csak 0.999 vs 1ms-es onclick handlerekből.
- A hozzászóláshoz be kell jelentkezni
Most a 99.9% bloat es 0.1% funkcionalitas dolgokra gondolsz? Azokat kerulom amennyire csak lehet.
Meg ugye azt is vedd szamitasba hogy azert ezek fognak sok bongeszo altal adott, nativ kodban irt fuggvenyeket hivogatni.
I hate myself, because I'm not open-source.
- A hozzászóláshoz be kell jelentkezni
Lehet, hogy te kerülöd, de a világ nem.
- A hozzászóláshoz be kell jelentkezni
nem kozvetlenul szamit a backend teljesitmenye, hanem ott, amikor pl. cloud-ban fut, es 5-10K req/s -et dolgoz fel, 8-16 pod-on. ha gyorsabb a kod -> kevesebb pod kell -> olcsobb.
- A hozzászóláshoz be kell jelentkezni
Azert vannak emlekeim rola, hogy ARM-on es POWER-en mennyire lassu volt a Java eveken at (x86 es x86-64-on futo JVM-hez kepest, mielott megint altalanos "lassuajava" topicot csinal belole valaki). Az egy dolog, hogy JIT compiler egyaltalan tamogatja az uj architekturat, egy masik meg hogy mennyi kezi optimalizacios munkat tesznek bele a kodgeneratorba.
Régóta vágyok én, az androidok mezonkincsére már!
- A hozzászóláshoz be kell jelentkezni
Mik voltak a számok?
- A hozzászóláshoz be kell jelentkezni
Jó régen volt, a pontos számok nem hiszem hogy megvannak bárhol is, de arra emlékszem, hogy ugyanazt a Java-s benchmarkot nyomtuk végig egy IBM HS22-n (kb 2.4GHz-es Nehalem-generációs Xeon volt benne) és egy JS12-n (3.8GHz-es Power6 volt benne). A processzorokból sejthető, hogy ez mikor volt. Ennek a Power6-nak papíron kb minden szempontból rommá kellett volna vernie a Xeon-t, ehhez képest a Java-s tesztek a Xeon-on kb 3-5x voltak gyorsabbak. Egyszerűen nagyságrendi előnye volt az x86-os java-nak. (Volt mindenféle próbálkozás IBM-es saját JVM-mel, meg openjdk-s java-val, hogy melyik volt gyorsabb arra már nem emlékszem, de egyiknek sem volt jó eredménye power-en)
Régóta vágyok én, az androidok mezonkincsére már!
- A hozzászóláshoz be kell jelentkezni
Ez amugy csak a java-ra volt igaz, vagy masra is? (Gondolok itt akar mas jit-es nyelvre, akar native kodra fordulo c/akarmire)
I hate myself, because I'm not open-source.
- A hozzászóláshoz be kell jelentkezni
Igazából nem sokat próbálgattuk más nyelvekkel, nekünk kifejezetten a Java lett volna érdekes. C-s benchmarkokkal mértük össze, aszerint a Power6 (nem meglepő módon) jobb volt a Xeon-oknál. (Egy akkori szinten is alsó-középkategóriás Xeonról beszélünk...)
De ez egy 10+ évvel ezelőtti állapot volt, a mondanivalóm lényege pont az, hogy kellett az idő, mire kikupálódott a mai szintre, hogy az openjdk nem-x86 platformokon is rendesen megy.
Régóta vágyok én, az androidok mezonkincsére már!
- A hozzászóláshoz be kell jelentkezni