What the heck is amd64?

A few days ago Windows Live Photo Gallery (WLPG) told me that there was a new codec pack available and suggested that I download it. That should be trivial. And yet, somehow, they managed to make it complicated.

Take a look at this web page screen shot – how many problems do you see in it?

image

The first problem is that it really shouldn’t be asking the user what version of the codec pack they want. There should be a codec pack that just works. Yes, that means the download will be slightly larger, but bandwidth is cheap. It also requires that the .msi creation tool be able to support having both 32-bit and 64-bit installers in one file, but one hopes that a large company like Microsoft could handle that challenge.

The second problem is the naming of the packages. x86 makes some amount of sense, but is more technical than it should be. The real problem is with the amd64 name. That name makes no sense. Yes, AMD originally created the 64-bit extensions to the x86 architecture, and they did a fabulous job, and I am grateful to them for that. But. Still. Nobody outside of Microsoft and AMD calls the x64 architecture ‘amd64’. When most users – even extremely technical users, such as C++ programmers – see an ‘amd64’ installer their immediate reaction is “that’s not the one that I want – I have an Intel processor”. Fail.

The third problem is that the page tells you that there are 32-bit and 64-bit versions available, but it does not tell you how to choose them. Should you choose the one that matches the bitness of your operating system? Or the one that matches the bitness of WLPG? WLPG is a 32-bit program, but I run it on a 64-bit operating system. I guessed that the ‘amd64’ version was what was wanted, and it worked, but I shouldn’t have to guess. This is a problem with almost every one of Microsoft’s pages that has 32-bit and 64-bit versions.

Okay, I have to confess. I sell a shareware fractal program that has 32-bit and 64-bit versions, and I don’t have a unified installer. I’m not sure if the Visual Studio installer projects support mixed-mode installers, and I haven’t tried creating a wrapper. And, in my case it can be interesting for users to install both versions. Both versions will work on 64-bit Windows, and installing them side-by-side lets you see the roughly four times speedup that the 64-bit instruction set can give (when doing high-precision math).

At least I don’t use the phrase ‘amd64’, and I give advice to users as to which version they should install. I’ll give myself two points out of three.

About these ads

About brucedawson

I'm a programmer, working for Google, focusing on optimization and reliability. Nothing's more fun than making code run 10x faster. Unless it's eliminating large numbers of bugs. I also unicycle. And play (ice) hockey. And juggle.
This entry was posted in Computers and Internet, WLPG and tagged . Bookmark the permalink.

9 Responses to What the heck is amd64?

    • brucedawson says:

      Your point is well made. Thanks for commenting ‘Random’.

      I will say that I have seen people be confused by the amd64 label, but clearly the issue is not as straightforward as I thought. I stand by my other points however.

  1. Franklin says:

    “Both versions will work on 64-bit Windows, and installing them side-by-side lets you see the roughly four times speedup that the 64-bit instruction set can give (when doing high-precision math).”

    That’s an impressive speed-up. I’m just curious what processor you saw that on, and if you see this performance increase on earlier generation processors as well? (The only reason I’m wary is because the early chips with SSE didn’t seem to live up to the hype because the SSE registers were loaded so slowly that they often negated any math speedup.)

    • brucedawson says:

      I’ve measured the speedup on a few machines. Mostly Intel processors, but I believe that AMD processors give pretty similar results.

      The 64-bit registers and instructions are first-class citizens and they run at full speed. The 4x speedup is simply because the 64-bit math instructions run at approximately the same speed as the 32-bit math instructions, and each 64×64 multiply instruction replaces four 32×32 multiply instructions. Hence, a 4x speedup. The extra registers help also, which is why the speedup is sometimes greater.

      See the linked article for details, or download both versions and try it yourself.

  2. Z.T. says:

    “Nobody outside of Microsoft and AMD calls the x64 architecture ‘amd64’.” – completely false. Everybody calls it amd64. Especially because Intel changed its own name for this architecture three times.

    A smarter installer that detects the OS arch and downloads only the right package is of course a good idea. That is why good systems have native package managers that resolve dependencies and handle arch and multiarch support.

  3. dc says:

    I’m no cpu expert, but I believe that these sse problems could be mitigated by clever uses of the prefetch ops. Amd assembler optimisation docs still recommend to use these instructions when possible, iirc.
    About the main topic, indeed, as someone else pointed it out, they should have done the installer to detect the cpu arch automatically.

  4. billco says:

    My gripe is with their inconsistency. They use too many names for the same thing. Why can’t they pick one of amd64, or x64, or x86-64 (blech), and stick with it ? I’m not running “Windows 7 amd64 Edition”.

    I do think they should merge the two packages. In this particular example, 32-bit apps players can’t use 64-bit codecs, so you often need to install both versions anyway. Another good reason is that, for most software, the executable code is small compared to media files, which are generally shared between 32-bit and 64-bit builds anyway, so why distribute two packages with 90% redundant content ?

    • brucedawson says:

      I agree on all of our points. The properties window for Computer just says “64-bit Operating System” which, as you say, doesn’t correspond well to the MSI options. I’m sure that the amd64 installer includes 32-bit and 64-bit, so having it be a universall installer would be quite cheap.

  5. Milos Tosic says:

    You can make a MSI installer with both 32/64bit versions. Give WiX a try if you haven’t so far. There are a few bits that are still specific to one of the versions, like the selection of Program Files folder (the one wiht (x86) or not, etc.) but overall not too problematic.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s