Recent Posts

Tags

News

  • A blog about Microsoft Windows development, focused on kernel-mode driver development, the Windows DDK, WDK, and related tools.

    To elaborate on the copyright notice at the bottom: all content produced by me on this site is copyright and licensed as follows:

    <!-- Creative Commons License --> Creative Commons License
    This work is licensed under a Creative Commons License. <!-- /Creative Commons License --> <!-- <rdf:RDF xmlns="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <Work rdf:about=""> <dc:type rdf:resource="http://purl.org/dc/dcmitype/Text" /> <license rdf:resource="http://creativecommons.org/licenses/by-nc/2.0/" /> </Work> <License rdf:about="http://creativecommons.org/licenses/by-nc/2.0/"> <permits rdf:resource="http://web.resource.org/cc/Reproduction" /> <permits rdf:resource="http://web.resource.org/cc/Distribution" /> <requires rdf:resource="http://web.resource.org/cc/Notice" /> <requires rdf:resource="http://web.resource.org/cc/Attribution" /> <prohibits rdf:resource="http://web.resource.org/cc/CommercialUse" /> <permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" /> </License> </rdf:RDF> -->

    Although I work for Positive Networks, this work is my own and is not connected with my employer in any way.

    <!-- technorati again --> <script type="text/javascript" src="http://embed.technorati.com/embed/8xz8dihr.js"> </script>

Community

Email Notifications

Other Blogs

General

Technical Resources

About Me

Archives

Kernel Mustard

Reflections on Windows System Programming
Steve Dispensa, MVP - Windows DDK

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 Comment

(required) 

(required) 

(optional)

(required)