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 brucedawson

I'm a programmer, working for Google, focusing on optimization and reliability. Nothing's more fun than making code run 10x as fast. Unless it's eliminating large numbers of bugs. I also unicycle. And play (ice) hockey. And sled hockey. And juggle. And worry about whether this blog should have been called randomutf-8. 2010s in review tells more: https://twitter.com/BruceDawson0xB/status/1212101533015298048
This entry was posted in Computers and Internet, WLPG and tagged . Bookmark the permalink.

27 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.

  6. Lyn says:

    I show in the EVENTS LOG the application adm64 and since that time I have had nothing but hardware problems… even system restore is invalidated. Can SOMEONE help? I have noted error code (0x80042302 “Volume Shadow Copy Service component error”) and when I look at computer system it shows “Architecture – amd64”. I am clueless.

  7. Heinz says:

    Are you living under a rock? Everyone all it amd64.

    • brucedawson says:

      Ask your friends and relatives what amd64 is and whether they should get the amd64 or x86 version of the installer MSI. And, by the way, if they choose incorrectly then it won’t work.

      This is not something that consumers should have to worry about.

      • Z says:

        re: “This is not something that consumers should have to worry about.”
        Indeed, you are 100% correct!

        Great article!

    • rr says:

      Everyone in your lab ? Dont be an ass, even though I am technical, even I find it irritating (naming standards which make no sense in today’s world); imagine our non-technical fellow beings!

  8. rr says:

    Nice article. Not only MS & AMD, but now even Google – their new language golang creates a pkg dir with this stupid name ‘windows_amd64’ which is what led me to this site ! Even after a decade I get irritated with java and other downloads named with archaic terminology. Idiots.

  9. Random_AMD64 says:

    AMD64 is fine, as is x64, and x32-64. If you can’t understand they’re the same thing, you may not want to stay in tech. It’s not stupid at all, it’s AMDs invention and they can call it whatever they want. Do you say “car” when it’s a Altima and “car” when it’s a F150? Stating AMD64 also differentiates itself from Intels version that never caught on, and other available processors…where x64 may cause confusion.

    • brucedawson says:

      I am well aware of what the terms mean. It is not at all clear to me, however, why other users of Windows Live Photo Gallery should have to know.

      Users should be able to get updates and extensions without having to be “in tech.” That is all.

  10. LaPingvino says:

    If you read the description at the bottom, it explains that the 64-bit version is the amd64 one. It literally doesn’t expect you to understand the naming scheme and explains it instead. It does make a lot of sense to name it this way though, because it has been the most consistent naming for this platform. To give more context, the original Intel 64-bit system was IA64 aka Titanium, and it DIDN’T have x86 backwards compatibility. AMD invented extending the chip to have x86 backwards compatibility, so it really is the AMD64 technology that Intel decided to also adopt as their original attempt failed. It is generally marketed as 64 bits, but especially as we have ARMv8/ARM64/Aarch64 by now, that is not going to be sufficient to get the right version.

    I think the biggest problem here is not reading the text at the bottom, which explains it in this context. For correctly distinguishing in the industry this is the best option.

    • brucedawson says:

      Let’s assume that our user does, as you suggest, read the text at the bottom and therefore knows that the amd64 file is the 64-bit version. Okay. Now what? How do they know which version they should get? I run 32-bit Windows Live Photo Gallery (WLPG) on a 64-bit operating system, so which version do I need? Serious question: I don’t know. I wouldn’t be surprised if I need both – 64-bit for explorer.exe and 32-bit for WLPG.

      The text at the bottom translates from one cryptic naming scheme (x86 and amd64) to another cryptic naming scheme (32-bit and 64-bit) but then gives no hints as to how a customer should decide which they need.

      My family and friends generally don’t know x86/amd64/32-bit/64-bit and they should not have to. The computing industry needs to do a better job of not asking questions like these.

  11. LaPingvino says:

    I’m from the Netherlands and at the moment I am in the USA. The USA is full of “shouldn’t/doesn’t need to know” while I come from an environment where people are more often expected to know things and otherwise educate each other. I don’t think not asking questions is solving anything significant.

    When you try any of those on a 64-bit system, they both would work. Many of these pages just put an “in case of doubt, use the 32-bit version” message. It doesn’t matter in most cases, and nowadays everything is 64-bit so 32-bit-versions aren’t provided any more. 2012 when you wrote this we were still very much transitioning from 32-bit systems, so honestly it was both necessary and not a weird thing to expect people to know, and picking wrong wouldn’t cause big issues.

    I used to do MS Tech Support second line, and only once it mattered to pick a 64-bit version, because of extended memory range. I think with dealing with big photo collections provided your system supports that much memory etc it can be relevant for this piece of software too, but at that point you would be hanging on the phone with support anyway. And really, nobody dies by facing text they don’t understand at the moment. If anything, it helps to demystify the same thing they will encounter somewhere else later. Shielding people from how things work, be it children and public transport or simple computer users and base requirements for software to run, is more likely to create issues over time than prevent them.

    • brucedawson says:

      Two points:

      1) My parents and neighbors would have no idea which one to pick, and they shouldn’t need to know.
      2) I suspect that you are wrong and that the 32-bit version is what was needed, due to WLPG being a 32-bit process. A 32-bit process cannot load 64-bit DLLs.

      • LaPingvino says:

        This is Windows. Windows 64-bit systems have 32-bit DLLs available for everything. It really doesn’t matter. I used to support this stuff professionally.

  12. LaPingvino says:

    On Linux the situation is VERY different and I would agree with you — but then the system is up with the upgrade system linked to 64-bit. The Windows approach to 64-bit was basically to enable people not to have to bother. Yes you are right, and that is what MS did.

    • brucedawson says:

      “Select 32-bit versus 64-bit” and people should “not have to bother” are opposites. I agree that the second is desirable, but the first is what Microsoft presented in this case.

  13. zero says:

    Far be it from me to defend Microsoft, which I urge everyone who sees this to abandon in favor of open-source alternatives (I use linux, but there are other options). That said, I feel compelled to comment on the architecture naming schema issue. I’m biased by my education, occupation, and personal interests, but I can’t agree with the framing of this particular issue as merely the dereliction of a company’s duty to it’s consumers, nor as an instance of archaic jargon needlessly complicating the user experience. Rather, I see it as an unfortunate byproduct of the current American socioeconomic ethos, and as a failure to adapt our ways of teaching and thinking to the rapid march of technological progress.

    Naming conventions, and the factors that influence adoption of specific terminology, vary wildly among different knowledge domains and discourses. In the technology sector, while there is a continuing shift toward standardization via the creation of various committees, there is little chance that this approach will ever become an effective ontological commitment system. As long as innovation continues to take place within private interest structures, all product designations will remain a matter of branding and marketing, even system components designed for extensive third-party interoperability.

    Indeed, rather than limiting this behavior in the name of cooperation, committees are often just another avenue through which corporate interests compete. The story behind the failure of OSI, and the rise of tcp/ip is a particularly illuminating example of this dynamic. That AMD included its brand in its product, while other companies acted in their own interest by obfuscating that branding, makes perfect sense in this context. That these optimizations come at the expense of the uninformed consumer is not a practical business concern when the consumers in question are themselves determined to remain uninformed.

    Beyond the inconsistent naming decisions (which I assert is largely due to competing economic interests), the other side of the issue is user knowledge. That processor architecture is a generally unfamiliar topic to the layman and arguably even experts of adjacent disciplines is less a symptom of irrelevance than it is an indication of the vastness of the field, overspecialization, and lacking education systems.

    *mounts soap box–>stop here to avoid excessively tangential, opinionated, and speculative statements*

    Computer literacy is and will continue to become an increasingly relevant skill in all occupations and walks of life. Software will become more sophisticated and intuitive, but also capable of more interoperability, autonomy, and customization. Work that primarily involves the operation of individual applications–eventually, nearly all contemporary forms of work–will come to be performed by ensembles of autonomous learning algorithms. The foundational institutions by which modern societies govern and perpetuate themselves will be replaced by more fair, reliable, and efficient digital means. Today’s occupations will gradually transform into the infrastructure that creates, orchestrates and maintains these systems.

    Making the perhaps radically optimistic assumption that such a society will be equitable (in the classic sense of fairness and equality, not m.a.r.x.i.s.m) and meritocratic (as opposed to, say, an oppressive and inefficient shadow oligarchy that maintains its tenuous rule by sowing division), the status, wealth, authority, and effective ‘freedom’ of the individual will essentially be a function of digital fluency and conscientiousness. The fact that we aren’t teaching every child computer science at this point would be shocking to me if I had not personally suffered through the ideological indoctrination camps masquerading as public schools in the US.

    • brucedawson says:

      I think you are correct about the forces behind the choice of the name.

      However, I think that is the less important issue here. At the very least the download page should tell me how to decide which code pack to download. Should it match the bitness of my OS, or the bitness of the program I am using? I still do not know.

      That would be borderline acceptable. But even better would be if there was no choice – just a single download. The extra size (perhaps a 17 MB download?) to make the installer universal is trivial, and the download could then install whatever was needed.

      Computer literacy is important, but knowing the bitness of the codec download package is not important for computer literacy for most users.

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 )

Google photo

You are commenting using your Google 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 )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.