On 1/23/2013 10:10 PM, mag wrote:
> On 2013-01-24 04:48:12 +0000, MitchAlsup said:
Let me start by saying Amen! to Mitch's post.
>> On Wednesday, January 23, 2013 10:10:07 AM UTC-6, mag wrote:
>>> What makes a computer architect great? Is it just a matter of
>>> memorizing Tomasulo's algorithm? Is that still necessary?
>>
>> Tomasulo's is so 1965.
>>
>> What makes a computer architect great is breadth over depth, closeness
>> to hardware over pie in the sky, and a vast exposure to the disease of
>> computerarchitecture in general.
>
> [snip]
>
>>
>> I build my first calculator the year before TTL logic was introduced into
>> the market out of resistors, transistors, capacitors, a great big rotary
>> switch (the op code), and a telephone dial as the input device.
>>
>> So, for me, it was the experience of getting in there and doing it.
>
> A question I have is how do you go aout "getting in there" nowadays? My
> experience is that it's very difficult to break into this field. You
> almost have to be an architect to get an architect's job.
You almost have to be a movie star to get a movie star's job too. Like
any other high-skill occupation it takes ten years to learn your trade,
which in practice means to learn whether you are any good at it. Few
will hire you without that knowledge and practice, because architect is
a very high risk position for an employer. You manager usually can't
judge your decisions himself, and many millions of dollars ride on those
decisions being right.
So how do you break in? Same way you break in to Hollywood: wait on
tables while taking on anything remotely connected no matter how
demeaning. Write your own scripts (compiler), get together with friends
and put on free shows for old folks homes (work on Open Source
projects), audit classes you can't afford (audit classes you can't
afford), hang out places like this board, and post thoughtful, if
ignorant, questions.
> No
> opportunities for someone with potential to get his or her feet wet
> exist, unless you have a friend who's a project director that wants to
> turn you loose on soemthing.
Find such friends. Show them your script (fleshed out design). Get them
to help you improve it. Don't expect to be paid.
Luck helps. The first real programming job I had was at Burroughs on the
B6500 project, then still in sim and two years from hardware. The
manager was Ben Dent, to this day probably the best manager I have ever
had. His way of doing employee interviews was to sit the candidate down
in front of a whiteboard and explain the machine, which was a truly
elegant design, tagged memory and all. Someways into the explanation I
stopped him and said "but that can't possibly work - if you passed one
of those as a parameter from over here you'd get the wrong thing when
you used it. You'd have to add .. the stack number into the format" He
got a funny look on his face, said "Well, I wasn't going to get into it
but what you just described is called a Stuffed Indirect Reference Word
and has tag 6". In my ignorance I couldn't have spotted something like
that in an explanation of Netburst - too complicated to grok. The
elegance of the B6500 permitted the understanding from first principles.
Ben was not only unusual as a manager and as an engineer but as a
*black* engineer, which is sadly even now a rare thing. He hired me,
though why they put up with me thereafter is unknown. I did the DCALGOL
compiler there, my first. But getting the job was luck. Grab luck when
you find it.
> Say I wanted to get an architect's job in the next 12-18 months: What
> self directed project should I take on that I spend maybe 4 hours a week
> working at that at the end would prepare me to get through an interview
> for a CPU architect position?
Well, start with 60 hours a week. Remember 10 years, at 2k hours/year,
is 20k hours. At 4 hours a week you are forgetting faster than you are
learning. And be aware that not a few people study piano for ten years
and get competent enough to realize that they never will be great.
Assume that I have taken graduate level
> computer architecture courses, but haven't had the opportunity to put it
> into much practice since graduating from college. Also assume I have 15
> years experience in ASIC design, including half of that designing or
> verifying CPUs--ARM and x86 and others.
Read. Read. Read. I read parts of three of four theses a week. I say
"parts" because the signal-to-noise ratio of the average thesis is
pretty poor. In many cases I believe that I may be the only person aside
from the author to have read it - it's clear the review board never did.
Still, Google is your friend
>>
>> Secondly, I had the opportunity to work in languages for about a decade
>> learning the ins and outs of what HHLs require on instructions sets.
>> This lead me to disdain condition codes as typically implemented. So
>> the ISAs I have implemented did not have CCs but followed other paths
>> that better fit the semantic requirements of HLLs and HW at the same
>> time.
>>
>> Having written compilers puts you in a different league as to what to
>> leave out of ISAs. A lot of the elegance of CA is in what gets left out,
>> rather than what gets thrown in.
>
> I seems you need "closeness ot the hardware" but also have experience
> with software (you mentioned above having wrote a compiler gives you
> valuable experience in designing an ISA--I agree, but writing even a
> simple compiler is easier said than done from my experience).
Funny you noticed :-) Start by working on an existing non-simple
compiler. gcc and clang both are always looking for volunteers.
Are there
> more hardware-oriented computer architects versus software-oriented
> architects? If you had to choose one to be more proficient in would it
> be software or hardware when it comes down to architecting a CPU?
There's a common misconception that architecture is circuit design.
True, they overlap somewhat, but circuit design is its own expertise.
I'm currently in my fourth ISA, and I've never written a line of Verilog
in my life and intend to stay a virgin.
Now it is true that you can't do a decent design without circuit
expertise somewhere on the team. The Mill has been mostly Art Kahlich
and me. Art is a hardware guy; the bolts attach behind the ears. I'm a
software guy - language design (Algol 68, Ada, Mary, minor contributions
to Smalltalk, C++, etc.), a mincomputer OS, 9 compilers, an OODB. The
relationship with Art has been very productive because we each curb the
others' excesses. I'll come up with this great idea, and he'll say
"That'll cost 30% of the clock"; he'll do likewise and I'll say "yeah,
but the compiler will never find it". Decide where on that spectrum you
want to lie. Either are valid; what do you like?
>
>>
>>> What are the major problems in computing that you think will be best
>>> solved in the future by computer architects? Why do you think this is
>>> the case?
>>
>> Absorbing latency is the singular concern from the time of Strech to the
>> present. There are a variety of ways to do this, DCA (a predicessor to
>> Tomasulo), reservation stations (Tomasulo), Scoreboards, Pipelineing,
>> Dispatch stacks, and Caches. There are modern ways that throw threads
>> at absorbing latency taht work marvelously wiht embarasing parallelism
>> and not so well for serial codes.
>>
>> Other than absorbing latency, the only performance game in town is
>> exploiting parallelism. Never forget that when you exploit parallelism,
>> you don't want to get caught up in paralizing. Its a subtle trade off.
>
> Do you mean exploiting more and more latent parallelism in applications
> that were not designed to be parallel by improving the ability to do the
> exploitation with compilers and the CPU?
Rule of thumb: people will recompile their code for a 2x gain; they will
reconceptualize their problem for a 10X gain. Acceptance of new concepts
is generational; be prepared to wait. In the meantime, be saleable.
Another rule of thumb: you will make the first sale by giving people
what they want. You will make the follow-on sale by having given them,
what they needed in the first sale, even if they objected. I got invited
to the Green team in France because Jean Ichbiah had asked me to
critique his then-language LIS. He told me later that he had thought my
report was the biggest crock of bull he'd ever read and he'd tossed in
the file. So I asked why he sought me out for what became Ada; "Because
two years later I understood what you were talking about".