View Full Version : MacBook Pro 64 bit??
The new MacBook Pro has the Core 2 Duo "Merom" processor, which supports the EM64T mode. But, in all of the marketing material, any mention of 64 bit is conspicuously absent. Anyone know why?
Some articles I have read say that it uses the Intel 945PM chipset, like the iMac, which does state 64 bit support on its marketing pages.
Both the iMac and the MBP have an upper limit of 3GB of RAM. I understand that this is a limit because of the memory address space used for I/O operations. This 'virtual addressing' used for I/O cannot also be used for RAM. But, when the system is in 64 bit mode wouldn't this limitation go away? With the huge 64 bit address space, the hardware I/O space can be well outside the usable RAM space. Is there some other limitation in the chipset, or will Leopard be able to take advantage of a fully populated 4GB memory space?
It's also kind of odd that the leopard 64 bit page ( http://www.apple.com/macosx/leopard/64bit.html ) specifically mentions the Xeon / Mac Pro, and not the iMac or MBP. But, the 64 bit mode of the Xeon and the Core 2 Duo should be equivalent.
chabig
10-28-2006, 12:19 PM
A. Why advertise a hardware feature when the software can't yet take advantage of it fully?
B. The 3GB limitation is due to the chipset. Leopard won't change that.
Chris
A. Why advertise a hardware feature when the software can't yet take advantage of it fully?
That same logic would also apply to other Apple products. But, in the case of the iMac and the Mac Pro, they do market the 64 bit capabilities. So, I don't think this explains it. Especially since they advertise 64 bit on the iMac, which appears to be the same processor and chipset as the MBP.
B. The 3GB limitation is due to the chipset. Leopard won't change that.
That's probably right. Several posts I read in other forums claim that the 945PM chipset is limited to 32 bit addressing. This is unfortunate, but not a showstopper for me. I am interested in 64 bit mode, but more for the other benefits, like doubling the amount of registers available - which gives a pretty decent performance boost in itself. And, the ability to do 64 bit math natively, which can be a big benefit in some applications. Since Apple seems to be moving as much as possible to 64 bit, optimizations for 64 bit math may become more common in future apps.
As far as I can tell, the MBP will be able to support 64 bit mode. I just find it really odd that Apple doesn't mention it anywhere.
In general, there seems to be a lot of confusion around 64 bit operation. The only definitive information I can find is that G5's support 64 bit non-GUI apps in Tiger (I've seen no reports of a 64 bit intel kernel), and that Leopard will have more complete 64 bit support. Beyond that, the information is really sketchy.
Anyone here have a Mac Pro, iMac Core 2 Duo, or MacBook Pro Core 2 Duo (and Xcode/gcc installed)? If so, you can tell the mode you're running in by the output of the following C program. If you're in 64 bit mode, the long integer and pointer size should be 8 bytes (64 bits). Save the following code to a text file, such as "sizeof.c", them compile it: "gcc -o sizeof sizeof2.c", then run ./sizeof
#include <stdio.h>
main ()
{
int i=0;
long int li=0;
long long int lli=0;
double d=0;
char c;
char * p;
printf ("Size of Data Types on this System:\n\n");
/*---------------------------------------------*/
printf( "Char = %d bytes\n", sizeof(c) );
printf( "Integer = %d bytes\n", sizeof(i) );
printf( "Long Integer = %d bytes\n", sizeof(li) );
printf( "Long Long Integer = %d bytes\n", sizeof(lli) );
printf( "Double = %d bytes\n", sizeof(d) );
printf( "Pointer = %d bytes\n", sizeof(p) );
}
Here is the output of both my G4 PowerBook, and my Core Duo Mini (note the 4 byte long integer / pointer size, as expected from 32 bit systems):
Size of Data Types on this System:
Char = 1 bytes
Integer = 4 bytes
Long Integer = 4 bytes
Long Long Integer = 8 bytes
Double = 8 bytes
Pointer = 4 bytes
The output from my Athlon64 Linux server, and my Core2Duo Linux PVR is (note the 8 byte long integer / pointer size, because they are running 64 bit linux kernels):
Size of Data Types on this System:
Char = 1 bytes
Integer = 4 bytes
Long Integer = 8 bytes
Long Long Integer = 8 bytes
Double = 8 bytes
Pointer = 8 bytes
chabig
10-28-2006, 03:43 PM
That same logic would also apply to other Apple products. But, in the case of the iMac and the Mac Pro, they do market the 64 bit capabilities. So, I don't think this explains it. Especially since they advertise 64 bit on the iMac, which appears to be the same processor and chipset as the MBP.OK. You're right. So let's speculate--perhaps they touted the 64 bit features on the iMac and the Mac Pro because the processor was new at the time. Now it's not so new and the specifics of the processor are well known. Just guessing...
Chris
hayne
10-28-2006, 04:38 PM
Here is the output of both my G4 PowerBook, and my Core Duo Mini (note the 4 byte long integer / pointer size, as expected from 32 bit systems):
Size of Data Types on this System:
Char = 1 bytes
Integer = 4 bytes
Long Integer = 4 bytes
Long Long Integer = 8 bytes
Double = 8 bytes
Pointer = 4 bytes
The output from my Athlon64 Linux server, and my Core2Duo Linux PVR is (note the 8 byte long integer / pointer size, because they are running 64 bit linux kernels):
Size of Data Types on this System:
Char = 1 bytes
Integer = 4 bytes
Long Integer = 8 bytes
Long Long Integer = 8 bytes
Double = 8 bytes
Pointer = 8 bytes
On PPC systems (e.g. the G4) you need to explicitly request 64-bit when you compile.
See: http://developer.apple.com/macosx/64bit.html
and: http://developer.apple.com/documentation/Darwin/Conceptual/64bitPorting/index.html
I'm not sure about the Intel situation. It seems from what I've read that there is no compiler setting required to get 64-bit apps. So I'm not sure why you get the above results on your Core Duo Mini. But it may require that you are using the latest version of Xcode (and associated gcc).
On PPC systems (e.g. the G4) you need to explicitly request 64-bit when you compile.
See: http://developer.apple.com/macosx/64bit.html
and: http://developer.apple.com/documentation/Darwin/Conceptual/64bitPorting/index.html
I'm not sure about the Intel situation. It seems from what I've read that there is no compiler setting required to get 64-bit apps. So I'm not sure why you get the above results on your Core Duo Mini. But it may require that you are using the latest version of Xcode (and associated gcc).
The original Core Duo is strictly a 32 bit CPU, so the results were what I expected (4 Byte / 32 bit Long Integer and Pointer).
The new "Core 2 Duo" used in the newer iMacs and MacBook Pros support 64 bit mode, if the kernel is built for 64 bit mode.
On my Linux systems, gcc creates 64 bit binaries by default when in 64 bit mode.
On my Linux systems, gcc creates 64 bit binaries by default when in 64 bit mode.
MacOS apparently creates 32 bit apps by default. After adding "-m64" as a compiler option, the MacBook Pro used 64 bit long ints and pointers.
So, apparently it is using a 64 bit kernel.
vBulletin® v3.8.4, Copyright ©2000-2010, Jelsoft Enterprises Ltd.