Re: difference b/w 32-bit vs. 64-bit kernel

Matti Aarnio (matti.aarnio@sonera.fi)
Mon, 13 Sep 1999 17:17:13 +0300


On Mon, Sep 13, 1999 at 06:55:57PM +0530, Sandeep Kumar wrote:
> hi all,
>
> i know this question is too elementary for the list, but i am posting it here
> hoping to get some doubts clarified.
>
> can anyone elaborately tell the differences b/w
>
> 1. 32-bit OS vs. 64-bit OS
> 2. 32-bit Kernel vs. 64-bit kernel

64-bit kernel can DIRECTLY address entire 64-bit address
range (and the processor can do 64-bit addresses).

Processor isn't (with Linux kernels) considered 64-bit one,
unless it can do addressing of large address spaces without
resorting to tricks like (external) memory mapping hardware
giving enlarged physical memory address spaces thru mapping
windows.

In case of dual-mode systems the user-spaces are often only
32-bit (sometimes also 64-bit), while the kernel is definitely
64-bit. (As is the case with Ultra-SPARC systems.)

With Alphas the userspaces has always been 64-bit, and now
recently there has been some push to create functional 32-bit
userspace.

> is it necessary to have 64-bit I/O, 64-bit addressing etc. (i.e. all
> the 64-bit things to be there for an OS to be called 64-bit?).

64-bit addressing is required.
PCI-bus (addresses of the I/O) is usually 32-bit only, which gives
weird problems when trying to address thru it to system main memory
(or to other PCI busses.)

Often e.g. Floating-point things are done in 64 or 80 or 96 bit
resolution, and in such cases, would you want to call such processor
e.g. 80-bit ?

Consider 8087 floating-point co-processor used with 8088 processor.
A weird system with segmented 64 kB memory blocks with segments
providing address space enlargement to "whopping" 1 MB. Yet the
system ran with 8-bit data bus, and had 16 bit arithmetic registers.
It was a precursor system for 80386, and much latter, Pentiums.
What would that have been ?
- 20 bit (complete segmented addresses) ?
- 16 bit (addressing mode registers) ?
- 80-bit (floating-point registers in the coprocessor) ?
(Back then it was referred as '16 bit' per integer arithmetics it
was able to do in the registers.)
(At the time Motorola had 68000, which was referred as 16/32-bit,
which had 24 bit external address bus, but 16 bit data bus, and
32-bit registers..)

> these are quite confusing terms, hoping that experts can help me out here.
> regards
> -sandeep-
> --------------------------------------------------------------------------
> Sandeep Kumar Deptt. of Computer Science
> san@cs.unipune.ernet.in Pune University, Ganeshkhind
> san@asterix.cs.unipune.ernet.in Pune (INDIA) --- 411007

/Matti Aarnio <matti.aarnio@sonera.fi>

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/