• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

MacBook 32 bit oder 64 bit

Jamsven

London Pepping
Registriert
21.11.07
Beiträge
2.046
So ein Port auf eine völlig andere API ist nicht grade easy, vor allem wenn das Programm noch auf zwei Systemen laufen soll.
 

MacMark

Jakob Lebel
Registriert
01.01.05
Beiträge
4.874
Ja, wenn die CPUs denn doppelt so viele Register hätten, dann würde das tatsächlich etwas bringen. Hat sie aber nicht, ....

Der Core 2 Duo hat einen 32-Bit-Processing-Mode (für 32-Bit-Code) und einen 64-Bit-Processing-Mode (für 64-Bit-Code). Letzterer kann alle Register nutzen, ersterer nur die Hälfte. Darum haben 32-Bit-Programme (auch der Kernel) nur die Hälfte an CPU-Registern zur Verfügung auf Intel x86-64 CPUs.

... Leopard: 32-Bit Kernel, 32-Bit KEXTs, 32-Bit Drivers, 64-Bit Unix, 64-Bit Cocoa, 64-Bit Apps
Snow Leopard: 64-Bit Kernel, 64-Bit KEXTs, 64-Bit Drivers, 64-Bit Cocoa, 64-Bit Apps

Mit System meine ich übrigens nicht die GUI die da läuft, sondern das System darunter.
...

Sagte ich doch. Das System (Kernel) war in 10.5 als einziges nicht 64 Bit.
 

_linx_

Kleiner Weinapfel
Registriert
04.01.09
Beiträge
1.125
Um meinen Blödsinn auch noch dazuzugeben: Die sollen zuerst wieder den originalen Stil einprogrammieren bevor die sich über euer Geschwafel von Kakao und Karbon Gedanken machen sollen.
 

MacMark

Jakob Lebel
Registriert
01.01.05
Beiträge
4.874
Nutzung der General Purpose Register, die bei Funktionen der Argumentübergabe (anstelle des Stacks) dienen bei x86_64 (und als Vergleich i386 Code) im Kernel:

Code:
KeyWest:/ macmark$ otool -vt /mach_kernel -arch x86_64 | egrep '%rdi|%rsi|%rdx|%rcx|%r8|%r9' | wc -l
217692

KeyWest:/ macmark$ otool -vt /mach_kernel -arch i386 | egrep '%rdi|%rsi|%rdx|%rcx|%r8|%r9' | wc -l
0

Man sieht, daß diese Register nur von 64-Bit-Code genutzt werden. Der 32er Code kann das auf dem Core2Duo nicht.
Rastafari hatte ja bezweifelt, daß der 64er-Kernel diese zusätzlichen Register nutzt.

Nur x86_64-Code kann diese Register nutzen (und tut das wie hier gezeigt auch). Der i386 (32-Bit-Intel-Code) kann diese Register nicht nutzen und muß die Argumente über den Stack schieben, was langsamer ist.
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Nur x86_64-Code kann diese Register nutzen (und tut das wie hier gezeigt auch). Der i386 (32-Bit-Intel-Code) kann diese Register nicht nutzen und muß die Argumente über den Stack schieben, was langsamer ist.

Alles richtig.

Die Frage ist nur: Was bringt das dem normalen User im täglichen Leben? Und welche Nachteile kauft man sich dadurch ein?

Solange populäre Software wie VMWare nicht mit dem 64 Bit Kernel klar kommt sollte man sich gut überlegen, warum man das jetzt unbedingt haben muss.

Allen anderen empfehle ich: Wartet auf 10.7, ich bin sicher, da fliegt der 32 Bit Kern raus.

Alex
 

MacMark

Jakob Lebel
Registriert
01.01.05
Beiträge
4.874
Der Kernel benutzt die General Purpose Register nicht? :cool:

Ein mal in zwei Stunden ganz bestimmt.

Tatsächlich? Dann laß uns doch mal in die wichtigste Kerneldatei aus OS X 10.6.1 reinschauen:

Code:
KeyWest:~ macmark$ otool -vt /mach_kernel -arch x86_64 | wc -l  
  934411
Der x86_64 Code hat also 934411 Zeilen.

Wieviele davon mögen wohl General Purpose Register verwenden?
Code:
KeyWest:~ macmark$ otool -vt /mach_kernel -arch x86_64 | egrep '%eax|%ebx|%ecx|%edx|%rax|%rbx|%rcx|%rdx|%r8|%r9|%r10|%r11|%r12|%r13|%r14|%r15' | wc -l  
  548847
Oh: 548847!

Wieviel Prozent dieser Kernel-Befehle nutzen also General Purpose Register?
Code:
KeyWest:~ macmark$ bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
scale=5
548847/934411*100
58.73700
Oh: Mindestens 58,7 % der Befehle der wichtigsten Kerneldatei nutzen General Purpose Register (GPRs)!
Kann es daher sein, daß der Kernel öfter als alle 2 Stunden GPRs benutzt? Kann es sein, daß er das vielleicht 2000mal pro Sekunde tut?