Recent Changes - Search:


Code:


Social:


My journals will take the place of a blog. If you go to the Journal page there is an RSS feed to subscribe with.

(:blogcal group=Journal:)


Sites I take responsibility for

West Volusia, Florida

Documents

Technical

General

Me

Living

Places I frequent

Hobbies

Humor

Items for sale:


Clipboard

edit SideBar

Intel 80x86 architecture 32 bit vs 64 bit

Include our styles below Infobox - invoke as >>infobox<< ... >><<

Codebox: - invoke as >>codebox<< ... >><<

warnbox: - invoke as >>codebox<< ... >><<

editingbox: - invoke as >>codebox<< ... >><<

noticebox: - invoke as >>codebox<< ... >><<

Page bread crumbs: Main - MyPublicTechnicalNotes - Hardware - Computer - Architecture - Intel - 80x86 - 32bitVs64bit

Pages by tags: (:listtags:)
Subscribe to this wiki: RSS Feed RSS or subscribe to this page for changes: RSS Feed RSS
496 articles have been published so far. Recent changes
(:addThis btn="custom":)

2016-03-22: This site is being moved to my main site at https://kevininscoe.com/wiki as part of a consolidation to one domain.



There are many names used.  Here's a breakdown ...

"32-bit" PC
- Generically known as "x86"
- Intel calls it the "IA-32" programming model.
- The base Instruction Set Architecture (ISA) is "i386"
- Advanced ISAs are "i486" and "i686" ("i586" is to be avoided)
- It allows 32-bit (4GiB) addressing
- "i686" has Processor Address Extensions (PAE) for 36-bit (64GiB)

"64-bit" PC
- Generically known as "x86-64" (and the name by AMD)
- Intel calls it the "IA-32e" programming model (_not_ IA-64**)
- The base ISA is AMD's "x86-64", but also referred as "AMD64"
- Intel's ISA is "EM64T", which is a slight subset of AMD64
- It allows 48-bit (256TiB) addressing, for 32-bit i486 compatibility
- It uses 52-bit PAE registers, for i686 36-bit PAE compatibility

[**NOTE:  IA-64 is something entirely different than IA-32e. ]

Because x86 lacks the addressing/registers of x86-64, instructions
for AMD64/EM64T ISA will not execute on i386/i486/i686 ISA.  So
you won't even be able to boot the kernel.

Going the other way, things are far trickier.  Even if you run
a "64-bit" OS, it doesn't mean you can run any "32-bit" program.
While the 48-bit addressing (called "Long Mode", the only mode
supported in today's AMD64/EM64T processors for x86-64) was
designed so 32-bit i386/i486 programs could run, a program built
for the "Long Mode" model cannot call a 32-bit library, and vice-
versa.

Hence why most desktop users just stick with the "x86" version
of Linux, even on a "x86-64" capable processor.

For more on those technical details, I made this blog post here:

http://thebs413.blogspot.com/2005/10/what-is-x86-64-long-mode-memory-model.html

Just curious, as distros do vary in their x86-64 approach.
All have issues, most are unavoidable although can be worked around.
It's typically not what most users are willing to put up with though.

The only alternative is to do what Microsoft does.
It solves the compatibility issues, but introduces others.
I.e., all of Microsoft's x64 releases are largely 32-bit, solving the
greater libaray issues, at the expense of far worse performance.

As I mentioned in my post, unless you have 8GB in a desktop,
x86-64 is more of a server consideration at this point.
That's where native x86-64 really matters most, that and workstations
(where 8GB or more have been commonplace for years).


Kevin's Public Wiki maintained and created by Kevin P. Inscoe is licensed under a
Creative Commons Attribution 3.0 United States License.

Back to my web site - http://kevininscoe.com

Edit - History - Print - Recent Changes - Search
Page last modified on November 26, 2009, at 01:27 PM EST