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

  1. Xref: sparky comp.sys.intel:2798 comp.arch:11821
  2. Newsgroups: comp.sys.intel,comp.arch
  3. Path: sparky!uunet!think.com!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: <1992Dec21.133318.2975@athena.mit.edu>
  7. Sender: news@athena.mit.edu (News system)
  8. Nntp-Posting-Host: m4-035-4.mit.edu
  9. Organization: Massachusetts Institute of Technology
  10. References: <WAYNE.92Dec4093422@backbone.uucp> <37595@cbmvax.commodore.com> <PCG.92Dec13170504@aberdb.aber.ac.uk>
  11. Date: Mon, 21 Dec 1992 13:33:18 GMT
  12. Lines: 83
  13.  
  14. In article <PCG.92Dec13170504@aberdb.aber.ac.uk>, pcg@aber.ac.uk (Piercarlo Grandi) writes:
  15. |> On 10 Dec 92 00:29:51 GMT, solman@athena.mit.edu (Jason W Solinsky) said:
  16. |> Nntp-Posting-Host: m4-035-15.mit.edu
  17. |> 
  18. |> solman> (Piercarlo Grandi) writes:
  19. |> |> (Bernard Gunther) said:
  20. |> 
  21. |> No, actually I (pcg) said this:
  22. |> 
  23. |> pcg> Well, certain tricks can also be used with multiple CPUs on the
  24. |> pcg> same die. And these have an important advantage: as far as I can
  25. |> pcg> see, 6 instruction issue per cycle is virtually pointless. The
  26. |> pcg> *limit* of superscalarity present in general purpose codes is 4,
  27. |> pcg> and actually we are hard pressed to find many codes with
  28. |> pcg> superscalarity higher than 2.
  29. |> 
  30. |> solman> Err, I believe those are single threaded codes. If you're only
  31. |> solman> dealing with one thread at a time, then you might as well not
  32. |> solman> bother doing putting multiple CPUs on a die either.
  33. |> 
  34. |> Precisely my point: single threaded *general purpose* codes have a
  35. |> limited intrinsic degree of exploitable parallelism.
  36.  
  37. And general purpose computing does not, in general, involve single threaded
  38. codes. At every level of abstraction, codes can be parallelized further. From
  39. multi-tasking down to ILP. If you define the codes which we are concerned
  40. with to be codes which can only exploit ILP, then of course the level of
  41. parallelism is limited, but you are not dealing with general purpose computing
  42. anymore. 
  43.  
  44. |> solman> It also sounds to me like you are looking at a very narrow
  45. |> solman> subset of programs.  If this were true then modern heavily
  46. |> solman> pipelined uPs would be horribly inefficient.
  47. |> 
  48. |> Indeed pipeline designs with more than a few stages of pipelining run
  49. |> into huge problems, and are worth doing only if a significant proportion
  50. |> of SIMD-like operation is expected. Pipeline bubbles start to become a
  51. |> significant problem beyond 4 pipeline stages on general purpose codes,
  52. |> even on non superscalar architectures.
  53.  
  54. This can be taken care of by interleaving different threads in the software,
  55. or using hardware which will take care of the interleaving on its own. The
  56. above statement is only true when the compiler is too dumb to notice higher
  57. level parallelism.
  58.  
  59. |> solman> A lot of hardware is freed up by breaking the "imaginary" lines.
  60. |> 
  61. |> Uhmmm, what I read is that almost all the space of modern 1-3 million
  62. |> CPU chips is taken up by caches and register files.
  63.  
  64. Both of which are excellent examples of how breaking the imaginary lines can
  65. improve performance. The key question in chosing how large register files
  66. and caches should be, is "How large a {register file or cache} do I need
  67. for `good' performance on the algorithms I want to run?" Invariably, the
  68. size chosen is too small some of the time, while much of it is left unused
  69. at other times. In the multiple CPU version, this still happens. In the
  70. hyperscalar version, however, some of the execution units and threads will
  71. need a larger {cache or reg file} and some will be unable to utilize the
  72. existing space, but because they can share the same caches and register files,
  73. it is far less likely for performance to be limited by cache or register file
  74. size. In real life, instead of resulting in a greater level of performance,
  75. this would likely result in smaller caches and register files that produce
  76. the same performance level. Thus the additional space.
  77.  
  78. |> solman> This can then be used to re-implement the lost abilities, like
  79. |> solman> context switching, but in a manner that allows them to be used
  80. |> solman> by all the parts of the chip.
  81. |> 
  82. |> Again, my impression that designing a multithreaded CPU looks already a
  83. |> daunting task implies that having the CPU threads execute in different
  84. |> CPU and MMU contexts (thus having many virtual interrupt vectors,
  85. |> register files, traps, and instruction restart/resume on faults) looks
  86. |> harder still. Maybe somebody has already done research along these
  87. |> lines; maybe it is feasible, and maybe it is even cost effective. I can
  88. |> only remember old, very limited, and not too successful examples.
  89.  
  90. Its an open question on how you want to do it. I personally favor tagging
  91. everything, and avoiding the concept of contexts in a dataflowish fashion.
  92.  
  93. As far as whether its cost effective and feasible, if you see it two years from
  94. now, its a good idea now. Otherwise, its not. :-)
  95.  
  96. Jason W. Solinsky
  97.