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

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

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

KOBA789

March 20, 2021
Tweet

More Decks by KOBA789

Other Decks in Technology

Transcript

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

    View Slide

  2. ·ͣ༧๷ઢΛுΒͤͯ͘Εʂ


    ͜Ε͸ٳܜλΠϜͩʂʂʂʂʂ

    View Slide

  3. KOBA789
    • ύιίϯΦλΫ

    • ࠷ऴֶྺߴଔ

    • ݱࡏແ৬ʢਓੜͷय़ٳΈʣ

    • ࣗ࡞ DBMS ੎
    Ͱɺ୭ʁ

    View Slide

  4. https://diary.hatenablog.jp/entry/2020/11/16/222203

    View Slide

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

    View Slide

  6. CPUͷ࿩΋͠·ͤΜ

    View Slide

  7. ࠓ೔ͷ಺༰
    • ʢͳΜΒ͔ͷʣγϛϡϨʔλͷ࿩

    • WebAssemblyʢΛ࢖͏ଆʣͷ࿩

    • WebGL ͷ࿩

    • Rust ͷ࿩
    ͥΜͿଞͷొஃऀ͕ৄ͘͠

    ஻ͬͯ͘ΕΔΜ͡Όͳ͍͔ʁ

    View Slide

  8. ۙ೥ࣗ࡞ CPU ͕Ξπ͍ CPUΛࣗ࡞ͨ͜͠ͱ͕͋Γ·͔͢
    50% 50%
    ͸͍ ͜Ε͔Β࡞Δ
    ※׬શͳໝ૝ͱओ؍ʹجͮ͘σʔλ
    Զ΋࡞Γ͍ͨ

    View Slide

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

    View Slide

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

    View Slide

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

    ͦ͏ͩΖ͏͔

    View Slide

  12. CPU͸൒ಋମҎ֎Ͱ΋࡞ΕΔ
    ࿦ཧճ࿏Λߏ੒Ͱ͖Ε͹

    ૉࢠ͸ͳΜͰ΋͍͍
    ͔ͷ༗໊ͳ&/*"$͸ਅۭ؅

    View Slide

  13. ͦ΋ͦ΋
    ൒ಋମͰ࡞ͬͨ$16͸

    ಈ͍͍ͯΔͷ͔Ͳ͏͔Α͘Θ͔Βͳ͍
    େࣄͳܭࢉΛ͍ͯ͠Δͷʹ

    ౒ྗ͕ײ͡ΒΕͣɺ͚͔͠ΒΜ

    View Slide

  14. View Slide

  15. ͜͜ʹɺ

    খֶੜͷͱ͖ʹळ݄Ͱങͬͨ

    ϦϨʔ͕ݸ͋Δ

    View Slide

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

    View Slide

  17. ϦϨʔͱ͸
    ి࣓ੴͰమ൘͕

    ٵ͍دͤΒΕΔ

    ૉ๿ͳ࢓૊Έ
    εΠονϯάૉࢠͷͻͱͭ

    View Slide

  18. ϦϨʔͱ͸
    ෺ཧతͳՄಈ෦͕͋ΔͷͰ

    ಈ࡞Ի͕͢Δ
    ָ͍͠ʂʂ

    View Slide

  19. ϦϨʔಛ༗ͷࠔΓ͝ͱ
    • ௨ৗͷ࿦ཧճ࿏΄Ͳ஌ݟ͕ڞ༗͞Ε͍ͯͳ͍

    • ࿦ཧѹॖͷίπͱ͔Θ͔Βͳ͍

    • ։ൃʹศརͳπʔϧͳͲ΋ϩΫʹͳ͍

    • γϛϡϨʔλͱ͔ͳ͍

    • ͕Μ͹ͬͯϋϯμ෇͚ͯ͠ಈ͔ͳ͔ͬͨΒͱͯ΋൵͍͠

    View Slide

  20. ·ͣ͸ճ࿏$"%Λ࡞Ζ͏ʂ
    $"%Λ࡞Δͷָ͕ͯ͘͠$16Λ࡞ΔͷΛ๨Εͨ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  25. https://www.youtube.com/watch?v=jYJ31SrxCEE
    ཌ೥ʹ΋ಉ͡Α͏ͳ

    ൃදΛ͍ͯ͠Δʂʂ

    View Slide

  26. ࡾ౓໨ͷਖ਼௚

    View Slide

  27. ࠓճ͸࢖͍ͮΒ͍

    γϛϡϨʔλ͚ͩͰͳ͘ɺ

    $"%΋࡞ͬͨ

    View Slide

  28. ͓඼ॻ͖
    • γϛϡϨʔλΛ࡞Δ

    • Ͳ͏΍ͬͯϦϨʔճ࿏ͷγϛϡϨʔγϣϯΛ͢Δ͔

    • CADΛ࡞Δ

    • ճ࿏CADΛ60fpsͰψϧψϧಈ͔͢

    • Rust, WebAssembly, WebGL……

    • σϞ
    CPU࡞Δͱ͜Ζ·Ͱ͸

    ؒʹ߹Θͳ͔ͬͨͶ

    View Slide

  29. γϛϡϨʔλΛ࡞Δ

    View Slide

  30. ి࣓ϦϨʔͷճ࿏
    • ίΠϧͱ઀఺Λͭͳ͍Ͱ࡞Δ

    • ίΠϧͷยଆ͸ඞͣGNDʹ͢Δ

    • ઈରʹγϣʔτ͠ͳ͘ͳΔ

    • γϛϡϨʔλ΋࡞Γ΍͍͢
    ίΠϧ ઀఺

    View Slide

  31. ి࣓ϦϨʔͷճ࿏
    • ճ࿏

    • ͭ·Γάϥϑ

    • ిؾ͕ྲྀΕΔ

    • ͭ·Γ࿈݁੒෼

    View Slide

  32. ి࣓ϦϨʔͷճ࿏
    ࿈݁੒෼ʹ

    ిݯ͕͋Δ͔

    View Slide

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

    View Slide

  34. CADΛ࡞Δ

    View Slide

  35. CADʹٻΊΔ΋ͷ
    • ॻ͍ͨճ࿏ਤ͕ͦͷ··ಈ͍ͯ΄͍͠

    • ಈ͘ճ࿏ਤΛ௚઀৮ͬͯ༡ͼ͍ͨ

    • ڊେͳճ࿏ਤͰ΋60fpsͰψϧψϧಈ͍ͯཉ͍͠

    • ճ࿏ن໛͕େ͖͘ͳͬͯ΋γϛϡϨʔγϣϯ͸ͳΊΒ͔ʹ

    View Slide

  36. ΠϚυΩͷGUIͱ͍͑͹ϒϥ΢β
    ReactͱTypeScriptͰόʔϯͩͥʁ
    • ཁૉ਺͕૿͑ͯ͘ΔͱDOMͰ͸஗͗͢Δ

    • TypeScript(JavaScript)Ͱ࠲ඪܭࢉΛ͠·͘ΔίʔυΛॻ͘ͷ͸

    ͋·ΓʹΩπ͍

    • ԋࢉࢠͷΦʔόʔϩʔυ͕ͳ͍ͷͰඇৗʹ໨ʹѱ͍ίʔυʹ

    • ͋ͱɺ΍ͬͺ஗͍

    View Slide

  37. RustͰ

    WebAssemblyͰ

    WebGLͩʂ

    View Slide

  38. WebGLͱ͸
    ߴϨΠϠͳͷͰҰԠ
    • JavaScript͔ΒOpenGLͷΑ͏ͳ΋ͷ͕ୟ͚ΔAPI

    • ༨ܭͳ΋ͷ͕ʢൺֱతগͳ͘ʣ଎͍

    • ΄΅OpenGL͕ͦͷ··࿐ग़͍ͯ͠Δ

    • JSͷΑ͏ͳεΫϦϓτݴޠͱͷ૬ੑ͸࠷ѱ

    • ͜ΕΛJSͰ࢖͏ਓ͸͔ͳΓ೜଱ྗ͕͋Δ

    • RustͰ࢖͏΂͖

    View Slide

  39. WebGL(OpenGL)Ͱ2DάϥϑΟοΫε
    • OpenGLͰ͸͝ଘ͡ͷͱ͓Γࡾ֯ܗ͔͠ॻ͚ͳ͍

    • ԁʁͱ͔ॻ͚ͳ͍

    • ઢ෼΋ࡾ֯ܗΛ2ຕ࢖͏

    • จࣈ΋ॻ͚ͳ͍

    • ؾ߹͍Ͱશ෦࣮૷͢Δ

    • 60fpsͷͨΊͱࢥ͑͹ͭΒ͘ͳ͍

    View Slide

  40. Immediate mode GUI
    • εςʔτϨεͰɺຖϑϨʔϜશ෦ඳ͖௚͢

    • ϏοτϚοϓΛࠩ෼Ͱ࢖͍ճͨ͠Γ͠ͳ͍

    • ήʔϜΤϯδϯͳͲͱ૬ੑͷ͍͍GUIΞʔΩςΫνϟ

    • Dear ImGui΍UnityͷIMGUI͕༗໊

    • ࠓճͷCADͰ΋͜ΕΛ࠾༻

    View Slide

  41. ຖϑϨʔϜඳ͍ͨΒ஗͘ͳ͍ͷ͔
    • ݱ୅ͷGPUࣗମ͸௒଎͍

    • GPU͸CPU͔ΒRPCͰૢ࡞͢Δ

    • RPCͷίϚϯυൃߦ͕࣌ؒ৯͏

    • ίϚϯυ਺Λ࡟Ε͹Ξϗ΄Ͳ଎͍

    • ͍Ζ͍ΖςΫ͕͋Δ

    View Slide

  42. σϞ

    View Slide

  43. ࠓޙͷເ
    • subleqͷΑ͏ͳʢ໋ྩηοτ͕ʣখ͍͞ΞʔΩςΫνϟΛ࣮૷ͯ͠Έ͍ͨ

    • ωοτϦετ͸ు͚ΔΑ͏ʹͨ͠ͷͰɺ

    ϓϦϯτج൘ͷΞʔτϫʔΫΛ͓࣮ͯ͜͠ػΛ࡞Γ͍ͨ

    View Slide