Double, Double, Toil And Trouble

Note to self… write these posts in a decent authoring tool and *then* put
them online. A reboot just ate my first attempt at an AMD64 article, with no
recovery file. Live and learn. Now you’re stuck with the 3:00AM version,
stream-of-consciousness stizz. Enjoy 😉

Last year at Driver DevCon, the folks from AMD were out in force, armed with a
dizzying array of goodies emblazoned with their logo. What were they pushing,
you ask? The AMD64 architecture, of course, and well worth it too. AMD64 is a
64-bit extension of the x86 CPU architecture (from a programming interface
standpoint, anyway; I’m sure they’re nothing alike in the core). For
those who haven’t been keeping score at home, Intel introduced the IA-64
architecture a couple of years ago with the Itanium chip. Itanium is a cool
hunk of silicon, but it’s fundamentally incompatible with x86. AMD saw their
chance to fill a big need that Intel didn’t touch, and boy, did they do a good
job. It’s one year after DevCon, and it’s currently possible to head down to
the local computer parts store and pick up an Athlon 64 board/chip for cheap
and drop it into an otherwise-x86 system. Opteron-based servers are gaining
huge market share compared to Itanium sales, and (as attentive Kernel Mustard
readers know) I can say from first-hand knowledge how cool my dual-Opteron test
box is. When I first started looking into 64-bit chips, I was confused about a
few things. Here are some of the points I picked up along the way, so that you
might not have to duplicate my quest for enlightenment.

So, what is AMD64? In a nutshell*, this is the name of AMD’s new x86-based
64-bit CPU architecture. It was designed from the ground up to be a totally
new internal architecture, but with a mandate to change as little as possible
about the programming interface. What changes they did make are completely
obvious and intuitive if you have any understanding of x86 CPU history – the
registers have been extended from 32-bit (i.e. eax) to 64-bit (“rax”; I guess
“r” stands for ReallyExtended or something :P), and a new opcode prefix has
been added that signals the chip that a 64-bit operand is on the way. Other
than that, plus a few new general-purpose registers and some other details that
Really Don’t Matter, it looks and feels just like an x86. The long`addresses
look a little weird in the debugger, but you get used to them eventually. IDA
already disassembles AMD64 binaries perfectly.

One item up for discussion at the moment is what the final name of the
architecture will be in the Geek World. AMD is partial to AMD64, of course,
and frankly, I agree – Intel got to have IA-32 and IA-64, so I don’t see why it
would hurt to have an architecture named after AMD. However, Microsoft seems
to be backing away from AMD64, and (if you can believe MSDN Subscriber
Downloads), looks to favor the shorter “x64” name. Another name that gets
thrown around occasionally is “x86-64”. The reason this matters at all is that
Intel announced (nine months ago!) that it will also produce an x86-based
64-bit chip. Details are still sketchy, but as usual, ArsTechnica has tons of good information.
My money is on “x64” winning out eventually, as it sounds the most like “x86”.
That won’t stop me from referring to it as AMD64 for now, though. I’m a slow
learner.

So why go to AMD64? Well, for starters, it’s really fast today. Forget this
emulation crap – these chips run native x86/win32 apps today, and fast.
This makes the upgrade path seamless, and at the prices these chips are selling
for, it’s now officially foolish to invest in additional 32-bit chips. Add to
this the fact that you get all of the benefits of other 64-bit architectures,
and you have a killer proposition.

There are two main variants of AMD64 chips currently in production, both of
which are made by AMD. They are:

  • Athlon 64 – This is the main consumer chip that AMD is marketing.
    Variants of this chip run on everything from notebooks to low-end home boxes to
    business-class workstations. These chips seem to be labeled with AMD’s
    traditional performance index (Athlon-64 3700, for example). They have
    versions of the chip marketed to the Celeron crowd, and even a mobile processor
    based on the 64-bit core. Not even Apple, my favorite hardware company, can
    manage that with a 64-bit G5 yet, after a year of shipping G5 workstations.

  • Opteron – This is the high-end chip, targeted at servers and
    workstations. It uses the same core and same programming interface as the
    Athlon chips, but includes higher-end features like lots of cache and the
    ability to run multiprocessor setups. The Opteron chips connect to one another
    on a motherboard via AMD’s proprietary HyperTransport bus. As I understand it,
    this bus is designed to work in conjunction with the Opterons’ built-in memory
    controllers to reduce memory bus contention. Opterons are numbered differently,
    with the base Opteron 140 at the low end. The 142, 144, 146, and so on, are
    faster versions of the 140, but all 1XX chips are designed for uniprocessor
    implementations only. The 240 series is identical to the 140, but can be run
    with a maximum of two CPUs on a motherboard. The numbering scheme continues on
    upward as speed and maximum scalability increase.

More on the AMD64 architecture can be found at
WHDC, AMD,
and of course at ArsTechnica. There is also
a previous Kernel Mustard post about my adventures with my dual Opteron 240, below.

One parting shot – There are a couple of blogs worth pointing out, in case
you’re not reading them yet. One is The
Old New Thing
by Raymond Chen, which covers a wide variety of topics that I almost
always find interesting (well, at least until he starts pontificating about GUIs!).
Another is what promises to be an excellent new
blog
by Thomas Divine. Thomas spends a lot of time dolling out free advice
on the PCAUSA NDIS discussion list (which I also post to on occasion), and is
the leading non-Microsoft source for network driver information.

Now, back to beating my head against the Hell Of Filesystem Locks. See you
tomorrow.


* It is worth pointing out that this is a lie; I have never really been able to say anything in a nutshell.

Leave a Reply

Your email address will not be published. Required fields are marked *