CPUå®éš2015é²æå ±åäŒã®ãã°ã§ãã
-
-
Save nekketsuuu/7fc7aeed156ce0f27628 to your computer and use it in GitHub Desktop.
- MIPSã®ãµãã»ãã + ã·ãªã¢ã«é¢é£ + assertionåœä»€
- ããŒããŒããã¡ããšäœã(ããããŒé åãšããŠç¢ºä¿)
- Block RAMãšåãé åãSRAMã®é ã«By-passed segmentãšããŠçœ®ããŠãã³ãŒãé åã¢ãã¬ã¹ãã¢ã¯ã»ã¹ãããšBRAMãèªã¿ã«ããããã«ããã
- 10æäžã«1stå®åäºå®
質ç
- ããã°ã©ã ããŒããŒãå®è£ ãã人ã¯å¯©å€ãµãŒããŒãšã®çžæ§ãæªãã ããŒããŒã䜿ããªããŠããŒãã³ãŒããããããªã³ãŒããäžå¿çšæããŠããã®ããªã¹ã¹ã¡ããã ãããã°ã®ãšãã¯ãã®ãŸãŸäœ¿ã£ãŠã審å€ãµãŒããŒã®ãšãã¯ããŒãã³ãŒãããäºå®
- assertionåœä»€ãšã¯ïŒ
- é垞䜿ãassertãšåãã§ãæãç«ã£ãŠãªãã£ããèœãšããŠI/Oããåœä»€ãäºå®
- 1 clockäœåœä»€ãããã«ããäºå®ïŒ
- å°æ¥çã«ã¯ãã€ãã©ã€ã³ãèããŠããŠããã®éã«ã¯æ®ã©1 clock 1åœä»€ã«ãªãäºå®ãã·ãªã¢ã«åšãã ãæå€§3 clockãããïŒ
- ä»ã®ææå€§6 clockããã
- MIPSã®ãµãã»ãã + send + halt
- Pipelined (5 + 1段)
- ååž°fibã¯åãã
- 1stã®ç®æš: ãªãã¹ãéãåãã
- 2ndããããããš: DRAMåãã
質ç
- DRAMããã¬ã€ãã³ã·5ãšã¯ãã䜿ããããšã¯ïŒ
- DRAMåŽã®ã¬ã€ãã³ã·ã5ãšã¯ããCPUã®ã¯ããã¯2.5ã¯ããã¯äœãªã®ã§SRAMãšåãããããšããæå³
- å€åŠæã¯ã©ã®ããããŸã§ã§ããïŒ
- çããããã¯ãªãæžã蟌ããããå šäœã«æžã蟌ããšæã åãã
- ãªãŒããªãã¬ãã·ã¥ããªãŒãããªãã£ãŒãžã¯ç¡ãã£ãã£ãïŒ
- æ®å¿µãªããšã«ããã ãšã¢ã¬
- äœèçã§å€§ããªã¡ã¢ãªã䜿ããããšããããšã§ããã°èšã£ãŠãããã°
- forwardingã¯ããããŠããã§ãã
- ã¯ãããã sendã§1 clockããã«å ¥ããŠããŸã
- ã·ãªã¢ã«éä¿¡ã®åãã®åœä»€ãç¡ãïŒ ã¬ã®ã¥ã¬ãŒã·ã§ã³çã«å¿ èŠãªã®ã§å ¥ããŠãããŠãã ããã
- FPUã®å€ãå ã«åå²ããåœä»€ãç¡ããããª
- FPUã®å€ã¯åºæ¬çã«GPRã«å ¥ããäºå®ã ã£ãã®ã§
- æµ®åå°æ°ç¹ã®æ¯èŒåœä»€ã¯å ¥ããŠããªãããšã«æ°ã¥ããã®ã§å ¥ããŸã
- fsqrtå ¥ããªãã®ïŒ çµæ§äœ¿ãã®ã§ãfinvãšåããããªå®è£ ã«ãªãã®ã§finvãã§ããŠããèããŠã¿ãŠãã ããã
- 11/1ãããã«å®åããããšæã£ãŠãã
- ã¢ã»ã³ãã©ãã§ããããã«ããµã€ã¯ã«ãªã³ã¢ã¯ã§ãããååž°fibææžããåããã
- ãªãªãžãã«ã¢ãŒããã¯ãã£
- 32bit 64åã¬ãžã¹ã¿ã0ã¬ãžã¹ã¿ã¯ããã
- åœä»€èª¿ã¯32bit
- åœä»€ã¡ã¢ãªãšããŒã¿ã¡ã¢ãªã¯åãã¢ãã¬ã¹äžã«ååšã å®è£ äžã¯å°çšã®åœä»€ã¡ã¢ãªãçšæããäºå®ã
- ãã€ãã³åãããŒããŒãåãã¯ãŸã 決ãŸã£ãŠããªã
- movhi äžäœ16bitãmov
- movhiz äžäœ16bitãmovããŠäžäœã0
- FPUã¯fadd, fsub, fmul, finv, fcmp, fabs
- ã·ããã¯çæ¹ã ãã ãšãããç ©éã«ãªã£ãã®ã§äž¡æ¹çšæããŠããããšã«ããã
質ç
- æŽæ°ã¬ãžã¹ã¿ãšæµ®åå°æ°ç¹ã¬ãžã¹ã¿ã¯æ··åãããŠããïŒ â ã¯ã
- ã³ã³ãã€ã©ãšããŠçªå·ã§äœ¿ãåãããïŒ
- ä»ã®æèããŠããªãããæŽæ°ã§äœ¿ã£ãåŸã«ããæµ®åå°æ°ç¹ãšããŠäœ¿ãããšããããã
- ãŸã ã©ã®ãããªåé¡ãèµ·ãããã®ãåãããªã
- ã³ã³ãã€ã©ã®ã¬ãžã¹ã¿å²ãä»ããããŸãããšèª¿æŽããäºå®
- Ikazuchi
- MIPS subset + rsb
- rsb : $tã®äžäœ8bitãã·ãªã¢ã«åºå
- fmulãã§ãã(Cå®è£ ãVHDLå®è£ ã©ã¡ãã)
- ã¢ã»ã³ãã©ãã§ãã
- 10ææ«ãŸã§ã«ã¯åãã
質ç
- ã¬ãžã¹ã¿32åäž2åOSã«ãŒãã«çšã®ããããOSå®è£ ã®äºå®ã¯ïŒ
- ãªãã§ã
- ã³ã¢åœä»€ã¯ããã§è¶³ããŸãã
- åä¿¡åœä»€ãfcmpãè¶³ããªãããã
- ç·è¡šã«å¯ŸããŠã¯é 調ã§ããïŒ
- ããŸãé 調ã§ã¯ãªãã
- faddã®åå®è£ ãšã¯ïŒ
- ãªãã¡ã¯ã¿ãªã³ã°
- éèŠã ãšæããŸããåãfaddã1bitã ãééã£ãŠããŠçºè¡šçŽåãŸã§å°ã£ã
- 10ç
- Powerless PC
- Power PCãµãã»ããäºå®
- æ¡ä»¶åå²åœä»€ãæ¯èŒåœä»€ãªã©ã¯ããã·ã³ãã«ã«ãã
- æ©èœãå€ãã®ã§ã©ãã©ãåã
- éçåå²äºæž¬ããªãŒãã€ã³ã¯ãªã¡ã³ããšãã¯åã
- branchã«ã¯ãªã³ã¯ã¬ãžã¹ã¿ãæžãæãããã€ãæžãæããªããã€ãæ¡ä»¶åå²ã®ãã€ããã
- ãŸã ã¡ãã£ãšæªå®ã®æããã
- 11æç¬¬4é±ãããã«å®åäºå®
質ç
- ã©ãããžããPower PCã£ãœããªãäºå®ïŒ
- ã³ã³ãã£ã·ã§ã³ã¬ãžã¹ã¿
- 10æäžã«ã¬ã€ãã¬ãåãã
- æ±çšã¬ãžã¹ã¿256å
- äžæå€æ°ãéé¿ããªãã§ããããã«ãããã
- fadd, fmul, fdiv, fsin, fatan, fsqrt
- å®è¡ãã€ããªã®ãã©ãŒããããã¡ã¢ãªãããã¯èª¿æŽäž
質ç
- cmpãããšã©ãã«å ¥ãïŒ
- 0ã1ããã¬ãžã¹ã¿ã«å ¥ããŸã
- 256åãããããã°spillãšãèµ·ããªãæ°ããã
- Block RAMãšãã§å®è£ ããäºå®ã§ããïŒ
- ãšããããæ®éã«ã¬ãžã¹ã¿ãšããŠå®è£ ããäºå®
- ã¬ã€ãã³ã·ã©ãã ã£ãã£ãã忣RAMã«æ¯ã¹ãŠã¬ã€ãã³ã·ã1倧ãããªããããª
- Block RAMã¯éã«1ã€ããªãããããããæãŸã£ãŠããã®ã§
- ããããããéäžã«1ã€ã©ãããå ¥ããªããšãããªããã
- ãšã¿ãŒãã«ãã©ãŒã¹ããªã¶ãŒã
- 10æäžã«fibãåãã
- 11æäžã«å®åãç®æã
- MIPS sub
質ç
- FPUãšI/OããŸã ãªãããª
- setltïŒ
- set less thanã§ãã
- shiftãããŸããã movã䜿ã£ãŠäžäœ16bitã«ã¯å ¥ãããããã©äžäœ16bitã«ç°¡åã«å ¥ããããåœä»€ããã£ãæ¹ããããšæããŸã
- mulãšãfhalfãšãç¡ããã§ãã
- çã®äžã§é©å®ã³ãã¥ãã±ãŒã·ã§ã³ãåããšè¯ã
- çå: çœè(ãã¯ãµã€)
- ããŒããŒãã¢ãŒããã¯ãã£
- ãã€ãã©ã€ã³åãé å»¶åå²
- .textãBRAMã.dataãSRAMã«èŒãã
- GPRã¯32åãFRãGPRãšå¥ã«äœããã¯æªå®
- ALUãå°ãå®è£ ã§ãã
- fibãåãã
- finv, f2i, fsqrtãVHDLå®è£ ã§ãã
- fmul, finvã®ãªãã¡ã¯ã¿ãªã³ã°äž
- ã·ãã¥ã¬ãŒã¿ã¯1åœä»€åããã®ãã§ãããããããfibãåããã
質ç
- faddã¯HWå®éšã§äœã£ããã€ã䜿ãäºå®ïŒ
- ã¯ãã
- ãã€ãã©ã€ã³åãããŠããŸããïŒ
- fadd以å€ãå«ããŠãŸã ã§ããä»åŸåãçµã¿ãŸãã
- æµ®åå°æ°ç¹å ç®åšã¯äžžããã©ãããŠããŸãã
- round-even
- fmul, finv, fsqrtã¯ã©ã®ãããã®èª€å·®ã§ã®èšèšãããŠããŸãããå®å šã«èª€å·®ããªãå®è£ ã§ããããããšãããšãã°ããŒãã«åŒããªã©ã§èª€å·®ããããŸããã
- 誀差ã¯ãªãã¯ãããã¡ããã¡ãé ããæ£ç¢ºã«åãã¯ããx86ãšåãã¯ãã
- 段æ°ã¯ã©ã®ãããã«ãªããŸããïŒ
- ãŸã ãã¹ãããŠããªãã®ã§ããåãã£ãŠããªãã§ãã
- ã³ã¢ã®ãžã£ã³ããæªãããšã¯ïŒ
- reg_write_enableããšãã©ã1ã«ãªã£ã¡ãããä»ã®æåé¡ã¯èµ·ããŠããªãããã®ãã¡åé¡ã«ãªããããããªãã®ã§çŽãããã
- ISAããã¡ããšã¯æ±ºãŸã£ãŠããªãã£ãã
- strictã«MIPS32ãµãã»ããã«ããããšã«
- ãã ãã¯ããŒã³ãäœãããã§ã¯ãªãã
- ãã€ãã©ã€ã³ãé å»¶åå²ããšããããå»¶æã
- ISAããã¡ããšæ±ºãŸã£ãã®ã§ã¢ã»ã³ãã©ãã§ãã
- ã³ã³ãã€ã©ã®ãããå°ãã§ãããSPARCçãšPowerPCçãåèã«ããã
- fibã®ããã®åœä»€çŸ€ãå®è£
- FPUãfaddãçä»ãã€ã€ãã
質ç
- faddã¯å€åround-evenã ãšéœéœ¬ãåºãŠããã®ã§ã¯ãªãã? ããããããtruncateã ãšé§ç®ãããæçµçãªç»åãšãææ¬ç»åã®äžäœ1bitãããéŸå€ä»¥äžé¢ããŠãããšé§ç®ã«ãªãã¯ããã ãããåèšç®ã«å¯ŸããŠx86ã«å¯ŸããŠæå€§ã§äœulpããã誀差ãã§ãã®ãèšç®ããŠãããæ¹ããã
- ã³ã¢ã®ãã³ãŒãã¯æžããŸãããïŒ
- ãŸã ãšãããã£ãŠããªãã§ã
- 以å€ãšMIPSã£ãŠãªãã³ãŒããè²ããªæã«åæ£ããŠããã®ã§æ°ãã€ããŠãã ããã
- hitodeãããåã®ã³ã¢ã00001ãaddã§00002ãfsubã ã£ãã®ã§éåžžã«é¢åãããã£ãã
- faddãæ¥ç¶ãã
- ç°¡åãªãã£ãã·ã¥ãã€ãã
- 次ã¯out of orderãããäºå®
- fibãæäœéåãã³ã³ãã€ã©ã¯ã§ãã
- åäœç¢ºèªçšã«print_intã ãå®è£ ããã©ã€ãã©ãªã¯ïœããã
- faddããã€ãã©ã€ã³åããã
- fmul倧äœã§ãã
- FPUãé€ããã·ãã¥ã¬ãŒã¿ãã§ãããããããåäœç¢ºèªããã
質ç
- ä»ã¯ãã€ãã©ã€ã³åããŠããŸããïŒ
- ä»ã¯ããŠããªãã§ããfaddãšãã¯äœã¯ããã¯ãããã£ãŠããŸãã®ã§ãããªãout of orderããããšæããŸããã
- ããã¹ããŒã§ããïŒ
- ããã¹ããŒã§ã
- ã¹ãŒããŒã¹ã«ã©ãããäºå®ã¯ãããŸããïŒ
- å°æ¥çã«ã¯ããŒããŠã§ã¢è³æºãèš±ãã°è€æ°åœä»€åæçºè¡ãšããããäºå®ã§ã
- ã³ã³ãã€ã©ã®ãfibãæäœéåãããšããã®ã¯å®éã«ã³ã¢ã«é£ããããã¯ããŸãããïŒ
- ãæäœéãâfibã«å¿ èŠãªæ©æ¢°èª
- ãfibãâããã£ãœãã¢ã»ã³ããªãã§ã
- ãã®fibã¯ã«ãŒãçã§ããïŒ
- äž¡æ¹äœã£ãŠäž¡æ¹é£ãããããããªãã®ã¢ã»ã³ããªãã§ãŸãã
- ã¬ã€ãã¬ã®ã³ã³ãã€ã«ã¯ã§ãããã§ããïŒ
- ãŸã ããããªãã§ã
- ã·ãã¥ã¬ãŒã¿ãå²åã§ããŠããŠã³ã³ãã€ã©ä¿ããã®ãããã°ã楜ããã§ãã
- ã³ã¢: PC, åœä»€ã¡ã¢ãª(BRAM), GPRã®å®è£ ãã§ãã
- ã³ã³ãã€ã©: Asm.progã®äžéåºåãã§ãã
- ã·ãã¥ã¬ãŒã¿: fibãåããããããã°æ©èœãšããŠå®è¡äžã®ã¬ãžã¹ã¿ã®å€ç¢ºèªãã¹ãããå®è¡ãã§ããããã«ãªã£ã
- FPU: faddãæžãå§ãããCå®è£ ã¯çµãã£ã
- ç·è¡šããã¡ãã£ãšé ããŠããããããä»é±äžã«ã¯ã³ã¢ã§fibãåããããã11ææ«ãŸã§ã«ã¯ã¬ã€ãã¬ãåããããã
質ç
- ã·ãã¥ã¬ãŒã¿ã¯ããšæµ®åå°æ°ç¹æ°åšããçµã¿èŸŒãã°åºæ¬çã«ã¯åããã®ãã§ãããã§ãã
- ã·ãã¥ã¬ãŒã¿ã¯åœä»€ã1ã€ãã€å®è¡ãããã®ã§ãã
- gdbã¿ãããªãã€ãäœããŸãã
- ããšãã¬ãŒã¯ãã€ã³ããäœããã
- ããã§ãããããšã¯ã³ã¢ä¿ãããšååããŠãã³ã¢ä¿ããããããã°ãããããã®ãäœã£ãŠãã ãããç¹å®ã®åœä»€ãæ¥ããã¹ãããããæ©èœãšããããšè¯ãã§ããããšãã°ã·ãªã¢ã«åºååœä»€ã®çŽåã§æ¢ãŸããšãã
- FPUä¿ã2人ããŸããåæ ã¯ã©ãããŠããŸããïŒ
- ã©ã¡ããfaddããããŠããªãã®ã§ç¬ç«ã«faddãæžããŠããã®åŸååããŠfmulçãæžãäºå®
- ã³ã³ãã€ã©ä¿ããã®ãAsm.progã®äžèº«ããšã¯
- min-camlå ã§äœ¿ãããŠããäžé衚çŸã§ã
- ã·ãã¥ã¬ãŒã¿ã®é²è¡é床ãã³ã¢ã«ã³ã³ãã€ã©ã«æ¯ã¹ãŠãããããã®é床ãªã®ãå¥åº·ãªçããªããšããææ³ã§ãããšã«ããã·ãã¥ã¬ãŒã¿ã宿ããªãããšã«ã¯ãããã°ãé£ããä¿ãããã3åã¯ããã³ã°çã«ãããããã«ã³ã¢ããããŸããïŒããªçã¯å¥ã ãã©
- ãã³ãŒããALUã§ãã
- min-camlåããã®ãã§ãã
- fadd Cå®è£ ã§ãã
- ã¢ã»ã³ãã©ãã§ãã
- 質å
- finv, fsqrtã®å®è£ ã«ã€ããŠ
- ROMã䜿ããšå¹çãè¯ããããã£ãšã¡ã¢ãªäœ¿çšéãæžããã¹ãã(æžãããã)ããã£ãšéãæ¹æ³ã¯ãããïŒ
- ä»é±ã¯ã·ãã¥ã¬ãŒã¿äžã§ã¬ã€ãã¬ãåããŠãååž°fibã宿©ã§åããŠãFPUãéããªãã¯ã
質ç
- 質åã«ã€ããŠ:
- ã¡ã¢ãªäœ¿çšéãæžããã«è¶ããããšã¯ãªããããã§æ£ç¢ºæ§ãæ ä¿ã§ãããªã倧äžå€«ãã§ãå¥ã«æžãããªããŠã倧äžå€«ã ãšæããéã«å€ãã£ããã©ããªããïŒâäœã£ãBROMã¯ã³ã¢ã®ãã£ãã·ã¥ã«æ¶è²»ãããšè¯ãã§ãããªã®ã§BROMãåãããããšã³ã¢ãå°ããŸãã
- åäœåšæ³¢æ°çã«ã¯ãããããéãæ¹æ³ããããã¯ç¥ããªãããROMã䜿ã£ãæ¹æ³ãªãããã§ããã«ããã¯ã«ãªãããšã¯ãªããªãã ããã
- ã³ã³ãã€ã©çã«ã¯ãã»ãšãã©ã¬ã€ãã¬ãã³ã³ãã€ã«ã§ãããããªç¶æ ã§ããïŒ
- ããããŸã£ãããé£ããã§ãã
- é£ãããšã¯ãã©ãããå£ã«ã¶ã€ãã£ãŠããŸããã
- ãŸã ãããŸãã³ã³ãã€ã©ã«è§Šã£ãŠããªãã ãã§ãã
- ã³ã¢ã¯ã©ããªæãã§ãã
- ä»ã®æout of orderã§åããäºå®ãªã®ã§ããã®ããã®éšåãçšæããŠãããšãã³ãŒããšããçšæããæ®µéããŸã 宿©ã§äœãåãããç¶æ ã§ã¯ãªãã
- ããã¹ããŒã§ãã
- ããã¹ããŒã§ã
- ã³ã¢
- ãã€ãã©ã€ã³åå®è£ äž
- FPU以å€ã¯å€§äœå®è£ å®äº
- æµ®åå°æ°ç¹æ°ã¬ãžã¹ã¿ãšfneg, fabs, fld, fstãå®è£ ããã¹ãäž
- ã¡ã¢ãªã¢ã¯ã»ã¹ã«ãã°ïŒ
- ã³ã³ãã€ã©
- ã³ã³ãã€ã©å®éšã®èª²é¡ãããªãã
- ããã°ãšã³ããæžããŠãããæã ISAãè¶³ããŠããªãããšã«æ°ã¥ãã®ã§ã³ã¢ãšèª¿æŽããŠãã
- ã·ãã¥ã¬ãŒã¿
- 1åœä»€å®è£ ã§ãã
- ã¢ã»ã³ããªã1è¡ãã€åŠçãããã®ããšããããäœã£ãŠãããæéãããã°cycleããšã«åŠçãããã®ãäœãäºå®
- FPU
- fadd VHDLå®è£ ã®ãã¹ãäžãã§ã次第é«éåã
- fmulã¯VHDLå®è£ äžãfinvã¯ãŸã ã
- 颚éªã«æ°ãã€ããã
質ç
- clock accurateãªã·ãã¥ã¬ãŒã¿ããããšã³ã¢ã®ãããã°ã«äŸ¿å©ã ããäœãã®ã¯ã³ã¢ã1ã€äœããããé¢åããããout of orderå®è£ ãã¯ããããšããããã®ããªããšäžæãé²ãŸãªãããã
- ã³ã¢ã®ãã€ãã©ã€ã³åå®è£ ãšã¯ïŒ
- ã¯ããã¯ãäžããŠãã£ããšãã«ãstore/loadãããŸãåããªãã£ããããã§ã¯ããã¯ã®äœçžãããããªã©ããŠããŒã«ãæéã»ããã¢ããæéã®æ¡ä»¶ãæºããããã«ããŠããã
- SRAMã®ããŒã«ãã»ã»ããã¢ããã¯.ucfãèšå®ããã°äœçžãããããªããŠãããŸãããã¯ã
- ãããªããšããªããŠããå ¥åºåã«ã¯ããã¯åæã®ã©ãããããŸããã ãã§å€§äœã¯ããŸãããã¯ã
- ããŒããŠã§ã¢å®éšã®ãšãã«ããŸããã£ãŠããã®ã¯å€åããŸããŸ
- åæ
- ã³ã³ãã€ã©ãã¢ã»ã³ããªãåãã
- ã¢ã»ã³ãã©ãã§ãã
- ã³ã¢ã®äžã§å®çµããåœä»€ãå®è£ ãã
- loop fibã¯åãã
- fmulã®å€§æ ãäœã£ã
- 仿§å€æŽ
- syscallåœä»€ã远å
- åœé¢ã¯ã·ãã¥ã¬ãŒã¿äžã ãã§äœ¿ã
- å²ã蟌ã¿ãã¯ã¿ãæå®ããŠè²ã ãã
- printfãããã°ã«äŸ¿å©ãã
- gitå匷äŒããã
- gitãšslackã飿ºãã
- pushãããšéç¥ãé£ã¶
- å©èµ°ãã€ããŠé²æã§æ®Žããã
質ç
- ã³ã¢ã®æã«ãããç®è¡ã³ã¢åœä»€ãã£ãŠALUã®ããšã§ãã
- MIPSã®è¶ æéã®ãããmulãšãFPUãšãã®ããšãæããŠããŸããaddãšãã¯ãæ®éã®ã³ã¢åœä»€ãã«å ¥ããŠããŸãããŸã I/OãšããŒããŒãšã¡ã¢ãªã¢ã¯ã»ã¹åšããäœã£ãŠããªãã®ã§ããããããããã
- ããŒããŒã£ãŠã©ããªæãã®ãããã³ã«ã§ãã
- 4wordããããéã£ãŠãã¯ããã®1wordã«ã¯magic numberãå ¥ã£ãŠããŠããããã1wordãã€ããŒã¿éšåã®ãµã€ãºãããã°ã©ã éšåã®ãµã€ãºãããã¹ãéšåã®ãµã€ãºãéãã
- æŽæ°ä¹ç®ããã¡ããšå®è£ ãããã§ãã
- å®è£ ããäºå®ã§ããMIPSã«å ¥ã£ãŠããããå®è£ ããŠããã ãã§ãã©ããFPUã¯3clockãããããã£ãŠããŸãã®ã§mulãããã«è¶³äžŠã¿ãæãã圢ã§ããã
- ãªãã¹ãshift + addã«ããã»ããå¹çãããã®ã§ããã®ããã«ã¯ããäºå®ã§ãã
-
LANã±ãŒãã«ãäœããŸã
-
åãïŒã¯ããïŒã³ãã¯ã¿ãããïŒå§çããïŒãã¹ãããïŒä»¥äžãïŒ
-
ã¹ãã¬ãŒãã±ãŒãã«
-
ãæ¯å¹Žã®æäŸè¡äºã ããããšèšãããã倧åã ã£ã
- ã¢ãã¬ã¹æå®ã¯çµ¶å¯Ÿã¢ãã¬ã¹ã«ãã
- ã³ã³ãã€ã©: ååž°fibãã¯ãã
- ã·ãã¥ã¬ãŒã¿: ã³ã³ãã€ã©ã®ã¯ãããã€ãã³ãŒããèªã¿èŸŒãã§å®è¡ã§ããããã«ãªã£ã
- éã¢ã»ã³ãã©ãã§ãã
- çŸåšå®è¡äžã®åœä»€ãããŒã¢ããã¯ã«å€æããŠè¡šç€ºã§ããããã«ãªã£ã
- ãã¬ãŒã¯ãã€ã³ããã§ãã
- äœèª¿ã«æ°ãã€ããã
質ç
- ALUãã¡ã¢ãªåšãã¯ã©ã®ããã宿ããŠããŸããïŒ
- å šç¶ã§ã
- FPUã¯ã©ããã§ããŠããïŒ
- å€åãŸã faddãæžããŠããéäž
- ã·ãã¥ã¬ãŒã¿ã«ã¯floatingåšãã¯å ¥ã£ãŠããïŒ
- ãŸã å ¥ã£ãŠããªãã§ããCå®è£ ãå®ææ¬¡ç¬¬ããäºå®
- Travis CIã®é£æº(Commitãšåæã«testãèµ°ã)
- ã³ã³ãã€ã©: æ¡ä»¶åå²ãã¹ã¿ãã¯ãŸããã®ãã°ä¿®æ£ãfib, ack, gcdãæ£ããã³ã³ãã€ã«ã§ããã
- ã·ãã¥ã¬ãŒã¿äžã§ã«ãŒãfibãåãã
- fmulãæžãã
- finvãæžãå§ãã
- PythonãšCã§ã·ãã¥ã¬ãŒã¿ãæžãããfib, ack, gcdãåãããPythonã ãšé ãã£ãã®ã§Cã§æžããªãããã
質ç
- Travis CIã£ãŠã©ããªãã¹ããèµ°ããããã§ããïŒ
- MinCamlãã³ã³ãã€ã«ãããåŸãPythonã®noseãšãããã¹ãããŒã«ãèµ°ãããã«ãªã£ãŠããã
- ããã€ãã®ãã¹ããèµ°ãããããã«ããŠããŠãçµæãassertããŠãã
- Pythonã·ãã¥ã¬ãŒã¿ãpypyã§ãã£ãŠãé ãã£ãïŒ
- 詊ããŠãªãã§ãã
- Cã®fib 30ã2ç§ããããPythonã®fib 20ãåããããã ã£ãã
- ã³ã¢ã¯FPU以å€åããŠããïŒ
- 宿©ãšã·ãã¥ã¬ãŒã¿ã§åäœãéãããšã«æ©ãã§ããŠãIOéšåã®Iã®éšåãã§ããŠããªããããªã®ã§ããããä»çŽããŠããŸãã
- ãããã¡ã«ïŒåãããããã«ããŠããŸããïŒ
- FIFOã«ãããŠããŸãã
- ã³ã¢
- ãã«ããµã€ã¯ã«ã³ã¢ãfmulãã€ãªãã ã
- Out of Orderã³ã¢ãããã¹ããŒãå®è£ äžããã³ãŒããããŒã¿ãã¹ãã¢ãŒãã¿ã¯ã§ãããcmp, fabs, fcmp以å€ã®ALUç³»åœä»€ãã¡ã¢ãªã¢ã¯ã»ã¹åœä»€ãåºååœä»€ãhaltã¯ã§ããã
- ã¯ããã¯ãäžãããããå®éšããŠããŠã100MHzã«ãããšäœãããããããããªã£ãã77.7MHzã§ãI/Oããããããªã£ãã
- ã³ã³ãã€ã©
- ã³ã³ãã€ã«ããfibã宿©ãã·ãã¥ã¬ãŒã¿ã§åããã
- ã¯ããŒãžã£åŒã³åºããæ£ããã³ã³ãã€ã«ã§ããªããã°ãä¿®æ£ããã
- å³å€æé©åãå®è£ ãã
- FPU
- fmulãå®è£ ããã
- finvãäžå¿åããã
- fabs, fsubãšãæžãã
- finvãç·åœ¢è¿äŒŒã䜿ã£ãŠæžãçŽãäºå®
- ã·ãã¥ã¬ãŒã¿
- ã»ãŒå®æãå šåœä»€ãç¡äºã«åãããååž°fibãåããã
- finvã ãx86ãšä»æ§ãéãã®ã§ããã ãæžãçŽãäºå®
質ç
- å°æ¥çã«åå²äºæž¬ãã€ããäºå®ã¯ãããŸããïŒ
- ã¯ãã
- ä»ã®æãªãªãŒããŒãããã¡ãšãã¯ã€ããŠããªããŠãå¿ èŠã«ãªãã°ã€ããäºå®ïŒ
- ã¯ããåå²äºæž¬ãªããªããªãªãŒããŒãããã¡ãªããŠãããããã ã£ãã®ã§ã
- 100MHzã ãšãããããªããšãããŸãããucfã¯æžãæããŸããã
- æžãæããŠããªãã§ãã
- ã¡ã¢ãªã絡ãŸãªããŠããããããªã£ãŠããŠãucfãã©ããšãããåé¡ã§ã¯ãªãããã«æããŸããã
- ã²ãã£ãšãããåºç€ãå£ããŠããããïŒ æ®éFPGAã®äžãå£ããŠããŠã¯ããã¯ãäžãããšé§ç®ã«ãªããšããããšã¯ç¡ãããã«æãããäžå¿ã
- fsqrtã¯äºå®ãªãïŒ
- ä»ã®æã¯ã
- åœä»€ã»ãããæŽæ°
- ç·è¡šãå°ãå€ãã
- ã³ã¢: å¢ããåœä»€ãå®è£ äžã
- ã³ã³ãã€ã©: ã¢ã»ã³ããªãåãæãã§ãããããããã©ã€ãã©ãªãæããŠããäºå®ã
- ã·ãã¥ã¬ãŒã¿: read8以å€ã®åœä»€ãïœã²ãšãŸãå šãŠå®è£ ãååž°fibãåãããšã確èªãstepå®è¡ãbreakpointã£ãœããã®ãå®è£
- FPU: faddããšãããã宿ãfmulãã·ãã¥ã¬ãŒã¿ã§åããããããã°äžãfinvã¯ããããã·ãã¥ã¬ãŒã¿ã§è©Šãäºå®ã
質ç
- FPUã®ãã°ã¯å€§ãããã°ã§ããïŒ
- faddã®ãã°ã¯æšæ¥åããŠãfmulã®ãã°ã¯æã å šç¶éãå€ãåºãŠãããã°ã§ãããããã±ã¿äžããã®æã§ãã°ã£ãŠãããCã®æ¹ã¯åããŠããã
- ã·ãã¥ã¬ãŒã¿ã®æ©èœã¯ä»ã©ã®ããããããŸããïŒ
- ã¹ãããå®è¡ããã¬ãŒã¯ãã€ã³ããããã§ã
- åœä»€ã®å®è¡åæ°ã«ãŠã³ããšãã¯ãŸã ã€ããŠããªãïŒ
- ãŸã ã§ã
- ã¢ã»ã³ãã©ã宿ããã
- FPU以å€ã®ã·ãã¥ã¬ãŒã¿ã宿
- faddå®è£ äž
- ã³ã¢ã¯I/O, ALUãŸããããšããããçµãããã¡ã¢ãªåšããããããããäºå®
- ã³ã¢ãé ããŠãã
質ç
- æçµçã«å®è£ ããFPUåœä»€ã¯ïŒ
- fadd, fmul, finvã§ã
- ã·ãã¥ã¬ãŒã¿ã¯FPUã©ãããŠããŸãã
- ãŸã å®è£ ããŠããªãã§ã
- ãããä»åããŠããã®ã¯fibããã
- ã¯ã
- ã·ãã¥ã¬ãŒã¿ã宿©äž¡æ¹ã§ååž°fibãåãã
- FPUã¯ãããã°äž
- ã³ã³ãã€ã©ã¯ãšããããã¢ã»ã³ããªã£ãœããã®ãã¯ããããã«ãªã£ã
- ã³ã¢: 8bit I/Oãä»åŸå®è£ ããäºå®
質ç
- faddã«ã¯ããã¯å ¥ã£ãŠããŸããïŒ
- åãªãçµã¿åããåè·¯ã§ã
- ã³ã¢ã®æ¹ã§æ°ã¯ããã¯åŸ ã£ãŠããåãåºã圢
- ã³ã³ãã€ã©ã®ããã¯ãšã³ããã§ãã
- ã©ã€ãã©ãªãã»ãŒæžãã
- 1é±éã§ã³ã³ãã€ã©ã¯äœãããçå¡ãããããŸãã
- fmul, fdivãå€åã§ãã
- ã³ã¢ãinternal errorãšæ Œéäžâ解決
質ç
- åªç§ã§ãã
- äœãã·ãã¥ã¬ãŒã¿äžã§åãããŸãããïŒ
- ãã³ãã¢ã»ã³ãã«ã®fibã¯ãšããããåãã
- fibãšã¬ã€ãã¬ãŒã¹ã®éã«äœããã¹ãããã°ã©ã ã¯èããŠããŸãã
- äœãè©°ãŸãã°é©å®èããäºå®ã§ã
- ã³ã³ãã€ã©
- pythonã¢ã»ã³ãã©/ã·ãã¥ã¬ãŒã¿ãžã®FPUåœä»€ã®å¯Ÿå¿
- Lambda Liftingã®ãããã°äž
- CSEã®ãã°ããšã£ã
- ã³ã¢
- I/Oã®ãã°ããšãã
- æè£œã«ãŒãfibãåãã
- ãããã®ä»æ§ãä¿®æ£ãã
- ã·ãã¥ã¬ãŒã¿
- fmulã®ã·ãã¥ã¬ãŒã¿ãã§ãã
- FPU
- finvã®1stçšããŒã¿ããŒãã«ãã§ãããCå®è£ ã9岿¹ã§ãã
- ä»é±åææ¥å®åïŒ
質ç
- I/Oã®ãã°ã£ãŠãªãã ã£ããã§ãã
- ucfã«RXããªãã£ã
- SRAMãã·ãªã¢ã«ã®ã€ã³ã¿ãŒãã§ãŒã¹ã¯ããèªä¿¡ã¢ãªãšããããšã§ãã
- SRAMã¯ãŸã çµåãã¹ãããŠããªã
- ã¡ã¢ãªã³ã³ãããŒã©ãšã¯
- dataé åãšããåãã¡ã¢ãªé åã«ããã®ã§ãäžæãå²ãæ¯ã圹å²ãããŸã
- ã·ãã¥ã¬ãŒã¿ä¿ãfmulã®ã·ãã¥ã¬ãŒã·ã§ã³ã³ãŒããæžããŠããã®ã§ãã
- ã¯ããFPUä¿ã®é²æãæªãã£ãã®ã§
- å é±ã·ãã¥ã¬ãŒã¿ãCã§æžããªããããšèšã£ãŠããŸãããpythonãæ®ããŠããã®ã§ãã?
- äž¡æ¹ãšãæ®ããŠããŸã
- Cã¯çªè²«ã§äœãäžããã®ã§âŠâŠãpythonã®æ¹ã¯ããçšåºŠã®ä¿¡é Œæ§ãããã®ã§ããCã®æ¹ã¯ãŸã çãããªãšã
- ããšpythonã®æ¹ãæ®ããŠããã°LLãªã®ã§ããŒãºã¯ãããããããªããšã
- ã³ã¢
- ALU, SRAMãã§ãã
- datapassãšå¶åŸ¡ãŠããããããŠãã
- FPUã¯ã»ãšãã©çµãã£ãŠããããã°ãããŠãã
- ã³ã³ãã€ã©ã¯ãã¹ãŠã®åœä»€ãã¢ã»ã³ãã©ã§åãããã«ãªã£ããããããã©ã€ãã©ãªã
- ã·ãã¥ã¬ãŒã¿ã¯ãã¬ãŒã¯ãã€ã³ããšã«ãŠã³ã¿ãŒã¬ãžã¹ã¿ãŒä»ãããISAã«ç¡ããã³ã³ãã€ã©ã«ã¯ããã®ã§ãåŸã§ãªããšãããäºå®ã
質ç
- ã«ãŠã³ã¿ãŒã¬ãžã¹ã¿ãšã¯ïŒ
- ã«ãŒãã®åæ°ãæ°ããã¬ãžã¹ã¿
- FPUã¯ä»ãŸã§äºäººã§faddãäœã£ãŠãããšæãã®ã§ããããã®åŸã©ã®ããã«åœ¹å²åæ ããäºå®ã§ãã
- ããããäºäººäžç·ã«åããã®ãäœãããšã«ãªããšæããŸãã
- faddãalmost doneã«ãªã£ãŠããã®ã¯ãŸã ã¡ãã£ãšãã°ãæ®ã£ãŠããã®ã§ããïŒ
- ã¯ããããŸã«ã·ãã¥ã¬ãŒã¿ã®å®è£ ãšå€ãåããªãããšããããŸãã
- ã³ã¢ã¯é£ç¶send以å€ã¯åããŠãã»ãšãã©ã§ããã
- ã³ã³ãã€ã©ã¯mul4, div2ãã€ãããã©ã€ãã©ãªãããŠãã
- ã·ãã¥ã¬ãŒã¿ã¯åœä»€æ°ã«ãŠã³ããbreakpoint ignoreãå®è£ ãã
- FPUã¯ãã€ãã©ã€ã³åããfaddãäœã£ããä»ã¯äœ¿ã£ãŠããªã(æ®éã®ãã®ã1ã¯ããã¯ã§çµãããã)
- fmulã®æ¡ãããçŽã£ãã£ãœãã
- finvã¯ããŒãã«ã®ç²ŸåºŠãæªãããŸã ãããããã
質ç
- sendãšããã®ã¯
- send8 (8bit)
- æå€ãšã«ãŒãããã¯ãã³ã¢ã«å ¥ãããšåããªãããšãããã®ã§è©ŠããŠã¿ãŠãã ãã
- finvã®ãããšã¯å ·äœçã«ã©ããªããã§ãããäžæ°bitããããããããããã®ãã€ããã
- ç·è¡šãèŒããŠãããããšå¬ããã§ã
- çå: 鲿ã©ãã§ããïŒ
- out of orderã³ã¢
- åå²åœä»€ãããã
- fadd, fmul, fsubã«å¯Ÿå¿ãã
- ã³ã³ãã€ã©ã®fibãåãã
- ãœãããŠã§ã¢å®è£ finvãåãã
- out of orderã³ã¢2ãæ§æ³äž
- ãªãªãŒããŒãããã¡ROBãåå²äºæž¬ã®ããã«å¿ èŠãªã®ã§ã€ããã³ã¢ãæ§æ³äž
- xstãã¯ãœ
- é·ãã®éãsignalãä»£å ¥ããŠããšã©ãŒã«ãªããªã
- ã¬ãžã¹ã¿çªå·ã«äŸåããŠfaddã®åäœããããããªã(ããŒãã®äžå ·å?)
- FPUãŸãããããããšãŸã£ããé¢ä¿ãªãã¯ãã®fibã®åäœãå€ãã(ããŒãã®äžå ·å?)
- ä»ã®çã®FPGAããŒãã§åãã®ã«èªåã®çã®FPGAããŒãã§ã¯åããªãããšããå£ããŠããïŒ
- FPUã¯finvãCå®è£ ããã誀差ã7εãããã®ã§ãªããšããã
- ã³ã³ãã€ã©ã¯ã©ã€ãã©ãªããã£ããäœã£ãŠãã¢ã»ã³ãã©ãæ¹è¯ãããã¬ã€ãã¬ã®ãœãŒã¹ã³ãŒãäžåŒãã³ã³ãã€ã©ã«æãããäœããã®çµæãåºåããã(ãã¹ãã¯ããŠããªã)
質ç
- ROBäœæ®µã«ãããæ±ºããŠããŸãã?
- ãŸã
- ãããã¯16åã§åããŸãã(hitodeãã)
- FPGAå£ããŠãããšããã®ã¯ãSRAMã®ãã¹ãã¯ããŸããã
- ãœãããŠã§ã¢å®è£ finvã§ã¯SRAMãäœã£ãŠããªã
- ã¿ã€ãã³ã°ãšã©ãŒãã§ãŠããªã
- äœããslackãããããã§ãããâãããã¯ããããã§ãéãã°æ¬¡ã«ãããšããããæ¹ã ã£ãã¯ããªã®ã§OK
- ucfã®11.52nsã11nsã«ããŠããåæã¯ã§ããã®ã§ããé§ç®ã§ããã
- 77.77MHzã§çºæ¯ããã®ã¯ç¢ºèªããŸããããããããããçºæ¯ã«å€±æããŠããããã
- 確èªããŠããŸãã
- ãã finvãœãããŠã§ã¢å®è£ ã¯66.6MHzã§åããŠããŸãã
- ããä»ã®çã®FPGAããŒãå šãŠã§åãããšããããšã§ããã°é£çµ¡ãã ãã
- finvã®èª€å·®ãšããã®ã¯äœãšã®èª€å·®ã§ãã
- x86ã§ã
- 誀差7ã¯ã¡ãã£ãšå€ãã§ãã
- æå€§7ã§ãã
- æå€§ã§ã
- ãããå®è£ ãééã£ãŠãããšããããã§ã¯ãªããããããŒãã«ã®äœãæ¹ã§ãããããŸãããã°1ãšã2ã«åãŸããããã§ããã倧äœ3ããããç®å®ã«ã
- ã·ãã¥ã¬ãŒã¿ä¿ã®finvã¯x86ã®ãã€ã䜿ã£ãŠã³ã³ãã€ã©ä¿ã®ãã¹ãããããšããæ¹éã§ããïŒ
- ã¯ã
- Cå®è£ ãã§ã次第å€ããäºå®ã§ã
- ã·ãã¥ã¬ãŒã¿ã¯å é±ã«åŒãç¶ãã¢ã»ã³ãã©ãã·ãã¥ã¬ãŒã¿ã仿§å€æŽã«å¯Ÿå¿ããããã«æ¹é ãã³ã³ãã€ã©ã®ãããã°ã®æäŒããããŠãã
- ã³ã³ãã€ã©ã¯ã©ã€ãã©ãªå®æããããã°ãããŠããã
- ã³ã¢ã¯internal errorãåããLUTäžè¶³ãåãã
- XSTã¯ã¯ãœ
- procedureã®åŒæ°ã®åã«package_name.type_nameã®åœ¢åŒããããšinternal error
- ã¯ããaliasã§å¯Ÿå¿ãããcheck syntaxã¯éã£ããsynthesizeã§ãšã©ãŒ
- ããããªãã®ã§æåã€ã³ã©ã€ã³å±éãã
- LUTãè¶³ããªã
- è«çåæããŠã¿ããLUT䜿çšç128%
- ã¡ã¢ãªããããæªããïŒãšæãã¬ãžã¹ã¿æ°ãæžããã(256 -> 32)ãšããããªãæ¹å
- ã¬ãžã¹ã¿ã¯BlockRAMã«ã¯ã®ããªãããïŒããŒãæ°ã®åé¡)ãªã®ã§ä»æ§å€æŽ
- æ®ã£ãŠããäœæ¥
- FPU: ãã€ãã©ã€ã³åãšfatan, fcos, fsin
- ã·ãã¥ã¬ãŒã¿: æ©èœè¿œå ãã³ã³ãã€ã©ã®ãããã°
- ã³ã³ãã€ã©: ãããã°
- ã³ã¢: ã·ãªã¢ã«éä¿¡ãSRAMãFPU
質ç
- fcosãšãã£ãŠããŒãã§å®è£ ããã®ã§ããïŒ
- ä»ã®æãã®äºå®ã§ã
- ã©ããªæãã®å®è£ ã§ããïŒ
- ä»FPUä¿ãããªãã®ã§ããããŸãã
- äžè§é¢æ°ç³»çµ±ããããšãåœä»€æ°çã«ã¯1000äžæžãããªããäœã§ãã
- å€åãã·ãã¥ã¬ãŒã¿ã§ãããããæžãåœä»€æ°ã調ã¹ãŠãããæå¹ãããªãããŒããŠã§ã¢å®è£ ããããšããã®ãè¯ããšæããŸã
- ããããªããšãã³ã¢ã«è² æ ãããããšããã®ã1ã€ãå€åããŒãã«åŒãã«ãããšæãããããæéãé£ãã
- ããšçµéšçã«ã·ãã¥ã¬ãŒã¿ç»åãšã³ã¢ç»åãçªãåããããšã现ãããããã°ãŒã£ãšåºãŠããããã®diffã0ã«ããããã«ã¯1ã€ãã€FPUãæããŠããäœæ¥ã«ãªãã®ã§ãã³ã¢ä¿ã¯æ©ãã«äŸ¿å©ããŒã«ãæã«ããŠãããæ¹ãããã
- BlockRAMã«èŒããããšã¯ã§ããŸããå€å1 clockã§2 writeããããšãæ°ã«ããŠããã®ã ãšæããŸãããæžã蟌ããšãã³ããŒã§2ç®æã«æžã蟌ãã°ãããã¡ãã£ãšã¢ã¯ã»ã¹ã«ããã§ãŒã³ã倧ãããªã£ãŠããŸãã®ã§âŠâŠãã¬ãžã¹ã¿æ°ãšçžè«ããŠãã ããã
- å€åã¬ãžã¹ã¿æ°ã¯256ãããã¯æžãããšæããŸãã
- ã³ã¢
- I/O åä¿¡åœä»€ãã·ããåœä»€ã®å®è£ ããã¹ãããã
- ALUã®æ®ãã®åœä»€(sub, ori)ãFPUã³ã³ãããŒã©ã®å®è£
- FPUã¯faddãäœããªãããŠãã
- ã³ã³ãã€ã©ä¿ã¯fibãã³ã³ãã€ã«ããŠã¿ããšç®ã§è¿œã£ãŠãããäœãããããããšã«æ°ã¥ããã®ã§ãããã°ãã
質ç
- ã³ã¢ä¿ããåœä»€ã®å®è£ ã®å²åãšããŠã¯ã©ããªæãã§ãã
- å€åå šéšå®è£ ããŸãã
- ã³ã¢ã®å šäœãšããŠã¯ã©ããªæãã§åããã®ãã§ããŠããã®ã§ãããåç¬ã§FPGAäžã§fibãåãããããŸãã
- fibã¯å é±ããããŠããŸã
- 倧äœåããŠãããã©ã¹ããŒã«ã¡ãããšãã£ãŠããªããŠãnopãã¢ã»ã³ãã©ã§å ¥ããªããšãããªãäœã§ãã
- ã³ã³ãã€ã©ä¿ãããšã¯ãã®èª¿æŽãïŒ
- äžå¿ã¢ã»ã³ãã©ãããŸãããã«ãå ¥ããŠãããããã«ããã€ããã§ã
- FPUããã¯66MHzã§åããªããšããåé¡ãçŽãããšããŠããã®ã§ããïŒ
- ããã¯ããããããªãã®ã§ãšããããæšãŠãããŠããã以å€ã®å°ãããã°ãçŽãäºå®ã§ã
- ã·ãã¥ã¬ãŒã¿ä¿ããã®é²æå²åãšããŠã¯äœïŒ ãããã§ãã
- ã¡ãã£ãšäºæ³ãã¥ããã§ã
- å®è£ ç¶æ³ãšããŠã¯äœãçµããŠããªããŠãäœãçµãããŸããã
- addåœä»€ãããããå®è£ ããŠããªãã§ã
- ã§ãaddåœä»€ãå®è£ ã§ãããããã®äžå°ã¯ãããã§ãã
- ã³ã³ãã€ã©ã¯äœãåé¡ã ã£ããã§ãã
- ã³ã³ãã€ã©ä¿ãããªãã®ã§åãããªãã§ã
- ã³ã¢ä¿ããã¯ãåå²ãè€éã«ãããã€ãšã«ãŒãããã¯ãããã«æ³šæããŠãã ãã
- ã«ãŒãããã¯ã¯66MHzã§ã¯ããåããŠããŠãé床ãäžãããšã¡ãã£ãšãã°ãäœã§ã
- ãã€ãã©ã€ã³ã§ãããããã©ã¯ãŒãã£ã³ã°ã¯
- ä»ãããããããšæã£ãŠããŸã
- ãã©ã¯ãŒãã£ã³ã°ãçµããšãè²ããªåœä»€åãäœã£ãŠãããã°ããªããšãããªãã®ã§é 匵ã£ãŠäžãã
- ãã£ããã£ããã£ãŠãããã«ãå ¥ããªãããããªãå Žåãšã¯
- æžã蟌ã¿2é£ç¶ãšããã¡ã¢ãªãŸãããšãã®ç¹æ®ãªãã€ã§ã
- åå²ã§ããã«ã¯ïŒ
- åå²ã¯é å»¶åå²ãªã®ã§ç¹ã«èŠããªãã¯ãã§ã
- ãã©ã¯ãŒãã£ã³ã°å ¥ãããšãã€ãã©ã€ã³åã®æ©æµãå€åã«åŸãããŠéããªãã®ã§é 匵ã£ãŠäžãã
- ã³ã¢
- BRAMã®äœ¿ãæ¹ã調ã¹ãããŒããã€ãã£ã
- ISAãšã¡ã¢ãªãŸãããç¡äºã«çä»ãã
- å šäœãã§ãããã£ãŠããŠãfibãåããæºåãã§ãã
- ã³ã³ãã€ã©
- ã³ã³ãã€ã©èªäœã¯å€§äœã§ãã
- ã©ã€ãã©ãªãããã¯ããã
- ã·ãã¥ã¬ãŒã¿
- faddã®Cå®è£ ã宿ãã(???)
- ããããåœä»€ããã£ãšè¿œå ããŠãã
- FPU
- faddã®å®è£ ãçµããŠãfmulãå®è£ äž
質ç
- ã·ãã¥ã¬ãŒã¿ä¿ããã®ã·ãã¥ã¬ãŒã¿ã®å®è£ ç¶æ³ã¯
- FPUãšI/O以å€ã¯å šéšå®è£ ããŠãã
- ã³ã³ãã€ã©ãäœã£ãååž°fibã¯åããããã
- ãããã°çšã«æ©èœã远å ããã
- finvã¯ä»ããªããã§ããã£ãïŒ
- å®è£ äºå®ã§ãã
- fsqrt�
- ãŸã ã€ããªãäºå®ã§ã
- finvã¯ããŒãã«åŒãã§ãã
- ãã®äºå®ã§ã
- ã·ãã¥ã¬ãŒã¿å®åãã
- FPUã®ãã°ã®ä¿®æ£
- 倱æäŸ
- floor
- ã·ãã¥ã¬ãŒã¿å FPUã®åŸ®åŠãªèª€å·®
- åé¡: åœä»€çš®ãå°ãªãããâŠâŠ
- åœä»€æ°ãå€ã
- å®è¡åœä»€æ°ãå€ã
- 解決ç
- ã©ã€ãã©ãªã®æ¹åãã³ã³ãã€ã©ã®æé©å
- åœä»€ã®è¿œå (宿°åã宿°ã·ãããªã©ïŒ)
- çéã·ãã¥ã¬ãŒã·ã§ã³
- CPUçšã®ã¢ã»ã³ããªãx86çšã®ã¢ã»ã³ããªã«JITçã«å€æããŠã·ãã¥ã¬ãŒã·ã§ã³ããããšã§çéã·ãã¥ã¬ãŒã·ã§ã³
- å®è¡åœä»€æ°ã«ãŠã³ããããã¯ã§ãã
- æ¥é±ã®äºå®
- åœä»€å®è¡æ°ã®åæžæ¹æ³ãèãã
- ãµã€ã¯ã«ã¢ãã¥ã¬ãŒãã·ãã¥ã¬ãŒã¿ãäœãå§ãã
質ç
- FPUã®èª€å·®ãšã¯
- FPUãŸããã®ã·ãã¥ã¬ãŒã·ã§ã³ãã¡ãããšã§ããŠããªãã®ã§ä»ã¯x86ã®æŒç®ã䜿ã£ãŠããããåŸã FPUã®Cå®è£ ãã¡ãããšã§ããããšã確èªã§ã次第ããã£ã¡ã«åãæ¿ããããšæããŸã
- ã·ãã¥ã¬ãŒã¿å®åããã§ãšãããããŸã
- ã©ã®ç¹ãèŠãŠå®æ°åã宿°ã·ããã
- å³å€ãæ±ããã®ãload immã ãããœãŒã¹ãèŠããšæããã«ç°¡åãªaddãshiftã§ç¡é§é£ãããŠããããã«èŠãã
- ãŸã å²åã¯åºããŠããªããããããšèŠãŠæ¹åã§ãããã ãšæããããšã
- ã¯ã
- ã·ãã¥ã¬ãŒã¿ã¯Cã§ããïŒ
- ã¯ã
- äœåãããããããŸããïŒ
- 5åãããã§ã
- å®è¡åœä»€æ°ã¯
- å šãæé©åããªãç¶æ ã§æå200åãããã§ãã€ã³ã©ã€ã³å±éããããŠãã£ã20åãããã§ããã
- ãµã€ã¯ã«ã¢ãã¥ã¬ãŒãã·ãã¥ã¬ãŒã¿ã¯ã©ããŸã§æ£ç¢ºã«ã³ããŒãããã§é£æåºŠãå€ããããã©ããŸã§æ£ç¢ºã«ããã€ãããïŒ
- äœã£ãŠããã®ã¯FPUä¿ãã¯ããã¯ããšã«åäœã確ããããããããªãã®ãäœããããšæã£ãŠããã
- 1step, 1stepã¬ãžã¹ã¿ã«æ ŒçŽãããŠããå€ãåãããšãããã®ã§ãã
- ã¬ãžã¹ã¿ãããã ããã³ã¢ã³ããŒã¿ãã¹ãROBãŸã§åºåã§ããããã«ããã
- 確ãã«ROBãŸã§ã·ãã¥ã¬ãŒãããŠãããšãROBã®æé©æ®µæ°ãªã©ãç°¡åã«å®éšã§ãã
- ã¢ãŒããã¯ãã£ã«ãã£ãŠã·ãã¥ã¬ãŒã¿ãå€§å¹ ã«æžãæããªããšãããªããšæãããä»ã®ã¿ãŒã²ããã¯ïŒ
- ä»ã¯1stã®ã³ã¢ã®VHDLãã¡ã€ã«ãåèã«ããŠäœã£ãŠããŸãã
- ããçšåºŠã³ã¢ãã§ããŠããããã³ã¢ããå ã«ã·ãã¥ã¬ãŒã¿ããããšå¬ããã®ã§ããã£ããšOoOã®ãã®ãäœã£ãŠã¿ããšè¯ãããç¥ããŸããã
- ã€ã³ã©ã€ã³å±éã®æ·±ãã¯
- 100ãšã远å ã§30çšåºŠã®å¥ã€ã³ã©ã€ã³å±éãããŠããŸã
- ãã©ã¯ãŒãã£ã³ã°ãå®è£
- faddãæžãçŽã
- ã·ãã¥ã¬ãŒã¿ã¯ã²ãšãŸãååœä»€ã«ã€ããŠå®è£
- ã³ã³ãã€ã©ã¯ã©ã€ãã©ãªæžãéäž
質ç
- FPUä¿ã®ãæ¹è¯ããšã¯ïŒ(ïŒ ç·è¡š)
- ãªãã¡ã¯ã¿ãªã³ã°
- ããŒã¿ãã¹ã®æ¹è¯ãšã
- ã³ã³ãã€ã©ã®ã©ã€ãã©ãªæ®ãã¯ïŒ
- äžè§é¢æ°ã¯ãã¶ãã§ããŠããã倧äœã¯æžãçµãã£ãŠããã®ããªããšæã£ãŠããŸãã
- ã³ã¢ã§ä»åãã®ã確èªã§ããŠããã¢ããªã±ãŒã·ã§ã³ã¯
- ãšããããfibã ãã§ã
- ã³ã¢ã®å®è£ ã®ããã«ISAãæŽçããã
- ã³ã³ãã€ã©ã®ã©ã€ãã©ãªã®ããã«åœä»€ãå¢ãã
- add, neg, bctr, bctrl, mtctr, fcm, sl, sr, mfgft, mfftg
- PowerPCã®ã«ãŠã³ã¿ã¬ãžã¹ã¿é¢ä¿ããããšäŸ¿å©ãããªã®ã§ä»ãã
- FPRãšGPRã®ããŒã¿åãæž¡ãåœä»€
- ã³ã¢: ISAã®å€æŽã«å¯Ÿå¿ãããŒã¿ãã¹ãå¶åŸ¡ãŠããããã§ããããããããã¹ãã»ãããã°
- ã³ã³ãã€ã©: ã©ã€ãã©ãªãçµãã ãã¬ã€ãã¬ã®ã³ã³ãã€ã«æåããããããããã°ã
- ã·ãã¥ã¬ãŒã¿: ISAã®å€æŽã«å¯Ÿå¿ããã¬ãŒã¯ãã€ã³ãæ©èœãæ¹å(äžèŠ§è¡šç€ºãåé€)
- FPU: faddãã·ãã¥ã¬ãŒã¿ã§åããããããã宿©ãã¹ã
質ç
- ã«ãŠã³ã¿ã¬ãžã¹ã¿ã¯ããŒããŠã§ã¢çã«ã¯ãªã«ãç¹å¥ãªããšããããŸããïŒ
- ãããããã ãGPRã®å€ã«ãããŸãã
- x86ã®åœä»€ã¿ããã«åæã«åããŠãããããã§ã¯ãªã
- éããŸããã¬ãžã¹ã¿ã«æã£ãŠããŠæäœãããã§ããŸãã
- å šäœã®é²æçã«ã¯ã次ã¯ãã³ãã«ããéåãåºãããšããæã§ãã
- å šç¶éã«åã£ãŠãªãã§ãããŸã fibãåããŠããŸããã
- çåãå ¬åŒã«ã鲿ã©ãã§ãããã«
- å®åãã
- 37.8ååœä»€ã2å匱
- ãžã£ããžãµãŒããŒã¯ãŸã åãããŠããªã
- OoOã³ã¢: èš³ã®ããããªããã°ããšãã
- processæã§æªåæåã®å€æ°ã䜿ããã¹ãååšãã
- æå³ããªãã©ããã®çºçâã¿ã€ãã³ã°è§£æã劚害ããã£ãœãïŒ
- finvãçµã¿èŸŒãã
- 2ã€ç®ã®OoOã³ã¢: æžãå§ãããISAæžãçŽããã
- ã³ã³ãã€ã©
- ã©ã€ãã©ãªã®ãã°ãçŽããã
- ãããã°çšã«ã³ã³ãã€ã©ã®wrapperã®ãªãã·ã§ã³ãå¢ããã(finvããœãããŠã§ã¢)ã
- éã®æé©åãžã
- FPU
- finvãã§ãããæå€§èª€å·®3ulpã2ã¯ããã¯
- faddã®è»œéå
- 次ã¯fsqrtãäœã
- ã·ãã¥ã¬ãŒã¿
- cmp, cmpiã«ãã°ããã£ãã®ã§åã£ã
- finvãçµã¿èŸŒãã
- outåœä»€ã§charåã§åºåããã16鲿°intã«ãããéžã¹ãããã«ãªã£ã
質ç
- åé¡ã«ãªã£ãprocessã¯ã¯ããã¯ã®ç«ã¡äžããã§åããã®ã§ã¯ãªãïŒ
- çµã¿åããåè·¯ã§ã
- 6çã®ã€ã³ã©ã€ã³å±éãæ°ã«ãªã£ãŠããŠã100ããããããã°ã©ã ã¡ã¢ãªã«èŒããªããããããªã
- æ°ããISAãšã¯ïŒ
- ã³ã³ãã£ã·ã§ã³ã¬ãžã¹ã¿ãé¢åãããã®ã§GPRã«çµ±åããã
- é åã¯å®æ°çªå°ã«ã¢ã¯ã»ã¹ããããªãã®ã§ãã¡ã¢ãªã¢ã¯ã»ã¹ã®ã¢ãã¬ã¹ã®ãªãã©ã³ããšããŠå³å€ããšããããã«ããã
- ã¡ã¢ãªãŸããã§r1+r2+immãšãªããªãã©ã³ããããããåãåœä»€ããããã¬ãžã¹ã¿ã®ããŒãæ°ãå¢ãããŠéªéãªã®ã§æ€å»ããã
- åããŠãã®OoOã³ã¢ãªãã§ãã
- ãã«ããµã€ã¯ã«ã®æ¹ãåããã®ã§ããOoOãã2å以äžé ãã£ãã®ã§ããæ°ããªããã
- ãã«ããµã€ã¯ã«ã®æ¹ã¯ãã©ã¯ãŒãã£ã³ã°ããŠãªãã§ã
- OoOã®æ¹ããªã¶ããŒã·ã§ã³ã¹ããŒã·ã§ã³ãå°ãªããšããåé¡ããã
- ãªã¶ããŒã·ã§ã³ã¹ããŒã·ã§ã³ããã€ã§ããïŒ
- ALU, FPUã®äžã§ãããã2åãã€ãçµæ§ã¹ããŒã«ããŠããã
- ãªãœãŒã¹çã«äœè£ã¯ïŒ
- ãã£ãã·ã¥ãå ¥ããªããã°ãŸã 30%ããããªã®ã§äœåãããããã§ã
- faddãè€æ°å ¥ãããããŠãé¢çœãã
- faddããã€ãã©ã€ã³èšèšã§çµæ§ã€ã£ããããã§ã
- ã·ãã¥ã¬ãŒã¿ãšã¯äžèŽããã®ïŒ
- å®å šã«äžèŽããŸããã
- ä»åŸã®æ¹éã¯ãé«éåãäœèãã©ã¡ãïŒ
- éããããã§ãã
- fibããŸã åããŠããªã
- ã³ã¢ã¯å€§äœã§ãã
- ã³ã³ãã€ã©: ã©ã€ãã©ãªå€§äœåºæ¥ãããã ããããªããå¿ èŠãªããšãã§ãŠããã®ã§å šäœã§çžè«ããªããä¿®æ£äž
- ã·ãã¥ã¬ãŒã¿ã¯å€åã»ãŒå€§äžå€«ãã³ã³ãã€ã©ãã§ã次第ãã°ãèŠã€ãããšæãã®ã§ãããã°ãããã
- FPUã¯fadd, fmulã®å®è£ ãçµãã£ãããããããããã°ã
質ç
- ã¹ã©ã€ãããšã«èæ¯ã®è²ãå€ãããšå¹³æšå çã®ç¬ããåãããšãã§ããŸã
- finvã¯ã©ãã§ãã
- ãŸã æãã€ããŠããªãã§ã
- ã³ã¢ã¯ã©ããªæãã§ããã
- ååœä»€èªäœã®ãããã°ãå€§äœæžãã§ãããããããã³ãã¢ã»ã³ãã«ãããã®ãåããŠãããããã
- ã¡ã¢ãªã¢ã¯ã»ã¹ãIOã¢ã¯ã»ã¹ããããããªåœä»€åã§ããïŒ
- ã¯ãã
- åä¿ã¯ããããæºåãã§ãå§ããŠããŠãä»ã©ãã§è©°ãŸã£ãŠããæãã§ãã
- ã³ã¢ã®å®è£ ã¯çµãã£ãŠããããã³ã¢ä¿ãããŸãæéãåããªããŠãªããªããããã°ã§ããªã
- FPUã¯å®è£ ã¯ããããã¬ã³ã¬ã³é²ãã§ããæã
- éœåãåããªãã£ããšããæãã§ãã
- ã¯ã
- åºç€ã«äžå ·åããã£ããšããããšã§ãããã¢ã¬ä»¥æ¥äœããªãã§ããïŒ
- åããããªçŸè±¡ãä»ã®çã§ãèµ·ããã®ã§ã黿ºã®æ¹ãæªãã®ãã
- çç¶ã¯ã©ããªã®ã§ããã£ãã
- CPUã®çºç±ãç°åžžã«
- æ®éã«åã
- 4çã§ã黿ºã«ãã£ãŠFPGAãç±ããªãäºæ¡ãã
- ä»ã®é»æºã§ããããªããŸãããã
- 黿ºãåã£ãŠ1æéããããããŠä»ã®é»æºã䜿ããšåãããã«ãªããŸããã
- ã©ã®ãããæããªããŸãããè§Šããªããããã§ããã
- è§Šã£ãŠã¢ããã£ãŠãããã§ããã
- åšåº«ããªãã®ã§æ©ãã«çããå®åããŠããã£ãŠãå®åããŠäœèããããã人ã«ã¯æ°ããããŒãã
- äœèããããã人ã¯ã©ã®ãããããŸãã
- liva: æ°ããçãç«ã¡äžããŠããããã§ãããããã¯ãŒã¯åšãã
- ã³ã¢
- IOãwordã¢ã¯ã»ã¹ã«
- å šåœä»€ãå®è£ ãã(ã¯ã)
- ææžãã§åºæ¬ãã¹ããããã€ãèµ°ããã
- ååž°fibãåãããŠãã¡ã¢ãªåšãã§ãŸã ã¡ãããšã¯åããŠãªããã
- ã³ã³ãã€ã©
- ãªã³ã«ã«ããããååãªåé 眮æ©èœãå®è£ (è€æ°ã®.text, .dataã»ã¯ã·ã§ã³ãã)
- ã©ã€ãã©ãªãå®è£
- ã¬ã€ãã¬ãã³ã³ãã€ã«
- ã¬ã€ãã¬ãåãããã(äž»ã«ã¯ããŒãžã£ãŒåšãã®ã¡ã¢ãªã¢ã¯ã»ã¹ã§èœã¡ã)
- ã·ãã¥ã¬ãŒã¿
- Cã·ãã¥ã¬ãŒã¿ã®FPUåœä»€ãçµã¿èŸŒãŸãã
- logistic(ããžã¹ãã£ãã¯ååã15åãããåããã€)ã忢ãããå€ãã¡ãã£ãšéãã£ãœãã
- 倧ååã«pypyã䜿ã£ãŠã¿ãŠã¯ã©ãããšããã¢ããã€ã¹ãããã£ãã®ã§äœ¿ã£ãŠã¿ãã10ç§ãããããå€ãããªãã£ã
- FPU
- finvã®ç²ŸåºŠãçŽãããã«ããŒãã«ãåŒãçŽãã
- fcmp, finvã®vhdlå®è£ ãçµãã£ã
- å šæ°èª¿æ»ã¯ã§ããŠããªãããšããããäžè¬çãªã±ãŒã¹ã§æå³ããåäœããã
- äœè£ãã§ããã°fdivãfsqrtã®å®è£ ãæ€èšããã
質ç
- ããããé 調ã«ãããã°ãé²ãã§ããå°è±¡ã§ãã
- ã³ã¢ã®ãã¹ãã¯ãã¡ããš
- ååœä»€ã®å®è£ ã«ã€ããŠè»œãããããããªãã¹ããããã£ãšæžããŠãããããåããŠããŸããç¹ã«FPUåšãã¯ã¡ãããšåããŠããŸãã
- ã³ã¢ã§fibã¯åããïŒ
- ååž°fibããŸã åãããŠããªã(æãä»ããŠããªã)ãä»ã®åœä»€ã¯åããã®ã§ãããããããã
- ã³ã¢
- ã ãããåãããã«ãªã£ã
- è€æ°ã¯ããã¯ãããfpuåœä»€ãŸããã§ãã°ããã£ããåãã
- ã³ã³ãã€ã©
- ã©ã€ãã©ãªãã§ããã倧äœåãããã«ãªã£ãã
- ãã³ãã«ãããã·ãã¥ã¬ãŒã¿ã§åãã
- ã·ãã¥ã¬ãŒã¿
- 现ããæ©èœæ¡åŒµãšãã°ä¿®æ£ããã
- recv8, send8ããã¡ã€ã«ã§ã§ããããã«
- FPU
- fmul, finv, fsqrtãäžå¿åºæ¥ã
- 宿©ã§ã©ã³ãã ãã¹ããã
- ã¬ãŠã¹ã»ã«ãžã£ã³ãã«ã®ã¢ã«ãŽãªãºã ã§ååšçãåºãããã°ã©ã ã宿©ã§åãã
質ç
- fibåãããã§ããã£ã
- ã³ã³ãã€ã©fibã¯å®æ©ã§ãåãã
- ã³ã¢: vsimäžã§ã®ååž°fibã«ãããŠå®è£ äž
- ã³ã³ãã€ã©
- ã©ã€ãã©ãªãçµã¿èŸŒãŸããã
- ããŒããã€ã³ã¿ãšã¹ã¿ãã¯ãã€ã³ã¿ã®åæå€ã®ãã°ãåã£ãã
- subã®ãã°ããšã£ãã
- cos, sin, atanãHorneræ³ã§æžãæããã
- ã·ãã¥ã¬ãŒã¿
- FPUåœä»€ãx86ãã€ãã£ãã®åœä»€ã§ãµããŒã
- äžéšã®ã©ã€ãã©ãªé¢æ°ãæ£ããåäœ
- åæåããŒã¿ã®èªã¿èŸŒã¿
- æ©èœã®è¿œå
- ã¹ãããããšã«ã¬ãžã¹ã¿å€ã衚瀺
- ã¹ãããããšã«éã¢ã»ã³ãã«ãããã³ãŒãã衚瀺
- ã³ã³ãã€ã©ä¿ããã®pull reqãåŠç
- FPU: faddã宿©åäœãããfmuläœæäžã
- äºå®ãã1é±éçšåºŠé ããŠãã
質ç
- Horneræ³ã䜿ããšè¯ãããšããããã§ããïŒ
- å€åèª€å·®ãæžããŸã
- ã©ã€ãã©ãªã¯å šéšå®è£ ã§ããŠãããã§ããïŒ
- å®è£ ã¯ã§ããŠãããã§ãããã¹ãããŸã å šéšã¯ã§ããŠããŸããã
- ãããã³ã³ãã€ã©ã¯ããšã¯ãã°åãã ãã§ã¬ã€ãã¬ãã³ã³ãã€ã«ã§ããã
- ã¯ã
- ã³ã¢ã¯ããšäœãè¶³ããªããã§ãã
- åå²ãŸããã§ãã°ããã
- åå²åœä»€ã®æ¬¡ã®åœä»€ãäœèšã«å®è¡ãããŠããŸã£ãŠãã
- FPU2人ããŸããããåæ ãšãã£ãŠããŠããŸãã
- ããŸãåæ ããŠããªãã§ã
- ä»ã¯fmulãäºäººã§äœã£ãŠãããšããæã
- ãããªæãã§ã
- æçµçã«ã§ããŠãããè¯ãæ¹ãæ¡çšããïŒ
- ã§ããæ¹ãæ¡çšãããšããæãã§ã
- ãã³ãã«ãããã·ãã¥ã¬ãŒã¿ã§åããã宿©ã§åããªã
- FPU: f2iã®ä¿®æ£ããã(仿§ã«åéãããã£ã)
- ã·ãã¥ã¬ãŒã¿ã¯ã²ãšãŸã宿
- ã³ã³ãã€ã©ä¿ã¯ã©ã€ãã©ãªãæžãã
- jåœä»€ã埩掻ãããäºå®
- ã·ãã¥ã¬ãŒã¿ã«breakpointãªã©ã®æ©èœã远å ããã
- ã©ã€ãã©ãªã®ãããã°ãããäºå®
質ç
- ãã³ãã«ããã¯ã©ããªæãã ã£ãã®ã§ããïŒ
- 400x400ãã¯ã»ã«ã®'0'ãåºåãããŸãã
- ã·ãã¥ã¬ãŒã¿ãšããã®ã¯vsim/isimã§ã¯ãªããŠãäœã£ãã·ãã¥ã¬ãŒã¿ïŒ
- ããã§ã
- ãã°ã®åå ã¯æ€èšã€ããŠããŸããïŒ
- ããããã£ãŠããªãã§ã
- æåã¯finvãé ãã®ããã°ãçãã§ããã®ã§ã¯ãªãããšè©±ããŠããããfinv䜿ã£ãŠããæã¯å°ãªãããããããªãã£ãœãïŒ
- å®åããŸãã(66MHz 115200 133sec 39.3ååœä»€ IPC0.44)
- ã³ã¢
- forwardingäžè¶³ïŒã«ãããã°ããã£ã
- baud rate 9600 -> 115200ã§260sec -> 133secã«ãªã£ã(senderã§è©°ãŸãã®ãæžã£ã)
- ã©ããã¯æ» ãŒããªããã°ãããªã
- æ¬åœã«ã¯ãªãã£ã«ã«ãã¹ãèŠããªããªã
- 以åfaddã1 clockã§åããšãã£ããåã§ãfaddã«ã©ãããçããŠããŠã¿ã€ãã³ã°å¶çŽããã¹ã£ãŠãã
- ã³ã³ãã€ã©
- ãã°ãã€ã¶ãããåãã
- cos/sinã®èª€å·®ããšããŠããªãã£ãœãïŒ
- x = nÏã®åšãã§ã ãããã倧ããªèª€å·®ãåºã
- ã·ãã¥ã¬ãŒã¿
- FPUã®Cå®è£ ãåã蟌ãã
- x87ãšã®åæ¿ãæ©èœãã€ãã
- ã·ãã¥ã¬ãŒã¿ãšå®æ©ã®diff 0ã«ãªã£ã
- FPU
- cosã®èª€å·®ã枬å®ããããã°ã©ã ãæžãã
- cos/sinã®èª€å·®ã®åå ç¹å®ïŒ
- 2nd architecture
- åœä»€ã»ããæ€èšäž
- Tomasulo + super scaler
- ã³ã³ãã€ã©ã¯min-caml
- cycle accurate simulatorãã³ã¢ä¿ãã·ãã¥ã¬ãŒã¿ä¿ãäœãïŒ
質ç
- å®åããã§ãšãããããŸã
- ã·ãã¥ã¬ãŒã¿ãšäžèŽããïŒ
- ããŸãã
- ã³ã¢
- fpuåå²ãŸããã®ä»æ§ç¢ºèª(ã·ãã¥ã¬ãŒã¿ä¿ãšé£ãéã£ãŠãã)
- ååž°fibã宿©ã§åãã
- ãã³ãã«ãã: ããŒã¿ã®åæ°ã¯ãã£ãŠãããåºãŠããæ°åãå šéš0
- ã·ãã¥ã¬ãŒã·ã§ã³ç°å¢ã®æ¹åããã(ãããã°åºåã®on/offãåãæ¿ããããšã)
- ã³ã³ãã€ã©
- ãã°ãnååã£ã
- ã¬ã€ãã¬ã§é»ãç»åãã§ã
- ãã¹ãã±ãŒã¹ãå¢ããã
- ã·ãã¥ã¬ãŒã¿
- in/outå®è£
- fpuã®Cå®è£ ãçµã¿èŸŒãã
- FPU
- 宿©ãšçµåããã倧äœåãã
質ç
- ã³ã¢ã£ãŠFPUãšãã®ç°¡åãªãã¹ãã¯å€§äœéã£ãŠããïŒ
- ã¯ãã1+1ãšã1+2ãšãããããŠããªãã§ãããé£ç¶ã§äœ¿ã£ãæã«ã©ããªããããªã©ã¯è©ŠããŠããªãã§ãã
- ããŒã¿ã®åæ°ã¯åã£ãŠããã®ã§ããã¡ããã¡ããªæã«ããã°ã©ã ãé£ãã§ãã£ãŠãããšãããããšã¯ãªãã¿ããã§ããã
- æ¯èŒåäœãåãããããªã¢ã»ã³ããªã®ãã¹ãã¯éã£ãŠããŸãã
- ã¯ã
- ä»ã£ãŠminicomã䜿ã£ãŠããŸãã
- cutecomã§ã
- ãã£ãâŠâŠããããåæã«0ãæšãŠãŠããšãããªãããã§ããã
- ã¯ããfibãackã¯ã¡ãããšåããŠããã®ã§ãä»ã¯FPUåšãããªãšæã£ãŠèª¿ã¹ãŠããŸãã
- ãããã©ã€ãã©ãªã§ããã
- ã·ãã¥ã¬ãŒã¿ã ãš(FPUã®åŸ®åŠãªèª€å·®ãèŠããŠ)ãã³ãã«ãããåããŠããã®ã§ãã³ã¢ãšFPUã®åé¡ã ãšæã£ãŠããŸãã
- ã³ã³ãã€ã©ãçã£é»ãªç»åã§ãã
- ãã£ãã¡ãã£ãšã ã鲿ããã£ãŠãçã£é»ã§ã¯ãªããªããŸãããã§ãããããããªãæãã§ããã¯ã»ã«ã70%ãããã§ãããšã»ã°ãã©ã§æ»ã«ãŸããã
- ã¡ãªã¿ã«ã©ããçŽããã®ã§ãã
- ã¬ãžã¹ã¿ã®äœ¿çšèŠçŽãèªåã§ããããå€ããŠããŸããŠãæ»ãå€ã¬ãžã¹ã¿ãæŽæ°çšãšæµ®åå°æ°ç¹çšã§çªå·ãéãã®ãåãçªå·ã«æããéãmin-rtã§ãã䜿ã£ãŠãªããããªã©ã€ãã©ãªé¢æ°ã®å®è£ ã®æ¹ãçªå·ãå€ããã®ãå¿ããŠããã
- ã³ã¢
- OoOã³ã¢(2)ãäžéšã§ãããALUåœä»€ãšfaddãåã
- ã³ã³ãã€ã©
- Null
- FPU
- fsqrtã ãããäœã£ãã
- Cå®è£ ã§ãã(æå€§èª€å·®2ε)
- 2ã¯ããã¯ã ãšå®æ©ã§åããªãã£ãã®ã§3ã¯ããã¯ã§åããããšããŠãã
- ã·ãã¥ã¬ãŒã¿
- Nil
質ç
- ã³ã³ãã€ã©ã®æ¹ã¯ä»ããã£ããããŸãã
- ã¯ãã
- ã€ããã£ãåœä»€æ°ãæžããcommitããããŸãã
- fsqrtæå€§èª€å·®2ã§ãããçµæ§æ§èœãè¯ããã®ãã§ããã®ã§ãããäœãããŒãã«ãäœãéã«å·¥å€«ããç¹ãšããããŸããã
- åŸããå²ãšãäžçªäžã®bitãåžžã«1ãªã®ã§ãããçããããšãããããã§ããããæ®éã«ãã£ããçµæ§è¯ã粟床ã§ããã
- æèŠçã«ã¯2ã¯ããã¯ã¯ããŒãã«ã®æã§ã€ãããšæãã®ã§3ã¯ããã¯ã§è¯ããšæããŸã
- 宿©ã§åããªãã£ãã®ã¯ã¿ã€ãã³ã°ãéã«åããªãã£ãã®ã§ãã
- ã¯ã
- ã¿ã€ãã³ã°å¶çŽã®èŠåãåºãã®ã§ããïŒ
- 4nsecè¶³ããªããšèšãããŸãã
- å®åããŠããã¿ããã§ããããã®å ã¯é«éåãç®æããŠããã ããã°ãšæããŸã
- FPU: cycle-accurateã·ãã¥(tomasuloçš)ã®å®è£ äž
- ã·ãã¥ã¬ãŒã¿: rev2ã«ãããŠåçåœä»€æ°ã®çµ±èšããšãå®è£ äž
- ã³ã³ãã€ã©: ã€ã³ã©ã€ã³å±éåšãã®6å)fmulã®ä¹ç®æé©åãããããå®è£
- ã³ã¢: xstãšæ Œéäž(ååž°fibãåãããã«ãªã£ã)
- FPUåšãã®ããš
- åè·¯åšæ³¢æ°ãéãããã(7/6å)ã¯ãªããã²ã£ããã£ã
- ä¹ç®åšã®èšèšãäžæã ã£ãããã ã£ã
- rev2ã«åããŠSIMDçãªæ°ããåœä»€ãèããã
質ç
- SIMDçãªåœä»€ãšã¯
- ã¡ã¢ãªããããããã®å€ãåã£ãŠããŠå šéšãè¶³ãããconcurrentã«åããããšãã
- çŽ æµã§ãããããã¯ã·ãã¥ã¬ãŒãçµæããã®èŠè«ããã£ãã®ã§ããããã
- ãŸã ã§ã
- ãã£ããè¯ãããã ãªããšæã£ãŠèããŠããŸã
- SIMDçãªã®ã£ãŠã³ã³ãã€ã©ã§ããŸã䜿ãããã§ãã
- ã©ããã颚ã«å®è£ ããã®ãäžçªæ¥œããã§ãã
- äžçªæ¥œãªã®ã¯min-rt.mlãå€ãã¡ããæ¹æ³ã§ãããã¯å³å¯ã«ã¯ã«ãŒã«ã«åã£ãŠããªã
- éå ¬åŒçµæã§ãããã°ããã§ãè¯ãã§ã
- ãã®ã³ãŒãã¯äžŠåæ§ãçã¿åºãã®ãé£ãããšã®ãã£ã±ãã®åã§ããäœããã䜿çšã§ãã圢ã«ããŠãé¢çœããšæããŸãã
- xstãšäœãæ Œéããã®ã§ãã
- ä»ã¯å€§äœæ Œéããã£ã
- 宿©ãšmodelsimã®çµæãæããã«åããªãããšããã£ã
- modelsimã®post translateã§ãããšå®æ©ãšåãããŒã¿ãåŸããã
- xstãããããªã³ãŒããçãã§ããããã
- ãããäœãšãããŠããŸãã
- signalã®ååãå€ãããšãã§ãã
- åæåã¿ãããªã®ãå£ããŠããã¿ããã ã£ãã®ã§ã仿¹ãªãstd_logic_vectorã«ãªãããŠãããšåããŸããã
- ã³ã¢
- ISAã«ããååœä»€ã®ãããã°ãå®äº
- ãããã¿ã€ã宿
- fibã¯ãŸã 宿©ã§åããŠããªã
- ã³ã³ãã€ã©
- ã©ã€ãã©ãªãããã
- min-rt.mlã®ã³ã³ãã€ã«ãéã£ã
- ãŸã ãã°ã1ã€ãã(ãã¹ããã颿°åŒã³åºãããã°ã£ãŠãã)ã®ã§ãŸã ã·ãã¥ã¬ãŒã·ã§ã³ã¯ããŠããªã
- ã·ãã¥ã¬ãŒã¿
- å ã ã ãã¶å®æããŠãã
- ãããããæ©èœã远å ããŠãããŠãã
- åããã®ãã§ãããŸã§ã¯ãããã°ã«åå ããŠããã£ãŠãã
- FPU
- fmulãVHDLå®è£ äž
質ç
- ã©ãããžãããã°ã£ãŠããã§ãã
- åããã¢ã»ã³ããªã®ã³ãŒããèŠããšèç¡ããããŒã¿ãããŒãããããšããŠãã
- ã³ã¢ã®ã·ã¹ãã ã³ãŒã«ã£ãŠããã®ã¯å ·äœçã«ã¯ã©ããããã®ã§ããã£ã
- read_charãšãããããã®ã§ããã«ãŒãããã¯ã®ãã€ã
- in/outã®ãšãããã·ã¹ãã ã³ãŒã«ã®åœ¢ã§å®è£ ããŠããããšã
- ããããããšã§ã
- å°æ¥çã«ã¯OSãäœãæ§æ³ãªãã§ããïŒ
- ããã§ã
- å²ã蟌ã¿ãšãã«ã¯å¯Ÿå¿ããªããã§ãã
- ããªãããããªãã§ãã
- ã§ããããããªã
- 1é±éãããŠ2nd ISAãè©°ããŠãç ç©¶ãã
- 12ææ«ãŸã§ã®ç·è¡šãåŒããã仿¥ãŸã§ãçš®ã ã®æè¡èª¿æ»ã倧äœ12/14äœã«å®åããã¯ããããããæé©åã§ã1æã¯ææ«è©Šéšã
- 2ndã®åœä»€ã»ããã¯1stãããšã«ããã€ãã®åœä»€ã远å ã»åé€ãã
- ã·ããåœä»€ã¯å³å€ã®ã¿
- ãã©ã³ãåœä»€ã®å å®(eq, neq, lt, leq)
- fsubãã€ãã
- æµ®åå°æ°ç¹ãŒãã¬ãžã¹ã¿ãã€ãã
- ã³ã¢
- 1stã®ã¯ããã¯ãäžããã88MHzãã¬ã€ãã¬103sec
- ã¹ãŒããŒçŽ ããCPUãFPGAã«å®è£ ããåè«ãèªãã
- ã³ã³ãã€ã©
- çš®ã ã®æé©åææ³ã調ã¹ã
- 2ndã®ã³ã³ãã€ã©ãæžãå§ãã(min-caml base)
- ã·ãã¥ã¬ãŒã¿
- 2nd ISAãèªãã
- FPU
- fsqrtã®å®è£ ãå°ãå€ããŠ133MHz 3clkã«éã«åãããã«ãã
- fast InvSqrtã詊ããŠã¿ã(ãã©çŸç¶äœ¿ããªããã)
質ç
- Out of Orderã§åå²äºæž¬ãããšROBãèŠãã®ã§æ³šæ
- fast InvSqrtãšããã®ã¯
- https://en.wikipedia.org/wiki/Fast_inverse_square_root
- 1 iterã ãã ãš20000ulpããã誀差ã3 iterãããã§ã¬ã®ã¥ã¬ãŒã·ã§ã³ãæºãã
- sqrtããœãããŠã§ã¢å®è£ ããŠãã人ã ãšæšãããïŒ
- 宿©å®åãªãã
- ä»é±ã®é²æé§ç®ã§ã
- å°ºãäœã£ãã®ã§äžå€ªè©±ãããŸã
- åœä»€æ°14åäºä»¶
- åéãã§ãã
- x86åãè¶³ãããäºæ ãèµ·ãããŸãã
- ã¯ããŒãžã£ãŒããã€ããã
- å šãŠã®ã¯ããŒãžã£ãŒãçãŸããåã«æ®ºã
- é ã®è¯ããªãå®è£ ã§ã¯ã¬ãžã¹ã¿ã100åå¿ èŠã«ãªããŸãã
- ä»ã¯å šãŠæ²æ» ããŸãã
- ã€ã³ã©ã€ã³å±éãççºãã
- mulãã©ã€ãã©ãªå®è£ (min-camlèšèªã§å®è£ )ããŠãã
- mulãã€ã³ã©ã€ã³å±éããã
- x * 10 = x << 3 + x << 1
- ããã¯åé¡ãªã
- x / 10 = ???
- ã€ã³ã©ã€ã³å±éãããšãdivã2^30å±éããã
- divã®ã€ã³ã©ã€ã³å±éã¯è«Šãã
- mulãšdivã®é¢æ°ãµã€ãºã¯ã»ãŒåããªã®ã§ã颿°ãµã€ãºã§ã€ã³ã©ã€ã³å±éãããã©ãããæ±ºããªãæ¹ãè¯ãããã
- min-camlä»å±ã®min-rtã¯çé
- 60åãããé床ãéã
- æªæ¥ã®ãªãŒããŒãã¯ãããžãŒã䜿ã£ãŠããïŒïŒ
- çµè«: ææãããŠãã
- ææãããŠããã®ã«äœæ ãã®ãããªç¶ºéºãªç»åãã¯ããã®ã
- æã ã¯è²åããå°ãå€åãããããã ãã«äœååãã®åœä»€ã䜿ã£ãŠãã
- å€å鿥å ã®èšç®ã«æéãè²»ãããŠãã
- ããŒããççºãã
- mulãšdivå ã§èªç±å€æ°ã䜿ãå®è£ ã«å€ãããããŒããè¶³ããªããªã£ã
- print_intã§mul, divããããã䜿ã
- ä»ã¯éã«ããŒããäœã£ãŠãã(ã¯ããŒãžã£ãæ²æ» ããããã)
- CPS倿ããããªã
- å ã®CPUä¿ããã®å寿åžãé£ã¹ãŠãã
- æ¥é±å®æ©å®åïŒïŒ
質ç
- ææ©ç寿åžã«ãã¹ã¯ç¡ãã§ã
- ææãã£ãŠå ·äœçã«ã¯ã©ã®ãããªãã®ã ã£ãã®ã§ããïŒ
- ããã鿥å åšãã®èšç®ãã»ãšãã©ããŠããªãã£ãã¯ãã§ã
- ãŠãã®ã¯ãœã¿ãããªã¢ãŒããã¯ãã£ã§ã(åç)1ååœä»€ãããã§åããŸãã
- éæ¥å æã¡åã£ã¡ãã£ãŠããã§ããïŒ
- ããèšç®ããªãããšãã圢ã ã£ãããšæããŸã
- è»ã®åã®æ¹ã®å ãæ¹ãéãããšããå°é¢ã®å ãæ¹ãéãããšãã
- ãã®æãé²æãæ±ããããã³ã³ãã€ã©ä¿ãåæé©åãšããã®ããã£ãŠããã®ã§ãããããããžãã誀éåããŠãããã§ãããã
- ãã®ä»ã®ä¿ã®äººã¯æ¯ãããŠããŸãã
- ããŠããŸã
- FPUä¿ã¯cycle accuratedãªã·ãã¥ã¬ãŒã¿ãäœã£ãŠããŠã
- ã·ãã¥ã¬ãŒã¿ä¿ã¯2ndã®åœä»€ã»ããçå®ã®ããã«ã©ããªåœä»€ãããã°ããã調ã¹ãŠããŠã
- ã³ã¢ä¿ã¯ãããã°ããŠããŸãã
- 宿©ã§ã¯ååž°fibãåããŠmandelbrotãåããŠããªããsinãåããŠããªãïŒãã£ãšFPUãããããã
- ã³ã¢ä¿
- FPUã®ã¯ããã¯æ°ã倿Ž(3 -> 7clk)
- ããããå€ãªããšãèµ·ãã£ã
- f2iãªã©1clkã§ã§ããããªFPUåœä»€ãALUã§äœ¿ãããã«ãã
- FPUä¿
- f2i, i2fã®å®è£
- ã·ãã¥ã¬ãŒã¿ä¿
- breakpointã®å®è£
- ã³ã³ãã€ã©ä¿
- la, li, llwã«å¯Ÿå¿
- llw: label load word (.dataã®å€ã®ä»£å ¥)
- æ¯èŒåœä»€ã®ãã°ä¿®æ£
- å šäœ
- mandelbrotãæ£ããåããŸãã¯æ£ããåããªã
- FPUãšã·ãã¥ã¬ãŒã¿ã¯å€å宿ããŠãã
- ã³ã³ãã€ã©ã¯mandelbrotã¯ã³ã³ãã€ã«ã§ãããraytracerãã³ã³ãã€ã«ã§ããŠããªã
- ã©ã€ãã©ãªã¯sin, cos, atanãæ£ããåããread, printã¯æªå®è£
質ç
- faddã®ã¯ããã¯ãå³ããïŒ
- faddã ãã§ãã¹ãããã3clkã ãšå®æ©ã§fadd 1.0 (-0.5) = -1.5ã«ãªã
- ã¿ã€ãã³ã°ãšã©ãŒïŒ
- ãŸã 確èªããŠããªããã©å€åããã ãšæããŸã
- ä»ã¯å€§äœåããŠããŠãmandelbrotã«ã³ãŒããŒã±ãŒã¹çãªç·ãçããŠããæãã§ã
- isimäžã§ã¯æ£ããåããŠããããã«èŠããã®ã§å€åéã«åã£ãŠããªãã£ãã®ã ãšæããŸã
- ããšããã¡ãã£ãšã®æãã§ãã
- ã³ã³ãã€ã©ã§ããšè¶³ããªãã®ã¯ã©ã€ãã©ãªã ãã§ãã
- ä»ã®æã©ã€ãã©ãªãè¶³ããªãã®ã ãã ãšæã£ãŠããŸã
- mandelbrotã£ãŠæµ®åå°æ°ç¹æŒç®åœä»€ãããªã«äœ¿ã£ãŠããŸããã£ã
- faddãšfmulã¯äœ¿ã£ãŠããã以å€ã¯äœ¿ããªã
- ã³ã¢çã«ã¯ã©ããªæãã§ããã
- ããšI/Oã®ãããã¡ãè¶³ããªããããmin-rtãã³ã³ãã€ã«ã§ããããã«ãªã£ãã確ãããã
- ã³ã¢ä¿
- ã¡ã¢ãªçšã®ãŠããããæžãå§ãã
- ã¬ã³ãŒãã®å®çŸ©ãããæžãã
- ãã£ãå€§äœæžãçµãã
- ã³ã³ãã€ã©
- ã¡ãã£ãŽãåœä»€æ°ãæžã£ã(40ååœä»€ããããã23.1ååœä»€)
- export let, export let rec
- åæ¬åŒ§æ§æ(çµã¿èŸŒã¿åœä»€ã®å®è¡)
- FPU
- f2i, i2fäœã£ã
- è²ã é«éåãã
- ããŒãã«äœ¿ããã€ã¯éåæROM䜿ã£ãã1clkæžã£ã
- ä»åºŠã¯åšæ³¢æ°äžããŠãåããã®ãäœãäºå®
- ã·ãã¥ã¬ãŒã¿
- ååœä»€ã®åæ°ã«ãŠã³ãã衚瀺远å ã远å
質ç
- ã³ã³ãã€ã©ãããããæé©åãšã¯
- ãªã³ã¯ã¬ãžã¹ã¿ã«çžåœãããã®ããã£ãŠã颿°åŒã³åºã床ã«éé¿ããããã«ããŠããã®ã§ããããããçŽãã
- min-rtã«fabsãšããããã®ãããŠãã®åœä»€ã»ããã«ã¯fabsãããã®ã«é¢æ°åŒã³åºãã®ãªãŒããŒãããã倧ããã®ã§è§æ¬åŒ§åœä»€ãå°å ¥ããã5ååœä»€ãããæžã£ã
- éåæROMã£ãŠãããã¯ROMãããªããŠéåæã§èªã¿æžãã§ãããããªãã®ãå®è£ ããã®ã§ãã
- ã¯ããã¯ã®rising_edgeãåŸ ããªããŠãèªã¿èŸŒããããã«ãã
- 忣RAMã®çµã¿èŸŒã¿ã ããã¿ãããªæãã§
- ã³ã¢ä¿ã®ãã¬ã³ãŒãã®å®çŸ©ãã£ãŠã©ãããã®ã§ãã
- åå®çŸ©ã§ã
- ã¡ã¢ãªãŒçšã®ãŠããããšã¯
- ã¡ã¢ãªãŒçšã®ãªã¶ããŒã·ã§ã³ã¹ããŒã·ã§ã³ãäœã£ãŠããŸãã
- ããããé«éåã«åããã®ã§ãã
- ã¯ã
- 次ã®ã¢ãŒããã¯ãã£ãèããŠããŸã(äžå¿ãŸã 1stæ±ã)
- å®åããŠããŸãããã
- ã¯ã
- 2ndã®ã¢ãŒããã¯ãã£ãæ¡ã¯ã§ããŠããã®ã§ãããããç§»ããããªãšããæã
- 2ndã¯ã©ããªæãã«ãªããããªã®ã§ãã
- ã³ã³ãã£ã·ã§ã³ã¬ãžã¹ã¿ãæ¶ãããšããããªæã
- è¥å¹²ãã³ãŒãã®ããããããªåœä»€ã»ããã«ãã
- ãã®éçšã§ããã®ããããªãåœä»€ãã§ããŠããã
- æµ®åå°æ°ç¹æ¯èŒã®å³å€ãšæ¯èŒãããã€ãšãã17bitãããããå³å€ãåããªãã®ã§ãããªã«æå³ãç¡ãã
- ãã ãã¬ã³ãŒãã®äžŠã³ãè¯ããªã
- ã³ã¢
- fib5ãèšç®ããæç¡äº5ãåºåããã
- åå²ãçŽãããŒã¿ãã¹ããã£ãããããããst, ldã§ã¡ã¢ãªã¢ã¯ã»ã¹ã®å®äºãåŸ ã€ããã«ããŠãã(?)ã®ããã°ã£ãŠããã®ã§çŽãã
- ã³ã³ãã€ã©
- ã©ã€ãã©ãªãšã¯ããŒãžã£ãããã®ãã°ãä¿®æ£ããæãã¹ã±ã«ãã³ãªç»åãåºãŠãã
- ã·ãã¥ã¬ãŒã¿
- ãã°ãšã
- ã¡ã¢ãªãã³ãæ©èœãbreakpoint
- FPU
- fmul(3clk, ãã€ãã©ã€ã³)ãã·ãã¥ã¬ãŒã¿ã§éã£ã
質ç
- ã¡ãããšã¬ã€ãã¬ãŒã¹ã§ããªãããšã®åå ãã³ã³ãã€ã©ã«ãããã·ãã¥ã¬ãŒã¿ã«ãããã¯åãåããããŠããŸãã
- å€åã·ãã¥ã¬ãŒã¿ã§ã
- ã¡ãããšåãã£ãŠããããªãããã£ãã§ãã
- FPUã¯äºå®ãšããŠã¯ã©ããŸã§å®è£ ãããã§ããã£ã
- finv, fsqrtãŸã§ã§ã
- å€åfmulã¯ããã§ããããšæãã®ã§ãæ®ãfinv, fsqrt
- ã³ã¢ã¯ãã倧äœã€ã³ã¿ãŒãã§ãŒã¹ã®éšåã¯ã§ããŠããŠãåŸã¯ã§ããFPUã®éšåãçµã¿èŸŒãã§ããã°å€ååããããšããæãã§ãã
- ã³ã¢ã¯ãŸã æµ®åå°æ°ç¹åšãã¯åãå ¥ãã®æºåãããŠããªãã®ã§ãFPUãã§ããŠãããã«ãã£ã€ããããæ®µéã«ã¯ç¡ãã§ã
- ã³ã¢
- åæåããŒãã«å¯Ÿå¿ãã
- ã·ã¹ãã ã³ãŒã«ãå®è£ (ä»ãããããã°)
- å€åããããååž°fibãåãã¯ããããããããã
- ã³ã³ãã€ã©ã¯ã·ã¹ãã ã³ãŒã«ã®å®è£ ãè¡ã£ãã
- ã·ãã¥ã¬ãŒã¿ã¯ãããã°ãã
- FPUã¯fadd, fmul, fnegã®å®è£ ãå®äºãã(C, VHDLå ±ã«)
- min-rtãã·ãã¥ã¬ãŒã¿ã§åããã¡ãããšç»åãåºããããããraytracer/min-rt.mlãããã
- äœè«
- ãã©ã°ãç«ãŠãæã«ã¯ãããäžåºŠããéããªãã¹ããŒãã§ãªããç¡éã«ãŒãã«å ¥ã£ãŠãã
- ä»£å ¥æŒç®åãæ¯èŒæŒç®åã«ãªã£ãŠãã
- ãšã©ãŒãèŠåãåºãªãã®ã§ã€ããã£ã
質ç
- fibãåãããã§ããã£ã
- 宿©ã§ã¯ããããã§ã
- ããã£ãœããã®ã¯åãããïŒ
- 倧ååãããã ãšã¯æã£ãŠãã
- fibãã§ãããFPUãçµã¿èŸŒã
- ã¯ããããšFPUã䜿ããªãçš®ã ã®ãã¹ããããŠã¿ãã
- å®åããŸããã§ããïŒ
- ã³ã³ãã€ã©ä¿
- ã¬ã€ãã¬ç»åãåºå
- äžè§é¢æ°çã®èª€å·®ãæ€èšŒ
- 審å€ãµãŒããŒåã察å¿
- äœæ ã120ååœä»€ãinline 100ã§ã60ååœä»€
- lw, addiãå€ãïŒ
- ããã°ã©ã äžã§ããããšãã°ããŠããå Žæãæ¢ããŠã¿ãŠãã
- æç¹ã®è¬
- FPUã¯ãšããããx87ã䜿ã£ãŠããã®ã§å€§äžå€«ãªæ°ããããã©ã€ãã©ãªã®äžè§é¢æ°ãããããã®ããïŒ
- ã³ã¢ : 審å€ãµãŒããŒã§åããªããå€åãããªã«å€§ããªãã°ã§ã¯ãªã
- FPU
- fcmpãšfmulã®ãã°ãåã£ã
- fmulã«overflowãšunderflowãå®è£
- finvãããããïŒ ããåå ãåãããªãã
- 次åãç¥çŠã ãããã«å¯¿åžã¯ãããã
- 4çã®ã¹ã©ã€ããæè²çãã€é¢çœãã£ãã®ã§æ¯éèŠãŠã¿ãŠãã ãã(15er wikiã«ãããŸã)
- åŸèŒ©ã誀解ããªãããã«è¿œèš(by nekketsuuu)
- sinãnÏä»è¿ã§çµ¶å¯Ÿèª€å·®ã倧ãããªã£ãŠããã®ã¯å®ã¯ã¬ã®ã¥ã¬ãŒã·ã§ã³ã®ç¯å²å ã§ããã¬ã®ã¥ã¬ãŒã·ã§ã³ãããèªãã§äžããã
質ç
- 寿åžã¯æã£ãŠãéã¯ç¡ã
- ãããµãé£ããªã寿åžã«æå³ã¯ç¡ã
- å³å€ä»£å ¥åœä»€ã¯ãããŸããïŒ
- addiãæµçšããŠããŸã
- addiã®åœä»€èª¿åé¡ã¯ã©ãããŠããŸããïŒ
- addiã¯16bitããç¡ãã®ã§shiftãšorã§ãã£ãŠããŸãã
- ã€ã³ã©ã€ã³å±éãæ·±ããŠãããšå³å€ä»£å ¥ãå€ããªã£ãŠããã®ã§ãå³å€ä»£å ¥ã®åœä»€ãäœã£ãæ¹ãè¯ããšããå®èª¬ããã
- ãã ãä»ã€ã³ã©ã€ã³å±éããŠããªãç¶æ ã§120ååœä»€ãããã®ã§âŠâŠ
- 120åã£ãŠãããªã«å€ãããããšã¯ç¡ããšæããŸãã
- (conimg/test.sldã®æç¹ã®è©±)äžã«æµ®ããŠããçã®éšåã«ã¯äžè§é¢æ°ãå€§å¹ ã«äœ¿ãããã¯ããªã®ã§ãäžè§é¢æ°ãããããã®ããïŒ
- ç矩å®å
- é«éåãž
- ã³ã¢ : åå²ãã¡ã¢ãªã¢ã¯ã»ã¹ã®æ¹åãæ§æ³äž
- ã³ã³ãã€ã© : 远å ãã¹ãåœä»€ãæ€èšäž
- FPU : cycle accurate simulatorã®å®è£ (çŽ æŽãªå®è£ ã ãšçµæ§é ãããã)
- ã³ã¢ã®æ§æ³ã«ã€ããŠ
- ãã§ã«OoOãªã®ã§æžãçŽãã¯ããªã
- CDBå¢ãããã
- åäœåšæ³¢æ°ã®åäžã¯åŸåã
- èªåã§ãã£ããçè§£ããŠãã°ãçãŸãªãããã«ããããããããŠä»ã®äººãèªããããã«èªåã®ã³ã¢ã®ããã¥ã¡ã³ããæžãã
- ã¡ã¢ãªã¢ã¯ã»ã¹ã«ã€ããŠ
- ãã³ããããã³ã°ãã£ãã·ã¥(victim cacheã«ãããã?)ã®èªèµ°
- ä»ã®å®è£ ã§ã¯ã¡ã¢ãªã¢ã¯ã»ã¹ã¯in-orderã§ãç¹ã«storeã¯1ã€åã®åœä»€ãçµããã®ãåŸ ã£ãŠã
- åå²ã«ã€ããŠ
- åå²äºæž¬(gshare)ãšbranch target bufferã®å®è£
- åå²äºæž¬ãã¹ã®ããã«ãã£ã®åæž
- çŸåšã®å®è£ ã§ã¯åå²äºæž¬ãªã(åžžã«not taken)
質ç
- å®è¡åœä»€æ°äœåãããã§ããã?
- å®åãããšãã¯ããŸãæé©åãããŠããã60ã70åããããã£ããä»ã¯å€å20åäœãŸã§æžãããã(?)ã¿ããã
- CDBæ·±ããããšããããšã¯double issueãšããããã§ãã
- issueãã§ãããããã§ããã倧å€ãã
- çŸç¶äœclock per instructionãããã§ãã
- æéã¯ã¡ãããšæž¬ã£ãŠããªããŠâŠâŠ
- ãŸã 審å€ãµãŒããŒã«å¯Ÿå¿ããŠããªã
- ä»ã£ãŠOoOã®æ©æµã¯ãŠã±ãããŠãããã§ãã?
- ã¬ã€ãã¬ãããšãã«(äœæã§ããç¡ãã)ãããæéãããã£ããšããå°è±¡ã¯ç¡ãã£ã
- æéããšã£ãŠä»åŸã®æ¹åç¹ãèŠã€ããã®ã«äœ¿ã£ãŠããã ããã°ãšæããŸã
- ææ©å®è¡ã¯ã§ããããã«ãªã£ãŠãã?
- ã¯ããå¿ ãnot takenã§ããã
- ã·ãã¥ã¬ãŒã¿ã¯FPUã®æ¹ãäœã£ãŠãããã§ãã?
- cycle accurateã®æ¹ã¯FPUä¿ãäœã£ãŠããŸãããã¡ãããšããæ¹ã®ã·ãã¥ã¬ãŒã¿(?)ã¯ã·ãã¥ã¬ãŒã¿ä¿ãäœã£ãŠããŸãã
- cycle accurateã£ãŠOoOã®åããå šéš?
- ã¯ã
- çžåœé¢åããããšæããŸãã
- ã¯ããé 匵ã£ãŠãããããã§ãã
- å®è£ ã®åèã«ãªããã®: æŠå¿µã説æããŠããæ¬ã¯ãããã©ã现ããå®è£ ã説æããŠããæ¬ã¯ç¡ããããªã
- ãã£ãã·ã¥é¢ä¿ããããããã§ããããããšãOoOãã¹ãŒããŒã¹ã«ã©ãšãããããžãã§ãã
- ã©ã¡ããé«éåã§ããâŠâŠ
- ããã§ãããã©ã£ã¡ãã€ãããšãªããš2ã€ã®ã³ããŒã¬ã³ã·ãšãèããªããšãããªããªã
- ããããæå³ãªããããæžããæžç±ã¯ã¡ãã»ããããŸã
- ã³ã³ãã€ã©: inv.sããããã°
- ã³ã¢: ã·ã¹ãã ã³ãŒã«ã®ãããã°
- ä»é±ã¯å šäœçã«é²æã埮åŠã§ãã
質ç
- äœãã€ããããšã¯ãããŸããã
- äžå¿FPUä¿çã«ã¯ã€ã£ããã£ãŠããæã¯ãªããŠãæéã®åé¡ããªãšããæãã§ã
- å é±ã®æ®µéã ãšãã·ãã¥ã¬ãŒã¿åäœã§åºããåºãªãã£ãããšããæãã ã£ãããšæããŸãããããããã¯ç¹ã«äœã鲿ãç¡ããšããæãã§ãã?
- ã·ãã¥ã¬ãŒã¿ã®æ¹ã§ã¯ãã¡ããšæ¯ååºãããã«ãªããŸããã
- ããã宿©åäœã®ã¿?
- èŒããæã«ããã£ãŠããªã
- ååž°fibãåããŠããªã
- ãããããŒããŒæ¹åŒã§ãããããããŒããŒã®ãããã°ããã
- ã³ã¢ã¯ä»ã©ã®ãããã§é ããåºãŠããŸãã?
- print_charã®ã·ã¹ãã ã³ãŒã«ãå®è¡ããããšãããšã1åããåŒãã§ããªãã®ã«äœæ ã2ååºåãããã0ååºåããããããã
- ããããè²ã ãã¹ããã
- ãããã³ã¢ã£ãœããã®ã¯å€§äœã§ããŠããŠã现ããæã§æ©ãã§ãã?
- ã¯ã
- ååž°fibãã·ã¹ãã ã³ãŒã«ã®print_charã䜿ã£ãŠããã®ã§åããŠããªãããšããç¶æ
- åšæ³¢æ°ã¯å éšã§å šéšçµ±äžãããŠãã?
- å šéš66.6MHzã®ã¯ãã§ã
- ã¹ããŒããã·ã³ç³»ã®ãã°ã§ããã
- ããã°ã£ãŠãã ãã
- ã«ã¿ã³ã£ãŠïŒåã®ãã¬ã€ãé·ãã§ãããã(^^)
- ã·ãã¥ã¬ãŒã¿ã§ããã£ãœãç»åãã¯ãã
- åœä»€æ°25åããã? ã¡ãã£ãšå°ãªãã
- ã«ãŠã³ãã«äœ¿ã£ã倿°ã®æ¹ãlong long intã«ãããšããå®å¿ã®68åã«ãªã£ã
- ã€ã³ã©ã€ã³å±éã®ãµã€ãºã20ã«ããã40åãããã«ã
- å®è¡ã«äœ¿ã£ãåœä»€ã®ååžå³ãèŠããšãäžçªå€ãã®ã¯loadãããã14åããããããªãæéããããã®ã§ãªããšãããã
- ã³ã³ãã€ã©
- ãããã°ã®ããã«ã¬ãžã¹ã¿ã®ãããåãåãprint_bitãå®è£
- ã³ã¢ã®32bitåäœã®ã¢ãã¬ã¹æå®ã«åãããæ¹é ãå®è¡äž
- ã·ãã¥ã¬ãŒã¿
- åœä»€æ°ã«ãŠã³ã
- 32ãããåäœã¢ãã¬ã¹æå®
- x86ã®floatæŒç®ã«ãŸã€ãããã°ãã£ãã¯ã¹(åãããããã£ãã1.2 + 0.5ã1.68ã«ãªã£ãŠã)
- ããŒã¿ãã¡ã€ã«ãèªåããŒã
- ã¢ãŠãããããã¡ã€ã«ã®ååæå®
- FPU : fdivãæžãå§ãã
- ã³ã¢
- ååž°fibãåãã
- åå ã®1ã€: åã«çŽãããšæã£ãŠãããã°ãå¿ããŠæŸçœ®ããŠãã
- ã³ã³ãã€ã©ã§ã䌌ããããªããšããã£ãã®ã§ããã£ãã管çããã
質ç
- (åœä»€ã®ååžå³)ã»ãšãã©å®è¡ãããŠããªãåœä»€ãããããã«èŠãã
- sendãšãrecvãšããå®è¡ãããŠããã®ã§ããããã®ã¹ã±ãŒã«ã§èŠããš0ã«èŠãã
- ã³ã¢ã§fibãåãããšããããšã§ãããããFPUãçµã¿èŸŒãã§ããã°è©Šãã«ã¬ã€ãã¬ãèµ°ããããããããã®æã«ã¯ããŠãããã§ããã
- ãªã«ãå®éšç°å¢ãæŽããŸã§ãé·ãããšããšã蟿ãçãããããããã§ãã!
- åœä»€æ°ã«ãŠã³ãã®ååžå³ã¯æ¯éã¿ãªããå®åããã貌ãä»ããŠäžããã
- 次æISAãã ãããæ±ºãŸã£ã
- ã³ã¢
- 2ndåãã®ã³ã¢ãã ãããåãæ°åã«ãªã£ããååž°fibã¯åãã
- åå²åœä»€ã¯å®è¡ãŠãããã«å ¥ããªããŠãå¯èœã«ãªã次第è¡ãããã«ãã
- åå²äºæž¬ãå®è£ ããã
- ã³ã³ãã€ã© : 2ndåãã®ã³ã³ãã€ã©ã倧äœåãæ°åã«ãªã£ã
- FPU : fadd3ã¹ããŒãžã«ããŠæ©ãããã133MHzã§åããã
- ã·ãã¥ã¬ãŒã¿ : 2ndçšã®ãã®ãæžãã
質ç
- 2nd ISAã§æèããããšã¯ãããŸãã
- å³å€ãããå°ãåããããã«ãã
- å¹ ã§ãã?
- è²ããªåœä»€ã§åããããã«ããŸããã
- å³å€ããã¬ãžã¹ã¿ã®å€ãåŒãããšã
- ä»ã«ã¯ãããŸãã
- ãã³ãŒãã®ãããããèãã
- ã³ã³ãã£ã·ã§ã³ã¬ãžã¹ã¿ãæ¶ãã
- åå²äºæž¬çã«ã¯ä»ã¯ææ©å®è¡ãªã®ã§ãã
- ä»ã¯å®è¡ããŠããªãã§ã
- ROBã¯ãããããã§ããã
- ã¯ã
- ãããããã§ãããã§ãã
- ããã§ããªãã§ã
- OoOã£ãŠã¬ãžã¹ã¿æžã蟌ã¿äºçŽããŒãã«ããããããªãã§ããããããæ»ãå¿ èŠããã£ãŠããããé£ãããã ãªãšæã£ãŠããŸãã
- å€åé£ãããªããšæããŸããåå²äºæž¬ã倱æãããšãã«ã¯ãªã¢ããã°ããã®ã§ã¯ã
- ãã®åœä»€ã¯ãã®ã¬ãžã¹ã¿ãèŠãŠäžããããšããããŒãã«ã¯æžãæãã£ãŠããã®ã§æžãæ»ããªããšãããªã
- å€åãã¹ã£ããšãã¯å²ãšæéãããŠæ»ããæ¹ããããšæããŸã
- ã©ããåå²äºæž¬ã¯å šäœã®95%ãããã¯åœããããã«ãªããšæãã®ã§
- mandelbrotãåãããããã«ãªã£ã
- ã³ã¢
- ã©ã€ãã©ãªå®æ
- ã¢ã»ã³ããªã®ã©ã®è¡ãäœåå®è¡ãããŠãããèŠããããã«ãã
- ã€ã³ã©ã€ã³å±éã®æ°ã«ãã£ãŠäœæ ãåºåã倧ããå€ãããæåããã倱æããŠãã
- ã³ã³ãã€ã©
- raytracerãã³ã³ãã€ã«ã§ããããã«ãªã£ã
- FPU : fmulãçŽãã
- ã·ãã¥ã¬ãŒã¿ : ããããšããªã
質ç
- ã€ã³ã©ã€ã³å±éãããªããšããã°ãã§ããã¹ã¿ãã¯åšãããª?
- ã¹ã¿ãã¯ãç©ã¿éããŠãã?
- ããã¯ç¡ããšæããŸã
- ã¯ããŒãžã£åŒã³åºãããã°ã£ãŠãã?
- ã³ã¢ã¯ã©ããŸã§ã§ããŠãããã§ããã£ã
- 倧äœã§ããŠãã
- ã©ã€ãã©ãªã®ãããã°ãããŠãããæã ãããããšããããã®ã§ããŸã ã¡ãã£ãšãã°ã£ãŠãã
- å€åã³ã¢ã®æ¹ããããã
- ç»åãã¯ããŠããã®ã¯å šéšã·ãã¥ã¬ãŒã¿ãªãã§ããã
- ã¯ã
- ã¢ã»ã³ããªã®äœåå®è¡ãããŠãããèŠãããããã«ããšããã®ã¯
- ã¢ã»ã³ãã©ãšã·ãã¥ã¬ãŒã¿ãäž¡æ¹å°ãæ¹é ããŠãäž¡æ¹ã®åºåãçªãåããããšèŠãããšãã§ããããã«ããŸããã
- ã¢ã»ã³ããªã®ä»ã«ãã°ãåããŠãããã䜿ã£ãŠäžå¿èŠãããããªãã®ãäœã£ã
- github issuesã§issue管çããããã«ãã(1stã®ãšãã¯Trelloã«ããŠãã)
- ã³ã¢: æžãå§ãã
- ã³ã³ãã€ã©: make debugããšã©ãŒãªãéã
- ã·ãã¥ã¬ãŒã¿: 2nd ISAã«å¯Ÿå¿
- FPU: faddã®133MHz, 2clkãæžããŠãã(ç¡çãªã3clkã«ãã), fmulã®ãã€ãã©ã€ã³åãããŠãã
質ç
- faddã133MHz, 3clkã§ãå åããã§ããŠãããšæããŸã
- 2clkãã§ãããäžãã
- ã¬ã®ã¥ã¬ãŒã·ã§ã³ã®è£ãã€ããŠããã®ã§ãå®çšæ§ãããã®ãã¯åãããŸãã
- Trelloã®äœãæªãã£ãã®ã§ãã
- ãã°ãã£ãã¯ã¹ã®ãã±ãããæãã«ãã
- ææ¥èšå®ãã«ãããææ¥ãéããŠãçäžããªã
- ç矩å®åãããä»å€ã¯å¯¿åžã
- 2ndã«åããŠ
- ISAãå€§å¹ ã«ç°¡çŽ å&æé©åãã
- ãã€ãã©ã€ã³åãã
- SIMD
- ã¡ã¢ãªãã£ãã·ã¥æèŒ
- I/Oãã¡ã¢ãªã³ã³ãããŒã©ã®æé©å
- åœä»€çµ±èšããšã
- github issuesã䜿ã(ä»ãŸã§ã¯slackã«æµããŠãã)
- submoduleã®åé¡ã§localã®ã¯åããŠãã®ã«githubäžã®ã¯åããŠããªããšãããã®ããã£ãã®ã§ããã
質ç
- SIMDã¯ã³ã³ãã€ã©ã®æ¹ã§ããã°ã£ãŠãSIMDã«ã§ããããªæãæ¢ããã§ãã
- ã¯ã
- I/Oãã¡ã¢ãªã³ã³ãããŒã©ã®æé©åãšã¯
- éãããŠããã®ã1byteåäœãªã®ã§æ¯å4byteã«ããŠããã®ã ãããããªæ©èœèŠããªãã£ã
- ããšããã®é¢ä¿ã§å®è£ ããã¡ããã¡ãã«ãªã£ãŠããã®ã§
- ã¡ã¢ãªã³ã³ãããŒã©ããã¡ããã¡ãã«ãªã£ãŠããŸã£ãŠããã®ã§
- 寿åžã¯ã©ãã«é£ã¹ã«è¡ãã®ã§ãã?
- åã¯å šãèããŠããªããŠâŠâŠ
- çŸç¶: 1st architecture åçåœä»€æ°32åãçŽ6å in-orderãã€ãã€ãã©ã€ã³ç¡ã
- ã寿åžããããã£ã
- 2ndã®èšèš
- ã³ã¢
- ãã€ãã©ã€ã³å
- ãã£ãã·ã¥
- åå²äºæž¬
- åœä»€ã»ãã
- è€ååœä»€(è©Šéšæ®µé)
- optãšãã2bitãã£ãŒã«ããçšæ
- addãsubã®çµæãabsãããnegããã
- ãŸã çµ±èšãšã£ããã¯ããŠããªãã®ã§ã©ããªããã¯åãããªã
- æµ®åå°æ°ç¹æŒç®ã®ããŒããŠã§ã¢å®è£
- çŽäº€æ§ã®é«ããã©ãŒããã
- decodeã®å®¹ææ§
- ãããã1ã€å€ããã ãã§GPRåœä»€ãFPRåœä»€ããå€ãããšã
- ã³ã¢ã®I/O wrapperã1æ¥ã§å®æ(1stã§ã¯è«žäºæ ã«ãã20æ¥ããã£ã)
- 2nd ISAåãã®ã¢ã»ã³ãã©ã宿ãã
- ã·ãã¥ã¬ãŒã¿ãã»ãŒã»ãŒã§ãã
- FPUã®ãã€ãã©ã€ã³åã«çæãfinvã¯ã§ããã
- çµ±èšåããã
- bigram, trigram
- åºæ¬ãããã¯ã®é·ã
質ç
- ãã£ã±ãISAã¯ãããã«äœããããªããŸããã
- ã¯ããMIPSã ãšsrc/dstã®æ¹åã®èªèãä¿éã§ç°ãªã£ãŠããããããŠããŠå€§å€ã§ããã
- ãªãããã¿ããã®ãšããã«äœããšãã³ãŒããæ±ããªããŸããã
- 審å€ãµãŒããŒã§åããªãã®ã¯0x0aãããããªããšãã§ãã
- ããã0x0aã¯é ããŠããã®ã§ããããã®åŸã®ããŒã¿ãããããããŠããªãã¿ããã§ããcutecomã§åãç¶æ³ãã€ãããšããŸãããã®ã§ãcutecomãšå¯©å€ãµãŒããŒã®åŸ®åŠãªã¿ã€ãã³ã°ã®éããããã®ã§ã¯ãªãããšæã£ãŠãããå°å°ããã1st I/O wrapperã䜿ã£ãçµæãªã®ã§ã2ndã§ã¯ããŸãããã®ã§ã¯ããšæåŸ ããŠãã
- optã¿ãããªè€ååœä»€ãããªããŠãå¥ã®åœä»€ãšããŠçšæ
- 絶察å€ããšã£ãã笊å·å転ããããããšãçµæ§ããããããªãããšæã£ãŠããŠãããããã®ã«1clkãããã®ã¯ç¡é§ãªã®ã§ãã¬ãžã¹ã¿ã«ããŸãæã§ã¡ãã¡ãã£ãšããã£ãŠããŸãããããªããšã
- fabsã10^7åãããåŒã°ããŠããã®ã§ããããããŸãæžãããªãããªããšèããŠããŸããåæ°ã埮åŠãªãªãŒããŒã§ã¯ãããŸããâŠâŠã
- ãªãã³ãŒãã®bitæ°ã¯
- 6ã§ã
- çµæ§äœã£ãŠããã®ã§ã¯?
- çŽäº€æ§ãé«ããããšãããšã«ãã«ãã§ã
- çŽäº€æ§ã£ãŠãªãã§ãã
- ã»ãšãã©åãæ©èœã ãã©ã¡ãã£ãšéããã€ã¯ããããã¡ãã£ãšå€ããã ãã§å®è¡ã§ãããã¿ãããªæå³ã§äœ¿ã£ãŠããŸã
- 2ndãäœãäžã§ãæ§èœãäžããæå³ã§æ¹è¯ããæã¯ãããŸãã
- çŽäº€æ§ã¯ã»ã¬ã¯ã¿ãç°¡åã«ãªããšããæå³ããããŸã
- ldã«ãã£ãã·ã¥ãã€ããŸã
- 1stã§ã¯fadd, fmul, finvã§ããHardwareå®è£ ãããŠããªãã£ãã®ã§ãfsqrtãf2i, i2fãªã©ãHardwareå®è£ ããã€ããã§ãã
- ã³ã³ãã€ã©
- min-caml/min-rt/min-rt.mlãåãããdstã¬ãžã¹ã¿ãããããã£ãã
- raytracer/min-rt.mlãã¯ããŒãžã£ã¬ãžã¹ã¿ãŸãããããã£ããã·ãã¥ã¬ãŒã¿äžã§åãã
- ã·ãã¥ã¬ãŒã¿ãã¡ãã£ãšé«æ©èœåãã
質ç
- closure registerãŸãããããã£ããã£ãŠãã©ã®ãããªããããããã£ãã®ã§ãã
- saveããŠãªããšãããããã®ã§ã
- ã³ã¢ã®æ¹ã¯ã©ããªæãã§ãã
- ãšããããä»ã¯raytracerãmin-rtãåããŠããŸãã
- min-rt/min-rt.mlã¯æšææ¥ã«ã¯åããŠããŠãdiffã1pxã ããããŸãã
- æšææ¥ãšä»æ¥ã®å šäœçãªdiffã¯ã³ã³ãã€ã©ã ããªã®ã§ãå€åã³ã¢ããããªããã ãšæããŸã
- ã³ã¢
- æµ®åå°æ°ç¹æ°ç³»ã®åœä»€ãå®è£
- FPUä¿ã®faddãšfmulããã£ã€ããããããããã¹ã
- ä»ã®æå é±ãŸã§åããŠããååž°fibãåæ§ã«åãã
- ã³ã³ãã€ã© : ãããå¹ ã«å¯Ÿå¿
- ã·ãã¥ã¬ãŒã¿ : ã³ã¢ã®å€æŽã«å¯Ÿå¿
- FPU : fdivãäœã£ãŠãã
質ç
- fsqrtãšãã¯å®è£ ããŸãã
- fsqrtã¯ãšããããäœããã«ã³ã³ãã€ã©ã§ããäºå®ã§ã
- fdivã®éçºã«ã©ã®ããããããããã§ãã
- ããŒããã©ãã§ããã
- 1é±éãããã§ããã
- 12æäžã®å®åã«å¿ èŠãªã®ã¯ããšã¯ããŒããŠã§ã¢åšãã ããšããæãã§ãã
- ãã®ã¯ãã§ããã³ã³ãã€ã©ã¯ããã·ãã¥ã¬ãŒã¿å®åããŠããŸãã
- ã·ãã¥ã¬ãŒã¿å®åããŠãããšããããšã¯ã³ã¢ã§ããã䜿ã£ãŠãããã°ãã§ããã
- æçµçã«çްãããã°ãããããã§ãŠããããmodelsimãšãã§ããã«ã²ã ã²ã ã£ãšç§»ã£ãŠèŠãããšãã§ããããããããšI/Oã·ãã¥ã¬ãŒã¿ãšãSRAMã·ãã¥ã¬ãŒã¿ãšããããšè²ã èŠæãããªãšæããŸããããã䜿ã£ãŠããããã¬ã¿ã¬ã¿ãã£ãŠãã¬ãžã¹ã¿ã®å€ãçªãåãããŠãããšãããã°ã§ããããªããšã
- FPUãäºäººãããšæãã®ã§ãããããŸãããšåœ¹å²åæ ã¯ã§ããŠããŸãã
- ã§ããŠããªããšæããŸã
- ããŸã»ãŒçæ¹ã®äººãåããŠããŸã
- ããäžäººã®äººã¯çåã¯ããŠããŸã
- fdivã¯ããŒãã«ãšãäœããšæãã®ã§ãããŸãããšä»äºãæãããšè¯ããšæããŸã
- æµ®åå°æ°ç¹æ°ç³»ã¯æäžäœããããããããšãããããã€ãŸããªããã°ãããããã§ããšæãã®ã§ãä»ã®æ®µéããäžç·ã«äœã£ãŠãããšãããã°ãããããããã§ãã
- 2ndããšããããå®åããæ°ããã
- FPUãé«éãªãã®ã«ãã
- ã§ã2sãããããéããªããªãã£ã
- åœä»€å®è¡æ°ã¯21åãããã ãã68sãããããã
- ã³ã¢ãé ã
- ã©ããåå²åœä»€ã§å€§éã«ã¹ããŒã«ããŠããæ°ããã
- ææ©å®è¡ã®ç®åŠããã£ãã®ã§å®è£ äž
- ã³ã³ãã€ã© : 2ndã¢ãŒããã¯ãã£ã«å¯Ÿå¿ãã(æé©åãããªãããã£ãŠãã)
- ã·ãã¥ã¬ãŒã¿ : 2ndã·ãã¥ã¬ãŒã¿ã«ãã¬ãŒã¯ãã€ã³ããšãã«ãŠã³ãæ©èœãšããã€ãã
- FPU
- fsqrtã®ããŒãã«ãæ°ãããã
- fmulã®é«åšæ³¢æ°çãäœã£ã
質ç
- ãã£ãã·ã¥ã¯ãããã§ããã£ã
- æåã¯ã€ããŠããŠãããã忣RAMã§å®è£ ãããŠããŠãåææã«ãããªãæããªã®ã§ãšãããããªãã«ããã®ã§ãããä»ã®æããããããã£ãã·ã¥ã®ãµã€ãºãå°ããããŠãªã³ã«ã§ããæ©èœã¯äœããŸãã
- ãã£ãã·ã¥ããªãšæã£ãŠããã®ã§ããâŠâŠãå°ãããã®ã§ãµã€ãºã©ã®ãããã§ããã
- 32ãšã³ããªã§ã(忣RAMã®ãã)ãã€ããŠã5sãããããéããªããªãã£ãã§ãã
- ãã ã®æŽæ°åœä»€ã®ãšãã«ãã€ãã©ã€ã³ã®ãšãã«æ¯ã¹ãŠéã«ã¬ã€ãã³ã·ã倧ãããªã£ãŠããŸã£ãŠãããšãã¯
- å®è¡ãŠãããã¯ç¹ã«æ¯éããªããã°æ¬¡ã®ã¯ããã¯ã§CDBã«æããã®ã§å€å倧äžå€«ã ãšæããŸãã
- in-orderããæªãããšã¯ãªããšæã£ãŠãã
- ããã1çã®in-orderããIPCãæªã
- ã·ãã¥ã¬ãŒã¿ã§ã¯ã¹ããŒã«åæ°ãæ°ããããªããã§ããã
- ãã®é¢ä¿ã§ãã¹ããŒã«åæ°ãè¿ããããã°çšã®åœä»€ãå ããããšæã£ãŠããŸã
- ã³ã¢&ã·ãã¥ã¬ãŒã¿
- 仿§å€æŽãåœä»€è¿œå ãªã©ã«å¯Ÿå¿
- 宿©ã§ååž°fib, ackãåãã
- FPU : finvã®Cå®è£ ãæžãã
- ã³ã³ãã€ã© : raytracer/min-rt.mlãåããã倧äœ80åãããã
- å³å€ä»£å ¥ããäžäœãããä»£å ¥ãšäžäœãããä»£å ¥ã«åããŠããã®ã ããä»å¿ ãã©ã£ã¡ãããããã«ãªã£ãŠããŠç¡é§ããã
質ç
- FPUã¯ããçµã¿èŸŒãŸããŠãããã§ããã£ã
- ãŸã ã§ã
- ã³ã³ãã€ã©ä¿ããã¯ããä»äºçµãã£ã
- ããã§ãã
- ã©ã€ãã©ãªã®å®è£ ã¯
- ããŠãªãã§ã
- fsqrtã¯
- ããŠããªãã§ã
- ããã¯ãšããããã³ã³ãã€ã©ä¿ã®æ¹ããããããããŸããã
- ã·ãã¥ã¬ãŒã¿ : 现ãããã°ãšã
- FPU : i2fãæžããŠãã
- ããŸã : 1stã®ãšãã®åœä»€çµ±èš
質ç
- äºå®ãšããŠã¯ã©ã®ãããã«2ndåããããã§ãã
- 12æäžã«ãšããããåãããããã«ã¯ãªããã
- äž»ãªé²æ: 2ndã®ISAãæ±ºãã
- 1stã¯å®æ°ä»£å ¥ãå€ããã(60åã»ã©ããåœä»€æ°ã®ããã3åã®1ãlimmåœä»€[宿°ä»£å ¥]) -> add, sub, jump, load, stwã®å®æ°ããŒãžã§ã³
- 1stã¯ãžã£ã³ãåœä»€ãåé·(cmpã§æ¯èŒçµæãä¿åããŠãžã£ã³ãåœä»€ã§ãžã£ã³ã) -> 2ndã§ã¯cmpcåœä»€ã§çµ±äžãcmpcã®ç¬¬4åŒæ°ã«å¿ããŠæ¯èŒçµæãä¿åãjrncã§ãžã£ã³ã
- fsub, fabsã远å ãã
質ç
- 2ndã¯in-order?
- å ããOoOã§ã
- cycle-accurate ã·ãã¥ã¬ãŒã¿ã¯ã©ã®ããããŸã§å®è£ ã§ããŸããã?
- fibãåãããã§ãŸã åããŠããªããã¿ãããªæãã§ã
- ã³ã¢ä¿ããã®é²æã«ãããã£ãã·ã¥ã£ãŠãªãã§ãã
- ãµã€ãº: 2^10ããã
- 2^11, 12, 13ããããããããããªã£ãŠãããã
- äžå¿ãããã¯RAMã§äœãäºå®ãªã®ã§ãå¢ããã®ã¯ã§ããŸã
- 段ã å¢ãããŠããããªã«å¹æãªããªã£ãŠããŠãäžåºŠããéšåããããšæãã®ã§æ¢ããŠã¿ãŠäžããã
- ãšããã§cycle-accurate ã·ãã¥ã¬ãŒã¿ã£ãŠããã°ã©ã çã«ã¯ã©ã®ããã«äœã£ãŠããã®ã§ãã
- Cã§é 匵ã£ãŠããŸãããªããžã§ã¯ãå¿åçãªã®ã¯ãªãã§ã
- éãã®ãã§ããããããæ¬²ããã®ã§ãã ãã
- ã³ã³ãã€ã©: rev2ã®ä»æ§æ±ºå®ãæé©å
- ã³ã¢: ãã£ãã·ã¥ã®å®è£ å®äº
- 以äžããŸã
- ããããã®ãã·ãã¥ã¬ãŒã¿ãã®è©±ãããã
- æè¿ã·ãã¥ã¬ãŒã¿ã®é«éåãç±ãããã
- 6çã®æè¡ã玹ä»ãLightning Simulator(Lsim)ãšåœå
- æ®éã®ã·ãã¥ã¬ãŒã¿ã¯èªäœCPUãã€ããªãã€ã³ã¿ããªã¿å®è¡ããããã€ã³ã¿ããªã¿ãã¯é ãããããèªäœCPUãã€ããªãã³ã³ãã€ã«ãããã
- èªäœCPUãã€ããªãx86ã¢ã»ã³ããªã«ã³ã³ãã€ã«ããããã®çµæã€ã³ããJITã·ãã¥ã¬ãŒã¿ã宿ã
- ãªã"ã€ã³ãã"JITã?
- æ®éã®JITã·ãã¥ã¬ãŒã¿ã¯èªäœCPUãã€ããªãåŒæ°ã«æå®ããŠãã·ãã¥ã¬ãŒã¿ãç«ã¡äžãããšãã·ãã¥ã¬ãŒã¿ããã€ããªãx86ã¢ã»ã³ããªã«å€æããEIPãè¿éåŸã®ãšã³ããªãã€ã³ãã«åããã
- ãããããã¯é¢åãx86ãã€ããªãåããªãããããªããããã€ããªã«å®è¡æš©éãäžããå¿ èŠããããOSäŸåã³ãŒããçºçããã
- åããŒãžã«ã¯å®è¡å¯èœãã©ããã®ãã©ã°ããã[XDããã]ããã(æªæã®ããã³ãŒããžã®é²åŸ¡æ©æ§)ã
- ããããã®ããããšå®è¡æš©éãäžãããã³ã«OSã®APIãå©ããªãããããªã
- Macã®APIã¯ããžã ãã
- x86ãã€ããªãåãã®ã§ã¯ãªãã¢ã»ã³ããªãã¯ããæåããå®è¡ãã¡ã€ã«ã«ããã°ããã
- å ·äœçã«ããŠããããš: èªäœCPUåãã¢ã»ã³ããªãx86ã¢ã»ã³ããªã«å€æããclang(gcc)ã§ã³ã³ãã€ã«ããŠãå®è¡ããã
- ã€ã³ããJITã·ãã¥ã¬ãŒã¿ã®å®è£ å¹çå
- æ¢åã®ã¢ã»ã³ãã©ãœãŒã¹ãæ¹é ããŠå®è£
- FPUåœä»€ããããã°åœä»€ãªã©ã¯Cã§æžãããã©ã€ãã©ãªé¢æ°ãåŒã¶
- ã¢ã»ã³ããªãuglyãªã®ã§é©å®ãã¯ããäœã
- ã€ã³ããJItã·ãã¥ã¬ãŒã¿ã®çœ
- ç°å¢äŸåãªã³ãŒãã¯ã©ãããŠãåºãŠãã(clangã§ãCèšèªã§æžããããšããã®ã©ãã«ã«ã¢ã³ããŒã¹ã³ã¢ãã€ããã©ããããšã)
- ã¢ã»ã³ããªäžã§ã®Cèšèªã®ã¡ã¢ãªã®äœ¿ãæ¹ããã¹ããšãã°ã
- éãããæéãªãã§æå€§éã®æé©åãè¡ãã«ã¯ãå®è£ âãããã°âãã¹ããã®ãµã€ã¯ã«ãé«éåããããšãäžå¯æ¬
- Lsimäžã§ã®60奥åœä»€å®è¡ã¯çŽ10ç§ãåœä»€æ°ã«ãŠã³ããçç¥ããã°çŽ3ç§
- çŸåš(14å)ã®å®è¡ã¯çŽ2ç§
- ããããŠãããšãmin-camlã®ã³ã³ãã€ã«æéãããã«ããã¯ã«ãªã â ãã®è©±ã¯ãŸã ä»åºŠ
質ç
- 14åã¯ããããšæããŸããã€ã³ã©ã€ã³å±éã¯ããŠãããšæããŸãããä»ã«äœãããŸããã
- äžé衚çŸã¯ãããªã«å€ããŠããªãã§ããifæãŸãããå°ãå€ãããããããªã
- å³å€åœä»€ç³»ãå ¥ãããå ¥ããªããã¯å€§ããã£ã
- ä»ã®min-camlã³ã³ãã€ã«æéã£ãŠã©ã®ãããã§ãã
- ä»ã¯ãäžçªæé©åã匷ããç¶æ ã§å€å2åãããã§ãããã§ãªããš30ç§ããã
- ãšããã®ããããã©ã®min-camlã£ãŠæé©åå šç¶ãããŠãªãã®ã§ã³ã³ãã€ã«æéãçã
- ç¹ã«ã€ã³ã©ã€ã³å±éãããŠãããšãã€ããªãµã€ãºãã©ãã©ãå¢ããŠããŠå€§å€
- ãŠãã®ã³ã³ãã€ã©ä¿ãäžçªæçµçã«ã¯1ãã€ããªãã¡ã€ã«åãã®ã«30åããã£ãã®ã§ãé«éåããã°ã£ãŠãã ãã
- ã³ã¢ããããã£ãã·ã¥ãå®è£ ãšã®ããšã§ããã©ãã§ããã
- ãŸã 倧ããããªããªãå€ããŠããŸããããäžå¿éããªããŸãã
- ã©ã®ãããã®å€§ããã§ãã
- ãŸã 1024ãšã³ããªãããã§ã
- ããå°ã倧ããããŠãããããªãšæããŸã
- å®åãnopãæ°ããªããšã38.5ååœä»€ã
- å®ã¯äžèšã®çç±ã§nopã倧éã«å ¥ããŠããŠãåèšã§145.5ååœä»€ã宿©ã§380ç§çšåºŠã
- lwã®åŸã«å¿ ãnopã6åå ¥ã£ãŠãã
- ãã©ã¯ãŒãã£ã³ã°ããã°ã£ãŠãããã¿ã€ãã³ã°ãéã«åã£ãŠããªãããã«èŠããã®ã§çŽãã®ã¯å€§å€ããã
- ä»ãã2nd ISAãæ±ºãããã³ã¢ã¯OoOã«ããäºå®ãFPUã¯ãã€ãã©ã€ã³åããäºå®ã
質ç
- ä»ã¯ãã€ãã©ã€ã³åããŠããã®ã§ãã
- nopå ¥ããŠåŸ ããªããšåããªãã£ãã
- nopã1ã€æžããã ãã§ãçžåœå€ãããšæã
- ã¬ã€ãã¬ä»¥å€ã®å°ããããã°ã©ã ã ãšnopå ¥ããªããŠãåãã®ããã¬ã€ãã¬ã ãšãããããåºãŠããªãã
- ãããããåºãŠããªããªããModelSimã§ããèŠãŠã¿ããšãåå²ããã¹ã£ãŠããšãããããã®ãããããªãããããå šç¶éãæã§èª€åäœãããŠãããããããªãã
- äœãåºãªããšããããšã¯ãžã£ã³ããšãããããæããª
- 審å€ãµãŒããŒã¯äœ¿ã£ã?
- ãŸã
- nop 6åãšããã®ã¯ã絶察ã«å¿ èŠãªæ°ãªã®ã§ãã
- åŸãã®åœä»€ãlwããã®ããã䜿ããªã6åå¿ èŠã§ãããã§ãªããªãäžèŠããšããããåããããã£ãã®ã§å šéš6åå ¥ããã
- ã³ã¢
- FPUãçµã¿èŸŒãã
- factã®æµ®åå°æ°ç¹ããŒãžã§ã³ãã ãããæ£ããåäœãã
- IOã®senderãæžãã
- ã³ã³ãã€ã©: ãã°ãšã
- FPU
- fmulã®ãã°ãšã
- fdivãããæãã«åããããããããã°ãšã
- æã空ããŠãã人ã§2ndèããããªã
質ç
- 2ndèãããã ã£ãããã³ã¢ã¯ããŸãç«ã¡äŒããã«ã³ã³ãã€ã©ãã¡ãã¡ãã£ãšæ±ºããã®ã§ãè¯ããšæãããã£ãœã©ããŒããŠã§ã¢ã«é¢ä¿ããåœä»€ã远å ããªãã®ã§ããã°ã
- fdivãããæãã«åãããšããã®ã¯ãCå®è£ ã¯ã§ãããã§ãã?
- Cå®è£ ã¯ããŠããªãã§ã
- ãããVHDLã§åãããŠããŠãã³ãŒããŒã±ãŒã¹ä»¥å€ã¯åããŠããããªãã§ãã
- å°ããã©ã³ãã ã±ãŒã¹ã§èª€å·®ããããªã«ç¡ãããã ã£ã
- ã·ãã¥ã¬ãŒã¿ä¿ãããããããšç¡ãããšå°ã£ãŠããããããã2ndã§ããããã©ããªåœä»€ã远å ããã絶察éããªãã ãããšããã®ã¯ãã·ãã¥ã¬ãŒã¿ã®æžãæ¹ã«ããããŸãããnopãšãã¹ããŒã«ãæš¡å£ãããããªåœ¢ãããã°ã·ãã¥ã¬ãŒã·ã§ã³ããŠèª¿ã¹ãããšãã§ããã
- ã³ã¢: CPUå®éšãããããã®äœè£ãäœãããã®èª²é¡ã鲿ãã³ã¢ã¯ãèªã¿èŸŒã¿ã§è©°ãŸã£ãŠããã
- ã·ãã¥ã¬ãŒã¿: çµ±èšæ å ±ãåœä»€æ°ã®ã¿ã«çµã£ãé«éåäœçãäœæã2åãããéããªã£ãã
- ã³ã³ãã€ã©: CIãšTDDã«æ £ããããšããŠããŸã
- FPU: finv, fsqrtã®Cå®è£ ãã§ãããf2i, i2fãããããšããŠãã
- ã³ã¢
- ã¡ã¢ãªã³ã³ãããŒã©ãã§ãã
- ããŒããã§ãã
- ã¡ã¢ãªä»æ§èŠçŽãã¡ãã£ãšã ãæ¹å®
- ãã€ãã©ã€ã³ãèšèš
- twoprocã§æžããšå šç¶ã©ãããçããªã!ãã£ã!ããã!
- ããŒãã®åºåã ãtwoprocãããŒãâããã ãã©ãããçãã
- ã¡ã¢ãªä»æ§èŠçŽæ¹å®
- 0x00000- : ã³ã¢äºçŽé å
- 0x00400- : èªç±
- ã³ã¢äºçŽé åã«ç¹æ®é¢æ°ã眮ããŠããäºå®ãç·clkæ°ãåãããã ãšãããããã®ã
- ã³ã³ãã€ã©: ã³ã³ãã€ã©ãã«ã¹ã¯ã©ããäž
- ã·ãã¥ã¬ãŒã¿: ãããã¬ãŒéšåã®æ°ISAåãå®è£ å®äº
- FPU: ãã€ãã©ã€ã³åå®äºãf2i, i2fãããããå®è£ ããäºå®ã
- 幎å ã«å®åããã
質ç
- ã©ããã§ã©ããããšããã§åºãŠãããã§ãã
- ããŒããŒã®ãå ¥åãèªãã§ãFIFOã®ãããŒã¿ããããããã©ã°ãç«ã£ããããŒãããŠäºã ãããšããã®ãããããžãã ã£ããšæããŸã
- æ¬åœã¯ã©ã®ç¶æ ã«ãããŠãçµã¿åããåè·¯ã®äžã§äºã ããªããšãããªãã®ããããç¹å®ã®ããŒã¿ã«äŸåããŠäºã ããããã«ãªã£ãŠããŸã£ãŠããã®ã§ã©ãããçãã
- processæã®äžã§ifã§ãã¿ãŒã³ãç¶²çŸ ããŠããã®ã ãäžæçã«å€æ°ãã§ããŠã©ãããçããããæçµçã«ããªã ãããŠæ¶ããããããreportãšãã«åºãŠããŠãããã°ãã«ãããã§ããã©ãããã°ããã§ãã
- concurrentã«ããŠwhenã«ããã°ããããããªãã§ãã()
- variableãçšæããŠãããŠããããæåã«åæåããŠãããŠãæåŸã«ããã«ä»£å ¥ãããšãããé§ç®ããª
- ã«ãŒãã®æåã«ããã®ãé¢åã ã£ãããtwoprocã®rãšãregtypeã«åºåããããã®ãã€ãå ¥ããã°ããããããªãããª
- ã³ã¢
- 2.4åãããé«éåããã
- 27ç§
- ææ©çå®è¡ãå®è£ ãããäºæž¬ãã¹æã®ããã«ãã£ãã»ãŒ0ããã¹ãŠã®èªæãªåå²åœä»€ããåå²ããªãããšãã 68s -> 64s
- åºåçšãããã¡ãå®è£ 49s
- memory loadåœä»€ãå®äºãåŸ ããã«é£ç¶ããŠå®è¡ã§ããããã«ãã 40s
- ãã£ãã·ã¥ãçšæã35s
- ã¯ããã¯ã77MHzã«äžãã 35s
- GShareãå®è£ 31s
- 88MHzã«æŽŸæã«ãããŠã¿ããã¿ã€ãã³ã°å¶çŽã¯ç¡èŠããŠããã27.5sã§åãã
- FPU
- faddã«ãã°ããã£ãã®ã§çŽãã
- fmulãé«éåããã0.5nsãããéããªã£ã
- finvãšfsqrtã®x86ãšã®èª€å·®ãçµ±èšãšã£ã
- ã³ã³ãã€ã©
- åœä»€æ°ãæžã£ã 21.2å -> 21.0å
- æé©åã5åããã詊ãããã©åŸ®å¢ or 埮æžã ã£ãã6åç®ã®æé©åã§0.2åæžã£ãã
- åœä»€æ°ã°ã©ããäœã£ããldã5.9åãšå€ãã
- ã·ãã¥ã¬ãŒã¿: 现ãããã°ããããããã£ãã®ã§ä¿®æ£ãã
質ç
- ã¹ãŒãã¹ã«ã©ããã³ãŒããšããçµæ§ããã©ããããªããã
- ã§ããã°3åœä»€ãããåæçºè¡ããããšæã£ãŠããã®ã§ãã
- ã¡ã¢ãªåœä»€3ååæã«æ¥ããåæçºè¡ããã®å€§å€
- ããããžãã¯ãããããã¡ã°ãã¡ã€ã³ã§ããã©ããã
- ããšã¿ã°ã®å²ãåœãŠ
- ããããžããé 匵ãã€ã€é 匵ã£ãŠã¯ããã¯ã100MããããŸã§ãããŠããããšãããããããªãããª
- FPU: ftoi, itof, floorã®2clkå®è£ ãã§ãã
質ç
- ã³ã³ãã€ã©ä¿ã¯ã©ããªæãã®æé©åãããŠããã®ã§ãã
- ã³ã³ãã€ã©å®éšãããŠããŸã
- ã·ãã¥ã¬ãŒã¿ã®é«éåææ³ãæ€èšãããšã¯
- ã·ãã¥ã¬ãŒã¿ä¿ã«ä»äºããªã
- ã³ã¢
- vsimã§ãœãããŠã§ã¢ã«ãŒãããã¯ãã§ãã
- æ¡ä»¶åå²ãã¡ãããšåãããã«ãªã£ã
- 1clkæªæºã§çµããALUã¯å šéšçµã¿èŸŒãŸãã
- ããããçµåãã¹ããå§ããã
- ã³ã³ãã€ã©
- C++ã§ã³ã³ãã€ã©ããã«ã¹ã¯ã©ããããŠãã
- min-camlåãflex/bisonãæžãã
- LLVM IRçæåšã®ãã¡ç®è¡åœä»€ãifåŒã®çæéšåãå®è£ ãä¿®æ£
- letåŒãåãã
- FPU: ftoiã®VHDLå®è£ ãã§ãã(ã¯ã)
- ã·ãã¥ã¬ãŒã¿
- ã¡ã¢ãªã»ã°ã¡ã³ããŒã·ã§ã³ãå°ãçè§£
- ã·ãã¥ã¬ãŒã¿ãŒãããçšåºŠåããã®ã«ã¯ãªã£ã
質ç
- ã³ã³ãã€ã©ã®JITãšããã®ã¯FPGAã§äœã£ãã³ã¢ã®äžã§JITãåããã§ãã
- ä»LLVMåããŠããŠããã³ããšã³ããã§ããŠããŠããŸããæçµçã«èªäœã¢ãŒããã¯ãã£åãã®ããã¯ãšã³ããæžãããšã«ãªãããããã³ããšã³ãããäœãããšã«ãªããŸãã
- ããã³ããšã³ãã§ã¯ãLLVM IRã§é¢æ°ãã€ã³ã¿ã®å€ãååŸã§ããã®ã§ãããã䜿ããšx86äžã§åããã®ãäœããããããã°åãã«äœ¿ããã
- ãã®çã¯2ndã§çµæ§ISAå€ãããã§ããã£ã?
- å²ãš
- ãããªããšã·ãã¥ã¬ãŒã¿ãå€§èŠæš¡ãªæžãæããå¿ èŠã«ãªã£ãŠãã
- ãŸãã»ãŒäœæ¥ã¿ãããªæãã§ãã
- éçã¯ã§ããŠããã¿ãããªã®ã§ãã®ãŸãŸé²æãé²ããŠãã£ãŠäžãã
- å®ååŸããŸã鲿ããªã(å¿ããã£ã)
- 詊ãã«sin, cos, atanãmincamlã§æžããŠã¿ã
- ã€ã³ã©ã€ã³å±éã§åœä»€æ°ãæžãããã
- lwãæžã£ãã®ã§nopãçµæ§æžã£ã
- 138ååœä»€ãã94ååœä»€ã«ãªã£ã
- 2nd ISAèãäž
質ç
- ããå®è¡æéã ãšã©ã®ãããæžããŸããã
- 枬ã£ãŠããªãã§ã
- ããã£ãŠç¢ºãã¹ããŒã«ããªããã°ãããªãæã«å šéšnopãæãã§ãããã§ãããããšããããšã¯åçåœä»€å®è¡æ°ãã»ãšãã©å®è¡æéã«æ¯äŸãããã§ããã
- å²ãšæ®ãæéãå°ãªããªã£ãŠããŸãããã2ndã¯ã©ã®ãããã®èšç»ã§äœã£ãŠããäºå®ã§ãã
- ãšããããã¯ããããããšããã®ãããŸã èããŠããªã
- ããš2åé²æå ±ååãããã®ã§ã1ææåŸãŸã§ã«fibãããã¯åããšãããšããæãã§ããã
- ã³ã³ãã€ã©: rev2çšã®ã¬ãžã¹ã¿ã¢ãã±ãŒã·ã§ã³ã®éçº
- ã³ã¢: åå²äºæž¬ã®éçº
質ç
- åå²äºæž¬ã¯Gshareã§ãã?
- ã¯ã
- cyclesimã£ãŠä»ã©ã®ãããã§ããŠããŸãã
- ä»ããããããã¿ã€ãã³ã°ã宿©ãšã¡ãã£ãšãããŠãããªããšæã£ãŠããŠã宿©ãisimäžã§åãããªããæ¯èŒããŠããŸããisimãå£ããŠããã®ãããåãããªãããã®çµæã¬ãžã¹ã¿ã®å€ã«diffãçãŸããŠããã®ã§äœãšãããªããšãããªã
- ã©ããªæãã®å®è£ ã«ããŠãããã§ãã
- Cã§æžããŠããŸã
- åºæ¬çã«ã³ã¢ãšåãããã«æžããŠããŠãVHDLã®åœä»€ã¯Cã®ã©ã€ãã©ãªãšããŠäœã£ãŠãããããŠããŸãã
- ããã§äœè¡ãããã«ãªããŸãã?
- ã»ãŒã³ã¢ãšåããããã®è¡æ°ã§ã3000ã4000è¡ãããã ã£ãæ°ãããŸã
- FPU: ftoi, itof, floorã2clkã§å®è£ ãã
- ã·ãã¥ã¬ãŒã¿: é«éåããã1stã®ã·ãã¥ã¬ãŒã¿ã§ã39ååœä»€2ååãããã ã£ãã®ã30ç§ã«ãªã£ãããããã°åºåãç¡ãããã€ããããªãããŠãªãã£ãã®ãç¡ãããããã
- ã³ã³ãã€ã©: ã³ã³ãã€ã©å®éšãããŠãã
- ã³ã¢: 2ndã®addi, send, haltãåããæ°ããã
質ç
- haltãšããã®ã¯æ¬åœã«haltã§ãã
- ã¯ã
- sendãšããã®ã¯
- ã·ãªã¢ã«ã®åœä»€ã§ã
- 2ndã®åœä»€ã»ããã¯ã³ã¢çã«ã¯ãªã«ãããããšããããã§ãã
- ãã©ã³ãåšãã远å ããã®ãšFPUåœä»€ã远å ããããããªã®ã§ãããªå€§ããªå€åã¯ãªãã§ã
- ftoi, itofãããŒããŠã§ã¢å®è£ ã«å€ãããšã©ã®ãããéããªããããçµ±èšãšããŸããã
- åã£ãŠããŸãã1ç§ãããæžãã°å¬ãããªã
- ã³ã¢
- ã¬ã·ãŒããŒãæžããŠloopbackãåãã
- finvã«å¯Ÿå¿ãã
- çã£é»ã®ãã³ãã«ãããåãã
- ã³ã³ãã€ã©: 仿§å€æŽã«å¯Ÿå¿
- ã·ãã¥ã¬ãŒã¿: fdiv -> finv&fmulã®å¯Ÿå¿ããã
- FPU: finvãåããã誀差ããŸã ã¬ã®ã¥ã¬ãŒã·ã§ã³ãæºãããŠããªã
質ç
- çã£é»ã®ãã³ãã«ããã¯ã0ã®æ°ã¯æ£ããæ°åºãŠããã®ã§ãã
- åºãŠããŸã
- ãããFPUãšããã®åšãã®åé¡ã£ãœãã§ãã
- ulpè¶ ãã«ãªã£ãŠããŸã£ããã€ã¯ããããªã«å€§ããå€ãããã®ã¯ç¡ãã£ãã§ãã
- 10ulpããããŸã§ã§ãã
- ãããããŒãã«ã®åºæ¥ãå°ãæªããšãããããã®ã§ããã
- ããã§ããããã©ã¡ãŒã¿ãã¡ãã£ãšèª¿æŽããã°ãªããšããªãããªãš
- ãã©ã¡ãŒã¿ã®èª¿æŽãªãã§ãã
- ã¯ã
- ãã©ã¡ãŒã¿ã§èª¿æŽããŠããããªããããŸãèªåå®è¡ãããããã«ããŠãããŠèšç®ãããŠããã°2é±éåŸã«ã¯æåŒ·ã®ããŒãã«ãåºæ¥äžãããŸããšãããããã®ãã§ãããã
- ã«ãŒãããã¯ãåãããšããããšã¯ããããIOéšåã¯ãã°ã£ãŠããªãããã§ãã
- ã¯ã
- ããã§ãå é±FPU-fact.ãåããŠãããã§ããã
- ã¯ãããªã®ã§faddãšfmulã¯ãããŠããšæã£ãŠããŸã
- æ¯èŒãšãããª
- ã³ã¢
- ã¹ãŒããŒã¹ã«ã©ãå®è£ ãã
- ãã®ä»®å®ã§å€§éã®ãã°ãäŒã£ãã®ã§ãªããã
- ç¹ã«ãã£ãã·ã¥åšãã®ã¡ã¢ãªã³ã³ãããŒã©
- ã¹ãŒããŒã¹ã«ã©ãæå¹ã«ãããŸã§é¡åšåããªãã£ã
- jmp, in, out以å€ã®ç°çš®2åœä»€ãåæçºè¡
- é¢ç¯åå²ã®åå²å äºæž¬çšã«ã³ãŒã«ã¹ã¿ãã¯ãå®è£
- ALUãåå¢ãã¡ã¢ãªãŠãããã®ãªã¶ããŒã·ã§ã³ã¹ããŒã·ã§ã³ãæ¡åŒµ
- 35ç§ -> 30ç§ (66MHz)
- IPCã1ãè¶ ãã(1.05ããã)
- æ¢ã«Number of Slice LUTsã91%ããã
- ã³ã³ãã€ã©
- åœä»€æ°ã21å->19.7å
質ç
- ä»CDBã¯äœç³»çµ±ãããŸãã?
- 2æ¬ã§ã
- 3ã«ãããšROBã«æžã蟌ãããŒãæ°ãå¢ãããslice LUTsãå¢ãããããã®ã§ããŸãããããªã
- ROBã®æº¢ããšãã¯ãããŸãã
- ããŸãèŠãŠããªãã§ã
- åšæ³¢æ°ãã®ãŸãŸã§ãã³ã³ãã€ã©ã®æé©åã§10ç§å°ããããã§ãã
- ICPããªããªãåäžã§ãããã«ãªããšããã®ã¯ã©ãããžããèŠãŠæããŸããã
- ã·ãã¥ã¬ãŒã¿ã§10msã»ã©èŠãŠã¿ãŸãã
- çµæ§ãªã¶ããŒã·ã§ã³ã¹ããŒã·ã§ã³ãè©°ãŸã£ãŠããŠããããã1åœä»€ãçºè¡ã§ããªããšãããã£ããããŠããããšãåãã£ã
- fmulãšã
- ã³ã³ãã€ã©ã®åœä»€æ°ãæžã£ãã®ã¯äœããããã§ãã
- ã¬ãžã¹ã¿ã®å²ãåœãŠãå°ãæ¹åããŸãã
- ã³ã¢
- ã·ã¹ãã ã³ãŒã«ã®ãã°ãé€å»ã§ãã
- FPRåšãã®ISAãå®çžéå§
- FPU: trunc(truncate)ãšcvt(convert)ã®å®è£ ãéå§ãã
- ã³ã³ãã€ã©: 2ndã³ã³ãã€ã©ã®ãã«ã¹ã¯ã©ãããå§ãããäžèŠå®çŸ©åé€ãŸã§ã§ããã
質ç
- ã³ã³ãã€ã©ä¿ããã®ãã«ã¹ã¯ã©ãããšããã®ã¯äœã§æžããŠããã®ã§ãã
- Haskellã§ã
- Cããé§ç®ãªãã§ãã
- é§ç®ã ããã§ã
- Cã§parseræžãå§ãããšç¡äººå³¶ã«äžäººã§åãæ®ãããæ°åã«ãªãã®ã§ããããã§ãã
- FPUã¯ãããããã宿ã§ãã
- 现ãã確èªã¯ããŠããŸãããããšããããç®å ã®mandelbrotãããã¯è©Šããåœä»€ãæã£ãŠããŸã
- ã³ã¢åŽã«FPUãå ¥ããã€ã³ã¿ãŒãã§ãŒã¹ã¿ãããªéšåã¯ã§ããŠããã®ã§ãã
- ããã¯ã®ãªã®ãªãŸã§æŸçœ®ããŠãããŠããã以å€ã®éšåãå®å šã«åãããã«èšèšããŠããã®ã§ããŸã ã§ããŠãŸãã
- ã³ã³ãã€ã©
- åæšè«ã®å®è£ å®äº
- min-camlã®LLVMããã³ããšã³ãå®è£ å®äº(ã¯ããŒãžã£é€ã)
- ã³ã¢
- ãã€ãã©ã€ã³åããã³ãã©ã¯ãŒãã£ã³ã°ã«å¯Ÿå¿
- ã¢ã»ã³ãã©ãã¯ããã³ãŒãã宿©ã§åãã
- loop fibãåãããååž°fibã¯ãŸã
- ã¡ã¢ãªã¢ã¯ã»ã¹ã»IOåšããå®è£ ãã
- ã·ãã¥ã¬ãŒã¿: ãããã¬å ¥åã®ããŒãºéšåãLuaã§æžããŠçµã¿èŸŒãã ãä»åŸã®æ©èœæ¡åŒµã楜ã«ãªã£ã
- FPU: itofã®VHDLå®è£ ãçµãã£ãã
質ç
- ããLLVMã®äžé衚çŸãŸã§èœãšã蟌ãã æã§ãã
- ã¯ããäžå¿å®è¡ããŠæ£ããããªããšããæãŸã§ã¯ãããŸããã
- LLVMãŸã§èœãšãããã«ã¯ã³ã³ãã€ã©ã§ã©ã®ã¬ãã«ãŸã§ãããªããã°ãããªãã®ã§ãã
- Kæ£èŠåã뱌۾ãLLVM IRãSSAãªã®ã§åæã«ãããªã£ãŠãŸãã
- å®è³ªããããšã¯åå¥è§£æãæ§æè§£æãåæšè«ãŸã§ã§ãã
- ãã£ãšãããšãä»åã¯C++ã§å®è£ ããã®ã§ããããã¥ãŒããªã¢ã«ã«ã¯OCamlãããã®ã§min-camlãçŽæ¥åŒã£ãŠLLVMãåãããã«ã§ããã®ã§ã¯ãšèããŠããŸãã
- Luaã§æ©èœæ¡åŒµãç°¡åã«ãªããšã¯?
- ã·ãã¥ã¬ãŒã¿ã¯Cãªã®ã§ãããããCã§æžããªããŠãLuaã§ååãšãããããã®æå³ã ãšæããŸã
- ã³ã¢ã®ã¿ã¹ã¯ã«ãã¡ã¢ãªåšãã®ä»æ§å€æŽããšããããã©ããªæãã§ãã?
- æµ®åå°æ°ç¹æ°ã®ããŒãã®åšãã®ä»æ§ã倿ŽããŠãå³å€ã¢ãã¬ã¹ããããŒãã§ããããã«ããã
- ä»ãŸã§ã¯ã¬ãžã¹ã¿éæ¥ãšããããªãã£ãã
- ã³ã¢: fadd, fmulãçµã¿èŸŒãã ãFPUåŸ ã¡ç¶æ ã
- ã³ã³ãã€ã©: fibçã®åçŽãªã³ãŒãã®ã¢ã»ã³ããªãåããããã«ãªã£ããéšåé©çšãå ¥ã£ãŠããã³ãŒãã§ãã°ãã
- ã·ãã¥ã¬ãŒã¿: Haskellå®è£ ã¢ã»ã³ããªã·ãã¥ã¬ãŒã¿ã§ã®ã©ãã«ã®ååãããŒã¿é åã®ååãã§ãã
- FPU: fmul, trunc.w.s, cvt.s.wã®ãã€ãã©ã€ã³åäžãfinv, fsqrtã¯åŸåãã«ãªã£ãŠããŠããããã°äžã
質ç
- ãããã«finvããªããšå³ãããšæãã
- ãŸãã¯finvããã£ãŠãfsqrtã«ã€ããŠã¯ã³ã³ãã€ã©ä¿ã«ã©ã€ãã©ãªãæžããŠãããã®ãè¯ããããããªãã
- ããããåãããŠã¿ãªããšåãããªã倧éã®ãã°ããããšæã
- ãŸãã¯åããã
- ä»ããfinvãfsqrtã¯å®æ©ã§åããããšãããšã©ã®ãããã®åšæ³¢æ°ã«ãªãã®ã§ãã?
- ã·ãã¥ã¬ãŒã·ã§ã³ã®æ®µéã§çµæ§æéãããã£ãŠããŸã£ãŠããŠã宿©ã§è©ŠããŠããªã
- å šæ°ãã§ãã¯ã§ãããŠããã®ã§ãã?
- ã¯ãã
- çŽç·è¿äŒŒã®ãšããããŸã æ£ããäœããŠããªãã®ã§ãä»ã®æfaddãfmulã«æããŠãã
- ããfinvãfsqrtã®äžã§faddãfmulã®ã³ã³ããŒãã³ãã䜿ã£ãŠããã®ã§ãã?
- ã¯ã
- ã·ãã¥ã¬ãŒã¿äžã§åããŠããŠã宿©äžã§ã¯é¢çœç»åãåºã
- ç·ãé£ãã§ããŸãæãããã®ãšãåºãããããã®ãç®äžã®è¬ã
- fadd, fmul, finv以å€ã¯å šéšãœãããŠã§ã¢å®è£ ããŠããã®ã§ãã©ãããã°ã£ãŠããã®ã ãã
- ã·ãã¥ã¬ãŒã¿: æµ®åå°æ°ç¹æ°æŒç®ã®ãããã°åºåãã§ããããã«ãã
- FPU: finvã®ç²ŸåºŠã2ulp以å ã«ãã
質ç
- ã³ã¢ä¿ããã©ããªæãã§ãããã°ãé²ããŠããã£ããããŸãã
- ã·ãã¥ã¬ãŒã¿ä¿ããã®ãããã§FPUãã©ããªèšç®ãããŠãããåºããŠãããããã«ãªã£ãã®ã§ããããèŠãŠãã³ã¢ããããããšããããšã«ãªã£ããåãããšæã£ãŠããŸãã
- FPUããœãããŠã§ã¢å®è£ ã®finv/fsqrtã¯å šæ°èª¿æ»ããã®ã§ãã?
- finvã¯å šæ°ãã§ãã¯ããŸãã
- faddãfmulããããã¯æ¯èŒåœä»€ãããããŸããã
- -0ãš0âŠâŠããé¢ä¿ãªãããª
- FPUã®ãã¹ãçã«ã¯ã©ã®ãããã®ãã®ãä»ãŸã§ããŸããã
- faddãšfmulãã鿣èŠåæ°ãããã0ã«ãããªã©ã®åŠçãäžååãªã®ã§ããã®å¯èœæ§ãèããŠããã
- 2ndã³ã³ãã€ã©ã倧äœã§ãããåºãã¡ãã£ãšãããã
- 2ndã·ãã¥ã¬ãŒã¿ãšã¢ã»ã³ãã©ãã§ãã
質ç
- ãã°ã®åå ãxorããã°ã£ãŠãããšã?
- 詊éšãããã®ã§é²æã»ãŒç¡ã
- 2ndã©ãããããããŸã決ãŸã£ãŠããªã
質ç
- 2ndã¯ã©ãããæãã§äŒžã°ããšãäºå®ã¯ãããŸãã
- å šç¶èããŠããªãã§ã
- ããšãã°ã©ããªæãã«äŒžã°ããšãèããŠããŸãã
- æ£çŽã¡ãã£ãšã³ã¢ä¿ã«ãŸãããŠããŠ(ã³ã¢ä¿ãåºåžããŠããªã)
- FPU: ãµã€ã¯ã«ã¢ãã¥ã¬ãŒãã·ãã¥ã¬ãŒã¿ã§fib 7ãåã
- ã³ã³ãã€ã©: æ°ããã¬ãžã¹ã¿ã¢ãã±ãŒã·ã§ã³ã¢ã«ãŽãªãºã ã®é«éå
質ç
- 幎æ«å¹Žå§ã¯ã©ããè¡ãããŠããã®ã§ãã
- ã©ããã«è¡ã£ãããã§ããªããã°å°äžã«ããããã§ããªãããã§ã
- çã¬ãžã¹ã¿ã¢ãã±ãŒã·ã§ã³ã¢ã«ãŽãªãºã ãšã¯
- å¹²æžã°ã©ãããŒã¹ã§å®è£ ãããã£ãã ãã§ãã
- 2ndã®åœä»€ã»ããã ãšmin-camlã®ã¬ãžã¹ã¿ã¢ãã±ãŒã·ã§ã³ã§æ±ãã«ãããªãšæããã®ã§æ°ãããã®ãäœããŸããã
- ã©ãããç¹ã§min-camlã ãšãŸããã£ãã®ã§ãã?
- åœä»€å ã§ã®äŸåé¢ä¿ãæ±ãã«ããã£ããã§ã
- x86ã®åœä»€ã»ããã¿ããã«ãå ¥åãšåºåãåãã¬ãžã¹ã¿ã«å²ãæ¯ãããŠããå Žåãªã©ã
- ã³ã¢
- ã¹ãŒããŒããããã¡ãã£ãšåŒ·åããã
- 77MHzã§24.9ç§
- ã·ãã¥ã¬ãŒã¿ã5åéããªã£ã
- ifæã®é£éãswitchã«ãã
- -O3ã«ãã
- 50ç§ã»ã©ã ã£ãã®ã11ç§ã«ãªã£ã
質ç
- ã¹ããŒããšã¯ã¹ãããŒã©(8é£ã¬ãã£)ãšã䜿ã£ãŠã¿ãŸããã
- 䜿ãããšã¯ããŸãã
nekketsuuuã¯ãã®åãæ¬ åžããã®ã§è©³çްã¯ç¥ããŸããããã©ã®çã詊éšå匷èŠããã ããã§ãã
1ç: floorãã©ã€ãã©ãªããISAã«å«ãŸããŠããfloorã«å€æŽãããšãã¡ããšcontest.ppmãåºåããã
2ç: FPUãæ¹åãããã§ããŸã ç»åã®ãã¯ã»ã«ãããããããã³ã¢ããª?
5ç: ã·ãã¥ã¬ãŒã¿ãé«éåãã
6ç: cycle accurate simulatorãã»ãŒå®æãã