KR20080087840A - 디지털 데이터 처리 방법 및 시스템 - Google Patents

디지털 데이터 처리 방법 및 시스템 Download PDF

Info

Publication number
KR20080087840A
KR20080087840A KR1020087017730A KR20087017730A KR20080087840A KR 20080087840 A KR20080087840 A KR 20080087840A KR 1020087017730 A KR1020087017730 A KR 1020087017730A KR 20087017730 A KR20087017730 A KR 20087017730A KR 20080087840 A KR20080087840 A KR 20080087840A
Authority
KR
South Korea
Prior art keywords
operations
specific
platform
basic information
data
Prior art date
Application number
KR1020087017730A
Other languages
English (en)
Other versions
KR101391465B1 (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 디엑스오 랩스
Publication of KR20080087840A publication Critical patent/KR20080087840A/ko
Application granted granted Critical
Publication of KR101391465B1 publication Critical patent/KR101391465B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Image Processing (AREA)
  • Devices For Executing Special Programs (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)
  • Communication Control (AREA)

Abstract

본 발명은, 특정 포맷 데이터(18)를 제공함에 있어서, Q개의 프로세서와 적어도 하나의 메모리를 포함하는 결정된 플랫폼(20)에 대하여, 어떠한 루프 없이도 일반 연산들의 시퀀스를 기술하는 제1 데이터(14)를 포함하는 일반 포맷 데이터(12)를 처리하는 방법 및 시스템에 관한 것으로서, 상기 플랫폼은 직접 또는 간접적으로 특정 포맷 데이터(18)에 따라서 동일한 종류의 기본 정보로 이루어지는 객체(22)를 처리하도록 되며, 각 기본 정보는 적어도 하나의 수치에 의해 표현된다.
Figure 112008051944465-PCT00004
특정 포맷 데이터, 순환적 체인, 처리 플랫폼, 스크롤링 모드

Description

디지털 데이터 처리 방법 및 시스템{DIGITAL DATA PROCESSING METHOD AND SYSTEM}
본 발명은 특정 포맷 데이터를 처리 플랫폼에 제공하는 관점에서 일반 포맷 데이터를 처리하는 방법 및 시스템에 관한 것이다. 특정 포맷 데이터는 컴파일러를 이용하여 직접 또는 간접적으로 제공되어, 특정 포맷 데이터를 이용하여 플랫폼에 적합한 바이너리 코드를 생성할 수 있다.
현재, 객체 처리 알고리즘들은 일반적으로 C, 어셈블리어, VHDL과 같은 공지의 언어로 작성된 후, 처리 연산들을 수행하기로 예정된 플랫폼에 의해 사용되기 전에 바이너리로 컴파일 또는 변환된다.
사용되는 컴파일러는 언어의 종류에 고유한 컴파일러이다.
가장 표준인 컴파일러 중 하나인 컴파일러 C의 예에서, C에서의 코드는, 예컨대 PC 또는 MAC 형태의 퍼스널 컴퓨터에 의해 이해되도록 변환된다. 이러한 컴파일 작업은 알고리즘이 컴파일되는 플랫폼에 의존한다. 이러한 2개의 플랫폼의 프로세서들이 유사한 특성을 갖는다면, 처리 알고리즘은 양 플랫폼과 호환가능하도록 작성될 수 있다.
또한, C로 코딩된 알고리즘에 있어서, 프로그래머는 특히, 상이한 위치의 데 이터에의 액세스를 허용하고, 또한 스케일 변화, 메모리 간의 데이터의 교환 및 에지의 관리를 허용하기 위해, 객체의 하부객체로의 분해, 루프, 기본 정보 및 하부객체들의 처리 순서, 메모리의 데이터 구성 등의 플랫폼에 의존하는 코드의 상이한 섹션들을 개시 직후부터 정의하여야 한다.
플랫폼에 의존하는 코드의 이러한 섹션들이 플랫폼 및 알고리즘에 따라 프로그래머에 의해 사전에 결정된다면, 이들은 각각의 알고리즘 + 플랫폼의 조합에 대하여 "수동"으로 최적화되어야 한다. 또한, 이들은 명시적으로 정의되며, 알고리즘 자체를 기술하는 코드와 혼합되기 때문에, 컴파일러가 플랫폼에 의존하는 코드의 이들 섹션들을 무시하여, 이들을 또 다른 플랫폼에 수동으로 적응화시키는 것은 매우 어렵다.
예를 들어, 신호 처리 프로세서가 작은 로컬 메모리를 가지며, 이 로컬 메모리와 메인 메모리 상호 간에 데이터가 복사되어야 하는 경우, 이러한 복사는 수동으로 추가되어야 하며, 메모리 내의 데이터 및 루프의 구조를 매우 손상시킨다. 또 다른 예로서, 특히 SIMD(Single Instruction Multiple Data) 형태의 벡터 신호 프로세서는 플랫폼에 따라 상이한 사이즈의 벡터들로 그룹화된 데이터를 처리해야 하며, C 언어 등의 언어가 사용되는 경우에 벡터들은 플랫폼과는 독립적으로 표현될 수 없기 때문에, 어셈블러는 플랫폼에 의존하는 방식으로 코딩되어야 한다.
또한, 알고리즘이, 특히 다양한 위치들의 데이터로의 액세스의 관점에서 변경되는 경우, 이는 적어도 부분적으로는 플랫폼에 의존하는 코드의 상이한 부분들을 손상시킨다.
따라서, 각각의 알고리즘 + 플랫폼의 조합을 최적화하는 상당한 시간을 소비하지 않고서는, 요구되는 코드의 사이즈, 메모리의 사이즈, 및 필요한 명령의 양을 최적화하는 것은 매우 어렵다. 실제로, 각각의 플랫폼은 장비(예를 들어, 프로세서의 수량과 종류, 또는 메모리의 사이즈와 종류)의 측면에서, 또한 사용되는 언어(스칼라 프로세서의 경우 C, 벡터 신호 프로세서의 경우 어셈블리어)의 측면에서 모두 자신만의 특성을 갖는다.
이 문제를 해결하기 위해, 종래에는, 콘볼루션, 승산, 또는 상관 테이블의 어플리케이션 등 물리 블록들에 대한 다양한 처리 연산을 수행할 수 있는 저레벨의 라이브러리를 사용하는 것이 알려져 있다. 이는 각각의 플랫폼의 이들 라이브러리들에 대해 단 1회의 최적화를 가능하게 한다. 그럼에도 불구하고, 이 방법에는 수많은 단점들이 존재한다:
- 라이브러리의 사이즈, 및 그에 따른 코드의 사이즈가 크다,
- 라이브러리 호출 횟수가 주어지기 때문에, 다소 큰 사이즈의 물리 블록들이 사용될 필요가 있으므로, 상당량의 메모리 사용을 야기한다,
- 기본 정보에 대한 내부 루프들이 라이브러리 내부에 위치된다면, 일련의 연산이 최적화될 수 없으며, 이는 제한된 성능을 가져온다,
- 물리 블록들이 메모리에 저장되므로, 상당한 메모리 사용을 가져오며, 메모리로부터 중간 데이터를 기입 및 판독하는데 많은 시간을 소모하는 결과를 가져온다,
- 이러한 라이브러리들은 주로 프로세서 제조자에 의해 제한된 수의 플랫폼 에 대해 최적화되며, 따라서, 모든 플랫폼 종류에 대하여 이용가능한 것은 아니다.
따라서, 본 발명의 목적은, 고속의 실행, 낮은 메모리 사용, 및 작은 사이즈의 코드로 수개의 플랫폼들에 대하여 자동 최적화가 가능하며, 모든 객체 처리 알고리즘들이 다수의 서로 다른 기본 정보들로 이루어지며, 이러한 종류의 알고리즘에 적응화된 언어로 코딩되는, 데이터 처리 방법을 제안하는 것이다. 본 발명은, 임의의 알고리즘의 다양한 플랫폼들에 대하여 자동으로 고속으로 최적화된 구현을 달성하고, 또한 가능한 한 늦게 알고리즘 변경을 허용함으로써, 데이터, 특히, 화상을 처리하기 위한 기기와 소프트웨어의 시장 배포를 가속시키도록 한다. 촬상 장치의 경우, 예를 들어, 이러한 지연된 변경은 새로운 센서에 대하여 신속히 적응할 수 있도록 하며, 특히 소형화에 따라 증가하는 노이즈에 관련된 특성을 매우 신속히 혁신시킬 수 있도록 한다.
본 발명은 일반 포맷 데이터를 처리하는 방법에 관한 것으로서, 제1 데이터는 Q 프로세서(들) 및 적어도 하나의 메모리를 포함하는 결정된 플랫폼에 대하여 특정 포맷 데이터를 직접 또는 간접적으로 제공하는데 있어서, 어떠한 루프도 없이 일반 연산의 시퀀스를 기술하며, 상기 플랫폼은 특정 포맷 데이터에 따라 동일한 종류의 기본 정보로 이루어지는 객체를 처리하도록 예정되며, 각각의 기본 정보는 적어도 하나의 수치로 표현된다.
본 방법은 이하의 단계를 포함한다:
- 플랫폼에 따라서 일반 연산의 시퀀스를 특정 연산들로 변환하는 단계,
- 객체의 토폴로지에 따라 제1 데이터와는 무관하게 처리에 필요한 루프 세트를 결정하는 단계,
- 특정 연산의 시퀀스 및 이에 따라 결정되는 루프들을 포함하는 특정 포맷 데이터를 계산하고, 직접 또는 간접적으로 일반 포맷 데이터를 따르는 객체의 처리를 허용하는 단계 - 상기 시퀀스는 코드의 사이즈, 메모리의 사이즈, 및/또는 계산 시간의 측면에서 플랫폼에 대하여 최적화된다.
특정 포맷 데이터는 이렇게 하여 결정된 특정 연산의 시퀀스를 포함한다.
종래에는, 컴파일러를 이용하여 루프들과 표들을 포함하는 연산 시퀀스들을 변환하는 것이 알려져 있다:
- 변환은 하나의 동일한 루프 반복 내부의 연산과, 다른 하나에 대한 하나의 루프 반복 내부의 연산, 특히, 표의 구성요소들 중 하나에의 액세스에 대한 인덱스 의존성 간의 링크를 기술하는 그래프를 이용한다,
- 변환은, 기존의 루프들을 변경하는 최적화를 포함한다.
- 변환은, 플랫폼의 특성에 적응하기 위해, 표의 구성을 변경하는 단계 및/또는 표를 이용하여 연산을 변경하는 단계를 포함한다.
(제1 및 제2 유형의 데이터에) 사용되는 일반 연산의 시퀀스의 특징은,
- 연산과 연산의 그래프의 루프에 대한 의존성을 제거한다.
- 사용되는 일반 연산의 시퀀스는 표 또는 표 구성요소에의 액세스의 인덱스를 이용하지 않으며, 특히, 본 방법에 따른 방법 또는 시스템은 표의 구성을 변경하는 단계 및/또는 표를 이용하여 연산을 변경하는 단계를 포함하지 않는다.
따라서, 본 발명은, 각각의 연산의 시퀀스에 대한 루프들의 고유의 최적화 또는 루프의 사용을 필요로 하지 않고서, Q 프로세서를 100% 사용하는 최적 코드의 직접적인 생성을 가능하게 한다. 이 특성은 특히 달성하기 어렵다. 본 발명은 다음을 이용하여 100%에 이르는 것을 가능하게 한다:
- 제1 데이터에 독립적인 루프들의 구성
- 표의 형태가 아닌, 예컨대, 후술하는 바와 같은 큐 형태인 메모리 내의 데이터의 구성
- 후술하는 바와 같이, 계산 유닛과 큐를 포함하는 체인의 사용.
- 예를 들어, 문서 "Compiler transformations for high performance computing" "ACM Computing Surveys, New York, NY US, Vol 26, no. 4, December 1994"에서는, 수식 U=F/ST로 주어지는 프로세서의 사용율은 명확히 100% 미만이고(p351), 100%의 사용율은 이상적인 것으로 간주되는 것으로 기술되어 있다; 본 발명에 따른 방법과 시스템은 동일한 종류의 정보로 구성된 객체들을 처리하기 위한 어떠한 종류의 알고리즘에 대하여도 100%에 도달하도록 한다.
본 발명은 또한, 하부객체의 사이즈에 상관없이, 한번에 하나의 하부객체씩 데이터를 처리하도록 구성되는 스크롤링 모드에 따라 기본 정보의 처리를 가능하게 하여, 메모리의 사용을 크게 감소시킴으로써, 화상의 경우, 블록에 대한 처리 연산을 시작하기 전에 다수의 라인들을 저장하는 것을 회피할 수 있다.
이하, 일반 연산의 시퀀스를 특정 연산의 시퀀스로 변환하는 일례를 설명한다. 본 예에 있어서는:
- 객체들은 2개의 단색의 수평 및 수직 차원의 화상들이며, 기본 정보는 하나의 수치로 표현된다
- 일반 연산의 시퀀스는 이하와 같다:
ㅇ 3*1 수직 F1 필터를 적용한 후, 1*3 수평 F2 필터를 적용한다.
- 특정 연산 시퀀스는 이하의 특정 연산 시퀀스로 변환된다:
ㅇ 입력 큐로부터 얻어진 하부객체를 R1에 저장
ㅇ F1.C1*R1을 계산하고, 그 결과를 R2에 저장
ㅇ UP(R1)을 실행하고, 그 결과를 R1에 저장
ㅇ F1.C2*R1을 계산하고, 그 결과를 R2에 저장
ㅇ UP(R1)을 실행하고, 그 결과를 R1에 저장
ㅇ F1.C3*R1을 계산하고, 그 결과를 R2에 저장
ㅇ F2.C1*R2을 계산하고, 그 결과를 R3에 저장
ㅇ LFET(R2)를 실행하고, 그 결과를 R2에 저장
ㅇ F2.C2*R2을 계산하고, 그 결과를 R3에 저장
ㅇ LFET(R2)를 실행하고, 그 결과를 R2에 저장
ㅇ F2.C3*R2을 계산하고, 그 결과를 R3에 저장
- R1, R2, 및 R3는, 하나의 동일한 하부객체의 처리 중에 하나의 동일한 특정 연산으로부터 기인하는 하나의 하부객체 또는 N개의 하부객체에 대하여 N개의 기본 정보를 저장하는 데 각각 사용되는 레지스터들이다.
- F1.C1, F1.C2, 및 F1.C3는 필터 F1의 인자들에 대응하는 파라미터들이다.
- F2.C1, F2.C2, 및 F2.C3는 필터 F2의 인자들에 대응하는 파라미터들이다.
- LEFT(R1)은 후술하는 바와 같이 QueueH의 큐를 포함하여, 수평 차원에 따른 체인을 이용함으로써 구현될 수 있다. 예를 들면:
ㅇ 하부객체들이 수평 배치된 4개의 픽셀들로 이루어지고, 레지스터가 좌측에서 우측으로 R1.1, R1.2, R1.4, 및 R1.4의 4개의 데이터를 포함하는 경우: LEFT(R1)은 QueueH에 R1.4를 기입하고, R1.4에 R1.3을 기입하고, R1.3에 R1.2를 기입하고, R1.3에 R1.1을 기입하고, 라인 R1.1의 제1 하부객체에 대하여는 불변이며, 그렇지 않은 경우, R1.1은 QueueH에서 판독된 데이터를 수신한다는 것을 의미한다.
- UP(R2)는 후술하는 바와 같이 QueueV 큐를 포함하는 수직 차원에 따른 체인을 이용하여 구현될 수 있다.
ㅇ 하부객체들은 수평으로 배치된 4개의 픽셀들로 이루어지며, 레지스터는 좌측에서 우측으로 R1.1, R1.2, R1.3, 및 R1.4의 4개의 데이터를 포함한다: UP(R1)은 R1.4를 QueueV 에, R1.3을 R1.4에, R1.2을 R1.3에, R1.1을 R1.3에 기입하고, 화상의 제1 라인의 객체들에 대하여는 불변이며, 그렇지 않은 경우, R1.1은 QueueV에서 판독된 데이터를 수신한다는 것을 의미한다.
본 예에 있어서, 일반 연산의 시퀀스를 특정 연산의 시퀀스로 변환하는 것은, 후술하는 스크롤링 모드와는 독립적이다. 스크롤링 모드(24)는 그 후, 플랫폼(22)의 아키텍쳐 및 객체의 토폴로지에 따라, 그리고 제1 데이터와는 무관하게 플랫폼 내의 기본 정보에 대하여 결정될 수 있으며, 이러한 스크롤링 모드의 결정은 이하의 선택 및/또는 계산을 포함한다:
- 기본 정보를 하부객체들(각각이 플랫폼에 따라 결정되는 N개의 기본 정보를 포함함)로 그룹화의 선택 및/또는 계산 - 여기서, 플랫폼에서의 처리는 하부처리 연산을 주기적으로 론칭(launching)하는 것을 포함하며, 이는 특정 연산의 시퀀스를 하부객체들 중 하나에 적용하는 것을 포함함 -
- 플랫폼에 따라 결정되는, 하부객체들의 형태와 오버레이의 선택 및/또는 계산
- 플랫폼에 따라 결정되는 하부객체들의 처리 순서의 선택 및/또는 계산.
바람직하게는, 루프의 집합을 결정하는 것은, 각각의 루프의 범위를 결정하는 것, 루프의 집합의 임베딩을 결정하는 것을 의미하며, 반복량은 객체에 따라 결정된다. 예를 들어, 2개의 수평 및 수직 차원을 갖는 화상의 경우, Q=4인 경우, 4개의 프로세서가 하나의 동일한 라인에서 4개의 연속 픽셀들을 처리하는 경우, 이하의 루프들이 결정될 수 있다:
- 상측에서 하측으로 각각의 라인에 대하여,
- 좌측에서 우측으로 4개의 픽셀의 각 그룹에 대하여,
- 4개의 프로세서에 대하여 동시에 동일한 특정 연산을 수행함으로써 4개의 픽셀의 그룹에 대하여 특정 연산의 시퀀스를 수행한다.
본 예에 있어서, 반복량은 화상의 사이즈에 의존한다. 그러나, 처리 연산에 필요한 루프의 집합은 플랫폼의 아키텍처에 따라, 또한 객체의 토폴로지에 따라 제1 데이터와는 독립적으로 결정되었다. 예를 들어, 루프들은 이하의 일반 연산의 시퀀스들 중 임의의 하나에 사용될 수 있다:
- 3*1 수직 F1 필터를 적용하고, 그 후 1*3 수평 F2 필터를 적용한다,
- 상수 3을 기본 정보에 추가한다,
- 또는, 일반 연산들의 임의의 다른 시퀀스.
본 발명에 따르면, 루프라는 것은, 그 리스트가 제한됨이 없이, 특히 특정 횟수로 실행되는 루프, 조건이 증명된다면 실행되는 루프, 조건이 증명될 때까지 실행되는 루프일 수 있으며, 일반적으로, 반복 실행은 루프에 대한 하나 이상의 출력 조건들에 연결되어 있다.
이하 본 발명에 따른 큐의 개념에 대하여 정의한다.
큐는 기본 정보를 송신 및/또는 저장하는 데 사용되거나, 특정 연산으로부터 기인한다.
큐는 메모리를 구비하거나 이용할 수 있다.
큐는 하나 이상의 FIFO(First In First Out) 형태의 프로세서를 이용하여 구현될 수 있다.
큐는 적어도 하나의 입력 및 적어도 하나의 출력을 포함한다.
- 큐는 임의의 수단을 통해서 입력 계산 유닛과 출력 계산 유닛에 동작상 연결될 수 있다.
- 큐는 임의의 수단을 통해 PR 입력 계산 유닛과 PR 출력 계산 유닛에 동작상 연결될 수도 있으며, 이 경우 큐는 각각이 입력 계산 유닛을 출력 계산 유닛에 연결하는 PR 큐처럼 거동한다.
바람직하게는, 큐는 수개의 데이터 플럭스(flux)들을 독립적으로 관라하는 데 사용될 수 있으며, 각각의 플럭스는 결정된 특정 연산에 관련된다.
일 실시예에서, 큐에 동시에 기입 및 판독이 가능하다.
바람직하게는, 큐는 적어도 하나의 메모리 유닛을 사용하여 각각의 플럭스에 대하여 동일한 수량 NF의 데이터를 저장한다.
바람직하게는, NF-1 하부객체들이 하부객체 생성 데이터의 처리와, 동일한 데이터를 이용한 하부객체의 처리 중에 처리되도록 하부 객체들의 상대적 위치 및 스크롤링 모드에 따라 NF가 결정된다.
바람직하게는, 체인(chaining)은 계산 유닛과 큐를 구비하며, 부팅 동작의 관리를 가능하게 하는 메카니즘을 포함한다: 큐가 수평 체인의 일부이고 객체가 화상인 경우, 예를 들어, 각각의 라인의 개시 시점에서 규칙적인 방식으로 큐가 초기화된다; 큐가 NF 데이터를 포함하지 않으면, 체인 내의 큐를 따르는 프로세서는, 출력으로 보내는 데이터를 입력으로서 취한다; 다음, 체인 내의 큐를 따르는 프로세서는 입력의 큐 내의 가장 오래된 데이터를 취하고, 큐로부터 이를 제거한다.
바람직하게는, 큐는 큐 내에 입력된 순서와 동일한 순서로 데이터를 출력할 수 있도록 한다.
바람직하게는, 주기적 체인은 일방향성이다. 바람직하게는, 주기적 체인은 계산 유닛 당 입력에 하나의 단일 링크가 존재하고, 출력에 하나의 단일 링크가 존재하도록 이루어진다.
따라서, 적어도 하나의 큐의 사용은, 적어도 하나의 다른 하부객체의 계산에 필요한 특정 연산으로부터의 결과의 송신을 가능하게 한다.
본 설명에 있어서, 일반 포맷 데이터는 플랫폼 자체와는 독립적으로 데이터 처리 플랫폼에 의해 객체에 대하여 수행되어야 하는 처리 연산을 기술하는 데 사용되는 디지털 데이터이다. 본 발명에 있어서, 처리된 객체들은 동일한 종류의 일련의 기본 정보에 대응한다; 이러한 객체들로서는, 예를 들어, 화상, 디지털 오디오, 비디오, 또는 시뮬레이션 데이터가 있다.
일 실시예에서, 일반 포맷 데이터는 객체의 차원들 중 적어도 하나, 특히 상호간에 관련된 블록 및/또는 파라미터의 시간 및/또는 공간에 따른 상대적 위치를 지칭하거나, 또한/또는 객체의 차원들 중 적어도 하나, 특히 상호간에 관련된 논리 블록들 및/또는 파라미터들의 시간 및/또는 공간에 따른 상대적 스케일을 지칭하는 제2 데이터를 포함한다.
일 실시예에서, 논리 블록들뿐만 아니라 객체들과 하부객체들은 수개의 차원을 갖는다.
하부객체들 및 논리 블록들의 차원은 객체의 차원들 중 전체 또는 일부에 대응한다. 차원들은 상이한 유형을 가질 수 있는데, 특히,
- 예컨대 거리, 각도, 또는 메쉬 내의 스크롤링의 공간적 차원,
- 시간적 차원
- 예컨대, 컬러, 주파수, 주파수 대역 등의 주파수
- 위상
- 예컨대, 웨이블릿(wavelets)으로 분해하는 것과 같은 또 다른 벡터 공간 기반에 따른 분해
- 일반적으로, 임의의 토폴로지의 임의의 공간의 차원들.
이하의 예시적인 목록은 그 차원와 함께 객체의 예들을 제공한다:
- 각각이 특히 픽셀로 측정된 거리에 대응하는 2개의 차원을 갖는 정지 화상,
- 각각이 거리에 대응하는 2개의 차원을 갖는 미처리 정지 화상, 각각의 픽셀에는 컬러, 예를 들어, 적색, 녹색, 또는 청색이 구비된다,
- 각각이 거리에 대응하는 2개의 차원을 갖는 정지 컬러 화상, 하나의 차원은 컬러 채널, 예를 들어, 적색/녹색/청색을 나타내는 주파수에 대응한다,
- 3개의 차원을 갖는 동화상, 그 중 2개의 차원은, 특히, 픽셀로 측정된 거리에 대응하며, 1개의 차원은 시간에 대응한다,
- 거리에 대응하는 3개의 차원을 갖는 원근 화상(image in relief),
- 3개의 차원을 갖는 원근 화상, 그 중 2개는 거리에 대응하며, 세번째는 시야각에 대응한다,
- 거리 차원들 및 가능하다면 채널 차원을 갖는 의료 화상,
- 시야각 차원들을 갖는 홀로그램,
- 더 일반적으로, 거리 및/또는 각도 및/또는 시간, 및/또는 주파수 차원을 갖는 화상,
- 시간에 대응하는 차원을 갖는 사운드,
- 시간 및 채널에 대응하는 2개의 차원을 갖는 사운드,
- 시간, 가능하다면 주파수, 및 가능하다면 공간적 위치 또는 각도에 대응하는 하나 또는 수개의 차원을 갖는 변조된 신호,
- 신호 변복조, 측정, 데이터 분석, 데이터베이스 인덱싱 또는 검색, 컴퓨터에 의한 보기, 그래픽 처리, 하나 이상의 차원에 따라 배치되는 기본 정보에 의해 나타나는 시뮬레이션,
- 더 일반적으로, 하나 이상의 차원을 갖는 객체.
본 발명에 있어서, 객체의 기본 정보는 절대 위치 및/또는 스케일, 특히, 공간 및/또는 시간 및/또는 주파수를 가질 수 있지만, 동등하게는, 객체의 차원들 중 적어도 하나 외에도 임의의 다른 공간, 특히, 웨이블릿(wavelet)으로 이루어지는 공간에 따르면:
- "오디오" 객체에 대한 기본 정보는 강도(intensity)에 대응할 수 있다; 이 경우, 기본 정보는 주어진 시간적 순간, 및 다중 채널 사운드의 경우, 주어진 채널에 대응하는 절대 위치를 가질 수 있다.
- "화상" 객체에 대한 기본 정보는 픽셀에 대응할 수 있으며; 이 경우, 기본 정보는 화상 내의 위치에 대응하는 절대 위치, 비디오 화상의 경우, 주어진 시간적 순간을 갖는다.
- "데이터 시뮬레이션" 객체에 대한 기본 정보는 상태(status)에 대응할 수 있으며; 이 경우, 기본 정보는 메쉬 노드 및 주어진 시간적 순간에 대응하는 절대 위치를 가질 수 있다.
- "변조된 신호" 객체에 대한 기본 정보는 강도 및/또는 위상에 대응할 수 있으며; 이 경우, 기본 정보는 주어진 시간상의 지점 및, 가능하다면, 주어진 주파수 및/또는 수개의 안테나 또는 송신기가 사용되는 경우 주어진 위치에 대응하는 절대 위치를 갖는다.
기본 정보는, 하나 또는 수개의 수치에 의해 표현되는 처리 대상인 정보의 구성요소이다. 이러한 정보는 8 비트의 부호화된 코딩(signed coding), 10 비트의 코딩, 또는 16 비트의 부호화된 코딩과 같은 다양한 종류의 코딩에 따라서 코딩될 수 있다. 객체가 화상인 경우, 예를 들어, 기본 정보는 이러한 화상의 픽셀들일 수 있다.
객체들은 디모자이크(demosaicing) 연산 전의 ("raw" 타입의) 미처리된 화상들일 수 있으며, 이 경우:
- 일 대안에 있어서, 기본 정보는 픽셀의 절대 위치에 따라서, 예를 들어, 적색, 녹색 또는 청색에 대응하는 수치에 의해 표현되는 픽셀이다.
- 또 다른 대안에 있어서, 기본 정보는 픽셀들의 집합(예를 들어, 픽셀당 하나의 수치로 표현되는 "Bayer"에 대응하는 2*2 녹색, 적색, 및 청색 픽셀들의 그룹)이다.
객체들은 또한 가시 화상일 수 있으며, 이 경우, 기본 정보는, 예를 들어, 각각 컬러, 예컨대, 적색, 녹색, 및 청색을 나타내는 3개의 수치에 의해 표현되는 픽셀이다.
객체들은 또한 화상들의 시퀀스일 수 있으며, 특히, 미처리 또는 가시적인 화상들의 시퀀스일 수 있으며, 이 경우, 기본 정보는 화상들의 시퀀스로부터의 화상의 픽셀이다. 따라서, 객체들은, 예를 들어, 비디오에 대응한다.
객체가 화상인 경우, 촬상 장치로부터 화상이 수신될 수 있으며, 및/또는 화상 렌더링 장치로 향할 수 있다.
- 촬상 장치로서는, 예를 들어, 1회용 카메라(disposable camera), 디지털 카메라, 리플렉스(reflex) 카메라(디지털 또는 비디지털), 스캐너, 팩스, 내시경, 비디오 카메라, 캠코더, 감시 카메라, 장난감, 전화기, PDA, 또는 컴퓨터에 통합 또는 연결된 비디오 카메라 또는 카메라, 열 카메라, 초음파 기기, MRI(magnetic resonance) 조영기, X-레이 방사선 촬영기가 있다.
- 화상 렌더링 장치로서는, 예를 들어, 스크린, 프로젝터, 텔레비전, 가상 실현 고글, 또는 프린터가 있다.
- 촬상 및 화상 렌더링 장치로서는, 예를 들어, 스캐너/팩스/프린터, 콤팩트 사진 인쇄 랩(lab), 비디오 회의 장치가 있다.
처리 플랫폼은 어플리케이션에 따라 상이한 형태를 취할 수 있다. 예를 들어, 객체가 화상인 경우, 처리 플랫폼은 이하의 장치들 중 하나에 통합되는 경우가 인용되게 된다:
- 처리된 화상들을 생성하는 촬상 장치, 예를 들어, 처리 플랫폼을 통합한 디지털 카메라.
- 처리된 화상들을 표시 또는 인쇄하는 화상 렌더링 장치, 예를 들어, 처리 플랫폼을 포함하는 비디오 프로젝터 또는 프린터.
- 이러한 요소들 상의 결점을 보정하는 복합기, 예를 들어, 처리 플랫폼을 포함하는 스캐너/프린터/팩스.
- 처리된 화상들을 생성하는 프로페셔널 촬상 장치, 예를 들어, 처리 플랫폼을 포함하는 내시경.
처리 플랫폼은 서버 상에 전체적으로 또는 부분적으로 이송될 수 있다.
플랫폼에서 객체에 적용되게 되는 처리는, 하나 이상의 일반 연산들의 시퀀스에 의해 기술되는 알고리즘에 대응하며, 이는, 예를 들어, 화상 처리, 데이터 압축 및 해제, 오디오 처리, 신호 변복조, 측정, 데이터 분석, 데이터베이스 인덱싱 또는 검색, 컴퓨터에 의한 보기, 그래픽 처리, 시뮬레이션, 또는 고품질 데이터를 포함하는 임의의 분야 등의 다양한 분야에 관한 것일 수 있다. 일반 연산은, 사이즈나 형태 또는 시간에 대한 개념 없이 논리 블록들, 즉, 추상 개체들에 적용하는 연산이다.
일반 연산들은 논리 블록들을 생성할 수 있다. 바람직하게는, 적어도 하나의 논리 블록은 처리 대상 객체에 대응한다.
또한, 일 실시예에서, 본 방법은 플랫폼에서 객체의 토폴로지에 따라서 제1 데이터와는 독립적으로 기본 정보에 대한 스크롤링 모드를 결정하는 단계를 포함하며, 이 스크롤링 모드의 결정은 이하의 선택 및/또는 계산을 포함한다:
- 하부객체들에서 그 기본 정보의 그룹의 선택 및 계산, 각각은 N개의 기본 정보를 포함하며, 플랫폼에 따라 결정되며, 플랫폼에서의 처리는 하부처리 연산을 주기적으로 론칭하는 것을 포함하고, 이는 특정 연산의 시퀀스를 하부객체에 적용하는 것을 포함한다,
- 플랫폼에 따라 결정되는 하부객체들의 형태 및 오버레이의 선택 및 계산,
- 플랫폼에 따라 결정되는 하부객체들의 처리 순서의 선택 및/또는 계산.
처리에 필요한 루프들의 집합을 결정하고, 및/또는 특정 연산 시퀀스를 계산하는 것을 포함하는 전술한 단계들은, 이러한 스크롤링 모드를 설명한다.
예를 들어, 2개의 수평 및 수직 차원을 갖는 화상인 경우, 플랫폼의 아키텍처가 이하와 같은 경우: 하나의 동일한 라인의 4개의 연속된 픽셀들을 처리할 수 있는 4개의 프로세서에서, Q=4 이면, 이하의 스크롤링 모드가 결정될 수 있다:
- 기본 정보를 하나의 동일한 라인으로부터 4개의 연속 픽셀들의 하부객체들로 그룹화한다, 여기서, 하부객체들은 중첩되지 않는다,
- 이하의 순서로 하부객체들을 처리한다: 상측에서 하측으로 라인 단위로, 한 라인 내에서 좌측에서 우측으로
- 이하에 대하여 대응 루프를 결정한다
ㅇ 상측에서 하측으로 각각의 라인에 대하여
ㅇ 좌측에서 우측으로 4개 픽셀의 각 그룹에 대하여
ㅇ 4개의 프로세서에 대하여 동시에 동일한 특정 연산을 수행함으로써 4개 픽셀들의 그룹에 대한 특정 연산의 시퀀스를 수행한다.
본 예에 있어서, 스크롤링 모드는 플랫폼의 아키텍처에 따라, 객체의 토폴로지에 따라, 제1 데이터와는 독립적으로 결정되었다. 예를 들어, 스크롤링 모드는 이하의 일반 연산의 시퀀스들 중 임의의 하나와 호환가능하다:
- 3*1 수직 F1 필터를 적용하고, 그 후 1*3 수평 F2 필터를 적용한다,
- 상수 3을 기본 정보에 추가한다,
- 또는, 일반 연산 중 임의의 다른 시퀀스.
바람직하게는, 각 하부객체의 처리는 Q 프로세서에 걸쳐 분산되며, 그 각각은 특정 연산 시퀀스에서 적어도 하나의 특정 연산 IS8을 수행한다. 따라서, 각 하부객체에 대하여 모든 프로세서들이 사용되며, 하부객체의 집합에 대하여 하나의 프로세서가 사용된다. 따라서, 하부객체들이 프로세서들에 지정될 필요가 없다.
바람직하게는, 하부객체를 처리하기 위해 특정 연산이 프로세서에 의해 수행되는 경우, 모든 다른 하부객체들을 처리하기 위해 동일한 프로세서에 의해 동일한 특정 연산이 또한 수행된다. 따라서, 프로세서들에 특정 연산이 지정된 후에, 각각의 하부객체 하부처리 연산에 대하여 주기적으로 수행되어, 처리가 규칙적이다.
바람직하게는, 처리에 필요한 루프들의 집합은 객체의 토폴로지 및 플랫폼에 의존하지만, 특정 연산들의 시퀀스와는 독립적이다.
바람직하게는, 루프들은 특정 연산들의 시퀀스 전체 주변에서 서로 포함된다. 이와 같이, 루프들은 특정 연산들의 시퀀스 전체를 포함하며, 특정 연산들의 시퀀스는 각각 루프들에 의해 둘러싸인 하부 시퀀스들로 분할되지 않는다. 동일한 방법으로, 전체 객체를 저장하거나, 특정 연산에 대한 결과들의 집합을 저장할 필요 없이, 또 다른 하부객체의 처리에 필요한 결과들을 임시적으로 저장하기만 하여, 동시에 하부객체를 처리함으로써 객체가 처리될 수 있다. 그렇게 하여 메모리의 사용이 감소된다.
바람직하게는, 하부객체들은 연속적인 기본 정보로 이루어진다. 따라서, 적어도 하나의 큐를 포함하는 프로세서들의 체인을 구현할 수 있다.
일 실시예에서, N개의 기본 정보의 하부객체를 처리하기 위해, 시퀀스에 대한 각각의 특정 연산은 총 N회 각각의 Q 프로세서에 대하여 N/Q 회 실시된다. 특정 연산들의 시퀀스가 조건적인 연결을 포함하는 경우, 각각의 프로세서는 이 조건적 연결을 설명하는 시퀀스의 일부를 수행한다.
일 실시예에서, 하부객체들은 적어도 하나의 차원에 따라 오버레이되지 않는다. 이러한 경우, 하부 객체의 처리 중에 생성되는 적어도 하나의 특정 연산 결과는 또 다른 하부 객체의 처리 중에 사용된다.
바람직하게는, 하부객체들은 임의의 차원에 따라서 중첩되지 않는다. 이러한 경우, 각각의 프로세서는 계산을 반복하지 않고 100%로 사용될 수 있다.
바람직하게는, 특정 연산들의 시퀀스는 시퀀스의 적어도 하나의 특정 연산(k)이 N번 적용 중에 적어도 한번 생성하도록 이루어지며, 그 결과는 또 다른 하부객체를 처리하는 데 사용된다.
바람직하게는, 하부객체의 하나의 동일한 차원을 따라서 수개의 순환적 체인이 존재하는 경우(특히, 프로세서들이 격자에 따라서 배치되는 경우), 동일한 차원에 따른 모든 순환적 체인들 사이에서 큐가 공유된다. 바람직하게는, 각각의 하부객체의 차원에 대하여 정확하게 하나의 큐가 존재하며, 동일한 차원에 따른 순환적 체인 모두 사이에서 각각의 큐가 공유된다. 이 경우, 프로세서들 사이의 통신이 특히 간단하다. 이러한 경우, 메모리의 구성은 특히 간단하다.
본 발명에 따르면, 주기적으로 하부처리 연산의 론칭은, 정확하게 일정한 간격을 의미할 필요는 없으며, 계산에 필요한 데이터와 메모리에의 액세스의 동기화는 주기를 변경하기 쉽다.
일 실시예에서, N은 Q의 배수가 아니다. 본 실시예의 대체예에서, Q는 일반 연산들의 시퀀스를 변환함으로써 구해지는 시퀀스의 특정 연산들의 수량과 동일하다.
일 실시예에서, N은 Q의 배수이다. 이는 처리를 규칙적이게 한다. 바람직하게는, N = Q 이다. 이는 임시 결과를 저장하기 위해 필요한 메모리의 수량을 감소시킨다.
일 실시예에서, Q = 1 및 N = 4 이다. 이는 하나의 동일한 특정 연산의 수개의 적용에 대하여 동일한 파라미터 값의 재사용을 가능하게 한다.
일 실시예에서, Q>1 및 N=Q이다. 이는 벡터 신호 프로세서의 Q 계산 유닛의 100% 사용을 가능하게 한다.
일 실시예에서, Q>1 및 N은 Q의 배수이다. 이는 벡터 신호 프로세서의 Q 계산 유닛의 100% 사용을 가능하게 하며, 하부객체의 처리시 수행되어, 또 다른 하부객체의 처리에 사용되는 특정 연산의 결과의 수량을 감소시킨다.
데이터가 저장되는 메모리 슬롯은, 예를 들어, 이 데이터가 재사용되게 되는 시간에 의존한다. 따라서, 레지스터, 고속 액세스 메모리, 또는 저속 메모리에 데이터가 저장될 수 있다.
일 실시예에서, 스크롤링 모드의 결정은 특정 연산들의 시퀀스의 특정 연산(들)이 각각의 프로세서에 의해 수행되는지를 결정하는 단계를 포함하며, 각각의 연산은 각각의 하부 객체에 대하여 적어도 N회 적용되며, 각각의 특정 연산은 N회 적용 중에 하부객체의 기본 정보를 각각에 대하여 적어도 한번 직접 또는 간접적으로 적용하여, 정확하게 N개의 결과를 생성한다. 또한, 본 방법은 특정 포맷 데이터에 대하여 이에 따라 결정되는 정보를 추가하는 단계를 포함한다.
일 실시예에서, 각각의 프로세서는 특정 연산들의 시퀀스 중 모든 연산들을 수행한다.
하부처리 연산은 주기적으로 론칭되며, 바람직하게는, 주어진 프로세서에 의해 수행되는 특정 연산들은 각각의 주기에서 동일하다.
일 실시예에서, 스크롤링 모드가 주기의 상대 횟수 각각에서, 특정 연산들의 시퀀스 중 어느 특정 연산(들)이 각각의 프로세서에 의해 수행되는지를 결정하는 단계를 포함하며, 각각의 연산은 각각의 하부객체에 대하여 적어도 N번 적용되며, 각각의 특정 연산은 자신의 N번 적용 중 적어도 한번 각각의 하부객체의 기본 정보를 직접 또는 간접적으로 적용하고, 정확하게 N개의 결과를 생성한다. 또한, 본 방법은 이에 따라 결정되는 정보를 특정 포맷 데이터에 추가하는 단계를 포함한다. 일 실시예에서, 모든 프로세서들은 동시에 동일한 특정 연산을 수행한다. 또 다른 실시예에서, 모든 프로세서들은 연속적으로 동일한 특정 연산을 수행하며, 이는 회귀적(recursive) 필터를 수행할 수 있도록 한다.
또 다른 실시예에 있어서, 특정 연산의 시퀀스는 자신의 N회 적용 중에 각각 적어도 한번 시퀀스와는 구별되는 적어도 2개의 특정 연산들을 생성하도록 이루어지며, 그 결과는 또 다른 하부객체의 처리를 위해 사용된다.
본 방법은 또한, 특정 연산에 따라서, 결정된 스크롤링 방법에 따라서 특정 포맷 데이터를 계산하는 단계를 포함한다.
2개의 논리 블록의 상대적 스케일 및 상대적 위치에 대한 개념은 특히 이하를 허용하지만, 그 리스트는 제한적인 것은 아니다:
- 수개의 논리 블록들의 조합, 및/또는
- 스케일 변경
- 및/또는 이웃에 대한 필터의 생성
- 및/또는 표현의 변경
본 발명에 있어서, 논리 블록들은 일반 연산에 따른 수개의 타입을 갖는데, 예를 들면, 객체가 화상인 경우,
- 적어도 하나의 논리 블록은, "미처리된" 타입,
- 적어도 하나의 논리 블록은 적색 타입,
- 적어도 하나의 논리 블록은 녹색 타입,
- 적어도 하나의 논리 블록은 청색 타입, 및/또는
- 적어도 하나의 논리 블록은 8 비트 데이터에 의해 표현될 수 있으며, 및/또는
- 적어도 하나의 논리 블록은 16 비트 데이터에 의해 표현될 수 있다.
- 적어도 하나의 논리 블록은 n 비트, 예를 들어, 10 또는 12 비트의 데이터에 의해 표현될 수 있다.
일 실시예에서, 적어도 하나의 논리 블록은 멀티-스케일 데이터를 포함하며, 예를 들어, 1, 1/2, 1/4, 및 1/8 스케일의 데이터를 포함한다. 이는 수개의 스케일에서 일반 연산을 수행한 후 그 결과를 조합할 수 있도록 한다.
알고리즘은, 예를 들어, 이에 한하지는 않지만, 객체가 화상인 경우 이하에 대응할 수 있다:
- 특히, 정적 기반의(static-based) 자동 화이트 밸런스(automatic white balance)의 계산, 및/또는
- 특히, 정적 기반의 자동 노출(automatic exposure)의 계산, 및/또는
- 특히, 정적 기반의 자동 포커싱의 계산, 및/또는
- 특히, 정적 기반의 자동 콘트라스트 향상의 계산, 및/또는
- 미처리된 화상을 가시 화상으로 변환("이미지 파이프(image pipe)" 또는 "화상 신호 처리(ISP)"), 및/또는
- 광학적 결함의 보정, 및/또는
- 필드의 깊이의 향상, 및/또는
- 특허 출원서 PCT/FR2006/050022 "Method for creating an image capturing and/or rendering device, and device obtained by this method" 및 특허 출원서 PCT/FR2006/050197 "Method for commnading an action, notably a modification of sharpness, using a digital colour image" 에 기재된 처리 연산, 및/또는
- 센서 결함의 보정, 및/또는
- 이미저(imager) 결함의 보정, 및/또는
- 특히, 선명도 향상을 위한 처리 연산, 및/또는
- 특히, 컬러 재현성(colour rendition)을 위한 처리 연산, 및/또는
- 특히, 콘트라스트 재현성의 향상을 위한 처리 연산, 및/또는
- 특히, 세부 재현성의 향상을 위한 처리 연산, 및/또는
- 잡음 감소, 및/또는
- 측정, 및/또는
- 압축, 및/또는
- 압축해제, 및/또는
- 보간 또는 확대(줌), 및/또는
- 스캔, 및/또는
- 특수 효과.
처리 대상 객체는 일반적으로 처리 중에 하부객체들로, 즉, 공간과 시간 쌍방에서, 또는 객체의 다른 차원들에서 소정의 사이즈와 형태를 갖는 기본 정보의 그룹들로 분해된다.
하부객체들은, 경우에 따라서, 특히, 메모리의 종류와 사이즈의 측면에서 뿐만 아니라 벡터 신호 프로세서의 경우 벡터의 사이즈의 측면에서 플랫폼의 특징, 또한, 처리 대상 객체의 특징에 의존하는 형태와 사이즈를 갖는 기본 정보의 집합들이다.
상이한 가능한 하부객체들로의 분해의 종류는, 오버레이 없이 도 1a 내지 도 1d에 도시되어 있다. 이 도면들에서, 하나의 동일한 화상은 라인들(도 1a에서, 라인 90, 91, 92, 및 93)로, 열들(도 1b에서, 열들 94, 95, 96, 및 97)로, 임의의 다른 형태의 하부객체들(도 1c에서, 형태 70, 71, 72, 및 73)으로, 또는 직사각형들(도 1d에서, 형태 60, 61, 62, 63, 64, 65, 66, 및 67)로 분할되어 있다.
하부객체들이 오버레이가 없는 경우, 예를 들어, 필터의 계산 시, 1 빼기 하부객체에 대한 기본 정보가, 에지를 손실하지 않고서 하부객체들의 기본 정보를 처리하도록 액세스될 필요가 있다.
하부객체들로의 분해는, 예를 들어, 하나의 차원에 따라서 요구되는 오버레이를 결정하기 위해, 제2 데이터, 특히, 순서상의 총 상대 변위 데이터에 의존할 수도 있다.
또한, 일 대체예에서, 일반 연산의 일부가 널(Null) 변위를 갖지 않으므로, 알고리즘의 실행 중에 기본 정보가 손실되지 않는 경우, 화상은 적어도 하나의 차원에 따라서 널이 아닌 오버레이를 갖는 하부객체들로 분해된다.
이러한 구성은 도 1e 및 도 1f에 도시되어 있으며, 도 1e는 연산의 시퀀스가 각각의 에지에서 하나의 픽셀을 손실하는 경우의 6x6 기본 정보를 포함하는 하부객체를 나타내며, 도 1f는 100개의 기본 정보를 포함하는 객체를 나타낸다.
본 도면에 있어서, 하부객체들은 4개의 직사각형(80, 82, 83, 및 84)이며, 각각 36개의 기본 정보를 포함하는 것으로 도시되어 있다. 직사각형(80)은 화상의 좌측 상부에 위치하는 36개의 기본 정보로 이루어지며, 직사각형(82)은 화상의 우측 상부에 위치하는 36개의 기본 정보로 이루어진다. 따라서, 8개의 기본 정보(86)는 하부객체 80 및 82에 쌍방에 대하여 공통이다.
또한, 8개의 기본 정보(85)가 2개의 하부객체(80 및 83)에 대하여 공통이며; 8개의 기본 정보(88)가 2개의 하부객체(82 및 84)에 대하여 공통이며, 8개의 기본 정보(89)가 2개의 하부객체(83 및 84)에 대하여 공통이다. 마지막으로, 4개의 기본 정보(87)가 하부객체(80, 82, 83, 및 84)에 대하여 공통이다.
객체가 화상인 경우, 일 실시예에서, 화상은 병렬의 직사각형 하부객체들로 분해되며, 하부객체들은, 예를 들어, 좌측에서 우측으로 상측에서 하측으로 처리되게 된다.
플랫폼에 따라서, 하부 객체들은, 이에 한하지는 않지만, 이하의 방법 중 하나에 따라서 선택 및 저장된다.
- 작은 고속 액세스 메모리와 큰 저속 메모리를 갖는 신호 처리 프로세서의 경우, 하부객체의 사이즈는 저속 메모리에 액세스하지 않고 하부객체를 처리할 수 있도록 선택된다; 예를 들어, 32x32 픽셀의 정사각형에 대응하는 하부객체들을 취할 수 있다: 이전의 하부객체에 대한 계산의 결과는 현재의 하부객체에 대한 계산 중에 저속 메모리에 전달되며, 이하의 하부객체에 대한 계산에 대하여 필요한 데이터는 저속 메모리로부터 고속 메모리로 전달된다.
- 작은 캐쉬 메모리와 큰 저속 메모리를 갖는 스칼라 프로세서의 경우, 가능한 한 캐쉬 메모리를 이용하여 하부객체의 처리를 수행할 수 있도록 하부객체의 사이즈가 선택되며; 예를 들어, 32x32 픽셀의 정사각형에 대응하는 하부객체 또는 1 픽셀의 하부객체 또는 4 픽셀의 하부객체를 취할 수 있으며, 특히, 미처리된 화상의 경우, "원본(raw)" 형태를 취할 수 있다.
- 벡터 신호 프로세서의 경우, 하부객체의 사이즈는 플랫폼이 처리하고 저장할 수 있는 벡터의 사이즈와 동일하거나 그 배수로서 선택되며, 예를 들어, 64개의 수평 픽셀에 대응하는 하부객체들이 취해질 수 있다.
화상에 대하여 객체가 상이한 종류인 경우, 플랫폼과 마찬가지의 방법으로 하부객체들로의 분해가 채택될 수 있다.
C와 같은 언어에 있어서, 이러한 하부 객체들로의 분해와 대응 루프의 코딩은 플랫폼에 따라서 명시적이어야 하며, 각각의 플랫폼에 대하여 수동으로 수행되어야 한다. 코딩된 루프로부터 명시적으로 하부객체들을 추출하고자 하는 벡터 신호 컴파일러라는 것이 존재하지만, 이를 자동적으로 코딩하기 전에 알고리즘 개념을 추출해야 하며, 이는 매우 어려우므로, 그 효율성은 제한된다. 본 발명은 따르면 임의의 플랫폼에 대한 적응화의 효율성의 증대와 자동화를 가능하게 한다.
이하의 표는 본 발명과 공지의 언어와의 주요 차이점을 요약한 것이다.
본발명 공지의 언어 C의 예
연산의 시퀀스 수동으로 코딩 수동으로 코딩 수동으로 코딩
상대 변위 및 상대적 스케일 자동화되고 최적화된 코딩(루프, 메모리 액세스, 등) 루프와 매모리 액세스의 수동 코딩을 필요로 함 루프와 메모리 액세스의 수동 코딩을 필요로 함
루프 플랫폼에 따라서 자동화되고 최적화된 코딩, 시퀀스에 루프가 없음 수동 코딩, 컴파일러는 연산 사이의 의존성을 설명하는 순서를 탑재할 수 있음. 수동 코딩, 컴파일러는 연산 사이의 의존성을 설명하는 순서를 탑재할 수 있음.
메모리 내의 데이터의 구성 플랫폼에 따라서 자동화되고 최적화된 코딩, 시퀀스 내에서 저장된 데이터의 구성에 대한 정보는 없음. 자동이지만, 어떤 경우는 저속(Java) 수동 코딩, 컴파일러 는 연산 사이의 의존 성을 설명하는 구성을 변경시킬 수 있음.
에지의 관리 자동화되고 최적화된 코딩 수동 코딩을 필요로 함 수동 코딩을 필요로 함
저속 메모리의 고속 메모리로의 교환 자동화되고 최적화된 코딩 최적화 또는 수동 코딩을 필요로 함 최적화 또는 수동 코딩을 필요로 함
레지스터의 할당 자동 자동 자동
인스트럭션의 스케쥴링 자동 자동 자동
일단 이러한 하부객체들로의 분해가 수행되면, 일 실시예에서, 프로세서들에 특정 연산들이 지정될 수 있다. 매 회에 있어서, 프로세서 없이 또는 하나 이상의 프로세서에 의해 특정 연산이 수행될 수 있다. 이러한 선택은, 특히, 플랫폼의 아키텍쳐, 즉, 프로세서의 종류와 상이한 프로세서들의 구성에 의존한다. 또한, 이러한 아키텍처는 데이터의 전송에 의존한다, 즉, 기본 정보 및/또는 하나의 프로세서로부터 다른 프로세서로의 특정 연산의 결과에 의존한다. 이러한 경우, 2개의 하부처리 연산의 2개의 연속적인 론칭 사이의 시작을, T 라 하면, t+k*T 의 시간상의 지점에서(여기서, t는 임의의 시점, k는 임의의 정수), 플랫폼은 적어도 하나의 하부객체(j)에 대하여 시간 t에서 적어도 하나의 하부객체(i)에 대하여 수행된 것과 동일한 연산을 수행하며, 이러한 특정 연산은 자신의 대응 하부객체(들)에서의 동일한 상대적 위치를 갖는 특정 연산의 결과 및/또는 기본 정보에 적용된다. 이는 모든 하부처리 연산들은 동일하다는 것을 의미하며, 하나의 하부처리 연산만이 명시적으로 작성되어, 수회 적용될 것을 필요로 하므로, 비교적 작은 사이즈의 코드를 발생시킨다. T는 2개의 하부처리 연산의 2개의 연속적인 론칭 사이의 시간 주기이며, 이 값은 하부처리 연산의 전체 실행에 필요한 시간과 반드시 동일할 필요는 없다. 실제로, 이전의 하부처리 연산이 완료되기 전에 하부처리 연산이 론칭될 수 있으며, 이는 예컨대 시간을 절약한다.
이러한 경우가 도 2에 도시되어 있으며, 여기서, 하부처리 연산(ST2)가 시작하는 때에 하부처리 연산(ST1)이 완료되지 않았음을 알 수 있다. 또한, 하부처리 연산(ST3)가 론칭되는 때에 하부처리 연산(ST2)이 여전히 실행중이다.
일 실시예에서, 특정 연산의 프로세서에 대한 지정 및/또는 각각의 특정 연산이 수행되는 시간의 선택은, 특정 포맷 데이터를 이용하여 플랫폼의 컴파일러에 의해 결정된다.
알고리즘을 최대로 최적화하기 위해, 가능한 한 일정하게 처리 연산을 실행시키는 것이 유용할 수 있다. 이를 위해, 본 발명의 실시예 중 하나에 있어서, 본 방법은, 각각의 하부객체에 적용되어야 하는 특정 연산의 수량이 프로세서(Q)의 수량의 배수가 아닌 경우, 및/또는 처리 대상 객체의 기본 정보의 수량이 N의 배수가 아닌 경우, 특정 연산의 수량이 Q의 배수이고, 기본 정보의 수량이 N의 배수가 되도록, 효과 및/또는 널 기본 정보 없이 특정 연산을 추가한다.
본 발명에 따르면, 널(null) 기본 정보는 임의의 내용의 사용되지 않는 기본 정보 및/또는 다른 기본 정보 및/또는 계산에 의해 얻어지는 기본 정보의 복사에 의해 얻어지는 기본 정보를 의미한다.
일 실시예에서, 일반 연산의 시퀀스는 적어도 하나의 기본 정보의 집합, 소위, 논리 블록에 적용되며, 일반 포맷 데이터는 상대적 위치 및/또는 상대적 스케일이라 하는 적어도 2개의 논리 블록을 포함하는 일반 연산을 위해, 논리 블록들의 서로에 대한 시간 또는 공간의 제2 데이터를 포함하며, 여기서, 각각의 특정 연산이 적용되어야 하는 특정 연산의 결과 및/또는 기본 정보는 제2 데이터에 의존하며, 논리 블록들의 서로에 대한 적어도 하나의 상대적 위치가 널(null)이 아닌 경우, 적어도 하나의 특정 연산은, 직접 또는 간접적으로 또 다른 하부객체의 적어도 하나의 기본 정보를 포함한다. 이 경우, 임의의 2개의 논리 블록들 사이의 위치와 상대적 스케일은 제2 데이터를 이용하여 계산될 수 있다. 물리 블록의 구성요소 각각의 절대 위치 및 그 스케일 뿐만 아니라 각각의 대응하는 물리 블록의 사이즈는 이로부터 공제될 수 있다.
본 발명의 일 실시예에서, 일반 연산으로서는, 객체의 차원 중 하나에 따라서 절대 위치로 이루어지는 논리 블록을 발생시키는 적어도 하나의 일반 위치 연산, 뿐만 아니라 제3 블록 또는 파라미터에 따라서 변위 및/또는 스케일의 변경에 의해 제1 블록으로부터 제2 블록을 발생시키는 일반 인디렉션(indirection) 연산을 포함한다.
또 다른 실시예에 있어서, 일반 연산으로서는 이하의 그룹 중 하나에 포함되는 적어도 하나의 기본 일반 연산을 포함한다: 논리 블록 및/또는 파라미터의 가산, 논리 블록 및/또는 파라미터의 감산, 논리 블록 간의 차이의 절대값의 계산, 논리 블록 및/또는 파라미터의 승산, 적어도 2개의 논리 블록 및/또는 파라미터 중 최대값의 계산, 적어도 2개의 논리 블록 및/또는 파라미터 중 최소값의 계산, 논리 블록들의 그룹화 및 그룹화 해제, 파라미터를 논리 블록에 적용함으로써 상관 테이블에 대응하는 논리 블록의 계산, 적어도 2개의 논리 블록 및/또는 파라미터 중 논리 블록의 조건 선택 (선택은 이하와 같이 이루어진다: a>b 라면, c가 선택되고, 그렇지 않다면, d가 선택된다(여기서, a, b, c, 및 d는 논리 블록 및/또는 파라미터), 논리 블록에 대한 막대 차트, 파라미터 및/또는 논리 블록에 따른 논리 블록의 스케일 변경, 파라미터 및/또는 논리 블록에 따른 논리 블록의 상대 변위, 및 적어도 하나의 좌표를 포함하는 블록을 생성하는 연산을 포함한다.
가산(addition)과 같은 논리 블록과 파라미터를 포함하는 일반 연산은, 플랫폼에서의 처리에 있어서 변환될 수 있으며, 예를 들어, 일반 연산이 가산에 관한 것인 경우, 논리 블록에 대응하는 처리되는 물리 블록의 각각의 구성요소 또는 기본 정보를 처리 대상의 구성요소 또는 기본 정보의 절대 위치에 대응하는 파라미터의 값과 가산하는 것에 대응할 수 있다.
이러한 연산들은 그 자연적인 특성에 의해 화상 처리에 있어서 또한 다른 종류의 객체의 처리에 있어서, 비교적 표준적인 연산들이다. 그러나, 제2 데이터와 조합하여 논리 블록들에 적용되는 경우, 문제에 대한 해결책을 제공한다. 이러한 연산들은 데이터 처리 알고리즘에서 구현될 수 있는 연산들 모두를 형성하기 위한 기본으로서 작용한다.
따라서, 일 실시예에서, 일반 연산은 자체적으로 사용되는 기본적인 일반 연산들의 그룹에 대응하는 복합 일반 연산들을 포함한다. 이러한 그룹들은 특히 이하를 포함한다: 적어도 3개의 논리 블록 및/또는 파라미터의 중간값의 계산, 이는 최대 및 최소치의 계산으로 이루어지는 일반 연산들의 그룹에 대응함, 논리 블록 및/또는 파라미터의 승산/누산, 파라미터와 논리 블록의 콘볼루션, 이는 수개의 상대적 위치들과의 승산 및 가산으로 이루어지는 일반 연산들의 그룹에 대응함, 최대 및 최소치와 조합된 가산, 계조값의 계산, 이는 2개의 상대적 위치들과 차이의 절대값에 대응함, 논리 블록을 생성하기 위해 벡터로 이루어지는 파라미터와 수개의 논리 블록들의 스칼라 적, 수개의 상대적 위치들과의 스케일 변경 및 승산 및 가산으로 이루어지는 일반 연산들의 그룹에 대응하는 보간으로 스케일 변경을 계산, 및 논리 블록들의 조합, 이는 수개의 상대적 위치들과의 스케일 변경으로 이루어지는 일반 연산들의 그룹에 대응함.
연산들 중 일부는 수개의 논리 블록들을 포함한다. 이 경우, 제2 데이터는 서로에 대하여 구현된 논리 블록들의 위치에 상대적으로 제공되는 것으로 나타났다.
상대적 위치와 상대적 스케일, 특히, 공간 및/또는 시간은 객체의 종류에 따라 다양한 개념에 대응할 수 있다. 이들은 그 종류에 무관하게 임의의 2개의 블록들 사이에 적용된다(전술한 바와 같은 화상의 경우, 논리 블록은 특히 처리되지 않거나, 적색, 녹색, 8 비트, 등일 수 있음).
객체가 정사각형의 픽셀을 갖는 정지 화상인 경우, 절대 또는 상대적 위치는 일 실시예에서 2개의 값(수직 및 수평)에 대응할 수 있으며, 절대 또는 상태 스케일은 2개의 값(수직 및 수평)에 대응할 수 있다; 객체의 최상 라인의 픽셀들은 절대 위치(0;0), (0;1), (0;2), ... 등을 가질 수 있으며, n번째 라인의 픽셀들은 절대 위치 (n;0), (n;1), (n;2)을 가질 수 있다; 이 경우, 이하와 같이 상대적 위치들이 코딩될 수 있다: (-1;0)은 최상부를, (0;1)은 우측을, (2;-2)는 아래의 2개의 픽셀 및 좌측의 2개의 픽셀을을 나타낼 수 있다; (0.5;0.5)의 상대적 스케일은 각각의 방향에서 해상도의 절반에 대응한다.
더 일반적으로, 상대적 변위와 상대적 스케일의 조합이 이하와 같은 방식으로 2개의 함수 f 및 g를 이용하여 코딩될 수 있다: 절대 위치 x, y의 각각의 픽셀에 대하여 (f(x;y);g(x;y)). 예를 들어, 가장 근접한 픽셀을 취하기 위해 라운드 오프 법칙이 필요하다는 것을 유념해야 한다. 따라서:
- 상기 상대적 위치는 f(x;y) = -1 및 g(x;y) = 0으로 코딩된다
- 0.7의 상대적 스케일은 f(x;y)= 0.7*(x-x0) 및 g(x;y)= 0.7*(y-y0)로 코딩되며; x0 및 y0는 절대 불변 위치에 대한 파라미터에 대응한다;
- 디스토션 보정은 목적지 필드에 대응하는 f 및 g로 코딩된다.
- YUV 4:2:2 포맷 변경, 즉, 별도의 Y, U, 및 V 명도 및 색차(chrominance) 정보를 이용한 YYUV 는, Y1 Y2 Y3 Y4 ... 를 이용하여 Y1 Y2 xx xx Y3 Y4 xx xx 를 ... 얻기 위해, x가 짝수인 경우 다음 함수 f(x:y) = (x-x0)*0.5 를 이용할 수 있으며, x-x0가 홀수이고, f(y) = y-y0인 경우 (x+1 - x0)*0.5를 이용할 수 있으며; x0 및 y0는 절대 위치에 대한 파라미터에 대응한다.
이하의 예시적인 목록은 상이한 종류의 객체를 갖는 실시예의 다른 예들을 제공한다.
- 객체가 선마다 위치된 육각형의 픽셀을 가지며, 2개의 연속적인 라인들이 반 픽셀만큼 오프셋되어 있는 정지 화상인 경우, 절대 또는 상대적 위치 및 절대 또는 상대적 스케일은 각각 2개의 값(수직 및 수평)에 대응할 수 있다; 객체의 최상 라인의 픽셀들은 절대 위치로서 (0;0) (0;1) (0;2) ...를 가질 수 있으며, n번째 라인의 픽셀들은 절대 위치로서 홀수번째 라인이면 (n;0.5) (n;1.5) (n;2.5) ... 를 가질 수 있으며, 짝수번째 라인이면 (n;0) (n;1) (n;2) ... 를 가질 수 있다; 상대적 위치는 2개의 값(수직 및 수평)에 대응할 수 있다, 예를 들어, (-0.5;0.5)는 우측 상부를 나타내며, (0,1)은 우측을 나타내며, (-0.5;1.5)는 우측 상부 픽셀의 우측에 위치된 픽셀을 나타낸다; (0.5;0.5)의 상대적 스케일은 각각의 방향에서 해상도의 절반에 대응한다. 또한, 상대 변위와 상대적 스케일의 조합은 이하의 방식으로 2개의 함수 f 및 g를 이용하여 코딩될 수 있다: 절대 위치 x, y의 각각의 픽셀에 대하여 (f(x;y); g(x;y)). 예를 들어, 가장 근접한 픽셀을 취하기 위해 라운드 오프 법칙이 필요하다는 것을 유념해야 한다.
- 객체가 정사각형 픽셀들을 갖는 동영상인 경우, 절대 위치 또는 상대적 위치는 3개의 값(수직, 수평, 및 시간)에 대응할 수 있다, 예를 들어, (-1;0;0)는 동일한 화상에서 최상부에 위치한 픽셀을 나타내며, (0;0;-1)은 이전 이미지에서 동일 위치의 픽셀을 나타내며, (2;-2;-1)은 이전 화상에서 아래로 2 픽셀 및 좌측으로 2 픽셀에 위치한 픽셀을 나타낸다. 또한, 아래와 같이 3개의 함수 f, g, h를 이용하여 상대 변위와 상대적 스케일의 조합이 코딩될 수 있다: 시간 t에서 절대 위치 x, y의 각각의 픽셀에 대하여 (f(x;y;t);g(x;y;t));h(x;y;t)). 예를 들어, 가장 근접한 픽셀을 취하기 위해 라운드 오프 법칙이 필요하다는 것을 유념해야 한다.
- 객체가 단일 채널 사운드인 경우, 절대 위치 또는 상대적 위치는 하나의 값(시간)에 대응할 수 있다; 예를 들어, (-1)은 이전 시간 단위를 나타내며, (2)는 2개의 시간 단위 후를 나타내며; 함수 f(t)는 변위와 상대적 스케일의 코딩을 허용한다. 라운드 오프 법칙이 가장 근접한 시간을 취하는 데 사용된다.
- 객체가 다채널 사운드인 경우, 절대 위치 또는 상대적 위치는 2개의 값(시간, 채널)에 대응할 수 있다; 예를 들어, (-1,0)는 동일한 채널의 이전 시간을 나타내며, (2,1)은, 예를 들어, 공간적으로 순환적인 방식으로 구성된 다음 채널에 대한 2 시간 단위 후를 나타낸다. 또한, 상대 변위와 상대적 스케일의 조합이 2개의 함수 f, g를 이용하여 이하와 같은 방법으로 코딩될 수 있다: 채널 c에 대하여 시간 t에서 위치되는 각각의 오디오 샘플에 대하여 (f(t;c);g(t;c)). 예를 들어, 가장 근접한 픽셀을 취하기 위해 라운드 오프 법칙이 필요하다는 것을 유념해야 한다.
객체가 시뮬레이션 메쉬인 경우, 절대 위치 또는 상대적 위치는 n개의 값에 대응하며, 그 각각은 메쉬의 토폴로지에 따른 공간 또는 시간적 차원에 대응한다. 또한, 상대 변위와 상대적 스케일의 조합이 n개의 함수를 사용하여 코딩될 수 있다. 예를 들어, 가장 근접한 픽셀을 취하기 위해 라운드 오프 법칙이 필요하다는 것을 유념해야 한다.
- 객체가 변조된 신호인 경우, 절대 위치 또는 상대적 위치는 각각 시간에 대응하는 n개의 값에 대응할 수 있으며, 주파수 채널(수개의 주파수의 송신 또는 수신)에 적용될 수 있으며, 공간적 차원에도 적용될 수 있다(공간적으로 위치된 수개의 송신기 또는 수신기). 또한, 상대 변위와 상대적 스케일의 조합이 n 개의 함수를 이용하여 코딩될 수 있으며, 라운드 오프 법칙이 선택되어야 한다.
- 객체가 일련의 측정치인 경우, 절대 위치 또는 상대적 위치는 각각 객체의 차원 중 하나에 대응하는 n개의 값에 대응할 수 있으며, 경우에 따라서는, 시간, 공간, 주파수, 위상, 또는 다른 종류일 수 있다. 또한, 상대 변위와 상대적 스케일의 조합이 n개의 함수를 사용하여 코딩될 수 있으며, 라운드 오프 법칙이 선택되어야 한다.
- 객체가 차원 n인 경우, 절대 위치 또는 상대적 위치는 각각 객체의 차원 중 하나에 대응하는 n개의 값들에 대응할 수 있으며, 경우에 따라서는, 시간, 공간, 주파수, 위상, 또는 다른 종류일 수 있다. 또한, 상대 변위 및 상대적 스케일이 n개의 함수를 사용하여 코딩될 수 있으며, 라운드 오프 법칙이 선택되어야 한다.
소정의 특정 연산들은 후속하여 또 다른 하부처리 연산에 대하여 사용될 가능성이 있는 결과를 생성한다. 따라서, 이 결과값들을 결정하고, 이들을 함께 그룹화하여 전송하는 것이 유용하다.
따라서, 일 실시예에서, 본 방법은 제2 데이터에 따라서, 또 다른 하부처리 연산을 위한 후속하는 특정 연산에 대하여 요구되는 특정 연산들의 결과 중 일부를 결정하는 단계를 포함한다.
또 다른 실시예에 있어서, 본 방법은 제2 데이터 및/또는 스크롤링 모드에 따라서 또 다른 하부처리 연산의 후속하는 특정 연산들에 요구되는 특정 연산의 결과들을 메모리에 그룹화하는 단계를 포함한다.
또 다른 실시예에 있어서, 특정 연산은 적어도 하나의 순환적 체인에 따라서 체인된 계산 유닛에 의해 수행되며, 본 방법은 또한 각각의 특정 연산의 제2 데이터에 따라서 상기 특정 연산의 결과가 순환적 체인에 따라서 송신되어야 하는지 여부를 결정하는 단계를 포함한다. 본 방법은, 적용가능한 경우, 제2 데이터에 따라서 또한 스크롤링 모드에 따라서 상기 특정 연산의 결과들을 어느 순환적 체인을 사용하여 송신할지를 결정하는 단계를 포함한다.
이 상이한 실시예들은 서로 독립적으로 또는 조합하여 적용될 수 있다.
바람직하게는, 제2 데이터에 대한 상대 변위 및/또는 상대적 스케일 정보는 주어진 일반 연산에 대하여 변위 및/또는 스케일 변경이 존재하는지 여부에 따라서 차원(들)을 결정하는 데 사용된다. 따라서, 일반 연산들의 시퀀스로부터 변환되는 특정 연산 시퀀스로부터 각각의 특정 연산에 대하여 적용되게 되는 순환적 체인(들)이 결정될 수 있다. 바람직하게는, 상기 순화적 체인은 또한 적어도 하나의 큐를 포함한다.
수개의 연산들이 널(null) 변위를 적용하는 경우, 메모리 내에 각각의 특정 연산의 결과를 기입하고, 다음 연산에 대하여 이들을 재판독하는 것은 무용(useless)하며, 이러한 저장과 재판독의 연산은 시간 낭비가 되고, 처리 연산의 특정적인 장점을 갖지 않는다. 따라서, 일 실시예에서, 특정 포맷 데이터는 특정 연산들을 함께 그룹화하는 것에 관한 정보를 포함하며, 이 그룹은 또 다른 하부처리 연산에 대한 각각의 유용하지 않은 특정 연산의 결과를 저장하지 않고서 하나 이상의 특정 연산들의 패킷들의 형성을 포함한다.
일 실시예에서, 시퀀스의 특정 연산들 모두가 함께 그룹화된다.
일 실시예에서, 일반 포맷 데이터만이 임베드된 루프의 하나의 집합을 포함한다.
또한, 소정의 특정 연산들은 이미 또 다른 하부처리 연산에 사용된 연산 결과들에 적용될 수 있다. 예를 들어, 특정 연산들의 시퀀스가 중간 계산으로부터 3개의 라인을 적용하는 필터를 포함하는 경우, 라인에 대응하는 하부객체들로 분해되는 화상인 경우: 제1 하부객체, 즉, 제1 라인에 적용되는 필터 연산은, 예를 들어, 화상의 제2 라인 및 제3 라인을 사용한다. 제2 라인 및 제3 라인은 또한 제2 하부객체, 심지어는, 제3 라인에 관한 제3 하부객체에 대하여 적용되는 경우 이와 동일한 필터 연산에 의해 사용되게 된다. 이 경우, 이들을 후속하여 재계산할 필요 없도록 이 픽셀들의 라인을 메모리에 저장하는 것이 유용할 수 있으며, 이는 계산의 측면에서 저렴할 것이다.
수개의 필터들이 상이한 데이터에 대하여 사용되는 경우, 다른 데이터를 메모리에 동일한 방법으로 저장하는 것이 유용할 수 있다.
따라서, 일 실시예에서, 특정 포맷 데이터는 또 다른 하부처리 연산에 대한 후속하는 특정 연산들에 요구되는 특정 연산들의 결과 중 적어도 일부를 플랫폼의 메모리에 저장할 수 있도록 하는 연산을 포함한다.
또한, 일 실시예에서, 본 방법은 또 다른 하부객체의 하부처리 연산 중에 사용되는 특정 연산들의 결과를 상기 하부객체와 관련한 다른 하부객체의 상대적 위치에 따라서 함께 그룹화하여 메모리에 저장하는 단계를 포함한다.
이하, 후술하는 바와 같이 큐로 순환적 체인을 적용하는 실시예를 설명한다. 본 예에 있어서, 스크롤링 모드는 N이 5이며, 객체가 10*5 개의 하부객체들로 분해되고, 수평에 위치한 10개 하부객체들은 하나씩 처리된 후에, 아래에 위치한 10의 하부객체들, 등의 순으로 처리되도록 된다. 수평 차원에 따라 사용되는 큐는 이전 반복의 데이터를 포함하는 한편, 수직으로 사용되는 큐는 10개의 이전 반복의 데이터를 포함한다; 따라서, 특정 연산들의 결과의 메모리 그룹화는 스크롤링 모드에 의존한다. 따라서, 또 다른 하부객체의 하부처리 중에 사용되는 특정 연산의 결과의 그룹화 및 메모리에의 저장은 상기 하부객체에 관한 상기 다른 하부객체의 상대적 위치에 의존한다.
본 방법은 또한 특정한 경우에, 하부객체의 하부처리 중에 수행되는 특정 연산의 결과 및 또 다른 하부객체의 하부처리 중에 사용되는 특정 연산의 결과를 적어도 하나의 큐에 함께 그룹화하는 단계를 포함한다.
일 실시예에서, 계산 유닛이 적어도 하나의 순환적 체인에 따라서 연쇄되며, 체인은 적어도 하나의 큐를 또한 포함한다.
일부의 경우, 특정 포맷 데이터는 특정 연산의 결과 및/또는 저장된 기본 정보를 플랫폼의 메모리 슬롯들 중 하나로부터 또 다른 메모리 슬롯에 전송하는 것에 관한 정보를 포함한다. 후술하는 변환의 제5예는 이러한 전송을 포함한다.
그러나, 일 실시예에서, 적어도 하나의 특정 연산은, 에지 효과를 갖도록 될 수 있으며, 즉, 이러한 연산들이 적용되는 하부객체의 에지에 위치한 특정 정보의 손실이 존재한다. 이러한 에지 효과를 방지하기 위해, 화상은 오버레이를 갖는 하부객체들로 분해, 즉, 이들은 공통적인 일부 기본 정보를 갖는다. 따라서, 특정 포맷 데이터는, 특정 연산의 실행 시, 특히, 하부객체들이 적어도 하나의 차원에서 중첩되는 경우 아무런 정보 손실이 없도록, 특정 연산들의 결과가 플랫폼에서 수회 계산되도록 하는 특정 연산들을 포함한다. 후술하는 변환의 제5 예는 이러한 오버레이를 포함한다.
일 실시예에서, 특정 포맷 데이터는 플랫폼이 특정 연산의 결과들 및/또는 저장된 기본 정보 중 적어도 일부에 액세스할 수 있도록 어드레싱 정보를 포함하며, 이 어드레싱 정보의 형식은 "기본 어드레스 + 오프셋" 또는 "(기본 어드레스 + 오프셋) 모듈로 (버퍼 메모리의 사이즈)" 이며, 오프셋은 각 하부처리 연산에 대한 하나의 동일한 특정 연산의 결과들에 대하여 일정하다, 일 실시예에서, 이 기본 어드레스는 각 하부처리 연산에 대하여 변경된다.
바람직하게는, 버퍼 메모리가 처리 플랫폼의 메모리 중 하나에 통합된다. 특히, 버퍼 메모리는 큐일 수 있다.
일 실시예에서, 본 방법은 특정 연산들의 결과를 저장하기 위해, 비어 있거나 더 이상 사용되지 않는 특정 연산 결과 또는 기본 정보를 포함하는 메모리 슬롯들의 어드레스들이 플랫폼에 제공되도록 상기 특정 연산들의 순서에 따라서 오프셋을 계산하는 단계를 포함한다. 이 계산은 특히 특정 연산들의 상이한 파라미터들을 고려하여, 후술하는 바와 같이, 또 다른 하부처리 연산에서 후속하여 또는 또 다른 특정 연산에 의해 사용되는 정보를 메모리로부터 삭제하지 않도록 수행된다. 따라서, 간단한 어드레스 계산과 메모리의 재사용으로, 순환적 버퍼가 성취되어, 후속하는 계산을 위해 필요한 중간 데이터의 저장을 가능하게 한다. 특히, 처리가 라인별로 수행되는 화상인 경우, 수직 필터들의 입력에 대하여 사용되는 라인들이 유지된다.
일 실시예에서, 본 방법은 제1 데이터에 따라 상기 오프셋을 결정하는 단계를 포함하며, 오프셋은 제1 데이터의 일반 연산들의 시퀀스의 변환에 의해 구해지는 특정 연산들의 시퀀스의 각각의 특정 연산에 대하여 상이하다. 예를 들어, 적어도 하나의 큐가 "기본 어드레스 + 오프셋" 또는 "(기본 어드레스 + 오프셋) 모듈로 (버퍼 메모리의 사이즈)" 형식의 어드레싱 정보로 구현된다: 제2 데이터는 사용되어야 하는 큐를 결정하는 데 사용된다.
특정 연산들을 하부객체들에 적용하기 위해, 일반적으로, 코드의 사이즈를 감소시키고, 더 균일하도록 렌더링하기 위해 루프를 사용하는 것이 유익하다. 따라서, 일 실시예에서, 처리 연산은 적어도 하나의 루프의 계산, 루프(들)의 반복량, 및 수개의 루프가 존재하는 경우, 스크롤링 모드에 따라서 루프들의 임베딩하는 것을 포함한다. 이하의 변환의 예들은 루프들이 플랫폼에 따라서 수동으로 코딩되는 경우 공지의 언어들과 대조하여 플랫폼에 따라서 루프들을 자동적으로 계산할 수 있다는 것을 나타낸다.
예를 들어, 이 루프들은, 특히, 처리 대상 객체가 직사각형 형태의 하부객체들로 분해되는 화상인 경우, 및 수직 또는 수평으로 이들을 통해 스크롤링하도록 선택되는 경우, 하부객체들을 통해 스크롤링하는 데 사용될 수 있다.
마찬가지로, 특정 포맷 데이터는 특정한 경우 처리 연산에 필요한 임시 변수들을 포함한다.
일부 특정 연산들은 파라미터들을 사용하며, 이 경우, 이 파라미터들의 값들 또한 처리된다. 이 파라미터들은, 예를 들어, 곱셈 인자일 수 있다. 이 파라마터들은, 예를 들어, 이에 한하지 않지만, 이하에 대응할 수 있다:
- 필터 인자
- 채도값
- 오프셋 값, 및
- 상관표.
일 실시예에서, 특정 연산들에 의해 사용되는 파라미터들의 값은 하부객체들의 절대 위치 및/또는 이러한 특정 연산들에서 직접 또는 간접적으로 적용되는 기본 정보의 하부객체들에서의 절대 위치에 의존한다. 예를 들어, 처리 대상의 객체가 화상인 경우, 샷을 찍기 위해 사용되는 광학기기로 인해 화상에는 결점이 나타날 수 있다. 이 결점들은 일반적으로 전체 화상에 걸쳐 균일하지 않으며, 특히, 에지에서 그렇다. 이 경우, 이 블러링을 보상하기 위해 모든 화상의 픽셀들에 대하여 동일한 보상 인자들이 적용되지 않을 것이다.
예를 들어, 필터에 대한 기본 정보 모두에 대하여 공통인 파라미터를 사용하는 것은, 균일한 방법으로 선명도의 증가를 가능하게 한다.
예를 들어, 처리 대상 객체에서의 기본 정보의 절대 위치에 의존하는 파라미터를 사용하는 것은, 필터에 있어서, 광학 결점을 보상하기 위해 에지에서 더 중대한 방식으로 선명도를 증가시킨다.
예를 들어, 처리 대상 객체에서의 기본 정보의 절대 위치에 의존하는 파라미터를 사용하는 것은, 비네팅 보정(vignetting correction)에 있어서, 광학 결점을 보상하기 위해 에지에서 더 높은 보상을 발생시킨다.
예를 들어, 처리 대상 객체에서의 기본 정보의 절대 위치에 의존하는 파라미터를 사용하는 것은, 디모자이크 연산에 있어서, 센서로부터 수신되는 미처리 화상에서의 "적색" 픽셀, "녹색" 픽셀, 및 "청색" 픽셀들이 상이하게 처리될 수 있도록 한다.
예를 들어, 디지털 확대 계산("줌") 또는 디스토션 보정 계산을 위해 처리 대상의 객체에서 기본 정보의 절대 위치에 의존하는 제2 데이터, 특히, 변위(displacement)를 사용하는 것은, 픽셀들이 각각의 포인트에서 보간을 계산할 것이 요구되도록 한다.
일 실시예에서, 이 파라미터의 종류에 따라서 파라미터의 값은:
- 알고리즘에 대하여 일정하거나, 고유할 수 있다; 이 경우, 파라미터의 값은 특히 추리 수단 또는 플랫폼에 전송될 수 있다, 및/또는
- 객체의 소스 또는 목적지에 의존할 수 있다: 예를 들어, 처리 대상 객체가 주어진 광학기기에 맞추어진 장치로부터의 화상인 경우, 파라미터의 값은 화상 내의 선명도 레벨에 대한 영향을 끼치는 광학기기의 종류에 의존할 수 있다; 이 경우, 파라미터의 값은, 특히, 처리 수단 또는 플랫폼에 전송될 수 있다, 및/또는
- 처리 대상 객체에 의존할 수 있다: 예를 들어, 처리 대상 객체가 센서로부터의 화상인 경우, 파라미터의 값은 상기 객체를 캡처하기 위해 유효하게 사용되는 센서의 이득에 의존할 수 있으며, 이는 화상의 잡음의 레벨에 영향을 준다; 이 경우, 파라미터의 값은, 특히, 플랫폼에 의해 송신, 선택, 또는 계산될 수 있다, 및/또는
- 객체 내에서 기본 정보의 절대 위치에 의존할 수 있다; 이 경우, 파라미터의 값은, 특히, 플랫폼에 의해 송신, 선택, 또는 계산될 수 있다, 및/또는
- 객체 내에서 구성요소의 절대 위치에 의존하지 않을 수 있다.
파라미터 값은 알고리즘의 정의와 관련하여 동시에 또는 사후에 결정될 수 있다.
특정 파라미터의 값을 알았다는 것은 객체마다, 하부객체마다, 또는 기본 정보마다 변할 수 있다. 이 경우, 일 실시예에서, 파라미터의 값은 각각의 변경시 계산된다.
또 다른 실시예에 있어서, 사전에 또한 각각의 변경시 파라미터의 가능한 값들이 계산되며, 인덱스 또는 어드레스가 결정되어, 예를 들어, 테이블 내에서 파라미터의 값에의 액세스를 가능하도록 한다. 또 다른 실시예에 있어서, 더 구체적으로 파라미터 값들이 채택됨으로써 하부객체의 절대 위치에 따라서 하부객체마다 값이 변하며, 예를 들어, 광학기기 선명도 특성에 대응하는 파라미터들과 같이 값의 수가 제한되어, 제한된 수의 파라미터 값의 집합들이 결정되고, 각각의 집합이 저장되며, 각각의 하부객체에 대하여, 예를 들어, 사용되어야 하는 집합의 어드레스가 주어진다면, 위치의 함수를 계산함으로써 사용되어야 하는 집합이 선택된다.
전술한 바와 같이, 파라미터들은 소정의 특정 연산들의 적용 중에 사용된다. 이를 가능하게 하기 위해, 일 실시예에서, 특정 포맷 데이터는 파라미터들의 값(들) 및/또는 파라미터들의 값(들)의 계산 코드를 포함한다.
또 다른 실시예에 있어서, 파라미터(들)의 값(들)은 처리 연산이 이 플랫폼의 특성을 설명하도록, 처리 플랫폼에 따라 선택된다. 따라서, 수개의 플랫폼에 대하여 동일한 알고리즘이 활용가능할 수 있으며, 이 알고리즘은 이 특성들을 변화시킴으로써만 각각의 필요한 플랫폼에 대하여 적응화된다.
또 다른 실시예에 있어서, 이 파라미터 값들은 처리 대상 객체에 의존한다.
본 발명의 실시예들 중 하나에 있어서, 특정 연산들은 가산, 감산, 승산, 상관 표의 적용, 최소치, 최대치, 및 선택으로 이루어지는 군에서 적어도 하나의 특정 계산 연산을 포함한다.
일 실시예에서, 적어도 하나의 특정 계산 연산은 오프셋, 및/또는 채도, 및/또는 라운드 오프 또한 수행한다. 본 발명에 따르면, 특정 선택 계산 연산은 제3 데이터 항목의 값에 따라서 적어도 2개의 데이터 항목들로부터 데이터를 선택할 수 있도록 한다. 일 실시예에서, 표의 입력과 제한된 수의 인자들을 이용한 계산에 의해 상관 표가 적용된다. 일 실시예에서, 제한된 수의 인자들은 8로 고정된다.
일 실시예에서, 특정 연산들은 적어도 하나의 순환적 체인(CC1)을 통해 체인된 계산 유닛들에 의해 수행된다; 상기 순환적 체인(CC1)은 적어도 하나의 큐를 또한 포함하며; 특정 연산 시퀀스 중 적어도 하나의 특정 연산(IS4)은, 계산 유닛(UC2)에서 상기 체인에 따라서 상기 계산 유닛(UC1)을 따르는 큐 또는 계산 유닛(UC1) 상에서 수행되는 특정 연산(IS5)의 결과를 전송한다
일 실시예에서, 특정 연산(IS4)은 큐로부터 큐 다음의 계산 유닛(UC0)에 이전의 하부처리 연산 시에 수행되는 특정 연산(IS5)의 결과를 전송한다. 바람직하게는, 큐는 큐에 입력되었던 것과 동일한 순서로 데이터를 출력할 수 있도록 한다. 바람직하게는, 계산 유닛들과 큐를 포함하는 체인은, 부팅 연산의 관리를 가능하게 하는 메카니즘을 포함한다: 예를 들어, 큐가 수평 체인의 일부이며 객체는 화상인 경우, 예를 들어, 각 라인의 시작에서 큐는 정상적으로 초기화된다; 특정 연산(IS4)의 제1 실행시, 큐로 부터 UC0에 아무런 데이터가 전송되지 않는다; 다음, 특정 연산(IS4)은 큐로부터 큐 다음의 계산 유닛(UC0)에 이전 하부처리 연산 중에 수행되는 특정 연산(IS5)의 결과를 전송한다. 일 실시예에서, 하부처리는 DS0 차원을 포함하며, 특정 연산들은 적어도 하나의 순환적 체인(CC1)을 통해 하부객체의 결정된 차원(DD)에 따라서 연쇄된 계산 유닛들에 의해 수행된다; 상기 순환적 체인(CC1)은 또한 적어도 하나의 큐를 포함한다; 본 방법은 또한 적어도 하나의 특정 연산에 있어서 상기 특정 연산의 각각의 적용을 위해 이하의 단계를 포함한다.
- 계산 유닛(UC1) 상에서 수행되는 특정 연산의 상기 적용 결과를 계산 유닛(UC2) 또는 상기 체인에 따른 상기 계산 유닛(UC1) 다음의 큐에 전송하는 단계
- 큐로부터 큐 다음의 처리 유닛(UC0)에 객체 내의 하부객체의 위치에 따른 조건적 방법으로 또 다른 하부객체의 처리 중에 큐에 전송되는 특정 연산의 적용 결과를 전송하는 단계.
또 다른 실시예에 있어서, 특정 연산들은 전위, 복사, 서브-샘플링으로 구성되는 군에서 취해지는 적어도 하나의 기하학적 특정 연산을 포함한다.
특정 기하학적 연산은, 특히:
- 데이터를 소팅할 수 있도록 하고,
- 스케일 변경, 서브-샘플링, 또는 오버-샘플링의 계산을 수행하기 위해 데이터를 선택할 수 있도록 하고,
- 필요없는 데이터, 특히, 에지 상의 데이터를 삭제하기 위해 데이터를 선택할 수 있도록 한다.
실시예에 따르면, 특정 연산들은 적어도 하나의 순환적 체인에 따라서 연쇄된 계산 유닛들에 의해 수행될 수 있으며; 상기 순환적 체인은 적어도 하나의 큐를 포함한다.
또 다른 실시예에 있어서, 특정 연산들은 적어도 하나의 순환적 체인에 따라서 연쇄된 계산 유닛들에 의해 수행된다; 상기 순환적 체인은 또한 적어도 하나의 큐를 포함한다; 큐는 사이즈 또는 레이턴시(latency)를 갖는다; 본 방법은 또한 일반 연산들의 시퀀스 및 스크롤링 모드에 따라서 큐의 사이즈 및/또는 레이턴시를 결정하는 단계를 포함한다.
바람직하게는, 전술한 바와 같이, 큐는 수개의 데이터 플럭스를 포함하며, 동일한 수(NF)의 데이터의 각각의 플럭스에 대한 저장을 가능하게 한다. NF는, NF-1개의 하부객체들이 하부객체 생성 데이터의 처리와 동일한 데이터를 이용한 하부객체의 처리 사이에 처리되도록 하부객체들의 상대 변위와 스크롤링 모드에 따라 결정된다.
바람직하게는, 처리 대상 객체는 화상이며, 기본 정보는 화상의 픽셀들이다.
따라서, 일 실시예에서, 처리 플랫폼은 촬상 또는 렌더링 장치의 일부이며, 파라미터의 값들은 광학기기, 센서, 이미저, 전자장치, 및/또는 캡처링 및/또는 화상 렌더링 장치의 소프트웨어의 특성에 연결된다. 이 특성은, 특히, 모든 객체들과 객체에 따른 변수들에 대하여 고유하고 고정된 특성일 수 있으며, 예를 들어, 센서의 이득에 따라 변하는 잡음 특성이 일 수 있다. 이 특성은 또한 기본 정보의 절대 위치에 따라서, 예를 들어, 광학적 선명도 특성에 따라서 모든 기본 정보 또는 가변 정보에 대하여 동일할 수 있다.
또 다른 실시예에 있어서, 처리 대상 객체는 디지털 오디오 신호이며, 이 경우, 기본 정보는 이 신호에 대한 오디오 샘플들로 구성된다. 이 경우, 제2 데이터에 존재하는 상대적 위치들은 일반적으로 시간적 위치가 된다. 그럼에도 불구하고, 특히, 처리 대상 객체가 수개의 채널에 존재하는 사운드인 경우, 이 위치들은 공간에 대하여 발생한다.
본 발명의 또 다른 실시예에 있어서, 디지털 시뮬레이션의 경우, 처리 대상 객체는 수치 메쉬이며, 기본 정보는 각 메쉬의 포인트를 특징화하는 공간 및/또는 시간 정보이다.
여기서 설명하는 특정 포맷 데이터는 직접적으로 처리 플랫폼에 제공될 수 있다. 하지만, C 또는 VHDL과 같은 공지된 컴퓨터 언어에 있어서, 이 컴퓨터 언어를 플랫폼에 대하여 변환하도록 되는 컴파일러에 제공될 수도 있다. 이는, 예를 들어, 레지스터의 지정 또는 인스트럭션의 스케쥴링을 관리할 필요없이 컴파일러가 구비된 기존 플랫폼의 사용을 가능하게 한다.
본 발명은 또한 루프 없이 일반 연산들의 시퀀스를 기술하는 제1 데이터를 포함하는 일반 포맷 데이터를 처리하는 시스템으로서, 상기 시스템은 직접 또는 간접적으로, Q개의 프로세서와 적어도 하나의 메모리를 갖는 결정된 플랫폼에 대하여 특정 포맷 데이터를 제공하며, 상기 플랫폼은 상기 특정 포맷 데이터에 따라서 동일한 종류의 기본 정보로 이루어지는 객체를 처리하도록 되며, 각각의 기본 정보는 적어도 하나의 수치로 표현되며, 시스템은:
- 플랫폼에 따라서 일반 연산들의 시퀀스를 하나의 특정 연산들의 시퀀스로 변환하는 수단,
- 플랫폼의 아키텍처에 따라, 상기 객체의 토폴로지에 따라, 제1 데이터와는 독립적으로 상기 처리 연산에 필요한 루프들의 집합을 결정하는 수단, 및
- 이에 따라 결정되는 루프들을 포함하며, 코드 사이즈 및/또는 메모리 사이즈 및/또는 계산 시간의 측면에서 상기 플랫폼에 대하여 최적화된 방식으로, 일반 포맷 데이터를 따르는 객체의 처리를 가능하게 하는 특정 연산들의 시퀀스를 포함하는 특정 포맷 데이터를 계산하는 수단을 포함한다.
일 실시예에서, 시스템은:
- 플랫폼의 아키텍처에 따라서 상기 객체의 토폴로지에 따라서 제1 데이터와는 독립적으로 상기 플랫폼 내의 기본 정보를 스크롤링하기 위한 모드를 결정하는 수단, 상기 스크롤링 모드를 결정하는 수단은 이하를 선택 및/또는 계산하는 수단을 구비함:
- 하부객체들에서의 기본 정보의 그룹 (각각 Q의 배수인 N개의 기본 정보를 포함하며, 상기 플랫폼에 따라 결정되며, 상기 플랫폼에서의 처리는 주기적으로 하부객체들 중 하나에 대하여 특정 연산들의 시퀀스를 적용하는 것을 포함하는 하부처리 연산을 론칭하는 것을 포함함),
- 플랫폼에 따라 결정되는 하부객체들의 형태와 오버레이,
- 플랫폼에 따라 결정되는 하부객체들의 처리 순서, 및
- 상기 처리 연산에 필요한 루프들의 집합을 결정하고, 및/또는 상기 스크롤링 모드를 설명하는 특정 연산들의 시퀀스를 계산하는 수단을 포함한다.
일 실시예에서, 시스템은 각 프로세서에 의해 상기 특정 연산들의 시퀀스 중 어느 특정 연산(들)이 수행되는지를 결정하는 수단을 포함하며, 각 특정 연산은 각 하부객체에 대하여 적어도 N회 적용되며, 각 특정 연산은 자신의 N회 적용 중 직접 및/또는 간접적으로 각각 적어도 한번 하부객체의 기본 정보를 적용하여 정확하게 N개의 결과를 산출하며; 본 방법은 이에 따라 결정되는 정보를 특정 포맷 데이터에 추가하는 단계를 더 포함한다.
일 실시예에서, 시스템은 주기의 각 상대 시간에서, 각 프로세서에 의해 상기 특정 연산들의 시퀀스 중 어느 특정 연산(들)이 수행되는지를 결정하는 수단을 포함하며, 각 특정 연산은 각 하부객체에 대하여 적어도 N회 적용되며, 각 특정 연산은 자신의 N회 적용 중 직접 및/또는 간접적으로 각각 적어도 한번 하부객체의 기본 정보를 적용하여 정확하게 N개의 결과를 산출하며; 본 방법은 이에 따라 결정되는 정보를 특정 포맷 데이터에 추가하는 수단을 더 포함한다.
일 실시예에서, 시스템은 각 하부객체에 적용되는 상기 특정 연산들의 수량이 프로세서의 수량(Q)의 배수가 아닌 경우, 및/또는 처리 대상 객체의 기본 정보의 수량이 N의 배수가 아닌 경우, 상기 특정 연산들의 수량이 Q의 배수가 되고, 상기 기본 정보의 수량이 N의 배수가 되도록 효과 없는 특정 연산 및/또는 및/또는 널(null) 기본 정보를 추가하는 수단을 포함한다.
일 실시예에서, 시스템은:
- 일반 연산들의 시퀀스가, 소위, 논리 블록이라 하는 적어도 하나의 기본 정보의 집합에 적용되도록 하는 수단,
- 상대적 위치 및/또는 상대적 스케일, 특히, 논리 블록들의 서로에 대한 공간 및/또는 시간을 참조하여, 적어도 2개의 논리 블록들을 포함하는 일반 연산들에 대하여 제2 데이터를 포함하는 일반 포맷 데이터를 수신하는 수단,
- 각 특정 연산이 적용되어야 하는 특정 연산들의 결과 및/또는 기본 정보가 제2 데이터에 의존하도록 하는 수단, 및
- 논리 블록들의 서로에 관한 적어도 하나의 상대적 위치가 널이 아닌 경우, 적어도 하나의 특정 연산은 직접 또는 간접적으로 또 다른 하부객체의 적어도 하나의 기본 정보를 포함하도록 하는 수단
을 포함한다.
일 실시예에서, 시스템은 제2 데이터에 따라서 또 다른 하부처리 연산에 대하여 후속하는 특정 연산들에 요구되는 특정 연산들의 결과 중 일부를 결정하는 수단을 포함한다.
일 실시예에서, 제2 데이터 및/또는 스크롤링 모드에 따라서 또 다른 하부처리 연산에 대하여 후속하는 특정 연산들에 요구되는 특정 연산들의 그룹화된 결과를 저장하는 메모리를 포함한다.
일 실시예에서, 시스템은 적어도 하나의 순환적 체인에 따라서 연쇄된 계산 유닛들, 및 각 특정 연산에 대한 제2 데이터에 따라서 특정 연산의 결과들이 순환적 체인에 따라서 전송되어야 하는지 여부를 결정하는 수단을 포함한다. 시스템은 또한, 적용가능한 경우, 제2 데이터 및 스크롤링 모드에 따라서 상기 특정 연산들의 결과를 전송하는 데 사용되는 순환적 체인을 결정하는 수단을 더 포함한다.
일 실시예에서, 시스템은 특정 포맷 데이터가 특정 연산들의 그룹화에 관한 정보를 포함하도록 하는 수단을 포함하며, 상기 그룹화는 또 다른 하부처리 연산에 대한 각 특정 연산의 결과들을 저장하지 않고 실행되는 하나 이상의 특정 연산의 패킷들의 형성을 포함한다.
일 실시예에서, 시스템은 특정 포맷 데이터가 플랫폼의 메모리에 또 다른 하부처리 연산에 대하여 후속하는 특정 연산들에 요구되는 특정 연산들의 결과 중 적어도 일부를 저장할 수 있도록 하는 특정 연산들을 포함하도록 하는 수단을 포함한다.
일 실시예에서, 시스템은 상기 하부객체에 관한 상기 다른 하부객체의 상대적 위치에 따라서, 또 다른 하부객체의 하부처리 중에 사용되는 특정 연산들의 그룹화된 결과들을 저장하는 메모리를 포함한다.
일 실시예에서, 시스템은 하부객체의 하부처리 중에 수행되며, 또 다른 하부객체의 하부처리 연산 중에 사용되는 특정 연산들의 그룹화된 결과를 저장하는 적어도 하나의 큐를 포함한다.
일 실시예에서, 시스템은 특정 포맷 데이터가 특정 연산들을 포함하여, 특히, 상기 하부객체들이 상기 객체의 차원들 중 적어도 하나에 중첩되는 경우 특정 연산들의 실행 시에 아무런 정보가 손실되지 않도록 특정 연산들의 결과들이 플랫폼에서 수회 계산되도록 하는 수단을 포함한다.
일 실시예에서, 시스템은 특정 포맷 데이터가 플랫폼이 특정 연산의 결과들 및/또는 저장된 기본 정보 중 적어도 일부에 액세스할 수 있도록 어드레싱 정보를 포함하며, 이 어드레싱 정보의 형식은 "기본 어드레스 + 오프셋" 또는 "(기본 어드레스 + 오프셋) 모듈로 (플랫폼에 위치하는 버퍼 메모리의 사이즈)" 이며, 상기 오프셋은 하나의 동일한 특정 연산의 결과들에 대하여 일정하도록 하는 수단을 포함한다.
일 실시예에서, 시스템은 각 하부처리 연산에 대한 상기 기본 어드레스를 변경하기 위한 수단을 포함한다.
일 실시예에서, 시스템은 상기 특정 연산들의 결과를 저장하기 위해, 플랫폼에 비어 있거나 더 이상 사용되지 않는 특정 연산 결과 또는 기본 정보를 포함하는 메모리 슬롯들의 어드레스들이 제공되도록 상기 특정 연산들의 순서에 따라서 오프셋을 계산하는 수단을 포함한다.
일 실시예에서, 시스템은 적어도 하나의 루프, 루프(들)의 반복량, 및 수개의 루프가 있는 경우, 루프의 임베딩을 스크롤링 모드에 따라서 계산하는 수단을 포함한다.
일 실시예에서, 시스템은 특정 연산들에 의해 사용되는 상기 파라미터(들)의 값(들)이 상기 특정 연산들에서 직접 또는 간접적으로 적용되는 기본 정보의 하부객체들에서의 위치에 의존하도록, 적어도 하나의 파라미터를 처리하기 위한 수단을 더 포함한다.
일 실시예에서, 시스템은 특정 포맷 데이터가 상기 파라미터(들)의 값(들) 및/또는 파라미터(들)의 값(들)에 대한 계산 코드를 포함하도록, 적어도 하나의 파라미터를 처리하기 위한 수단을 포함한다.
일 실시예에서, 시스템은 상기 처리 동작이 상기 플랫폼의 특성을 설명하도록, 상기 처리 플랫폼에 따라서 파라미터(들)의 값(들)을 선택하는 수단, 및 적어도 하나의 파라미터를 처리하기 위한 수단을 포함한다.
일 실시예에서, 시스템은 상기 파라미터(들)의 값(들)이 처리 대상 객체에 의존하도록 적어도 하나의 파리미터를 처리하는 수단을 포함한다.
일 실시예에서, 시스템은 가산, 감산, 승산, 상관 표의 적용, 최소치, 최대치, 선택으로 이루어지는 군에 포함되는 특정 연산을 수행하는 수단을 포함한다.
일 실시예에서, 시스템은 적어도 하나의 순환적 체인(CC1)에 의해 연쇄된 계산 유닛들을 포함하며, 상기 순환적 체인(CC1)은 적어도 하나의 큐를 더 포함하며; 계산 유닛(UC1s) 상에서 수행되는 특정 연산(IS5)의 결과를 상기 체인에 따라서 상기 계산 유닛(UC1)을 따르는 큐 또는 계산 유닛(UC2)에 전송하는 수단을 포함한다.
일 실시예에서, 시스템은 전위(transposition), 복사(replication), 서브-샘플링으로 구성되는 군에 포함되는 적어도 하나의 특정 기하 연산을 수행하는 수단을 포함한다.
일 실시예에서, 시스템은 적어도 하나의 순환적 체인에 따라서 연쇄된 계산 유닛들을 포함하며, 상기 순환적 체인은 적어도 하나의 큐를 포함한다.
일 실시예에서, 시스템은 적어도 하나의 순환적 체인에 따라서 연쇄된 계산 유닛들을 포함하며, 상기 순환적 체인은 적어도 하나의 큐를 포함하며, 상기 일반 연산들의 시퀀스 및 스크롤링 모드에 따라서 상기 큐의 레이턴시 및/또는 사이즈를 결정하는 수단을 포함한다.
일 실시예에서, 시스템은 상기 처리 대상 객체가 화상이며, 상기 기본 정보가 상기 화상의 픽셀이 되도록 하는 수단을 포함한다.
일 실시예에서, 시스템은 상기 처리 플랫폼이 촬상 및/또는 렌더링 장치의 일부이며, 상기 파라미터(들)의 값(들)이 광학기기, 센서, 이미저, 전자장치, 및/또는 상기 촬상 및/또는 렌더링 장치의 소프트웨어의 특징에 연결되도록 하는 수단을 포함한다.
일 실시예에서, 시스템은 상기 처리 대상 객체는 디지털 오디오 신호이며, 상기 기본 정보는 상기 신호의 오디오 샘플이 되도록 하는 수단을 포함한다.
일 실시예에서, 시스템은 상기 처리 대상 객체는 수치 메쉬이고, 상기 공간 및 시간 정보의 기본 정보는 상기 메쉬의 각 포인트를 특징화하도록 하는 수단을 포함한다.
본 발명의 다른 특징 및 장점들은 그 실시예 중 일부를 예시적으로 설명함으로써 더욱 명확하게 될 것이며, 이 설명은 이하의 도면에 의해 뒷받침된다:
도 1a, 도 1b, 도 1c, 도 1d, 도 1e, 및 도 1f는, 상기 설명한 바와 같이, 본 발명을 따르는 화상의 하부객체들로의 분해의 예를 나타낸다.
도 2는 수개의 하부처리 연산들의 시퀀스의 일례를 나타낸다.
도 3은 본 발명을 따른 방법을 이용한 장치를 나타낸다.
도 4는 수개의 논리 블록들 및 하나의 파라미터에 적용되는 일반 동작들의 시퀀스의 일례를 나타낸다.
도 5는 본 발명을 따른 방법에 의해 제공되는 특정 포맷 데이터의 구조를 나타낸다.
도 6, 도 7, 및 도 8은 본 발명을 따른 방법에 의해 제공되는 일반 포맷 데이터를 수신할 수 있는 플랫폼의 상이한 아키텍처들을 나타낸다.
도 9a, 도 9b, 및 도 9c는 본 발명에 따른 방법에 의해 제공되는 특정 포맷 데이터를 수신할 수 있는 플랫폼 내의 프로세서들의 체인의 예들을 나타낸다.
도 3의 장치는 화상(22)을 처리하기 위한 것이며, 이 화상은 적어도 하나의 수치로 표현되는 픽셀들의 집합이다.
본 장치에서, 디지털 데이터 처리 수단(10)에는 일반 포맷의 데이터(12)가 제공된다. 이 처리 수단은 예컨대 컴파일러일 수 있다.
본 발명을 따른 방법에 의해 공급되는 일반 포맷의 데이터는, 일반 연산들의 시퀀스를 기술하며, 이 일반 연산들에 포함되는 논리 블록들의 상대적 위치들을 부여하는 제1 및 제2 데이터(14)를 포함한다. 이 제1 및 제2 데이터는 도 4의 설명에 의해 예시되어 있다.
처리 수단(10)은 또한 촬상 또는 렌더링 장치 등의 처리 플랫폼(20)의 특징에 따라서 선택 또는 계산되는 스크롤링 모드(24)를 입력상에서 수신한다.
이러한 일반 포맷의 데이터(12)와 이들 파라미터들을 이용하여, 처리 수단(10)은 특정 포맷 데이터(18)를 처리 플랫폼(20)에 제공한다.
특정 포맷 데이터는 플랫폼의 메모리 내의 픽셀들의 구성, 플랫폼에 의해 픽셀들이 처리되는 순서 또는 플랫폼에 의해 수행되는 특정 연산들, 및 그 그룹화에 관한 데이터와 같은 상이한 종류의 데이터를 포함한다.
처리 플랫폼(20)은 그 후 상기 특정 포맷의 데이터(18)를 이용하여 내부에서 수신하는 화상(22)을 처리한다.
도 3은 본 발명의 몇 가지 장점을 나타낸다:
- 일반 포맷 데이터(12)는 신속히 변경 또는 교체되고, 플랫폼에 최적화된 특정 포맷 데이터(18)로 변환된다. 이는 플랫폼의 시장 배포에 소요되는 시간을 감소시키게 된다.
- 일반 포맷 데이터(12)는 수개의 플랫폼에 최적화된 특정 포맷 데이터로 신속히 변환될 수 있다. 이는 플랫폼의 시장 배포에 소요되는 시간을 감소시키게 된다.
이하의, 표 4 및 도 4는 논리 블록 B1에 적용되는 일반 연산들의 시퀀스의 형태로 일반 포맷 데이터의 일례를 나타낸다. 이 시퀀스는 3개의 일반 연산을 포함한다. 표의 열은 순서대로 이하를 나타낸다:
- 시퀀스 내의 연산의 순위
- 일반 연산의 명칭
- 일반 연산의 결과가 삽입되는 논리 블록(출력), 즉, 각각의 연산의 종단에서 재구성되는 객체라면, 이 결과가 있게 되는 위치,
- 논리 블록 또는 파라미터일 수 있는 일반 연산의 제1 입력(입력 1),
- 적용가능한 경우, 입력 1에서 논리 블록과 관련하여 사용되는 논리 블록의 상대적 위치,
- 논리 블록 또는 파라미터일 수 있는 일반 연산의 제2 입력(입력 2),
- 적용가능한 경우, 입력 2에서 논리 블록과 관련하여 사용되는 논리 블록의 상대적 위치,
"상대적 위치" 열에 위치한 정보는 본 발명에 따른 방법을 이용하여 처리 수단에 제공되는 제2 데이터에 존재하는 정보이다. 이 표에서, 본 정보는 간단화를 위해 "좌" 및 "우"의 형태로 되어 있으나, 실제로, 일반 포맷 데이터에 있어서, 상기 실시예에서 설명된 바와 같이 (0;1)과 같은 수치에 의해 및/또는 f(x;y)와 같은 함수에 의해 코딩될 수도 있다.
일 실시예에서, 일반 연산은 객체의 차원들 중 하나에 따른 절대 위치로 이루어지는 논리 블록을 생성하며, 인디렉션(indirection)이라 하는 또 다른 일반 연산은, 제3 블록으로부터 제2 블록에 의해 표시되는 변위 및/또는 스케일 변경에 의해 블록을 발생시킨다. 그 후, 블록들에 대한 일반 연산을 이용하여, 예를 들어, 0.5*(x-100) 와 같은 상대적 위치 및/또는 상대적 스케일을 부여하는 함수의 계산이 수행될 수 있으며, 그 후 일반 인디렉션 연산을 이용하여 상대 변위 및/또는 대응하는 상대적 스케일 변경을 수행한다.
표 4는 코딩의 일례일 뿐이며, 제1 데이터 및 제2 데이터는 표로 만들어진 포맷, 심볼 포맷, 그래프 포맷, 또는 임의의 다른 포맷의 다양한 방식에 의해 코딩될 수 있다. 또한, 간략화를 위해 데이터 종류, 오프셋, 및 채도에 관한 부가 정보는 본 예에서 생략되어 있다.
시퀀스 연산 출력 입력 1 상대적 위치 입력 1 블록 입력 2 상대적 위치 입력 2 블록
1 가산 B2 B1 B1
2 B3 Param 1 B2
3 승산 B4 B3 B1
본 연산의 시퀀스에 사용되는 제1 논리 블록은 논리 블록 B1(51)이다. 제1 일반 연산은 좌측으로 오프셋된 논리 블록 B1(51g)과 우측으로 오프셋된 논리 블록 B1(51d) 사이의 가산(52)이다. 이 가산의 결과는 블록 B2에 기록된다(53): B2 = B1left + B1right.
제2 연산(54)은 표와 관련하여 블록 B2의 변형(53)이다. 따라서, 이 연산은 입력으로 블록 B2(53)를 가지며, 변경 표를 나타내는 파라미터 Param1(55)을 갖는다. 이 연산의 결과는 블록 B3(56)에 기록된다: B3 = LUT (Param1, B2).
본 시퀀스의 제3 연산으로서 마지막 연산(57)은 논리 블록들의 승산이다. 이 연산은 논리 블록 B3(56) 및 논리 블록 B1(51)을 갖는다: 입력을 위해 B4=B3*B1.
따라서, 논리 블록 B4(58)는 일반 연산의 시퀀스의 말단에서 얻어지는 블록이다.
표 1의 예에서 일반 포맷 데이터는 플랫폼, 객체의 하부객체로의 분해, 객체의 기본 정보의 스크롤링 모드, 플랫폼에서 기본 정보가 처리되는 순서, 및 저장된 구성과는 독립적이다. 실제로, 표 1의 일반 포맷 데이터는, 그 리스트가 제한적인 것은 아니며, 예를 들어, 이하의 변환에 따라 다양한 방식으로 특정 포맷 데이터로 또는 플랫폼에 대한 코드로 변환될 수 있다.
변환의 제1 예는 메모리 및 계산 시간의 측면에서 최적인 것은 아니지만, 하부객체들로 분해를 포함하지 않는 단순한 변환을 나타낸다.
(논리 블록 B1에 대응하는) 입력 객체의 픽셀들(BP1) 각각에 대하여, 2개의 좌측 및 우측 열을 제외하고, 픽셀들이 좌측에서 우측으로 또한 상측에서 하측으로 스크롤링된다:
현재 픽셀의 좌측의 픽셀과 우측의 픽셀을 가산하여, 그 결과를 (논리 블록 B2에 대응하는) 물리 블록 BP2에 저장한다.
좌측에서 우측으로 상측에서 하측으로 스크롤링되는 BP2의 각각의 픽셀에 대하여:
현재의 픽셀에 표를 적용하여, 그 결과를 (논리 블록 B3에 대응하는) 물리 블록 BP3에 저장한다.
좌측에서 우측으로 상측에서 하측으로 스크롤링되는 BP3의 각각의 픽셀에 대하여:
현재의 픽셀을 BP1의 대응 픽셀과 승산하고, 그 결과를 물리 출력 블록(BP4)(논리 블록 B4에 대응)에 저장한다.
변환의 제2 예는 일반 포맷 데이터를 변화시키지 않고 사용되는 사이즈와 메모리가 감소될 수 있음을 나타낸다. 실제로, 제1 예에 있어서, 화상과 동일한 사이즈의 4개의 물리 블록들이 사용된다. BP2, BP3, 및 BP4에 대하여 동일한 메모리를 사용하여 2개의 물리 블록들만이 사용될 수 있다. 이하의 변환이 구해진다:
2개의 좌측 및 우측 열들을 제외한 (논리 블록 B1에 대응하는) 입력 객체의 픽셀들(BP1) 각각에 대하여, 좌측에서 우측으로 상측에서 하측으로 픽셀들이 스크롤링된다:
현재의 픽셀의 좌측의 픽셀과 우측의 픽셀을 가산하고, 그 결과를 (논리 블록 B2에 대응하는) 물리 블록 BP2에 저장한다.
좌측에서 우측으로 상측에서 하측으로 스크롤링되는 BP2의 각각의 픽셀에 대하여:
현재의 픽셀에 표를 적용하고, 그 결과를 (논리 블록 B3에 대응하는) 물리 블록 BP2에 저장한다.
좌측에서 우측으로 상측에서 하측으로 스크롤링되는 BP2의 각각의 픽셀에 대하여:
현재의 픽셀과 대응 BP1 픽셀을 승산하고, 그 결과를 (논리 블록 B4에 대응하는)물리 출력 블록 BP2 에 저장한다.
변환의 제3 예는 일반 포맷 데이터를 변화시키지 않고 계산 시간이 감소될 수 있음을 나타낸다. 실제로, 제2 예에 있어서, 화상과 동일한 사이즈의 2개의 물리 블록이 사용되지만, 물리 블록 BP2는 전체로 3번 기입되며, 논리 블록 BP1은 전체로 2번 판독되며, 물리 블록 BP2는 전체로 2번 판독된다. 이는, 상이한 스크롤링 모드와 상이한 블록들로 하나의 판독과 하나의 기입으로 제한될 수 있다. 이는 필요한 인스트럭션의 수를 감소시키지만, 메모리 액세스 요구사항 또한 감소시킨다. 이하의 변환이 구해진다:
2개의 좌측 및 우측 열을 제외한 (논리 블록 B1에 대응하는) 입력 객체의 픽셀들 BP1 각각에 대하여, 좌측에서 우측으로 상측에서 하측으로 픽셀들이 스크롤링된다:
현재 픽셀의 좌측의 픽셀과 우측의 픽셀을 가산하고, 그 결과에 표를 적용하고, 표의 출력과 현재의 픽셀을 승산하고, 그 결과를 (논리 블록 B4에 대응하는) 현재의 물리 출력 블록 BP2에 저장한다.
제4 예에서, 더 구체적으로 캐쉬를 갖는 스칼라 프로세서에 적용되며, 그 결과는 입력과 같은 메모리 영역에 기입된다. 이는 메모리 사이즈를 더 감소시키고, 메모리 액세스를 지역적으로 가능하게 하여, 캐쉬 메모리 또는 페이지 메모리의 경우에 매우 유용하다. 따라서, 이하의 변환이 구해진다:
2개의 좌측 및 우측 열을 제외한 (논리 블록 B1에 대응하는) 입력 객체의 픽셀들 BP1 각각에 대하여, 좌측에서 우측으로 상측에서 하측으로 픽셀들이 스크롤링된다:
이하의 특정 연산 시퀀스를 수행한다:
현재 픽셀의 좌측의 픽셀과 우측의 픽셀을 가산하고, 그 결과에 표를 적용하고, 표의 출력을 현재 픽셀과 승산하고, 그 결과를 현재 픽셀의 좌측의 픽셀을 대신하여 현재의 물리 출력 블록(BP1)에 저장한다 (좌측 픽셀은 다음 반복에서 좌측 픽셀이 되게 되는 현재의 픽셀에 대비하여 더 이상 사용되지 않는다; BP1은 부분적으로는 논리 블록 B4에 대응하며, 부분적으로는 논리 블록 B1에 대응한다).
변환의 제5 예는 구체적으로 작은 고속 액세스 메모리와 큰 저속 메모리를 갖는 신호 처리 프로세서에 적용되며, 하부객체 각각은, 예를 들어, 32x32의 직사각형이거나, 고속 액세스 메모리의 사용을 최대화하는 임의의 다른 값이며, 직사각형은 인접한다. 따라서, 이하의 변환이 구해진다:
각각의 하부객체에 대하여, 좌측에서 우측으로 상측에서 하측으로 하부객체들이 스크롤링된다:
좌측으로 하나의 열만큼 우측으로 하나의 열만큼 연장된 다음의 하부객체에 대응하는(32x34를 이룬다), 다음의 물리 입력 블록의 DMA(Direct Memory Access) 메카니즘을 통해 저속 메모리에서 고속 액세스 메모리로 전달을 론칭한다.
고속 액세스 메모리로부터 저속 메모리로 이전 물리 출력 블록의 DMA 메카니즘을 통해 전달을 론칭한다.
좌측 및 우측으로 추가의 열만큼 연장된 현재의 하부객체에 대응하는 물리 블록이 취해지며, 32x34를 이루어, 이전 반복의 DMA의 종단에서 구해진다.
좌측에서 우측으로 상측에서 하측으로의 스크롤링되는 좌우 2개의 열을 제외한, (논리 블록 B1에 대응하는) 물리 입력 블록의 각각의 픽셀에 대하여:
이하의 연산 시퀀스를 수행한다: 현재의 픽셀의 좌측 픽셀과 우측 픽셀을 가산하고, 그 결과에 표를 적용하고, 표 출력과 블록의 현재 픽셀을 승산하고, 그 결과를 (논리 블록 B4에 대응하는) 현재 물리 출력 블록에 저장한다.
변환의 제6 예는 구체적으로 벡터의 상이한 픽셀들에 대하여 하나의 동일한 계산을 적용할 수 있는 벡터 신호 프로세서에 적용되는 것으로서, 하부객체 각각은 예를 들어, 64개의 수평 픽셀들 또는 플랫폼이 처리 및 저장가능한 벡터의 사이즈와 동일한 임의의 다른 값의 직사각형이다. 이 변환은 벡터들이 한번에 하나씩 처리되므로 어떠한 메모리도 필요치 않는다. 따라서, 이하의 변환이 구해진다:
좌측 2개 열을 제외한 (논리 블록 B1에 대응하는) 입력 객체 BP1의 하부객체 V1에 대하여, 좌측에서 우측으로 상측에서 하측으로 하부객체들이 스크롤링된다:
각각의 라인의 시작에서, 우측의 라인의 2개 좌측 픽셀들을 포함하는 벡터 V0를 생성한다.
V0 및 V1으로부터, V0의 2개의 우측 픽셀들 및 V0의 2개의 우측 픽셀들을 제외하고 V1의 좌측 픽셀들에 대응하는 벡터 V2를 추출한다;
V과 V2를 가산하여 V2를 구하고, V2의 각각의 픽셀에 표를 적용하여 V2를 구하고, V0 및 V1으로부터 V0의 우측 픽셀 및 V0의 우측 픽셀을 제외한 V1의 좌측 픽셀에 대응하는 벡터 V3을 추출한다; 다음의 반복을 위해, V1을 V0에 복사하고, V2와 V3를 승산하여 V2를 구하고, 그 결과 V2를 현재의 물리 출력 블록에 저장한다.
상기 변환의 예들은, 동일한 일반 포맷 데이터를 이용하여, 메모리 구조, 루프 및 매우 다양한 플랫폼들에 적용되는 병렬도(degree of parallelism)로 다수의 방법으로 변환할 수 있다는 것을 나타낸다. 특히:
- 코드의 사이즈는 하나의 루프만을 사용하여 감소될 수 있다, 또한/또는
- 메모리의 사이즈는, 본 예에서 0으로 감소될 수 있으나, 수직 필터가 존재하는 더 일반적인 경우, 일부 메모리 라인들은 수직 필터들의 입력 데이터에 대한 계산의 반복 필요성을 방지할 것이 요구된다, 또한/또는
- 특히, 루프를 그룹화함으로써 필요한 인스트럭션의 수는 감소된다, 또한/또는
- 임의의 사이즈의 벡터에 적용한다, 또한/또는
- 임의의 메모리 아키텍처에 적용한다.
제3, 제4, 제5 및 제6 예들은 일반 연산들의 시퀀스를 특정 연산들 중 하나의 시퀀스로 변환하는 예들이다.
간략화를 위해, 본 예들은 입력 화상보다 더 작은 화상을 생성한다. 필요하다면, 각 라인의 시작과 끝에서 코드를 추가하여 에지 픽셀을 중복시킴으로써 입력 화상과 동일한 사이즈의 출력 화상이 구해질 수 있다.
도 5는 본 발명을 따른 방법을 이용한 처리 수단의 출력에서의 특정 포맷 데이터의 구조를 나타낸다. 특정 포맷 데이터는 처리 수단에 제공되는 일반 포맷 데이터(32)를 이용하여, 이 처리 수단에 의해 결정되는 스크롤링 모드(34)를 이용하여 처리 수단에 의해 계산된다. 일반 포맷 데이터는 적어도 하나의 일반 연산 또는 처리 수단에 의해 수행되어야 하는 연산들의 시퀀스를 기술하는 데이터(38)를 포함하는 제1 데이터를 포함한다. 일반 포맷 데이터는 또한 적어도 2개의 논리 블록들을 포함하는 일반 연산들에 대하여, 논리 블록들의 서로에 대한 상대적 스케일 및 위치를 지칭하는 제2 데이터(40)를 포함한다. 이러한 일반 포맷 데이터와 스크롤링 모드(34)를 이용하여, 처리 수단은 특정 연산들에 관한 데이터(42), 및 루프들에 관한 데이터(44)를 제공한다. 이 데이터(42 및 44)는 특정 포맷 데이터(30)의 일부이다.
본 발명을 따른 방법에 의해 결정될 수 있는 스크롤링 모드의 수개의 예들을 이하에서 설명한다. 이 스크롤링 모드 각각은 플랫폼에서 사용되기 위한 것이며, 그 아키텍쳐가 도 6 내지 도 8 중 하나에 도시되어 있다.
도 6에 도시된 제1 예에 있어서, 처리 플랫폼은 하나의 차원에 연결(chain)된 5개의 프로세서들을 포함한다. 이는 프로세서 ProcA로부터 출력되는 계산의 결과가 프로세서 ProcB의 입력에서 사용되며, 이하 동일하다는 것을 의미한다. 프로세서 ProcE에 의해 출력되는 계산의 결과는 프로세서 ProcA의 입력에 인가된다.
각각의 프로세서에는 제한된 용량의 메모리 MemA 내지 MemE 가 구비되어 있다. 이 메모리 유닛은 프로세서에 의해 수행되는 특정 연산을 위해 사용되는 파라미터 값들, 또는 프로세서에 의해 바로 재사용되어야 하는 연산의 결과들을 저장하기 위한 것이다.
이 제1 예에 있어서, 처리 연산은 8개의 연산(OP1 내지 OP8)의 시퀀스를 객체를 포함하는 기본 정보에 적용하는 것을 포함한다.
처리를 위해, 객체는 N개의 기본 정보의 하부객체들로 분해되어야 한다. Q의 배수이어야 하는 N(Q = 5, 계산 유닛의 수량)은 본 발명을 따른 방법에 의해, 특히, 플랫폼의 메모리 용량에 따라서 플랫폼의 업스트림에서 결정된다.
본 예에서, N = 5이다.
또한, 특정 연산의 일정한 시퀀싱을 수행하기 위해, 본 발명을 따른 방법은 각각의 하부객체에 대하여 수행되어야 하는 특정 연산의 수량이 활용가능한 프로세서의 수량의 배수가 되도록 결과 OP09 및 OP10 없는 특정 연산을 생성한다.
특정 종류의 연산에 따르면, 각각의 연산에는 프로세서에 의해 수행되도록 지정된다. 여기서,
- 프로세서 A는 OP1 및 OP6를 수행한다,
- 프로세서 B는 OP2 및 OP7를 수행한다,
- 프로세서 C는 OP3 및 OP8를 수행한다,
- 프로세서 D는 OP4 및 OP9를 수행한다,
- 프로세서 E는 OP5 및 OP10를 수행한다,
각각의 프로세서는 이에 지정되었던 특정 연산에 대응하는 인스트럭션의 집합(InsA 내지 InsE)을 실행한다. 제한된 용량으로 메모리에 저장되는 파라미터의 값들은 또한 이러한 지정에 의존한다. 예를 들어, OP1이 2의 승산이라면, MemA 메모리는 도 2를 포함하게 된다.
일단 이러한 지정이 이루어지면, 이하 표 1에 기술된 시퀀싱 스케쥴에 따라서 연산이 행해진다:
이 표에서, 공정 진행 시간은 T1, T2, ..., T13으로 표기된다.
Figure 112008051944465-PCT00001
각 라인은 10개의 특정 연산 OP1 내지 OP10 중 하나를 나타낸다. 각각의 열은 기본 정보 IE1 내지 IE5 중 하나를 나타내며, 각각은 처리 대상 하부객체들을 구성한다. 이 IE1 내지 IE5 표기는 포멀(formal)한 것으로서; 반드시 실제의 공간 또는 시간에 대응할 필요는 없다. 실제로, 소정의 특정 연산은 기본 정보의 변위를 생성한다. 따라서, 예를 들어, 특정 연산 OP1이 좌측으로의 오프셋으로 구성되는 경우, 특정 연산 OP2에 의해 처리되는 정보 IE1은 정보 IE1에 적용되는 특정 연산 OP1의 결과가 아니라, 정보 IE2에 적용되는 이러한 특정 연산 OP1의 결과일 수 있다.
이 표의 각 박스는, 처리 연산 중에 이 특정 연산이 수행되는 시간뿐만 아니라 특정 연산을 수행하는 프로세서의 명칭을 포함한다. 명백하게도, 이 표는 처리 연산 중 일부만을 나타낸다. 여기서, 요구되는 특정 연산의 결과 모두는 이미 처리 연산에서 계산된 것으로 가정한다.
따라서, 시간 T1에서, ProcA 프로세서는 하부객체 1의 제1 정보 IE1에 대한 연산 OP1을 수행하는 것으로 도시되어 있다. 이 시점에서, 다른 프로세서들은 이 표에 나타내지 않은 다른 연산들을 수행하고 있다.
시간 T5에서, 각 프로세서가 하부객체 1의 정보 중 하나에 대한 연산을 수행하는 것으로 도시되어 있다.
프로세서가 하부객체의 기본 정보 모두에 대한 특정 연산을 수행한 경우, 그 다음 할당된 연산으로 진행한다. 따라서, ProcA 프로세서는 T6로부터 OP6 연산을 수행한다.
일단 프로세서가 자신에게 할당된 특정 연산들을 수행했다면, 다음의 하부객체가 처리된다. 2개의 상이한 하부객체들(하부객체 1 및 하부객체 2)은 따라 플랫폼에서 동시에 처리된다.
이 표에서, 각각의 특정 연산은 N회 수행되는 것이 명백히 나타내어져 있다(여기서, N = 5).
이러한 시퀀싱은 프로세서의 차원들 중 하나에서의 순환적 체인에 의해 얻어진다. 따라서, 기본 정보는 하나의 계산 유닛으로부터 다른 계산 유닛으로 전송할 수 있다. 예를 들어, 기본 정보 IE1이 모든 프로세서를 통과하여, 특정 연산 OP1 내지 OP5를 거친 후, ProcA 프로세서에 돌아가, 다시 사이클을 시작하고, 연산 OP6 내지 OP7을 거친다 (전술한 바와 같이, 초기 기본 정보 IE1은 모든 단계에서 IE1 정보일 필요는 없을 것이다). 따라서, 본 발명은 파라미터의 값들을 국지적으로 저장할 수 있고, 데이터 경로를 연결할 수 있는 장점을 갖는 수축(systolic) 아키텍처에 적용되는 특정 포맷 데이터의 생성을 가능하게 한다. 적어도 부분적으로는 플랫폼 상의 컴파일러에 의해 정확한 시퀀싱이 수행될 수 있다고 할 수 있을 것이다. 이 경우, 특정 포맷 데이터는 시간상 절대 시퀀싱을 포함하지 않고, 시퀀싱에 대한 제약사항을 포함한다.
도 7에 도시된 제2 예에 있어서, 플랫폼은 공통 메모리에 연결된 5개의 프로세서를 포함한다. 이러한 구조는 전통적인 것이며: ("Single Instruction Multiple Data" 즉 SIMD 유형의) 벡터 신호 프로세서의 구조에 대응한다.
본 예에서, 각각의 프로세서는 개별적으로 상관 표 T와 같은 파라미터들을 포함할 수 있는 작은 메모리에 연결된다. 본 구조에 있어서, 각각의 프로세서는 특정 연산 중 모두를 수행한다. 따라서, 프로세서 모두는 동일한 인스트럭션의 집합 INS을 수신한다.
제2 예에 있어서, 연산들 중 하나는 하나 이상의 기본 정보를 변경하기 위해 표를 이용하는 것을 포함하는 경우를 고려한다. 상기에서 알 수 있듯이, 각 프로세서는 자신의 표에 액세스하며, 모든 표는 동일하다. 일 대체예에서, 각 메모리는 프로세서들의 그룹에 의해 공유된다. 일 대체예에서, 프로세서의 집합은 동일한 메모리를 공유하며, 동시에 동일한 파라미터를 취득한다; 이 경우, 상관 표가 적용되어, 예를 들어, 다항식을 계산하기 위해 하나 이상의 파라미터를 이용한 계산에 의해 수행되어야 한다.
이는 병렬 연산을 포함한다: 각각의 공정 시간에 있어서, 모든 프로세서는 상이한 기본 정보에 대하여 동일한 연산을 수행한다. 이 공정이 이하 표 2에 도시되어 있다:
이 표에서, 공정 진행 시간은 T1, T2, ..., T10으로 표기되어 있다.
Figure 112008051944465-PCT00002
이 표에서, 주어진 시간 Ti에서, 특정 연산 OPi는 기본 정보 IE1 내지 IE5에 대해 각각 프로세서 ProcA 내지 ProcE에 의해 수행된다는 것을 알 수 있다.
10회의 증분 후에, 특정 연산들의 시퀀스 내의 각각의 특정 연산이 하부객체의 기본 정보 각각에 대하여 수행되었다고 할 수 있다.
이 경우, 특정 연산들은 모든 프로세서에 의해 병렬로 수행되므로, 효과가 없는 연산들로 특정 연산들의 시퀀스를 완료할 필요는 없을 것으로 보인다. 이와 같이, 일단 연산 OP8이 완료되면, 연산 OP1을 이하의 하부객체를 구성하는 기본 정보에 적용함으로써 프로세스가 반복될 수 있다.
적어도 부분적으로는 플랫폼 상에서 컴파일러에 의해 정확한 시퀀싱이 수행될 수 있다고 할 수 있다. 이 경우, 특정 포맷 데이터는 시간상 절대적인 시퀀싱을 포함하는 것이 아니라, 시퀀싱에 대한 제약사항을 포함한다.
도 8에 도시된 제3 예에 있어서, 플랫폼은 PC 형태의 컴퓨터에 존재하는 벡터 신호 프로세서와 마찬가지로 공통 메모리에 연결된 5개의 프로세서로 이루어지는 벡터 신호 프로세서를 포함한다. 이들은 또한 모두 파라미터들, 특히, 상관표를 포함할 수 있는 작은 메모리에 연결된다. 이 구조에서, 각각의 프로세서는 특정 연산 모두를 수행한다. 따라서, 모든 프로세서들은 수행될 특정 연산들 모두를 기술하는 데이터를 포함하는 INS 인스트럭션의 동일한 집합을 수신한다.
본 예에 있어서, 2개의 특정 연산의 시퀀스가 표를 이용하여 하나 이상의 기본 정보를 변경하는 것을 포함하는 경우가 고려되어진다. 여기서, 표들은 하나의 단일 위치에 존재하며, 이에 따라 프로세서들은 이들을 공유하여야 한다.
공정의 시작에서, 하부객체의 상이한 기본 정보에 대하여 프로세서 모두가 동일한 하나의 연산을 동시에 수행하므로, 병렬 연산이 수행된다. 이 프로세스가 아래 표 3에 도시되어 있다:
본 표에 있어서, 공정 진행 시간은 T1, T2, ..., T18로 표시되어 있다.
Figure 112008051944465-PCT00003
이 표의 첫번째 3개의 라인에 있어서, 주어진 시간 Ti에서, 기본 정보 IE1 내지 IE5의 각각에 대하여 프로세서 ProcA 내지 ProcE에 의해 특정 연산 OPi이 수행되는 것을 알 수 있다.
표를 이용하여 연산 OP4에 도달하는 경우, 모든 프로세서들이 이 표에 동시에 액세스할 수가 없으므로 액세스의 문제점에 직면한다. 따라서, 프로세서들은 "자신의 차례를 대기"하여야 한다, 즉, 표를 이용하여 자신이 이를 이용할 수 있도록 이전 프로세서가 종료할 때까지 대기하여야 한다. 따라서, 연산 OP4는 시간 T4 내지 T8의 각각에서 프로세서 ProcA 내지 ProcE에 의해 수행된다. 연산 OP5 또한 표를 사용하는 것으로 가정하면, 동일한 방식으로, 이하의 상황이 발생하게 된다: 연산 OP5는 각각 시간 T9 내지 T13에서 프로세서 ProcA 내지 ProcE 에 의해 수행된다.
일단 이 연산들이 수행되면, 프로세스는 정상적으로 계속할 수 있다.
본 장치에 있어서, 특정 시간에서 특정 프로세서들이 활성화되지 않으므로, 구해진 결과는 다른 예에 비하여 계산 시간의 측면에서 다소 효율적이지 않지만, 메모리 사이즈는 감소된다.
적어도 부분적으로 플랫폼 상에서 컴파일러에 의해 정확한 시퀀싱이 수행될 수 있는 것을 알 수 있다. 이 경우, 특정 포맷 데이터는 시간적으로 절대적인 시퀀싱을 포함하지 않고, 시퀀싱에 대한 제약사항을 포함한다.
도 9a는 하부객체의 차원들 중 하나에 따른 수개의 순환적 체인을 포함하는 플랫폼의 일례를 나타낸다. 본 일례에서, 객체는 2 차원의 화상이며, 하부객체는 4개의 기본 정보를 포함하며, 플랫폼은 수평으로 4개의 프로세서 및 수직으로 1개의 프로세서로 이루어진 직사각형에 대응하는 4*1 프로세서의 그리드(grid)에 따라서 배치된 4개의 프로세서를 포함한다. 프로세서들은 좌측에서 우측으로 호출된다: P1, P2, P3, 및 P4. 또한, 본 방법은 본 예에서 2개의 큐를 적용한다.
- 수평 큐 FHa는 입력이 P4의 출력에 출력이 프로세서 P1의 입력에 접속된다. P1의 출력은 P2의 입력에 접속된다. P2의 출력은 P3의 입력에 접속되며, P3의 출력은 P4의 입력에 접속된다.
- 수직 큐 FVa는 입력이 P1, P2, P3, 및 P4의 출력에, 출력이 프로세서 1, P2, P3, 및 P4의 입력에 접속된다.
- 특정 연산들의 시퀀스는 4개의 프로세서를 100% 사용하면서 임의의 수량의 수평 필터 FH를 적용할 수 있다. 예를 들어, 특정 연산 OS1의 결과와 좌측의 동일한 특정 연산 OS1의 결과 사이의 가산으로 이루어지는 필터의 계산을 수행하는 경우: 프로세서 P4의 연산 OS1 결과는 큐 FHa에 위치되며, 후속하는 하부객체의 계산 중에 P1 상의 OS2에 의해 사용되게 된다; 프로세서 P3의 연산 OS1의 결과는 P4 상의 OS1의 결과와 함께 P4 상의 OS2에 의해 사용되도록 프로세서 P4에 전달된다; 프로세서 P2의 연산 OS1 결과는 P3의 OS1의 결과와 함께 P3 상의 OS2에 의해 사용되도록 프로세서 P3에 전달된다; 프로세서 P1의 연산 OS1의 결과는 P2 상의 OS1의 결과와 함께 P2 상의 OS2에 의해 사용되도록 프로세서 P2에 전달된다; 이전 하부객체의 계산 중에 P4에 의해 수행되는 연산 OS1의 결과는 큐 FHa로부터 출력되어, P1 상의 OS1의 결과와 함께 P1 상의 OS2에 의해 사용되도록 프로세서 P1에 전달된다; 시퀀스에 대한 또 다른 특정 연산 OS3이 또 다른 수평 필터를 적용할 수 있으며, 올바른 순서로 데이터를 가져오도록 큐가 사용된다.
- 절절한 변경을 가하여, 특정 연산들의 시퀀스는 4개의 프로세서를 100% 사용하면서 임의의 수량의 수직 필터 FV를 적용할 수 있다,
- 마지막으로, 특정 연산들의 시퀀스는 4개의 프로세서를 100% 사용하면서, 수평 및 수직 차원 FVH 쌍방에 따라서 분리 불가능한 임의의 수량의 필터들을 적용할 수 있다; 예를 들어, 하나의 특정 연산 OS4으로부터 4개의 결과에 적용되는 분리 불가능한 3x3 필터는 FVa를 2회, FHa를 6회 기동시켜, 이전 하부객체의 OS4 결과의 집합과 조합되도록 이전에 계산된 4개의 OS4 결과의 8개 집합을 구한다; 예를 들어, 이들 분리 불가능한 필터는 2개의 큐가 올바른 순서로 데이터를 가져올 수 있도록 하여, 수직 및/또는 수평 필터들과 함께 사용될 수 있다.
2개의 필터가 적용되는 경우, 특정 연산들의 시퀀스는 각각 적어도 한번 시퀀스와는 구별되는 적어도 2개의 특정 연산들이 자신의 N회 적용중에, 또 다른 하부객체의 처리에 사용되는 결과를 생성하도록 이루어진다.
동일한 방식으로, 도 9b는 제2 예를 나타내며, 여기서, 객체는 2개의 차원을 갖는 화상이며, 하부객체는 4개의 기본 정보를 포함하며, 플랫폼은 수평으로 2개의 프로세서 및 수직으로 2개의 프로세서로 이루어진 직사각형에 대응하는 2*2 프로세서의 격자에 따라서 배치되는 4개의 프로세서들을 포함한다. 프로세서들은 좌측에서 우측으로 호출된다: 최상 라인의 P4 및 P5 및 최하 라인의 P6 및 P7. 본 방법은 또한 2개의 큐를 사용하며, 본 예에 있어서:
- 수평 큐 FHb는 입력이 P3 및 P6의 출력에 접속되며, 출력이 P1 및 P4의 입력에 접속된다. 수직 큐 FVb는 입력이 P4 및 P5의 출력에 접속되며, 출력이 P6 및 P7 프로세서의 입력에 접속된다. 또한, 도 9a의 예에 있어서, 특정 연산들의 시퀀스는 4개의 프로세서를 100% 사용하면서 임의의 수량의 수직 및/또는 수평 필터 및/또는 분리 불가능한 필터들을 적용할 수 있다.
도 9a에 도시된 제3 예에 있어서, 플랫폼은 수평 큐 FHc 및 수직 큐 FVc에 접속된 하나의 프로세서 P8를 포함한다. 이들 2개의 큐는 후속하여 재사용하도록 특정 연산들의 결과를 저장하기 위해 프로세서에 의해 사용될 수 있다.
또한, 도 9a의 예에 있어서, 특정 연산들의 시퀀스는 프로세서를 100% 사용하면서 임의의 수량의 수직 및/또는 수평 필터들 및/또는 분리 불가능한 필터들을 적용할 수 있다.

Claims (62)

  1. 특정 포맷 데이터(18)를 직접 또는 간접적으로 제공하기 위해, Q 프로세서(들) 및 적어도 하나의 메모리를 포함하는 결정된 플랫폼(20)에 대하여, 어떠한 루프도 없이 일반 연산들의 시퀀스를 기술하는 제1 데이터(14)를 포함하는 일반 포맷 데이터(12)를 처리하는 방법으로서 - 상기 플랫폼은 특정 포맷 데이터(18)에 따라 동일한 종류의 기본 정보로 이루어지는 객체(22)를 처리하도록 예정되어 있으며, 각각의 기본 정보는 적어도 하나의 수치에 의해 표현됨 - ,
    상기 방법은,
    - 상기 플랫폼에 따라, 일반 연산들의 시퀀스를 특정 연산들의 시퀀스로 변환하는 단계,
    - 상기 플랫폼의 아키텍처에 따라, 또한 객체의 토폴로지에 따라, 제1 데이터와는 독립적으로 처리 연산에 필요한 루프들의 집합을 결정하는 단계, 및
    - 특정 연산들의 시퀀스 및 이에 따라 결정되는 루프들을 포함하는 특정 포맷 데이터를 계산하고, 코드 사이즈 및/또는 메모리 사이즈, 및/또는 계산 시간의 측면에서 상기 플랫폼에 대하여 최적화된 방식으로, 일반 포맷 데이터를 따르는 객체의 처리를 직접 또는 간접적으로 가능하게 하는 단계
    를 포함하는 데이터 처리 방법.
  2. 제1항에 있어서,
    - 플랫폼(22)의 아키텍처에 따라, 또한 객체의 토폴로지에 따라, 제1 데이터와는 독립적으로 상기 플랫폼 내의 기본 정보에 대한 스크롤링 모드(24)를 결정하는 단계를 더 포함하며,
    상기 스크롤링 모드의 결정은,
    각각이 수량 N의 기본 정보를 포함하며, 상기 플랫폼에 따라 결정되는 하부객체들로 기본 정보를 그룹화하는 것과 - 상기 플랫폼에서의 처리는, 특정 연산들의 시퀀스를 하부객체들 중 하나에 적용하는 것으로 구성되는, 하부처리 연산을 주기적으로 론칭(launching)하는 것으로 구성됨 - ,
    상기 플랫폼에 따라 결정되는 하부객체들의 형태 및 오버레이(overlay)와,
    상기 플랫폼에 따라 결정되는 하부객체들의 처리 순서 - 상기 처리 연산에 필요한 루프들의 집합을 결정하는 단계 및/또는 상기 특정 연산들의 시퀀스를 계산하는 단계는 스크롤링 모드를 나타냄 -
    의 선택 및/또는 계산을 포함하는 데이터 처리 방법.
  3. 제2항에 있어서,
    상기 스크롤링 모드의 결정은, 특정 연산들의 시퀀스 중 어느 특정 연산(들)이 각 프로세서에 의해 수행되는지를 결정하는 단계를 포함하며, 각 특정 연산은 각 하부객체에 대하여 적어도 N회 적용되고, 각 특정 연산은 자신의 N회 적용중에 하부객체의 기본 정보를 직접 및/또는 간접적으로 각각 적어도 한번 적용하여 N개 의 결과를 정확하게 산출하며;
    상기 방법은 그렇게 하여 결정된 정보를 상기 특정 포맷 데이터에 추가하는 단계를 더 포함하는 데이터 처리 방법.
  4. 제2항 또는 제3항에 있어서,
    상기 스크롤링 모드의 결정은, 주기의 상대적 시간 각각에서, 상기 특정 연산들의 시퀀스 중 어느 특정 연산(들)이 각 프로세서에 의해 수행되는지를 결정하는 단계를 포함하며, 각 특정 연산은 각 하부객체에 대하여 적어도 N회 적용되고, 각 특정 연산은 자신의 N회 적용중에 하부객체의 기본 정보를 직접 및 간접적으로 각각 적어도 한번 적용하여 N개의 결과를 정확하게 산출하며;
    상기 방법은 그렇게 하여 결정된 정보를 상기 특정 포맷 데이터에 추가하는 단계를 더 포함하는 데이터 처리 방법.
  5. 제2항 내지 제4항 중 어느 한 항에 있어서,
    각 하부객체에 적용되는 상기 특정 연산들의 수량이 프로세서의 수량 Q의 배수가 아닌 경우, 및/또는 처리 대상 객체에 대한 기본 정보의 수량이 N의 배수가 아닌 경우, 상기 특정 연산들의 수량이 Q의 배수가 되고, 상기 기본 정보의 수량이 N의 배수가 되도록 영향이 없는 특정 연산들, 및/또는 널(null) 기본 정보를 추가하는 단계를 포함하는 데이터 처리 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 일반 연산들의 시퀀스는, 논리 블록이라 명명되는 기본 정보의 적어도 하나의 세트에 적용되며, 상기 일반 포맷 데이터는 상대적 위치 및/또는 상대적 스케일, 특히, 논리 블록들 상호간의 공간 및/또는 시간을 지칭하는 적어도 2개의 논리 블록을 포함하는 일반 연산을 위한 제2 데이터를 또한 포함하며,
    상기 기본 정보 및/또는 각 특정 연산이 적용되는 특정 연산의 결과들은 제2 데이터에 의존하며,
    논리 블록들 상호간에 적어도 하나의 상대적 위치가 널(null)이 아닌 경우, 적어도 하나의 특정 연산이 또 다른 하부객체의 적어도 하나의 기본 정보를 직접 또는 간접적으로 적용하는 데이터 처리 방법.
  7. 제6항에 있어서,
    상기 제2 데이터에 따라서 또 다른 하부처리 연산에 대한 후속하는 특정 연산들에 요구되는 특정 연산들의 결과 중 일부를 결정하는 단계를 포함하는 데이터 처리 방법.
  8. 제2항 내지 제5항, 제6항, 제7항 중 어느 한 항에 있어서,
    제2 데이터 및/또는 스크롤링 모드에 따라서 또 다른 하부처리 연산에 대한 후속하는 특정 연산들에 요구되는 특정 연산들의 결과를 메모리에 함께 그룹화하는 단계를 더 포함하는 데이터 처리 방법.
  9. 제2항 내지 제5항, 및 제6항 내지 제8항 중 어느 한 항에 있어서,
    상기 특정 연산들은 적어도 하나의 순환적 체인에 따라 연쇄(chained)된 계산 유닛들에 의해 수행되며,
    상기 방법은, 각 특정 연산에 대한 제2 데이터에 따라서 상기 특정 연산의 결과들이 순환적 체인에 따라 송신되어야 하는지의 여부를 결정하는 단계를 더 포함하며;
    또한, 상기 방법은, 적용가능한 경우, 제2 데이터 및 스크롤링 모드에 따라서 상기 특정 연산의 결과들을 송신하기 위해 어느 순환적 체인이 사용되는지를 결정하는 단계를 더 포함하는 데이터 처리 방법.
  10. 제2항 내지 제9항 중 어느 한 항에 있어서,
    특정 포맷 데이터는 특정 연산들의 그룹화에 관한 정보를 포함하며,
    이 그룹은 후속하는 하부처리 연산들에 요구되지 않는 각 특정 연산의 결과를 저장하지 않고 실행되기로 정해진 하나 이상의 특정 연산들의 패킷들의 형성을 구성하는 데이터 처리 방법.
  11. 제2항 내지 제10항 중 어느 한 항에 있어서,
    특정 포맷 데이터는, 또 다른 하부처리 연산에 대한 후속하는 특정 연산들에 요구되는 특정 연산들의 결과 중 적어도 일부를 플랫폼의 메모리에 유지할 수 있도 록 하는 특정 연산을 포함하는 데이터 처리 방법.
  12. 제2항 내지 제11항 중 어느 한 항에 있어서,
    상기 하부객체에 대한 상기 다른 하부객체의 상대적 위치에 따라서 또 다른 하부객체의 하부처리 중에 사용되는 특정 연산들의 결과를 메모리에 함께 그룹화하여 저장하는 단계를 더 포함하는 데이터 처리 방법.
  13. 제2항 내지 제12항 중 어느 한 항에 있어서,
    상기 하부객체의 하부처리 중에 수행되며, 또 다른 하부객체의 하부처리 중에 사용되는 특정 연산의 결과들을 적어도 하나의 큐에 함께 그룹화하는 단계를 더 포함하는 데이터 처리 방법.
  14. 제2항 내지 제13항 중 어느 한 항에 있어서,
    특정 포맷 데이터는, 특히, 하부객체들이 객체의 차원 중 적어도 하나에 중첩되는 경우 특정 연산의 실행 시 아무런 정보의 손실이 없게 되도록, 특정 연산의 결과들이 플랫폼에서 수회 계산되는 특정 연산들을 포함하는 데이터 처리 방법.
  15. 제2항 내지 제14항 중 어느 한 항에 있어서,
    특정 포맷 데이터는 플랫폼이 특정 연산의 결과들 및/또는 저장된 기본 정보 중 적어도 일부에 액세스할 수 있게 하는 어드레싱 정보를 포함하며, 이 어드레싱 정보는 "기본 어드레스 + 오프셋" 또는 "(기본 어드레스 + 오프셋) 모듈로(modulo) (플랫폼에 위치한 버퍼 메모리의 사이즈)" 포맷이며, 상기 오프셋은 각 하부처리 연산에 대한 하나의 동일한 특정 연산의 결과들에 대하여 일정한 데이터 처리 방법.
  16. 제15항에 있어서,
    각 하부처리 연산에 대한 상기 기본 어드레스는 변경되는 데이터 처리 방법.
  17. 제15항 또는 제16항에 있어서,
    상기 특정 연산들의 결과를 저장하기 위해, 비어 있거나 더 이상 사용되지 않는 특정 연산 결과 또는 기본 정보를 포함하는 메모리 슬롯들에 대한 어드레스들이 상기 플랫폼에 제공되도록 상기 특정 연산들의 순서에 따라 상기 오프셋을 계산하는 단계를 포함하는 데이터 처리 방법.
  18. 제2항 내지 제17항 중 어느 한 항에 있어서,
    상기 처리는 적어도 하나의 루프의 계산, 루프(들)에 대한 반복량, 및 수개의 루프가 있는 경우, 스크롤링 모드에 따른 루프들의 임베딩(embedding)을 포함하는 데이터 처리 방법.
  19. 제2항 내지 제18항 중 어느 한 항에 있어서,
    적어도 하나의 파라미터를 더 처리하며,
    상기 특정 연산들에 의해 사용되는 파라미터(들)의 값(들)은 하부객체들의 절대 위치 및/또는 이 특정 연산들에서 직접 또는 간접적으로 적용되는 기본 정보의 하부객체들 내의 절대 위치에 의존하는 데이터 처리 방법.
  20. 제1항 내지 제19항 중 어느 한 항에 있어서,
    적어도 하나의 파라미터를 더 처리하며,
    특정 포맷 데이터는 파라미터(들)의 값(들) 및/또는 상기 파라미터(들)의 값(들)에 대한 계산 코드를 포함하는 데이터 처리 방법.
  21. 제1항 내지 제20항 중 어느 한 항에 있어서,
    적어도 하나의 파라미터를 또한 처리하며,
    상기 파라미터(들)의 값(들)은, 처리 연산이 상기 플랫폼의 특징을 설명하도록 처리 플랫폼에 따라서 선택되는 데이터 처리 방법.
  22. 제1항 내지 제21항 중 어느 한 항에 있어서,
    적어도 하나의 파라미터를 더 처리하며,
    상기 파라미터(들)의 값(들)은 처리 대상 객체에 의존하는 데이터 처리 방법.
  23. 제1항 내지 제22항 중 어느 한 항에 있어서,
    상기 특정 연산들은 가산, 감산, 승산, 상관 표의 적용, 최소치, 최대치, 선택으로 이루어지는 군에서 취해지는 적어도 하나의 특정 계산 연산을 포함하는 데이터 처리 방법.
  24. 제1항 내지 제23항 중 어느 한 항에 있어서,
    상기 특정 연산들은 적어도 하나의 순환적 체인 CC1에 의해 연쇄되는 계산 유닛들에 의해 수행되며;
    상기 순환적 체인 CC1은 적어도 하나의 큐를 더 포함하며;
    특정 연산 시퀀스 중의 적어도 하나의 특정 연산 IS4는, 계산 유닛 UC1에 대하여 수행되는 하나의 특정 연산 IS5의 결과를 상기 체인에 따라 상기 계산 유닛 UC1에 뒤따르는 큐 또는 계산 유닛 UC2에 전달하는 데이터 처리 방법.
  25. 제1항 내지 제24항 중 어느 한 항에 있어서,
    상기 특정 연산들은 전위(transposition), 복사(replication), 서브-샘플링으로 구성되는 군에서 취해지는 적어도 하나의 특정 기하 연산을 포함하는 데이터 처리 방법.
  26. 제1항 내지 제25항 중 어느 한 항에 있어서,
    상기 특정 연산들은 적어도 하나의 순환적 체인에 따라서 연쇄된 계산 유닛 들에 의해 수행되며;
    상기 순환적 체인은 적어도 하나의 큐를 더 포함하는 데이터 처리 방법.
  27. 제2항 내지 제26항 중 어느 한 항에 있어서,
    상기 특정 연산들은 적어도 하나의 순환적 체인에 따라서 연쇄된 계산 유닛들에 의해 수행되며;
    상기 순환적 체인은 적어도 하나의 큐를 더 포함하며;
    상기 큐는 사이즈 및/또는 레이턴시를 가지며;
    상기 방법은 상기 일반 연산들의 시퀀스 및 스크롤링 모드에 따라 상기 큐의 사이즈 및/또는 레이턴시를 결정하는 단계를 더 포함하는 데이터 처리 방법.
  28. 제1항 내지 제27항 중 어느 한 항에 있어서,
    상기 처리 대상 객체는 화상이며, 상기 기본 정보는 상기 화상의 픽셀들인 데이터 처리 방법.
  29. 제1항 내지 제28항 중 어느 한 항에 있어서,
    상기 처리 플랫폼은 촬상 및/또는 렌더링 장치의 일부이며,
    상기 파라미터(들)의 값(들)은 광학기기 및/또는 센서 및/또는 이미저(imager) 및/또는 전자장치 및/또는 상기 촬상 및/또는 화상 렌더링 장치의 소프트웨어의 특성과 연결되는 데이터 처리 방법.
  30. 제1항 내지 제27항 중 어느 한 항에 있어서,
    상기 처리 대상 객체는 디지털 오디오 신호이며, 상기 기본 정보는 상기 신호의 오디오 샘플들인 데이터 처리 방법.
  31. 제1항 내지 제27항 중 어느 한 항에 있어서,
    상기 처리 대상 객체는 수치 메쉬(numerical mesh)이며, 상기 기본 정보는 상기 메쉬의 각 지점을 특성화하는 공간 및/또는 시간 정보인 데이터 처리 방법.
  32. 어떠한 루프도 없이 일반 연산들의 시퀀스를 기술하는 제1 데이터(14)를 포함하는 일반 포맷 데이터(12)를 처리하는 시스템으로서,
    상기 시스템은 직접 또는 간접적으로, Q개의 프로세서와 적어도 하나의 메모리를 갖는 결정된 플랫폼(20)에 대하여 특정 포맷 데이터(18)를 제공하며, 상기 플랫폼은 상기 특정 포맷 데이터(18)에 따라서 동일한 종류의 기본 정보로 이루어지는 객체(22)를 처리하도록 정해지며, 각각의 기본 정보는 적어도 하나의 수치로 표현되며,
    상기 시스템은,
    - 상기 플랫폼에 따라, 일반 연산들의 시퀀스를 특정 연산들의 하나의 시퀀스로 변환하는 수단,
    - 상기 플랫폼의 아키텍처에 따라, 또한 상기 객체의 토폴로지에 따라, 제1 데이터와는 독립적으로 상기 처리 연산에 필요한 루프들의 집합을 결정하는 수단, 및
    - 그렇게 하여 결정된 루프들을 포함하며, 코드 사이즈 및/또는 메모리 사이즈 및/또는 계산 시간의 측면에서 상기 플랫폼에 대하여 최적화된 방식으로, 일반 포맷 데이터를 따르는 객체의 처리를 직접 또는 간접적으로 가능하게 하는 특정 연산들의 시퀀스를 포함하는 특정 포맷 데이터를 계산하는 수단
    을 포함하는 시스템.
  33. 제32항에 있어서,
    - 플랫폼의 아키텍처에 따라, 또한 상기 객체의 토폴로지에 따라 제1 데이터와는 독립적으로 상기 플랫폼 내의 기본 정보를 스크롤링하기 위한 모드를 결정하는 수단과,
    상기 스크롤링 모드를 결정하는 수단은,
    각각이 상기 플랫폼에 따라 결정되는, Q의 배수인 N개의 기본 정보를 포함하는 하부객체들로 기본 정보를 그룹화 - 상기 플랫폼에서의 처리는 하부객체들 중 하나에 대하여 주기적으로 하부처리 연산을 론칭하는 것을 구성함 - ,
    상기 플랫폼에 따라 결정되는 하부객체들의 형태와 오버레이,
    상기 플랫폼에 따라 결정되는 하부객체들의 처리 순서의 선택 및/또는 계산을 위한 수단을 포함하며,
    - 상기 처리 연산에 필요한 루프들의 집합을 결정하고, 및/또는 상기 스크롤 링 모드를 설명하는 특정 연산들의 시퀀스를 계산하는 수단
    을 포함하는 시스템.
  34. 제33항에 있어서,
    각 프로세서에 의해 상기 특정 연산들의 시퀀스 중 어느 특정 연산(들)이 수행되는지를 결정하는 수단을 포함하며,
    각 특정 연산은 각 하부객체에 대하여 적어도 N회 적용되며,
    각 특정 연산은 자신의 N회의 적용중에 각각 적어도 한번 하부객체의 기본 정보를 직접 및/또는 간접적으로 적용하여 N개의 결과를 정확하게 산출하며;
    상기 방법은, 그렇게 하여 결정된 정보를 상기 특정 포맷 데이터에 추가하는 단계를 더 포함하는 시스템.
  35. 제33항 또는 제34항에 있어서,
    주기의 상대적 시간 각각에서, 상기 특정 연산들의 시퀀스 중 어느 특정 연산(들)이 각 프로세서에 의해 수행되는지를 결정하는 수단을 포함하며, 각 특정 연산은 각 하부객체에 대하여 적어도 N회 적용되고, 각 특정 연산은 자신의 N회 적용중에 하부객체의 기본 정보를 직접 및/또는 간접적으로 각각 적어도 한번 적용하여 N개의 결과를 정확하게 산출하며;
    상기 방법은 그렇게 하여 결정된 정보를 상기 특정 포맷 데이터에 추가하는 단계를 더 포함하는 시스템.
  36. 제33항 내지 제35항 중 어느 한 항에 있어서,
    각 하부객체에 적용되는 상기 특정 연산들의 수량이 프로세서의 수량 Q의 배수가 아닌 경우, 및/또는 처리 대상 객체에 대한 기본 정보의 수량이 N의 배수가 아닌 경우, 상기 특정 연산들의 수량이 Q의 배수가 되고, 상기 기본 정보의 수량이 N의 배수가 되도록 영향이 없는 특정 연산들을 추가하고, 및/또는 널(null) 기본 정보를 추가하는 수단을 포함하는 시스템.
  37. 제32항 내지 제36항 중 어느 한 항에 있어서,
    - 상기 일반 연산들의 시퀀스가, 논리 블록이라 명명되는 적어도 하나의 기본 정보의 집합에 적용되도록 하는 수단,
    - 적어도 2개의 논리 블록들을 포함하는 일반 연산들에 대하여, 상기 상대적 위치 및/또는 상대적 스케일, 특히, 논리 블록들 상호간의 공간 및/또는 시간을 지칭하는 제2 데이터를 포함하는 일반 포맷 데이터를 수신하는 수단,
    - 각 특정 연산이 적용되어야 하는 특정 연산들의 결과 및/또는 기본 정보가 제2 데이터에 의존하도록 하는 수단, 및
    - 논리 블록들 상호간에 적어도 하나의 상대적 위치가 널이 아닌 경우, 적어도 하나의 특정 연산은 직접 또는 간접적으로 또 다른 하부객체의 적어도 하나의 기본 정보를 포함하는 수단
    을 포함하는 시스템.
  38. 제37항에 있어서,
    제2 데이터에 따라서 또 다른 하부처리 연산에 대하여 후속하는 특정 연산들에 요구되는 특정 연산들의 결과 중 일부를 결정하는 수단을 포함하는 시스템.
  39. 제33항 내지 제36항, 제37항, 제38항 중 어느 한 항에 있어서,
    제2 데이터 및/또는 스크롤링 모드에 따라서 또 다른 하부처리 연산에 대하여 후속하는 특정 연산들에 요구되는 특정 연산들의 그룹화된 결과를 저장하는 메모리를 포함하는 시스템.
  40. 제33항 내지 제36항, 제37항 내지 제39항 중 어느 한 항에 있어서,
    적어도 하나의 순환적 체인에 따라서 연쇄되는 계산 유닛,
    각 특정 연산에 대한 제2 데이터에 따라서 상기 특정 연산의 결과들이 순환적 체인에 따라서 전송되어야 하는지 여부를 결정하는 수단, 및
    적용가능한 경우, 제2 데이터 및 스크롤링 모드에 따라서 상기 특정 연산들의 결과를 전송하는 데 사용되는 순환적 체인을 결정하는 수단
    을 포함하는 시스템.
  41. 제33항 내지 제40항 중 어느 한 항에 있어서,
    특정 포맷 데이터가 특정 연산들의 그룹화에 관한 정보를 포함하도록 하는 수단을 포함하며, 상기 그룹화는 또 다른 하부처리 연산에 대한 각 특정 연산의 결과들을 저장하지 않고 실행되도록 정해진 하나 이상의 특정 연산의 패킷들의 형성을 구성하는 시스템.
  42. 제33항 내지 제41항 중 어느 한 항에 있어서,
    특정 포맷 데이터는, 또 다른 하부처리 연산에 대하여 후속하는 특정 연산들에 요구되는 특정 연산들의 결과 중 적어도 일부를 플랫폼의 메모리에 저장할 수 있도록 하는 특정 연산들을 포함하도록 하는 수단을 포함하는 시스템.
  43. 제33항 내지 제42항 중 어느 한 항에 있어서,
    상기 하부객체에 관한 상기 다른 하부객체의 상대적 위치에 따라, 또 다른 하부객체의 하부처리 중에 사용되는 특정 연산들의 그룹화된 결과들을 저장하는 메모리를 포함하는 시스템.
  44. 제33항 내지 제43항 중 어느 한 항에 있어서,
    하부객체의 하부처리 중에 수행되며, 또 다른 하부객체의 하부처리 연산 중에 사용되는 특정 연산들의 그룹화된 결과를 저장하는 적어도 하나의 큐를 포함하는 시스템.
  45. 제33항 내지 제44항 중 어느 한 항에 있어서,
    특정 포맷 데이터는, 특히 상기 하부객체들이 상기 객체의 차원들 중 적어도 하나에 중첩되는 경우 특정 연산들의 실행 시에 아무런 정보도 손실되지 않도록, 특정 연산들의 결과들이 플랫폼에서 수회 계산되는 특정 연산을 포함하게 하는 수단을 포함하는 시스템.
  46. 제33항 내지 제45항 중 어느 한 항에 있어서,
    특정 포맷 데이터는 플랫폼이 특정 연산의 결과들 및/또는 저장된 기본 정보 중 적어도 일부에 액세스할 수 있게 하는 어드레싱 정보를 포함하며, 이 어드레싱 정보는 "기본 어드레스 + 오프셋" 또는 "(기본 어드레스 + 오프셋) 모듈로 (플랫폼에 위치한 버퍼 메모리의 사이즈)" 포맷이며, 상기 오프셋은 하나의 동일한 특정 연산의 결과들에 대하여 일정하도록 하는 수단을 포함하는 시스템.
  47. 제46항에 있어서,
    각 하부처리 연산에 대한 상기 기본 어드레스를 변경하기 위한 수단을 포함하는 시스템.
  48. 제46항 또는 제47항에 있어서,
    상기 특정 연산들의 결과를 저장하기 위해, 비어 있거나 더 이상 사용되지 않는 특정 연산 결과 또는 기본 정보를 포함하는 메모리 슬롯들에 대한 어드레스들이 상기 플랫폼에 제공되도록 상기 특정 연산들의 순서에 따라 오프셋을 계산하는 수단을 포함하는 시스템.
  49. 제33항 내지 제48항 중 어느 한 항에 있어서,
    적어도 하나의 루프, 상기 루프(들)의 반복량, 및 수개의 루프가 있는 경우, 스크롤링 모드에 따른 루프의 임베딩을 계산하는 수단을 포함하는 시스템.
  50. 제33항 내지 제49항 중 어느 한 항에 있어서,
    적어도 하나의 파라미터를 더 처리하여, 특정 연산들에 의해 사용되는 상기 파라미터(들)의 값(들)이 상기 특정 연산들에서 직접 또는 간접적으로 적용되는 기본 정보의 하부객체들에서의 위치에 의존하도록 하는 수단을 포함하는 시스템.
  51. 제32항 내지 제50항 중 어느 한 항에 있어서,
    적어도 하나의 파라미터를 더 처리하여, 특정 포맷 데이터가 상기 파라미터(들)의 값(들) 및/또는 파라미터(들)의 값(들)에 대한 계산 코드를 포함하도록 하는 수단을 포함하는 시스템.
  52. 제32항 내지 제51항 중 어느 한 항에 있어서,
    적어도 하나의 파라미터를 처리하기 위한 수단 및 상기 처리 연산이 상기 플랫폼의 특성을 설명하도록, 상기 처리 플랫폼에 따라서 상기 파라미터(들)의 값(들)을 선택하는 수단을 포함하는 시스템.
  53. 제32항 내지 제52항 중 어느 한 항에 있어서,
    적어도 하나의 파리미터를 더 처리하여, 상기 파라미터(들)의 값(들)이 처리 대상 객체에 의존하도록 하는 수단을 포함하는 시스템.
  54. 제32항 내지 제53항 중 어느 한 항에 있어서,
    가산, 감산, 승산, 상관 표의 적용, 최소치, 최대치, 선택으로 이루어지는 군에 포함되는 특정 연산을 수행하는 수단을 포함하는 시스템.
  55. 제32항 내지 제54항 중 어느 한 항에 있어서,
    순환적 체인 CC1에 의해 연쇄되는 계산 유닛들을 포함하며,
    상기 순환적 체인 CC1은 적어도 하나의 큐를 더 포함하며,
    상기 시스템은, 계산 유닛 UC1에 대하여 수행되는 특정 연산 IS5의 결과를 상기 체인에 따라 상기 계산 유닛 UC1에 뒤따르는 큐 또는 계산 유닛 UC2에 전달하는 수단을 포함하는 시스템.
  56. 제32항 내지 제55항 중 어느 한 항에 있어서,
    전위, 복사, 서브-샘플링으로 구성되는 군에 포함되는 적어도 하나의 특정 기하 연산을 수행하는 수단을 포함하는 시스템.
  57. 제32항 내지 제56항 중 어느 한 항에 있어서,
    적어도 하나의 순환적 체인에 따라서 연쇄된 계산 유닛들을 포함하며, 상기 순환적 체인은 적어도 하나의 큐를 더 포함하는 시스템.
  58. 제33항 내지 제55항 중 어느 한 항에 있어서,
    적어도 하나의 순환적 체인에 따라서 연쇄된 계산 유닛들을 포함하며, 상기 순환적 체인은 적어도 하나의 큐를 더 포함하며,
    상기 시스템은 일반 연산들의 시퀀스 및 스크롤링 모드에 따라서 상기 큐의 레이턴시 및/또는 사이즈를 결정하는 수단을 포함하는 시스템.
  59. 제32항 내지 제58항 중 어느 한 항에 있어서,
    상기 처리 대상 객체는 화상이며, 상기 기본 정보는 상기 화상의 픽셀이 되도록 하는 수단을 포함하는 시스템.
  60. 제32항 내지 제59항 중 어느 한 항에 있어서,
    상기 처리 플랫폼은 촬상 및/또는 렌더링 장치의 일부이며,
    상기 파라미터(들)의 값(들)은 광학기기 및/또는 센서 및/또는 이미저(imager) 및/또는 전자장치 및/또는 상기 촬상 및/또는 렌더링 장치의 소프트웨어의 특성과 연결되도록 하는 수단을 포함하는 시스템.
  61. 제32항 내지 제58항 중 어느 한 항에 있어서,
    상기 처리 대상 객체는 디지털 오디오 신호이며, 상기 기본 정보는 상기 신호의 오디오 샘플이 되도록 하는 수단을 포함하는 시스템.
  62. 제32항 내지 제58항 중 어느 한 항에 있어서,
    상기 처리 대상 객체는 수치 메쉬이고, 공간 및 시간 정보인 상기 기본 정보는 상기 메쉬의 각 지점을 특성화하도록 하는 수단을 포함하는 시스템.
KR1020087017730A 2005-12-19 2006-12-19 디지털 데이터 처리 방법 및 시스템 KR101391465B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR0553946A FR2895103B1 (fr) 2005-12-19 2005-12-19 Procede et systeme de traitement de donnees numeriques
FR0553946 2005-12-19
PCT/FR2006/051389 WO2007071883A2 (fr) 2005-12-19 2006-12-19 Procede et systeme de traitement de donnes numeriques

Publications (2)

Publication Number Publication Date
KR20080087840A true KR20080087840A (ko) 2008-10-01
KR101391465B1 KR101391465B1 (ko) 2014-05-26

Family

ID=37430519

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087017730A KR101391465B1 (ko) 2005-12-19 2006-12-19 디지털 데이터 처리 방법 및 시스템

Country Status (7)

Country Link
US (1) US8429625B2 (ko)
EP (1) EP1963971A2 (ko)
JP (1) JP6085405B2 (ko)
KR (1) KR101391465B1 (ko)
CN (1) CN101379468A (ko)
FR (1) FR2895103B1 (ko)
WO (1) WO2007071883A2 (ko)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7343040B2 (en) * 2001-07-12 2008-03-11 Do Labs Method and system for modifying a digital image taking into account it's noise
US9037961B1 (en) * 2006-09-18 2015-05-19 Credit Suisse Securities (Usa) Llc System and method for storing a series of calculations as a function for implementation in a spreadsheet application
US8515052B2 (en) 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
US20110289417A1 (en) * 2010-05-21 2011-11-24 Schaefer Diane E User interface for configuring and managing the cluster
US9134960B2 (en) * 2010-10-29 2015-09-15 International Business Machines Corporation Numerical graphical flow diagram conversion and comparison
CN102867002A (zh) * 2011-07-05 2013-01-09 北大方正集团有限公司 电子文件的处理方法和装置
CN103785173A (zh) * 2014-03-06 2014-05-14 苏州运智互动科技有限公司 Android系统双体感外设数据区分获取方法
US10255547B2 (en) 2014-12-04 2019-04-09 Nvidia Corporation Indirectly accessing sample data to perform multi-convolution operations in a parallel processing system
US9749548B2 (en) 2015-01-22 2017-08-29 Google Inc. Virtual linebuffers for image signal processors
US10095479B2 (en) 2015-04-23 2018-10-09 Google Llc Virtual image processor instruction set architecture (ISA) and memory model and exemplary target hardware having a two-dimensional shift array structure
US9965824B2 (en) 2015-04-23 2018-05-08 Google Llc Architecture for high performance, power efficient, programmable image processing
US9772852B2 (en) 2015-04-23 2017-09-26 Google Inc. Energy efficient processor core architecture for image processor
US10291813B2 (en) 2015-04-23 2019-05-14 Google Llc Sheet generator for image processor
US9769356B2 (en) 2015-04-23 2017-09-19 Google Inc. Two dimensional shift array for image processor
US9756268B2 (en) 2015-04-23 2017-09-05 Google Inc. Line buffer unit for image processor
US9785423B2 (en) 2015-04-23 2017-10-10 Google Inc. Compiler for translating between a virtual image processor instruction set architecture (ISA) and target hardware having a two-dimensional shift array structure
CN105516033A (zh) * 2015-07-23 2016-04-20 中国电子科技集团公司第四十一研究所 一种基于频谱分析仪的模拟信号解调与分析方法
US9830150B2 (en) 2015-12-04 2017-11-28 Google Llc Multi-functional execution lane for image processor
US10313641B2 (en) 2015-12-04 2019-06-04 Google Llc Shift register with reduced wiring complexity
US10204396B2 (en) 2016-02-26 2019-02-12 Google Llc Compiler managed memory for image processor
US10387988B2 (en) 2016-02-26 2019-08-20 Google Llc Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform
US10380969B2 (en) 2016-02-28 2019-08-13 Google Llc Macro I/O unit for image processor
KR101763827B1 (ko) * 2016-04-07 2017-08-02 주식회사 라이프시맨틱스 블록체인 기반 의료데이터전송시스템, 방법 및 프로그램
US20180007302A1 (en) 2016-07-01 2018-01-04 Google Inc. Block Operations For An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register
US20180005346A1 (en) 2016-07-01 2018-01-04 Google Inc. Core Processes For Block Operations On An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register
US10546211B2 (en) 2016-07-01 2020-01-28 Google Llc Convolutional neural network on programmable two dimensional image processor
US20180005059A1 (en) 2016-07-01 2018-01-04 Google Inc. Statistics Operations On Two Dimensional Image Processor
US10467142B1 (en) * 2019-05-07 2019-11-05 12 Sigma Technologies Enhancement of real-time response to request for detached data analytics

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69108900D1 (de) * 1990-01-30 1995-05-18 Johnson Service Co Vernetztes betriebsmittelverwaltungssystem.
US5655130A (en) * 1994-10-14 1997-08-05 Unisys Corporation Method and apparatus for document production using a common document database
US5860072A (en) * 1996-07-11 1999-01-12 Tandem Computers Incorporated Method and apparatus for transporting interface definition language-defined data structures between heterogeneous systems
US5857100A (en) * 1996-09-03 1999-01-05 Insession Inc. System, method and article of manufacture for extending externalization for universal transaction processing
US6014702A (en) * 1997-06-04 2000-01-11 International Business Machines Corporation Host information access via distributed programmed objects
WO1999052040A1 (en) * 1998-04-08 1999-10-14 Stellar Technologies, Ltd. Architecture for graphics processing
US6988271B2 (en) * 1998-10-02 2006-01-17 Microsoft Corporation Heavyweight and lightweight instrumentation
US7039919B1 (en) * 1998-10-02 2006-05-02 Microsoft Corporation Tools and techniques for instrumenting interfaces of units of a software program
US20020147969A1 (en) * 1998-10-21 2002-10-10 Richard A. Lethin Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
GB0107882D0 (en) * 2001-03-29 2001-05-23 Ibm Parsing messages with multiple data formats
EP1523730B1 (fr) * 2001-07-12 2009-03-25 DO Labs Procede et systeme pour calculer une image transformee a partir d'une image numerique
US7343040B2 (en) * 2001-07-12 2008-03-11 Do Labs Method and system for modifying a digital image taking into account it's noise
FR2827459B1 (fr) * 2001-07-12 2004-10-29 Poseidon Procede et systeme pour fournir a des logiciels de traitement d'image des informations formatees liees aux caracteristiques des appareils de capture d'image et/ou des moyens de restitution d'image
US7191404B2 (en) * 2002-01-14 2007-03-13 International Business Machines Corporation System and method for mapping management objects to console neutral user interface
US7565660B2 (en) * 2002-09-26 2009-07-21 Siemens Energy & Automation, Inc. System and method for universal extensibility that supports a plurality of programmable logic controllers
JP4487479B2 (ja) * 2002-11-12 2010-06-23 日本電気株式会社 Simd命令シーケンス生成方法および装置ならびにsimd命令シーケンス生成用プログラム
WO2004072796A2 (en) * 2003-02-05 2004-08-26 Arizona Board Of Regents Reconfigurable processing
US20040187090A1 (en) * 2003-03-21 2004-09-23 Meacham Randal P. Method and system for creating interactive software
US7987455B1 (en) * 2003-07-23 2011-07-26 International Business Machines Corporation System and method of command processing
US7647580B2 (en) * 2004-09-07 2010-01-12 Microsoft Corporation General programming language support for nullable types
US7694288B2 (en) * 2005-10-24 2010-04-06 Analog Devices, Inc. Static single assignment form pattern matcher
US8117587B1 (en) * 2008-06-03 2012-02-14 Richard Paul Testardi Microcontroller-resident software development environment supporting application-level asynchronous event handling, interactive debugging and pin variables for embedded systems

Also Published As

Publication number Publication date
JP2009524854A (ja) 2009-07-02
US8429625B2 (en) 2013-04-23
WO2007071883A3 (fr) 2007-08-16
FR2895103A1 (fr) 2007-06-22
EP1963971A2 (fr) 2008-09-03
KR101391465B1 (ko) 2014-05-26
CN101379468A (zh) 2009-03-04
US20090228677A1 (en) 2009-09-10
JP6085405B2 (ja) 2017-02-22
FR2895103B1 (fr) 2008-02-22
WO2007071883A2 (fr) 2007-06-28

Similar Documents

Publication Publication Date Title
KR101391465B1 (ko) 디지털 데이터 처리 방법 및 시스템
KR101391498B1 (ko) 하나 이상의 프로세서와 메모리를 갖는 플랫폼 상에서객체를 처리하는 방법, 및 이 방법을 이용한 플랫폼
US10776126B1 (en) Flexible hardware engines for handling operating on multidimensional vectors in a video processor
US10754657B1 (en) Computer vision processing in hardware data paths
JP3806936B2 (ja) データ・フロー制御および複数の処理装置を有する画像圧縮コプロセッサ
US20050160406A1 (en) Programmable digital image processor
US9984432B2 (en) Processor, system, and method for efficient, high-throughput processing of two-dimensional, interrelated data sets
KR101391569B1 (ko) 디지털 처리 수단에 데이터를 제공하는 방법
US5555321A (en) Image data binary coding method and apparatus
JP2004021645A (ja) 画像処理装置およびその制御方法
US8395630B2 (en) Format conversion apparatus from band interleave format to band separate format
Wong et al. Image processing considerations for digital photography
Rusnak Design and implementation of arithmetic coder for CUDA platform
WO2001052183A1 (en) Method and apparatus to transform specification of functions for processing grid-structured data
JP2001092946A (ja) 画像処理装置
Moua Evaluation of the architectural design for digital camera applications
Salinger The impact of computer architecture features on image processing application execution times: A case study using MPEG image sequence compression on the IBM SP2

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: 20180413

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190411

Year of fee payment: 6