GJ-tje schreef op zaterdag 26 juli 2008 @ 11:47:
[...]
Officieel gezien betekend dat dus wél dat je alléén 64 bits software kan draaien, kijk maar naar Intels Itanium processors / IA64 architectuur (of was het nou X86-64 wat op de Itanium zit?

).
Nee, de Itanium heeft geen x86 architectuur. Daarom draait de normale Windows versie er niet op. De 64-bit Itanium heeft de IA64 architectuur. 32-bits applicaties draaien ook gewoon op een 64-bit Athlon 64 omdat het gewoon een x86 CPU is die backwards compatible is, anders zou het ook geen x86 CPU zijn.
De '64 bits' processors op de desktops, AMD Athlon 64, Core 2 Duo, de P4 met EMT64 extentie zijn stuk voor stuk 32 bits processoren, echter hebben zij uitbreidingen, zodat zij óók 64 bits kunnen draaien.
Ook fout, de AMD Athlon 64 en alle andere CPU's die je noemt zijn volwaardige 64-bits CPU's. Dat heeft niks met je instructieset te maken, maar met je register. Een 64-bit CPU heeft registers die 64-bits groot zijn, een 32-bits CPU een van 32-bits. Een AMD Athlon 64 is zowel een 64-bits, 32-bits, 16-bits compatible x86 CPU.
Dit komt omdat men de registers heeft opgedeeld in stukjes. Bij de AMD64 architecuur zijn er dus nieuwe instructies bijgekomen die de totale 64-bits van een register kopiëren. Daarnaast zijn de oude commando's van de Intel 386 en 8086 ook nog altijd aanwezig om respectievelijk het 32-bits en 16-bits deel van het register te nemen voor backwards compability. Zonder die instructies zou het geen x86 CPU zijn!
Je zegt het dus verkeerd, de Athlon 64 is namelijk een 64-bits CPU die ook instructies heeft om hem compatible met de x86 instructieset te houden. Zo kan hij dus OOK 32-bits en 16-bits applicaties draaien*.
Overigens is x64 ook niet echt goed om te gebruiken. We hebben namelijk ook nooit x32 voor 32-bits x86 processoren gebruikt. 64-bits slaat dus op je register en niet op je instructieset die bij "x64" processoren ook gewoon x86 is. Ze hebben dan wel de AMD64/EM64T uitbreiding, maar dat is een uitbreiding op de x86 instructieset, net zoals SSE en MMX bijvoorbeeld.
Voor de mensen die nog iets meer wilen weten over die registers, het 16-bits deel van het 1e register (A) spreek je aan met AX, het 32-bits deel is EAX en het 64-bit deel is RAX.
Dan wil ik voor de duidelijkheid ook nog ingaan op het begrip instructieset. Dat is eigenlijk een taal, een taal voor processoren. Zoals in het echt kan een woord in een beaalde taal iets heel anders betekenen. Als ik het als Fries over "mem" heb, dan heb ik het over mijn moeder. Dus niet zoals een aantal van jullie zullen denken over een zo'n grote waar je aan kan sabbelen
Zo zit het dus ook met een instructieset. De CPU die we vooral gebruiken in onze desktop spreekt dus x86. Het kan bijvoorbeeld zijn dat commando 1 optellen is. Dan telt de CPU de waarden van 2 registers op en zet deze terug in een van de registers. Maar bij de Itanium kan het zijn dat optellen bijvoorbeeld commando 11 is. Daarom zal daar geen normale Windows versie op draaien. Windows zit wel wat te lullen tegen de CPU, maar de CPU heeft simpelweg geen enkel idee wat Windows nou van hem verwacht.
Omdat de AMD Athlon 64 en andere 64-bit x86 CPU's de x86 taal spreken kunnen ze alle code begrijpen die voor x86 CPU's is geschreven. Een eis om x86 compatible te zijn is dat alle x86 commando's aanwezig zijn, dus ook compability commando's voor de 16-bits 8086 en 32-bit 386.
*) Juist Windows 64-bit houdt het draaien van 16-bit applicaties tegen, de CPU zelf zou dat prima kunnen!
64-bit Superset:
Wikipedia: x86-64
x86 instructieset:
Wikipedia: x86 architecture
[
Voor 40% gewijzigd door
GENETX op 10-08-2008 14:18
]