×
all 34 comments

[–]unique_ptr 87 points88 points  (23 children)

While not mentioned in this (great) article because it's not really relevant, I think it's a fun fact that in the near future this entire process will be obsolete when CPUs begin launching with X86S where the CPU resets directly into 64-bit mode.

It's crazy how long that backwards compatibility has been kept alive.

[–]MaleficentFig7578 73 points74 points  (12 children)

intel calls 64-bit mode IA32e. It's crazy how they bend over backwards to avoid saying AMD invented it. It's called AMD64.

64 is just enhanced 32, after all...

[–]nerd4code 45 points46 points  (4 children)

Because they blew their load early by calling Itanium IA-64.

[–]MaleficentFig7578 0 points1 point  (3 children)

They didn't invent it anyway, so they couldn't call it IA64. It's called AMD64. They did invent IA32, so they cheat by calling it IA32-enhanced.

[–]cheezus_crisco 35 points36 points  (2 children)

IA-64 was a real thing though, and it predates AMD64. AMD64 won out because it was backwards compatible and IA-64 wasn't

https://en.wikipedia.org/wiki/IA-64

[–]josefx 22 points23 points  (0 children)

AMD64 won out because it was backwards compatible and IA-64 wasn't

Early IA-64 processors came with an emulation layer to support legacy server applications.

The problem IA-64 had was not its backwards compatibility. Nearly every mobile device uses ARM based processors and not supporting x86 code did nothing to stop their adoption.

The problem IA-64 had was that it was slow, bloated and relied on the mythical "sufficiently smart compiler" to perform static branch prediction, something that every x86 CPU had been doing dynamically for ages. Now one could blame the compiler vendors for half assing their support and generating bad code, even Sony suffered from games not supporting its cell architecture, so it would be far from the only case. However Intel itself was producing one of the most agressively optimizing compilers out there and if they themselves could not be bothered or where outright unable to get any performance out of their own chip, who else could?

[–]MaleficentFig7578 0 points1 point  (0 children)

And Intel only uses names beginning with IA.

[–]Ameisen 7 points8 points  (0 children)

EM64T is slightly different from AMD64. Probably not enough to call them different things, but bsf/bsr work differently, the MSRs are different, they handle SYSCALL/SYSRET/SYSENTER/SYSEXIT differently, and there are some other differences.

Never impacted my osdev work, though - I just called it "x64".

IA32e was the unofficial name before they settled on EM64T, and then "Intel 64".

[–]Thisconnect 1 point2 points  (0 children)

or long mode. You have real and protected mode so it should be one word

[–]aedinius 1 point2 points  (2 children)

When did Intel stop calling it EM64T?

[–]MaleficentFig7578 0 points1 point  (1 child)

Their lawyers must have reached out.

[–]aedinius 1 point2 points  (0 children)

Looks like it was IA32e for a few weeks, then EM64T from 2004 to 2006, then Intel 64 from then.l, according to Wikipedia.

[–][deleted]  (1 child)

[deleted]

    [–]MaleficentFig7578 10 points11 points  (0 children)

    It's called AMD64.

    [–]josefx 14 points15 points  (1 child)

    And UEFI still uses an proprietary MSDOS era file system. The last guy at Intel to write something new probably died at some point in the early 80s.

    [–]irqlnotdispatchlevel 2 points3 points  (0 children)

    Intel still does new things. They constantly put out new ISA extensions. I'm excited by APX for example https://www.intel.com/content/www/us/en/developer/articles/technical/advanced-performance-extensions-apx.html

    [–]elpechos 5 points6 points  (6 children)

    Hasn't it been obsolete for quite a long while? Since 2012 or so UEFI boot starts directly in 64bit mode

    [–]xergm 57 points58 points  (3 children)

    UEFI replaced the BIOS, but the processors themselves still start in 16-bit real mode and pretend to be an 8086. The motherboard still has a ROM with a load program to get out of real mode and start the UEFI firmware.

    [–]Pythonistar 5 points6 points  (0 children)

    When I read that in the first sentence of the article... 🤯 Dang! Color me surprised!

    [–]BlueGoliath 1 point2 points  (0 children)

    Are UEFIs 64-bit then? How does launching a 32-bit OS work?

    [–]elpechos 0 points1 point  (0 children)

    Right, but because the ROM does all this work for you, and is supported on all modern systems, it makes the process of changing to 64bit mode obsolete for anyone wishing to develop an OS.

    Especially considering newer systems don't even support the legacy bios boot option anymore

    UEFI boot is easier to use than the legacy bios method anyhow.

    [–]unique_ptr 1 point2 points  (0 children)

    Shit, you're right! Not enough coffee. Maybe "not possible" would have been better phrasing.

    [–]timsredditusername 2 points3 points  (0 children)

    UEFI boot finishes in 64-bit mode, but it definitely does not start there.

    [–]BookinCookie 0 points1 point  (0 children)

    Unfortunately, X86S is most likely dead.

    [–]Coffee_Ops 15 points16 points  (2 children)

    2004 –64-bit Intel Architecture systems released.

    Some real chutzpah here.

    Yes, 20 years ago Intel invented the 64bit architecture we all know and love....

    [–]b100dian 10 points11 points  (1 child)

    Is that the one we know and love or Itanium?

    [–]Coffee_Ops 0 points1 point  (0 children)

    Itanium was 2001.

    AMD64 arch / instruction set was like '99. Intel adopted it later when AMD started eating their lunch.

    [–]krum 4 points5 points  (2 children)

    It’s weird how this looks significantly easier than switching to 286 protected mode.

    [–]b100dian 0 points1 point  (1 child)

    Very curious. That was more convoluted than 386 protected mode how?

    [–]krum 0 points1 point  (0 children)

    I never tried switching to 386 protected mode but maybe because 286 uses 64k segments and the original documentation was wrong.

    [–]starkman68 2 points3 points  (0 children)

    This is more setting up a pc. Doing embedded work back in the 90’s on an analog modem there was no bios. We started in real mode, setup chip selects, jmp to loader, change modes, setup peripherals, initialize the bss ram etc etc. There was no int 21. We would shove a character out the serial port.

    [–]Sodaplayer 3 points4 points  (2 children)

    Getting flashbacks to when I took an OS class and had to get VGA and some demos working on xv6. Spent hours on osdev trying to figure it out.

    [–]ShinyHappyREM 12 points13 points  (1 child)

    [–]b100dian 0 points1 point  (0 children)

    Straight to screen

    [–]Joslencaven55 0 points1 point  (0 children)

    x86s starting in 64-bit mode is great. backwards compatibility was cool, but better architecture is the future.