KR101593107B1 - 메모리 요청들을 처리하기 위한 시스템들 및 방법들 - Google Patents

메모리 요청들을 처리하기 위한 시스템들 및 방법들 Download PDF

Info

Publication number
KR101593107B1
KR101593107B1 KR1020127009174A KR20127009174A KR101593107B1 KR 101593107 B1 KR101593107 B1 KR 101593107B1 KR 1020127009174 A KR1020127009174 A KR 1020127009174A KR 20127009174 A KR20127009174 A KR 20127009174A KR 101593107 B1 KR101593107 B1 KR 101593107B1
Authority
KR
South Korea
Prior art keywords
memory
processing unit
cache
probe
request
Prior art date
Application number
KR1020127009174A
Other languages
English (en)
Other versions
KR20120060230A (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 KR20120060230A publication Critical patent/KR20120060230A/ko
Application granted granted Critical
Publication of KR101593107B1 publication Critical patent/KR101593107B1/ko

Links

Images

Classifications

    • 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
    • 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
    • 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/001Arbitration of resources in a display system, e.g. control of access to frame buffer by video controller and/or main processor
    • 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
    • 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/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2350/00Solving problems of bandwidth in display systems
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Computer Graphics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Digital Computer Display Output (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)

Abstract

처리 시스템(processing system)이 제공된다. 이러한 처리 시스템은 제 1 메모리에 결합된 제 1 처리 유닛 및 제 2 메모리에 결합된 제 2 처리 유닛을 포함한다. 제 2 메모리는 코히런트 메모리, 및 제 2 처리 유닛에 전용되는 전용 메모리(private memory)를 포함한다.

Description

메모리 요청들을 처리하기 위한 시스템들 및 방법들{SYSTEMS AND METHODS FOR PROCESSING MEMORY REQUESTS}
본 발명은 처리 환경들에 관한 것으로서, 특히 멀티-프로세서 시스템들에서 메모리 요청들을 처리하는 것에 관한 것이다.
일부 그래픽 처리 시스템(graphics processing system)들은 다수의 처리 유닛들, 예를 들어 일부 그래픽 처리 태스크(task)들을 하나 이상의 그래픽 처리 유닛(graphics processing unit, GPU)들에게 할당하는 중앙 처리 유닛(CPU)을 포함한다. 예를 들어, CPU는 하나 이상의 GPU들에게 렌더링 태스크(rendering task)들을 할당할 수 있다.
일부 시스템들에서, CPU 및 GPU들 각각은 이들 자신의 관련 메모리를 갖는다. 예를 들어, CPU 및 GPU를 갖는 시스템에서, CPU는 시스템 메모리에 결합될 수 있고, GPU는 로컬 메모리에 결합될 수 있다. 시스템 메모리는 코히런트 메모리(coherent memory)를 포함할 수 있다. 하지만, 많은 시스템들에서, GPU 로컬 메모리에 대한 액세스들은 코히런트하지 않다. 코히런시(coherency)가 요구되면, 코히런시를 보증하기 위한 소프트웨어가 이용되어야 하며, 이에 의해 성능 오버헤드(performance overhead)를 야기하게 된다.
따라서, 코히런시를 보증하기 위한 소프트웨어를 이용하지 않으면서, GPU의 로컬 메모리의 코히런트 액세스들을 가능하게 하는 방법들 및 시스템들이 필요하다.
여기에서 설명되는 실시예들은 일반적으로 멀티-프로세서 시스템들 내에 코히런트 메모리를 포함하는 메모리를 제공하는 것에 관한 것이다. 예를 들어, 본 발명의 실시예들은 그래픽 처리 유닛(GPU)에 결합되는 메모리 내에 코히런트 메모리를 제공하는 것에 관한 것이다.
일 실시예에서, 처리 시스템(processing system)이 제공된다. 이러한 처리 시스템은 제 1 메모리에 결합된 제 1 처리 유닛 및 제 2 메모리에 결합된 제 2 처리 유닛을 포함한다. 제 2 메모리는 코히런트 메모리, 및 제 2 처리 유닛에 전용되는 전용 메모리(private memory)를 포함한다.
다른 실시예에서, 메모리 요청을 처리하는 방법은 메모리 요청과 관련된 메모리 워드가 어디에 위치하는 지를 결정하는 단계, 및 메모리 워드가 메모리 내에 위치하는 것에 응답하여, 요청을 처리하기 위해 메모리를 액세스하는 단계를 포함한다. 메모리는 코히런트 메모리, 및 제 1 처리 유닛에 전용되는 전용 메모리를 포함한다.
본 발명의 다른 특징들 및 장점들 뿐 아니라, 본 발명의 다양한 실시예들의 구조 및 동작은 첨부 도면들을 참조하여 하기에서 상세히 설명된다.
본원에 통합되어 명세서의 일부를 구성하는 첨부 도면들은 본 발명을 예시하며, 상세한 설명과 함께, 본 발명의 원리들을 설명하고, 관련 기술 분야의 당업자로 하여금 본 발명을 제조 및 이용할 수 있게 한다.
도 1-3은 본 발명의 실시예들에 따른 처리 시스템들을 도시한다.
도 4는 본 발명의 일 실시예에 따른 그래픽 처리 유닛을 도시한다.
도 5-6은 본 발명의 실시예들에 따라 메모리 요청들을 처리하는 예시적인 방법들의 흐름도들이다.
도 7-8은 본 발명의 일 실시예에 따른 처리 시스템들을 도시한다.
본 발명은 첨부 도면들을 참조하여 설명될 것이다. 일반적으로, 어떠한 엘리먼트가 처음 나오는 도면은 전형적으로 해당하는 참조 부호의 가장 왼쪽의 숫자(들)에 의해 나타낸다.
개요 및 요약 부분이 아닌 상세한 설명 부분이 청구항들을 해석하는 데에 사용되도록 의도된 것임을 이해해야 한다. 개요 및 요약 부분들은 발명자들에 의해 고려되는 본 발명의 모든 예시적인 실시예들이 아닌, 하나 이상의 실시예들을 제시하는 것으로서, 본 발명 및 첨부된 청구항들을 어떠한 식으로든 제한하는 것으로 의도되지 않는다.
전술한 특정 실시예들에 대한 설명은 본 발명의 일반적인 특징을 충분히 나타냄으로써, 당업자들이, 본 발명의 일반적인 개념으로부터 벗어나지 않으면서, 과도한 실험 없이 당업계의 지식을 적용하여 이러한 특정 실시예들을 다양한 응용들에 대해 쉽게 수정 및/또는 조정할 수 있게 한다. 따라서, 이러한 조정 및 수정은, 본원에서 제시되는 교시 및 안내에 기초하여, 개시되는 실시예들의 등가물들의 의미 및 범위 내에 있는 것으로 의도된다. 본원에서의 어법 또는 용어는 설명의 목적을 위한 것으로서, 제한적인 것이 아니며, 본 명세서의 용어 또는 어법은 통상의 기술자에 의해 본원에서의 교시들 및 안내에 비추어 해석되어야 한다는 것을 이해해야 한다.
도 1은 통상의 처리 시스템(100)을 나타낸다. 처리 시스템(100)은 중앙 처리 유닛(CPU)(102), 그래픽 처리 유닛(GPU)(104), 시스템 메모리(118) 및 GPU 로컬 메모리(130)를 포함한다. CPU(102)는 실행 엔진(execution engine)(106), 어드레스 처리 유닛(108), 캐시(110) 및 노쓰브리지(northbridge, NB)(111)를 포함한다. GPU(104)는 실행 엔진(120), 캐시(122), 어드레스 처리 유닛(124) 및 노쓰브리지(125)를 포함한다. 시스템 메모리(118)는 코히런트 메모리(132) 및 넌 코히런트 메모리(non-coherent memory)(134)를 포함한다. GPU 로컬 메모리(130)는 가시 메모리(visible memory)(136) 및 전용 메모리(138)를 포함한다. 당업자라면, 처리 시스템(100)이 도 1에 나타낸 컴포넌트들로 제한되지 않으며, 도 1에 나타낸 것 보다 더 많은 컴포넌트들을 포함할 수 있다는 것을 이해할 것이다.
실행 엔진(106)은 CPU(102)가 동작하는 동안 다양한 커맨드들을 실행시킨다. 이러한 커맨드들중 일부는 실행 엔진(106)에게 저장된 정보를 액세스하기 위한 메모리 요청을 발행할 것을 요구한다. 실행 엔진(106)이 메모리 워드에 대한 메모리 요청을 발행하면, 어드레스 처리 유닛(108)은 먼저 그 메모리 요청에 해당하는 가상 어드레스(virtual address)를 물리적인 어드레스(physical address)로 변환한다. 어드레스 처리 유닛(108)은 또한 가상 어드레스 및/또는 물리적인 어드레스를 검사하여, 요청된 메모리 워드가 어디에 위치하는지를 결정한다. 요청된 메모리 워드가 코히런트 메모리(132) 내에 위치한다면, 캐시(110)가 그 메모리 요청을 서비스할 수 있는 지를 결정하기 위해, 캐시(110)에게 질문한다. 예를 들어, 캐시(110)는 자신이 요청된 메모리 워드를 홀딩하고 있는지, 만일 그렇다면, 그 요청된 메모리 워드를 홀딩하고 있는 캐시 라인이 유효한 지를 결정하기 위해, 질문을 받을 수 있다. 캐시(110)가 메모리 요청을 서비스할 수 없다면, 즉 캐시 미스(cache miss)이면, 그 메모리 요청은 코히런트 메모리(132)에 의해 서비스되어야 한다. 구체적으로, NB(111)는 이러한 요청을 서비스하기 위해 코히런트 메모리(132)를 액세스한다. 일 실시예에서, NB(111)는 CPU(102)와 시스템(100)의 나머지 엘리먼트들 간의 멀티플렉서(multiplexer)의 역할을 할 수 있다. 일부 실시예들에서, NB(111)는 "메모리 컨트롤러"라 명명될 수 있다. 요청된 메모리 워드가 넌 코히런트 메모리(134) 내에 위치하는 것으로 어드레스 처리 유닛(108)이 결정하면, NB(111)는 (캐시(110)를 먼저 액세스하지 않으면서) 요청을 서비스하기 위해 넌 코히런트 메모리(134)를 액세스한다.
요청된 메모리 워드는 또한 GPU 로컬 메모리(130) 내에도 위치될 수 있다. 예를 들어, 요청된 메모리 워드는 가시 메모리(136) 내에 위치될 수 있다. 일 실시예에서, CPU(102)로부터 가시 메모리(136)로의 요청은 메모리 매핑(memory mapping)되는 I/O (MMIO) 요청일 수 있다. 이 경우, NB(111)는 (예를 들어, PCIE(peripheral component interconnect express) 경로 상으로) NB(125)에게 요청을 전달한다. 일 실시예에서, NB(125)는 실질적으로 NB(111)와 유사한다. NB(125)는 가시 메모리(136)를 액세스하여, 요청된 메모리 워드를 획득하고, 메모리 워드를 다시 NB(111)에게 전달한다.
GPU 전용 메모리(130)는 GPU(104)에게 전용된다(즉, CPU(102)에게는 액세스불가능하다). 따라서, 요청된 메모리 워드가 메모리(130) 내에 위치된다면, 어드레스 처리 유닛(108)은 CPU(102)가 전용 메모리(130)를 액세스하는 것을 막기 위해 폴트(fault)를 발생시킬 것이다.
CPU(102)와 유사하게, GPU(104)의 실행 엔진(120)은 GPU(104)가 동작하는 동안 다양한 커맨드들을 실행한다. 이러한 커맨드들 중 하나 이상에 응답하여, 실행 엔진(120)은 메모리 요청을 생성할 수 있다. 발행된 메모리 요청은 가상의 요청된 메모리 어드레스를 포함한다. 도 1에 나타낸 바와 같이, GPU(104)는 먼저 캐시(122)가 (가상 메모리 어드레스를 이용하여) 요청된 메모리 워드를 홀딩하고 있는 지를 결정하기 위해 캐시(122)에게 질문한다. 만일 캐시(122)가 메모리 요청을 홀딩하고 있지 않거나, 또는 이러한 메모리 요청을 서비스할 수 없다면, 메모리 워드는 메모리로부터 검색(retrieve)되어야 한다.
어드레스 처리 유닛(124)은 가상 어드레스를 물리적인 어드레스로 변환하고, 요청된 메모리 워드가 어디에 위치하는 지를 결정한다. 예를 들어, 어드레스 처리 유닛(124)이, 요청된 메모리 워드가 GPU 로컬 메모리(130)의 가시 메모리(136) 또는 전용 메모리(138) 내에 위치한다고 결정하면, NB(125)는 요청을 서비스하기 위해 GPU 로컬 메모리(130)와 상호 작용한다.
요청된 메모리 워드가 시스템 메모리(118) 내에 위치된다면, NB(125)는 요청된 메모리 워드를 획득하기 위해 CPU(102)에게 요청을 보낸다. 예를 들어, 요청된 메모리 워드가 코히런트 메모리(132) 내에 위치된다면, NB(111)는 요청을 서비스하기 위해 코히런트 메모리(132)를 액세스할 수 있다. 다른 예에서, NB(111)는 이러한 요청을 서비스하기 위해 캐시(110)를 액세스할 수 있다. 요청된 메모리 워드가 넌 코히런트 메모리(132) 내에 위치된다면, NB(111)는 요청을 서비스하기 위해 넌 코히런트 메모리(134)를 액세스할 수 있다.
GPU 로컬 메모리(130)에 대한 모든 액세스들은 넌 코히런트하다. 코히런시가 요구된다면, 이는 소프트웨어에 의해 제공되어야 하는 바, 이러한 소프트웨어는 상당한 오버헤드를 야기한다. 또한, GPU 로컬 메모리(130)에 저장된 정보를 캐싱하는 캐시(122)는 넌 코히런트 캐시이다. 다른 디바이스들과의 코히런트 공유를 가능하게 하기 위해, MESI 프로토콜과 같은 프로토콜을 통합하는 CPU(102)의 캐시(110)와 대조적으로, GPU(104)의 캐시(122)는 서로 다른 디바이스들 간의 공유를 가능하게 하도록 프로토콜을 구현한다.
일 실시예에서는, CPU(102) 및 GPU(104) 각각에 기록 결합 모듈(write combining module)이 제공될 수 있다. 이를 행함에 있어서, 넌 코히런트 메모리에 대한 기록 요청들에 대한 대역폭이 코히런트 메모리에 대한 기록 요청들에 대한 대역폭과 유사할 수 있도록, 다수의 기록 요청들이 결합될 수 있다. 하지만, 판독 요청들에 대한 유사한 캐싱 최적화들은 종종 이용가능하지 않다. 따라서, (예를 들어, CPU(102)로부터 가시 메모리(136)로의) 넌 코히런트 메모리에 대한 판독 요청들은 코히런트 메모리에 대한 판독 요청들 보다 상당히 더 작은 대역폭에서 이루어질 수 있다. 일부 실시예들에서, 넌 코히런트 메모리에 대한 판독 요청들은 "성능 기준에 안맞는 것(non-performant)"으로 지정되며, 좀처럼 이용되지 않는다. 실제로, 일 실시예에서, CPU(102)로부터 가시 메모리(136)로의 판독 요청들은, 어드레스 처링 유닛(108)이 폴트를 생성하여, CPU(102)가 가시 메모리(136)로부터 판독하는 것을 막을 수 있는 낮은 대역폭에서 이루어질 수 있다.
여기에서 설명되는 실시예들에서, 코히런트 메모리는 GPU 로컬 메모리 내에 제공된다. 따라서, GPU 로컬 메모리에 대한 일부 요청들은 하드웨어 코히런트할 수 있는 바, 즉 소프트웨어 오버헤드를 요구하지 않으면서 하드웨어에 의해 코히런시가 보증된다. 다른 실시예에서, (예를 들어, 시스템 메모리에 포함되는) CPU의 코히런트 메모리 및 GPU 로컬 메모리에 포함되는 코히런트 메모리는 본질적으로 시스템에 대한 프로그래머 기록 코드에 대해 구별 불가능할 수 있다. 이러한 단순화된 메모리 모델은 프로그래밍을 훨씬 더 단순하게 할 수 있는데, 왜냐하면 코히런트 메모리를 액세스하는 프로그램들은 어떤 코히런트 메모리가 액세스되어야 하는 지를 더 이상 특정하지 않기 때문이다. 또한, 여기에서 설명되는 시스템들은 또한 성능상의 장점들을 가질 수 있는데, 왜냐하면 코히런시를 보증하기 위해 더 이상 소프트웨어 오버헤드에 의존하지 않으며, 그리고 판독 요청들은, 이들이 넌 코히런트 메모리를 액세스할 때 보다, 코히런트 메모리를 액세스할 때 실질적으로 더 높은 대역폭에서 행해질 수 있기 때문이다.
도 2는 본 발명의 일 실시예에 따른 처리 시스템(200)을 나타낸다. 도 2에 나타낸 바와 같이, 처리 시스템(200)은 제 1 프로세서(202), 제 2 프로세서(204), 시스템 메모리(218) 및 메모리(234)를 포함한다. 도 2에 나타낸 실시예에서, 제 1, 2 프로세서들(202 및 204)은 각각 CPU 및 GPU 이다.
CPU(202)는 실행 엔진(206), 어드레스 처리 유닛(208), 캐시(210), NB(211), 프로브 유닛(probe unit)(214) 및 프로브 필터(probe filter)(216)를 포함한다. 일 실시예에서, 실행 엔진(206), 어드레스 처리 유닛(208), 캐시(210) 및 NB(211)는 도 1에 나타낸 CPU(102)의 실행 엔진(106), 어드레스 처리 유닛(108), 캐시(110) 및 NB(111)와 각각 실질적으로 유사하다.
도 2에 나타낸 바와 같이, GPU(204)는 실행 엔진(220), 캐시(222), 어드레스 처리 유닛(224), 프로브 엔진(228), 리버스 룩업 테이블(reverse lookup table)(230) 및 프로브 필터(232)를 포함한다. 일 실시예에서, 실행 엔진(220), 캐시(222), 어드레스 처리 유닛(224) 및 NB(225)는 도 1에 나타낸 GPU(104)의 실행 엔진(120), 캐시(122), 어드레스 처리 유닛(124) 및 NB(125)와 각각 실질적으로 유사하다.
시스템 메모리(218)는 넌 코히런트 메모리(240) 및 코히런트 메모리(242)를 포함한다. GPU 로컬 메모리는 가시 코히런트 메모리(238), 가시 넌 코히런트 메모리(239) 및 전용 메모리(236)를 포함한다. 상기 설명한 바와 같이, 넌 코히런트 메모리에 대한 기록 요청들에 대한 성능은 기록 결합의 이용을 통해 개선될 수 있다. 따라서, 실시예들에서, 넌 코히런트 메모리(240) 및 가시 넌 코히런트 메모리(238) 각각은 "기록-결합 메모리(write-combining memory)" 또는 "기록-결합 히프(write-combing heap)"라 명명될 수 있다. 시스템 메모리(218) 및 메모리(234)는 통상의 랜덤 액세스 메모리들(RAM)로부터 형성될 수 있다. 예를 들어, 시스템 메모리(218)는 DDR2 또는 DDR3 RAM 메모리로부터 형성될 수 있고, 메모리(234)는 DDR5 RAM 메모리로부터 형성될 수 있다.
어드레스 처리 유닛들(208 및 225)은 가상 어드레스들을 물리적인 어드레스들로 변환하도록 구성되는 처리 유닛들이다. 또한, 어드레스 처리 유닛들은 물리적인 어드레스들이 (예를 들어, 시스템 메모리(218)와 GPU 로컬 메모리(234) 중에서) 어디에 위치되는 지를 결정하도록 구성될 수 있다. 일 실시예에서, 어드레스 처리 유닛(208) 및/또는 어드레스 처리 유닛(225)은, 가상 어드레스들을 물리적인 어드레스들로 변환하는 데에 이용되는 변환 색인 버퍼(translation lookaside buffer, TLB)를 포함할 수 있다.
일 실시예에서, 넌 코히런트 메모리(240), 가시 넌 코히런트 메모리(239) 및 전용 메모리(236)에 위치되는 메모리 워드를 요청하는 메모리 요청들과 관련된 CPU(202)의 동작은 넌 코히런트 메모리(134), 가시 메모리(136) 및 전용 메모리(138)에 위치되는 메모리 워드를 요청하는 메모리 요청들과 관련된 CPU(102)의 동작과 각각 실질적으로 유사하다. 또한, 전용 메모리(236), 가시 넌 코히런트 메모리(239) 및 넌 코히런트 메모리(240)에 위치되는 메모리 워드를 요청하는 메모리 요청들과 관련된 GPU(204)의 동작은 전용 메모리(138), 가시 메모리(136) 및 넌 코히런트 메모리(134)에 위치되는 메모리 워드를 요청하는 메모리 요청과 관련된 GPU(104)의 동작과 각각 실질적으로 유사하다.
CPU(202)는 프로브 엔진(214) 및 프로브 필터(216)를 포함한다. 프로브 엔진(214)은 캐시(210), 코히런트 메모리(242), 캐시(222) 및 가시 코히런트 메모리(238) 간에 코히런시를 보증하는 데에 이용된다. 예를 들어, 요청된 메모리 워드가 시스템 메모리(218)의 코히런트 메모리(240) 내에 위치된다면, 프로브 엔진(214)은 GPU(204)에 전송되는 프로브들을 생성한다. 이러한 프로브들은, GPU(204)의 캐시(222)가 더티 캐시 라인(dirty cache line) 내에, 즉 코히런트 메모리(242) 내의 값에 대해 변경된 값을 홀딩하는 캐시 라인 내에, 요청된 메모리 워드를 홀딩하고 있는 지를 결정한다. 캐시(222)가 이러한 더티 캐시 라인을 포함하고 있다면, GPU(204)는 프로브에 응답하여, 캐싱된 값을 시스템 메모리(218)에 되돌려 보낼 것이다. 또한, 요청이 기록 요청이라면, 프로브는 모든 캐시들에게, 요청된 메모리 워드를 홀딩하고 있는 캐시 라인들을 무효화(invalidate)할 것을 요구할 수 있다.
프로브 필터(216)는, 어떠한 다른 컴포넌트들도 요청된 메모리 워드를 캐싱하지 않았을 때, 일부 프로브들이 생성되어 전송되는 것을 막을 수 있는 선택적인 최적화이다. 많은 처리 시스템들에서, 시스템 내의 다른 컴포넌트들에게 프로브들을 전송하는 것은 귀중한 대역폭을 차지할 수 있다. 또한, 많은 경우들에 있어서, 요청되는 어드레스는 시스템 내의 다른 컴포넌트의 캐시 내에 캐싱되지 않을 것이다. 시스템(200) 내의 어떠한 다른 컴포넌트도 요청된 메모리 워드를 캐싱하지 않았을 때, 프로브들이 생성되어 전송되는 것을 막기 위해, 프로브 필터(216)는 시스템(200)의 다른 컴포넌트들 상에 캐싱되는 시스템 메모리(218)의 모든 어드레스들의 리스트를 유지한다. 요청된 메모리 워드와 이러한 리스트를 비교함으로써, 프로브 필터(216)는, 시스템 내의 어떠한 다른 컴포넌트도 그 메모리 워드를 캐싱하고 있지 않을 때, 프로브들이 생성되어 전송되는 것을 막을 수 있다.
CPU(202)에 의해 요청되는 메모리 워드가 GPU 로컬 메모리(234)의 가시 코히런트 메모리(238) 내에 위치된다면, 요청이 캐시(210) 상에서 미스(miss)한 후, NB(211)는 GPU(204)의 NB(225)에 요청을 전송한다. 그러면, NB(225)는 이 요청을 프로브 엔진(228)에게 보내며, 프로브 엔진(228)은 (프로브 필터(232)를 필요로 하는) 프로브들을 보낸다. 유사하게, GPU(204)가 코히런트 메모리(242) 중 어느 하나를 액세스한다면, NB(225)는 CPU(202)의 NB(211)에 요청을 보낸다. 그러면, NB(211)는 이러한 요청을 프로브 엔진(214)에게 보내며, 프로브 엔진(214)은 (프로브 필터(216)를 필요로 하는) 프로브들을 보낸다. GPU(204)에 의해 요청되는 메모리 워드가 가시 코히런트 메모리(238) 내에 위치된다면, GPU(204)의 프로브 엔진(228)은 (프로브 필터(232)를 필요로 하는) 프로브들을 보낸다.
GPU(204)가 CPU(202)로부터 프로브들을 수신하면, 이러한 프로브들은 프로브 엔진(228)에 의해 처리된다. 프로브에 응답하여, GPU(204)는 더티 캐시 라인들을 시스템 메모리(218)에 다시 기록하고, 필요한 경우, 요청된 메모리 워드를 홀딩하고 있는 캐시 라인을 무효화할 수 있다. 따라서, 도 2의 실시예에서, GPU(204)의 캐시(222)는 다른 디바이스들과 코히런트 공유를 위한 프로토콜, 예를 들어 MESI 프로토콜을 구현하는 코히런트 캐시이다. 다른 실시예에서, 프로브 엔진(214)은 GPU(204)로부터 수신되는 프로브들을 유사하게 처리한다.
CPU(202)의 캐시(210)는, 캐시 라인들이 물리적인 어드레스들에 의해 태그(tag)되는 물리적으로 태그되는 캐시(physically tagged cache)이다. 대조적으로, GPU(204)의 캐시(222)는 가상 어드레스들에 의해 태그되는 캐시 라인들을 갖는 가상적으로 태그되는 캐시(virtually tagged cache)이다. GPU(204)로부터 프로브가 생성되어 전송되기 전에, 요청된 어드레스는 어드레스 처리 유닛(224)을 이용하여 물리적인 어드레스로 변환되며, 이에 따라 CPU(202)의 프로브 엔진(214)은 요청된 어드레스들과 캐시(210) 내에 홀딩된 어드레스들을 비교하여, 수신된 프로브를 처리할 수 있다. 한편, CPU(202)의 프로브 엔진(214)이 프로브를 생성할 때, 요청된 어드레스는 물리적인 어드레스이다. 프로브를 수신하면, GPU(204)의 프로브 엔진(228)은 캐시(222)에게 즉시 질문할 수 없는데, 왜냐하면 요청된 메모리 워드에 대한 캐시(222)는 가상으로 태그되기 때문이다. 이에 따라, GPU(204)는 또한 리버스 룩업 테이블(230)을 포함한다. 리버스 룩업 테이블(230)은 수신된 물리적인 어드레스를 가상 어드레스에 매핑시키는 데에 이용된다. 수신된 물리적인 어드레스를 가상 어드레스에 매핑시킨 후, GPU(204)의 프로브 엔진(228)은 상기 설명한 바와 같이 프로브를 처리할 수 있다.
도 2에 나타낸 바와 같이, CPU(202) 및 GPU(204)는 각각 캐시 및 어드레스 처리 유닛에 결합된 단일 실행 엔진을 포함한다. 대안적인 실시예들에서, CPU(202) 및/또는 GPU(204)는 하나 보다 많은 실행 엔진을 포함하는 멀티 프로세서 시스템일 수 있다. 이러한 실시예들에서, 캐시 및 어드레스 처리 유닛은 각각의 부가적인 실행 엔진에 대해 복사(replicate)될 수 있다. 다른 실시예에서, 각각의 프로브 엔진 및 프로브 필터는 또한 각각의 부가적인 실행 엔진에 대해서도 복사될 수 있다. 예를 들어, GPU(204)에서, 각각의 부가적인 실행 엔진(220)에 대해, 부가적인 캐시(222), 어드레스 처리 유닛(224), 프로브 엔진(228) 및 프로브 필터(232)가 제공될 수 있다.
시스템 메모리(218)의 코히런트 메모리(242) 및 GPU 로컬 메모리(234)의 가시 코히런트 메모리(238)는 모두 코히런트하기 때문에, 이러한 2개의 메모리들은 프로그래머의 관점에서 구별되지 못할 수 있다. 다시 말해, 프로그래머의 관점으로부터, 시스템 메모리(218)의 코히런트 메모리(242) 및 GPU 로컬 메모리(234)의 가시 코히런트 메모리(238)는 본질적으로 동일한 메모리의 다른 부분들이며, 이에 의해 프로그래밍 모델을 매우 단순화한다.
도 3은 본 발명의 일 실시예에 따른 처리 시스템(300)을 나타낸다. 시스템 메모리(218) 및 GPU 로컬 메모리(234)가 메모리(302)로 대체되는 것을 제외하고, 시스템(300)은 도 2에 나타낸 시스템(200)과 실질적으로 유사하다. 예를 들어 개별적인 다이들 상에 구현되었던 시스템 메모리(218) 및 GPU 로컬 메모리(234)가 메모리(302) 내의 동일 다이 상에서 구현될 수 있다. 다른 실시예에서, 모든 시스템(300)은 단일 다이 상에 포함될 수 있다.
메모리(302)는 넌 코히런트 메모리(301), 코히런트 메모리(304) 및 전용 메모리(306)를 포함한다. 도 3에 나타낸 바와 같이, GPU(204)는 메모리(302)를 액세스하기 위해서는 CPU(202)의 NB(211)를 액세스해야 한다. 대안적인 실시예들에서, GPU(202)의 NB(225)는 메모리(302)를 직접 액세스할 수 있다.
일 실시예에서, 전용 메모리(306)에 대한 액세스들은 도 2를 참조하여 설명된 전용 메모리(236)에 대한 액세스들과 유사하다. 시스템(300)의 실시예에서, 시스템(200)의 코히런트 메모리(240) 및 가시 코히런트 메모리(238)는 코히런트 메모리(304)로서 메모리(302) 내에 구현된다. 상기 설명한 바와 같이, 코히런트 메모리(240) 및 가시 코히런트 메모리(238)는 프로그래머의 관점에서 구별이 불가능할 수 있다. 따라서, 시스템 메모리(218) 및 GPU 로컬 메모리(234)가 메모리(302) 내에 효과적으로 결합되는 실시예에서, 코히런트 메모리(240) 및 가시 코히런트 메모리(238)는 코히런트 메모리(304) 내에 결합될 수 있다. CPU(202) 및 GPU(204)로부터 코히런트 메모리(304)로의 액세스들은, CPU(202) 및 GPU(204)로부터 코히런트 메모리(242) 및 가시 코히런트 메모리(238)로의 액세스들과 실질적으로 유사하다. 유사하게, 다른 실시예에서, 넌 코히런트 메모리(240) 및 가시 넌 코히런트 메모리(239)는 넌 코히런트 메모리(301)를 형성하도록 결합될 수 있다. CPU(202) 및 GPU(204)와 다른 코히런트 및 넌 코히런트 메모리들 간의 메모리 액세스들은 시스템들(200 및 300) 간에 동일하게 유지되기 때문에, 처리 시스템(200)에 대해 기록된 프로그램들은 또한 처리 시스템(300) 상에서도 이용될 수 있으며, 이에 의해 프로그램을 업데이트하지 않으면서도, 동일한 다이 상에 형성되는 다수의 컴포넌트들을 갖는 이득을 얻게 된다.
도 4는 본 발명의 일 실시예에 따른 GPU(400)를 나타낸다. GPU(400)는 프로브 필터(402), 프로브 엔진(406), 실행 엔진(410), 범위 확인기(range checker)(412), 제 1 어드레스 처리 유닛(414), 캐시(416) 및 제 2 어드레스 처리 유닛(422)을 포함한다. 일 실시예에서, 프로브 필터(402), 프로브 엔진(406) 및 실행 엔진(410)은 도 2 및 3과 관련하여 설명된 프로브 필터(232), 프로브 엔진(228) 및 실행 엔진(220)과 각각 실질적으로 유사하다. GPU(400)는, 이것이 시스템들(200 및 300) 내의 GPU(204) 대신 이용되는 실시예와 관련하여 설명된다. 하지만, 관련 분야(들)의 당업자라면 이해할 수 있는 바와 같이, GPU(400)는 이러한 실시예로만 한정되지 않는다.
도 4에 나타낸 바와 같이, 캐시(416)는 가상적으로 태그되는 부분(418) 및 물리적으로 태그되는 부분(420)을 포함하는 하이브리드 캐시이다. 일 실시예에서, 부분(420)은 CPU 또는 시스템의 다른 컴포넌트에 의해 액세스될 수 있는 메모리 어드레스들을 캐싱한다. 부분(420)은 가시 코히런트 메모리(238) 내에 위치되는 메모리 어드레스들을 캐싱할 수 있으며, 그리고 부분(418)은 전용 메모리(238) 내에 위치되는 메모리 어드레스들을, NB(225)(단순함을 위해, 도 4에서 NB(225)는 생략된다)와 같은 NB를 통해 캐싱할 수 있다. 이렇게 되면, 본 실시예에서, 리버스 룩업 테이블이 필요없게 되는데, 왜냐하면 CPU(202)(또는 시스템 내의 임의의 다른 컴포넌트)가 액세스할 수 있는 메모리 어드레스들 만이, 즉 GPU(400)가 프로브들을 수신하는 메모리 어드레스들 만이 물리적으로 태그되기 때문이다.
실행 엔진(410)이 메모리 요청을 생성할 때, 범위 확인기(412)는 요청된 메모리 어드레스를 검사하여, 그것이 GPU 코히런트 메모리(238) 내에 위치되는지, 아니면 GPU 전용 메모리(236) 내에 위치되는 지를 결정한다. 요청된 어드레스가 GPU 코히런트 메모리(238) 내에 위치되는 것으로 알려진 범위 내에 있으면, 요청된 어드레스는 제 1 어드레스 처리 유닛(414)을 이용하여 물리적인 어드레스로 즉시 변환되며, 이후 부분(420)에게 질문하여, 그 부분(420)이 요청을 서비스할 수 있는 지를 결정한다. 한편, 요청된 어드레스가 GPU 전용 메모리(236) 내에 위치되는 것으로 알려진 범위 내에 있는 것으로 범위 확인기(412)가 결정하면, (먼저 요청된 어드레스를 변환하지 않으면서), 부분(418)에게 질문하여, 그것이 메모리 요청을 서비스할 수 있는 지를 결정한다. 캐시(416)의 질문된 부분이 요청을 서비스할 수 없다면, 즉 캐시 미스이면, 메모리 요청을 서비스함에 있어서의 GPU(400)의 동작은 캐시 미스에 대해 메모리 요청을 서비스함에 있어서의 GPU(204)의 동작과 실질적으로 유사하다.
제 2 어드레스 처리 유닛(422)은 부분(418) 내의 가상 어드레스들을 변환하는 데에 이용되는데, 왜냐하면 GPU 전용 메모리(236)는 물리적으로 태그되기 때문이다. 일 실시예에서, 어드레스 처리 유닛(414) 및 어드레스 처리 유닛(422)은 GPU(400) 내의 개별적인 엘리먼트들이다. 대안적인 실시예에서, 어드레스 처리 유닛(414) 및 어드레스 처리 유닛(422)은 GPU(400)가 동작하는 동안 다른 포인트들에서 액세스되는 동일한 어드레스 처리 유닛이다.
도 7 및 8은 본 발명의 실시예들에 따른 처리 시스템들(700 및 800)을 각각 나타낸다. 처리 시스템들(700 및 800)이, GPU(200) 대신, 도 4에 나타낸 GPU(400)를 포함하는 것을 제외하고(단순함을 위해, 범위 확인기(412)는 도 7 및 8로부터 생략되었다), 처리 시스템들(700 및 800)은 처리 시스템들(200 및 300)과 각각 실질적으로 유사하다. 도 7 및 8에 나타낸 바와 같이, 하이브리드 캐시의 이용은 CPU와 GPU 간의 동작을 단순화할 수 있다. 예를 들어, 도 7 및 8에 나타낸 바와 같이, GPU(400)는 리버스 룩업 테이블을 포함하지 않는데, 왜냐하면 CPU(202)의 캐시(210)에 의해 캐싱될 수 있는 모든 어드레스들은 하이브리드 캐시(416) 내에서 물리적으로 태그되기 때문이다.
도 2, 3, 7 및 8 각각은 CPU와 GPU 간에 통신되는 각 신호에 대한 이들 간의 연결을 개념적으로 나타낸다. 일 실시예에서, CPU와 GPU 간에 전송되는 다른 신호들은 하나 이상의 버스들(또는 트레이스들)의 동일 세트 상에서 다중화될 수 있다. 다른 실시예에서는, 다른 신호들 각각에 대해 다른 버스 또는 트레이스가 이용될 수 있다.
도 5는 본 발명의 일 실시예에 따라 메모리 요청을 처리하는 예시적인 방법(500)의 흐름도이다. 하기의 설명에 기초하여, 다른 구조적인 그리고 동작적인 실시예들이 관련 분야(들)의 당업자들에게 명백할 것이다. 도 5에 나타낸 단계들은 반드시 나타낸 순서로 일어날 필요는 없다. 도 5의 단계들은 하기에서 상세히 설명된다.
단계(502)에서, 메모리 요청이 발행된다. 예를 들어, 도 2에서, CPU(202)의 실행 엔진(202) 또는 GPU(204)의 실행 엔진(220)은 메모리 요청을 발행할 수 있다.
단계(504)에서, 요청된 메모리 워드가 어디에 위치되는 지를 결정한다. 예를 들어, 도 2에서, 어드레스 처리 유닛(208 또는 224)이 요청된 메모리 워드가 어디에 위치되는 지를 결정한다.
단계(506)에서, 로컬 캐시가 메모리 요청을 서비스할 수 있는 지를 결정한다. 예를 들어, 로컬 캐시는, 자신이 요청 어드레스를 홀딩하고 있는 지를 결정하기 위해, 그리고 요청된 메모리 워드를 홀딩하고 있는 캐시 라인의 상태에 대해 질문받을 수 있다. 예를 들어, 도 2에서, 어드레스 처리 유닛들(208 또는 224)이, 요청된 메모리 워드가 코히런트 메모리(242) 또는 가시 코히런트 메모리(238) 각각에 위치되는 것으로 결정하면, 캐시들(210 또는 222) 각각은, 이들이 실행 엔진(206) 또는 실행 엔진(220) 각각에 의해 발행된 메모리 요청들을 서비스할 수 있는 지를 결정하기 위해 질문을 받을 수 있다. 메모리 요청이 로컬 캐시 상에서 히트(hit)하면, 방법(500)은 단계(516)로 진행한다. 단계(516)에서, 로컬 캐시를 이용하여, 메모리 요청이 처리된다.
메모리 요청이 로컬 캐시에 의해 서비스될 수 없다면, 방법(500)은 단계(508)로 진행된다. 단계(508)에서, 요청된 어드레스가 전용 메모리 내에 위치되는 지를 결정한다. 요청된 어드레스가 전용 메모리 내에 위치된다면, 방법(500)은 단계(518)로 진행된다. 단계(518)에서, 전용 메모리를 이용하여, 메모리 요청이 처리된다. 예를 들어, 도 2에서, 요청된 어드레스가 전용 메모리(236) 내에 위치된다면, NB(225)는 요청을 서비스하기 위해 전용 메모리(236)를 액세스할 수 있다.
요청된 어드레스가 전용 메모리 내에 위치되지 않는 다면, 방법(500)은 단계(510)로 진행된다. 단계(510)에서, 요청된 어드레스가 원격 메모리 내에 위치되는 지를 결정한다. 요청된 어드레스가 원격 메모리 내에 위치된다면, 방법(500)은 단계(520)로 진행된다. 단계(520)에서, 요청이 서비스를 위해 원격 노드에 전송된다. 예를 들어, 도 2에서, GPU(204)의 실행 엔진(220)에 의해 요청되는 메모리 워드가 시스템 메모리(218) 내에 위치된다면, NB(225)는 요청을 서비스를 위해 CPU(202)에 전송한다. 대안적인 실시예에서, CPU(202)의 실행 엔진(206)에 의해 요청되는 메모리 워드가 GPU 코히런트 메모리(238) 내에 위치된다면, NB(211)는 요청을 서비스를 위해 GPU(204)에 전송한다.
단계(512)에서, 로컬 메모리가 메모리 요청을 처리하는 데에 이용된다. 예를 들어, 도 2에서, 시스템 메모리(218) 또는 GPU 로컬 메모리(234)는 각각 CPU(202)의 실행 엔진(202) 또는 GPU(204)의 실행 엔진(220)으로부터의 요청을 처리하는 데에 이용된다.
도 6은 본 발명의 일 실시예에 따라 메모리 요청을 처리하는 예시적인 방법(600)의 흐름도이다. 하기의 설명에 기초하여, 다른 구조적인 그리고 동작적인 실시예들이 관련 분야(들)의 당업자들에게 명백할 것이다. 도 6에 나타낸 단계들은 반드시 나타낸 순서로 일어날 필요는 없다. 도 6의 단계들은 하기에서 상세히 설명된다.
단계(602)에서, 서비스를 위한 원격 요청이 수신된다. 예를 들어, 도 2 및 3에서, NB들(211 및 225)이 서비스를 위한 요청들을 수신할 수 있다.
단계(604)에서, 로컬 메모리를 이용하여, 메모리 요청이 처리된다. 예를 들어, 도 2 및 3에서, NB들(211 및 225)은 요청 메모리 워드를 액세스하기 위해 시스템 메모리(218) 또는 GPU 로컬 메모리(234)를 액세스할 수 있다.
본원에서의 설명에 기초하여 당업자에 의해 이해되는 바와 같이, 방법들(500 및 600)에서 설명되는 메모리 액세스들 중 일부는 프로브들이 생성될 것을 요구할 수도 있다. 예를 들어, 코히런트 메모리가 액세스될 때, 프로브들이 생성될 필요가 있을 수도 있다. 다른 실시예에서는, 프로브들을 시스템 내의 다른 디바이스들에 전송할 지를 결정하기 위해, 프로브 필터가 이용될 수 있다. 또 다른 실시예에서는, 프로브들이 생성되기 전에 프로브 필터가 고려(consult)될 수 있으며, 이에 따라 코히런트 메모리 액세스들에 대해서 조차도, 프로브들이 생성될 필요가 없게 된다.
본 발명의 실시예들은, 레지스터 자원들이 다수의 동시에 실행되는 프로세스들 사이에서 관리되어야 하는 임의의 컴퓨팅 디바이스 내에서 이용될 수 있다. 예를 들어, 그리고 제한하는 것은 아니지만, 실시예들은 컴퓨터들, 게임 플랫폼들, 엔터테인먼트 플랫폼들, 개인 휴대 정보 단말기(PDA) 및 비디오 플랫폼들을 포함할 수 있다. 본 발명의 실시예들은 하드웨어 디스크립션 랭귀지들(HDL), 어셈블리 랭귀지 및 C 랭귀지를 포함하는 많은 프로그래밍 랭귀지들로 엔코드될 수 있다. 예를 들어, HDL, 예를 들어 베릴로그(Verilog)를 이용하여, 본 발명의 하나 이상의 실시예들의 양상을 구현하는 디바이스를 종합(synthesize)하고, 시뮬레이트하고, 제조할 수 있다. 예를 들어, 베릴로그를 이용하여, 도 2, 3, 7, 8 및 4와 각각 관련하여 설명되는 시스템들(200, 300, 700, 800) 및/또는 GPU(400)의 엘리먼트들을 모델링하고, 설계하고, 검증하고, 및/또는 구현할 수 있다.
결론
상기에서 본 발명은 특정된 기능들 및 그 관계들의 구현을 예시하는 기능 형성 블록들(functional building blocks)을 사용하여 설명되었다. 이러한 기능 형성 블록들의 경계들은 설명의 편이를 위해 여기에서 임의로 정의되었다. 특정된 기능들 및 그 관계들이 적절히 수행되는한 대안적인 경계들이 정의될 수 있다.
본 발명의 폭 및 범위는 상기 설명된 예시적인 실시예들 중 어느 것에 의해서도 제한되지 않아야 하며, 단지 하기의 청구항들 및 그 등가물들에 의해서만 정의되어야 한다.
본 출원의 특허청구의 범위는 모 출원 또는 기타 관련 출원들의 특허청구의 범위와 다르다. 따라서, 본 출원인은 본 출원의 모 출원 또는 임의의 이전 출원에서 표명한 어떤 청구항의 권리범위 포기(disclaimer)를 폐지(rescind)한다. 그러므로, 그러한 이전에 표명한 권리범위 포기 및 관련 선행기술 문헌들은 재고되어야 할 필요가 있음을 심사관에게 알린다. 또한, 본 출원에서 이루어진 임의의 권리범위 포기가 모 출원 내에 또는 이 모 출원에 반하여 적용되지 말아야 함을 심사관에게 주목하고자 한다.

Claims (19)

  1. 처리 시스템(processing system)으로서,
    메모리 워드를 액세스하도록 요청을 수신하도록 그리고 상기 요청된 메모리 워드가 제 1 처리 유닛의 로컬 메모리에 저장되는지 결정하도록 되어 있는 상기 제 1 처리 유닛을 포함하고,
    상기 제 1 처리 유닛은, 상기 제 1 처리 유닛의 캐시 내에 캐싱되고, 제 2 처리 유닛 내의 원격 메모리 내에 캐싱되고 그리고 상기 처리 시스템의 다른 컴포넌트 내에 캐싱되는 상기 로컬 메모리의 모든 어드레스들의 리스트를 저장하도록 되어 있고, 그리고 상기 제 2 처리 유닛의 원격 메모리가 상기 요청된 메모리 워드를 상기 제 1 처리 유닛의 로컬 메모리에 저장된 값과 상이한 값을 갖는 캐시 라인 내에 홀딩(hold)하는지 결정하도록 상기 제 2 처리 유닛에 메모리 프로브를 전송하도록 되어있으며,
    상기 메모리 프로브는, 모든 어드레스들의 저장된 리스트에 상기 요청된 메모리 워드에 대한 매칭이 존재할 때 전송되는 것을 특징으로 하는 처리 시스템.
  2. 제 1 항에 있어서,
    상기 제 1 처리 유닛은 그래픽 처리 유닛(graphics processing unit: GPU)이고, 상기 제 2 처리 유닛은 중앙 처리 유닛(CPU)인 것을 특징으로 하는 처리 시스템.
  3. 제 1 항에 있어서,
    상기 제 2 처리 유닛은 어드레스 처리 유닛을 포함하고,
    상기 제 2 처리 유닛의 실행 엔진은 메모리 요청을 생성하도록 되어있고, 그리고
    상기 어드레스 처리 유닛은 상기 메모리 요청과 관련된 메모리 워드의 위치를 결정하기 위해 라우팅 테이블(routing table)을 이용하도록 되어있는 것을 특징으로 하는 처리 시스템.
  4. 제 1 항에 있어서,
    상기 제 1 처리 유닛은 프로브 엔진(probe engine) 및 프로브 필터(probe filter)를 포함하며, 그리고
    상기 프로브 엔진은, 상기 요청된 메모리 워드가 상기 제2 처리 유닛의 다른 캐시에 캐싱되어 있음을 나타내는 상기 프로브 필터에 응답하여 상기 메모리 프로브를 전송하도록 되어있는 것을 특징으로 하는 처리 시스템.
  5. 제 1 항에 있어서,
    상기 제 1 처리 유닛의 캐시는 가상적으로 태그되고, 상기 제 2 처리 유닛은 물리적으로 태그된 다른 캐리를 포함하며, 그리고 상기 제 1 처리 유닛은 수신된 물리적인 메모리 어드레스를 가상적인 메모리 어드레스로 변환(translate)하도록 되어있는 리버스 룩업 테이블(reverse lookup table)을 더 포함하는 것을 특징으로 하는 처리 시스템.
  6. 제 2 항에 있어서,
    상기 제 1 처리 유닛의 캐시는 제 1 부분 및 제 2 부분을 포함하고, 상기 캐시의 제 1 부분은 상기 로컬 메모리에 위치되는 메모리 워드들을 캐싱하도록 되어있고, 그리고 상기 제 1 부분은 물리적으로 태그되는 것을 특징으로 하는 처리 시스템.
  7. 제 6 항에 있어서,
    상기 캐시의 제 2 부분은 가상적으로 태그되는 것을 특징으로 하는 처리 시스템.
  8. 처리 시스템에서 메모리 요청을 처리하는 방법으로서,
    제 1 처리 유닛에 의해, 메모리 워드를 액세스하도록 하는 요청을 수신하는단계와;
    상기 요청된 메모리 워드가 상기 제 1 처리 유닛의 로컬 메모리에 저장되는지 결정하는 단계와;
    상기 제 1 처리 유닛의 캐시 내에 캐싱되고, 제 2 처리 유닛의 원격 메모리 내에 캐싱되고 그리고 상기 처리 시스템의 다른 컴포넌트 내에 캐싱되는 상기 로컬 메모리의 모든 어드레스들의 리스트를 저장하는 단계와; 그리고
    모든 어드레스들의 저장된 리스트에 상기 요청된 메모리 워드에 대한 매칭이 존재할 때, 상기 제 2 처리 유닛의 원격 메모리가 상기 요청된 메모리 워드를 상기 제 1 처리 유닛의 로컬 메모리에 저장된 값과 상이한 값을 갖는 캐시 라인 내에 홀딩하는지 결정하도록 상기 제 2 처리 유닛에 메모리 프로브를 전송하는 단계를 포함하는 것을 특징으로 하는 메모리 요청을 처리하는 방법.
  9. 제 8 항에 있어서,
    프로브 필터는, 상기 제 2 처리 유닛의 원격 메모리 및 상기 처리 시스템의 다른 컴포넌트에 캐싱되는 상기 제 1 처리 유닛의 모든 어드레스들의 리스트를 유지하는 것을 특징으로 하는 메모리 요청을 처리하는 방법.
  10. 제 8 항에 있어서,
    상기 제 1 처리 유닛의 캐시가 상기 메모리 요청을 서비스할 수 없음을 결정하는 단계를 더 포함하는 것을 특징으로 하는 메모리 요청을 처리하는 방법.
  11. 제 8 항에 있어서,
    상기 프로브에 포함되는 상기 요청된 메모리 워드의 메모리 어드레스를, 물리적 어드레스에서 가상 어드레스로 변환하는 단계를 더 포함하는 것을 특징으로 하는 메모리 요청을 처리하는 방법.
  12. 처리 시스템에서 메모리 요청을 처리하는 방법을 수행하도록 하나 이상의 프로세서들에 의해 실행하는 하나 이상의 명령어들의 하나 이상의 시퀀스들을 전달하는 비일시적인 컴퓨터 판독가능한 매체로서,
    상기 하나 이상의 프로세서들에 의해 실행될 때 상기 명령어들은 상기 하나 이상의 프로세서들로 하여금,
    제 1 처리 유닛에 의해, 메모리 워드를 액세스하도록 하는 요청을 수신하고;
    상기 요청된 메모리 워드가 상기 제 1 처리 유닛의 로컬 메모리에 저장되는지 결정하고;
    상기 제 1 처리 유닛의 캐시 내에 캐싱되고, 제 2 처리 유닛의 원격 메모리 내에 캐싱되고 그리고 상기 처리 시스템의 다른 컴포넌트 내에 캐싱되는 상기 로컬 메모리의 모든 어드레스들의 리스트를 저장하고; 그리고
    상기 제 2 처리 유닛의 원격 메모리가 상기 요청된 메모리 워드를 상기 제 1 처리 유닛의 로컬 메모리에 저장된 값과 상이한 값을 갖는 캐시 라인 내에 홀딩하는지 결정하도록 상기 제 2 처리 유닛에 메모리 프로브를 전송하도록 하며,
    상기 메모리 프로브는, 모든 어드레스들의 저장된 리스트에 상기 요청된 메모리 워드에 대한 매칭이 존재할 때 전송되는 것을 특징으로 하는 컴퓨터 판독가능한 매체.
  13. 제 12 항에 있어서,
    프로브 필터는, 상기 제 2 처리 유닛의 원격 메모리 및 상기 처리 시스템의 다른 컴포넌트에 캐싱되는 상기 제 1 처리 유닛의 모든 어드레스들의 리스트를 유지하는 것을 특징으로 하는 컴퓨터 판독가능한 매체.
  14. 제 12 항에 있어서,
    상기 하나 이상의 프로세서들에 의해 실행될 때 상기 명령어들은 또한 상기 하나 이상의 프로세서들로 하여금,
    상기 제 1 처리 유닛의 캐시가 상기 메모리 요청을 서비스할 수 없음을 결정하도록 하는 것을 특징으로 하는 컴퓨터 판독가능한 매체.
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
KR1020127009174A 2009-09-10 2010-09-10 메모리 요청들을 처리하기 위한 시스템들 및 방법들 KR101593107B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US24120309P 2009-09-10 2009-09-10
US61/241,203 2009-09-10
US12/878,223 US8615637B2 (en) 2009-09-10 2010-09-09 Systems and methods for processing memory requests in a multi-processor system using a probe engine
US12/878,223 2010-09-09
PCT/US2010/048428 WO2011031969A1 (en) 2009-09-10 2010-09-10 Systems and methods for processing memory requests

Publications (2)

Publication Number Publication Date
KR20120060230A KR20120060230A (ko) 2012-06-11
KR101593107B1 true KR101593107B1 (ko) 2016-02-11

Family

ID=43648547

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127009174A KR101593107B1 (ko) 2009-09-10 2010-09-10 메모리 요청들을 처리하기 위한 시스템들 및 방법들

Country Status (7)

Country Link
US (1) US8615637B2 (ko)
EP (1) EP2476051B1 (ko)
JP (1) JP6196445B2 (ko)
KR (1) KR101593107B1 (ko)
CN (1) CN102576299B (ko)
IN (1) IN2012DN02863A (ko)
WO (1) WO2011031969A1 (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9176913B2 (en) 2011-09-07 2015-11-03 Apple Inc. Coherence switch for I/O traffic
US9430391B2 (en) * 2012-03-29 2016-08-30 Advanced Micro Devices, Inc. Managing coherent memory between an accelerated processing device and a central processing unit
US9218289B2 (en) * 2012-08-06 2015-12-22 Qualcomm Incorporated Multi-core compute cache coherency with a release consistency memory ordering model
US9323679B2 (en) * 2012-08-14 2016-04-26 Nvidia Corporation System, method, and computer program product for managing cache miss requests
US9373182B2 (en) * 2012-08-17 2016-06-21 Intel Corporation Memory sharing via a unified memory architecture
US20140101405A1 (en) * 2012-10-05 2014-04-10 Advanced Micro Devices, Inc. Reducing cold tlb misses in a heterogeneous computing system
CN104216837A (zh) * 2013-05-31 2014-12-17 华为技术有限公司 一种内存系统、内存访问请求的处理方法和计算机系统
US9734079B2 (en) * 2013-06-28 2017-08-15 Intel Corporation Hybrid exclusive multi-level memory architecture with memory management
US11822474B2 (en) 2013-10-21 2023-11-21 Flc Global, Ltd Storage system and method for accessing same
JP2016170729A (ja) 2015-03-13 2016-09-23 株式会社東芝 メモリシステム
US9424192B1 (en) 2015-04-02 2016-08-23 International Business Machines Corporation Private memory table for reduced memory coherence traffic
US9842050B2 (en) 2015-04-30 2017-12-12 International Business Machines Corporation Add-on memory coherence directory
CN106651748B (zh) * 2015-10-30 2019-10-22 华为技术有限公司 一种图像处理方法与图像处理装置
US10474458B2 (en) 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
US11030126B2 (en) * 2017-07-14 2021-06-08 Intel Corporation Techniques for managing access to hardware accelerator memory
US10402937B2 (en) 2017-12-28 2019-09-03 Nvidia Corporation Multi-GPU frame rendering
GB2571539B (en) 2018-02-28 2020-08-19 Imagination Tech Ltd Memory interface
GB2571536B (en) * 2018-02-28 2020-03-11 Imagination Tech Ltd Coherency manager
GB2571538B (en) 2018-02-28 2020-08-19 Imagination Tech Ltd Memory interface
CN112997161A (zh) 2018-06-18 2021-06-18 Flc技术集团股份有限公司 将储存系统用作主存储器的方法和装置
CN113396400A (zh) 2019-03-15 2021-09-14 英特尔公司 用于针对高速缓存操作提供层级开放划分扇区和可变扇区大小的系统和方法
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
EP4130988A1 (en) 2019-03-15 2023-02-08 INTEL Corporation Systems and methods for cache optimization
WO2020190807A1 (en) 2019-03-15 2020-09-24 Intel Corporation Systolic disaggregation within a matrix accelerator architecture
US11861761B2 (en) 2019-11-15 2024-01-02 Intel Corporation Graphics processing unit processing and caching improvements
KR20220064230A (ko) * 2020-11-11 2022-05-18 삼성전자주식회사 다중 프로토콜에 기초하여 메모리에 액세스하기 위한 시스템, 장치 및 방법
CN115202892B (zh) * 2022-09-15 2022-12-23 粤港澳大湾区数字经济研究院(福田) 一种机密计算协处理器的内存扩展系统和内存扩展方法

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0180369B1 (en) * 1984-10-31 1992-08-19 Texas Instruments Incorporated Cache memory addressable by both physical and virtual addresses
US4991081A (en) * 1984-10-31 1991-02-05 Texas Instruments Incorporated Cache memory addressable by both physical and virtual addresses
US5586297A (en) * 1994-03-24 1996-12-17 Hewlett-Packard Company Partial cache line write transactions in a computing system with a write back cache
US6094686A (en) * 1997-10-24 2000-07-25 Compaq Computer Corporation Multi-processor system for transferring data without incurring deadlock using hierarchical virtual channels
WO2001075620A1 (en) * 2000-04-03 2001-10-11 Advanced Micro Devices, Inc. Bus bridge including a memory controller having an improved memory request arbitration mechanism
US6633960B1 (en) * 2000-08-31 2003-10-14 Hewlett-Packard Development Company, L.P. Scalable directory based cache coherence protocol
US6868481B1 (en) * 2000-10-31 2005-03-15 Hewlett-Packard Development Company, L.P. Cache coherence protocol for a multiple bus multiprocessor system
US6973543B1 (en) * 2001-07-12 2005-12-06 Advanced Micro Devices, Inc. Partial directory cache for reducing probe traffic in multiprocessor systems
US7034849B1 (en) 2001-12-31 2006-04-25 Apple Computer, Inc. Method and apparatus for image blending
US7120755B2 (en) * 2002-01-02 2006-10-10 Intel Corporation Transfer of cache lines on-chip between processing cores in a multi-core system
US6891543B2 (en) * 2002-05-08 2005-05-10 Intel Corporation Method and system for optimally sharing memory between a host processor and graphics processor
US6976117B2 (en) * 2002-08-13 2005-12-13 Intel Corporation Snoopy virtual level 1 cache tag
US7296121B2 (en) * 2002-11-04 2007-11-13 Newisys, Inc. Reducing probe traffic in multiprocessor systems
US7162589B2 (en) * 2002-12-16 2007-01-09 Newisys, Inc. Methods and apparatus for canceling a memory data fetch
US7373466B1 (en) * 2004-04-07 2008-05-13 Advanced Micro Devices, Inc. Method and apparatus for filtering memory write snoop activity in a distributed shared memory computer
US8332592B2 (en) * 2004-10-08 2012-12-11 International Business Machines Corporation Graphics processor with snoop filter
US7577794B2 (en) 2004-10-08 2009-08-18 International Business Machines Corporation Low latency coherency protocol for a multi-chip multiprocessor system
US7305524B2 (en) 2004-10-08 2007-12-04 International Business Machines Corporation Snoop filter directory mechanism in coherency shared memory system
US20060112226A1 (en) * 2004-11-19 2006-05-25 Hady Frank T Heterogeneous processors sharing a common cache
US7406613B2 (en) * 2004-12-02 2008-07-29 Qualcomm Incorporated Translation lookaside buffer (TLB) suppression for intra-page program counter relative or absolute address branch instructions
US20070143546A1 (en) * 2005-12-21 2007-06-21 Intel Corporation Partitioned shared cache
US7653789B2 (en) * 2006-02-01 2010-01-26 Sun Microsystems, Inc. Multiprocessor system that supports both coherent and non-coherent memory accesses
US7814279B2 (en) * 2006-03-23 2010-10-12 International Business Machines Corporation Low-cost cache coherency for accelerators
US20090106498A1 (en) * 2007-10-23 2009-04-23 Kevin Michael Lepak Coherent dram prefetcher
US9035959B2 (en) * 2008-03-28 2015-05-19 Intel Corporation Technique to share information among different cache coherency domains

Also Published As

Publication number Publication date
EP2476051B1 (en) 2019-10-23
IN2012DN02863A (ko) 2015-07-24
JP6196445B2 (ja) 2017-09-13
US20110060879A1 (en) 2011-03-10
CN102576299A (zh) 2012-07-11
WO2011031969A1 (en) 2011-03-17
EP2476051A1 (en) 2012-07-18
JP2013504822A (ja) 2013-02-07
KR20120060230A (ko) 2012-06-11
CN102576299B (zh) 2015-11-25
US8615637B2 (en) 2013-12-24

Similar Documents

Publication Publication Date Title
KR101593107B1 (ko) 메모리 요청들을 처리하기 위한 시스템들 및 방법들
US8250254B2 (en) Offloading input/output (I/O) virtualization operations to a processor
KR100545951B1 (ko) 최적화된 입/출력 애플리케이션을 위한 분산된 판독 및기입 캐싱 구현
JP3924206B2 (ja) 不均一メモリ・アクセス(numa)データ処理システム
US6721848B2 (en) Method and mechanism to use a cache to translate from a virtual bus to a physical bus
US9792210B2 (en) Region probe filter for distributed memory system
US8285969B2 (en) Reducing broadcasts in multiprocessors
TWI676891B (zh) 轉譯後備緩衝器管理
US8451281B2 (en) Shared virtual memory between a host and discrete graphics device in a computing system
US6470429B1 (en) System for identifying memory requests as noncacheable or reduce cache coherence directory lookups and bus snoops
US20070150665A1 (en) Propagating data using mirrored lock caches
JP2000298659A (ja) コンプリート・アンド・コンサイス・リモート(ccr)ディレクトリ
US10467138B2 (en) Caching policies for processing units on multiple sockets
US20140040563A1 (en) Shared virtual memory management apparatus for providing cache-coherence
GB2507759A (en) Hierarchical cache with a first level data cache which can access a second level instruction cache or a third level unified cache
CN112631961A (zh) 一种内存管理单元、地址转译方法以及处理器
US10204053B2 (en) Modeling processor shared memory using a cacheability status
US10754791B2 (en) Software translation prefetch instructions
US9442856B2 (en) Data processing apparatus and method for handling performance of a cache maintenance operation
US20050273575A1 (en) Mechanism to invalidate data translation buffer entries a multiprocessor system
CN114238171B (zh) 电子设备、数据处理方法和装置、计算机系统
US10896135B1 (en) Facilitating page table entry (PTE) maintenance in processor-based devices
CN114218132B (zh) 信息预取方法、处理器、电子设备
US9983995B2 (en) Delayed write through cache (DWTC) and method for operating the DWTC

Legal Events

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

Payment date: 20190103

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20200103

Year of fee payment: 5