Pelemayの
ARMアーキテクチャとNervesへの適用

 Pelemayの
ARMアーキテクチャとNervesへの適用

近年では IoT でエッジ/フォグ・コンピューティングを行う事例が増えてきており,IoT にも計 算パワーが求められるようになってきている.そこで,近年,アメリカを中心に注目を集めている開発プ ラットフォーム Nerves と,我々が研究開発を進めている並列処理ネイティブコード生成系である Pelemay Super-Parallelism を組合わせて,エッジ/フォグ・コンピューティングに用いることを提案する.現状 の Pelemay は Clang / GCC を使って単一コアの SIMD 命令を含むネイティブコードを生成する.本 研究により,Raspberry Pi 3 Model B+ (ARM Cortex-A53 ベース) と Raspberri Pi 4 Model B (ARM Cortex-A72 ベース) の Nerves システム上と,Jetson Nano (ARM Cortex-A57 ベース) の Ubuntu 上で動 作することを確認した.実行時間を比較したところ,従来の Enum とくらべて,整数演算で 2.31 倍,浮動 小数点数演算で 5.16 倍,文字列置換で 3.51 倍の性能向上を達成した.将来は,Jetson シリーズの GPU を Pelemay で駆動できるようにする予定である.

83722380372c00bd75ac920f2089f6aa?s=128

Susumu Yamazaki (ZACKY)

August 20, 2020
Tweet

Transcript

  1. 1FMFNBZͷ "3.ΞʔΩςΫνϟͱ /FSWFT΁ͷద༻ ๺۝भࢢཱେֶࢁ࡚ਐ 1 ˜4VTVNV:BNB[BLJ

  2. എܠɾ໨త w ۙ೥Ͱ͸*P5ͰΤοδʗϑΥάɾίϯϐϡʔςΟϯάΛߦ͏ࣄྫ ͕૿͖͓͑ͯͯΓɼ*P5ʹ΋ܭࢉύϫʔ͕ٻΊΒΕΔΑ͏ʹ ͳ͖͍ͬͯͯΔ w ͦ͜Ͱɼۙ೥ɼ࣍ͷͭΛ૊Έ߹Θͤͯ ΤοδʗϑΥάɾίϯϐϡʔςΟϯάʹ༻͍Δ͜ͱΛఏҊ͢Δ w /FSWFT

    ΞϝϦΧΛத৺ʹ஫໨ΛूΊ͍ͯΔ։ൃϓϥοτϑΥʔϜ w 1FMFNBZ4VQFS1BSBMMFMJTN 1FMFNBZ  զʑ͕ݚڀ։ൃΛਐΊ͍ͯΔฒྻॲཧωΠςΟϒίʔυੜ੒ܥ 2 ˜4VTVNV:BNB[BLJ
  3. /FSWFTͷར఺ w /FSWFTΛΤοδʗϑΥάɾίϯϐϡʔςΟϯάʹ࠾༻ͨ͠ͱ͖ͷར఺͸ ࣍ͷͱ͓ΓͰ͋Δ  ϑΝʔϜ΢ΣΞͷϑοτϓϦϯτɼ͢ͳΘͪඞཁͳετϨʔδͷ༰ྔ͕খ͍͞ ˢඞཁ࠷খݶͷϞδϡʔϧɾίϚϯυ౳ͷΈ૊ࠐΉ  γεςϜϑΝΠϧΛ֨ೲ͢ΔύʔςΟγϣϯΛηοτ࣋ͭ͜ͱͰɼ ࣮ߦதʹγεςϜΛΞοϓσʔτ͢Δ͜ͱ͕Ͱ͖Δ

    ˢҰํΛΞΫςΟϒʹɼΞοϓσʔτ࣌ʹ΋͏ҰํΛॻ׵͑Δ ˠ/FSWFT)VC ɹγεςϜͷΞοϓσʔτΛϦϞʔτ͔ΒηΩϡΞ͔ͭҰ੪ʹ࣮ࢪՄೳ  γεςϜϑΝΠϧΛ֨ೲ͢ΔύʔςΟγϣϯΛϦʔυΦϯϦʔʹ͢Δ͜ͱͰɼ ෆ༻ҙͳॻ׵͑ʹΑΔো֐Λະવʹ๷͗ɼϚΠάϨʔγϣϯ΍෮چɼ૿ઃͳͲΛ ͠΍͍͢ 3 ˜4VTVNV:BNB[BLJ
  4. 1FMFNBZͷར఺ w 1FMFNBZ4VQFS1BSBMMFMJTNͱ૊߹ΘͤΔ͜ͱͰɼ͞Βʹ ࣍ͷར఺͕ੜ͡Δ  *P5ΠϯϑϥετϥΫνϟʹͱͬͯॏཁͰ͋ΔฒྻԽΛɼ Մಡੑͷߴ͍ϓϩάϥϛϯάݴޠͰ༰қʹهड़Ͱ͖Δ  $ݴޠϓϩάϥϛϯάฒΈͷॲཧੑೳΛಘΒΕΔ ‎ηϯα͔ΒಘΒΕΔσʔλ΍ωοτϫʔΫʹྲྀΕΔ

    ετϦʔϜΛߴ଎ʹॲཧͰ͖Δ 4 ˜4VTVNV:BNB[BLJ
  5. ຊൃදͷߩݙ w 1FMFNBZ4VQFS1BSBMMFMJTNΛ/FSWFT΍༷ʑͳ "3.ΞʔΩςΫνϟ্Ͱ࣮ߦͰ͖ΔΑ͏ʹͨ͜͠ͱ w ͦͷੑೳΛධՁͨ͜͠ͱ w /FSWFTʹରԠͤ͞ΔͨΊʹඞཁͳ͜ͱΛྫࣔͨ͜͠ͱ 5 ˜4VTVNV:BNB[BLJ

  6. "3.ʹ͍ͭͯ w ݄ʹൃදʹͳͬͨͭͷൃද w ෋ַ w εʔύʔίϯϐϡʔλϥϯΩϯάͷͭͰ͋Δ5PQʹͯੈքҰʹ w "3.ΞʔΩςΫνϟΛ࠾༻͠ɼϕΫλʔϓϩηοαͱ֦ͯ͠ு w

    "QQMF4JMJDPO w 88%$ʹͯɼ"QQMF͕.BDΛ"3.ϕʔεΞʔΩςΫνϟʹ೥͔͚ͯҠߦ w -JOVYͷ૑࢝ऀɼ-JOVT͕੠໌ w -JOVYͷιʔείʔυʹࢄࡏ͢Δɼอक͕ߦ͖ಧ͔ͳ͍֤छ"3.ΞʔΩςΫνϟ޲͚ίʔυΛͳΜͱ͔͍ͨ͠ w ͜͜਺೔Ͱٸ଎ʹ"3.ΞʔΩςΫνϟʹର͢Δ஫໨౓্͕͕͍ͬͯΔ w 5XJUUFSͰͷද໌ɼؔ࿈גՁͷ্ঢɼιϑτόϯΫ͕"3.Λച٫ͷχϡʔεͳͲ w "3.ʹ͍ͭͯઌߦ஌ݟͷଟ͍૊ࠐΈγεςϜ෼໺ʹର͠ɼଞ෼໺͔ΒҾ͖߹͍͕ग़ͯ͘ΔʁˠΈͳ͞ΜɼνϟϯεͰ͢ʂ 6 ˜4VTVNV:BNB[BLJ
  7. ຊൃදͷ͜ͷޙͷߏ੒  1FMFNBZίʔυྫ  1FMFNBZʹΑΔฒྻԽ  ੑೳධՁ  1FMFNBZͷ/FSWFTରԠ 

    ·ͱΊͱকདྷ՝୊ 7 ˜4VTVNV:BNB[BLJ
  8. 1FMFNBZίʔυྫ 8 ˜4VTVNV:BNB[BLJ

  9. 1FMFNBZίʔυྫ w ӈਤ͸1FMFNBZΛ༻͍ͨ ίʔυྫ w ߦ໨͸1FMFNBZΛϥΠϒϥϦͱͯ͠ ಡࠐΉઃఆ w ʙߦ໨ͷEFGQFMFNBZ͸ɼEPʜ FOEͷൣғͷϓϩάϥϜίʔυΛ

    1FMFNBZॲཧܥʹ౉ͯ͠ίʔυ࠷ద Խ͢Δ w 1FMFNBZ͸EFGQFMFNBZEPʜFOEͷ ۠ؒͷίʔυϒϩοΫʹؔ͠ɼฒྻ ԽՄೳͳ෦෼͸શͯฒྻԽ͢Δํ਑ ΛͱΔ  ˜4VTVNV:BNB[BLJ
  10. 1FMFNBZίʔυྫ w ߦ໨ͷ ͸ୈҰҾ਺Ͱ༩͑ΒΕͨ஋ʹ ΛՃ͑Δແ໊ؔ਺Ͱ͋Δ w ແ໊ؔ਺ w ؔ਺ఆٛͷҰछͰɼؔ਺Λఆٛ͢Δ͕ؔ਺໊Λ ఆٛ͠ͳ͍

    w ແ໊ؔ਺Λ஋ͱ͍ͯ͠Δͱ͖ʹɼͦͷ஋ʹҾ਺ Λ༩͑ͯɼແ໊ؔ਺ʹఆٛ͞Εͨؔ਺Λݺͼग़ ͢͜ͱ͕Ͱ͖Δ w ؔ਺ܕݴޠͰ͸ϙϐϡϥʔ w $ݴޠͰݴ͑͹ɼιʔτ͢Δͱ͖ʹൺֱؔ਺Λ౉͢ ͜ͱ͕͋Δ͕ɼ͜ͷ৔߹ʹ͍ۙ w ແ໊ؔ਺ʹΑͬͯɼൺֱؔ਺Λ֎෦ʹఆٛ͢Δ ͜ͱͳ͘ɼιʔτΛར༻͢Δؔ਺ͷதʹఆٛͰ ͖Δͷ͕ར఺ͷͭ  ˜4VTVNV:BNB[BLJ
  11. 1FMFNBZίʔυྫ w ߦ໨ͷ ͸ ୈҰҾ਺Ͱ༩͑ΒΕͨ஋ʹ ΛՃ͑Δແ໊ؔ਺Ͱ͋Δ w c&OVNNBQ  

    ʹΑͬͯ ύΠϓϥΠϯԋࢉࢠͰ౉͞Εͨ Ϧετͷ֤ཁૉʹΛՃ͑Δ w ߦ໨͔Β̓ߦ໨ʹ͔͚ͯɼ ϦετMJTUͷ֤ཁૉʹΛՃ͑ͨ ϦετΛੜ੒ͯ͠ฦ͢ w ྫ͑͹<  >Λ౉͞Εͨ৔߹ɼ <  >Λฦ͢  ˜4VTVNV:BNB[BLJ
  12. 1FMFNBZίʔυྫ w ͜ͷͱ͖ɼ࠷େͰMJTUͷཁૉͷ਺͚ͩ ฒྻʹ࣮ߦ͢Δ͜ͱ͕Ͱ͖Δ w ͳͥͳΒ͹ɼ֤ཁૉͷԋࢉ͸ଞͷཁૉͷ ԋࢉͱґଘؔ܎͕ͳ͍ͨΊͰ͋Δ w ྫ͑͹< 

    >Λ༩͑ͨ৔߹͸ɼ ࣍ͷͭʹϦετͷཁૉ਺͚ͩ ฒྻʹ࣮ߦͰ͖Δ w ʹՃ͑Δԋࢉ w ʹՃ͑Δԋࢉ w ʹՃ͑Δԋࢉ w Ϧετͷཁૉ਺͕େ͖͍΄Ͳɼ ฒྻԽͷޮՌ͕ߴ͍  ˜4VTVNV:BNB[BLJ
  13. 1FMFNBZʹΑΔฒྻԽ 13 ˜4VTVNV:BNB[BLJ

  14. 1FMFNBZʹΑΔฒྻԽ w ͜ͷͱ͖࠷େͰMJTUͷཁૉͷ਺ ͚ͩฒྻʹ࣮ߦͰ͖Δ w 1FMFNBZ͸͜ͷ͜ͱΛར༻͠ ฒྻԽΛਤΔ w ݱঢ়Ͱ͸$MBOH·ͨ͸($$ͷ "VUP7FDUPSJ[BUJPOͱ͍͏

    ػೳΛ༻͍ͯ4*.%໋ྩΛؚΉ ωΠςΟϒίʔυ΁ίϯύΠ ϧ͢Δ  ˜4VTVNV:BNB[BLJ
  15. 1FMFNBZʹΑΔฒྻԽ w ӈਤΛ1FMFNBZͰίʔυੜ੒͢Δͱࠨਤͷ$ݴޠίʔυʹͳΔ  ˜4VTVNV:BNB[BLJ

  16. 1FMFNBZʹΑΔฒྻԽ w ӈਤͷίʔυ͸ɼϦετͷཁૉͱͯ͠ɼුಈখ਺఺਺ܕͱ੔਺ܕͷ͍ͣΕ΋ड͚෇͚Δ w $ݴޠʹίϯύΠϧͨ͠ͱ͖΋ුಈখ਺఺਺ܕ ʙߦ໨ ͱ੔਺ܕ ʙߦ໨ ͷͭͷؔ਺Λ ੜ੒͢Δ

     ˜4VTVNV:BNB[BLJ
  17. 1FMFNBZʹΑΔฒྻԽ w ߦ໨͓Αͼߦ໨͸ɼ$MBOHʹର͠ "VUP7FDUPSJ[BUJPOΛࢦࣔ͢Δهड़ w ϕΫτϧԽΛ༗ޮʹ͢Δ w ϕΫλʔ෯ΛϚΫϩఆ਺ -001@7&$503*;&@8*%5)Ͱࢦఆ ͨ͠஋ʹ͢Δ

    w ϧʔϓΛ4*.%໋ྩΛؚΉωΠςΟ ϒίʔυʹม׵͢Δ w ࠷ۙͷ($$Ͱ͸ɼ͜ͷΑ͏ͳهड़͕ ͳ͘ͱ΋ɼίϯύΠϧΦϓγϣϯͰ 0΍0GBTUͳͲΛࢦఆͨ͠৔߹͸ɼ ࣗಈతʹϕΫτϧԽΛߦ͏  ˜4VTVNV:BNB[BLJ
  18. 1FMFNBZʹΑΔฒྻԽ w ߦ໨͓Αͼߦ໨͸ɼ$MBOHʹର͠"VUP 7FDUPSJ[BUJPOΛࢦࣔ͢Δهड़ w ϕΫλʔ෯ΛϚΫϩఆ਺ -001@7&$503*;&@8*%5)Ͱࢦఆͨ͠஋ ʹ͢Δ w ࠷ۙͷ($$Ͱ͸ɼ͜ͷΑ͏ͳهड़͕ͳ͘ͱ΋ɼ

    ίϯύΠϧΦϓγϣϯͰ0΍0GBTUͳͲΛࢦ ఆͨ͠৔߹͸ɼࣗಈతʹϕΫτϧԽΛߦ͏ ✴-001@7&$503*;&@8*%5)͸$MBOHͰίϯύ Πϧͨ࣌͠ͷΈ࡞༻͠($$ͷ࣌ʹ͸࡞༻͠ͳ͍ w ຊݚڀͷධՁͰ͸($$Λ༻͍ͨͷͰɼ ͲΜͳ஋Λઃఆͯ͠΋ੜ੒ͨ͠ίʔυʹࠩ ͸ੜ͡ͳ͍  ˜4VTVNV:BNB[BLJ
  19. 1FMFNBZʹΑΔฒྻԽ w ӈਤ͸ුಈখ਺఺਺ܕͷԋࢉΧʔ ωϧʹ͍ͭͯɼ"3.$PSUFY "޲͚ʹίϯύΠϧͨ͠Ξηϯ ϒϦίʔυ w ੔਺ܕʹ͍ͭͯ͸࿦จͷਤΛ ࢀরͷ͜ͱ w

    /&0/໋ྩ "3.ΞʔΩςΫνϟ ͷ4*.%໋ྩ ͕ੜ੒͞Ε͍ͯΔ w ੺ઢΛҾ͍ͨ෦෼ɼ͓Αͼ੺࿮ Ͱғͬͨ෦෼͕/&0/໋ྩ  ˜4VTVNV:BNB[BLJ
  20. 1FMFNBZʹΑΔฒྻԽ w 1FMFNBZ͸ݩͷϓϩάϥϜίʔυ͔ΒฒྻԽͰ͖Δύλʔϯ ӈਤͷ੺࿮ Λೝࣝ͠ɼ$ݴޠͰॻ͔ΕͨςϯϓϨʔτʹ౰ͯ͸Ίͯίʔυੜ੒͢Δ  ˜4VTVNV:BNB[BLJ

  21. ੑೳධՁ 21 ˜4VTVNV:BNB[BLJ

  22. ಈ࡞֬ೝ w ࣍ͷγεςϜ্Ͱಈ࡞֬ೝΛߦͳͬͨ w /FSWFT w 3BTQCFSSZ1J.PEFM#  "3.$PSUFY"ϕʔε 

    w 3BTQCFSSZ1J.PEFM# "3.$PSUFY"ϕʔε  w 6CVOUV w +FUTPO/BOP "3.$PSUFY"ϕʔε  w ϋʔυ΢ΣΞ࢓༷͸࿦จͷදɼιϑτ΢ΣΞ࢓༷͸දΛࢀরͷ͜ͱ w γεςϜߏ੒ͷ౎߹্ɼ-JOVYΧʔωϧͱ($$ʹ͍ͭͯόʔδϣϯΛ׬શʹҰகͤ͞Δ ͜ͱ͸Ͱ͖ͳ͔ͬͨ 22 ˜4VTVNV:BNB[BLJ
  23. ੑೳධՁ w +FUTPO/BOP "3.$PSUFY"ϕʔε ্Ͱɼ؆୯ͳੑೳධՁΛߦͳͬͨ w ੔਺ϕϯνϚʔΫ w ૉମͷϩδεςΟοΫࣸ૾Λճܭࢉ w

    ͜ΕΛ·ͱΊͯݺͼग़͢ճ෼ͷؔ਺ݺͼग़͠ʹཁ͢Δ࣌ؒΛܭଌ w ුಈখ਺఺਺ϕϯνϚʔΫ w Ϧετͷ֤ཁૉΛഒ͢Δॲཧ w ճͷݺग़͠ʹཁ͢Δ࣌ؒΛܭଌ w จࣈྻஔ׵ϕϯνϚʔΫ w ୹͍จࣈྻͷҰׅஔ׵Λߦ͏ॲཧ w ճͷݺग़͠ʹཁ͢Δ࣌ؒΛܭଌ 23 ˜4VTVNV:BNB[BLJ
  24. ੑೳධՁ w ैདྷͷ&OVNΛͦͷ··࣮ߦ͢ Δͷͱൺ΂ͯ࣍ͷΑ͏ͳੑೳ ޲্Λୡ੒ͨ͠ w ੔਺ԋࢉͰഒ w ුಈখ਺఺਺ԋࢉͰഒ w

    จࣈྻஔ׵Ͱഒ  ˜4VTVNV:BNB[BLJ
  25. 1FMFNBZͷ/FSWFTରԠ 25 ˜4VTVNV:BNB[BLJ

  26. 1FMFNBZͷ/FSWFTରԠ w 1FMFNBZΛ/FSWFTʹରԠͤ͞Δͷʹඞཁͩͬͨ͜ͱ͸ɼ֓Ͷ࣍ͷͱ͓ΓͰ͋Δ w ίʔυ࣮ߦλΠϛϯάͷ۠ผ w ίʔυΛ࣮ߦ͢ΔλΠϛϯά͕ίϯύΠϧ࣌ͳͷ͔ΞϓϦέʔγϣϯ࣮ߦ࣌ͳͷ͔Λݫີʹ۠ผ͠ɼॻ͖෼͚Δ w ඞཁ࠷খݶͷίϚϯυɼγεςϜϑΝΠϧར༻ w

    σϑΥϧτঢ়ଶͷ/FSWFTͰ࣮ߦՄೳͳίϚϯυɼऔಘՄೳͳϑΝΠϧͷΈΛ࢖༻͢Δ w ੜ੒ίʔυͷ഑ஔ w /FSWFTͷίϚϯυɼNJYpSNXBSFͰϑΝʔϜ΢ΣΞʹΠϯετʔϧ͞ΕΔΑ͏ʹɼੜ੒ίʔυΛ഑ஔ͢Δ w ΫϩείϯύΠϧ؀ڥҾܧ͗ w /FSWFTͷίϚϯυɼNJYpSNXBSFͰىಈ͢ΔΫϩείϯύΠϧ؀ڥΛҾܧ͙ w ϚϧνλʔήοτରԠ w ϚϧνλʔήοτͷίʔυͱϏϧυεΫϦϓτΛੜ੒͢Δ 26 ˜4VTVNV:BNB[BLJ
  27. ·ͱΊͱকདྷ՝୊ 27 ˜4VTVNV:BNB[BLJ

  28. ·ͱΊ w 1FMFNBZΛ/FSWFTʹରԠͤ͞Δͷʹඞཁͩͬͨ͜ͱ w ίʔυ࣮ߦλΠϛϯάͷ۠ผ w ඞཁ࠷௿ݶͷίϚϯυɼγεςϜϑΝΠϧར༻ w ੜ੒ίʔυͷ഑ஔ w

    ΫϩείϯύΠϧ؀ڥҾܧ͗ w ϚϧνλʔήοτରԠ w ࣍ͷϘʔυͰಈ࡞֬ೝΛͨ͠ w /FSWFT3BTQCFSSZ1J.PEFM# ɼ3BTQCFSSZ1J.PEFM# w 6CVOUV+FUTPO/BOP w +FUTPO/BOPͰੑೳධՁ͠ɼ࣍ͷੑೳ޲্Λୡ੒ͨ͠ w ੔਺ԋࢉഒɼුಈখ਺఺਺ԋࢉഒɼจࣈྻஔ׵ഒ 28 ˜4VTVNV:BNB[BLJ
  29. কདྷ՝୊ w ݱࡏɼ/FSWFT1SPKFDUͱ/7*%*"ͷڠಇʹΑΓ/FSWFT Λ+FUTPOγϦʔζͰ࣮ߦͰ͖ΔΑ͏ʹҠ২࡞ۀ͕ਐΊΒ Ε͍ͯΔ w কདྷ͸ɼ+FUTPOγϦʔζͷ(16Λ1FMFNBZͰۦಈͰ͖Δ Α͏ʹ͢Δ 29 ˜4VTVNV:BNB[BLJ