Originally Posted by mpw94
so if the ancient x87 had expanded GP registers then what is the purpose of naming the modern CPU "64 bit" when it has nothing to do with the GP registers (I know 64bit is very beneficial when it comes to RAM such as:- can address RAM directly, more memory RAM and it is faster ).
And is it possible that 64 bit cpu is called this way because it can run 64 bit color depth and 64 bit audio??
The bits are about the width of the numbers the CPU can work with in the typical instructions. The typical stuff is... load a register, load a second register, add second to first register, multiply by 3, store the first register, etc... Things like that.
If you want to work on 64 bit numbers on a 32 bit CPU, you can still do that. You will need to split your calculations into 32-bit calculations. If you add two 64 bit numbers, you will first add the lower 32 bit halves, then take the overflow and add the upper 32 bit halves. It's simply a good bit more work for a 32 bit CPU to work on 64 bit numbers. The reverse isn't true. A 64 bit CPU will work on 32 bit numbers in a single step.
The memory can still be larger than what you can actually access by using the number out of a single register. For example, the Commodore 64 had 65536 bytes (64 KB) of RAM but its CPU was only an 8-bit CPU. This means the registers could hold numbers up to 255. If you wanted to access one byte of the 65536 bytes of memory, you had to load the address into two 8-bit registers to use those together like a 16-bit number.
The server version of Windows 32-bit can actually run on machines with 64 GB RAM and access all of that, though each normal program will still only get 2 GB at most. The 4 GB RAM limitation is only on normal Windows 32-bit for whatever reason.
The x87 instructions were originally run by a co-processor to the x86 CPU. You should probably not look at those. You had a motherboard with two sockets. One socket had the 80286 CPU in it, and in the second socket you had your 80287. The 80287 was doing what the 80286 told it to and could load and store things from memory by itself. If the 80287 socket was empty, an x87 instruction wasn't a simple instruction anymore, the 80286 CPU would basically run a program to simulate the missing 80287. Performance was terrible.