ããããã¹ãŠããã·ã¢ã«ã©ã®ããã«åœ¹ç«ã€ã®ã§ããããïŒ ãã®ãããªãããžã§ã¯ãã«ã€ããŠã¯ã9æ18ã22æ¥ã«Tomskã§éå¬ãããäŒè°ã§ FPGAããŒããé åžããŸãã ã¢ã¹ã¯ã¯å·ç«å€§åŠãMIPTãMIETãICSTãã€ããžããŒã·ã§ã³ãã¯ãããžãŒãºããã·ã§ãã«ã€ã³ã¹ãã«ã¡ã³ããªã©ã®ä»£è¡šãåå ããŸãã 圌ãã¯å€§åŠã®ã«ãªãã¥ã©ã ãã©ã®ããã«æŽæ°ããä»æ¥ã®åŠçãæ°å¹ŽåŸã«è¥¿æŽã®äž»èŠäŒæ¥ã®ã¬ãã«ã§ãã·ã¢ã®ããããèšèšããããã«è°è«ããã§ãããã ãŸãã ã¹ã¿ãã¹ã©ãã»ãŒã«ããŒãã» ã¹ãã«ãã®æãã·ã³ãã«ãªschoolMIPSããå§ããŠãæè²ããã»ããµãäœæããæ¹æ³ãè°è«ããã»ãããŒã¹ã¯ãŒã«ããããŸãã
ããããããŠã³ãã³ãã¥ãŒã®åç©é€šããã®æåã®åçã§ããã€ãªãŒããšãã±ããã«å ããŠãå°ããªç®±ãäžå€®ã«èŠããŸãã ããã¯ããœããšãELASåäŒã®ãšã³ãžãã¢ã«ãã£ãŠèšèšãããMIRå®å®ã¹ããŒã·ã§ã³ã®ãªã³ããŒãã³ã³ãã¥ãŒã¿ãŒã§ ãçŸä»£ã®ELVISäŒç€ŸZelenogradã«å€æãããŸããã
ãããã£ãŠãæè²ãããžã§ã¯ãã®ãããã¯-20äžçŽåã°ã®å¯ãªæ°å幎ããéå§ïŒ
ç§ãã¡ã®åã«ã¯ããã³ã·ã«ããã¢å€§åŠã®ãã¬ã¹ããŒã»ãšãã«ãŒããšãžã§ã³ã»ã¢ãŒã¯ãªãŒã«ãã£ãŠ1943幎ãã1947幎ã«éçºããããæž©ããENIACãã¥ãŒãã³ã³ãã¥ãŒã¿ãŒã®ç®è¡é¢æ°ã®èšç®çµæã®ããŒãã«ãä¿åããããã®ãããã¯ããããŸãã ããæç¹ã§ãååã®ãžã§ã³ã»ãã©ã³ã»ãã€ãã³ã¯ããã®ãããã¯ã䜿çšããŠããã°ã©ã ãä¿åããããšãææ¡ããŸããã ããããŠãããã©ã³ã»ããŒã¡ã³ã®å»ºç¯ããçãŸããŸããã äžè¬ã«ããããããšãã«ãŒãã»ã¢ãŒã¯ãªãŒã»ãã©ã³ã»ãã€ãã³ã®å»ºç¯ããšåŒã¶ã®ã¯æ£ããã§ããããããšãã«ãŒããšã¢ãŒã¯ãªãŒã¯äžéã§ãã-圌ãã®ååã¯ç§å¯ã«ããããã©ã³ã»ãã€ãã³ã®ååã¯ããã§ã¯ãããŸããã§ããïŒã³ã³ãã¥ãŒã¿ãŒã¯ç ²å µããŒãã«ãèšç®ããããã®ãã®ã§ããïŒ
ãã®ã³ã³ãã¥ãŒã¿ãŒãFPGAã«å®è£ ããå ŽåãENIAC_Operating_Manualãã°ãŒã°ã«ã§æ€çŽ¢ããŸãããããããããªã«ã®ã³ãŒãã«å€ããã®ã¯ç°¡åã§ã¯ãããŸããïŒ
ãã©ã³ãžã¹ã¿ã¹ãŒããŒã³ã³ãã¥ãŒã¿ãŒIBM 7030 Stretchã ååïŒã¹ãã¬ãã-ãã¹ãã¬ãããïŒã¯ã以åã®IBM 704ã®100åã®éãã§ã³ã³ãã¥ãŒã¿ãŒãäœæãããšããäœæè ã®çŽæã«ç±æ¥ããŸãã ãããããã®ã倱æãã®éçšã§ãAybemã®ãšã³ãžãã¢ã¯ãã€ãã©ã€ã³ããã«ãã¿ã¹ã¯ãã¡ã¢ãªä¿è·ãæãã€ããŸããã
CDC 6600ïŒ1963ïŒã å²äžåã®ãæ¬ç©ã®ãã¹ãŒããŒã³ã³ãã¥ãŒã¿ãŒãšã䞊å€ããåœä»€å®è¡ãåããæåã®ããã»ããµãŒã ãã€ã¯ãã¢ãŒããã¯ãã£ã®è¬çŸ©ã§ã¹ã³ã¢ããŒãã®äŸãšããŠãŸã åºã䜿çšãããŠããŸãïŒããšãã°ã ããŒã¯ã¬ãŒã®æåã®ã°ãŒã°ã«ïŒéåžžã«æ°é®®ã§ã¯ãããŸãããïŒ CDC 6600ã¹ã©ã€ããåç §ïŒã ç°¡ç¥åãããCDC 6600ã®ããªã«ããã³FPGAãžã®å®è£ ã¯ãåŠçã®ã³ãŒã¹ã¯ãŒã¯ãããžã§ã¯ãã®æãæçœãªåè£ã®1ã€ã§ãã
ããã¯ããã€ã¯ãããã»ããµã¢ãŒããã¯ãã£ããã®CDC 6600ã®äžè¬çãªçµç¹ã«é¢ããæç²ã§ããã·ã³ãã«ãã€ãã©ã€ã³ããããããã«ãããã»ããµãŸã§ãJean-Loup BaerïŒ2009ïŒã 䞊åã§åäœããããã€ãã®æ©èœããã€ã¹ïŒãã€ãã©ã€ã³ãªãïŒãšãåœä»€éã®ããŒã¿äŸåé¢ä¿ã远跡ãããªãã©ã³ãã®æºåãã§ãããŸã§åœä»€ã®å®è¡ãäžæåæ¢ããã¹ã³ã¢ããŒãïŒ
IBM 360ïŒ1964-1978ïŒã ãã®ã³ã³ãã¥ãŒã¿ãŒã®ã©ã€ã³ã¯ããœé£ã®ã¹ãŒããŒã³ã³ãã¥ãŒãã£ã³ã°åœå±ã«ããITMiVTïŒBESMããã³ElbrusïŒã®æµæã«ããããããããœé£ã®CPSUã®äžå€®å§å¡äŒã«æ·±ãå°è±¡ãäžããEUã³ã³ãã¥ãŒã¿ãŒã®ååã§ãã¹ãŠã®ç€ŸäŒçåœã«IBM 360/370ã®ãœããšãå®è£ ãæ€ãä»ããŸããã ãããã®ã³ã³ãã¥ãŒã¿ãŒã¯ããæ¯ã®ä»äºã«ããããã¬ãžããæ代ã®ãœããšãã®åäŸãã¡ã®çµµã«ãæãããŠããŸãã
åççã«ã¯ãIBM / 360ã©ã€ã³ããçµ±äžã¢ãŒããã¯ãã£ïŒã³ãã³ãã·ã¹ãã ïŒ-ããŸããŸãªãã€ã¯ãã¢ãŒããã¯ãã£ã®å®è£ ïŒã³ã³ãã€ãŒããã€ã¹ãšããŒããŠã§ã¢ãããã¯ã®æ§é ïŒããšããé©æ°çãªã³ã³ã»ãããå°å ¥ããçç±ããããŸããã èšãæããã°ãåããœãããŠã§ã¢ããã®ã©ã€ã³ã®äœéãå®äŸ¡ãé«éã®äž¡æ¹ã®ã³ã³ãã¥ãŒã¿ãŒã§åã³ã³ãã€ã«ããã«åäœããå¯èœæ§ããããŸãã ïŒç¢ºãã«ããããã®ãã·ã³ã®ãœãããŠã§ã¢ã¯ãè¿ã ç»å Žããããã³ã³ãã¥ãŒã¿ãŒã®ãœãããŠã§ã¢ãšæ¯èŒããŠããŸãå奜çã§ã¯ãããŸããã§ããããIBMããŒããŠã§ã¢ãšã³ãžãã¢ã¯ããã責ããã¹ãã§ã¯ãªããIBMããã°ã©ããŒãšãã®ç®¡çè ã®è²¬ä»»ã§ããïŒã
ãã ããIBM / 360ãããžã§ã¯ãã¯ããã°ã©ãã³ã°ã®äžçã«ãå©çããããããŠããŸãã ã€ãªãŒãã®ãã³ãããã°ã®å·ŠåŽã«ããã¬ããªãã¯ãã«ãã¯ã¹ã®ãç¥è©±ã®ç·æããšããæ¬ããããŸããïŒ ãã®æ¬ã®èè ã¯OS / 360ãããžã§ã¯ããããŒãžã£ãŒã§ããããããžã§ã¯ãã«æ°ããããã°ã©ããŒãè¿œå ããããšã§æéãåããŠããã®ãä¿®æ£ããããšãããšãç¶æ³ãæªåããããšããããããŸããæéã¯ããã«èç«ã¡ãŸãã ãã®æ¬ã¯1975幎ã«åºçãããããã«ãœããšãé£éŠã«è»¢éãããããã€ãã®å Žæã§ã¯ãŸã é¢é£ããŠããŸãã
IBM / 360ã©ã€ã³ã¯ã1980幎代ã®ãRISCé©åœãã®éã«ç¡é¢ä¿ã«ãªã£ãããã€ã¯ãããã°ã©ãã³ã°ããšããã€ã¯ãã³ãŒããã®æŠå¿µãã¡ã€ã³ã¹ããªãŒã ã«å°å ¥ããŸããïŒçŸä»£ã®ãã€ã¯ãããã»ããµãŒã¯ããã¹ãŠãäŒããå¿ èŠããããããã»ãšãã©ãé ç·ãããŠããŸãïŒã ãããããããã®æŠå¿µã¯ã³ã³ãã¥ãŒã¿ãŒã¢ãŒããã¯ãã£ã«é¢ãããœããšãããã³ãœããšãåŸã®æç§æžã«æ·±ãæ ¹ä»ããŠããã人ã ã¯ãVerilogã¯ãã€ã¯ãããã°ã©ãã³ã°ã§ããïŒããšãã質åãããŸãããã®åŸããã€ã¯ãããã°ã©ãã³ã°ã§ã¯ãªãããšã説æããã«ã¯æéãããããŸãã
ã§ã¯ããªãFPGAã«IBM / 360ãå®è£ ããã®ã§ããããïŒ ãã¹ãŠãå®è£ ããããšã¯ç¡æå³ã§ããã1ã€ã®ã¢ãã«ã®1ã€ã®åŽé¢ãã€ãŸãIBM System / 360 Model 91ã¯ãCDC 6600ã®ã¹ã³ã¢ããŒã以äžã®ãã€ã¯ãã¢ãŒããã¯ãã£ã®çŸä»£ã®åŠçã³ãŒã¹ã¯ãŒã¯ãããžã§ã¯ãã«çŸããŸããç§ã¯ããããããTomasuloã¢ã«ãŽãªãºã ããç°åžžãªå®è¡ãæŽçããæ¹æ³ã«ã€ããŠè©±ããŸãããŒããŠã§ã¢ãã¬ãžã¹ã¿åã®å€æŽããšãäºçŽãããã¯ãã䜿çšããç®è¡æŒç®ïŒã¯ãããããã¯iPhoneã®ããã»ããµã«ããããŸãããããã¯å·šå€§ãªéºç©ã§ã¯ãããŸããïŒã ãã·ã¢èªçãŠã£ãããã£ã¢ã«ããã¹ãã®ã¢ã«ãŽãªãºã ã«é¢ããèšäºããªãããšã¯ããªãå¥åŠã§ããããŠã¯ã©ã€ãèªã«ã¯ãããŸãã
Tomasuloã¢ã«ãŽãªãºã ã¯ãããŒããŠã§ã¢ä¿è·ãåçãªããŒã èšç»ãå¹æçãªãããªãã¯ãã¡ã³ã¯ã·ã§ã³ãããã¯ãä»ããæµ·å€èšªåã®éä¿¡ã®ããã®ãã³ã³ãã¥ãŒã¿ãŒã¢ãŒããã¯ãã£ã®ãŠã£ã¶ãŒãã®ãããªãã®ã§ãã 1967幎ã®Robert Tomasuloã«ããæçåã®ã¢ã«ãŽãªãºã ïŒIBMã§åã€ããšãã§ããå ŽåïŒãããã³IBM System / 360 Model 91ã§ã®ã³ãæäœã«ãããããã¯æäœã®ãããªãå®è£ ã
Tomasuloã®ã¢ã«ãŽãªãºã ã«ãã£ãŠå°å ¥ãããäž»ãªé©æ°ã¯ãèšç®ã«åŸã£ãŠãããã€ã¹ã®ã¬ãžã¹ã¿ãå€æŽãããã¹ãŠã®æ©èœãããã¯ã®ãããã¯ãäºçŽããããŒã¿ãã¹ïŒSDLïŒãã¡ã¢ãªãããã¯ã«åæã«è»¢éã§ããããšã§ãã
ããã»ããµéçºã«é¢ããæãæçšãªçŸä»£ã®æ¬ã®1ã€ã§ãããJohn Paul ShenãšMikko H. Lipastiã«ããModern Processor DesignïŒFundamentals of Superscalar ProcessorsïŒ2013ïŒã¯ã以åã®IBM / 360-91æµ®åå°æ°ç¹ãããã¯ã®æ§åã瀺ããŠããŸãããã¹ããšåœŒã®åŸã ããã©ãŒãã³ã¹ïŒç°ãªãæäœã·ãŒã±ã³ã¹ã®ã¯ããã¯ãµã€ã¯ã«æ°ïŒãšæ倧ã¯ããã¯åšæ³¢æ°ïŒFPGAã«å®è£ ããå ŽåïŒãæ¯èŒããããšã«ãããåŠçãããžã§ã¯ãã§ãåããååŸããå®è¡ã§ããŸãã
ãã®åŸãShen-Lipastiã®æ¬ã¯ããã€ãããã¯ãã€ãã©ã€ã³ãåããææ°ã®ããã»ããµã§ãããã©ã®ããã«è¡ããããã説æããŠããŸãã
ãããŠãããã«1958幎ã«äœãããæ¥æ¬ã®åæã®ãã©ã³ãžã¹ã¿ãŒã®ã¡ã€ã³ãã¬ãŒã ã§ããNEAC 2203ããããŸãã æ¥æ¬ä»¥å€ã§ã¯è²©å£²ãããŠããŸããã äžè¬çã«ããã®åŸãäžçã®æ¥æ¬è£œåã«å¯Ÿãã軜èãªæ 床ããã£ãããæ¥æ¬äŒæ¥ã¯è¥¿æŽã®å¶ååŽæãæå¶ããæ¥æ¬ã®è³æ¬äž»çŸ©ã«åŸäºããã æåã«ã圌ãã¯åœå åžå ŽïŒäžçš®ã®ãèŒžå ¥ä»£æ¿åãïŒã§æè¡çãœãªã¥ãŒã·ã§ã³ããã¹ããããã®åŸãäžçåžå Žãç©æ¥µçã«æ»æããŸããã æ°å幎åŸãæ¥æ¬ã¯ã¢ã¡ãªã«ã®äŒæ¥ãã¡ã¢ãªããããšå®¶é»ã®åžå Žããè¿œãåºããåãNECã1992幎ã«æã匷åãªã¹ãŒããŒã³ã³ãã¥ãŒã¿ãŒã§ããNEC SX-3 / 44ãæ§ç¯ããŸããã åæã«ãç±³åœãžã®æ¿æ²»çäŸåãæžããå¿ èŠæ§ã«ã€ããŠã®å£°ãæ¥æ¬ã«çŸãå§ããé茞倧è£ã¯ãNOããšèšãã«ïŒãæ¥æ¬ã¯ãNOããšèšãããšãã§ããïŒãïŒãšããæ¬ãæžããŸããã æ®å¿µãªããããã®èããã®äžæã¯ãã®åŸã®çµæžå±æ©ãæã¡åããŸãããã1950ã1980幎代ã®æ¥æ¬ã®çµéšã¯ç 究ã«ãšã£ãŠèå³æ·±ããã®ã§ãã
ããã§ãåç©é€šãæ©ãæåã®éšåã¯çµããã§ãã å§ããæ°ã«å ¥ã£ãããã¯ã¬ã€ãšã€ãªã¢ãã¯ã®ã¹ãŒããŒã³ã³ãã¥ãŒã¿ãŒãHPããã³ã³ãã¥ãŒã¿ãŒãDECãšData Generalãæåã®ãã€ã¯ãããã»ããµãŒãšãã€ã¯ãã³ã³ãã¥ãŒã¿ãŒãRISCã¯ãŒã¯ã¹ããŒã·ã§ã³ãšLispãã·ã³ãã²ãŒã ã³ã³ãœãŒã«ãããããã«ã€ããŠè©³ãã説æããŸãã
ããããã¹ãŠã®ç®çãæãåºããŸãïŒ
å ¬æè²ã匷åããããã«ãã®ã¿ã€ãã®ãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã«èå³ãããå Žåã¯ãSystemVerilogãŸãã¯VHDLã§ããããèšè¿°ããGitHubã§ã³ãŒããã¢ããããŒãããHabréã§ãããã«é¢ããèšäºãïŒããã©ãŒãã³ã¹åæã䜿çšããŠïŒæžãæºåãã§ããŠããŸãããFPGAããŒãã¯ãããŸãã次ã®3ã€ã®å Žæã®ããããã§åœŒå¥³ïŒããã³ãããžã§ã¯ããæåããå Žåã¯æ°žç¶çã«ååŸïŒïŒ
1.ã¢ã¹ã¯ã¯ã®HSE MIEMã®Alexander Romanovã ã¢ã¬ã¯ãµã³ããŒã¯åŠçåãã«Verilogã³ãŒã¹ãå°å ¥ããéåžžã®ããŒãã«å ããŠã倧åŠã«ã¯ãAlteraãšXilinx FPGAã®ããŒãã®å¹ åºãã³ã¬ã¯ã·ã§ã³ããããŸããã©ã¡ããTerasicãšDigilentã®äžè¬çã«äœ¿çšãããããŒããšãææžåãäžååãªäžåœèªã®ããŒãã§ãïŒç¹ã«ãªãŒãã³ãœãŒã¹ãããžã§ã¯ãçšïŒã
2.ããšãã»ã¢ãã©ã»ã¢ã«ãããŒã®ã€ãã¹ã©ãã»ãŠã©ãºããŠã¯ã ç§ã¯å°åŠçåãã®ããã«ãœã³ã«æ¥ãŠããHabréã®èšäºã䌎ããããžã§ã¯ãæéãã®ããã«ãXilinx Artix-7ãæèŒããDigilent Cmod A7 35TããŒããããã€ãæ®ããŸããã
3.ããã·ãã«ã¹ã¯å·¥ç§å€§åŠã®ãŠã©ãžããŒã«ã»ãã¯ã«ã Tomskã§ã® 1é±éã®äŒè°çšã®ããŒãã»ããããããŸãã ãããã®ããã€ãïŒDigilent Nexys DDR4ïŒã¯ãŠã©ãžããŒã«ã«æ®ããããã€ãïŒTerasic DE0-CVïŒã¯ãã®ãããªãããžã§ã¯ãã«è¡ããŸãã
ã€ã³ã¹ãã¬ãŒã·ã§ã³ãšããŠã SparF ã Frantony ã oleh_plotnikov ã Kingit ã VMSS ã kirill90 ã Boris_92ã®Habräžã®FPGAããŒã¹ã®ããã»ããµã䜿çšããæ¢åã®ãããžã§ã¯ããèŠãããšãã§ããŸãïŒã³ã¡ã³ãã«è¿œå ã§ããŸãïŒã
ææ°ã®ããã»ããµèšèšã®åºç€ã«é¢ããè£è¶³
å€ä»£ã®ããã»ããµã¯ãã©ãžãªãã¥ãŒãããã©ã³ãžã¹ã¿ãããããªéç©åºŠã®è¶ å°ååè·¯ãããã³ç»é¢äžã§ã®ããŠã¹ã«ããåè·¯ã®æç»ã§æ§æãããŠããŸããã ä»ãããã¯ãã¹ãŠããã§ã¯ãããŸããã VerilogãASICãããã³FPGAãäœã§ããããããç¥ããªãèªè ãžã®èšèïŒ
Geektimes »Microelectronics squiresã®æçš¿ããã San Francisco Electronics Design Conferenceã®ãã㪠ïŒ
ãããŸã§ããã€ã¯ãé»åãããžã§ã¯ãã®é倧æã§ããå·¥å Žã§ã®ãã€ã¯ãåè·¯ã®è£œé ã«ã€ããŠèª¬æããŠããŸããã ãããããã®ãããªãããžã§ã¯ãã¯ã©ã®ããã«å§ãŸããŸããïŒ
éå»25幎éããã€ã¯ãåè·¯ã®èšèšã¯ãã»ãšãã©ã®å Žåãæ©åšèšè¿°VerilogïŒ[以å]ãšãŒãããããã³è»é-VHDLïŒã®èšèªã§èšè¿°ããããã®åŸãç¹å¥ãªããã°ã©ã ïŒè«çåæïŒãèšèšãã¯ã€ã€ãšè«çããªããã£ãã®ã°ã©ããå¥ã®ããã°ã©ã ïŒéçã¿ã€ãã³ã°è§£æïŒã¯ãèšèšè ã«é床ããžã§ããã«é©åãããã©ãããäŒãã3çªç®ã®ããã°ã©ã ïŒé 眮é ç·ïŒã¯ãã®èšèšããããã®ãµã€ãã«é 眮ããŸãã
ãã¶ã€ã³ããã¹ãŠã®æ®µéãééãããšãïŒããªãã³ãŒãã£ã³ã°ããããã°ãæ€èšŒãåæãéçã¿ã€ãã³ã°è§£æãããã¢ãã©ã³ãé 眮é ç·ãå¯çæœåºãªã© -å·¥å Žã«éä¿¡ãããGDSIIãšãããã¡ã€ã«ãå€æããå·¥å ŽãããããçŒããŸãã ãã®ã¿ã€ãã®æãæåãªå·¥å Žã¯ãå°æ¹Ÿåå°äœè£œé äŒç€ŸãŸãã¯TSMCãææããŠããŸãã
Habrahabrã®æçš¿ããFPGAã䜿çšããŠéã®éçºãéå§ããæ¹æ³-ã¹ããããã€ã¹ãããã®æé ïŒ
æãåçŽãªããŒãžã§ã³ã§ã¯ãFPGAã¯åçš®ã®ã»ã«ã®ãããªãã¯ã¹ã§æ§æãããåã»ã«ã¯ã³ã³ãã£ã®ã¥ã¬ãŒã·ã§ã³ã¡ã¢ãªã®ãããã«æ¥ç¶ããããã«ããã¬ã¯ãµãŒã䜿çšããŠæ©èœã«å€æŽã§ããŸãã 1ã€ã®ã»ã«ã¯ã4ã€ã®å ¥åãš1ã€ã®åºåãæã€ANDã²ãŒãã«ãªããå¥ã®ã»ã«ã¯ã·ã³ã°ã«ãããã¬ãžã¹ã¿ãªã©ã«ãªããŸãã ãããã·ãŒã±ã³ã¹ãã¡ã¢ãªããã³ã³ãã£ã®ã¥ã¬ãŒã·ã§ã³ã¡ã¢ãªã«ããŒãããŸããç¹å®ã®é»ååè·¯ã¯ãããã»ããµããã£ã¹ãã¬ã€ã³ã³ãããŒã©ãªã©ã®FPGAã§åœ¢æãããŸãã
FPGA / FPGAã¯ããã»ããµãŒã§ã¯ãããŸãã.FPGAã®ãããã°ã©ãã³ã°ãïŒFPGAã®æ§æã¡ã¢ãªãŒãæºããïŒã«ãã£ãŠé»ååè·¯ïŒããŒããŠã§ã¢ïŒãäœæããŸãããããã»ããµãŒïŒåºå®ããŒããŠã§ã¢ïŒã®ããã°ã©ãã³ã°æã«ã¯ãããã«æžãããäžé£ã®ããã°ã©ã åœä»€ã®ãã§ãŒã³ãã¹ãªããããŸãïŒãœãããŠã§ã¢ïŒã