KR20090012320A - 프로그래밍 가능한 데이터 처리 회로 - Google Patents

프로그래밍 가능한 데이터 처리 회로 Download PDF

Info

Publication number
KR20090012320A
KR20090012320A KR1020087027124A KR20087027124A KR20090012320A KR 20090012320 A KR20090012320 A KR 20090012320A KR 1020087027124 A KR1020087027124 A KR 1020087027124A KR 20087027124 A KR20087027124 A KR 20087027124A KR 20090012320 A KR20090012320 A KR 20090012320A
Authority
KR
South Korea
Prior art keywords
memory
data
values
circuit
parameter
Prior art date
Application number
KR1020087027124A
Other languages
English (en)
Other versions
KR101311311B1 (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 KR20090012320A publication Critical patent/KR20090012320A/ko
Application granted granted Critical
Publication of KR101311311B1 publication Critical patent/KR101311311B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

프로그래밍 가능한 데이터 처리 회로는 픽셀 값들, 더 일반적으로는 어떤 신호에서의 위치의 함수로서의 데이터 값들을 저장하기 위한 메모리를 가진다. 프로그래밍 가능한 데이터 처리 회로는 복수의 데이터 값이 메모리로부터 병렬로 출력되기 위해 어떻게 배치되어야 하는지를 나타내는 선택된 파라미터 값 세트의 표시를 포함하는 명령어를 지원한다. 명령어는 상이한 파라미터 값 세트가 서로서로 혼합되어 실행될 수 있다는 것을 나타낸다. 프로그래밍 가능한 데이터 처리 회로는 파라미터 저장 회로(246)로부터 선택된 파라미터 값 세트를 검색함으로써, 그리고 선택된 파라미터 값 세트에 적어도 부분적으로 의존해서 메모리 회로(20)의 메모리 포트(21)와 데이터 포트(26) 사이에서 스위칭 회로(22)를 제어함으로써 이러한 타입의 명령어들에 응답한다.

Description

프로그래밍 가능한 데이터 처리 회로{PROGRAMMABLE DATA PROCESSING CIRCUIT}
본 발명은 픽셀 위치의 함수인 2차원 이미지에서의 픽셀 값들과 같은 위치 의존 데이터 값들을 저장하기 위한 메모리를 지닌 프로그래밍 가능한 데이터 처리 회로에 관한 것이다. 본 발명은 또한 위치 의존 데이터 값들을 처리하는 방법과, 위치 의존 데이터 값들을 처리하기 위한 컴퓨터 프로그램 제품에 관한 것이다.
이미지 처리는 일반적으로 메모리에 저장되는 픽셀 값들의 사용을 수반한다. 상이한 픽셀 위치들에 관한 픽셀 값들은 상이한 메모리 위치에 저장된다. 픽셀 위치에 대한 메모리 위치의 다양한 맵핑(mapping)이 사용될 수 있다. 그러한 맵핑은 이미지 처리에 상당한 영향을 미친다. US2005/0083337호는 어떻게 메모리 액세스 속도가 적당한 맵핑에 의해 개선될 수 있는지를 설명한다. WO2005/104027호는 복수의 픽셀 위치에 관한 픽셀 값들이 이미지 처리 동작을 위해 피연산자로서 병렬로 사용될 때의 맵핑을 보상하는 메모리 액세스 회로를 설명한다.
US2005/0083337호는 메모리에 이미지 데이터를 저장하는 대안 방식을 제공하는 이미지 처리 시스템을 설명한다. 상이한 이미지 처리 알고리즘이 픽셀 위치의 상이한 시퀀스에 따른 픽셀 값들로의 액세스를 요구한다. 그러므로, 예컨대 이미지 의 디스플레이는 라인 단위(line-by-line)에 기초한 읽기를 요구하는데, 즉 이미지 압축해제(decompresseion)가 통상 블록-기반의(block-based) 읽기를 요구한다. 상이한 메모리 부분에 걸쳐 분포하여 저장되는 픽셀 값들보다 연속적으로 저장되는 픽셀 값들에의 더 빠른 액세스를 제공하는 메모리 디바이스가 사용된다. 그 결과 이미지 라인을 따라 픽셀 값들이 연속적으로 저장된다면 디스플레이 목적을 위한 액세스가 가장 빠르게 행해질 수 있지만, 블록 기반의 액세스는 블록의 계속되는 라인을 따라 있는 픽셀 값들이 연속적으로 저장된다면 가장 빠르게 행해질 수 있다.
많은 응용예에서, 라인 기반의 액세스를 사용하는 디스플레이와 블록-기반의 액세스를 사용하는 압축해제 모두가 사용된다. US2005/0083337호는 이러한 것을 최적의 속도가 상이한 형태의 액세스에 관해 실현될 수 있도록, 상이한 방식으로 그룹화된 픽셀 값들을 저장함으로써 지원한다. 이러한 그룹화(grouping)는 블록 폭과 높이, 어드레스의 확률 분포와 같은 파라미터 및 메모리 뱅크(bank)의 개수와 메모리 버스의 폭과 같은, 메모리 디바이스의 특성에 의존한다. 픽셀 값들이 쓰여질 때 픽셀 값들의 다수 복사본이 쓰여지고, 픽셀 값들이 읽혀지는 방식에 따라, 상이한 방식으로 그룹화된다.
US2005/0083337호는 데이터 값들이 쓰여질 메모리에서 논리 어드레스들(예컨대, 픽셀 좌표)로부터 물리 어드레스까지의 어드레스 맵핑을 제공한다. 픽셀 값들을 상이한 그룹에 저장하기 위해서는 상이한 어드레스 맵핑이 필요하다. 룩-업(look-up) 테이블 메모리가 맵핑을 설명하기 위해 제공된다. 어드레스 발생기는 논리 어드레스로부터 물리 어드레스를 발생시키기 위해 룩업 테이블을 사용한다. 이러한 어드레스 맵핑은 주어진 프로그램에 관한 최소의 비용을 초래하는(액세스 속도 측면에서) 맵핑의 결정에 기초하여 선택된다. US2005/0083337호는 복수의 픽셀 값의 병렬 처리에 관한 것은 아니다.
WO2005/104027호는 작업(working) 메모리로부터 픽셀 값들로의 병렬 액세스를 제공하는 이미지 처리 회로를 설명한다. 이러한 작업 메모리는 픽셀 위치들의 구역에 관한 픽셀 값들을 저장한다. 통상적으로, 그러한 구역은 픽셀 값들이 메인(main) 메모리에 저장되는 더 큰 이미지의 부분이다. 이 경우, 작업 메모리는 메인 메모리로부터 픽셀 값들 부분의 복사본을 저장하는 캐시(cache)로서의 역할을 한다.
작업 메모리는 병렬로 픽셀 값들을 출력할 수 있는 메모리 뱅크를 포함한다. 병렬-출력 픽셀들은 선택적으로 레지스터 파일의 레지스터에서의 중간 병렬 저장 후, 병렬 픽셀 프로세서{예컨대, SIMD(Single Instruction Multiple Data) 회로}에 공급된다. 픽셀 값들이 병렬로 공급될 때에는 병렬 출력에서의 픽셀 값들의 위치들과 어드레스 지정된 이미지 부분(예컨대, 어드레스 지정된 블록)에 관한 대응하는 픽셀 위치들의 상대적인 위치들 사이에는 미리 결정된 관계가 존재해야 한다.
WO2005/104027호에서 픽셀 값들은 라인-세그먼트(line-segment) 기반 방식으로 둘러싸인 작업 메모리에 저장되고, 이미지에서의 수평 라인-세그먼트를 따라 있는 계속되는 픽셀 위치들에 관한 픽셀 값은 계속되는 뱅크에 저장되며, 연속물 내의 마지막 메모리 뱅크로부터 연속물 내의 제 1 메모리 뱅크까지 둘러싸인다. 다음 수평 라인의 세그먼트에서의 픽셀 위치들에 관한 픽셀 값들은, 다음에 나오는 이전의 라인 세그먼트에 관한 픽셀 값들과 유사하게 저장된다(선택적으로 동일한 메모리 뱅크에 정렬된다). 통상적으로, 픽셀 값들이 저장되는 픽셀 위치들의 구역은 이미지를 따라 슬라이딩한다. 이러한 경우 그 구역으로부터 슬라이딩한 픽셀 위치들에 관한 메모리 위치들이 그 구역으로 슬라이딩한 픽셀 위치들에 관해 재사용될 수 있다. 그러므로, 그 구역에서의 상부 좌측 위치에 관한 픽셀 값을 저장하는 미리 결정된 메모리 뱅크는 존재하지 않게 된다.
WO2005/104027호는 저장된 구역 내의 픽셀 위치들의 한 블록에 관한 픽셀 값들의 병렬 출력을 허용한다. 이 병렬 출력은 그 구역에서의 블록의 어드레스를 제공함으로써 제어된다(예컨대, 그 블록의 상부 좌측 모서리의 x-y 좌표들의 측면에서). 작업 메모리는 그 블록의 어드레스에 대한 픽셀 위치로 정의된 출력에서 그 블록으로부터 픽셀 값들을 출력함으로써 응답한다. 그러므로, 예컨대 블록의 상부 좌측 모서리에서의 위치에 관한 픽셀 값은 제 1의 미리 결정된 출력에서의 출력이 되는 식이다.
이러한 타입의 동작이 메모리 액세스를 제어하기 위해 다수의 파라미터를 요구한다는 점을 주목하는 것이 중요하다. 예컨대, 어드레스 지정된 블록에서는 메모리 뱅크와 위치 사이에 미리 결정된 관계가 존재하지 않는다. 그러므로, 출력에 메모리 뱅크를 결합하는 것은 저장된 구역에서의 미리 결정된 픽셀 위치에 관한 픽셀 값이 저장되는 메모리 뱅크와, 어드레스 지정된 블록의 좌표에 의존하여 제어되어야 한다. 파라미터가 필요한 다른 예들은 픽셀 위치당 데이터의 양이 변할 수 있는 경우를 포함한다. 예컨대, 일부 이미지 처리 응용예에서는 저장된 휘도 관련 값들에 비해 저장된 컬러 관련 값들을 위한 감소한 해상도가 사용된다. 그러므로 뱅크와 출력 사이의 결합은 컬러와 휘도에 관해 상이할 수 있다. 상이한 양자화 정확도가 컬러 및 휘도에 관해 사용되는 경우에도 마찬가지일 수 있다. 게다가, 또 다른 이미지의 출력(또는 동일한 이미지의 또 다른 컬러 성분 등)을 제공하도록 나머지 뱅크를 사용하기 위해서는, 전체 개수의 메모리 뱅크에 도달하기 전에 일부 이미지의 픽셀 값들의 저장 장치를 둘러싸는 것이 바람직할 수 있다. 이는 또한 출력과 메모리 뱅크 사이의 관계를 복잡하게 할 수 있다.
WO2005/104027호의 데이터 처리 회로에서는, 메모리 액세스 회로에서 필수적인 파라미터들이 유지된다. 메모리의 블록이 액세스될 때, 메모리 액세스 회로는 블록의 어드레스(예컨대, 그것의 좌표)를 수신하고, 이 어드레스를 메모리 뱅크와 출력 사이의 필수적인 결합을 선택하기 위해 파라미터와 결합한다. 한꺼번에 파라미터의 한 세트만이 사용될 수 있다.
특히, 신호에서의 위치에 의존하는 복수의 데이터 값의 병렬 처리를 가능하게 하는 것이 본 발명의 목적이고, 이 경우 신호에서의 위치를 메모리 위치와 맵핑하는 상이한 형태의 맵핑이 동시에 사용될 수 있다.
특히, 상이한 방식으로 신호에서의 위치에 의존하는 데이터 값들을 사용하여 병렬 처리를 동시에 가능하게 하는 또 다른 실시예를 제공하는 것이 본 발명의 목적이다.
본 발명은 독립항에 의해 한정된다. 종속 항들은 유리한 실시예를 한정한다.
제 1항에 따른 프로그래밍 가능한 데이터 처리 회로가 제공된다. 이 처리 회로는 복수의 파라미터 값 세트를 저장한다. 이 처리 회로의 일정한 명령어들은 이들 세트에 대한 참조(reference)를 포함한다. 그러한 명령어들에 응답하여, 처리 회로는 선택된 파라미터 값 세트를 검색하고, 픽셀 값들과 같은 데이터 값들의 병렬 출력에 관한 데이터 포트 상의 데이터 값 위치들에 메모리 포트 상의 데이터 값 위치의 할당을 제어한다. 이는 메모리 회로에서 서로 상이한 방식으로 저장되는 데이터 값들의 상이한 세트에 대해 데이터 값들의 병렬 처리를 수행하기 위한 명령어를 실행하는 것을 가능하게 하고, 서로서로 혼합된 데이터의 서로 상이한 타입을 수반할 수 있다. 본 명세서에서 사용된 것처럼, 파라미터 값 세트 각각에 따라 복수의 데이터 세트가 메모리에 동시에 저장되는 시간 기간 동안 파라미터 값 세트의 서로 상이한 표시를 지닌 복수의 명령어가 실행될 때 이들 복수의 명령어가 혼합되어 실행되도록 나타난다.
일 실시예에서는 파라미터 세트 저장 장치가, 예컨대 레지스터 파일, 파라미터 값들의 한 세트를 저장하기 위해 충분한 크기를 가지는 메모리 위치들(예컨대, 레지스터들)을 지닌 전용 메모리이다. 대안적인 일 실시예에서는, 다른 타입의 정보를 또한 저장하는 레지스터 파일이 사용될 수 있는데, 이는 그 레지스터 파일에서의 레지스터들이 충분한 크기를 가지는 경우 그러하다.
일 실시예에서는 이미지 신호에서의 픽셀 위치들과 같은 신호에서의 데이터 값들의 신호 위치를 표시하기 위해 명령어가 위치 피연산자를 가진다. 이 실시예에서는, 데이터 포트 상의 데이터 값 위치들의 명령어-기반의 할당이 신호 위치와 선택된 파라미터 값 세트로부터 계산된다. 또한 메모리에 공급된 어드레스는 이러한 식으로 계산될 수 있다. 그러므로, 명령어는 상이한 방식으로 저장되거나 상이한 타입을 가지는 신호 위치 의존 데이터 값들에 관해 유사한 위치 피연산자를 사용할 수 있다.
일 실시예에서, 메모리 회로는 복수의 적어도 부분적으로 독립적으로 어드레스 지정 가능한 메모리 뱅크를 포함한다. 이 실시예에서, 메모리 뱅크는 상이한 데이터 값 위치들에 관한 데이터 값들을 공급하여, 상이한 데이터 값 위치들에 관한 상이한 어드레스의 사용을 가능하게 한다. 메모리 뱅크에 관한 어드레스는 신호 위치와 선택된 파라미터 값 세트로부터의 것이다. 그러므로, 명령어는 메모리 뱅크에 걸쳐 상이한 방식으로 분포하는 신호 위치 의존 데이터 값들에 관해 유사한 위치 피연산자를 사용할 수 있다.
다양한 실시예에서 파라미터 값들은, 예컨대 메모리 뱅크에서의 데이터 세트의 저장 시작의 오프셋 값, 서브-샘플링(sub-sampling) 인자 및/또는 사용된 메모리 뱅크의 유효 개수를 나타낼 수 있다.
바람직하게, 데이터 포트에 결합된 출력 및/또는 입력을 가지는 병렬 계산 회로가 제공된다. 다수-데이터 값 피연산자 및/또는 데이터 포트에 관한 또는 데이터 포트로부터의 결과를 저장하기 위해, 데이터 포트와 병렬 계산 회로 사이에 기능적으로 결합된 레지스터 파일이 사용될 수 있다.
이러한 데이터 처리 회로에 관한 프로그램은 서로서로 혼합된 상이한 방식으로 저장되는 상이한 데이터 세트를 가리키는 명령어들을 사용할 수 있다. 이 데이터 세트는, 예컨대 복수의 메모리 뱅크에서의 상이한 저장 장치 오프셋을 가지고/가지거나 상이한 서브-샘플(sub-sample) 인자를 사용하고/사용하거나 상이한 개수의 메모리 뱅크를 사용할 수 있다. 일 실시예에서, 그러한 상이한 데이터 세트를 사용하는 프로그램에서의 명령어는, 이들 상이한 세트 각각을 어드레스 지정하기 위해, 상이한 파라미터 세트를 참조하여 결합된 동일한 타입의 위치 피연산자를 사용한다. 이는 프로그램을 간단하게 하고 프로그램의 실행 속도를 높인다.
이들 및 다른 목적과 유리한 양상은 다음 도면을 사용하여, 전형적인 실시예의 설명을 통해 분명해진다.
도 1은 처리 회로를 도시하는 도면.
도 2는 메모리 액세스 유닛을 도시하는 도면.
도 3은 산술연산 기능 요소를 도시하는 도면.
도 4는 메모리 액세스 제어 회로의 부분을 도시하는 도면.
도 5는 캐시 구성을 도시하는 도면.
도 1은 산술연산 유닛(10), 메모리 액세스 유닛(12), 명령어 생성(issue) 회로(14), 레지스터 파일(16)을 포함하는 복수의 기능성 유닛(10,12)을 포함하는 처리 회로를 도시한다. 명령어 생성 회로(14)는 명령어를 생성하기 위해 기능성 유닛(10,12)의 입력에 결합된 출력을 가진다. 기능성 유닛(10,12)은 레지스터 파 일(16)의 읽기 포트와 쓰기 포트에 결합된다. 일 예를 들면 오직 2개의 기능성 유닛이 도시되어 있지만, 산술연산 유닛 또는 메모리 액세스 유닛 외의 기능성 유닛을 포함하여 더 많은 기능성 유닛들이 사용될 수 있음이 이해되어야 한다.
도 2는 복수의 메모리 뱅크(20), 스위칭 회로(22) 및 제어 회로(24)를 포함하는 메모리 액세스 유닛을 도시한다. 스위칭 회로(22)는 레지스터 파일(미도시)로의 입력과 출력(26) 사이와, 메모리 뱅크(20)로부터의 메모리 포트(21)에 결합된다. 제어 회로(24)는 출력 명령어 생성 회로(미도시)와 제어 출력에 결합되는 명령어 입력(28)에 결합된 명령어 입력을 가진다. 명령어 입력(28)의 부분은 레지스터 파일(미도시)의 포트 제어 입력에 결합되고, 제어 회로(24)는 스위칭 회로(22)와 메모리 뱅크(20)에 결합된 제어 출력을 가진다.
제어 회로(24)는 파라미터 세트 제어된 회로(240), 어드레스 발생 회로(242), 스위치 제어 발생 회로(244), 및 파라미터 세트 메모리(246)를 포함한다. 파라미터 세트 제어된 회로(240)는 명령어 입력(28)과 레지스터 파일(미도시)의 읽기 포트에 결합된 입력 및 어드레스 발생 회로(242)와 스위치 제어 발생 회로(244)에 결합된 출력을 가진다. 파라미터 세트 선택 제어된 회로(240)는 파라미터 세트에 관한 저장 장치의 기능을 하는 파라미터 세트 메모리(246)에 결합된다. 어드레스 발생 회로(242), 스위치 제어 발생 회로(244)는 스위칭 회로(22)와 메모리 뱅크(20)에 결합된 출력을 가진다.
동작시, 명령어 생성 회로(14)는 기능성 유닛(10,12)에 연속적인 명령어를 공급한다. 명령어들의 적어도 일부는 각각 적어도 하나의 기능성 유닛(10,12)에 관 한 각각의 명령어를 가지고 있다. 명령어들 중 적어도 일부는 연산, 피연산자 레지스터 및 결과 레지스터를 레지스터 파일(16)에서 지정한다. 명령어를 실행하는 동안, 피연산자 데이터가 지정된 피연산자 레지스터로부터 공급되고, 기능성 유닛(10,12)은 피연산자 데이터를 사용하여 지정된 연산을 실행하고, 결과 데이터를 결과 레지스터에 공급한다. 일 실시예에서, 각각의 명령어는 상이한 기능성 유닛(10,12)에 관한 명령어를 병렬로 가지지만, 대안적으로 명령어가 명령어(instruction)마다 한 명령(command)씩 사용될 수 있다. 또한 명령의 피연산자 레지스터 어드레스, 오피코드(opcode), 및 결과 레지스터 어드레스를 연속해서 공급하는 것과 같이 파이프라인 방식(pipelined fashion)으로 명령이 생성될 수 있다.
도 3은 산술연산 기능 유닛의 일 예를 도시한다. 산술연산 기능 유닛은 한 쌍의 피연산자 입력(30a, 30b), 명령 입력(32), 복수의 산술연산 회로(34), 및 결과 출력(36)을 포함한다. 피연산자 입력(30a, 30b)은 레지스터 파일(미도시)의 각각의 읽기 포트에 결합된다. 통상적으로, 각각의 피연산자 입력은 피연산자의 각각의 비트를 제공하기 위한 복수의 도체(conductor)를 포함한다. 내부적으로, 산술연산 기능성 유닛은 각각의 피연산자 입력을 복수의 섹션{박스(31a,31b)에 의해 상징적으로 표시된 분할부}으로 분할한다. 각각의 산술연산 회로(34)는 피연산자 입력(30a,30b) 모두의 각각의 섹션으로부터 피연산자의 부분을 수신한다. 유사하게, 실제 산술연산 유닛은 복수의 섹션의 조합{박스(37)로 상징적으로 표시된 조합}으로부터 결과 출력을 내부적으로 형성하고, 각각의 산술연산 회로(34)는 각각의 섹 션에 결과 부분을 공급한다. 명령 입력(32)은 산술연산 회로(34)에 의해 수행된 연산의 선택을 제어하기 위해 산술연산 회로(34)에 결합된다.
하나의 예시적인 연산에서, 각 피연산자는 복수의 픽셀 값을 포함하는데, 이러한 픽셀 값들은 각각의 산술연산 회로(34)에 의해 처리되고, 그 결과는 각각의 산술연산 회로(34)에 의해 만들어지는 복수의 픽셀 값을 포함한다.
이러한 산술연산 기능성 유닛은 단지 사용 가능한 기능성 유닛의 일 예라는 것을 알아야 한다. 다른 예에서는 산술연산 회로가 동일한 피연산자로부터의 섹션들의 조합으로부터 픽셀 값들을 처리하고/처리하거나 섹션의 조합에 관한 결과를 만들어낼 수 있다. 산술연산 회로 대신 또는 산술연산 회로와 조합으로 논리 회로가 사용될 수 있지만, 편의상 모든 타입의 회로가 산술연산 회로 하에 포함된다.
도 1과 도 2로 되돌아가, 메모리 액세스 유닛(12)은 레지스터 파일(16)에서의 레지스터와 메모리 뱅크(20) 사이에서 데이터의 전달을 위해 제공하는 명령을 실행한다. 또다른 실시예에서는, 메모리 뱅크(20)가 백그라운드(background) 메모리(미도시)에 관한 캐시(cache)로서의 역할을 한다. 이러한 또다른 실시예에서, 메모리 액세스 유닛은 또한 그것이 메모리 뱅크(20)에 있지 않을 때 백그라운드 메모리로부터 데이터를 가져오는 것 및/또는 메모리 뱅크(20)로부터 백그라운드 메모리에 데이터를 쓰는 것을 포함하는 캐시 관리를 수행한다.
메모리 액세스 유닛(12)을 위한 명령은 산술연산 유닛(10)에 의한 병렬 처리에 사용하기 위해 복수의 메모리 뱅크(20)로부터 병렬로 결과 데이터를 출력하라는 명령을 포함한다. 메모리 액세스 유닛(12)을 위한 명령의 피연산자는 통상적으로 데이터 값들의 어드레스를 표시하는 역할을 한다. 읽기 명령의 경우, 그 결과는 메모리 뱅크(20)로부터 읽혀진 데이터 값들을 담고 있다. 일 실시예에서, 피연산자는 피연산자 값들을 담고 있는 레지스터 파일(16)에서의 레지스터의 어드레스에 의해 표시되지만, 대안적인 일 실시예에서는 하나 이상의 피연산자 값이 그 피연산자에 그대로 포함될 수 있다.
메모리 액세스 유닛(12)에 관한 명령은 파라미터 세트를 표시하는 피연산자를 가지는 명령의 타입을 포함한다. 간단하게 하기 위해, 실시예가 설명되는데 이 실시예에서 파라미터 세트가 명령어 입력(28)을 통해 그대로 표시되지만, 대안적으로 파라미터 세트의 표시는 레지스터 파일(16)의 읽기 포트를 통해 레지스터로부터 올 수 있다.
파라미터 세트 피연산자는 데이터가 메모리 뱅크(20)로부터 읽혀지는 방법을 제어하기 위해 사용된다. 파라미터 세트는 어떻게 데이터 값들이 메모리 뱅크(20)에 저장되는지와, 스위칭 회로(22)가 어떻게 메모리 뱅크를 출력(26)에 결합시켜야 하는지를 표시한다. 예를 통해, 메모리 뱅크(20)에 픽셀 값들을 저장하는 다수의 방식이 설명된다.
첫 번째 예에서는 픽셀 위치들의 직사각형 구역에서의 위치의 함수로서 픽셀 값들이 저장된다. 구역에서의 각각의 y-좌표에 관해, 그 구역은 각각의 x-좌표를 지닌 픽셀 위치들의 라인 세그먼트(line segment)를 포함한다. 한 라인 세그먼트를 따라 픽셀 위치들에 관한 픽셀 값들이, 모든 뱅크가 방문될 때 제 1 뱅크로 되돌아가고 선행하는 라인 세그먼트가 끝난 후 다음 y-좌표에 관한 라인 세그먼트를 시작 하는 각각의 뱅크에서 연속적으로 저장된다. 그러므로, 예컨대 제 1 뱅크의 제 1 메모리 위치와 제 2 메모리 위치는, 제 1 라인 세그먼트를 따라 제 1 픽셀 위치와 제 5 픽셀 위치에 관한 픽셀 값들을 포함하고, 제 2 뱅크의 제 1 메모리 위치와 제 2 메모리 위치는, 제 1 라인 세그먼트를 따라 제 2 픽셀 위치와 제 6 픽셀 위치에 관한 픽셀 값을 포함하며, 이러한 식으로 제 4 뱅크까지 계속된다. 제 1 뱅크의 제 3 메모리 위치와 제 4 메모리 위치에서 제 2 라인 세그먼트를 따라 제 1 픽셀 위치와 제 5 픽셀 위치에 관한 픽셀 값이 저장되고 그러한 식으로 계속된다.
좀더 일반적으로, N개의 뱅크가 존재한다면 i번째 뱅크가 y의 모든 값에 관해 x-좌표(i)=x mod N인 픽셀 값들을 포함할 수 있다. 그 구역이 M개의 픽셀만큼의 폭을 가지고, M이 N의 배수가 아니라면, 상이한 라인 세그먼트의 픽셀 값이 제 1 메모리 뱅크 또는 헤드로부터 시작해서 말미까지 저장될 수 있다. 후자의 경우, 픽셀 위치의 x 좌표와 y 좌표가 x와 y라면, i번째 뱅크는 i=x+M*y mod N인 픽셀 위치에 관한 픽셀 값을 저장한다.
또다른 예에서는, 픽셀 값이 오프셋을 가지고 저장될 수 있는데, 이러한 오프셋은 어떤 구역의 초기 픽셀 값이 저장되는 메모리 뱅크에 영향을 미친다. 이러한 경우, 픽셀 위치의 x 좌표와 y 좌표가 x와 y라면, i번째 뱅크가 i=x0+x+M*(y+y0) mod N인 픽셀 위치에 관한 픽셀 값을 저장하고, 여기서 x0와 y0는 x 오프셋 값과 y 오프셋 값이다. 이 실시예에서는 동일한 x 좌표를 지닌 픽셀이 동일한 뱅크인 i=x0+x mod N에 저장된다.
또 다른 예에서는 각 메모리 위치가 복수의 픽셀 값을 포함한다. 일 예에서 는 제 1 뱅크의 제 1 메모리 위치가 제 1 라인 세그먼트를 따라 있는 제 1 픽셀 위치 내지 제 4 픽셀 위치에 관한 픽셀 값을 포함하고, 제 2 뱅크의 제 1 메모리 위치는 제 1 라인 세그먼트를 따라 있는 제 5 픽셀 위치 내지 제 8 픽셀 위치에 관한 픽셀 값을 포함하는 식으로 계속된다. 제 1 뱅크의 제 2 메모리 위치에서는, 제 1 라인 세그먼트를 따라 있는 제 17 픽셀 위치 내지 제 20 픽셀 위치에 관한 제 1 뱅크 픽셀 값이 저장되는 식으로 계속된다. 제 1 라인 세그먼트가 32개의 픽셀 위치를 포함한다고 가정하면, 제 1 뱅크의 제 3 메모리 위치는 제 2 라인 세그먼트를 따라 있는 제 1 픽셀 위치 내지 제 4 픽셀 위치에 관한 픽셀 값을 포함하는 식으로 계속된다.
좀더 일반적으로, 이러한 또 다른 예에서 N개의 뱅크가 존재하면, i번째 뱅크가 x 좌표가 i=j+P*x mod N인 픽셀 값을 포함할 수 있고, 여기서 y의 모든 값에 관해 j=0..P-1(P는 메모리 위치에서 픽셀 값들의 개수이다)이다. 만약 그 구역이 폭이 M개의 픽셀만큼 되고 M이 N의 배수가 아니라면, 상이한 라인 세그먼트의 픽셀 값이 제 1 메모리 뱅크 또는 헤드로부터 시작해서 말미까지 저장될 수 있다. 후자의 경우, 픽셀 위치의 x 좌표와 y 좌표가 x와 y라면 i번째 뱅크가 i=j+P*x+P*M*y mod N인 픽셀 위치에 관한 픽셀 값들을 저장한다. 또 다른 예에서는 픽셀 값당 비트의 개수가 상이한 데이터에 관해 상이할 수 있다. 예컨대 8비트 픽셀 값이 휘도 데이터를 위해 사용될 수 있고, 컬러 값들에 관해서는 픽셀당 4개의 비트가, 그리고 움직임 벡터에 관해서는 더 큰 개수의 비트가 사용될 수 있다. 이는 더 많은 픽셀 값이 동일한 위치에 저장될 수 있다는 결과를 가지고, 다시 말해 P는 상이한 타 입의 데이터에 관해 상이하다. 이 경우에도 하나 이상의 오프셋, 즉 x0와 y0가 사용될 수 있다.
또 다른 예에서는 서브-샘플링된 픽셀 값이 사용될 수 있고, 이는 데이터 값들이 선택된 픽셀 위치들에 관해서만 저장된다는 것을 의미한다. 이들 픽셀 위치는 좌표 (x,y)=(x0+ix*Sx,y0+iy*Sy)에 의해 설명될 수 있다. 이 경우, Sx,Sy는 수평 및 수직 서브샘플 인자(예컨대, Sx,Sy=1/2)이고, ix와 iy는 정수이다. 서브샘플링이 사용될 때, 바람직하게 사용되지 않은 위치들에 관해서는 어떠한 메모리 위치도 예약되지 않는다. 이 경우 ix와 iy는 메모리 위치를 결정하는 데 있어서 x 좌표와 y 좌표의 역할을 담당한다.
이들 예에서 지금까지 동일한 초기 메모리 뱅크가 항상 저장된 구역에서의 초기 픽셀 위치에 관한 픽셀 값을 저장한다고 가정되었다. 좀더 일반적으로, 임의의 뱅크가 이러한 픽셀 값을 저장할 수 있다. 이 경우 개수가 (j+j1) mod N인 뱅크(여기서 j와 j1은 정수이다)를 지닌 메모리 뱅크가 j번째 뱅크에 관해 앞에서 설명된 역할을 담당할 수 있다. 이 경우 j1의 뱅크 오프셋이 존재한다.
이들 예에서 지금까지 연속하는 픽셀 위치들에 관한 픽셀 값이 연속하는 픽셀 위치의 제 1 부분에 관한 모든 메모리 뱅크를 사용하여 연속하는 메모리 뱅크에 저장된다고 가정되었고, 연속적인 픽셀 위치의 다음 부분에 관한 픽셀 값은 모두 메모리 뱅크인 식으로 계속된다. 또 다른 실시예에서는 메모리 뱅크의 일 부분만이 픽셀 값들의 선택된 세트를 위해서 사용될 수 있다. 그러므로, 예컨대 픽셀 위치들의 집합에 관한 제 1 컬러 값들(예컨대, U개의 값들)이 제 1 메모리 뱅크와 제 2 메모리 뱅크에 저장될 수 있고, 제 2 컬러 값들(예컨대, V개의 값들)이 제 3 메모리 뱅크와 제 4 메모리 뱅크에 저장될 수 있다. 좀더 일반적으로, 이는 뱅크의 총 개수인 N보다 적은 뱅크의 유효 개수인 N'이 픽셀 값의 선택된 세트에 관해 N 대신 사용될 수 있다는 것을 의미한다. 게다가, 초기 뱅크 번호인 B가 뱅크들 중 어느 뱅크가 사용되는지를 표시하기 위해 사용될 수 있다.
비록, 먼저 픽셀 값들이 증가하는 x 좌표에 따라, 그 다음 증가하는 y 좌표에 따라 저장되는 예들이 주어졌지만, 대안적으로 픽셀 값들이 y 좌표 또는 증가하거나 감소하는 좌표값에 따라 먼저 저장될 수 있음이 이해되어야 한다. 픽셀 값들의 한 세트에 관해 어떤 형태의 저장 장치가 사용되는지를 표시하기 위한 파라미터가 사용될 수 있다.
비록 알려진 이미지 처리 알고리즘의 복잡도로 인해, 픽셀 값들의 관점에서 예들이 주어졌지만, 상이한 형태의 저장 장치를 사용하는 것이 특별히 유리하다. 하지만, 이러한 형태의 저장 장치는 또한 일반적으로 적어도 2차원의 신호(단지 이미지 신호가 아닌) 또는 심지어 1차원 신호(예컨대, 오디오 신호와 같은 시간 의존 신호들)에도 적용될 수 있다는 점이 주목되어야 한다. 더 높은 차원의 신호가 사용될 때에는(예컨대, 픽셀 좌표 및 시간의 함수로서의 이미지 또는 픽셀 좌표와 스케일의 함수로서의 이미지), 통상적으로 더 많은 파라미터가 저장 장치를 제어하기 위해 사용된다.
이들 예로부터 알게 되듯이, 다양한 파라미터가 저장 장치 위치에 영향을 준다. 이들 파라미터는 저장된 구역의 라인 세그먼트에서의 픽셀 위치의 개수(M), 오 프셋(x0,y0), 서브샘플 인자(Sx,Sy), 메모리 위치당 픽셀 값들의 개수(P), 뱅크 오프셋(j1), 뱅크의 유효 개수(N'), 초기 뱅크(B), 제 1차적인 저장 좌표의 표시(예컨대, x가 제 1차적인 좌표라면 참이고, y가 제 1차적인 좌표라면 거짓인 불 대수 값)의 조합 또는 이들 중 임의의 하나를 포함할 수 있다. 이들 대신, 또는 이들 외에 다른 파라미터가 사용될 수 있다.
메모리 액세스 유닛(12)은, 데이터 값의 상이한 세트(예컨대, 픽셀 값들)의 저장을 설명하기 위해, 그러한 파라미터에 관한 값들의 복수의 세트의 동시 사용을 지원한다. 복수의 이들 값들의 세트는 파라미터 세트 메모리(246)에 저장된다. 메모리 액세스 회로(12)는 저장된 세트 중 하나를 선택하기 위한 표시를 포함하는 한 가지 타입의 명령어를 지원한다. 일 실시예에서, 그러한 표시는 그러한 명령어에서의 문자로 표현된(literal) 데이터로서 포함되고, 또 다른 실시예에서는, 그러한 표시가 레지스터 파일(16)로부터의 피연산자에서 제공된다. 또한 이러한 타입의 명령어는, 예컨대 현재 구역에 관한 좌표의 측면에서, 픽셀 위치의 표시(또는 좀더 일반적으로는 신호에서의 위치)를 포함하는 위치 피연산자를 가진다.
이러한 타입의 파라미터 세트의 명령어를 수신하게 되면, 제어된 회로(240)가 파라미터 세트 메모리(246)로부터 선택된 파라미터 세트(또는 적어도 그것의 일부)를 검색하고, 어드레스 발생 회로(242)와 스위치 제어 발생 회로(244)를 제어하기 위해 위치 피연산자와 조합하여 선택된 파라미터 세트를 사용한다. 어드레스 발생 회로(242)는 파라미터 세트 제어된 회로(240)로부터의 신호에 따라 메모리 뱅크(20)에 관한 어드레스를 발생시킨다. 스위치 제어 발생 회로(244)는 파라미터 세 트 제어된 회로(240)로부터의 신호에 따라 스위칭 회로(22)에 관한 스위치 제어 신호를 발생시킨다.
이러한 타입의 명령어는 읽기 타입 명령어 또는 쓰기 타입 명령어일 수 있다. 읽기 타입 명령어의 제어 하에, 메모리 뱅크(20)는 읽기 명령어를 수행한다. 읽기 타입 명령어의 경우, 메모리 뱅크(20)는 복수의 데이터 값(예컨대, 픽셀 값들)을 병렬로 출력하고, 스위칭 회로(22)가 레지스터 파일(16)의 쓰기 포트에 병렬로, 적어도 복수의 이들 데이터 값을 포함하는 결과를 출력한다. 스위칭 회로(22)는 필요하다면, 데이터 값을 출력하는 메모리 뱅크(20)와 레지스터 파일(16)의 쓰기 포트에 출력되는 결과에서의 위치 사이의 관계를 재정리한다. 일 실시예에서, 결과에서의 데이터 값의 위치는 위치 피연산자에 의해 표시된 위치에 대한 신호 위치(예컨대, 픽셀 위치)에만 의존한다는 것이 보장된다.
i번째 메모리 뱅크(20)가 픽셀 좌표 x,y를 가진 픽셀 위치에 관한 픽셀 값들을 저장하는 일 예에서, i=(x0+x+M*(y+y0))mod N이라면, 스위칭 회로(22)는 레지스터 파일(16)의 쓰기 포트에 공급되는 결과에서의 위치(j-j0) mod R에 j번째 뱅크로부터의 픽셀 값을 공급한다(여기서 R은 결과에서의 픽셀 값들에 관한 위치들의 번호이고, i0는 명령어의 위치 피연산자에 의해 표시된 위치에 관한 픽셀 값을 저장하는 메모리 뱅크의 번호이다). 이 경우, 파라미터 세트 제어된 회로(240)는 x0,y0,M에 관한 파라미터 값을 사용하여 스위치 제어 발생 회로(244)를 제어한다.
유사하게, 파라미터 세트 제어된 회로(240)는 어드레스 발생 회로(242)에 의해 상이한 메모리 뱅크에 관한 어드레스의 선택을 제어한다. 통상적으로, 어드레스 가 병렬로 출력되어야 하는 일련의 픽셀 위치에 따라 변하는 것에 따라, 각 메모리 뱅크(20)에 관해 2개의 상이한 인접하는 어드레스가 사용되거나 동일한 어드레스가 사용된다. 앞선 예에서, i번째 메모리 뱅크에서의 어드레스는 에컨대 (i-i0)/N일 수 있고, 이 경우 파라미터 세트 제어된 회로(240)와 어드레스 발생 회로(242)는 대응하는 어드레스를 공급한다.
사용되는 파라미터와 메모리 뱅크를 어드레스 지정하는 방식에 따라, 메모리 뱅크(20)의 어드레스 지정과, 스위칭 회로(22)에 의한 선택을 제어하기 위해 좀더 복잡한 계산이 사용될 수 있다는 점을 알게 된다. 파라미터 세트 제어된 회로(240), 어드레스 발생 회로(242) 및 스위치 제어 발생 회로(244)에서 사용된 특정 회로들은 지원되는 파라미터의 성질에 의존한다.
도 4는 이들 회로의 조합의 통상적인 실시예를 도시한다. 계산 부분만이 도시되고, 읽기와 쓰기 사이의 선택을 위한 제어 연결 등은 도시되어 있지 않다. 이 실시예에서, 조합은 가산기(42)에 결합된 출력을 지닌 곱셈기(40){예컨대, 허용 가능한 윈도우 크기, 샘플링 인자 등이 2의 거듭제곱일 때 배럴(barrel) 시프트 회로의 형태로 되어 있는}를 포함하고, 이 가산기(42)는 모듈로(modulo) 회로(43)(또한 통상적으로 2의 거듭제곱인 연산 모듈로인), 또 다른 가산기(44)와 직렬로 결합된다. 또 다른 가산기(44)는 변환 회로(46,48)에 결합된 출력을 가진다.
이러한 통상적인 실시예에서, 예컨대 곱셈기(40)는 구역폭(M)(위치 피연산자로부터 유도된 y-좌표와의 곱셈) 및/또는 서브-샘플링 인자를 설명하기 위해 사용된다. 가산기(42)는 x좌표와 y좌표로 인한 기여부분(contribution)의 덧셈과 오프 셋의 덧셈을 다룬다. 모듈로 회로(43)는 뱅크의 선택된 유효 개수(N')를 고려한다. 또 다른 가산기(44)는 뱅크 오프셋을 더한다. 이 실시예에서, 또 다른 가산기(44)는 결과에서의 제 1 위치에 출력될 제 1 픽셀 값을 포함하는 뱅크의 뱅크 번호를 출력한다. 제 1 변환 회로(46)는 이것을 스위칭 회로(미도시)에 관한 제어 신호로 변환한다. 제 2 변환 회로(48)는 초기 뱅크 번호, 픽셀 값들의 관련 세트의 어드레스 오프셋 및 계산된 어드레스를 사용하여, 상이한 메모리 뱅크에 관한 어드레스를 결정한다. 다양한 요소는 메모리 액세스 유닛에 관한 명령에서의 파라미터 값들의 선택된 세트의 표시에 응답하여 파라미터 값 메모리(246)로부터 얻어진 파라미터 값들을 수신한다.
도 4의 회로는 단지 메모리 뱅크(20)에 관한 어드레스와 스위칭 회로(22)에 관한 스위치 제어 신호를 발생시키기 위한 회로의 하나의 간단한 예이다. 메모리 액세스 유닛에 의해 지원되는 파라미터의 특별한 조합에 관해 필요한 대로, 유사한 동작이나 단순화되거나 좀더 복잡한 동작을 수행하기 위해 많은 대안예가 존재한다.
쓰기 타입 명령어의 경우, 메모리 뱅크에서의 메모리 위치에 레지스터 파일(16)의 읽기 포트로부터 데이터가 쓰여진다. 이 경우 스위칭 회로(22)는 메모리 뱅크(20) 중 각각의 제어 가능한 메모리 뱅크에 읽기 포트의 각각의 부분을 결합시킨다. 쓰기 타입 명령의 제어 하에, 메모리 뱅크(20)는 쓰기 동작을 수행한다. 스위칭 제어 신호와 어드레스를 발생시키기 위한 제어 회로(24)의 동작은 읽기 타입 명령어의 경우와 유사하다.
알게 되듯이 설명된 회로는 읽기 타입 명령어에 응답하여, 복수의 데이터 값을 지닌 결과로 메모리 뱅크(20)로부터의 출력을 변환하는 기능 및/또는 읽기 타입 명령어에 응답하여 쓰기 타입 명령어의 피연산자의 각각의 부분을 메모리 뱅크(20)에 저장하는 기능을 수행한다. 각각의 경우 회로는 메모리 뱅크와 결과에서의 위치들 사이의 조정 가능하게 제어된 관계를 사용한다. 이 관계는 제어 회로(24)에서 복수의 그러한 세트 중에서 파라미터 값의 한 세트를 선택하는 것을 표시하는 읽기 또는 쓰기 타입의 명령어에서의 정보에 의해 제어된다.
동작시, 회로는 명령어의 프로그램을 실행하고, 이들 명령어는 읽기 및/또는 쓰기 타입의 명령어가 혼합된 것을 포함할 수 있으며, 이는 파라미터 값들의 서로 상이한 세트를 표시한다. 파라미터 값들의 상이한 세트가 저장될 수 있는 일 실시예에서는, 일련의 메모리 뱅크에서 하나의 오프셋으로부터 시작해서 저장된 픽셀 위치들의 제 1 구역의 픽셀 값들과 일련의 메모리 뱅크에서의 또 다른 오프셋으로부터 시작해서 저장된 픽셀 위치들의 제 2 구역의 픽셀 값들이 제공된다. 그러므로, 이들 상이한 구역에 대한 액세스는 상이한 구역들의 로딩(loading) 또는 리로딩(reloading) 없이, 동시에 수행될 수 있다(즉, 서로서로 혼합되는 각각의 명령어에서).
상이한 세트의 파라미터 값들이 저장될 수 있는 또 다른 실시예에서는, 메모리 뱅크의 상이한 부분에서의 서브-샘플링된 해상도(resolution)에서 제 2 픽셀 값들(U 및/또는 V)과 함께 하나의 공간 해상도를 가지고 저장된 제 1 픽셀 값들(예컨대, 휘도 값들인 Y)이 제공된다. 유사하게, 이러한 타입의 데이터가 훨씬 더 낮은 해상도에서 픽셀 위치들에 관한 움직임 벡터와 혼합될 수 있다. 그러므로, 이들 상이한 타입의 데이터에 대한 액세스는 상이한 데이터의 로딩 또는 리로딩 없이 동시에 수행될 수 있다.
또 다른 실시예에서는 그러한 데이터의 상이한 세트가 메모리 뱅크(20)의 상호 배제적인 서브세트에 저장될 수 있다. 이 실시예에서는 메모리 액세스 유닛이 동일한 명령어에서 파라미터 세트의 복수의 표시를 수신하는 것, 복수의 표시된 세트에 따라 배치된 데이터 값들을 레지스터 파일(16)의 쓰기 포트에 또는 읽기 포트로부터 입력 및/또는 출력하는 것을 행하도록 배치된다. 이는, 예컨대 단일 표시를 처리하기 위한 회로를 복제하고, 스위칭 제어 신호의 각각의 부분과 복제된 회로의 출력으로부터의 메모리 어드레스를 선택함으로써 실현될 수 있다. 그러므로, 데이터 세트의 조합에 대한 액세스는 동일한 명령어로 수행될 수 있다.
일 실시예에서, 메모리 액세스 유닛은 파라미터 값 메모리에서의 선택된 위치에 파라미터 값들을 쓰기 위한 또 다른 명령어 타입을 지원하도록 배치된다. 동작시, 메모리 뱅크(20)에서의 데이터 값들을 읽거나 쓰기 전에 파라미터 값들의 값들을 설정하기 위한 명령어를 포함하는 프로그램이 실행된다.
비록 메모리 뱅크(20)만이 도시되었지만, 이들 뱅크는 백그라운드 메모리에 관한 캐시로서 작용하도록 사용될 수 있다는 점이 이해되어야 한다. 도 5는 캐시 메모리(50)가 메모리 뱅크(20)를 포함하는 캐시 구성을 도시한다. 메모리 액세스 유닛은 또한 캐시 제어 회로(52)와, 백그라운드 메모리(54)로의 인터페이스 회로(56)를 포함한다. 캐시 제어는 그 자체로서 알려져 있다. 일 실시예에서 캐시 제 어 회로(52)는 또한 캐시 메모리에서 데이터 일부에 대응하는 파라미터 세트와 메인 메모리(54)에서의 대응하는 어드레스에 따라, 상이한 픽셀 위치에 관한 데이터 값들이 백그라운드 메모리(54)에서 저장되는 식에 적절하게, 캐시 메모리(50)에서 어드레스를 계산함으로써, 백그라운드 메모리(54)에서 데이터를 가져오거나 저장하기 위한 백그라운드 메모리 어드레스를 결정하는데 사용하기 위한 저장된 파라미터 값들에 대한 액세스를 가진다.
본 발명의 실시예는 다음과 같이 요약될 수 있다. 프로그래밍 가능한 데이터 처리 회로는 픽셀 값들 또는 좀더 일반적으로 신호에서의 위치의 함수로서 데이터 값들을 저장하기 위한 메모리를 가진다. 이 프로그래밍 가능한 데이터 처리 회로는, 어떻게 복수의 데이터 값들이 메모리로부터 병렬 출력하기 위해 배치되어야 하는지를 표시하는 선택된 파라미터 값 세트의 표시를 포함하는 명령어를 지원한다. 상이한 파라미터 값 세트를 표시하는 명령어는 서로서로 혼합되어 실행될 수 있다. 프로그래밍 가능한 데이터 처리 회로는 파라미터 저장 회로(246)로부터 선택된 파라미터 값 세트들을 검색하고, 메모리 회로(20)의 메모리 포트(21)와 적어도 부분적으로 선택된 파라미터 값 세트에 의존하는 데이터 포트(26) 사이의 스위칭 회로(22)를 제어함으로써 이러한 타입의 명령어에 응답한다.
비록 파라미터 저장 회로의 일 예로서 파라미터 값 메모리(246)가 도시되었지만, 임의의 형태의 저장 장치가 사용될 수 있다는 것을 알아야 한다. 예시된 예에서 모든 파라미터 값은 파라미터 값들의 한 세트의 표시에 응답하여 파라미터 값 메모리로부터 제공된다. 그러므로, 파라미터 값 메모리는 파라미터 세트에 관한 레 지스터를 지닌 전용 레지스터 파일로서 작용을 한다. 이러한 식으로, 큰 파라미터 세트에 관한 특별한 레지스터가 제공될 수 있다. 하지만, 대안적인 실시예에서는 파라미터 값들의 일부가, 예컨대 그것들이 파라미터 세트를 보유하기에 충분히 크다면, 레지스터 파일(16)에서의 레지스터로부터의 명령어의 피연산자 데이터로서 부분적으로 또는 전체적으로 공급될 수 있다는 점을 알아야 한다. 이 경우 파라미터 값 메모리(246)는 레지스터 파일의 일부이다. 어떠한 종류의 파라미터 저장 회로도 사용될 수 있다.
비록 일 실시예가 피연산자와 결과들(파라미터 값 세트 외의 것)이 단일 레지스터 파일에 읽혀지거나 쓰여지는 것으로 설명되었지만, 실제로는 그러한 단일 레지스터 파일이 상이한 크기를 가진 레지스터를 지닌 복수의 레지스터 파일을 포함할 수 있다는 점을 알아야 한다. 그러므로, 예컨대 위치 피연산자나 파라미터 세트의 선택 표시를 지닌 레지스터는 복수의 데이터 값을 포함하는 레지스터보다 작을 수 있다.
게다가, 또 다른 실시예에서는 피연산자와 결과가 레지스터 파일에서 중재 저장 장치(intervening storage)를 사용하지 않고, 산술연산 회로에 직접 및/또는 메모리 액세스 유닛으로부터 제공될 수 있다.
또한, 피연산자/결과와 메모리 뱅크(20) 사이에서 데이터가 재배치되는 방식을 제어하는 파라미터의 특정 예들이 주어졌지만, 다른 파라미터와 재배치를 제어하는 다른 방식이 사용될 수 있다는 점을 알아야 한다.
비록 명령어 생성, 레지스터 읽기 및 쓰기, 명령어 실행, 어드레스 선택, 스 위칭 선택과 같은 명령어에 관한 다양한 동작이 함께 설명되었지만, 상이한 동작들이 파이프라인(pipelined) 방식으로 수행될 수 있다는 점을 알아야 한다.
게다가, 산술연산 회로의 일 예가 도시되었지만, 설명된 형태의 메모리 액세스가 피연산자를 처리하고/처리하거나 복수의 데이터 값을 포함하는 결과를 만들어내는 다른 타입의 기능성 요소와 결합되어 수행될 수 있다는 점을 알아야 한다.
그러므로 전술한 실시예는 본 발명을 제한하기보다는 예시하는 것이고, 당업자라면 첨부된 청구항의 범주로부터 벗어나지 않으면서 많은 대안적인 실시예를 설계할 수 있다는 점이 주목되어야 한다. 청구항에서, 괄호 안의 참조 부호는 청구범위를 제한하는 것으로 해석하지 말아야 한다. "포함하는"이라는 단어는 청구범위에 기재된 것 이외의 요소나 단계의 존재를 배제하지 않는다. 단수 요소의 사용은 그러한 요소의 복수의 존재를 배제하지 않는다. 본 발명은 여러 개의 구별되는 요소를 포함하는 하드웨어에 의해 및/또는 적당하게 프로그램된 프로세서에 의해 구현될 수 있다. 몇몇 수단을 열거하는 디바이스 청구항에서, 몇몇 이들 수단은 하드웨어의 하나의 동일한 아이템에 의해 구체화될 수 있다. 일정한 방법이 서로 상이한 종속항에서 인용되고 있다는 단순한 사실은, 이러한 방법의 결합이 유리하게 사용될 수 없다는 점을 나타내는 것은 아니다.
전술한 바와 같이, 본 발명은 픽셀 위치의 함수인 2차원 이미지에서의 픽셀 값들과 같은 위치 의존 데이터 값들을 저장하기 위한 메모리를 지닌 프로그래밍 가능한 데이터 처리 회로와, 위치 의존 데이터 값들을 처리하는 방법 등에 이용 가능 하다.

Claims (25)

  1. 프로그래밍 가능한 데이터 처리 회로로서,
    메모리 포트(21)를 가지는 메모리 회로(20),
    데이터 포트(26),
    제어 신호에 따라 상기 데이터 포트(26)의 각각의 데이터 값 위치와 상기 메모리 포트(21)의 데이터 값 위치들 사이에 제어 가능한 결합을 제공하기 위해, 상기 메모리 포트(21)와 데이터 포트(26) 사이에 결합된 제어 가능한 스위칭 회로(22),
    각 파라미터 값 세트가 적어도 하나의 파라미터 값을 포함하는 복수의 파라미터 값 세트를 저장하기 위한 파라미터 저장 회로(246)로서, 각 파라미터 값 세트는 상기 메모리 포트(21)의 데이터 값 위치들에 상기 데이터 포트(26)의 할당 데이터 값 위치들을 적어도 부분적으로 결정하는, 파라미터 저장 회로(246), 및
    상기 스위칭 회로(22)와 파라미터 저장 회로(246)에 결합된 명령어 실행 제어 회로(240,242)로서, 명령어 실행 제어 회로(240,242)의 명령어 세트는 선택된 파라미터 값 세트의 표시를 포함하는 명령어를 포함하고, 상기 명령어 실행 제어 회로(240,242)는 파라미터 저장 회로(246)로부터 선택된 파라미터 값 세트를 검색함으로써, 상기 명령어에 응답하고 선택된 파라미터 값 세트를 사용하여 결정된 할당에 따라 스위칭 회로(22)를 제어하도록 구성되는, 명령어 실행 제어 회로(240,242)를
    포함하는, 프로그래밍 가능한 데이터 처리 회로.
  2. 제 1항에 있어서, 상기 명령어는 또한 신호에서의 데이터 값들의 신호 위치를 나타내기 위한 위치 피연산자(operand)를 가지고, 상기 명령어 실행 제어 회로(240,242)는 신호 위치와 선택된 파라미터 값 세트로부터 할당을 계산하도록 구성되는, 프로그래밍 가능한 데이터 처리 회로.
  3. 제 2항에 있어서, 상기 명령어 실행 제어 회로(240,242)는 메모리 회로(20)에 어드레스를 공급하고, 신호 위치와 선택된 파라미터 값 세트로부터 어드레스를 계산하도록 구성되는, 프로그래밍 가능한 데이터 처리 회로.
  4. 제 2항에 있어서, 상기 메모리 회로는 복수의 적어도 부분적으로 독립적으로 어드레스 지정 가능한 메모리 뱅크(bank)(20)를 포함하고, 이들 메모리 뱅크 각각은 상기 메모리 포트(21) 상의 데이터 값 위치들의 각 위치에 관한 적어도 하나의 데이터 값을 읽거나 쓰도록 구성되며, 상기 명령어 실행 제어 회로(240,242)는 상기 메모리 뱅크(20)에 어드레스를 공급하고 신호 위치와 선택된 파라미터 값 세트로부터 어드레스를 계산하도록 구성되는, 프로그래밍 가능한 데이터 처리 회로.
  5. 제 4항에 있어서, 상기 파라미터 값 세트들은 각각 적어도 하나의 오프셋 값을 정의하고, 상기 명령어 실행 제어 회로(240,242)는 위치 피연산자로부터 유도된 값에, 뱅크의 유효 개수의 나머지 연산을 통해(modulo) 상기 오프셋 값을 더함으로써, 할당을 계산하도록 구성되는, 프로그래밍 가능한 데이터 처리 회로.
  6. 제 4항에 있어서, 상기 파라미터 값 세트들은 각각 적어도 하나의 오프셋 값을 정의하고, 상기 명령어 실행 제어 회로(240,242)는 위치 피연산자로부터 유도된 값과 오프셋 값의 합에 따라 메모리 뱅크에 관한 어드레스를 계산하도록 구성되는, 프로그래밍 가능한 데이터 처리 회로.
  7. 제 4항에 있어서, 상기 파라미터 값 세트 각각은 적어도 하나의 서브-샘플링 인자를 정의하고, 상기 명령어 실행 제어 회로(240,242)는 상기 서브-샘플링 인자와, 상기 위치 피연산자로부터 유도된 값의 곱으로부터 상기 메모리 뱅크에 관한 할당 및/또는 어드레스를 계산하도록 구성되는, 프로그래밍 가능한 데이터 처리 회로.
  8. 제 4항에 있어서, 상기 파라미터 값 세트 각각은 적어도 명령어에 관해 사용된 유효한 개수의 메모리 뱅크(20)를 정의하고, 상기 명령어 실행 제어 회로는 위치 피연산자를 사용하여 유도된 값을 사용된 메모리 뱅크(20)의 유효 개수로 나머지 연산해서 메모리 뱅크(20)에 관한 어드레스 및/또는 할당을 계산하도록 구성되는, 프로그래밍 가능한 데이터 처리 회로.
  9. 제 1항에 있어서, 데이터 포트(26)에 결합된 입력 및/또는 출력을 가지는 병렬 계산 회로(10)를 더 포함하는, 프로그래밍 가능한 데이터 처리 회로.
  10. 제 9항에 있어서, 상기 데이터 포트(21)와 병렬 계산 회로(10) 사이에 기능적으로 결합된 레지스터 파일(16)을 더 포함하는, 프로그래밍 가능한 데이터 처리 회로.
  11. 제 1항에 있어서, 상기 명령어 실행 제어 회로(240,242)는 명령어의 피연산자에 의해 어드레스 지정된 레지스터로부터 파라미터 값 세트의 선택 표시를 수신하도록 구성되는, 프로그래밍 가능한 데이터 처리 회로.
  12. 제 1항에 있어서, 상기 명령어 실행 제어 회로(240,242)는 명령어에서의 리터럴(literal) 데이터로부터 파라미터 값 세트의 선택 표시를 수신하도록 구성되는, 프로그래밍 가능한 데이터 처리 회로.
  13. 제 1항에 있어서, 파라미터 값들의 서로 상이한 세트의 선택을 표시하는 표시물을 지닌 명령어를 사용하여, 상기 명령어를 가지고 상기 메모리 유닛(20)에서 동시에 데이터 값들을 어드레스 지정하기 위한 프로그램으로 프로그래밍되는, 프로그래밍 가능한 데이터 처리 회로.
  14. 제 1항에 있어서, 상기 메모리 회로는 캐시 메모리(20), 백그라운드 메모리(54) 및 캐시 제어 회로(52)를 포함하고, 상기 캐시 메모리(20)는 상기 메모리 포트(21)에 결합되며, 상기 캐시 제어 회로(54)는 백그라운드 메모리(54)에서의 위치에 관한 캐시 메모리(20)에서의 위치를 선택하기 위해 파라미터 값들의 세트를 사용하도록 구성되는, 프로그래밍 가능한 데이터 처리 회로.
  15. 제 1항에 의한 프로그래밍 가능한 데이터 처리 회로에 관한 프로그램을 포함하는 컴퓨터 프로그램 제품으로서, 상기 프로그램은 명령어들을 포함하는데 각 명령어는 선택된 파라미터 값 세트의 각각의 표시를 포함하고, 명령어들의 적어도 일부는 서로 혼합된(intermixed) 상호 간에 상이한 파라미터 값 세트들을 선택하고, 상기 프로그램의 일부에서 프로그램이 실행되는 동안 명령어들의 상기 부분의 각각에 의해 어드레스 지정된 실행 데이터 값들이, 선택된 파라미터 값 세트들에 적어도 부분적으로 의존하여 병렬 출력 동안 데이터 포트의 병렬 부분에 데이터 값들을 맵핑하는 것을 제어하도록, 메모리 회로(20)에 동시에 저장되는, 컴퓨터 프로그램 제품.
  16. 데이터 값을 처리하는 방법으로서,
    명령어를 실행하는 단계로서, 각 명령어는 선택된 파라미터 값 세트의 각각의 표시를 포함하고, 명령어들의 적어도 일부는 서로 혼합된 서로 상이한 파라미터 값 세트들을 선택하는, 명령어들을 실행하는 단계,
    파라미터 저장 회로(146)로부터 선택된 파라미터 값 세트들을 검색함으로써, 상기 명령어에 응답하는 단계, 및
    데이터 포트(26)의 각각의 데이터 값 위치들과 메모리 포트(21)의 데이터 값 위치들 사이의 제어 가능한 결합을 제공하도록 선택된 파라미터 값 세트에 적어도 부분적으로 의존해서, 메모리 회로(20)의 메모리 포트(21)와, 데이터 포트(26) 사이의 스위칭 회로(22)를 제어하는 단계를
    포함하는, 데이터 값을 처리하는 방법.
  17. 제 16항에 있어서, 명령어의 신호 위치 피연산자와 선택된 파라미터 값 세트의 조합으로부터, 메모리 포트(21)의 데이터 값 위치들로의 데이터 포트(26)의 데이터 값 위치들의 할당을 계산하는 단계를 포함하는, 데이터 값을 처리하는 방법.
  18. 제 17항에 있어서, 상기 메모리 회로(20)에 적어도 하나의 어드레스를 적용하고, 신호 위치와 선택된 파라미터 값 세트로부터 메모리 회로(20)에 관한 적어도 하나의 어드레스를 계산하는, 데이터 값을 처리하는 방법.
  19. 제 17항에 있어서, 상기 메모리 회로(20)는 복수의 적어도 부분적으로 독립적으로 어드레스 지정 가능한 메모리 뱅크(20)를 포함하고, 이들 메모리 뱅크(20) 각각은 상기 메모리 포트(21) 상의 데이터 값 위치들의 각 위치에 관한 적어도 하나의 데이터 값을 읽거나 쓰도록 구성되며, 상기 방법은 메모리 뱅크(20)에 어드레 스를 공급하는 단계와 신호 위치 및 선택된 파라미터 값 세트로부터 어드레스를 계산하는 단계를 포함하는, 데이터 값을 처리하는 방법.
  20. 제 19항에 있어서, 파라미터 값 세트들은 각각 적어도 하나의 오프셋 값을 정의하고, 위치 피연산자로부터 유도된 값에, 뱅크(20)의 유효 개수의 나머지 연산을 통해 상기 오프셋 값을 더함으로써 할당이 계산되는, 데이터 값을 처리하는 방법.
  21. 제 19항에 있어서, 상기 파라미터 값 세트들은 각각 적어도 하나의 오프셋 값을 정의하고, 상기 방법은 위치 피연산자로부터 유도된 값과 오프셋 값의 합에 따라 메모리 뱅크(20)에 관한 어드레스를 계산하는 단계를 포함하는, 데이터 값을 처리하는 방법.
  22. 제 19항에 있어서, 상기 파라미터 값 세트 각각은 적어도 하나의 서브-샘플링 인자를 정의하고, 상기 방법은 상기 서브-샘플링 인자와, 상기 위치 피연산자로부터 유도된 값의 곱으로부터 상기 메모리 뱅크에 관한 할당 및/또는 어드레스를 계산하는 단계를 포함하는, 데이터 값을 처리하는 방법.
  23. 제 19항에 있어서, 상기 파라미터 값 세트 각각은 적어도 명령어에 관해 사용된 메모리 뱅크(20)의 유효한 개수를 정의하고, 위치 피연산자를 사용하여 유도 된 값을 사용된 메모리 뱅크(20)의 유효 개수로 나머지 연산해서 메모리 뱅크(20)에 관한 어드레스 및/또는 할당을 계산하는 단계를 포함하는, 데이터 값을 처리하는 방법.
  24. 데이터 값들을 처리하기 위한 프로세서로서,
    명령어들을 실행하기 위한 수단으로서, 각 명령어는 선택된 파라미터 값 세트의 각각의 표시를 포함하고, 명령어들의 적어도 일부는 서로 혼합된 서로 상이한 파라미터 값 세트들을 선택하는, 명령어들을 실행하기 위한 수단,
    파라미터 저장 회로(146)로부터 선택된 파라미터 값 세트들을 검색함으로써, 상기 명령어에 응답하기 위한 수단, 및
    데이터 포트(26)의 각각의 데이터 값 위치들과 메모리 포트(21)의 데이터 값 위치들 사이의 제어 가능한 결합을 제공하도록 선택된 파라미터 값 세트에 적어도 부분적으로 의존해서, 메모리 회로(20)의 메모리 포트(21)와 데이터 포트(26) 사이의 스위칭 회로(22)를 제어하기 위한 수단을
    포함하는, 데이터 값들을 처리하기 위한 프로세서.
  25. 프로그래밍 가능한 데이터 처리 회로로서,
    한 신호에서의 위치의 함수로서 데이터 값들을 저장하기 위한 메모리,
    복수의 데이터 값들이 메모리로부터 병렬 출력을 위해 어떻게 배치되어야 하는지를 나타내는 선택된 파라미터 값 세트의 표시를 포함하는 명령어들을 지원하기 위한 수단으로서, 상기 명령어들은 상이한 파라미터 값 세트들이 서로 혼합되어 실행될 수 있음을 나타내는, 지원하기 위한 수단, 및
    파라미터 저장 회로(246)로부터 선택된 파라미터 값 세트들을 검색함으로써, 그리고 선택된 파라미터 값 세트에 적어도 부분적으로 의존해서 데이터 포트(26)와 메모리 회로(20)의 메모리 포트(21) 사이의 스위칭 회로(22)를 제어함으로써, 상이한 파라미터 값 세트들을 나타내는 상기 명령어들에 응답하기 위한 수단을
    포함하는, 프로그래밍 가능한 데이터 처리 회로.
KR1020087027124A 2006-05-09 2007-05-07 프로그래밍 가능한 데이터 처리 회로 KR101311311B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP06113654 2006-05-09
EP06113654.5 2006-05-09
PCT/IB2007/051703 WO2007132399A1 (en) 2006-05-09 2007-05-07 Programmable data processing circuit

Publications (2)

Publication Number Publication Date
KR20090012320A true KR20090012320A (ko) 2009-02-03
KR101311311B1 KR101311311B1 (ko) 2013-09-25

Family

ID=38520618

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087027124A KR101311311B1 (ko) 2006-05-09 2007-05-07 프로그래밍 가능한 데이터 처리 회로

Country Status (6)

Country Link
US (1) US8339405B2 (ko)
EP (1) EP2024928B1 (ko)
JP (1) JP5248482B2 (ko)
KR (1) KR101311311B1 (ko)
CN (1) CN101443809A (ko)
WO (1) WO2007132399A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9820210D0 (en) 1998-09-16 1998-11-11 Vg Elemental Limited Means for removing unwanted ions from an ion transport system and mass spectrometer
GB0210930D0 (en) 2002-05-13 2002-06-19 Thermo Electron Corp Improved mass spectrometer and mass filters therefor
JP2010086497A (ja) * 2008-10-03 2010-04-15 Renesas Technology Corp 画像処理装置及びデータプロセッサ
US20140307055A1 (en) 2013-04-15 2014-10-16 Microsoft Corporation Intensity-modulated light pattern for active stereo

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4819152A (en) * 1985-04-05 1989-04-04 Raytheon Company Method and apparatus for addressing a memory by array transformations
US5341486A (en) * 1988-10-27 1994-08-23 Unisys Corporation Automatically variable memory interleaving system
US5341489A (en) 1992-04-14 1994-08-23 Eastman Kodak Company Memory card with programmable interleaving
EP0629952B1 (en) 1993-06-16 1999-09-01 Bull HN Information Systems Italia S.p.A. Variable interleaving level memory and related configuration unit
US6657621B2 (en) * 2001-05-01 2003-12-02 Hewlett-Packard Development Company, L.P. Device and method for scrolling stored images across a display
AU2003205953A1 (en) * 2002-02-21 2003-09-09 Koninklijke Philips Electronics N.V. Method of storing data-elements
JP4744510B2 (ja) 2004-04-22 2011-08-10 シリコン ハイブ ビー・ヴィー データ値の多次元アレイへのパラレルなアクセスを提供するデータ処理装置
US7451282B2 (en) * 2005-03-09 2008-11-11 Dolphin Interconnect Solutions North America Inc. System and method for storing a sequential data stream

Also Published As

Publication number Publication date
JP2009536392A (ja) 2009-10-08
JP5248482B2 (ja) 2013-07-31
KR101311311B1 (ko) 2013-09-25
EP2024928A1 (en) 2009-02-18
CN101443809A (zh) 2009-05-27
EP2024928B1 (en) 2013-07-24
WO2007132399A1 (en) 2007-11-22
US20090135192A1 (en) 2009-05-28
US8339405B2 (en) 2012-12-25

Similar Documents

Publication Publication Date Title
US4692880A (en) Memory efficient cell texturing for advanced video object generator
CA2496062C (en) Image processor and method for blending multiple image layers in accordance with transparency values
US4225861A (en) Method and means for texture display in raster scanned color graphic
KR101349171B1 (ko) 3차원 그래픽 가속기 및 그것의 픽셀 분배 방법
EP0164880A2 (en) A circuit for modifying data in a display memory
CN105405103A (zh) 通过在空间上和/或在时间上改变采样模式增强抗锯齿
KR930013968A (ko) 그래픽 시스템용의 확장 가능한 다영상 버퍼
KR20090064394A (ko) 복수의 메모리 뱅크를 이용한 데이터 처리
KR101311311B1 (ko) 프로그래밍 가능한 데이터 처리 회로
KR890013554A (ko) 3차원 도형 처리장치
US7136068B1 (en) Texture cache for a computer graphics accelerator
JP3903557B2 (ja) データ変換装置および画像生成装置
JP2003323339A (ja) メモリアクセス装置、半導体デバイス、メモリアクセス制御方法、コンピュータプログラム及び記録媒体
EP2026282A2 (en) Image processing circuit, display device, and printing device
KR950703188A (ko) 화상 처리 장치 및 방법 및 화상 처리부를 갖고 있는 게임기(Image Processing Device and Method Therefor, and Game Machine Having Image Processing Part)
US6084601A (en) Corner buffer system for improved memory read efficiency during texture mapping
JPH03138779A (ja) テクスチャ・マッピング方法およびその装置
US6329995B1 (en) Image creation apparatus and image creation method
JP2009048509A (ja) マルチテクスチャマッピング装置、およびマルチテクスチャデータのメモリ格納方法
JP4195953B2 (ja) 画像処理装置
JP2675169B2 (ja) 図形処理システム
JP3547277B2 (ja) グラフィックス処理装置
JPH0528771A (ja) メモリ素子
JP2656753B2 (ja) 画像データ処理装置及びそれを用いたシステム
JP3671744B2 (ja) 画像合成表示装置

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160831

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180903

Year of fee payment: 6