데이터 지향 설계
Data-oriented design컴퓨팅에서 데이터 지향 설계는 비디오 게임 개발에 사용되는 CPU 캐시의 효율적인 사용에 의해 동기화된 프로그램 최적화 접근법이다.[1]데이터 레이아웃에 초점을 맞추고, 필드가 필요한 시기에 따라 필드를 분리 및 정렬하며, 데이터 변환을 고려하는 것이 접근 방식이다.지지자들로는 마이크 액튼,[2] 스콧 마이어스,[3] 조나단 블로우 등이 있다.
병렬 배열(또는 배열의 구조)은 데이터 지향 설계의 주요 예다.이것은 객체 지향 설계의 전형적인 구조 배열과 대조된다.
동기
이러한 방법은 특히 IBM PowerPC 기반 PlayStation 3(PS3)와 Xbox 360 콘솔을 포함한 7세대 비디오 게임 콘솔에서 2000년대 중후반부터 인기를 끌었다.역사적으로, 게임 콘솔은 종종 최상위 데스크탑 컴퓨터 장치에 비해 상대적으로 약한 중앙 처리 장치(CPU)를 가지고 있다.이는 그래픽 처리 장치(GPU)에 전력 및 트랜지스터 예산을 더 투입하기 위한 설계 선택이다.예를 들어 7세대 CPU는 현대적인 주문 외 실행 프로세서로 제조되지 않고 대신 클럭 속도가 높고 파이프라인이 깊은 주문형 프로세서를 사용했다.게다가, 대부분의 유형의 컴퓨터 시스템은 처리 요소로부터 수백 사이클 떨어진 곳에 메인 메모리를 가지고 있다.게다가, CPU가 메인 메모리 용량의 큰 증가와 함께 더 빨라짐에 따라, Von Neumann 병목현상으로 알려진 공유 버스에서 캐시 누락의 가능성을 증가시키는 대규모 데이터 소비가 있다.따라서 기준 방법의 인접성이 성능 제어에 사용되어 병목 현상을 해결하기 위한 메모리 액세스 패턴의 개선이 요구되었다.소프트웨어 문제 중 일부는 Itanium에서 발생한 문제와 유사하여 초기 스케줄링을 위해 루프를 풀어야 했다.
객체 방향과 대비
![]() | 이 절에는 아마도 독창적인 연구가 포함되어 있을 것이다.(2021년 9월) (이 를 과 시기 |
기존의 객체지향 프로그래밍(OOP) 설계원리는 데이터 인접성이 떨어지는 결과를 낳는데,[clarification needed] 런타임 다형성(다이내믹 디스패치)을 사용하면 더욱 그렇다(일부 프로세서에서 특히 문제가 있다).[4][5]OOP는 "데이터를 중심으로 코드를 조직"하는 것처럼 보이지만, 실제로 특정 기능에 의한 접근을 위해 개별 필드 및 어레이를 물리적으로 그룹화하는 것이 아니라 데이터 유형을 중심으로 소스 코드를 조직한다.더욱이, 데이터 지향 프로그래머는 이것을 가장 먼저 고려하기를 원하는 반면, 그것은 종종 추상화 계층 아래에 배치 세부사항을 숨긴다.
참고 항목
참조
- ^ Llopis, Noel (December 4, 2009). "Data-oriented design". Data-Oriented Design (Or Why You Might Be Shooting Yourself in The Foot With OOP). Retrieved April 17, 2020.
{{cite web}}
: CS1 maint : url-status (링크) - ^ "CppCon 2014: Mike Acton "Data-Oriented Design and C++"". YouTube.
- ^ "code::dive conference 2014 - Scott Meyers: Cpu Caches and Why You Care". YouTube.
- ^ 가상 기능 호출의 문제(예: i-properties misses)를 "What's wrong with Object-Oriented Design? Where's the harm in it?".설명한다.
- ^ "Data-oriented design - why you might be shooting yourself in the foot with OOP".