
The PowerPC 600 series, part 1: Introduction - matt_d
https://blogs.msdn.microsoft.com/oldnewthing/20180806-00/?p=99425
======
classichasclass
I like their description of r0 as "limited use." There was some parody Twitter
account with "new PowerPC instructions," one of which was mscdfr0 -- Means
Something Completely Different For Register 0. See
[https://twitter.com/ppcinstructions](https://twitter.com/ppcinstructions) for
others (I'm not the author).

For those who don't get the joke, certain instructions like addi r0,r0,1
(encoded as addi 0,0,1) actually get turned into addi r0,0,1 -- instead of
adding one to the contents of r0, they add one to _zero_ , putting one in r0.
This is to facilitate loading immediates, so a typical "load32" does an addis
(same r0 limitation) to load the upper 16 bits followed by an ori (doesn't) to
load the bottom.

This is maddening if you don't watch what you're doing, which is why RISC
architectures that make a register _explicitly always_ zero are sometimes less
obnoxious (MIPS).

The article is, however, disingenuous about branching. Virtually any PPC
(dis)assembler worth its salt will use extended mnemonics for the bc
instructions the author complains about. Plus, you can branch on arbitrary
bits in the condition register fields, which the bzero32 routine in Mac OS X
uses to great effect (mtcrf 0x01,r4 puts the lower four bits into the
condition field, and then it just tests each individual bit with a bf branch
-- no compares needed!).

~~~
gcb0
I am sorry for game and compiler developers.

or is there any other group that cares about this today?

~~~
kev009
If you want to get really skilled at debugging, symbolic debuggers often break
down in ways that are easily worked through by reading disassembly. Reverse
engineering is a related and more elaborate extension of that. Finally,
certain types of development are done partially with native use of the ISA
even if the majority is done in a higher level language like implementing
atomics and related lock free algorithms, bootstrap code for systems software,
multimedia and compression codecs. It's useful and only a few days learning to
have at least passive familiarity in the main ISA you use if you do anything
that compiles down to native code for the first reason. It's also not that
bad, I'd rather read assembly over modern javascript frameworks to be
perfectly blunt.

~~~
gcb0
most of the time I had to gdb something that was broken (apache on all my last
times) I was looking for IO instruction at the wrong time instead of bugs in
pointers usage, but yeah, I do see your point (no pun intended). I can clearly
see eioio causing some of the performance/race conditions I was hunting down
recently (which thankfully was NOT on ppc :)

------
monocasa
I hope this series goes into the fabled 615. A Pentium socket compatible
PowerPC chip that also had a x86 instruction decoder, but was never released.

~~~
classichasclass
The 615 got a lot of bad press and much of it was not deserved. There was that
apocryphal claim it took an "eternity" to mode-switch, but while the penalty
was non-trivial (a pipeline spill), it was definitely faster than claimed.
This was probably no small amount of FUD on Microsoft's part so that they
wouldn't have to support it.

The real irony was the existence and support of Windows NT on PowerPC (up to
the W2K betas), so Microsoft actually didn't have much of a beef with
supporting the architecture in general after all; they just didn't think doing
the engineering on the 615 specifically was worth the cost.

~~~
mrpippy
Microsoft dropped support for NT 4 PPC in 1997, very early in the release
cycle. SP2 was the last update that had PPC support. Maybe you're thinking of
Alpha, that was much better supported and was only dropped during the Win2K
RCs.

[https://www.itprotoday.com/windows-8/windows-nt-powerpc-
no-m...](https://www.itprotoday.com/windows-8/windows-nt-powerpc-no-more)

~~~
classichasclass
Ah, yes, I was thinking of Alpha. But NT4 was still a full fledged product on
PowerPC at least for a period of time, so my larger point stands.

------
kev009
These are enormously important processors, the 604 and 620 were invariably
checkpoints of modern CPU design to the masses.. OoO, hardware performance
counters etc.

------
ausjke
Not sure why Microsoft is writing about PowerPC 600 now, other than some
technical insights, anything else interesting? I feel PowerPC is gone, along
with UltraSPARC, HP, SGI, etc chips.

~~~
anyfoo
This is Raymond Chen’s blog, who has been writing interesting technical
articles, including multiple detailed introductions of past and present
architectures, for more than a decade (maybe even longer). Some of the covered
architectures are gone entirely, some have changed since their presented form.
That’s a big part of what makes them so interesting.

~~~
ingve
Raymond celebrated 15 years of blogging about Windows history and related
topics recently (July 20)

[https://blogs.msdn.microsoft.com/oldnewthing/20180720-00/?p=...](https://blogs.msdn.microsoft.com/oldnewthing/20180720-00/?p=99295)

