All of lore.kernel.org
 help / color / mirror / Atom feed
* 32 bit processors / 64 bit processors
@ 2009-10-21  3:02 Rick Brown
  2009-10-21  5:39 ` Siddu
                   ` (2 more replies)
  0 siblings, 3 replies; 18+ messages in thread
From: Rick Brown @ 2009-10-21  3:02 UTC (permalink / raw)
  To: kernelnewbies, linux-newbie

Hi,

Firstly, I'm trying to understand what exactly characterizes a
procesor or an operating system as 32bit / 64 bit. I've read that it
means the "native word size" of a machine. But what exactly is that?
Register size? Address bus size? Anything else?

Secondly, I'm trying to understand what exactly does a sizeof(int)
depend on when we say it is "platform specific". Is it dependent of
compiler being 32bit / 64 bit? Or the OS being 32bit / 64 bit? Or the
processor being 32 / 64 bit?

Lastly, How are "sizes" of compiler / OS / processor inter related?
Here is my understanding. A 32 bit processor can only be running a 32
bit OS. A 64 bit processor may run a 32 or a 64 bit OS. A 32 bit
compiler genrates code only to be run on a 32 bit OS; ditto for 64
bit. Is this right?

TIA,

Rick
--
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: 32 bit processors / 64 bit processors
  2009-10-21  3:02 32 bit processors / 64 bit processors Rick Brown
@ 2009-10-21  5:39 ` Siddu
  2009-10-21  6:02   ` 益牙
  2009-10-21  7:43   ` askb
  2009-11-07 10:20 ` hmthalib
  2009-11-13  3:37 ` Drew
  2 siblings, 2 replies; 18+ messages in thread
From: Siddu @ 2009-10-21  5:39 UTC (permalink / raw)
  To: Rick Brown; +Cc: kernelnewbies, linux-newbie

[-- Attachment #1: Type: text/plain, Size: 1503 bytes --]

On Wed, Oct 21, 2009 at 8:32 AM, Rick Brown <rick.brown.3@gmail.com> wrote:

> Hi,
>
> Firstly, I'm trying to understand what exactly characterizes a
> procesor or an operating system as 32bit / 64 bit. I've read that it
> means the "native word size" of a machine. But what exactly is that?
> Register size? Address bus size? Anything else?
>
>
When they say its 32/64 bit machine its the capability of the system or
processor to process so many bits at once !



> Secondly, I'm trying to understand what exactly does a sizeof(int)
> depend on when we say it is "platform specific". Is it dependent of
> compiler being 32bit / 64 bit? Or the OS being 32bit / 64 bit? Or the
> processor being 32 / 64 bit?
>
> its dependent on processor being 32/64 bit

Lastly, How are "sizes" of compiler / OS / processor inter related?
> Here is my understanding. A 32 bit processor can only be running a 32
> bit OS.


No ... 32 bit OS can run anything <= 32 bit


> A 64 bit processor may run a 32 or a 64 bit OS.


yes thats right !


> A 32 bit
> compiler genrates code only to be run on a 32 bit OS; ditto for 64
> bit.


Not sure about this let others have their say !

> Is this right?
>
>
Please correct me if i am wrong !

> TIA,
>
> Rick
>
> --
> To unsubscribe from this list: send an email with
> "unsubscribe kernelnewbies" to ecartis@nl.linux.org
> Please read the FAQ at http://kernelnewbies.org/FAQ
>
>


-- 
Regards,
~Sid~
I have never met a man so ignorant that i couldn't learn something from him

[-- Attachment #2: Type: text/html, Size: 3034 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: 32 bit processors / 64 bit processors
  2009-10-21  5:39 ` Siddu
@ 2009-10-21  6:02   ` 益牙
  2009-10-21  6:36     ` Ryan Moore
  2009-10-21  6:52     ` C
  2009-10-21  7:43   ` askb
  1 sibling, 2 replies; 18+ messages in thread
From: 益牙 @ 2009-10-21  6:02 UTC (permalink / raw)
  To: Siddu; +Cc: Rick Brown, kernelnewbies, linux-newbie


On Oct 21, 2009, at 1:39 PM, Siddu wrote:

>
>
> On Wed, Oct 21, 2009 at 8:32 AM, Rick Brown <rick.brown.3@gmail.com>  
> wrote:
> Hi,
>
> Firstly, I'm trying to understand what exactly characterizes a
> procesor or an operating system as 32bit / 64 bit. I've read that it
> means the "native word size" of a machine. But what exactly is that?
> Register size? Address bus size? Anything else?
>
>
> When they say its 32/64 bit machine its the capability of the system  
> or processor to process so many bits at once !

I had an understanding of this being how many bits you have to address  
your RAM.

>
>
> Secondly, I'm trying to understand what exactly does a sizeof(int)
> depend on when we say it is "platform specific". Is it dependent of
> compiler being 32bit / 64 bit? Or the OS being 32bit / 64 bit? Or the
> processor being 32 / 64 bit?
>
> its dependent on processor being 32/64 bit

Just did a comparison test but it tells me otherwise. But I'm not sure  
if the test case if correct, can someone improve it?
On a 64bit CentOS:
[root@yyan ~]# more test.c
#include <stdio.h>

int main ()
{
     printf ("%d\n", sizeof(int));
     return 0;
}
[root@yyan ~]# gcc test.c
[root@yyan ~]# ./a.out
4
[root@yyan ~]# uname -a
Linux yyan.pmlab.com 2.6.18-128.el5 #1 SMP Wed Jan 21 10:41:14 EST  
2009 x86_64 x86_64 x86_64 GNU/Linux
[root@yyan ~]#

On my Leopard: (Hopefully it's a 32bit OS as it shows)
simonmac:coding yansimon$ cat test.c
#include <stdio.h>

int main ()
{
     printf ("%d\n", sizeof(int));
     return 0;
}
simonmac:coding yansimon$ gcc test.c
simonmac:coding yansimon$ ./a.out
4
simonmac:coding yansimon$ uname -a
Darwin simonmac.local 9.8.0 Darwin Kernel Version 9.8.0: Wed Jul 15  
16:55:01 PDT 2009; root:xnu-1228.15.4~1/RELEASE_I386 i386
simonmac:coding yansimon$


>
> Lastly, How are "sizes" of compiler / OS / processor inter related?
> Here is my understanding. A 32 bit processor can only be running a 32
> bit OS.
>
> No ... 32 bit OS can run anything <= 32 bit
>
> A 64 bit processor may run a 32 or a 64 bit OS.
>
> yes thats right !
>
> A 32 bit
> compiler genrates code only to be run on a 32 bit OS; ditto for 64
> bit.
>
> Not sure about this let others have their say !
> Is this right?
>
>
> Please correct me if i am wrong !
> TIA,
>
> Rick
>
> --
> To unsubscribe from this list: send an email with
> "unsubscribe kernelnewbies" to ecartis@nl.linux.org
> Please read the FAQ at http://kernelnewbies.org/FAQ
>
>
>
>
> -- 
> Regards,
> ~Sid~
> I have never met a man so ignorant that i couldn't learn something  
> from him
>

--
益牙

http://www.google.com/profiles/simonyanix

--
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: 32 bit processors / 64 bit processors
  2009-10-21  6:02   ` 益牙
@ 2009-10-21  6:36     ` Ryan Moore
  2009-10-21  6:52     ` C
  1 sibling, 0 replies; 18+ messages in thread
From: Ryan Moore @ 2009-10-21  6:36 UTC (permalink / raw)
  To: 益牙; +Cc: Siddu, Rick Brown, kernelnewbies, linux-newbie

[-- Attachment #1: Type: text/plain, Size: 3474 bytes --]

On Wed, Oct 21, 2009 at 12:02 AM, 益牙 <simonyanix@gmail.com> wrote:

>
> On Oct 21, 2009, at 1:39 PM, Siddu wrote:
>
>
>>
>> On Wed, Oct 21, 2009 at 8:32 AM, Rick Brown <rick.brown.3@gmail.com>
>> wrote:
>> Hi,
>>
>> Firstly, I'm trying to understand what exactly characterizes a
>> procesor or an operating system as 32bit / 64 bit. I've read that it
>> means the "native word size" of a machine. But what exactly is that?
>> Register size? Address bus size? Anything else?
>>
>>
>> When they say its 32/64 bit machine its the capability of the system or
>> processor to process so many bits at once !
>>
>
> I had an understanding of this being how many bits you have to address your
> RAM.
>
>>
>>
This is true, but it is also your instruction size.  So the native machine
code can be 64 bits on a 64bit processor.
- Show quoted text -

>
>> Secondly, I'm trying to understand what exactly does a sizeof(int)
>> depend on when we say it is "platform specific". Is it dependent of
>> compiler being 32bit / 64 bit? Or the OS being 32bit / 64 bit? Or the
>> processor being 32 / 64 bit?
>>
>> its dependent on processor being 32/64 bit
>>
>
> Just did a comparison test but it tells me otherwise. But I'm not sure if
> the test case if correct, can someone improve it?
> On a 64bit CentOS:
> [root@yyan ~]# more test.c
> #include <stdio.h>
>
> int main ()
> {
>    printf ("%d\n", sizeof(int));
>    return 0;
> }
> [root@yyan ~]# gcc test.c
> [root@yyan ~]# ./a.out
> 4
> [root@yyan ~]# uname -a
> Linux yyan.pmlab.com 2.6.18-128.el5 #1 SMP Wed Jan 21 10:41:14 EST 2009
> x86_64 x86_64 x86_64 GNU/Linux
> [root@yyan ~]#
>
> On my Leopard: (Hopefully it's a 32bit OS as it shows)
> simonmac:coding yansimon$ cat test.c
> #include <stdio.h>
>
> int main ()
> {
>    printf ("%d\n", sizeof(int));
>    return 0;
> }
> simonmac:coding yansimon$ gcc test.c
> simonmac:coding yansimon$ ./a.out
> 4
> simonmac:coding yansimon$ uname -a
> Darwin simonmac.local 9.8.0 Darwin Kernel Version 9.8.0: Wed Jul 15
> 16:55:01 PDT 2009; root:xnu-1228.15.4~1/RELEASE_I386 i386
> simonmac:coding yansimon$
>
>
>
>> Lastly, How are "sizes" of compiler / OS / processor inter related?
>> Here is my understanding. A 32 bit processor can only be running a 32
>> bit OS.
>>
>> No ... 32 bit OS can run anything <= 32 bit
>>
>> A 64 bit processor may run a 32 or a 64 bit OS.
>>
>> yes thats right !
>>
>> A 32 bit
>> compiler genrates code only to be run on a 32 bit OS; ditto for 64
>> bit.
>>
>> Not sure about this let others have their say !
>> Is this right?
>>
>>
This is dependent on the compiler, or at least the compiler options.  This
is due to the machine code that the compiler generates.

ie.  The difference between x86 machine code and ia64 machine code.


>
>> Please correct me if i am wrong !
>> TIA,
>>
>> Rick
>>
>> --
>> To unsubscribe from this list: send an email with
>> "unsubscribe kernelnewbies" to ecartis@nl.linux.org
>> Please read the FAQ at http://kernelnewbies.org/FAQ
>>
>>
>>
>>
>> --
>> Regards,
>> ~Sid~
>> I have never met a man so ignorant that i couldn't learn something from
>> him
>>
>>
> --
> 益牙
>
> http://www.google.com/profiles/simonyanix
>
>
> --
> To unsubscribe from this list: send an email with
> "unsubscribe kernelnewbies" to ecartis@nl.linux.org
> Please read the FAQ at http://kernelnewbies.org/FAQ
>
>

[-- Attachment #2: Type: text/html, Size: 5786 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: 32 bit processors / 64 bit processors
  2009-10-21  6:02   ` 益牙
  2009-10-21  6:36     ` Ryan Moore
@ 2009-10-21  6:52     ` C
  2009-10-23  5:05       ` Rajat Jain
  1 sibling, 1 reply; 18+ messages in thread
From: C @ 2009-10-21  6:52 UTC (permalink / raw)
  To: 益牙; +Cc: Siddu, Rick Brown, kernelnewbies, linux-newbie

1. The size of the processor's internal address bus (virtual address
space) is what qualifies it as a 32-bit / 64-bit processor.
Whether or not the OS changes the processor mode to 64-bit(IA-32e/Long
etc) (and thereby has access to the 64-bit virtual address space,
extended register set etc) is what qualifies it as a 32-bit / 64-bit
OS.

AFAIK, no x86 processor truly supports the complete 64-bit address space (yet) -
a. The virtual address space is 64 bits, but still limited by the
canonical addressing restriction ( no access to the complete 64-bit
virtual address space)
b. The physical address is not 64 bits (no system uses such a large
amount of physical memory, so there's no point providing such a large
number of address pins out to the memory controller / DRAM)

2. sizeof(int) would be depend on the compiler (which in turn depends
on the OS it is compiling for, which in turn depends on what processor
it is running on). (Though personally I haven't seen sizeof(int) being
anything other than 4 bytes .. but I've seen sizeof(long int) being 64
bits for x86-64 gcc, and 32 bits for i386 gcc)

3. If you consider x86 architecture, since they're always backward
compatible, any code you generated for an earlier processor should
theoretically run on a newer processor (when the processor in a
specific mode). Hence, a 64-bit processor can run a 32-bit OS / 64-bit
OS. A 64-bit OS can run programs compiled for 64-bit /32-bit mode(by
reverting to a 32-bit mode on the fly). This might not apply to other
architectures though.

C

On Tue, Oct 20, 2009 at 11:02 PM, 益牙 <simonyanix@gmail.com> wrote:
>
> On Oct 21, 2009, at 1:39 PM, Siddu wrote:
>
>>
>>
>> On Wed, Oct 21, 2009 at 8:32 AM, Rick Brown <rick.brown.3@gmail.com>
>> wrote:
>> Hi,
>>
>> Firstly, I'm trying to understand what exactly characterizes a
>> procesor or an operating system as 32bit / 64 bit. I've read that it
>> means the "native word size" of a machine. But what exactly is that?
>> Register size? Address bus size? Anything else?
>>
>>
>> When they say its 32/64 bit machine its the capability of the system or
>> processor to process so many bits at once !
>
> I had an understanding of this being how many bits you have to address your
> RAM.
>
>>
>>
>> Secondly, I'm trying to understand what exactly does a sizeof(int)
>> depend on when we say it is "platform specific". Is it dependent of
>> compiler being 32bit / 64 bit? Or the OS being 32bit / 64 bit? Or the
>> processor being 32 / 64 bit?
>>
>> its dependent on processor being 32/64 bit
>
> Just did a comparison test but it tells me otherwise. But I'm not sure if
> the test case if correct, can someone improve it?
> On a 64bit CentOS:
> [root@yyan ~]# more test.c
> #include <stdio.h>
>
> int main ()
> {
>    printf ("%d\n", sizeof(int));
>    return 0;
> }
> [root@yyan ~]# gcc test.c
> [root@yyan ~]# ./a.out
> 4
> [root@yyan ~]# uname -a
> Linux yyan.pmlab.com 2.6.18-128.el5 #1 SMP Wed Jan 21 10:41:14 EST 2009
> x86_64 x86_64 x86_64 GNU/Linux
> [root@yyan ~]#
>
> On my Leopard: (Hopefully it's a 32bit OS as it shows)
> simonmac:coding yansimon$ cat test.c
> #include <stdio.h>
>
> int main ()
> {
>    printf ("%d\n", sizeof(int));
>    return 0;
> }
> simonmac:coding yansimon$ gcc test.c
> simonmac:coding yansimon$ ./a.out
> 4
> simonmac:coding yansimon$ uname -a
> Darwin simonmac.local 9.8.0 Darwin Kernel Version 9.8.0: Wed Jul 15 16:55:01
> PDT 2009; root:xnu-1228.15.4~1/RELEASE_I386 i386
> simonmac:coding yansimon$
>
>
>>
>> Lastly, How are "sizes" of compiler / OS / processor inter related?
>> Here is my understanding. A 32 bit processor can only be running a 32
>> bit OS.
>>
>> No ... 32 bit OS can run anything <= 32 bit
>>
>> A 64 bit processor may run a 32 or a 64 bit OS.
>>
>> yes thats right !
>>
>> A 32 bit
>> compiler genrates code only to be run on a 32 bit OS; ditto for 64
>> bit.
>>
>> Not sure about this let others have their say !
>> Is this right?
>>
>>
>> Please correct me if i am wrong !
>> TIA,
>>
>> Rick
>>
>> --
>> To unsubscribe from this list: send an email with
>> "unsubscribe kernelnewbies" to ecartis@nl.linux.org
>> Please read the FAQ at http://kernelnewbies.org/FAQ
>>
>>
>>
>>
>> --
>> Regards,
>> ~Sid~
>> I have never met a man so ignorant that i couldn't learn something from
>> him
>>
>
> --
> 益牙
>
> http://www.google.com/profiles/simonyanix
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.linux-learn.org/faqs
>
--
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: 32 bit processors / 64 bit processors
  2009-10-21  5:39 ` Siddu
  2009-10-21  6:02   ` 益牙
@ 2009-10-21  7:43   ` askb
  1 sibling, 0 replies; 18+ messages in thread
From: askb @ 2009-10-21  7:43 UTC (permalink / raw)
  To: Siddu; +Cc: Rick Brown, kernelnewbies, linux-newbie

On Wed, 2009-10-21 at 11:09 +0530, Siddu wrote:
> 
> 
> On Wed, Oct 21, 2009 at 8:32 AM, Rick Brown <rick.brown.3@gmail.com>
> wrote:
>         Hi,
>         
>         Firstly, I'm trying to understand what exactly characterizes a
>         procesor or an operating system as 32bit / 64 bit. I've read
>         that it
>         means the "native word size" of a machine. But what exactly is
>         that?
>         Register size? Address bus size? Anything else?
>         
> 
> When they say its 32/64 bit machine its the capability of the system
> or processor to process so many bits at once !

Additionally, the virtual memory address is 64 bit. Also the main
difference is with sizeof(long int) and sizeof(void *) on both archs. 

> 
>  
> 
>         Secondly, I'm trying to understand what exactly does a
>         sizeof(int)
>         depend on when we say it is "platform specific". Is it
>         dependent of
>         compiler being 32bit / 64 bit? Or the OS being 32bit / 64 bit?
>         Or the
>         processor being 32 / 64 bit?
>         
> its dependent on processor being 32/64 bit
> 
> 
>         Lastly, How are "sizes" of compiler / OS / processor inter
>         related?
>         Here is my understanding. A 32 bit processor can only be
>         running a 32
>         bit OS.
> 
> No ... 32 bit OS can run anything <= 32 bit
>  
>         A 64 bit processor may run a 32 or a 64 bit OS.
> 
> yes thats right !
>  
> 
>         A 32 bit
>         compiler genrates code only to be run on a 32 bit OS; ditto
>         for 64
>         bit. 
> 
> Not sure about this let others have their say ! 
> 
>         Is this right?

It is possible to use the -m32 and -m64 flags with gcc for generating
32/64 bit compatible code.



--
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs

^ permalink raw reply	[flat|nested] 18+ messages in thread

* RE: 32 bit processors / 64 bit processors
  2009-10-21  6:52     ` C
@ 2009-10-23  5:05       ` Rajat Jain
  2009-10-23  5:20         ` C
  0 siblings, 1 reply; 18+ messages in thread
From: Rajat Jain @ 2009-10-23  5:05 UTC (permalink / raw)
  To: C, simonyanix; +Cc: Siddu, Rick Brown, kernelnewbies, linux-newbie


Hi,

> 1. The size of the processor's internal address bus (virtual address
> space) is what qualifies it as a 32-bit / 64-bit processor.

Well, in that sense, isn't Pentium a "36-bit" processor (since it gives
the option of PAE to use 64 GB of memory - it must be having atleast 36
address lines)? 

On this topic and in this thread, we have had following responses to the
question on what is called a 32-bit or 64-bit processor:

1) Addressable Physical memory (=sizeof(void*))
2) Register Size (=instruction size) 

Are the above two independent of each other? If yes, then how do we
deine a processor as 32-bit / 64-bit?

Thanks,

Rajat

--
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: 32 bit processors / 64 bit processors
  2009-10-23  5:05       ` Rajat Jain
@ 2009-10-23  5:20         ` C
  2009-10-23  6:23           ` Rajat Jain
  0 siblings, 1 reply; 18+ messages in thread
From: C @ 2009-10-23  5:20 UTC (permalink / raw)
  To: Rajat Jain; +Cc: simonyanix, Siddu, Rick Brown, kernelnewbies, linux-newbie

PAE (Physical Address Extension) expands the _physical_ address space
to > 32 bits, but the _virtual_ address space stays the same at
32-bits, and the virtual address size is what I mentioned as qualifies
the processor as 32-bit or 64-bit.

1. Addressable physical memory / physical address size does not decide
whether a processor is 32-bit / 64-bit, there is no processor (AFAIK)
which can address 64 bits of physical memory. I suppose sizeof(void*)
gives you the size of the _virtual_ address, so yes, I suppose that
should be 64 bits on a 64-bit processor (and using a 64-bit compiler)
2. Register size does not decide whether a processor is 32-bit / 64-bit.

C

On Thu, Oct 22, 2009 at 10:05 PM, Rajat Jain <Rajat.Jain@infogain.com> wrote:
>
> Hi,
>
>> 1. The size of the processor's internal address bus (virtual address
>> space) is what qualifies it as a 32-bit / 64-bit processor.
>
> Well, in that sense, isn't Pentium a "36-bit" processor (since it gives
> the option of PAE to use 64 GB of memory - it must be having atleast 36
> address lines)?
>
> On this topic and in this thread, we have had following responses to the
> question on what is called a 32-bit or 64-bit processor:
>
> 1) Addressable Physical memory (=sizeof(void*))
> 2) Register Size (=instruction size)
>
> Are the above two independent of each other? If yes, then how do we
> deine a processor as 32-bit / 64-bit?
>
> Thanks,
>
> Rajat
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs

^ permalink raw reply	[flat|nested] 18+ messages in thread

* RE: 32 bit processors / 64 bit processors
  2009-10-23  5:20         ` C
@ 2009-10-23  6:23           ` Rajat Jain
  2009-10-23  6:58             ` C
  0 siblings, 1 reply; 18+ messages in thread
From: Rajat Jain @ 2009-10-23  6:23 UTC (permalink / raw)
  To: C; +Cc: simonyanix, Siddu, Rick Brown, kernelnewbies, linux-newbie


Hi,

----Original Message----
From: C [mailto:a.la.kaarta@gmail.com]
Sent: Friday, October 23, 2009 10:51 AM
To: Rajat Jain
Cc: simonyanix@gmail.com; Siddu; Rick Brown; kernelnewbies;
linux-newbie@vger.kernel.org
Subject: Re: 32 bit processors / 64 bit processors

> PAE (Physical Address Extension) expands the _physical_ address space
> to > 32 bits, but the _virtual_ address space stays the same at
> 32-bits, and the virtual address size is what I mentioned as qualifies
> the processor as 32-bit or 64-bit.

Well, IMHO the processor does not decide or even know the size of
virtual address space. It purely depends on the software (OS in this
case) that runs on it. Consider all of the following is possible on the
same 32 bit processor:

1) User may run a firmware on the processor that gives a 1-1 mapping
from virtual to physical (thus making virtual address space equal to
physical address space). 

2) Users may be running different OS(s) that give different amount of
virtual address space to use.

What am I missing?

Thanks,

Rajat


> 
> 1. Addressable physical memory / physical address size does not decide
> whether a processor is 32-bit / 64-bit, there is no processor (AFAIK)
> which can address 64 bits of physical memory. I suppose sizeof(void*)
> gives you the size of the _virtual_ address, so yes, I suppose that
> should be 64 bits on a 64-bit processor (and using a 64-bit compiler)
> 2. Register size does not decide whether a processor is 32-bit /
> 64-bit. 
> 
> C
> 
> On Thu, Oct 22, 2009 at 10:05 PM, Rajat Jain
> <Rajat.Jain@infogain.com> wrote:
>> 
>> Hi,
>> 
>>> 1. The size of the processor's internal address bus (virtual address
>>> space) is what qualifies it as a 32-bit / 64-bit processor.
>> 
>> Well, in that sense, isn't Pentium a "36-bit" processor (since it
>> gives the option of PAE to use 64 GB of memory - it must be having
>> atleast 36 address lines)? 
>> 
>> On this topic and in this thread, we have had following responses to
>> the question on what is called a 32-bit or 64-bit processor:
>> 
>> 1) Addressable Physical memory (=sizeof(void*))
>> 2) Register Size (=instruction size)
>> 
>> Are the above two independent of each other? If yes, then how do we
>> deine a processor as 32-bit / 64-bit?
>> 
>> Thanks,
>> 
>> Rajat
--
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: 32 bit processors / 64 bit processors
  2009-10-23  6:23           ` Rajat Jain
@ 2009-10-23  6:58             ` C
       [not found]               ` <eaf9549291394c8b53f26fba12024a86@virginbroadband.com.au>
  0 siblings, 1 reply; 18+ messages in thread
From: C @ 2009-10-23  6:58 UTC (permalink / raw)
  To: Rajat Jain; +Cc: simonyanix, Siddu, Rick Brown, kernelnewbies, linux-newbie

> Well, IMHO the processor does not decide or even know the size of
> virtual address space.
Ofcourse it does. How else do you think it translates a virtual
address to a physical address? Virtual addresses are simply what the
software 'sees', the processor takes these, translates them into
physical addresses before making any reads / writes to main memory. No
software can use a virtual address space larger than what the
processor specifies.

> 1) User may run a firmware on the processor that gives a 1-1 mapping
> from virtual to physical (thus making virtual address space equal to
> physical address space).
>
Well, I don't know much about other architectures, so I'll just comment on x86.
When you switch to 64bit mode, you compulsorily need to have a 4-level
paging table, which translates 64-bit linear addresses (actually a
48-bit linear address, since the address is subject to the canonical
address requirement) to (upto) 52-bit physical addresses. So
irrespective of what firmware you're running, linear addresses are
actually 64-bit, but physical addresses are not.

(In fact, physical address space might even be larger than virtual
address space, when we take modes like PAE / PSE into account)

> 2) Users may be running different OS(s) that give different amount of
> virtual address space to use.
Irrespective of what OS you're using (and whether it switches to the
processor mode that would utilize the 64-bit virtual address space
that the processor provides), the 'internal address bus' (virtual
address space) of the processor is what decides the maximum virtual
address space of any programs that run on it (OS or otherwise).

C

On Thu, Oct 22, 2009 at 11:23 PM, Rajat Jain <Rajat.Jain@infogain.com> wrote:
>
> Hi,
>
> ----Original Message----
> From: C [mailto:a.la.kaarta@gmail.com]
> Sent: Friday, October 23, 2009 10:51 AM
> To: Rajat Jain
> Cc: simonyanix@gmail.com; Siddu; Rick Brown; kernelnewbies;
> linux-newbie@vger.kernel.org
> Subject: Re: 32 bit processors / 64 bit processors
>
>> PAE (Physical Address Extension) expands the _physical_ address space
>> to > 32 bits, but the _virtual_ address space stays the same at
>> 32-bits, and the virtual address size is what I mentioned as qualifies
>> the processor as 32-bit or 64-bit.
>
> Well, IMHO the processor does not decide or even know the size of
> virtual address space.
Ofcourse it does. How else do you think it translates a virtual
address to a physical address?

It purely depends on the software (OS in this
> case) that runs on it. Consider all of the following is possible on the
> same 32 bit processor:
>
> 1) User may run a firmware on the processor that gives a 1-1 mapping
> from virtual to physical (thus making virtual address space equal to
> physical address space).
>
> 2) Users may be running different OS(s) that give different amount of
> virtual address space to use.
>
> What am I missing?
>
> Thanks,
>
> Rajat
>
>
>>
>> 1. Addressable physical memory / physical address size does not decide
>> whether a processor is 32-bit / 64-bit, there is no processor (AFAIK)
>> which can address 64 bits of physical memory. I suppose sizeof(void*)
>> gives you the size of the _virtual_ address, so yes, I suppose that
>> should be 64 bits on a 64-bit processor (and using a 64-bit compiler)
>> 2. Register size does not decide whether a processor is 32-bit /
>> 64-bit.
>>
>> C
>>
>> On Thu, Oct 22, 2009 at 10:05 PM, Rajat Jain
>> <Rajat.Jain@infogain.com> wrote:
>>>
>>> Hi,
>>>
>>>> 1. The size of the processor's internal address bus (virtual address
>>>> space) is what qualifies it as a 32-bit / 64-bit processor.
>>>
>>> Well, in that sense, isn't Pentium a "36-bit" processor (since it
>>> gives the option of PAE to use 64 GB of memory - it must be having
>>> atleast 36 address lines)?
>>>
>>> On this topic and in this thread, we have had following responses to
>>> the question on what is called a 32-bit or 64-bit processor:
>>>
>>> 1) Addressable Physical memory (=sizeof(void*))
>>> 2) Register Size (=instruction size)
>>>
>>> Are the above two independent of each other? If yes, then how do we
>>> deine a processor as 32-bit / 64-bit?
>>>
>>> Thanks,
>>>
>>> Rajat
>
--
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: 32 bit processors / 64 bit processors
       [not found]                 ` <b14bc42a0911060423g324caedw3992061796125ea@mail.gmail.com>
@ 2009-11-07  4:41                   ` vkm
  2009-11-07 10:10                   ` hmthalib
  2009-11-09 18:27                   ` Pulkit Goel
  2 siblings, 0 replies; 18+ messages in thread
From: vkm @ 2009-11-07  4:41 UTC (permalink / raw)
  To: nidhi mittal hada
  Cc: microbit, C, simonyanix, Siddu, Rick Brown, kernelnewbies,
	linux-newbie



nidhi mittal hada wrote:
> Can someone come and please clarify -- it finally
> above chain of mail raises more confusion as conflict stays till end.
>
> 1)processor 32/64 bit --
>     a)data it can process at one instance --- register size --- data 
> bus size --
> OR
>     b)internal address bus size of processor ---  if that is true then 
> what abt case of pentium 36 bit address lines ---
Of course, register size
>
>
> 2)OS 32 /64 bit
>     a)its virtual address space -- what os provides --- to each 
> process -- which is mapped to physical address space that prcessor 
> provides
>                                    
>   OR
>      b)processor specifies virtual addr space ??
>
>
>
>
> 3)extra ques -- why in case of 32 bit arch -- physical memory RAM 
> limitation comes of 4GB ?
2^32 = 4GB simple...
>
>
>
> On Fri, Oct 23, 2009 at 4:54 PM, <microbit@virginbroadband.com.au 
> <mailto:microbit@virginbroadband.com.au>> wrote:
>
>     Hi,
>
>     On Thu, 22 Oct 2009 23:58:20 -0700, C <a.la.kaarta@gmail.com
>     <mailto:a.la.kaarta@gmail.com>> wrote:
>     >> Well, IMHO the processor does not decide or even know the size of
>     >> virtual address space.
>     > Ofcourse it does. How else do you think it translates a virtual
>     > address to a physical address? Virtual addresses are simply what the
>     > software 'sees', the processor takes these, translates them into
>     > physical addresses before making any reads / writes to main
>     memory. No
>     > software can use a virtual address space larger than what the
>     > processor specifies.
>     >
>     >> 1) User may run a firmware on the processor that gives a 1-1
>     mapping
>     >> from virtual to physical (thus making virtual address space
>     equal to
>     >> physical address space).
>     >>
>     > Well, I don't know much about other architectures, so I'll just
>     comment
>     on
>     > x86.
>     > When you switch to 64bit mode, you compulsorily need to have a
>     4-level
>     > paging table, which translates 64-bit linear addresses (actually a
>     > 48-bit linear address, since the address is subject to the canonical
>     > address requirement) to (upto) 52-bit physical addresses. So
>     > irrespective of what firmware you're running, linear addresses are
>     > actually 64-bit, but physical addresses are not.
>     >
>     > (In fact, physical address space might even be larger than virtual
>     > address space, when we take modes like PAE / PSE into account)
>     >
>     >> 2) Users may be running different OS(s) that give different
>     amount of
>     >> virtual address space to use.
>     > Irrespective of what OS you're using (and whether it switches to the
>     > processor mode that would utilize the 64-bit virtual address space
>     > that the processor provides), the 'internal address bus' (virtual
>     > address space) of the processor is what decides the maximum virtual
>     > address space of any programs that run on it (OS or otherwise).
>     >
>     > C
>     >
>     > On Thu, Oct 22, 2009 at 11:23 PM, Rajat Jain
>     <Rajat.Jain@infogain.com <mailto:Rajat.Jain@infogain.com>>
>     > wrote:
>     >>
>     >> Hi,
>     >>
>     >> ----Original Message----
>     >> From: C [mailto:a.la.kaarta@gmail.com
>     <mailto:a.la.kaarta@gmail.com>]
>     >> Sent: Friday, October 23, 2009 10:51 AM
>     >> To: Rajat Jain
>     >> Cc: simonyanix@gmail.com <mailto:simonyanix@gmail.com>; Siddu;
>     Rick Brown; kernelnewbies;
>     >> linux-newbie@vger.kernel.org <mailto:linux-newbie@vger.kernel.org>
>     >> Subject: Re: 32 bit processors / 64 bit processors
>     >>
>     >>> PAE (Physical Address Extension) expands the _physical_
>     address space
>     >>> to > 32 bits, but the _virtual_ address space stays the same at
>     >>> 32-bits, and the virtual address size is what I mentioned as
>     qualifies
>     >>> the processor as 32-bit or 64-bit.
>     >>
>     >> Well, IMHO the processor does not decide or even know the size of
>     >> virtual address space.
>     > Ofcourse it does. How else do you think it translates a virtual
>     > address to a physical address?
>     >
>     > It purely depends on the software (OS in this
>     >> case) that runs on it. Consider all of the following is
>     possible on the
>     >> same 32 bit processor:
>     >>
>     >> 1) User may run a firmware on the processor that gives a 1-1
>     mapping
>     >> from virtual to physical (thus making virtual address space
>     equal to
>     >> physical address space).
>     >>
>     >> 2) Users may be running different OS(s) that give different
>     amount of
>     >> virtual address space to use.
>     >>
>     >> What am I missing?
>     >>
>     >> Thanks,
>     >>
>     >> Rajat
>     >>
>     >>
>     >>>
>     >>> 1. Addressable physical memory / physical address size does
>     not decide
>     >>> whether a processor is 32-bit / 64-bit, there is no processor
>     (AFAIK)
>     >>> which can address 64 bits of physical memory. I suppose
>     sizeof(void*)
>     >>> gives you the size of the _virtual_ address, so yes, I suppose
>     that
>     >>> should be 64 bits on a 64-bit processor (and using a 64-bit
>     compiler)
>     >>> 2. Register size does not decide whether a processor is 32-bit /
>     >>> 64-bit.
>     >>>
>     >>> C
>     >>>
>     >>> On Thu, Oct 22, 2009 at 10:05 PM, Rajat Jain
>     >>> <Rajat.Jain@infogain.com <mailto:Rajat.Jain@infogain.com>> wrote:
>     >>>>
>     >>>> Hi,
>     >>>>
>     >>>>> 1. The size of the processor's internal address bus (virtual
>     address
>     >>>>> space) is what qualifies it as a 32-bit / 64-bit processor.
>     >>>>
>     >>>> Well, in that sense, isn't Pentium a "36-bit" processor (since it
>     >>>> gives the option of PAE to use 64 GB of memory - it must be
>     having
>     >>>> atleast 36 address lines)?
>     >>>>
>     >>>> On this topic and in this thread, we have had following
>     responses to
>     >>>> the question on what is called a 32-bit or 64-bit processor:
>     >>>>
>     >>>> 1) Addressable Physical memory (=sizeof(void*))
>     >>>> 2) Register Size (=instruction size)
>     >>>>
>     >>>> Are the above two independent of each other? If yes, then how
>     do we
>     >>>> deine a processor as 32-bit / 64-bit?
>     >>>>
>     >>>> Thanks,
>     >>>>
>     >>>> Rajat
>     >>
>     >
>     > --
>     > To unsubscribe from this list: send an email with
>     > "unsubscribe kernelnewbies" to ecartis@nl.linux.org
>     <mailto:ecartis@nl.linux.org>
>     > Please read the FAQ at http://kernelnewbies.org/FAQ
>
>
>
>     >> Well, IMHO the processor does not decide or even know the size of
>     >> virtual address space.
>
>     > Ofcourse it does. How else do you think it translates a virtual
>
>     No it doesn't... the previous poster is right. (unless we
>     excessively get
>     into semantics....)
>     That is up to the MMU, it has absolutely nothing to do with the CPU.
>     And FWIW, x86 is hardly a reference... x86, along with 8051 would
>     have to
>     be the biggest abonimation
>     to the concept of elegant processing......
>
>     -- Kris
>
>
>     --
>     To unsubscribe from this list: send an email with
>     "unsubscribe kernelnewbies" to ecartis@nl.linux.org
>     <mailto:ecartis@nl.linux.org>
>     Please read the FAQ at http://kernelnewbies.org/FAQ
>
>
>
>
> -- 
> Thanks & Regards
> Nidhi Mittal Hada
>
>
> *Email Scanned for Virus & Dangerous Content by :* 
> *www.CleanMailGateway.com*
>
--
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: 32 bit processors / 64 bit processors
       [not found]                 ` <b14bc42a0911060423g324caedw3992061796125ea@mail.gmail.com>
  2009-11-07  4:41                   ` vkm
@ 2009-11-07 10:10                   ` hmthalib
  2009-11-07 10:30                     ` vkm
  2009-11-09 18:27                   ` Pulkit Goel
  2 siblings, 1 reply; 18+ messages in thread
From: hmthalib @ 2009-11-07 10:10 UTC (permalink / raw)
  To: nidhi mittal hada
  Cc: microbit, C, simonyanix, Siddu, Rick Brown, kernelnewbies,
	linux-newbie

nidhi mittal hada wrote:
> Can someone come and please clarify -- it finally
> above chain of mail raises more confusion as conflict stays till end.
> 
> 1)processor 32/64 bit --
>     a)data it can process at one instance --- register size --- data bus 
> size --
> OR
>     b)internal address bus size of processor ---  if that is true then 
> what abt case of pentium 36 bit address lines ---
> 

A processor is called 32 bit or 64 bit depending on the width of the 
data bus. not on the register size or data it can process at one instance

for example a 8 bit micro controller can have 16 bit registers. 
similarly all modern processor has architecture to process more data to 
increase the throughput.


> 
> 2)OS 32 /64 bit
>     a)its virtual address space -- what os provides --- to each process 
> -- which is mapped to physical address space that prcessor provides
>                                    
>   OR
>      b)processor specifies virtual addr space ??
> 
> 

dont confuse with virtual addr space with physical addr space . MMU will 
assist the OS in this issue.

the moment the bit to enable the 64 bit mode is enabled the MMU and 
other thing are extend to address 64 bit physical addr space.

> 
> 
> 3)extra ques -- why in case of 32 bit arch -- physical memory RAM 
> limitation comes of 4GB ?
> 
> 
because the 32 bit can only address 2^32 address location which is 4GB 
of RAM max. where 2^64 = 16 EB (exa bytes)

finally download some data sheet of different processor and read to get 
how thing work

> 
> On Fri, Oct 23, 2009 at 4:54 PM, <microbit@virginbroadband.com.au 
> <mailto:microbit@virginbroadband.com.au>> wrote:
> 
>     Hi,
> 
>     On Thu, 22 Oct 2009 23:58:20 -0700, C <a.la.kaarta@gmail.com
>     <mailto:a.la.kaarta@gmail.com>> wrote:
>      >> Well, IMHO the processor does not decide or even know the size of
>      >> virtual address space.
>      > Ofcourse it does. How else do you think it translates a virtual
>      > address to a physical address? Virtual addresses are simply what the
>      > software 'sees', the processor takes these, translates them into
>      > physical addresses before making any reads / writes to main
>     memory. No
>      > software can use a virtual address space larger than what the
>      > processor specifies.
>      >
>      >> 1) User may run a firmware on the processor that gives a 1-1 mapping
>      >> from virtual to physical (thus making virtual address space equal to
>      >> physical address space).
>      >>
>      > Well, I don't know much about other architectures, so I'll just
>     comment
>     on
>      > x86.
>      > When you switch to 64bit mode, you compulsorily need to have a
>     4-level
>      > paging table, which translates 64-bit linear addresses (actually a
>      > 48-bit linear address, since the address is subject to the canonical
>      > address requirement) to (upto) 52-bit physical addresses. So
>      > irrespective of what firmware you're running, linear addresses are
>      > actually 64-bit, but physical addresses are not.
>      >
>      > (In fact, physical address space might even be larger than virtual
>      > address space, when we take modes like PAE / PSE into account)
>      >
>      >> 2) Users may be running different OS(s) that give different
>     amount of
>      >> virtual address space to use.
>      > Irrespective of what OS you're using (and whether it switches to the
>      > processor mode that would utilize the 64-bit virtual address space
>      > that the processor provides), the 'internal address bus' (virtual
>      > address space) of the processor is what decides the maximum virtual
>      > address space of any programs that run on it (OS or otherwise).
>      >
>      > C
>      >
>      > On Thu, Oct 22, 2009 at 11:23 PM, Rajat Jain
>     <Rajat.Jain@infogain.com <mailto:Rajat.Jain@infogain.com>>
>      > wrote:
>      >>
>      >> Hi,
>      >>
>      >> ----Original Message----
>      >> From: C [mailto:a.la.kaarta@gmail.com
>     <mailto:a.la.kaarta@gmail.com>]
>      >> Sent: Friday, October 23, 2009 10:51 AM
>      >> To: Rajat Jain
>      >> Cc: simonyanix@gmail.com <mailto:simonyanix@gmail.com>; Siddu;
>     Rick Brown; kernelnewbies;
>      >> linux-newbie@vger.kernel.org <mailto:linux-newbie@vger.kernel.org>
>      >> Subject: Re: 32 bit processors / 64 bit processors
>      >>
>      >>> PAE (Physical Address Extension) expands the _physical_ address
>     space
>      >>> to > 32 bits, but the _virtual_ address space stays the same at
>      >>> 32-bits, and the virtual address size is what I mentioned as
>     qualifies
>      >>> the processor as 32-bit or 64-bit.
>      >>
>      >> Well, IMHO the processor does not decide or even know the size of
>      >> virtual address space.
>      > Ofcourse it does. How else do you think it translates a virtual
>      > address to a physical address?
>      >
>      > It purely depends on the software (OS in this
>      >> case) that runs on it. Consider all of the following is possible
>     on the
>      >> same 32 bit processor:
>      >>
>      >> 1) User may run a firmware on the processor that gives a 1-1 mapping
>      >> from virtual to physical (thus making virtual address space equal to
>      >> physical address space).
>      >>
>      >> 2) Users may be running different OS(s) that give different
>     amount of
>      >> virtual address space to use.
>      >>
>      >> What am I missing?
>      >>
>      >> Thanks,
>      >>
>      >> Rajat
>      >>
>      >>
>      >>>
>      >>> 1. Addressable physical memory / physical address size does not
>     decide
>      >>> whether a processor is 32-bit / 64-bit, there is no processor
>     (AFAIK)
>      >>> which can address 64 bits of physical memory. I suppose
>     sizeof(void*)
>      >>> gives you the size of the _virtual_ address, so yes, I suppose that
>      >>> should be 64 bits on a 64-bit processor (and using a 64-bit
>     compiler)
>      >>> 2. Register size does not decide whether a processor is 32-bit /
>      >>> 64-bit.
>      >>>
>      >>> C
>      >>>
>      >>> On Thu, Oct 22, 2009 at 10:05 PM, Rajat Jain
>      >>> <Rajat.Jain@infogain.com <mailto:Rajat.Jain@infogain.com>> wrote:
>      >>>>
>      >>>> Hi,
>      >>>>
>      >>>>> 1. The size of the processor's internal address bus (virtual
>     address
>      >>>>> space) is what qualifies it as a 32-bit / 64-bit processor.
>      >>>>
>      >>>> Well, in that sense, isn't Pentium a "36-bit" processor (since it
>      >>>> gives the option of PAE to use 64 GB of memory - it must be having
>      >>>> atleast 36 address lines)?
>      >>>>
>      >>>> On this topic and in this thread, we have had following
>     responses to
>      >>>> the question on what is called a 32-bit or 64-bit processor:
>      >>>>
>      >>>> 1) Addressable Physical memory (=sizeof(void*))
>      >>>> 2) Register Size (=instruction size)
>      >>>>
>      >>>> Are the above two independent of each other? If yes, then how
>     do we
>      >>>> deine a processor as 32-bit / 64-bit?
>      >>>>
>      >>>> Thanks,
>      >>>>
>      >>>> Rajat
>      >>
>      >
>      > --
>      > To unsubscribe from this list: send an email with
>      > "unsubscribe kernelnewbies" to ecartis@nl.linux.org
>     <mailto:ecartis@nl.linux.org>
>      > Please read the FAQ at http://kernelnewbies.org/FAQ
> 
> 
> 
>      >> Well, IMHO the processor does not decide or even know the size of
>      >> virtual address space.
> 
>      > Ofcourse it does. How else do you think it translates a virtual
> 
>     No it doesn't... the previous poster is right. (unless we
>     excessively get
>     into semantics....)
>     That is up to the MMU, it has absolutely nothing to do with the CPU.
>     And FWIW, x86 is hardly a reference... x86, along with 8051 would
>     have to
>     be the biggest abonimation
>     to the concept of elegant processing......
> 
>     -- Kris
> 
> 
>     --
>     To unsubscribe from this list: send an email with
>     "unsubscribe kernelnewbies" to ecartis@nl.linux.org
>     <mailto:ecartis@nl.linux.org>
>     Please read the FAQ at http://kernelnewbies.org/FAQ
> 
> 
> 
> 
> -- 
> Thanks & Regards
> Nidhi Mittal Hada

--
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: 32 bit processors / 64 bit processors
  2009-10-21  3:02 32 bit processors / 64 bit processors Rick Brown
  2009-10-21  5:39 ` Siddu
@ 2009-11-07 10:20 ` hmthalib
  2009-11-13  3:37 ` Drew
  2 siblings, 0 replies; 18+ messages in thread
From: hmthalib @ 2009-11-07 10:20 UTC (permalink / raw)
  To: Rick Brown; +Cc: kernelnewbies, linux-newbie

Rick Brown wrote:
> Hi,
> 
> Firstly, I'm trying to understand what exactly characterizes a
> procesor or an operating system as 32bit / 64 bit. I've read that it
> means the "native word size" of a machine. But what exactly is that?
> Register size? Address bus size? Anything else?

depends on the data bus with.

> Secondly, I'm trying to understand what exactly does a sizeof(int)
> depend on when we say it is "platform specific". Is it dependent of
> compiler being 32bit / 64 bit? Or the OS being 32bit / 64 bit? Or the
> processor being 32 / 64 bit?

the sizeof(int) depends on the limits.h which the complier uses.

> Lastly, How are "sizes" of compiler / OS / processor inter related?
> Here is my understanding. A 32 bit processor can only be running a 32
> bit OS. A 64 bit processor may run a 32 or a 64 bit OS. 

The 64bit processor gives you the option to run in 32 bit mode or 64bit 
mode. there should be register to switch between them. so refer the 
corresponding data sheet for that processor.

A 32 bit
> compiler generates code only to be run on a 32 bit OS; ditto for 64
> bit. Is this right?

yes .

> 
> TIA,
> 
> Rick
> 
> --
> To unsubscribe from this list: send an email with
> "unsubscribe kernelnewbies" to ecartis@nl.linux.org
> Please read the FAQ at http://kernelnewbies.org/FAQ
> 
> 

--
Thalib

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@nl.linux.org
Please read the FAQ at http://kernelnewbies.org/FAQ


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: 32 bit processors / 64 bit processors
  2009-11-07 10:10                   ` hmthalib
@ 2009-11-07 10:30                     ` vkm
  2009-11-07 10:49                       ` hmthalib
  0 siblings, 1 reply; 18+ messages in thread
From: vkm @ 2009-11-07 10:30 UTC (permalink / raw)
  To: hmthalib
  Cc: nidhi mittal hada, microbit, C, simonyanix, Siddu, Rick Brown,
	kernelnewbies, linux-newbie



hmthalib wrote:
> nidhi mittal hada wrote:
>> Can someone come and please clarify -- it finally
>> above chain of mail raises more confusion as conflict stays till end.
>>
>> 1)processor 32/64 bit --
>>     a)data it can process at one instance --- register size --- data 
>> bus size --
>> OR
>>     b)internal address bus size of processor ---  if that is true 
>> then what abt case of pentium 36 bit address lines ---
>>
>
> A processor is called 32 bit or 64 bit depending on the width of the 
> data bus. not on the register size or data it can process at one instance
>
> for example a 8 bit micro controller can have 16 bit registers. 
> similarly all modern processor has architecture to process more data 
> to increase the throughput.

What would you call pentium pro.... Its address bus is 36 bits wide, and 
the external data bus is 64 bits wide
>
>
>>
>> 2)OS 32 /64 bit
>>     a)its virtual address space -- what os provides --- to each 
>> process -- which is mapped to physical address space that prcessor 
>> provides
>>                                      OR
>>      b)processor specifies virtual addr space ??
>>
>>
>
> dont confuse with virtual addr space with physical addr space . MMU 
> will assist the OS in this issue.
>
> the moment the bit to enable the 64 bit mode is enabled the MMU and 
> other thing are extend to address 64 bit physical addr space.
>
>>
>>
>> 3)extra ques -- why in case of 32 bit arch -- physical memory RAM 
>> limitation comes of 4GB ?
>>
>>
> because the 32 bit can only address 2^32 address location which is 4GB 
> of RAM max. where 2^64 = 16 EB (exa bytes)
>
> finally download some data sheet of different processor and read to 
> get how thing work
>
>>
>> On Fri, Oct 23, 2009 at 4:54 PM, <microbit@virginbroadband.com.au 
>> <mailto:microbit@virginbroadband.com.au>> wrote:
>>
>>     Hi,
>>
>>     On Thu, 22 Oct 2009 23:58:20 -0700, C <a.la.kaarta@gmail.com
>>     <mailto:a.la.kaarta@gmail.com>> wrote:
>>      >> Well, IMHO the processor does not decide or even know the 
>> size of
>>      >> virtual address space.
>>      > Ofcourse it does. How else do you think it translates a virtual
>>      > address to a physical address? Virtual addresses are simply 
>> what the
>>      > software 'sees', the processor takes these, translates them into
>>      > physical addresses before making any reads / writes to main
>>     memory. No
>>      > software can use a virtual address space larger than what the
>>      > processor specifies.
>>      >
>>      >> 1) User may run a firmware on the processor that gives a 1-1 
>> mapping
>>      >> from virtual to physical (thus making virtual address space 
>> equal to
>>      >> physical address space).
>>      >>
>>      > Well, I don't know much about other architectures, so I'll just
>>     comment
>>     on
>>      > x86.
>>      > When you switch to 64bit mode, you compulsorily need to have a
>>     4-level
>>      > paging table, which translates 64-bit linear addresses 
>> (actually a
>>      > 48-bit linear address, since the address is subject to the 
>> canonical
>>      > address requirement) to (upto) 52-bit physical addresses. So
>>      > irrespective of what firmware you're running, linear addresses 
>> are
>>      > actually 64-bit, but physical addresses are not.
>>      >
>>      > (In fact, physical address space might even be larger than 
>> virtual
>>      > address space, when we take modes like PAE / PSE into account)
>>      >
>>      >> 2) Users may be running different OS(s) that give different
>>     amount of
>>      >> virtual address space to use.
>>      > Irrespective of what OS you're using (and whether it switches 
>> to the
>>      > processor mode that would utilize the 64-bit virtual address 
>> space
>>      > that the processor provides), the 'internal address bus' (virtual
>>      > address space) of the processor is what decides the maximum 
>> virtual
>>      > address space of any programs that run on it (OS or otherwise).
>>      >
>>      > C
>>      >
>>      > On Thu, Oct 22, 2009 at 11:23 PM, Rajat Jain
>>     <Rajat.Jain@infogain.com <mailto:Rajat.Jain@infogain.com>>
>>      > wrote:
>>      >>
>>      >> Hi,
>>      >>
>>      >> ----Original Message----
>>      >> From: C [mailto:a.la.kaarta@gmail.com
>>     <mailto:a.la.kaarta@gmail.com>]
>>      >> Sent: Friday, October 23, 2009 10:51 AM
>>      >> To: Rajat Jain
>>      >> Cc: simonyanix@gmail.com <mailto:simonyanix@gmail.com>; Siddu;
>>     Rick Brown; kernelnewbies;
>>      >> linux-newbie@vger.kernel.org 
>> <mailto:linux-newbie@vger.kernel.org>
>>      >> Subject: Re: 32 bit processors / 64 bit processors
>>      >>
>>      >>> PAE (Physical Address Extension) expands the _physical_ address
>>     space
>>      >>> to > 32 bits, but the _virtual_ address space stays the same at
>>      >>> 32-bits, and the virtual address size is what I mentioned as
>>     qualifies
>>      >>> the processor as 32-bit or 64-bit.
>>      >>
>>      >> Well, IMHO the processor does not decide or even know the 
>> size of
>>      >> virtual address space.
>>      > Ofcourse it does. How else do you think it translates a virtual
>>      > address to a physical address?
>>      >
>>      > It purely depends on the software (OS in this
>>      >> case) that runs on it. Consider all of the following is possible
>>     on the
>>      >> same 32 bit processor:
>>      >>
>>      >> 1) User may run a firmware on the processor that gives a 1-1 
>> mapping
>>      >> from virtual to physical (thus making virtual address space 
>> equal to
>>      >> physical address space).
>>      >>
>>      >> 2) Users may be running different OS(s) that give different
>>     amount of
>>      >> virtual address space to use.
>>      >>
>>      >> What am I missing?
>>      >>
>>      >> Thanks,
>>      >>
>>      >> Rajat
>>      >>
>>      >>
>>      >>>
>>      >>> 1. Addressable physical memory / physical address size does not
>>     decide
>>      >>> whether a processor is 32-bit / 64-bit, there is no processor
>>     (AFAIK)
>>      >>> which can address 64 bits of physical memory. I suppose
>>     sizeof(void*)
>>      >>> gives you the size of the _virtual_ address, so yes, I 
>> suppose that
>>      >>> should be 64 bits on a 64-bit processor (and using a 64-bit
>>     compiler)
>>      >>> 2. Register size does not decide whether a processor is 
>> 32-bit /
>>      >>> 64-bit.
>>      >>>
>>      >>> C
>>      >>>
>>      >>> On Thu, Oct 22, 2009 at 10:05 PM, Rajat Jain
>>      >>> <Rajat.Jain@infogain.com <mailto:Rajat.Jain@infogain.com>> 
>> wrote:
>>      >>>>
>>      >>>> Hi,
>>      >>>>
>>      >>>>> 1. The size of the processor's internal address bus (virtual
>>     address
>>      >>>>> space) is what qualifies it as a 32-bit / 64-bit processor.
>>      >>>>
>>      >>>> Well, in that sense, isn't Pentium a "36-bit" processor 
>> (since it
>>      >>>> gives the option of PAE to use 64 GB of memory - it must be 
>> having
>>      >>>> atleast 36 address lines)?
>>      >>>>
>>      >>>> On this topic and in this thread, we have had following
>>     responses to
>>      >>>> the question on what is called a 32-bit or 64-bit processor:
>>      >>>>
>>      >>>> 1) Addressable Physical memory (=sizeof(void*))
>>      >>>> 2) Register Size (=instruction size)
>>      >>>>
>>      >>>> Are the above two independent of each other? If yes, then how
>>     do we
>>      >>>> deine a processor as 32-bit / 64-bit?
>>      >>>>
>>      >>>> Thanks,
>>      >>>>
>>      >>>> Rajat
>>      >>
>>      >
>>      > --
>>      > To unsubscribe from this list: send an email with
>>      > "unsubscribe kernelnewbies" to ecartis@nl.linux.org
>>     <mailto:ecartis@nl.linux.org>
>>      > Please read the FAQ at http://kernelnewbies.org/FAQ
>>
>>
>>
>>      >> Well, IMHO the processor does not decide or even know the 
>> size of
>>      >> virtual address space.
>>
>>      > Ofcourse it does. How else do you think it translates a virtual
>>
>>     No it doesn't... the previous poster is right. (unless we
>>     excessively get
>>     into semantics....)
>>     That is up to the MMU, it has absolutely nothing to do with the CPU.
>>     And FWIW, x86 is hardly a reference... x86, along with 8051 would
>>     have to
>>     be the biggest abonimation
>>     to the concept of elegant processing......
>>
>>     -- Kris
>>
>>
>>     --
>>     To unsubscribe from this list: send an email with
>>     "unsubscribe kernelnewbies" to ecartis@nl.linux.org
>>     <mailto:ecartis@nl.linux.org>
>>     Please read the FAQ at http://kernelnewbies.org/FAQ
>>
>>
>>
>>
>> -- 
>> Thanks & Regards
>> Nidhi Mittal Hada
>
>
> -- 
> To unsubscribe from this list: send an email with
> "unsubscribe kernelnewbies" to ecartis@nl.linux.org
> Please read the FAQ at http://kernelnewbies.org/FAQ
>
>
>
> Email Scanned for Virus & Dangerous Content by : www.CleanMailGateway.com
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: 32 bit processors / 64 bit processors
  2009-11-07 10:30                     ` vkm
@ 2009-11-07 10:49                       ` hmthalib
  0 siblings, 0 replies; 18+ messages in thread
From: hmthalib @ 2009-11-07 10:49 UTC (permalink / raw)
  To: viral.vkm
  Cc: nidhi mittal hada, microbit, C, simonyanix, Siddu, Rick Brown,
	kernelnewbies, linux-newbie

vkm wrote:
> 
> 
> hmthalib wrote:
>> nidhi mittal hada wrote:
>>> Can someone come and please clarify -- it finally
>>> above chain of mail raises more confusion as conflict stays till end.
>>>
>>> 1)processor 32/64 bit --
>>>     a)data it can process at one instance --- register size --- data 
>>> bus size --
>>> OR
>>>     b)internal address bus size of processor ---  if that is true 
>>> then what abt case of pentium 36 bit address lines ---
>>>
>>
>> A processor is called 32 bit or 64 bit depending on the width of the 
>> data bus. not on the register size or data it can process at one instance
>>
>> for example a 8 bit micro controller can have 16 bit registers. 
>> similarly all modern processor has architecture to process more data 
>> to increase the throughput.
> 
> What would you call pentium pro.... Its address bus is 36 bits wide, and 
> the external data bus is 64 bits wide

Oh, you mean I am saying pentium pro as processor, I didn't meant that. 
so to make clear i will use term SoC today what we get from the 
semiconductor vendor is SoC may be you have ARM, PowerPC, x86, ia64, AMD 
, etc... what ever you buy from market is a SoC.

your actual processor will site in one corner or your SoC, where there 
will be other peripherals along the actual processor, because of Multi 
core core era we call it as core , did you got it now.


A processor is just has ALU, Register, control unit, PC , etc.. it is 
where the actual processing takes palace. there will be data/addr bus 
connecting all the needed modules which also connects the main memory 
directly or though cache. when data is move to any registers form memory 
at a time a 32bit processor will move 32bit to a register. even the 
register is 64bit or 128bit wide the data will be done in multiple 
processor cycles.

To know more about memory management which done in modern CPU though MMU 
check the below link

http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory

>>
>>
>>>
>>> 2)OS 32 /64 bit
>>>     a)its virtual address space -- what os provides --- to each 
>>> process -- which is mapped to physical address space that prcessor 
>>> provides
>>>                                      OR
>>>      b)processor specifies virtual addr space ??
>>>
>>>
>>
>> dont confuse with virtual addr space with physical addr space . MMU 
>> will assist the OS in this issue.
>>
>> the moment the bit to enable the 64 bit mode is enabled the MMU and 
>> other thing are extend to address 64 bit physical addr space.
>>
>>>
>>>
>>> 3)extra ques -- why in case of 32 bit arch -- physical memory RAM 
>>> limitation comes of 4GB ?
>>>
>>>
>> because the 32 bit can only address 2^32 address location which is 4GB 
>> of RAM max. where 2^64 = 16 EB (exa bytes)
>>
>> finally download some data sheet of different processor and read to 
>> get how thing work
>>
>>>
>>> On Fri, Oct 23, 2009 at 4:54 PM, <microbit@virginbroadband.com.au 
>>> <mailto:microbit@virginbroadband.com.au>> wrote:
>>>
>>>     Hi,
>>>
>>>     On Thu, 22 Oct 2009 23:58:20 -0700, C <a.la.kaarta@gmail.com
>>>     <mailto:a.la.kaarta@gmail.com>> wrote:
>>>      >> Well, IMHO the processor does not decide or even know the 
>>> size of
>>>      >> virtual address space.
>>>      > Ofcourse it does. How else do you think it translates a virtual
>>>      > address to a physical address? Virtual addresses are simply 
>>> what the
>>>      > software 'sees', the processor takes these, translates them into
>>>      > physical addresses before making any reads / writes to main
>>>     memory. No
>>>      > software can use a virtual address space larger than what the
>>>      > processor specifies.
>>>      >
>>>      >> 1) User may run a firmware on the processor that gives a 1-1 
>>> mapping
>>>      >> from virtual to physical (thus making virtual address space 
>>> equal to
>>>      >> physical address space).
>>>      >>
>>>      > Well, I don't know much about other architectures, so I'll just
>>>     comment
>>>     on
>>>      > x86.
>>>      > When you switch to 64bit mode, you compulsorily need to have a
>>>     4-level
>>>      > paging table, which translates 64-bit linear addresses 
>>> (actually a
>>>      > 48-bit linear address, since the address is subject to the 
>>> canonical
>>>      > address requirement) to (upto) 52-bit physical addresses. So
>>>      > irrespective of what firmware you're running, linear addresses 
>>> are
>>>      > actually 64-bit, but physical addresses are not.
>>>      >
>>>      > (In fact, physical address space might even be larger than 
>>> virtual
>>>      > address space, when we take modes like PAE / PSE into account)
>>>      >
>>>      >> 2) Users may be running different OS(s) that give different
>>>     amount of
>>>      >> virtual address space to use.
>>>      > Irrespective of what OS you're using (and whether it switches 
>>> to the
>>>      > processor mode that would utilize the 64-bit virtual address 
>>> space
>>>      > that the processor provides), the 'internal address bus' (virtual
>>>      > address space) of the processor is what decides the maximum 
>>> virtual
>>>      > address space of any programs that run on it (OS or otherwise).
>>>      >
>>>      > C
>>>      >
>>>      > On Thu, Oct 22, 2009 at 11:23 PM, Rajat Jain
>>>     <Rajat.Jain@infogain.com <mailto:Rajat.Jain@infogain.com>>
>>>      > wrote:
>>>      >>
>>>      >> Hi,
>>>      >>
>>>      >> ----Original Message----
>>>      >> From: C [mailto:a.la.kaarta@gmail.com
>>>     <mailto:a.la.kaarta@gmail.com>]
>>>      >> Sent: Friday, October 23, 2009 10:51 AM
>>>      >> To: Rajat Jain
>>>      >> Cc: simonyanix@gmail.com <mailto:simonyanix@gmail.com>; Siddu;
>>>     Rick Brown; kernelnewbies;
>>>      >> linux-newbie@vger.kernel.org 
>>> <mailto:linux-newbie@vger.kernel.org>
>>>      >> Subject: Re: 32 bit processors / 64 bit processors
>>>      >>
>>>      >>> PAE (Physical Address Extension) expands the _physical_ address
>>>     space
>>>      >>> to > 32 bits, but the _virtual_ address space stays the same at
>>>      >>> 32-bits, and the virtual address size is what I mentioned as
>>>     qualifies
>>>      >>> the processor as 32-bit or 64-bit.
>>>      >>
>>>      >> Well, IMHO the processor does not decide or even know the 
>>> size of
>>>      >> virtual address space.
>>>      > Ofcourse it does. How else do you think it translates a virtual
>>>      > address to a physical address?
>>>      >
>>>      > It purely depends on the software (OS in this
>>>      >> case) that runs on it. Consider all of the following is possible
>>>     on the
>>>      >> same 32 bit processor:
>>>      >>
>>>      >> 1) User may run a firmware on the processor that gives a 1-1 
>>> mapping
>>>      >> from virtual to physical (thus making virtual address space 
>>> equal to
>>>      >> physical address space).
>>>      >>
>>>      >> 2) Users may be running different OS(s) that give different
>>>     amount of
>>>      >> virtual address space to use.
>>>      >>
>>>      >> What am I missing?
>>>      >>
>>>      >> Thanks,
>>>      >>
>>>      >> Rajat
>>>      >>
>>>      >>
>>>      >>>
>>>      >>> 1. Addressable physical memory / physical address size does not
>>>     decide
>>>      >>> whether a processor is 32-bit / 64-bit, there is no processor
>>>     (AFAIK)
>>>      >>> which can address 64 bits of physical memory. I suppose
>>>     sizeof(void*)
>>>      >>> gives you the size of the _virtual_ address, so yes, I 
>>> suppose that
>>>      >>> should be 64 bits on a 64-bit processor (and using a 64-bit
>>>     compiler)
>>>      >>> 2. Register size does not decide whether a processor is 
>>> 32-bit /
>>>      >>> 64-bit.
>>>      >>>
>>>      >>> C
>>>      >>>
>>>      >>> On Thu, Oct 22, 2009 at 10:05 PM, Rajat Jain
>>>      >>> <Rajat.Jain@infogain.com <mailto:Rajat.Jain@infogain.com>> 
>>> wrote:
>>>      >>>>
>>>      >>>> Hi,
>>>      >>>>
>>>      >>>>> 1. The size of the processor's internal address bus (virtual
>>>     address
>>>      >>>>> space) is what qualifies it as a 32-bit / 64-bit processor.
>>>      >>>>
>>>      >>>> Well, in that sense, isn't Pentium a "36-bit" processor 
>>> (since it
>>>      >>>> gives the option of PAE to use 64 GB of memory - it must be 
>>> having
>>>      >>>> atleast 36 address lines)?
>>>      >>>>
>>>      >>>> On this topic and in this thread, we have had following
>>>     responses to
>>>      >>>> the question on what is called a 32-bit or 64-bit processor:
>>>      >>>>
>>>      >>>> 1) Addressable Physical memory (=sizeof(void*))
>>>      >>>> 2) Register Size (=instruction size)
>>>      >>>>
>>>      >>>> Are the above two independent of each other? If yes, then how
>>>     do we
>>>      >>>> deine a processor as 32-bit / 64-bit?
>>>      >>>>
>>>      >>>> Thanks,
>>>      >>>>
>>>      >>>> Rajat
>>>      >>
>>>      >
>>>      > --
>>>      > To unsubscribe from this list: send an email with
>>>      > "unsubscribe kernelnewbies" to ecartis@nl.linux.org
>>>     <mailto:ecartis@nl.linux.org>
>>>      > Please read the FAQ at http://kernelnewbies.org/FAQ
>>>
>>>
>>>
>>>      >> Well, IMHO the processor does not decide or even know the 
>>> size of
>>>      >> virtual address space.
>>>
>>>      > Ofcourse it does. How else do you think it translates a virtual
>>>
>>>     No it doesn't... the previous poster is right. (unless we
>>>     excessively get
>>>     into semantics....)
>>>     That is up to the MMU, it has absolutely nothing to do with the CPU.
>>>     And FWIW, x86 is hardly a reference... x86, along with 8051 would
>>>     have to
>>>     be the biggest abonimation
>>>     to the concept of elegant processing......
>>>
>>>     -- Kris
>>>
>>>
>>>     --
>>>     To unsubscribe from this list: send an email with
>>>     "unsubscribe kernelnewbies" to ecartis@nl.linux.org
>>>     <mailto:ecartis@nl.linux.org>
>>>     Please read the FAQ at http://kernelnewbies.org/FAQ
>>>
>>>
>>>
>>>
>>> -- 
>>> Thanks & Regards
>>> Nidhi Mittal Hada
>>
>>
>> -- 
>> To unsubscribe from this list: send an email with
>> "unsubscribe kernelnewbies" to ecartis@nl.linux.org
>> Please read the FAQ at http://kernelnewbies.org/FAQ
>>
>>
>>
>> Email Scanned for Virus & Dangerous Content by : www.CleanMailGateway.com
>>
>>
> 


-- 
Regards,
Mohamed Thalib H
--
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: 32 bit processors / 64 bit processors
       [not found]                 ` <b14bc42a0911060423g324caedw3992061796125ea@mail.gmail.com>
  2009-11-07  4:41                   ` vkm
  2009-11-07 10:10                   ` hmthalib
@ 2009-11-09 18:27                   ` Pulkit Goel
  2009-11-10  2:09                     ` Microbit_P43000
  2 siblings, 1 reply; 18+ messages in thread
From: Pulkit Goel @ 2009-11-09 18:27 UTC (permalink / raw)
  To: nidhi mittal hada
  Cc: microbit, C, simonyanix, Siddu, Rick Brown, kernelnewbies,
	linux-newbie

[-- Attachment #1: Type: text/plain, Size: 7386 bytes --]

Hi,

*1) *a) Processor 32/64 bit defines by :::*  Data bus Size*
    b) In Pentium 36 bit Adddress, Basically a PAE, Which is Introduced
First by Intel to  handle the Demand of RAM more than    4GB, in Heavy
Applications.

*2)* a) 64OS not Run On 32bit Processor, But 32bit OS run on 64Bit Processor
by Downgarding its Efficiency of Databus By latching only 32 bit data on
64bit bus by Inserting 32'b0* in MSB of 64Bus...
Processor Generate *Logical* Address, which is Mapped into *Virtual* which
in turn Mapped into *Physical*., At low Level For LOW MEMORY Logical Address
Directly Mapped to Virtual Address,  OS Provides Virtual Address space to a
Process,

*3)* *If* Address Bus Size is 32Bit then Possible no. of Permutation that of
Address Formed are 2^32 = 4.098 GB.


*Reagrds:*
Pulkit Goel
*mail:* vipulkit.goel@gmail.com

On Fri, Nov 6, 2009 at 5:53 PM, nidhi mittal hada
<nidhimittal19@gmail.com>wrote:

> Can someone come and please clarify -- it finally
> above chain of mail raises more confusion as conflict stays till end.
>
> 1)processor 32/64 bit --
>     a)data it can process at one instance --- register size --- data bus
> size --
> OR
>     b)internal address bus size of processor ---  if that is true then what
> abt case of pentium 36 bit address lines ---
>
>
> 2)OS 32 /64 bit
>     a)its virtual address space -- what os provides --- to each process --
> which is mapped to physical address space that prcessor provides
>
>   OR
>      b)processor specifies virtual addr space ??
>
>
>
>
> 3)extra ques -- why in case of 32 bit arch -- physical memory RAM
> limitation comes of 4GB ?
>
>
>
> On Fri, Oct 23, 2009 at 4:54 PM, <microbit@virginbroadband.com.au> wrote:
>
>> Hi,
>>
>> On Thu, 22 Oct 2009 23:58:20 -0700, C <a.la.kaarta@gmail.com> wrote:
>> >> Well, IMHO the processor does not decide or even know the size of
>> >> virtual address space.
>> > Ofcourse it does. How else do you think it translates a virtual
>> > address to a physical address? Virtual addresses are simply what the
>> > software 'sees', the processor takes these, translates them into
>> > physical addresses before making any reads / writes to main memory. No
>> > software can use a virtual address space larger than what the
>> > processor specifies.
>> >
>> >> 1) User may run a firmware on the processor that gives a 1-1 mapping
>> >> from virtual to physical (thus making virtual address space equal to
>> >> physical address space).
>> >>
>> > Well, I don't know much about other architectures, so I'll just comment
>> on
>> > x86.
>> > When you switch to 64bit mode, you compulsorily need to have a 4-level
>> > paging table, which translates 64-bit linear addresses (actually a
>> > 48-bit linear address, since the address is subject to the canonical
>> > address requirement) to (upto) 52-bit physical addresses. So
>> > irrespective of what firmware you're running, linear addresses are
>> > actually 64-bit, but physical addresses are not.
>> >
>> > (In fact, physical address space might even be larger than virtual
>> > address space, when we take modes like PAE / PSE into account)
>> >
>> >> 2) Users may be running different OS(s) that give different amount of
>> >> virtual address space to use.
>> > Irrespective of what OS you're using (and whether it switches to the
>> > processor mode that would utilize the 64-bit virtual address space
>> > that the processor provides), the 'internal address bus' (virtual
>> > address space) of the processor is what decides the maximum virtual
>> > address space of any programs that run on it (OS or otherwise).
>> >
>> > C
>> >
>> > On Thu, Oct 22, 2009 at 11:23 PM, Rajat Jain <Rajat.Jain@infogain.com>
>> > wrote:
>> >>
>> >> Hi,
>> >>
>> >> ----Original Message----
>> >> From: C [mailto:a.la.kaarta@gmail.com]
>> >> Sent: Friday, October 23, 2009 10:51 AM
>> >> To: Rajat Jain
>> >> Cc: simonyanix@gmail.com; Siddu; Rick Brown; kernelnewbies;
>> >> linux-newbie@vger.kernel.org
>> >> Subject: Re: 32 bit processors / 64 bit processors
>> >>
>> >>> PAE (Physical Address Extension) expands the _physical_ address space
>> >>> to > 32 bits, but the _virtual_ address space stays the same at
>> >>> 32-bits, and the virtual address size is what I mentioned as qualifies
>> >>> the processor as 32-bit or 64-bit.
>> >>
>> >> Well, IMHO the processor does not decide or even know the size of
>> >> virtual address space.
>> > Ofcourse it does. How else do you think it translates a virtual
>> > address to a physical address?
>> >
>> > It purely depends on the software (OS in this
>> >> case) that runs on it. Consider all of the following is possible on the
>> >> same 32 bit processor:
>> >>
>> >> 1) User may run a firmware on the processor that gives a 1-1 mapping
>> >> from virtual to physical (thus making virtual address space equal to
>> >> physical address space).
>> >>
>> >> 2) Users may be running different OS(s) that give different amount of
>> >> virtual address space to use.
>> >>
>> >> What am I missing?
>> >>
>> >> Thanks,
>> >>
>> >> Rajat
>> >>
>> >>
>> >>>
>> >>> 1. Addressable physical memory / physical address size does not decide
>> >>> whether a processor is 32-bit / 64-bit, there is no processor (AFAIK)
>> >>> which can address 64 bits of physical memory. I suppose sizeof(void*)
>> >>> gives you the size of the _virtual_ address, so yes, I suppose that
>> >>> should be 64 bits on a 64-bit processor (and using a 64-bit compiler)
>> >>> 2. Register size does not decide whether a processor is 32-bit /
>> >>> 64-bit.
>> >>>
>> >>> C
>> >>>
>> >>> On Thu, Oct 22, 2009 at 10:05 PM, Rajat Jain
>> >>> <Rajat.Jain@infogain.com> wrote:
>> >>>>
>> >>>> Hi,
>> >>>>
>> >>>>> 1. The size of the processor's internal address bus (virtual address
>> >>>>> space) is what qualifies it as a 32-bit / 64-bit processor.
>> >>>>
>> >>>> Well, in that sense, isn't Pentium a "36-bit" processor (since it
>> >>>> gives the option of PAE to use 64 GB of memory - it must be having
>> >>>> atleast 36 address lines)?
>> >>>>
>> >>>> On this topic and in this thread, we have had following responses to
>> >>>> the question on what is called a 32-bit or 64-bit processor:
>> >>>>
>> >>>> 1) Addressable Physical memory (=sizeof(void*))
>> >>>> 2) Register Size (=instruction size)
>> >>>>
>> >>>> Are the above two independent of each other? If yes, then how do we
>> >>>> deine a processor as 32-bit / 64-bit?
>> >>>>
>> >>>> Thanks,
>> >>>>
>> >>>> Rajat
>> >>
>> >
>> > --
>> > To unsubscribe from this list: send an email with
>> > "unsubscribe kernelnewbies" to ecartis@nl.linux.org
>> > Please read the FAQ at http://kernelnewbies.org/FAQ
>>
>>
>>
>> >> Well, IMHO the processor does not decide or even know the size of
>> >> virtual address space.
>>
>> > Ofcourse it does. How else do you think it translates a virtual
>>
>> No it doesn't... the previous poster is right. (unless we excessively get
>> into semantics....)
>> That is up to the MMU, it has absolutely nothing to do with the CPU.
>> And FWIW, x86 is hardly a reference... x86, along with 8051 would have to
>> be the biggest abonimation
>> to the concept of elegant processing......
>>
>> -- Kris
>>
>>
>> --
>> To unsubscribe from this list: send an email with
>> "unsubscribe kernelnewbies" to ecartis@nl.linux.org
>> Please read the FAQ at http://kernelnewbies.org/FAQ
>>
>>
>
>
> --
> Thanks & Regards
> Nidhi Mittal Hada
>

[-- Attachment #2: Type: text/html, Size: 10067 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* RE: 32 bit processors / 64 bit processors
  2009-11-09 18:27                   ` Pulkit Goel
@ 2009-11-10  2:09                     ` Microbit_P43000
  0 siblings, 0 replies; 18+ messages in thread
From: Microbit_P43000 @ 2009-11-10  2:09 UTC (permalink / raw)
  To: 'Pulkit Goel', 'nidhi mittal hada'
  Cc: 'C', simonyanix, 'Siddu', 'Rick Brown',
	'kernelnewbies', linux-newbie

Hi,

What you posted below might hold true for the specific case of Intel CPUs. But that's
about it....
The Intel "assumptions" fail on many other CPUs....
Perhaps agree to disagree ? If you only code on x86 PCs, then your assertion just
*happens* to be correct.... 

Conversely - a square is a rectangle, but rectangles are not *necessarily* a square !
We can go round and round I guess....

Best Regards,
Kris 
________________________________________
From: Pulkit Goel [mailto:vipulkit.goel@gmail.com] 
Sent: Tuesday, 10 November 2009 5:27 AM
To: nidhi mittal hada
Cc: microbit@virginbroadband.com.au; C; simonyanix@gmail.com; Siddu; Rick Brown;
kernelnewbies; linux-newbie@vger.kernel.org
Subject: Re: 32 bit processors / 64 bit processors

Hi,

1) a) Processor 32/64 bit defines by :::  Data bus Size
    b) In Pentium 36 bit Adddress, Basically a PAE, Which is Introduced First by Intel to 
handle the Demand of RAM more than    4GB, in Heavy Applications.

2) a) 64OS not Run On 32bit Processor, But 32bit OS run on 64Bit Processor by Downgarding
its Efficiency of Databus By latching only 32 bit data on 64bit bus by Inserting 32'b0* in
MSB of 64Bus...
Processor Generate Logical Address, which is Mapped into Virtual which in turn Mapped into
Physical., At low Level For LOW MEMORY Logical Address Directly Mapped to Virtual
Address,  OS Provides Virtual Address space to a Process,

3) If Address Bus Size is 32Bit then Possible no. of Permutation that of Address Formed
are 2^32 = 4.098 GB.


Reagrds:
Pulkit Goel
mail: vipulkit.goel@gmail.com
On Fri, Nov 6, 2009 at 5:53 PM, nidhi mittal hada <nidhimittal19@gmail.com> wrote:
Can someone come and please clarify -- it finally 
above chain of mail raises more confusion as conflict stays till end.

1)processor 32/64 bit -- 
    a)data it can process at one instance --- register size --- data bus size -- 
OR
    b)internal address bus size of processor ---  if that is true then what abt case of
pentium 36 bit address lines --- 


2)OS 32 /64 bit
    a)its virtual address space -- what os provides --- to each process -- which is mapped
to physical address space that prcessor provides 
                                    
  OR
     b)processor specifies virtual addr space ??




3)extra ques -- why in case of 32 bit arch -- physical memory RAM limitation comes of 4GB
?


On Fri, Oct 23, 2009 at 4:54 PM, <microbit@virginbroadband.com.au> wrote:
Hi,

On Thu, 22 Oct 2009 23:58:20 -0700, C <a.la.kaarta@gmail.com> wrote:
>> Well, IMHO the processor does not decide or even know the size of
>> virtual address space.
> Ofcourse it does. How else do you think it translates a virtual
> address to a physical address? Virtual addresses are simply what the
> software 'sees', the processor takes these, translates them into
> physical addresses before making any reads / writes to main memory. No
> software can use a virtual address space larger than what the
> processor specifies.
>
>> 1) User may run a firmware on the processor that gives a 1-1 mapping
>> from virtual to physical (thus making virtual address space equal to
>> physical address space).
>>
> Well, I don't know much about other architectures, so I'll just comment
on
> x86.
> When you switch to 64bit mode, you compulsorily need to have a 4-level
> paging table, which translates 64-bit linear addresses (actually a
> 48-bit linear address, since the address is subject to the canonical
> address requirement) to (upto) 52-bit physical addresses. So
> irrespective of what firmware you're running, linear addresses are
> actually 64-bit, but physical addresses are not.
>
> (In fact, physical address space might even be larger than virtual
> address space, when we take modes like PAE / PSE into account)
>
>> 2) Users may be running different OS(s) that give different amount of
>> virtual address space to use.
> Irrespective of what OS you're using (and whether it switches to the
> processor mode that would utilize the 64-bit virtual address space
> that the processor provides), the 'internal address bus' (virtual
> address space) of the processor is what decides the maximum virtual
> address space of any programs that run on it (OS or otherwise).
>
> C
>
> On Thu, Oct 22, 2009 at 11:23 PM, Rajat Jain <Rajat.Jain@infogain.com>
> wrote:
>>
>> Hi,
>>
>> ----Original Message----
>> From: C [mailto:a.la.kaarta@gmail.com]
>> Sent: Friday, October 23, 2009 10:51 AM
>> To: Rajat Jain
>> Cc: simonyanix@gmail.com; Siddu; Rick Brown; kernelnewbies;
>> linux-newbie@vger.kernel.org
>> Subject: Re: 32 bit processors / 64 bit processors
>>
>>> PAE (Physical Address Extension) expands the _physical_ address space
>>> to > 32 bits, but the _virtual_ address space stays the same at
>>> 32-bits, and the virtual address size is what I mentioned as qualifies
>>> the processor as 32-bit or 64-bit.
>>
>> Well, IMHO the processor does not decide or even know the size of
>> virtual address space.
> Ofcourse it does. How else do you think it translates a virtual
> address to a physical address?
>
> It purely depends on the software (OS in this
>> case) that runs on it. Consider all of the following is possible on the
>> same 32 bit processor:
>>
>> 1) User may run a firmware on the processor that gives a 1-1 mapping
>> from virtual to physical (thus making virtual address space equal to
>> physical address space).
>>
>> 2) Users may be running different OS(s) that give different amount of
>> virtual address space to use.
>>
>> What am I missing?
>>
>> Thanks,
>>
>> Rajat
>>
>>
>>>
>>> 1. Addressable physical memory / physical address size does not decide
>>> whether a processor is 32-bit / 64-bit, there is no processor (AFAIK)
>>> which can address 64 bits of physical memory. I suppose sizeof(void*)
>>> gives you the size of the _virtual_ address, so yes, I suppose that
>>> should be 64 bits on a 64-bit processor (and using a 64-bit compiler)
>>> 2. Register size does not decide whether a processor is 32-bit /
>>> 64-bit.
>>>
>>> C
>>>
>>> On Thu, Oct 22, 2009 at 10:05 PM, Rajat Jain
>>> <Rajat.Jain@infogain.com> wrote:
>>>>
>>>> Hi,
>>>>
>>>>> 1. The size of the processor's internal address bus (virtual address
>>>>> space) is what qualifies it as a 32-bit / 64-bit processor.
>>>>
>>>> Well, in that sense, isn't Pentium a "36-bit" processor (since it
>>>> gives the option of PAE to use 64 GB of memory - it must be having
>>>> atleast 36 address lines)?
>>>>
>>>> On this topic and in this thread, we have had following responses to
>>>> the question on what is called a 32-bit or 64-bit processor:
>>>>
>>>> 1) Addressable Physical memory (=sizeof(void*))
>>>> 2) Register Size (=instruction size)
>>>>
>>>> Are the above two independent of each other? If yes, then how do we
>>>> deine a processor as 32-bit / 64-bit?
>>>>
>>>> Thanks,
>>>>
>>>> Rajat
>>
>
> --
> To unsubscribe from this list: send an email with
> "unsubscribe kernelnewbies" to ecartis@nl.linux.org
> Please read the FAQ at http://kernelnewbies.org/FAQ



>> Well, IMHO the processor does not decide or even know the size of
>> virtual address space.

> Ofcourse it does. How else do you think it translates a virtual
No it doesn't... the previous poster is right. (unless we excessively get
into semantics....)
That is up to the MMU, it has absolutely nothing to do with the CPU.
And FWIW, x86 is hardly a reference... x86, along with 8051 would have to
be the biggest abonimation
to the concept of elegant processing......

-- Kris


--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@nl.linux.org
Please read the FAQ at http://kernelnewbies.org/FAQ



-- 
Thanks & Regards 
Nidhi Mittal Hada



--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@nl.linux.org
Please read the FAQ at http://kernelnewbies.org/FAQ


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: 32 bit processors / 64 bit processors
  2009-10-21  3:02 32 bit processors / 64 bit processors Rick Brown
  2009-10-21  5:39 ` Siddu
  2009-11-07 10:20 ` hmthalib
@ 2009-11-13  3:37 ` Drew
  2 siblings, 0 replies; 18+ messages in thread
From: Drew @ 2009-11-13  3:37 UTC (permalink / raw)
  To: Rick Brown; +Cc: kernelnewbies, linux-newbie

> Firstly, I'm trying to understand what exactly characterizes a
> procesor or an operating system as 32bit / 64 bit. I've read that it
> means the "native word size" of a machine. But what exactly is that?
> Register size? Address bus size? Anything else?

I've always used the virtual address space as the basis of whether a
chip is 32bit or 64bit. On the x86 PAE throws a wrinkle into that but
the system is IMO still 32bit.

> Secondly, I'm trying to understand what exactly does a sizeof(int)
> depend on when we say it is "platform specific". Is it dependent of
> compiler being 32bit / 64 bit? Or the OS being 32bit / 64 bit? Or the
> processor being 32 / 64 bit?

Can't answer that one as I don't write a lot of code outside of PHP/Perl.

> Lastly, How are "sizes" of compiler / OS / processor inter related?
> Here is my understanding. A 32 bit processor can only be running a 32
> bit OS. A 64 bit processor may run a 32 or a 64 bit OS. A 32 bit
> compiler generates code only to be run on a 32 bit OS; ditto for 64
> bit. Is this right?

Yes and no. A 32bit OS can only run 32bit apps. On 64bit it depends.
The x86-64/amd64 running a 64bit OS can run 64 or 32bit apps with the
right libraries. The IA64(Itanium) does not have an option to run
32bit apps. Sparc is whole another ballgame altogether as they have
32bit, 64bit, and 64/32bit.


-- 
Drew

"Nothing in life is to be feared. It is only to be understood."
--Marie Curie
--
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2009-11-13  3:37 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-10-21  3:02 32 bit processors / 64 bit processors Rick Brown
2009-10-21  5:39 ` Siddu
2009-10-21  6:02   ` 益牙
2009-10-21  6:36     ` Ryan Moore
2009-10-21  6:52     ` C
2009-10-23  5:05       ` Rajat Jain
2009-10-23  5:20         ` C
2009-10-23  6:23           ` Rajat Jain
2009-10-23  6:58             ` C
     [not found]               ` <eaf9549291394c8b53f26fba12024a86@virginbroadband.com.au>
     [not found]                 ` <b14bc42a0911060423g324caedw3992061796125ea@mail.gmail.com>
2009-11-07  4:41                   ` vkm
2009-11-07 10:10                   ` hmthalib
2009-11-07 10:30                     ` vkm
2009-11-07 10:49                       ` hmthalib
2009-11-09 18:27                   ` Pulkit Goel
2009-11-10  2:09                     ` Microbit_P43000
2009-10-21  7:43   ` askb
2009-11-07 10:20 ` hmthalib
2009-11-13  3:37 ` Drew

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.