home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #31 / NN_1992_31.iso / spool / comp / sys / intel / 2848 < prev    next >
Encoding:
Internet Message Format  |  1992-12-30  |  3.4 KB

  1. Path: sparky!uunet!gatech!darwin.sura.net!zaphod.mps.ohio-state.edu!saimiri.primate.wisc.edu!ames!olivea!charnel!rat!zeus!
  2. From: mneideng@thidwick.acs.calpoly.edu (Mark Neidengard)
  3. Newsgroups: comp.sys.intel
  4. Subject: Hyperscalar CPU's
  5. Message-ID: <1992Dec30.182049.136180@zeus.calpoly.edu>
  6. Date: 30 Dec 92 18:20:49 GMT
  7. References: <1992Dec24.182252.15072@u.washington.edu>
  8. Sender: news@zeus.calpoly.edu
  9. Organization: Academic Computing Services, Cal Poly San Luis Obispo
  10. Lines: 64
  11.  
  12. Here's the $.02 for the "raging" CPU debate =)
  13.  
  14. One of my favorite arguments for high-scalability microprocessors is
  15. highly-repetitive operations that can be executed in parallel.  Imagine the
  16. process of finding the determinant of a 3x3 matrix.  Assuming two-source
  17. arithmetic units, and using "expansion by minors", the problem would look
  18. like this:
  19.  
  20.       | A B C |
  21.       | D E F | = A(EI-HF)+B(DI-GF)+C(DH-GE)
  22.       | G H I |
  23.  
  24. That is to say, we need to do three sets of: two multiplications, a
  25. subtraction, and another multiplication; then do two additions.  This makes
  26. a total of 14 operations, each of which would probably execute in more than
  27. one cycle on current microprocessors.  IF, however, we implemented three
  28. multipliers and three adders, the flow would look more like this:
  29.  
  30. Cycle     Instruction
  31. -----     ------------
  32.  0        mul1(E,I,add1a) mul2(D,I,add2a) mul3(D,H,add3a)
  33.  1        mul1(H,F,add1b) mul2(G,F,add2b) mul3(G,E,add3b)
  34.  2        add1(a,b,mul1a) add2(a,b,mul2a) add3(a,b,mul3a)
  35.  3        mul1(a,A,add1a) mul2(a,B,add1b) mul3(a,C,add2a)
  36.  4        add1(a,b,add2b)
  37.  5        add2(a,b,out)
  38.  
  39. Thus, assuming one-cycle execution units, we would have a 6 cycle
  40. determinant, much faster than the 14 cycles it would take on a
  41. non-superscalar processor.  The process could be sped up even further if we
  42. throw in a "three-source adder":
  43.  
  44.  3        mul1(a,A,add4a) mul2(a,B,add4b) mul3(a,C,add4c)
  45.  4        add4(a,b,c,out)
  46.  
  47. If we postulate a "three-source multiplier", life looks even better:
  48.  
  49.  0        mul1(A,E,I,add1a) mul2(B,D,I,add1b) mul3(C,D,H,add1c)
  50.  1        mul1(A,H,-F,add1a) mul2(B,G,-F,add1b) mul3(C,G,-E,add1c)
  51.           add1(a,b,c,add2a)
  52.  2        add1(a,b,c,add2b)
  53.  3        add2(a,b,out)
  54.  
  55. Thus, we have taken a 14 operation process and turned it into 4.  We could
  56. knock off another cycle if we turned our "three-source adder" into a
  57. "four-source accumulator", with three sources added to the current value.
  58. This would obviate the need for cycle 3.  Such an architecture would have a
  59. latency for our determinant of only 3 cycles, and, once set in motion, could
  60. crank out a determinant every other cycle.
  61.  
  62. Now, this architecture may be somewhat far-fetched, and perhaps it seems
  63. like a VERY specific task to find oodles of determinants, but similarly
  64. "focused" tasks have already made their debut in DSP's.  In terms of general
  65. CPU power, even if you had tasks that only needed one arithmetic unit at
  66. once, you could run several of them in parallel.  This would facilitate
  67. "multithreading" by making it physically possible to have one or more no-break
  68. threads executing simultaneously.  As for the exotic ALU's, I believe many
  69. people could come up with inventive ways to use them...
  70.  
  71. Mark Neidengard                              "Ilegitimi non carborundum"
  72. mneideng@cosmos.acs.calpoly.edu              "Flocci non facio"
  73. "I think I'm losing my mind this time        "Et tu, Brute?"
  74. This time, I'm losing my MIND!"
  75.              Beastie Boys
  76.