åå²å äºæž¬
åå²äºæž¬ã¯æ¡ä»¶åå²ãæç«ãããäžæç«ããäºæž¬ãããã®ã§ããããåå²ãèµ·ããå Žåã«ã¯ãåå²åœä»€ãå®è¡ããŠåå²å ã®ã¢ãã¬ã¹ãèšç®ããåå²å ã®åœä»€ããã§ããããŠæ¥ãªããã°ãªããªãããšããããšã§ãå岿¹åãäºæž¬ããã ãã§ãªããåå²ãèµ·ããå Žåã¯ãåå²å ã®ã¢ãã¬ã¹ãäºæž¬ããããšãã§ããã°ãåå²å ã®åœä»€ãæ©ããã§ããããããšãå¯èœãšãªãæ§èœãåäžãããããšãã§ããã
åå²å ã¢ãã¬ã¹ãäºæž¬ããã«ã¯ãå³7.6ã®ãããªåå²åœä»€ã®åå²å ã®ã¢ãã¬ã¹ãæ ŒçŽãããã£ãã·ã¥(Branch Target Address Cache:BTAC)ãèšããŠãåå²äºæž¬æ©æ§ãšäžŠåã«ã¢ã¯ã»ã¹ãããBTACã¯ãåœä»€ã¢ãã¬ã¹ãã€ã³ããã¯ã¹ãšããŠã¢ã¯ã»ã¹ãããã£ãã·ã¥ã§ããããåœä»€ãæ¡ä»¶åå²åœä»€ã§ããããã€ãæ¡ä»¶åå²ãTakenã®å Žåã ãããã®åå²å ã¢ãã¬ã¹ãèšæ¶ããŠããããã®ãã£ãã·ã¥ã¯BTACãããã¯ãBTB(Branch Target Buffer)ãšåŒã°ããããããŠãåå²äºæž¬ãè¡ãã®ãšäžŠè¡ããŠãã®ãã£ãã·ã¥ãã¢ã¯ã»ã¹ããåå²åœä»€ã®å®è¡ãåŸ ããã«BTACããèªãŸããã¢ãã¬ã¹ã次ã®åœä»€ã¢ãã¬ã¹ãšããŠåœä»€ãã§ãããéå§ããã
ã¬ãžã¹ã¿ã®å 容ãã¢ãã¬ã¹ãšããŠåå²ãè¡ãå Žåã¯ãåå²å ã¯å¯å€ã§ããããäžè¬ã«ããã°ã©ã ã®äžã«çŸããæ¡ä»¶åå²åœä»€ã®åå²å ã¯åœä»€ã¢ãã¬ã¹ããã®ãªãã»ããã§èšè¿°ãããŠãããåå²å ã®ã¢ãã¬ã¹ã¯æ¯åäžå®ã§ããã®ã§ãBTACã®å å®¹ã¯æžãæããå¿ èŠã¯ãªãã(ãã ããBTACã®ãšã³ããªæ°ã¯1024ïœ8192çšåºŠã§ããããã£ãã·ã¥ã©ã€ã³ã®ç«¶åã«ãã£ãŠè¿œãåºãããããšã¯ããããã¬ãžã¹ã¿éæ¥åå²ã®å Žåã¯åå²å ã¢ãã¬ã¹ãå€ãã)ããããã£ãŠãäºæž¬ãæ£ããããã€ãBTACã«ãããããå Žåã¯ãé«ã確çã§æ£ããåå²å ã®ã¢ãã¬ã¹ãåŸãããã
BTACã¯åå²å ã¢ãã¬ã¹ã®äºæž¬å€ãäžããã ãã§ãããäºæž¬ãšã©ãŒããã£ãŠãåŠçã誀ãããšã¯ç¡ããã BTACãã¢ã¯ã»ã¹ãããšåžžã«äœããã®ã¢ãã¬ã¹ãåºãŠããŠããŸãã®ã§ãã¿ã°ããããè¡ããªããšãç¡é§ãªåœä»€ãã§ãããå€ããªã£ãŠããŸããå³7.6ã®ããã«ã¿ã°ããããè¡ãBTACã«ãããããå Žåã¯ãæ¡ä»¶åå²åœä»€ã¯Takenãšã¿ãªããŠåå²å ã¢ãã¬ã¹ã®äºæž¬å€ãåŸãŠãåå²å ã®åœä»€ãã§ãããéå§ãããšããæ§é ã䜿ãããã±ãŒã¹ãå€ãããã ãããã®å Žåãåœä»€ãããŒã¿ãã£ãã·ã¥ã®ãããªå®å šãªäžèŽã¯å¿ é ã§ã¯ãªããéãªããæžããã°ååã§ããããã®ããããã¹ãŠã®äžäœã¢ãã¬ã¹ã䜿ã£ãã¿ã°ãããã§ã¯ãªããäžäœã¢ãã¬ã¹ã®äžéšãããã·ã¥ã䜿ã£ãŠãããæ°ãå§çž®ããã¿ã°ããããçšããããã
ããã°ã©ã ã®äžã«ã¯åå²å ãããã°ã©ã ã«ãŠã³ã¿ã®å€(=åœä»€ã¢ãã¬ã¹)ããã®ãªãã»ããã§æ±ºãŸãåå²åœä»€ã ãã§ãªããã¬ãžã¹ã¿ã«æ ŒçŽãããå€ãåå²å ãšãªãã¬ãžã¹ã¿éæ¥åå²ãååšããããã®ã¬ãžã¹ã¿éæ¥åå²ã®å Žåã¯ãã¬ãžã¹ã¿ãèªãŸãªããšåå²å ã®ã¢ãã¬ã¹ã¯åŸãããªãã®ã§ãåœä»€ã®ãã³ãŒãæç¹ã§ã¯åå²å ã®äºæž¬ãé£ããã
ããããã¬ãžã¹ã¿éæ¥åå²ã䜿ãããå žåçãªã±ãŒã¹ã¯ã颿°(FORTRANã§ã¯ãµãã«ãŒãã³)ããã®æ»ãã®ã±ãŒã¹ã§ããã颿°ã®åŒã³åºãæã«Callåœä»€ãå®è¡ãããšãCallåœä»€ã®æ¬¡ã®åœä»€ã®çªå°ãç¹å®ã®ã¬ãžã¹ã¿ã«æžã蟌ãã§é¢æ°ã®å é ã«åå²ãã颿°ã®åŠçãçµãããšãReturnåœä»€ã§ãã®ã¬ãžã¹ã¿ã®å 容ãåå²å ã¢ãã¬ã¹ãšããŠã¬ãžã¹ã¿éæ¥åå²ãè¡ããšãCallåœä»€ã®æ¬¡ã®åœä»€ã«æ»ã£ãŠå®è¡ãç¶ç¶ãããããšã«ãªãã
äžè¬çã«ã¯ããã®é¢æ°åŒã³åºããšåŸ©åž°ã®ã·ãŒã±ã³ã¹ã¯ãã¢ã«ãªã£ãŠããããã€ãåŒã³åºããšåŸ©åž°ã«çšããåœä»€ã決ãŸã£ãŠããã®ã§ãåŒã³åºãæã«æ»ãã¢ãã¬ã¹ãå°çšã®ã¹ã¿ãã¯ã«ããã·ã¥ãã埩垰æã«ã¹ã¿ãã¯ããããããŠããã°ã埩垰ã¢ãã¬ã¹ãæ ŒçŽããã¬ãžã¹ã¿ã®å 容ãèªãŸãªããŠãæ£ããæ»ãå ã¢ãã¬ã¹ãåŸãããããã®ãããªã¹ã¿ãã¯ããReturn Address Stack(ãªã¿ãŒã³ã¢ãã¬ã¹ã¹ã¿ãã¯)ããšãããæè¿ã®ããã»ãµã§ã¯äžè¬çã«å®è£ ãããŠããã
ããããã¡ã€ã³ããã°ã©ã ãã颿°AãåŒã³åºãã颿°Aãã颿°BãåŒã³åºããšããã±ãŒã¹ã§ã颿°Bã§ãšã©ãŒãæ€åºããå Žåãªã©ãå žåçã§ããããåŒã³åºãéå±€ããã£é£ã°ããŠã¡ã€ã³ããã°ã©ã ã«çŽæ¥ãªã¿ãŒã³ãããããªã±ãŒã¹ãããããã®ãããªå Žåã«ã¯ããã·ã¥ãšãããã®ãã¢é¢ä¿ã厩ããŠããŸãã®ã§ãäºæž¬ã誀ã£ãŠããŸãã
ãŸããJavaãªã©ã®æè¿ã®ãªããžã§ã¯ãæåèšèªã§ã¯ãã¬ãžã¹ã¿éæ¥åå²ãå€ãããããŸã§è¿°ã¹ãŠããæ©æ§ã ãã§ã¯ãäºæž¬ãå°é£ã«ãªã£ãŠããŠãããšããåé¡ãããããªã¿ãŒã³ã¢ãã¬ã¹ã¹ã¿ãã¯ã§ãã¹ãŠã®ã¬ãžã¹ã¿éæ¥åå²ã®äºæž¬ãã§ãããšããããã§ã¯ãªãã
以äžãè¿°ã¹ãããã«ãè€æ°ã®åœä»€ãåæçºè¡ããã¹ãŒãã¹ã«ã©ããã»ãµã§ã¯å岿¹åã®ç¢ºå®ãåŸ ã£ãŠæ¬¡ã®åœä»€ã®ãã§ãããå§ããã®ã§ã¯ãé·ãã¹ããŒã«ãçºçããŠæ§èœãäžãããªããããåå²äºæž¬ãšããæ©æ§ãå°å ¥ããã倧ããªæ§èœæ¹åãå®çŸããããããŠãäºæž¬ç²ŸåºŠãæ¹åããŠããã«æ§èœãåäžãããããã«ãã©ãã©ããšè€éãªäºæž¬æ©æ§ãå®è£ ãããããã«ãªã£ãŠããã
ããããåå²äºæž¬æ©æ§ã®é«åºŠåã«ããæ§èœåäžã¯é£œåããåŸåã«ããããããå®è£ ããããã®ãããé¢ç©ãæ¶è²»é»åã®è² æ ãã¡ãªãããäžåãããã«ãªã£ãŠããŠããããŸããäºæž¬ãæåããã°è¯ãã®ã§ãããã倱æããå Žåã¯ãæ¬æ¥ã¯å®è¡ããå¿ èŠã®ãªãåœä»€ãå®è¡ããå岿¹åã確å®ããæç¹ã§ããããã®åœä»€ã®çµæãæšãŠãŠãæ£ããæ¹åã®åœä»€ãå®è¡ããããšã«ãªãããã®èª€ã£ãæ¹åã®åœä»€ã®å®è¡ã«äœ¿ããããšãã«ã®ãŒã¯ç¡é§ãªãšãã«ã®ãŒã§ããæ¶è²»é»åãå¢å€§ãããããã®ãããäºæž¬ã®é£ãã(æåçã®äœã)æ¡ä»¶åå²åœä»€ãç¡çã«äºæž¬ããããã«ãã¹ã¬ããæ¹åŒã§ãå¥ã¹ã¬ããã®ç¢ºå®ã«å®è¡ãããåœä»€ãå®è¡ãããªã©ãé»åãããã®åŠçåœä»€æ°ãå¢å ããããšããèãæ¹ãåºãŠããŠããããã«ãã¹ã¬ããã®ããã»ãµå šäœãšããŠæ§èœãšé»åå¹çãæ¹åããæ¹åãç ç©¶ãããŠããã
