KR20120049851A - 소스 이미지의 뒤틀린 버전을 표시하는 장치 및 방법 - Google Patents
소스 이미지의 뒤틀린 버전을 표시하는 장치 및 방법 Download PDFInfo
- Publication number
- KR20120049851A KR20120049851A KR1020117029902A KR20117029902A KR20120049851A KR 20120049851 A KR20120049851 A KR 20120049851A KR 1020117029902 A KR1020117029902 A KR 1020117029902A KR 20117029902 A KR20117029902 A KR 20117029902A KR 20120049851 A KR20120049851 A KR 20120049851A
- Authority
- KR
- South Korea
- Prior art keywords
- block
- pixel
- pixels
- output
- coordinates
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 35
- 230000015654 memory Effects 0.000 claims abstract description 189
- 238000012545 processing Methods 0.000 claims description 47
- 238000013507 mapping Methods 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 9
- 230000001360 synchronised effect Effects 0.000 claims description 6
- 239000000872 buffer Substances 0.000 description 28
- 238000013459 approach Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 12
- 230000009466 transformation Effects 0.000 description 8
- 230000000007 visual effect Effects 0.000 description 7
- 230000003111 delayed effect Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000009499 grossing Methods 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 239000007853 buffer solution Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000013341 scale-up Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/60—Rotation of whole images or parts thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/18—Image warping, e.g. rearranging pixels individually
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2201/00—General purpose image data processing
- G06T2201/005—Image watermarking
- G06T2201/0051—Embedding of the watermark in the spatial domain
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2201/00—General purpose image data processing
- G06T2201/005—Image watermarking
- G06T2201/0061—Embedding of the watermark in each block of the image, e.g. segmented watermarking
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Controls And Circuits For Display Device (AREA)
- Image Processing (AREA)
- Transforming Electric Information Into Light Information (AREA)
Abstract
착신 비디오 데이터가 처리된다. 예시적인 실시예에 따르면, 픽셀의 행에 제공된 비디오 데이터는 비디오를 조성하는 대응하는 이미지의 픽셀의 블록에 의해 저장된다. 특정 픽셀이 메모리로부터 판독되면, 픽셀의 블록은 (예컨대, 단일 판독으로) 검색되고, 그렇게 행하기 위해 반드시 전체 행 및 열에 액세스하지 않고 인접한 행 또는 열의 픽셀로의 (동시) 액세스를 용이하게 한다.
Description
본 발명은 소스 이미지의 뒤틀린(warped) 버전을 표시하는 장치 및 방법에 관한 것이다.
컴퓨터 또는 전용 비디오 처리 하드웨어에 의해 처리되는 비디오는 개개의 정지 이미지의 시퀀스로 생각될 수 있다. 각 이미지는 전형적으로 직사각형 어레이 또는 매트릭스로 배열되는 많은 픽셀로 형성된다. 이미지에서 어떤 주어진 픽셀의 좌표는 그것이 위치되는 이미지 내의 어느 수평 라인(또는 행) 및 수직 라인(또는 열)에서의 식별에 의해 결정될 수 있다.
대부분의 비디오 스케일러 구조는 이미지를 조성하는(making up) 개개의 픽셀이 도달하는 순서로 메모리에 착신 비디오 신호를 저장한다. 따라서, 비디오를 조성하는 제 1 이미지의 최상위 행의 전체는 저장되어, 그 행의 가장 왼쪽 픽셀에서 가장 오른쪽 픽셀로 이동한다. 그 후, 이들 픽셀은 하나의 단위로 메모리에 저장된다. 이것은 이미지를 조성하는 모든 픽셀이 저장되었을 때까지 제 2 행 등에 대해 반복된다. 이것은 비디오를 조성하는 모든 이미지에 대해 반복된다.
동기식 동적 랜덤 액세스 메모리(SDRAM) 칩은 특히 이런 방식으로 비디오 데이터를 저장하는데에 적합하다. SDRAM에서, 데이터는 뱅크(banks), 행 및 열에 저장된다. SDRAM 칩 배열을 시각화하는 한 가지 방법은 SDRAM 메모리의 각 뱅크가 드로즈(drawers)의 많은 행 및 열을 가진 큰 서류함(filing cabinet)인 것을 상상하는 것이다. 각 드로즈는 소정량의 정보를 저장하고, 그것이 위치되는 특정 서류함의 특정 행 및 열에 지정하여 식별될 수 있다.
SDRAM으로 처리될 시에 이용되는 행 및 열과, 이미지를 조성하는 행 및 열 간의 혼동을 피하기 위해, 후자는 일반적으로 여기서 제각기 "수평 라인" 및 "수직 라인"으로 지칭될 것이다.
일 구현에서, 각 픽셀은 정보의 24 비트를 포함한다. 이것은 각 픽셀이 224 = 16,777,216 칼러 값 중 하나를 나타낼 수 있다는 것을 의미한다. 전체 48 비트(48-bit wide) 데이터 버스는 각 픽셀이 길이가 24 비트이기 때문에 정보의 두 픽셀의 가치(pixels' worth)와 동등시하는 48 비트를 저장할 수 있다. 정보의 이런 두 픽셀 조각은 종종 "데이터 워드" 라 한다. DDR2 SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory) 칩은 클록 사이클마다 두 데이터 워드를 전송한다. 이것은 각 클록 사이클이 정보의 4의 픽셀의 가치를 저장할 수 있다는 것을 의미한다. 따라서, 8 데이터 워드와 동등한 16 픽셀을 저장하는데 4 클록 사이클이 걸린다.
도 1은 Micron 256Mb DDR2 데이터시트로부터 취해지는 타이밍도이며, 이는 본사가 미국 ID 83707-006 보이즈 P.O. Box 6 페더럴 웨이 8000 2에 있는 Micron Technology lnc에 이용 가능하고, 또는 이들의 웹사이트 http://download.micron.com/pdf/datasheets/dram/ddr2/256MbDDR2.pdf를 통해 이용 가능하다.
도 1은 전형적인 DDR2 SDRAM의 순차적 열 액세스를 도시한 것이다. 순차적 열 액세스는 SDRAM 메모리의 특정 행에 있는 어떤 열에 액세스한다는 것을 의미한다. 시간 T0에서, READ 명령은 SDRAM 메모리의 특정 뱅크에서의 특정 행으로부터 열 n을 판독하도록 발행된다. 나중 시간 T2에서, 추가적 READ 명령이 동일한 뱅크 및 행의 다른 열 b를 판독하도록 발행된다. 시간 T3에서, 열 n 내에 포함되는 모든 데이터는 복귀된다. 도 1에서 알 수 있는 바와 같이, 데이터가 열 n에서 복귀되기 전에, T0와 T3 사이에서 3의 클록 사이클의 지연이 있다. SDRAM에 대한 이들 READ 명령의 각각은 두 클록 사이클에서 SDRAM의 관련 열에서 검색되는 4 데이터 워드 또는'DQs"를 생성시킨다. 따라서, 데이터 전송의 두 클록은 이미지 데이터의 8 픽셀과 동등한 4 DQs를 검색한다.
제 1의 4 DQs가 실제로 검색되기 전에 T2에서 제 2 READ 명령이 발행된다. 이것은 "파이프라이닝(pipelining)" 라고 하며, READ 명령이 지속적으로 발행되지 않을지라도 한 행에서 액세스되는 데이터의 스트림에 확실히 갭이 존재하지 않게 한다.
시간 T3 전방으로부터, 2개의 데이터 워드가 클록 사이클마다 검색될 수 있다. 이것은 그 행이 열리면 동일한 행의 다른 열로부터 2개의 데이터 워드를 판독하는데 하나의 클록 주기가 걸린다는 것을 의미한다.
도 2는 동일한 Micron 256 Micron 256Mb DDR2 데이터시트로부터 취해지는 타이밍도이다. 도 2는 전형적인 DDR2 SDRAM의 순차적 행 액세스를 도시한 것이다. 도 2는, 동일한 행에서 다른 열에 순차적으로 액세스하는 대신에, 다른 행이 순차적으로 액세스된다는 점에서 도 1과 상이하다. 순차적 행 액세스는 예컨대 900 회전을 필요로 한다.
액세스되는 제 1 행, 여기서는 행 A는 시간 T1에서 ACT ("ACTivate") 명령을 발행함으로써 활성화된다. 그 후, 행 A에서 필요한 열, 열 n은 시간 T4에서 READ 명령을 발행함으로써 판독된다. 또한 대응하는 열로부터 데이터를 판독하든 판독하지 않든 다른 행으로부터 데이터를 판독하는 것이 바람직하다면, 행 A는 먼저 "프리차지(precharge)"되거나 닫혀져야 한다. PRE 명령은 시간 T6에서 발행되고, 3 클록 사이클(tRP) 후에, 행 A는 닫혀지고, 다른 ACT 명령은 시간 T9에서 발행될 수 있다.
한 행의 순차적 열을 순차적으로 판독하는 것과는 달리, 각 행이 다음 행을 판독할 수 있기 전에 열리고 닫혀져야 하므로, 다른 행에서 순차적으로 판독하는 8 클록 사이클이 걸린다. 요약하면, 동일한 행에서 순차적 열을 판독할 시에 순차적 행을 판독하는데 8배 더 느리다.
일부 데이터 처리 장치, 특히 이미지 처리 장치에서, 빈번한 순차적 행 액세스는 데이터를 처리하는 필요로 하고, 이는 데이터 처리 시간을 길게 하고, 시스템 자원을 집중 사용하게 한다. 랜덤 행 액세스는 이미지 뒤틀림에 필요되어, 입력 이미지가 사각형이 아닌 형상으로 매핑된다. 비디오 기반 데이터 액세스의 이들 및 다른 특성은 비디오 데이터의 처리 및 사용에 이의를 제시하였다.
본 발명은 많은 구현 및 애플리케이션으로 예시되며, 이의 일부는 아래에 요약된다.
본 발명의 여러 실시예들은 상술한 바와 같은 것을 포함하는 문제를 처리할 뿐만 아니라, 특히 비디오 또는 이미지 데이터를 처리하는데에 적합한 것을 포함하는 다른 것도 해결한다. 여러 실시예에서, 본 발명은 행으로의 순차적 액세스가 필요할 때 데이터의 처리 과부하를 해결한다.
본 발명의 제 1 양태에 따르면, 소스 이미지의 뒤틀린 버전을 표시하는 장치가 제공되며, 장치는, 상기 소스 이미지를 상기 소스 이미지로부터의 픽셀의 다수의 행으로 분할하도록 배치되는 라인 메모리; 상기 픽셀의 행을 픽셀 블록에 조합하도록 배치되는 블록 저장 제어부로서, 각 픽셀 블록은 상기 소스 이미지로부터의 이웃한 수평 및 수직 픽셀을 포함하고, 각 픽셀 블록은 메모리 내의 순차적 메모리 위치에 저장되는 상기 블록 저장 제어부; 디스플레이 상의 출력 픽셀 위치에 대응하는 출력 좌표(OX,OY)를 생성하도록 배치되는 출력 좌표 생성기; 상기 출력 좌표(OX,OY)를 뒤틀린 좌표(WX,WY)에 매핑하도록 배치되는 워프 엔진(warp engine)으로서, 상기 뒤틀린 좌표는 상기 소스 이미지의 픽셀 위치에 대응하는 상기 워프 엔진; 상기 뒤틀린 좌표(WX,WY)를 가진 픽셀을 포함하는 픽셀 블록이 저장되는 메모리 위치를 식별하도록 배치되는 블록 요청 변환기; 상기 식별된 픽셀 블록을 요청하도록 배치되는 블록 요청 생성기; 상기 메모리로부터 요청된 픽셀 블록을 검색하도록 배치되는 메모리 제어기; 및 상기 대응하는 출력 픽셀 위치(OX,OY)에 표시하기 위해 상기 뒤틀린 좌표(WX,WY)를 가진 픽셀의 값을 출력하도록 배치되는 표시 제어기를 포함한다.
상기 장치는 어레이를 블록으로 분할하여 처리력을 보다 효율적으로 사용하도록 한다. 이것은 특히 데이터의 매핑 또는 변환이 필요한 상황에서 유리할 수 있다. 용어 "블록"은 여기서, 모두 동일한 수평 또는 수직 라인에 위치되는 것과 달리, 입력 이미지에서 이웃한 수평 및 수직 라인에 위치되는 인접한 픽셀의 모든 그룹 또는 하위 단위를 의미하는데 이용된다. 예컨대, 블록은 편리하게도 사각형 어레이, 또는 간단한 L-형상일 수 있지만, 이 용어의 범주 내에서 다른 형상의 블록일 수 있다.
메모리는 SDRAM을 포함할 수 있고, 각 픽셀 블록은 SDRAM에 순차적 열에 걸쳐 저장될 수 있으며, 블록 요청 변환기는 필요한 픽셀 블록이 저장되는 뱅크, 행 및 열 주소를 식별하도록 배치될 수 있다. SDRAM 액세스는 전형적으로 입력 이미지를 매핑하도록 순차적 행 액세스를 요구받는다. 입력 이미지를 조성하는 픽셀이 블록에 저장될 때, SDRAM 액세스의 양은 감소될 수 있다.
소스 이미지의 이웃한 픽셀 블록은 여전히 단일 행에 있는 더 큰 픽셀 블록으로 함께 그룹화될 수 있으며, 각각의 더 큰 픽셀 블록은 동일한 SDRAM 행에 저장될 수 있다. 이런 방식으로 인터리빙 뱅크(interleaving banks)는 더 큰 픽셀 블록 내의 픽셀로의 빠른 액세스를 허용한다.
장치는 수직 오프셋 생성기 엔진을 더 포함하는데, 상기 수직 오프셋 생성기 엔진은, 출력 좌표 생성기에 의해 생성되는 출력 좌표(OX,OY)를 수신하여, 각 오프셋 출력 좌표가 넌오프셋 출력 좌표(OX,OY)로부터 수직으로 오프셋하는 다수의 오프셋 출력 좌표((OX,OY+1),(OX,OY+2)...)를 생성하며, 출력 좌표((OX,OY),(OX,OY+1),(OX,OY+2)...)를 워프 엔진에 제공하도록 배치된다. 뒤틀린 좌표의 다수의 라인은 이러한 방식으로 생성될 수 있다.
장치는 다수의 뒤틀린 좌표(WX,WY) 엔트리를 저장하도록 배치되는 시프트 레지스터 배치로서, 각 뒤틀린 좌표 엔트리는 각각의 데이터 값(D)에 대한 필드를 가지는 상기 시프트 레지스터 배치, 및 상기 시프트 레지스터 배치 내의 상기 뒤틀린 좌표를 어떤 검색된 픽셀 블록의 픽셀의 뒤틀린 좌표와 비교하여, 긍정적인 비교 시에, 일치되는 뒤틀린 픽셀의 데이터 값(D)에 대한 필드를 채우도록 배치되는 파퓰레이터(populator)를 더 포함할 수 있다. 상기 시프트 레지스터 배치는 메모리로부터 필요한 픽셀 값을 검색할 시에 지연을 고려하는데 이용될 수 있다.
장치는 블록 요청 변환기로부터 식별된 메모리 위치를 수신하여, 상기 식별된 메모리 위치로부터 내부 픽셀 블록 IDs을 생성하도록 배치되는 ID 생성기, 상기 ID 생성기로부터 픽셀 블록 IDs를 수신 및 지연하도록 배치되는 ID 지연 라인, 및 상기 지연 라인으로부터 상기 픽셀 블록 IDs을 수신하여, 캐시로부터 일치하는 픽셀 블록 IDs을 가진 픽셀 블록을 검색하도록 배치되는 룩업(look-up) 엔진을 더 포함할 수 있다. ID 생성기는 특정 픽셀 블록을 식별하는 편리한 엔진을 제공하고, ID 지연은 메모리로부터 픽셀 정보를 검색할 시에 지연을 고려하는데 이용될 수 있다.
장치는 사용 중에 있지 않은 픽셀 블록 IDs의 리스트를 저장하도록 배치되는 ID 리스트, 사용될 수 있는 다음 이용 가능한 블록 ID 값을 나타내도록 배치되는 판독 포인터(read pointer) 및 재순환된 블록 ID를 나타내도록 배치되는 기록 포인터를 더 포함할 수 있다. ID 리스트는 정확한 IDs가 정확한 픽셀 블록에 할당되는 것을 보장하는데 이용될 수 있.
장치는 블록 요청 변환기로부터 식별된 메모리 위치를 수신하여, 이들 위치를 최근에 식별된 블록의 메모리 위치와 비교하고, 일치가 발견되면, 일치하는 메모리 위치를 가진 픽셀 블록의 블록 ID를 재사용하며, 일치가 발견되지 않으면, 식별된 픽셀 블록에 대한 새로운 블록 ID를 사용하도록 배치되는 블록 ID 비교기를 더 포함할 수 있다. 블록 ID 비교기는 장치의 동작을 단순화하는 블록 IDs의 사용을 관리할 책임이 있다.
장치는 최근 픽셀 블록 검색 요청을 저장하도록 배치되는 블록 요청 캐시를 더 포함할 수 있어, 메모리 제어기는 메모리로부터 요청되었거나 검색되었을 경우에 요청된 픽셀 블록을 검색하지 않도록 배치된다. 불필요한 메모리 액세스는 이러한 방식으로 최소화된다.
메모리 제어기는 검색된 픽셀 블록을 캐시 내에 저장하도록 배치될 수 있다. 불필요한 메모리 액세스는 이러한 방식으로 최소화된다.
메모리 제어기는 캐시의 서로 다른 영역 내에 픽셀 블록 내의 이웃한 픽셀을 저장하도록 배치될 수 있다. 이것은 이중 선형 보간(bi-linear interpolation)을 용이하게 한다.
캐시는 콘텐츠 주소 지정 가능 메모리(content addressable memory)를 포함할수 있다. 이것은 픽셀을 다시 판독할 동안에 보다 적은 메모리가 사용되도록 한다.
출력 좌표 생성기는 출력 픽셀 주파수에서 출력 좌표를 생성하도록 배치되는 동기 펄스 생성기를 포함할 수 있다.
장치는 워프 엔진이 출력 좌표(OX,OY)를 정수가 아닌 뒤틀린 좌표(WX,WY)에 매핑할 때 이중 선형 보간을 수행하도록 배치되는 보간기를 더 포함할 수 있는데, 블록 요청 변환기는 정수가 아닌 뒤틀린 픽셀 좌표(WX,WY)에 기여하고, 기여하는 픽셀을 포함하는 픽셀 블록이 저장되는 메모리 위치를 식별하는 소스 이미지의 픽셀의 뒤틀린 좌표(WX,WY)를 식별하도록 배치될 수 있고, 블록 요청 생성기는 식별된 픽셀 블록을 요청하도록 배치될 수 있으며, 메모리 제어기는 메모리로부터 요청된 픽셀 블록을 검색하도록 배치될 수 있고, 보간기는 정수가 아닌 뒤틀린 좌표(WX,WY)에 대응하는 출력 픽셀(OX,OY)의 보간된 출력값을 결정하도록 배치될 수 있으며, 표시 제어기는 대응하는 출력 픽셀 위치(OX,OY)에 표시하기 위한 보간된 값을 출력하도록 배치될 수 있다. 이것은 더욱 정확한 출력을 제공하는 이중 선형 보간을 용이하게 한다.
본 발명의 제 2 양태에 따르면, 소스 이미지의 뒤틀린 버전을 표시하는 방법이 제공되며, 방법은, 상기 소스 이미지를 상기 소스 이미지로부터의 픽셀의 다수의 행으로 분할하는 단계, 상기 픽셀의 행을 픽셀 블록에 조합하는 단계로서, 각 픽셀 블록은 상기 소스 이미지로부터의 이웃한 수평 및 수직 픽셀을 포함하고, 각 픽셀 블록을 메모리 내의 순차적 메모리 위치에 저장하는 상기 조합하는 단계, 디스플레이 상에 출력 픽셀 위치에 대응하는 출력 좌표(OX,OY)를 생성하는 단계, 상기 출력 좌표(OX,OY)를 뒤틀린 좌표(WX,WY)에 매핑하는 단계로서, 상기 뒤틀린 좌표는 상기 소스 이미지의 픽셀 위치에 대응하는 상기 매핑하는 단계, 상기 뒤틀린 좌표(WX,WY)를 가진 픽셀을 포함하는 픽셀 블록이 저장되는 메모리 위치를 식별하는 단계, 상기 식별된 픽셀 블록을 요청하는 단계, 상기 메모리로부터 요청된 픽셀 블록을 검색하는 단계, 및 상기 대응하는 출력 픽셀 위치(OX,OY)에 표시하기 위해 상기 뒤틀린 좌표(WX,WY)를 가진 픽셀의 값을 출력하는 단계를 포함한다.
본 발명의 다른 양태에 따르면, 실행될 때, 데이터 처리 장치가 이와 같은 방법을 수행하도록 하는 명령어를 포함하는 컴퓨터 프로그램이 제공되며, 컴퓨터 판독 가능한 매체는 컴퓨터 프로그램 또는 컴퓨터 프로그램을 반송하는 신호를 포함한다.
예시적인 실시예와 관련하여, 데이터를 처리하는 장치는 수신기 회로, 메모리 제어기 회로 및 파퓰레이터(populator) 회로를 포함한다. 수신기 회로는 데이터 요소의 어레이의 형식으로 데이터를 수신하며, 데이터 요소는 수평 및 수직 라인에 배치된다. 메모리 제어기 회로는 (예컨대, 메모리를 제어하여) 어레이의 이웃한 수평 및 수직 라인의 각 라인으로부터의 데이터 요소의 서브세트를 포함하는 어레이의 서브유닛(sub-unit)을 메모리 위치에 저장한다. 파퓰레이터 회로는 처리를 위한 메모리 위치로부터 상기 서브유닛을 검색한다. 이들 각각의 회로는 다음의 예들이 또한 구현될 수 있는 어느 애플리케이션에 지정된 기능을 실행하도록 프로그램된 컴퓨터로서 구현될 수 있다.
다른 예시적인 실시예와 관련하여, 비디오 데이터를 처리하는 장치는 수신기 회로, 다수의 라인 버퍼 회로, 메모리 제어기 회로 및 파퓰레이터 회로를 포함한다. 수신기 회로는 수평 및 수직 라인에 배치된 픽셀의 어레이의 형식으로 비디오 데이터를 수신하며, 픽셀의 어레이는 이미지를 나타낸다. 라인 버퍼 회로는 제각기 수신된 어레이의 픽셀의 서로 다른 라인을 보유한다. 메모리 제어기 회로는 적어도 2개의 라인 버퍼로부터 픽셀의 서브세트를 포함하는 어레이의 서브블록을 단일 메모리 위치에 저장하며, 픽셀의 각 서브세트는 각 라인으로부터의 모든 픽셀보다 적은 픽셀을 포함하며, 픽셀의 각 블록은 이미지의 서브부분(sub-portion)을 나타낸다. 파퓰레이터 회로는 처리를 위한 메모리 위치로부터 상기 서브블록을 검색한다.
다른 예시적인 실시예는 프로그램 가능한 컴퓨터가 다음의 단계: 데이터 요소의 어레이의 형식으로 데이터를 수신하는 단계로서, 상기 데이터 요소는 수평 및 수직 라인에 배치되는 상기 수신하는 단계; 어레이의 이웃한 수평 및 수직 라인의 각 라인으로부터의 데이터 요소의 서브세트를 포함하는 어레이의 서브유닛을 메모리 위치에 저장하는 단계; 및 처리를 위한 메모리 위치로부터 상기 서브유닛을 검색하는 단계를 수행하도록 하는 명령어를 실행하는 프로그램 가능한 컴퓨터에 의해 구현하는 방법에 관한 것이다.
본 발명의 다른 예시적인 양태에 따르면, 데이터를 처리하는 장치는 데이터 요소의 어레이의 형식으로 데이터를 수신하도록 배치되는 수신기로서, 상기 데이터 요소는 수평 및 수직 라인에 배치되는 수신기; 어레이의 이웃한 수평 및 수직 라인으로부터 데이터 요소를 포함하는 어레이의 서브유닛을 메모리 위치에 저장하도록 배치되는 메모리 제어기; 및 처리를 위한 메모리 위치로부터 상기 서브유닛을 검색하도록 배치되는 파퓰레이터를 포함한다.
장치는 하나의 수평 라인으로부터의 모든 데이터 요소보다는 어레이의 수평 및 수직 라인으로부터의 데이터 요소를 포함하는 서브유닛으로 어레이를 분할하여 처리 전력을 효율적으로 사용한다. 이것은 특히 데이터의 매핑 또는 변환을 필요로 하는 상황에 적용할 수 있다.
장치는 수신기에 의해 수신된 어레이의 데이터 요소의 수를 감소시키도록 배치되는 다운스케일러(downscaler)를 포함할 수 있다. 다운스케일러는 예컨대 데이터 요소의 일부가 실제로 처리될 필요가 없을 경우에 데이터에 대한 전체 처리 요건에 대한 오버헤드(overhead)를 줄이는데 이용될 수 있다.
장치는 어레이의 데이터 요소의 서로 다른 수평 라인을 보유하도록 배치되는 각각의 다수의 라인 버퍼를 포함할 수 있다.
장치는 메모리 제어기가 서브유닛으로서 2 이상의 라인 버퍼로부터의 데이터 요소의 서로 다른 수평 라인으로부터의 데이터 요소를 서로 동일한 메모리 위치에 정하게 하도록 배치되는 저장 제어기를 포함할 수 있다.
장치는 출력 좌표를 생성하도록 배치되는 출력 좌표 생성기를 포함할 수 있다. 출력 좌표 생성기는 동기 펄스 생성기일 수 있다.
장치는 출력 좌표를 필요한 데이터 요소의 원래의 데이터 좌표로 변환하도록 배치되는 매퍼(mapper)를 포함할 수 있으며, 필요한 데이터 요소는 정보를 대응하는 출력 좌표에 기여하는 메모리 내에 저장된 데이터 요소이다. 매퍼는 변환을 위한 룩업(look-up) 테이블을 이용하도록 배치될 수 있다. 룩업 테이블은 특히 변환을 위한 수학적 변환을 정의하는 것이 어렵거나 불가능할 때에 유용할 수 있다. 대안적으로, 매퍼는 변환을 위한 수학적 변환을 이용하도록 배치될 수 있다.
장치는 필요한 데이터 요소의 원래의 데이터 좌표를 수신하고, 필요한 데이터 요소를 포함하는 메모리에 저장된 데이터 요소의 서브유닛의 메모리 위치를 결정하도록 배치되는 변환기를 포함할 수 있다.
장치는 최근 요청된 서브유닛의 메모리 위치를 캐시하도록 배치되는 캐시를 포함할 수 있다.
장치는 필요한 데이터 요소의 원래의 데이터 좌표를 대응하는 데이터 값으로 저장하도록 배치되는 시프트 레지스터를 포함할 수 있다.
장치는 검색된 서브유닛 내의 원래의 데이터 좌표와 시프트 레지스터 내에 보유된 원래의 데이터 좌표를 일치시켜 메모리로부터 검색된 데이터 요소 서브유닛을 이용하여 데이터 값을 채우도록 배치되는 파퓰레이터를 포함할 수 있다.
장치는 다수의 시프트 레지스터 및 보간기를 포함하여, 원래의 데이터 좌표가 정수가 아닌 값 좌표일 때, 파퓰레이터는 정수 값의 원래의 데이터 좌표를 가진 이웃한 데이터 요소의 데이터 값을 검색하도록 배치될 수 있고, 보간기는 정수의 원래의 데이터 좌표의 검색된 데이터 값의 각각으로부터의 가중 기여(weighted contributions)를 포함하는 출력을 제공하도록 배치될 수 있다. 이것은 예컨대 정수가 아닌 값 좌표가 유망할 경우에 데이터의 복잡한 매핑 또는 워핑에 제공한다.
동기 펄스 생성기를 포함하는 출력 좌표 생성기 대신에, 그것은 메모리 주파수에서 출력 데이터 좌표의 세트를 생성하도록 배치되는 메모리측의 출력 데이터 좌표 생성기 및, 표시 주파수에서 출력 표시 좌표를 생성하도록 배치되는 디스플레이측의 출력 좌표 생성기를 포함할 수 있다.
장치는 메모리측의 출력 데이터 좌표 생성기로부터 출력 데이터 좌표를 수신하여, 출력 데이터 좌표의 다른 라인에 대응하는 출력 데이터 좌표의 부가적 세트를 생성하도록 배치되는 오프셋 배치를 포함할 수 있다.
장치는 출력 데이터 좌표의 세트 및 부가적 세트를 수신하여, 이들을 원래의 데이터 좌표로 변환하도록 배치되는 매퍼를 포함할 수 있다.
장치는 원래의 데이터 좌표를 수신하여, 이들을 메모리 내의 주소로 변환하도록 구성되는 변환기를 포함할 수 있으며, 주소는 원래의 데이터 좌표에서 데이터 요소를 포함하는 서브유닛 또는 유닛이 위치되는 메모리 위치를 나타낸다. 주소는 서브유닛이 위치되는 메모리 내의 뱅크, 행 및 열 및, 필요로 되는 서브유닛 내의 특정 데이터 요소를 나타내는 오프셋 값을 포함할 수 있다.
장치는 주소를 이용하여 내부 ID 값을 생성하도록 배치되는 ID 생성기를 포함할 수 있다. 내부 ID 값은 뱅크, 행 및 열 주소의 각각의 하위 비트를 포함할 수 있다. 이것은 상당수의 데이터 요소에 유일하게 유효한 소형(small-sized) ID 값을 생성할 수 있다.
장치는 최근에 요청된 서브유닛을 저장하도록 배치되는 캐시를 포함할 수 있다.
장치는 원래의 좌표를 보유하도록 배치되는 지연기를 포함할 수 있다.
장치는 ID 값을 이용하여 캐시를 조사하여, 동일한 ID 값을 가진 데이터 요소의 관련 서브유닛을 검색하고, 버퍼 내의 대응하는 원래의 데이터 좌표에 대한 데이터 엔트리를 채우도록 배치되는 룩업 엔진을 포함할 수 있다.
장치는 다수의 라인 버퍼를 포함할 수 있으며, 메모리측의 출력 좌표 생성기에 의해 생성되는 출력 좌표는 라인 버퍼의 일부에 기록되고, 대응하는 데이터 값은 다른 라인 버퍼로부터 판독될 수 있다.
장치는 비디오 스케일러를 포함할 수 있다.
장치는 메모리를 포함할 수 있고, 메모리는 메모리 위치를 포함할 수 있다. 메모리 위치는 SDRAM 내의 위치를 포함할 수 있다. SDRAM은 SRAM과 같은 다른 형식의 메모리보다 약간 값이 싸, 장치의 전체 비용을 감소시킬 수 있다. SDRAM은 DDR2 SDRAM을 포함할 수 있다.
처리될 데이터는 비디오 데이터를 포함할 수 있고, 데이터 요소의 어레이는 이미지를 포함할 수 있으며, 데이터 요소는 이미지의 픽셀을 포함할 수 있다. 장치는 특히 비디오 데이터를 처리하는데 적절하다.
본 발명의 다른 양태에 따르면, 데이터 요소의 어레이의 형식으로 데이터를 수신하는 단계로서, 상기 데이터 요소는 수평 및 수직 라인에 배치되는 상기 수신하는 단계; 어레이의 이웃한 수평 및 수직 라인으로부터의 데이터 요소를 포함하는 어레이의 서브유닛을 메모리 위치에 저장하는 단계; 및 처리를 위한 메모리 위치로부터 상기 서브유닛을 검색하는 단계를 포함하는 데이터 처리 방법이 제공된다.
특히, 메모리가 SDRAM 메모리이면, 방법은 SDRAM 메모리의 한 뱅크 내의 메모리 위치에 서브어레이를 저장하는 단계 및, SDRAM 메모리의 다른 뱅크 내에 어레이의 이웃한 서브유닛을 저장하는 단계를 포함할 수 있다. 이것은 SDRAM 내의 뱅크를 인터리브하는데 이용되어, 데이터에 대한 처리 요건을 감소시킬 수 있다.
본 발명의 다른 양태에 따르면, 실행될 때, 데이터 처리 장치가 데이터 처리 방법을 실행하도록 하는 명령어를 포함하는 컴퓨터 프로그램이 제공된다. 컴퓨터 판독 가능한 매체는 컴퓨터 프로그램을 포함할 수 있다. 신호는 컴퓨터 프로그램을 포함할 수 있다.
상술한 개요는 본 발명의 각 예시된 실시예 또는 모든 구현을 설명하도록 의도된 것이 아니다.
본 발명은 첨부한 도면과 관련하여 본 발명의 여러 실시예에 대한 상세한 설명을 고려하여 더욱 완전히 이해될 수 있다.
도 1은 여러 예시적 실시예의 양태가 인접한 열의 데이터 요소를 포함하는 서브어레이에 액세스할 시에 적용될 수 있는 DDR2 SDRAM의 순차적 열 액세스의 타이밍도이다.
도 2는 여러 예시적 실시예의 양태가 인접한 행의 데이터 요소를 포함하는 서브어레이에 액세스할 시에 적용될 수 있는 DDR2 SDRAM의 순차적 행 액세스의 타이밍도이다.
도 3은 본 발명의 하나 이상의 예시적 실시예에 따른 제 1 데이터 처리 배치의 개략도이다.
도 4는 본 발명의 하나 이상의 예시적 실시예에 따른 SDRAM의 인터리빙 뱅크의 시각적 표현(visual representation)이다.
도 5는 본 발명의 하나 이상의 예시적 실시예에 따른 입력 이미지의 표현이다.
도 6은 본 발명의 하나 이상의 예시적 실시예에 따른 라인 기반 저장된 입력 이미지의 표현이다.
도 7은 본 발명의 하나 이상의 예시적 실시예에 따른 블록 기반 저장된 입력 이미지의 표현이다.
도 8은 본 발명의 하나 이상의 예시적 실시예에 따라 도 5에 도시된 입력 이미지에 대응하는 900 시계 방향 회전된 출력 이미지의 표현이다.
도 9는 본 발명의 하나 이상의 예시적 실시예에 따른 제 2 데이터 처리 배치의 개략도이다.
도 10은 본 발명의 하나 이상의 예시적 실시예에 따른 제 3 데이터 처리 배치의 개략도이다.
도 11은 본 발명의 하나 이상의 예시적 실시예에 따른 제 4 데이터 처리 배치의 개략도이다.
도 12는 본 발명의 하나 이상의 예시적 실시예에 따라 도 11에 도시된 제 4 데이터 처리 배치의 하위 배치의 개략도이다.
도 13은 본 발명의 하나 이상의 예시적 실시예에 따른 출력 스트립(output stripes)의 시각적 표현이다.
도 14는 본 발명의 하나 이상의 예시적 실시예에 따른 입력 스트립의 시각적 표현이다.
도 15는 본 발명의 다른 예시적 실시예에 따라 안티 앨리어싱 또는 스무딩(anti-aliasing or smoothing)을 위해 도 11에 도시된 제 4 데이터 처리 배치의 하위 배치의 개략도이다.
도 16은 다른 예시적 실시예에 따라 SDRAM에 데이터를 저장하기 위한 배치를 도시한 것이다.
도 17은 콘텐츠 주소 지정 가능 메모리(CAM) 강화(enhancement)가 이용되는 다른 예시적 실시예에 따른 배치를 도시한 것이다.
도 18은 본 발명의 하나 이상의 예시적 실시예에 따른 제 5 데이터 처리 배치의 개략도이다.
도 19는 다른 예시적 실시예에 따른 블록 IDs의 시각적 표현이다.
도 20은 다른 예시적 실시예에 따른 ID 리스트의 시각적 표현이다.
도 21은 다른 예시적 실시예에 따른 이중 선형 보간의 시각적 표현이다.
도 22는 다른 예시적 실시예에 따라 서로 다른 캐시 영역에 이웃한 픽셀을 저장하는 시각적 표현이다.
도 23은 본 발명의 하나 이상의 예시적 실시예에 따른 제 6 데이터 처리 배치의 개략도이다.
도 1은 여러 예시적 실시예의 양태가 인접한 열의 데이터 요소를 포함하는 서브어레이에 액세스할 시에 적용될 수 있는 DDR2 SDRAM의 순차적 열 액세스의 타이밍도이다.
도 2는 여러 예시적 실시예의 양태가 인접한 행의 데이터 요소를 포함하는 서브어레이에 액세스할 시에 적용될 수 있는 DDR2 SDRAM의 순차적 행 액세스의 타이밍도이다.
도 3은 본 발명의 하나 이상의 예시적 실시예에 따른 제 1 데이터 처리 배치의 개략도이다.
도 4는 본 발명의 하나 이상의 예시적 실시예에 따른 SDRAM의 인터리빙 뱅크의 시각적 표현(visual representation)이다.
도 5는 본 발명의 하나 이상의 예시적 실시예에 따른 입력 이미지의 표현이다.
도 6은 본 발명의 하나 이상의 예시적 실시예에 따른 라인 기반 저장된 입력 이미지의 표현이다.
도 7은 본 발명의 하나 이상의 예시적 실시예에 따른 블록 기반 저장된 입력 이미지의 표현이다.
도 8은 본 발명의 하나 이상의 예시적 실시예에 따라 도 5에 도시된 입력 이미지에 대응하는 900 시계 방향 회전된 출력 이미지의 표현이다.
도 9는 본 발명의 하나 이상의 예시적 실시예에 따른 제 2 데이터 처리 배치의 개략도이다.
도 10은 본 발명의 하나 이상의 예시적 실시예에 따른 제 3 데이터 처리 배치의 개략도이다.
도 11은 본 발명의 하나 이상의 예시적 실시예에 따른 제 4 데이터 처리 배치의 개략도이다.
도 12는 본 발명의 하나 이상의 예시적 실시예에 따라 도 11에 도시된 제 4 데이터 처리 배치의 하위 배치의 개략도이다.
도 13은 본 발명의 하나 이상의 예시적 실시예에 따른 출력 스트립(output stripes)의 시각적 표현이다.
도 14는 본 발명의 하나 이상의 예시적 실시예에 따른 입력 스트립의 시각적 표현이다.
도 15는 본 발명의 다른 예시적 실시예에 따라 안티 앨리어싱 또는 스무딩(anti-aliasing or smoothing)을 위해 도 11에 도시된 제 4 데이터 처리 배치의 하위 배치의 개략도이다.
도 16은 다른 예시적 실시예에 따라 SDRAM에 데이터를 저장하기 위한 배치를 도시한 것이다.
도 17은 콘텐츠 주소 지정 가능 메모리(CAM) 강화(enhancement)가 이용되는 다른 예시적 실시예에 따른 배치를 도시한 것이다.
도 18은 본 발명의 하나 이상의 예시적 실시예에 따른 제 5 데이터 처리 배치의 개략도이다.
도 19는 다른 예시적 실시예에 따른 블록 IDs의 시각적 표현이다.
도 20은 다른 예시적 실시예에 따른 ID 리스트의 시각적 표현이다.
도 21은 다른 예시적 실시예에 따른 이중 선형 보간의 시각적 표현이다.
도 22는 다른 예시적 실시예에 따라 서로 다른 캐시 영역에 이웃한 픽셀을 저장하는 시각적 표현이다.
도 23은 본 발명의 하나 이상의 예시적 실시예에 따른 제 6 데이터 처리 배치의 개략도이다.
본 발명은 데이터 처리 장치, 배치 및 액세스의 다양한 서로 다른 타입에 적용 가능하고, 비디오 데이터와 같은 데이터의 처리를 포함하는 애플리케이션에 특히 유용한 것으로 확인되었다. 본 발명은 반드시 이와 같은 접근법으로 제한되지 않지만, 본 발명의 여러 양태는 이들 및 다른 콘텍스트를 이용하는 여러 예에 대한 논의를 통해 이해될 수 있다.
여러 예시적 실시예와 관련하여, 용어 "서브유닛은 여기서 (예컨대, 모두에 대해 동일한 수평 또는 수직 라인에 위치될 수 있는 바와 같이) 이웃한 수평 또는 수직 라인에 위치되는 (픽셀과 같은) 인접한 데이터 요소의 어떤 그룹의 의미하는데 이용된다. 예컨대, 서브유닛은 편리하게는 사각형 어레이 또는 간단한 L-형상일 수 있지만, 다른 형상의 서브유닛이 용어의 범주 내에 있다. 서브유닛은 데이터 요소의 블록을 포함할 수 있다. 블록은 모든 방향의 데이터 요소로의 근접 랜덤 액세스를 허용하는 서브유닛에 편리한 형상을 제공한다. 따라서, 여러 예시적 실시예와 관련하여, 이와 같은 서브유닛에 액세스하는 것은 한번에 인접한 수평 또는 수직 라인의 데이터 요소에 액세스하는 것을 포함할 수 있으며, 이 요소는 수평 라인 액세스 또는 수직 라인 액세스를 통해 함께 액세스할 수 없다(서브유닛 그룹화가 없다).
여러 실시예들에서, 서브유닛은 어레이의 이웃한 수직 또는 수평 라인으로부터의 데이터 요소의 4×4 어레이를 포함한다. 이것은 16개의 데이터 요소가 특히 효율적인 방식으로 처리될 수 있게 한다.
이제 도면을 참조하면, 도 3은 이 예에서 비디오 또는 이미지 데이터인 데이터를 저장하고 액세스하기 위한 데이터 처리 배치(300)를 도시한 것이다. 배치(300)는 인터넷과 같은 통신 네트워크로부터 또는 비디오를 녹음한 소스로부터 직접 입력 비디오 신호를 수신하는 입력 비디오 신호 수신기(302)를 갖는다.
그 후, 입력 비디오 신호는 선택적으로 다운스케일러(304)에 의해 다운스케일링된다. 다운스케일러(304)는 배치(300)에 의해 처리되는 픽셀의 수를 감소시킨다. 다운스케일링은 처리되는 픽셀의 전체 수를 감소시킴으로써 배치(300)의 나중 단계에 의해 필요로 되는 처리량을 제한하는데 유용하다. 이것은 입력 비디오가 표시될 수 있는 장치에 의해 지원되는 것보다 상당히 더 높은 해상도(픽셀의 수)를 가질 경우에 도움이 될 수 있다. 이 경우에는, 입력 비디오 신호의 모든 픽셀을 처리할 필요가 없다.
배치(300)에서, 입력 비디오 신호의 픽셀의 수개의 라인은 미리 정해진 수의 라인이 축적될 때까지 라인 버퍼(306) 내에 보유된다. 이러한 예에서는, 4개의 라인 버퍼(306)가 있으며, 이의 각각은 입력 비디오 신호로부터의 픽셀의 전체 라인을 저장한다. 4개의 라인 버퍼(306)가 완전히 채워지면, 16개의 픽셀은 라인 버퍼(306)로부터 판독되어, 이들 4개의 라인으로부터의 픽셀을 16개의 픽셀의 4×4 블록으로서 SDRAM 메모리의 순차적 열에 저장하는 블록 저장 제어부(308)로 전달된다. 이것은 이와 같은 블록 저장 제어부(308)가 없는 기존의 이미지 저장 방법과는 대비된다. 그 후, 픽셀의 블록은 특정 뱅크에, 그리고 SDRAM 메모리(312)에 그 뱅크 내의 특정 행 및 다수의 열 주소에서 저장을 위해 SDRAM 제어기(310)로 송신된다.
표시를 위한 이미지 데이터의 저장 블록에 액세스하기 위해, 배치(300)는 동기 펄스 생성기("SPG")(314)를 포함한다. SPG는 수평 및 수직 펄스의 형태로 표준 비디오 타이밍 신호를 생성한다. 그것은 픽셀의 출력 X 및 Y 좌표 또는 위치(OX,OY), 스크린 상에 표시될 수 있는 출력 이미지를 생성하는데 이용된다. 환언하면, SPG는 상위 가장 왼쪽 픽셀에 대응하는 펄스를 표시 스크린(OX,OY)=(O,O) 상에 생성하고 나서, 바로 다음의 픽셀을 그의 오른쪽(OX,OY)=(1,0)에 생성하며, 동일한 방식으로 하위 가장 오른쪽 픽셀을 스크린 상에 스캐닝한다. 표시 스크린 상의 픽셀 위치를 식별하는데 이용되는 좌표(OX,OY)는 여기서 "출력" 좌표 또는 위치라 한다. 이것은 지금 설명되는 입력 또는 소스 이미지에서 "원래의" 또는 "뒤틀린" 좌표 또는 위치(WX,WY)와 대비된다. 출력 이미지가 "뒤틀린"이라고 할 수 있을지라도, 용어 "뒤틀린"은 출력 이미지보다는 원래의 이미지를 나타내는데 이용된다는 것에 주목되어야 한다. 이것은 출력 좌표(OX,OY)가 출력 픽셀(OX,OY)에 기여하는 동일한 이미지의 좌표(WX,WY)로 변환되거나 다시 매핑되기 때문이다.
출력 좌표 - 표시 좌표(OX,OY)는 매퍼 또는 워프 매핑 엔진(316)에 공급된다. 매퍼(316)는 출력 비디오 신호의 어느 픽셀이 입력 비디오 내의 어느 픽셀에 대응하는지를, 즉 입력 이미지로부터의 어느 픽셀이 디스플레이 상에 출력 이미지를 표시하도록 검색될 필요가 있는지를 판단할 책임이 있다. 이것을 행하기 위해, 매퍼(316)는 수학적 변환을 이용하여 출력 좌표(OX,OY)를 뒤틀린 좌표(WX,WY)로 매핑할 수 있다. 대안적으로, 매퍼(316)는 룩업 테이블을 이용하여 뒤틀린 좌표 (WX,WY)를 생성할 수 있다. 후자의 접근법에서, 테이블은 출력(OX,OY)과 원래의 (WX,WY) 픽셀 사이의 대응(correspondence) 또는 매핑을 나타낼 수 있으며, 예컨대, 여기서 수학적 변환은 정의하기가 어렵거나 불가능하다. 이것은 매핑이 원래의 이미지를 "뒤섞기(jumbling up)"하는 것을 포함하는 경우일 수 있다.
종래의 비디오 스케일러에서, 저장된 픽셀로의 모든 액세스가 입력 이미지로부터의 픽셀의 수평 라인에 관하여 저장된다는 사실에 의해 제한되기 때문에 복잡한 매핑은 효율적이지 않다. 쉽게 이용 가능한 유일한 "매핑"는 수평 또는 수직 "플립(flip)"이다. 출력 이미지의 제 1 수평 라인 내의 모든 픽셀이 원래의 이미지의 제 1 수평 라인에 있고; 바로 역순서에 있기 때문에 수평 플립(또는 수직 축에 대한 회전)은 기존의 스케일러의 리미트(remit) 내에 있다. 마찬가지로, 출력 이미지의 제 1 수평 라인 내의 모든 픽셀이 입력 이미지의 픽셀의 하부 수평 라인 내의 대응하는 위치 내에 있기 때문에 수직 플립은 기존의 스케일러의 리미트 내에 있다. 물론, 기존의 스케일러는 룩업 테이블의 제한된 수학적 변환 또는 이용이 있을 경우에 출력 매핑에 대한 "정상" 입력에 적절하며, 스케일러는 단지 좌표(WX,WY)에 입력되는 것과 동일한 좌표(OX,OY)를 출력하거나, 원래의 또는 뒤틀린 좌표(WX,WY)를 결정하도록 출력 좌표(OX,OY)에 간단한 스케일링 계수를 적용한다.
상술한 바와 같이, 매퍼(316)에 의해 결정되는 원래의 또는 뒤틀린 좌표(WX,WY)는 SDRAM 메모리(312)로부터 관련 픽셀을 검색하는데 이용되는 입력 비디오 신호의 관련 픽셀 좌표를 특정한다. 원래의 좌표(WX,WY)는 블록 요청 변환기(318)로 전달되고, 블록 요청 변환기(318)는 뒤틀린 좌표(WX,WY)를, 그 픽셀을 포함하는 블록을 저장하는 SDRAM 메모리 내의 대응하는 뱅크, 행 및 열 주소로 변환한다. 환언하면, 블록 요청 변환기(312)는 원래의 픽셀 좌표(WX,WY)를, 원하는 픽셀을 포함하는 다수의 픽셀이 단일 블록에 저장되는 SDRAM(312) 내의 주소로 변환한다.
픽셀의 순차적 액세스가 종종 SDRAM 메모리(312)로부터 필요로 되는 원래의 이미지의 이웃한 수평 및 수직 라인으로부터의 픽셀에 생성하므로, 블록 요청 캐시(320)는 최근에 요청된 블록을 실행하는데 사용된다. 캐시(320)는 블록 자체의 콘텐츠를 저장하지 않고, 이들이 액세스되었다는 사실을 저장한다. 요청된 블록이 바로 검색되었을 경우, 블록 요청 캐시(320)는 SDRAM 메모리(312)로부터 특정 블록을 검색하도록 SDRAM 메모리(312)에 대한 다른 명령을 발행할 필요성을 제거하는데, 그 이유는 그것은 이미 열려있거나, SDRAM 제어기(310)에 의해 인출되는 중에 있을 것이기 때문이다.
특정 블록이 SDRAM 메모리(312)로부터 검색될 때, 그 블록으로부터의 픽셀 정보는 출력 이미지의 텅빈(empty) 픽셀을 채우는(populate)데 이용된다. 이것을 행하기 위해, 파퓰레이터 또는 일치 및 채움(match and fill) 엔진은 출력 이미지의 픽셀을 채우도록 시프트 레지스터(324)와 통신한다. 시프트 레지스터(324)는 SDRAM 메모리(312)로부터 검색될 수 있는 매퍼(316)로부터 출력된 원래의 또는 뒤틀린 좌표(WX,WY)를 저장하는데 사용된다. 시프트 레지스터(324)는 입력 비디오로부터 필요한 원래의 픽셀의 매퍼(316)에 의한 관련된 원래의 좌표(WX,WY)의 초기 계산과 SDRAM 메모리(312)로부터의 그 픽셀의 실제 수신 간의 지연을 허용하는 임의 길이를 갖는다. 이러한 지연은 관련된 원래의 픽셀이 요청된 후에 일부 세미랜덤 지점(semi-random point)에 있을 것이다. 더욱 긴 시프트 레지스터는 요청된 특정 픽셀 또는 블록과 실제로 SDRAM 메모리(312)로부터 검색되는 블록 간의 지연이 더욱 긴 경우에 이용될 수 있다.
시프트 레지스터(324)는 새로운 뒤틀린 좌표(WX,WY)가 매퍼(316)에 의해 생성됨에 따라 시프트한다. 시프트 레지스터(324)는 픽셀의 값이 알려져 있지 않으므로 초기에 텅빈 픽셀에 대한 픽셀 값 또는 데이터 값(D)에 대한 필드를 포함한다. 블록 요청이 충족되고, 픽셀의 블록이 SDRAM 메모리(312)로부터 검색될 시에, 블록은 블록 내의 어떤 픽셀 정보가 시프트 레지스터(324) 내의 어떤 텅빈 엔트리를 채우는데 이용될 수 있는지를 찾도록 모든 시프트 레지스터 엔트리와 비교된다. 이것은 검색된 블록의 픽셀의 뒤틀린 좌표(WX,WY)가 이미 시프트 레지스터(324) 내에 제공된 다른 뒤틀린 좌표(WX,WY)와 일치하는 경우이다. 수개의 픽셀이 각 블록에서 검색되므로(이 예에서는 16개), 다수의 시프트 레지스터 위치는 이들이 이미 생성되었을 경우에 검색되는 단일 블록으로부터 채워질 수 있다.
일치가 발견될 때, 환언하면, 시프트 레지스터(324) 내의 뒤틀린 좌표(WX,WY)가 SDRAM 메모리(312)로부터 검색되는 블록 내의 동일한 픽셀(WX,WY)에 대응할 때, 대응하는 픽셀 데이터(D)는 대응하는 시프트 레지스터(324)의 데이터 위치(WX,WY) 내에 저장된다.
시프트 레지스터(324)가 개시에서 종료로 시프트된 시간에 의해, 뒤틀린 좌표(WX,WY)의 각각은 파퓰레이터(322)에 의해 저장되는 데이터 값(D)을 가져야 한다. 이러한 데이터 값(D)은 시프트 레지스터(324)의 길이만큼 지연되는 주어진 출력 픽셀 좌표(OX,OY)에 대한 출력에 필요한 픽셀 값이다. SPG 생성된 출력 좌표(OX,OY)를 전진시킴으로써, 이러한 지연은 허용될 수 있다.
시프트 레지스터(324)가 완전히 채워졌었으면, 대응하는 이미지는 예컨대 TV, PC 모니터 또는 프로젝터와 같은 표시 장치로 출력된다(326).
전체 프로세스는 SDRAM(312)의 인터리빙 뱅크에 의해 더욱 빨라질 수 있다. 이것은 SDRAM의 서로 다른 뱅크가 원래의 이미지로부터 픽셀의 이웃한 블록을 저장는데 이용될 수 있기 때문이다. 따라서, 도 4에 도시된 바와 같이, 입력 이미지의 픽셀의 각 블록은 SDRAM의 뱅크 O, 1, 2, 3에 저장되는 블록에 의해 둘러싸인다. 한 뱅크가 판독될 수 있지만, 다른 뱅크가 열려 있거나 닫혀지므로, 이것은 데이터의 전체 처리에 필요로 되는 시간의 량을 감소시킨다.
도 5는 총체적으로 입력 비디오 신호로부터의 원래의 이미지를 나타내는 16개의 픽셀 또는 데이터 요소{a00,a01,...,a33}의 4×4 어레이를 도시한 것이다. 각 데이터 요소(a00,a01,...,a33)는 16개의 픽셀의 원래의 이미지의 한 픽셀에 대응하고, 관련된 값(D00,D01,...,D33)을 갖는다. 데이터 요소 또는 픽셀(aij)은 원래의 이미지의 제 i 행 및 제 j 열(j=0,1,...)에 있다. 사실상, 대부분의 이미지는 16 이상의 픽셀을 포함하지만, 소수의 픽셀은 여기서 본 발명의 초기 이해를 돕기 위해 이용된다.
도 6은 원래의 이미지를 픽셀의 4개의 수평 라인{a00,a01,a02,a03},{a10,a11,a12,a13},{a20,a21,a22,a23},{a30,a31,a32,a33}으로 분할하는 기존의 방식을 도시한 것이다. 이들 라인은 통상적으로 예컨대 SDRAM(312)(도 3) 내에 순차적으로 저장된다.
메모리로부터 특정 픽셀을 검색하기 위해, 그 픽셀을 포함하는 수평 라인은 통상적으로 SDRAM 메모리로부터 요청되고 검색된다. 이러한 동작은 통상적으로 그 수평 라인 내의 모든 4개의 픽셀을 검색한다. 따라서, 예컨대, 픽셀(a21)을 검색할 명령은 통상적으로 픽셀을 포함하는 제 3 수평 라인{a20,a21,a22,a23}을 검색한다.
이에 반해, 도 7은 그것을 4개의 2×2 서브유닛 또는 블록{a00,a01,a10,a11},{a02,a03,a12,a13},{a20,a21,a30,a31},{a22,a23,a32,a33}으로 분할함으로써 어레이를 저장하는 개선된 방식을 도시한 것이다. 각 서브유닛은 4개의 픽셀을 포함하며, 이 4개의 픽셀은 도 6의 방법과 동일한 수이지만, 저장되는 픽셀의 특정 분할은 상이하다.
도 8은 시계 방향으로 900(또는 π/2 라디안)만큼 회전된 도 5의 원래의 이미지의 뒤틀린 또는 매핑된 버전인 출력 이미지를 도시한 것이다. 상기와 동일한 명칭을 이용하여, 도 5의 어레이는 "원래의"또는 "뒤틀린" 어레이라 하고, 도 8의 회전된 어레이는 "출력 어레이"라 한다. 이것은 SPG가 표시를 위해 출력 픽셀 위치 (OX,OY)를 생성시켜, 원래의 소스 이미지의 대응하는 픽셀 위치(WX,WY)로 다시 뒤틀리게 되기 때문이다. 출력 어레이(OX,OY)=(O,O)의 상위 가장 왼쪽 픽셀 또는 "원래의 픽셀" (a30)은 원래의 이미지의 좌표(WX,WY)=(3,0)를 가진 원래의 어레이의 하위 가장 왼쪽 픽셀이고; 출력 좌표(OX,OY)=(1,0)를 가진 출력 어레이의 원래의 픽셀의 바로 오른쪽의 픽셀(a20)은 원래의 어레이의 하위 가장 왼쪽 픽셀 바로 위에 있고, 원래의 또는 뒤틀린 좌표(WX,WY)=(2,0)를 갖는다.
표시를 위한 픽셀의 출력 좌표(OX,OY)는 원래의 픽셀(OX,OY)=(O,O)로 개시하고, 최상위 수평 라인(OX,OY)=(1,0),(2,0),(3,0)을 따라 수평으로 작업하여, 하위 가장 오른쪽 픽셀(OX,OY)=(3,3)인 최종 픽셀의 출력 좌표가 렌더링되거나 생성될 때까지 제 2 수평 라인(OX,OY)=(0,1)의 가장 왼쪽 픽셀로 이동하는 SPG(도 3)로부터 출력된다.
출력 이미지의 원래의 픽셀 좌표(OX,OY)=(O,O)는, 출력 좌표를 원래의 또는 뒤틀린 좌표(WX,WY)=(3,0)에 매핑하는 매퍼(316)(도 3)로 전달된다. 따라서, (a30)은 메모리로부터 판독될 필요가 있는 제 1 픽셀이다. 메모리 제어기(310)(도 3)는 SDRAM 메모리(312)(도 3)로부터 픽셀(a30)을 포함하는 픽셀의 특정 블록을 요청한다. 이것은 픽셀(a20,a21,a30 및 a31)을 포함하는 블록이다. 전체 블록은 SDRAM 메모리(312)(도 3)로부터 검색되고, 픽셀(a30)은 액세스될 수 있다.
출력 이미지에 필요한 다음 픽셀은 출력 좌표(OX,OY)=(1,0)를 갖는다. 이러한 출력 좌표는 그것을 뒤틀린 좌표(WX,WY)=(2,0)로 변환하는 매퍼(316)(도 3)에 공급된다. 이것은 픽셀(a20)이 필요로 된다는 것을 의미한다. 이러한 픽셀은 또한 SDRAM 메모리(312)(도 3)로부터 검색된 픽셀(a30)과 동일한 블록에 위치된다. 따라서, 이러한 픽셀은 즉시 이용 가능하고, 픽셀(a20)을 획득하기 위해 SDRAM 메모리(312)(도 3)로부터 다른 블록을 검색할 필요가 없다.
출력 이미지에 필요한 다음의 2개의 픽셀(a10 및 a00)은 이전에 검색된 블록 내에 위치되지 않아, 다른 블록이 검색되어야 한다. 그러나, 이들은 양자 모두 픽셀(a00,a01,a10 및 a11)을 포함하는 블록에 위치된다. 따라서, 이러한 제 2 블록이 검색되었으면, 픽셀(a10 및 a00)은 실질적으로 동시에 렌더링될 수 있다.
출력 좌표(OX,OY)=(0,1),(1,1),(2,1),(3,1)를 갖고, (a31,a21,a11 및 a01)으로 나타내는 출력 이미지의 픽셀의 제 2 수평 라인은 또한 바로 검색된 2개의 블록 내에 위치되고, 유사한 프로세스는 픽셀의 2만의 블록에 액세스함으로써 이들 픽셀을 계속 렌더링한다.
이것은 픽셀이 블록보다는 수평 라인에 의해 통상의 방식으로 저장될 때에 900 시계 방향으로의 회전을 수행하는 기존의 절차와는 대비될 수 있다. 출력 픽셀 위치(OX,OY)=(0,0),(1,0),(2,0),(3,0)를 가진 출력 이미지를 렌더링하는데 필요한 제 1의 4개의 픽셀, 즉 픽셀(a30,a20,a10 및 a00)은 모두 SDRAM 메모리(312)(도 3) 내의 서로 다른 위치에 있는데, 그 이유는 이들이 모두 원래의 이미지의 서로 다른 수평 라인에 있기 때문이다(도 6 참조). 따라서, 원래의 이미지를 조성하는 픽셀의 모든 4개의 수평 라인은 출력 이미지의 제 1 수평 라인이 렌더링될 수 있기 전에 SDRAM 메모리(312)(도 3)로부터 순차적으로 검색될 필요가 있다.
그리고 나서, 출력 이미지의 제 2 수평 라인을 렌더링하기 위해, 픽셀(a31,a21,a11 및 a01)은 SDRAM 메모리(312)(도 3)로부터 검색될 필요가 있다. 다시말하면, 도 6과 관련하여, 이들은 SDRAM 메모리(312)(도 3) 내의 서로 다른 위치에 위치된다.
이러한 예들로부터, 블록 기반 처리 방법은 900 시계 방향으로의 회전이 기존의 라인 기반 방법에서보다 두 배 빠르게 수행될 수 있게 하는 것을 알 수 있다. 이러한 두 배 증가는 기존의 메모리 액세스 속도의 절반만이 필요함을 의미한다.
900 시계 방향으로 회전되는 256 픽셀을 포함하는 (도시되지 않은) 16×16 이미지의 경우에, 통상의 라인 기반 방법은 출력 이미지의 제 1 수평 라인이 렌더링될 수 있기 전에 SDRAM 메모리(312)(도 3)로부터 판독되는 16 픽셀의 모든 16 수평 라인(의 제 1 픽셀)을 필요로 한다. 전체적으로, 256 메모리 위치는 출력 이미지가 완전히 채워지기 전에 액세스될 필요가 있다.
그러나, 원래의 이미지가 각각 16 픽셀을 포함하는 16의 4×4 블록으로 저장되는 경우, 픽셀의 4 블록(원래의 이미지의 제 1 수직 라인의 픽셀을 포함하는 블록들)만이 출력 이미지의 제 1 수평 라인을 채우도록 검색될 필요가 있다. 이들 동일한 4 블록은 출력 이미지의 제 2 수평 라인을 다시 채우도록 검색될 필요가 있다. 전체적으로, 64 블록만이 출력 이미지가 완전히 채워지기 전에 검색될 필요가있다.
이러한 예에서, 그것은 블록 기반 접근법이 종래의 라인 기반 저장 접근법보다 4 배 더 빠르다는 것을 의미한다. 사실상, 통상적으로, 16 픽셀의 한 라인만을 검색하여 그 라인에서 한 픽셀을 이용하는데 10 클록 사이클이 걸리는데, 그 이유는 도 2와 관련하여 4개의 DQs(T1 및 T9의 사이)를 검색하는데 8 클록 사이클이 걸리며, 추가적인 2 클록 사이클은 16 픽셀과 동등시하는 8개의 DQs가 검색되도록 부가적인 4개의 DQs를 검색하는데 (T9 및 T11의 사이에서) 필요로 되기 때문이다.
블록 기반 접근법에서는, 어느 4개가 실질적으로 동시에 사용될 수 있는 16 픽셀의 전체 블록을 검색하는데 10 클록 사이클이 걸린다.
블록에 관한 픽셀을 저장하는 이점이 블록 내의 픽셀의 순차적 판독이 수직으로 걸리는 만큼 수평 또는 대각선으로도 걸린다는 것지만, 이러한 방법에는 어떤 정도의 비효율성이 있다는 것으로 볼 수 있다. 이것은 대부분의 비디오 처리를 위해, 동일한 행에서의 픽셀만이 순차적으로 액세스될 수 있기 때문이며, 이는 16 픽셀 중 12 픽셀은 아마 사용되지 않는다는 것을 의미한다. 그러나, 매핑의 일부 형식이 필요한 곳에, 블록 기반 방법은 상당히 효율적이다.
상술한 배치(300)는 정수 좌표 값을 가진 뒤틀린 위치(WX,WY)에서 개개의 픽셀을 검색하는데 적절하다. 그러나, 종종, 예컨대 보통이 아닌 각도에서 회전할 시에, 매퍼(316)(도 3)는 원래의 입력 이미지의 픽셀에 대한 뒤틀린 좌표 위치 (WX,WY)의 정수가 아닌 값을 제공할 것이다.
도 9는 이와 같은 경우에 이용될 수 있는 향상된 배치(900)를 도시한다. 도 9는 도 5와 유사하지만, 배치(900)의 액세스측(access-side)만이 간결을 위해 도시된다. 동일한 구성 요소에는 "3"보다는 "9"의 접두사를 제외하고 도 3에 대응하는 참조 부호가 주어진다.
도 9에서 알 수 있는 바와 같이, SPG(914)는 디스플레이 및 매퍼(916)에 대한 출력 좌표(OX,OY)를 생성하며, 매퍼(916)는 출력 좌표(OX,OY)를 입력 비디오로부터 필요한 픽셀의 원래의 또는 뒤틀린 좌표(WX,WY)로 변환한다. 그 후, 블록 요청 변환기(918)는 뒤틀린 좌표(WX,WY)를, (도 9에 도시되지 않은) SDRAM 메모리 내의 대응하는 뱅크, 행 및 열 주소로 변환한다. 뒤틀린 위치(WX,WY)에서 픽셀을 포함하는 관련 블록은 메모리로부터 검색되고, 도 3에서와 같이 파퓰레이터(922)에 의해 이용되어, 블록이 바로 요청되었는지를 판단하도록 블록 요청 캐시(920)를 검사하게 된다.
그러나, 단일 시프트 레지스터(도 3의 324)가 있는 대신에, 다수의 시프트 레지스터(924)가 사용된다. 원래의 이미지에서 정수가 아닌 뒤틀린 위치(WX,WY)가 검색되도록 하기 위해, 원래의 이미지에서 다수의 이웃한 정수 픽셀 위치로부터의 기여는 출력 이미지에서 대응하는 픽셀 값을 생성하는데 이용될 수 있다. 이들 기여는 원래의 이미지에서 관련 이웃한 픽셀의 각각의 기여를 가중시켜 각각의 기여를 함께 부가함으로써 행해질 수 있다.
예컨대, 원래의 이미지에서 정수가 아닌 뒤틀린 좌표(WX,WY)=(0.5,2)가 요청되면, 출력 픽셀 위치가 (OX,OY)=(2,1)일 때에 원래의 이미지가 2의 인수만큼 수직으로 스케일 업(scale up)되는 경우인 것 처럼, 뒤틀린 위치(WX,WY)=(2,1)에서의 픽셀로부터의 50%의 기여에 부가되는 뒤틀린 위치(WX,WY)=(2,0)에서의 픽셀로부터의 50%의 기여는 관련 출력 픽셀 값을 제공하는데 이용될 수 있다. 이것은 원래의 이미지에서 2개의 이용 가능한 정수 위치 사이에 보간된 픽셀을 제공한다. 따라서, 도 5의 명칭을 이용하여, 그 입력 이미지가 (출력 이미지가 8×4 어레이이도록) 수직 방향으로 2의 인수만큼 업스케일될 경우에, 출력 이미지의 (OX,OY)=(2,1)에서의 픽셀은 0.5 × D(a20) + 0.5 × D(a21)일 수 있으며,D(aij)는 원래의 이미지의 위치(i,j)에서 엔트리 a의 값 D이다.
기여 픽셀의 양방이 메모리 내에 저장된 픽셀의 동일한 블록 내에 상당히 위치될 가능성이 있으므로, 부가적인 SDRAM 액세스가 보간을 용이하게 하기 위해 필요하지 않다. 실제로, 상기 예를 이용하여, 양방의 픽셀(a20 및 a21)은 동일한 블록{a20,a30,a21,a31}에 위치되어(도 7 참조), 메모리의 동일한 위치에 위치된다. 통상적으로, 이들은 서로 다른 수평 라인에 저장되어(도 6 참조), 메모리의 서로 다른 위치에 위치된다.
원래의 이미지에서 많아야 4개의 이웃한 픽셀이 보간에 필요하다. 예컨대, (WX,WY)=(2.2,6.9)와 같은 정수가 아닌 뒤틀린 위치가 찾아졌다면, (WX,WY)=(2,6),(WX,WY)=(2,7),(WX,WY)=(3,6) 및 (WX,WY)=(3,7)에서의 픽셀로부터의 기여가 이용될 수 있으며, 각각의 기여의 가중치는 일부 미리 정해진 기법에 따라 결정된다. 가중치는 이상적으로 정수가 아닌 좌표 위치를 그것에 기여하는 원래의 이미지의 정수 위치에 근접시킴으로써 결정될 수 있다. 따라서, 이러한 예에서, (WX,WY)=(2,7)에서의 원래의 픽셀은 (WX,WY)=(3,6)에서의 원래의 픽셀보다 훨씬 더 기여한다.
정수가 아닌 픽셀에 기여하는 원래의 이미지의 정수 픽셀이 이웃하므로, 이들은 모두 추가적인 SDRAM 액세스가 보간에 필요하지 않도록 동일한 픽셀 블록에 위치되거나 SDRAM 메모리로부터 액세스되었거나 액세스될려고 하는 이웃한 블록에 위치될 것이다. 이것은 SDRAM 활동성의 증가의 가능성을 줄인다.
정수가 아닌 위치 배치를 제공하기 위해, 보간기(928)는 시프트 레지스터(924)와 출력 비디오(926)에 대한 디스플레이 사이에 제공된다. 보간기(928)는 가중치를 결정하고, 각 기여 픽셀로부터의 픽셀 값 정보 D에 각각의 가중치를 곱하여, 최종 출력 화소 값에 도달하도록 이들 값의 합산을 수행한다.
상기 설명에서, 매퍼(316, 916)는 각 출력 픽셀 위치 (OX,OY)에 대해 정수 또는 정수가 아닌 위치가 SPG에 의해 생성되든지간에 단일 뒤틀린 픽셀 위치 (WX,WY)를 생성한다. 그러나, 도 10과 관련하여, 수정된 매퍼(1016)는 또한, SPG에 의해 생성되는 단일 출력 픽셀 위치(OX,OY)에 응답하여 출력 이미지에서 다음 라인(들)에 대한 원래의 이미지의 뒤틀린 좌표(WX,WY)를 생성하도록 배치될 수 있다. 메모리로부터 검색되는 픽셀의 각 블록이 원래의 이미지로부터의 픽셀의 수개의 라인(예에서는 4)을 포함하므로, 다수의 출력 라인은 실질적으로 동시에 채워질 수 있다. 이것은 출력 이미지의 후속 라인이 한 출력 라인에서 다음 출력 라인까지만 약간 상이한 대응하는 원래의 위치(WX,WY)를 가져, 이들이 메모리내의 동일한 픽셀 블록 내에 위치되게 할 것이기 때문이다.
따라서, SPG(1014)가 출력 좌표(OX.OY)를 생성하면, 매퍼(1016)는 그 출력 좌표(OX,OY)에 대응하는 뒤틀린 좌표(WX,WY)뿐만 아니라, 출력 좌표(OX,OY+1),(OX,OY+2) 및 (OX,OY+3)에 대응하는 뒤틀린 좌표(WX',WY'),(WX",WY") 및 (WX"',WY"')를 생성할 수 있으며, 이러한 출력 좌표는 동일한 수평 출력 좌표 값을 갖지만, 오프셋 수직 출력 좌표 값을 갖는 출력 좌표를 나타낸다. 예컨대, SPG(1014)가 원점 출력 좌표(OX,OY)=(O,O)를 생성하면, 오프셋 출력 좌표(OX,OY+1)=(0,1),(OX,OY+2)=(0,2) 및 (OX,OY+3)=(0,3)는 또한 4개의 각각의 뒤틀린 좌표가 또한 동시에 생성되도록 생성된다:
(OX,OY)=(O,O) -> (WX,WY);
(OX,OY+1)=(0,1)-> (WX',WY');
(OX,OY+2)=(0,2)-> (WX",WY"); 및
(OX,OY+3)=(0,3)-> (WX"',WY"').
이용되는 4×4 픽셀 블록의 예에서는, 4개의 수평 출력 라인이 도 10에 도시된 바와 같이 매퍼(1016)에 의해 동시에 생성될 수 있으며, 파퓰레이터(1022) 및 시프트 레지스터(1024)는 이에 따라 확장된다. 따라서, (도 10에 도시되지 않은) SDRAM 메모리로부터 검색되는 4×4 픽셀의 단일 블록은 모든 4개의 출력 라인(OX,OY+1,OY+2,OY+3)에 대한 픽셀 데이터를 한번만 채우는데 이용될 수 있다.
부가적인 라인 버퍼(1030)는 부가적인 라인이 출력 비디오 신호를 준비할 때 정확한 순서로 확실히 처리될 수 있도록 시프트 레지스터(1024) 후에 제공된다.
이러한 배치는 출력 신호 또는 이미지를 생성하는데 필요한 SDRAM 부하를 크게 감소시킬 것이다. 그러나, 이것은 4개의 워프 또는 매핑 엔진(1016)이 필요하므로 회로의 복잡성을 증대시킨다.
상술한 배치(300, 900 및 1000)가 어떤 이미지 매핑에 대한 처리 시간을 크게 줄이지만, 파퓰레이터(322, 922 및 1022)는 이제 설명되는 대안적 배치로 대체될 수 있다.
도 11 및 12는 이미지 데이터를 처리하기 위한 대안적 배치(1100)를 도시한 것이다. 출력 X,Y 생성기(1102)는 출력 좌표(OX,OY)를 생성하도록 SDRAM 주파수에서 동작한다. 이것은 상위 가장 왼쪽 픽셀에서 바로 오른쪽 픽셀로 스캐닝하여, 하위 가장 오른쪽 픽셀의 좌표가 생성되었을 때까지 모든 수평 라인을 통해 처리하는 통상적인 방식에 있다. 반면에, 디스플레이의 주파수, 즉 출력 픽셀 주파수에서 동작되는 SPGs(314,914,1014), 출력 X,Y 생성기(1102)는 SDRAM 주파수에서 실행한다.
Y-오프셋 생성기(1104)는 출력 이미지에서 좌표의 수평 라인의 미리 정해진 수에 대한 Y 오프셋을 생성한다. 이러한 예에서는 미리 정해진 수가 4이다. 따라서, Y-오프셋 생성기(1104)는 4개의 수평 라인에 대응하는 Y-오프셋 수(0, 1, 2 및 3)를 생성한다. Y-오프셋 생성기(1104)는 X,Y 생성기(1102)로부터 단일 출력 좌표(OX,OY)를 수신하는 Y-오프셋 가산기(1106)에 오프셋 값을 제공한다. 따라서, 생성기(1102)로부터 출력되는 각 출력 좌표(OX,OY)에 대해, 추가적인 3개의 좌표(OX,OY+1),(OX,OY+2) 및 (OX,OY+3)가 생성된다. 이러한 배치(1100)의 부분으로부터의 출력은 {(0,0),(0,1),(0,2),(0,3)},{(1,0),(1,1),(1,2),(1,3)}...일 수 있다.
이들 출력 좌표는 출력 픽셀의 전체 4 픽셀 스트립을 왼쪽에서 오른쪽으로 스캐닝하여, 다음 스트립을 출력 이미지에 대해 수평 라인 4에서 수평 라인 7까지 다운시킨다. 단일 매퍼(1108)는 출력 좌표(OX,OY)의 이들 스트립를 수신하여, 원래의 입력 이미지의 픽셀 위치에 관련된 뒤틀린 좌표(WX,WY)의 대응하는 스트립을 생성한다. 이들 뒤틀린 좌표(WX,WY)가 블록에 저장되는 픽셀에 의해 SDRAM 메모리 내의 유사한 위치를 공유하므로, 후속 매핑된 좌표(WX,WY)는 저장부 내의 동일한 또는 이웃한 블록에 있을 가능성이 매우 높다.
도 13 및 14는 제각기 출력 이미지에 걸쳐 수평으로 스캐닝하는 '출력 스트립' 및 원래의 입력 이미지에 걸쳐 대각선으로 스캐닝하는 '원래의 스트립'을 도시한 것이다. 출력 비디오가 원래의 비디오의 회전 버전일 때, 원래의 픽셀 위치 (WX,WY)는 일반적으로 앞의 위치의 것들에 매우 가까운 픽셀에 액세스하는 저장된 블록의 세트를 통해 와이프(wipe)하는 것을 볼 수 있다. 원래의 이미지가 수평 라인보다는 픽셀의 블록에 의해 저장되었으므로, SDRAM 메모리는 덜 빈번히 액세스될 필요가 있어, 전체 처리 속도는 증가된다.
도 11 및 12를 참조하면, 원래의 좌표(WX,WY)가 매퍼(1108)에 의해 생성되었으면, 이들은 BRC 변환기(1110)로 전달된다. BRC 변환기(1110)는 각 원래의 또는 뒤틀린 좌표(WX,WY)를 SDRAM 메모리 내의 뱅크, 행 및 열 주소로 변환한다. 환언하면, 뱅크, 행 및 열 주소는 필요한 픽셀을 포함하는 블록이 위치되는 SDRAM 메모리의 특정 뱅크에서의 행 및 열 위치를 나타낸다. 특정 뱅크에서의 그 행 및 열이 액세스되면, 16 픽셀 블록은 처리를 위해 검색될 수 있다. 오프셋 값은 그 특정 뱅크 내의 특정 픽셀을 나타낸다. 따라서, 픽셀의 4×4 블록에 대한 오프셋 값은 0과 15 사이의 값을 갖는다. 1과 16 사이의 값보다는 0과 15 사이의 값을 사용하는 것이 바람직한데, 그 이유는 15는 4 비트로 나타낼 수 있는 반면에, 16은 5 비트를 필요로 하기 때문이다.
SDRAM 메모리의 각 뱅크에는 다수의 행 및 열, 예컨대 8192 행 및 128 열이 있을 수 있으므로, (오프셋을 가진) BRC 값은 SDRAM 메모리 내에 저장된 개개의 픽셀을 유일하게 식별하기 위해 매우 클 필요가 있을 수 있다. 이를 극복하기 위해, 블록 요청 및 ID 생성기(1112)는 뱅크, 행 및 열 값에 대한 내부 ID 값을 생성한다. 이것은, 예컨대, 6 비트 주소를 형성하기 위해 구성되는 뱅크, 행 및 열 주소의 하위 2 비트이다. 1, 3 등의 하위 비트의 서로 다른 수는 특정 상황에 따라 사용될 수 있다. 이것은 SDRAM 메모리 내의 26(=64) 메모리 위치가 이들이 위치되는 뱅크 및 그 특정 뱅크 내의 행 및 열에 기초하여 식별되도록 할 수 있다.
원래의 좌표(WX,WY)가 도 14와 관련하여 논의되는 바와 같이 4×4 메모리 블록에 걸쳐 스위프(sweep) 또는 스캔하는 경향이 있으므로, 적어도 4개의 뱅크 및 4개의 행 또는 4개의 열은 동일한 ID를 가진 새로운 BRC 값이 생성하기 전에 교차(cross)된다. 이것은 약 64 픽셀과 동등시하는데, 이는 ID 값이 적어도 64 픽셀에 대해 유일하게 유효하다는 것을 의미한다. 그 후, 행 및 열 요청의 중복 범주(duplicate categories)는 작업 부하를 줄이기 위해 필터링된다. 이들 요청의 엔트리가 중복될 가능성이 높은데, 그 이유는 뒤틀린 좌표(WX,WY)의 스위프 특성이 주어지면, 픽셀은 메모리 내의 동일한 블록에서 요청되기 때문이다.
최근 블록 요청의 로컬 캐시는 새로운 블록 요청을 감지하는데 이용된다. 새로운 BRC 값이 요청되면, SDRAM 제어기(1116)는 SDRAM 메모리로부터 특정 블록을 검색한다. 6 비트 ID 값은 SDRAM 제어기(1116)에 의해 SDRAM 메모리 내의 주소로서 인식되지 않는 내부 값이기 때문에 SDRAM 제어기(1116)에 의해 이용되지 않음에 주목된다. SDRAM 제어기(1116)는 그것이 픽셀 블록을 저장하는 SDRAM 내의 정확한 위치를 유일하게 식별하게 할 수 있도록 전체 BRC 주소를 필요로 한다. 이 예에서 64 값 중 하나뿐인 ID 값은 전체 BRC 값을 저장하는 64 위치 메모리 내에 주소로 이용된다. 따라서, 동일한 ID를 가진 새로운 BRC 값이 감지되면, 요청은 메모리로부터 그 블록을 획득하도록 SDRAM 제어기로 진행한다.
특정 뒤틀린 위치(WX,WY)에 대해 생성된 ID 값(오프셋 값과 함께, 이 경우에는 16 픽셀 블록 내의 특정 픽셀의 0과 15 사이의 값)은 지연 생성기(1118)로 전달되어, SDRAM 제어기(1116)가 SDRAM 메모리로부터 픽셀의 필요한 블록을 검색하기에 충분한 시간을 확실히 갖게 한다. 그 동안에, SDRAM 제어기(1116)는 요청된 BRC 데이터, 관련된 BRC 주소에서의 블록에 포함된 데이터를 64 엔트리 캐시에 저장한다.
룩업(look-up) 엔진(1120)은 지연된 ID 값을 이용하여 캐시(1114)를 조사하여, 검색된 값을 대형 라인 버퍼 메모리(1124)에 저장한다. 이 예에서는, 정보를 기록할 수 있는 적어도 4개의 라인 버퍼(1124)가 있다. 검색된 데이터 값은 상술한 바와 같이 보간될 수 있다. 지연된 출력 픽셀 좌표(OX,OY)는 배치(1100)의 출력 좌표(OX,OY) 및 뒤틀린 좌표(WX.WY) 생성부(1102, 1104, 1106)와 라인 버퍼(1124) 사이에 위치되는 지연기(1122)에 의해 유지되었다. 지연된 출력 좌표(OX,OY)는 라인 버퍼(1124) 내에 데이터를 저장할 위치에 대한 포인터로 이용된다.
배치(1100)의 픽셀-클록측상에, 스트립을 위한 Y-오프셋을 가산하는 것보다 출력 픽셀 주파수에서 클록되어 출력 위치(OX,OY)를 카운트하는 다른 출력 X,Y 생성기(1126)가 라인 버퍼(1124)로부터 출력 픽셀을 판독하여, 이들을 추가적인 사용을 위해 전송한다.
픽셀-클록측 및 SDRAM-클록측은 라인 버퍼(1124)가 액세스되기 바로 전에 채워지도록 부분적으로 동기화할 필요가 있다. 이중 버퍼 접근법은 픽셀-클록측이 이전의 라인에 액세스하는 동안 SDRAM-클록측이 데이터의 다음 라인에 확실이 액세스하도록 하는데 이용될 수 있다. 환언하면, SDRAM-측 출력 X,Y 생성기(1102)는 라인 버퍼(1124)의 절반에 기록하지만, 픽셀-측 출력 X,Y 논리(1125)는 라인 버퍼(1124)의 다른 절반으로부터 판독하도록 SDRAM 및 픽셀 클론 논리는 동기화될 필요가 있다. 그 후, 라인 버퍼(1124)의 두 절반은 교환하고(swap over), 라인 버퍼(1124)에 대한 기록이 이들에 대한 판독을 능가하는(overtake) 사례(instances)를 피하기 위해 간단한 이중 버퍼 시스템을 형성한다.
출력 이미지의 안티 앨리어싱 또는 스무딩은 또한 (도 11의 패턴 배경으로 표시된) 블록 요청자 지연 캐싱(Block Requestor-Delay-Caching) 배치(1112,1114,1118,1120)의 다수의 사례를 이용하여 달성될 수 있다. 출력 좌표(OX,OY)의 분수 부분(fractional part)에서 생성된 데이터는 함께 병합되는 여분의 뒤틀린 좌표(WX,WY)를 도입하는데 이용될 수 있다. 블록 요청자(1112)는 단일 BRC 캐시(1504)만이 필요하도록 다 대 단 선입 선출(many-to-single First in First Out)(FIFO)(1502)을 필요로 한다(도 15 참조). SDRAM 제어기(1116)로부터의 데이터는 블록 요청자(1112)로부터 송신되는 지연된 IDs에서 검색된 데이터로 다수의 캐시 엔트리 또는 단일 다중 포트 메모리에 저장된다. 그 후, 이러한 데이터는 라인 버퍼(1122) 내의 저장을 위한 단일 픽셀로의 상술한 보간법과 유사한 방식으로 분수 값을 이용하여 함께 병합된다.
다수의 입력 소스가 이용되면, 이들은 SDRAM 메모리(1116) 내의 서로 다른 위치에 저장될 수 있다. 소스 매핑 기능은 메모리(1116) 내의 서로 다른 소스를 나타내도록 필요한 뒤틀린 좌표(WX,WY)를 재생하기 위해 매퍼(1108) 전후에 구현될 수 있다. 워프 매핑하기 전에 소스 매핑은 개개의 윈도우가 아마 서로 다른 워프 기능에 의해 별도로 매핑될 수 있도록 한다. 워프 매핑 후 소스 매핑은 워프 맵이 한 번에 다수의 윈도우에 적용되도록 한다.
도 16은 다른 예시적인 실시예에 따라 SDRAM에 데이터를 저장하기 위한 배치를 도시한 것이다. 도 4와 관련하여, 픽셀의 이웃한 4x4 블록은 동일한 SDRAM 메모리에서 서로 다른 뱅크에 저장된다. 그러나, 도 16에 도시된 바와 같이, 4x4 픽셀의 64 블록은 SDRAM 메모리에서 하나의 뱅크의 동일한 행에 저장된다. 전형적으로, SDRAM 행은 512 열 주소로 구성되고, 이전에 설명된 바와 같이, 각 열 주소는 이미지 데이터의 2 픽셀의 가치를 저장할 수 있다. 따라서, 정보의 1024 픽셀의 가치는 각 SDRAM 행에 저장될 수 있다. 16 픽셀의 각 4x4 블록이 8 열 주소를 필요로 하므로, 이것은 64 4x4 블록이 각 SDRAM 행에 저장될 수 있다는 것을 의미한다. 이들 64 블록은 16 픽셀 블록의 8x8 어레이로 저장된다. 이것은 SDRAM 메모리의 단일 뱅크의 단일 SDRAM 행에 총 32×32 (= 1024) 픽셀을 제공한다.
각각 단일 SDRAM 행을 필요로 하는 픽셀의 인접한 32×32 어레이는 동일한 뱅트의 서로 다른 행과는 대조적으로 SDRAM 메모리의 서로 다른 뱅크에 저장된다. 이것은 서로 다른 뱅크가 신속하게 액세스될 수 있으므로 픽셀의 인접한 어레이 사이에서 빠른 이동을 허용한다.
이러한 방식으로 픽셀을 저장함으로써, 픽셀이 SDRAM으로부터 검색될 시에, 동일한 SDRAM 행은 (예컨대, 도 4에 도시된 배치에 비해) 긴 주기 동안에 활성 상태로 유지한다. 이것은 많은 인접한 픽셀이 동일한 SDRAM 행에 위치되기 때문이다. 이전에 설명했듯이, 이것은 결과적으로 처리 시간을 더욱 빠르게 하는데, 그 이유는 SDRAM 행이 덜 빈번히 열리고 닫힐 필요가 있기 때문이다. SDRAM 메모리의 모든 뱅크가 동시에 열릴 수 있기 때문에, 이러한 저장 배치는 4096 개별 픽셀과 동등시하는 16x16, 4x4 픽셀 블록으로 실질적으로 순시 액세스를 제공한다.
도 17은 콘텐츠 주소 지정 가능 메모리(CAM) 향상이 사용되는 다른 예시적인 실시예에 따른 배치를 도시한다. CAM 향상은 적은 메모리가 픽셀의 다시 판독(read-back) 동안에 이용되도록 한다. 이것은 CAM이 4x4 픽셀의 최근에 사용된 블록의 랜덤 액세스 캐시를 보유할 수 있기 때문이다. 블록의 전체 디스플레이 라인의 가치는 캐시에 저장될 수 있다.
이전에 설명했듯이, 표준 SDRAM은 그것으로부터 데이터를 검색하기 위해 메모리 주소를 필요로 한다. 콘텐츠 주소 지정 가능 메모리는 어느 위치가 필요한 특정 데이터를 저장할지를 결정한다. 회전의 이미지 워핑(warping)은 SDRAM으로부터 획득된 근접한 임의의 주소(이들은 예측되지 않음)를 필요로 하므로, 최근의 블록 요청(1114)(도 11)의 캐시는 최종 디스플레이 해상도만큼 클 필요가 있다. 디스플레이 폭이 2048 픽셀이면, 2048×2048 픽셀 캐시는 예컨대 사용중에 900 회전이 있을 경우에 필요하다.
이러한 실시예에서, CAM은 4x4 픽셀 데이터와 함께 블록 위치(예컨대, (0,0)은 원래의 소스 이미지의 최상부 왼쪽 블록의 위치이고, (1,0)은 그것의 오른쪽으로의 위치임)를 저장한다. 블록 요청이 행해질 때, CAM은 일치하는 블록의 특정 블록 위치에 대해 질의(interrogate)를 받는다. 그 블록이 CAM에 존재하지 않는 경우, 요청은 그 블록을 검색하도록 SDRAM로 송신된다. 그렇지 않으면, CAM 위치가 알려지고, 또한 그 안에 4x4 픽셀 데이터를 가지므로, 필요한 블록은 CAM의 주소를 이용하여 CAM에서 쉽게 획득될 수 있다.
일 구현에서, CAM은 상술한 바와 같이 원래의 블록 위치를 저장하며, CAM 주소는 그 블록에 대한 4x4 픽셀을 포함한 보통의 메모리 캐시 주소(ID)가 된다. 이것은 CAM이 복잡성 및 비용 문제를 다룰 수 있는 적은 데이터를 저장함에 따라 더욱 작을 수 있다는 것을 의미한다.
CAM을 이용할 시에, ID (캐시 위치) 값은 도 12와 관련하여 설명된 바와 같이 뱅크, 행 및 열 주소의 하위 2 비트에서 더 이상 생성되지 않는다. 대신에, 그것은 CAM 내에서 특정 블록에 대한 검색 후에 발견된 CAM 주소 위치; ID 값으로 일치하는 BRC 주소를 가진 메모리 위치이다. 블록 위치(뱅크, 행, 열) 데이터가 CAM 내의 어디에서 발견되지 않으면, 즉, 그 블록 위치를 가진 블록이 이전에 검색되지 않았으면, 후속 위치 ID를 가진 새로운 후속 CAM 메모리 위치가 카운터를 이용하여 생성되고, 요청된 BRC 주소는 그것 내에 저장된다. 그리고 나서, 동일한 BRC에 대한 미래의 요청은 이러한 CAM 주소를 생성하며, 이는 지연 라인 후에 도 11에 도시된 4x4 픽셀 캐시(1114)로 전달되는 ID를 형성한다.
이러한 접근법을 이용하여, SDRAM 메모리는 어느 워프 기능에 따라 방향 또는 각도와 무관한 방식으로 판독될 수 있다. CAM은 SDRAM의 위치와 관계없이 최근의 블록 요청을 기억한다. 도 12에 도시된 상대적 접근법은 사각형 격자의 이웃한 픽셀의 로컬 캐시를 저장하는 반면에, CAM 접근법은 어떠한 형상의 픽셀을 저장할 수 있다.
일례에 의해, 각 CAM 위치가 정보의 4 픽셀의 가치를 저장할 수 있으므로, 2048×2048 픽셀 출력 해상도는 픽셀의 전체 라인을 커버하기 위해 적어도 512 CAM 위치를 필요로 한다. 각 CAM 위치에 대한 주소는 전체 18 비트(뱅크에 대한 2 비트, 열에 대한 6 비트 및 행에 대한 10 비트)일 수 있다. 그래서, 비트의 CAM 사이즈는 9216 비트와 동일한 512×18이다. 이것이 비교적 작은 형상(figure)으로 나타날 수 있지만, 그것은 필요한 데이터를 찾기 위하여 FPGA에 약 10,000 이상의 논리 셀을 필요로 한다. 전형적인 FPGA에서, 이것은 논리 셀의 전체 수를 약 20,000으로 취하며, 이는 실제 너무 높을 수 있다. 따라서, 이러한 방법은 외부 CAM이 이용되지 않으면 ASIC 사용에 더 적합하다.
CAM의 사용을 포함하는 일부 실시예에서, 도 11에 도시된 다수의 라인 버퍼(1124)는 제거되고, 단일 라인은 (예컨대, 다수의 라인보다) 어느 때나 처리된다.
(각 라인의 끝에 데이터를 보존한 이후 CAM 방법을 제외한) 상기 예들에서, 단일의 대형 멀티블록 캐시가 이용된다. 이러한 대형 멀티블록 캐시는 더욱 작은 블록, 전형적으로 사이즈의 4x4 또는 4x2 픽셀을 포함함으로써, 각 작은 블록이 단일 SDRAM 버스트에 액세스될 수 있도록 한다.
캐시는 '윈도우'가 소스 이미지를 움직이는 이미지의 비교적 작은 부분에 대해서만 사용된다. 캐시는 출력이 한 출력 라인에 걸쳐 스캐닝하고 다음으로 스캐닝할 시에 라인별 기준으로 보존되지 않으며, 캐시는 종종 이전의 출력 라인과 같은 데이터로 다시 채워져야 한다.
효율성을 개선하기 위해, 다수의 출력 라인은 Y 오프셋 생성기 ref 때문에 출력측 상의 왼쪽에서 오른쪽으로 스캐닝하면서 한 번에 뒤틀릴 수 있다. 다수의 출력 라인이 이웃한 소스 라인에서 생성되므로, 동일한 캐시 데이터는 한 번 이상 재사용되어, 동일한 SDRAM 액세스로부터 더 많은 픽셀을 제공한다.
상기 예시적인 구조의 추가적 개선을 위한 3개의 주요 영역이 있다.
첫째로, 다수의 이미지가 디스플레이 상에서 서로 다음에 뒤틀리면, 상기 예시적인 큰 캐시가 하나의 이미지의 데이터와 다른 이미지의 데이터 사이를 구별하지 못하므로 각 소스 이미지에 대한 별도의 캐시가 필요하다. 이것은 스크린 상에 보여진 윈도우의 수로 스케일링하는 여분의 캐시가 필요하여, 필요한 FPGA 자원을 증가시킨다는 것을 의미한다.
둘째로, 다수의 라인 버퍼는 한번에 생성된 다수의 라인을 별도의 라인으로 분할하기 위해 필요하다. 이것은 FPGA 사이즈 및 복잡도에 부가한다.
셋째로, 시스템은 2개의 주파수, 출력 픽셀 주파수 및 설계를 약간 복잡하게 하는 SDRAM 주파수에 걸쳐 분할된다.
더욱이, 다시 도 16과 관련하여, 작은 4x4 픽셀 블록은 한 SDRAM 버스트에 쉽게 액세스되도록 SDRAM에 저장된다. SDRAM 데이타 폭에 따라, 이것은 4x4, 4x2, 2x4, 2x2, 8x4 등일 수 있다. 많은 작은 블록(도 16에 도시된 예에서는 16) 큰 32x32 픽셀 블록을 형성하며, 이들 블록은 모두 동일한 SDRAM 행에 저장된다. 이것은 여러 행을 너무 자주 '프리차지(precharge)'(닫기) 및 '활성화'(열기)하는 SDRAM 없이 어떤 방향으로 원래 또는 소스 이미지의 픽셀로의 빠른 액세스를 허용한다. 이것은 결과적으로 보다 빠른 데이터 처리 시간을 생성할 수 있다. 이웃한 32x32 블록은 서로 다른 SDRAM 뱅크에 저장됨으로써, 다시 원래의 이미지로의 픽셀 액세스가 행 경계를 가로지를 시에, 즉, 다른 큰 32x32 픽셀 블록으로부터의 소스 픽셀이 찾아질 때, SDRAM 액세스는 새로운 SDRAM 뱅크로 전환할 때에 여전히 빠르다.
도 18은 대안적 구조(1800)를 도시한 것이다.
이러한 대안적 구조(1800)에서, 캐시는 작은 픽셀 블록의 대형 멀티블록을 저장하지 않고, 대신에 최근에 이용된 블록을 기억한다. 최근에 이용된 블록의 각각은 별도의 블록 캐시 엔트리에 저장된다. 하나의 출력 라인만이 한번에 스캐닝되어, 구조를 단순화한다. 결과적으로, 라인 버퍼 블록은 더 이상 필요하지 않다. 더욱이, SDRAM 제어기를 제외하고, 모든 다른 구성 요소는 SDRAM 주파수에서보다 출력 픽셀 주파수에서 실행한다.
SPG(1802)는 출력 좌표(OX,OY)의 쌍을 생성한다. 상술한 바와 같이, 모든 표준 비디오 시스템에서와 같이, 이들은 왼쪽에서 오른쪽으로, 위에서 아래로 스캐닝한다.
출력 좌표(OX,OY)는 뒤틀린 좌표(WX,WY)를 생성하도록 워프 엔진(1804)에 의해 뒤틀린다. 위와 같이, 뒤틀린 좌표(WX,WY)는 원래의 소스 이미지에서 원하는 픽셀 위치를 나타낸다.
뒤틀린(WX,WY) 픽셀 계산이 행해질 때, 이들은 블록 요청 변환기(1806)에 의해 소스 블록 SDRAM 위치로 변환되고, 메모리 위치는 블록 BRC(뱅크, 행 및 열)의 형식으로 된다. 이것은 필요한 (WX,WY) 픽셀을 포함하는 4x4 픽셀 블록의 메모리 위치이다.
이러한 블록 SDRAM 위치는 이웃한 출력 픽셀: 동일한 라인상의 이전의 픽셀(OX-1,OY) 및 바로 이전의 라인의 이웃한 픽셀(OX-1,OY-1), (OX,OY-1) 및 (OX+1,OY-1)로부터 생성되는 뒤틀린 픽셀의 SDRAM 위치에 대해 비교기(1808)에 의해 비교된다. 이들은 아래에서 더욱 상세히 설명되는 라인 지연으로부터 획득된다.
현재 SDRAM 위치가 출력 스크린에서 한 픽셀만큼 떨어져 있는 출력 픽셀 위치(OX,OY)에 대응하는 다른 SDRAM 위치와 비교되므로, 일치가 가능성이 매우 높다. 환언하면, 이것은 현재 찾는 픽셀이 이미 SDRAM으로부터 검색된 픽셀 블록에서 발견될 가능성이 있음을 의미한다. 결과로서, 시스템은 데이터가 최근에 검색되었으므로 SDRAM에서 다시 이 데이터를 요청할 필요가 없을 것이다.
BRC 일치가 발견되면, 이전 일치하는 블록의 ID는 복사되어, 라인 지연(1810)으로 전달된다.
일치가 발견되지 않으면, 다음 이용 가능한 ID 번호가 사용되어, 라인 지연(1810)으로 전달된다. 요청이 SDRAM 제어기(1812)로 송신되어, SDRAM으로부터 픽셀의 필요한 블록을 검색하여, 그것을 그 위치(ID)에서의 픽셀 블록 캐시(1814)에 저장한다.
ID 및 현재 뒤틀린 위치(WX,WY)를 라인 지연(1810)으로 전달하는 목적은 두 배로 된다. 첫째로, 그것은 필요한 픽셀 블록을 검색하는 데 충분한 시간을 SDRAM 제어기(1812)에 제공한다. 둘째로, 그것은 뒤틀린 위치(WX,WY)에 대응하는 BRCs가 이전의 출력 라인으로부터의 것들과 비교되는 이전의 단계에서 언급된 비교를 허용한다.
그 다음, 라인 지연(1810)으로부터의 출력은 상술한 블록 비교기(1808)로 피드백함으로써, 픽셀의 다음 출력 라인이 뒤틀릴 때 비교하기 위해 이용될 수 있도록 한다. 출력은 또한 ID 값을 이용하여 블록 캐시로부터 현재 필요한 픽셀을 검색하는데 이용된다.
정확한 픽셀은 ID 값을 이용하고, (WX,WY) 값에서의 하위 비트에 기초하여 블록 캐시(1814)로부터 검색된다.
이러한 예에서, SDRAM 액세스만이 엄격하게 필요할 때에 발생한다. 전형적인 뒤틀린 또는 회전된 이미지에서, 이웃한 소스 픽셀(WX,WY)은 출력 이미지(OX,OY)에서 서로 가까이 있어, SDRAM 메모리에 저장된 픽셀의 동일한 블록에 있을 가능성이 있다. 상기 비교 또는 '이웃한' 검사는 픽셀 블록 캐시에서 SDRAM으로부터 검색되는 어떤 이전의 블록이 최대한 확실히 재사용되게 한다.
도 19는 재사용되는 픽셀 블록 캐시에 저장된 픽셀 블록의 예를 도시한 것이다. 도 19의 화살표는 원래의 소스 이미지의 픽셀의 스캐닝 경로를 나타낸다. 화살표는 약간 비스듬히 있으며, 각각의 출력 라인에 대해 한 라인 아래로 증분한다.
예상되는 바와 같이, 제 1 출력 라인은, 픽셀 블록 캐시가 비어 있어, 라인 지연에 뒤틀린 위치(WX,WY)가 없으므로 필요한 픽셀 블록의 모두가 SDRAM 메모리 자체에서 액세스되는 것을 필요로 한다. 그러나, 화살표가 이전의 라인에서 이용된 동일한 블록을 횡단하므로, 각 후속 출력 라인은 SDRAM으로부터 검색되는 소수의 블록을 필요로 한다. 사실상, 이 예에서 제 2, 3 및 4 출력 라인에 대해, 하나의 새로운 블록만이 SDRAM에서 검색되고; 픽셀이 찾는 다른 5개의 픽셀 블록은 이미 픽셀 블록 캐시에 저장되어 있다.
상술한 블록 캐시는 비디오 데이터의 한 라인 이상을 보유할만큼 충분히 커야 한다. 이것은 하나의 출력 라인에 필요한 블록을 이들이 다음 출력 라인에 이용하는 경우에 준비할 필요가 있기 때문이다.
예컨대, 1920x1080 출력 해상도에 대해, 회전되지 않은 매핑은 대략 512 4x4 블록을 저장할 수 있는 픽셀 블록 캐시를 필요로 한. 이것은 4x512=2048가 수평 출력 라인에서 1920 픽셀을 커버하기에 충분하기 때문이다.
90도 회전에 대해, 1080 픽셀만이 디스플레이에 걸쳐 수평으로 출력되므로 적은 수의 블록이 필요로 된다.
45도 회전에 대해, 1920×1080 삼각형의 빗변이 2202 픽셀이기 때문에 디스플레이에 걸쳐 출력되는 대각선 픽셀의 수가 높을 수 있으므로 더 많은 블록이 하나의 수평 출력 라인을 표시하는데 필요로 될 있다.
데이터 캐싱은 일반적으로 구현하기가 간단하다. 그러나, 이 경우, ID 생성기는 이용 가능하고, 현재 사용중에 있어, 이용 가능하지 않는 어느 ID를 추적할 필요가 있다. 이러한 구현에서, ID는 픽셀의 캐시 블록에 저장되는 픽셀 블록 캐시 주소에 대응한다. 전체 프레임에 걸쳐, 일부 픽셀 블록이 다른 픽셀 블록보다 더 많이 재사용된다. 이것은 특히 이상한 워프(bizarre warps)를 가진 경우이며, 심지어 일부 회전에 따른 경우이다. 따라서, ID 생성기는 간단히 순서 있게 ID 번호를 발급할 수 없어, 최대의 ID 값이 할당되면(예컨대, 0 내지 511, 0 내지 511 등) 다시 처음으로 랩 어라운드(wrap around)한다.
픽셀 블록 캐시는 아마도 전체 이미지조차 많은 라인에 걸쳐 뻗어 있을 ID가 반복적으로 이용될 수 있는 최대 횟수를 처리하기 위해서는 충분히 커야 하거나, ID를 재사용할 수 있고, 재사용할 수 없는지를 알 필요가 있다.
그래서, 블록 캐시는 사용중에 있는(즉, 현재 출력 라인에 의해 필요한) 블록 캐시(ID) 엔트리를 중첩 기록(overwrite)할 필요가 없고, 더 이상 필요치 않은(즉, 이전의 라인을 출력하는데 이용되었지만, 현재의 출력 라인에 이용되지 않는) 블록 캐시(ID) 엔트리를 재사용하기에 충분히 지능적이야 한다. FPGA에서 이것을 구현하는 것은 비교적 어렵다.
도 20은 이러한 지능이 FPGA에서 구현될 수 있는 한 배치를 도시한 것이다.
ID 리스트(2000)는 메모리에 저장된다. ID 리스트는 메모리 주소에 대응하는 캐시된 픽셀의 각 블록에 대한 하나의 위치를 갖는다. ID 리스트는 이상적으로 각 프레임의 최상부에 재설정되어, 512 블록 캐시, 즉 512 메모리 위치를 가진 캐시의 경우에 모든 ID를 순서(0,1,2,3,4...510,511)로 리스트에 기입한다.
판독 포인터(2002) 및 기록 포인터(2004)는 양자 모두 0에서 시작하여 생성된다. 판독 포인터는 사용될 수 있는 다음 이용 가능한 ID 값을 나타낸다. 기록 포인터는 어떠한 자유로운 또는 재순환된(freed-up or recycled) ID 값이 다시 기록되는 곳을 나타낸다. 새로운 ID 값이 필요하면, 그것은 판독 포인터가 사용될 수 있는 다음 이용 가능한 ID 값을 나타내므로 판독 포인터로부터 판독될 수 있다.
제 1 출력 라인에 대해, 판독 포인터는 다음 이용 가능한 ID 값이 사용할 수 있기 때문에 1씩 증분한다. 그 다음, 판독 포인터는 ID 리스트에서 다음 이용 가능한 ID 값을 출력할 준비가 되어 있다. 제 1 라인 출력이 SDAM으로부터 검색될 새로운 데이터를 필요로 하기 때문에, 판독 포인터는 이제 상당히 큰 값으로 나타낼 것이다. 예컨대, 1920x1080 출력 해상도 출력의 경우, 그것은 수 480을 나타낼 수 있다. 이것은 각각 자신의 고유 ID 값을 가진 전체 480 4 픽셀 블록이 요청되었기 때문이다. 이 시점에서, 어떠한 자유로운 또는 재순환된 ID 값이 다시 기록되는 곳을 나타내는 기록 포인터는 IDs 값이 자유롭거나 재순환되지 않았기 때문에 여전히 0을 나타낸다.
제 2 출력 라인으로부터의 픽셀이 계산되면, 제 1 출력 라인에 의해 사용되지 않은 ID의 일부가 여전히 이용할 수 있지만, 일부는 제 1 출력 라인으로부터의 ID와 일치하는 SDRAM 블록 위치를 가질 것이다.
제 1 라인의 ID 값이 재사용되는 것으로 발견되는 곳에서, ID 리스트에 대한 변경은 그 ID가 여전히 순환중에 있기 때문에 행해지지 않는다. 그러나, 제 1 라인의 ID 값이 재사용되지 않는 것으로 발견되는 곳에서, 그 ID 값은 기록 포인터 위치에서 ID 리스트에 다시 기록되고, 기록 포인터는 증분된다. 이것은 순환 밖으로 ID를 가져와, 미래 사용을 위해 준비된 ID 리스트에 다시 넣는다.
따라서, 제 2 라인에서 재사용되지 않는 제 1 라인으로부터의 모든 ID 값은 ID 리스트에 다시 기록된다. 관련된 워프 또는 회전에 의존할지라도, ID 값은 종종 이들이 판독된 동일한 순서로 ID 리스트에 다시 기록된다. 이 프로세스는 어떤 사용되지 않는 ID가 증분하는 기록 포인터에 다시 기록될 때와 동시에 증분하는 판독 포인터로부터 판독되는 다음 이용 가능한 ID 값을 가진 ID 리스트로 각 후속 출력 라인에 대해 계속한다.
이것은 특정 ID가 아무리 종종 재사용되더라도 확실히 결코 중첩 기록되지 않게 하는데, 그 이유는 빈번히 재사용되는 ID는 ID 리스트에 다시 기록되지 않기 때문이다. 대신에, 더 이상 필요하지 않을 때까지 그것은 순환 시에 한 라인 지연에 남아 있으며, 이 시점에 그것은 ID 리스트에 다시 기록된다. 일부 워프의 경우에, ID 값은 상부에서 하부까지 모든 출력 라인에 대해 사용될 수 있다.
(이용 가능한 ID의) ID 리스트 플러스 한 라인 지연에서의 '순환시의' ID는, 조합될 때, 항상 중복 또는 누락이 없는 곳에 ID의 전체 리스트를 제공해야 한다. 이러한 리스트를 작성하여 유지하는데 이용되는 논리는, ID가 픽셀 수 N에서 재사용되었다면, 그러나, 이들중 어떤 것도 사전에 서로 다른 ID, 즉 ID 리스트로부터의 새로운 ID 또는 이전의 라인으로부터의 다른 ID를 필요로 하지 않을 경우에만, 그것이 또한 픽셀 N+1,N+2,N+3 등에 대해 재사용을 위해 확실히 이용 가능하게 한다.
예컨대, 픽셀의 제 1 라인이 다음의 ID를 사용한다고 가정한다:
라인 1: 0 0 0 0 1 1 1 1 2 2 2 ...
다음 라인은 이들을 다음과 같이 재사용하려고 시도하며, 여기서 '50'은 새로운 ID에 대한 요청이다:
라인 2 0 0 0 0 1 50 50 1 2 2 2 ...
ID #1은 새로운 ID 요청에 의해 '분할'되었음을 알 수 있다. 다음의 라인이 생성되면, 그것은 다음과 같을 수 있다:
라인 3 O O O O 50 50 50 50 2 2 2 ...
이 경우에, 라인 2에서의 ID # 1s의 양방은 ID 리스트에 다시 넣어, ID 리스트에서 중복을 형성하고, 최종 이미지에 손상을 유발시킬 것이다.
이것에 대한 솔루션은 이전의 라인에서 ID의 지속적인 재사용을 허용하는 것뿐이다. 상술한 것 대신에, 다음의 것이 생성한다:
라인 1 0 0 0 0 1 1 1 1 2 2 2 ...
라인 2 0 0 0 0 1 50 50 51 2 2 2 ...
라인 3 0 0 0 0 50 50 50 50 2 2 2 ...
ID '1'의 제 2 사용은 그 사용 시에 불연속성이 있으므로 방지되었다. 따라서, 그것이 재사용되지 않을 수 있으므로, 새로운 ID, 51가 대신 생성되고, 이것은 SDRAM으로부터의 동일한 픽셀 블록의 새로운 요청을 유발시킨다. 환언하면, 동일한 픽셀 블록이 IDs 1 및 51에 유지된다. 이러한 약간의 비효율성은 거의 발생하지 않아, ID 리스트 손상을 방지할 필요가 있다.
도 21은 이중 선형 보간을 나타낸 것이다. 이중 선형 보간은 정수가 아닌 소스 픽셀 위치(WX,WY)를 한 세트의 정수 소스 픽셀 위치 값 및 곱셈 값으로 설정하는데 이용된다. 이러한 아이디어는 주변 픽셀에 기초하여 픽셀 값 사이에 무엇을 보간하는 방법으로 잘 알려져 있다.
도 21의 입체원(solid circles)은 SDRAM 메모리에 제공되는 알려진 값을 가진 정수 픽셀 좌표를 나타낸다. 중공 원은 값이 주변의 정수 픽셀의 값의 가중 기여에 기초하여 결정되는 정수가 아닌 픽셀 위치(WX,WY)=(fx,fy)를 나타낸다. 간단한 잘 알려진 계산법은 이러한 정수가 아닌 픽셀 값을 생성하는데 이용될 수 있다:
따라서, (WX,WY)=(fx,fy)=(0.25,0.5)인 예시된 예에서, 정수가 아닌 픽셀의 값 D은 다음에 의해 찾을 수 있다:
이중 선형 보간을 수행하기 위해서는, 4개의 이웃한 픽셀이 동시에 액세스될 필요가 있다.
정수가 아닌 뒤틀린 좌표(WX,WY)는 이중 선형 보간을 이용하여 처리될 수 있음을 알게 될 것이다. 도 22는 이것이 픽셀 캐시를 이용하여 픽셀 블록 캐시를 동시에 판독될 수 있는 여러 부분으로 분할함으로써 달성될 수 있는 한 가능한 방식을 도시한 것이다. 도 22에 도시된 바와 같이, 데이터는 이웃한 픽셀이 4개의 서로 다른 캐시 영역(0,1,2,3) 중 하나에 저장되도록 픽셀 블록 캐시에 저장된다.
도 22에서, 4개의 서로 다른 4x4 픽셀 블록이 도시되며, 이들 블록의 각각은 16 픽셀을 포함한다. 4개의 서로 다른 메모리 영역은 픽셀을 저장하는데 이용되며, 픽셀에 표시된 수는 그것이 저장되는 영역을 나타낸다. 이러한 방식으로, 메모리 영역(0)은 짝수 WX 및 짝수 WY 좌표(예컨대, (O,O))로 매핑하고, 메모리 영역(1)은 짝수 WX 및 홀수 WY 좌표(예컨대, (1,O))로 매핑하고, 메모리 영역(2)은 짝수 WX 및 홀수 WY 좌표(예컨대, (O,1))로 매핑하고, 메모리 영역(3)은 홀수 WX 및 홀수 WY 좌표(예컨대, (1,1))로 매핑한다.
4x4 픽셀의 각 블록은 단 하나의 캐시 영역이 있는 것처럼 할당되는 것으로 할당된 동일한 ID 값을 갖는다. 그러나, 각각의 4x4 블록의 16 픽셀은 4개의 서로 다른 메모리 저장부(0,1,2,3)에 걸쳐 분산된다. 이것은 어떤 4개의 이웃한 픽셀로의 동시 액세스를 가능하게 하는데, 이의 하나는 각 메모리(0,1,2 및 3)일 것이다.
필요한 픽셀이 4개의 서로 다른 4x4 블록 및 ID 값을 스트래들(straddle)하는 도 22에 도시된 중심 4개의 픽셀일지라도, 동일한 4개의 메모리 영역은 여전히 상술한 이점을 제공하지만, 각각 4개의 중심 픽셀이 서로 다른 4x4 블록 및 캐시 위치에 있기 때문에 서로 다른 ID 값을 수신한다.
도 23은 데이터 처리 구조(2300)가 이러한 방식으로 이중 선형 보간을 허용하도록 적응될 수 있는 방법을 도시한다.
정수가 아닌 (WX, WY) 값은 변환기(2302)에 의해 이중 선형 보간을 수행하기 위해 필요한 4개의 이웃한 정수 좌표로 변환된다. 이들 정수 좌표의 각각은 정수 좌표 픽셀이 위치되는 픽셀 블록의 SDRAM 위치(뱅크, 행 및 열)를 식별하도록 변환된다.
이들 BRC 값은 비교기에 의해 4개의 BRC 값의 이전의 출력 픽셀의 세트 뿐만 아니라 출력 라인 위의 3개의 이웃한 픽셀에 대한 4개의 BRC 값의 세트에 대해 비교된다. 일치가 발견되면, 즉 그 BRC 값이 이미 요청되었다면, 대응하는 ID가 재사용된다. 일치가 발견되지 않으면, 즉, BRC가 요청되지 않았다면, 즉, 4개의 ID 리스트 중 하나는 필요한 다음 ID를 생성하고, SDRAM 요청은 이에 따라 이의 메모리로부터 픽셀의 관련 블록을 레치(retch)하도록 행해진다. 이중 선형 보간 회로의 4개의 필요한 픽셀이 4개의 블록 사이의 경계에 걸쳐 스트래들하는 경우에서와 같이, 각 ID 리스트는 최대 4개의 블록이 한 번에 액세스될 수 있도록 블록의 서로 다른 패턴에 할당된다.
4개의 ID 및 뒤틀린 (WX, WY) 좌표는 한 라인 지연(2306)에 공급된다. 이들 값은 후속 출력 라인을 처리할 때 비교를 위해 비교기로 피드백되어, 각각의 캐시 메모리 영역(0,1,2,3)으로부터 필요한 4개의 정수 좌표 픽셀을 검색하기 위해 캐시 판독 섹션으로 전달된다. 그 다음, 이중 선형 보간은 보간기(2308)에 의해 최종 보간된 단일 픽셀을 생성하도록 4개의 정수 픽셀 값을 이용하여 수행될 수 있다.
본 발명의 어떤 양태가 수개의 특정 예시적인 실시예를 참조로 설명되었지만, 당업자는 본 발명의 정신 및 범주 내에서 많은 변경이 행해질 수 있음을 인식할 것이다. 예컨대, 여러 회로, 메모리 및 관련된 구성 요소는 다양한 서로 다른 접근법과 관련하여 구현될 수 있고, 이들 접근법은 컴퓨터, 프로그램 가능한 회로, 컴퓨터가 실행 시에 여러 단계를 실행하도록 하는 명령어를 포함하는 프로세서 판독 가능한 매체 및 다른 것 중 하나 이상을 포함할 수 있다. 본 발명의 양태들은 다음의 청구범위에서 설명된다.
Claims (17)
- 소스 이미지의 뒤틀린 버전을 표시하는 장치에 있어서,
상기 소스 이미지를 상기 소스 이미지로부터의 픽셀의 다수의 행으로 분할하도록 배치되는 라인 메모리;
상기 픽셀의 행을 픽셀 블록에 조합하도록 배치되는 블록 저장 제어부로서, 각 픽셀 블록은 상기 소스 이미지로부터의 이웃한 수평 및 수직 픽셀을 포함하고, 각 픽셀 블록은 메모리 내의 순차적 메모리 위치에 저장되는 상기 블록 저장 제어부;
디스플레이 상의 출력 픽셀 위치에 대응하는 출력 좌표(OX,OY)를 생성하도록 배치되는 출력 좌표 생성기;
상기 출력 좌표(OX,OY)를 뒤틀린 좌표(WX,WY)에 매핑하도록 배치되는 워프 엔진으로서, 상기 뒤틀린 좌표는 상기 소스 이미지의 픽셀 위치에 대응하는 상기 워프 엔진;
상기 뒤틀린 좌표(WX,WY)를 가진 픽셀을 포함하는 픽셀 블록이 저장되는 메모리 위치를 식별하도록 배치되는 블록 요청 변환기;
상기 식별된 픽셀 블록을 요청하도록 배치되는 블록 요청 생성기;
상기 메모리로부터 상기 요청된 픽셀 블록을 검색하도록 배치되는 메모리 제어기; 및
상기 대응하는 출력 픽셀 위치(OX,OY)에 표시하기 위해 상기 뒤틀린 좌표(WX,WY)를 가진 상기 픽셀의 값을 출력하도록 배치되는 표시 제어기를 포함하는 것을 특징으로 하는 소스 이미지의 뒤틀린 버전을 표시하는 장치. - 청구항 1에 있어서,
상기 메모리는 SDRAM을 포함하고, 각 픽셀 블록은 상기 SDRAM에 순차적 열에 걸쳐 저장되며, 상기 블록 요청 변환기는 상기 필요한 픽셀 블록이 저장되는 뱅크, 행 및 열 주소를 식별하도록 배치되는 것을 특징으로 하는 소스 이미지의 뒤틀린 버전을 표시하는 장치. - 청구항 2에 있어서,
상기 소스 이미지의 이웃한 픽셀 블록은 함께 더 큰 픽셀 블록으로 그룹화되고, 각각의 더 큰 픽셀 블록은 동일한 SDRAM 행에 저장되는 것을 특징으로 하는 소스 이미지의 뒤틀린 버전을 표시하는 장치. - 청구항 1 내지 3 중 어느 한 항에 있어서,
수직 오프셋 생성기 엔진을 더 포함하는데, 상기 수직 오프셋 생성기 엔진은,
상기 출력 좌표 생성기에 의해 생성되는 출력 좌표(OX,OY)를 수신하여, 각 오프셋 출력 좌표가 넌오프셋 출력 좌표(OX,OY)로부터 수직으로 오프셋하는 다수의 오프셋 출력 좌표((OX,OY+1),(OX,OY+2)...)를 생성하며,
상기 출력 좌표((OX,OY),(OX,OY+1),(OX,OY+2)...)를 상기 워프 엔진에 제공하도록 배치되는 것을 특징으로 하는 소스 이미지의 뒤틀린 버전을 표시하는 장치. - 청구항 1 내지 4 중 어느 한 항에 있어서,
다수의 뒤틀린 좌표(WX,WY) 엔트리를 저장하도록 배치되는 시프트 레지스터 배치로서, 각 뒤틀린 좌표 엔트리는 각각의 데이터 값(D)에 대한 필드를 가지는 상기 시프트 레지스터 배치; 및
상기 시프트 레지스터 배치 내의 상기 뒤틀린 좌표를 어떤 검색된 픽셀 블록의 상기 픽셀의 뒤틀린 좌표와 비교하여, 긍정적인 비교 시에, 일치되는 뒤틀린 픽셀의 데이터 값(D)에 대한 상기 필드를 채우도록 배치되는 파퓰레이터를 더 포함하는 것을 특징으로 하는 소스 이미지의 뒤틀린 버전을 표시하는 장치. - 청구항 1 내지 5 중 어느 한 항에 있어서,
상기 블록 요청 변환기로부터 식별된 메모리 위치를 수신하여, 상기 식별된 메모리 위치로부터 내부 픽셀 블록 IDs을 생성하도록 배치되는 ID 생성기;
상기 ID 생성기로부터 상기 픽셀 블록 IDs를 수신 및 지연하도록 배치되는 ID 지연 라인; 및
상기 지연 라인으로부터 상기 픽셀 블록 IDs을 수신하여, 캐시로부터 일치하는 픽셀 블록 IDs을 가진 픽셀 블록을 검색하도록 배치되는 룩업 엔진을 더 포함하는 것을 특징으로 하는 소스 이미지의 뒤틀린 버전을 표시하는 장치. - 청구항 6에 있어서,
사용 중에 있지 않은 픽셀 블록 IDs의 리스트를 저장하도록 배치되는 ID 리스트, 사용될 수 있는 다음 이용 가능한 블록 ID 값을 나타내도록 배치되는 판독 포인터 및 재순환된 블록 ID를 나타내도록 배치되는 기록 포인터를 더 포함하는 것을 특징으로 하는 소스 이미지의 뒤틀린 버전을 표시하는 장치. - 청구항 6 또는 7에 있어서,
상기 블록 요청 변환기로부터 식별된 메모리 위치를 수신하여, 상기 식별된 메모리 위치를 최근에 식별된 블록의 메모리 위치와 비교하고, 일치가 발견되면, 상기 일치하는 메모리 위치를 가진 상기 픽셀 블록의 상기 블록 ID를 재사용하며, 일치가 발견되지 않으면, 상기 식별된 픽셀 블록에 대한 새로운 블록 ID를 사용하도록 배치되는 블록 ID 비교기를 더 포함하는 것을 특징으로 하는 소스 이미지의 뒤틀린 버전을 표시하는 장치. - 청구항 1 내지 8 중 어느 한 항에 있어서,
최근 픽셀 블록 검색 요청을 저장하도록 배치되는 블록 요청 캐시를 더 포함함으로써, 상기 메모리 제어기는 상기 메모리로부터 요청되었거나 검색되었을 경우에 요청된 픽셀 블록을 검색하지 않도록 배치되는 것을 특징으로 하는 소스 이미지의 뒤틀린 버전을 표시하는 장치. - 청구항 1 내지 9 중 어느 한 항에 있어서,
상기 메모리 제어기는 검색된 픽셀 블록을 캐시 내에 저장하도록 배치되는 것을 특징으로 하는 소스 이미지의 뒤틀린 버전을 표시하는 장치. - 청구항 10에 있어서,
상기 메모리 제어기는 상기 픽셀 블록내의 이웃한 픽셀을 상기 캐시의 서로 다른 영역 내에 저장하도록 배치되는 것을 특징으로 하는 소스 이미지의 뒤틀린 버전을 표시하는 장치. - 청구항 10 또는 11에 있어서,
상기 캐시는 콘텐츠 주소 지정 가능 메모리를 포함하는 것을 특징으로 하는 소스 이미지의 뒤틀린 버전을 표시하는 장치. - 청구항 1 내지 12 중 어느 한 항에 있어서,
상기 출력 좌표 생성기는 출력 픽셀 주파수에서 상기 출력 좌표를 생성하도록 배치되는 동기 펄스 생성기를 포함하는 것을 특징으로 하는 소스 이미지의 뒤틀린 버전을 표시하는 장치. - 청구항 1 내지 13 중 어느 한 항에 있어서,
상기 워프 엔진이 상기 출력 좌표(OX,OY)를 정수가 아닌 뒤틀린 좌표(WX,WY)에 매핑할 때 이중 선형 보간을 수행하도록 배치되는 보간기를 포함하는데,
상기 블록 요청 변환기는 상기 정수가 아닌 뒤틀린 픽셀 좌표(WX,WY)에 기여하고, 기여하는 픽셀을 포함하는 상기 픽셀 블록이 저장되는 상기 메모리 위치를 식별하는 상기 소스 이미지의 픽셀의 상기 뒤틀린 좌표(WX,WY)를 식별하도록 배치되고;
상기 블록 요청 생성기는 상기 식별된 픽셀 블록을 요청하도록 배치되며;
상기 메모리 제어기는 상기 메모리로부터 상기 요청된 픽셀 블록을 검색하도록 배치되며;
상기 보간기는 상기 정수가 아닌 뒤틀린 좌표(WX,WY)에 대응하는 상기 출력 픽셀(OX,OY)의 보간된 출력값을 결정하도록 배치되며; 및
상기 표시 제어기는 상기 대응하는 출력 픽셀 위치(OX,OY)에 표시하기 위한 상기 보간된 값을 출력하도록 배치되는 것을 특징으로 하는 소스 이미지의 뒤틀린 버전을 표시하는 장치. - 소스 이미지의 뒤틀린 버전을 표시하는 방법에 있어서,
상기 소스 이미지를 상기 소스 이미지로부터의 픽셀의 다수의 행으로 분할하는 단계;
상기 픽셀의 행을 픽셀 블록에 조합하는 단계로서, 각 픽셀 블록은 상기 소스 이미지로부터의 이웃한 수평 및 수직 픽셀을 포함하고, 각 픽셀 블록을 메모리 내의 순차적 메모리 위치에 저장하는 상기 조합하는 단계;
디스플레이 상에 출력 픽셀 위치에 대응하는 출력 좌표(OX,OY)를 생성하는 단계;
상기 출력 좌표(OX,OY)를 뒤틀린 좌표(WX,WY)에 매핑하는 단계로서, 상기 뒤틀린 좌표는 상기 소스 이미지의 픽셀 위치에 대응하는 상기 매핑하는 단계;
상기 뒤틀린 좌표(WX,WY)를 가진 픽셀을 포함하는 픽셀 블록이 저장되는 메모리 위치를 식별하는 단계;
상기 식별된 픽셀 블록을 요청하는 단계;
상기 메모리로부터 상기 요청된 픽셀 블록을 검색하는 단계; 및
상기 대응하는 출력 픽셀 위치(OX,OY)에 표시하기 위해 상기 뒤틀린 좌표(WX,WY)를 가진 상기 픽셀의 값을 출력하는 단계를 포함하는 것을 특징으로 하는 소스 이미지의 뒤틀린 버전을 표시하는 방법. - 실행될 때, 데이터 처리 장치가 어느 전술한 청구항에 따른 방법을 수행하도록 하는 명령어를 포함하는 컴퓨터 프로그램, 상기 컴퓨터 프로그램 또는 상기 컴퓨터 프로그램을 반송하는 신호를 포함하는 컴퓨터 판독 가능한 매체.
- 실질적으로 도 3,4,7,9 내지 20,22 및 23과 관련하여 설명된 바와 같은 장치 또는 방법.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0911045.3 | 2009-06-25 | ||
GB0911045A GB2470611B (en) | 2009-06-25 | 2009-06-25 | Apparatus and method for processing data |
US12/604,700 US8482573B2 (en) | 2009-06-25 | 2009-10-23 | Apparatus and method for processing data |
US12/604,700 | 2009-10-23 | ||
PCT/GB2010/001089 WO2010149946A1 (en) | 2009-06-25 | 2010-06-04 | Apparatus and method for displaying a warped version of a source image |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120049851A true KR20120049851A (ko) | 2012-05-17 |
KR101386767B1 KR101386767B1 (ko) | 2014-04-21 |
Family
ID=41008279
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020117029902A KR101386767B1 (ko) | 2009-06-25 | 2010-06-04 | 소스 이미지의 뒤틀린 버전을 표시하는 장치 및 방법 |
Country Status (9)
Country | Link |
---|---|
US (1) | US8482573B2 (ko) |
EP (1) | EP2446413B1 (ko) |
JP (1) | JP5663009B2 (ko) |
KR (1) | KR101386767B1 (ko) |
CN (1) | CN102460503B (ko) |
GB (1) | GB2470611B (ko) |
HK (1) | HK1145559A1 (ko) |
TW (1) | TWI430655B (ko) |
WO (1) | WO2010149946A1 (ko) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8675994B1 (en) * | 2010-06-17 | 2014-03-18 | Ambarella, Inc. | High performance warp correction in two-dimensional images |
KR20120066305A (ko) * | 2010-12-14 | 2012-06-22 | 한국전자통신연구원 | 비디오 움직임 예측 및 보상용 캐싱 장치 및 방법 |
US8990518B2 (en) | 2011-08-04 | 2015-03-24 | Arm Limited | Methods of and apparatus for storing data in memory in data processing systems |
US9116790B2 (en) * | 2011-08-04 | 2015-08-25 | Arm Limited | Methods of and apparatus for storing data in memory in data processing systems |
US9071771B1 (en) * | 2012-07-10 | 2015-06-30 | Rawles Llc | Raster reordering in laser projection systems |
CN102810294A (zh) * | 2012-08-01 | 2012-12-05 | 京东方科技集团股份有限公司 | 一种显示方法、装置及*** |
CN103135096A (zh) * | 2013-01-11 | 2013-06-05 | 北京理工大学 | 一种合成孔径雷达成像处理转置存储方法和数据访问方法 |
CN104008559A (zh) * | 2013-02-27 | 2014-08-27 | 腾讯科技(深圳)有限公司 | 图像处理方法及装置 |
US20150220300A1 (en) | 2014-02-03 | 2015-08-06 | Tv One Limited | Systems and methods for configuring a video wall |
JP6427961B2 (ja) * | 2014-05-30 | 2018-11-28 | セイコーエプソン株式会社 | 画像処理装置、表示装置、画像処理方法およびプログラム |
JP2016134005A (ja) * | 2015-01-20 | 2016-07-25 | オリンパス株式会社 | 画像処理装置 |
US9811932B2 (en) | 2015-04-17 | 2017-11-07 | Nxp Usa, Inc. | Display controller, heads-up image display system and method thereof |
US9990690B2 (en) * | 2015-09-21 | 2018-06-05 | Qualcomm Incorporated | Efficient display processing with pre-fetching |
US10037190B2 (en) | 2016-03-24 | 2018-07-31 | International Business Machines Corporation | Transformation on input operands to reduce hardware overhead for implementing addition |
JP6902843B2 (ja) * | 2016-10-07 | 2021-07-14 | キヤノン株式会社 | 画像処理装置および制御方法 |
KR102509091B1 (ko) | 2016-11-24 | 2023-03-13 | 한화테크윈 주식회사 | 영상 보정 장치 및 방법 |
WO2018142159A1 (en) | 2017-02-03 | 2018-08-09 | Tv One Limited | Method of video transmission and display |
US10249023B2 (en) * | 2017-04-27 | 2019-04-02 | Apple Inc. | Patch warper circuit for image processing |
WO2019061475A1 (en) * | 2017-09-30 | 2019-04-04 | SZ DJI Technology Co., Ltd. | IMAGE PROCESSING |
US11308681B1 (en) * | 2018-11-02 | 2022-04-19 | Facebook Technologies, Llc. | Display engine for post-rendering processing |
US11023152B2 (en) | 2019-07-12 | 2021-06-01 | Arm Limited | Methods and apparatus for storing data in memory in data processing systems |
CN110458163B (zh) * | 2019-08-06 | 2022-04-22 | 南京地平线机器人技术有限公司 | 处理图像的多个感兴趣区域数据的装置和方法 |
US11508031B2 (en) | 2020-12-16 | 2022-11-22 | Samsung Electronics Co., Ltd. | Warping data |
CN114845091B (zh) * | 2021-02-01 | 2023-11-10 | 扬智科技股份有限公司 | 投影装置与其梯形校正方法 |
CN112862725B (zh) * | 2021-03-12 | 2023-10-27 | 上海壁仞智能科技有限公司 | 用于计算的方法、计算设备和计算机可读存储介质 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS59108370U (ja) * | 1983-01-12 | 1984-07-21 | 富士ゼロックス株式会社 | 画像デ−タの縦横変換装置 |
JPS6271990A (ja) * | 1985-09-26 | 1987-04-02 | 三菱電機株式会社 | 画像情報記憶方法 |
JPH07210666A (ja) * | 1994-01-21 | 1995-08-11 | Kyocera Corp | 画像形成装置 |
US5548709A (en) * | 1994-03-07 | 1996-08-20 | Silicon Graphics, Inc. | Apparatus and method for integrating texture memory and interpolation logic in a computer system |
GB9501832D0 (en) * | 1995-01-31 | 1995-03-22 | Videologic Ltd | Texturing and shading of 3-d images |
GB2305052B (en) * | 1995-09-08 | 2000-04-05 | Quantel Ltd | An image processing system |
JP3104868B2 (ja) * | 1997-11-25 | 2000-10-30 | 富士ゼロックス株式会社 | 画像処理装置 |
US7911483B1 (en) * | 1998-11-09 | 2011-03-22 | Broadcom Corporation | Graphics display system with window soft horizontal scrolling mechanism |
US7050063B1 (en) * | 1999-02-11 | 2006-05-23 | Intel Corporation | 3-D rendering texture caching scheme |
US6577776B1 (en) * | 1999-02-24 | 2003-06-10 | Media 100, Inc. | Transforming video images |
US6717577B1 (en) * | 1999-10-28 | 2004-04-06 | Nintendo Co., Ltd. | Vertex cache for 3D computer graphics |
US6873329B2 (en) * | 2002-07-05 | 2005-03-29 | Spatial Data Technologies, Inc. | System and method for caching and rendering images |
US7196687B2 (en) * | 2002-11-05 | 2007-03-27 | 3M Innovative Properties Company | Swept illumination to reduce LCD lag in front and rear projection displays |
JP4381778B2 (ja) * | 2003-11-17 | 2009-12-09 | パナソニック株式会社 | テクスチャ処理装置 |
-
2009
- 2009-06-25 GB GB0911045A patent/GB2470611B/en active Active
- 2009-10-23 US US12/604,700 patent/US8482573B2/en active Active
-
2010
- 2010-06-04 CN CN201080028663.4A patent/CN102460503B/zh not_active Expired - Fee Related
- 2010-06-04 EP EP10727786.5A patent/EP2446413B1/en active Active
- 2010-06-04 JP JP2012516837A patent/JP5663009B2/ja not_active Expired - Fee Related
- 2010-06-04 WO PCT/GB2010/001089 patent/WO2010149946A1/en active Application Filing
- 2010-06-04 KR KR1020117029902A patent/KR101386767B1/ko active IP Right Grant
- 2010-06-08 TW TW099118609A patent/TWI430655B/zh not_active IP Right Cessation
- 2010-12-15 HK HK10111681.9A patent/HK1145559A1/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
HK1145559A1 (en) | 2011-04-21 |
GB0911045D0 (en) | 2009-08-12 |
TWI430655B (zh) | 2014-03-11 |
CN102460503A (zh) | 2012-05-16 |
EP2446413A1 (en) | 2012-05-02 |
JP5663009B2 (ja) | 2015-02-04 |
GB2470611A (en) | 2010-12-01 |
CN102460503B (zh) | 2015-04-29 |
JP2012530953A (ja) | 2012-12-06 |
GB2470611B (en) | 2011-06-29 |
WO2010149946A1 (en) | 2010-12-29 |
TW201119369A (en) | 2011-06-01 |
US8482573B2 (en) | 2013-07-09 |
KR101386767B1 (ko) | 2014-04-21 |
US20100328329A1 (en) | 2010-12-30 |
EP2446413B1 (en) | 2015-08-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101386767B1 (ko) | 소스 이미지의 뒤틀린 버전을 표시하는 장치 및 방법 | |
US7580042B2 (en) | Systems and methods for storing and fetching texture data using bank interleaving | |
US6266733B1 (en) | Two-level mini-block storage system for volume data sets | |
KR20170103649A (ko) | 버퍼를 이용하여 텍스처 데이터에 액세스하는 방법 및 장치 | |
JP4545242B2 (ja) | ノンブロッキング・パイプライン・キャッシュ | |
CN108492243B (zh) | 一种基于块处理的图像旋转装置、***和方法 | |
US11593913B2 (en) | Method and system for correcting a distorted input image | |
WO1999053402A1 (en) | Non-stalled requesting texture cache system and method | |
US7348988B2 (en) | Texture cache control using an adaptive missing data table in a multiple cache computer graphics environment | |
JP2000357240A (ja) | ボリュームレンダリング装置、ボリュームグラフィック集積回路及びボリュームレンダリング集積回路 | |
US7069387B2 (en) | Optimized cache structure for multi-texturing | |
US6933945B2 (en) | Design for a non-blocking cache for texture mapping | |
US6462747B1 (en) | Texture mapping system | |
US7397477B2 (en) | Memory system having multiple address allocation formats and method for use thereof | |
US8762686B2 (en) | Multimode accessible storage facility | |
US10284743B2 (en) | Image processing apparatus and method for controlling the same | |
US7360020B2 (en) | Method for improving cache-miss performance | |
EP1195719A2 (en) | Rendering memory in a volume rendering system | |
Fahmy | Generalised parallel bilinear interpolation architecture for vision systems | |
US6573902B1 (en) | Apparatus and method for cache memory connection of texture mapping | |
JP4465844B2 (ja) | 画像処理装置および方法、並びに記録媒体 | |
JP4465570B2 (ja) | 画像処理装置および方法、並びに記録媒体 | |
JP4465843B2 (ja) | 画像処理装置および方法、並びに記録媒体 | |
JPH06324935A (ja) | アドレス発生器およびアドレス発生システム | |
JP2001022950A (ja) | ボリュームレンダリンググラフィックボード |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20170331 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20180329 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20190328 Year of fee payment: 6 |