Hacker Newsnew | past | comments | ask | show | jobs | submit | squater's commentslogin

Small correction, Pentium Pro was the first OoO microprocessor from Intel. Others like IBM POWER1 came earlier

I'm really not sure if POWER1 and PowerPC 603 should be counted as OoO or not.

It's certainly not the same kind of OoO. They had register renaming¹, But only enough storage for a few renamed registers. And they didn't have any kind of scheduler.

The lack of a scheduler meant execution units still executed all instructions in program order. The only way you could get out-of-order execution is when instructions went down different pipelines. A floating point instruction could finish execution before a previous integer instruction even started, but you could never execute two floating point instructions Out-of-Order. Or two memory instructions, or two integer instructions.

While the Pentium Pro had a full scheduler. Any instruction within the 40 μop reorder buffer could theoretically execute in any order, depending on when their dependencies were available.

Even on the later PowerPCs (like the 604) that could reorder instructions within an execution unit, the scheduling was still very limited. There was only a two entry reservation station in front of each execution unit, and it would pick whichever one was ready (and oldest). One entry could hold a blocked instruction for quite a while many later instructions passed it through the second entry.

And this two-entry reservation station scheme didn't even seem to work. The laster PowerPC 750 (aka G3) and 7400 (aka G4) went back to singe entry reservation stations on every execution unit except for the load-store units (which stuck with two entries).

It's not until the PowerPC 970 (aka G5) that we see a PowerPC design with substantial reordering capabilities.

¹ well on the PowerPC 603, only the FPU had register naming, but the POWER1 and all later PowerPCs had integer register renaming


It was intel's (at least) second OoO processor, after i960 - from which it pulled important team members.

Was i960 OoO?

Yes, with branch prediction and speculative execution too

Interesting, apparently it did scoreboarding like the CDC6600 and allowed multiple memory loads in flight, but I can't find a definite statement on whether it did renaming (I.e. writes to the same registers stalled). It might not be OoO as per modern definition, but is also not a fully on-order design.

OoO is a surprisingly old idea, first used in the IBM System/360 Model 91 released all the way back in 1966.

https://en.wikipedia.org/wiki/Tomasulo's_algorithm

Took a while until transistor budgets allowed it to be implemented in consumer microprocessors.


Also for the gap between CPU speed and memory speed to matter enough for it to be worthwhile.

Very true, Bob Colwell was hired with past experience in this, I think from "Cyndrome" (edit: Multiflow).

https://news.ycombinator.com/item?id=38459128


You can never have too much Godbolt!


They didn't kill off the Atom line, they just dropped the Atom naming [0][1]. They are typically also dirt cheap [2].

[0] https://en.wikipedia.org/wiki/Tremont_(microarchitecture)

[1] https://en.wikipedia.org/wiki/Gracemont_(microarchitecture)

[2] https://www.amazon.com/GMKtec-Nucbox5-Desktop-Computer-Windo...


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: