Goed idee, hier een punt-voor-punt reactie:
"128 bits systemen" gaan er vrijwel zeker niet komen. Computers gaan simpelweg niet meer dan 2^64 bytes aan geheugen krijgen (..)
Meer dan 2^64 bits kunnen adresseren is niet de enige reden om van 64 naar 128 bits processoren over te willen stappen. Je SIMD instructies worden (in het ideale geval) twee keer zo efficiënt als je registers twee keer zo groot worden.
Maar als je mij niet gelooft, misschien heb je dan wel vertrouwen in de toekomstvoorspellingen van Microsoft:
'Windows 8 krijgt 128bit-kernel'.
Een 128 bits CPU ISA die niet op patenten gebaseerd is? Dat is zelfs de x86 ISA niet (de Intel en AMD implementaties van x86 zijn dat wel, maar de Bochs emulator weer niet).
Toegegeven, ik heb geen idee hoe de juristen het precies geregeld hebben. Het enige wat ik wel weet is dat ik (zelfs al had ik een paar miljard euro over om mee te spelen) niet hoef te proberen een derde CPU-fabrikant op poten te zetten; die zou namelijk (in elk geval niet zonder Crusoe-kunstgrepen, met die truken weet ik niet hoe het zit) een x86 / x86-64 CPU mogen maken.
Lees
hier even wat er staat bij 1982 en 1994.
Je idee van een "legacy co-procesor" is onzinnig. Waarom zou een aparte chip goed zijn, terwijl een "legacy mode" van een CPU dat juist niet is?
Omdat je een discreet element later (als de processoren krachtig genoeg zijn om emulatie in software te doen) makkelijk weg kunt laten. Overigens hoeft het van mij niet persé een aparte chip te zijn (wat vroeger begon als FPU (floating point co-processor) is ook al tijden geïntegreerd in de CPU zelf, iets soortgelijks is nu aan de gang met de GPU), ik noemde alleen verschillende mogelijkheden. Ik heb niet genoeg verstand van zaken en ervaring om daaruit de beste te kiezen.
De i7 besteedt 0 klokcycles aan de predecode. Dat zit namelijk in de pipeline.
Tuurlijk zit het in de pipeline, waar zou het anders moeten zitten? Het is een extra cycle die wordt weggegooid elke keer dat de pipeline gereset moet worden (in elk geval bij elke mispredicted branch en mogelijk (weet de details niet uit mijn hoofd) bij serializing instructions).
Wat betreft je uitspraak dat de i7 deze niet heeft, Intel zelf beweert (op pagina 50 van haar
Intel® 64 and IA-32
Architectures Optimization Reference Manual van wel, dus dat geloof ik dan gewoon.
Een RISC heeft inderdaad een vaste lengte van instructies. Het gevolg daarvan zie je goed bij ARM, een klassiek RISC ontwerp: dan eindig je met hacks als Thumb mode en Thumb2 mode. Dat is net zo erg als de verschillende x86 modes, en dan heb je bij ARM nog steeds geen 64 bits mode. Bovendien is de instruction density in de cache op RISC daardoor slechter.
Want x86 CPUs zitten niet vol hacks...
Of de ARM een 64 bits mode heeft is toch totaal niet relevant.

OoO execution staat los van de x86 ISA: snelle processoren zoals de IBM Power en de Core i7s hebben het, maar de Atom heeft het niet. En ja, het is niet geweldig handig om de instructie dependencies elke keer opnieuw te laten bepalen, maar het is wel handig dat de CPU ze zelf kent. Zou de compiler dat gedaan hebben, dan zou je Core i7 code niet compatible zijn met de Phenom - Die hebben namelijk verschillende instruction dependencies.
Ja, je kunt zowel out-of-order als in-order implementaties maken van dezelfde ISA. Maar het lijkt mij dat elke nieuwe generatie dit zal blijven ondersteunen in de high-end modellen.
Volgens mij hebben we het over iets anders; ik bedoel de dependencies van de instructies. Bijvoorbeeld mov eax, "waarde" \\ add ebx, eax kun je beter niet parallel uitvoeren. Maakt geen bal uit hoe je processor intern werkt, dat gaat fout. Wat jij bedoelt is, denk ik, de dependencies van de functional units. Dat is inderdaad, met het oog op zowel forward als backward compatibilty handiger om aan de processor zelf over te laten. Bijvoorbeeld, add eax, ebx \\ add ecx, adx kun je prima tegelijk utivoeren, mits je twee adders hebt. Lees anders even
dit artikel, met name hoe Itanium omgaat met een "instruction group" (niet bundles, groups). Dat is wat je niet, at runtime, wilt laten uitvogelen door de processor, dat is een taak die prima geschikt is voor de compiler.
Instruction dependencies zijn namelijk expliciet geen onderdeel van de x86 ISA, maar wel van de Itanium ISA.
Ik zeg ook niet dat ze onderdeel van de x86 ISA zijn, ik zeg (of in elk geval, dat probeerde ik, sorry als het onduidelijk was) dat het onderdeel van een moderne, toekomst-bestendige ISA (zoals mijn hypothetische 128 bit ISA)
hoort te zijn.