KR101490556B1 - 인라인 이미지 회전 - Google Patents
인라인 이미지 회전 Download PDFInfo
- Publication number
- KR101490556B1 KR101490556B1 KR20120109286A KR20120109286A KR101490556B1 KR 101490556 B1 KR101490556 B1 KR 101490556B1 KR 20120109286 A KR20120109286 A KR 20120109286A KR 20120109286 A KR20120109286 A KR 20120109286A KR 101490556 B1 KR101490556 B1 KR 101490556B1
- Authority
- KR
- South Korea
- Prior art keywords
- pixels
- tile
- original image
- tile buffer
- image
- Prior art date
Links
- 239000000872 buffer Substances 0.000 claims abstract description 140
- 238000000034 method Methods 0.000 claims abstract description 36
- 230000015654 memory Effects 0.000 claims description 36
- 230000004044 response Effects 0.000 claims description 4
- 230000011218 segmentation Effects 0.000 claims description 3
- 238000000638 solvent extraction Methods 0.000 claims description 2
- 238000013519 translation Methods 0.000 claims description 2
- 230000014616 translation Effects 0.000 claims description 2
- 230000036316 preload Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 16
- 238000012545 processing Methods 0.000 description 13
- 230000002093 peripheral effect Effects 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 239000013078 crystal Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 239000012464 large buffer Substances 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 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
- G06T3/606—Rotation of whole images or parts thereof by memory addressing or mapping
-
- 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
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/37—Details of the operation on graphic patterns
- G09G5/373—Details of the operation on graphic patterns for modifying the size of the graphic pattern
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/39—Control of the bit-mapped memory
- G09G5/393—Arrangements for updating the contents of the bit-mapped memory
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2340/00—Aspects of display data processing
- G09G2340/04—Changes in size, position or resolution of an image
- G09G2340/0492—Change of orientation of the displayed image, e.g. upside-down, mirrored
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/12—Frame memory handling
- G09G2360/122—Tiling
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Image Processing (AREA)
- Editing Of Facsimile Originals (AREA)
Abstract
이미지의 인라인 회전을 수행하기 위한 방법 및 장치가 개시된다. 장치는 수행될 지정된 회전에 기초하는 순서로 원본 이미지들로부터 화소들을 판독하기 위한 회전 유닛을 포함한다. 원본 이미지는 다수의 타일로 구획화되고, 타일들은 그들이 회전된 이미지 내에서 어디에 위치될 것인지에 기초하여 처리되고, 각각의 타일은 타일 버퍼에 저장된다. 타일 버퍼 내의 목표 화소 어드레스들이 계산되어 룩업 테이블에 저장되고, 화소들이 회전 유닛에 의해 원본 이미지로부터 검색될 때, 화소들을 대응하는 타일 버퍼 내의 어디에 기입할지를 결정하기 위해 룩업 테이블이 판독된다.
Description
본 발명은 일반적으로 그래픽 처리 정보에 관한 것으로, 보다 구체적으로는 이미지를 회전하기 위한 방법 및 메커니즘에 관한 것이다.
컴퓨팅 디바이스들, 특히 모바일 디바이스들은 종종 제한된 메모리 자원, 및 배터리와 같은 유한한 전력을 갖는다. 디스플레이를 구비하는 컴퓨팅 디바이스는 통상적으로 비디오 및 이미지를 조작하고 디스플레이하기 위해 상이한 유형의 그래픽 하드웨어를 포함한다. 그래픽 하드웨어는 디스플레이용으로 의도된 이미지를 생성하고 처리하기 위해 다수의 상이한 유형의 동작을 수행할 수 있다. 그래픽 하드웨어에 의해 수행되는 하나의 흔한 동작은 이미지 회전이다. 전형적으로, 이미지를 회전시키기 위해, 대용량 버퍼가 이용된다. 그러나, 이들 버퍼들은 많은 양의 실리콘 영역을 요구하고 추가 전력을 소비할 수 있어서, 그래픽 하드웨어의 비용을 증가시키고 모바일 디바이스의 배터리 수명을 감소시킨다.
이미지를 회전시키기 위한 시스템 및 방법이 고려된다.
다양한 실시예들에서, 회전된 이미지를 생성하기 위해 원본 이미지의 인라인 회전(inline rotation)을 수행할 수 있는 장치가 고려된다. 장치는 멀티스테이지 그래픽 처리 파이프라인의 일부분일 수 있다. 장치는 메모리로부터 원본 이미지 화소들을 페치하기 위한 페치 유닛을 포함할 수 있고, 메모리 내에 저장된 원본 이미지 내의 화소들의 어드레스들을 생성하도록 구성될 수 있다. 페치 유닛은 원본 이미지에 대해 수행되는 회전의 유형에 기초하는 순서로 화소 어드레스들을 더 생성할 수 있다. 원본 이미지는 복수의 타일로 구획화(partition)될 수 있고, 구획화는 수행되는 회전에 기초할 수 있다. 화소들은 원본 이미지로부터 타일별로(tile-by-tile basis) 페치될 수 있다.
장치는 검색된 화소들을 저장하기 위한 하나 이상의 타일 버퍼도 포함할 수 있다. 화소들은 타일 버퍼(들) 내의 목표 위치들에 저장될 수 있고, 목표 위치들은 수행되는 회전에 기초할 수 있다. 일 실시예에서, 각각의 타일 버퍼는 이미지의 주어진 회전 타일로부터의 데이터의 일부분을 저장하기 위한, 복수의 분리된 개별 랜덤 액세스 메모리(RAM)를 포함할 수 있다. 다양한 실시예들에서, 타일 버퍼(들) 내의 화소들은 그래픽 처리 파이프라인 내의 후속 스테이지에 의해 판독되고 처리될 수 있다.
본 기술분야의 통상의 지식을 가진 자들은 여기에 제시되는 접근법들에 대한 이하의 상세한 설명을 고려하여, 이러한 특징들과 이점들, 및 다른 특징들과 이점들을 분명히 알게 될 것이다.
방법들 및 메커니즘들에 대한 상기의 이점들 및 다른 이점들은 이하의 설명을 첨부 도면들과 함께 참조함으로써 더 잘 이해될 수 있다.
도 1은 회전 유닛의 일 실시예를 도시하는 블록도.
도 2는 하나 이상의 실시예에 따른 룩업 테이블을 도시한 도면.
도 3은 회전 타일 버퍼의 일 실시예를 도시하는 블록도.
도 4는 하나 이상의 실시예에 따른 3개의 구획화된 이미지를 도시한 도면.
도 5는 구획화된 원본 이미지와 4개의 타일 버퍼 간의 대응의 일 실시예의 블록도.
도 6은 구획화된 회전된 이미지의 일부분과 4개의 타일 버퍼의 일 실시예의 블록도.
도 7은 타일 버퍼의 일 실시예의 블록도.
도 8은 수행될 수 있는 다양한 유형의 회전의 블록도들의 그룹.
도 9은 인라인 방식으로 화소들을 회전시키기 위한 방법의 일 실시예를 도시하는 일반화된 흐름도.
도 10은 이미지의 인라인 회전을 수행하기 위한 방법의 일 실시예를 도시하는 일반화된 흐름도.
도 11은 시스템의 일 실시예의 블록도.
도 12는 컴퓨터 판독가능 매체의 일 실시예의 블록도.
도 1은 회전 유닛의 일 실시예를 도시하는 블록도.
도 2는 하나 이상의 실시예에 따른 룩업 테이블을 도시한 도면.
도 3은 회전 타일 버퍼의 일 실시예를 도시하는 블록도.
도 4는 하나 이상의 실시예에 따른 3개의 구획화된 이미지를 도시한 도면.
도 5는 구획화된 원본 이미지와 4개의 타일 버퍼 간의 대응의 일 실시예의 블록도.
도 6은 구획화된 회전된 이미지의 일부분과 4개의 타일 버퍼의 일 실시예의 블록도.
도 7은 타일 버퍼의 일 실시예의 블록도.
도 8은 수행될 수 있는 다양한 유형의 회전의 블록도들의 그룹.
도 9은 인라인 방식으로 화소들을 회전시키기 위한 방법의 일 실시예를 도시하는 일반화된 흐름도.
도 10은 이미지의 인라인 회전을 수행하기 위한 방법의 일 실시예를 도시하는 일반화된 흐름도.
도 11은 시스템의 일 실시예의 블록도.
도 12는 컴퓨터 판독가능 매체의 일 실시예의 블록도.
이하의 설명에서, 여기에 제공되는 방법들 및 메커니즘들의 완전한 이해를 제공하기 위해 다수의 구체적인 상세가 제시된다. 그러나, 본 기술분야의 통상의 지식을 가진 자는 다양한 실시예들이 이러한 구체적인 상세 없이도 실시될 수 있음을 인식할 것이다. 일부 경우들에서, 여기에 설명되는 접근법들을 모호하게 하지 않기 위해, 잘 알려진 구조, 컴포넌트, 신호, 컴퓨터 프로그램 명령어 및 기법은 상세하게 보여지지 않는다. 설명의 간단함과 명료함을 위하여, 도면들에 도시된 요소들이 반드시 비례에 맞춰서 그려지지는 않았다. 예를 들어, 요소들 중 일부의 치수들은 다른 요소들에 비하여 과장될 수 있다.
본 명세서는 "일 실시예"에 대한 언급을 포함한다. 상이한 맥락들에서의 문구 "일 실시예"의 출현이 반드시 동일한 실시예를 지칭하는 것은 아니다. 특정한 특징, 구조 또는 특성은 본 명세서와 일관되는 임의의 적절한 방식으로 결합될 수 있다. 또한, 본 출원 전체에서 이용될 때, "~수 있다(may)"는 용어는 필수적이라는 의미(mandatory sense)(즉, 반드시 그러해야 함을 의미함)가 아니라, 허용적인 의미(permissive sense)(즉, ~일 가능성을 가짐을 의미함)로 이용된 것이다. 마찬가지로, "포함한다(include, including, includes)"는 용어는 그에 제한된다는 것이 아니라 포함한다는 것을 의미한다.
용어. 이하의 단락들은 본 명세서(첨부된 청구항들을 포함함)에서 발견되는 용어들에 대한 정의 및/또는 맥락을 제공한다:
"포함하는(comprising)". 이 용어는 제한이 없는 것이다(open-ended). 첨부된 청구항들에서 이용될 때, 이 용어는 추가의 구조 또는 단계들을 배제하지 않는다. "... 페치 유닛을 포함하는 프로세서(processor comprising a fetch unit ...)"라고 기재한 청구항을 고찰해보자. 그러한 청구항은 장치가 추가의 컴포넌트들(예를 들어, 프로세서, 캐시, 메모리 제어기)을 포함하는 것을 배제하지 않는다.
"~하도록 구성되는(configured to)". 다양한 유닛, 회로 또는 기타 컴포넌트들이 태스크 또는 태스크들을 수행"하도록 구성되는(configured to)" 것으로서 기술되거나 청구될 수 있다. 그러한 맥락들에서, "~하도록 구성된다"는 것은 유닛들/회로들/컴포넌트들이 동작 동안 태스크 또는 태스크들을 수행하는 구조(예를 들어, 회로망)를 포함한다는 것을 나타냄으로써 구조를 암시하기 위해 이용된다. 그러한 것으로서, 유닛/회로/컴포넌트는 그 명시된 유닛/회로/컴포넌트가 현재 작동 중이지 않더라도(예를 들어 켜져 있지 않더라도) 태스크를 수행하도록 구성된다고 말해질 수 있다. "~하도록 구성된"이라는 표현과 함께 이용되는 유닛들/회로들/컴포넌트들은 하드웨어, 예를 들어 회로들, 동작을 구현하기 위해 실행가능한 프로그램 명령어들을 저장하는 메모리 등을 포함한다. 유닛/회로/컴포넌트가 하나 이상의 태스크를 수행"하도록 구성된다"는 기재는 그 유닛/회로/컴포넌트에 대하여 35 U.S.C. §112의 6항의 해석을 적용하지 않도록 명시적으로 의도된 것이다. 추가로, "~하도록 구성된"은 거론 중인 태스크(들)를 수행할 수 있는 방식으로 동작하도록 소프트웨어 및/또는 펌웨어(예를 들어, 소프트웨어를 실행하는 범용 프로세서 또는 FPGA)에 의해 조작되는 포괄적인 구조(예를 들어, 포괄적인 회로망)를 포함할 수 있다. "~하도록 구성된"은 하나 이상의 태스크를 구현하거나 수행하도록 적응되는 디바이스들(예를 들어, 집적 회로들)을 제조하도록 제조 공정(예를 들어, 반도체 제조 설비)을 적응시키는 것도 포함할 수 있다.
"제1", "제2" 등. 여기에서 이용될 때, 이 용어들은 그들 뒤에 오는 명사에 대한 라벨로서 이용되며, 그와 같이 명시적으로 정의되지 않는 한은 어떠한 유형의 순서(예를 들어, 공간적, 시간적, 논리적)도 암시하지 않는다. 예를 들어, 4개의 타일 버퍼를 갖는 회전 유닛에서, 용어 "제1" 및 "제2" 타일 버퍼는 4개의 타일 버퍼 중 임의의 2개를 지칭하기 위해 이용될 수 있다.
"~에 기초하는". 여기에서 이용될 때, 이 용어는 결정에 영향을 주는 하나 이상의 인자를 기술하기 위해 이용된다. 이 용어는 결정에 영향을 줄 수 있는 추가 인자들을 배제하지 않는다. 즉, 결정은 오직 그러한 인자들에만 기초할 수도 있고, 다르게는 그러한 인자들에 적어도 부분적으로 기초할 수도 있다. "B에 기초하여 A를 결정한다"는 문구를 고찰해보자. B가 A의 결정에 영향을 주는 인자일 수 있긴 하지만, 그러한 문구는 A의 결정이 C에도 기초하는 것을 배제하지 않는다. 다른 경우들에서, A는 오직 B에만 기초하여 결정될 수 있다.
이제 도 1을 참조하면, 회전 유닛의 일 실시예를 도시하는 블록도가 도시되어 있다. 다양한 실시예들에서, 회전 유닛(10)은 SoC(system on chip) 내의 그래픽 처리 파이프라인 내에 포함될 수 있다. 일 실시예에서, 그래픽 처리 파이프라인은 별개의 프로세서 칩 또는 코프로세서일 수 있다. 일부 실시예들에서, 그래픽 처리 파이프라인은 그래픽 데이터를 디스플레이 제어기 또는 디스플레이 디바이스에 전달할 수 있다. 다른 실시예들에서, 그래픽 처리 파이프라인은 그래픽 데이터를, 디스플레이 디바이스에 의한 추후의 소비 또는 추가의 처리를 위해 메모리 내의 저장 위치에 전달할 수 있다. 다른 실시예들에서, 회전 유닛(10)은 집적 회로(IC), 애플리케이션 특정 집적 회로(ASIC), 장치, 또는 다양한 다른 유사한 디바이스들 중 임의의 것 내에 포함될 수 있다.
원본 이미지(15)는 스틸 이미지 또는 비디오 스트림의 프레임일 수 있다. 원본 이미지(15)는 화소로서 알려져 있는 많은 수의 이산 픽처 요소(picture elements)에 의해 표현될 수 있다. 디지털 이미징에서, 이미지 또는 비디오 프레임 내의 최소 정보 항목은 "화소"이다. 화소들은 일반적으로 정규 2차원 그리드 내에 배열된다. 원본 이미지(15) 내의 각각의 화소는 하나 이상의 화소 성분에 의해 표현될 수 있다. 화소 성분들은 이미지가 표현되는 컬러 공간 내의 각 컬러에 대한 컬러 값들을 포함할 수 있다. 예를 들어, 컬러 공간은 RGB(red-green-blue) 컬러 공간일 수 있다. 따라서, 각각의 화소는 적색 성분, 녹색 성분 및 청색 성분에 의해 표현될 수 있다. 성분들의 값은 그 화소 내의 대응하는 컬러의 밝기 또는 강도를 표현할 수 있다. 휘도 및 색도 표현(YCrCb)과 같은 다른 컬러 공간들도 이용될 수 있다. 더욱이, 추가의 화소 성분들이 포함될 수 있다. 예를 들어, 블렌딩을 위한 알파값이 RGB 성분들과 함께 포함되어 ARGB 컬러 공간을 형성할 수 있다.
회전 유닛(10)은 원본 이미지(15) 내의 원본 위치들로부터 화소들을 판독하고, 그들을 대상 이미지(destination image) 내의 목표 위치들에 대응하는 타일 버퍼들(24-30) 내의 위치들에 기입하도록 구성될 수 있다. 회전 유닛(10)은 90도의 배수로의 회전 및/또는 수평 또는 수직 방향으로의 플립(flip)을 수행할 수 있다. 지정된 회전은 회전 유닛(10)에의 입력들일 수 있는 회전 구성 비트들에 의해 나타내어질 수 있다. 본 명세서 전체에서 이용될 때, 용어 "회전"은 단어의 전통적인 의미에서의 90도, 180도 또는 270도 (시계 방향 또는 반시계 방향) 회전과 같은 회전을 지칭할 수 있다. 추가로, "회전"은 플립(즉, 이미지의 x-스왑(swap) 또는 y-스왑 방향 변경)을 지칭할 수 있다.
회전 유닛(10)은 화소들을 메모리(16) 내에 저장된 원본 이미지(15)로부터 지정된 순서로 페치하기 위한 페치 유닛(12)을 포함할 수 있다. 일 실시예에서, 페치 유닛(12)은 원본 이미지(15) 내의 화소들의 어드레스들을 생성할 수 있다. 페치 유닛(12)은 수행되는 회전의 유형에 기초하여 어드레스들이 생성되는 순서를 결정할 수 있다. 페치 유닛(12)은 생성된 어드레스들을 이용하여 판독 요청들을 발행할 수 있고, 어드레스들은 메모리(16)로부터의 판독 동작들을 수행하기 위해 메모리 관리 유닛(MMU)(14)에 의해 이용될 수 있다. 다른 실시예에서, 로직 패브릭 인터페이스(logic fabric interface)(도시되지 않음)가 MMU(14)와 메모리(16) 사이에 포함될 수 있다. 일 실시예에서, 페치 유닛(12)은 원본 이미지(15)로부터 화소들을 판독하기 위해 DMA(direct memory access) 판독 동작들을 수행할 수 있다. 페치 유닛(12)은 DMA 판독 동작들을 수행하기 위해 DMA 제어기를 포함할 수 있다.
MMU(14)는 메모리 어드레스 변환들을 수행하도록 구성될 수 있다. 일 실시예에서, MMU(14)는 페치 유닛(12)이 원본 이미지(15)에 대응하는 가상 어드레스 범위를 어드레싱하는 것을 허용하기 위해 가상 어드레싱을 이용할 수 있다. MMU(14)는 가상 어드레스를 메모리(16)의 실제 물리 어드레스에 맵핑하기 위해 가상-대-물리 변환을 수행할 수 있다. 다양한 실시예들에서, MMU(14)는 페치 유닛(12)이 미스(miss) 시에 요구 페치되는 변환들을 기다리는 것에 의해 초래되는 레이턴시를 회피하기 위해 변환들을 프리페치하는 것을 허용할 수 있다. 일 실시예에서, 페치 유닛(12)은 프리페치들을 위한 가상 어드레스들을 생성하기 위해 프리페치 엔진(도시되지 않음)을 포함할 수 있다. 본 실시예에서, MMU(14)는 페치 유닛(12)으로부터의 프리페치 요청들을 처리하기 위해 프리페치 유닛(도시되지 않음)을 포함할 수 있다. 일 실시예에서, 페치 유닛(12)은 페치되는 현재 타일보다 한 타일 앞서서 프리페치 요청들을 송신할 수 있다. 프리페치 요청들은 MMU(14) 내의 스트리밍 변환 테이블(STT)(도시되지 않음)을 채우기 위해 이용될 수 있다. 페치 유닛(12)이 실제 메모리 요청을 발행할 때, 요청은 STT를 이용하여 즉시 변환될 수 있다.
페치 유닛(12)은 원본 이미지(15)로부터의 화소들을 페치하고, 그 화소들을 타일 버퍼들(24-30) 내의 적절한 위치들에 기입하도록 구성될 수 있다. 일 실시예에서, 페치 유닛(12)은 하나 이상의 화소에 대응하는 특정한 트랜잭션 식별자(ID)와 함께 판독 요청을 발행할 수 있다. 페치 유닛(12)은 회전된 이미지의 타일 내의 하나 이상의 화소에 대한 목적 위치들을 계산할 수 있다. 다음으로, 페치 유닛(12)은 룩업 테이블(18) 내의 엔트리에 트랜잭션 ID를 저장할 수 있고, 화소 목적 위치들이 그 엔트리 내에 포함될 수 있다. 그 특정한 트랜잭션 ID에 대한 화소들이 메모리(16)로부터 수신될 때, 룩업 테이블(18) 내의 대응하는 엔트리가 검색될 수 있고, 화소들을 타일 버퍼들(24-30)의 주어진 타일 버퍼 내의 어디에 기입할지를 결정하기 위해 위치 정보가 이용될 수 있다.
일 실시예에서, 룩업 테이블(18)은 랜덤 액세스 메모리(RAM)일 수 있다. 다양한 실시예들에서, 룩업 테이블(18)은 다양한 수의 엔트리를 포함할 수 있다. 페치된 화소들은 룩업 테이블(18) 내에 저장된 위치 데이터에 기초하여 타일 버퍼들(24-30) 내의 목표 위치들에 저장될 수 있다. 화소들이 타일 버퍼들(24-30) 중의 주어진 타일 버퍼 내의 목표 위치들에 기입될 때, 그 화소들은 효과적으로 재배치된다.
타일 버퍼들(24-30) 각각은 회전된 이미지의 주어진 타일을 저장할 수 있다. 원본 이미지(15) 및 대응하는 회전된 이미지는 각각 지정된 회전에 기초하여 복수의 타일 내로 배분될 수 있다. 일 실시예에서, 회전된 이미지 내의 타일들은 16 화소 행(16 rows of pixels) × 128 화소 열(128 columns of pixels)일 수 있다. 그러나, 다른 실시예들에서는 타일 크기가 달라질 수 있다. 원본 이미지(15)의 각 행을 구성하기 위해 다수의 타일이 이용될 수 있도록, 원본 이미지(15)의 폭은 타일의 폭보다 클 수 있다. 또한, 원본 이미지(15)의 각 칼럼을 구성하기 위해 다수의 타일이 이용될 수 있도록, 원본 이미지(15)의 길이는 타일의 길이보다 클 수 있다. 타일 버퍼들(24-30) 각각은 원본 이미지(15)의 주어진 회전된 타일을 저장할 수 있고, 타일 버퍼가 파이프라인 내의 다음 스테이지에 의해 판독된 후, 그 타일 버퍼는 원본 이미지(15)의 새로운 타일로 채워질 수 있다. 일 실시예에서, 각각의 컬러 성분은 회전된 이미지의 4개의 타일을 저장하기 위한 4개의 타일 버퍼를 포함할 수 있다. 예를 들어, 원본 이미지(15)가 ARGB 포맷으로 표현되는 경우, 알파 컬러 성분을 위한 4개의 타일 버퍼, 적색 컬러 성분을 위한 4개의 타일 버퍼, 녹색 컬러 성분을 위한 4개의 타일 버퍼, 및 청색 컬러 성분을 위한 4개의 타일 버퍼가 존재할 수 있다.
일 실시예에서, 회전된 이미지의 일부분을 구성하는 타일 버퍼들(24-30) 내에 저장된 타일들은 이미지 처리 파이프라인의 후속 스테이지에 전달될 수 있다. 일 실시예에서, 파이프라인의 후속 스테이지는 대상 이미지의 회전된 타일들을 업스케일 또는 다운스케일하기 위한 스케일러 유닛(예를 들어, 스케일러들(32))일 수 있다. 스케일러들(32)은 파이프라인 내에서 이용될 수 있는 임의의 개수의 수직 또는 수평 스케일러를 나타낸다. 다른 실시예에서, 파이프라인 내의 다음 스테이지는 스케일러들(32)이 아닌 소정의 다른 유닛(예를 들어, 컬러 공간 변환 유닛, 정규화 유닛, 다운샘플링 유닛)일 수 있다. 다른 실시예에서, 회전 유닛(10)은 대상 이미지의 회전된 타일들을 디스플레이 유닛(도시되지 않음)에 전달할 수 있다. 또 다른 실시예에서, 회전 유닛(10)은 목표 이미지의 회전된 타일들을 메모리(16) 또는 다른 저장 위치에 전달할 수 있다.
일 실시예에서, 페치 유닛(12)에 의해 생성되는 각각의 판독 요청은 64 바이트까지의 데이터를 판독할 수 있다. 다른 실시예들에서, 판독 요청들은 다른 양의 데이터를 요청할 수 있다. 일 실시예에서, 각각의 판독 요청은 원본 이미지(15)의 타일의 라인(즉, 행)을 향해 지향될 수 있다. 회전된 이미지를 위한 목표 타일 크기가 16 행 × 128 열이고, 지정된 회전은 90 또는 270도인 경우, 원본 이미지(15)는 16 열 × 128 행의 타일들로 구획화될 수 있다. 페치 유닛(12)은 타일의 최상위 라인을 페치한 다음, 타일의 바닥까지 한 라인씩 아래로 이동할 수 있다. 각각의 페치는 원본 이미지(15)의 타일의 라인으로부터의 화소들을 요청할 수 있다. 16 화소의 전체 라인을 검색하는 데에 1회 이상의 페치가 소요될 수 있고, 다음으로 페치들은 다음의 16 화소를 검색하기 위해 다음 라인으로 내려갈 것이고, 그러면 이 프로세스는 전체 타일에 대해 128 라인이 검색될 때까지 계속될 수 있다. 원본 이미지(15)의 행으로부터의 16 화소는 지정된 (90도 또는 270도) 회전에 대해 회전된 이미지의 단일 열을 구성할 것이다. 다른 실시예들에서, 타일들의 다른 크기들(예를 들어, 256×24, 64×16, 512×32)이 이용될 수 있고, 다른 유형의 회전들이 수행될 수 있다.
일 실시예에서, 화소들이 회전 유닛(10)에 의해 수신될 때, 타일 버퍼들(24-30) 내에서 화소들을 어디에 저장할지에 대한 온-더-플라이(on-the-fly) 방식의 결정이 이루어질 수 있다. 결정은 룩업 테이블(18) 내에 저장된 위치 정보에 기초할 수 있다. 일부 실시예들에서, 화소들은 순서없이(out of order) 리턴할 수 있고, 태그 데이터에 기초하여 타일 버퍼들(24-30) 내의 올바른 위치들에 라우팅될 수 있으며, 여기에서 태그들은 화소 목적지 정보를 포함한다.
페치 유닛(12)은 트랜잭션 ID들 및 화소 목적지들을 룩업 테이블(18) 내에 저장할 수 있다. 화소 데이터는 순서없이 리턴될 수 있고, 룩업 테이블(18)에 전달될 수 있다. 룩업 테이블(18)은 원본 이미지(15)의 본래의 포맷 및 회전된 이미지의 목표 포맷에 따라 화소마다의 비트 수를 확장하기 위해, 화소들을 비트 확장 유닛(20)에 전달할 수 있다. 메모리로부터 검색된 화소들이 파이프라인 내의 다음 스테이지(즉, 스케일러(32))에 의해 이용되는 것과 동일한 크기인 경우에는, 비트 확장 유닛이 포함되지 않을 수 있다. 일부 실시예들에서, 스위즐 유닛(swizzle unit)(22)은 페치된 화소들의 순서를 재배열할 수 있다. 예를 들어, 일 실시예에서, 화소들은 청색, 녹색, 적색 및 알파 컬러 성분의 순서로 수신될 수 있다. 스위즐 유닛(22)은 화소들의 순서를 다시 정하여, 알파, 적색, 녹색 및 청색 컬러 성분의 순서로 할 수 있다.
각각의 화소를 저장하기 위해 이용되는 비트들의 수는 이용되는 특정 포맷에 의존할 수 있다. 예를 들어, 일부 시스템들 내의 화소들은 8 비트를 필요로 할 수 있는 반면에, 다른 시스템들 내의 화소들은 10 비트를 필요로 할 수 있는 등이고, 다양한 시스템들에서 화소마다의 다양한 비트 수 중 임의의 것이 이용된다. 일 실시예에서, 원본 이미지(15)는 8 비트로 표현되는 화소들을 포함할 수 있다. 그래픽 파이프라인은 10 비트의 화소를 이용할 수 있고, 따라서 원본 이미지(15)로부터 수신된 화소들은 비트 확장 유닛(20)에 의해 8 비트로부터 10 비트로 확장될 수 있다. 일부 실시예들에서, 비트 확장 유닛(20) 및 스위즐 유닛(22)은 포함되지 않을 수도 있고, 다르게는 통과(pass-through) 유닛들일 수 있음에 유의해야 한다. 일부 실시예들에서, 페치된 화소들은 비트 확장 유닛(20) 및 스위즐 유닛(22)을 통과하지 않고서 타일 버퍼들(24-30)에 직접 전달될 수 있다.
룩업 테이블(18), 비트 확장 유닛(20) 및 스위즐 유닛(22)이 페치 유닛(12)의 일부분인 것으로 도시되어 있지만, 이것은 오직 설명을 위한 것일 뿐이고, 다른 실시예들에서는 그 유닛들이 다른 적절한 방식으로 배치될 수 있다. 예를 들어, 다른 실시예에서, 룩업 테이블(18), 비트 확장 유닛(20) 및/또는 스위즐 유닛(22)은 페치 유닛(12)과는 구별되는 별개의 유닛들일 수 있다.
각각의 타일 버퍼(24-30)는 회전된 이미지의 상이한 타일에 대응할 수 있다. 다른 실시예들에서, 회전된 타일들로부터의 화소들을 저장하기 위해 4개 외의 다른 수의 타일 버퍼가 이용될 수 있다. 추가로, 각각의 타일 버퍼는 다수의 RAM을 포함할 수 있고, 각각의 RAM은 주어진 이미지 타일의 단일 행을 저장할 수 있다. 예를 들어, 일 실시예에서, 각각의 타일 버퍼는 이미지 타일의 16개의 행에 대응하는 16개의 개별 RAM을 포함할 수 있다. 다른 실시예들은 16개 외의 다른 개수의 행을 갖는 다른 타일 사이즈를 이용할 수 있다. 이들 실시예들에서, 각각의 버퍼 내에는 타일마다의 행의 양에 대응하는 다른 개수의 RAM이 존재할 수 있다. 예를 들어, 다른 실시예에서, 타일 크기가 32행 × 128열인 경우, 타일 버퍼마다 32개의 RAM이 존재할 수 있다.
도 1에 도시된 컴포넌트들은 임의의 적절한 버스 및/또는 인터페이스 메커니즘을 이용하여 서로 연결될 수 있다. 일부 실시예들에서, 이들 컴포넌트들은 (ARM® Holdings로부터의) AMBA®(Advanced Microcontroller Bus Architecture) 프로토콜, 또는 논리 블록들의 접속 및 관리를 위한 임의의 다른 적절한 온-칩 상호접속 규격을 이용하여 접속될 수 있다. AMBA 버스들 및/또는 인터페이스들의 예들은 AXI(Advanced eXtensible Interface), AHB(Advanced High-performance Bus), ASB(Advanced System Bus), APB(Advanced Peripheral Bus) 및 ATB(Advanced Trace Bus)를 포함할 수 있다.
다른 실시예들은 도 1에 도시된 컴포넌트들 및/또는 다른 컴포넌트들의 부분집합 또는 확대집합을 포함하여, 컴포넌트들의 다른 조합들을 포함할 수 있다. 주어진 컴포넌트의 하나의 인스턴스가 도 1에 도시될 수 있지만, 다른 실시예들은 주어진 컴포넌트의 하나 이상의 인스턴스를 포함할 수 있다. 마찬가지로, 본 상세한 설명 전체에서, 주어진 컴포넌트의 단 하나의 인스턴스만이 도시되어 있더라도 하나 이상의 인스턴스가 포함될 수 있고/거나, 복수의 인스턴스가 도시되어 있더라도 단 하나의 인스턴스만을 포함하는 실시예들이 이용될 수 있다.
이제 도 2를 보면, 룩업 테이블의 일 실시예가 도시되어 있다. 룩업 테이블(18)의 각각의 엔트리는 트랜잭션 식별자(ID) 필드, 타일 버퍼 개수 필드, 라인(행) 개수 필드, 및 열 개수 필드를 포함하여, 수 개의 데이터 필드를 포함할 수 있다. 트랜잭션 ID 필드는 원본 이미지(15) 내의 하나 이상의 어드레스에 대한 특정한 판독 요청에 대응할 수 있다. (도 1의) 페치 유닛(12)은 하나 이상의 화소에 대한 판독 요청을 발행할 때, 판독 요청에 대응하는 엔트리를 룩업 테이블(18) 내에 저장할 수 있다. 각각의 엔트리는 원본 화소(들)가 회전-후 이미지의 타일 내의 어디에 위치되어야 하는지를 나타내는 위치 좌표들을 포함할 수 있다. 일 실시예에서, 회전-후 이미지 타일은 타일 버퍼 내에 저장될 수 있고, 화소들은 전체적인 그래픽 처리 파이프라인의 다음 스테이지에 의해 타일 버퍼로부터 판독될 수 있다.
판독 요청에 대응하는 화소들이 메모리로부터 검색될 때, 룩업 테이블(18) 내의 대응하는 엔트리는 검색된 화소들을 타일 버퍼들 내의 어디에 저장할지를 결정하기 위해 이용될 수 있다. 예를 들어, 판독 트랜잭션 ID(43)에 대응하는 데이터가 메모리로부터 리턴할 때, 트랜잭션 ID(43)를 위한 엔트리는 타일 버퍼(24) 내에서 라인 0 열 24의 시작 위치에 화소들을 저장하기 위해 회전 유닛에 의해 이용될 수 있다. 일 실시예에서, 단일 트랜잭션 내에서 검색되는 화소들의 개수는 8일 수 있다. 다른 실시예들에서, 다른 개수의 화소들이 단일 트랜잭션 내에서 검색될 수 있다.
룩업 테이블(18) 내에 도시된 엔트리들은 오직 설명의 목적을 위한 것이다. 룩업 테이블(18)은 다른 실시예들에서 8개의 엔트리보다 많이 또는 8개보다 적게 포함할 수 있고, 룩업 테이블(18)은 상이한 방식으로 조직화될 수 있고 다른 정보 필드들을 포함할 수 있다. 예를 들어, 일 실시예에서, 회전의 유형을 나타내는 회전 구성 비트들이 테이블(18) 내에 저장될 수 있다. 다른 실시예에서, 각각의 엔트리는 엔트리가 이용된 때를 나타내기 위한 유효 비트를 포함할 수 있고, 따라서 후속 트랜잭션 ID에 대해 다른 엔트리에 의해 덮어쓰기될 수 있다. 다른 실시예들에서, 다른 유형의 정보가 룩업 테이블(18) 내에 저장될 수 있고, 룩업 테이블(18)은 임의의 적절한 방식으로 조직화될 수 있다.
이제 도 3을 참조하면, 회전 타일 버퍼의 일 실시예의 블록도가 도시되어 있다. 타일 버퍼(24)는 16개의 별개의 행을 포함할 수 있고, 그들 각각은 별개의 RAM일 수 있다. 16개의 별개의 RAM은 예를 들어 행 0, 행 1, 행 2 및 행 15까지 계속, 이미지 타일의 별개의 행들을 저장하기 위해 이용될 수 있다. RAM들 각각은 회전된 이미지의 타일의 개별 행에 연관된 화소들을 저장할 수 있다. 본 실시예에서, 타일 크기는 16행 × 128 열일 수 있다. 다른 실시예들에서, 다른 크기의 타일들이 이용될 수 있고, 타일 버퍼(24)는 타일 내의 행의 개수에 대응하는 다른 개수의 RAM을 포함할 수 있다.
일 실시예에서, 그래픽 파이프라인 내의 다음 스테이지는 수직 스케일러 유닛일 수 있다. 수직 스케일러 유닛은 단일 클럭 사이클 내에서, 타일 버퍼(24)로부터의 화소들의 전체 열을 페치할 수 있다. 일부 실시예들에서, 타일 버퍼(24)의 각각의 RAM은 클럭 사이클마다의 단일 액세스를 허용할 수 있다. 그러므로, 수직 스케일러가 각각의 클럭 사이클 내에서 각 행으로부터의 단일 화소를 판독할 수 있도록, 타일 버퍼(24)는 별개의 RAM 내에 저장된 각각의 행으로 배열된다. 다른 실시예들에서, 타일 버퍼(24)는 데이터가 그래픽 파이프라인 내의 다음 스테이지에 의해 어떻게 타일 버퍼(24)로부터 판독되는지에 따라, 다른 방식들로 구조화될 수 있다.
이제 도 4를 보면, 3개의 구획화된 이미지가 도시되어 있다. 회전이 수행되지 않은 경우의 원본 이미지의 구획화는 원본 이미지(50)에 의해 도시된다. 원본 이미지(50)는 (0,0) - (2,2)로 라벨링된 8개의 타일로 구획화되고, 타일들이 처리되는 순서는 왼쪽 가장 위의 코너에서 시작하여, (0,0), (0,1) 및 (0,2)로 라벨링된 블록들로 시작하는 가장 왼쪽의 타일 열을 내려간다. 다음으로, 가장 왼쪽의 열이 페치된 다음, 오른쪽에 있는 다음 열(타일들 (1,0), (1,1) 및 (1,2))이 페치될 수 있는 등이다.
90도 시계방향 회전을 수행하기 위한 원본 이미지의 구획화는 원본 이미지 블록(52)에 의해 도시된다. 이 경우에서, 원본 이미지의 구획화는 지정된 회전에 기초하여, 처리될 제1 타일이 원본 이미지(52)의 왼쪽 가장 아래의 타일이게 된다. 원본 이미지(52)의 왼쪽 가장 아래의 타일은 90도 회전이 수행된 후에는 회전된 이미지(54) 내의 왼쪽 가장 위의 열이 될 것인데, 이것이 원본 이미지(52)의 왼쪽 가장 아래의 타일이 처리될 제1 타일인 이유이다. 원본 이미지(52)의 타일들은 가장 왼쪽의 타일 (0,0)에서 시작하여 타일들 (0,1), (0,2), (0,3) 및 (0,4)를 통해 진행하면서, 가장 아래의 타일 행에 대해 처리될 것이다. 다음으로, 가장 위의 타일 행이 타일 (1,0)로부터 타일 (1,4)까지 처리될 수 있다. 원본 이미지(52)의 타일들의 처리는 90도 회전에 의해 결정되는 방식으로 진행하여, 타일들은 지정된 회전이 수행된 후에 그들이 위치되는 대로 처리될 수 있게 된다. 처리되는 제1 타일은 회전되는 이미지(54)의 왼쪽 가장 위에 있게 될 타일일 수 있다. 다음으로, 이미지는 (회전된 이미지(54)의) 제1 타일 열을 내려간 다음, 오른쪽에 있는 다음 열로 진행하는 식으로 처리될 수 있다. 회전된 이미지(54)는 원본 이미지(52)가 회전 유닛(예를 들어, 도 1의 회전 유닛(10))에 의해 처리되고 회전된 후, 대상 이미지가 어떻게 보일 것인지를 도시한다. (90도 회전 이외의) 다른 유형의 회전들에 대해 원본 이미지를 타일들로 구획화하는 것은 수행되는 특정 유형의 회전에 기초하여 유사한 방식으로 수행될 수 있다. 또한, 도 4에 도시된 이미지들 및 타일들의 크기는 오직 예시를 목적으로만 도시된 것이고, 다른 개수 및 크기의 타일들을 갖는 다른 이미지들이 유사한 방식으로 처리될 수 있다.
이제 도 5를 참조하면, 구획화된 원본 이미지와 타일 버퍼들 간의 대응의 일 실시예가 도시되어 있다. (90도 시계방향 회전에 대해 구획화된) 원본 이미지(52)가 도 5에 도시되어 있고, 화살표들은 처리되는 처음 4개의 타일((0,0), (0,1), (0,2) 및 (0,3))과, 그 타일들이 저장될 수 있는 대응 타일 버퍼들(24-30)을 연결한다. 예를 들어, 타일 (0,0)은 타일 버퍼(24) 내에 저장될 수 있고, 타일 (0,1)은 타일 버퍼(26) 내에 저장될 수 있고, 타일 (0,2)은 타일 버퍼(28) 내에 저장될 수 있고, 타일 (0,3)은 타일 버퍼(30) 내에 저장될 수 있다.
도 5는 구획화된 원본 이미지(52)의 단일 컬러 성분에 대해, 타일들을 타일 버퍼들에 라우팅하는 것을 도시한다. 구획화된 원본 이미지(52)의 각각의 컬러 성분은 별개의 타일 버퍼 내에 저장될 수 있다. 예를 들어, ARGB 포맷을 이용하면, 이미지(52)의 처음 4개의 타일의 컬러 성분들 전부를 저장하기 위해 총 16개의 타일 버퍼가 이용될 수 있다.
타일 버퍼들(24-30)이 그래픽 파이프라인의 후속 스테이지에 의해 판독된 후, 구획화된 원본 이미지(52)의 다음 4개의 타일이 타일 버퍼들(24-30)에 기입될 수 있다. 일 실시예에서, 그래픽 파이프라인의 다음 스테이지는 타일 버퍼들(24-30)로부터 한 번에 하나씩 판독하여, 타일 버퍼(24)가 판독된 경우, 구획화된 원본 이미지(52)의 다음 타일이 타일 버퍼(24)에 기입되게 할 수 있고, 다음으로 프로세스는 타일 버퍼(26)가 판독될 때까지 스톨(stall)하게 되는 식으로 될 것이다.
이제 도 6을 보면, 4개의 타일 버퍼 및 구획화된 회전된 이미지의 일부분이 도시되어 있다. 타일 버퍼들(24-30)은 도 5에 도시된 바와 같이 원본 이미지(52)로부터의 4개의 타일을 저장할 수 있다. 원본 이미지(52)로부터의 이들 4개의 타일은 회전된 이미지(54) 내에 도시된 4개의 타일((0,0), (0,1), (0,2) 및 (0,3))에 대응할 수 있다. 원본 이미지(52)의 본래의 타일들로부터의 화소들을 회전된 이미지(54) 내로 회전시키는 것은, 화소들이 타일 버퍼들(24-30) 내에 기입될 때 수행될 수 있다. 회전된 이미지(54)의 4개의 타일을 그래픽 파이프라인의 후속 스테이지(도시되지 않음)에 의해 타일 버퍼들(24-30)로부터 판독될 수 있다. 대안적으로, 회전된 이미지(54)의 4개의 타일 내에 저장된 화소들은 디스플레이(도시되지 않음)에, 또는 메모리(도시되지 않음) 내의 위치에 전달될 수 있다.
타일들은 이미지의 왼쪽 위의 블록에서 시작하여 회전된 이미지(54) 내에 저장될 수 있고, 다음으로 처리는 이미지의 바닥의 가장자리에 도달할 때까지 가장 왼쪽의 타일 열을 내려가면서 진행할 수 있다. 다음으로, 타일들은 두번째의 가장 왼쪽의 열의 가장 위에서 계속하여 저장될 수 있고, 이미지의 나머지 전체에서 이러한 방식으로 계속될 수 있다. 다른 실시예에서, 타일들은 회전된 이미지(54) 내에서 상이한 순서로 저장될 수 있다.
이제 도 7을 참조하면, 타일 버퍼의 일 실시예의 블록도가 도시되어 있다. 다양한 실시예들에서, 타일 버퍼(26)의 크기는 개별 이미지 타일의 크기에 일치하도록 달라질 수 있다. 일 실시예에서, 각각의 라인이 128 화소를 포함하도록, 개별 이미지 타일은 16 라인 × 128 열일 수 있다. 다른 실시예에서, 이미지 타일 라인들은 타일의 오른쪽 및 왼쪽에 추가의 7개의 화소를 페치함으로써 142 화소로 확장될 수 있다. 이와 같이 타일의 오른쪽 및 왼쪽 가장자리에 인접 타일들로부터의 화소들을 페치하는 것은 그래픽 파이프라인의 후속 스테이지에서의 15탭 다위상 수평 스케일러 필터(15-tap polyphase horizontal scaler filter)를 용이하게 하기 위해 수행될 수 있다.
타일 버퍼(26)는 142 라인 × 16 열의 크기를 갖는 것으로 도시되어 있다. 일 실시예에서, 이것은 16 라인 × 142 열의 원본 이미지 타일 크기 및 90도 또는 270도의 지정된 회전에 대응한다. 각 박스 내의 라벨들은 회전된 이미지 내에서의 화소 위치를 지칭한다. 화소들은 지정된 회전에 기초하여 원본 이미지로부터 페치되고 타일 버퍼(26) 내의 적절한 위치에 저장될 수 있다. 타일 버퍼(26)의 각 박스 내의 라벨은 회전된 이미지의 타일 내에서의 화소 위치를 지칭한다.
타일 버퍼(26) 내에 도시된 화소들의 배열은 단일 클럭 사이클 내에서 다수의 화소가 타일 버퍼(26)에 기입되는 것을 허용하기 위해 이용될 수 있다. 예를 들어, 일 실시예에서, 타일 버퍼(26)의 화소들의 각각의 수직 배열은 개별 RAM에 대응할 수 있다. 그러한 것으로서, RAM 0-15는 단일 클럭 사이클 내에서 단 하나의 화소만이 기입되고 판독되는 것만을 허용할 수 있다. 그러므로, 화소 데이터가 본래의 원본 이미지로부터 어떻게 페치되는지에 기초하여, 클럭 사이클마다 최대 단 하나의 화소만이 RAM에 기입되거나 그로부터 판독될 필요가 있을 수 있도록 각각의 RAM 내에 화소들이 배열된다.
일 실시예에서, 화소들은 본래의 원본 이미지로부터, 페치마다 단일 라인으로부터 페치될 수 있고, 페치된 화소들의 각각의 집합은 회전이 있는 경우에는 타일 버퍼(26) 내의 단일 라인에 기입될 수 있고(예를 들어, 라인 0 - 열 0, 라인 1 - 열 0 등), 회전이 없는 경우에는 타일 버퍼(26) 내의 대각 라인에 기입될 수 있다(예를 들어, 라인 0 - 열 0, 라인 0 - 열 1, 라인 0 - 열 2 등). 또한, 화소 배열은 회전된 이미지의 단일 열을 목표로 하는 16개의 화소가 그래픽 파이프라인의 다음 스테이지에 의해 단일 클럭 사이클 내에서 타일 버퍼(26)로부터 판독되는 것을 허용한다. 도 7에 도시된 타일 버퍼(26)의 크기는 오직 예시를 목적으로 하는 것이며, 다른 실시예들에서는 다른 타일 크기들이 이용될 수 있음에 유의해야 한다. 추가로, 다른 실시예들에서, 타일 버퍼 내의 화소들의 다른 배열들이 가능하고 고려된다.
이제 도 8을 보면, 수행될 수 있는 다양한 유형의 회전의 블록도가 도시되어 있다. 각각의 유형의 회전에 대해 2개의 블록이 도시되어 있는데, 한 블록은 "원본"이라고 라벨링된 본래의 원본 이미지를 보여주고, 제2 블록은 특정 유형의 회전(예를 들어 90도, 270도, X 플립) 후의 최종 이미지를 보여준다. 각각의 원본 이미지 다음의 2개의 화살표는 화소 스캔 방향(실선) 및 라인 스캔 방향(점선)을 나타낸다. 화소 스캔 방향은 원본 이미지의 각 타일로부터 화소들이 스캔될(즉, 페치될) 방향을 나타낸다. 라인 스캔 방향은 원본 이미지의 각 타일로부터 라인들이 스캔될 방향 및 타일들이 스캔될 방향을 나타낸다. 화소 및 라인 스캔 방향은 페치 유닛(12)(도 1)과 같은 페치 유닛에 의해 판독 어드레스들이 생성되는 순서를 결정한다. 페치 유닛(12)은 전체 이미지 또는 완전한 행이나 열에 대해 작용하는 대신에, 이미지의 타일에 작용함으로써 원본 이미지를 회전 및/또는 플립할 수 있다. 페치 유닛(12)은 원본 이미지로부터의 화소들을, 회전된 이미지의 가장 왼쪽의 위의 타일을 목표로 하는 원본 이미지의 타일에서 시작하여 타일별로(in a tile-by-tile manner) 페치하도록 구성될 수 있다.
16개의 상이한 회전 및 플립 조합에 대해 8개의 고유한 이미지 배향이 도시되어 있다. 회전 및 플립의 조합들 중 일부는 동일한 이미지 배향을 생성하고, 따라서 도 8에는 한 번만 도시되어 있다. 예를 들어, x(수평) 방향의 플립이 후속하는 90도 회전은 y(수직) 방향의 플립이 후속하는 270도 회전과 등가이다.
도 8에 도시된 예들은 수행될 수 있는 회전들의 유형의 완전한 목록이 아니며 다른 유형의 회전들도 수행될 수 있음에 유의해야 한다. 추가로, 도 8에 도시된 예시적인 이미지들은 정사각형 이미지이지만, 직사각형 형상의 원본 이미지도 여기에 개시된 방법 및 메커니즘에 의해 이용될 수 있다. 또한, 다른 실시예들에서, 다른 화소 및 라인 스캔 방향들이 이용될 수 있다.
이제 도 9를 참조하면, 인라인 방식으로 화소들을 회전하기 위한 방법의 일 실시예가 도시되어 있다. 논의의 목적으로, 본 실시예의 단계들은 순차적인 순서로 도시되어 있다. 아래에 설명되는 방법의 다양한 실시예들에서, 설명되는 요소들 중 하나 이상은 동시에 또는 도시된 것과는 다른 순서로 수행될 수 있고, 다르게는 완전히 생략될 수 있음에 유의해야 한다. 다른 추가의 요소들도 원하는 대로 수행될 수 있다.
일 실시예에서, 페치 요청들은 원본 이미지로부터의 화소들에 대해 지정된 회전에 기초하는 순서로 발행될 수 있다(블록(60)). 원본 이미지는 타일들로 구획화될 수 있고, 화소들은 타일의 가장 위의 행에서 시작하여 한 행씩 타일을 내리면서 각각의 타일로부터 페치될 수 있다. 원본 이미지를 타일들로 구획화하는 것은 수행되는 지정된 회전에 기초할 수 있다. 예를 들어, 16 행 × 128 열의 타일 크기를 갖는 일 실시예에서, 지정된 회전이 90도인 경우, 원본 이미지는 128 행 × 16 열의 타일들로 구획화될 것이다. 각각의 행은 16 화소를 포함할 수 있고, 행들은 가장 위의 행에서 시작하여 가장 아래의 행까지 내려가면서 총 128개의 행에 대해 페치될 수 있다. 원본 이미지로부터 판독되는 각각의 행은 90도 회전에 기초하는 회전된 이미지 내의 열이 될 것이다. 페치되는 원본 이미지의 제1 타일은 회전된 이미지의 왼쪽 가장 위의 타일로 될 타일일 수 있고, 다음으로 타일들은 회전된 이미지의 제1 타일 열을 내려가면서 페치될 수 있다. 다음으로, 원본 이미지의 타일들 전부가 페치될 때까지, (회전된 이미지에서 나타나게 되는 대로) 오른쪽에 있는 다음 타일 열이 페치될 수 있는 등이다.
다음으로, 화소들에 대해 목표 위치들이 계산될 수 있다(블록(62)). 목표 위치들은 지정된 회전에 기초하여 계산될 수 있다. 예를 들어, 지정된 회전이 90도인 경우, 원본 이미지 내의 타일로부터 판독되는 각각의 행은 회전된 이미지의 대응하는 타일 내의 열을 목표로 한다. 원본 이미지 내의 타일의 가장 위의 행은 회전된 이미지 내의 대응하는 타일의 가장 오른쪽의 열을 목표로 할 것이고, 원본 이미지 타일의 가장 위의 행으로부터 두번째의 것은 회전된 이미지 타일의 가장 오른쪽 열로부터 두번째의 것을 목표로 하는 식일 것이다.
다음으로, 계산된 목표 위치들이 테이블 내에 저장될 수 있다(블록(64)). 일 실시예에서, 계산된 목표 위치들은 페치 요청들이 발행되는 동안 동시에 테이블에 저장될 수 있다. 화소들이 원본 이미지로부터 수신될 때, 대응하는 목표 위치들이 테이블에서 룩업될 수 있다(블록(66)). 테이블은 발행된 페치 요청들에 대한 엔트리들을 저장할 수 있고, 엔트리들은 요청의 트랜잭션 ID에 기초하여 식별될 수 있다. 다음으로, 수신된 화소들은 계산된 목표 위치들에서 타일 버퍼 내에 저장될 수 있다(블록(68)). 이 단계들은 원본 이미지의 타일들 전부의 화소들 전부가 페치되고, 지정된 회전에 따른 타일 버퍼들 내의 적절한 위치들에 저장될 때까지 반복될 수 있다. 각각의 타일 버퍼가 원본 이미지 내의 후속 타일들로부터의 화소들을 저장하는 데에 재사용될 수 있도록, 타일 버퍼들이 후속 스테이지에 의해 판독되거나 메모리에 저장될 수 있다.
이제 도 10을 보면, 이미지의 인라인 회전을 수행하기 위한 방법의 일 실시예가 도시된다. 논의를 목적으로, 본 실시예의 단계들은 순차적인 순서로 도시된다. 이하에 설명되는 방법의 다양한 실시예들에서, 설명되는 요소들 중 하나 이상은 동시에 또는 도시된 것과는 다른 순서로 수행될 수 있거나, 완전히 생략될 수 있음에 유의해야 한다. 다른 추가 요소들도 원하는 대로 수행될 수 있다.
일 실시예에서, 원본 이미지는 복수의 타일로 구획화될 수 있다(블록(70)). 원본 이미지의 구획화는 수행되고 있는 지정된 회전에 기초할 수 있다. 구획은 원본 이미지 컨텐츠를 변경하거나 원본 이미지가 메모리 디바이스 내에 저장되는 실제의 물리적 구획이 아닐 수 있다. 구획화는 원본 이미지를 타일들의 논리적 배열로 가상 구획화하는 것일 수 있다. 원본 이미지의 제1 타일로부터의 화소들이 판독될 수 있다(블록(72)). 일 실시예에서, 원본 이미지의 제1 타일은 지정된 회전에 기초하여 원본 이미지의 복수의 타일로부터 선택될 수 있다. 회전된 이미지의 왼쪽 가장 위의 타일을 목표로 하는 원본 이미지의 타일이 원본 이미지로부터 선택되는 제1 타일일 수 있다. 다음으로, 화소들은 타일 버퍼 내의 목표 위치들에 저장될 수 있다(블록(74)). 목표 위치들은 수행되는 지정된 회전에 기초하여 계산될 수 있다.
다음으로, 타일 버퍼가 그래픽 파이프라인 내의 후속 스테이지에 의해 판독된 것을 검출하는 것에 응답하여(조건 블록(76)), 화소들은 원본 이미지의 후속 타일로부터 판독될 수 있다(블록(80)). 다음으로, 원본 이미지의 후속 타일로부터의 화소들은 타일 버퍼 내에 저장될 수 있다(블록(82)). 타일 버퍼가 그래픽 파이프라인 내의 후속 스테이지에 의해 판독되지 않은 경우(조건 블록(76)), 회전 유닛은 하나 이상의 클럭 사이클 동안 스톨할 수 있다(블록(78)). 하나 이상의 클럭 사이클 동안 스톨한 후, 회전 유닛은 타일 버퍼가 그래픽 파이프라인 내의 후속 스테이지에 의해 판독되었는지를 다시 판정할 수 있다(조건 블록(76)). 일 실시예에서, 그래픽 파이프라인 내의 후속 스테이지는 회전된 이미지를 수직 및 수평으로 스케일링하기 위한 스케일러 유닛일 수 있다.
제1 타일 및 후속 타일들의 순서는 지정된 회전에 기초하여 선정될 수 있다. 예를 들어, 원본 이미지로부터 선정된 제1 타일은 회전된 이미지의 왼쪽 가장 위의 타일로 될 타일일 수 있다. 다음으로, 원본 이미지로부터 선정된 제2 타일은 회전된 이미지의 왼쪽 가장 위의 타일 아래에 오게 될 타일일 수 있다. 이 프로세스는 회전된 이미지 내의 가장 왼쪽의 타일 열에 오게 될 타일들에 대해 계속될 수 있고, 다음으로 오른쪽에 있는 다음 열이 처리될 수 있는 식으로 계속된다. 가장 최근에 처리된 타일이 원본 이미지의 최종 타일이었던 경우(조건 블록(84)), 방법은 종료할 수 있다. 원본 이미지의 최종 타일은 회전된 이미지의 오른쪽 가장 아래의 타일을 목표로 할 수 있다. 이전 타일이 최종 타일이 아니었던 경우, 방법은 조건 블록(76)으로 복귀할 수 있다.
다른 실시예들에서, 개별 타일들이 회전된 이미지 내에서의 그들의 위치에 기초하여 판독되는 순서는 달라질 수 있다. 예를 들어, 다른 실시예에서, 회전된 이미지 내에서 위치될 때 오른쪽 가장 위의 타일이 처리될 제1 타일일 수 있고, 다음으로 회전된 이미지의 가장 오른쪽의 열을 내려가면서 타일들이 처리될 수 있다. 다음으로, 타일들의 열은 오른쪽으로부터 왼쪽으로의 순서로 처리될 수 있다. 어느 타일들이 회전된 이미지 내에서의 그들의 위치에 기초하여 타일 버퍼들 내에 기입되는 순서의 변형들이 가능하고 고려된다. 일부 실시예들에서, 회전된 이미지의 다수의 타일을 동시에 저장하기 위해 다수의 타일 버퍼가 이용될 수 있다. 타일 버퍼들 중 하나 이상이 후속 스테이지에 의해 판독되거나 디스플레이 유닛 또는 저장 위치에 전달될 때, 각각의 타일 버퍼는 화소들의 다른 타일로부터의 화소들로 채워질 수 있다.
다음으로 도 11을 참조하면, 시스템(90)의 일 실시예의 블록도가 도시되어 있다. 도시된 바와 같이, 시스템(90)은 데스크탑 컴퓨터(100), 랩탑 컴퓨터(110), 태블릿 컴퓨터(120), 셀폰(130) 등의 칩, 회로망, 컴포넌트들 등을 나타낼 수 있다. 도시된 실시예에서, 시스템(90)은 외부 메모리(92)에 연결된 집적 회로(98)의 적어도 하나의 인스턴스를 포함한다. 집적 회로(98)는 (도 1의) 회전 유닛(10)의 하나 이상의 인스턴스를 포함할 수 있다. 일부 실시예들에서, 집적 회로(98)는 하나 이상의 프로세서 및 하나 이상의 그래픽 처리 파이프라인을 구비하는 SoC일 수 있다.
집적 회로(98)는 하나 이상의 주변 장치(94) 및 외부 메모리(92)에 연결된다. 집적 회로(98)에 공급 전압들을 공급하고, 메모리(92) 및/또는 주변 장치들(94)에 하나 이상의 공급 전압을 공급하는 전력 공급기(96)도 제공된다. 다양한 실시예들에서, 전력 공급기(96)는 배터리(예를 들어, 스마트폰, 랩탑 또는 태블릿 컴퓨터 내의 재충전가능한 배터리)를 표현할 수 있다. 일부 실시예들에서, 집적 회로(98)의 하나보다 많은 인스턴스가 포함될 수 있다(또한 하나보다 많은 외부 메모리(92)도 포함될 수 있다).
메모리(92)는 DRAM(dynamic random access memory), SDRAM(synchronous DRAM), 더블 데이터 레이트(DDR, DDR2, DDR3 등) SDRAM(mDDR3 등과 같은 SDRAM의 모바일 버전 및/또는 LPDDR2 등과 같은 SDRAM의 저전력 버전을 포함함), RDRAM(RAMBUS DRAM), SRAM(static RAM) 등과 같은 임의의 유형의 메모리일 수 있다. 하나 이상의 메모리 디바이스가 회로 보드 상에 연결되어, SIMM(single inline memory module), DIMM(dual inline memory module) 등과 같은 메모리 모듈들을 형성할 수 있다. 대안적으로, 디바이스들은 칩-온-칩 구성, 패키지-온-패키지 구성, 또는 멀티칩 모듈 구성으로 집적 회로(98)에 탑재될 수 있다.
주변 장치들(94)은 시스템(90)의 유형에 따라 임의의 소기의 회로망을 포함할 수 있다. 예를 들어, 일 실시예에서, 주변 장치들(94)은 wifi, Bluetooth, 셀룰러, GPS(global positioning system) 등과 같은 다양한 유형의 무선 통신을 위한 디바이스들을 포함할 수 있다. 주변 장치들(94)은 RAM 저장소, 고체 상태 저장소 또는 디스크 저장소를 포함하는 추가 저장소를 더 포함할 수 있다. 주변 장치들(94)은 터치 디스플레이 스크린 또는 멀티터치 디스플레이 스크린을 포함하는 디스플레이 스크린, 키보드 또는 다른 입력 디바이스들, 마이크로폰들, 스피커들 등과 같은 사용자 인터페이스 디바이스들을 포함할 수 있다.
이제 도 12를 보면, (도 1의) 회전 유닛(10) 내에 포함되는 회로망을 표현하는 하나 이상의 데이터 구조를 포함하는 컴퓨터 판독가능 매체(140)의 블록도의 일 실시예가 도시되어 있다. 일반적으로 말하자면, 컴퓨터 판독가능 매체(140)는 자기 또는 광학 매체(예를 들어, 디스크, CD-ROM 또는 DVD-ROM), RAM(예를 들어, SDRAM, RDRAM, SRAM 등), ROM 등과 같은 휘발성 또는 비휘발성 메모리 매체와 같은 임의의 비-일시적인(non-transitory) 저장 매체와, 네트워크 및/또는 무선 링크와 같은 통신 매체를 통해 전달되는 전기, 전자기 또는 디지털 신호와 같은 전송 매체 또는 신호를 통해 액세스가능한 매체를 포함할 수 있다.
일반적으로, 컴퓨터 판독가능 매체(140) 상의 회로망의 데이터 구조(들)는 직접적으로 또는 간접적으로, 회로망을 포함하는 하드웨어를 제조하기 위해 프로그램에 의해 판독되고 이용될 수 있다. 예를 들어, 데이터 구조(들)는 Verilog 또는 VHDL과 같은 HDL(high level design language) 내의 하드웨어 기능성의 하나 이상의 행동-레벨 디스크립션(behavioral-level descriptions) 또는 RTL(register-transfer level) 디스크립션을 포함할 수 있다. 그러한 디스크립션(들)은 합성 라이브러리(synthesis library)로부터의 게이트들의 목록들을 포함하는 하나 이상의 네트리스트(netlists)를 생성하기 위해 디스크립션을 합성할 수 있는 합성 툴에 의해 판독될 수 있다. 네트리스트(들)는 역시 회로망을 포함하는 하드웨어의 기능성을 표현하는 게이트들의 집합을 포함한다. 그러면, 네트리스트(들)는 마스크들에 적용될 기하학적 형상들을 기술하는 하나 이상의 데이터 세트를 생성하도록 배치되고 라우팅될 수 있다. 다음으로, 마스크들은 회로망에 대응하는 반도체 회로 또는 회로들을 만들기 위해 다양한 반도체 제조 단계들에서 이용될 수 있다. 대안적으로, 컴퓨터 판독가능 매체(140) 상의 데이터 구조(들)는 원하는 대로, 네트리스트(들)(합성 라이브러리를 갖거나 갖지 않음) 또는 데이터 세트(들)일 수 있다. 또 다른 대안에서, 데이터 구조들은 스키매틱 프로그램(schematic program)의 출력, 또는 그로부터 도출된 네트리스트(들) 또는 데이터 세트(들)을 포함할 수 있다.
컴퓨터 판독가능 매체(140)가 회전 유닛(10)의 표현을 포함하긴 하지만, 다른 실시예들은 회전 유닛(10)의 임의의 부분 또는 부분들의 조합의 표현을 포함할 수 있다(예를 들어, 페치 유닛(12), 타일 버퍼들(24-30), 룩업 테이블(18)).
상기 설명된 실시예들은 비제한적인 구현예에 지나지 않는다는 점이 강조되어야 한다. 본 기술분야의 숙련된 자들은 상기의 명세서를 완전하게 알고 나면, 다수의 변형 및 수정을 분명히 알게 될 것이다. 이하의 청구항들은 그러한 변형 및 수정 전부를 포괄하는 것으로 해석되도록 의도된다.
Claims (20)
- 페치 유닛;
하나 이상의 타일 버퍼; 및
상기 페치 유닛에 연결된 메모리
를 포함하고,
상기 페치 유닛은, 상기 메모리에 저장된 원본 이미지(source image)로부터 화소들을 판독하기 위해서 복수의 판독 동작을 발생시키고 - 상기 복수의 판독 동작은 상기 원본 이미지에 대해 수행되는 회전에 기초하는 순서로 발생함 - ,
상기 화소들을 회전된 이미지의 화소들의 열(column)이 제1 타일 버퍼로부터 단일 클럭 사이클 내에 판독될 수 있도록 하는 배치(arrangement)로 상기 제1 타일 버퍼 내의 위치들에 기입하도록 구성되고,
상기 회전된 이미지는 상기 원본 이미지에 상기 회전이 수행된 이후의 이미지인, 이미지를 회전시키기 위한 장치. - 제1항에 있어서,
회전이 있는 경우 상기 원본 이미지의 단일 라인으로부터의 화소들은 상기 제1 타일 버퍼 내의 단일 라인에 기입되고,
회전이 없는 경우, 상기 원본 이미지의 단일 라인으로부터의 화소들은 상기 제1 타일 버퍼 내의 대각선 라인에 기입되는, 이미지를 회전시키기 위한 장치. - 제2항에 있어서,
상기 원본 이미지는 복수의 타일을 포함하며, 각각의 타일 버퍼는 상기 원본 이미지의 단일 타일을 저장하도록 구성되는, 이미지를 회전시키기 위한 장치. - 제3항에 있어서,
각각의 타일의 폭은 상기 원본 이미지의 폭보다 작으며, 각각의 타일의 길이는 상기 원본 이미지의 길이보다 작은, 이미지를 회전시키기 위한 장치. - 제4항에 있어서, 수직 스케일러 유닛을 더 포함하고, 상기 제1 타일 버퍼는 복수의 랜덤 액세스 메모리(RAM)를 포함하고, 상기 제1 타일 버퍼 내의 상기 복수의 RAM의 각각의 RAM은 단일 클럭 사이클 내에 상기 RAM에 단일 화소만이 기입되거나 상기 RAM으로부터 단일 화소만이 판독되도록 허용하고, 상기 수직 스케일러 유닛은 단일 클럭 사이클 내에 상기 제1 타일 버퍼의 상기 복수의 RAM의 각각 RAM으로부터 단일 화소를 판독하도록 구성되는, 이미지를 회전시키기 위한 장치.
- 제5항에 있어서,
목표 화소 위치들을 저장하도록 구성된 테이블을 더 포함하고, 상기 목표 화소 위치들은 주어진 타일 버퍼 내의 위치들에 대응하며,
상기 수직 스케일러 유닛은 단일 클럭 사이클 내에 상기 제1 타일 버퍼로부터 열 전체의 화소들을 판독하도록 구성되고,
상기 제1 타일 버퍼로부터의 상기 열 전체의 화소들은 상기 회전된 이미지의 열에 대응하는, 이미지를 회전시키기 위한 장치. - 제6항에 있어서,
상기 테이블은 상기 테이블 내의 각각의 엔트리에 대한 트랜잭션 식별자(ID)를 저장하도록 구성되고, 상기 트랜잭션 ID는 상기 복수의 판독 동작 중 하나의 판독 동작에 대응하며, 상기 판독 동작으로부터 화소들을 수신하는 것에 응답하여, 상기 페치 유닛은, 상기 테이블 내의 대응하는 엔트리를 이용하여 주어진 타일 버퍼 내의 목표 화소 위치들을 결정하도록 구성되는, 이미지를 회전시키기 위한 장치. - 제6항에 있어서,
상기 페치 유닛은, 상기 복수의 판독 동작 중 하나의 판독 동작을 발생시키면서 동시에 대응하는 목표 화소 위치들을 상기 테이블에 기입하도록 구성되는, 이미지를 회전시키기 위한 장치. - 제1항에 있어서,
메모리 관리 유닛(MMU)을 더 포함하고,
상기 페치 유닛은 상기 복수의 판독 동작에 대한 가상 어드레스들을 발생시키도록 구성되며,
상기 MMU는,
상기 가상 어드레스들을 상기 메모리 내의 물리적 어드레스들로 변환하고,
상기 물리적 어드레스들에 대한 판독 동작들을 수행하며,
검색된 화소들을 상기 페치 유닛에 전달하도록
구성되는, 이미지를 회전시키기 위한 장치. - 제9항에 있어서,
상기 페치 유닛은, 가상 어드레스 변환들을 프리로드하기 위해서 프리페치 요청들을 발생시키도록 또한 구성되는, 이미지를 회전시키기 위한 장치. - 회전 유닛으로서,
원본 이미지에 대해 수행될 선택된 회전을 나타내는 구성 비트들을 수신하고;
상기 원본 이미지에 대한 판독 요청들을 발행하고 - 상기 판독 요청들은 상기 선택된 회전에 기초하는 순서로 발행됨 -;
각각의 판독 요청에 대하여, 회전된 이미지에서의 대응하는 화소들의 목표 위치들을 계산하고 - 상기 회전된 이미지는, 상기 원본 이미지에 상기 선택된 회전이 수행된 이후의 이미지임 -;
상기 계산된 목표 위치들을 테이블에 저장하고;
상기 원본 이미지로부터의 화소들을 수신하며;
상기 계산된 목표 위치들을 검색하여, 회전된 이미지의 화소들의 열이 타일 버퍼로부터 단일 클럭 사이클 내에 판독될 수 있도록 하는 배치로 상기 수신된 화소들을 상기 타일 버퍼 내에서, 상기 회전된 이미지 내의 상기 대응하는 화소들의 상기 계산된 목표 위치들에 저장하도록
구성되는 회전 유닛. - 제11항에 있어서,
상기 원본 이미지는 복수의 타일들로 구획화되고,
상기 타일들은 상기 선택된 회전에 기초하는 순서로 상기 원본 이미지로부터 판독되며,
상기 타일 버퍼는 상기 회전된 이미지의 개별적인 타일을 저장하는데 이용되고,
회전이 있는 경우 상기 원본 이미지의 단일 라인으로부터의 화소들은 상기 타일 버퍼 내의 단일 라인에 기입되고,
회전이 없는 경우 상기 원본 이미지의 단일 라인으로부터의 화소들은 상기 타일 버퍼 내의 대각선 라인에 기입되는, 회전 유닛. - 제12항에 있어서,
상기 타일 버퍼는 복수의 RAM을 포함하고,
상기 타일 버퍼 내의 각각의 RAM은 단일 클럭 사이클 내에 상기 RAM에 단일 화소만이 기입되거나 상기 RAM으로부터 단일 화소만이 판독되도록 허용하고,
상기 화소들은 후속 스테이지가 단일 클럭 사이클 내에 상기 타일 버퍼로부터 열 전체의 화소들을 판독하는 것을 허용하도록 상기 타일 버퍼 내에 저장되고,
상기 타일 버퍼로부터의 상기 열 전체의 화소들은 상기 회전된 이미지의 열에 대응하고,
상기 후속 스테이지는 수직 스케일러 유닛인, 회전 유닛. - 원본 이미지로부터의 화소들에 대한 페치 요청들을 발행하는 단계 - 상기 페치 요청들이 발행되는 순서는 지정된 회전에 기초함 -;
상기 화소들에 대한 목표 위치들을 계산하는 단계 - 상기 목표 위치들은 상기 지정된 회전에 기초하여 계산되며, 상기 목표 위치들은 상기 원본 이미지의 회전된 버전 내의 위치들에 대응함 -; 및
상기 화소들을 수신하여, 상기 원본 이미지의 상기 회전된 버전의 화소들의 열이 타일 버퍼로부터 단일 클럭 사이클 내에 판독될 수 있도록 하는 배치로 상기 계산된 목표 위치들에서 상기 타일 버퍼에 저장하는 단계
를 포함하는 이미지를 회전시키기 위한 방법. - 제14항에 있어서,
상기 페치 요청들을 발행하는 것에 응답하여, 상기 계산된 목표 위치들을 테이블에 저장하는 단계; 및
상기 화소들을 수신하는 것에 응답하여, 상기 테이블에서 상기 계산된 목표 위치들을 룩업하는 단계
를 더 포함하는, 이미지를 회전시키기 위한 방법. - 제15항에 있어서,
회전이 있는 경우 상기 원본 이미지의 단일 라인으로부터의 화소들을 상기 타일 버퍼 내의 단일 라인에 기입하는 단계; 및
회전이 없는 경우 상기 원본 이미지의 단일 라인으로부터의 화소들을 상기 타일 버퍼 내의 대각선 라인에 기입하는 단계를 더 포함하는, 이미지를 회전시키기 위한 방법. - 제14항에 있어서,
상기 타일 버퍼는 복수의 RAM을 포함하고,
상기 타일 버퍼 내의 각각의 RAM은 단일 클럭 사이클 내에 상기 RAM에 단일 화소만이 기입되거나 상기 RAM으로부터 단일 화소만이 판독되도록 허용하고,
상기 방법은, 단일 클럭 사이클 내에 상기 타일 버퍼로부터 열 전체의 화소들을 판독하는 단계를 더 포함하고,
상기 타일 버퍼로부터의 상기 열 전체의 화소들은 상기 원본 이미지의 상기 회전된 버전의 열에 대응하는, 이미지를 회전시키기 위한 방법. - 원본 이미지를 복수의 타일로 구획화하는 단계 - 상기 구획화는 지정된 회전에 기초함 -;
상기 원본 이미지의 제1 타일로부터 화소들을 판독하는 단계;
상기 제1 타일로부터의 화소들을 타일 버퍼 내의 목표 위치들에 저장하는 단계 - 회전된 이미지의 화소들의 열이 상기 타일 버퍼로부터 단일 사이클 내에 판독될 수 있도록 상기 목표 위치들은 상기 지정된 회전에 기초하여 계산되고, 상기 회전된 이미지는 상기 원본 이미지에 대해 상기 회전이 수행된 이후의 이미지임 -;
상기 타일 버퍼가 그래픽 파이프라인에서 후속 스테이지에 의해 판독되었음을 검출하는 것에 응답하여,
상기 원본 이미지의 제2 타일로부터 화소들을 판독하는 단계; 및
상기 제2 타일로부터의 화소들을 상기 타일 버퍼에 저장하는 단계
를 포함하는 이미지를 회전시키기 위한 방법. - 제18항에 있어서,
회전이 있는 경우 상기 원본 이미지의 단일 라인으로부터의 화소들을 상기 타일 버퍼 내의 단일 라인에 기입하는 단계: 및
회전이 없는 경우 상기 원본 이미지의 단일 라인으로부터의 화소들을 상기 타일 버퍼 내의 대각선 라인에 기입하는 단계를 더 포함하는, 이미지를 회전시키기 위한 방법. - 제19항에 있어서,
상기 타일 버퍼는 복수의 개별적인 RAM을 포함하고,
상기 타일 버퍼 내의 상기 복수의 RAM의 각각의 RAM은 단일 클럭 사이클 내에 상기 RAM에 단일 화소만이 기입되거나 상기 RAM으로부터 단일 화소만이 판독되도록 허용하고,
상기 후속 스테이지의 스케일러 유닛은, 단일 클럭 사이클 내에 상기 타일 버퍼 내의 각각의 RAM으로부터 단일 화소를 판독하고, 단일 클럭 사이클 내에 상기 타일 버퍼로부터 열 전체의 화소들을 페치하도록 구성되고,
상기 타일 버퍼로부터의 상기 열 전체의 화소들은 상기 회전된 이미지의 열에 대응하는, 이미지를 회전시키기 위한 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/306,429 US8797359B2 (en) | 2011-11-29 | 2011-11-29 | Inline image rotation |
US13/306,429 | 2011-11-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130060114A KR20130060114A (ko) | 2013-06-07 |
KR101490556B1 true KR101490556B1 (ko) | 2015-02-05 |
Family
ID=47262973
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR20120109286A KR101490556B1 (ko) | 2011-11-29 | 2012-09-28 | 인라인 이미지 회전 |
Country Status (8)
Country | Link |
---|---|
US (1) | US8797359B2 (ko) |
EP (1) | EP2600337A3 (ko) |
JP (1) | JP5632891B2 (ko) |
KR (1) | KR101490556B1 (ko) |
CN (1) | CN103136721B (ko) |
AU (1) | AU2012227210B2 (ko) |
TW (1) | TWI482122B (ko) |
WO (1) | WO2013081715A1 (ko) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120272180A1 (en) * | 2011-04-20 | 2012-10-25 | Nokia Corporation | Method and apparatus for providing content flipping based on a scrolling operation |
CN103377030B (zh) * | 2012-04-26 | 2016-12-21 | 华为技术有限公司 | 图像旋转控制方法及装置 |
US9934735B2 (en) * | 2012-11-13 | 2018-04-03 | Beijing Lenovo Software Ltd. | Display control method and electronic device |
KR102069857B1 (ko) * | 2013-02-28 | 2020-01-23 | 삼성전자주식회사 | 자체-학습을 통해 원래 이미지를 회전하는 방법과 상기 방법을 수행할 수 있는 장치들 |
JP6161400B2 (ja) * | 2013-05-17 | 2017-07-12 | キヤノン株式会社 | 動画再生装置及びその制御方法 |
US20150042669A1 (en) * | 2013-08-08 | 2015-02-12 | Nvidia Corporation | Rotating displayed content on an electronic device |
US9571846B2 (en) * | 2013-09-27 | 2017-02-14 | Apple Inc. | Data storage and access in block processing pipelines |
GB2527033A (en) | 2014-06-02 | 2015-12-16 | Nokia Technologies Oy | A method and technical equipment for image processing |
US10535114B2 (en) * | 2015-08-18 | 2020-01-14 | Nvidia Corporation | Controlling multi-pass rendering sequences in a cache tiling architecture |
KR102491622B1 (ko) * | 2015-11-17 | 2023-01-25 | 삼성전자주식회사 | 가상 어드레스 생성기의 동작 방법과 이를 포함하는 시스템의 동작 방법 |
US10457066B2 (en) * | 2015-11-30 | 2019-10-29 | Hewlett-Packard Development Company, L.P. | Image transformations based on defects |
GB2545398B (en) * | 2015-12-08 | 2020-02-19 | Advanced Risc Mach Ltd | Advance loading of memory page access data in data processing systems |
KR102531741B1 (ko) | 2016-01-12 | 2023-05-11 | 삼성전자 주식회사 | 멀티플 버퍼를 가지는 메모리 장치 및 멀티플 버퍼를 가지는 메모리를 구동하는 방법 |
EP3301929A1 (en) * | 2016-09-30 | 2018-04-04 | Thomson Licensing | Method and apparatus for encoding and decoding a large field of view video |
CN111263085A (zh) * | 2020-01-21 | 2020-06-09 | 中国航空无线电电子研究所 | 基于块式存储操作的航空显示任务旋转处理系统 |
TWI786497B (zh) | 2020-12-22 | 2022-12-11 | 宏正自動科技股份有限公司 | 影像輸出裝置、影像接收裝置及影像傳輸方法 |
CN114866855B (zh) * | 2022-04-29 | 2024-01-19 | 陕西科技大学 | 一种异型显示屏像素数据组织与传输方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10208031A (ja) * | 1997-01-17 | 1998-08-07 | Fuji Xerox Co Ltd | 画像処理装置 |
JPH11146159A (ja) * | 1997-11-10 | 1999-05-28 | Ricoh Co Ltd | 画像形成装置 |
US6104843A (en) * | 1995-06-16 | 2000-08-15 | Fuji Xerox Co., Ltd. | Image data storing method and image data rotational processing device |
US6628294B1 (en) * | 1999-12-31 | 2003-09-30 | Intel Corporation | Prefetching of virtual-to-physical address translation for display data |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5111192A (en) * | 1989-12-20 | 1992-05-05 | Xerox Corporation | Method to rotate a bitmap image 90 degrees |
DE69633963T2 (de) * | 1995-02-08 | 2005-05-25 | Sony Corp. | Apparat zum editieren von bildern |
US5670982A (en) | 1995-02-08 | 1997-09-23 | International Business Machines Corporation | System for fast 90-degree rotation of bi-level images |
JPH08258344A (ja) | 1995-03-23 | 1996-10-08 | Canon Inc | 印刷装置 |
US5854641A (en) | 1996-09-27 | 1998-12-29 | Apple Computer, Inc. | Method and apparatus for display image rotation |
US5990912A (en) | 1997-06-27 | 1999-11-23 | S3 Incorporated | Virtual address access to tiled surfaces |
JP2001183940A (ja) | 1999-12-24 | 2001-07-06 | Canon Inc | 画像形成装置および画像形成方法 |
JP2003338922A (ja) | 2002-05-21 | 2003-11-28 | Sony Corp | 画像処理装置及び方法 |
US6847385B1 (en) | 2002-06-01 | 2005-01-25 | Silicon Motion, Inc. | Method and apparatus for hardware rotation |
US7376286B2 (en) | 2002-09-18 | 2008-05-20 | Nxp B.V. | Block-based rotation of arbitrary-shaped images |
EP1507249A1 (en) | 2003-08-12 | 2005-02-16 | ARM Limited | Display controller for rotation of display image |
TWI266228B (en) * | 2004-05-07 | 2006-11-11 | Realtek Semiconductor Corp | Dynamic image display device and its method |
US7576758B2 (en) | 2005-03-08 | 2009-08-18 | Texas Instruments Incorporated | Using super-pixels for efficient in-place rotation of images |
US7512287B2 (en) | 2005-07-25 | 2009-03-31 | Seiko Epson Corporation | Method and apparatus for efficient image rotation |
US7876977B2 (en) | 2006-02-15 | 2011-01-25 | Conexant Systems, Inc. | Image processor and method of image rotation |
US7791611B1 (en) * | 2006-08-24 | 2010-09-07 | Nvidia Corporation | Asynchronous reorder buffer |
JP2008085450A (ja) | 2006-09-26 | 2008-04-10 | Kyocera Mita Corp | 画像形成装置 |
US7924296B2 (en) | 2007-02-20 | 2011-04-12 | Mtekvision Co., Ltd. | System and method for DMA controlled image processing |
US8195008B2 (en) * | 2007-06-28 | 2012-06-05 | Broadcom Corporation | Method and system for processing video data in a multipixel memory to memory compositor |
JP5007272B2 (ja) | 2008-05-15 | 2012-08-22 | 理想科学工業株式会社 | 画像形成方法および画像形成システム |
JP2010114576A (ja) | 2008-11-05 | 2010-05-20 | Seiko Epson Corp | 画像処理装置 |
US20110227920A1 (en) * | 2010-03-19 | 2011-09-22 | James Adams | Method and System For a Shader Processor With Closely-Coupled Peripherals |
US8405668B2 (en) * | 2010-11-19 | 2013-03-26 | Apple Inc. | Streaming translation in display pipe |
-
2011
- 2011-11-29 US US13/306,429 patent/US8797359B2/en active Active
-
2012
- 2012-09-14 WO PCT/US2012/055429 patent/WO2013081715A1/en active Application Filing
- 2012-09-19 AU AU2012227210A patent/AU2012227210B2/en not_active Ceased
- 2012-09-20 EP EP12185179.4A patent/EP2600337A3/en not_active Withdrawn
- 2012-09-25 TW TW101135174A patent/TWI482122B/zh active
- 2012-09-28 KR KR20120109286A patent/KR101490556B1/ko active IP Right Grant
- 2012-09-28 CN CN201210504118.9A patent/CN103136721B/zh active Active
- 2012-09-28 JP JP2012230296A patent/JP5632891B2/ja not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6104843A (en) * | 1995-06-16 | 2000-08-15 | Fuji Xerox Co., Ltd. | Image data storing method and image data rotational processing device |
JPH10208031A (ja) * | 1997-01-17 | 1998-08-07 | Fuji Xerox Co Ltd | 画像処理装置 |
JPH11146159A (ja) * | 1997-11-10 | 1999-05-28 | Ricoh Co Ltd | 画像形成装置 |
US6628294B1 (en) * | 1999-12-31 | 2003-09-30 | Intel Corporation | Prefetching of virtual-to-physical address translation for display data |
Also Published As
Publication number | Publication date |
---|---|
AU2012227210A1 (en) | 2013-06-13 |
TW201322181A (zh) | 2013-06-01 |
JP2013114675A (ja) | 2013-06-10 |
KR20130060114A (ko) | 2013-06-07 |
WO2013081715A1 (en) | 2013-06-06 |
CN103136721B (zh) | 2015-12-09 |
EP2600337A3 (en) | 2017-03-08 |
EP2600337A2 (en) | 2013-06-05 |
US20130135351A1 (en) | 2013-05-30 |
CN103136721A (zh) | 2013-06-05 |
JP5632891B2 (ja) | 2014-11-26 |
AU2012227210B2 (en) | 2013-12-12 |
US8797359B2 (en) | 2014-08-05 |
TWI482122B (zh) | 2015-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101490556B1 (ko) | 인라인 이미지 회전 | |
US7864185B1 (en) | Register based queuing for texture requests | |
TWI390400B (zh) | 繪圖處理子系統 | |
US8949554B2 (en) | Idle power control in multi-display systems | |
TWI437507B (zh) | 具有多線程執行單元之繪圖處理裝置及其記憶體存取方法 | |
US9811873B2 (en) | Scaler circuit for generating various resolution images from single image and devices including the same | |
KR101672154B1 (ko) | 유휴 컴포넌트들의 전원을 차단함으로써 디스플레이 파이프라인에서 전력을 절감하는 방법 및 디바이스 | |
JP2016509280A (ja) | グラフィックスプロセッシングユニットベースのメモリ転送動作を行うためのマルチモードメモリアクセス技法 | |
KR102254676B1 (ko) | 이미지를 실시간으로 처리할 수 있는 이미지 처리 회로와 이를 포함하는 장치들 | |
KR20170005031A (ko) | 타일 기반의 렌더링 gpu 아키텍처를 위한 임의의 타일 형상을 갖는 적응적 파티션 메커니즘 | |
US9196014B2 (en) | Buffer clearing apparatus and method for computer graphics | |
US20030142102A1 (en) | Texture mapping performance by combining requests for image data | |
Yum et al. | A novel hardware architecture with reduced internal memory for real-time extraction of SIFT in an HD video | |
US9035961B2 (en) | Display pipe alternate cache hint | |
CN105072342B (zh) | 图像合成装置及方法 | |
US20140089604A1 (en) | Bipolar collapsible fifo | |
US10769746B2 (en) | Data alignment and formatting for graphics processing unit | |
JP2008117108A (ja) | 半導体集積回路装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20180103 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20190103 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20200103 Year of fee payment: 6 |