You worked on the 704 before going to AMD – how much do you mentally drag along from one to the other? Do you have to fight the urge to "this worked well on that μarch, so we should do similar kinds of stuff on this μarch", or is it easier to compartmentalize, shed old paradigms and adapt to the new environment?
it sort of depends. Some stuff I dragged along - things like the design methodology at Exponential was something that I started to implement at Sun (I won the “millennium falcon award” for that
and when I went to AMD I eventually used it as the basis for what we built there. Things like block-partitioning with pin assignments, text-based cell placement, manual “synthesis” using a high level language that defined each gate and gate size directly, etc.
But I also went from being a bipolar circuit guy to having to do CMOS once I left Exponential. So I had to change the way I thought about a lot of things.
Going from RISC to CISC made very little difference to me. I had previously designed RISC data and instruction caches and RISC floating point, and then at Sun I designed a RISC scheduler and reservation stations, and at AMD I designed CISC integer ALUs, floating point ALUs, and a scheduler. Then I designed some of the AMD64 ISA. Etc. etc. Each time I was solving a problem and I just did it the way that seemed to make the most sense. Lessons learned on prior projects were useful, but it wasn’t like “for now on, every time I design a scheduler I‘m going to do it “Cliff-style.” The K8 scheduler had nothing much in common with the UltraSparc V, and the K6 ALUs had nothing in common with the K8 ALUs. Nor did the K8 floating point unit parrot what we did on the x704.
Once you change one thing (ISA, circuit class, ratio of metal-propagation-delay to gate-propagation-delay) you have to sort of rethink the whole thing.