ææïŒéè·ïŒ
ã¹ã€ã¹é£éŠå·¥ç§å€§åŠïŒETHïŒ
ãã¥ãŒãªãããã¹ã€ã¹
1988幎ãJurg Gutknechtãšç§ã¯ã以åã«éçºããPascalãšModula-2ã®2ã€ã®ä»ã®èšèªã®åŸç¶ã§ããOberonããã°ã©ãã³ã°èšèª[1ã2]ãå®æãããå ¬éããŸããã Oberonèšèªã¯ãããšããšModula-2ãããåççãã€å¹æçã§ããããã«èšèšãããŠãããããåŠè¡æè²ã·ã¹ãã ã®åŠçãã³ã³ãã¥ãŒã¿ãŒãµã€ãšã³ã¹ãç¿åŸãããããªããŸããã 1990幎ã«ãéæããããã®ã«ãšã©ãŸãããWindowsãšã¯ãŒãããã»ãã·ã³ã°æ©èœã䜿çšããŠãã¯ãŒã¯ã¹ããŒã·ã§ã³çšã®ææ°ã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ïŒOSïŒOberonãæ§ç¯ããŸããã 次ã«ãOberonã³ã³ãã€ã©ãšåãååã®OSã®äž¡æ¹ã®è©³çŽ°ãæããã«ããæ¬ãåºçããŸããã ãProject Oberonããšããã¿ã€ãã«ã®æ¬ã«ã¯ãã·ã¹ãã ã®ãœãŒã¹ã³ãŒããå«ãŸããŠããŸããã
æ°å¹ŽåŸãå人ã®ããŒã«ãªãŒãã¯ãã·ã¹ãã ã¢ãŒããã¯ãã£ãç 究ããä¿¡é Œæ§ã®é«ãã·ã¹ãã ããŒãããæ§ç¯ããã人ã«è¯ãåºçºç¹ãäžããããšã®éèŠæ§ããããã®æ¬ã®åçãåºçããããšãææ¡ããŸããã
ããããæ·±å»ãªé害ãçããŸããã å ã®ã³ã³ãã€ã©ã¯ããã§ã«åžå Žãã姿ãæ¶ããããã»ããµçšã«äœæãããŸããã ããã§ãææ°ã®ããã»ããµãŒåãã«ã³ã³ãã€ã©ãŒãæžãçŽãããšã«ããŸããã ããããå°ãã®ç 究ã®éçšã§ãæ確ããèŠåæ§ãåçŽãã®åºæºãå®å šã«æºããããã»ããµãŒãèŠã€ããããšãã§ããŸããã§ããã ãã®ãããç¬èªã®ããã»ããµãèšèšããå¿ èŠããããŸããã ãã®ã¢ã€ãã¢ã¯ããœãããŠã§ã¢ã·ã¹ãã ãäœæããã®ãšåãããã«ããŒããŠã§ã¢ãäœæã§ããææ°ã®PPVMãããïŒãŠãŒã¶ãŒããã°ã©ããã«ã²ãŒãã¢ã¬ã€ãFPGAïŒã®ãããã§å®çŸããŸããã ããã«ãXilinx®FPGAãéžæããããšã§ã1990幎ã®åœåã®ãããžã§ã¯ããã倧ããéžè±ããããšãªããã·ã¹ãã ãäœãçŽãããšãã§ããŸããã
æ°ããRISCããã»ããµã¯ã1ã¡ã¬ãã€ãã®ã¹ã¿ãã£ãã¯ã¡ã¢ãªã¢ãžã¥ãŒã«ïŒSRAMïŒãåããäœã³ã¹ãã®DigilentSpartan®-3ããŒãã«å®è£ ãããŠããŸãã ããŒããŠã§ã¢ã®æ¹åã¯ãã¹ãŠãããŠã¹ã€ã³ã¿ãŒãã§ã€ã¹ãšãå€ãã·ã¹ãã ã®ããŒããã©ã€ãã眮ãæããSDã«ãŒãã«é¢ãããã®ã§ããã
ã·ã¹ãã å šäœã®æ¬ãšãœãŒã¹ã³ãŒãã¯ã projectoberon.com Webãµã€ãã§å ¥æã§ããŸã[3,4,5]ã å¥ã®S3RISCinstall.zipãã¡ã€ã«ãå©çšã§ããŸãã ããã«ã¯ãåœä»€ãSDã«ãŒãã®ãã¡ã€ã«ã·ã¹ãã ã®ã€ã¡ãŒãžãFPGAã®ãããæ§æãã¡ã€ã«ïŒSpartan-3ããŒãã®ãã©ãã·ã¥ã¡ã¢ãªã®PROMãã¡ã€ã«ã®åœ¢åŒïŒãSDã«ãŒãã®ããŒããŠã§ã¢ã€ã³ã¿ãŒãã§ã€ã¹ã®èšèšéšåãããã³ããŠã¹ãå«ãŸããŸãã
RISCããã»ããµãŒ
ããã»ããµã¯RISC5 Verilogã¢ãžã¥ãŒã«ã§è¡šãããç®è¡è«çãŠãããïŒALUïŒã16åã®32ãããã¬ãžã¹ã¿ã®é åãããã³IRåœä»€ã¬ãžã¹ã¿ãšPCããã°ã©ã ã«ãŠã³ã¿ãåããå¶åŸ¡ã¢ãžã¥ãŒã«ã§æ§æãããŠããŸãïŒ è©³çŽ° -ãããTranslããåç § ïŒã
ããã»ããµã¯20ã®åœä»€ãåŠçããŸãã4ã€ã¯ç§»åãã·ãããå転çšã è«çæŒç®çšã«4ã€ã æŽæ°æŒç®ã®å Žåã¯4ã æµ®åå°æ°ç¹èšç®çšã«4ã€ã 2ã€ã¯ã¡ã¢ãªã¢ã¯ã»ã¹çšã2ã€ã¯åå²çšã§ãã
RISC5ã¯ãã¡ã¢ãªãšSRAMïŒ256 MB x 32ãããïŒã«ãããã³ã°ãããããŸããŸãªããã€ã¹ã®ã€ã³ã¿ãŒãã§ã€ã¹ãå«ãRISC5Topã³ã³ããã¹ãããã€ã³ããŒããããŸãã ã·ã¹ãã å šäœïŒå³1ïŒ
å³ 1. Verilogã¢ãžã¥ãŒã«ã®ã·ã¹ãã å³ã
次ã®Verilogã¢ãžã¥ãŒã«ãå«ãŸããŸãïŒåã¢ãžã¥ãŒã«ã®è¡æ°ã衚瀺ãããŸãïŒã
RISC5ããã | ç°å¢ | 194 |
Risc5 | ããã»ããµ | 201 |
ä¹æ° | æŽæ°æŒç® | 47 |
ä»åã | 24 | |
FPAdder | æµ®åå°æ°ç¹æŒç® | 98 |
FPMultiplier | 33 | |
FPDivider | 35 | |
SPI | SDã«ãŒããšãã©ã³ã¹ããã¿ãŒ/ã¬ã·ãŒã㌠| 25 |
Vid | 1024 x 768ãããªã³ã³ãããŒã©ãŒ | 73 |
PS2 | ããŒããŒã | 25 |
ããŠã¹ | ããã¿ | 95 |
RS232T | RS232ãã©ã³ã¹ããã¿ | 23 |
RS232R | RS232åä¿¡æ© | 25 |
çœé»VGAãã£ã¹ãã¬ã€ãã¡ã¢ãªã«ãããã³ã°ããŠããã¯ã»ã«ããã1024 x 768 x 1ããã= 98.304ãã€ãïŒ1ã¡ã¬ãã€ãã§å®è³ªçã«äœ¿çšå¯èœãªã¡ã¢ãªã®10ïŒ ïŒãå æããããã«ããŸããã å ã®ã·ã¹ãã ã®80ã¡ã¬ãã€ãã眮ãæããSDã«ãŒããžã®ã¢ã¯ã»ã¹ã¯ããã€ããŸãã¯32ãããã¯ãŒããåãå ¥ããŠã·ãªã¢ã«åããæšæºSPIã€ã³ã¿ãŒãã§ã€ã¹ãä»ããŠå®è¡ãããŸãã ããŒããŒããšããŠã¹ã¯ãæšæºã®PS-2ã·ãªã¢ã«ã€ã³ã¿ãŒãã§ã€ã¹ãä»ããŠæ¥ç¶ãããŸãã ããã«ãã·ãªã¢ã«éåæRS-232ã±ãŒãã«ãšå€ç®ç8ããããã©ã¬ã«I / Oã€ã³ã¿ãŒãã§ã€ã¹ããããŸãã RISC5Topã¢ãžã¥ãŒã«ã«ã¯ãããªç§ã«ãŠã³ã¿ãŒãå«ãŸããŠããŸãã
Oberonãªãã¬ãŒãã£ã³ã°ã·ã¹ãã
OSãœãããŠã§ã¢ã«ã¯ãã¬ããŒãžã³ã¬ã¯ã¿ãŒãåããã¡ã¢ãªã¢ãã±ãŒã¿ãŒãããŒãããŒããŒãåãããã¡ã€ã«ã·ã¹ãã ãããã¹ãã·ã¹ãã ããã¥ãŒã¢ãŒã·ã¹ãã ãããã³ããã¹ããšãã£ã¿ãŒãå«ãã«ãŒãã«ãå«ãŸããŠããŸãã
ãOberonããšåŒã°ããã¢ãžã¥ãŒã«ãäžå€®ã¿ã¹ã¯ãããŒãžã£ãŒã§ããããã·ã¹ãã ããåºæ¬çãªã³ãã³ãã¢ãžã¥ãŒã«ã§ãã ã¢ã¯ã·ã§ã³ã¯ãä»»æã®ãã£ã¹ãã¬ã€ã®ãã©ãŒã ãMPãã®ããã¹ãäžã§ããŠã¹ã®äžãã¿ã³ãã¯ãªãã¯ããããšã§åŒã³åºãããŸããããã§ãPã¯ã¢ãžã¥ãŒã«Mã§å®£èšãããããã·ãŒãžã£ã®ååã§ããMã䜿çšã§ããªãå Žåãèªåçã«ããŒããããŸãã
ã»ãšãã©ã®ããã¹ãç·šéã³ãã³ãã¯ãéåžžã®ããŠã¹ã¯ãªãã¯ã§åŒã³åºãããŸããå·Šãã¿ã³ããã£ã¬ããã«ãªããããã¹ãå ã®çŸåšã®äœçœ®ãããŒã¯ããå³ãã¿ã³ãããã¹ãã匷調衚瀺ããŸãã
ã«ãŒãã«ã¢ãžã¥ãŒã«ã«ã¯ããã£ã¹ã¯ã¹ãã¢ç®¡çãšã¬ããŒãžã³ã¬ã¯ã¿ãå«ãŸããŠããŸãã
ãã¥ãŒã¢ã¯ã¿ã€ã«ç¶ã«é 眮ãããéãªã£ãŠããŸããã æšæºã¬ã€ã¢ãŠãã§ã¯ãèŠèŽè ã®æ°ã«å¶éã®ãªã2ã€ã®åçŽãã©ãã¯ã衚瀺ãããŸãã ããããå¢æžããããã¿ã€ãã«ããŒã«ãã©ãã°ãããã§ããŸãã å³ å³2ã¯ãããŒããŒããšããŠã¹ã䜿çšããŠSpartan-3ããŒãã«æ¥ç¶ãããã¢ãã¿ãŒã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã瀺ããŠããŸãã
å³ 2.ã¢ãã¿ãŒã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãšSpartan-3ã®å³äžã
ããŒããããã·ã¹ãã ã¯ãã¢ãžã¥ã©ãŒã¹ããŒã¹ã§112.640ãã€ãïŒ21ããŒã»ã³ãïŒãããŒãã§16.128ãã€ãïŒ3ããŒã»ã³ãïŒãå æããŸãã å³ã«ç€ºã次ã®ã¢ãžã¥ãŒã«ïŒåè¡æ°ïŒã§æ§æãããŸãã 3ïŒ
ã«ãŒãã« | 271ïŒå éšã³ã¢ïŒ |
Filedir | 352 |
ãã¡ã€ã« | 505 |
ã¢ãžã¥ãŒã«ïŒããŒããŒïŒ | 226 |
èŠèŽè | 216ïŒå€åŽã³ã¢ïŒ |
ããã¹ã | 532 |
ãªããã³ | 411 |
ã¡ãã¥ãŒãã¥ãŒã¢ | 208 |
ããã¹ããã¬ãŒã | 874 |
ã·ã¹ãã | 420 |
ç·šé | 233 |
èµ·åæãŸãã¯åèµ·åæã«ã·ã¹ãã ãããŒãããã®ã«2ç§ããããããªãããšã«æ³šæããŠãã ãããããã«ã¯ãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®ããã®ãã¡ã€ã«ãã£ã¬ã¯ããªã®ã¹ãã£ã³ãå«ãŸããŸãã
Oberonã³ã³ãã€ã©ãŒ
ã³ã³ãã€ã©ã¯ã·ã¹ãã ã«çµã¿èŸŒãŸããŠãããåçŽãªååž°çãããããŠã³è§£ææ¹æ³ã䜿çšããŠããŸãã ã³ã³ãã€ã©ã®ã¢ã¯ãã£ãåã¯ãORP.Compile @ã³ãã³ãã䜿çšããŠè¡ãããŸãã ããŒãµãŒã¯ãèå¥åãæ°åãããã³ç¹æ®æåïŒBEGINãENDã+ãªã©ïŒãåŠçããã¹ãã£ããŒããæåãåãåããŸãã ãã®èšèšã¯ãå€ãã®ã¢ããªã±ãŒã·ã§ã³ã§ãã®é©åæ§ãšåªé ãã蚌æããŠãããç§ã®èæžCompiler Construction [6,7]ã§èª¬æãããŠããŸãã
ããŒãµãŒã¯ãã³ãŒãçæã¢ãžã¥ãŒã«ããããã·ãŒãžã£ãåŒã³åºããã³ãŒãé åã«åœä»€ãçŽæ¥è¿œå ããŸãã åå²åœä»€ã¯ããã¹ãŠã®ãžã£ã³ããã€ã³ããæ¢ã«ããã£ãŠããã³ã³ãã€ã«ã®æåŸã«ãžã£ã³ãã¢ãã¬ã¹ã«ãã£ãŠçæãããŸãã
ãã¹ãŠã®å€æ°ã¢ãã¬ã¹ã¯ãããŒã¹ã¬ãžã¹ã¿ãåºæºã«ããŠèšç®ãããŸãã ããã¯ãããŒã«ã«å€æ°ïŒå®è¡æã«ããã·ãŒãžã£ãå ¥åãããšãã«èšå®ïŒã®å Žåã¯R14ïŒã¹ã¿ãã¯ãã€ã³ã¿ãŒïŒãã°ããŒãã«å€æ°ããã³ã€ã³ããŒããããå€æ°ã®å Žåã¯R13ã§ãã ããŒã¹ã¢ãã¬ã¹ã¯ãã¢ãã¬ã¹ãã¬ãžã¹ã¿R12ã«æ ŒçŽãããŠããã°ããŒãã«ã¢ãžã¥ãŒã«ããŒãã«ããã®èŠæ±ã«å¿ããŠããŒããããŸãã ã¬ãžã¹ã¿R15ã¯ãRISCã¢ãŒããã¯ãã£ã«åºã¥ããŠãªã¿ãŒã³ã¢ãã¬ã¹ã«äœ¿çšãããŸãã æ®ãã®ã¬ãžã¹ã¿ãŒR0-R11ã¯ãåŒã®è©äŸ¡ãšæç¶ããã©ã¡ãŒã¿ãŒã®åãæž¡ãã«äœ¿çšã§ããŸãã
ã³ã³ãã€ã©ãŒå šäœã¯ã4ã€ã®æ¯èŒçå°ããå¹ççãªã¢ãžã¥ãŒã«ã§æ§æãããŠããŸãïŒåè¡ã®æ°ã瀺ãããŠããŸãïŒã
ORP | ããŒãµãŒ | 968 |
ORG | ã³ãŒããžã§ãã¬ãŒã¿ãŒ | 1120 |
ãªãŒã | ããŒã¹ãã | 435 |
ORS | ã¹ãã£ã㌠| 311 |
ã³ã³ãã€ã©ã¯ã115,912ãã€ãïŒ22ããŒã»ã³ãïŒã®ã¢ãžã¥ã©ãŒã¹ããŒã¹ãš17,508ãã€ãïŒ4ããŒã»ã³ãïŒã®ããŒãïŒã³ã³ãã€ã«åïŒãå æããŸãã ãœãŒã¹ã³ãŒãã®ãµã€ãºã¯çŽ65ãããã€ãã§ãã ã³ã³ãã€ã©èªäœã®ã³ã³ãã€ã«ã«ã¯ã25 MHz RISCããã»ããµã§æ°ç§ããããããŸãã[8]ã
ã³ã³ãã€ã©ãŒã¯ãåžžã«é åã€ã³ããã¯ã¹ãšNILãã€ã³ã¿ãŒã®ãã§ãã¯ãçæããŸãã ããã«ããããã©ãããçæãããŸãïŒãã©ããããã©ãã-ãããTranslãïŒéåã®å Žåã ãã®ææ³ã«ããããšã©ãŒãæå·ã«å¯Ÿããé«åºŠãªä¿è·ãä¿èšŒãããŸãã å®éãPUTãCOPYãªã©ã®SYSTEMæ¬äŒŒã¢ãžã¥ãŒã«ã®æäœã䜿çšããããšã«ãã£ãŠã®ã¿ãã·ã¹ãã ã®æŽåæ§ã䟵害ãããå¯èœæ§ããããŸãã ãããã®æäœã¯ãéãããç¯å²ã§äœ¿çšããå¿ èŠããããããã€ã¹ãã©ã€ããŒã¢ãžã¥ãŒã«ã§ã®ã¿äœ¿çšããå¿ èŠããããã€ã³ããŒããªã¹ãã®SYSTEMãšããååã§ç°¡åã«èŠã€ããããšãã§ããŸãã ã·ã¹ãã å šäœã¯ãã¢ã»ã³ãã©ã³ãŒãã䜿çšããã«Oberonèªäœã§ããã°ã©ã ãããŸãã
Digilent Spartan-3ããŒããéžæããçç±ã¯ãæé ãªäŸ¡æ Œãšã·ã³ãã«ãã§ãæè²æ©é¢ãã¯ã©ã¹ã®ã»ããå šäœãååŸããã®ã«é©ããŠããããã§ãã ãŸãã倧ããªå©ç¹ã¯ãããŒãäžã«éçRAMãååšããããšã§ããããã«ãããçŽæ¥æ¥ç¶ïŒã€ã³ã¿ãŒãã§ãŒã¹æ¥ç¶ïŒã§ããããã«ãªããŸãïŒãã€ããèªã¿åãããšãå¯èœïŒã æ®å¿µãªãããææ°ã®ããŒãã¯ãã€ãããã¯RAMã䜿çšããŠããŸãããã€ãããã¯RAMã¯ã容éã¯å€§ãããã®ã®æ¥ç¶ãé£ãããæŽæ°ãšåæåïŒãã£ãªãã¬ãŒã·ã§ã³ïŒã®ããã«è¿œå ã®åè·¯ãå¿ èŠã§ãã ãã®ãããªåè·¯ã¯ãã¹ã¿ãã£ãã¯RAMãæèŒããããã»ããµå šäœãšåããããè€éã«ãªããŸãã ã³ã³ãããŒã©ãŒããããäžã«çŽåããããšããŠããå¶åŸ¡ã®ããã«ãã¹ãŠã«ã¢ã¯ã»ã¹ã§ããããã«ãããšããååã«éåããŠããŸãã
æåŸã«èã
40幎以äžåãCãHoarã¯ãç§åŠæè¡ã®ãã¹ãŠã®éšéã§ãåŠçã¯èªåã®å®éšçãªçµéšãåŸãåã«ãæ·±å»ãªæ§é ã®å€æ°ã®äŸã®åœ±é¿ãåããŠãããšææããŸããã ããã°ã©ãã³ã°ããã³èšèšããã°ã©ã ã¯ãã®ãã©ãã€ã ã匷調ããŠããŸãã åŠçã¯ãããŸããŸãªãã¿ãŒã³ãå匷ããã®ã§ã¯ãªããæåããããã°ã©ã ãäœæããå¿ èŠããããŸãã
ãã®æãããç¶æ³ã®çç±ã¯ãé©æ ŒãªäŸã®ããæç®ãã»ãšãã©ãªãã£ãããã§ãã ãããã£ãŠãç§ã¯ç¶æ³ãä¿®æ£ããããšã決å®ãã1975幎ã«ãã¢ã«ãŽãªãºã ãšããŒã¿æ§é ããšããæ¬ãæžããŸããã å°æ¥ïŒJ. Gutknechtãšãšãã«ïŒããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®ã³ãŒã¹ãæããäžç°ãšããŠãOberonã·ã¹ãã ïŒ1986ã88幎ïŒãèšèšããŸããã
ãã°ããããŠãã·ã¹ãã ãåçã«è€éã«ãªãããµã€ãºã倧ãããªã£ããšããäºå®ã®ãããããã°ã©ãã³ã°ã®æè²ã¯ç®ç«ã£ãæ¹åãåããŸããã§ããã ãªãŒãã³ãœãŒã¹ã¯èªèãããŸããããç¶æ³ãå€ããããšã¯ã§ããŸããã§ãããã»ãšãã©ã®ããã°ã©ã ã¯ã§ããã ãæ©ãå®è¡ããããã«äœæããããã®ã§ããã人ãããããããããç解ããããã§ã¯ãããŸããã
ç§ã¯ããã¹ãŠã®ããã°ã©ã ãã³ã³ãã¥ãŒã¿ãŒã ãã§ãªãã人éã®ç解ã®ããã«ãäœæãããã¹ãã§ãããšãã倧èãªä»®å®ãç¶ããŠããŸãã ãããã¯å©çšå¯èœã§ãªããã°ãªããŸããã ãã®ã¿ã¹ã¯ã¯ãããšãæ£ãããŠå¹ççã§ãã£ãŠããå®è¡å¯èœããã°ã©ã ãäœæãããããã¯ããã«è€éã§ãã ããã¯ãã¢ã»ã³ãã©ãŒã®æ¿å ¥ããªãããšãæå³ããŸãã
人çèŠå ãç¡èŠããçµæãã©ãã«ã§ãæ éã«èšèšãããã¢ããªã±ãŒã·ã§ã³ãååšããããããã°ã«ãã£ãŠåäœç¶æ ã«ãªã£ããšããäºå®ã«ã€ãªãããæã«ã¯æ²èŠ³çãªçµæããããããŸãã ãããããããå®çŸããããã«ã¯ãåçŽããšç§©åºãå®ããäžå¿ èŠãªå®ç³é¡ãæåŠããå£withã§éãé¿ããŠãåŸæ¥ãšäŸ¿å©ãåºå¥ããããšã¯äŸ¡å€ããããŸãã
ãã®ãããªã·ã¹ãã ã®ãµã€ãºãå°ããããšã¯ãå€ãã®ããšãå®çŸã§ããããšã瀺ããŠããŸãã Oberon OSã®ãµã€ãºã¯ããã¡ã€ã«ã·ã¹ãã ãããã¹ããšãã£ã¿ãŒããŠã£ã³ããŠã·ã¹ãã ãå«ã¿ãŸãããææ°ã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãšæ¯èŒããŠéæ¹ããªãå°ããã§ãã å¯äœçšãšããŠãããã€ãã®åçŽãªã«ãŒã«ã¯ãå°æ¥ã®åç §ã®ããã«éåžžã«ç°¡åã«ç¿åŸã§ããŸãã
ãããŠæåŸã«ãç°¡æœãã®å©ç¹ã¯ãããã¯ãã¢ãªã©ã®æªç¥ã®æ©èœãæããããšãªãããã®ãããªã·ã¹ãã ãå®å šã«æ§ç¯ã§ããããšã§ãã ããã¯éèŠãªæ©èœã§ãããã·ã¹ãã ã®æŽåæ§ã«å¯Ÿããæ»æã®å±éºæ§ãé«ãŸã£ãŠããããšãèãããšãã»ãã¥ãªãã£ã®åé¡ã«ãšã£ãŠéèŠãªã·ã¹ãã ã«ãšã£ãŠéåžžã«éèŠã§ãã åæ§ã«ãã·ã¹ãã ã®ããŒããŠã§ã¢ã«é ãããéšåãå«ãŸããŠããªãããšãéèŠã§ãã å šäœãç解ããã®ãå°é£ãªåºç€ã®äžã«æ§ç¯ãããã·ã¹ãã ã«ã€ããŠã¯ã誰ãä¿èšŒã§ããŸããã
æè¬ã®æ°æã¡
ããŒã«ã»ãªãŒãã®è²Žéãªè²¢ç®ã«æè¬ããŸãã 圌ã¯ãProject Oberonããšããæ¬ãç·šéããããšãææ¡ããã·ã¹ãã å šäœãFPGAã«åå®è£ ããããšãææ¡ããŸããã ã»ãã¯ã¹ã¯å°œããããšã®ãªãå±ãŸãã®æºã§ããã ãã£ã¹ã¯ãSDã«ãŒãã«äº€æããããšã圌ã®ã¢ã€ãã¢ã§ãããSPIãPS-2ãVID Verilogã€ã³ã¿ãŒãã§ã€ã¹ãæäŸããŠããŸããã
åç §è³æ
1.www.inf.ethz.ch/personal/wirth/Oberon/Oberon07.Report.pdf
2. www.inf.ethz.ch/personal/wirth/Oberon/PIO.pdf
3. www.inf.ethz.ch/personal/wirth/ProjectOberon/index.html
4. www.inf.ethz.ch/personal/wirth/Oberon/PIO.pdf
5. www.inf.ethz.ch/personal/wirth/Oberon/Oberon07.Report.pdf
6. www.inf.ethz.ch/personal/wirth/CompilerConstruction/CompilerConstruction1.pdf
7. www.inf.ethz.ch/personal/wirth/CompilerConstruction/CompilerConstruction2.pdf
8. www.inf.ethz.ch/personal/wirth/ProjectOberon/PO.Applications.pdfïŒ12ç« ïŒ
ã¢ããª
Lolaã®èšèªãšVerilogã§ã®ç¿»èš³
Lolaãšããååã®ããŒããŠã§ã¢èšè¿°èšèªïŒHDLïŒã¯ãããŒããŠã§ã¢èšèšã®åºç€ãæããããã«1990幎ã«å®çŸ©ãããŸããã ããã¹ãå®çŸ©ãåè·¯å³ã«çœ®ãæããå§ãããã®æç¹ã§æåã®FPGAãå©çšå¯èœã«ãªããŸãããããŸã ç£æ¥ã¬ãã«ã«ã¯éããŠããŸããã§ããã Lolaã®å ŽåãFPGAãžã®ããŒãã«é©ããããããã¡ã€ã«ãçæããã³ã³ãã€ã©ãäœæãããŸããã ããããã¡ã€ã«åœ¢åŒã¯ãAlgotronixãInc.ã«ãã£ãŠé瀺ãããŠããŸãã ããã³Concurrent Logic Inc. ã©ã¡ãã®åœ¢åŒã§ããèªåé ç·ã«æé©ãªãéåžžã«åçŽãªæ§é ã®ã»ã«ã§ã®äœæ¥ãå¯èœã«ãªããŸããã
FPGAçšã«OberonãäœãçŽããšããç§ã®ãããžã§ã¯ãã®çµæã«ãããšãLolaã埩掻ããããšããã¢ã€ãã¢ãçãŸããŸããã ã¶ã€ãªã³ã¯ã¹FPGAã»ã«ã¯ããè€éã§ãããããã¶ã€ãªã³ã¯ã¹ããã®ç¹èš±ããããã¡ã€ã«åœ¢åŒãéãããšãæåŠãããšããäºå®ã«ããããããé 眮ãšé ç·ãå®è£ ããåªåãæ¢è¡ããŸããã§ããã
æçœãªæ±ºå®ã¯ãç¬èªã®ããããã¡ã€ã«ãçæãããã¶ã€ãªã³ã¯ã¹ãç¹å¥ãªããŒã«ãæäŸããèšèªãžã®ç¿»èš³ãèš±å¯ãããããªLolaã³ã³ãã€ã©ãæ§ç¯ããããšã§ããã VerilogãéžæããŸããã ãã®è§£æ±ºçã¯ãããèŽ æ²¢ãªåé¿çãæ瀺ããŠããŸãããŸããLolaã¢ãžã¥ãŒã«ã解æããŠãã翻蚳ããæçµçã«å床解æããå¿ èŠããããŸãã ãããã®ãã¹ãŠã®æ®µéã§ãLolaã³ã³ãã€ã©ã«é©åãªãšã©ãŒå¶åŸ¡æ©èœãšåãã§ãã¯æ©èœãããããšã確èªããå¿ èŠããããŸãã
Lola-2ã®éçºãæšé²ããã«ã¯ãLolaäžã®RISC5ããã»ããµã®ãã¹ãŠã®ã¢ãžã¥ãŒã«ãåå®åŒåããå¿ èŠããããŸããã ãããè¡ãããŸããã
èããŒã©
Lolaã¯ãOberonã¹ã¿ã€ã«ã®ç°¡æœã§ç°¡æœãªèšèªã§ãïŒ www.inf.ethz.ch/personal/wirth/Lola/Lola2.pdfãåç §ïŒã ç°¡æœã«ããããã«ãããã§ã¯Lolaã®ããã¹ãã®äžäŸã瀺ããŸãïŒå³1ïŒã ãœãŒã¹ããã¹ãã®åäœã¯ã¢ãžã¥ãŒã«ãšåŒã°ããŸãã ãã®ããããŒã¯ãã¢ãžã¥ãŒã«ã®ååãå ¥åããã³åºåãã©ã¡ãŒã¿ãŒã®ååãšã¿ã€ããå®çŸ©ããŸãã ããããŒã«ç¶ãã®ã¯ãå€æ°ãã¬ãžã¹ã¿ãªã©ã®ããŒã«ã«ãªããžã§ã¯ãã®å®£èšã®ã»ã¯ã·ã§ã³ã§ãã 次ã¯ãå€æ°ãšã¬ãžã¹ã¿ã®å€ã決å®ããã»ã¯ã·ã§ã³ã§ãã BYTEã¯8ãããã®é åãå®çŸ©ããŸãã
MODULE Counter0ïŒIN CLK50MãrstInïŒBIT; swiïŒBYTE; OUT ledsïŒBYTEïŒ; ã¿ã€ãIBUFGïŒ=ã¢ãžã¥ãŒã«ïŒIN IïŒããã; OUT OïŒãããïŒ^; VAR clkãtick0ãtick1ïŒBIT; clkInBufïŒIBUFG; REGïŒclkïŒrstïŒBIT; cnt0ïŒ[16] BIT; ïŒ* 0.5ããªç§*ïŒ cnt1ïŒ[10] BIT; ïŒ*åç§*ïŒ cnt2ïŒãã€ã; BEGIN ledsïŒ= swi.7-> swiïŒswi.0-> cnt1 [9ïŒ2]ïŒcnt2; tick0ïŒ=ïŒcnt0 = 49999ïŒ; tick1ïŒ= tick0ïŒïŒcnt1 = 499ïŒ; rstïŒ=ãrstIn; cnt0ïŒ=ãrst-> 0ïŒtick0-> 0ïŒcnt0 + 1; cnt1ïŒ=ãrst-> 0ïŒtick1-> 0ïŒcnt1 + tick0; cnt2ïŒ=ãrst-> 0ïŒcnt2 + tick1; clkInBufïŒCLK50MãclkïŒ END Counter0ã
å³ 1. Lolaã®ãœãŒã¹ããã¹ãã«ã¯ãããŒãã€ã³ãžã±ãŒã¿ãŒã«è¡šç€ºãããç§ãšããªç§ã®ã«ãŠã³ã¿ãŒã衚瀺ãããŸãã
Lolaã³ã³ãã€ã©
ã³ã³ãã€ã©ã¯ãåçŽãªååž°çãããããŠã³è§£ææ¹æ³ã䜿çšããŸãã LSC.Compile @ã³ãã³ãã䜿çšããŠãLolaãéžæãããœãŒã¹ã³ãŒãã§ã¢ã¯ãã£ãã«ããŸãã ããŒãµãŒã¯ãèå¥åãæ°åãããã³ç¹æ®æåïŒBEGINãENDã+ãªã©ïŒãåŠçããã¹ãã£ããŒããæåãåãåããŸãã ãã®èšèšã¯ãå€ãã®ã¢ããªã±ãŒã·ã§ã³ã§ãã®é©åæ§ãšåªé ãã蚌æããŠããã ãCompiler ConstructionïŒPart 1 and 2ïŒãã§èª¬æãããŠããŸãã
ãã®å Žã§çŽæ¥Verilogããã¹ããçæãã代ããã«ãããŒãµãŒã¯æåã«æŒç®åããªãŒãäœæããŸããããã¯ããããªãåŠçã«é©ããŠããŸãã ãã®ã¢ãããŒãã«ã¯ãé©åãªãã©ã³ã¹ã¬ãŒã¿ãŒã«ãã£ãŠä»»æã®åºåãç°¡åã«çæã§ãããšããå©ç¹ããããŸãã ãããã®1ã€ã¯ãVerilogã®ç¿»èš³è ã§ãã æåã®LSV.Listã³ãã³ãoutputfile.vã å¥ã®ããŒã ãVHDLã«å€æããããåçŽã«ããªãŒãåºåã§ããŸãã 3çªç®ã¯ãã¹ã«ãŠããããã«åŠçããããã®ããããªã¹ããçæã§ããŸãã
ãããã£ãŠãã³ã³ãã€ã©å šäœã¯ãå°ãªããšã4ã€ã®æ¯èŒçå°ããå¹ççãªã¢ãžã¥ãŒã«ã§æ§æãããŠããŸãã
Lss | ã¹ãã£ã㌠| 159 |
LSB | æ ç¹ | 52 |
LSC | ã³ã³ãã€ã©/ããŒãµãŒ | 503 |
LSV | Verilogãžã§ãã¬ãŒã¿ãŒ | 215 |
LolaããVerilogãžã®éä¿¡æé ã«ã€ããŠã¯ã www.inf.ethz.ch / personal / wirth / Lola / LolaCompiler.pdfãã芧ãã ãã ã
ãœãããŠã§ã¢ãšãââãŒããŠã§ã¢ã®ãããã°ã©ã ãã®éã
éå»ã«ã¯ãHDLèšèªããéåžžã®ãããã°ã©ãã³ã°èšèªã®ããã«èŠããããã«å€ãã®åªåãæãããŠããŸããã ããã«ãHDLã«ã¯ä»ã®PLã®äžã§ããåããããããã®ã¹ã¿ã€ã«ã«é©å¿ããŠããŸãã ããšãã°ãVerilogã¯CãããVHDLã¯AdaãããLolaã¯Oberonããæ¥ãŸããã ãããããããã®2ã€ã®ã¯ã©ã¹ã®æ ¹æ¬çãªéããç¹ã«æ§æã®é¡äŒŒæ§ãããã«ã¯åäžæ§ã®ååšã確èªããããšãéèŠã§ãããšèããŠããŸãã ãããã®åºæ¬çãªéãã¯äœã§ããïŒ
説æãç°¡åã«ããããã«ãåæãåæåè·¯ãã€ãŸããã¹ãŠã®ã¬ãžã¹ã¿ãåäžã®ã¯ããã¯ã«çµã³ä»ããããŠããåè·¯ã«éå®ããŸãã äžè¬çã«ãåæåè·¯ã¯åªããã¢ãŒããã¯ãã£äžã®ãã©ãã€ã ã§ãããå¯èœãªå Žåã¯åŸãå¿ èŠããããŸãã
ããã«ãåè·¯ã®ãã¹ãŠã®èŠçŽ ãåæã«ãæåéãåæã«æ©èœããããšã¯æããã§ãã åå€æ°ãšåã¬ãžã¹ã¿ã¯ã1ã€ã®åŒïŒçµã¿åããåè·¯ïŒã§å®çŸ©ãããŸãã è€æ°ã®å²ãåœãŠã¯æå³ããããŸããã ã¬ãžã¹ã¿ãšå€æ°ãžã®å²ãåœãŠã¯ãµã€ã¯ã«ããšã«çºçãããããåHDLããã°ã©ã ã¯å€§ããªç¡éã«ãŒãã«å²ãŸããŠããããšãç°¡åã«æ³åã§ããŸãã
ã·ãŒã±ã³ãµãŒããŒã¹ã®ããã»ããµã¢ãŒããã¯ãã£ãå°å ¥ãããšããJohn von Neumannã®ã¢ã€ãã¢ã¯çŽ æŽããããã®ã§ããã ã·ãŒã±ã³ãµã«ã¯ãåãµã€ã¯ã«ã§ç¹å®ã®ãã¿ãŒã³ãéžæãããä»ã®ãã¿ãŒã³ãç¡èŠãããåœä»€ã®ã¬ãžã¹ã¿ãå«ãŸããŠããŸããããã«ãããALUã®ããŸããŸãªéšåãå·§ã¿ã«åå©çšã§ããŸãã ã¡ãžã£ãŒãŸãã¯ã¹ãããã¯æ¬è³ªçã«ã·ãŒã±ã³ã·ã£ã«ã§ãããããããã°ã©ã å ã®ç¹å®ã®å Žæããã³åœä»€ã®ã·ãŒã±ã³ã¹ã§ããã°ã©ã ã«ãŠã³ã¿ãã©ã®ããã«å€ãé¢é£ä»ãããã«å¿ããŠãå€æ°ã«å€ãåå²ãåœãŠã§ããŸãã ã·ãŒã±ã³ãµãŒã®ã¢ã€ãã¢ã«ãããæ¯èŒçåçŽãªåè·¯ã§å·šå€§ãªããã°ã©ã ãå®è¡ããããšãå¯èœã«ãªããŸããã
ãã®ãããLola-2ã¯YP Oberonã¹ã¿ã€ã«ã®HDLã§ãã ããã§çŽ¹ä»ããã³ã³ãã€ã©ã¯ãLolaã¢ãžã¥ãŒã«ãVerilogã¢ãžã¥ãŒã«ã«å€æããŸãã Lolaã®å©ç¹ã¯ãèšèªã®ã·ã³ãã«ã§éŠŽæã¿ã®ããæ§é ãšãåãã§ãã¯ãšé«åºŠãªãšã©ãŒèšºæã®ããã®ã³ã³ãã€ã©ã®åŒ·èª¿ã§ãã Lolaã«èšèŒãããŠããRISCããã»ããµçšã®å®å šãªã¢ãžã¥ãŒã«ã»ããïŒ www.inf.ethz.ch/personal/wirth/Lola/index.html