KR101519825B1 - 데이터 처리 장치 및 그 제어 방법 - Google Patents

데이터 처리 장치 및 그 제어 방법 Download PDF

Info

Publication number
KR101519825B1
KR101519825B1 KR1020080123061A KR20080123061A KR101519825B1 KR 101519825 B1 KR101519825 B1 KR 101519825B1 KR 1020080123061 A KR1020080123061 A KR 1020080123061A KR 20080123061 A KR20080123061 A KR 20080123061A KR 101519825 B1 KR101519825 B1 KR 101519825B1
Authority
KR
South Korea
Prior art keywords
stream
state information
processor
stream processor
processors
Prior art date
Application number
KR1020080123061A
Other languages
English (en)
Other versions
KR20100064563A (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 KR1020080123061A priority Critical patent/KR101519825B1/ko
Priority to US12/385,265 priority patent/US8108661B2/en
Publication of KR20100064563A publication Critical patent/KR20100064563A/ko
Application granted granted Critical
Publication of KR101519825B1 publication Critical patent/KR101519825B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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/46Multiprogramming arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Image Processing (AREA)

Abstract

데이터 처리 장치 및 그 제어 방법이 개시된다. 데이터 처리 장치는 스트림 프로세서의 상태 정보에 기초하여 복수의 스트림 프로세서 중에서 하나의 스트림 프로세서를 선택하고, 선택된 스트림 프로세서로 데이터를 입력한다. 이 경우, 스트림 프로세서의 상태 정보는 프로세서 코어의 제1 상태 정보 및 내부 메모리의 제2 상태 정보를 포함한다.
스트림 프로세서, 부하 균형, 버텍스 프로세싱, 픽셀 프로세싱, 상태 정보

Description

데이터 처리 장치 및 그 제어 방법 {DATA PROCESSING DEVICE AND CONTROL METHOD OF THE SAME}
본 발명의 실시예들은 데이터 처리 장치 및 그 제어 방법에 관한 것으로서, 더욱 상세하게는 복수의 스트림 프로세서를 이용한 데이터 처리 장치에 있어서, 복수의 스트림 프로세서의 부하 균형(load balance)을 적응적(adaptive)으로 조절할 수 있는 데이터 처리 장치 및 그 제어 방법과 관련한 것이다.
스트림 프로세서(Stream Process, SP)는 오디오/비디오/그래픽 등 멀티미디어에 관한 데이터의 처리에 활용된다. 이와 관련하여 데이터 처리시의 전력 소모를 줄이고, 고성능으로 데이터를 처리하기 위하여, 복수의 스트림 프로세서를 사용하여 데이터 병렬적으로 처리하는 멀티 프로세싱(multiprocessing) 방식이 사용된다.
복수의 스트림 프로세서를 사용하여 데이터를 처리하는 경우, 데이터 처리 성능을 높이기 위하여 유휴(idle)한 스트림 프로세서가 존재하지 않도록 복수의 스트림 프로세서에 부하(load)를 균등하게 할당하는 부하 균형(Load Balancing) 기법이 사용된다.
특히, 멀티미디어 데이터를 처리하는 경우, 처리하고자 하는 데이터의 종류 및 데이터량이 시간에 따라 변할 수 있으므로, 스트림 프로세서를 구비한 데이터 처리 장치는 시간에 따라 변하는 데이터의 종류 및 데이터의 양에 적응적으로 대처하여 복수의 스트림 프로세서에 부하를 균등하게 할당할 수 있어야 한다.
본 발명의 일실시예에 따른 데이터 처리 장치는 복수의 스트림 프로세서(Stream Processor), 상기 복수의 스트림 프로세서 각각에 대하여 스트림 프로세서 상태 정보를 생성하고, 상기 스트림 프로세서 상태 정보에 기초하여 상기 복수의 스트림 프로세서 중에서 하나의 스트림 프로세서를 선택하는 선택 유닛, 및 입력 데이터를 상기 선택된 스트림 프로세서로 입력하는 데이터 관리 유닛을 포함하고, 상기 복수의 스트림 프로세서 각각은 프로세서 코어(core) 및 적어도 하나의 내부 메모리를 포함하고, 상기 스트림 프로세서 상태 정보는 상기 프로세서 코어의 제1 상태 정보 및 상기 적어도 하나의 내부 메모리 각각의 제2 상태 정보 중에서 적어도 하나를 포함한다.
이 경우, 상기 선택 유닛은 상기 선택 유닛은 상기 스트림 프로세서 상태 정보에 기초하여 상기 복수의 스트림 프로세서 각각에 대해 우선 순위를 부여하고, 상기 우선 순위에 기초하여 상기 하나의 스트림 프로세서를 선택할 수 있다.
이 경우, 상기 복수의 스트림 프로세서 각각은 2개의 내부 메모리를 포함하고, 상기 선택 유닛은 상기 제1 상태 정보가 아이들 상태 정보를 포함하고, 상기 2개의 내부 메모리 모두의 제2 상태 정보가 대기 상태 정보를 포함하는 스트림 프로세서 상태 정보를 선택하고, 상기 선택된 스트림 프로세서 상태 정보에 상응하는 적어도 하나의 스트림 프로세서에 대하여 첫번째 우선 순위를 부여할 수 있다.
또한, 상기 복수의 스트림 프로세서 각각은 2개의 내부 메모리를 포함하고, 상기 선택 유닛은 상기 제1 상태 정보가 비지 상태 정보를 포함하고, 상기 2개의 내부 메모리 중에서 어느 하나의 제2 상태 정보가 대기 상태 정보를 포함하는 스트림 프로세서 상태 정보를 선택하고, 상기 선택된 스트림 프로세서 상태 정보에 상응하는 적어도 하나의 스트림 프로세서에 대하여 두번째 우선 순위를 부여할 수 있다.
또한, 상기 복수의 스트림 프로세서 각각은 2개의 내부 메모리를 포함하고, 상기 선택 유닛은 상기 제1 상태 정보가 아이들 상태 정보를 포함하고, 상기 2개의 내부 메모리 중에서 어느 하나의 제2 상태 정보가 대기 상태 정보를 포함하는 스트림 프로세서 상태 정보를 선택하고, 상기 선택된 스트림 프로세서 상태 정보에 상응하는 적어도 하나의 스트림 프로세서에 대하여 세번째 우선 순위를 부여할 수 있다.
또한, 상기 복수의 스트림 프로세서 각각은 2개의 내부 메모리를 포함하고, 상기 선택 유닛은 상기 제1 상태 정보가 비지 상태 정보를 포함하고, 상기 2개의 내부 메모리 모두의 제2 상태 정보가 읽기/쓰기 상태 정보를 포함하는 스트림 프로세서 상태 정보를 선택하고, 상기 선택된 스트림 프로세서 상태 정보에 상응하는 적어도 하나의 스트림 프로세서에 대하여 네번째 우선 순위를 부여할 수 있다.
본 발명의 다른 일실시예에 따른 데이터 처리 장치는 복수의 스트림 프로세서, 상기 복수의 스트림 프로세서를 제1 스트림 프로세서 그룹과 제2 스트림 프로세서 그룹으로 그룹화하고, 상기 제1 스트림 프로세서 그룹에서 하나의 제1 스트림 프로세서를 선택하고, 상기 제2 스트림 프로세서 그룹에서 하나의 제2 스트림 프로 세서를 선택하는 선택 유닛, 외부 메모리로부터 독출된 제1 데이터를 제1 배치 데이터로 변환하고, 상기 제1 배치 데이터를 상기 제1 스트림 프로세서로 입력하는 제1 데이터 관리 유닛, 및 상기 제1 스트림 프로세서에서 출력된 제2 데이터를 제2 배치 데이터로 변환하고, 상기 제2 배치 데이터를 상기 제2 스트림 프로세서로 입력하는 제2 데이터 관리 유닛을 포함하고, 상기 선택 유닛은 상기 제1 데이터의 데이터량 및 상기 제2 데이터의 데이터량에 기초하여 상기 복수의 스트림 프로세서를 그룹화하고, 상기 복수의 스트림 프로세서 각각에 대하여 스트림 프로세서 상태 정보를 생성하고, 상기 스트림 프로세서 상태 정보에 기초하여 상기 제1 스트림 프로세서 및 상기 제2 스트림 프로세서를 선택한다.
또한, 본 발명의 일실시예에 따른 데이터 처리 장치의 제어 방법은 복수의 스트림 프로세서를 포함하는 데이터 처리 장치를 제어하는 방법에 있어서, 상기 복수의 스트림 프로세서 각각에 대하여 스트림 프로세서 상태 정보를 생성하는 단계, 상기 스트림 프로세서 상태 정보에 기초하여 상기 복수의 스트림 프로세서 중에서 하나의 스트림 프로세서를 선택하는 단계, 입력 데이터를 상기 선택된 스트림 프로세서로 입력하는 단계, 및 상기 선택된 스트림 프로세서에서 상기 입력 데이터를 처리하는 단계를 포함하고, 상기 복수의 스트림 프로세서 각각은 프로세서 코어(core) 및 적어도 하나의 내부 메모리를 포함하고, 상기 스트림 프로세서 상태 정보는 상기 프로세서 코어의 제1 상태 정보 및 상기 적어도 하나의 내부 메모리 각각의 제2 상태 중에서 적어도 하나를 포함할 수 있다.
본 발명의 일실시예에 따른 데이터 처리 장치는 데이터 관리 유닛에 출력 내부 메모리가 포함되지 않으므로 불필요한 비용의 소모를 줄일 수 있게 된다.
또한, 본 발명의 일실시예에 따른 데이터 처리 장치는 배치 데이터를 데이터관리 유닛의 출력 내부 메모리에 저장하지 않고 즉시 선택된 스트림 프로세서로 입력함으로써, 데이터 처리 속도를 향상시킬 수 있다.
또한, 본 발명의 일실시예에 따른 데이터 처리 장치는 적응적으로(adaptive) 부하 균형(load balance)을 조절할 수 있게 된다.
이하 첨부된 도면들 및 첨부된 도면들에 기재된 내용들을 참조하여 본 발명의 바람직한 실시예를 상세하게 설명하지만, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일실시예에 따른 데이터 처리 장치의 상세한 구성을 도시한 블록도이다.
본 발명의 일실시예에 따른 데이터 처리 장치(100)는 복수의 스트림 프로세서(110 내지 140), 선택 유닛(150), 및 데이터 관리 유닛(160)을 포함한다. 이하, 각 구성 요소 별로 그 기능을 상술하기로 한다.
복수의 스트림 프로세서(110 내지 140)는 데이터를 처리하는 기능을 수행한다.
이 때, 복수의 스트림 프로세서(110 내지 140)는 병렬 연결되어 있으므로, 복수의 스트림 프로세서(110 내지 140)은 동시에 데이터 처리를 수행할 수 있다.
또한, 복수의 스트림 프로세서(110 내지 140)는 각각 적어도 하나 이상의 내부 메모리(buffer)를 포함한다. 즉, 도 1에서는 복수의 스트림 프로세서(110 내지 140)가 각각 2개의 내부 메모리(112, 113, 122, 123, 132, 133, 142, 143)를 포함하는 것으로 도시하였으나, 복수의 스트림 프로세서는 하나의 내부 메모리를 포함할 수도 있고, 3개 이상의 내부 메모리를 포함할 수도 있다.
또한, 도 1을 통해 알 수 있듯이, 복수의 스트림 프로세서(110 내지 140)의 구조는 동일하므로, 이하에서는 복수의 스트림 프로세서(110 내지 140) 각각의 구조와, 복수의 스트림 프로세서(110 내지 140) 각각에 포함된 프로세서 코어 및 내부 메모리의 동작/상태에 관한 설명은 스트림 프로세서(110)를 참고하여 설명하기로 한다.
프로세서 코어(111)는 데이터를 처리하고, 2개의 내부 메모리(112, 113)는 데이터 관리 유닛(160)으로부터 수신한 데이터를 저장한다. 스트림 프로세서(110)는 2개의 내부 메모리(112, 113)를 포함하므로, 스트림 프로세서(110)는 더블 버퍼링(double buffering)을 이용하여 데이터를 처리할 수 있다.
선택 유닛(150)은 복수의 스트림 프로세서(110 내지 140) 각각에 대한 스트림 프로세서 상태 정보를 생성하고, 생성된 스트림 프로세서 상태 정보에 기초하여 상기 복수의 스트림 프로세서 중에서 하나의 스트림 프로세서를 선택한다.
데이터 관리 유닛(160)은 입력 데이터를 선택된 스트림 프로세서로 입력한다. 본 발명의 일실시예에 따르면, 데이터 관리 유닛(160)은 입력 데이터를 배치 데이터(batch data)로 변환하고, 변환된 배치 데이터를 선택된 스트림 프로세서로 입력할 수 있다.
복수의 스트림 프로세서를 사용하여 데이터를 처리하는 경우, 데이터 처리 성능을 높이기 위하여 유휴(idle)한 스트림 프로세서가 존재하지 않도록 복수의 스트림 프로세서에 부하(load)를 균등하게 할당하여 부하 균형(Load Balancing)을 조절하여야 하는데, 선택 유닛(150)은 복수의 스트림 프로세서(110 내지 140) 중에서 유후한 스트림 프로세서를 선택하기 위하여, 먼저, 스트림 프로세서 상태 정보를 생성하고, 생성된 스트림 프로세서 상태 정보에 기초하여 하나의 스트림 프로세서를 선택한다.
이 경우, 본 발명의 일실시예에 따르면, 선택 유닛(150)은 데이터 관리 유닛(160)이 데이터를 입력 받는 시점(이하, 제1 시점이라고 한다)에서의 스트림 프로세서 상태 정보를 이용하여 하나의 스트림 프로세서를 선택할 수 있다.
데이터 관리 유닛(160)에서 스트림 프로세서로 데이터를 입력하고자 하는 시점(이하, 제2 시점이라고 한다)에서 선택 유닛(150)이 데이터를 입력할 스트림 프로세서를 선택하는 경우, 선택 유닛(150)이 스트림 프로세서의 유후 여부를 판단하는데 소요되는 시간으로 인하여 데이터 관리 유닛(160)은 스트림 프로세서로 입력하고자 하는 데이터를 일시적으로 저장하기 위한 내부 출력 메모리를 포함하여야 한다.
그러나, 선택 유닛(150)이 제2 시점에서 하나의 스트림 프로세서를 선택하지 않고, 제1 시점에서 하나의 스트림 프로세서를 선택하는 경우, 데이터 관리 유 닛(160)은 입력받은 데이터를 저장하지 않고 스트림 프로세서로 입력할 수 있으므로, 데이터 관리 유닛(160)은 출력 내부 메모리를 필요로 하지 않는다.
즉, 데이터 관리 유닛(160)이 입력 데이터를 배치 데이터로 변환한 후, 변환된 배치 데이터를 스트림 프로세서로 입력하는 경우를 예로 들면, 선택 유닛(150)이 제2 시점에서 하나의 스트림 프로세서를 선택하는 경우, 데이터 관리 유닛(160)은 선택 유닛(150)이 하나의 스트림 프로세서를 선택하는데 소요되는 시간 동안 변환된 배치 데이터를 저장하고 있어야 하므로, 출력 내부 메모리가 필요하게 된다. 그러나, 선택 유닛(150)이 제2 시점에서의 스트림 프로세서의 상태를 제1 시점에서 미리 예측하고, 예측된 결과에 따라서 미리 하나의 스트림 프로세서를 선택한다면, 데이터 관리 유닛(160)은 변환된 배치 데이터를 저장하지 않고, 즉시 선택된 스트림 프로세서로 입력할 수 있게 된다.
따라서, 선택 유닛(150)이 예측된 스트림 프로세서의 상태에 기초하여 미리 하나의 스트림 프로세서를 선택하는 경우, 데이터 관리 유닛(160)은 출력 내부 메모리를 필요로 하지 않으므로, 불필요한 비용의 소모를 줄일 수 있게 된다. 또한, 데이터 관리 유닛(160)은 배치 데이터를 출력 내부 메모리에 저장하지 않고 즉시 선택된 스트림 프로세서로 입력할 수 있으므로, 데이터 처리 속도가 향상된다.
본 발명의 일실시예에 따르면, 데이터 처리 장치(100)은 3차원 입체 영상의 생성과 관련된 데이터 처리 작업에 사용될 수 있다.
이 경우, 본 발명의 일실시예에 따르면, 입력 데이터는 버텍스(vertex) 데이터이고, 버텍스 데이터를 입력받은 스트림 프로세서는 버텍스 프로세싱을 수행할 수 있다.
즉, 데이터 관리 유닛(160)은 외부 메모리로부터 버텍스 데이터를 독출하고, 상기 독출된 버텍스 데이터를 복수의 스트림 프로세서(110 내지 140) 중에서 하나의 스트림 프로세서로 입력할 수 있다. 이 경우, 버텍스 세이더 커널(vertex shader kernel)이 스트림 프로세서에 매핑되고, 스트림 프로세서는 버텍스 세이더(vertex shader)의 역할을 수행하게 된다.
이 때, 데이터 관리 유닛(160)은 외부 메모리로부터 독출한 버텍스 데이터를 버텍스 배치 데이터로 변환하고, 변환된 버텍스 배치 데이터를 하나의 스트림 프로세서로 입력할 수 있다.
또한, 본 발명의 일실시예에 따르면, 입력 데이터는 프레그먼트(fragment) 데이터이고, 프레그먼트 데이터를 입력받은 스트림 프로세서는 픽셀(pixel) 프로세싱을 수행할 수 있다.
즉, 데이터 관리 유닛(160)은 버텍스 세이더에서 프로세싱된 버텍스 데이터를 입력받고, 이를 하나의 스트림 프로세서로 입력할 수 있다. 이 경우, 픽셀 세이더 커널(pixel shader kernel)이 스트림 프로세서에 매핑되고, 스트림 프로세서는 픽셀 세이더(pixel shader)의 역할을 수행하게 된다.
이 때, 데이터 관리 유닛(160)은 프로세싱된 버텍스 데이터를 배치 데이터로 변환하여, 프레그먼트 배치 데이터로 변환하고, 상기 변환된 프레그먼트 배치 데이터를 하나의 스트림 프로세서로 입력할 수 있다.
이하에서는, 하나의 스트림 프로세서를 선택하기 위하여 필요한 스트림 프 로세서 상태 정보에 대하여 보다 상세히 설명하기로 한다.
스트림 프로세서 상태 정보는 프로세서 코어(111)의 상태 정보인 제1 상태 정보 및 내부 메모리(112)와 내부 메모리(113)의 상태 정보인 제2 상태 정보를 포함한다. 이하에서는 스트림 프로세서 상태 정보가 제1 상태 정보 및 제2 상태 정보를 포함하는 것으로 서술하지만, 본 발명은 이에 한정되지 않는다. 이를 테면 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면, 스트림 프로세서 상태 정보가 제1 상태 정보 및 제2 상태 정보 중에서 어느 하나를 포함할 수 있음을 알 수 있다.
본 발명의 일실시예에 따르면, 제1 상태 정보는 비지(BUSY) 상태 정보 및 아이들(IDLE) 상태 정보 중에서 어느 하나를 포함할 수 있다.
즉, 프로세서 코어(111)가 데이터 처리 작업을 수행하고 있는 것으로 판단된 경우(즉, 프로세서 코어(111)가 비지 상태인 경우), 프로세서 코어(111)의 제1 상태 정보는 비지 상태 정보를 포함한다. 반대로, 프로세서 코어(111)가 데이터 처리 작업을 수행하지 않고 있는 경우(즉, 프로세서 코어(111)가 아이들 상태인 경우), 프로세서 코어(111)의 제1 상태 정보는 아이들 상태 정보를 포함한다. 일례로서, 제1 상태 정보는 하나의 비트(bit)로 표현될 수 있고, 이 경우, 비지 상태 정보는 "1"로 표현되고, 아이들 상태 정보는 "0"으로 표현될 수 있다.
또한, 본 발명의 일실시예에 따르면, 제2 상태 정보는 읽기/쓰기 상태 정보 및 대기 상태 정보 중에서 어느 하나를 포함할 수 있다.
즉, 내부 메모리(112)에 데이터가 기록되거나, 내부 메모리(112)에서 데이 터가 독출되는 경우, 내부 메모리(112)의 제2 상태 정보는 읽기/쓰기 상태 정보를 포함한다. 반대로, 내부 메모리(112)가 대기 상태에 있는 경우, 내부 메모리(112)의 제2 상태 정보는 대기 상태 정보를 포함한다. 일례로서, 제2 상태 정보 역시 하나의 비트(bit)로 표현될 수 있고, 이 경우, 읽기/쓰기 상태 정보는 "1"로 표현되고, 대기 상태 정보는 "0"으로 표현될 수 있다.
선택 유닛(150)은 상기 설명한 제1 상태 정보 및 제2 상태 정보를 포함하는 스트림 프로세서 상태 정보를 이용하여 복수의 스트림 프로세서(110 내지 140) 중에서 하나의 스트림 프로세서를 선택한다.
본 발명의 일실시예에 따르면, 선택 유닛(150)은 스트림 프로세서의 상태 정보에 기초하여 복수의 스트림 프로세서 각각에 대하여 우선 순위(priority)를 부여하고, 부여된 우선 순위에 기초하여 복수의 스트림 프로세서(110 내지 140) 중에서 하나의 스트림 프로세서를 선택할 수 있다.
이 경우, 본 발명의 일실시예에 따르면, 선택 유닛(150)은 프로세서 코어의 제1 상태 정보가 아이들 상태 정보를 포함하고, 2개의 내부 메모리 모두의 제2 상태 정보가 대기 상태 정보를 포함하는 스트림 프로세서 상태 정보를 선택하고, 선택된 스트림 프로세서 상태 정보에 상응하는 적어도 하나의 스트림 프로세서에 대하여 첫번째 우선 순위를 부여할 수 있다.
또한, 본 발명의 일실시예에 따르면, 선택 유닛(150)은 프로세서 코어의 제1 상태 정보가 비지 상태 정보를 포함하고, 2개의 내부 메모리 중에서 어느 하나의 제2 상태 정보가 대기 상태 정보를 포함하는 스트림 프로세서 상태 정보를 선택하 고, 선택된 스트림 프로세서 상태 정보에 상응하는 적어도 하나의 스트림 프로세서에 대하여 두번째 우선 순위를 부여할 수 있다.
또한, 본 발명의 일실시예에 따르면, 선택 유닛(150)은 상기 제1 상태 정보가 아이들 상태 정보를 포함하고, 2개의 내부 메모리 중에서 어느 하나의 제2 상태 정보가 대기 상태 정보를 포함하는 스트림 프로세서 상태 정보를 선택하고, 선택된 스트림 프로세서 상태 정보에 상응하는 적어도 하나의 스트림 프로세서에 대하여 세번째 우선 순위를 부여할 수 있다.
또한, 본 발명의 일실시예에 따르면, 선택 유닛(150)은 프로세서 코어의 제1 상태 정보가 비지 상태 정보를 포함하고, 2개의 내부 메모리 모두의 제2 상태 정보가 읽기/쓰기 상태 정보를 포함하는 스트림 프로세서 상태 정보를 선택하고, 선택된 스트림 프로세서 상태 정보에 상응하는 적어도 하나의 스트림 프로세서에 대하여 네번째 우선 순위를 부여할 수 있다.
이하에서는 [표 1]을 참고하여, 선택 유닛(150)이 제1 상태 정보 및 제2 상태 정보에 기초하여 복수의 스트림 프로세서(110 내지 140) 각각에 대하여 우선 순위를 부여하는 동작을 상세히 설명하기로 한다.
[표 1]
제1 상태 정보 제2 상태 정보 우선 순위
0 0 0 1
0 0 1 3
0 1 0
0 1 1 우선 순위
없음
1 0 0
1 0 1 2
1 1 0
1 1 1 4
[표 1]에서는 스트림 프로세서가 프로세서 코어와 2개의 내부 메모리를 포함하는 경우의 가능한 스트림 프로세서 상태 정보의 조합을 도시하고 있다.
여기서, 제1 상태 정보 및 제2 상태 정보는 하나의 비트(bit)로 표현된다고 가정한다.
따라서, 상기 언급한 바와 같이, 제1 상태 정보가 "1"의 값을 갖는 경우, 프로세서 코어는 비지 상태에 있고, 제1 상태 정보가 "0"의 값을 갖는 경우, 프로세서 코어는 아이들 상태에 있는 것으로 가정한다.
마찬가지로, 제2 상태 정보가 "1"의 값을 갖는 경우, 내부 메모리는 읽기/쓰기 상태에 있고, 제2 상태 정보가 "0"의 값을 갖는 경우, 내부 메모리는 대기 상태에 있는 것으로 가정한다.
또한, [표 1]에 나타난 스트림 프로세서 상태 정보를 제2 상태 정보의 조합을 [프로세서 코어의 제1 상태 정보, 첫번째 내부 메모리의 제2 상태 정보, 두번째 내부 메모리의 제2 상태 정보]로 표시하기로 한다. 예를 들어 프로세서 코어의 제1 상태 정보가 "1"의 값을 갖고, 첫번째 내부 메모리의 제2 상태 정보가 "0"의 값을 갖고, 두번째 내부 메모리의 제2 상태 정보가 "1"의 값을 갖는 경우, 스트림 프 로세서 상태 정보를 [1, 0, 1]로 표시한다.
또한, 상기 언급한 바와 같이, [표 1]에 나타난 스트림 프로세서 상태 정보는 제1 시점에서의 스트림 프로세서의 상태에 관한 정보를 나타낸다.
첫번째 경우로서, 스트림 프로세서 상태 정보가 [0, 0, 0]인 경우, 프로세서 코어는 아이들 상태에 있고, 2개의 내부 메모리 모두가 대기 상태에 있으므로, 상기 스트림 프로세서 상태 정보와 대응되는 스트림 프로세서는 제2 시점 전후에서 데이터 처리 작업을 수행하지 않을 가능성이 가장 높다고 할 수 있다. 따라서, 선택 유닛(150)은 [0, 0, 0]의 스트림 프로세서 상태 정보를 갖는 스트림 프로세서에 대하여 첫번째 우선 순위를 부여할 수 있다.
두번째 경우로서, 스트림 프로세서 상태 정보가 [1, 1, 0] 또는 [1, 0, 1]인 경우, 프로세서 코어는 비지 상태에 있고, 2개의 내부 메모리 중에서 어느 하나의 메모리는 읽기/쓰기 상태에 있다. 이 경우, 프로세서 코어가 비지 상태에 있으므로, 2개의 내부 메모리 중에서 어느 하나에 내부 메모리에 데이터가 독출되는 것으로 볼 수 있다. 따라서 보다 정확하게는 2개의 내부 메모리 중에서 어느 하나의 내부 메모리는 읽기 상태에 있다.
이 때, 프로세서 코어는 2개의 내부 메모리 중에서 어느 하나의 내부 메모리로부터 데이터를 독출하여 처리하고 있고, 다른 하나의 내부 메모리에는 데이터가 존재하지 않으므로, [1, 1, 0] 또는 [1, 0, 1]의 스트림 프로세서 상태 정보를 갖는 스트림 프로세서는 제2 시점 전후에서 데이터 처리 작업을 수행하지 않을 가능성이 높다. 그러나, 이 경우, 첫번째 경우보다는 스트림 프로세서가 데이터 처 리 작업을 수행하지 않을 가능성이 낮으므로, 선택 유닛(150)은 [1, 1, 0] 또는 [1, 0, 1]의 스트림 프로세서 상태 정보를 갖는 스트림 프로세서에 대하여 두번째 우선 순위를 부여할 수 있다.
세번째 경우로서, 스트림 프로세서 상태 정보가 [0, 1, 0] 또는 [0, 0, 1]인 경우, 프로세서 코어는 아이들 상태에 있고, 2개의 내부 메모리 중에서 어느 하나의 메모리는 읽기/쓰기 상태에 있다. 이 경우, 프로세서 코어가 아이들 상태에 있으므로, 2개의 내부 메모리 중에서 어느 하나에 내부 메모리에 데이터가 기록되는 것으로 볼 수 있다. 따라서 보다 정확하게는 2개의 내부 메모리 중에서 어느 하나의 내부 메모리는 쓰기 상태에 있다.
이 때, 프로세서 코어는 데이터를 처리하지 않고 있고, 2개의 내부 메모리 중에서 하나의 내부 메모리는 데이터를 기록하고 있으므로, [0, 1, 0] 또는 [0, 0, 1]의 스트림 프로세서 상태 정보를 갖는 스트림 프로세서는 제2 시점 전후에서 데이터 처리 작업을 수행할 가능성이 높다. 하지만, 아래에서 설명하는 네번째 경우와는 달리, 2개의 내부 메모리 중에서 하나의 내부 메모리에는 데이터가 존재하지 않으므로, 이 경우에는 데이터 관리 유닛(160)으로부터 데이터를 입력 받을 여분의 공간이 존재한다. 따라서, 선택 유닛(150)은 [0, 1, 0] 또는 [0, 0, 1]의 스트림 프로세서 상태 정보를 갖는 스트림 프로세서에 대하여 세번째 우선 순위를 부여할 수 있다.
네번째 경우로서, 스트림 프로세서 상태 정보가 [1, 1, 1]인 경우, 프로세서 코어는 비지 상태에 있고, 2개의 내부 메모리 모두는 읽기/쓰기 상태에 있다. 이 경우, 프로세서 코어가 비지 상태에 있으므로, 2개의 내부 메모리 중에서 어느 하나에 내부 메모리에는 데이터가 기록되고, 다른 하나의 내부 메모리에서는 데이터가 독출되는 것으로 볼 수 있다. 따라서 보다 정확하게는 2개의 내부 메모리 중에서 어느 하나의 내부 메모리는 쓰기 상태에 있고, 다른 하나의 내부 메모리는 읽기 상태에 있다.
이 때, 프로세서 코어는 데이터를 처리하고 있고, 2개의 내부 메모리 중에서 하나의 내부 메모리에서는 데이터가 독출되고 있으므로, [1, 1, 1]의 스트림 프로세서 상태 정보를 갖는 스트림 프로세서가 제2 시점 전후에서 데이터 처리 작업을 수행할 가능성은 세번째 경우와 비슷하다고 할 수 있다. 하지만, 세번째 경우와는 달리, 2개의 내부 메모리 모두에 데이터가 기록되거나 독출되고 있으므로, 데이터 관리 유닛(160)으로부터 데이터를 입력 받을 여분의 공간이 존재하지 않는다. 따라서, 선택 유닛(150)은 [1, 1, 1]의 스트림 프로세서 상태 정보를 갖는 스트림 프로세서에 대하여 네번째 우선 순위를 부여할 수 있다.
마지막 경우로서, 스트림 프로세서 상태 정보가 [1, 0, 0]인 경우, 프로세서 코어는 비지 상태에 있으나, 2개의 내부 메모리 모두가 대기 상태에 있으므로, 이러한 경우는 존재하지 않는다. 마찬가지로, 스트림 프로세서 상태 정보가 [0, 1, 1]인 경우, 프로세서 코어는 아이들 상태에 있으나, 2개의 내부 메모리 모두는 읽기/쓰기 상태에 있으므로, 이러한 경우도 존재하지 않는다.
선택 유닛(150)이 상기에서 설명한 바와 같이 복수의 스트림 프로세서 각각에 대하여 우선 순위를 부여하는 경우, 선택 유닛(150)은 우선 순위가 높은 순서에 따라서 스트림 프로세서를 선택하고, 데이터 관리 유닛(160)은 선택된 스트림 프로세서로 데이터를 입력한다.
만약, 동일한 우선 순위를 가지는 스트림 프로세서가 복수개인 경우, 선택 유닛(150)은 동일한 우선 순위를 가지는 복수의 스트림 프로세서 중에서 임의로 하나의 스트림 프로세서를 선택할 수 있다.
이에 따라, 선택 유닛(150)은 제2 시점 전후에서의 스트림 프로세서의 상태 예측의 정확성을 높일 수 있게 된다.
이하, 도 2를 참고하여 본 발명의 일실시예에 따른 선택 유닛(150)의 구성을 보다 자세히 설명하기로 한다.
도 2는 본 발명의 일실시예에 따른 선택 유닛의 상세한 구성을 도시한 블록도이다.
이 때, 도 2에서는 스트림 프로세서(SP)가 2개의 내부 메모리(B1, B2)를 포함하는 것으로 가정하였다.
선택 유닛(150)은 제1 레지스터(register)(210) 및 제2 레지스터(220)를 포함하여 구성된다.
제1 레지스터에는 제1 상태 정보가 저장되고, 제2 레지스터에는 제2 상태 정보가 저장된다.
상기 언급한 바와 같이, 제1 상태 정보 및 제2 상태 정보는 하나의 비트로 표현될 수 있으므로, 제1 레지스터(210) 및 제2 레지스터(220)은 "0" 또는 "1"을 저장한다.
본 발명의 일실시예에 따르면, 선택 유닛(150)은 데이터 관리 유닛(160)과 대응되는 하나의 제1 레디 큐(Ready-Queue)(미도시) 및 복수의 스트림 프로세서(110 내지 140)와 각각 대응되는 복수의 제2 레디 큐(미도시)를 더 포함할 수 있다.
제1 레디 큐(미도시)는 데이터 관리 유닛(160)에서 출력되는 데이터를 입력받을 스트림 프로세서의 색인 정보를 저장한다. 이 때 데이터 관리 유닛(160)에서는 순차적으로 데이터를 출력하므로, 제1 레디 큐(미도시)는 출력 순서에 따라 복수의 스트림 프로세서의 색인 정보를 저장한다.
제2 레디 큐(미도시)는 데이터 관리 유닛(160)으로부터 입력되는 데이터를 스트림 프로세서에 포함된 적어도 하나의 내부 메모리 중에서 어느 내부 메모리에 저장할지에 대한 정보를 저장한다.
도 3은 본 발명의 다른 일실시예에 따른 데이터 처리 장치의 상세한 구성을 도시한 블록도이다.
본 발명의 일실시예에 따른 데이터 처리 장치(300)는 복수의 스트림 프로세서(310 내지 340), 선택 유닛(350), 및 제1 데이터 관리 유닛(360) 및 제2 데이터 관리 유닛(370)을 포함한다. 이하, 각 구성 요소 별로 그 기능을 상술하기로 한다.
복수의 스트림 프로세서(310 내지 340)은 데이터를 처리하는 기능을 수행한다.
이 때, 복수의 스트림 프로세서(310 내지 340)는 병렬 연결되어 있으므로, 복수의 스트림 프로세서(310 내지 340)은 동시에 데이터 처리를 수행할 수 있다.
또한, 복수의 스트림 프로세서(310 내지 340)은 각각 적어도 하나 이상의 내부 메모리를 포함한다. 즉, 도 3에서는 복수의 스트림 프로세서(310 내지 340)가 각각 4개의 내부 메모리(312, 313, 314, 315, 322, 323, 324, 325, 332, 333, 334, 335, 342, 343, 344, 345)를 포함하는 것으로 도시하였으나, 복수의 스트림 프로세서 각각에 포함되는 내부 메모리의 수는 변경될 수 있다.
선택 유닛(350)은 복수의 스트림 프로세서를 제1 스트림 프로세서 그룹과 제2 스트림 프로세서 그룹으로 그룹화하고, 제1 스트림 프로세서 그룹에서 하나의 제1 스트림 프로세서를 선택하고, 제2 스트림 프로세서 그룹에서 하나의 제2 스트림 프로세서를 선택한다.
제1 스트림 프로세서와 제2 스트림 프로세서는 서로 다른 데이터 처리 작업을 수행한다. 일례로서, 제1 스트림 프로세서는 버텍스 프로세싱을 수행하고, 제2 스트림 프로세서는 픽셀 프로세싱을 수행할 수 있다.
이하에서는 제1 스트림 프로세서가 버텍스 프로세싱을 수행하고, 제2 스트림 프로세서가 픽셀 프로세싱을 수행하는 것으로 서술하지만, 본 발명은 이에 한정되지 않는다. 이를 테면 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면, 제1 스트림 프로세서와 제2 스트림 프로세서가 각각 버텍스 프로세싱 및 픽셀 프로세싱 외에 다른 프로세싱을 수행할 수 있음을 알 수 있다.
복수의 스트림 프로세서(310 내지 340)를 이용하여 버텍스 프로세싱과 픽셀 프로세싱을 모두 수행하는 경우, 일부의 스트림 프로세서는 버텍스 세이더로서 사 용될 수 있고, 다른 일부의 스트림 프로세서는 픽셀 세이더로서 사용될 수 있다.
이 때, 스트림 프로세서(310)에 포함된 4개의 내부 메모리 중에서 2개의 내부 메모리(312, 313)는 스트림 프로세서(310)가 버텍스 세이더로서의 역할을 수행하는 경우에 사용되고, 나머지 2개의 내부 메모리(314, 315)는 스트림 프로세서(310)가 픽셀 세이더로서의 역할을 수행하는 경우에 사용되는 것으로 가정한다.
복수의 스트림 프로세서를 이용하여 버텍스 프로세싱과 픽셀 프로세싱을 수행하는 경우에 있어서, 버텍스 세이더로서 사용할 제1 스트림 프로세서의 수와 픽셀 세이더로서 사용할 제2 스트림 프로세서의 수를 적절히 조절한다면, 버텍스 프로세싱 및 픽셀 프로세싱시 발생하는 병목(bottleneck) 현상을 해결하여 빠른 속도로 데이터를 처리할 수 있게 된다.
따라서, 선택 유닛(350)은 복수의 스트림 프로세서(310 내지 340)를 버텍스 세이더로서 사용할 제1 스트림 프로세서 그룹과 픽셀 세이더로서 사용할 제2 스트림 프로세서 그룹으로 그룹핑하는 기능을 수행한다.
이 경우, 선택 유닛(350)은 버텍스 프로세싱을 수행할 데이터(이하, 제1 데이터라고 한다)의 제1 데이터량과 픽셀 프로세싱을 수행할 데이터(이하, 제2 데이터라고 한다)의 제2 데이터량을 비교하여 제1 스트림 프로세서 그룹에 포함되는 제1 스트림 프로세서의 수 및 제2 스트림 프로세서 그룹에 포함되는 제2 스트림 프로세서의 수를 결정하여 복수의 스트림 프로세서(310 내지 340)를 그룹화한다.
즉, 제1 데이터량이 제2 데이터량보다 많은 경우, 복수의 스트림 프로세 서(310 내지 340) 중에서 제1 스트림 프로세서 수의 비율을 높이고, 반대로 제2 데이터량이 제1 데이터량보다 많은 경우, 복수의 스트림 프로세서(310 내지 340) 중에서 제2 스트림 프로세서 수의 비율을 높여 복수의 스트림 프로세서를 그룹화할 수 있다(이하에서는 선택 유닛(350)이 스트림 프로세서(310) 및 스트림 프로세서(320)를 제1 스트림 프로세서 그룹으로 그룹화하고, 스트림 프로세서(330) 및 스트림 프로세서(340)을 제2 스트림 프로세서 그룹으로 그룹화하는 것으로 가정한다).
복수의 스트림 프로세서를 제1 스트림 프로세서 그룹 및 제2 스트림 프로세서로 그룹화한 후, 선택 유닛(350)은 제1 스트림 프로세서 그룹에서 하나의 제1 스트림 프로세서를 선택한다(이하에서는 스트림 프로세서(310)가 제1 스트림 프로세서로 선택된 것으로 가정한다).
이 경우, 선택 유닛(350)은 프로세서 코어(311)의 제1 상태 정보 및 2개의 내부 메모리(312, 313)의 제2 상태 정보를 이용하여 하나의 제1 스트림 프로세서(310)를 선택할 수 있다.
제1 데이터 관리 유닛(360)은 외부 메모리로부터 독출된 제1 데이터를 제1 배치 데이터로 변환하고, 변환된 제1 배치 데이터를 선택된 제1 스트림 프로세서(310)로 입력한다. 이 경우, 제1 데이터는 버텍스 데이터이고, 제1 데이터 관리 유닛(360)은 배치 관리 유닛(Batch Management Unit)이다.
제1 스트림 프로세서는 제1 배치 데이터를 프로세싱하여 제2 데이터를 출력한다. 출력된 제2 데이터를 제2 데이터 관리 유닛(370)으로 입력된다.
이 때, 선택 유닛(350)은 제2 스트림 프로세서 그룹에서 하나의 제2 스트림 프로세서를 선택한다(이하에서는 스트림 프로세서(330)이 제2 스트림 프로세서로 선택된 것으로 가정한다).
이 경우, 선택 유닛(350)은 프로세서 코어(331)의 제1 상태 정보 및 2개의 내부 메모리(334, 335)의 제2 상태 정보를 이용하여 하나의 제2 스트림 프로세서(330)를 선택할 수 있다. 선택 유닛(350)이 제1 스트림 프로세서(310) 및 제2 스트림 프로세서(330)를 선택하는 동작은 도 1의 선택 유닛(150)이 하나의 스트림 프로세서를 선택하는 동작과 대응되므로, 이에 대한 상세한 설명은 생략한다.
제2 데이터 관리 유닛(370)은 입력된 제2 데이터를 제2 배치 데이터로 변환하고, 변환된 제2 배치 데이터를 선택된 제2 스트림 프로세서(330)로 입력한다. 이 경우, 제2 배치 데이터는 프레그먼트 데이터이고, 제2 데이터 관리 유닛(370)은 프레그먼트 제너레이터(Fragment Generator)이다.
출력된 제2 데이터를 입력 받은 제2 스트림 프로세서(330)에서 프로세싱된 프레그먼트 데이터는 래스터 오퍼레이터(Raster Operator)(미도시)로 입력된다. 래스터 오퍼레이터(미도시)에서는 프로세싱된 프레그먼트 데이터에 대하여 깊이 테스트(depth test), 스텐실 테스트(stencil test), 및 알파 테스트(alpha test) 등을 수행하고, 블렌딩(blending) 등을 수행하여 3차원 입체 영상을 생성한다.
이에 따라, 본 발명의 일실시예에 따른 데이터 처리 장치(300)는 버텍스 프로세싱 및 픽셀 프로세싱시 발생하는 병목(bottleneck) 현상을 해결하여 빠른 속도로 데이터를 처리할 수 있게 된다.
또한, 본 발명의 일실시예에 다른 데이터 처리 장치(300)는 예측된 스트림 프로세서의 상태에 기초하여 미리 하나의 제1 스트림 프로세서 및 하나의 제2 스트림 프로세서를 예측하여 선택하고, 선택된 제1 스트림 프로세서 및 제2 스트림 프로세서로 데이터를 딜레이 없이 입력함으로써 데이터 처리 속도를 향상시킬 수 있게 된다.
이하에서는 도 4를 참고하여 본 발명의 일실시예에 따른 선택 유닛(150)의 구성을 보다 자세히 설명하기로 한다.
도 4는 본 발명의 다른 일실시예에 따른 선택 유닛의 상세한 구성을 도시한 블록도이다.
이 때, 도 4에서는 스트림 프로세서(SP)가 4개의 내부 메모리(B1, B2, B3, B4)를 포함하는 것으로 가정하였다. 또한, 4개의 내부 메모리(B1, B2, B3, B4) 중에서 2개의 내부 메모리(B1, B2)는 스트림 프로세서(SP)가 버텍스 프로세싱을 수행하는 경우에 사용되고, 나머지 2개의 내부 메모리(B3, B4)는 스트림 프로세서(SP)가 픽셀 프로세싱을 수행하는 경우에 사용된다.
선택 유닛(350)은 제1 레지스터(register)(410) 및 제2 레지스터(420)를 포함하여 구성된다.
제1 레지스터에는 제1 상태 정보가 저장되고, 제2 레지스터에는 제2 상태 정보가 저장된다.
제1 상태 정보 및 제2 상태 정보는 하나의 비트로 표현될 수 있으므로, 제1 레지스터(410) 및 제2 레지스터(420)은 "0" 또는 "1"을 저장한다.
본 발명의 일실시예에 따르면, 선택 유닛(350)은 제1 데이터 관리 유닛(360)과 대응되는 하나의 제1 레디 큐(미도시), 복수의 스트림 프로세서(310 내지 340)와 각각 대응되는 복수의 제2 레디 큐(미도시), 제2 데이터 관리 유닛(370)과 대응되는 하나의 제3 레디 큐(Ready-Queue)(미도시)를 더 포함할 수 있다.
제1 레디 큐(미도시)는 제1 데이터 관리 유닛(360)에서 출력되는 데이터를 입력받을 제1 스트림 프로세서의 색인 정보를 저장한다. 이 때 제1 데이터 관리 유닛(360)에서는 순차적으로 데이터를 출력하므로, 제1 레디 큐(미도시)는 출력 순서에 따라 복수의 제1 스트림 프로세서의 색인 정보를 저장한다.
제3 레디 큐(미도시)는 제2 데이터 관리 유닛(370)에서 출력되는 데이터를 입력받을 제2 스트림 프로세서의 색인 정보를 저장한다. 이 때 제2 데이터 관리 유닛(370)에서는 순차적으로 데이터를 출력하므로, 제3 레디 큐(미도시)는 출력 순서에 따라 복수의 제2 스트림 프로세서의 색인 정보를 저장한다.
제2 레디 큐(미도시)는 제1 데이터 관리 유닛(360) 및 제2 데이터 관리 유닛(370)으로부터 입력되는 데이터를 스트림 프로세서에 포함된 적어도 하나의 내부 메모리 중에서 어느 내부 메모리에 저장할지에 대한 정보 및 상기 입력 데이터가 제1 배치 데이터인지 제2 배치 데이터인지에 대한 정보를 매칭하여 저장한다.
도 5는 본 발명의 일실시예에 따른 데이터 처리 장치의 제어 방법의 흐름도를 도시한 도면이다.
먼저, 단계(S510)에서는 복수의 스트림 프로세서 각각에 대하여 스트림 프로세서 상태 정보를 생성한다.
이 때, 스트림 프로세서는 프로세서 코어와 적어도 하나의 내부 메모리를 포함하므로, 단계(S510)에서 생성되는 스트림 프로세서 상태 정보는 프로세서 코어의 상태 정보인 제1 상태 정보 및 내부 메모리에 대한 상태 정보인 제2 상태 정보를 포함한다.
단계(S520)에서는 스트림 프로세서의 상태 정보에 기초하여 복수의 스트림 프로세서 중에서 하나의 스트림 프로세서를 선택한다.
단계(S510) 및 단계(S520)은 복수의 스트림 프로세서 중에서 유후한 스트림 프로세서를 선택하기 위한 것으로서, 이는 복수의 스트림 프로세서를 사용하여 데이터를 처리하는 방법에 있어서, 복수의 스트림 프로세서의 부하 균형을 조절하기 위하여 수행되는 단계이다.
본 발명의 일실시예에 따르면, 제1 상태 정보는 비지 상태 정보 및 아이들 상태 정보 중에서 어느 하나를 포함할 수 있다.
즉, 프로세서 코어가 비지 상태인 경우 제1 상태 정보는 비지 상태 정보를 포함하고, 프로세서 코어가 아이들 상태인 경우 제1 상태 정보는 아이들 상태 정보를 포함한다.
또한, 본 발명의 일실시예에 따르면, 제2 상태 정보는 읽기/쓰기 상태 정보 및 대기 상태 정보 중에서 어느 하나를 포함할 수 있다.
즉, 내부 메모리가 읽기/쓰기 상태에 있는 경우, 제2 상태 정보는 읽기/쓰기 상태 정보를 포함하고, 내부 메모리가 대기 상태에 있는 경우, 제2 상태 정보는 대기 상태 정보를 포함한다.
본 발명의 일실시예에 따르면, 단계(S520)은 스트림 프로세서의 상태 정보에 기초하여 복수의 스트림 프로세서 각각에 대하여 우선 순위를 부여하는 단계(미도시)를 포함한다. 이 경우, 단계(S520)에서는 부여된 우선 순위에 기초하여 복수의 스트림 프로세서 중에서 하나의 스트림 프로세서를 선택한다.
이하에서는 스트림 프로세서에 2개의 내부 메모리가 포함된 경우, 단계(S520)에서 복수의 스트림 프로세서 각각에 대하여 우선 순위를 부여하는 방법을 상세히 설명한다.
본 발명의 일실시예에 따르면, 단계(S520)에서는 프로세서 코어의 제1 상태 정보가 아이들 상태 정보를 포함하고, 2개의 내부 메모리 모두의 제2 상태 정보가 대기 상태 정보를 포함하는 스트림 프로세서 상태 정보를 선택하고, 선택된 스트림 프로세서 상태 정보에 상응하는 적어도 하나의 스트림 프로세서에 대하여 첫번째 우선 순위를 부여할 수 있다.
또한, 본 발명의 일실시예에 따르면, 단계(S520)에서는 프로세서 코어의 제1 상태 정보가 비지 상태 정보를 포함하고, 2개의 내부 메모리 중에서 어느 하나의 제2 상태 정보가 대기 상태 정보를 포함하는 스트림 프로세서 상태 정보를 선택하고, 선택된 스트림 프로세서 상태 정보에 상응하는 적어도 하나의 스트림 프로세서에 대하여 두번째 우선 순위를 부여할 수 있다.
또한, 본 발명의 일실시예에 따르면, 단계(S520)에서는 상기 제1 상태 정보가 아이들 상태 정보를 포함하고, 2개의 내부 메모리 중에서 어느 하나의 제2 상태 정보가 대기 상태 정보를 포함하는 스트림 프로세서 상태 정보를 선택하고, 선택된 스트림 프로세서 상태 정보에 상응하는 적어도 하나의 스트림 프로세서에 대하여 세번째 우선 순위를 부여할 수 있다.
또한, 본 발명의 일실시예에 따르면, 단계(S520)에서는 프로세서 코어의 제1 상태 정보가 비지 상태 정보를 포함하고, 2개의 내부 메모리 모두의 제2 상태 정보가 읽기/쓰기 상태 정보를 포함하는 스트림 프로세서 상태 정보를 선택하고, 선택된 스트림 프로세서 상태 정보에 상응하는 적어도 하나의 스트림 프로세서에 대하여 네번째 우선 순위를 부여할 수 있다.
우선 순위 부여에 관한 보다 자세한 설명은 상기 [표 1]에 대한 설명을 참고하기로 한다.
단계(S530)에서는 입력 데이터를 선택된 하나의 스트림 프로세서로 입력한다. 입력 데이터를 입력받은 스트림 프로세서는 입력 데이터를 처리한다.
본 발명의 일실시예에 따르면, 단계(S530)에서는 입력 데이터를 배치 데이터로 변환하고, 변환된 배치 데이터를 선택된 스트림 프로세서로 입력할 수 있다.
단계(S520)은 단계(S530) 이전에 수행될 수 있다. 즉, 본 발명의 일실시예에 따른 데이터 처리 장치의 제어 방법은 복수의 스트림 프로세서의 상태를 미리 예측하고, 예측된 결과로부터 데이터를 처리할 하나의 스트림 프로세서를 선택한다.
이 때, 단계(S530)에서는 입력 데이터를 출력 내부 메모리에 저장하지 않고 즉시 선택된 스트림 프로세서로 입력할 수 있으므로, 데이터 처리 속도가 향상된다.
본 발명의 일실시예에 따르면, 데이터 처리 장치의 제어 방법은 3차원 입체 영상의 생성과 관련된 데이터 처리 작업에 사용될 수 있다.
이 경우, 본 발명의 일실시예에 따르면, 입력 데이터는 버텍스(vertex) 데이터이고, 버텍스 데이터를 입력받은 스트림 프로세서는 버텍스 프로세싱을 수행할 수 있다.
또한, 본 발명의 일실시예에 따르면, 입력 데이터는 프레그먼트(fragment) 데이터이고, 프레그먼트 데이터를 입력받은 스트림 프로세서는 픽셀(pixel) 프로세싱을 수행할 수 있다.
도 6은 본 발명의 다른 일실시예에 따른 데이터 처리 장치의 제어 방법의 흐름도를 도시한 도면이다.
도 6에서 설명하는 데이터 처리 장치의 제어 방법은 프로세서 코어와 4개의 내부 메모리를 포함하는 스트림 프로세서에 적용되는 것으로 가정한다. 또한, 도 6에서 설명하는 제1 스트림 프로세서는 버텍스 프로세싱을 수행하고, 제2 스트림 프로세서는 픽셀 프로세싱을 수행하는 것으로 가정한다. 그러나, 본 발명은 이에 한정되지 않음은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명하다.
단계(S610)에서는 복수의 스트림 프로세서 각각에 대하여 스트림 프로세서 상태 정보를 생성한다. 스트림 프로세서 상태 정보는 프로세서 코어의 제1 상태 정보 및 내부 메모리의 제2 상태 정보를 포함한다.
단계(S620)에서는 복수의 스트림 프로세서를 제1 스트림 프로세서 그룹과 제2 스트림 프로세서 그룹으로 그룹화한다.
이 경우, 단계(S620)에서는 버텍스 프로세싱을 수행할 제1 데이터의 데이터량과 픽셀 프로세싱을 수행할 제2 데이터의 데이터량을 비교하여 복수의 스트림 프로세서를 그룹화할 수 있다.
단계(S630)에서는 스트림 프로세서 상태 정보에 기초하여 제1 스트림 프로세서 그룹에서 하나의 제1 스트림 프로세서를 선택한다. 단계(S630)는 도 5에서 설명한 단계(S520)과 대응된다.
단계(S640)에서는 외부 메모리로부터 독출한 버텍스 데이터를 제1 배치 데이터로 변환한다.
단계(S650)에서는 제1 스트림 프로세서에서 제1 배치 데이터에 대하여 버텍스 프로세싱을 수행한다.
단계(S660)에서는 스트림 프로세서 상태 정보에 기초하여 제2 스트림 프로세서 그룹에서 하나의 제2 스트림 프로세서를 선택한다. 단계(S660) 역시 도 5에서 설명한 단계(S520)과 대응된다.
단계(S670)에서는 버텍스 프로세싱된 제1 배치 데이터를 제2 배치 데이터로 변환한다. 제2 배치 데이터는 프레그먼트 데이터이다.
단계(S680)에서는 제2 스트림 프로세서에서 제2 배치 데이터에 대하여 픽셀 프로세싱을 수행한다.
복수의 스트림 프로세서는 병렬적으로 데이터를 처리하므로, 단계(S630) 내지 단계(S680)은 복수의 스트림 프로세서에서 동시에 수행될 수 있다.
지금까지 본 발명에 따른 데이터 처리 장치의 제어 방법의 실시예들에 대하여 설명하였고, 앞서 도 1 내지 도 4에서 설명한 데이터 처리 장치에 관한 구성이 본 실시예에도 그대로 적용 가능하다. 이에, 보다 상세한 설명은 생략하기로 한다.
또한, 본 발명에 따른 데이터 처리 장치의 제어 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통 상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 안되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
도 1은 본 발명의 일실시예에 따른 데이터 처리 장치의 상세한 구성을 도시한 블록도이다.
도 2는 본 발명의 일실시예에 따른 선택 유닛의 상세한 구성을 도시한 블록도이다.
도 3은 본 발명의 다른 일실시예에 따른 데이터 처리 장치의 상세한 구성을 도시한 블록도이다.
도 4는 본 발명의 다른 일실시예에 따른 선택 유닛의 상세한 구성을 도시한 블록도이다.
도 5는 본 발명의 일실시예에 따른 데이터 처리 장치의 제어 방법의 흐름도를 도시한 도면이다.
도 6은 본 발명의 다른 일실시예에 따른 데이터 처리 장치의 제어 방법의 흐름도를 도시한 도면이다.

Claims (20)

  1. 복수의 스트림 프로세서(Stream Processor);
    상기 복수의 스트림 프로세서 각각에 대하여 스트림 프로세서 상태 정보를 생성하고, 상기 스트림 프로세서 상태 정보에 기초하여 상기 복수의 스트림 프로세서 중에서 하나의 스트림 프로세서를 선택하는 선택 유닛; 및
    입력 데이터를 상기 선택된 스트림 프로세서로 입력하는 데이터 관리 유닛
    을 포함하고,
    상기 복수의 스트림 프로세서 각각은 프로세서 코어(core) 및 적어도 하나의 내부 메모리를 포함하고,
    상기 스트림 프로세서 상태 정보는 상기 프로세서 코어의 제1 상태 정보 및 상기 적어도 하나의 내부 메모리 각각의 제2 상태 정보 중에서 적어도 하나를 포함하고 상기 선택 유닛은 상기 복수의 스트림 프로세서 각각의 상기 제2 상태 정보를 비교하고 그 후에 상기 복수의 스트림 프로세서 각각의 상기 제1 상태 정보를 비교하여 상기 복수의 스트림 프로세서 각각에 우선 순위를 부여하고, 상기 우선 순위에 기초하여 상기 하나의 스트림 프로세서를 선택하는 데이터 처리 장치.
  2. 제1항에 있어서,
    상기 제1 상태 정보는 비지(BUSY) 상태 정보 및 아이들(IDLE) 상태 정보 중에서 어느 하나를 포함하는 것을 특징으로 하는 데이터 처리 장치.
  3. 제1항에 있어서,
    상기 제2 상태 정보는 읽기/쓰기 상태 정보 및 대기 상태 정보 중에서 어느 하나를 포함하는 것을 특징으로 하는 데이터 처리 장치.
  4. 제1항에 있어서,
    상기 선택 유닛은 상기 제2 상태 정보가 대기 상태 정보를 포함하는 스트림 프로세서에 상기 제2 상태 정보가 읽기/쓰기 상태 정보를 포함하는 스트림 프로세서보다 높은 우선 순위를 부여하고, 상기 제1 상태 정보가 아이들 상태 정보를 포함하는 스트림 프로세서에 상기 제1 상태 정보가 비지 상태 정보를 포함하는 스트림 프로세서보다 높은 우선 순위를 부여하고, 상기 우선 순위에 기초하여 상기 하나의 스트림 프로세서를 선택하는 것을 특징으로 하는 데이터 처리 장치.
  5. 복수의 스트림 프로세서(Stream Processor);
    상기 복수의 스트림 프로세서 각각에 대하여 스트림 프로세서 상태 정보를 생성하고, 상기 스트림 프로세서 상태 정보에 기초하여 상기 복수의 스트림 프로세서 중에서 하나의 스트림 프로세서를 선택하는 선택 유닛; 및
    입력 데이터를 상기 선택된 스트림 프로세서로 입력하는 데이터 관리 유닛
    을 포함하고
    상기 복수의 스트림 프로세서 각각은 프로세서 코어(core) 및 적어도 하나의 내부 메모리를 포함하고, 상기 스트림 프로세서 상태 정보는 상기 프로세서 코어의 제1 상태 정보 및 상기 적어도 하나의 내부 메모리 각각의 제2 상태 정보 중에서 적어도 하나를 포함하고
    상기 선택 유닛은 상기 스트림 프로세서 상태 정보에 기초하여 상기 복수의 스트림 프로세서 각각에 대해 우선 순위를 부여하고, 상기 우선 순위에 기초하여 상기 하나의 스트림 프로세서를 선택하고,
    상기 복수의 스트림 프로세서 각각은 2개의 내부 메모리를 포함하고,
    상기 선택 유닛은 상기 제1 상태 정보가 아이들 상태 정보를 포함하고, 상기 2개의 내부 메모리 모두의 제2 상태 정보가 대기 상태 정보를 포함하는 스트림 프로세서 상태 정보를 선택하고, 상기 선택된 스트림 프로세서 상태 정보에 상응하는 적어도 하나의 스트림 프로세서에 대하여 첫번째 우선 순위를 부여하는 것을 특징으로 하는 데이터 처리 장치.
  6. 복수의 스트림 프로세서(Stream Processor);
    상기 복수의 스트림 프로세서 각각에 대하여 스트림 프로세서 상태 정보를 생성하고, 상기 스트림 프로세서 상태 정보에 기초하여 상기 복수의 스트림 프로세서 중에서 하나의 스트림 프로세서를 선택하는 선택 유닛; 및
    입력 데이터를 상기 선택된 스트림 프로세서로 입력하는 데이터 관리 유닛
    을 포함하고
    상기 복수의 스트림 프로세서 각각은 프로세서 코어(core) 및 적어도 하나의 내부 메모리를 포함하고, 상기 스트림 프로세서 상태 정보는 상기 프로세서 코어의 제1 상태 정보 및 상기 적어도 하나의 내부 메모리 각각의 제2 상태 정보 중에서 적어도 하나를 포함하고
    상기 선택 유닛은 상기 스트림 프로세서 상태 정보에 기초하여 상기 복수의 스트림 프로세서 각각에 대해 우선 순위를 부여하고, 상기 우선 순위에 기초하여 상기 하나의 스트림 프로세서를 선택하고,
    상기 복수의 스트림 프로세서 각각은 2개의 내부 메모리를 포함하고,
    상기 선택 유닛은 상기 제1 상태 정보가 비지 상태 정보를 포함하고, 상기 2개의 내부 메모리 중에서 어느 하나의 제2 상태 정보가 대기 상태 정보를 포함하는 스트림 프로세서 상태 정보를 선택하고, 상기 선택된 스트림 프로세서 상태 정보에 상응하는 적어도 하나의 스트림 프로세서에 대하여 두번째 우선 순위를 부여하는 것을 특징으로 하는 데이터 처리 장치.
  7. 복수의 스트림 프로세서(Stream Processor);
    상기 복수의 스트림 프로세서 각각에 대하여 스트림 프로세서 상태 정보를 생성하고, 상기 스트림 프로세서 상태 정보에 기초하여 상기 복수의 스트림 프로세서 중에서 하나의 스트림 프로세서를 선택하는 선택 유닛; 및
    입력 데이터를 상기 선택된 스트림 프로세서로 입력하는 데이터 관리 유닛
    을 포함하고
    상기 복수의 스트림 프로세서 각각은 프로세서 코어(core) 및 적어도 하나의 내부 메모리를 포함하고, 상기 스트림 프로세서 상태 정보는 상기 프로세서 코어의 제1 상태 정보 및 상기 적어도 하나의 내부 메모리 각각의 제2 상태 정보 중에서 적어도 하나를 포함하고
    상기 선택 유닛은 상기 스트림 프로세서 상태 정보에 기초하여 상기 복수의 스트림 프로세서 각각에 대해 우선 순위를 부여하고, 상기 우선 순위에 기초하여 상기 하나의 스트림 프로세서를 선택하고,
    상기 복수의 스트림 프로세서 각각은 2개의 내부 메모리를 포함하고,
    상기 선택 유닛은 상기 제1 상태 정보가 아이들 상태 정보를 포함하고, 상기 2개의 내부 메모리 중에서 어느 하나의 제2 상태 정보가 대기 상태 정보를 포함하는 스트림 프로세서 상태 정보를 선택하고, 상기 선택된 스트림 프로세서 상태 정보에 상응하는 적어도 하나의 스트림 프로세서에 대하여 세번째 우선 순위를 부여하는 것을 특징으로 하는 데이터 처리 장치.
  8. 복수의 스트림 프로세서(Stream Processor);
    상기 복수의 스트림 프로세서 각각에 대하여 스트림 프로세서 상태 정보를 생성하고, 상기 스트림 프로세서 상태 정보에 기초하여 상기 복수의 스트림 프로세서 중에서 하나의 스트림 프로세서를 선택하는 선택 유닛; 및
    입력 데이터를 상기 선택된 스트림 프로세서로 입력하는 데이터 관리 유닛
    을 포함하고
    상기 복수의 스트림 프로세서 각각은 프로세서 코어(core) 및 적어도 하나의 내부 메모리를 포함하고, 상기 스트림 프로세서 상태 정보는 상기 프로세서 코어의 제1 상태 정보 및 상기 적어도 하나의 내부 메모리 각각의 제2 상태 정보 중에서 적어도 하나를 포함하고
    상기 선택 유닛은 상기 스트림 프로세서 상태 정보에 기초하여 상기 복수의 스트림 프로세서 각각에 대해 우선 순위를 부여하고, 상기 우선 순위에 기초하여 상기 하나의 스트림 프로세서를 선택하고,
    상기 복수의 스트림 프로세서 각각은 2개의 내부 메모리를 포함하고,
    상기 선택 유닛은 상기 제1 상태 정보가 비지 상태 정보를 포함하고, 상기 2개의 내부 메모리 모두의 제2 상태 정보가 읽기/쓰기 상태 정보를 포함하는 스트림 프로세서 상태 정보를 선택하고, 상기 선택된 스트림 프로세서 상태 정보에 상응하는 적어도 하나의 스트림 프로세서에 대하여 네번째 우선 순위를 부여하는 것을 특징으로 하는 데이터 처리 장치.
  9. 제1항에 있어서,
    상기 입력 데이터는 버텍스(vertex) 데이터이고,
    상기 버텍스 데이터를 입력받은 스트림 프로세서는 버텍스 프로세싱을 수행하는 것을 특징으로 하는 데이터 처리 장치.
  10. 제1항에 있어서,
    상기 입력 데이터는 프레그먼트(fragment) 데이터이고,
    상기 프레그먼트 데이터를 입력받은 스트림 프로세서는 픽셀(pixel) 프로세싱을 수행하는 것을 특징으로 하는 데이터 처리 장치.
  11. 복수의 스트림 프로세서;
    상기 복수의 스트림 프로세서를 제1 스트림 프로세서 그룹과 제2 스트림 프로세서 그룹으로 그룹화하고, 상기 제1 스트림 프로세서 그룹에서 하나의 제1 스트림 프로세서를 선택하고, 상기 제2 스트림 프로세서 그룹에서 하나의 제2 스트림 프로세서를 선택하는 선택 유닛;
    외부 메모리로부터 독출된 제1 데이터를 제1 배치 데이터로 변환하고, 상기 제1 배치 데이터를 상기 제1 스트림 프로세서로 입력하는 제1 데이터 관리 유닛; 및
    상기 제1 스트림 프로세서에서 출력된 제2 데이터를 제2 배치 데이터로 변환하고, 상기 제2 배치 데이터를 상기 제2 스트림 프로세서로 입력하는 제2 데이터 관리 유닛
    을 포함하고,
    상기 선택 유닛은
    상기 제1 데이터의 데이터량 및 상기 제2 데이터의 데이터량에 기초하여 상기 복수의 스트림 프로세서를 그룹화하고,
    상기 복수의 스트림 프로세서 각각에 대하여 스트림 프로세서 상태 정보를 생성하고, 상기 스트림 프로세서 상태 정보에 기초하여 상기 제1 스트림 프로세서 및 상기 제2 스트림 프로세서를 선택하는 것을 특징으로 하는 데이터 처리 장치.
  12. 제11항에 있어서,
    상기 복수의 스트림 프로세서 각각은 프로세서 코어 및 적어도 하나의 내부 메모리를 포함하고,
    상기 스트림 프로세서 상태 정보는 상기 프로세서 코어의 제1 상태 정보 및 상기 적어도 하나의 내부 메모리 각각의 제2 상태 정보 중에서 적어도 하나를 포함하는 것을 특징으로 하는 데이터 처리 장치.
  13. 제11항에 있어서,
    상기 제1 데이터는 버텍스 데이터이고, 상기 제1 스트림 프로세서는 버텍스 프로세싱을 수행하는 것을 특징으로 하는 데이터 처리 장치.
  14. 제11항에 있어서,
    상기 제2 배치 데이터는 프레그먼트 데이터이고, 상기 제2 스트림 프로세서는 픽셀 프로세싱을 수행하는 것을 특징으로 하는 데이터 처리 장치.
  15. 복수의 스트림 프로세서를 포함하는 데이터 처리 장치를 제어하는 방법에 있어서,
    상기 복수의 스트림 프로세서 각각에 대하여 스트림 프로세서 상태 정보를 생성하는 단계;
    상기 스트림 프로세서 상태 정보에 기초하여 상기 복수의 스트림 프로세서 중에서 하나의 스트림 프로세서를 선택하는 단계; 및
    입력 데이터를 상기 선택된 스트림 프로세서로 입력하는 단계;
    를 포함하고,
    상기 복수의 스트림 프로세서 각각은 프로세서 코어 및 적어도 하나의 내부 메모리를 포함하고,
    상기 스트림 프로세서 상태 정보는 상기 프로세서 코어의 제1 상태 정보 및 상기 적어도 하나의 내부 메모리 각각의 제2 상태 정보 중에서 적어도 하나를 포함하고
    상기 선택하는 단계는 상기 복수의 스트림 프로세서 각각의 상기 제2 상태 정보를 비교하고 그 후에 상기 복수의 스트림 프로세서 각각의 상기 제1 상태 정보를 비교하여 상기 복수의 스트림 프로세서 각각에 우선 순위를 부여하고, 상기 우선 순위에 기초하여 상기 하나의 스트림 프로세서를 선택하는 것을 포함하는
    데이터 처리 장치의 제어 방법.
  16. 제15항에 있어서,
    상기 하나의 스트림 프로세서를 선택하는 단계는 상기 제2 상태 정보가 대기 상태 정보를 포함하는 스트림 프로세서에 상기 제2 상태 정보가 읽기/쓰기 상태 정보를 포함하는 스트림 프로세서 보다 높은 우선 순위를 부여하고, 상기 제1 상태 정보가 아이들 상태 정보를 포함하는 스트림 프로세서에 상기 제1 상태 정보가 비지 상태 정보를 포함하는 스트림 프로세서보다 높은 우선 순위를 부여하는 단계; 및 상기 우선 순위에 기초하여 상기 하나의 스트림 프로세서를 선택하는 단계를 포함하는 데이터 처리 장치의 제어 방법.
  17. 복수의 스트림 프로세서를 포함하는 데이터 처리 장치를 제어하는 방법에 있어서,
    상기 복수의 스트림 프로세서 각각에 대하여 스트림 프로세서 상태 정보를 생성하는 단계;
    상기 스트림 프로세서 상태 정보에 기초하여 상기 복수의 스트림 프로세서 중에서 하나의 스트림 프로세서를 선택하는 단계; 및
    입력 데이터를 상기 선택된 스트림 프로세서로 입력하는 단계;
    를 포함하고,
    상기 복수의 스트림 프로세서 각각은 프로세서 코어 및 적어도 하나의 내부 메모리를 포함하고,
    상기 스트림 프로세서 상태 정보는 상기 프로세서 코어의 제1 상태 정보 및 상기 적어도 하나의 내부 메모리 각각의 제2 상태 정보 중에서 적어도 하나를 포함하고
    상기 하나의 스트림 프로세서를 선택하는 단계는 상기 스트림 프로세서 상태 정보에 기초하여 상기 복수의 스트림 프로세서 각각에 대해 우선 순위를 부여하는 단계 및 상기 우선 순위에 기초하여 상기 하나의 스트림 프로세서를 선택하는 단계를 포함하고
    상기 복수의 스트림 프로세서 각각은 2개의 내부 메모리를 포함하고,
    상기 우선 순위를 부여하는 단계는 상기 제1 상태 정보가 아이들 상태 정보를 포함하고, 상기 2개의 내부 메모리 모두의 제2 상태 정보가 대기 상태 정보를 포함하는 스트림 프로세서 상태 정보를 선택하고, 상기 선택된 스트림 프로세서 상태 정보에 상응하는 적어도 하나의 스트림 프로세서에 대하여 첫번째 우선 순위를 부여하는 것을 특징으로 하는 데이터 처리 장치의 제어 방법.
  18. 복수의 스트림 프로세서를 포함하는 데이터 처리 장치를 제어하는 방법에 있어서,
    상기 복수의 스트림 프로세서 각각에 대하여 스트림 프로세서 상태 정보를 생성하는 단계;
    상기 스트림 프로세서 상태 정보에 기초하여 상기 복수의 스트림 프로세서 중에서 하나의 스트림 프로세서를 선택하는 단계; 및
    입력 데이터를 상기 선택된 스트림 프로세서로 입력하는 단계;
    를 포함하고,
    상기 복수의 스트림 프로세서 각각은 프로세서 코어 및 적어도 하나의 내부 메모리를 포함하고,
    상기 스트림 프로세서 상태 정보는 상기 프로세서 코어의 제1 상태 정보 및 상기 적어도 하나의 내부 메모리 각각의 제2 상태 정보 중에서 적어도 하나를 포함하고
    상기 하나의 스트림 프로세서를 선택하는 단계는 상기 스트림 프로세서 상태 정보에 기초하여 상기 복수의 스트림 프로세서 각각에 대해 우선 순위를 부여하는 단계 및 상기 우선 순위에 기초하여 상기 하나의 스트림 프로세서를 선택하는 단계를 포함하고
    상기 복수의 스트림 프로세서 각각은 2개의 내부 메모리를 포함하고,
    상기 우선 순위를 부여하는 단계는 상기 제1 상태 정보가 비지 상태 정보를 포함하고, 상기 2개의 내부 메모리 중에서 어느 하나의 제2 상태 정보가 대기 상태 정보를 포함하는 스트림 프로세서 상태 정보를 선택하고, 상기 선택된 스트림 프로세서 상태 정보에 상응하는 적어도 하나의 스트림 프로세서에 대하여 두번째 우선 순위를 부여하는 것을 특징으로 하는 데이터 처리 장치의 제어 방법.
  19. 복수의 스트림 프로세서를 포함하는 데이터 처리 장치를 제어하는 방법에 있어서,
    상기 복수의 스트림 프로세서 각각에 대하여 스트림 프로세서 상태 정보를 생성하는 단계;
    상기 스트림 프로세서 상태 정보에 기초하여 상기 복수의 스트림 프로세서 중에서 하나의 스트림 프로세서를 선택하는 단계; 및
    입력 데이터를 상기 선택된 스트림 프로세서로 입력하는 단계;
    를 포함하고,
    상기 복수의 스트림 프로세서 각각은 프로세서 코어 및 적어도 하나의 내부 메모리를 포함하고,
    상기 스트림 프로세서 상태 정보는 상기 프로세서 코어의 제1 상태 정보 및 상기 적어도 하나의 내부 메모리 각각의 제2 상태 정보 중에서 적어도 하나를 포함하고
    상기 하나의 스트림 프로세서를 선택하는 단계는 상기 스트림 프로세서 상태 정보에 기초하여 상기 복수의 스트림 프로세서 각각에 대해 우선 순위를 부여하는 단계 및 상기 우선 순위에 기초하여 상기 하나의 스트림 프로세서를 선택하는 단계를 포함하고
    상기 복수의 스트림 프로세서 각각은 2개의 내부 메모리를 포함하고,
    상기 우선 순위를 부여하는 단계는 상기 제1 상태 정보가 아이들 상태 정보를 포함하고, 상기 2개의 내부 메모리 중에서 어느 하나의 제2 상태 정보가 대기 상태 정보를 포함하는 스트림 프로세서 상태 정보를 선택하고, 상기 선택된 스트림 프로세서 상태 정보에 상응하는 적어도 하나의 스트림 프로세서에 대하여 세번째 우선 순위를 부여하는 것을 특징으로 하는 데이터 처리 장치의 제어 방법.
  20. 복수의 스트림 프로세서를 포함하는 데이터 처리 장치를 제어하는 방법에 있어서,
    상기 복수의 스트림 프로세서 각각에 대하여 스트림 프로세서 상태 정보를 생성하는 단계;
    상기 스트림 프로세서 상태 정보에 기초하여 상기 복수의 스트림 프로세서 중에서 하나의 스트림 프로세서를 선택하는 단계; 및
    입력 데이터를 상기 선택된 스트림 프로세서로 입력하는 단계;
    를 포함하고,
    상기 복수의 스트림 프로세서 각각은 프로세서 코어 및 적어도 하나의 내부 메모리를 포함하고,
    상기 스트림 프로세서 상태 정보는 상기 프로세서 코어의 제1 상태 정보 및 상기 적어도 하나의 내부 메모리 각각의 제2 상태 정보 중에서 적어도 하나를 포함하고
    상기 하나의 스트림 프로세서를 선택하는 단계는 상기 스트림 프로세서 상태 정보에 기초하여 상기 복수의 스트림 프로세서 각각에 대해 우선 순위를 부여하는 단계 및 상기 우선 순위에 기초하여 상기 하나의 스트림 프로세서를 선택하는 단계를 포함하고
    상기 복수의 스트림 프로세서 각각은 2개의 내부 메모리를 포함하고,
    상기 우선 순위를 부여하는 단계는 상기 제1 상태 정보가 비지 상태 정보를 포함하고, 상기 2개의 내부 메모리 모두의 제2 상태 정보가 읽기/쓰기 상태 정보를 포함하는 스트림 프로세서 상태 정보를 선택하고, 상기 선택된 스트림 프로세서 상태 정보에 상응하는 적어도 하나의 스트림 프로세서에 대하여 네번째 우선 순위를 부여하는 것을 특징으로 하는 데이터 처리 장치의 제어 방법.
KR1020080123061A 2008-12-05 2008-12-05 데이터 처리 장치 및 그 제어 방법 KR101519825B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020080123061A KR101519825B1 (ko) 2008-12-05 2008-12-05 데이터 처리 장치 및 그 제어 방법
US12/385,265 US8108661B2 (en) 2008-12-05 2009-04-02 Data processing apparatus and method of controlling the data processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080123061A KR101519825B1 (ko) 2008-12-05 2008-12-05 데이터 처리 장치 및 그 제어 방법

Publications (2)

Publication Number Publication Date
KR20100064563A KR20100064563A (ko) 2010-06-15
KR101519825B1 true KR101519825B1 (ko) 2015-05-13

Family

ID=42232374

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080123061A KR101519825B1 (ko) 2008-12-05 2008-12-05 데이터 처리 장치 및 그 제어 방법

Country Status (2)

Country Link
US (1) US8108661B2 (ko)
KR (1) KR101519825B1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5586417B2 (ja) * 2010-10-25 2014-09-10 株式会社日立製作所 ストリームデータ処理における性能保証方法および装置
JP2013091222A (ja) * 2011-10-25 2013-05-16 Canon Inc 画像形成処理装置及び画像処理方法
US9842428B2 (en) * 2014-06-27 2017-12-12 Samsung Electronics Co., Ltd. Dynamically optimized deferred rendering pipeline
CA2970159A1 (en) * 2014-12-10 2016-06-16 Kyndi, Inc. Technical and semantic signal processing in large, unstructured data fields
KR102498362B1 (ko) * 2016-05-03 2023-02-10 삼성전자주식회사 위치 정보 계산 방법 및 그 전자 장치
EP3301572B1 (en) * 2016-09-30 2023-05-24 Dassault Systèmes Method, program and system for simulating a 3d scene with a set of computing resources running in parallel

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4858173A (en) * 1986-01-29 1989-08-15 Digital Equipment Corporation Apparatus and method for responding to an aborted signal exchange between subsystems in a data processing system
US7038685B1 (en) * 2003-06-30 2006-05-02 Nvidia Corporation Programmable graphics processor for multithreaded execution of programs

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179669A (en) * 1988-08-22 1993-01-12 At&T Bell Laboratories Multiprocessor interconnection and access arbitration arrangement
JPH04219859A (ja) * 1990-03-12 1992-08-10 Hewlett Packard Co <Hp> 並列プロセッサに直列命令ストリームデータを分散するハードウェアディストリビュータ
JPH06274608A (ja) 1993-03-23 1994-09-30 Seiko Epson Corp マルチプロセッサ画像処理装置
JP2954056B2 (ja) 1996-12-26 1999-09-27 日本電気ソフトウェア株式会社 マルチプロセッサのプロセスディスパッチ方法
US6601084B1 (en) 1997-12-19 2003-07-29 Avaya Technology Corp. Dynamic load balancer for multiple network servers
JPH11261702A (ja) 1998-03-06 1999-09-24 Fujitsu Ltd 負荷予測によるシステム最適化制御装置
US6658449B1 (en) 2000-02-17 2003-12-02 International Business Machines Corporation Apparatus and method for periodic load balancing in a multiple run queue system
JP2002007364A (ja) 2000-06-22 2002-01-11 Fujitsu Ltd 並列計算機システムのジョブスケジューリングを行うスケジューリング装置
US7076594B2 (en) * 2000-12-22 2006-07-11 Cisco Technology, Inc. Apparatus and method for preventing one way connectivity loops in a computer network
JP3716753B2 (ja) 2001-03-21 2005-11-16 日本電気株式会社 マルチプロセッサ構成の計算機間におけるトランザクション負荷分散方法及び方式並びにプログラム
WO2005050557A2 (en) 2003-11-19 2005-06-02 Lucid Information Technology Ltd. Method and system for multiple 3-d graphic pipeline over a pc bus
US20060168571A1 (en) 2005-01-27 2006-07-27 International Business Machines Corporation System and method for optimized task scheduling in a heterogeneous data processing system
KR101286700B1 (ko) 2006-11-06 2013-07-16 삼성전자주식회사 멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4858173A (en) * 1986-01-29 1989-08-15 Digital Equipment Corporation Apparatus and method for responding to an aborted signal exchange between subsystems in a data processing system
US7038685B1 (en) * 2003-06-30 2006-05-02 Nvidia Corporation Programmable graphics processor for multithreaded execution of programs

Also Published As

Publication number Publication date
US8108661B2 (en) 2012-01-31
US20100146242A1 (en) 2010-06-10
KR20100064563A (ko) 2010-06-15

Similar Documents

Publication Publication Date Title
US9697579B2 (en) Multi-processor graphics rendering
KR101519825B1 (ko) 데이터 처리 장치 및 그 제어 방법
JP4416694B2 (ja) データ転送調停装置およびデータ転送調停方法
KR101552079B1 (ko) 그래픽스 프로세싱 유닛 상의 그래픽스 및 비그래픽스 어플리케이션들의 실행
US9742869B2 (en) Approach to adaptive allocation of shared resources in computer systems
US7038685B1 (en) Programmable graphics processor for multithreaded execution of programs
JP4443474B2 (ja) コマンド転送制御装置およびコマンド転送制御方法
US9424617B2 (en) Graphics command generation device and graphics command generation method
JP2008269282A (ja) 情報処理装置および方法、並びにプログラム
EP2854037A1 (en) Cache memory system and operating method for the same
JP6146128B2 (ja) データ処理装置
AU2008258132B2 (en) Load balancing in multiple processor rendering systems
US7253818B2 (en) System for testing multiple devices on a single system and method thereof
US20110317763A1 (en) Information processing apparatus and information processing method
JP2008071261A (ja) 画像処理システム及び画像処理方法
US7861012B2 (en) Data transmitting device and data transmitting method
KR102574449B1 (ko) 데이터 처리 방법 및 장치
JP2006092217A (ja) メモリ制御方法、グラフィックプロセッサおよび情報処理装置
EP1862898B1 (en) Information processing device, information processing method, and computer-readable information recording medium recorded with information processing program for thread priority control
JP6237945B1 (ja) メモリ制御装置
US20110167184A1 (en) Access control apparatus, data processing apparatus, access control method, and program
JP4882116B2 (ja) バッファ制御装置およびバッファ制御方法
US10423424B2 (en) Replicated stateless copy engine
US20230108001A1 (en) Priority-based scheduling with limited resources
JP7383918B2 (ja) 資源割り当て制御装置、資源割り当て制御方法、及び、資源割り当て制御プログラム

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
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180430

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190429

Year of fee payment: 5