KR20080011630A - Gpu에서의 페이지 매핑을 위한 전용 메커니즘 - Google Patents

Gpu에서의 페이지 매핑을 위한 전용 메커니즘 Download PDF

Info

Publication number
KR20080011630A
KR20080011630A KR1020070076557A KR20070076557A KR20080011630A KR 20080011630 A KR20080011630 A KR 20080011630A KR 1020070076557 A KR1020070076557 A KR 1020070076557A KR 20070076557 A KR20070076557 A KR 20070076557A KR 20080011630 A KR20080011630 A KR 20080011630A
Authority
KR
South Korea
Prior art keywords
address
memory
gpu
pte
cache
Prior art date
Application number
KR1020070076557A
Other languages
English (en)
Other versions
KR101001100B1 (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 KR20080011630A publication Critical patent/KR20080011630A/ko
Application granted granted Critical
Publication of KR101001100B1 publication Critical patent/KR101001100B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control 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
    • 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
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2330/00Aspects of power supply; Aspects of display protection and defect management
    • G09G2330/02Details of power systems and of start or stop of display operation
    • G09G2330/026Arrangements or methods related to booting a display
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/121Frame memory handling using a cache memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/125Frame memory handling using unified memory architecture [UMA]
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control 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/363Graphics controllers

Abstract

어드레스 변환 정보를 검색하기 위한 시스템 메모리 액세스들을 감소시키거나 제거하는 회로들, 방법들 및 장치가 개시된다. 일례에서, 이 액세스들은 GPU에 의해 사용되는 가상 어드레스들을 시스템 메모리에 의해 사용되는 물리적 어드레스들로 변환하기 위해 사용되는 엔트리들로써 그래픽 TLB를 미리 채우는 것에 의해 감소되거나 제거된다. 변환 정보는, 디스플레이 액세스를 위해 필요한 그래픽 TLB에서의 엔트리들을 로킹하거나 제한하는 것에 의해 유지된다. 이것은 그래픽 TLB에서의 소정 위치들로 액세스를 제한하는 것에 의해, 그래픽 TLB에 플래그들 또는 다른 식별 정보를 저장하는 것에 의해, 또는 다른 적합한 방법들에 의해 수행될 수 있다. 다른 일례에서는, GPU를 위해 베이스 어드레스 및 어드레스 범위를 저장하는 메모리 공간이 시스템 BIOS에 의해 할당된다. 어드레스 범위의 가상 어드레스들은 그것들을 베이스 어드레스에 부가함으로써 변환된다.
어드레스 변환 정보, 시스템 메모리 액세스, 가상 어드레스, 물리적 어드레스, 베이스 어드레스, 어드레스 범위, 그래픽 프로세서, GPU, TLB

Description

GPU에서의 페이지 매핑을 위한 전용 메커니즘{DEDICATED MECHANISM FOR PAGE-MAPPING IN A GPU}
관련 출원들의 상호 참조
본 출원은, 양자가 참고 문헌으로써 포함되어 있으며, 양자가 Tong 등에 의해 "DEDICATED MECHANISM FOR PAGE-MAPPING IN A GPU"라는 명칭으로, 2006년 7월 31일에 출원된 미국 가출원 제60/820,952호 및 2006년 8월 1일에 출원된 미국 가명세서 출원 제60/821,127호에 대한 우선권의 이익을 주장한다.
본 출원은, 참고 문헌으로써 포함되어 있는, "Zero Frame Buffer"라는 명칭으로 2005년 10월 18일에 출원된 공동 소유의 계류중인 미국 특허출원 제11/253,438호; 및 "Memory Management for Virtual Address Space with Translation Units of Variable Range Size"라는 명칭으로 2005년 3월 10일에 출원된 공동 소유의 계류중인 미국 특허출원 제11/077,662호와 관련이 있다.
본 발명은 시스템 메모리 디스플레이 데이터 액세스들을 위해 요구되는 어드레스 변환 정보를 검색하기 위한 시스템 메모리 액세스들을 제거하거나 감소시키는 것에 관한 것이다.
GPU들(graphics processing units)은, 모니터 또는 다른 디스플레이 디바이스에 그래픽 이미지들을 발생시키기 위해, 컴퓨터, 비디오 게임, 자동차 네비게이션, 및 다른 전자 시스템들의 일부로서 포함된다. 처음에 개발된 GPU들은 픽셀 값들, 즉, 실제 디스플레이되는 컬러들을, 프레임 버퍼라고 하는 로컬 메모리에 저장하였다.
그 이후로, GPU들, 특히, 캘리포니아주, 산타클라라의 엔비디어사에 의해 설계되고 개발된 GPU들의 복잡도는 엄청나게 증가되어 왔다. 프레임 버퍼들에 저장되는 데이터도 사이즈 및 복잡도에서 유사하게 증가되어 왔다. 이제, 이러한 그래픽 데이터는 픽셀 값들 뿐만 아니라 텍스쳐, 텍스쳐 기술자들, 셰이더 프로그램 명령어들, 및 다른 데이터와 커맨드들도 포함한다. 이제, 이들 프레임 버퍼들은 대부분, 그것들의 확장된 역할들을 인정하여, 그래픽 메모리들이라고 한다.
최근까지, GPU들은 AGP(advanced graphics port) 버스를 통해 컴퓨터 시스템들의 CPU들 및 다른 디바이스들과 통신하여 왔다. 이 버스의 좀더 빠른 버전들이 개발되었지만, 충분한 그래픽 데이터를 GPU로 전달할 수 없었다. 따라서, 그래픽 데이터는, AGP 버스를 통과할 필요없이, GPU에 이용 가능했던 로컬 메모리에 저장되었다. 다행스럽게도, PCI(peripheral component interconnect) 표준의 향상된 버전 또는 PCIE(PCI express)의 새로운 버스가 개발되었다. 이 버스 프로토콜 및 그에 따른 구현은 엔비디어사에 의해 크게 향상되고 개선되어 왔다. 이것이, 다음에는, PCIE 버스를 통해 액세스되는 시스템 메모리를 위하여, 로컬 메모리의 제거를 허용하였다.
그래픽 메모리 위치의 변화의 결과로서 여러 가지 복잡한 문제들이 발생한다. 하나가, GPU는 가상 어드레스들을 사용해 데이터 저장 위치들을 추적하는 한편, 시스템 메모리는 물리적 어드레스들을 사용한다는 것이다. 시스템 메모리로부터의 데이터를 판독하기 위해, GPU는 그것의 가상 어드레스들을 물리적 어드레스들로 변환한다. 이 변환에 과도한 시간이 걸린다면, 데이터는 시스템 메모리에 의해 충분히 빠른 속도로 GPU로 제공될 수 없을 수도 있다. 이것은, 일관되게 그리고 빠르게 GPU로 제공되어야 하는 픽셀 또는 디스플레이 데이터의 경우에 특히 그러하다.
가상 어드레스들을 물리적 어드레스들로 변환하는데 필요한 정보가 GPU에 저장되어 있지 않으면, 이러한 어드레스 변환은 과도한 시간을 요할 수도 있다. 구체적으로, 이러한 변환 정보가 GPU에서 이용 불가능하면, 그것을 시스템 메모리로부터 검색하기 위한 제1 메모리 액세스가 요구된다. 그리해야만 비로소, 디스플레이 또는 필요한 다른 데이터가 제2 메모리 액세스에서 시스템 메모리로부터 판독될 수 있다. 따라서, 제1 메모리 액세스들은 제2 메모리 액세스 이전에 연속적인데, 제2 메모리 액세스는 제1 메모리 액세스에 의해 제공되는 어드레스 없이 진행할 수 없기 때문이다. 디스플레이 또는 필요한 다른 데이터가 판독되는 속도를 크게 늦추면서, 추가적인 제1 메모리 액세스가 1 μsec 동안 계속될 수 있다.
따라서, 시스템 메모리로부터 어드레스 변환 정보를 검색하기 위한 이러한 추가 메모리 액세스들을 제거하거나 감소시키는 회로들, 방법들, 및 장치가 필요하다.
본 발명의 예시적 실시예는, GPU에 의해 사용되는 가상 어드레스들을 시스템 메모리에 의해 사용되는 물리적 어드레스들로 변환하기 위해 사용될 수 있는 엔트리들로써 그래픽 TLB(graphics translation look-aside buffer)라고 하는 캐시를 미리 채우는 것에 의해, 파워-업(power-up)에 수반되는 어드레스 변환 정보를 위한 시스템 메모리 액세스들을 제거하거나 감소시킨다. 본 발명의 특정 실시예에서, 그래픽 TLB는 디스플레이 데이터를 위해 필요한 어드레스 정보로써 미리 채워지지만, 본 발명의 다른 실시예들에서는, 데이터의 다른 유형들을 위한 어드레스들이 그래픽 TLB를 미리 채울 수도 있다. 이것은, 그렇지 않다면, 필요한 어드레스 변환 정보를 검색하는데 필요한 추가적인 시스템 메모리 액세스들을 방지한다.
파워-업 이후, 필요한 변환 정보가 그래픽 프로세서에 보유된다는 것을 보장하기 위해, 디스플레이 액세스를 위해 필요한 그래픽 TLB의 엔트리들은 로킹되거나 제한된다. 이것은, 그래픽 TLB에서의 특정 위치들로 액세스를 제한하는 것에 의해, 또는 그래픽 TLB에 플래그들 또는 다른 식별 정보를 저장하는 것에 의해, 또는 적절한 다른 방법들에 의해 수행될 수 있다. 이것은, 시스템 메모리로부터 한번 더 판독되어야 할 데이터를 겹쳐쓰기하는 것을 방지한다.
본 발명의 예시적인 다른 실시예는 시스템 BIOS에 의해 제공되는 시스템 메모리의 거대한 연속 블록을 위한 베이스 어드레스 및 어드레스 범위를 저장하는 것 에 의해 어드레스 변환 정보를 위한 메모리 액세스들을 제거하거나 감소시킨다. 파워-업 또는 적절한 다른 이벤트시에, 시스템 BIOS는 GPU에 "카브아웃(carveout)"이라고 할 수도 있는 거대한 메모리 블록을 할당한다. GPU는 이것을 디스플레이 또는 다른 데이터를 위해 사용할 수 있다. GPU는 칩에, 예를 들어, 하드웨어 레지스터에 베이스 어드레스 및 범위를 저장한다.
GPU에 의해 사용되는 가상 어드레스가 물리적 어드레스로 변환되어야 할 때, 가상 어드레스가 카브아웃의 범위에 해당되는지를 알아보기 위해, 범위 점검이 수행된다. 본 발명의 특정 실시예에서, 이것은, 카브아웃의 베이스 어드레스가 0의 가상 어드레스에 대응되게 하는 것에 의해 간략화된다. 그에 따라, 카브아웃에서의 최고의 가상 어드레스가 물리적 어드레스들의 범위에 대응된다. 변환되어야 할 어드레스가 카브아웃을 위한 가상 어드레스들의 범위에 해당되면, 가상 어드레스는, 가상 어드레스에 베이스 어드레스를 부가하는 것에 의해 물리적 어드레스로 변환될 수 있다. 변환되어야 할 어드레스가 이 범위에 해당되지 않으면, 그래픽 TLB 또는 페이지들을 사용해 변환될 수 있다.
본 발명의 다양한 실시예들은 여기에서 설명되는 이들 또는 다른 사양들 중 하나 이상을 통합할 수도 있다. 본 발명의 특징 및 이점들에 대한 좀더 양호한 이해는 다음의 상세한 설명 및 첨부 도면들을 참조하는 것에 의해 획득될 수 있다.
따라서, 본 발명의 실시예들은 시스템 메모리 디스플레이 데이터 액세스들을 위해 요구되는 어드레스 변환 정보를 검색하기 위한 시스템 메모리 액세스들을 제 거하거나 감소시키는 회로들, 방법들, 및 장치를 제공한다. 구체적으로, 어드레스 변환 정보는 그래픽 프로세서에 저장된다. 이것은 변환 정보를 검색하기 위한 별도의 시스템 메모리 액세스들을 위한 필요성을 감소시키거나 제거한다. 추가적인 메모리 액세스들이 불필요하므로, 프로세서는 좀더 빨리 어드레스들을 변환할 수 있고 요구되는 디스플레이 또는 다른 데이터를 시스템 메모리로부터 좀더 빨리 판독할 수 있다.
도 1은 본 발명의 실시예를 통합하는 것에 의해 개선되는 컴퓨팅 시스템의 블록도이다. 이 블록도는 CPU(central processing unit) 또는 호스트 프로세서(100), SPP(system platform processor;110), 시스템 메모리(120), GPU(130), MCP(media communications processor;150), 네트워크들(160), 및 내부 및 주변 디바이스들(270)을 포함한다. 프레임 버퍼, 로컬, 또는 그래픽 메모리(140)도 포함되지만, 점선들로써 표시된다. 점선들은, 종래의 컴퓨터 시스템들은 이러한 메모리를 포함하지만, 본 발명의 실시예들은 그것의 제거를 허용한다는 것을 나타낸다. 이 도면은, 포함된 나머지 도면들과 마찬가지로, 예시적 목적들만을 위해 도시되며, 본 발명의 가능한 실시예들이나 청구항들을 제한하지 않는다.
CPU(100)는 호스트 버스(105)를 통해 SPP(110)에 접속한다. SPP(110)는 PCIE 버스(135)를 통해 GPU(130)와 통신한다. SPP(110)는 메모리 버스(125)를 통해 시스템 메모리(120)에 데이터를 기입하고 시스템 메모리(120)로부터 데이터를 판독한다. MCP(150)는 하이퍼트랜스포트 버스(155)와 같은 고속 접속을 통해 SPP(110)와 통신하고, 네트워크(160) 및 내부 및 주변 디바이스들(170)을 컴퓨터 시스템의 나머지에 접속시킨다. GPU(130)는 PCIE 버스(135)를 통해 데이터를 수신하고 (도시되지 않은) 모니터 또는 다른 디스플레이 디바이스 상의 디스플레이를 위한 그래픽 및 비디오 이미지들을 발생시킨다. 본 발명의 다른 실시예들에서, GPU는, SPP(110) 대신에 사용되는 IGP(Integrated Graphics Processor)에 포함된다. 또 다른 실시예들에서는, 범용 GPU가 GPU(130)로서 사용될 수 있다.
CPU(100)는, 당업자들에게 널리 공지되어 있는, Intel Corporation 또는 다른 공급자들에 의해 제조된 것들과 같은, 프로세서일 수 있다. SPP(110) 및 MCP(150)는 흔히 칩셋이라고 한다. 시스템 메모리(120)는 대부분, 다수의 DIMM들(dual in-line memory modules)에 배열된 다수의 DRAM(dynamic random access memory) 디바이스들이다. GPU(130), SPP(110), MCP(150) 및 IGP는 만약 사용된다면, 엔비디어사에 의해 제조되는 것이 바람직스럽다.
GPU(130)는 그래픽 카드에 배치될 수 있는 한편, CPU(100), SPP(110), 시스템 메모리(120), 및 MCP(150)는 컴퓨터 시스템 마더보드에 배치될 수 있다. GPU(130)를 포함하는 그래픽 카드는 통상적으로, GPU가 부착된 데이터 PCB(printed circuit board)이다. PCB는 통상적으로 커넥터, 예를 들어, 마더보드에 포함된 PCIE 슬롯에 꼭 맞고, 또한 PCB에 부착된, PCIE 커넥터를 포함한다. 본 발명의 다른 실시예들에서, 그래픽 프로세서는 마더보드에 포함되거나, IGP에 포함된다.
예시된 컴퓨터 시스템과 같은, 컴퓨터 시스템은 하나 이상의 GPU(130)를 포함할 수도 있다. 추가적으로, 이러한 GPU들 각각이 별도의 그래픽 카드들에 배치 될 수도 있다. 이러한 그래픽 카드들 중 2 이상은 점퍼(jumper) 또는 다른 접속에 의해 함께 연결될 수도 있다. 그러한 일 기술인 the pioneering SLITM가 엔비디어사에 의해 개발되었다. 본 발명의 다른 실시예들에서, 하나 이상의 GPU들은 하나 이상의 그래픽 카드들에 배치될 수 있는 한편, 하나 이상의 다른 것들은 마더보드에 배치된다.
앞서 개발된 컴퓨터 시스템들에서, GPU(130)는, 노스브리지(Northbridge) 등에서, AGP 버스를 통해 SPP(110) 또는 다른 디바이스와 통신하였다. 유감스럽게도, AGP 버스들은 필요한 데이터를 요구되는 속도로 GPU(130)에 공급할 수 없었다. 따라서, GPU의 사용을 위해 프레임 버퍼(140)가 제공되었다. 이 메모리는, 데이터가 AGP 병목 지점(bottleneck)을 횡단할 필요없이, 데이터에의 액세스를 허용하였다.
이제는, PCIE 및 하이퍼트랜스포트와 같은, 좀더 빠른 데이터 전송 프로토콜들이 이용 가능해졌다. 특히, 개선된 PCIE 인터페이스가 엔비디어사에 의해 개발되었다. 따라서, GPU(130)에서 시스템 메모리(120)까지의 대역폭이 크게 증가되었다. 이와 같이, 본 발명의 실시예들은 프레임 버퍼(140)의 제거를 제공하고 허용한다. 프레임 버퍼의 제거에 사용될 수 있는 추가적인 방법들 및 회로들의 일례들은, 참고 문헌으로서 포함되어 있는, 2005년 10월 18일에 "Zero Frame Buffer"라는 명칭으로 출원된, 공동 소유의 계류중인 미국 특허출원 제11/253,438호에서 찾아볼 수 있다.
본 발명의 실시예들에 의해 허용되는 프레임 버퍼의 제거는 이러한 DRAM들의 부재 뿐만 아니라 추가적 절감을 포함하는 절감을 제공한다. 예를 들어, 전압 레귤레이터는 통상적으로 메모리들로의 전원 공급을 제어하는데 사용되고, 커패시터들은 전원 공급 필터링을 제공하는데 사용된다. DRAM들, 레귤레이터, 및 커패시터들의 제거는 그래픽 카드를 위한 BOM(bill of materials)을 감소시키는 비용 절감을 제공한다. 더 나아가, 보드 레이아웃이 간략화되고, 보드 공간이 감소되며, 그래픽 카드 테스팅이 간략화된다. 이 요인들은 연구 및 설계와 다른 엔지니어링 및 테스트 비용을 감소시킴으로써, 본 발명의 실시예들을 통합하는 그래픽 카드들에 대한 매출 총 이익을 증가시킨다.
본 발명의 실시예들은 제로 프레임 버퍼 그래픽 프로세서들의 성능을 개선시키기에 아주 적합하지만, 제한된 또는 온-칩 메모리들이나 제한된 로컬 메모리를 가진 그래픽 프로세서들을 포함하는, 다른 그래픽 프로세서들도 본 발명의 실시예들을 통합하는 것에 의해 개선될 수 있다. 또한, 이 실시예는 본 발명의 실시예를 통합하는 것에 의해 개선될 수 있는 특정 유형의 컴퓨터 시스템을 제공하지만, 전자 또는 컴퓨터 시스템들의 다른 유형들도 개선될 수 있다. 예를 들어, 비디오 및 다른 게임 시스템들, 네비게이션, 셋톱 박스들, 빠찡코 기계들, 및 시스템들의 다른 유형들도 본 발명의 실시예들을 통합하는 것에 의해 개선될 수 있다.
또한, 이러한 유형의 컴퓨터 시스템들 및 여기에서 설명되는 다른 전자 시스템들이 현재는 일반적이지만, 다른 유형의 컴퓨터 및 다른 전자 시스템들이 현재 개발되고 있으며 미래에는 다른 것들이 개발될 것이다. 이들 중 다수도 본 발명의 실시예들을 통합하는 것에 의해 개선될 수 있다는 것이 기대된다. 따라서, 열거된 특정 일례들은 사실상 설명을 위한 것으로 본 발명의 가능한 실시예들이나 청구항들을 제한하지 않는다.
도 2는 본 발명의 실시예를 통합하는 것에 의해 개선되는 다른 컴퓨팅 시스템의 블록도이다. 이 블록도는 CPU 또는 호스트 프로세서(200), SPP(210), 시스템 메모리(220), GPU(230), MCP(250), 네트워크들(260), 및 내부 및 주변 디바이스들(270)을 포함한다. 이번에도, 프레임 버퍼, 로컬, 또는 그래픽 메모리(240)가 포함되지만, 점선들로 그것의 제거를 강조한다.
CPU(200)는 호스트 버스(205)를 통해 SPP(210)와 통신하고 메모리 버스(225)를 통해 시스템 메모리(220)에 액세스한다. GPU(230)는 PCIE 버스(235)를 통해 SPP(210)와 통신하고 메모리 버스(245)를 통해 로컬 메모리와 통신한다. MCP(250)는 하이퍼트랜스포트 버스(255)와 같은 고속 접속을 통해 SPP(210)와 통신하고, 네트워크(260) 및 내부 및 주변 디바이스들(270)을 컴퓨터 시스템의 나머지에 접속시킨다.
앞서와 같이, CPU 또는 호스트 프로세서(200)는 인텔사 또는 다른 공급자들에 의해 제조된 CPU들 중 하나일 수 있고 당업자들에게 공지되어 있다. 그래픽 프로세서(230), SPP(210), 및 MCP(250)는 엔비디어사에 의해 제공되는 것이 바람직스럽다.
도 1 및 도 2에서의 프레임 버퍼들(140 및 240)의 제거 및 본 발명의 다른 실시예들에서의 다른 프레임 버퍼들의 제거가 중요하다. 예를 들어, 시스템 메모 리로부터의 데이터를 저장하고 판독하는데 사용되는 어드레스들에 관한 어려움들이 발생한다.
GPU가 로컬 메모리를 사용해 데이터를 저장할 때, 로컬 메모리는 엄격하게 GPU의 제어를 따른다. 통상적으로, 다른 회로들은 로컬 메모리로의 액세스를 갖지 않는다. 이로 인해, GPU는, 그것이 적합하다고 생각하는 어떤 방식으로든, 어드레스들을 추적하고 할당할 수 있다. 그러나, 시스템 메모리는 다수 회로들에 의해 사용되고 오퍼레이팅 시스템에 의해 그러한 회로들에 공간이 할당된다. 오퍼레이팅 시스템에 의해 GPU에 할당된 공간이 하나의 연속적인 메모리 섹션을 형성할 수도 있다. 대부분, GPU에 할당된 공간은, 일부가 상이한 사이즈들을 가질 수도 있는 다수 블록들 또는 섹션들로 분할된다. 이러한 블록들 또는 섹션들은 초기, 시작, 또는 베이스 어드레스 및 어드레스들의 메모리 사이즈나 범위로써 설명될 수 있다.
GPU가 실제의 시스템 메모리 어드레스들을 사용하는 것은 어렵고 힘든 일인데, 그 이유는 GPU에 제공되는 어드레스들이 독립적인 다수 블록들에 할당되기 때문이다. 또한, GPU로 제공되는 어드레스들은, 전원이 턴온되거나 아니면 메모리 어드레스들이 재할당될 때마다 변경될 수 있다. GPU에서 실행중인 소프트웨어는 시스템 메모리에서의 물리적인 실제 어드레스들과는 무관한 가상 어드레스들을 사용하는 것이 훨씬 용이하다. 구체적으로, GPU들은 메모리 공간을 하나의 거대한 연속 블록으로서 취급하는 한편, 메모리는 수개의 좀더 작은 별도 블록들로 GPU에 할당된다. 따라서, 데이터가 시스템 메모리에 기입되거나 시스템 메모리로부터 판 독될 때, GPU에 의해 사용되는 가상 어드레스들과 시스템 메모리에 의해 사용되는 물리적 어드레스들 사이의 변환이 수행된다. 이 변환은, 그것의 엔트리들이 가상 어드레스들 및 가상 어드레스들의 대응하는 물리적 어드레스 대응부들(counterparts)을 포함하는 테이블들을 사용해 수행될 수 있다. 이 테이블들을 페이지 테이블들이라고 하는 한편, 엔트리들은 PTE들(page-table entries)이라고 한다.
페이지 테이블들은 너무 커서 GPU에 배치될 수 없고, 그렇게 하는 것은 비용 제약들로 인해 바람직스럽지 않다. 따라서, 페이지 테이블들은 시스템 메모리에 저장된다. 유감스럽게도, 이것은, 시스템 메모리로부터 데이터가 필요할 때마다, 요구되는 PTE를 검색하기 위한 제1 또는 추가 메모리 액세스가 필요하고, 요구되는 데이터를 검색하기 위한 제2 메모리 액세스가 필요하다는 것을 의미한다. 따라서, 본 발명의 실시예들에서는, 페이지 테이블들에서의 데이터 중 일부가 GPU 상의 그래픽 TLB에 캐싱된다.
PTE가 필요하고 PTE가 GPU 상의 TLB에서 이용가능할 때, 히트(hit)가 발생했다고 말하며, 어드레스 변환이 진행될 수 있다. PTE가 GPU 상의 TLB에 저장되어 있지 않으면, 미스(miss)가 발생했다고 말한다. 이 시점에서, 필요한 PTE는 시스템 메모리의 페이지 테이블들로부터 검색된다.
필요한 PTE가 검색되고 나면, 이러한 동일 PTE가 다시 필요하게 될 가능성이 높다. 따라서, 메모리 액세스들의 수를 감소시키기 위해서는, 이 PTE를 그래픽 TLB에 저장하는 것이 바람직스럽다. 캐시에 공백 위치들이 존재하지 않으면, 최근 까지 사용되지 않았던 PTE는 이러한 새로운 PTE를 위해 겹쳐쓰기되거나 퇴거될 수 있다. 본 발명의 다양한 실시예들에서는, 퇴거 이전에, 현재 캐싱되어 있는 엔트리가 시스템 메모리로부터 판독된 이후에, GPU에 의해 변경되지 않았는지의 여부를 판정하기 위한 점검이 수행된다. 변경되었다면, 새로운 PTE가 엔트리를 그래픽 TLB에 겹쳐쓰기하기 전에, 업데이트된 PTE가 시스템 메모리로 후기입(write back)되는 후기입 동작이 발생한다. 본 발명의 다른 실시예들에서는, 이러한 후기입 절차가 수행되지 않는다.
본 발명의 특정 실시예에서, 페이지 테이블들은, 시스템이 할당할 수 있는 최소 입도(granularity)에 기초해, 인덱싱되는데, 예를 들어, PTE는 최소 44KB 블록들 또는 페이지들을 표현할 수 있다. 따라서, 가상 어드레스를 16KB로 나눈 다음 엔트리들의 사이즈로 곱하는 것에 의해, 페이지 테이블에서의 관심있는 인덱스가 발생된다. 그래픽 TLB 미스 이후에, GPU는 상기 인덱스를 사용해 페이지 테이블 엔트리를 찾아낸다. 이러한 특정 실시예에서, PTE는 4KB보다 큰 하나 이상의 블록들을 매핑할 수 있다. 예를 들어, PTE는 최소 4개의 4KB 블록들을 매핑할 수 있고, 4KB보다 큰 4, 8, 또는 16개 블록들을 최대 총 256KB까지 매핑할 수 있다. 일단 그러한 PTE가 캐시로 로딩되고 나면, 그래픽 TLB는, 단일 PTE인 단일 그래픽 TLB 엔트리를 참조하는 것에 의해 256KB 내에서 가상 어드레스를 찾아낼 수 있다. 이 경우, 페이지 테이블 자체는, 각각이 16KB 이상을 매핑하는 16 바이트 엔트리들로서 배렬된다. 따라서, 256KB PTE는, 가상 어드레스 공간의 그러한 256KB 내에 해당되는 모든 페이지 테이블 위치에서 복제된다. 따라서, 이 일례에서는, 정확하 게 동일한 정보를 가진 16개의 PTE들이 존재한다. 256KB 내에서의 미스는 그러한 동일 엔트리들 중 하나를 판독한다.
앞서 언급된 바와 같이, 필요한 PTE가 그래픽 TLB에서 이용 불가능하면, 엔트리를 검색하기 위한 추가적 메모리 액세스가 요구된다. 데이터에 대한 일정하고 일관된 액세스를 요구하는 특정 그래픽 펑크션들의 경우, 이러한 추가적 메모리 액세스들은 아주 바람직하지 않다. 예를 들어, GPU는, 요구되는 속도로 모니터에 이미지 데이터를 제공할 수 있도록, 디스플레이 데이터로의 신뢰 가능한 액세스를 요구한다. 과도한 메모리 액세스들이 필요하면, 결과적인 지연은 모니터로의 픽셀 데이터 흐름을 차단할 수 있기 때문에, 그래픽 이미지를 손상시킨다.
구체적으로, 디스플레이 데이터 액세스를 위한 어드레스 변환 정보가 시스템 메모리로부터 판독되어야 한다면, 그 액세스는 후속 데이터 액세스와 연속적인데, 다시 말해, 필요한 디스플레이 데이터가 저장되는 장소를 GPU가 학습할 수 있도록, 어드레스 변환 정보가 메모리로부터 판독되어야 한다. 이러한 추가적 메모리 액세스에 의해 초래되는 추가적 대기시간은 디스플레이 데이터가 모니터에 제공될 수 있는 속도를 감소시키면서, 다시 한번 그래픽 이미지를 손상시킨다. 또한, 이러한 추가적 메모리 액세스들은 PCIE 버스상의 트래픽을 증가시키며 시스템 메모리 대역폭을 낭비한다.
어드레스 변환 정보를 검색하기 위한 추가적 메모리 판독들은 그래픽 TLB가 공백이거나 클리어될 때의 파워-업 또는 기타 이벤트들에서 일어날 가능성이 있다. 구체적으로, 컴퓨터 시스템의 파워-업 시에, BIOS(basic input/output system)는, GPU가 로컬 프레임 버퍼 메모리를 마음대로 사용할 것을 기대한다. 이와 같이, 종래의 시스템들에서는, 시스템 BIOS가 그래픽 프로세서에 의한 사용을 위해 시스템 메모리에 공간을 할당하지 않는다. 오히려, GPU는 오퍼레이팅 시스템으로부터 특정한 양의 시스템 메모리 공간을 요청한다. 메모리 공간이 오퍼레이팅 시스템에 의해 할당된 후, GPU는 시스템 메모리의 페이지 테이블들에 PTE들을 저장할 수 있지만, 그래픽 TLB는 공백이다. 디스플레이 데이터가 필요하므로, PTE를 위한 각각의 요청은, 추가적 메모리 액세스를 더욱 초래하는 미스를 초래한다.
따라서, 본 발명의 실시예들은 그래픽 TLB를 PTE들로써 미리 채운다. 다시 말해, 그래픽 TLB는, PTE들을 필요로 하는 요청들이 캐시 미스들을 초래하기 전에, PTE들로써 채워진다. 이러한 미리-채우기(pre-population)는 통상적으로 적어도 디스플레이 데이터의 검색을 위해 필요한 PTE들을 포함하지만, 다른 PTE들이 그래픽 TLB를 미리 채우기할 수도 있다. 더 나아가, PTE들이 퇴거되는 것을 방지하기 위해, 일부 엔트리들이 로킹되거나 아니면 제한될 수도 있다. 본 발명의 특정 실시예에서는, 디스플레이 데이터를 위해 필요한 PTE들이 로킹되거나 제한되지만, 다른 실시예들에서는, 데이터의 다른 유형들이 로킹되거나 제한될 수도 있다. 그러한 예시적 일 실시예를 예시하는 흐름도가 다음의 도면에서 도시된다.
도 3은, 본 발명의 실시예에 따른, 시스템 메모리에 저장된 디스플레이 데이터에 액세스하는 방법을 예시하는 흐름도이다. 이 도면은, 포함된 나머지 도면들에서와 같이, 예시적 목적들을 위해 도시되며 본 발명의 가능한 실시예나 청구항들을 제한하지 않는다. 또한, 여기에 도시된 이 일례 및 나머지 일례들은 디스플레 이 데이터에 액세스하기에 특히 적합하고, 다른 유형들 또는 데이터 액세스들은 본 발명의 실시예들의 통합에 의해 개선될 수 있다.
이 방법에서, GPU 또는, 좀더 구체적으로는, GPU에서 실행중인 드라이버 또는 리소스 관리자는, 시스템 메모리로부터 그러한 정보를 검색할 필요없이, GPU 자체에 저장된 변환 정보를 사용해 가상 어드레스들이 물리적 어드레스들로 변환될 수 있다는 것을 보장한다. 이것은, 처음에 변환 엔트리들을 그래픽 TLB에 미리 채우기하거나 사전 로딩하는 것에 의해 실현된다. 그 다음, 디스플레이 데이터와 연관된 어드레스들은 로킹되거나 겹쳐쓰기 또는 퇴거되는 것이 방지된다.
구체적으로, 단계 310에서는, 컴퓨터 또는 다른 전자 시스템이 파워-업되거나, 재부팅, 파워 리셋, 또는 유사한 이벤트를 경험한다. 단계 320에서는, GPU에서 실행중인 드라이버의 일부인 리소스 관리자가 오퍼레이팅 시스템으로부터 시스템 메모리 공간을 요청한다. 오퍼레이팅 시스템은, 단계 330에서, CPU를 위해 시스템 메모리에 공간을 할당한다.
이 일례에서는, CPU에서 실행중인 오퍼레이팅 시스템이 시스템 메모리에서의 프레임 버퍼 또는 그래픽 메모리 공간의 할당을 책임지지만, 본 발명의 다양한 실시예들에서, CPU 또는 시스템의 다른 디바이스에서 실행중인 드라이버들 또는 다른 소프트웨어가 이 태스크를 책임질 수도 있다. 다른 실시예들에서, 이 태스크는 오퍼레이팅 시스템 및 드라이버들 또는 다른 소프트웨어 중 하나 이상의 양자에 의해 공유된다. 단계 340에서, 리소스 관리자는 오퍼레이팅 시스템으로부터 시스템 메모리에서의 공간을 위한 물리적 어드레스 정보를 수신한다. 이 정보는 통상적으 로, 적어도 시스템 메모리에서의 하나 이상의 섹션들의 베이스 어드레스 및 사이즈 또는 범위를 포함할 것이다.
그 다음, 리소스 관리자는, GPU에 의해 사용되는 가상 어드레스들을 시스템 메모리에 의해 사용되는 물리적 어드레스들로 변환하는데 요구되는 PTE들의 수를 제한하기 위해, 이러한 정보를 압축하거나 정렬할 수도 있다. 예를 들어, 오퍼레이팅 시스템에 의해 GPU를 위해 할당된 시스템 메모리 공간의 별개이지만 연속적인 블록들이 결합될 수도 있는데, 이 경우, 하나의 베이스 어드레스가 시작 어드레스로 사용되고 가상 어드레스들이 인덱스 신호로 사용된다. 이것을 나타내는 일례들을, 참고 문헌으로써 포함되어 있는, "Memory Management for Virtual Address Space with Translation Units of Variable Range Size"라는 명칭으로 2005년 3월 10일에 출원된, 계류중인 공동 소유의 미국 특허출원 제11/077,662호에서 찾아볼 수 있다. 또한, 이 일례에서는, 이 태스크가, GPU에서 실행중인 드라이버의 일부인 리소스 관리자의 책임이지만, 다른 실시예들에서는, 이 일례 및 포함된 나머지 일례들에 도시된 이 태스크 및 나머지 태스크들이 다른 소프트웨어, 펌웨어, 또는 하드웨어에 의해 수행되거나 공유될 수도 있다.
단계 350에서, 리소스 관리자는 변환 엔트리들을 시스템 메모리에서의 페이지 테이블들에 기입한다. 또한, 리소스 관리자는 그래픽 TLB를 이러한 변환 엔트리들 중 적어도 일부로써 사전 로딩하거나 미리 채우기한다. 단계 360에서는, 그래픽 TLB 엔트리들의 일부 또는 전부가 로킹될 수 있거나 아니면 퇴거되는 것이 금지될 수 있다. 본 발명의 특정 실시예에서, 디스플레이된 데이터를 위한 어드레스 들은, 어드레스 변환 정보를 위해 필요한 추가적인 시스템 메모리 액세스들이 없이, 디스플레이 정보를 위한 어드레스들이 제공될 수 있다는 것을 보장하기 위해, 겹쳐쓰기 또는 퇴거되는 것이 방지된다.
이러한 로킹은 본 발명의 실시예들에 따른 다양한 방법들을 사용해 실현될 수도 있다. 예를 들어, 다수의 클라이언트들이 그래픽 TLB로부터의 데이터를 판독할 수 있는 경우, 이 클라이언트들 중 하나 이상은, 그들이 제한된 캐시 위치들에 데이터를 기입할 수는 없지만, 다수의 풀링된 또는 제한되지 않은 캐시 라인들 중 하나에 반드시 기입해야 하도록 제한될 수 있다. 좀더 많은 세부 사항들은, 참고 문헌으로써 포함되어 있는, "Shared Cache with Client-Specific Replacement Policy"라는 명칭으로, 2005년 12월 8일에 출원된, 계류중인 공동 소유의 미국 특허출원 제11/298,256호에서 찾아볼 수 있다. 다른 실시예들에서는, 그래픽 TLB에 데이터를 기입할 수 있는 회로들에 대한 다른 제약이 존재할 수 있고, 또는 플래그와 같은 데이터가 그래픽 TLB에서의 엔트리들과 함께 저장될 수 있다. 예를 들어, 일부 캐시 라인들의 존재는 그래픽 TLB에 기입할 수 있는 회로들로부터 은닉될 수도 있다. 다른 방법으로, 플래그가 설정되면, 연관된 캐시 라인의 데이터는 겹쳐쓰기 또는 퇴거될 수 없다.
단계 370에서는, 디스플레이 또는 다른 데이터가 시스템 메모리로부터 요구할 때, GPU에 의해 사용되는 가상 어드레스들이 그래픽 TLB에서의 PTE들을 사용해 물리적 어드레스들로 변환된다. 구체적으로, 가상 어드레스는 그래픽 TLB에 제공되어, 대응되는 물리적 어드레스가 판독된다. 한편, 이 정보가 그래픽 TLB에 저장 되어 있지 않으면, 어드레스 변환이 발생할 수 있기 전에, 시스템 메모리로부터 그것이 요청되어야 한다.
본 발명의 다양한 실시예들에서는, 그래픽 TLB 미스의 영향들을 제한하는 다른 기술들이 포함될 수도 있다. 구체적으로, 메모리 액세스 대기 시간을 감소시켜 디스플레이 데이터의 공급에 대한 캐시 미스의 영향을 감소시키는 추가적인 조치가 취해질 수 있다. 하나의 해결책은 PCIE 명세의 일부분인 가상 채널(VC1)을 사용하는 것이다. 그래픽 TLB 미스가 가상 채널(VC1)을 사용하면, 다른 요청들을 우회시킬 수 있어, 필요한 엔트리가 좀더 빨리 검색될 수 있게 된다. 그러나, 종래의 칩셋들은 가상 채널(VC1)로의 액세스를 허용하지 않는다. 더 나아가, 엔비디어사는 본 발명에 따른 방식으로 제품에 그러한 해결책을 구현할 수 있지만, 다른 디바이스들과의 상호 운용성으로 인해 현재 시점에서 그렇게 하는 것은 바람직스럽지 않고, 다만 미래에는 이것이 달라질 수도 있다. 다른 해결책은 그래픽 TLB 미스들로부터 발생하는 요청들을 우선 순위화하거나 태깅하는 단계를 수반한다. 예를 들어, 요청은 높은 우선 순위 태그로써 플래그될 수 있다. 이 해결책은, 상기 해결책과 유사한 상호 운용성을 가진다.
도 4a 내지 도 4c는, 본 발명의 실시예에 따른, 디스플레이 데이터에 액세스하는 방법 동안 컴퓨터 시스템에서의 커맨드들 및 데이터의 전송들을 예시한다. 이러한 특정 일례에서는, 도 1의 컴퓨터 시스템이 도시되지만, 도 2에 도시된 시스템과 같은, 다른 시스템들에서의 커맨드 및 데이터 전송들도 유사하다.
도 4a에서는, 시스템 파워-업, 리셋, 재부팅, 및 다른 이벤트시에, GPU가 시 스템 메모리 공간을 위한 요청을 오퍼레이팅 시스템으로 송신한다. 한편, 이 요청은 GPU에서 동작중인 드라이버로부터 올 수 있는데, 구체적으로, 드라이버의 리소스 관리자 부분이 이러한 요청을 할 수 있지만, 다른 하드웨어, 펌웨어, 또는 소프트웨어가 이러한 요청을 할 수도 있다. 이러한 요청은 GPU(430)로부터 시스템 플랫폼 프로세서(410)를 통해 CPU(410)로 전달될 수 있다.
도 4b에서는, 오퍼레이팅 시스템이 프레임 버퍼 또는 그래픽 메모리(422)로서 사용하기 위해 시스템 메모리에 GPU를 위한 공간을 할당한다. 프레임 버퍼 또는 그래픽 메모리(422)에 저장된 데이터는 디스플레이 데이터, 즉, 디스플레이를 위한 픽셀 값들, 텍스처들, 텍스처 기술자들, 셰이더 프로그램 명령어들, 및 다른 데이터 및 커맨드들을 포함할 수 있다.
이 일례에서는, 시스템 메모리(420)에 할당된 공간인 프레임 버퍼(422)가 연속적인 것으로 도시된다. 다른 실시예들 또는 일례들에서, 할당된 공간은 불연속적일 수도 있는데, 다시 말해, 그것은 공통 부분이 없이 다수 섹션들로 분할될 수 있다.
통상적으로 시스템 메모리의 섹션들에 대한 하나 이상의 베이스 어드레스들 및 범위들을 포함하는 정보가 GPU로 전달된다. 이번에도, 본 발명의 특정 실시예에서는, 이 정보가 GPU(430)에서 동작 중인 드라이버의 리소스 관리자 부분으로 전달되지만, 다른 소프트웨어, 펌웨어, 또는 하드웨어가 사용될 수도 있다. 이 정보는 CPU(400)로부터 시스템 플랫폼 프로세서(410)를 통해 GPU(430)로 전달될 수 있다.
도 4c에서, GPU는 시스템 메모리 내의 페이지 테이블들에 변환 엔트리들을 기입한다. 또한, GPU는 이러한 변환 엔트리들 중 적어도 일부로써 그래픽 TLB를 사전 로딩한다. 한편, 이 엔트리들은 GPU에 의해 사용되는 가상 어드레스들을 시스템 메모리(420) 내의 프레임 버퍼(422)에 의해 사용되는 물리적 어드레스들로 변환한다.
앞서와 같이, 그래픽 TLB에서의 엔트리들 중 일부는, 그것들이 퇴거되거나 겹쳐쓰기될 수 없도록, 로킹되거나 아니면 제한될 수도 있다. 한편, 본 발명의 특정 실시예에서, 픽셀 또는 디스플레이 데이터가 저장되는 프레임 버퍼(422)에서의 위치들을 식별하는 어드레스들을 변환하는 엔트리들은 로킹되거나 제한된다.
데이터가 프레임 버퍼(422)로부터 액세스되어야 할 때, GPU(430)에 의해 사용되는 가상 어드레스들은 그래픽 TLB(432)를 사용해 물리적 어드레스들로 변환된다. 그 다음, 이 요청들은, 요구되는 데이터를 판독하여 그것을 GPU(430)로 리턴하는 시스템 플랫폼 프로세서(410)로 전달된다.
상기 일례들에서, 파워-업 또는 다른 파워 리셋이나 유사한 조건에 수반하여, GPU는 시스템 메모리 내의 공간을 위한 요청을 오퍼레이팅 시스템으로 송신한다. 본 발명의 다른 실시예들에서는, GPU가 시스템 메모리 내의 공간을 필요로 할 것이라는 사실이 공지되어 있어 요청이 이루어질 필요가 없다. 이 경우, 시스템 BIOS, 오퍼레이팅 시스템, 또는 다른 소프트웨어, 펌웨어, 또는 하드웨어가 파워-업, 리셋, 재부팅, 또는 다른 적합한 이벤트에 수반하여 시스템 메모리 내의 공간을 할당할 수도 있다. 이것은, 데스크탑 애플리케이션에서 대체로 그러하듯이, GPU들이 쉽게 스왑(swap)되거나 대체되지 않는 모바일 애플리케이션과 같은, 제어 환경에서 특히 실현 가능하다.
GPU는 그것이 시스템 메모리에서 사용하기로 되어 있는 어드레스들을 미리 알 수 있고, 또는 어드레스 정보가 시스템 BIOS 또는 오퍼레이팅 시스템에 의해 GPU로 전달될 수도 있다. 어느 경우이든, 메모리 공간은 메모리의 연속적인 부분일 수 있는데, 이 경우, 유일한 단일 어드레스인 베이스 어드레스가 GPU에 공지되거나 제공되기만 하면 된다. 다른 방법으로, 메모리 공간은 공통 부분이 없거나 불연속적일 수 있고, 다수 어드레스들이 GPU에 공지되거나 제공되어야 할 수도 있다. 통상적으로, 메모리 블록 사이즈 또는 범위 정보와 같은, 다른 정보가 GPU에 전달되거나 GPU에 의해 공지된다.
또한, 본 발명의 다양한 실시예들에서, 시스템 메모리 내의 공간은 파워-업 시에 오퍼레이팅 시스템에 의해 할당될 수 있고 GPU는 이후에 좀더 많은 메모리를 요청할 수도 있다. 그러한 일례에서는, 시스템 BIOS와 오퍼레이팅 시스템 양자가 시스템 메모리 내의 공간을 GPU에 의한 사용을 위해 할당할 수도 있다. 다음의 도면은, 시스템 BIOS가 파워-업 시에 GPU를 위한 시스템 메모리 공간을 할당하도록 프로그램되는 본 발명의 실시예 일례를 나타낸다.
도 5는, 본 발명의 실시예에 따른, 시스템 메모리의 디스플레이 데이터에 액세스하는 다른 방법을 예시하는 흐름도이다. 한편, 본 발명의 실시예들은 디스플레이 데이터로의 액세스를 제공하기에 가장 적합하지만, 다양한 실시예들이 데이터의 이 또는 다른 유형들로의 액세스를 제공할 수도 있다. 이 일례에서, 시스템 BIOS는 파워-업 시에, 시스템 메모리 내의 공간이 GPU에 의한 사용을 위해 할당되어야 한다는 것을 인지한다. 이러한 공간은 연속적이거나 불연속적일 수 있다. 또한, 이 일례에서는, 시스템 BIOS가 메모리 및 어드레스 정보를 리소스 관리자 또는 GPU 상의 드라이버의 다른 부분으로 전달하지만, 본 발명의 다른 실시예들에서는, 리소스 관리자 또는 GPU상의 드라이버의 다른 부분이 어드레스 정보를 미리 인지하고 있을 수도 있다.
구체적으로, 단계 510에서는, 컴퓨터 또는 다른 전자 시스템이 파워-업한다. 단계 520에서는, 오퍼레이팅 시스템에서와 같이, 시스템 BIOS나 다른 적합한 소프트웨어, 펌웨어, 또는 하드웨어가 GPU에 의한 사용을 위해 시스템 메모리 내의 공간을 할당한다. 메모리 공간이 연속적이면, 시스템 BIOS는 베이스 어드레스를 리소스 관리자 또는 GPU에서 실행중인 드라이버에 제공한다. 메모리 공간이 불연속적이면, 시스템 BIOS는 다수의 베이스 어드레스들을 제공할 것이다. 각각의 베이스 어드레스에는 통상적으로, 사이즈 또는 어드레스 범위 정보와 같은, 메모리 블록 사이즈 정보가 수반된다. 통상적으로, 메모리 공간은 카브아웃(carveout)이며 연속적인 메모리 공간이다. 이 정보에는 통상적으로 어드레스 범위 정보가 수반된다.
베이스 어드레스 및 범위는, 단계 540에서, GPU에서의 사용을 위해 저장된다. 후속적인 가상 어드레스들은, 단계 550에서, 가상 어드레스들의 인덱스를 사용하는 것에 의해 물리적 어드레스들로 변환될 수 있다. 예를 들어, 본 발명의 특정 실시예에서, 가상 어드레스는 베이스 어드레스에 가상 어드레스를 부가하는 것 에 의해 물리적 어드레스로 변환될 수 있다.
구체적으로, 가상 어드레스가 물리적 어드레스로 변환될 때, 범위 점검이 수행된다. 저장된 물리적 베이스 어드레스가 0의 가상 어드레스에 대응될 때, 가상 어드레스가 범위내에 해당되면, 가상 어드레스는 그것을 물리적 베이스 어드레스와 덧셈하는 것에 의해 변환될 수 있다. 마찬가지로, 저장된 물리적 베이스 어드레스가 "X"의 가상 어드레스와 대응될 때, 가상 어드레스가 범위내에 해당되면, 가상 어드레스를 물리적 베이스 어드레스와 덧셈하고 "X"를 뺄셈하는 것에 의해 가상 어드레스는 변환될 수 있다. 가상 어드레스가 범위내에 해당되지 않으면, 어드레스는, 상술된 바와 같이, 그래픽 TLB 또는 PTE들을 사용해 변환될 수 있다.
도 6은, 본 발명의 실시예에 따른, 디스플레이 데이터에 액세스하는 방법 동안 컴퓨터 시스템에서의 커맨드들 및 데이터의 전송을 예시한다. 파워-업 시에, 시스템 BIOS는 GPU(630)에 의한 사용을 위해 시스템 메모리(624)에서의 "카브아웃"(622) 공간을 할당한다.
GPU는 시스템 메모리(620) 내의 할당된 공간 또는 카브아웃(622)을 위한 베이스 어드레스(또는 베이스 어드레스들)를 수신하고 저장한다. 이 데이터는 그래픽 TLB(632)에 저장될 수 있거나, 다른 곳에, 예를 들어, GPU(630)상의 하드웨어 레지스터에 저장될 수도 있다. 이 어드레스는, 카브아웃(622)의 범위와 함께, 예를 들어, 하드웨어 레지스터에 저장된다.
데이터가 시스템 메모리(620) 내의 프레임 버퍼(622)로부터 판독되어야 할 때, GPU(630)에 의해 사용되는 가상 어드레스들은 가상 어드레스들을 인덱스로서 취급하는 것에 의해 시스템 메모리에 의해 사용되는 물리적 어드레스들로 변환될 수 있다. 한편, 본 발명의 특정 실시예에서, 카브아웃 어드레스 범위의 가상 어드레스들은 베이스 어드레스에 가상 어드레스를 부가하는 것에 의해 물리적 어드레스들로 변환된다. 다시 말해, 베이스 어드레스가 0의 가상 어드레스에 대응되면, 가상 어드레스들은, 상술된 바와 같이, 베이스 어드레스에 가상 어드레스들을 부가하는 것에 의해 물리적 어드레스들로 변환될 수 있다. 한편, 범위를 벗어난 가상 어드레스들은, 상술된 바와 같이, 그래픽 TLB들 및 페이지 테이블들을 사용해 변환될 수 있다.
도 7은 본 발명의 실시예에 따른 GPU의 블록도이다. GPU(700)의 이 블록도는 PCIE 인터페이스(710), 그래픽 파이프라인(720), 그래픽 TLB(730), 및 로직 회로(740)를 포함한다. PCIE 인터페이스(710)는 PCIE 버스(750)를 통해 데이터를 송수신한다. 한편, 본 발명의 다른 실시예들에서는, 현재 개발된 또는 개발중인 버스들 및 미래에 개발될 버스들의 다른 유형들이 사용될 수도 있다. GPU는 통상적으로 집적 회로에 형성되지만, 일부 실시예들에서는, 하나 이상의 집적 회로가 GPU(700)를 구비할 수도 있다.
그래픽 파이프라인(720)은 PCIE 인터페이스로부터 데이터를 수신하고 디스플레이를 위한 데이터를 모니터 또는 다른 디바이스에 렌더링한다. 그래픽 TLB(730)는 그래픽 파이프라인(720)에 의해 사용되는 가상 메모리 어드레스들을 시스템 메모리에 의해 사용되는 물리적 메모리 어드레스들로 변환하는데 사용되는 PTE들을 저장한다. 로직 회로(740)는 그래픽 TLB(730)를 제어하고, 거기에 저장된 데이터 에 대한 로크들 또는 다른 제약들을 점검하며, 캐시로부터 데이터를 판독하고 캐시에 데이터를 기입한다.
도 8은 본 발명의 실시예에 따른 그래픽 카드를 예시하는 도면이다. 그래픽 카드(800)는 GPU(810), 버스 커넥터(820), 및 제2 그래픽 카드로의 커넥터(830)를 포함한다. 버스 커넥터(828)는 PCIE 슬롯, 예를 들어, 컴퓨터 시스템 마더보드상의 PCIE 슬롯에 적합하도록 설계된 PCIE 커넥터일 수도 있다. 제2 카드로의 커넥터(830)는 하나 이상의 다른 그래픽 카드들로의 점퍼 또는 다른 접속에 적합하도록 구성될 수도 있다. 전원 공급 레귤레이터 및 커패시터들과 같은, 다른 디바이스들이 포함될 수도 있다. 이러한 그래픽 카드에 메모리 디바이스가 포함되지 않는다는 것에 주의해야 한다.
발명의 예시적 실시예들에 대한 상기 설명은 예시 및 설명의 목적들을 위해 제시되었다. 설명된 정확한 형태로 발명을 총망라하거나 제한하려는 것은 아니며, 상기 교시의 관점에서 다수 변경들 및 변형들이 가능하다. 발명의 원리들 및 그것의 실제적인 적용들을 최선으로 설명함으로써, 당업자들이 발명을 다양한 실시예들로 그리고 예상되는 특정 사용에 적합한 다양한 변경들로써 최선으로 이용할 수 있도록 하기 위해, 실시예들이 선택되고 설명되었다.
도 1은 본 발명의 실시예를 통합하는 것에 의해 개선되는 컴퓨터 시스템의 블록도;.
도 2는 본 발명의 실시예를 통합하는 것에 의해 개선되는 다른 컴퓨팅 시스템의 블록도;
도 3은, 본 발명의 실시예에 따른, 시스템 메모리에 저장된 디스플레이 데이터에 액세스하는 방법을 예시하는 흐름도;
도 4a 내지 도 4c는, 본 발명의 실시예에 따른, 디스플레이 데이터에 액세스하는 방법 동안 컴퓨터 시스템에서의 커맨드들 및 데이터의 전송들을 도시하는 도면;
도 5는, 본 발명의 실시예에 따른, 시스템 메모리의 디스플레이 데이터에 액세스하는 다른 방법을 예시하는 흐름도;
도 6은, 본 발명의 실시예에 따른, 디스플레이 데이터에 액세스하는 방법 동안 컴퓨터 시스템에서의 커맨드들 및 데이터의 전송을 도시하는 도면 ;
도 7은 본 발명의 실시예에 따른 GPU(graphics processing unit)의 블록도;
도 8은 본 발명의 실시예에 따른 그래픽 카드의 도면.
<도면의 주요 부분에 대한 부호의 설명>
100, 200, 400, 600 : CPU
110, 210, 410, 610 : SPP(system platform processor)
120, 220, 420, 620 : 시스템 메모리
130, 230, 430, 630 : GPU
140, 240 : 프레임 버퍼
150, 250, 450, 650 : MCP
160, 260, 460, 660 : 네트워크들
170, 270, 470, 670 : 디바이스들
432 : 그래픽 TLB
622 : 카브아웃
632 : 어드레스 범위

Claims (20)

  1. 그래픽 프로세서를 사용해 데이터를 검색하는 방법으로서,
    시스템 메모리 내의 메모리 위치들로의 액세스를 요청하는 단계;
    상기 시스템 메모리 내의 메모리 위치들의 하나 이상의 블록을 위한 어드레스 정보를 수신하는 단계 - 상기 어드레스 정보는 하나 이상의 물리적 메모리 어드레스를 식별하는 정보를 포함함 - ; 및
    상기 물리적 메모리 어드레스에 대응하는 PTE(page table-entry)를 캐시에 저장하는 단계
    를 포함하고,
    상기 어드레스 정보가 수신되며 상기 PTE는 캐시 미스(cache miss)를 대기하지 않고 상기 캐시에 저장되는 데이터 검색 방법.
  2. 제1항에 있어서,
    상기 PTE를 상기 시스템 메모리 내에 저장하는 단계를 더 포함하는 데이터 검색 방법.
  3. 제2항에 있어서,
    상기 PTE가 저장되는 상기 캐시 내의 위치를 로킹(locking)하는 단계를 더 포함하는 데이터 검색 방법.
  4. 제3항에 있어서,
    상기 그래픽 프로세서는 GPU(graphics processing unit)인 데이터 검색 방법.
  5. 제3항에 있어서,
    상기 그래픽 프로세서는 집적된 그래픽 프로세서 상에 포함되는 데이터 검색 방법.
  6. 제3항에 있어서,
    상기 시스템 메모리 내의 메모리 위치로의 액세스를 위한 요청은 오퍼레이팅 시스템에 대해 이루어지는 데이터 검색 방법.
  7. 제3항에 있어서,
    상기 하나 이상의 물리적 메모리 어드레스를 식별하는 정보는 베이스 어드레스 및 메모리 블록 사이즈를 포함하는 데이터 검색 방법.
  8. 그래픽 프로세서로서,
    시스템 메모리 내의 메모리 위치들로의 액세스를 위한 요청을 제공하고 상기 시스템 메모리 내의 메모리 위치들에 관한 어드레스 정보를 수신하기 위한 데이터 인터페이스 - 상기 어드레스 정보는 하나 이상의 물리적 메모리 어드레스를 식별하는 정보를 포함함 - ;
    상기 물리적 메모리 어드레스에 대응하는 PTE를 기입하기 위한 캐시 제어기; 및
    상기 PTE를 저장하기 위한 캐시
    를 포함하고,
    상기 어드레스 정보가 수신되며 상기 PTE는 캐시 미스가 발생하기를 대기하지 않고 상기 캐시 내에 저장되는 그래픽 프로세서.
  9. 제8항에 있어서,
    상기 데이터 인터페이스는 또한 상기 PTE를 상기 시스템 메모리 내에 저장하기 위한 요청을 제공하는 그래픽 프로세서.
  10. 제8항에 있어서,
    상기 데이터 인터페이스는 시스템 파워-업에 수반하여 상기 시스템 메모리 내의 메모리 위치들로의 액세스를 위한 요청을 제공하는 그래픽 프로세서.
  11. 제8항에 있어서,
    상기 캐시 제어기는 상기 PTE가 저장되는 위치를 로킹하는 그래픽 프로세서.
  12. 제8항에 있어서,
    상기 캐시 제어기는 상기 가상 어드레스 및 상기 물리적 어드레스가 저장되는 위치로의 액세스를 제한하는 그래픽 프로세서.
  13. 제8항에 있어서,
    상기 데이터 인터페이스는 PCIE 인터페이스 회로인 그래픽 프로세서.
  14. 제8항에 있어서,
    상기 그래픽 프로세서는 GPU(graphic processing unit)인 그래픽 프로세서.
  15. 제8항에 있어서,
    상기 그래픽 프로세서는 집적된 그래픽 프로세서에 포함되는 그래픽 프로세서.
  16. 그래픽 프로세서를 사용해 데이터를 검색하는 방법으로서,
    시스템 메모리 내의 메모리의 블록을 위한 베이스 어드레스 및 범위를 수신하는 단계;
    상기 베이스 어드레스 및 범위를 저장하는 단계;
    제1 어드레스를 수신하는 단계; 및
    상기 제1 어드레스가 상기 범위에 있는지를 판정하고, 상기 범위에 있다면,
    상기 제1 어드레스에 상기 베이스 어드레스를 부가함으로써 상기 제1 어드레스를 제2 어드레스로 변환하고, 상기 범위에 있지 않다면,
    캐시로부터 PTE를 판독하는 단계; 및
    상기 PTE를 사용해 상기 제1 어드레스를 제2 어드레스로 변환하는 단계
    를 포함하는 데이터 검색 방법.
  17. 제16항에 있어서,
    상기 캐시로부터 PTE를 판독하는 단계 이전에, 캐시 미스를 대기하지 않고 상기 PTE를 상기 캐시에 저장하는 단계를 더 포함하는 데이터 검색 방법.
  18. 제16항에 있어서,
    상기 캐시로부터 PTE를 판독하는 단계 이전에, 상기 PTE가 상기 캐시에 저장되어 있는지를 판정하고, 저장되어 있지 않다면, 상기 시스템 메모리로부터 상기 PTE를 판독하는 단계를 더 포함하는 데이터 검색 방법.
  19. 제16항에 있어서,
    상기 그래픽 프로세서는 GPU(graphics processing unit)인 데이터 검색 방법.
  20. 제16항에 있어서,
    상기 그래픽 프로세서는 집적된 그래픽 프로세서 상에 포함되는 데이터 검색 방법.
KR1020070076557A 2006-07-31 2007-07-30 Gpu에서의 페이지 매핑을 위한 전용 메커니즘 KR101001100B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US82095206P 2006-07-31 2006-07-31
US60/820,952 2006-07-31
US82112706P 2006-08-01 2006-08-01
US60/821,127 2006-08-01
US11/689,485 2007-03-21
US11/689,485 US20080028181A1 (en) 2006-07-31 2007-03-21 Dedicated mechanism for page mapping in a gpu

Publications (2)

Publication Number Publication Date
KR20080011630A true KR20080011630A (ko) 2008-02-05
KR101001100B1 KR101001100B1 (ko) 2010-12-14

Family

ID=38461494

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070076557A KR101001100B1 (ko) 2006-07-31 2007-07-30 Gpu에서의 페이지 매핑을 위한 전용 메커니즘

Country Status (7)

Country Link
US (1) US20080028181A1 (ko)
JP (1) JP4941148B2 (ko)
KR (1) KR101001100B1 (ko)
DE (1) DE102007032307A1 (ko)
GB (1) GB2440617B (ko)
SG (1) SG139654A1 (ko)
TW (1) TWI398771B (ko)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5115548B2 (ja) * 2007-03-15 2013-01-09 日本電気株式会社 半導体集積回路装置
US20080276067A1 (en) * 2007-05-01 2008-11-06 Via Technologies, Inc. Method and Apparatus for Page Table Pre-Fetching in Zero Frame Display Channel
US8024547B2 (en) * 2007-05-01 2011-09-20 Vivante Corporation Virtual memory translation with pre-fetch prediction
US7827333B1 (en) * 2008-02-04 2010-11-02 Nvidia Corporation System and method for determining a bus address on an add-in card
US8219778B2 (en) * 2008-02-27 2012-07-10 Microchip Technology Incorporated Virtual memory interface
US8392667B2 (en) * 2008-12-12 2013-03-05 Nvidia Corporation Deadlock avoidance by marking CPU traffic as special
TWI514324B (zh) * 2010-11-30 2015-12-21 Ind Tech Res Inst 影像目標區域追蹤系統與方法及電腦程式產品
US9977800B2 (en) 2011-03-14 2018-05-22 Newsplug, Inc. Systems and methods for enabling a user to operate on displayed web content via a web browser plug-in
US9053037B2 (en) * 2011-04-04 2015-06-09 International Business Machines Corporation Allocating cache for use as a dedicated local storage
US9164923B2 (en) * 2011-07-01 2015-10-20 Intel Corporation Dynamic pinning of virtual pages shared between different type processors of a heterogeneous computing platform
KR101667772B1 (ko) 2012-08-18 2016-10-19 퀄컴 테크놀로지스, 인크. 프리페칭을 갖는 변환 색인 버퍼
US20140101405A1 (en) * 2012-10-05 2014-04-10 Advanced Micro Devices, Inc. Reducing cold tlb misses in a heterogeneous computing system
US9697006B2 (en) 2012-12-19 2017-07-04 Nvidia Corporation Technique for performing memory access operations via texture hardware
US9720858B2 (en) 2012-12-19 2017-08-01 Nvidia Corporation Technique for performing memory access operations via texture hardware
US9348762B2 (en) 2012-12-19 2016-05-24 Nvidia Corporation Technique for accessing content-addressable memory
US9292453B2 (en) * 2013-02-01 2016-03-22 International Business Machines Corporation Storing a system-absolute address (SAA) in a first level translation look-aside buffer (TLB)
US9619364B2 (en) 2013-03-14 2017-04-11 Nvidia Corporation Grouping and analysis of data access hazard reports
US9886736B2 (en) 2014-01-20 2018-02-06 Nvidia Corporation Selectively killing trapped multi-process service clients sharing the same hardware context
US10152312B2 (en) 2014-01-21 2018-12-11 Nvidia Corporation Dynamic compiler parallelism techniques
US9507726B2 (en) 2014-04-25 2016-11-29 Apple Inc. GPU shared virtual memory working set management
US9563571B2 (en) 2014-04-25 2017-02-07 Apple Inc. Intelligent GPU memory pre-fetching and GPU translation lookaside buffer management
US9594697B2 (en) * 2014-12-24 2017-03-14 Intel Corporation Apparatus and method for asynchronous tile-based rendering control
CN106560798B (zh) * 2015-09-30 2020-04-03 杭州华为数字技术有限公司 一种内存访问方法、装置及计算机系统
DE102016219202A1 (de) * 2016-10-04 2018-04-05 Robert Bosch Gmbh Verfahren und Vorrichtung zum Schützen eines Arbeitsspeichers
US10417140B2 (en) * 2017-02-24 2019-09-17 Advanced Micro Devices, Inc. Streaming translation lookaside buffer
EP3800527A4 (en) * 2018-06-12 2021-07-21 Huawei Technologies Co., Ltd. STORAGE MANAGEMENT METHOD, DEVICE AND SYSTEM
US11436292B2 (en) 2018-08-23 2022-09-06 Newsplug, Inc. Geographic location based feed
US11604654B2 (en) * 2018-10-23 2023-03-14 Nvidia Corporation Effective and scalable building and probing of hash tables using multiple GPUs
CN111274166B (zh) * 2018-12-04 2022-09-20 展讯通信(上海)有限公司 Tlb的预填及锁定方法和装置
US11550728B2 (en) * 2019-09-27 2023-01-10 Advanced Micro Devices, Inc. System and method for page table caching memory
CN111338988B (zh) * 2020-02-20 2022-06-14 西安芯瞳半导体技术有限公司 内存访问方法、装置、计算机设备和存储介质
US20210149815A1 (en) * 2020-12-21 2021-05-20 Intel Corporation Technologies for offload device fetching of address translations

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4677546A (en) * 1984-08-17 1987-06-30 Signetics Guarded regions for controlling memory access
JPS62237547A (ja) * 1986-04-09 1987-10-17 Hitachi Ltd アドレス変換方式
JP2635058B2 (ja) * 1987-11-11 1997-07-30 株式会社日立製作所 アドレス変換方式
JP2689336B2 (ja) * 1988-07-29 1997-12-10 富士通株式会社 コンピュータシステムに於けるアダプタ用アドレス変換装置
US5058003A (en) * 1988-12-15 1991-10-15 International Business Machines Corporation Virtual storage dynamic address translation mechanism for multiple-sized pages
US5394537A (en) * 1989-12-13 1995-02-28 Texas Instruments Incorporated Adaptive page placement memory management system
JPH0418650A (ja) * 1990-05-14 1992-01-22 Toshiba Corp メモリ管理装置
EP0508577A1 (en) * 1991-03-13 1992-10-14 International Business Machines Corporation Address translation mechanism
US5617554A (en) * 1992-02-10 1997-04-01 Intel Corporation Physical address size selection and page size selection in an address translator
US5465337A (en) * 1992-08-13 1995-11-07 Sun Microsystems, Inc. Method and apparatus for a memory management unit supporting multiple page sizes
US5555387A (en) * 1995-06-06 1996-09-10 International Business Machines Corporation Method and apparatus for implementing virtual memory having multiple selected page sizes
US5479627A (en) * 1993-09-08 1995-12-26 Sun Microsystems, Inc. Virtual address to physical address translation cache that supports multiple page sizes
US5446854A (en) * 1993-10-20 1995-08-29 Sun Microsystems, Inc. Virtual memory computer apparatus and address translation mechanism employing hashing scheme and page frame descriptor that support multiple page sizes
SG45399A1 (en) * 1994-01-12 1998-01-16 Sun Microsystems Inc Logically addressable physical memory for a virtual memory computer system that support multiple page sizes
US5822749A (en) * 1994-07-12 1998-10-13 Sybase, Inc. Database system with methods for improving query performance with cache optimization strategies
JP3740195B2 (ja) * 1994-09-09 2006-02-01 株式会社ルネサステクノロジ データ処理装置
US5963984A (en) * 1994-11-08 1999-10-05 National Semiconductor Corporation Address translation unit employing programmable page size
US5958756A (en) * 1996-01-26 1999-09-28 Reynell; Christopher Paul Method and apparatus for treating waste
US5963964A (en) * 1996-04-05 1999-10-05 Sun Microsystems, Inc. Method, apparatus and program product for updating visual bookmarks
US6104417A (en) * 1996-09-13 2000-08-15 Silicon Graphics, Inc. Unified memory computer architecture with dynamic graphics memory allocation
US5928352A (en) * 1996-09-16 1999-07-27 Intel Corporation Method and apparatus for implementing a fully-associative translation look-aside buffer having a variable numbers of bits representing a virtual address entry
US5987582A (en) * 1996-09-30 1999-11-16 Cirrus Logic, Inc. Method of obtaining a buffer contiguous memory and building a page table that is accessible by a peripheral graphics device
US6308248B1 (en) * 1996-12-31 2001-10-23 Compaq Computer Corporation Method and system for allocating memory space using mapping controller, page table and frame numbers
US6349355B1 (en) * 1997-02-06 2002-02-19 Microsoft Corporation Sharing executable modules between user and kernel threads
JP3296240B2 (ja) * 1997-03-28 2002-06-24 日本電気株式会社 バス接続装置
KR100263672B1 (ko) * 1997-05-08 2000-09-01 김영환 가변적인 페이지 크기를 지원하는 어드레스 변환장치
US6249853B1 (en) * 1997-06-25 2001-06-19 Micron Electronics, Inc. GART and PTES defined by configuration registers
US5999743A (en) * 1997-09-09 1999-12-07 Compaq Computer Corporation System and method for dynamically allocating accelerated graphics port memory space
US5933158A (en) * 1997-09-09 1999-08-03 Compaq Computer Corporation Use of a link bit to fetch entries of a graphic address remapping table
US6112285A (en) * 1997-09-23 2000-08-29 Silicon Graphics, Inc. Method, system and computer program product for virtual memory support for managing translation look aside buffers with multiple page size support
US5949436A (en) * 1997-09-30 1999-09-07 Compaq Computer Corporation Accelerated graphics port multiple entry gart cache allocation system and method
US6356991B1 (en) * 1997-12-31 2002-03-12 Unisys Corporation Programmable address translation system
US6205531B1 (en) * 1998-07-02 2001-03-20 Silicon Graphics Incorporated Method and apparatus for virtual address translation
US6374341B1 (en) * 1998-09-02 2002-04-16 Ati International Srl Apparatus and a method for variable size pages using fixed size translation lookaside buffer entries
JP2001022640A (ja) * 1999-07-02 2001-01-26 Victor Co Of Japan Ltd メモリ管理方法
US6457068B1 (en) * 1999-08-30 2002-09-24 Intel Corporation Graphics address relocation table (GART) stored entirely in a local memory of an expansion bridge for address translation
US6857058B1 (en) * 1999-10-04 2005-02-15 Intel Corporation Apparatus to map pages of disparate sizes and associated methods
US6628294B1 (en) * 1999-12-31 2003-09-30 Intel Corporation Prefetching of virtual-to-physical address translation for display data
US6477612B1 (en) * 2000-02-08 2002-11-05 Microsoft Corporation Providing access to physical memory allocated to a process by selectively mapping pages of the physical memory with virtual memory allocated to the process
US6643759B2 (en) * 2001-03-30 2003-11-04 Mips Technologies, Inc. Mechanism to extend computer memory protection schemes
JP4263919B2 (ja) * 2002-02-25 2009-05-13 株式会社リコー 画像形成装置及びメモリ管理方法
US20040117594A1 (en) * 2002-12-13 2004-06-17 Vanderspek Julius Memory management method
US7194582B1 (en) * 2003-05-30 2007-03-20 Mips Technologies, Inc. Microprocessor with improved data stream prefetching
US7082508B2 (en) * 2003-06-24 2006-07-25 Intel Corporation Dynamic TLB locking based on page usage metric
US20050160229A1 (en) * 2004-01-16 2005-07-21 International Business Machines Corporation Method and apparatus for preloading translation buffers
US7321954B2 (en) * 2004-08-11 2008-01-22 International Business Machines Corporation Method for software controllable dynamically lockable cache line replacement system
JP2006195871A (ja) * 2005-01-17 2006-07-27 Ricoh Co Ltd 通信装置、電子機器、及び画像形成装置
US7519781B1 (en) * 2005-12-19 2009-04-14 Nvidia Corporation Physically-based page characterization data

Also Published As

Publication number Publication date
JP4941148B2 (ja) 2012-05-30
GB2440617A (en) 2008-02-06
KR101001100B1 (ko) 2010-12-14
GB2440617B (en) 2009-03-25
GB0713574D0 (en) 2007-08-22
DE102007032307A1 (de) 2008-02-14
TW200817899A (en) 2008-04-16
SG139654A1 (en) 2008-02-29
JP2008033928A (ja) 2008-02-14
TWI398771B (zh) 2013-06-11
US20080028181A1 (en) 2008-01-31

Similar Documents

Publication Publication Date Title
KR101001100B1 (ko) Gpu에서의 페이지 매핑을 위한 전용 메커니즘
US8669992B2 (en) Shared virtual memory between a host and discrete graphics device in a computing system
EP2476051B1 (en) Systems and methods for processing memory requests
US8359454B2 (en) Memory access techniques providing for override of page table attributes
US8707011B1 (en) Memory access techniques utilizing a set-associative translation lookaside buffer
US6483516B1 (en) Hierarchical texture cache
US8230179B2 (en) Administering non-cacheable memory load instructions
US7991963B2 (en) In-memory, in-page directory cache coherency scheme
US20100325374A1 (en) Dynamically configuring memory interleaving for locality and performance isolation
US20070061549A1 (en) Method and an apparatus to track address translation in I/O virtualization
CN101853227B (zh) 改进存储器映射输入/输出请求处理的方法和处理器
US10467138B2 (en) Caching policies for processing units on multiple sockets
US9208088B2 (en) Shared virtual memory management apparatus for providing cache-coherence
US8352709B1 (en) Direct memory access techniques that include caching segmentation data
EP3382558B1 (en) Apparatus, method and system for just-in-time cache associativity
CN113039531B (zh) 用于分配缓存资源的方法、系统和存储介质
US8700883B1 (en) Memory access techniques providing for override of a page table
CN117389914B (zh) 缓存系统、缓存写回方法、片上系统及电子设备
US20110055482A1 (en) Shared cache reservation
CN114238171B (zh) 电子设备、数据处理方法和装置、计算机系统
US7483032B1 (en) Zero frame buffer
US9652560B1 (en) Non-blocking memory management unit
CN111026680A (zh) 将第一标识符映射到第二标识符

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
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: 20131119

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20141126

Year of fee payment: 5