Dekker's Algorithm
ããããæä»å¶åŸ¡ãå®çŸããã®ã«Load Linked/Store ConditionalãTest and Setãªã©ã®ç¹å¥ãªåœä»€ã䜿ããªãæ¹æ³ãååšãããæ¬¡ã«è¿°ã¹ãã®ã¯Dekker's Algorithmãšããæ¹æ³ã§ããã
æåã¯ããã»ãµAãšããã»ãµBã®æã¡ã¢ãªAãBã¯ãŒããšããŠããã
ããã»ãµAãã
(1)ãSt [A]â1
(2)ãLd R1â[B]
ããã»ãµBã¯ã
(3)ãSt [B]â1
(4)ãLd R1â[A]
ãšãèªåã®æã¡ã¢ãªã«1ãæžã蟌ã¿ããã®åŸãçžæã®æã¡ã¢ãªãèªãããã®ããã«ãããšããããã®åœä»€ã®ã¡ã¢ãªãžã®ã¢ã¯ã»ã¹é åºãšãããã»ãµAãBãèªãå€ã¯ã
(1)(2)(3)(4) ããã»ãµA:0ãããã»ãµB:1
(1)(3)(2)(4) ããã»ãµA:1ãããã»ãµB:1
(1)(3)(4)(2) ããã»ãµA:1ãããã»ãµB:1
(3)(1)(2)(4) ããã»ãµA:1ãããã»ãµB:1
(3)(1)(4)(2) ããã»ãµA:1ãããã»ãµB:1
(3)(4)(1)(2) ããã»ãµA:1ãããã»ãµB:0
ã®6éãã®ããããã§ããã
åæ¹ã®ããã»ãµã1ãæžã蟌ãã®ã§ãããã»ãµAãBãšãã«1ãèªãã±ãŒã¹ãå€ããã1ãèªãã å Žåã¯ãæã¡ã¢ãªãäžæŠ0ã«ãªã»ããããŠãäžèšã®åŠçãç¹°ãè¿ãããããŠãLdåœä»€ã§0ãèªãã ãšãã¯ã¯ãªãã£ã«ã«ã»ã¯ã·ã§ã³ã®äœ¿çšæš©ãç²åŸãããšããããšã«ãããšãç¹å¥ãªåœä»€ãªãã«ã¯ãªãã£ã«ã«ã»ã¯ã·ã§ã³ã®æä»å¶åŸ¡ãè¡ãããšãã§ããã
ã¡ã¢ãªãªãŒããªã³ã°
ããããæ¬æ¥ãããã»ãµAã®
(1)ãSt [A]â1
(2)ãLd R1â[B]
ã®2ã€ã®åœä»€ã®å®è¡ã«ã¯äŸåé¢ä¿ãç¡ãããããã£ãŠã1ã€ã®ããã»ãµã§èŠããšãã©ã¡ãã®åœä»€ãå ã«å®è¡ããŠãè¯ãããã®ããã第164åã§èª¬æããããŒãã¹ãã¢æ©æ§(å³6.24)ã®ããã«ããŒããã¥ãŒãšã¹ãã¢ãã¥ãŒãèšããŠå®è¡å¯èœãªåœä»€ããå ã«å®è¡ããŠããããŒããŠã§ã¢ã§ã¯ããã®é çªã§Ståœä»€ãšLdåœä»€ãå®è¡ããããšã¯éããªãããŸããæã¡ã¢ãªAãBã®ãã³ã¯ãç°ãªãå Žåã¯ãã¢ãŒããã¬ãŒã·ã§ã³ã®ããæ¹ã«ãã£ãŠã¯ãå®è¡é åºãé転ããããšãããã
ããããåèšã®Dekkerã®ã¢ã«ãŽãªãºã ã䜿ã£ãŠæä»å¶åŸ¡ãè¡ã£ãŠããå Žåã¯ããã®Ldåœä»€ãšStåœä»€ã®å®è¡é åºãé転ããŠããŸããšãæ£ããåäœããªããªã£ãŠããŸãã
äžæ¹ãæ®éã®åŠçãè¡ãå Žåã¯ãã¹ãã¢ã¯ãã®ãã¡ã«ã¡ã¢ãªã«ããŒã¿ãæžã蟌ãã§ããã°è¯ããç·æ¥ã«æžã蟌ã¿ãå®äºããå¿ èŠã¯ãªãããäŸåé¢ä¿ã®ç¡ãããŒãåœä»€ã¯å ã«å®è¡ããŠããã®çµæã䜿ãåŸç¶ã®åœä»€ã®å®è¡ãæ©ããã»ããæ§èœçã«ã¯æå©ã§ãããé åºãé転ããŠå®è¡ããããšãããžã¬ã³ããããã
ãŸããOpteronã®ãããªãªã³ã°ãã¹ã§ãã¢ã¯ã»ã¹ããã¢ãã¬ã¹ã®ããŒã ããŒãã®äœçœ®ããã(1)ã®Ståœä»€ã¯æèšå»»ã(2)ã®Ldåœä»€ã¯åæèšå»»ãã«åŠçãäŒéããããšãã©ã¡ãã®åœä»€ãå ã«å®è¡ãããããã«èŠãããã¯èŠãŠããããã»ãµã®äœçœ®ã«äŸåããã·ã¹ãã å ã§äžæã«ã¯æ±ºãŸããªãã
ãã®ãããæè¿ã®ããã»ãµã§ã¯ãé åºæ§ã®ä¿èšŒã諊ããããã°ã©ã ã«æžãããããŒãã¹ãã¢åœä»€ã®é åºãšå®éã«ã¡ã¢ãªã¢ã¯ã»ã¹åœä»€ãå®è¡ãããé åºããä»ã®ããã»ãµããèŠãã¡ã¢ãªæžãæãé åºã¯ç¡é¢ä¿ã§ãããŒããŠã§ã¢ãé©åœãšèããé åºã§å®è¡ããŠããŸã(ãã©æå¥ãã£ã? ãšå± çŽã)ãšãããã®ãå€ãããã®ãããªããã»ãµãã1ã€ã®ããã»ãµã§å®è¡ãããŠããããã°ã©ã ã«å¯ŸããŠã¯ããŒããšã¹ãã¢ã®é åºã¯ããã°ã©ã é ã§æ£ããå®è¡ãããŠããããã«äžŠã¹å€ããŠèŠããã®ã§ãåäžããã»ãµã§åäœããããã°ã©ã ã®ããžãã¯ã«åé¡ã¯çºçããªãããè€æ°ã®ããã»ãµãé¢ä¿ããå Žåã¯ãé åºã®éããèŠããŠããŸããDekker's Algorithmã®ãããªããã°ã©ã ã¯æ£ããåäœããªãã
ãŸããDekker's Algorithm ã¯ããªãç¹æ®ãªäŸãªã®ã§ããããåããªããšãããã»ã©å°ããªãããI/Oã¢ããã¿ã®å¶åŸ¡ã¬ãžã¹ã¿ã«æä»€ãæžã蟌ãã§ããã®å¿çãç¶æ ã¬ãžã¹ã¿ããèªã¿åºããšãããããªããã€ã¹ãã©ã€ãããã°ã©ã ã®å Žåããã®é åºãé転ããŠããŸããšI/Oããã€ã¹ãåäœããªããªã£ãŠããŸãã
ãã®ããããã®ãããªã¡ã¢ãªã¢ã¯ã»ã¹ã®é åºãä¿èšŒããªãã·ã¹ãã ã§ã¯ãæ¬åœã«é åºä¿èšŒãå¿ èŠãªã±ãŒã¹ã«å¯Ÿå¿ãããããã¡ã¢ãªããªã¢åœä»€ãšããç¹å¥ãªåœä»€ãèšããŠãããã¡ã¢ãªããªã¢åœä»€ãå®è¡ãããšãããŒããŠã§ã¢ã¯ããŒã/ã¹ãã¢ãã¥ãŒã«æºãŸã£ãŠããããŒãã¹ãã¢åœä»€ã®å®äºãåŸ ã¡ããã®åŸãã¡ã¢ãªããªã¢åœä»€ä»¥éã®ããŒãã¹ãã¢åœä»€ã®å®è¡ãéå§ããããããã£ãŠãåèšã®äŸã®Ståœä»€ãšLdåœä»€ã®éã«ã¡ã¢ãªããªã¢åœä»€ãæãã°ãäžè¬çãªã¡ã¢ãªã¢ã¯ã»ã¹ã«å¯ŸããŠã¯ããŒãã¹ãã¢åœä»€ã®å®è¡é åºãä¿èšŒããªãããŒããŠã§ã¢ã§ãDekker's Algorithmãæ£ããå®è¡ã§ããI/Oãã©ã€ãã«ãåé¡ã¯åºãªãããã«ã§ããããã«ãªã£ãŠããã
ãããã詳现ã«èŠããšãDekker's Algorithmã®å Žåã¯ãLdãStã远ãè¶ããŠã¯å°ãããäžè¬ã®ããã°ã©ã ã§ã¯ãäŸåæ§ããªããã°Ldãå è¡ããStã远ãè¶ããŠãåé¡ã«ãªããªãããã®ããã«åé¡ããªãã±ãŒã¹ãŸã§çŠæ¢ããã®ã¯æ§èœäžã®ãã¹ãå¢ããã®ã§ãäŸãã°ããã以åã®Stãå®äºããªããšã以éã®Ldã¯å®è¡ããªããšããããã«ãååŸã®ã¡ã¢ãªã¢ã¯ã»ã¹ã®çš®é¡ãç¹å®ããld-stãst-ldã®ããã«çš®é¡ããšã®ã¡ã¢ãªããªã¢åœä»€ãæã€ããã»ãµãããã
ãŸããäžè¬ã«I/Oãã©ã€ãã®ãããªã±ãŒã¹ã§ã¯ããã©ã€ãã®äžã§ã®äžè¬çãªã¡ã¢ãªã¢ã¯ã»ã¹ã®é åºã¯ããŒãã¹ãã¢ãã¥ãŒãªã©ã®ã¡ã«ããºã ã«ããããã°ã©ã é ãšççŸã®ãªãããã«èŠããã®ã§ãå®éã®ããŒããŠã§ã¢ã§ã®å®è¡é åºã¯ä»»æã§è¯ãããI/Oã¢ããã¿ã®ã¬ãžã¹ã¿ã¢ã¯ã»ã¹ã®å Žåã«ã¯ãäžè¬ã«å³å¯ã«ããã°ã©ã ã«æžãããåœä»€é ã«ã¢ã¯ã»ã¹ããªããã°ãªããªãå Žåãå€ãããã¡ãããé åºã®ä¿èšŒãå¿ èŠãªç®æã«é©åœãªã¡ã¢ãªããªã¢åœä»€ãæãã§ããã€ã¹ãã©ã€ãããã°ã©ã ãæžãã°ããã®ã§ããããäžã ã¡ã¢ãªããªã¢åœä»€ãæ¿å ¥ããã®ã¯é¢åã§ããããã®ãããªããã°ã©ãã®è² æ ã軜æžããééããæžããç®çã§ãæè¿ã®ããã»ãµã§ã¯ãI/Oã¢ããã¿ã®å¶åŸ¡ã¬ãžã¹ã¿ããããã³ã°ããã¡ã¢ãªããŒãžã®å±æ§ãšããŠããã°ã©ã é ã®ã¢ã¯ã»ã¹ããã®ä»ã®äžè¬çãªã¡ã¢ãªããŒãžã¯ã¢ã¯ã»ã¹é äžå®ãšããããã«ãããŒãžåäœã®ã¡ã¢ãªç®¡çæ©æ§ãšé£åããŠã¡ã¢ãªãªãŒããªã³ã°ãåãæ¿ãããšããæ¹æ³ãæ¡çšããŠããããã»ãµãããã