Skrivet av sebmod:
Vad jag förstår är Ky X1 en rebrandad Spacemit K1/X60 (den verkar i alla fall kunna använda samma stöd av det som hittills upstreamats i linux: https://lore.kernel.org/spacemit/20250718085718-GYA695709@gen... och borde därför inte vara sämre men jag kanske missar något.
En lite mindre rolig detalj med just Spacemit K1 är att medan den stödjer unaligned minnesåtkomst för grund-ISAn så gäller det inte för vektortillägget (och har ingen fallback i firmware)... GCC 14:s autovektorisering är inte särskilt bra på att hantera det och genererar i flera fall unaligned minnesåtkomst i sin vektoriserade kod. GCC 15 verkar dock ha löst det i princip helt och klarar att falla tillbaka på skalär kod även i ett test där jag avsiktligt använder minnet unaligned. LLVM (testat 18 upp till och med 20) verkar också ha problem, kanske något mindre än GCC 14 men en del kompilerade program verkar fortfarande dödas av SIGBUS. Kan också se att den gerererar unaligned minnesåtkomst i den vektoriserade koden i testet, dock är testet troligtvis egentligen UB så skulle inte dra någon större slutsats av att just det blir fel.
Jag köpte en BPI-F3 (som använder Spacemit K1) i juli förra året och den första vendor-kärnan baserad på 6.1 var horribel att arbeta med (den hängde sig alltid under belastning efter ett tag om CONFIG_COMPACTION var påslaget exempelvis...). Den baserad på 6.6 är mycket bättre men fortfarande inte helt hundra. Den på 6.1 (och även den på 6.6 till en början) hade de squashat allt till ett par mega-commits där även tidiga patchar på annat från innan de blev accepterade i mainline ingick vilket försvårat felsökning avsevärt, men det är väl tyvärr inte ovanligt att vendor-kärnor ser ut på det sättet. Det finns också en baserad på ca 6.13-rc1 men den har ett par uppenbara artefakter av att vara rebasad som man behöver fixa själv om den ska gå att bygga med rimlig config. Nu börjar iaf stödet i mainline linux bli användbart (om man inkluderar ett par till patchar som inte är helt igenom review) så slipper bråka mer med gamla vendor-kärnor vilket jag är glad över.
Om SpaceMIT och Ky X1 är samma CPU, vilket inte känns helt orimligt då båda stödjer RVA22 och båda har 2 TOPS "AI-prestand" känns lite optimistiskt att hävda ~1,3 * Cortex A55 prestanda...
Detta är vad Phoronix fix när det testade Orange Pi RV2, den är en bra bit efter RPi4 trots att RV2 har 8 kärnor och RPi4 har 4 samtidigt som Phoronix ofta har lite väl mycket saker som skalar nära perfekt med kärnor i sina tester.
Men samtidigt känns det då positivt att stabiliteten går åt rätt håll. Har testat en del Rust, Go och Python kod på min Orange Pi RV2. Den är ingen raket, men den har varit stabil. Det lilla jag testat I/O-headern har också fungerat väl.
Så RISC-V må vara omoget än, men det verkar gå åt rätt håll
Skrivet av Pettson88:
Jovisst var arkitekturen inte helt betydelselös, men precis som en del nu förutspår/tror/hoppas att ARM kommer ta över allt vad x86 heter så förutspåddes det även då att PowerPC minsann skulle slå undan x86, då den var så överlägsen på alla sätt och vis.
Resonemanget jag är inne på kontinuerligt är att det inte är så enkelt, även om en del förutspår/tror/hoppas det.
Håller med om att det fanns en hel del kul PowerPC-baserade grejer. Jag själv hade ingen Amiga 4000, men jag har använt en del PowerPC-baserade Macar genom åren.
Fast då borde du också veta att PowerPC må ha haft en del fördelar jämfört med x86, men dessa var inte väsentligt bättre prestanda för "normal heltalskod".
PowerPC hade fördelar som gjorde de väldigt populära inom flertalet embedded områden under lång tid. Flyttalsdelen var också bättre än x86 under lång tid, men PowerPC var egentligen aldrig bättre på heltal (och som Torvalds sagt flera gånger, att x86 länge sög på flyttal spelade rätt liten roll då det är lång mindre viktigt än bra heltalsprestanda).
PowerPC (och än mer MIPS) var typiska "RISC:ar" i att samma kod typiskt genererar fler instruktioner jämfört med motsvarande x86_64.
Vidare var det först runt 2010 som man började få en bra idé om lämpliga primitiver för multicore etc. PowerPC (och MIPS) visade sig missa målet där rätt ordentligt, mer så än x86.
Även här är ARM64 och RISC-V unika. De har nära nog perfekt match sett till multicore primitiver och de tenderar också generera färre instruktioner jämfört med motsvarande x86_64 kod, trots att en styrka hos "CISC" ska vara mer avancerade instruktioner. ARM64/RISC-V verkar ha mer "rätt" instruktioner för vad moderna kompilatorer vill ha.
Sedan verkar "killer feature" i ARM64/RISC-V ISA vara att man där fått ned längden på "critical path" i beroende kedjor mellan instruktioner. Är rimligen detta som gör att perf/Hz kan vara så väldigt mycket högre ILP jämför med alla tidigare ISA. Tog rätt många misslyckade försök med t.ex. VLIW, men tillslut verkar man lyckats hitta en förändring av ISA som är högst relevant.
Skrivet av Pettson88:
Tycker även, apropå varierande arkitekturer, det var kul att ATI/AMD körde VLIW-baserade GPUer ett tag (genom deras TeraScale-arkitektur - en del av de korten var ju rätt populära) i kontrast till CISC (som bl.a. x86 tillhör) eller RISC (MIPS, SPARC, ARM mfl.). Numera kör väl både Nvidia (PDF) och AMD (PDF) proprietära instruktionsuppsättningar, jag är inte tillräckligt insatt för att bryta ner hur de är uppbyggda. Nvidia har däremot lite RISC-V i sina nyaste kort, en "AI management processor" som är RISC-V-baserad
VLIW-CPUer har väl dock aldrig riktigt fått något större genomslag - visst fanns Itanium (som har sin begynnelse i VLIW) ett tag, men precis som jag har varit inne på ett antal gånger blev inte heller den arkitekturen den där kioskvältaren som en del tänkte sig. Det var en del som förutspådde/trodde/hoppades att den skulle konkurrera med (och slå ut) både CISC- och RISC-produkter. Ryska Elbrus är knappt värd att nämna i sammanhanget.
VLIW har sina fördelar. Huvudtanken där var att man såg att allt mer transistorer lade på att förutsäga dynamiska beteendet hos program. Tanken med VLIW var att flytta detta jobb till väldigt avancerade statisk analys som gjordes vid kompileringstillfället.
Tankevurpan var att CPU-hastigheten och minnes-hastighet bara fortsatte att divergera, vilket gjorde att sådan man bara kan veta när man kör programmet, d.v.s. dynamisk information, blev allt mer värdefull. VLIW fungerar väldigt bra på kod med hög lokalitet och där det är hyfsat enkelt att bedöma beteendet, hyfsat vanligt i flyttalstung kod men tyvärr väldigt ovanligt i mycket av "normal skalär heltalskod" vilket utgör majoriteten av vanliga desktop-program.
VLIW var en därför en bra idé på GPU-sidan fram till att shaders blev allt för avancerade och dynamiska i sina beteenden. Dagens GPUer har gått mot att vara allt mer skalära i sitt beteenden. Nvidia är alltid noga att påpeka att deras GPUer idag kör SIMT, inte SIMD, huvudskillnaden är att den förra har skalära register per tråd medan den senare har vektor-register med en slot per "lane".
TL;DR på hela detta är att vi aldrig tidigare haft någon ISA som rätt konsekvent är bättre än x86_64. Vi har nu minst en, ARM64, och av allt att döma är även RISC-V en sådan. DET är den viktiga tekniska skillnaden att nu önska en så snabb sorti som möjligt för x86_64, för det är ett ankare samtidigt som vinster i kiseltillverkning inte längre kan gömma problem den vägen lika lätt.