home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #19 / NN_1992_19.iso / spool / comp / arch / 9068 < prev    next >
Encoding:
Text File  |  1992-08-27  |  5.1 KB  |  122 lines

  1. Newsgroups: comp.arch
  2. Path: sparky!uunet!cs.utexas.edu!sdd.hp.com!caen!destroyer!ubc-cs!uw-beaver!rice!cliffc
  3. From: cliffc@rice.edu (Cliff Click)
  4. Subject: Re: trapping speculative ops
  5. In-Reply-To: schow@bqneh3.bnr.ca's message of Thu, 27 Aug 1992 00:53:40 GMT
  6. Message-ID: <CLIFFC.92Aug27082745@medea.rice.edu>
  7. Sender: news@rice.edu (News)
  8. Organization: Center for Research on Parallel Computations
  9. References: <GLEW.92Aug25180333@pdx007.intel.com>
  10.     <CLIFFC.92Aug26084159@medea.rice.edu>
  11.     <1992Aug27.005340.6547@bcars64a.bnr.ca>
  12. Date: Thu, 27 Aug 1992 14:27:45 GMT
  13. Lines: 107
  14.  
  15.  
  16. Since these threads are all related, I've bundled all replies into one post.
  17.  
  18. --------------------
  19. <Cliff Click>
  20. || Let every register have some extra "trap" bits.
  21. || A read of the register with it's trap bits set, causes the exception.
  22. || A write to the register sets the trap bits according to the success of
  23. || the operation.
  24. || 
  25. || With this design, exceptions are triggered at the START of some operation,
  26. || instead of in the middle of it.
  27.  
  28. <Stanley T.H. Chow>
  29. | Very nice model, but what to do about saving and restoring registers
  30. | across subroutine call, interupts, etc.?
  31.  
  32. <Cliff Click>
  33. Soft answer:
  34. The compiler knows that live and possibly dangerous results cannot be 
  35. carried across a subroutine call.  Therefore it uses every possibly 
  36. dangerous result before the subroutine call.  This means you cannot 
  37. lift that divide-by-zero across the subroutine call.
  38.  
  39. Hard answer:
  40. The hardware allows these bits to be read and written using a special 
  41. register.  The special register can be "slow" because it's assumed to be
  42. an infrequent operation.  The trap bits are saved and restored along with
  43. the registers.
  44.  
  45. Interrupts appear to require the "hard answer", but there is another way
  46. (albeit possible worse):
  47.  
  48. Harder Soft answer:
  49. Only 1 interruptable condition can exist at a time.  The compiler forces the
  50. issue by using the possible dangerous register before it allows another 
  51. operation which can cause a dangerous register.  External interrupts are
  52. disabled while a dangerous register exists.  The compiler ensures that no
  53. register is kept dangerous for longer than the desired interrupt latency.
  54. Since only 1 interrupt can occur at a time, no trap bits need to be saved
  55. or restored.
  56. Scheduling restrictions in this answer are probably worse than implementing 
  57. the hardware solution.  I have no idea what you can implement cheaply in
  58. hardware.
  59.  
  60. <Cliff Click>
  61. || Pre-fetch for long-distance memory can be implemented with a simple LOAD.  
  62. || If a page fault is required for the LOAD the fault is delayed until the 
  63. || register is used.  If the pre-fetch is speculative, no page fault occurs.
  64.  
  65. <Stanley T.H. Chow>
  66. | Presumably, the prefetch will use a different opcode, or do you mean all
  67. | references should behave like this?
  68.  
  69. <Cliff Click>
  70. All references behave this way.  No seperate prefetch opcode required.
  71.  
  72.  
  73. --------------------
  74. <Homayoon Akhiani>
  75. | I believe that there is a 3rd option:
  76. | Hardware has Trap Status and Control register
  77. |   Using the control resgister, Software will disable all traps.
  78. |   So when a exception rises, the hardware will not trap, it will update the
  79. |   "Status Register" and follows the normal execution path.
  80.  
  81. <Cliff Click>
  82. Upon re-reading your example, I see that you can test the trap results on a
  83. *per-register* basis.  Thus the only difference between your model and my
  84. model is that (1) traps are tested explicitly by the software, instead of
  85. implicitly (by reading the register) and (2) interrupts can be made precise
  86. by having the hardware trap as soon as they occur (software ENABLEs all traps).
  87.  
  88. I have no idea on the relative merit between our solutions.
  89.  
  90.  
  91. --------------------
  92. <Herman Rubin>
  93. |    x = a/b;
  94. |    if(y<0) x=z;
  95. | where the division takes long enough that the result of the first statement
  96. | is produced after the result of the second.  Whatever the hardware protocol
  97. | or the rearrangement of instructions, considerable inefficiency can occur.
  98. | This means that alternative (2) causes slow execution.
  99.  
  100. Nice example, Herman.  But I'm not sure how (2) (allow compiled code a way to
  101. postpone consequences) causes slow execution.  In a precise-interrupt world
  102. the result of "a/b" needs to be checked for faulting sometime before the
  103. compiler cannot figure out who faulted.  The "usual" solution is that "x=z" 
  104. will block until "a/b" completes or faults.  Postponing consequences does not
  105. slow down or speed up this code, relative to what happens now because the
  106. hardware has to obey the output dependence.
  107.  
  108. If you don't care about the possible fault when "y<0", a smarter compiler 
  109. might make: "x = (y<0) ? z : a/b;"  which skips the slow division some of 
  110. the time.  Also, scheduling, software pipelining and slew of other 
  111. transformations can ameorate the division latency here.
  112.  
  113. ----
  114. Homayoon Akhiani        akhiani@ricks.enet.dec.com
  115. Stanley Chow            schow@BNR.CA
  116. Cliff Click             cliffc@cs.rice.edu
  117. Herman Rubin            hrubin@pop.stat.purdue.edu (Internet, bitnet)  
  118. --
  119. The Sparc ABI had the most brain-damaged calling convention I've ever seen.
  120. It's probably better now but reminiscing gives me something to complain about.
  121. Cliff Click (cliffc@cs.rice.edu)  |  Disclaimer:  My lawyer made me say it.
  122.