Skrivet av hansfilipelo:
Låter tokhäftigt! Vilka bilbiotek? Finns du på Github?
Utvecklar enbart "stängd" kod, ett exempel på vad jag gjort är en TCP/IP-implementation + väldigt enkelt webb-server som fixade att hantera upp till 9 miljoner HTTP/1.1 transaktioner per sekund på 2st Xeon E5-2690 kärnor. Gör man något mer avancerat än statiska HTTP-sidor skalar detta linjärt till ett fullt dual-socket system upp till i alla fall 2x 12-kärnor, i det enklaste fallet var det helt enkelt svårt att hitta något som kan generera mer än 9M HTTP/1.1 anrop... Systemet hade en genomsnittlig IPC på ~2.5 vilket jämfört med andra program är väldigt högt, SNB->HSW har alla ett teoretisk max på 4 x86 instruktioner per cykel, 5 om man kan använda "macro-op fusion" varje cykel.
Skrivet av hansfilipelo:
Poängen var här att du och Anand Lal Schimpi har helt olika uppgifter om latenser för Cyclones cachelatens - och Anand har ju här gjort faktiska tester (vilket syns i länken i mitt tidigare inlägg) medan du hänvisar till att "Intels L2-cachar har lägre latens än alla andra".
Dels skrev jag att min referens om >20 cykler var en ihopblandad med Cortex A15, sedan refererar jag till absolut load-to-use latens medan Anand mäter effektiv latens. Du såg ju att den är lägre än faktiskt latens, hur mycket lägre beror på hur bra prefetchers är och hur stort stort OoO fönstret är (och det är stort på Cyclone).
Sedan måste jag säga att Apple har ju gjort något väldigt rätt med tanke på att Swift mikroarkitekturmässigt (det lilla som är känt) påminner om något mellan Cortex A9 och A15, men har en IPC som är bättre än A15. AnandTech har många gånger varit inne på att det är just en bättre cache än andra ARM-designer som ligger bakom det.
Skrivet av hansfilipelo:
Angående bredden på designen är jag väl medveten om för- och nackdelar med den typen av design. Det är däremot så att en bredare design oftast får ett mindre straff för en felaktigt förutspådd branch eftersom den oftast har en lägre licens till följd av en kortare pipeline (en effekt man kan få av att använda en bred design) - vilket är precis den modell Apple arbetat efter med A8 - däremot har man ändå ett högre straff än Silvermont (10 vs 16 cykler) - men att använda enbart bredden för att förklara straffet vid en cachemiss ger inte en helt objektiv bild.
En bredare design får ett större straff för felaktig spekulering då detta upptäcks i "back-end" och det ligger då en rad instruktioner som redan börjat hanteras men nu måste slängas, ju bredare design desto fler instruktioner hinner CPUn tugga i sig.
Är egentligen 3 "huvudmått" man måste klassificera en CPU efter
bredden: hur många instruktioner kan maximalt avkodas per cykel. Finns även en bredd i back-end i form av antal exekveringsportar. Cyclone har 6/9, Haswell har 4/8, Silvermont har 2/6
djup: storleken på ROB (ReOrder Buffer), d.v.s. storleken på out-of-order fönstret, det är gigantiskt på Cyclone och Haswell, 192 micro-ops. Det är endast 32 micro-ops på Silvermont. Större djup möjliggör fler instruktioner "in-flight" vilket ger större möjligheter att hitta något att göra medan load/store operationer väntar på sitt resultat. Transistormässigt är det dyrt med ett högt värde här.
längd: (vettigt namn?) vilket är längden på pipeline genom processorn och därmed minsta latens från att en instruktion kliver in i front-end till dess att resultatet skrivs ut av back-end. Det är inte längre ett fix värde då olika ALU har olika latens, har inte sett detta på Cyclone men typisk är branch-miss-prediction kostnaden rätt nära detta värde och enligt AnandTech så är den kostnaden 14-19 cykler. Missprediction på Silvermont är 10 enligt RealWorldTech och pipeline längden är 14-16 cykler. Haswell har en 14-19 cyklers längd på sin pipeline och en missprediction kostnad på 15-20 cykler.
Ju "längre" den är ju högre går den typisk och klocka, men alla felspekuleringar blir dyrare.
Ju "djupare" den är ju dyrare blir "worst-case" felspekuleringar för hopp, men däremot kan man "gömma" allt mer cache-latens med större "djup".
Ju "bredare" ju högre maximal kapacitet får man, väldigt svårt att dra nytta av bredden i kod med mycket villkorade hopp. Har hört från CPU-designers att det är i princip hopplöst att nå över en IPC på 2-2.5 per CPU-tråd i genomsnittlig kod, oavsett bredd, då det helt enkelt inte finns tillräckligt med oberoende instruktioner. SPARC (Oracle) anser ju fortfarande att det är meningslöst med en bredare kärna än 2 och det trots att deras T4/T5 har 8 trådar per fysisk kärna, skulle säga att de har rätt om man bara siktar på databas-laster och liknande men som desktop-OS skulle den CPUn suga.
Skrivet av hansfilipelo:
Gällande caching så har ALLA CPUer svårt med icke-linjära accessmönster, se exempelvis den här föreläsningen av Scott Meyer (specifikt på Intel Core / SnB): https://www.youtube.com/watch?v=3G-LO9T3D1M&feature=youtu.be&.... Det klart att olika arkitekturer hanterar jumps olika bra och på olika sätt - men tycker du benämner det fel när du säger att enbart Cyclone har problem med icke-linjära minnesaccesser eftersom alla CPUer har det.
Alla CPUer har problem med slumpmässig minnesaccess, men verkar som Cyclone relativt sätt har större problem än t.ex. Haswell, Silvermont och Cortex A15. Är helt övertygad att det kommer av att det blir helt omöjligt att upprätthålla en hög IPC i dessa fall, något Cyclone relativt sätt lider mer av än smalare designer som Silvermont och Cortex A15, Haswell hanterar det med en extremt avancerad front-end.
Skrivet av hansfilipelo:
Har aldrig refererat till GeekBench så ser inte varför du drar in det. Den last jag arbetade på med Cortex A9 var ren bildbehandling (vilket enligt dig var ett exempel på en svår last) och den last vi diskuterat mest är 3DMark physics - där dual cyclone är snabbare än dual-core Cortex A15, medan quad core A15 är snabbare än dual cyclone, medan t o m quad core Krait 200 är snabbare än bägge dual core-varianterna. 3DMark physics skalar alltså bra med antalet kärnor, trots att de använder gemensamma datastrukturer (vilket är en motsägelse förvisso, men här är det ett faktum). Sen kan såklart A8ans cachestruktur vara sämre lämpad för lasten än de andra ändå - men den är trots det snabbare än de andra chipen.
<EDIT>missade att nämna Geekbench. Är något jag drog in och pekare på dess begränsningar då väldigt många (på forum som AnandTech och liknande) ofta använder resultatet i denna benchmark att visa att t.ex. Cyclone är i Haswell-nivå. Cyclone har en IPC i nivå med Haswell i detta test, så felet är inte där utan att Geekbench är väldigt irrelevant som vägvisare kring relativ prestanda mellan olika CPU-designer i "verkliga" program. Enkla "breda" designer presterar väldigt bra i Geekbench, ungefär som Itanium som var rätt dålig på det mesta men den var fantastisk bra på HPC-laster för saker med mycket inneboende parallellism i instruktionströmmen och relativt få hopp (Itanium är en av de "bredaste" designer som någonsin skapats, upp till 12 instruktioner per cykel med Poulson).</EDIT>
Att dela något där man skriver mellan kärnor orsakar cache-line-bouncing, det är ett annan problem än vad 3DMark physics har. Sedan finns beroende mellan CPU-kärnor som delar cache även om man inte orsakar cache-line-bouncing, en 4 kärnors Cortex A15 skalar t.ex. inte linjärt på saker som inte får plats i L1 cache då alla 4 kärnorna delar L2, Silvermont (där 2 kärnor delar en L2-cache) skalar däremot helt linjärt i ett sådant fall upp till 8 kärnor (Avoton).
Kan ju vara så att Cyclone har problem med skalning till 3 kärnor då alla kärnor delar L2 där, vilket i så fall förklarar varför det inte skalar alls från 2->3 kärnor. Men ingen annan CPU-arkitektur verkar skala speciellt bra förbi två kärnor, så att andra CPUer skulle vara snabbare för de har fler kärnor håller inte som förklaring.
Skrivet av hansfilipelo:
Bildbehandling och fysikberäkningar är extremt parallelliserbara, det är därför vi har GPUer designade efter den modell de är (många beräkningsenheter) och fysikmotorer som körs på GPUer. Du kan därmed inte kika på den här lasten eftersom A8 är snabbare än de andra alternativen med lika många kärnor (vilket är det diskussionen rör) - även om den inte är snabbast sett till chipimplementering.
3DMark physics resultatet verkar inte vara skalbart, tog ju fram resultatet för A8 och A8X och det skilde 10%. 2 kärnor i7 mot 4 kärnors i7 med samma frekvens skilde 3%.
Bildbehandling är kanske parallelliserbart, har inte jättekoll på det. Men det är också något med väldigt hög cache-lokalitet både i tid och rum så det är en "snäll" last, är däremot något som behöver mycket beräkningskraft och lämpar sig därför väl för SSE/Neon. Fysikberäkningar och andra typer av simuleringar har inte alls lika hög cache-lokalitet främst i rummet då partiklar/kroppar som påverkar varandra behöver inte alls ligga nära varandra i RAM.
Skrivet av hansfilipelo:
Vet inte varför du tar upp Haswell eftersom urpsrungsdiskussionen var att en användare, mindre informerad än oss två, tog upp att ARM är löjligt långsamma - varpå jag tog upp A8 som motexempel då den är snabbare än Silvermont (alltså att ISAn som sådan inte är löjlig). Det var detta påstående du sedan angrep.
Kan vi komma överens om att A8 är snabbare och mer energieffektiv än Silvermont och att det i framtiden finns all möjlighet för Apple att lansera ett chip som kan konkurrera med Core-serien?
---------
Uppskattar i diskussionen vi har - vilket jag sa tidigare. Så man blir sugen på att diskutera chipmarknaden med dig mer. Har svårt att få in det här djupet om chipdesign i min vardag.
Det vi ursprungligen diskuterade var huruvida det är rimligt att Apple skulle köra sin ARM-design i MBA/MBP, där ska man ersätta Core i5/7, inte Silvermont. Jag drog in Silvermont för rent nykter så är A8/A8X betydligt närmare Silvermont än den är Haswell/Broadwell, redan Core M är ett rejält steg upp från A8X.
Är då Cyclone inte "desktop-class"? Om Apple stoppar in den CPUn i MBA är den ju det, finns ingen definition på desktop-class. Men idag är A8X något som i konkurrera med Silvermont i mer avancera applikationer, det är å andra sidan en CPU som fungerar även för ett desktop-OS, kör själv Z3770 i en 11" Win8.1 laptop.
Kan däremot inte se att A8X skulle vara energieffektivare än BayTrail (Silvermont), har ungefär samma batteritid på iPad som i Z3770 enheten med hänsyn taget till batteritkapacitet. Så skulle säga att de har likvärdig effektivitet.
Är då det rimligt att Apple går över till ARM? Har faktiskt ingen aning, men om de gör det så kommer de prestandamässigt gå tillbaka till den nivån man hade i de absolut första MBA-modellerna.
Kommer folk vilja ha det? Vet inte, den kommer vara lättare, ha bättre batteritid och vara fläktlös så viss utveckling är det ändå.