Apple Matrixã³ããã»ããµïŒAMXïŒã«é¢ããåºçç©ã¯ãã§ã«ããªãã®æ°ãããŸããããããã»ãšãã©ã®äººã«ãšã£ãŠã¯ããŸãæ確ã§ã¯ãããŸãããã³ããã»ããµãŒã®ãã¥ã¢ã³ã¹ãããããããèšèã§èª¬æããããšæããŸãã
ãªãAppleã¯ãã®ã³ããã»ããµã«ã€ããŠããŸã話ããªãã®ã§ããïŒäœããããªã«ç§å¯ãªã®ïŒãŸããSoC M1ã®ãã¥ãŒã©ã«ãšã³ãžã³ã«ã€ããŠèªãã ããšãããå Žåã¯ãAMXã®äœãããã»ã©çããã®ããç解ããã®ã«èŠåŽãããããããŸããã
ããããæåã«ãåºæ¬çãªããšãèŠããŠãããŸãããïŒ è¡åãäœã§ããããããç¥ã£ãŠããŠãHabréã«ãã®ãããªèªè ã®ã»ãšãã©ããããšç¢ºä¿¡ããŠããå Žåã¯ãæåã®ã»ã¯ã·ã§ã³ãã¹ãããã§ããŸã-çŽTranslãïŒã
ãããªãã¯ã¹ãšã¯äœã§ããïŒ
ç°¡åã«èšãã°ãããã¯æ°åã®è¡šã§ããMicrosoft Excelã§äœæ¥ããããšãããå Žåã¯ãè¡åã®é¡äŒŒæ§ãåŠçããããšãæå³ããŸããè¡åãšæ°å€ã®ããéåžžã®ããŒãã«ã®äž»ãªéãã¯ãè¡åã䜿çšããŠå®è¡ã§ããæäœãšããã®ç¹å®ã®æ¬è³ªã«ãããŸãããããªãã¯ã¹ã¯ãããŸããŸãªåœ¢ã§èããããšãã§ããŸããããšãã°ãæååãšããŠãããã¯è¡ãã¯ãã«ã§ãããŸãã¯ãåãšããŠãããã¯éåžžã«è«ççã«ã¯åãã¯ãã«ã§ãã
è¡åã®å ç®ãæžç®ãã¹ã±ãŒãªã³ã°ãä¹ç®ãè¡ãããšãã§ããŸããå ç®ã¯æãç°¡åãªæäœã§ããåã¢ã€ãã ãåå¥ã«è¿œå ããã ãã§ããä¹ç®ã¯å°ã泚æãå¿ èŠã§ãããããç°¡åãªäŸã§ãã
è¡åã䜿çšãããã®ä»ã®æŒç®ã«ã€ããŠã¯ãããã§èªãããšãã§ã ãŸãã
ãªãè¡åã«ã€ããŠè©±ããŠããã®ã§ããïŒ
å®éã«ã¯ããããã¯æ¬¡ã®åéã§åºã䜿çšãããŠããŸã
ãâ¢ç»ååŠçã
â¢æ©æ¢°åŠç¿ã
â¢ææžããšé³å£°èªèã
â¢å§çž®ã
â¢ãªãŒãã£ãªãšãããªãæäœããŸãã
æ©æ¢°åŠç¿ã«é¢ããŠã¯ããã®ãã¯ãããžãŒã«ã¯åŒ·åãªããã»ããµãŒãå¿ èŠã§ãããããŠããããã«ããã€ãã®ã³ã¢ãè¿œå ããããšã¯ãªãã·ã§ã³ã§ã¯ãããŸãããããã§ãã«ãŒãã«ã¯ç¹å®ã®ã¿ã¹ã¯ã«å¯ŸããŠãã·ã£ãŒããã«ãªããŸãã
ããã»ããµå ã®ãã©ã³ãžã¹ã¿ã®æ°ãå¶éãããŠããããããããã«è¿œå ã§ããã¿ã¹ã¯/ã¢ãžã¥ãŒã«ã®æ°ãå¶éãããŠããŸããäžè¬ã«ãããã»ããµã«ã³ã¢ãè¿œå ããã ãã§ãããŸããŸããããããã«ãã£ãŠããã§ã«é«éãªæšæºèšç®ãé«éåãããŸãããã®ãããAppleã¯å¥ã®ã«ãŒããåããç»ååŠçããããªãã³ãŒããæ©æ¢°åŠç¿ã¿ã¹ã¯çšã®ã¢ãžã¥ãŒã«ã匷調ããããšã«ããŸããããããã®ã¢ãžã¥ãŒã«ã¯ãã³ããã»ããµãŒãšã¢ã¯ã»ã©ã¬ãŒã¿ãŒã§ãã
AppleMatrixã³ããã»ããµãŒãšNeuralEngineã®éãã¯äœã§ããïŒ
Neural Engineã«èå³ãããå Žåã¯ãæ©æ¢°åŠç¿ã®åé¡ãåŠçããããã®è¡åæŒç®ãå®è¡ããããšããåç¥ã§ãããããããããããããªãããªãããªãã¯ãããªãã¯ã¹ã³ããã»ããµãŒãå¿ èŠãšããã®ã§ããïŒå€åããã¯åãããšã§ããïŒç§ã¯äœãæ··ä¹±ããŠããŸããïŒç¶æ³ãæ確ã«ããéãã説æããäž¡æ¹ã®ãã¯ãããžãŒãå¿ èŠãªçç±ã説æããŸãã
ã¡ã€ã³ããã»ãã·ã³ã°ãŠãããïŒCPUïŒãã³ããã»ããµãŒãããã³ã¢ã¯ã»ã©ã¬ãŒã¿ãŒã¯ãéåžžãå ±éã®ããŒã¿ãã¹ãä»ããŠéä¿¡ã§ããŸããéåžžãCPUã¯ã¡ã¢ãªãžã®ã¢ã¯ã»ã¹ãå¶åŸ¡ããŸãããGPUãªã©ã®ã¢ã¯ã»ã©ã¬ãŒã¿ã«ã¯å°çšã®ã¡ã¢ãªãããããšããããããŸãã
以åã®èšäºã§ã¯ããã³ããã»ããµãŒããšãã¢ã¯ã»ã©ã¬ãŒã¿ãŒããšããçšèªãåãæå³ã§äœ¿çšããŠããããšãèªããŸããããããã¯åããã®ã§ã¯ãããŸããããããã£ãŠãGPUãšãã¥ãŒã©ã«ãšã³ãžã³ã¯ç°ãªãã¿ã€ãã®ã¢ã¯ã»ã©ã¬ãŒã¿ã§ãã
ã©ã¡ãã®å ŽåããCPUãåŠçãããããŒã¿ã§æºããå¿ èŠã®ããç¹å¥ãªã¡ã¢ãªé åãšãã¢ã¯ã»ã©ã¬ãŒã¿ãå®è¡ããå¿ èŠã®ããåœä»€ã®ãªã¹ãã§CPUãæºããå¿ èŠã®ããã¡ã¢ãªã®å¥ã®é åããããŸããããã»ããµã¯ãããã®ã¿ã¹ã¯ãå®äºããã®ã«æéãããããŸããããããã¹ãŠã調æŽããããŒã¿ãå ¥åããŠãããçµæãåä¿¡ãããã®ãåŸ ã€å¿ èŠããããŸãã
ãããŠããã®ãããªã¡ã«ããºã ã¯å€§èŠæš¡ãªã¿ã¹ã¯ã«ã¯é©ããŠããŸãããå°èŠæš¡ãªã¿ã¹ã¯ã«ã¯ããã¯ããéãã§ãã
ããã¯ãã¢ã¯ã»ã©ã¬ãŒã¿ã«å¯Ÿããã³ããã»ããµã®å©ç¹ã§ããã³ããã»ããµã¯ãã¡ã¢ãªïŒãŸãã¯ç¹ã«ãã£ãã·ã¥ïŒããCPUã«éããããã·ã³ã³ãŒãåœä»€ã®æµããç£èŠããŸããã³ããã»ããµãŒã¯ãåŠçã匷å¶ãããç¹å®ã®åœä»€ã«å¿çããããšã匷å¶ãããŸããäžæ¹ãCPUã¯ãããã®åœä»€ãã»ãšãã©ç¡èŠããããã³ããã»ããµãŒã«ããåŠçã容æã«ããŸãã
å©ç¹ã¯ãã³ããã»ããµãŒã«ãã£ãŠå®è¡ãããåœä»€ãéåžžã®ã³ãŒãã«å«ããããšãã§ããããšã§ãã GPUã®å Žåããã¹ãŠãç°ãªããŸããã·ã§ãŒããŒããã°ã©ã ã¯å¥ã ã®ã¡ã¢ãªãããã¡ãŒã«é 眮ãããGPUã«æ瀺çã«è»¢éããå¿ èŠããããŸããããã«ã¯éåžžã®ã³ãŒãã䜿çšã§ããŸããããã®ãããAMXã¯åçŽãªãããªãã¯ã¹åŠçã¿ã¹ã¯ã«æé©ã§ãã
ããã§ã®ç§èš£ã¯ããã€ã¯ãããã»ããµã®åœä»€ã»ããã¢ãŒããã¯ãã£ïŒISAïŒã§åœä»€ãå®çŸ©ããå¿ èŠããããšããããšã§ãããããã£ãŠãã³ããã»ããµãŒã䜿çšããå Žåã¯ãã¢ã¯ã»ã©ã¬ãŒã¿ãŒã䜿çšããå Žåãããããã»ããµãŒãšã®çµ±åãç·å¯ã«ãªããŸãã
ã¡ãªã¿ã«ãARMã®äœæè ã¯ãISAã«ã«ã¹ã¿ã åœä»€ãè¿œå ããããšã«é·ãéæµæããŠããŸããããããŠãããã¯RISC-Vã®å©ç¹ã®1ã€ã§ãããããã2019幎ã«ãéçºè ã¯æ¬¡ã®ããã«è¿°ã¹ãŠè«ŠããŸããããæ°ããåœä»€ã¯æšæºã®ARMåœä»€ãšçµã¿åããããŠããŸãããœãããŠã§ã¢ã®æçåãåé¿ããäžè²«ãããœãããŠã§ã¢éçºç°å¢ãç¶æããããã«ãARMã¯ãã¯ã©ã€ã¢ã³ããäž»ã«ã©ã€ãã©ãªåŒã³åºãã§ã«ã¹ã¿ã åœä»€ã䜿çšããããšãæåŸ ããŠããŸããã
ããã¯ãå ¬åŒããã¥ã¡ã³ãã«AMXåœä»€ã®èª¬æããªãããšã®è¯ã説æãããããŸãããARMã¯ãAppleã顧客ïŒãã®å Žåã¯AppleïŒã«ãã£ãŠæäŸãããã©ã€ãã©ãªã«åœä»€ãå«ããããšãåã«æåŸ ããŠããŸãã
ãããªãã¯ã¹ã³ããã»ããµãŒãšãã¯ã¿ãŒSIMDã®éãã¯äœã§ããïŒ
äžè¬ã«ããããªãã¯ã¹ã³ããã»ããµããã¯ãã«SIMDãã¯ãããžãšæ··åããããšã¯ããã»ã©é£ãããããŸãããããã¯ãARMãå«ãã»ãšãã©ã®ææ°ã®ããã»ããµã«èŠãããŸããSIMDã¯SingleInstruction MultipleDataã®ç¥ã§ãã
SIMDã䜿çšãããšããããªãã¯ã¹ã«å¯æ¥ã«é¢é£ããè€æ°ã®èŠçŽ ã«å¯ŸããŠåãæäœãå®è¡ããå¿ èŠãããå Žåã«ãã·ã¹ãã ããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸããäžè¬ã«ãARMNeonãŸãã¯Intelx86 SSEãŸãã¯AVXåœä»€ãå«ãSIMDåœä»€ã¯ãè¡åã®ä¹ç®ãé«éåããããã«ãã䜿çšãããŸãã
ãã ããSIMDãã¯ãã«ãšã³ãžã³ã¯ãALUïŒç®è¡è«çæŒç®ãŠãããïŒãšFPUïŒæµ®åå°æ°ç¹ãŠãããïŒãCPUã®äžéšã§ããã®ãšåæ§ã«ããã€ã¯ãããã»ããµã³ã¢ã®äžéšã§ããããŠããã§ã«ãã€ã¯ãããã»ããµã®åœä»€ãã³ãŒãã¯ãã©ã®æ©èœãããã¯ãã¢ã¯ãã£ãã«ããããã決å®ãããŠããŸãã
ãã ããã³ããã»ããµãŒã¯å¥åã®ç©çã¢ãžã¥ãŒã«ã§ããããã€ã¯ãããã»ããµãŒã»ã³ã¢ã®äžéšã§ã¯ãããŸãããããšãã°ã以åã®Intelã®8087ã¯ãæµ®åå°æ°ç¹æŒç®ãé«éåããããšãç®çãšããå¥åã®ãããã§ããã
æµ®åå°æ°ç¹åœä»€ãæ€åºããããã«ã¡ã¢ãªããããã»ããµã«éãããããŒã¿ãåŠçããå¥ã®ããããåããããã®ãããªè€éãªã·ã¹ãã ã誰ããéçºããã®ã¯å¥åŠã ãšæããããããŸããã
ããããèžã¯åçŽã«éããŸããäºå®ãå ã®8086ããã»ããµã«ã¯29,000åã®ãã©ã³ãžã¹ã¿ãããããŸããã§ããã8087ã«ã¯ãã§ã«45,000åãããŸããããæçµçã«ã¯ããã¯ãããžãŒã«ãã£ãŠFPUãã¡ã€ã³ãããã«çµ±åããã³ããã»ããµãŒãæé€ããããšãã§ããŸããã
ããããAMXãM1Firestormã³ã¢ã®äžéšã§ã¯ãªãçç±ã¯å®å šã«ã¯æããã§ã¯ãããŸããããã¶ããAppleã¯éæšæºã®ARMèŠçŽ ãã¡ã€ã³ããã»ããµã®å€ã«ç§»åããããšã決å®ããã®ãããããŸããã
ãããããªãAMXã¯ããŸã話é¡ã«ãªããªãã®ã§ããããã
AMXãå ¬åŒããã¥ã¡ã³ãã«èšèŒãããŠããªãå Žåãã©ãããã°ãããç¥ãããšãã§ããŸããïŒ M1ã®çŽ æŽããããªããŒã¹ãšã³ãžãã¢ãªã³ã°ãè¡ããã³ããã»ããµãŒãçºèŠããéçºè DougallJohnsonã«æè¬ããŸãã圌ã®äœåã¯ããã§èª¬æãããŠã ãŸããçµå±ã®ãšãããAppleã¯ãè¡åã«é¢é£ããæ°åŠæŒç®çšã«ãAccelerateã®ãããªç¹æ®ãªã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ãäœæããŸãã ãããããã¹ãŠã«ã¯ã次ã®èŠçŽ ãå«ãŸããŸãã
⢠vImage âãã©ãŒãããéã®å€æãç»åã®æäœãªã©ãããé«ã¬ãã«ã®ç»ååŠçã
⢠BLASç·åœ¢ä»£æ°ïŒè¡åãšãã¯ãã«ãæ±ãæ°åŠãšåŒã°ãããã®ïŒã®äžçš®ã®æ¥çæšæºã§ãã
⢠BNNS-ãã¥ãŒã©ã«ãããã¯ãŒã¯ã®å®è¡ãšãã¬ãŒãã³ã°ã«äœ¿çšãããŸãã
⢠vDSP-ããžã¿ã«ä¿¡å·åŠçãããŒãªãšå€æãç³ã¿èŸŒã¿ããããã¯ãç»åãŸãã¯é³å£°ãå«ãä¿¡å·ãåŠçãããšãã«å®è¡ãããæ°åŠæŒç®ã§ãã
⢠LAPACKâç·åœ¢æ¹çšåŒã®è§£æ³ãªã©ãé«ã¬ãã«ã®ç·åœ¢ä»£æ°é¢æ°ã
Johnsonã¯ããããã®ã©ã€ãã©ãªãAMXã³ããã»ããµã䜿çšããŠèšç®ãé«éåããããšãç解ããŠããŸããããã®ããã圌ã¯ã©ã€ãã©ãªã®ã¢ã¯ã·ã§ã³ãåæããã³ç£èŠããããã®å°çšãœãããŠã§ã¢ãéçºããŸãããæçµçã«ã圌ã¯ææžåãããŠããªãAMXãã·ã³ã³ãŒãåœä»€ãèŠã€ããããšãã§ããŸããã
ãŸããARM LTDãåå ã§ãAppleã¯ããããã¹ãŠãææžåããŠããªããããŸãå€ãã®æ å ±ã宣äŒããªãããã«ããŸããå®éãã«ã¹ã¿ã é¢æ°ãå®éã«åºã䜿çšãããŠããå Žåãåè¿°ã®ããã«ãããã¯ARMãšã³ã·ã¹ãã ã®æçåã«ã€ãªããå¯èœæ§ããããŸãã
Appleã«ã¯ãããããã¹ãŠãå®éã«å®£äŒããããšãªããåŸã§å¿ èŠã«å¿ããŠã·ã¹ãã ã®åäœãå€æŽããæ©äŒããããŸããããšãã°ãAMXåœä»€ãåé€ãŸãã¯è¿œå ããŸããéçºè ã«ãšã£ãŠã¯ãAccelerateãã©ãããã©ãŒã ã§ååã§ãããæ®ãã¯ã·ã¹ãã ãèªåçã«å®è¡ããŸãããããã£ãŠãAppleã¯ããŒããŠã§ã¢ãšãœãããŠã§ã¢ã®äž¡æ¹ãå¶åŸ¡ã§ããŸãã
AppleMatrixã³ããã»ããµãŒã®å©ç¹
ããã«ã¯ããããã®ããšããããŸããèŠçŽ ã®æ©èœã®åªããæŠèŠã¯ãæ©æ¢°åŠç¿ãã€ã³ããªãžã§ã³ã¹ãç¥èŠãå°éãšããNodLabsã«ãã£ãŠäœæãããŸãããç¹ã«ãAMX2ãšNEONã®ããã©ãŒãã³ã¹æ¯èŒãã¹ããå®æœããŸããã
çµå±ã®ãšãããAMXã¯ãè¡åã䜿çšããæäœã2åã®é床ã§å®è¡ããããã«å¿ èŠãªæäœãå®è¡ããŸãããã¡ãããããã¯AMXãæé©ã§ããããšãæå³ããã®ã§ã¯ãªããæ©æ¢°åŠç¿ãšãã€ããã©ãŒãã³ã¹ã³ã³ãã¥ãŒãã£ã³ã°ã«æé©ã§ãã
èŠããã«ãAppleã®ã³ããã»ããµã¯ãAppleARMã«æ©æ¢°åŠç¿ãšé«æ§èœã³ã³ãã¥ãŒãã£ã³ã°ã®åªäœæ§ãããããå°è±¡çãªãã¯ãããžãŒã§ãããšããããšã§ãã