EveryDay.DevUp

[Unity] DOTS ( Data Oriented Technology Stack ) 본문

Unity

[Unity] DOTS ( Data Oriented Technology Stack )

EveryDay.DevUp 2020. 6. 2. 23:26

● DOTS란?

▶ Unity를 통해 멀티스레딩과 퍼포먼스 향상이 가능한 차세대 유니티 기반 기술이다.

▶ ECS, Job System, Burst Compiler 의 각 고유한 기능들을 사용하여 DOD ( Data-Oriented Design )을 구현 하였다.

※ Data-Oriented-Design

: 프로그래밍을 시작하게 되면 가장 먼저 배우는 개념이 OOP ( Object-Oriented Programing )일 것이다. OOP는 여러대의 자동차가 존재한다고 했을 때 각 자동차를 객체로 분리하여 자동차의 특성을 정의하고 그 특성을 상속과 추상화 등으로 처리하여 여러대의 자동차를 나타낸다. OOP는 객체에만 중점을 두기 때문에 메모리에 어떻게 배치 된다거나, 그 안에 어떤 데이터가 있는지에는 관심이 없다.

 

[ List로 Car를 정의하면 메모리 여기 저기에 Car 객체가 생성된다 ]

: DOD (Data-Oriented-Design) 는 OOP의 객체를 데이터로 변화시켜서 데이터의 타입이 어떤지, 메모리에 어떻게 배치할 것인지, 데이터를 어떻게 사용할지를 중심에 놓는 방식이다. 위의 차를 예를 들면 속도, 크기, 브랜드, 차의 속성을 각각의 배열로 만들어서 관리하고 운전이라는 함수는 별도의 시스템에서 데이터를 가져다가 처리하는 방식이 된다.

[ DOD 형태의 차 표현 ]

DOD의 장점

① 병렬화 처리

: OOP는 각각의 객체가 서로 간에 참조 및 상호작용을 하는 부분이 많기 때문에 병렬적으로 처리하기가 어렵다. 이에 비해 DOD는 데이터를 각기 컨트롤 할 수 있기 때문에 동기화의 문제나 참조 및 상호작용의 문제가 적다.

② 캐시 활용성이 높아짐

: OOP는 생성된 객체가 메모리에 분리되어 배치될 가능성이 높은 반면에, DOD는 메모리에 데이터를 연속적으로 가지고 있기 때문에 캐시 미스가 일어날 상황이 적다.

: CPU 성능이 메모리의 성능보다 더 가파르게 상승하기 때문에 메모리의 성능을 최적화 하는 것이 전체적인 퍼포먼스 향상에 도움을 준다.

③ 모듈화

: OOP는 하나의 객체에 여러개의 데이터와 함수들이 존재할 가능성이 높은 반면에 DOD 데이터와 그 데이터를 처리하는 함수의 단위가 작고 상호 의존성이 낮기 때문에 모듈화를 하기가 쉽다.

DOD의 단점

: OOP로 개발하던 방식의 구조와 생각을 DOD로 바꾸기 위해서는 생각과 구조의 전환이 필요하고 이에 따라 학습에 대한 시간이 필요해진다. 

Unity DOTS의 구성 요소인 ECS, Job, Burst는 하단의 링크를 통해 자세히 알아 볼 수 있다.

ECS : https://everyday-devup.tistory.com/68

 

[Unity] DOTS - ECS ( Entity, Component, System )

● ECS 란? : ECS는 Entitiy, Component, System의 앞글자를 하나씩 딴 단어로, Unity에서 DOTS를 사용하기 위해 만든 아키텍쳐라고 할 수 있다. ▶ World : Systems, Entities, Archetypes를 묶은 것으로 Unity..

everyday-devup.tistory.com

Job : https://everyday-devup.tistory.com/69

 

[Unity] DOTS - 프로세스, 스레드, C# Job 시스템

Unity의 Job System을 이해하기에 앞서 기본이 되는 프로세스, 스레드의 개념을 알아보고, Job 시스템이 무엇인지와 사용법을 설명하고자 한다. ● 프로세스 ▶ 하드 디스크에 설치된 프로그램이 메��

everyday-devup.tistory.com

Burst : https://everyday-devup.tistory.com/70

 

[Unity] DOTS - Burst Compiler

ECS를 알아보기 전 DOTS에 대해 궁금한 점이 있다면 하단의 링크를 통해 알아 볼 수 있다. https://everyday-devup.tistory.com/67 [Unity] DOTS ( Data Oriented Technology Stack ) ● DOTS란? ▶ Unity를 통해..

everyday-devup.tistory.com

참고자료 : http://lab.gamecodi.com/board/zboard.php?id=GAMECODILAB_Lecture&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=hit&desc=desc&no=204