Upgrade to Pro — share decks privately, control downloads, hide ads and more …

音の出るCPUを作っている途中

Bcbc80799bc32840662a366768318a9b?s=47 KOBA789
March 20, 2021

 音の出るCPUを作っている途中

2021/03/20の「Kernel/VM探検隊online part2」で発表したものです。
https://connpass.com/event/201059/
https://www.youtube.com/watch?v=brrm328XItM&t=2621s

Bcbc80799bc32840662a366768318a9b?s=128

KOBA789

March 20, 2021
Tweet

Transcript

  1. KOBA789 Իͷग़ΔCPU Λ࡞͍ͬͯΔ్த

  2. ·ͣ༧๷ઢΛுΒͤͯ͘Εʂ ͜Ε͸ٳܜλΠϜͩʂʂʂʂʂ

  3. KOBA789 • ύιίϯΦλΫ • ࠷ऴֶྺߴଔ • ݱࡏແ৬ʢਓੜͷय़ٳΈʣ • ࣗ࡞ DBMS

    ੎ Ͱɺ୭ʁ
  4. https://diary.hatenablog.jp/entry/2020/11/16/222203

  5. ࣗ࡞DBMSͷ࿩͸͠·ͤΜ

  6. CPUͷ࿩΋͠·ͤΜ

  7. ࠓ೔ͷ಺༰ • ʢͳΜΒ͔ͷʣγϛϡϨʔλͷ࿩ • WebAssemblyʢΛ࢖͏ଆʣͷ࿩ • WebGL ͷ࿩ • Rust

    ͷ࿩ ͥΜͿଞͷొஃऀ͕ৄ͘͠
 ஻ͬͯ͘ΕΔΜ͡Όͳ͍͔ʁ
  8. ۙ೥ࣗ࡞ CPU ͕Ξπ͍ CPUΛࣗ࡞ͨ͜͠ͱ͕͋Γ·͔͢ 50% 50% ͸͍ ͜Ε͔Β࡞Δ ※׬શͳໝ૝ͱओ؍ʹجͮ͘σʔλ Զ΋࡞Γ͍ͨ

  9. ʮCPU ͷݪྉͬͯγϦίϯͳΜͰ͢Αʂɹ ҙ֎ʹ͜Ε஌ΒΕͯͳ͍ΜͰ͚͢Ͳʯ

  10. ʮCPU ͷݪྉͬͯγϦίϯͳΜͰ͢Αʂɹ ҙ֎ʹ͜Ε஌ΒΕͯͳ͍ΜͰ͚͢Ͳʯ ৗࣝ

  11. ʮCPU ͷݪྉͬͯγϦίϯͳΜͰ͢Αʂɹ ҙ֎ʹ͜Ε஌ΒΕͯͳ͍ΜͰ͚͢Ͳʯ ৗࣝ ͸ͨͯ͠ 
 ͦ͏ͩΖ͏͔

  12. CPU͸൒ಋମҎ֎Ͱ΋࡞ΕΔ ࿦ཧճ࿏Λߏ੒Ͱ͖Ε͹ 
 ૉࢠ͸ͳΜͰ΋͍͍ ͔ͷ༗໊ͳ&/*"$͸ਅۭ؅

  13. ͦ΋ͦ΋ ൒ಋମͰ࡞ͬͨ$16͸ 
 ಈ͍͍ͯΔͷ͔Ͳ͏͔Α͘Θ͔Βͳ͍ େࣄͳܭࢉΛ͍ͯ͠Δͷʹ 
 ౒ྗ͕ײ͡ΒΕͣɺ͚͔͠ΒΜ

  14. None
  15. ͜͜ʹɺ 
 খֶੜͷͱ͖ʹळ݄Ͱങͬͨ 
 ϦϨʔ͕ݸ͋Δ

  16. ͜ͷϦϨʔͰ$16Λ࡞Ζ͏

  17. ϦϨʔͱ͸ ి࣓ੴͰమ൘͕ 
 ٵ͍دͤΒΕΔ 
 ૉ๿ͳ࢓૊Έ εΠονϯάૉࢠͷͻͱͭ

  18. ϦϨʔͱ͸ ෺ཧతͳՄಈ෦͕͋ΔͷͰ 
 ಈ࡞Ի͕͢Δ ָ͍͠ʂʂ

  19. ϦϨʔಛ༗ͷࠔΓ͝ͱ • ௨ৗͷ࿦ཧճ࿏΄Ͳ஌ݟ͕ڞ༗͞Ε͍ͯͳ͍ • ࿦ཧѹॖͷίπͱ͔Θ͔Βͳ͍ • ։ൃʹศརͳπʔϧͳͲ΋ϩΫʹͳ͍ • γϛϡϨʔλͱ͔ͳ͍ •

    ͕Μ͹ͬͯϋϯμ෇͚ͯ͠ಈ͔ͳ͔ͬͨΒͱͯ΋൵͍͠
  20. ·ͣ͸ճ࿏$"%Λ࡞Ζ͏ʂ $"%Λ࡞Δͷָ͕ͯ͘͠$16Λ࡞ΔͷΛ๨Εͨ

  21. ͜͜Ͱࢥ͍ग़͢γϦʔζ

  22. https://www.youtube.com/watch?v=KiHpyP5UhyE

  23. ೥લʹ΋ಉ͡Α͏ͳൃදΛ͍ͯ͠Δ https://www.youtube.com/watch?v=KiHpyP5UhyE

  24. https://www.youtube.com/watch?v=jYJ31SrxCEE

  25. https://www.youtube.com/watch?v=jYJ31SrxCEE ཌ೥ʹ΋ಉ͡Α͏ͳ 
 ൃදΛ͍ͯ͠Δʂʂ

  26. ࡾ౓໨ͷਖ਼௚

  27. ࠓճ͸࢖͍ͮΒ͍ 
 γϛϡϨʔλ͚ͩͰͳ͘ɺ 
 $"%΋࡞ͬͨ

  28. ͓඼ॻ͖ • γϛϡϨʔλΛ࡞Δ • Ͳ͏΍ͬͯϦϨʔճ࿏ͷγϛϡϨʔγϣϯΛ͢Δ͔ • CADΛ࡞Δ • ճ࿏CADΛ60fpsͰψϧψϧಈ͔͢ •

    Rust, WebAssembly, WebGL…… • σϞ CPU࡞Δͱ͜Ζ·Ͱ͸
 ؒʹ߹Θͳ͔ͬͨͶ
  29. γϛϡϨʔλΛ࡞Δ

  30. ి࣓ϦϨʔͷճ࿏ • ίΠϧͱ઀఺Λͭͳ͍Ͱ࡞Δ • ίΠϧͷยଆ͸ඞͣGNDʹ͢Δ • ઈରʹγϣʔτ͠ͳ͘ͳΔ • γϛϡϨʔλ΋࡞Γ΍͍͢ ίΠϧ

    ઀఺
  31. ి࣓ϦϨʔͷճ࿏ • ճ࿏ • ͭ·Γάϥϑ • ిؾ͕ྲྀΕΔ • ͭ·Γ࿈݁੒෼

  32. ి࣓ϦϨʔͷճ࿏ ࿈݁੒෼ʹ 
 ిݯ͕͋Δ͔

  33. ͱ͍͏Α͏ͳ͜ͱΛRustͰద౰ʹॻ͘

  34. CADΛ࡞Δ

  35. CADʹٻΊΔ΋ͷ • ॻ͍ͨճ࿏ਤ͕ͦͷ··ಈ͍ͯ΄͍͠ • ಈ͘ճ࿏ਤΛ௚઀৮ͬͯ༡ͼ͍ͨ • ڊେͳճ࿏ਤͰ΋60fpsͰψϧψϧಈ͍ͯཉ͍͠ • ճ࿏ن໛͕େ͖͘ͳͬͯ΋γϛϡϨʔγϣϯ͸ͳΊΒ͔ʹ

  36. ΠϚυΩͷGUIͱ͍͑͹ϒϥ΢β ReactͱTypeScriptͰόʔϯͩͥʁ • ཁૉ਺͕૿͑ͯ͘ΔͱDOMͰ͸஗͗͢Δ • TypeScript(JavaScript)Ͱ࠲ඪܭࢉΛ͠·͘ΔίʔυΛॻ͘ͷ͸
 ͋·ΓʹΩπ͍ • ԋࢉࢠͷΦʔόʔϩʔυ͕ͳ͍ͷͰඇৗʹ໨ʹѱ͍ίʔυʹ •

    ͋ͱɺ΍ͬͺ஗͍
  37. RustͰ 
 WebAssemblyͰ 
 WebGLͩʂ

  38. WebGLͱ͸ ߴϨΠϠͳͷͰҰԠ • JavaScript͔ΒOpenGLͷΑ͏ͳ΋ͷ͕ୟ͚ΔAPI • ༨ܭͳ΋ͷ͕ʢൺֱతগͳ͘ʣ଎͍ • ΄΅OpenGL͕ͦͷ··࿐ग़͍ͯ͠Δ • JSͷΑ͏ͳεΫϦϓτݴޠͱͷ૬ੑ͸࠷ѱ

    • ͜ΕΛJSͰ࢖͏ਓ͸͔ͳΓ೜଱ྗ͕͋Δ • RustͰ࢖͏΂͖
  39. WebGL(OpenGL)Ͱ2DάϥϑΟοΫε • OpenGLͰ͸͝ଘ͡ͷͱ͓Γࡾ֯ܗ͔͠ॻ͚ͳ͍ • ԁʁͱ͔ॻ͚ͳ͍ • ઢ෼΋ࡾ֯ܗΛ2ຕ࢖͏ • จࣈ΋ॻ͚ͳ͍ •

    ؾ߹͍Ͱશ෦࣮૷͢Δ • 60fpsͷͨΊͱࢥ͑͹ͭΒ͘ͳ͍
  40. Immediate mode GUI • εςʔτϨεͰɺຖϑϨʔϜશ෦ඳ͖௚͢ • ϏοτϚοϓΛࠩ෼Ͱ࢖͍ճͨ͠Γ͠ͳ͍ • ήʔϜΤϯδϯͳͲͱ૬ੑͷ͍͍GUIΞʔΩςΫνϟ •

    Dear ImGui΍UnityͷIMGUI͕༗໊ • ࠓճͷCADͰ΋͜ΕΛ࠾༻
  41. ຖϑϨʔϜඳ͍ͨΒ஗͘ͳ͍ͷ͔ • ݱ୅ͷGPUࣗମ͸௒଎͍ • GPU͸CPU͔ΒRPCͰૢ࡞͢Δ • RPCͷίϚϯυൃߦ͕࣌ؒ৯͏ • ίϚϯυ਺Λ࡟Ε͹Ξϗ΄Ͳ଎͍ •

    ͍Ζ͍ΖςΫ͕͋Δ
  42. σϞ

  43. ࠓޙͷເ • subleqͷΑ͏ͳʢ໋ྩηοτ͕ʣখ͍͞ΞʔΩςΫνϟΛ࣮૷ͯ͠Έ͍ͨ • ωοτϦετ͸ు͚ΔΑ͏ʹͨ͠ͷͰɺ
 ϓϦϯτج൘ͷΞʔτϫʔΫΛ͓࣮ͯ͜͠ػΛ࡞Γ͍ͨ