Windows... 32-bit versus 64-bit?

  • Thread starter Thread starter John Doe
  • Start date Start date
J

John Doe

Is there any piece of modern hardware that would not work (out of
the box using the included drivers) with my 32-bit Windows XP?

How about software?

I am wondering if "64-bit Windows" is just technobabble marketing
speak.

Thanks.
 
John said:
Is there any piece of modern hardware that would not work (out of
the box using the included drivers) with my 32-bit Windows XP?

How about software?

I am wondering if "64-bit Windows" is just technobabble marketing
speak.

Thanks.

To use an unfortunate analogy, the "dimensions" of computers are
like the plumbing in your basement. It would be simplistic to say
all the plumbing in the basement was 1/2" or 3" drain pipe. There are
all sorts of plumbing functions down there, each with their own dimensions.

The "bit-ness" of Windows, addresses the processor instruction set.
If you run a 64 bit Windows OS, a lot of the OS will be native
and the instructions used will have exactly 64 bits. But some parts,
will continue to be 32 bit. The OS doesn't run in "pure" 64 bit mode,
and both 64 bit instructions and 32 bit instructions can be accepted.
At program launch, there are two Program File folders, where
32 bit and 64 bit executables can be separately stored. An example
of this, would be Internet Explorer web browser, for which the user
has options to launch either a 32 bit edition or a 64 bit edition.
(Why there are two versions, is a puzzle to me, and perhaps it
has to do with plugin compatibility issues.)

Now, what does 64 bit enable. It enables an extended addressing of
memory. If the machine has plenty of memory, a single program can
get to use all the memory on the computer, if the program is a
"pure" 64 bit application and the OS is also 64 bit. So if you
installed 16GB of memory, fired up Photoshop and worked on a
poster the size of a football field, then a pure 64-bit copy
of Photoshop could use all the memory. If I had an older
version of Photoshop, I might be limited to using no more than
2GB or so, even on the 16GB machine.

http://msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx

If you run a 32 bit executable in a 64 bit system, there is a limit
to how much memory the 32 bit program can use. Perhaps I'd have to
run four or eight graphics editing programs, each working on a
smaller poster project, before all the system memory would be in use.

*******

It's true that hardware can have 32 bit and 64 bit aspects to it.
64 bit wide PCI cards existed, back when there was nothing but
a 32 bit OS available. The 64 bit width in that case, doubles (or more)
the data transfer rate. That has nothing to do with instruction set
on the processor. It's more like SATA I versus SATA II versus SATA III.

Addressing on PCI cards (on the PCI bus), can be 32 bit or 64 bit.
Some PCI cards accept "double address cycles" for example, which
means addresses larger than 32 bits can be handled. If all the "plumbing"
next to the card is similarly endowed, then I presume the card can reach
into more places, or an application can address a larger range of stuff
inside the card. The "double address cycle" thing means, an up to 64 bit
wide address, is transferred as two 32 bit halves, then recombined
in the silicon before being used.

In the past, some OSes have artificially kept add-in cards and
peripheral chips, below the 4GB mark. That may include the allocation
of buffers for DMA, or the base address address (BAR) that the card uses.
The PCI cards, might never get to see or to use, a double address cycle.

If a 64 bit system has an IOMMU, it makes it possible to deal with
hardware (PCI cards and their drivers) that don't deal well with
addresses above 4GB. If a computer doesn't have an IOMMU, then
"bounce buffers" are used by the OS, which involves memory to memory
copies to solve perceived problems. The IOMMU is a seamless way to handle old
hardware. If your 64 bit OS is forced to use bounce buffers, there
could be an extra (small) compute load if your peripheral has a high I/O rate.

Summary:

Question: Why do we use 64 bit OSes ?

Answer: As of today, it allows the usage of the greater than 4GB of
memory we bought for our computer. Other aspects of 64-bit-ness
are currently noise, just like the noise in the answer above.
All the technical details have been handled for us.
Plug and Play...

*******

If you use pure 64 bit executables on your new 64 bit OS, you have
the possibility of using all the memory for a single program. This
can have advantages for large computing problems, which need a lot
of memory. An example of such a program, is a program used for
logic design, synthesis and simulation. Back when only smaller
systems were available, max hardware configs were being used for
such work (stuffing 4GB memory in the box, before big DIMMs
were popular). And the PC memory architecture means such programs
run like molasses in winter. While the quantity of memory has
grown, and the burst transfer rate with it, the number of
memory transactions you can do randomly per second, hasn't really
grown along with it. Logic simulation has a random access pattern to
it, which PCs hate. You can have your 16GB of memory now (so your
whole compute problem fits in memory), but it still takes weeks
for your simulation to complete. Many many cycles on the processor
are wasted, as it waits for blocking memory calls to come back.

When a program does sequential memory accesses, you get good usage
from the memory. It looks like this. Nice, close to back to back
bursts. Programmers are encouraged to write programs, with this
characteristic. The computer looks heroic when a program does
this.

-----------XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX-------

When the problem your computer is solving, makes random accesses, the
pattern starts to look like this. The CPU is starved for stuff
to do, and the computed bandwidth for the memory looks terrible.

-----------X--------X--------X--------X--------------

Not all aspects of computing have improved at the same rate,
as you know from the state of magnetic disk drives. Where is our
parallel read/write disk head ?

*******

There is one other area, where 32 bit and 64 bit makes a difference.

I was investigating the math behind finding Mersenne Primes (as
captured in the Prime95 program).

Instead of using Prime95, you can run your own code. I found a
program to do this, and looked at improving it. (It's a short
program, using a naive approach, versus the tons of code and
careful hand optimization and usage of assembler code as found
in Prime95.) I didn't even come close to matching Prime95.

First, I compiled with a 32 bit library for big numbers. When you
use such a library, it allows arbitrary precision arithmetic. In
this case, there might be 40 million digits in the numbers being
manipulated. The library allows you to do things like add two
40 million digit numbers together.

When I recompiled and set if up to use a 64 bit version of the
same library, the program ran 65 percent faster than the 32 bit.
Which is a pretty significant improvement, but not the factor
of thousands I was looking for (I was trying to see how hard
it would be, to do better than Prime95).

Regular applications, don't see a 65% improvement. In this case,
64 bit arithmetic means it takes fewer arithmetic operations to
work with the 40 million digit numbers. Regular programs don't
have such a dependence on data width when they run. If you're
writing a calendar program, and counting the days in a month,
a 32 bit container for the counting works about the same
as a 64 bit one, with no additional performance to be expected
in the calendar program.

Some 64 bit programs run 10% faster, and some run 10% slower.
So you would not go into the acquisition of a 64 bit OS, with
the understanding it'll double the speed the program runs at.
The improvement is quite variable. And may even be dependent
on the laziness of the programmer (no optimization, just a
recompile).

HTH,
Paul
 
Is there any piece of modern hardware that would not work (out of
the box using the included drivers) with my 32-bit Windows XP?
How about software?
I am wondering if "64-bit Windows" is just technobabble marketing
speak.

If you bought the box version of Window$ 7, it came with both a 32-bit
and a 64-bit DVD.

--
@~@ You have the right to remain silence.
/ v \ Simplicity is Beauty! May the Force and farces be with you!
/( _ )\ (x86_64 Ubuntu 9.10) Linux 2.6.39.1
^ ^ 19:01:01 up 4 days 3:10 0 users load average: 1.16 1.08 1.08
ä¸å€Ÿè²¸! ä¸è©é¨™! ä¸æ´äº¤! ä¸æ‰“交! ä¸æ‰“劫! ä¸è‡ªæ®º! è«‹è€ƒæ…®ç¶œæ´ (CSSA):
http://www.swd.gov.hk/tc/index/site_pubsvc/page_socsecu/sub_addressesa
 
Is there any piece of modern hardware that would not work (out of
the box using the included drivers) with my 32-bit Windows XP?

How about software?

I am wondering if "64-bit Windows" is just technobabble marketing
speak.

Thanks.

A 64-bit program won't even load on 32-bit windows. *MOST* 64-bit
programs also have 32-bit versions.

I don't think there are any 4gb graphics cards out there *YET* but
such a card couldn't work on 32-bit windows.
 
Loren said:
A 64-bit program won't even load on 32-bit windows. *MOST* 64-bit
programs also have 32-bit versions.

I don't think there are any 4gb graphics cards out there *YET* but
such a card couldn't work on 32-bit windows.

The Asus Mars series, tend to have large amounts of memory.
This one was offered with 4GB of memory installed on the video card,
which will cause grief for 32 bit Windows. Being a limited edition
card, not a lot of these are sold. Sometimes, you can't even tell
if these were offered for sale.

http://www.ubergizmo.com/2009/05/asus-mars-295-limited-edition-video-card/

Paul
 
Timothy said:
Paul said:
[.....]

The "bit-ness" of Windows, addresses the processor instruction set.


At one time, the "bitness" of a computer architecture was
called its "word size" - the number of bits plucked out of memory
on a single fetch and sent to the CPU to interpret. Has that term
become obsolete with recent architectures?

*TimDaniels*

The term "bit-ness" was chosen to align with the "32-bit" and "64-bit"
terms in the original question.

Even word size blurs, as you follow instructions through the processor.
Processors are so complicated now, it is hard to make simple
abstractions of them. You'd have to go, stage by stage, describing
the change in plumbing dimension, and what is going on.

Some more info here, on the ways the processor can be set up to handle
pure or mixed environments. It's a "power of two Zoo", to quote
another technical term :-)

http://www.codeproject.com/KB/system/AMD64_EM64T_architectur/02000000.png

Paul
 
Paul said:
[.....]

The "bit-ness" of Windows, addresses the processor instruction set.


At one time, the "bitness" of a computer architecture was
called its "word size" - the number of bits plucked out of memory
on a single fetch and sent to the CPU to interpret. Has that term
become obsolete with recent architectures?

Overtaken by technology. Memory is a major bottleneck and thus one of
the techniques for speeding systems up is to fetch as many bits as
possible from memory every time you fetch anything. Thus memory
fetches are wider than the CPU word these days.
 
Some 64 bit programs run 10% faster, and some run 10% slower.
So you would not go into the acquisition of a 64 bit OS, with
the understanding it'll double the speed the program runs at.
The improvement is quite variable. And may even be dependent
on the laziness of the programmer (no optimization, just a
recompile).

HTH,
    Paul

Also if there's a 64 bit version of Visual Studio out there, and I
assume there is, you can go higher than the 32 bit maximum int, which
is a significant boast.

RL
 
    There is yet no 64-bit Visual Studio, although there are components
for developing 64-bit apps with 32-bit Visual Studio.

*TimDaniels*

Well that don't make sense, but I'll take your word for it. It's like
saying you can make precision machinery parts from an imprecise
machine--which I've heard is possible, you just have to do a sampling
analysis and pick the most precise of the imprecise lot (since even an
imprecise machine will sometimes randomly make precise parts). Or how
did they build the C++ language from C? Same thing I guess, though
different since we're dealing with 1s and 0s.

RL
 
RayLopez99 said:
Well that don't make sense,
lol
--

















but I'll take your word for it. It's like
saying you can make precision machinery parts from an imprecise
machine--which I've heard is possible, you just have to do a sampling
analysis and pick the most precise of the imprecise lot (since even an
imprecise machine will sometimes randomly make precise parts). Or how
did they build the C++ language from C? Same thing I guess, though
different since we're dealing with 1s and 0s.

RL
 
32-bit Visual Studio doesn't need a 32-bit memory space
to build 64-bit instructions - which are just data.  It just needs
the special components to keep track of things like the app
transferring control or moving data over *large* memory
distances or doing 64-bit arithmetic - all of which can be
simulated with 32 bits.

*TimDaniels*

Yes, that makes sense. But also you have to concede that a 64 bit OS
and a 64 bit Visual Studio version on that OS must have some benefits
(i.e. no need for simulation, and the potential to make errors), aside
from VS - 64 bit being able to address more RAM memory when loaded.

RL
 
The consensus on the 'Net is that there will eventually be a 64-bit
Visual Studio but that there isn't a desperate need for it right now.
Maybe it's waiting for the .NET Framework to build up its 64-bit
classes.

*TimDaniels*

Good point, Libraries that are stable are hard to replace. I'm
amazed at how good the generic List(T) is in MSFT's library--it's
super fast. That probably goes for most of the stuff in the library I
believe.

RL
 
Well that don't make sense, but I'll take your word for it. It's like
saying you can make precision machinery parts from an imprecise
machine--which I've heard is possible, you just have to do a sampling
analysis and pick the most precise of the imprecise lot (since even an
imprecise machine will sometimes randomly make precise parts). Or how
did they build the C++ language from C? Same thing I guess, though
different since we're dealing with 1s and 0s.

It makes perfectly good sense. There isn't really any reason to make
VS itself 64-bit. Nobody's going to write something so big that
32-bit data structures will matter.

There are really only three reasons to go 64-bit: You want more than
2gb of data, 64-bit shell integration or operation with a 64-bit
program.

VS does none of these.
 
Also if there's a 64 bit version of Visual Studio out there, and I
assume there is, you can go higher than the 32 bit maximum int, which
is a significant boast.

It's still only 32-bit but what counts is the runtime, not the
compiler. The assemblies support 64-bit signed and unsigned integers.
 
Yes, that makes sense. But also you have to concede that a 64 bit OS
and a 64 bit Visual Studio version on that OS must have some benefits
(i.e. no need for simulation, and the potential to make errors), aside
from VS - 64 bit being able to address more RAM memory when loaded.

The .net runtime should be 64-bit but there is no reason for VS itself
to be. I'm sure it queries the .net runtime when examining data
structures anyway.
 
In message <[email protected]> someone claiming
to be Loren Pechtel said:
There are really only three reasons to go 64-bit: You want more than
2gb of data,

/LARGEADDRESSAWARE can get you to 4GB on a 32-bit executable, if the
underlying OS is x64 based, so you can avoid 64-bit a bit longer in this
situation.
64-bit shell integration

Or any other DLL integration or plug-in into a x64 environment.
or operation with a 64-bit
program.

The additional CPU registers can come in handy too.

All reasonably minor things, but potentially worth considering.
 
In message <[email protected]> someone claiming


/LARGEADDRESSAWARE can get you to 4GB on a 32-bit executable, if the
underlying OS is x64 based, so you can avoid 64-bit a bit longer in this
situation.


Or any other DLL integration or plug-in into a x64 environment.

Note that these cases are covered in my #3.
 
Back
Top