8 kärnors mobil är korkat

Permalänk
Medlem
Skrivet av BoToss:

Enkelt test av en novis:
Stäng av 2 av 4 kärnor och använd telefonen som vanligt. Du märker skillnad efter ett tags användande.

Vad jag menar med bakåtsträvande är att experter i tråden säger att 2 kärnor räcker, precis som att de ber att utvecklingen ska ställa sig stilla bara för att kodknackarna inte hängt med...
De får väl börja knacka kod och nyttja utvecklingen istället?

Att sedan vissa program flyter bättre med en kärna gör väl heller inget fast man har 4 stycken, är väl bättre med 3 över till annat än 1? Dagens x4-kärnor drar ju mindre spänning än gårdagens x2 och vilar mestadels oberoende av varandra om de inte används så ingen spänningsförlust där..

Utvecklingen ska inte stå stilla, den ska gå i rätt riktning. Högre IPC, inte fler kärnor. Bättre trådlös prestanda, inte fler kärnor. Det är inte bara att bli bättre på att skriva flertrådat, vilket folk verkar ha oerhört svårt att fatta. Om programmet primärt är sekventiellt så hjälper inte fler kärnor oavsett hur duktig du än är på att skriva flertrådskod. Mobiler och tablets bristande input-möjligheter gör att det inte är praktiskt för användaren att köra riktigt avancerade program.

Visa signatur

i5 4670k 4.2Ghz 1.2v
AMD R9 290
Windows 10

Permalänk
Avstängd
Skrivet av Valiumballong:

Utvecklingen ska inte stå stilla, den ska gå i rätt riktning. Högre IPC, inte fler kärnor. Bättre trådlös prestanda, inte fler kärnor. Det är inte bara att bli bättre på att skriva flertrådat, vilket folk verkar ha oerhört svårt att fatta. Om programmet primärt är sekventiellt så hjälper inte fler kärnor oavsett hur duktig du än är på att skriva flertrådskod. Mobiler och tablets bristande input-möjligheter gör att det inte är praktiskt för användaren att köra riktigt avancerade program.

OK, om jag säger så här då: Hur påverkas en telefon negativt av 4 kärnor istället för 2 om ett program är enkeltrådigt? Resterande kärnor vilar ju och kostar ju inget i spänning?

Visa signatur

Android är fantastiskt, nu även med bl.a trim. ;)
https://www.youtube.com/watch?v=wwXA27TWD3k&feature=youtube_g...

Permalänk
Medlem
Skrivet av BoToss:

OK, om jag säger så här då: Hur påverkas en telefon negativt av 4 kärnor istället för 2 om ett program är enkeltrådigt? Resterande kärnor vilar ju och kostar ju inget i spänning?

Läs virtual void inlägg i tråden, han har redan besvarat detta...

Permalänk
Skrivet av BoToss:

Enkelt test av en novis:
Stäng av 2 av 4 kärnor och använd telefonen som vanligt. Du märker skillnad efter ett tags användande.

Om du märker skillnad på kvickheten hos t ex HTC One och One Mini får du en guldstjärna. Den mest märkbara (om ngn) skillnaden kommer av frekvensdiffen.

Skrivet av BoToss:

Vad jag menar med bakåtsträvande är att experter i tråden säger att 2 kärnor räcker, precis som att de ber att utvecklingen ska ställa sig stilla bara för att kodknackarna inte hängt med...
De får väl börja knacka kod och nyttja utvecklingen istället?

Tillämpningen måste ju vara tillräckligt stor för att köra flertrådat för att det ska löna sig med programmeringstid, prestandamässigt och energiförbrukningsmässigt. Med färre men snabbare kärnor (kärnor, inte en) kan man oftare implementera "rush-to-sleep"-principen.

Igen så får du ett overhead i din kod - som kanske inte gör det lämpligt för t ex en liten väderapp att köras fletrådad.

Skrivet av BoToss:

Att sedan vissa program flyter bättre med en kärna gör väl heller inget fast man har 4 stycken, är väl bättre med 3 över till annat än 1? Dagens x4-kärnor drar ju mindre spänning än gårdagens x2 och vilar mestadels oberoende av varandra om de inte används så ingen spänningsförlust där..

Skillnaden mellan dagens quad core och gårdagens dual core stavas tillverkningsprocess och förfinad spänningsreglering. "Dagens" dual-core är effektivare än quad cores.

Varför tror du Nokia och Apple envisas med att ha två kärnor istället för fyra? Nokia har gått ut och sagt att fler än två kärnor i nuläget är omotiverat i en mobil enhet. Apple vill kunna spendera kretsytan till GPU, minnesinterface och inbyggda acceleratorer istället för att slösa den på oanvända beräkningsresurser.

Visa signatur

Primär: MBP 16", M1 Pro, 32 GB, 512 GB SSD, Thunderbolt dock, Dell U3415W HTPC: FD Node 202, Ryzen R5 3600, 16 GB, Radeon RX480 Nitro+ 4 GB, 850 Pro 512 GB+MX100 512GB Main server: Rasberry Pi 4 8 GB Worker server: FD Node 304, Core i3 3220T, 16 GB RAM, 60 GB Intel 330+80 GB 320, 3*3TB WD Red, Debian Backup: AMD E-350, 8 GB, 40 GB Intel V40, 3x3TB WD Red, Debian

Permalänk
Avstängd
Skrivet av S_Z:

Läs virtual void inlägg i tråden, han har redan besvarat detta...

Jo tack, har läst även detta inlägg men ser inte hur en telefon påverkas negativt av flera kärnor så länge de inte förbrukar spänning. Förstår dock att du ser negativt på flera kärnor då Apple troligen inte uppgraderar CPUn på kommande IPhone.
Den spänning de förbrukar vilande, vad kan det vara i skärmtid, 2 minuter max på en batteriladdning...

Grädde på moset, Samsung erbjuder ju split screen, här har vi en ypperlig anledning att favorisera flera kärnor?

Visa signatur

Android är fantastiskt, nu även med bl.a trim. ;)
https://www.youtube.com/watch?v=wwXA27TWD3k&feature=youtube_g...

Permalänk
Skrivet av BoToss:

Jo tack, har läst även detta inlägg men ser inte hur en telefon påverkas negativt av flera kärnor så länge de inte förbrukar spänning.

Flera kärnor ökar strömförbrukningen och tar upp mer kretsyta. Varför har Intel ingen Quad Core SoC för ultrabooks?

Skrivet av BoToss:

Grädde på moset, Samsung erbjuder ju split screen, här har vi en ypperlig anledning att favorisera flera kärnor?

Ett gränssnitt där vi kan köra två applikationer halvdant på en "phablet". Ta fram en praktisk tillämpning för "split screen" som motiverar fler än två kärnor? Det tyngsta som körs på dagens touch-enheter är webbsurfning och du kan inte skriva in två adresser samtidigt med det gränssnittet precis

Vill du köra en webbserver har du helt enkelt valt fel typ av enhet - vilket alltså inte är en praktisk tillämpning för en mobiltelefon.

Visa signatur

Primär: MBP 16", M1 Pro, 32 GB, 512 GB SSD, Thunderbolt dock, Dell U3415W HTPC: FD Node 202, Ryzen R5 3600, 16 GB, Radeon RX480 Nitro+ 4 GB, 850 Pro 512 GB+MX100 512GB Main server: Rasberry Pi 4 8 GB Worker server: FD Node 304, Core i3 3220T, 16 GB RAM, 60 GB Intel 330+80 GB 320, 3*3TB WD Red, Debian Backup: AMD E-350, 8 GB, 40 GB Intel V40, 3x3TB WD Red, Debian

Permalänk
Medlem
Skrivet av hansfilipelo:

Flera kärnor ökar strömförbrukningen och tar upp mer kretsyta. Varför har Intel ingen Quad Core SoC för ultrabooks?

Ett gränssnitt där vi kan köra två applikationer halvdant på en "phablet". Ta fram en praktisk tillämpning för "split screen" som motiverar fler än två kärnor? Det tyngsta som körs på dagens touch-enheter är webbsurfning och du kan inte skriva in två adresser samtidigt med det gränssnittet precis

Vill du köra en webbserver har du helt enkelt valt fel typ av enhet - vilket alltså inte är en praktisk tillämpning för en mobiltelefon.

För att det är billigare och strömsnålare och i det segmentet är inte topprestanda viktigt. Sen måste ju toppmodellerna ha flera fördelar över dessa eftersom säljs dyrare och det inkluderar bland annat fler kärnor.

Det är ju A och O om man vet hur strömfunktioner fungerar och chipsets uppbyggnad är för att såga flera kärnor, att generalisera att flera kärnor är sämre utan att veta om specifika specifikationerna och prestandasiffror är väldigt lustigt enligt mig.
Samma visa som med "fler Megapixlar ju sämre kvalitet", men så är det inte. "Antingen eller" kör de flesta med men så funkar det aldrig.
Allt har för och nackdelar som livet...
Förstår inte riktigt varför man skapar en tråd om detta för det finns ju 100 andra grejer som man kan resonera samma sak om.
Android är möjligheternas OS, och där efter kräver det hårdvara.

Permalänk
Medlem
Skrivet av BoToss:

Jo tack, har läst även detta inlägg men ser inte hur en telefon påverkas negativt av flera kärnor så länge de inte förbrukar spänning. Förstår dock att du ser negativt på flera kärnor då Apple troligen inte uppgraderar CPUn på kommande IPhone.
Den spänning de förbrukar vilande, vad kan det vara i skärmtid, 2 minuter max på en batteriladdning...

Som sagt, du får mer overhead, mer kod att debugga och ingen prestandavinst. Det är omotiverat att fortsätta trycka in kärnor i en mobiltelefon. Bättre att satsa kiselytan på annat och driva IPC istället (vilket exempelvis Qualcomm gjort under lång tid).

Skrivet av BoToss:

Grädde på moset, Samsung erbjuder ju split screen, här har vi en ypperlig anledning att favorisera flera kärnor?

Nej, därför att mobilapplikationer är fortfarande oerhört simpla saker. Att skriva ett SMS och samtidigt titta på en film kräver inte mycket.

Visa signatur

i5 4670k 4.2Ghz 1.2v
AMD R9 290
Windows 10

Permalänk
Medlem

"8 kärnors mobil är korkat" - Ooooja, vad använder man en mobil till? Ringa, mail och lite enkla appar. På sin höjd lite svtplay etc. Hur multitaskande kan man vara med en mobil?

Finns ingen chans att man kan utnyttja 8 kärnor.

Som det ser ut nu kommer jag behålla min HTC Sensation så länge den funkar.

Visa signatur

Chassi : BitFenix Prodigy Svart mITX Moderkort : Asus P8Z77-I DELUXE mITX CPU : Intel Core i7 3770K RAM : Crucial 16GB (2x8192MB) CL9 1600Mhz Ballistix Sport

Permalänk
Skrivet av leafbranch:

För att det är billigare och strömsnålare och i det segmentet är inte topprestanda viktigt.

Hur chippet presterar är viktigare i en mobiltelefon än i en ultrabook? Rätt relevant i bägge fallen och många andra fall.

Skrivet av leafbranch:

Samma visa som med "fler Megapixlar ju sämre kvalitet", men så är det inte. "Antingen eller" kör de flesta med men så funkar det aldrig.

Beroende på tillämpning så finns det klart smartare och mindre smarta val. Man kan inte bara ersätta ett 16-core Intel Xeon-system med ett ARM-system med 256 CPUer utan att fundera över vad man har för last.

System med många långsammare kärnor lämpar sig där en lättare uppgift görs i en mängd instanser. Det är alltså väldigt lämpligt för t ex storskalig webbhosting - de allra flesta uppgifterna går däremot bättre på en CPU med högre IPC eftersom de antingen inte är skrivna så de kan utnyttja större mängd trådar eller är olämpliga att parallellisera.

De flesta uppgifterna (alla) du ger en mobiltelefon hamnar i den senare kategorin och vinner alltså mer på högre IPC än fler kärnor. Det i alla fall jag försöker säga är - slösa inte chipyta/effektutveckling på fler kärnor utan fokusera på det som faktiskt är relevant.

Att vi har fyrkärniga mobiltelefoner beror helt och fullt på stark marknadsföring från nVidia och en rädsla hos de andra tillverkarna att verka sämre.

Visa signatur

Primär: MBP 16", M1 Pro, 32 GB, 512 GB SSD, Thunderbolt dock, Dell U3415W HTPC: FD Node 202, Ryzen R5 3600, 16 GB, Radeon RX480 Nitro+ 4 GB, 850 Pro 512 GB+MX100 512GB Main server: Rasberry Pi 4 8 GB Worker server: FD Node 304, Core i3 3220T, 16 GB RAM, 60 GB Intel 330+80 GB 320, 3*3TB WD Red, Debian Backup: AMD E-350, 8 GB, 40 GB Intel V40, 3x3TB WD Red, Debian

Permalänk
Medlem

Håller med, 4 känns överdimensionerat, skulle nöja mig med 2 snabba cores. Efter det är det strömförbrukningen och batterikapaciteten som gäller för min del. Fler lurar med 3000+ mAh tack!

Permalänk

På ett sätt känns det ändå bra att tillverkarna pressar funktioner i stället för specs. Synd bara att det resulterar i att folk köper en S4 där du kan "scrolla med ögonen" i stället för tex en htc one som egentligen är bättre pga mindre bloat.

En vacker dag i framtiden kanske tillverkarna slutar förstöra android med bloat och pressa telefoner med specs som inte spelar någon roll, och i stället pratar om användarupplevelsen. Ärligt talat, en Galaxy s2 med CM10.1 och en bra kernel känns snabbare än en stock S4.

Permalänk
Datavetare
Skrivet av BoToss:

Jo tack, har läst även detta inlägg men ser inte hur en telefon påverkas negativt av flera kärnor så länge de inte förbrukar spänning. Förstår dock att du ser negativt på flera kärnor då Apple troligen inte uppgraderar CPUn på kommande IPhone.
Den spänning de förbrukar vilande, vad kan det vara i skärmtid, 2 minuter max på en batteriladdning...

Grädde på moset, Samsung erbjuder ju split screen, här har vi en ypperlig anledning att favorisera flera kärnor?

Som jag redan skrivit så är problemet mindre på Snapdragon än på andra SoC, men problemet finns även där.

Första problemet, som inte finns på Snapdragon (och ej heller på kommande BayTrail-T), är att spänningen inte kan varieras individuellt för varje kärna.

Nästa problem är att man har specifika optimeringar idag som gör att man kan totalt "power-gate:a" alla kärnor utom en, men det går inte att styra mer specifikt än så. Det betyder att så fort ditt program använder mer än en kärna men inte kan använda alla kärnor (i praktiken 100% av alla dagens appar) så drar även de oanvända CPU-kärnor en icke försumbar mängd ström. Detta är även problem på Snapdragon, men det är ett mindre problem där då man i alla fall kan köra de andra kärnorna på lägre spänning.

Bl.a. Ericsson har gjort studier på hur antalet kärnor påverkar den CPU-frekvens man kan köra ett chip på. Skulle man plocka bort två kärnor från ett 4-kärnigt SoC som idag maxar på, säg 1.7GHz, så skulle man i stället kunna få ett maxfrekvens på kanske 1.9-2.0GHz med samma TDP. Inte en stor skillnad, men det är trots allt något som ökar enkeltrådprestanda och därmed minskar latensen. Det som avgör hur snabb din enhet "känns" är latens, inte hur mycket arbete den kan utföra i CPU-bundna arbeten (för om dessa ska skala måste de, p.g.a. att det är dyrt att kommunicera mellan CPU-kärnor, utföra jobb som tar relativt lång tid).

Läser man på lite om forskning kring algoritmer/datastrukturer som lämpar sig för parallella-system så märker man direkt att dessa är långt mycket mer komplicerade än motsvarande för sekventiella system. Väldigt många problem kan helt enkelt inte köras effektivt om inte tiden det tar att lösa problem är väldigt stort (se Gustafson's law). Men vem kör relationsdatabaser, fluiddynamik-simulering eller liknande på sin telefon??

För interaktiva program är två kärnor optimalt, en kärna sköter GUI/interaktion med användaren, den andra kärnan sköter resten. Här är tiden det tar att reagera på ett event väldigt kort så det går inte att sprida ut programmet över flera kärnor med mindre än att det blir långsammare, detta kommer inte heller bli bättre med tiden då flaskhalsen här är relativt grundläggande saker som ljusets hastighet och storleken på atomer...

Och om nu 4 kärnor verkligen gav något, hur kommer det sig att iPad/iPhone kan kännas så snabba? Tittar man på Swift (CPU-kärnan i iPad4/iPhone5) så har den snabbaste RAM-buss-implementationen av alla ARM-SoCer som finns idag, CPUn har också väldigt bra IPC för heltal (IPC för flyttal är bättre på Cortex A15 och Krait300/400, men IPC för flyttal är helt irrelevant i praktiken för det man gör på en mobil enhet). I.e. man har fokuserat på det som är relevant för upplevelsen i stället för att slänga på massor med CPU-kärnor.

Hur många har klaga på att Nexus 10 är seg? Den har två relativt starka CPU-kärnor.

För de som fortfarande tror att de ens kan använda 2 CPU-kärnor, gör det jag skrev i första posten: installera Android-SDK, koppla in telefonen/pekplattan, köra "adb shell top | grep User", kör det mest krävande du gör på din enhet (skilt från benchmarks) och notera att CPU-usage kommer på sin höjd hamna på 100-130% (vilket då betyder att du kan fullt ut använda 1-1.3 CPU-kärnor).

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem

Vid utvecklingen av en ny SOC så är en av de viktigaste begränsningarna vad den ska kosta, detta innebär i praktiken att ingenjörerna får en viss kiselyta att leka med. Om man väljer 4 kärnor istället för två så MÅSTE man försämra prestandan rejält i någon annan del av SOC'en (t ex IPC eller grafikprestandan), ännu värre med 8 kärnor.
Så vi som konsumenter får sämre produkter på grund av felriktat spec-race.
Förstår inte att en del på ett teknikforum som Sweclockers inte förstår det. Produktutveckling är i första hand en massa kompromisser genom balansering av olika egenskaper. Satsar företagen på saker som inte är viktiga men låter bra på papperet så blir det sämre för oss.

Permalänk
Medlem

-

Permalänk
Datavetare
Skrivet av Erben:

Vilket kommer först hårdvaran eller mjukvaran?
Generellt släpps hårdvarna till utvecklarna först för att det ska finnas mjukvara till konsumentmarknaden i samband med introduktion av ny hårdvara. När nu hårdvara är så svår att programmera så kan det vara bra att få ut hårdvaran till lägre priser. Det ger att flera har möjlighet att lära sig parallell programmering.
Den som då kommer fram med bra programmerare och har produkter ute på marknaden får ett försprång i teknik utvecklingen.
Att endast producera hårddiskar som är av 3TB storlek är ekonomiskt fördelaktigt där en mjukvaruspärr säger att det är en 1TB disk. Samma sak med grafikkort och processorer.

För mig som konsument kan det vara kortsiktigt kostsamt men långsiktigt lönsamt om det lyckas att utveckla en mjukvara som blir bättre anpassad till min hårdvara och får bra mycket bättre flyt med tiden. Det känns som det här med drivrutiner. Du köper en hårdvara idag och får en halvdassig utvecklad drivrutin som knappt fungera och får vänta ett par månader innan den felkorrigerande bloue screen drivrutinen dyker upp.

Dold text

Ser två problem med din logik

1. De senaste 20 åren har hastigheten mot RAM ökat med ungefär 10x medan hastigheten på CPUn ökat med ungefär 1000x, detta har gjort att all form av kommunikation mellan CPU-kärnor är extremt dyr. Konsekvensen av detta är att man måste ha stora "working-set" för att det ska lönas sig att använda många CPU-kärnor (se gustafsons law) så att andelen lokalt arbete är långt större än mängden kommunikation. Anledningen till att man inte kan göra kommunikation mellan CPU-kärnor snabbare är p.g.a. sådana saker som att signaler inte kan färdas snabbare än ljuset och att storleken på atomer gör att avstånden inte kan krympa speciellt mycket mer, i.e. det ser inte ut som detta kommer lösa sig i närtid.

2. Det stora fundamentala skillnaden för oss som utvecklar programvara är att jobba på ett system som har en CPU-kärna vs jobba på system med mer än en CPU-kärna. Har hela tiden skrivit att 2 kärnor är optimalt för tillfället och 2 kärnor gör det ändå möjligt att testa om ens program skalar på SMP. Man har inte heller gjort så stora mängder forskning kring multicore, men det går ju utmärkt att göra på andra system än telefoner avsedda för konsumentbruk.

Om man tar en sådan enkel sak som en FIFO-kö. Ingen har än så länge lyckas skapa en "multi-CPU-säker" FIFO-kö som inte är signifikant långsammare (oavsett hur många CPU-kärnor man använder) än den uppenbara implementation (i.e. dubbellänkad lista) som bara fungerar om man har en CPU-kärna. Så problemet med multicore är att de grundläggande datastrukturerna vi bygger våra program på är lång dyrare att använda om de vara korrekt när flera CPU-kärnor är involverade och man får bara en vinst när problemet man ska lösa är stort och kan relativt delas upp mellan kärnor så de kan jobba på sin delmängd utan att kommunicera med varandra. Interaktiva program faller inte i denna kategori, framförallt inte de relativt enkla program vi kör på mobiler och pekplattor.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem

.

Permalänk
Skrivet av Yoshman:

Ser två problem med din logik

1. De senaste 20 åren har hastigheten mot RAM ökat med ungefär 10x medan hastigheten på CPUn ökat med ungefär 1000x, detta har gjort att all form av kommunikation mellan CPU-kärnor är extremt dyr. Konsekvensen av detta är att man måste ha stora "working-set" för att det ska lönas sig att använda många CPU-kärnor (se gustafsons law) så att andelen lokalt arbete är långt större än mängden kommunikation. Anledningen till att man inte kan göra kommunikation mellan CPU-kärnor snabbare är p.g.a. sådana saker som att signaler inte kan färdas snabbare än ljuset och att storleken på atomer gör att avstånden inte kan krympa speciellt mycket mer, i.e. det ser inte ut som detta kommer lösa sig i närtid.

Nu är problemet med primärminnets hastighet här lösbart med cache i form av SRAM men det understryker ju än mer att två kärnor är effektivare eftersom SRAM förbrukar väldigt mycket kretsyta.

Här är en "die shot" av en 4C Sandy Bridge (32 nm) där man kan se hur kretsytan utnyttjas i denna. Lyckades tyvärr inte hitta Snapdragon S4 Pro / Snapdragon 600 efter en snabb googling.

http://images.anandtech.com/doci/5174/die.jpg

Visa signatur

Primär: MBP 16", M1 Pro, 32 GB, 512 GB SSD, Thunderbolt dock, Dell U3415W HTPC: FD Node 202, Ryzen R5 3600, 16 GB, Radeon RX480 Nitro+ 4 GB, 850 Pro 512 GB+MX100 512GB Main server: Rasberry Pi 4 8 GB Worker server: FD Node 304, Core i3 3220T, 16 GB RAM, 60 GB Intel 330+80 GB 320, 3*3TB WD Red, Debian Backup: AMD E-350, 8 GB, 40 GB Intel V40, 3x3TB WD Red, Debian

Permalänk
Datavetare
Skrivet av Erben:

De påstår att den har en "large level of L3 cach" + färre och komprimerade styrkommandon
http://www.arm.com/products/processors/cortex-a/cortex-a15.ph...

Delad cache är kan hjälpa till, men det hjälper bara latensen på för att läsa data som delas mellan flera kärnor, inte skriva. De multicore-system vi använder oss av upprätthåller en egenskap som kallas "cache coherence", även om en skrivning kanske inte alltid måste gå ända till RAM så är kostnaden (i latens/svarstid) motsvarande den du har mot RAM om en CPU-kärna skriver till en s.k. cache-line (64-byte stora på de flesta moderna CPUer bl.a. de från ARM, AMD och Intel CPUer).

I parallella program vill man ofta bygga sin inter-CPU-kommunikation på primitiver som garanterar sekventiellt-konsistens (SC). I stor sätt betyder det att jag vill ha en garanti att när jag läser variabel A så måste CPUn garantera att alla läsningar och skrivningar som kommer efter denna SC-läsning händer efter (happens after, a.k.a acquire barrier) läsningen av A (i normalfallet kan CPUn ändra runt i den ordning saker faktiskt blir lästa + kompilatorn kan göra liknande optimeringar, är OK i program som kör på en CPU-kärna men i en tråd som kör på en annan CPU-kärna kan "se" en sådan optimering). Motsvarande för skrivning till A så garanterar SC att alla tidigare läsningar/skrivningar garanterat är utförda innan (happens before, a.k.a release barrier) skrivning till A sker.

Att göra skrivningen är dyrt (lång latens) på alla CPU-arkitekturer, men även SC-läsning är dyrt på nuvarande ARM (men inte på x86, SPARC och IA64)!! Detta kommer fixas i 64-bitars ARM, men detta betyder att många CPU-kärnor är speciellt krångligt att hanterar på ARM (PowerPC och MIPS har samma problem). Lite intressant då att Intel står på samma sida som Qualcomm i den diskussion...

Skrivet av Erben:

Processorn är även avsedd för att arbeta i mindre servrar, smartphones, tv, routrar. Bra produkt strategi då konsumenterna köper detta och får utveckling på köpet. En sak vet vi dock den bygger på två olika typer av kärnor som sitter parallellt. En cortex A15 och en cortex A7 " 4 x Cortex A15 + 4 x Cortex A7"
http://www.anandtech.com/show/7164/samsung-exynos-5-octa-5420...

Den ena designad för prestanda och den andra för att vara energi effektiv. Så egentligen så kan man ifrågasätta "true 8 core processor" då jag tolkar den som två parallella 4 core processorer utifrån dess arkitektur som jobbar med hotplugg av kärnor.

http://www.anandtech.com/show/6768/samsung-details-exynos-5-o...

Precis, Cortex A15 verkar lite väl strömslukande för att sitta i riktigt strömsnåla saker så man har tagit fram detta koncept. Problemet är att latensen mellan att byte från LITTLE kärnan till big kärnan är långt ifrån försumbar, så man vill inte göra det ofta. "Fusket" som Samsung blev påkomna med att utföra på benchmarks i Android var till stor del att undvika denna kostnad genom att tvinga telefonen att alltid köra på A15 kärnan.

Detta är dock inget som hjälper skalning över flera CPU-kärnor och Apple, Qualcom och Intel anser alla att big.LITTLE är för komplicerat och har för många nackdelar mot att göra en CPU-kärna som skalar från extremt låg strömförbrukning till hög (för att vara en mobil CPU) prestanda.

Skrivet av Erben:

Det där är komplicerat. Det kan gissningsvis krävas en arkitekturförändring och en innovation i data prioritering i form av någon controllerenhet innan datan delas upp till de olika kärnorna.

Komplicerat == dyrt == kommer inte hända på billiga SoCer inom kort.
Till viss det finns sådan HW, jobbar med system som har 4-32 CPU-kärnor där man bl.a. vill sprida ut nätverkstrafik (ett paket tar typiskt 200 till ett par tusen cykler att hantera, kostnaden för inter-CPU kommunikation är 100-tals cykler...). Detta går inte att göra enbart med logik i CPUn, man måste ha speciellt HW som separerar de olika nätverströmmarna innan de ens når CPU. Ett sådan nätverkskort kostar mer än de flestas spel-riggar...

Sedan har man detta
Unfortunately, the fifth difficulty, the high cost of communication relative to that of processing, remains largely in force. Although this difficulty has been receiving increasing attention during the new millennium, according to Stephen Hawking, the finite speed of light and the atomic nature of matter is likely to limit progress in this

I.e. det är mer eller mindre bevisat att den delen av svårigheten att jobba med multicore kommer nog aldrig lösas, även om man gör framsteg så är det två ungefär tiopotensen som skiljer innan kostnad (svarstiden) för kommunikation hamnar på en nivå så den är ungefär lika snabb som en CPU lokalt kan utföra beräkningar.

PS var lite off med mina 20 år ovan, börjar bli gammal... Tiden ska vara ungefär 25-30 år, men resultatet är detsamma.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem

Om man kör minst 4 trådar med relativt låg cpu-användning,...

Är en nedklockad och nervoltad quadcore mer strömeffektiv än en högre klockad dualcore som kanske måste köras i högre spänning?

Quadcoren körs möjligen i lägre spänning men har flera transistorer att driva.

Hur mycket ström sparar man på att undvika att byta tråd lika ofta på en kärna och hur jämför sig de besparningarna jämfört med en lägre klockad kärna jämfört med en högre klockad?

/s

Visa signatur

2500k H2O, HD6950@6970

Permalänk
Avstängd
Skrivet av shaglord:

Quadcoren körs möjligen i lägre spänning men har flera transistorer att driva.

Hur mycket ström sparar man på att undvika att byta tråd lika ofta på en kärna och hur jämför sig de besparningarna jämfört med en lägre klockad kärna jämfört med en högre klockad?

Jo men tar man en Android som körs med Linuxkärnan så styrs ju allting via vilken "governor" som valts samt drivare och då regleras hur många kärnor som ska användas.

Sen finns det som bekant företag som kör en uråldrig kärna (som förvisso funkar bra) men är och förblir passe'. Det finns då ett egenintresse att köra med mer eller mindre FUD angående all utveckling. (förutom då om jätten glufs-glufs Intel kommer på nåt nytt)

Själv tycker jag att det är alldeles utmärkt med teknikutveckling och även om man för stunden har mindre nytta av CPU-kraften så har man det med säkerhet i framtiden.

Visa signatur

ASUS K56CB i7, W10 > Asus VivoBook S15 S530UN
HTC 10
ASUS Transformer Prime 32GB, Nougat :)
Ubiquiti Edge Lite, UniFi AP-AC-Lite (AP) samt ASUS AC68U och N66U (AP), fiber 500/100Mbit/s.
Mitt nätverk: https://imgur.com/aco9XQz Bild https://imgur.com/oQ2WG9Y

Permalänk
Datavetare
Skrivet av plunn:

Jo men tar man en Android som körs med Linuxkärnan så styrs ju allting via vilken "governor" som valts samt drivare och då regleras hur många kärnor som ska användas.

Sen finns det som bekant företag som kör en uråldrig kärna (som förvisso funkar bra) men är och förblir passe'. Det finns då ett egenintresse att köra med mer eller mindre FUD angående all utveckling. (förutom då om jätten glufs-glufs Intel kommer på nåt nytt)

Själv tycker jag att det är alldeles utmärkt med teknikutveckling och även om man för stunden har mindre nytta av CPU-kraften så har man det med säkerhet i framtiden.

Antar att du refererar till x86 med "uråldrig kärna". ISA-designen på x86 är definitivt komplex och inte alls lika elegant som t.ex. PowerPC eller MIPS. Men 32-bitars ARM är också ett härke utan dess like, så för mobila enheter ser det ut som om de två sämst designade ISA kommer "vinna"... Det positiva för både x86 och ARM är att AMD64/Intel64 städade upp de majoriteten av de missar som faktiskt spelade någon roll. Av allt att döma kommer samma sak hända med 64-bitars ARM, som är mer likt MIPS än det är likt 32-bitars ARM.

I fallet x86 vs ARM så har den senare fördelen av att vara enklare att avkoda instruktionerna (precis som i alla RISC) alltid är fix storlek (4-byte för Aarch32), men x86 har fördelen av att den genomsnittliga längden på instruktioner är <4 bytes + man utföra operationer mot minnet med en instruktion (tar 2 instruktioner för fetch-op och 3 instruktioner för fetch-op-store) så program tar mindre plats och en L1-hit drar mindre ström (och är snabbare) än en L2-hit som drar mycket mindre ström än en RAM-access.

Och i kontext av denna diskussion blir det ju lite fel att kalla x86 för uråldrig då det är den arkitektur av x86/32-bit ARM som har bäst förutsättningar att ge program som faktiskt kan använda många CPU-kärnor...

Det sagt: ISA är långt mindre viktigt än alla flamewars på Internet gör sken av. Det som spelar absolut mest roll är kapaciteten på heltals ALU + kvalitén på minneshierarkin (CPU-cache + RAM-buss).

Designen av själva CPU-kärnan (back-end) är i princip helt oberoende av front-end (där olika ISA hanteras) så ingen modern CPU kan därför sägas köra på en gammal design. Tittar man på Silvermont, som till viss del är specifikt designad för att köra Android, så ser man att det grundläggande byggblocket är en 2-kärning design. Ett 4-kärnig har i princip två separata 2-kärniga CPUer, något som ger lägre strömförbrukning när 1 eller 2 kärnor används då man kan totalt power-gate den andra delen (inklusive L2-cache som är separat per 2 kärnor). Är rätt säker på att man designade så för man vet att ytterst få applikationer kan använda mer än 2 kärnor, men man vet också (från erfarenhet med bl.a. Medfield/CloverTrail) att folk automatiskt tänker 4 kärnor måste vara > 2 kärnor så ur den synvinkeln måste man hålla jämna steg med konkurrenterna...

Det enda positiva man kan säga om 8-kärniga ARM SoC är att de är uppbyggda som två 4-kärniga kluster (separat L2-cache per kluster), så man kommer effektivt kunna power-gate hälften av alla kärnor. Men det är transistorer som skulle kunna används betydligt bättre...

När man pratar om "CPU-kraft" är det bra om man specificerar vad man menar. Har aldrig sagt att inga system ska köra med många CPU-kärnor, men man kan grovt dela in problem i två klasser:
1. de problem man vill uppnå minimal latens
2. de problem man vill uppnå maximal "throughput"

I system som är interaktiva är 1. det viktigaste, majoriteten av alla appar vi kör på mobiler och pekplattor hamnar i den klassen. För att uppnå minimal latens när vi prata om tidsrymder i millisekundskala (vilket åter igen är fallet för mobiler/pekplattor) så är det i princip kört att dela upp problem över flera CPU-kärnor, så för att optimera detta ska man ha så hög enkeltrådprestanda som bara är möjligt.

Vissa problem som normalt inte effektivt går att dela upp, t.ex. nätverk + hantering av lager 4 (TCP hör hit), kan man flytta till klass 2 genom att tillåta sig införa en del latens då det gör det möjligt att flytta relativt många paket när den dyra CPU->CPU kommunikationen sker (i.e. man sprider ut kostnaden så den effektiva kostnaden per paket blir OK). Problemet med detta är att man måste öka latensen, så det är direkt olämpligt i ett program som en människa direkt interagerar mot, och det är allt annat än enkelt att skriva sådana program så det blir dyrt. Vidare blir lösning man får fram inte helt allmängiltig, inte ens fast man har hjälp av speciell HW. Vissa fall hamnar på "fel" CPU-kärna, något som måste upptäckas och hanteras (==komplicerat).

Inte för att det är viktigt för denna diskussion, men en "governor" styr inte hur många kärnor som ska användas, den specificerar vilken policy som ska användas för att ändra frekvensen på CPU-kärnorna med avseende på aktuell last.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Avstängd
Skrivet av Yoshman:

Inte för att det är viktigt för denna diskussion, men en "governor" styr inte hur många kärnor som ska användas, den specificerar vilken policy som ska användas för att ändra frekvensen på CPU-kärnorna med avseende på aktuell last.

Jo det är min alldeles bestämda åsikt att guvernören gör just det.

http://pocketnow.com/2012/12/17/understanding-the-android-gov...

Sen poängen och det viktiga med mitt inlägg är att alla teknikutveckling är bra och alldeles utmärkt när det kommer från någon annan än Intel!

Visa signatur

ASUS K56CB i7, W10 > Asus VivoBook S15 S530UN
HTC 10
ASUS Transformer Prime 32GB, Nougat :)
Ubiquiti Edge Lite, UniFi AP-AC-Lite (AP) samt ASUS AC68U och N66U (AP), fiber 500/100Mbit/s.
Mitt nätverk: https://imgur.com/aco9XQz Bild https://imgur.com/oQ2WG9Y

Permalänk
Datavetare
Skrivet av plunn:

Jo det är min alldeles bestämda åsikt att guvernören gör just det.

http://pocketnow.com/2012/12/17/understanding-the-android-gov...

Sen poängen och det viktiga med mitt inlägg är att alla teknikutveckling är bra och alldeles utmärkt när det kommer från någon annan än Intel!

I din länk står
In computers, Governors are a little more intelligent than just capping the top speed. Instead, these Governors are a set of policies that allow the system to adapt to conditions and adjust the CPU frequency accordingly.

Annars kan du även titta i <linux_src>/drivers/cpufreq/cpufreq_[ondemand|performance|powersave].c. Linux kan ta bort/lägga till CPU-kärnor under drift, kallas CPU-hotplug, men det är ingen som används av dessa CPU-governor.

Även om att förändrar antalet CPU-kärnor är möjligt under drift (används på t.ex. Tegra3 för att switcha mellan 4-kärnor och companion-core) så är det ganska dyrt (hög latens) så är något man vill ha ganska mycket hysteres på.

Om din definition på bra utveckling är: vad som helst som inte Intel "kommit på" så kan jag definitivt se fördelen med både 4- och 8-kärnorns mobiler

Personligen vill jag ha en så bra upplevelse som möjligt och väljer den tillverkare som för tillfället tycker är bäst. Idag skulle jag definitivt välja en telefon med Snapdragon600, men det SoC skulle vara ännu bättre om fler använde den 2-kärniga varianten...

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av Yoshman:

Personligen vill jag ha en så bra upplevelse som möjligt och väljer den tillverkare som för tillfället tycker är bäst. Idag skulle jag definitivt välja en telefon med Snapdragon600, men det SoC skulle vara ännu bättre om fler använde den 2-kärniga varianten...

Varför lever du inte som du lär efter att ha skrivit två sidor om att annat än dual core är korkat?

Visa signatur

Main Core i9-9900k | NH-D15 | ROG STRIX Z390-F | 16GB DDR4 3200 MHz LPX | STRIX 2080 Ti GAMING OC | Samsung 970 EVO 1TB + Toshiba XG5 256GB | RM650X | R5 Blackout
HTPC/Barndator: Core i5-8400 | ASUS PRIME B360M-A | 16GB DDR4 2666 MHz | STRIX GTX 1070 OC | 2 x Toshiba XG5 256GB
Extradator: Core i7 870 | ASRock H55M-LE | 8GB 1600 MHz | Intel 320 120GB | HD6950 2GB | VX 550W

Permalänk
Avstängd
Skrivet av Yoshman:

Om din definition på bra utveckling är: vad som helst som inte Intel "kommit på" så kan jag definitivt se fördelen med både 4- och 8-kärnorns mobiler

Personligen vill jag ha en så bra upplevelse som möjligt och väljer den tillverkare som för tillfället tycker är bäst. Idag skulle jag definitivt välja en telefon med Snapdragon600, men det SoC skulle vara ännu bättre om fler använde den 2-kärniga varianten...

Jo det är alldeles utmärkt att Intel inte härjat på och erövrat även smartphones.

Jo jag kör själv en lur med an Snap600.

Sen finns det då en komplikation med Samsung Exonys och det är att det behövs propreitär kod och jag vet inte hur man löst det med Linuxkärnan? Hursomhelst så är utveckling alldeles utmärkt!

Tegra5-Kepler är sedan pågång och det ser mycket intressant ut.

Visa signatur

ASUS K56CB i7, W10 > Asus VivoBook S15 S530UN
HTC 10
ASUS Transformer Prime 32GB, Nougat :)
Ubiquiti Edge Lite, UniFi AP-AC-Lite (AP) samt ASUS AC68U och N66U (AP), fiber 500/100Mbit/s.
Mitt nätverk: https://imgur.com/aco9XQz Bild https://imgur.com/oQ2WG9Y

Permalänk
Datavetare
Skrivet av mfm:

Varför lever du inte som du lär efter att ha skrivit två sidor om att annat än dual core är korkat?

Titeln är säger att 8-kärnor är korkat, det jag skrivit är att givet vad vi har idag (och antagligen kommer göra under många år framöver) så är två kärnor optimalt och 4 kärnor är inte bra för något annat än PR då 2 av kärnorna kommer i extremt nära 100% av fallen göra absolut ingenting mer än dra (lite) ström och ta upp plats som kunde används till annat (t.ex. öka IPC och/eller öka klockfrekvens).

Anledningen att jag ändå tycker Snapdragon600 är det bästa SoC för mobiler man kan hitta idag beror på att det är väldigt strömsnålt, innehåller en GPU som är mer än tillräckligt snabb och absolut viktigast, med hänsyn till denna diskussion, det är det SoC för mobiler med bäst enkeltrådprestanda du kan hitta. Enyxos Octa ligger på samma nivå vad det gäller enkeltrådprestanda, men drar mer ström och big.LITTLE lägger till latens när man går från "idle" till "active" så den "känns" inte fullt lika snabb som Krait300 trots vad benchmarks visar.

Jag är inte emot utveckling och definitivt inte emot CPUer med många kärnor (mitt jobb är att skriva programvara som kan utnyttja många CPU-kärnor på ett effektivt sätt). Säger bara att en mobil/pekplatta är inte det ställe där många kärnor är vettigt då det är ett system som ska optimeras för latens och inte "throughput"!

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem

Håller med, android är ju inte direkt en dator du kan köra multi taskning eller nåt, tyckte dual core var bra overkill men nu ska tydligen quad cores 2ghz och uppåt vara standard,, det är fan löjligt...

Permalänk
Skrivet av mfm:

Varför lever du inte som du lär efter att ha skrivit två sidor om att annat än dual core är korkat?

Därför att dual core-varianten har samma CPU-kärnor men lägre klockade (max 1,7 GHz Krait 300 vs 1,9 GHz Krait 300) och en sämre GPU (Adreno 305 vs Adreno 320). Qualcomm har alltså medvetet sänkt prestandanivån på dual core-chippet. Eftersom frekvensen är lägre så är inte latensen bättre i dual core-varianten.

edit: Dessutom släpps ju flaggskeppsprodukterna med Snapdragon 600. De bästa enheterna är alltså fyrkärniga.

Visa signatur

Primär: MBP 16", M1 Pro, 32 GB, 512 GB SSD, Thunderbolt dock, Dell U3415W HTPC: FD Node 202, Ryzen R5 3600, 16 GB, Radeon RX480 Nitro+ 4 GB, 850 Pro 512 GB+MX100 512GB Main server: Rasberry Pi 4 8 GB Worker server: FD Node 304, Core i3 3220T, 16 GB RAM, 60 GB Intel 330+80 GB 320, 3*3TB WD Red, Debian Backup: AMD E-350, 8 GB, 40 GB Intel V40, 3x3TB WD Red, Debian

Permalänk
Medlem
Skrivet av hansfilipelo:

Därför att dual core-varianten har samma CPU-kärnor men lägre klockade (max 1,7 GHz Krait 300 vs 1,9 GHz Krait 300) och en sämre GPU (Adreno 305 vs Adreno 320). Qualcomm har alltså medvetet sänkt prestandanivån på dual core-chippet. Eftersom frekvensen är lägre så är inte latensen bättre i dual core-varianten.

edit: Dessutom släpps ju flaggskeppsprodukterna med Snapdragon 600. De bästa enheterna är alltså fyrkärniga.

Om det hade gjort någon större skillnad är det ju en smal sak att överklocka upp till 1,9 GHz även i dual-core-fallet...

Sen har ju 3DMark till Android ett fysikdemo som tydligen lyckats tråda bra över fyra kärnor och där Nexus 10 därför åker på mycket stryk: "The quad-core devices are able to outperform the dual-core Cortex A15 based Nexus 10, despite the latter having far better single threaded performance." . Då är det ju inte så otroligt att även andra titlar med avancerad grafik kan använda liknande tekniker i framtiden.

Sen håller jag med om att åtta kärnor är onödigt... men det finns betydligt större svarta moln på mobilhimlen än 8-kärniga processorer, som inkapslade batterier, skärmar som inte går att byta (ens på verkstad), chassin som inte går att öppna utanför verkstäder, gigantiskt med bloat (som ändå kommer slöa ner en Snapdragon 800 så den går som en single-core), låsta bootloaders etc...

Skrivet av hansfilipelo:

Nokia har gått ut och sagt att fler än två kärnor i nuläget är omotiverat i en mobil enhet.

Självklart säger de det, de har inte möjligheten att tillverka något annat än mobiler med två kärnor.

Visa signatur

Main Core i9-9900k | NH-D15 | ROG STRIX Z390-F | 16GB DDR4 3200 MHz LPX | STRIX 2080 Ti GAMING OC | Samsung 970 EVO 1TB + Toshiba XG5 256GB | RM650X | R5 Blackout
HTPC/Barndator: Core i5-8400 | ASUS PRIME B360M-A | 16GB DDR4 2666 MHz | STRIX GTX 1070 OC | 2 x Toshiba XG5 256GB
Extradator: Core i7 870 | ASRock H55M-LE | 8GB 1600 MHz | Intel 320 120GB | HD6950 2GB | VX 550W