KR102508987B1 - 그래픽 표면 어드레싱 - Google Patents

그래픽 표면 어드레싱 Download PDF

Info

Publication number
KR102508987B1
KR102508987B1 KR1020200111744A KR20200111744A KR102508987B1 KR 102508987 B1 KR102508987 B1 KR 102508987B1 KR 1020200111744 A KR1020200111744 A KR 1020200111744A KR 20200111744 A KR20200111744 A KR 20200111744A KR 102508987 B1 KR102508987 B1 KR 102508987B1
Authority
KR
South Korea
Prior art keywords
space
address
graphics
virtual space
conversion
Prior art date
Application number
KR1020200111744A
Other languages
English (en)
Other versions
KR20210029683A (ko
Inventor
앤서니 피. 델로리어
마이클 제이. 스위프트
마이클 발리언트
로버트 에스. 할톡
타이슨 제이. 버그랜드
고칸 아브카로굴라리
Original Assignee
애플 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 애플 인크. filed Critical 애플 인크.
Publication of KR20210029683A publication Critical patent/KR20210029683A/ko
Application granted granted Critical
Publication of KR102508987B1 publication Critical patent/KR102508987B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/001Texturing; Colouring; Generation of texture or colour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/455Image or video data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/654Look-ahead translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/681Multi-level TLB, e.g. microTLB and main TLB
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Image Generation (AREA)

Abstract

그래픽 표면들에 대한 메모리 할당에 관한 기술들이 개시된다. 일부 실시예들에서, 그래픽 프로세싱 회로부는 그래픽 표면에 할당된 표면 공간 내의 어드레스에 기초하여 그래픽 표면에 액세스하도록 구성된다. 일부 실시예들에서, 제1 변환 회로부는 표면 공간의 페이지들에 대한 다수의 변환 엔트리들의 세트 내의 하나 이상의 엔트리들에 액세스하고(여기서 변환 엔트리들은 가상 공간 내의 어드레스들을 사용하여 저장되고 표면 공간의 페이지들을 가상 공간에 맵핑함), 변환 엔트리들 중 하나 이상에 기초하여 표면 공간에 대한 어드레스 정보를 가상 공간 내의 어드레스 정보로 변환하도록 구성된다. 일부 실시예들에서, 그래픽 프로세싱 회로부는, 가상 공간 내의 어드레스를 그래픽 표면을 저장하도록 구성된 메모리의 물리적 공간 내의 어드레스로 변환하도록 구성된 제1 변환 회로부 및 제2 변환 회로부에 의한 변환에 기초하여 그래픽 표면에 대한 액세스를 위한 어드레스를 제공하도록 구성된다. 개시된 기술들은 다양한 실시예들에서 큰 그래픽 표면들의 희소 할당을 허용할 수 있다.

Description

그래픽 표면 어드레싱{GRAPHICS SURFACE ADDRESSING}
본 개시내용은 일반적으로 메모리 할당에 관한 것이며, 보다 상세하게는 그래픽 표면들에 대한 다층 어드레스 변환에 관한 것이다.
그래픽 프로세서들은 종종 렌더링되는 장면들에 대한 픽셀 속성들을 결정하기 위해 텍스처들과 같은 표면들을 사용한다. 표면들은 종종 많은 양의 데이터(예를 들어, 고해상도 이미지들의 경우)를 포함하여, 소정 시나리오들에서 표면에 대한 메모리 공간을 할당하는 것이 다른 프로세싱에 부정적인 영향을 미칠 수 있다.
도 1은 일부 실시예들에 따른, 표면 공간 내의 어드레스들을 프로세싱하도록 구성된 예시적인 다층 변환 회로부를 예시한 블록도이다.
도 2a는 일부 실시예들에 따른, 예시적인 표면, 가상, 및 물리적 공간들을 예시한 도면이다.
도 2b는 일부 실시예들에 따른, 예시적인 표면 공간 변환 테이블을 예시한 도면이다.
도 3은 일부 실시예들에 따른, 변환 회로부의 보다 상세한 예를 예시한 블록도이다.
도 4는 일부 실시예들에 따른, 표면 공간을 사용하여 표면에 액세스하기 위한 예시적인 방법을 예시한 흐름도이다.
도 5는 일부 실시예들에 따른, 하나 이상의 그래픽 프로세서들을 포함할 수 있는 예시적인 컴퓨팅 디바이스를 예시한 블록도이다.
도 6은 일부 실시예들에 따른, 회로 설계 정보를 저장하는 예시적인 컴퓨터 판독가능 매체를 예시한 블록도이다.
이 명세서는 다양한 실시예들에 대한 참조를 포함하여, 본 개시내용이 하나의 특정 구현을 지칭하는 것이 아니라 오히려 첨부된 청구범위를 포함하는 본 개시내용의 사상 내에 포함되는 실시예들의 범위를 지칭하는 것으로 의도된다. 특정 특징들, 구조들 또는 특성들이 본 개시내용과 일관성을 유지하는 임의의 적합한 방식으로 조합될 수 있다.
본 개시내용 내에서, 상이한 엔티티들(이들은 "유닛들", "회로들", 다른 컴포넌트들 등으로 다양하게 지칭될 수 있음)은 하나 이상의 태스크들 또는 동작들을 수행하도록 "구성된" 것으로 기술되거나 또는 청구될 수 있다. 이러한 공식 - [하나 이상의 태스크들을 수행]하도록 구성된 [엔티티] -은 본 명세서에서 구조(즉, 전자 회로와 같은 물리적인 것)를 지칭하는 데 사용된다. 더 상세하게는, 이러한 공식은 이 구조가 동작 시 하나 이상의 태스크들을 수행하도록 구성됨을 표시하는 데 사용된다. 구조가 현재 동작되고 있지 않더라도, 구조는 일부 태스크를 수행하도록 "구성된다"라고 말할 수 있다. "어드레스를 변환하도록 구성된 변환 회로"는, 예를 들어, 문제의 회로가 현재 사용되고 있지 않더라도(예를 들어, 전원 공급이 연결되어 있지 않음), 동작 도중 이 기능을 수행하는 회로를 포괄하는 것으로 의도된다. 따라서, 일부 태스크를 수행하도록 "구성된" 것으로 설명된 또는 인용된 엔티티는 디바이스, 회로, 태스크를 구현하도록 실행가능한 프로그램 명령어들을 저장하는 메모리 등과 같은 물리적인 것을 지칭한다. 이러한 문구는 본 명세서에서 무형인 것을 지칭하기 위해 사용되지는 않는다.
용어 "구성된"은 "구성가능한"을 의미하도록 의도되지 않는다. 예를 들어, 프로그램되지 않은 FPGA는, 그것이 일부 구체적인 기능을 수행하도록 "구성가능"할 수 있지만, 그 기능을 수행하도록 "구성된" 것으로 고려되지 않을 것이다. 적절한 프로그래밍 후에, 이어서 FPGA는 그 기능을 수행하도록 구성될 수 있다.
구조가 하나 이상의 태스크들을 수행하도록 "구성"되었다고 첨부된 청구항들에 인용하는 것은 명백히 그 청구항 구성요소에 대하여 35 U.S.C. §(112)(f)를 적용하지 않도록 의도된다. 따라서, 출원된 본 출원서의 어떠한 청구항들도 수단+기능식 구성요소들을 갖는 것으로 해석되도록 의도되지 않는다. 출원인이 심사 시 Section(112)(f)의 적용을 바란다면, [기능을 수행]"하기 위한 수단" 구조를 사용하여 청구항 구성요소들을 인용할 것이다.
본 명세서에서 사용되는 바와 같이, 용어 "기초하여"는 결정에 영향을 주는 하나 이상의 인자들을 설명하기 위해 사용된다. 이러한 용어는 부가적인 인자들이 결정에 영향을 줄 수 있는 가능성을 배제하지 않는다. 즉, 결정은 단지 특정 인자들에 기초하거나 또는 그 특정 인자들뿐만 아니라 다른, 불특정 인자들에 기초할 수 있다. "B에 기초하여 A를 결정한다"라는 문구를 고려한다. 이러한 문구는 B가 A를 결정하는 데 사용되거나 A의 결정에 영향을 주는 인자라는 것을 명시한다. 이러한 문구는 A의 결정이 C와 같은 일부 다른 인자에 또한 기초할 수 있음을 배제하지 않는다. 또한, 이 문구는 A가 B만에 기초하여 결정되는 실시예를 포괄하도록 의도된다. 본 명세서에서 사용되는 바와 같이, "에 기초하여"라는 문구는 "적어도 부분적으로 기초하여"라는 문구와 동의어이다.
또한, 본 명세서에 사용되는 바와 같이, 용어들 "제1", "제2", "제3" 등은 반드시 요소들 사이의 순서화(예를 들어, 시간적)를 암시하는 것은 아니다. 예를 들어, "제1" 그래픽 동작 및 "제2" 그래픽 동작에 대한 언급은 이들 동작들 사이의 시간적 관계를 제약하는 추가 언어가 부재한 경우 그래픽 동작의 순서를 암시하지 않는다. 요약하면, "제1", "제2" 등과 같은 참조들은 발명을 실시하기 위한 구체적인 내용 및 첨부된 청구항들에서 참조의 용이함을 위한 라벨들로서 사용된다.
텍스처들과 같은 그래픽 표면들은 종종 렌더링되는 장면에 대한 픽셀 속성들을 결정하는 데 사용된다. 예를 들어, 그래픽 프로세서는 다양한 기술들 또는 필터들을 사용하여 장면 좌표들을 텍스처 좌표들 및 그러한 텍스처 좌표들 부근의 샘플 텍셀(texel)들에 맵핑하여 픽셀 속성들을 결정할 수 있다. 일부 텍스처들은, 예를 들어, 고해상도 텍스처들의 경우 상당한 양의 데이터를 포함할 수 있다. 개시된 실시예들에서, 시스템은 전체 표면에 대해 메모리 공간을 할당하지 않으면서 그래픽 표면들을 사용하도록 구성된다. 예를 들어, 당업자에게 잘 이해되는 바와 같이, 다수의 밉맵(mipmap)들이 텍스처에 대한 상이한 상세 레벨들을 나타내도록 생성되는 경우, 표면들은 3개의(또는 그 이상의) 치수들을 가질 수 있다는 것에 유의한다.
가상 공간 내로 직접 맵핑되는 대신, 일부 실시예들에서, 희소 할당을 갖는 표면들은 그들 자체 표면 공간을 가질 수 있다. 표면 공간은 주어진 표면에 대해 고유할 수 있고, 상이한 표면들에 대한 다수의 표면 공간들이 가상 공간에 맵핑될 수 있다. 일부 실시예들에서, 표면 공간은 각각의 희소 표면에 대한 변환 테이블을 사용하여 희소 페이지 입상(granule)들 내의 가상 공간에 맵핑된다. 일부 실시예들에서, 표면 공간의 페이지들은 가상 공간 내의 연속적인(contiguous) 페이지들에 맵핑되며, 이는 베이스 어드레스 및 오프셋을 사용하는 변환들을 허용할 수 있다. 표면 공간에서의 어드레스들을 이용한 액세스들은 다수의 변환들, 예를 들어, 가상 공간으로의 제1 변환 및 물리적 공간으로의 제2 변환을 생성할 수 있다(여기서 제2 변환은 가상 공간 내의 어드레스로 시작하는 다른 액세스들과 유사할 수 있다). 예시적인 표면, 가상 및 물리적 공간들이 도 2를 참조하여 아래에서 상세히 논의된다. 표면 공간의 소정 페이지들은 다양한 실시예들에서, 표면을 희소하게 할당하는 경우 할당되지 않을 수 있고, 그들 페이지들에 대한 액세스들이 검출되고 적절히 처리될 수 있다는 것에 유의한다. 이들 기술들은, 다양한 실시예들에서, 전체 표면에 대해 메모리 공간을 할당하지 않으면서 큰 표면들의 사용을 허용할 수 있다. 일부 실시예들에서, 희소 표면의 맵핑되지 않은 페이지들에 대한 액세스들은 변환 회로부의 제1 세트에 의해 검출될 수 있고, 공유된 데이터 캐시에 대한 이들 액세스들의 대역폭 또는 할당 영향들을 피할 수 있다.
도 1은 일부 실시예들에 따른, 표면 공간 내의 어드레스들을 처리하도록 구성된 예시적인 다층 변환 회로부를 예시한 블록도이다. 예시된 실시예에서, 디바이스는 프로세싱 회로부(110), 제1 변환 회로부(120), 제2 변환 회로부(130), 및 메모리(140)를 포함한다. 예시된 실시예에서, 제1 변환 회로부(120)는 표면 공간 내의 어드레스들과 가상 공간 내의 어드레스들 사이에서 변환하도록 구성되는 한편, 제2 변환 회로부(130)는 가상 공간 내의 어드레스들과 물리적 공간 내의 어드레스들 사이에서 변환하도록 구성된다.
일부 실시예들에서, 프로세싱 회로부(110)는 메모리(140) 내의 희소하게 할당된 표면들에 액세스하도록 구성된다. 메모리(140)는 캐시/메모리 계층구조의 일부일 수 있다는 것에 유의한다. 당업계에서 잘 이해되는 바와 같이, 디바이스는 메모리(140)에 의해 제공되는 실제 물리적 공간보다 더 큰 가상 공간을 구현할 수 있다. 프로세싱 회로부(110)의 비제한적인 예들은 텍스처 프로세싱 유닛(TPU) 또는 픽셀 백엔드(PBE: pixel back-end)를 포함한다. 일부 실시예들에서, 희소 어드레싱은 디바이스에 포함된 프로세싱 회로부의 일부분에만 이용가능할 수 있다(예를 들어, 이 기능은 TPU 및 PBE에 이용가능할 수 있지만, 프로그램가능 쉐이더 파이프라인들과 같은 다른 회로부에는 이용가능하지 않을 수 있다). 예시된 실시예에서, 프로세싱 회로부(110)는 희소하게 할당된 표면에 액세스할 때 제1 변환 회로부(120)에 표면 공간에 대한 어드레스 정보를 제공하도록 구성된다. 이러한 어드레스 정보는, 예를 들어, 표면 공간에 대한 변환 테이블의 어드레스를 포함할 수 있다.
예시된 실시예에서, 제1 변환 회로부(120)는 표면 공간에 대한 어드레스 정보를 수신하고 가상 공간 내의 대응하는 어드레스 정보를 프로세싱 회로부(110)에 제공하도록 구성된다. 일부 실시예들에서, 제1 변환 회로부(120)는 메모리(140)에 저장된 표면 공간 변환 테이블(165)에 기초하여 이러한 변환을 제공하도록 구성되며, 이는 가상 공간 내의 어드레스들을 사용하여 저장될 수 있고, 따라서 액세스되기 전에 물리적 공간 내의 어드레스들로의 변환을 요구할 수 있다. 일부 실시예들에서, 이러한 변환 테이블(165)은 실행되고 있는 그래픽 프로그램에 의해 채워진다. 일부 실시예들에서, 제1 변환 회로부(120)는 도 3을 참조하여 아래에서 더 상세히 논의되는 바와 같이 변환 테이블 데이터를 캐싱하도록 구성된다. 예시된 실시예에서, 제1 변환 회로부(120)는 (예를 들어, 가상 공간 내의 표면 공간 변환 테이블(165)에서 액세스되는 어드레스에 기초하여) 제2 변환 회로부(130)를 통해 변환 정보에 관한 요청을 하고 응답들을 수신하도록 구성된다. 표면 공간 내의 페이지가 맵핑되지 않는 경우, 제1 변환 회로부(120)는 어드레스 정보를 제공하는 대신에 프로세싱 회로부(110)에 이러한 상황을 나타낼 수 있다는 것에 유의한다.
예시된 실시예에서, 프로세싱 회로부(110)는 제1 변환 회로부(120)로부터 가상 공간 내의 어드레스 정보를 수신하고, 어드레스 정보에 기초하여 가상 공간 내의 어드레스를 제2 변환 회로부(130)에 제공한다. 예를 들어, 변환 회로부(120)로부터의 가상 공간 내의 어드레스 정보가 표면 공간 내의 희소 페이지에 대한 가상 공간 내의 어드레스인 경우, 프로세싱 회로부(110)는 표면 공간 내부의 연산된 오프셋 및 희소 페이지의 가상 어드레스에 기초하여 가상 공간 내의 액세스 어드레스를 생성할 수 있다. 다른 실시예들에서, 제1 변환 회로부(120)에 의해 생성된 어드레스 정보는, 구체적으로, (예를 들어, 프로세싱 회로부(110)가 연산된 오프셋을 변환 회로부(120)로 전송하는 실시예들에서) 제2 변환 회로부(130)에 제공될 가상 공간 내의 어드레스를 포함할 수 있다.
예시된 실시예에서, 제2 변환 회로부(130)는 가상 공간 내의 어드레스들을 수신하고 이들을 물리적 어드레스들, 예를 들어, 액세스될 데이터를 그래픽 표면 부분(155)(메모리(140)에 저장됨)에 저장하는 데 사용되는 물리적 어드레스로 변환하도록 구성된다. 일부 실시예들에서, 제2 변환 회로부(130)는 메모리 관리 유닛(MMU)에 포함된다. 제2 변환 회로부(130)는 가상 공간 내의 어드레스를 물리적 공간 내의 어드레스로 변환하기 위해 다양한 적절한 변환 기술들 중 임의의 것을 사용할 수 있다. 일부 실시예들에서, 제2 변환 회로부(130)는 기존의 MMU 설계들을 갖는 제1 변환 회로부(120)의 사용을 허용할 수 있는 전통적인 페이징 기술들을 구현할 수 있다. 제2 변환 회로부(130)는 메모리(140)에 페이지 테이블을 저장할 수 있는데, 이는 (가상 공간 내의 어드레스들을 사용하여 초기에 어드레싱되는 표면 공간 변환 테이블(165)과는 달리) 물리적 공간 내의 어드레스들을 사용하여 초기에 어드레싱될 수 있다. 예시된 실시예에서, 제2 변환 회로부(130)는 물리적 어드레스를 메모리(140)에 제공하고, 이는 물리적 어드레스를 사용하여 데이터를 판독 또는 기록한다(판독의 경우, 제2 변환 회로부(130)는 예시된 예에서 판독 데이터를 프로세싱 회로부(110)에 제공하고, 기록을 위한 완료 신호를 제공할 수 있다).
일부 실시예들에서, 프로세싱 회로부(110)는 또한 가상 공간 내부의 전통적으로 할당된 표면들에 액세스하도록 구성된다. 표면들에는 그들 자체 표면 공간이 할당되지 않고, 가상 공간에 직접 할당된다. 예를 들어, 제어 정보는 표면들이 희소하게 할당되는지 여부를 나타낼 수 있다. 희소하게 할당되지 않은 표면에 액세스하는 경우, 프로세싱 회로부(110)는 제1 변환 회로부(120)를 사용하지 않고 제2 변환 회로부(130)에 직접 가상 공간 내의 어드레스를 제공할 수 있다.
그래픽 프로그램이 표면을 희소하게 할당할 수 있음을 고려해 볼 때(예를 들어, 표면 공간의 페이지들의 일부분에만 대한 맵핑들을 제공함), 프로세싱 회로부(110)로부터 제1 변환 회로부(120)로의 어드레스 정보는 표면 공간 변환 테이블(165)에 의해 맵핑되지 않은 페이지에 대응할 수 있다. 이러한 시나리오에서, 제1 변환 회로부(120)는 맵핑의 결여를 표시하는 신호를 프로세싱 회로부(110)에 제공할 수 있다. 다른 회로부 또는 실행되는 그래픽 프로그램은 이러한 표시에 기초하여 다양한 액션들을 취할 수 있다. 예를 들어, 프로세싱 회로부(110)가 텍스처 프로세싱 유닛인 경우, 이는 맵핑되지 않은 텍셀들에 대해 일정한 색상으로 필터링하고 그래픽 프로그램을 실행하는 프로그램가능 쉐이더에 부정적 확인응답(NACK)을 전송할 수 있다. 이어서 쉐이더는 요청된 페이지를 맵핑하는 것(예를 들어, 아래에서 상세히 논의되는 바와 같이, 활동 카운트들이 페이지가 액세스된 빈도를 표시하는 경우), 표면의 저-해상도 부분(예를 들어, 다른 밉맵 레벨)에 액세스하는 것 등과 같은 다양한 액션들을 취할 수 있다. 일부 실시예들에서, 픽셀 백엔드는 맵핑되지 않은 어드레스들에 대한 기록들을 드롭(drop)할 수 있다.
본 명세서에 개시된 다양한 실시예들이 그래픽 표면에 대한 할당에 관한 것이지만, 개시된 기술들은 그래픽 관련 여부에 관계없이 다양한 다른 데이터 구조들에 사용될 수 있으며; 그래픽 표면들은 예시의 목적으로 포함되지만, 본 개시내용의 범주를 제한하고자 하는 것은 아님에 유의한다. 또한, 개시된 기술들은, 예를 들어 그래픽 프로세서들에 더하여 또는 그들 대신에 중앙 프로세싱 유닛들과 같은 다른 타입들의 프로세서들에 의해 구현될 수 있다.
도 2a는 일부 실시예들에 따른, 예시적인 어드레스 공간들을 예시한 도면이다. 예시된 실시예에서, 시스템은 가상 공간(210), 다수의 표면 공간(220A 내지 220N), 및 물리적 공간(230)을 구현한다. 일부 실시예들에서, 가상 공간(210) 내부에 표면 공간(220)들을 맵핑하는 것은 더 적은 신뢰된 희소 표면 할당을 허용하면서도 가상 공간의 이점들을 제공할 수 있다(예를 들어, 가상 외부에서 물리적 공간은 물리적 맵핑에 액세스될 수 없다). 시스템은 가상 공간(210) 내의 어드레스들을 사용하여 각각의 표면 공간(220)에 대한 변환 테이블을 저장할 수 있고(그리고 이들 어드레스들은 실제 저장을 위해 물리적 공간(230) 내의 어드레스들로 변환됨), 시스템은 물리적 공간(230) 내의 어드레스들을 사용하여 가상 공간(210)에 대한 페이지 테이블을 저장할 수 있다는 것에 유의한다.
도 2b는 일부 실시예들에 따른, 예시적인 표면 공간 변환 테이블을 예시한 도면이다. 예시된 실시예에서, 테이블(165)은 다수의 엔트리들(250A 내지 250N) 및 대응하는 활동 카운트 필드들(260A 내지 260N)을 포함한다. 일부 실시예들에서, 표면 공간(220)의 각각의 페이지에 대한 엔트리(250)가 있다. 일부 실시예들에서, 각각의 엔트리(250)는 표면 공간 페이지와 가상 공간 페이지 사이의 맵핑, 또는 표면 공간 페이지에 대한 맵핑이 없다는 표시를 제공한다. 표면 공간 및 가상 공간에 대해 상이한 페이지 크기들을 갖는 실시예들에서, 엔트리들은 다수의 표면 공간 페이지들과 하나의 가상 공간 페이지 사이의 맵핑들을 표시할 수 있고, 그 반대도 가능하다는 것에 유의한다. 일부 실시예들에서, 각각의 엔트리(250)는 페이지가 맵핑되는지 여부를 표시하는 필드를 포함한다. 변환 회로부는 표면 공간(220) 내의 요청된 어드레스에 기초하여(예를 들어, 표면 공간에 대한 베이스 어드레스 필드 및 공간 내부의 결정된 오프셋에 기초하여) 테이블(165)의 적절한 엔트리에 액세스할 수 있다.
일부 실시예들에서, 활동 카운트 필드들(260)은 표면 공간의 대응하는 페이지에 액세스하도록 이루어진 시도들의 수를 표시하는 활동 카운트들을 저장하도록 구성된다. 일부 실시예들에서, 그래픽 프로그램은 이들 카운트들을 사용하여 표면 공간의 어느 페이지들을 맵핑하거나 맵핑해제할지에 대한 결정을 내릴 수 있다. 활동 카운트들은 페이지가 맵핑되지 않을 때에도 그 페이지에 액세스하기 위한 요청들에 기초하여 업데이트될 수 있다는 것에 유의한다. 또한, 활동 카운트들은 다양한 입도(granularity)들의 액세스들에 기초하여 유지될 수 있다. 예를 들어, 대응하는 활동 카운트를 증분시키도록 임계 바이트수의 액세스들이 보장될 수 있지만, 더 작은 액세스들도, 예를 들어, 특정 구현에서의 캐싱 거동에 기초하여, 증분들을 또한 야기할 수 있다.
일부 실시예들에서, 변환 테이블(165)에 저장된 데이터는, 예를 들어 테이블의 베이스 어드레스 후의 맵핑들의 제1 부분에 대한 어드레스들, 이어서 대응하는 활동 카운트들에 대한 어드레스들, 이어서 맵핑들의 다른 부분에 대한 어드레스들 등과 인터리빙된다. 위에서 논의된 바와 같이, 테이블(165)의 베이스 어드레스는 가상 공간(210) 내의 어드레스일 수 있다.
도 3은 일부 실시예들에 따른, 변환 회로부의 보다 상세한 예를 예시한 블록도이다. 도 1에서와 동일한 넘버링을 갖는 요소들은 도 1을 참조하여 위에서 논의된 바와 같이 구성될 수 있다는 것에 유의한다. 예시된 예에서, 디바이스는 프로세싱 회로부(110), 다른 프로세싱 회로부(322), 희소 레벨 1(L1) 캐시(320), 희소 레벨 2(L2) 캐시(325), L2 데이터 캐시(380), 제2 변환 회로부(130), 및 메모리(140)를 포함한다.
다른 프로세싱 회로부(322)는 희소 변환 회로부가 다수의 프로세싱 회로들, 예를 들어, 텍스처 프로세싱 유닛, 픽셀 백엔드 등에 의해 공유될 수 있음을 예시하기 위해 도시되어 있다. 다양한 실시예들에서, 희소 변환 회로부는 다양한 적절한 수의 클라이언트 회로들 중 임의의 것에 대한 어드레스들을 변환하도록 구성될 수 있다.
예시된 실시예에서, 표면 공간 내의 어드레스로부터 가상 공간으로 변환하도록 구성된 변환 회로부는 다수의 캐시 레벨들(320 및 325)을 포함한다. 일부 실시예들에서, 희소 L1 캐시(320) 및 희소 L2 캐시(325) 둘 모두는 표면 공간 변환 테이블(365)로부터의 엔트리들을 저장하도록 구성된다. 희소 L2 캐시(325)는 희소 L1 캐시(320)보다 더 많은 변환 엔트리들을 캐싱하도록 구성된 더 큰 캐시일 수 있다.
일부 실시예들에서, 표면 공간 내의 어드레스는 페이지 베이스 어드레스, 오프셋, 및 페이지 크기를 포함한다. 일부 실시예들에서, 프로세싱 회로부(110)는 표면 공간 내의 페이지 어드레스를 희소 L1 캐시(320)로 전송하여 페이지가 맵핑되는지를 결정한다. 다른 실시예들에서, 프로세싱 회로부(110)는 액세스되는 페이지에 대한 변환 테이블 엔트리를 결정하고, 가상 공간 내의 변환 테이블 엔트리의 어드레스를 희소 L1 캐시(320)로 전송한다. 일부 실시예들에서, L1 캐시는 페이지 테이블 엔트리(250)에 기초하여 가상 공간 내의 어드레스를 결정하도록 구성된 제어 회로부를 포함한다. 일부 실시예들에서, 이것은, 먼저, 대응하는 페이지 테이블 엔트리(250)의 가상 공간 어드레스를 결정하는 것, 그 엔트리가 캐싱되는지를 (예를 들어, 가상 공간 어드레스의 일부분을 태그로서 사용하여) 결정하는 것, 및 엔트리가 캐싱되는 경우, 페이지 테이블 엔트리(250)의 콘텐츠들에 기초하여 가상 공간 내의 희소 페이지의 어드레스를 결정하는 것을 포함한다. 페이지 테이블 엔트리(250)가 희소 L1 캐시(320)에 캐싱되지 않은 경우, 제어 회로부는 요청을 희소 L2 캐시(325)에 전송할 수 있고, 이는 적중(hit)이 있는 경우 엔트리를 반환하거나, 실패(miss)가 있는 경우 페이지 테이블 엔트리를 검색하도록 시도하기 위해 표면 공간 변환 테이블(365)에 액세스할 수 있다. 예시된 실시예에서, 맵핑이 있는 경우, 캐시(320)는 가상 공간 내의 페이지 어드레스를 반환하고, 프로세싱 회로부(110)는 이것을 사용하여(예를 들어, 연산된 오프셋 및 수신된 어드레스에 기초하여) 가상 공간 내의 어드레스를 생성할 수 있다. 다른 실시예들에서, L1 캐시(320)는, 예를 들어, 프로세싱 회로부(110)에 의한 요청에 대한 특정 어드레스를 포함하는, 다른 입도들의 어드레스 정보를 전송 및 수신할 수 있다.
일부 실시예들에서, 희소 L2 캐시(325)에 대한 액세스들은, 예를 들어, 그 크기 및 프리페칭(pre-fetching) 기술들로 인해 거의 실패되지 않는다. 예를 들어, 시스템은 대응하는 어드레스들이 요청되기 전에, 표면의 2D 범위에서의 인근 페이지 테이블 엔트리들(250)을 희소 L2 캐시(325)로 프리페치(pre-fetch)할 수 있다. 따라서, 변환 회로부는 메모리(140) 내의 변환 테이블에 액세스하지 않으면서, 표면 공간의 페이지에 대한 심지어 첫 액세스에서 가상 공간 내의 어드레스를 생성할 수 있다. 일부 실시예들에서, 이는 유리하게도, 예를 들어, 표면의 2D 범위에 처음으로 액세스할 때만 실패들을 갖는 낮은 레이턴시의 희소 변환들을 허용할 수 있다.
예시된 실시예에서, 시스템은 가상 공간 내의 어드레스들에 기초하여 동작하는 L2 데이터 캐시(380)를 포함한다. L2 데이터 캐시(380)는 다수의 블록들, 예를 들어, 프로그램가능 쉐이더, 텍스처 프로세싱 유닛 등에 의해 공유되는 캐시일 수 있다. 희소 L2 캐시(325)는 예시된 예에 도시된 바와 같이, 직접 제2 변환 회로부(130)를 통해, 또는 L2 데이터 캐시(380)를 통해 표면 공간 변환 테이블(365)에 액세스할 수 있다. 일반적으로 말하면, 측면 대역 희소 변환 회로부(예를 들어, 캐시들(320 및 325))를 사용하여 표면 공간 내의 페이지들을 맵핑하는 것은 다른 동작들을 위한 L2 데이터 캐시(380)와의 간섭을 피할 수 있다.
예시된 실시예에서, 희소 L1 캐시(320) 내의 제어 회로부는 또한 캐싱된 변환 엔트리들에 대한 활동 카운터들(310)을 유지하도록 구성된다. 활동 카운터들은 다양한 적절한 데이터 입도들 중 임의의 것으로 유지될 수 있다. 일부 실시예들에서, 표면 공간 내의 각각의 요청에 대해, 희소 L1 캐시(320)는 하나 이상의 대응하는 활동 카운터들을 증분시킨다. 시스템이 희소 L1 캐시(320)로부터 엔트리들을 축출할 때, 시스템은 희소 L2 캐시(325) 또는 표면 공간 변환 테이블(365)에 대응하는 활동 카운터들을 저장할 수 있다. 본 명세서에서 논의된 다양한 캐시들은 상이한 연관성을 사용하는 것, 후기록(write- back) 또는 동시 기록(write-through) 기술들을 사용하는 것, 상이한 대체 정책들 등을 사용하는 것 등을 포함하여 다양한 캐싱 구현들을 사용할 수 있다.
예시된 실시예에서, 메모리(140)는 또한 페이지 테이블(385)을 저장하며, 이는 물리적 공간에서 어드레싱되고, 제2 변환 회로부(130)에 의해 가상 공간 내의 어드레스들을 물리적 공간 내의 어드레스들로 변환하는 데 사용될 수 있다.
예시적인 방법
도 4는 일부 실시예들에 따른, 표면 공간을 사용하여 표면에 액세스하기 위한 예시적인 방법을 예시한 흐름도이다. 도 4에 예시된 방법은 다른 것들 중에서도, 본 명세서에 개시되는 컴퓨터 회로부, 시스템들, 디바이스들, 요소들 또는 컴포넌트들 중 임의의 것과 공조하여 사용될 수 있다. 다양한 실시예들에서, 도시된 방법 요소들 중 일부는 동시에, 또는 도시된 바와는 상이한 순서로 수행될 수 있거나, 또는 생략될 수 있다. 부가적인 방법 요소들이 또한 원하는 대로 수행될 수 있다.
예시된 실시예에서, 410에서, 그래픽 프로세싱 회로부는 그래픽 표면에 할당된 표면 공간 내의 어드레스에 기초하여 그래픽 표면에 액세스한다. 일부 실시예들에서, 표면 공간의 부분들이 가상 공간에 맵핑되며, 이는 유리하게 표면들의 희소 할당을 허용하면서 가상 공간의 보안을 제공할 수 있다. 일부 실시예들에서, 표면 공간은 다른 표면들이 표면 공간을 사용하지 않도록 그래픽 표면에 전용된다. 일부 실시예들에서, 그래픽 표면들은 2개 초과의 치수들의 요소들을 포함한다. 예를 들어, 표면은 상이한 상세 레벨들에서 텍스처를 표시하는 텍스처에 대한 밉맵들의 세트일 수 있다. 다른 상황들 또는 실시예들에서, 표면들은 1차원 또는 2차원일 수 있다.
예시된 실시예에서, 420에서, 제1 변환 회로부는 표면 공간의 페이지들에 대한 다수의 변환 엔트리들의 세트 내의 하나 이상의 엔트리들에 액세스하며, 여기서 변환 엔트리들은 가상 공간 내의 어드레스들을 사용하여 저장되고 표면 공간의 페이지들을 가상 공간에 맵핑한다. 제1 변환 회로부는 엔트리들의 세트의 전부 또는 일부를 (예를 들어, 하나 이상의 전용 캐시들을 사용하여) 내부적으로 유지할 수 있거나, 또는 예를 들어, 메모리(140) 또는 일부 다른 메모리에 엔트리들을 외부적으로 유지할 수 있다는 것에 유의한다. 도 2b의 페이지 테이블 엔트리들(250)은 변환 엔트리들의 예들이다. 일부 실시예들에서, 변환 엔트리들의 세트는 장치에 의해 실행되는 그래픽 명령어들에 의해 구성가능하다. 예를 들어, 그래픽 프로그램은 페이지 테이블 엔트리들(250)을 할당하거나 수정할 수 있다. 일부 실시예들에서, 페이지 테이블 엔트리는, 예를 들어, 표면이 희소하게 할당되는 경우, 표면 공간 내의 페이지가 맵핑되지 않음을 표시하는 정보를 포함한다.
예시된 실시예에서, 430에서, 제1 변환 회로부는 변환 엔트리들 중 하나 이상에 기초하여, 표면 공간에 대한 어드레스 정보를 가상 공간 내의 어드레스 정보로 변환한다. 예를 들어, 표면 공간에 대한 어드레스 정보는 (1) 표면 공간에 대한 변환 테이블에 대한 가상 공간 내의 베이스 어드레스, 및 (2) 표면 공간 내부의 연산된 오프셋을 특정할 수 있다. 이것은, 가상 공간 내에, 테이블 내의 적절한 변환 엔트리의 어드레스를 생성하는 데 사용될 수 있다. 변환 엔트리는 가상 공간 내의 희소 페이지의 어드레스를 제공할 수 있으며, 이는 표면 공간 내부의 연산된 오프셋과 함께 사용되어 표면에 대한 액세스를 위한 가상 어드레스를 생성할 수 있다. 상이한 실시예들에서, 이 예에서의 연산의 상이한 부분들이 프로세싱 회로부(110)와 변환 회로부(120) 사이에서 분할될 수 있다는 것에 유의한다. 예를 들어, 프로세싱 회로부(110)는, 일 실시예에서, 변환 테이블의 가상 공간 내의 연산된 오프셋 및 베이스 어드레스 둘 모두를 갖는 어드레스 정보를 전송할 수 있거나, 또는 다른 실시예에서, 가상 공간 내의 변환 엔트리의 어드레스를 연산 및 전송할 수 있다.
예시된 실시예에서, 440에서, 그래픽 프로세싱 회로부는 제1 변환 회로부에 의한 변환에 기초하여 그래픽 표면에 대한 액세스를 위한 어드레스를 제공한다. 예를 들어, 그래픽 프로세싱 회로부는 가상 공간 내의 액세스를 위한 어드레스를 제2 변환 회로부(130)에 제공할 수 있다.
예시된 실시예에서, 450에서, 제2 변환 회로부는 가상 공간 내의 어드레스를 그래픽 표면을 저장하도록 구성된 메모리의 물리적 공간 내의 어드레스로 변환한다. 이어서 시스템은 물리적 공간 내의 어드레스를 사용하여 그래픽 표면의 데이터에 액세스할 수 있다.
일부 실시예들에서, 제1 변환 회로부는 메모리(예를 들어, 물리적 공간을 구현하는 메모리)에 다수의 변환 엔트리들의 세트를 유지하도록 구성되고, 캐시에 다수의 변환 엔트리들의 세트의 적어도 일부분을 캐싱하도록 구성된다. 일부 실시예들에서, 제1 변환 회로부는 변환 엔트리들에 대한 다수의 캐시 레벨들, 예를 들어, 제1 레벨 캐시 및 제2 레벨 캐시를 사용하며, 제2 레벨 캐시는 제1 레벨 캐시보다 더 많은 수의 변환 엔트리들에 대한 데이터를 캐싱하도록 구성된다. 일부 실시예들에서, 시스템은, 하나 이상의 변환 엔트리들에 대응하는 액세스 요청들을 수신하기 전에, 하나 이상의 변환 엔트리들에 대한 데이터를 제2 레벨 캐시 내로 프리페치하도록 구성된다.
일부 실시예들에서, 그래픽 회로부는 다층 변환을 사용하지 않는 다른 그래픽 표면들에 액세스하도록 구성된다. 예를 들어, 그래픽 프로세싱 회로부는 제1 변환 회로부를 사용하지 않고 가상 공간 내의 어드레스를 사용하여 메모리에 저장된 다른 그래픽 표면에 액세스할 수 있고, 제2 변환 회로부는 가상 공간 내의 어드레스를 물리적 공간 내의 어드레스로 변환할 수 있다.
예시적인 디바이스
이제, 도 5를 참조하면, 디바이스(500)의 예시적인 실시예를 예시한 블록도가 도시되어 있다. 일부 실시예들에서, 디바이스(500)의 요소들은 시스템 온 칩 내에 포함될 수 있다. 일부 실시예들에서, 디바이스(500)는 배터리-전력이 공급될 수 있는 모바일 디바이스 내에 포함될 수 있다. 따라서, 디바이스(500)에 의한 전력 소비는 중요한 설계 고려사항일 수 있다. 예시된 실시예에서, 디바이스(500)는 패브릭(510), 연산 컴플렉스(520), 입/출력(I/O) 브리지(550), 캐시/메모리 제어기(545), 그래픽 유닛(570) 및 디스플레이 유닛(565)을 포함한다. 일부 실시예들에서, 디바이스(500)는 예시된 컴포넌트들, 예컨대 비디오 프로세서 인코더들 및 디코더들, 이미지 프로세싱 또는 인식 요소들, 컴퓨터 비전 요소들 등에 추가로 및/또는 그 대신에 다른 컴포넌트들(도시되지 않음)을 포함할 수 있다.
패브릭(510)은 다양한 상호접속부들, 버스들, MUX들, 제어기들 등을 포함할 수 있고, 디바이스(500)의 다양한 요소들 사이의 통신을 용이하게 하도록 구성될 수 있다. 일부 실시예들에서, 패브릭(510)의 부분들은 다양한 상이한 통신 프로토콜들을 구현하도록 구성될 수 있다. 다른 실시예들에서, 패브릭(510)은 단일 통신 프로토콜을 구현할 수 있고 패브릭(510)에 결합된 요소들은 단일 통신 프로토콜로부터 다른 통신 프로토콜들로 내부적으로 변환할 수 있다.
예시된 실시예에서, 연산 컴플렉스(520)는 버스 인터페이스 유닛(BIU)(525), 캐시(530), 및 코어들(535 및 540)을 포함한다. 다양한 실시예들에서, 연산 컴플렉스(520)는 다양한 수의 프로세서들, 프로세서 코어들 및/또는 캐시들을 포함할 수 있다. 예를 들어, 연산 컴플렉스(520)는 1, 2, 또는 4개의 프로세서 코어, 또는 임의의 다른 적합한 수를 포함할 수 있다. 일 실시예에서, 캐시(530)는 세트 연관 L2 캐시이다. 일부 실시예들에서, 코어들(535 및/또는 540)은 내부 명령어 및/또는 데이터 캐시들을 포함할 수 있다. 일부 실시예들에서, 패브릭(510), 캐시(530), 또는 디바이스(500) 내의 다른 곳에서 코히어런시(coherency) 유닛(도시되지 않음)이 디바이스(500)의 다양한 캐시들 사이의 코히어런시를 유지하도록 구성될 수 있다. BIU(525)는 연산 컴플렉스(520)와 디바이스(500)의 다른 요소들 사이의 통신을 관리하도록 구성될 수 있다. 코어들(535 및 540)과 같은 프로세서 코어들은 운영 체제 명령어들 및 사용자 애플리케이션 명령어들을 포함할 수 있는 특정 명령어 세트 아키텍처(ISA)의 명령어들을 실행하도록 구성될 수 있다.
캐시/메모리 제어기(545)는 패브릭(510)과 하나 이상의 캐시들 및/또는 메모리들 사이에서의 데이터의 전송을 관리하도록 구성될 수 있다. 예를 들어, 캐시/메모리 제어기(545)는 L3 캐시에 결합될 수 있고, 이는 이어서 시스템 메모리에 결합될 수 있다. 다른 실시예들에서, 캐시/메모리 제어기(545)는 메모리에 직접 결합될 수 있다. 일부 실시예들에서, 캐시/메모리 제어기(545)는 하나 이상의 내부 캐시들을 포함할 수 있다.
본 명세서에 사용되는 바와 같이, 용어 "에 결합된"은 요소들 사이의 하나 이상의 접속부를 나타낼 수 있고, 결합은 개재 요소들을 포함할 수 있다. 예를 들어, 도 5에서, 그래픽 유닛(570)은 패브릭(510) 및 캐시/메모리 제어기(545)를 통해 메모리에 "결합된"것으로 기술될 수 있다. 대조적으로, 도 5의 예시된 실시예에서, 그래픽 유닛(570)은 개재 요소들이 없기 때문에 패브릭(510)에 "직접 결합"된다.
그래픽 유닛(570)은 하나 이상의 프로세서들 및/또는 하나 이상의 그래픽 프로세싱 유닛(GPU)들을 포함할 수 있다. 그래픽 유닛(570)은 예를 들어 OPENGL®, Metal, 또는 DIRECT3D® 명령어들과 같은 그래픽-오리엔티드 명령어들을 수신할 수 있다. 그래픽 유닛(570)은 특수 GPU 명령어들을 실행하거나, 수신된 그래픽-오리엔티드 명령어들에 기초하여 다른 동작들을 수행할 수 있다. 그래픽 유닛(570)은 일반적으로 데이터의 큰 블록들을 병렬로 프로세싱하도록 구성될 수 있고, 디스플레이로의 출력을 위해 프레임 버퍼 내에 이미지들을 구축할 수 있다. 그래픽 유닛(570)은 하나 이상의 그래픽 프로세싱 파이프라인들에서 변환, 조명, 삼각형, 및/또는 렌더링 엔진들을 포함할 수 있다. 그래픽 유닛(570)은 디스플레이 이미지들에 대한 픽셀 정보를 출력할 수 있다. 다양한 실시예들에서, 프로그램가능 쉐이더(575)는 픽셀 태스크들, 정점 태스크들, 및 연산 태스크들(그래픽-관련일 수 있거나 그렇지 않을 수 있음)을 포함할 수 있는 그래픽 프로그램들을 실행하도록 구성된 고도의 병렬 실행 코어들을 포함할 수 있다.
일부 실시예들에서, 도 1 내지 도 4를 참조하여 위에서 논의된 다양한 회로부는 그래픽 유닛(570)에 포함된다.
디스플레이 유닛(565)은 프레임 버퍼로부터 데이터를 판독하고 디스플레이를 위한 픽셀 값들의 스트림을 제공하도록 구성될 수 있다. 디스플레이 유닛(565)은 일부 실시예들에서 디스플레이 파이프라인으로서 구성될 수 있다. 또한, 디스플레이 유닛(565)은 출력 프레임을 생성하기 위해 다수의 프레임들을 혼합하도록 구성될 수 있다. 또한, 디스플레이 유닛(565)은 사용자 디스플레이(예를 들어, 터치스크린 또는 외부 디스플레이)에 결합하기 위한 하나 이상의 인터페이스들(예를 들어, MIPI® 또는 임베디드 디스플레이 포트(eDP))을 포함할 수 있다.
I/O 브리지(550)는, 예를 들어, 범용 직렬 버스(USB) 통신, 보안, 오디오, 및/또는 저전력 상시-온 기능을 구현하도록 구성된 다양한 요소들을 포함할 수 있다. I/O 브리지(550)는 또한 예를 들어 펄스폭 변조(PWM), 범용 입/출력(GPIO), 직렬 주변 인터페이스(SPI), 및/또는 인터-집적 회로(12C)와 같은 인터페이스들을 포함할 수 있다. 다양한 타입들의 주변기기들 및 디바이스들이 I/O 브리지(550)를 통해 디바이스(500)에 결합될 수 있다.
예시적인 컴퓨터 판독가능 매체
본 개시내용은 위에서 상세하게 다양한 예시적인 회로들을 기술하였다. 본 개시내용은 그러한 회로부를 포함하는 실시예들뿐만 아니라, 그러한 회로부를 특정하는 설계 정보를 포함하는 컴퓨터 판독가능 저장 매체도 포괄하고자 하는 것이다. 따라서, 본 개시내용은 개시된 회로부를 포함하는 장치뿐만 아니라 개시된 회로부를 포함하는 하드웨어(예를 들어, 집적 회로)를 생성하도록 구성된 제조 시스템에 의해 인식되는 포맷으로 회로부를 특정하는 저장 매체를 포괄하는 청구범위를 지원하도록 의도된다. 그러한 저장 매체에 대한 청구범위는, 예를 들어 회로 설계를 생성하지만 그 자체가 설계를 제조하지는 않는 엔티티를 포괄하도록 의도된다.
도 6은 일부 실시예들에 따른, 회로 설계 정보를 저장하는 예시적인 비일시적 컴퓨터 판독가능 저장 매체를 예시한 블록도이다. 예시된 실시예에서, 반도체 제조 시스템(620)은 비일시적 컴퓨터 판독가능 매체(610) 상에 저장된 설계 정보(615)를 프로세싱하고 설계 정보(615)에 기초하여 집적 회로(630)를 제조하도록 구성된다.
비일시적 컴퓨터 판독가능 저장 매체(610)는 다양한 적절한 타입들의 메모리 디바이스들 또는 저장 디바이스들 중 임의의 것을 포함할 수 있다. 비일시적 컴퓨터 판독가능 저장 매체(610)는, 설치 매체, 예를 들어, CD-ROM, 플로피 디스크들, 또는 테이프 디바이스; DRAM, DDR RAM, SRAM, EDO RAM, 램버스(Rambus) RAM 등과 같은 컴퓨터 시스템 메모리 또는 랜덤 액세스 메모리; 플래시, 자기 매체, 예를 들어, 하드 드라이브, 또는 광학 저장소와 같은 비휘발성 메모리; 및 레지스터들, 또는 다른 유사한 타입들의 메모리 요소들일 수 있다. 비일시적 컴퓨터 판독가능 저장 매체(610)는 또한 다른 타입들의 비일시적 메모리 또는 이들의 조합들을 포함할 수 있다. 비일시적 컴퓨터 판독가능 저장 매체(610)는 상이한 위치들, 예를 들어, 네트워크를 통해 접속되는 상이한 컴퓨터 시스템들에 상주할 수 있는 둘 이상의 메모리 매체들을 포함할 수 있다.
설계 정보(615)는, 제한 없이, VHDL, Verilog, SystemC, Syste㎷erilog, RHDL, M, MyHDL 등과 같은 하드웨어 설명 언어들을 포함하는 다양한 적절한 컴퓨터 언어들 중 임의의 것을 사용하여 특정될 수 있다. 설계 정보(615)는 집적 회로(630)의 적어도 일부분을 제조하기 위해 반도체 제조 시스템(620)에 의해 사용가능할 수 있다. 설계 정보(615)의 포맷은 적어도 하나의 반도체 제조 시스템(620)에 의해 인식될 수 있다. 일부 실시예들에서, 설계 정보(615)는 또한 집적 회로(630)의 합성 및/또는 레이아웃을 특정하는 하나 이상의 셀 라이브러리들을 포함할 수 있다. 일부 실시예들에서, 설계 정보는 셀 라이브러리 요소들 및 그들의 접속성을 특정하는 넷리스트(netlist)의 형태로 전체적으로 또는 부분적으로 특정된다. 단독으로 취해진 설계 정보(615)는 대응하는 집적 회로의 제조를 위한 충분한 정보를 포함할 수 있거나 포함하지 않을 수 있다. 예를 들어, 설계 정보(615)는 제조될 회로 요소들을 특정할 수 있지만 그들의 물리적 레이아웃이 아닐 수 있다. 이러한 경우에, 설계 정보(615)는 특정된 회로부를 실제로 제조하기 위해 레이아웃 정보와 조합될 필요가 있을 수 있다.
다양한 실시예들에서, 집적 회로(630)는 메모리들, 아날로그 또는 혼합-신호 회로들 등과 같은 하나 이상의 맞춤형 매크로셀들을 포함할 수 있다. 그러한 경우들에서, 설계 정보(615)는 포함된 매크로셀들에 관련된 정보를 포함할 수 있다. 그러한 정보는, 제한 없이, 개략적 캡처 데이터베이스, 마스크 설계 데이터, 거동 모델들, 및 디바이스 또는 트랜지스터 레벨 넷리스트들을 포함할 수 있다. 본 명세서에 사용되는 바와 같이, 마스크 설계 데이터는 그래픽 데이터 시스템(GDSII), 또는 임의의 다른 적합한 포맷에 따라 포맷팅될 수 있다.
반도체 제조 시스템(620)은 집적 회로들을 제조하도록 구성된 다양한 적절한 요소들 중 임의의 것을 포함할 수 있다. 이는, 예를 들어 반도체 재료들을 (예를 들어, 마스킹을 포함할 수 있는 웨이퍼 상에) 적층시키는 것, 재료들을 제거하는 것, 적층된 재료들의 형상을 변경시키는 것, 재료들을 (예를 들어, 재료들을 도핑하거나 또는 자외선 프로세싱을 사용하여 유전 상수들을 변경함으로써) 변경시키는 것 등을 위한 요소들을 포함할 수 있다. 반도체 제조 시스템(620)은 또한 정확한 동작을 위해 제조된 회로들의 다양한 테스트를 수행하도록 구성될 수 있다.
다양한 실시예들에서, 집적 회로(630)는 설계 정보(615)에 의해 특정된 회로 설계에 따라 동작하도록 구성되며, 이는 본 명세서에 기술된 기능 중 임의의 것을 수행하는 것을 포함할 수 있다. 예를 들어, 집적 회로(630)는 도 1, 도 3 및 도 5에 도시된 다양한 요소들 중 임의의 것을 포함할 수 있다. 추가로, 집적 회로(630)는 다른 컴포넌트들과 공조하여 본 명세서에 기술된 다양한 기능들을 수행하도록 구성될 수 있다. 추가로, 본 명세서에 기술된 기능은 다수의 접속된 집적 회로들에 의해 수행될 수 있다.
본 명세서에 사용되는 바와 같이, "...하도록 구성된 회로의 설계를 특정하는 설계 정보" 형식의 문구는 요소가 충족되기 위해 문제의 회로가 제작되어야 함을 의미하지 않는다. 오히려, 이 문구는 설계 정보가, 제조 시에, 표시된 액션들을 수행하도록 구성될 것이거나 특정된 컴포넌트들을 포함할 회로를 기술한다는 것을 표시한다.
***
특정 실시예들이 위에서 설명되었지만, 이들 실시예들은 단일 실시예만이 특정 특징부에 대해 설명된 경우에도 본 개시내용의 범주를 제한하도록 의도되지 않는다. 본 개시내용에 제공된 특징부들의 예들은 달리 언급되지 않는 한 제한적인 것이 아니라 예시적인 것으로 의도된다. 위의 설명은 본 개시내용의 이익을 취하는 당업자에게 자명한 바와 같이 그러한 대안물들, 수정물들, 및 등가물들을 포괄하도록 의도된다.
본 개시내용의 범위는, 본 명세서에서 다뤄진 문제점들 중 임의의 것 또는 전부를 완화시키든 아니든, (명시적으로 또는 묵시적으로) 본 명세서에 개시된 임의의 특징 또는 특징들의 조합, 또는 그의 임의의 일반화를 포함한다. 따라서, 특징들의 임의의 그러한 조합에 대해 본 출원(또는 그에 대한 우선권을 주장하는 출원)의 심사 동안에 새로운 청구범위가 작성될 수 있다. 구체적으로, 첨부된 청구범위를 참조하면, 종속항들로부터의 특징부들은 독립항들의 특징부들과 조합될 수 있으며, 각자의 독립항들로부터의 특징부들은 첨부된 청구범위에 열거된 특정 조합들로 조합될 수 있을 뿐 아니라 임의의 적절한 방식으로 조합될 수 있다.

Claims (20)

  1. 장치로서,
    그래픽 표면에 할당된 표면 공간 내의 어드레스를 사용하여 상기 그래픽 표면에 액세스하도록 구성된 그래픽 프로세싱 회로부 ― 상기 표면 공간은 가상 공간 내부에 맵핑됨 ―;
    상기 표면 공간의 페이지들을 상기 가상 공간에 맵핑하는 변환 테이블 내의 하나 이상의 변환 엔트리들에 기초하여 상기 표면 공간 내의 어드레스를 상기 가상 공간 내의 어드레스로 변환하도록 구성된 제1 변환 회로부 ― 상기 변환 테이블은 초기에 상기 표면 공간 내의 페이지들의 일부분만을 상기 가상 공간에 맵핑하도록 구성되고 상기 변환 엔트리들 중 적어도 하나는 초기에 상기 표면 공간 내의 페이지가 맵핑되지 않음을 표시하는 정보를 포함함 ―; 및
    상기 가상 공간 내의 어드레스를 상기 그래픽 표면을 저장하도록 구성된 메모리의 물리적 공간 내의 어드레스로 변환하도록 구성된 제2 변환 회로부를 포함하는, 장치.
  2. 제1항에 있어서,
    상기 제1 변환 회로부는 상기 가상 공간 내의 어드레스를 상기 그래픽 프로세싱 회로부에 제공하도록 구성되고 그리고 상기 그래픽 프로세싱 회로부는 상기 가상 공간 내의 어드레스를 사용하여 데이터 캐시에 액세스하도록 구성되고; 그리고
    상기 제2 변환 회로부는 상기 데이터 캐시에서의 실패(miss)에 응답하여 상기 가상 공간 내의 어드레스를 상기 물리적 공간 내의 어드레스로 변환하도록 구성되는, 장치.
  3. 제1항에 있어서,
    상기 변환 테이블은 상기 그래픽 프로세싱 회로부에 의해 실행되는 그래픽 명령어들에 의해 구성가능한, 장치.
  4. 제1항에 있어서,
    상기 그래픽 프로세싱 회로부는 상기 표면 공간의 부분들에 대한 액세스들에 기초하는 활동 카운트 정보를 유지하도록 구성되고; 그리고
    상기 그래픽 프로세싱 회로부는 상기 표면 공간의 이전에-맵핑되지 않은 페이지와 연관된 활동 카운트 정보에 기초하여 상기 표면 공간의 상기 페이지를 상기 가상 공간에 맵핑하도록 구성되는, 장치.
  5. 제1항에 있어서,
    상기 그래픽 프로세싱 회로부는 상기 메모리에 상기 변환 테이블을 저장하도록 구성되는, 장치.
  6. 제5항에 있어서,
    상기 제1 변환 회로부는 표면 공간들에 대한 변환 정보를 캐싱하는 것에 전용되는 캐시에 상기 변환 테이블의 적어도 일부분을 캐싱하도록 구성되는, 장치.
  7. 제6항에 있어서,
    상기 그래픽 프로세싱 회로부는 하나 이상의 변환 엔트리들에 대응하는 액세스 요청들을 수신하기 전에 상기 하나 이상의 변환 엔트리들에 대한 데이터를 상기 캐시 내로 프리페치(pre-fetch)하도록 구성되는, 장치.
  8. 제1항에 있어서,
    상기 그래픽 프로세싱 회로부는 상이한 표면 공간들을 상이한 그래픽 표면들에 할당하고 그리고 상기 상이한 표면 공간들에 대한 변환 엔트리들의 각자의 세트들을 저장하도록 구성되는, 장치.
  9. 제1항에 있어서,
    상기 그래픽 프로세싱 회로부는 상기 제1 변환 회로부를 사용하지 않고 상기 가상 공간 내의 어드레스를 사용하여 상기 메모리에 저장된 다른 그래픽 표면에 액세스하도록 추가로 구성되는, 장치.
  10. 제1항에 있어서,
    상기 장치는:
    중앙 프로세싱 유닛; 및
    디스플레이
    를 추가로 포함하는 컴퓨팅 디바이스인, 장치.
  11. 동작들을 수행하도록 컴퓨팅 디바이스에 의해 실행가능한 명령어들이 저장된 비-일시적 컴퓨터-판독가능 매체로서,
    상기 동작들은:
    그래픽 표면에 할당된 표면 공간 내의 어드레스를 상기 컴퓨팅 디바이스의 그래픽 프로세싱 회로부에 제공하는 것 ― 상기 표면 공간은 가상 공간 내부에 맵핑됨 ―;
    상기 표면 공간의 페이지들을 상기 가상 공간에 맵핑하는 변환 테이블 내의 하나 이상의 변환 엔트리들을 구성하는 것 ― 상기 구성은 초기에 상기 표면 공간 내의 페이지들의 일부분만을 상기 가상 공간에 맵핑하고, 상기 변환 엔트리들 중 적어도 하나는 초기에 상기 표면 공간 내의 페이지가 맵핑되지 않음을 표시하는 정보를 포함함 ―; 및
    상기 그래픽 표면을 저장하도록 구성된 메모리의 물리적 공간 내의 어드레스에 액세스하는 것
    을 포함하고,
    상기 물리적 공간 내의 어드레스는 상기 가상 공간 내의 어드레스를 변환함으로써 상기 컴퓨팅 디바이스에 의해 생성되고 그리고 상기 가상 공간 내의 어드레스는 상기 하나 이상의 변환 엔트리들에 기초하여 상기 표면 공간 내의 어드레스를 변환함으로써 상기 컴퓨팅 디바이스에 의해 생성되는, 비-일시적 컴퓨터-판독가능 매체.
  12. 제11항에 있어서,
    상기 동작들은:
    상기 표면 공간의 부분들에 대한 액세스들에 기초하는 활동 카운트 정보에 액세스하는 것; 및
    상기 표면 공간의 이전에-맵핑되지 않은 페이지와 연관된 활동 카운트 정보에 기초하여 상기 표면 공간의 상기 페이지를 상기 가상 공간에 맵핑하는 것
    을 더 포함하는, 비-일시적 컴퓨터-판독가능 매체.
  13. 제11항에 있어서,
    상기 동작들은:
    상이한 표면 공간들을 상이한 그래픽 표면들에 할당하고 그리고 상기 상이한 표면 공간들에 대한 변환 엔트리들의 각자의 세트들을 저장하는 것
    을 더 포함하는, 비-일시적 컴퓨터-판독가능 매체.
  14. 설계에 따른 회로를 생성하기 위해 설계 정보를 사용하도록 구성되는 반도체 제조 시스템에 의해 인식되는 포맷으로 하드웨어 집적 회로의 적어도 일부분의 상기 설계를 특정하는 상기 설계 정보가 저장된 비-일시적 컴퓨터 판독가능 저장 매체로서,
    상기 설계 정보는, 상기 회로가:
    그래픽 표면에 할당된 표면 공간 내의 어드레스를 사용하여 상기 그래픽 표면에 액세스하도록 구성된 그래픽 프로세싱 회로부 ― 상기 표면 공간은 가상 공간 내부에 맵핑됨 ―;
    상기 표면 공간의 페이지들을 상기 가상 공간에 맵핑하는 변환 테이블 내의 하나 이상의 변환 엔트리들에 기초하여 상기 표면 공간 내의 어드레스를 상기 가상 공간 내의 어드레스로 변환하도록 구성된 제1 변환 회로부 ― 상기 변환 테이블은 초기에 상기 표면 공간 내의 페이지들의 일부분만을 상기 가상 공간에 맵핑하도록 구성되고, 상기 변환 엔트리들 중 적어도 하나는 초기에 상기 표면 공간 내의 페이지가 맵핑되지 않음을 표시하는 정보를 포함함 ―; 및
    상기 가상 공간 내의 어드레스를 상기 그래픽 표면을 저장하도록 구성된 메모리의 물리적 공간 내의 어드레스로 변환하도록 구성된 제2 변환 회로부
    를 포함하는 것을 특정하는, 비-일시적 컴퓨터 판독가능 저장 매체.
  15. 제14항에 있어서,
    상기 제1 변환 회로부는 상기 가상 공간 내의 어드레스를 상기 그래픽 프로세싱 회로부에 제공하도록 구성되고 그리고 상기 그래픽 프로세싱 회로부는 상기 가상 공간 내의 어드레스를 사용하여 데이터 캐시에 액세스하도록 구성되고; 그리고
    상기 제2 변환 회로부는 상기 데이터 캐시에서의 실패에 응답하여 상기 가상 공간 내의 어드레스를 상기 물리적 공간 내의 어드레스로 변환하도록 구성되는, 비-일시적 컴퓨터 판독가능 저장 매체.
  16. 제14항에 있어서,
    상기 변환 테이블은 상기 그래픽 프로세싱 회로부에 의해 실행되는 그래픽 명령어들에 의해 구성가능한, 비-일시적 컴퓨터 판독가능 저장 매체.
  17. 제14항에 있어서,
    상기 그래픽 프로세싱 회로부는 상기 표면 공간의 부분들에 대한 액세스들에 기초하는 활동 카운트 정보를 유지하도록 구성되고; 그리고
    상기 그래픽 프로세싱 회로부는 상기 표면 공간의 이전에-맵핑되지 않은 페이지와 연관된 활동 카운트 정보에 기초하여 상기 표면 공간의 상기 페이지를 상기 가상 공간에 맵핑하도록 구성되는,
    비-일시적 컴퓨터 판독가능 저장 매체.
  18. 제14항에 있어서,
    상기 그래픽 프로세싱 회로부는 상기 메모리에 상기 변환 테이블을 저장하도록 구성되는, 비-일시적 컴퓨터 판독가능 저장 매체.
  19. 제18항에 있어서,
    상기 제1 변환 회로부는 표면 공간들에 대한 변환 정보를 캐싱하는 것에 전용되는 캐시에 상기 변환 테이블의 적어도 일부분을 캐싱하도록 구성되고; 그리고
    상기 그래픽 프로세싱 회로부는 하나 이상의 변환 엔트리들에 대응하는 액세스 요청들을 수신하기 전에 상기 하나 이상의 변환 엔트리들에 대한 데이터를 상기 캐시 내로 프리페치하도록 구성되는, 비-일시적 컴퓨터 판독가능 저장 매체.
  20. 제18항에 있어서,
    상기 그래픽 프로세싱 회로부는 상이한 표면 공간들을 상이한 그래픽 표면들에 할당하고 그리고 상기 상이한 표면 공간들에 대한 변환 엔트리들의 각자의 세트들을 저장하도록 구성되는, 비-일시적 컴퓨터 판독가능 저장 매체.
KR1020200111744A 2019-09-06 2020-09-02 그래픽 표면 어드레싱 KR102508987B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/563,518 US10872458B1 (en) 2019-09-06 2019-09-06 Graphics surface addressing
US16/563,518 2019-09-06

Publications (2)

Publication Number Publication Date
KR20210029683A KR20210029683A (ko) 2021-03-16
KR102508987B1 true KR102508987B1 (ko) 2023-03-16

Family

ID=72841257

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200111744A KR102508987B1 (ko) 2019-09-06 2020-09-02 그래픽 표면 어드레싱

Country Status (7)

Country Link
US (2) US10872458B1 (ko)
JP (2) JP7037610B2 (ko)
KR (1) KR102508987B1 (ko)
CN (2) CN114820284A (ko)
DE (1) DE102020122831B4 (ko)
GB (2) GB2589436B (ko)
TW (1) TWI749748B (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10872458B1 (en) 2019-09-06 2020-12-22 Apple Inc. Graphics surface addressing
GB2611542B (en) * 2021-10-06 2023-11-15 Advanced Risc Mach Ltd Circuitry and method

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080106552A1 (en) 2006-11-03 2008-05-08 Nvidia Corporation Deferred page faulting in virtual memory based sparse texture representations
US20110157207A1 (en) 2009-12-31 2011-06-30 Nvidia Corporation Sparse texture systems and methods
US20160140043A1 (en) 2014-11-14 2016-05-19 Cavium, Inc. Instruction ordering for in-progress operations
US20180173641A1 (en) * 2015-06-16 2018-06-21 Arm Limited Address translation

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5905509A (en) * 1997-09-30 1999-05-18 Compaq Computer Corp. Accelerated Graphics Port two level Gart cache having distributed first level caches
US6859208B1 (en) * 2000-09-29 2005-02-22 Intel Corporation Shared translation address caching
JP2006099191A (ja) * 2004-09-28 2006-04-13 Dee Corp 入札管理装置、入札管理方法及び入札管理コンピュータプログラム
US9058292B2 (en) * 2004-12-29 2015-06-16 Intel Corporation System and method for one step address translation of graphics addresses in virtualization
US7884829B1 (en) * 2006-10-04 2011-02-08 Nvidia Corporation Partitioned graphics memory supporting non-power of two number of memory elements
US8289333B2 (en) 2008-03-04 2012-10-16 Apple Inc. Multi-context graphics processing
US9035959B2 (en) * 2008-03-28 2015-05-19 Intel Corporation Technique to share information among different cache coherency domains
US9378572B2 (en) * 2012-08-17 2016-06-28 Intel Corporation Shared virtual memory
US9390018B2 (en) * 2012-08-17 2016-07-12 Advanced Micro Devices, Inc. Data cache prefetch hints
US10037228B2 (en) 2012-10-25 2018-07-31 Nvidia Corporation Efficient memory virtualization in multi-threaded processing units
KR102093458B1 (ko) 2013-07-05 2020-03-26 삼성디스플레이 주식회사 커패시터
US9355430B2 (en) 2013-09-20 2016-05-31 Nvidia Corporation Techniques for interleaving surfaces
US9595075B2 (en) 2013-09-26 2017-03-14 Nvidia Corporation Load/store operations in texture hardware
US9754561B2 (en) 2013-10-04 2017-09-05 Nvidia Corporation Managing memory regions to support sparse mappings
US9779471B2 (en) * 2014-10-01 2017-10-03 Qualcomm Incorporated Transparent pixel format converter
US10127627B2 (en) 2015-09-23 2018-11-13 Intel Corporation Mapping graphics resources to linear arrays using a paging system
US10482567B2 (en) 2015-12-22 2019-11-19 Intel Corporation Apparatus and method for intelligent resource provisioning for shadow structures
US9959214B1 (en) * 2015-12-29 2018-05-01 Amazon Technologies, Inc. Emulated translation unit using a management processor
GB2547242B (en) 2016-02-11 2018-05-23 Advanced Risc Mach Ltd Graphics processing
WO2018053829A1 (en) * 2016-09-26 2018-03-29 Intel Corporation Apparatus and method for hybrid layer of address mapping for virtualized input/output implementation
US10599582B2 (en) * 2016-09-26 2020-03-24 Intel Corporation Using a virtual to virtual address table for memory compression
US10783694B2 (en) * 2017-08-25 2020-09-22 Advanced Micro Devices, Inc. Texture residency checks using compression metadata
US10872458B1 (en) * 2019-09-06 2020-12-22 Apple Inc. Graphics surface addressing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080106552A1 (en) 2006-11-03 2008-05-08 Nvidia Corporation Deferred page faulting in virtual memory based sparse texture representations
US20110157207A1 (en) 2009-12-31 2011-06-30 Nvidia Corporation Sparse texture systems and methods
US20160140043A1 (en) 2014-11-14 2016-05-19 Cavium, Inc. Instruction ordering for in-progress operations
US20180173641A1 (en) * 2015-06-16 2018-06-21 Arm Limited Address translation

Also Published As

Publication number Publication date
US10872458B1 (en) 2020-12-22
JP7037610B2 (ja) 2022-03-16
KR20210029683A (ko) 2021-03-16
JP7106775B2 (ja) 2022-07-26
DE102020122831B4 (de) 2023-07-06
TW202111544A (zh) 2021-03-16
GB2589436A (en) 2021-06-02
CN112465690A (zh) 2021-03-09
US20210074053A1 (en) 2021-03-11
GB2599807A (en) 2022-04-13
CN114820284A (zh) 2022-07-29
GB2599807B (en) 2022-10-05
GB2589436B (en) 2021-12-29
CN112465690B (zh) 2022-06-07
GB202013890D0 (en) 2020-10-21
US11257278B2 (en) 2022-02-22
JP2022095618A (ja) 2022-06-28
JP2021043966A (ja) 2021-03-18
DE102020122831A1 (de) 2021-03-11
TWI749748B (zh) 2021-12-11

Similar Documents

Publication Publication Date Title
US10365930B2 (en) Instructions for managing a parallel cache hierarchy
US8244981B2 (en) Combined transparent/non-transparent cache
US20140089602A1 (en) System cache with partial write valid states
US11829298B2 (en) On-demand memory allocation
JP2008033928A (ja) Gpuにおけるページマッピングのための専用機構
EP2452265A2 (en) Block-based non-transparent cache
JP7106775B2 (ja) グラフィックス表面アドレス指定
US20180181491A1 (en) Targeted cache flushing
WO2012067848A1 (en) Streaming translation in display pipe
US11488350B2 (en) Compression techniques and hierarchical caching
US9652560B1 (en) Non-blocking memory management unit
US11321241B2 (en) Techniques to improve translation lookaside buffer reach by leveraging idle resources
US11023162B2 (en) Cache memory with transient storage for cache lines

Legal Events

Date Code Title Description
AMND Amendment
E902 Notification of reason for refusal
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)