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

  1. Xref: sparky comp.sys.intel:2826 comp.arch:11901
  2. Newsgroups: comp.sys.intel,comp.arch
  3. Path: sparky!uunet!enterpoop.mit.edu!bloom-picayune.mit.edu!athena.mit.edu!solman
  4. From: solman@athena.mit.edu (Jason W Solinsky)
  5. Subject: Re: Superscalar vs. multiple CPUs ?
  6. Message-ID: <1992Dec23.172413.8798@athena.mit.edu>
  7. Sender: news@athena.mit.edu (News system)
  8. Nntp-Posting-Host: m37-318-11.mit.edu
  9. Organization: Massachusetts Institute of Technology
  10. References: <WAYNE.92Dec4093422@backbone.uucp> <37595@cbmvax.commodore.com> <PCG.92Dec23150744@decb.aber.ac.uk>
  11. Date: Wed, 23 Dec 1992 17:24:13 GMT
  12. Lines: 93
  13.  
  14. In article <PCG.92Dec23150744@decb.aber.ac.uk>, pcg@aber.ac.uk (Piercarlo Grandi) writes:
  15. |> On 21 Dec 92 13:33:18 GMT, solman@athena.mit.edu (Jason W Solinsky) said:
  16. |> 
  17. |> solman> If you define the codes which we are concerned with to be codes
  18. |> solman> which can only exploit ILP, then of course the level of
  19. |> solman> parallelism is limited, but you are not dealing with general
  20. |> solman> purpose computing anymore.
  21. |> 
  22. |> Ah, this discussion was indeed mostly about ILP/superscalarity/VLIW.
  23.  
  24. This is where our misunderstanding lies. It is my argument that hyperscalar
  25. chips will be able to exploit macro level parallelism. A hyperscalar processor
  26. would be able to issue eight instructions from a single thread simultaneously,
  27. but its primary purpose would be to issue eight instructions from several
  28. different threads simultaneously. This is where the talk of getting rid of
  29. "imaginary lines" comes from. The processor of the future must be able to
  30. excecute one highly parallelizable thread very quickly (which as you note
  31. could be easily done with vector processors) AND execute several different
  32. threads simultaneously.
  33.  
  34. |> pcg> Indeed pipeline designs with more than a few stages of pipelining
  35. |> pcg> run into huge problems, and are worth doing only if a significant
  36. |> pcg> proportion of SIMD-like operation is expected. Pipeline bubbles
  37. |> pcg> start to become a significant problem beyond 4 pipeline stages on
  38. |> pcg> general purpose codes, even on non superscalar architectures.
  39. |> 
  40. |> solman> This can be taken care of by interleaving different threads in
  41. |> solman> the software, or using hardware which will take care of the
  42. |> solman> interleaving on its own. The above statement is only true when
  43. |> solman> the compiler is too dumb to notice higher level parallelism.
  44. |> 
  45. |> Well, here you are saying, if I read you right, that if an application
  46. |> is suited to MIMD style computing then multithreading is the answer.
  47. |> This in itself is nearly a tautology. If you are also implying that many
  48. |> more applications are suited to *massive* MIMD style (macro) parallelism
  49. |> then is commonly believed, I would ber skeptical; what I believe is that
  50. |> quite a few *important* applications can be successfully (macro)
  51. |> parallelized, MIMD style. For example compiling GNU Emacs; each
  52. |> compilation of each source module can proceed in parallel, and indeed
  53. |> one can spawn a separate thread for each function in each source module.
  54.  
  55. In the near future, we are not going to have the capability to put "massive"
  56. numbers of execution units on a chip. I would be surprised if we saw chips
  57. with more than 50 execution units in the near future. What I am saying is that
  58. this level of MIMD (A macro parallelism, ILP product of a little over 100)
  59. can be supported efficiently by enough applications to call it general purpose.
  60. I think both the example given here and the paper that has been cited support
  61. this. More importantly, the tendancy of software with greater levels of
  62. abstraction to exhibit more macro-parallelism, suggests that parallelizability
  63. of software will continue to outpace that of the hardware.
  64.  
  65. |> solman> The key question in chosing how large register files and caches
  66. |> solman> should be, is "How large a {register file or cache} do I need
  67. |> solman> for `good' performance on the algorithms I want to run?"
  68. |> solman> Invariably, the size chosen is too small some of the time, while
  69. |> solman> much of it is left unused at other times. In the multiple CPU
  70. |> solman> version, this still happens. In the hyperscalar version,
  71. |> solman> however, some of the execution units and threads will need a
  72. |> solman> larger {cache or reg file} and some will be unable to utilize
  73. |> solman> the existing space, but because they can share the same caches
  74. |> solman> and register files, it is far less likely for performance to be
  75. |> solman> limited by cache or register file size.
  76. |> 
  77. |> I agree with the sentiment here; partitioning resources can indeed lead
  78. |> to starvation in one place but to overcommitment in another.
  79. |> 
  80. |> The problem is that sharing resources can have tremendous costs; sharing
  81. |> register files between multiple parallel functional units looks nice
  82. |> until one figures out the cost in terms of multiporting.
  83.  
  84. One thing is for sure, we can't solve the problems of resource allocation
  85. simply by extending current methods. Just adding ports to register files
  86. would be a horrendously expensive idea. Instead, just spread several files
  87. with a couple of ports around and tag the data to signify where it came
  88. from and where its going. There are many different ways to do it. Just
  89. extending the current trend of multi porting isn't one of them though.
  90. Besides, It will take too many cycles to wait for data to cross the entire
  91. length of the chip. This should only be necessary when the local register
  92. file is full.
  93.  
  94. |> It's obvious you know this, but maybe you are underestimating this cost;
  95. |> moreover avoiding partitioning will really solve problems only when
  96. |> there are huge swings in resource allocations by different threads; if
  97. |> these are fairly predictable, then static partitioning does not look so
  98. |> bad. I reckon that this is the case in many instances.
  99.  
  100. I'm sure it is, but the optimal partitioning changes from user to user. If you
  101. want to use a single design as a general purpose uP, then this no longer looks
  102. like a good idea. This is especially the case when you consider that most users
  103. will be multi-tasking several programs at once and these are unlikely to be
  104. very similar in resource consumption.
  105.  
  106. Jason W. Solinsky
  107.