KR20140102581A - 재구성 프로세서에서 충돌 해결을 가속화하기 위한 방법 및 시스템 - Google Patents

재구성 프로세서에서 충돌 해결을 가속화하기 위한 방법 및 시스템 Download PDF

Info

Publication number
KR20140102581A
KR20140102581A KR1020130036484A KR20130036484A KR20140102581A KR 20140102581 A KR20140102581 A KR 20140102581A KR 1020130036484 A KR1020130036484 A KR 1020130036484A KR 20130036484 A KR20130036484 A KR 20130036484A KR 20140102581 A KR20140102581 A KR 20140102581A
Authority
KR
South Korea
Prior art keywords
pair
cluster
collision
conflict
pairs
Prior art date
Application number
KR1020130036484A
Other languages
English (en)
Other versions
KR102044784B1 (ko
Inventor
바산타쿠마 라자고팔
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to US13/916,884 priority Critical patent/US9098917B2/en
Publication of KR20140102581A publication Critical patent/KR20140102581A/ko
Application granted granted Critical
Publication of KR102044784B1 publication Critical patent/KR102044784B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs

Abstract

재구성 프로세서에 3D 물리 엔진의 충돌 해결을 가속화하기 위한 방법 및 시스템이 개시된다. 충돌 해결 모듈이, ADRES을 기반으로 재구성 프로세서의 코오스 그레인드 어레이에서 이용 가능한 병렬성을 이용할 수 있도록 한다. 충돌 해결을 가속화 하기 위해 충돌 쌍의 리스케줄링 및 분리가 수행된다. 시뮬레이션 중인 오브젝트로부터 처리의 원래 순서로 충돌 쌍을 얻는다. 그 다음, 연속적인 충돌 쌍 사이에서 종속성을 제거하기 위하여 충돌 쌍을 재정렬한다. 원래 충돌 쌍에서 얻어진 독립 충돌 쌍은 함께 그룹화된다. 또한, 종속 충돌 쌍이 추출되고 그룹화된다. 종속 충돌 쌍은 VLIW 모드에서 처리되고, 독립 충돌 쌍은 CGA 모드에서 루프 레벨 병렬 처리를 이용하여 처리된다.

Description

재구성 프로세서에서 충돌 해결을 가속화하기 위한 방법 및 시스템{Method and system for accelerating collision resolution on a reconfigurable processor}
이하의 실시예들은 물리 시뮬레이션(physical simulation)에 관한 것으로, 특히 재구성 프로세서(reconfigurable processor)에서 충돌 해결(collision resolution)을 가속화(accelerating)하기 위한 방법 및 시스템에 관한 것이다.
물리 시뮬레이션은, 가상 객체(virtual objects)가 현실감 있는 방식(realistic way)으로 서로 상호 작용하는 컴퓨터 그래픽 응용에서 다양하게 사용된다. 예를 들어, 비디오 게임에서는, 게임에서의 오브젝트가 어떻게 상호 작용(interact)하는지를 보여주기 위하여 물리 시뮬레이션 파이프 라인을 사용하는 것이 바람직하다. 예를 들어, 자동차 경주 게임에서는, 두 대의 차량이 고속으로 접촉하는 경우, 물리 엔진(physics engine)은 충돌을 식별하고 현실감 있게 충돌의 결과를 시뮬레이션 한다.
현재, 컴퓨터와 콘솔 게임은 계속해서 엔터테인먼트의 주요 소스(sources)로 인기를 얻고 있다. 비디오 게임과 관련 응용 프로그램이 인기를 얻으면서, 추가적인 리얼리즘을 제공하기 위해 새로운 기술이 발생하는 것은 놀라운 일이 아니다. 특히, 뉴턴 역학을 기반으로 한 관계를 사용하여 게임 플레이 역학(game play dynamics)을 모델링 할 수 있는 능력은 이제 표준이다.
물리 엔진은 실제 세계의 역학(real world dynamics)을 묘사하는 방식으로 객체 사이의 상호 작용을 시뮬레이션 하는 데 사용되는 그래픽 미들웨어 콤포넌트(graphics middleware component)를 나타낸다. 현재 시나리오(scenario)에서 물리 처리는 중앙 처리 장치(CPUs)이나 그래픽 처리 장치(GPUs)에서 이루어진다. 동적인 재구성 임베디드 시스템을 위한 아키텍처(ADRES: Architecture for Dynamically Reconfigurable Embedded Systems) 설계는 밀착 결합(tightly coupled) VLIW(very long instruction word) 프로세서 및 코어스 그레인드 재구성 어레이(Coarse Grained Reconfigurable Array)(CGRA/CGA)을 포함한다. 이들은, 각각, 명령 레벨 병렬 처리(instruction level parallelism)(ILP)와 루프 레벨의 병렬 처리(loop level parallelism)(ILP)와 같이 여러 레벨의 병렬성(parallelism)을 이용하도록 설계된다.
CPU는 물리적으로 존재하는 많은 병렬성(parallelism)을 이용하는 제한된 범위를 가질 수 있다. 그래픽 프로세싱 유닛은 병렬성(parallelism)을 이용하지만, 더 많은 전력을 소비할 수 있다. 재구성 프로세서(reconfigurable processors)는 데이터 집약적인 응용을 실행하기 위한 낮은 전력을 사용하는 대안을 제공한다.
아키텍쳐(architecture)에서 코어스 그레인드 어레이(CGA: Coarse Grained Array)는, 어레이(array) 내 계산 유닛(computational units)의 수와 같은 오더(order)의 이득(gain)을 제공할 수 있다. 재구성 프로세서는 물리 모듈(physics modules)에서 계산 루프를 병렬화하는 데 사용할 수 있다. 특히, 물리학(physics)에서 제약 해결 또는 충돌 해결 모듈(constraints solver or collision resolver)은 CGA 모드 오퍼레이션에 대해 매핑될 수 있는 반복적인 알고리즘이다.
충돌(collisions)은 선형 상보성 문제(LCPs: linear complementary problems)로 표현되고, 최속 강하법(steepest descent methods)을 사용하여 반복적으로 해결된다. 그러나, 연속 충돌 쌍(successive collision pairs) 사이의 종속성(dependency)은 CGA 매핑(mapping)의 가능성을 막는다. 충돌 쌍의 처리 순서를 리스케줄링(rescheduling) 하는 것은 종속성을 제거하는 한 방법이다. 사용 가능한 리스케줄링 방법은 별로 없지만, 이들은 멀티 스레드 처리 아키텍처(multi-threaded processing architectures) 또는 다중 코어 GPU(multi core CPUs)를 타겟팅한다.
일 실시예에 따르면, 재구성 프로세서에서 3D 물리 엔진의 충돌 해결(collision resolution)을 가속화하기 위한 방법 및 시스템이 제공될 수 있다.
일 실시예에 따르면, 재구성 프로세서에서 처리하기 위하여 충돌 쌍(collision pairs)의 순서를 리스케줄링(rescheduling)하기 위한 방법 및 시스템이 제공될 수 있다.
일 실시예에 따르면,, 충돌 쌍(colliding pairs) 중에서 종속성(dependency)을 제거하기 위하여 오브젝트(objects)로부터 상기 충돌 쌍을 리스케줄링(rescheduling)하는 단계를 포함하는 재구성 프로세서(RP: reconfigurable processor)에서 충돌 해결(collision resolution)을 가속화(accelerlate)하기 위한 방법이 제공된다. 또한, 상기 방법은 코어스 그레인드 어레이 모드(Coarse Grained Array(CGA) mode) 및 VLIW(Very Long Instruction Word) 모드 중 적어도 하나에서의 프로세싱을 위하여 상기 충돌 쌍을 분리(divide)한다.
일 실시예에 따르면, 디바이스(device), 재구성 프로세서(RP: reconfigurable processor), 및 집적 회로(integrated circuit)을 포함하는 재구성 프로세서에서 충돌 해결을 가속화하기 위한 시스템이 제공된다. 또한, 상기 집적 회로는 적어도 하나의 프로세서 및 적어도 하나의 메모리를 포함한다. 또한, 상기 메모리는 상기 회로 내에서 컴퓨터 프로그램을 포함한다. 상기 적어도 하나의 프로세서, 상기 적어도 하나의 메모리 및 상기 컴퓨터 프로그램 코드는 상기 시스템이 충돌 쌍 중에서 종속성을 제거하기 위하여 오브젝트로부터 상기 충돌 쌍을 리스케줄링한다. 또한, 상기 시스템은 코어스 그레인드 어레이 모드 및 VLIW 모드 중 적어도 하나에서의 프로세싱을 위하여 상기 충돌 쌍을 분리하도록 구성된다.
일 실시예에 따르면, 재구성 프로세서에서 충돌 해결을 가속화하기 위한 컴퓨터 프로그램 제품(computer program product)가 제공된다. 상기 제품은 집적회로를 포함한다. 또한 집적회로는 적어도 하나의 프로세서와 적어도 하나의 메모리를 포함한다. 또한 상기 메모리는 회로 내에 컴퓨터 프로그램 코드를 포함한다. 적어도 하나의 프로세서와 함께, 적어도 하나의 메모리와 상기 컴퓨터 프로그램 코드는, 상기 제품이, 충돌 쌍 사이의 종속성을 제거하기 위하여 오브젝트로부터 충돌 쌍을 리스케줄하도록 한다.. 또한 제품은 코어스 그레인드 어레이 또는 VLIW 중 적어도 어느 하나에서 처리하기 위하여 충돌 쌍을 분리(divide)하도록 구성되어 있다.
다음의 설명 및 첨부된 도면을 함께 고려할 때 실시예의 여러 가지 측면들이 더 잘 이해될 것이다. 그러나 아래의 설명이 여러 가지 실시예와 많은 구체적인 내용들을 설명하지만, 아래의 설명들은 설명의 목적으로 제시되는 것이며, 이에 제한되는 것으로 해석되어서는 안 된다. 실시예들에 의하여 설명되는 기술적 사상으로부터 벗어나지 않고 많은 변경 및 수정이 이루어질 수 있으며, 실시예들은 이러한 모든 변경 및 수정을 포함한다.
이하에서 실시예들은 다양한 도면에서 대응되는 구성을 가리키는 도면 부호를 사용하여 첨부되는 도면으로 설명된다. 여기에서 설명되는 실시예들은 도면을 참조한 아래의 설명들로부터 더 잘 이해될 수 있다.
도 1은 일 실시예에 따른 사용자 디바이스의 블록도를 도시한다.
도 2는 ADRES(architecture for dynamically reconfigurable embedded systems)를 도시한다.
도 3은 물리 엔진 파이프 라인(physics engine pipeline)을 도시한다.
도 4는 일 실시예에 따른 예시적인 충돌 쌍을 도시한다.
도 5는 일 실시예에 따른 리스케줄링 및 분리 후의 충돌 쌍을 도시한다.
도 6은 일 실시예에 따라 재구성 프로세서에 의한 충돌 쌍의 처리 순서를 도시한다.
도 7은 일 실시예에 따라, 리스케줄링 방법을 사용한 성능 향상을 보여주는 시뮬레이션 그래프이다.
도 8은 재구성 프로세서에서 충돌 해결을 가속화하기 위한 방법 및 시스템을 구현하는 컴퓨팅 환경(computing environment)을 도시한다.
실시예들 및 상기 실시예들의 다양한 특징 및 장점들이 첨부된 도면과 아래의 설명에 자세히 설명되어 있는 비제한적인 실시예들을 참조하여 더 충분하게 설명되어 있다. 잘 알려진 구성 요소와 처리 기술에 대한 설명은, 실시예들을 불필요하게 모호하게 하지 않도록 생략되어 있다. 여기에서 사용되는 예들은, 실시예를 실시할 수 있도록 하기 위한 의도로 사용되었으며, 또한 기술분야에서 통상의 지식을 가진 자가 실시예들을 실시할 수 있도록 하기 위한 의도로 사용되었다. 따라서, 예들은 실시예의 범위를 제한하는 것으로 해석되어서는 안 된다.
여기에서 설명된 실시예들은 재구성 프로세서에서 3D(three dimensional) 물리 엔진(physical engine)의 충돌 해결을 가속화(accelerate)하기 위한 방법 및 시스템에 관한 것이다. 충돌 쌍을 리스케줄하고 분리하는 방법은 충돌 해결을 가속화 위해 수행된다.
ADRES(Architecture for dynamically reconfigurable embedded systems)는, 핸드 헬드 스마트 디바이스(hand-held smart devices)에서 비디오 프로세싱, 그래픽스 등과 같은 다양한 응용을 가속화하기 위하여 설계된 저 파워 플렉서블 아키텍처(low power flexible architecture)이다. ADRES 설계는 밀착 결합(tightly coupled) VLIW(very long instruction word) 프로세서 및 코어스 그레인드 재구성 어레이(Coarse Grained Reconfigurable Array)(CGRA/CGA)을 포함한다. 재구성 프로세서는 ADRES를 기반으로 설계되었다. 설명되는 방법은 재구성 프로세서에서 구현된다. 이 방법은 CGRA에서 물리 엔진의 충돌 해결을 가속한다.
이 방법은 시뮬레이션 중에 있는 오브젝트로부터 처리의 원래 순서로 충돌 쌍(colliding pairs)을 얻는다. 그 다음 이 방법은 연속적인 충돌 쌍(successive collision pairs) 사이의 종속성(dependency)을 제거하기 위해 충돌 쌍을 재정렬(reordering)하는 것을 시작한다. 원래 충돌 쌍(original colliding pairs)로부터 얻어진 독립 충돌 쌍(independent collision pairs)은 함께 그룹화된다. 또한 원래의 충돌 쌍으로부터의 종속 충돌 쌍(dependent collision pairs)이 추출되고 함께 그룹화된다. 종속 충돌 쌍은 VLIW 모드에서 처리되는 반면, 독립 충돌 쌍은 루프 수준의 병렬성(loop level parallelism)을 이용하여 CGA 모드에서 처리된다.
여기에 설명된 방법은 사용자 디바이스의 재구성 프로세서(RP)에 구현될 수 있다.
실시예에서는, 사용자 장치는 휴대 전화, 태블릿(tablet), 또는 휴대 가능한 전자 기기(hand held electronic device)일 수 있다.
설명 전반에 걸쳐 용어 충돌 쌍(colliding pairs)과 충돌 쌍(collision pairs)는 서로 교환 가능하게 사용된다.
도면에, 특히 도 1 내지 도 8에 걸쳐, 동일한 참조 부호는 도면들에 걸쳐 일관되게 대응하는 구성을 나타낸다.
도 1은 여기에 개시된 실시예에 따른 사용자 디바이스의 일반적인 블록도를 도시한다. 도 1에 도시된 바와 같이, 사용자 디바이스(user device)(100)는 프로세서 모듈(processor module)(101), 재구성 프로세서 모듈(reconfigurable processor module)(102), 메모리 모듈(memory module)(103) 및 그래픽스 프로세싱 유닛(GPU: graphics processing unit) 모듈(104)을 포함한다.
프로세서 모듈(101)은, 사용자 장치(100)에서, 프로세싱, I/O 스캐닝(scanning), 논리, 제어 및 통신 기능을 제공한다. 저전력 및 좋은 인터럽트 행동에 대한 필요성과 뛰어난 성능 및 기존 플랫폼과의 강력한 호환성을 균형시키는 임베디드 리얼 타임 어플리케이션(embedded real-time applications)을 위하여, 리얼 타임 임베디드 프로세서(real-time embedded processors)가 개발되었다. 실시예에서, 프로세서 모듈(101)은 ARM 프로세서가 될 수 있다.
재구성 프로세서 모듈(102)은 ADRES에 따라 설계된다. 사용자 장치(100)에서 재구성 프로세서(RP)는 물리(physics)를 처리하기 위해 저전력을 활용한다.
메모리 모듈(103)은, 프로세서에 의한 실행을 위하여, 예를 들어, 응용과 같은, 명령(instructions) 및 정보를 저장할 수 있는 랜덤 액세스 메모리(RAM) 또는 다른 유형의 동적 저장 장치(dynamic storage device), 읽기 전용 메모리(ROM) 장치 또는 다른 유형의 정적 저장 장치(static storage device)를 포함할 수 있다.
사용자 장치(100)에서 GPU 모듈(104)는 GPU를 포함한다. GPU는 컴퓨터 그래픽의 조작에 매우 효율적이다. 그리고 GPU는 일반적으로 큰 블록의 데이터를 병렬로 처리하는 알고리즘에 대하여 범용 CPU보다 더 효과적이다. 또한, 현대적인 스마트 폰들은 프로그램에 따라 다양한 작업을 수행할 수 고급 내장 칩셋(embedded chipsets)이 장착되어 있다. GPU는 이러한 칩셋의 필수적인 부분이며, 모바일 게임이 요구하는 용량의 한계가 증가됨에 따라, GPU의 성능이 핵심적인 역할을 담당한다.
도 2 는 동적 재구성 임베디드 시스템(dynamically reconfigurable embedded systems)(ADRES)에 대한 아키텍처(architecture)를 도시한다. ADRES 아키텍처는 데이터 경로 - 커플드 코어스 그레인드 재구성 매트릭스(data path-coupled coarse-grained reconfigurable matrix)이다. ADRES 아키텍처는, 2-D 코어스 그레인드 이종 재구성 어레이(2-D coarse-grained heterogeneous reconfigurable array)(CGA)와 VLIW 디지털 신호 프로세서(DSP)를 결합한, 전력 효율적인 유연한 아키텍처 템플릿이다.
VLIW 아키텍처는 사이클마다 다수의 명령(multiple instructions)을 실행하고, 하나의 큰 "명령어 워드(instruction word)" 또는 "패킷(packet)"에 패킹(pack)하고, 간단하고 규칙적인 명령어 세트(instruction sets)를 사용한다. VLIW DSP는 명령 레벨의 병렬성(instruction-level parallelism)(ILP)을 이용하여 제어 흐름 코드(control-flow code)를 효율적으로 실행한다. 많은 기능 유닛(functional units)을 포함하는 코오스 그레인드 어레이는 높은 정도의 루프 레벨 병렬성(loop-level parallelism)(LLP)을 이용하여 데이터 흐름 루프(data-flow loops)를 가속화한다.
ADRES 템플릿은, 동일한 물리적 자원에 두 개의 기능 모드를 제공함으로써, VLIW와 코오스 그레인드 어레이를 밀접하게 결합(tightly couple)한다. 이는 고성능, 저전력 소모 및 프로그래밍의 편리성 같은 장점을 가져다 준다. 'C'와 같은 프로그래밍 언어로 작성된 어플리케이션(application)은 빠르게 ADRES 인스턴스에 매핑 할 수 있다. ADRES는 콘크리트 아키텍처(concrete architecture) 대신 템플릿이다. 아키텍쳐 익스플로레이션(architectural exploration)은 더 나은 아키텍쳐 또는 디자인 도메인 특정 아키텍쳐(design domain-specific architectures)를 발견하는 것을 가능하도록 한다.
ADRES 템플릿은 계산, 저장 및 라우팅 자원(routing resources) 등 많은 기본 구성 요소를 포함한다. 계산 리소스(computational resources)는 제어 신호에 의하여 선택된 워드-레벨 동작(word-level operations)의 집합을 실행할 수 있는 기능 유닛(FU: function unit)이다. 레지스터 파일(register files)(Rfs)과 메모리 블록(memory blocks)과 같은 데이터 저장소는 중간 데이터(intermediate data)를 저장하는데 사용될 수 있다. 라우팅 리소스(routing resources)는 전선, 멀티플렉서 및 버스 등을 포함한다. 따라서 ADRES 인스턴스는 기능 유닛(functional units) 및 레지스터 파일을 포함하고, 기능 유닛 및 레지스터 파일을 연결하는 멀티플렉서 및 버스와 같은 라우팅 리소스를 포함한다.
계산 리소스(computational resources) 및 스토리지 리소스(예를 들어, 레지스터 파일)는 ADRES 어레이의 인스턴스(instance)를 형성하기 위해 라우팅 리소스에 의하여 특정 토폴로지로 연결되어 있다. 전체 ADRES 어레이는 두 개의 기능 모드(functional mode), 즉 VLIW 프로세서 및 재구성 어레이(reconfigurable array)를 가진다. 이들의 실행은 중복되지 않기 때문에, 이 두 개의 기능 모드는 물리적 리소스(physical resources)를 공유할 수 있다. 프로세서는 VLIW 모드 또는 CGA 모드에서 동작한다. 글로벌 데이터 레지스터 파일 RF는 두 가지 모드에서 사용되고, 기능 유닛 사이에서 데이터 인터페이스(data interface)와 같은 역할을 한다.
컴파일러로 ADRES 아키텍처를 위한 어플리케이션을 컴파일하려고 할 때, 루프는 CGA을 위해 모듈로 스케줄(modulo-schedule)되고, 나머지 코드는 VLIW을 위하여 컴파일된다. 런타임에서 VLIW 모드와 CGA 모드 사이의 구조를 부드럽게(seamlessly) 스위치 함으로써, 정적으로 분할되고 및 스케줄된 어플리케이션은, 높은 수의 클록 당 명령(instructions-per-clock)(IPC)를 가지고 ADRES 인스턴스에서 실행될 수 있다.
ADRES 인스턴스의 레지스터 파일 및 기능 유닛(functional unit)의 특징, 연결(connectivity), 및 토폴로지(topology)는, 아키텍처 템플릿으로 설계할 때, 정의된다. 다중 스레드(multi-threaded) ADRES를 위해, 템플릿은, 파티션에 대한 정보를 포함하고, 또한 각 파티션이나 파티션의 조합이 유효한 ADRES 인스턴스가 되는 것을 보장하도록 확장된다. 아키텍쳐 템플릿은 컴파일러에 대해 특정 ADRES 인스턴스의 모든 측면을 정의한다.
도 3은 물리 엔진 파이프 라인을 도시한다. 물리 시뮬레이션 파이프 라인(physics simulation pipeline)에서, 병렬 충돌 감지 파이프 라인(parallel collision detection pipeline)을 포함하는 기하학적 단계(geometrical phase)가 있다. 병렬 충돌 감지 파이프 라인은 위치, 회전, 및 바디 구조(body geometries)의 속도의 정보를 얻고, 접촉 지점의 세트(set of contact points)를 생산한다. 바디들(bodies) 사이의 조인트(joints)은 일부 또는 모든 접촉 지점에 대해 생성된다. 조인트의 세트는, 바디들(bodies)에 가해지는 힘을 개발하고 이러한 힘들에 반응하여 정확한 바디의 움직임을 시뮬레이트 하기 위한 힘 계산 및 물리 시뮬레이션 단계(force computation and physical simulation stages)에 사용된다.
도면에 도시된 바와 같이, 일반적인 물리 엔진 파이프 라인(300)은, 3개의 모듈, 즉 인터그레이션 모듈(integration module)(301), 충돌 감지 모듈(collision detection module)(302), 및 충돌 해결 모듈(collision resolution module)(303)로 구성되어 있다. 인터그레이션 모듈(301)은 시뮬레이션에서 외부의 힘을 사용하여 게임에 있는 오브젝트의 방향과 위치를 업데이트한다.
충돌감지(collision detection)는 물리 시뮬레이션 파이프 라인(physics simulation pipeline)의 단계이고, 모델링된 장면(modeled scene)에서 오브젝트 사이의 접촉 지점(contact points)을 검출하는 역할을 한다. 장면의 각 오브젝트는 모양, 크기, 질량 및 위치와 같은 물리적 특성에 의하여 나타내어진다.
충돌 감지 모듈(collision detection module)(302)는, 도면에 도시된 바와 같이, 넓은 페이스(broad phase) 및 좁은 페이스(narrow phase)를 포함한다. 넓은 페이스는 관심 있는 장면에서 오브젝트의 쌍(paris of objects) 및 이들 사이의 가능한 접촉(possible contacts)을 감지한다. 오브젝트의 이러한 쌍들의 각각은 정확한 접촉 감지를 위해 좁은 페이스로 이동한다. 넓은 페이스의 목표는 좁은 페이스 분석을 위하여 오브젝트 쌍의 수를 줄이는 것이다.
충돌감지 모듈(collision detection module)(302)은 충돌하는 오브젝트의 쌍을 식별한다. 충돌감지 모듈(301)의 출력은 오브젝트 쌍에서 오브젝트 사이의 접촉 지점(contact points)이다. 각 접촉 지점은 장면(scene)에서 삼차원 좌표 및 두 개의 연관된 접촉 오브젝트(contacting objects)에 대한 포인터로 정의된다. 접촉 지점은, 모듈(303)에 도시된 바와 같이, 충돌 해결을 정확하게 수행하기 위해 도움이 되는 몇 가지 추가정보를 포함한다.
충돌 해결 모듈(collision resolution module)(303)은 충돌의 결과로써 오브젝트의 속도를 계산한다. 또한 조인트 제약(joint constraints)도 결정(resolved)된다. 조인트(joints)는 하나의 오브젝트의 움직임이 다른 것에 의해 제한되는 두 오브젝트 사이의 제약(constraint)을 나타낸다. 예를 들면, 문(door)에 있는 경첩 조인트(hinge joint)이다.
도 4는 일 실시예에 따른 예시적인 충돌 쌍(collision pairs)을 도시한다. 도면에 도시된 바와 같이 B0에서 B7까지의 오브젝트는 시뮬레이션 중이다. 도면에서 두 오브젝트 사이의 링크는 두 오브젝트가 충돌하는 것을 나타내고, 이 충돌은 충돌 해결 모듈(collision resolution module)(303)을 사용하여 해결되어야 한다.
도 5는 일 실시예에 따른 리스케줄링 및 분리 후의 충돌 쌍을 도시한다. 처음에, 본 실시예는 연속 충돌 쌍(successive collision pairs) 사이의 종속성(dependency)을 제거하기 위해 충돌 쌍을 재배열(reordering)하는 것으로 시작한다. 또한 충돌 쌍은 두 클러스터 또는 그룹으로 나누어진다. 독립 기준(independence criteria)에 따라 리스케줄 되는 충돌 쌍은 첫 번째 클러스터 또는 그룹에 보관된다. 나머지 충돌 쌍은 두 번째 클러스터 또는 그룹에 그룹화된다.
종속성을 제거함으로써, 도면에 표시된 일반 화살표가 재구성 프로세서에서의 처리를 위해 리스케줄링 된다. 일반 화살표로 연결된 이러한 오브젝트는 코오스 그레인드 어레이(CGA)에 맵핑될 수 있는 첫 번째 클러스터를 형성한다. 점선 화살표로 연결되어 있는 오브젝트는 VLIW모드에서의 실행을 위하여 두 번째 클러스터를 형성한다. 첫 번째 클러스터는 독립된 충돌 쌍을 가지고 있기 때문에, 첫 번째 클러스터에 있는 오브젝트는 루프 레벨 병렬성(loop level parallelism)을 이용함으로써 CGA모드에서 처리될 수 있다.
도 6은, 일 실시예에 따른, 재구성 프로세서에 의한 충돌 쌍의 처리순서를 도시한다. 우선, 본 실시예는, 시뮬레이션 중인 오브젝트로부터 처리의 원래 처리 순서(original order of processing)로 충돌 쌍을 얻는다. 도 4로부터 얻어진 원래의 충돌 쌍은 첫 번째 열에 표시된다. 그리고 본 실시예는 연속적인 충돌 쌍 사이에서 종속성을 제거하기 위해 충돌 쌍을 재배열(reordering)하는 것으로 시작한다. 도면에 도시된 바와 같이, 원래의 충돌 쌍으로부터 얻어진 독립 충돌 쌍은 함께 그룹화되고 클러스터 1로 지정된다. 또한 도면에 도시된 바와 같이, 원래의 충돌 쌍(original colliding pairs)으로부터 종속 충돌 쌍(dependent collision pairs)이 추출되고, 그룹화되고, 클러스터 2로 지정된다. 클러스터 2는 VLIW 모드에서 처리되고, 클러스터 1은 루프 레벨 병렬성(loop level parallelism)을 이용하여 CGA모드에서 처리된다.
도면에 도시된 바와 같이, 원래 충돌 쌍에 도시된 두 번째 충돌 쌍(B1-B3)은, 첫 번째 충돌 쌍에도 존재하는 공통의 오브젝트(B3)를 가진다. 따라서 첫 번째 충돌 쌍에 의존하는 두 번째 충돌 쌍은 제거되고, 클러스터 2로 그룹화된다. 이러한 방법으로 모든 충돌 쌍은 도면과 같이 클러스터 1에서 다시 정렬되거나 클러스터 1에서 제거된다. 그리고 클러스터 2에 추가된다. 클러스터 1을 형성하는 모든 독립 충돌 쌍(independent colliding pairs)은 CGA모드에서 처리되고, 클러스터 2에서 그룹화되는 모든 종속 충돌 쌍(dependent colliding pairs)은 VLIW모드에서 처리된다.
실시예에서 클러스터 2에서의 충돌 쌍은 종속 충돌 쌍(dependent colliding pairs)을 가질 수 있다. 클러스터 2에 대한 종속 충돌 쌍이 도면에 도시되지 않았더라도 종속 충돌 쌍은 클러스터 2에 있을 수 있다. 그리고 이러한 충돌 쌍은 재구성 프로세서에서 VLIW 모드에서 처리된다.
또한, 적절한 CGA 맵핑을 위해서는, 적어도 세 개의 연속적인 충돌 쌍이 독립적이어야 한다. 따라서, 충돌 해결을 가속화하기 위하여, 실시예는 적어도 세 개의 연속적인 충돌 쌍이 서로 독립적이 되도록 리스케줄한다. 다시 말해서 클러스터 1에서 그룹화된 적어도 세 개의 연속적인 충돌 쌍(서로 독립적임)에 대해 공통적인 오브젝트는 존재하지 않는다.
실시예는, 충돌 쌍의 대부분(서로 독립적임)이 CGA모드에서의 처리를 위해 클러스터 1로 함께 그룹화 되도록 충돌 쌍을 리스케줄한다.
도 7은 일 실시예에 따른 리스케줄링 방법을 사용한 성능 향상을 보여주는 시뮬레이션 그래프이다. 이 그래프는 재구성 프로세서(reconfigurable processor)(RP)에서 리스케줄 이전 및 이후의 충돌 해결 모듈(303)에 대한 성능 곡선을 제공한다. 또한 그래프는 재구성 프로세서가 CGA와 VLIW모드 모두에서 실행되도록 설정되었을 때 재구성 프로세서의 성능을 보여준다. 성능 곡선(performance curve)은 위에서 설명한 리스케줄링 방법을 적용하기 전과 적용한 후에 대해 재구성 프로세서에 의해 달성된 사이클 수(Y축)를 제공한다. 충돌하는 오브젝트의 수는 X축에 표시된다. 리스케줄링 방법을 사용함으로써 얻어진 재구성 프로세서의 이득은 1,000 오브젝트에 대해 1.9에서 5,000 오브젝트에 대해 2.22의 범위에 이른다. 충돌 수의 증가는 이득을 증가시킨다. 더 많은 수의 충돌 쌍 때문에 더 많은 수의 독립 충돌 쌍이 그룹화되고, CGA 모드에서 처리된다.
도 8은 일 실시예에 따라 재구성 프로세서에서 충돌 해결을 가속화하기 위한 방법 및 시스템을 구현하는 컴퓨팅 환경을 보여준다. 컴퓨팅 환경(801)은, 중앙 처리 장치(CPU: central processing unit) 및 재구성 프로세서(803)를 포함하는 적어도 하나의 프로세싱 유닛(processing unit)(804), 메모리(805), 저장 유닛(806), 복수의 네트워킹 장치(808), 및 복수의 입출력 장치(807)를 포함한다. 프로세싱 유닛(804)은 알고리즘의 명령을 실행하는 역할을 한다. 어플리케이션은 CPU(802)에서 실행하고, 물리(physics)의 계산적으로 집약적인 부분은 재구성 프로세서(803)로 떠 넘겨진다(offloaded).
전체 컴퓨팅 환경(801)은 여러 동종 및/또는 이종 코어, 다른 종류의 다중 CPU, 특별한 매체(media) 및 다른 가속기(accelerators)로 구성될 수 있다. 프로세싱 유닛(804)은 알고리즘의 명령을 처리하는 역할을 있다. 또한 복수의 프로세싱 유닛(804)은 단일 칩 또는 복수 칩 상에 위치할 수 있다.
구현(implementation)에 필요한 코드(codes) 및 명령(instructions)를 포함하는 알고리즘은 메모리 유닛(805) 또는 스토리지(806) 중 어느 하나 또는 둘 모두에 저장된다. 실행시, 명령은 해당 메모리(805) 및/또는 스토리지(806)로부터 페치(fetch)되고, 프로세싱 유닛(804)에 의해 실행된다.
하드웨어 구현에 있어서, 네트워킹 장치 및 I/O 장치를 통한 구현을 지원하기 위하여, 다양한 네트워킹 장치(808) 또는 외부 I/O 장치(807)가 컴퓨팅 환경에 연결 될 수 있다.
상기의 실시예들은, 적어도 하나의 하드웨어 장치 상에서 수행되고 구성요소들(elements)을 제어하는 네트워크 관리 기능을 수행하는 적어도 하나의 소프트웨어 프로그램에 의하여 구현될 수 있다. 도 1 내지 도 8에 도시된 구성요소들은 적어도 하나의 하드웨어 장치, 또는 하드웨어 장치 및 소프트웨어 모듈의 결합인 블록을 포함할 수 있다.
실시예들에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (11)

  1. 재구성 프로세서에서 충돌 해결을 가속화하기 위한 방법에 있어서,
    충돌 쌍 중에서 종속성을 제거하기 위하여 오브젝트로부터 상기 충돌 쌍을 리스케줄링하는 단계; 및
    코어스 그레인드 어레이 모드 및 VLIW 모드 중 적어도 하나에서의 프로세싱을 위하여 상기 충돌 쌍을 분리하는 단계
    를 포함하는 재구성 프로세서에서의 충돌 해결을 가속화하기 위한 방법.
  2. 제1항에 있어서,
    상기 충돌 쌍을 독립 클러스터 및 종속 클러스터 중 적어도 하나로 분리하는 단계
    를 더 포함하고,
    상기 종속 클러스터는,
    적어도 하나의 종속 충돌 쌍
    을 포함하는 재구성 프로세서에서의 충돌 해결을 가속화하기 위한 방법.
  3. 제2항에 있어서,
    상기 재구성 프로세서에서,
    상기 종속 클러스터는 상기 VLIW 모드에서 처리되고,
    상기 독립 클러스터는 상기 코어스 그레인드 어레이 모드에서 처리되는
    재구성 프로세서에서의 충돌 해결을 가속화하기 위한 방법.
  4. 재구성 프로세서에서 충돌 해결을 가속화하기 위한 시스템에 있어서,
    적어도 하나의 프로세서를 포함하는 집적 회로;
    상기 집적 회로 내에서 컴퓨터 프로그램을 저장하는 적어도 하나의 메모리
    를 포함하고,
    상기 적어도 하나의 프로세서, 상기 적어도 하나의 메모리 및 상기 컴퓨터 프로그램 코드는 상기 시스템이
    충돌 쌍 중에서 종속성을 제거하기 위하여 오브젝트로부터 상기 충돌 쌍을 리스케줄링하고,
    코어스 그레인드 어레이 모드 및 VLIW 모드 중 적어도 하나에서의 프로세싱을 위하여 상기 충돌 쌍을 분리하도록 하는
    재구성 프로세서에서의 충돌 해결을 가속화하기 위한 시스템.
  5. 제4항에 있어서,
    상기 충돌 쌍을 독립 클러스터 및 종속 클러스터 중 적어도 하나로 분리하고,
    상기 종속 클러스터는,
    적어도 하나의 종속 충돌 쌍
    을 포함하는 재구성 프로세서에서의 충돌 해결을 가속화하기 위한 시스템.
  6. 제5항에 있어서,
    상기 종속 클러스터는 상기 VLIW 모드에서 처리되고,
    상기 독립 클러스터는 상기 코어스 그레인드 어레이 모드에서 처리되는
    재구성 프로세서에서의 충돌 해결을 가속화하기 위한 시스템.
  7. CGA 모드 및 VLIW 모드를 지원하는 재구성 프로세서에서 충돌 해결을 위한 방법에 있어서,
    시뮬레이션 중인 오브젝트로부터 처리의 원래 처리 순서에 따라 원래의 충돌 쌍을 얻는 단계;
    상기 원래의 충돌 쌍으로부터 종속 충돌 쌍을 추출하여 제2 클러스터로 그룹핑하는 단계;
    상기 원래의 충돌 쌍으로부터 독립 충돌 쌍을 선택하여 제1 클러스터로 그룹핑하는 단계; 및
    상기 제1 클러스터의 독립 충돌 쌍은 CGA 모드에서 처리하고, 상기 제2 클러스터의 종속 충돌 쌍은 VLIW 모드에서 처리하는 단계
    를 포함하는 재구성 프로세서에서 충돌 해결을 위한 방법.
  8. 제7항에 있어서,
    상기 원래의 충돌 쌍 중 연속적인 충돌 쌍 사이의 종속성을 제거하기 위하여 상기 연속적인 충돌 쌍을 재배열하는 단계
    를 더 포함하는 재구성 프로세서에서 충돌 해결을 위한 방법.
  9. 제7항에 있어서,
    상기 제1 클러스터에서 적어도 세 개의 연속적인 충돌 쌍이 독립적인
    재구성 프로세서에서 충돌 해결을 위한 방법.
  10. 재구성 프로세서에서 충돌 해결을 위한 시스템에 있어서,
    중앙 처리 장치 및 재구성 프로세서를 포함하는 적어도 하나의 프로세싱 유닛 - 상기 재구성 프로세서는 CGA 모드 및 VLIW 모드를 지원함 -; 및
    적어도 하나의 메모리
    를 포함하고,
    상기 시스템은,
    시뮬레이션 중인 오브젝트로부터 처리의 원래 처리 순서에 따라 원래의 충돌 쌍을 얻고,
    상기 원래의 충돌 쌍으로부터 종속 충돌 쌍을 추출하여 제2 클러스터로 그룹핑하고,
    상기 원래의 충돌 쌍으로부터 독립 충돌 쌍을 선택하여 제1 클러스터로 그룹핑하고,
    상기 제1 클러스터의 독립 충돌 쌍은 CGA 모드에서 처리하고, 상기 제2 클러스터의 종속 충돌 쌍은 VLIW 모드에서 처리하는
    재구성 프로세서에서 충돌 해결을 위한 시스템.
  11. 제1항 내지 제3항 및 제7항 내지 제9항 중 어느 한 항의 방법을 수행하는 프로그램을 기록한 컴퓨터 판독 가능 기록매체.
KR1020130036484A 2012-07-19 2013-04-03 재구성 프로세서에서 충돌 해결을 가속화하기 위한 방법 및 시스템 KR102044784B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/916,884 US9098917B2 (en) 2012-07-19 2013-06-13 Method and system for accelerating collision resolution on a reconfigurable processor

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN2940CH2012 2012-07-19
IN2940/CHE/2012 2012-07-19

Publications (2)

Publication Number Publication Date
KR20140102581A true KR20140102581A (ko) 2014-08-22
KR102044784B1 KR102044784B1 (ko) 2019-11-14

Family

ID=51752226

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130036484A KR102044784B1 (ko) 2012-07-19 2013-04-03 재구성 프로세서에서 충돌 해결을 가속화하기 위한 방법 및 시스템

Country Status (1)

Country Link
KR (1) KR102044784B1 (ko)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060149516A1 (en) * 2004-12-03 2006-07-06 Andrew Bond Physics simulation apparatus and method
KR100663709B1 (ko) * 2005-12-28 2007-01-03 삼성전자주식회사 재구성 아키텍처에서의 예외 처리 방법 및 장치
KR20090045744A (ko) * 2007-11-02 2009-05-08 삼성전자주식회사 프로세서 및 인스트럭션 프로세싱 방법
KR20100089351A (ko) * 2009-02-03 2010-08-12 삼성전자주식회사 재구성 가능 어레이의 인터럽트 핸들링을 위한 컴퓨팅 장치및 방법
KR20120019329A (ko) * 2010-08-25 2012-03-06 삼성전자주식회사 프로세서, 메모리 관리 장치 및 방법
KR20120052750A (ko) * 2010-11-16 2012-05-24 삼성전자주식회사 재구성 가능 어레이의 실행 모드를 동적으로 결정하기 위한 장치 및 방법

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060149516A1 (en) * 2004-12-03 2006-07-06 Andrew Bond Physics simulation apparatus and method
KR100663709B1 (ko) * 2005-12-28 2007-01-03 삼성전자주식회사 재구성 아키텍처에서의 예외 처리 방법 및 장치
KR20090045744A (ko) * 2007-11-02 2009-05-08 삼성전자주식회사 프로세서 및 인스트럭션 프로세싱 방법
KR20100089351A (ko) * 2009-02-03 2010-08-12 삼성전자주식회사 재구성 가능 어레이의 인터럽트 핸들링을 위한 컴퓨팅 장치및 방법
KR20120019329A (ko) * 2010-08-25 2012-03-06 삼성전자주식회사 프로세서, 메모리 관리 장치 및 방법
KR20120052750A (ko) * 2010-11-16 2012-05-24 삼성전자주식회사 재구성 가능 어레이의 실행 모드를 동적으로 결정하기 위한 장치 및 방법

Also Published As

Publication number Publication date
KR102044784B1 (ko) 2019-11-14

Similar Documents

Publication Publication Date Title
CN107346351B (zh) 用于基于源代码中定义的硬件要求来设计fpga的方法和系统
Anderson et al. General purpose molecular dynamics simulations fully implemented on graphics processing units
Hermann et al. Multi-GPU and multi-CPU parallelization for interactive physics simulations
EP2710467B1 (en) Automatic kernel migration for heterogeneous cores
CN105051680B (zh) 用于在处理器内部的硬件并行执行道上处理指令的处理器及方法
US20160371081A1 (en) Dynamic computational acceleration using a heterogeneous hardware infrastructure
US20120331278A1 (en) Branch removal by data shuffling
US8725486B2 (en) Apparatus and method for simulating a reconfigurable processor
KR101715986B1 (ko) 신호 흐름이 프로그램된 디지털 신호 프로세서 코드의 효율적인 자원 관리를 위한 시스템 및 방법
Bouchhima et al. Using abstract CPU subsystem simulation model for high level HW/SW architecture exploration
US11275661B1 (en) Test generation of a distributed system
He et al. Fecaffe: Fpga-enabled caffe with opencl for deep learning training and inference on intel stratix 10
US20150379172A1 (en) Device and method for accelerating the update phase of a simulation kernel
Lanzagorta et al. Introduction to reconfigurable supercomputing
US9098917B2 (en) Method and system for accelerating collision resolution on a reconfigurable processor
Yang et al. An approach to build cycle accurate full system VLIW simulation platform
KR102044784B1 (ko) 재구성 프로세서에서 충돌 해결을 가속화하기 위한 방법 및 시스템
KR20220036950A (ko) 순수 함수 신경망 가속기 시스템 및 아키텍처
CN116724292A (zh) 线程组的并行处理
CN116830101A (zh) 基于处理资源的张量修改
Alali et al. Modeling and simulation of multiprocessor systems MPSoC by SystemC/TLM2
Bhimani et al. Design space exploration of GPU Accelerated cluster systems for optimal data transfer using PCIe bus
US11775299B1 (en) Vector clocks for highly concurrent execution engines
US11442794B1 (en) Event assignment for synchronization of concurrent execution engines
Gangrade GPU Based Acceleration of SystemC and Transaction Level Models for MPSOC Simulation

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right