SlideShare a Scribd company logo
Practical Multi-core
          Multi-
Game Programming
          (noerror@hitel.net)
                   2009.9.13
•
    –             ,
    –
    –
    –
        •       Architect   NEW JOB


•
•
            .
•
    – IO           (   ,       )
       •
       •      IO
    – CPU                  (       )
       •
       • (3    )
•       3       (from Getting More from Multicore / Ian Lewis)
    – BSP (Bulk Synchronous Processing)
    – CSP (Communicating Sequential Processing)
    – TASK POOL
• IO
    –       CPU          100%
    –
BSP(1)
• BSP (Bulk Synchronized Process)
  –
      •
      •
      •
      •
  –
  –
      •
          – AI,
BSP(2)
•                                Update Thread

•         : Coding for                Buffer 0
    Multiple Cores / Bruce
    Dawson & Chuck
                                      Buffer 1
    Walbourn

                                 Render Thread
CSP
• CSP        (Communicating Sequential processing)
  –
  –
        •
        •              (Sleep   )




                       Anim                 Render

      Main
              A                     B       Render
                       Anim
Task Pool
• TASK POOL
   –
   –                   Task(JOB)
   – CPU
   – CSP
       • Seirialize
   – Context Switching
   –          Task

      Main            Anim     Anim   Render   Render    Anim
                                                        Render
                                                         Main
                                                        Thread 0


                      Anim     Anim   Render   Render    Anim
                                                        Render
                                                        Thread 1

                      Anim     Anim   Render   Render    Anim
                                                        Render
                                                        Thread 2

                      Anim     Anim   Render   Render
                                                        Thread 3
                                                         Anim
                                                        Render
(recall)
•
    – n
          •

    –         IOCP
• Context Switching
    –
      statck                          (context)
    –      Context Switching
• IOCP
•         P2P
•
•
• PhysX
•
•
•
IOCP
•             IOCP
    – IOCP
      •
          –               GQCS
              »

          –                 GQCS
              » Context Switching
          –
              »               SQL
                     Context Switching
          –
P2P
• P2P                  ,   respose
  – mainloop


      •                        ,
          , mainloop
      • ping                             (mainloop
                             ping                    )
  –              ,
      •                     Lock-Free FIFO QUEUE
(recall)
•   Lock-Free Queue
    –




    –                       =>                              +
            ~ (                                        .)
    –   (   : Saints Row Scheduler / Randall Turner)
• STL
    –
    –                                                           (   )
•
    –
    –       pseudo




    –                mainloop    IO
                            =>
    – sleep
        •                CPU
(1)
•
    – TerminateThread    X
       •                teminate         ???
(2)
•
    –   signal
(recall)
•
    – Semaphore
        •                 n



    – Mutex
        • Semaphore           1
    – Critical Section (win32)
        • Mutex                          . Spinlock

    – Event (win32)
        • Mutex
PhysX
•
    –
•
    –   ,           ,
(1)
•   ,                                Proxy




•       pseudo                        (
                 – Threadmain    )
(2)
•

•       texture   100
    ,
(3)
•                            ,       ,

•       Task Pool          Object        Update     Draw       Job
               queue
    pseudo                               (                 1
    Update             ,         2           Draw              ??)
(1)
• D3D
        Render                                           ??

• DrawPrimitive              RenderState
•
   – D3D          (          ) Command Buffer
                         ,
                                   <- Unreal3 (     )
   –                                              D3D




   – D3D 11       Display List        ^^
(2)
•
    –              Draw




    –                     DrawPrimitive
            (TLS
        )
•
    – Priority
    – Serialize


•
    – IO
    – Task


•

•
(recall)
•
    –                                      %

    – 40%                                2CPU   1.25       ,   25%
             . 30   => 37.5               (            ,        4
        43            )       GPU idle
/
• Coding for Multiple Cores, Bruce Dawson & Chuck Walbourn
• Multicore Strategies for Games, Aaron Lanterman
• Getting More from Multicore, Ian Lewis
• Threading 3D Game Engine Basics, Henry Gabb and Adam Lake
• Saints Row Scheduler, Randall Turner
• Lockless Programming Considerations for Xbox 360 and Microsoft
  Windows, Bruce Dawson
• An Optimistic Approach to Lock-Free FIFO Queues, Edya Ladan-
  Mozes and Nir Shavit
• Developing Gears of War in Unreal Engine 3, Michael Capps
• Multi-Threaded Rendering for Games, Matt Lees

More Related Content

Viewers also liked (12)

PPTX
L22 multi-threading-introduction
teach4uin
 
PPT
Elcuerpohumano1
octubre11
 
PPTX
threading and multi threading in java
Hamza Shah
 
PDF
Design Pattern From Java To Ruby
yelogic
 
PPTX
Java package
CS_GDRCST
 
PPT
Interface in java By Dheeraj Kumar Singh
dheeraj_cse
 
PPT
Packages in java
Abhishek Khune
 
PPT
Threads in java
mukesh singh
 
PPT
Packages and interfaces
vanithaRamasamy
 
PPT
Design Pattern From Java To Ruby
Robbin Fan
 
PPT
Java interfaces
Raja Sekhar
 
PPT
Java packages
Raja Sekhar
 
L22 multi-threading-introduction
teach4uin
 
Elcuerpohumano1
octubre11
 
threading and multi threading in java
Hamza Shah
 
Design Pattern From Java To Ruby
yelogic
 
Java package
CS_GDRCST
 
Interface in java By Dheeraj Kumar Singh
dheeraj_cse
 
Packages in java
Abhishek Khune
 
Threads in java
mukesh singh
 
Packages and interfaces
vanithaRamasamy
 
Design Pattern From Java To Ruby
Robbin Fan
 
Java interfaces
Raja Sekhar
 
Java packages
Raja Sekhar
 

Similar to 09_Practical Multicore programming (20)

PDF
オペレーティングシステム 設計と実装 第3版(20101211)
Ryousei Takano
 
PDF
Umbra Ignite 2015: Jérémy Virga – Dishonored 2 rendering engine architecture ...
Umbra Software
 
KEY
イマドキなNetwork/IO
Takuya ASADA
 
PPT
MongoDB Basic Concepts
MongoDB
 
PDF
HES2011 - Aaron Portnoy and Logan Brown - Black Box Auditing Adobe Shockwave
Hackito Ergo Sum
 
PDF
MongoDB: Optimising for Performance, Scale & Analytics
Server Density
 
PDF
[Harvard CS264] 16 - Managing Dynamic Parallelism on GPUs: A Case Study of Hi...
npinto
 
PPTX
MIPS Assembly Language I
LiEdo
 
PDF
Bigdata roundtable-storm
Tobias Schlottke
 
PPTX
Making a game with Molehill: Zombie Tycoon
Jean-Philippe Doiron
 
PDF
How shit works: the CPU
Tomer Gabel
 
PDF
Memory efficient applications. FRANCESC ALTED at Big Data Spain 2012
Big Data Spain
 
PPT
Mongo db roma replication and sharding
Guglielmo Incisa Di Camerana
 
PDF
Ensuring High Availability for Real-time Analytics featuring Boxed Ice / Serv...
MongoDB
 
PDF
Enter the Snake Pit for Fast and Easy Spark
Jon Haddad
 
PDF
軽快なPlan9 (第三回Kernel/VM探検隊)
Go Saito
 
PPTX
Intro cs-lec1
BadrMaki
 
PDF
[shaderx7] 8.1 Cross-Platform Rendering Thread : Design and Implementation
종빈 오
 
PDF
DSL - Domain Specific Languages, Chapter 4, Internal DSL
Hiro Yoshioka
 
PDF
第17回Cassandra勉強会: MyCassandra
Shun Nakamura
 
オペレーティングシステム 設計と実装 第3版(20101211)
Ryousei Takano
 
Umbra Ignite 2015: Jérémy Virga – Dishonored 2 rendering engine architecture ...
Umbra Software
 
イマドキなNetwork/IO
Takuya ASADA
 
MongoDB Basic Concepts
MongoDB
 
HES2011 - Aaron Portnoy and Logan Brown - Black Box Auditing Adobe Shockwave
Hackito Ergo Sum
 
MongoDB: Optimising for Performance, Scale & Analytics
Server Density
 
[Harvard CS264] 16 - Managing Dynamic Parallelism on GPUs: A Case Study of Hi...
npinto
 
MIPS Assembly Language I
LiEdo
 
Bigdata roundtable-storm
Tobias Schlottke
 
Making a game with Molehill: Zombie Tycoon
Jean-Philippe Doiron
 
How shit works: the CPU
Tomer Gabel
 
Memory efficient applications. FRANCESC ALTED at Big Data Spain 2012
Big Data Spain
 
Mongo db roma replication and sharding
Guglielmo Incisa Di Camerana
 
Ensuring High Availability for Real-time Analytics featuring Boxed Ice / Serv...
MongoDB
 
Enter the Snake Pit for Fast and Easy Spark
Jon Haddad
 
軽快なPlan9 (第三回Kernel/VM探検隊)
Go Saito
 
Intro cs-lec1
BadrMaki
 
[shaderx7] 8.1 Cross-Platform Rendering Thread : Design and Implementation
종빈 오
 
DSL - Domain Specific Languages, Chapter 4, Internal DSL
Hiro Yoshioka
 
第17回Cassandra勉強会: MyCassandra
Shun Nakamura
 
Ad

More from noerror (20)

PPTX
15_TextureAtlas
noerror
 
PPTX
11_웹서비스활용
noerror
 
PDF
NDC08_실시간비주얼그래프편집
noerror
 
PDF
NDC12_Lockless게임서버설계와구현
noerror
 
PPTX
KCGS11_실시간 피사계 심도 렌더링 개선 기법
noerror
 
PDF
11_통계 자료분석 입문
noerror
 
PPTX
11_빠른 개발 가능한 레벨 편집 시스템
noerror
 
PPTX
11_SH를 이용한 실시간 투명 근사법
noerror
 
PDF
ICON08_게임 애니메이션 최적화 기법
noerror
 
PDF
08_Marching Cube Terrains
noerror
 
PDF
08_게임 물리 프로그래밍 가이드
noerror
 
PDF
08_플래시 맛보기
noerror
 
PDF
08_애니메이션고등학교 게임과 특강
noerror
 
PDF
08_Wxwidgets 소개
noerror
 
PDF
07_PhysX 강체물리 입문
noerror
 
PDF
07_스케일폼 소개
noerror
 
PDF
07_Visual Shader Editor
noerror
 
PDF
06_HDR 소개
noerror
 
PDF
06_게임엔진 활용팁
noerror
 
PDF
06_게임엔진구성
noerror
 
15_TextureAtlas
noerror
 
11_웹서비스활용
noerror
 
NDC08_실시간비주얼그래프편집
noerror
 
NDC12_Lockless게임서버설계와구현
noerror
 
KCGS11_실시간 피사계 심도 렌더링 개선 기법
noerror
 
11_통계 자료분석 입문
noerror
 
11_빠른 개발 가능한 레벨 편집 시스템
noerror
 
11_SH를 이용한 실시간 투명 근사법
noerror
 
ICON08_게임 애니메이션 최적화 기법
noerror
 
08_Marching Cube Terrains
noerror
 
08_게임 물리 프로그래밍 가이드
noerror
 
08_플래시 맛보기
noerror
 
08_애니메이션고등학교 게임과 특강
noerror
 
08_Wxwidgets 소개
noerror
 
07_PhysX 강체물리 입문
noerror
 
07_스케일폼 소개
noerror
 
07_Visual Shader Editor
noerror
 
06_HDR 소개
noerror
 
06_게임엔진 활용팁
noerror
 
06_게임엔진구성
noerror
 
Ad

09_Practical Multicore programming

  • 1. Practical Multi-core Multi- Game Programming ([email protected]) 2009.9.13
  • 2. – , – – – • Architect NEW JOB • • .
  • 3. – IO ( , ) • • IO – CPU ( ) • • (3 )
  • 4. 3 (from Getting More from Multicore / Ian Lewis) – BSP (Bulk Synchronous Processing) – CSP (Communicating Sequential Processing) – TASK POOL • IO – CPU 100% –
  • 5. BSP(1) • BSP (Bulk Synchronized Process) – • • • • – – • – AI,
  • 6. BSP(2) • Update Thread • : Coding for Buffer 0 Multiple Cores / Bruce Dawson & Chuck Buffer 1 Walbourn Render Thread
  • 7. CSP • CSP (Communicating Sequential processing) – – • • (Sleep ) Anim Render Main A B Render Anim
  • 8. Task Pool • TASK POOL – – Task(JOB) – CPU – CSP • Seirialize – Context Switching – Task Main Anim Anim Render Render Anim Render Main Thread 0 Anim Anim Render Render Anim Render Thread 1 Anim Anim Render Render Anim Render Thread 2 Anim Anim Render Render Thread 3 Anim Render
  • 9. (recall) • – n • – IOCP • Context Switching – statck (context) – Context Switching
  • 10. • IOCP • P2P • • • PhysX • • •
  • 11. IOCP • IOCP – IOCP • – GQCS » – GQCS » Context Switching – » SQL Context Switching –
  • 12. P2P • P2P , respose – mainloop • , , mainloop • ping (mainloop ping ) – , • Lock-Free FIFO QUEUE
  • 13. (recall) • Lock-Free Queue – – => + ~ ( .) – ( : Saints Row Scheduler / Randall Turner) • STL – – ( )
  • 14. – – pseudo – mainloop IO => – sleep • CPU
  • 15. (1) • – TerminateThread X • teminate ???
  • 16. (2) • – signal
  • 17. (recall) • – Semaphore • n – Mutex • Semaphore 1 – Critical Section (win32) • Mutex . Spinlock – Event (win32) • Mutex
  • 18. PhysX • – • – , ,
  • 19. (1) • , Proxy • pseudo ( – Threadmain )
  • 20. (2) • • texture 100 ,
  • 21. (3) • , , • Task Pool Object Update Draw Job queue pseudo ( 1 Update , 2 Draw ??)
  • 22. (1) • D3D Render ?? • DrawPrimitive RenderState • – D3D ( ) Command Buffer , <- Unreal3 ( ) – D3D – D3D 11 Display List ^^
  • 23. (2) • – Draw – DrawPrimitive (TLS )
  • 24. – Priority – Serialize • – IO – Task • •
  • 25. (recall) • – % – 40% 2CPU 1.25 , 25% . 30 => 37.5 ( , 4 43 ) GPU idle
  • 26. /
  • 27. • Coding for Multiple Cores, Bruce Dawson & Chuck Walbourn • Multicore Strategies for Games, Aaron Lanterman • Getting More from Multicore, Ian Lewis • Threading 3D Game Engine Basics, Henry Gabb and Adam Lake • Saints Row Scheduler, Randall Turner • Lockless Programming Considerations for Xbox 360 and Microsoft Windows, Bruce Dawson • An Optimistic Approach to Lock-Free FIFO Queues, Edya Ladan- Mozes and Nir Shavit • Developing Gears of War in Unreal Engine 3, Michael Capps • Multi-Threaded Rendering for Games, Matt Lees