KR20230164172A - 스태시 요청들을 처리하기 위한 장치 및 방법 - Google Patents

스태시 요청들을 처리하기 위한 장치 및 방법 Download PDF

Info

Publication number
KR20230164172A
KR20230164172A KR1020237037865A KR20237037865A KR20230164172A KR 20230164172 A KR20230164172 A KR 20230164172A KR 1020237037865 A KR1020237037865 A KR 1020237037865A KR 20237037865 A KR20237037865 A KR 20237037865A KR 20230164172 A KR20230164172 A KR 20230164172A
Authority
KR
South Korea
Prior art keywords
stash
request
circuitry
address
data
Prior art date
Application number
KR1020237037865A
Other languages
English (en)
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 KR20230164172A publication Critical patent/KR20230164172A/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
    • 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
    • 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/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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
    • 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/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

스태시 요청들을 처리하기 위한 장치 및 방법이 설명된다. 장치는 프로세싱 요소에 의한 액세스를 위한 데이터를 저장하는 데 사용되는 연관된 저장 구조를 갖는 프로세싱 요소, 및 프로세싱 요소를 상호연결 회로부에 결합시키기 위한 인터페이스를 갖는다. 저장 구조를 타겟팅하는 스태시 요청이 상호연결 회로부로부터 인터페이스에서 수신되는 것에 응답하여, 스태시 요청과 연관된 데이터의 블록이 저장 구조 내에 저장되게 하는 스태시 요청 처리 회로부가 또한 제공된다. 스태시 요청은 메모리 내의 대응하는 물리적 어드레스로 변환할 필요가 있는 주어진 어드레스를 식별하고, 또한 어드레스 공간 키를 식별한다. 스태시 요청에 의해 식별된 어드레스 공간 키에 의존하는 어드레스 변환을 수행함으로써 스태시 요청에 의해 식별된 주어진 어드레스를 대응하는 물리적 어드레스로 변환하기 위해 어드레스 변환 회로부가 사용된다. 이어서, 스태시 요청 처리 회로부는 데이터의 블록이 물리적 어드레스와 연관된 저장 구조 내의 위치에 저장되게 하기 위해 어드레스 변환 회로부에 의해 결정된 대응하는 물리적 어드레스에 응답한다.

Description

스태시 요청들을 처리하기 위한 장치 및 방법
본 기법은 스태시(stash) 요청들을 처리하기 위한 장치 및 방법에 관한 것이다.
데이터 프로세싱 시스템에서, 다수의 컴포넌트들은, 그러한 컴포넌트들 사이의 통신을 허용하기 위해, 상호연결 회로부에 의해 상호연결될 수 있다. 컴포넌트들은 데이터 프로세싱 동작들을 수행할 수 있는 다수의 프로세싱 요소들을 포함할 수 있으며, 그러한 프로세싱 요소들에 의해 프로세싱된 데이터는 상호연결 회로부를 통해 그러한 프로세싱 요소들에 의해 액세스되는 메모리에서 액세스가능하다.
일부 경우들에서, 프로세싱 요소들 중 하나는, 다른 프로세싱 요소를 대신하여 다수의 프로세싱 작업들을 수행하고, 결과적으로, 다른 프로세싱 요소가 후속하여 요구할 수 있는 데이터를 생성하도록 배열될 수 있다. 그 데이터를 다른 프로세싱 요소에 이용가능하게 하는 하나의 방식은, 그 데이터를 생성하는 프로세싱 요소가, 그 데이터를 후속적으로 요구하는 다른 프로세싱 요소에 또한 액세스가능한 메모리 내의 위치에 데이터를 기록하는 것이다. 그러나, 이러한 액세스들과 연관된 상당한 에너지 소비와 함께, 메모리에 대한 액세스들을 수행하는 것과 연관된 상당한 레이턴시가 있을 수 있다.
이러한 문제들을 완화하기 위해, 제2 프로세싱 요소를 대신하여 데이터를 생성하고 있는 제1 프로세싱 요소가, 생성된 데이터가 제2 프로세싱 요소의 로컬 저장 구조 내에 직접 저장되게 하는 상호연결 회로부를 통해 스태시 요청을 발행하도록 허용하는 것이 알려져 있고, 이러한 프로세스는 스태싱(stashing) 동작으로 지칭된다. 그에 의해, 그러한 접근법은 제2 프로세싱 요소가 그 데이터에 액세스하려고 후속적으로 추구하는 것과 연관된 레이턴시를 감소시키고, 또한 메인 메모리에 액세스할 필요성을 감소시킴으로써 에너지 소비를 감소시킬 수 있다.
그러한 스태싱 동작들을 수행하기 위한 더 유연한 메커니즘을 제공하는 것이 바람직할 것이다.
하나의 예시적인 배열에서, 프로세싱 요소에 의한 액세스를 위해 데이터를 저장하는 데 사용되는 연관된 저장 구조를 갖는 프로세싱 요소; 프로세싱 요소를 상호연결 회로부에 결합하기 위한 인터페이스; 저장 구조를 타겟팅하는 스태시 요청이 상호연결 회로부로부터 인터페이스에서 수신되는 것에 응답하여, 스태시 요청과 연관된 데이터의 블록이 저장 구조 내에 저장되게 하는 스태시 요청 처리 회로부 - 스태시 요청은 메모리 내의 대응하는 물리적 어드레스로 변환할 필요가 있는 주어진 어드레스를 식별하고 또한 어드레스 공간 키를 식별함 -; 및 스태시 요청에 의해 식별된 어드레스 공간 키에 의존하는 어드레스 변환을 수행함으로써 스태시 요청에 의해 식별된 주어진 어드레스를 대응하는 물리적 어드레스로 변환하기 위한 어드레스 변환 회로부를 포함하고; 스태시 요청 처리 회로부는 데이터의 블록이 물리적 어드레스와 연관된 저장 구조 내의 위치에 저장되게 하기 위해 어드레스 변환 회로부에 의해 결정된 대응하는 물리적 어드레스에 응답하는 장치가 제공된다.
다른 예시적인 배열에서, 프로세싱 요소에 의한 액세스를 위해 데이터를 저장하는 데 사용되는 연관된 저장 구조를 갖는 프로세싱 요소를 제공하는 단계; 프로세싱 요소를 상호연결 회로부에 결합하는 단계; 저장 구조를 타겟팅하는 스태시 요청이 상호연결 회로부로부터 수신되는 것에 응답하여, 스태시 요청과 연관된 데이터의 블록이 저장 구조 내에 저장되게 하는 스태시 요청 처리 회로부를 이용하는 단계 - 스태시 요청은 메모리 내의 대응하는 물리적 어드레스로 변환할 필요가 있는 주어진 어드레스를 식별하고 또한 어드레스 공간 키를 식별함 -; 스태시 요청에 의해 식별된 어드레스 공간 키에 의존하는 어드레스 변환을 수행함으로써 스태시 요청에 의해 식별된 주어진 어드레스를 대응하는 물리적 어드레스로 변환하기 위한 어드레스 변환 회로부를 이용하는 단계; 및 대응하는 물리적 어드레스가 어드레스 변환 회로부에 의해 결정되는 것에 응답하여, 데이터의 블록이 물리적 어드레스와 연관된 저장 구조 내의 위치에 저장되게 하는 단계를 포함하는 스태시 요청들을 처리하는 방법이 제공된다.
본 기법은 첨부 도면들에 예시된 바와 같은 그의 예들을 참조하여, 단지 예시로서, 추가로 설명될 것이다.
도 1은 하나의 예시적인 배열에 따른 시스템의 블록도이다.
도 2는 하나의 예시적인 배열에 따른 스태시 요청을 처리하기 위한 시스템의 다수의 컴포넌트들 사이의 상호작용을 예시한다.
도 3은 일 예시적인 배열에 따른 스태시 요청의 처리를 예시하는 흐름도이다.
도 4a는 하나의 예시적인 배열에 따른 스태싱에 사용되는 어드레스 공간이 어떻게 리맵핑될 수 있는지를 예시하는 흐름도이다.
도 4b는 하나의 예시적인 구현에 따른 스태시 요청들에 대한 타겟이 어떻게 변경될 수 있는지를 예시한다.
전형적인 알려진 시스템들에서, 스태시 요청은 그 스태시 요청의 결과로서 기록될 데이터와 연관된 메모리 내의 위치를 식별하는 물리적 어드레스를 제공하고, 또한 타겟 프로세싱 요소 및/또는 데이터가 기록될 그의 연관된 저장 구조를 결정하기 위해 사용되는 타겟 식별자를 제공한다. 이어서, 상호연결부는 특정된 타겟 식별자에 기초하여 원하는 타겟에 스태시 요청을 라우팅할 수 있어서, 이어서, 스태시 요청과 연관된 데이터는 특정된 물리적 어드레스에 따라 타겟 프로세싱 요소의 연관된 저장 구조의 위치에 기록될 수 있다. 타겟 프로세싱 요소의 연관된 저장 구조는 다양한 형태들을 취할 수 있지만, 하나의 예시적인 구현에서, 그 타겟 프로세싱 요소에 액세스가능한 캐시 저장소일 수 있다.
앞서 언급한 바와 같이, 제2 프로세싱 요소에 의한 후속 사용을 위한 데이터를 생성하는 제1 프로세싱 요소가 스태시 요청을 발행하여 생성된 데이터가 제2 프로세싱 요소의 로컬 저장 구조 내에 직접 저장되게 함으로써, 이는 성능을 상당히 개선하여, 그렇지 않으면 메인 메모리에 대한 액세스들로 인해 초래될 레이턴시 및/또는 에너지 소비를 감소시킬 수 있다. 그러나, 스태시 요청을 갖는 물리적 어드레스의 제공에 기초한 그러한 접근법은 일부 제약들을 초래하며, 이는 그러한 스태시 요청들의 사용에서 유연성을 억제할 수 있다. 본 명세서에 설명된 기법들에 따르면, 스태싱 동작들을 수행하기 위한 더 유연한 메커니즘이 제공된다.
특히, 본 명세서에 설명된 기법들에 따르면, 프로세싱 요소에 의한 액세스를 위한 데이터를 저장하는 데 사용되는 연관된 저장 구조를 갖는 프로세싱 요소, 및 프로세싱 요소를 상호연결 회로부에 결합시키기 위한 인터페이스를 갖는 장치가 제공된다. 또한, 장치는, 프로세싱 요소의 저장 구조를 타겟팅하는 스태시 요청의 인터페이스를 통한 상호연결 회로부로부터의 수신에 응답하여, 스태시 요청과 연관된 데이터의 블록이 저장 구조 내에 저장되게 하는 스태시 요청 처리 회로부를 갖는다. 스태시 요청 처리 회로부는 다양한 형태들을 취할 수 있다. 예를 들어, 하나의 예시적인 구현에서는 프로세싱 요소 내에 제공될 수 있지만, 다른 예시적인 구현에서는 저장 구조에 대한 액세스를 제어하는 데 사용되는 제어 로직의 일부일 수 있는데, 예를 들어 저장 구조가 캐시인 예시적인 구현에서는 캐시 액세스 제어 회로부의 일부를 형성할 수 있다.
스태시 요청이 물리적 어드레스를 식별하는 알려진 기법들과 대조적으로, 본 명세서에 설명된 기법들에 따르면, 스태시 요청은 메모리 내의 대응하는 물리적 어드레스로 변환할 필요가 있는 주어진 어드레스를 식별하고, 또한 어드레스 공간 키를 식별한다. 주어진 어드레스는 다양한 형태들을 취할 수 있지만, 스태시 요청의 대상인 데이터와 연관된 메모리 내의 물리적 어드레스를 식별하는 데 사용될 수 있기 전에 변환을 필요로 한다. 하나의 예시적인 구현에서, 주어진 어드레스는 가상 어드레스일 수 있는 반면, 다른 예시적인 구현에서, 주어진 어드레스는 중간 물리적 어드레스일 수 있다.
당업자들에 의해 이해될 바와 같이, 디바이스 상에서 실행되는 상이한 프로세스들에는 상이한 가상 어드레스 공간들이 주어질 수 있다. 예를 들어, 디바이스의 운영 체제는 상이한 가상 어드레스 공간들을 상이한 프로세스들에 할당할 수 있다. 단일 스테이지 어드레스 변환 프로세스에서, 가상 어드레스들은 적합한 어드레스 변환 메커니즘을 사용하여 물리적 어드레스들로 변환될 수 있는데, 전형적으로 이러한 어드레스 변환 메커니즘들은 가상 어드레스들이 대응하는 물리적 어드레스들로 변환되어야 하는 방법을 식별하기 위해 사용되는 메모리 내의 하나 이상의 페이지 테이블들을 사용한다. 특정 가상 어드레스에 대해 결정된 물리적 어드레스는 해당 특정 가상 어드레스 공간에 의존할 것이다.
일부 시스템들에서는, 가상 어드레스를 물리적 어드레스로 변환하기 위한 단일 스테이지의 어드레스 변환이 존재하기보다는, 멀티 스테이지 어드레스 변환 프로세스가 요구될 수 있다. 예를 들어, 다수의 게스트 운영 체제들이 지원될 수 있게 하기 위해 하이퍼바이저가 사용되는 구현들에서, 어드레스 변환의 스테이지 1 동안 가상 어드레스를 중간 물리적 어드레스로 변환하기 위해 게스트 운영 체제 제어 변환이 사용될 수 있는 한편, 어드레스 변환의 스테이지 2에서 중간 물리적 어드레스를 최종 물리적 어드레스로 변환하기 위해 하이퍼바이저 제어 변환이 사용될 수 있다. 그러한 시스템들에서, 스태시 요청의 일부로서 제공된 주어진 어드레스는 가상 어드레스 또는 중간 물리적 어드레스일 수 있다.
주어진 어드레스의 적절한 변환이 수행될 수 있게 하기 위해, 스태시 요청은 또한 어드레스 공간 키를 식별한다. 이러한 어드레스 공간 키는 다양한 형태들을 취할 수 있지만, 주어진 어드레스의 정확한 해석을 용이하게 하는 역할을 하며, 특히, 주어진 어드레스가 메모리 내의 대응하는 물리적 어드레스로 적절하게 변환될 수 있게 한다. 비제한적인 예로서, 어드레스 공간 키는 (PCIe G5, CSL, GenZ 등과 같은 프로토콜들에 의해 표준화된 바와 같은) 프로세스 어드레스 공간 ID(PASID)의 형태를 취할 수 있다. 그러나, 대안적으로, 가상 머신 식별자(VMID) 또는 어드레스 공간 식별자(ASID) 중 하나 이상을 포함할 수 있다.
장치는 스태시 요청에 의해 식별된 어드레스 공간 키에 의존하는 어드레스 변환을 수행함으로써 스태시 요청에 의해 식별된 주어진 어드레스를 대응하는 물리적 어드레스로 변환하기 위해 배열되는 어드레스 변환 회로부를 추가로 갖는다. 특히, 스태시 요청을 갖는 어드레스 공간 키를 제공함으로써, 이는 어드레스 변환 회로부가 주어진 어드레스를 해석하는 방법, 및 특히 그 주어진 어드레스를 메모리 내의 정확한 물리적 어드레스로 변환하는 방법을 결정할 수 있게 한다. 대응하는 물리적 어드레스가 어드레스 변환 회로부에 의해 결정되면, 스태시 요청 처리 회로부는 스태시 요청과 연관된 데이터의 블록이 물리적 어드레스와 연관된 저장 구조 내의 위치에 저장되게 하도록 배열된다.
그러한 접근법은 스태시 요청들의 사용에 있어서 상당히 향상된 유연성을 제공한다. 특히, 스태시 요청들의 생성기가 스태시 요청들에 사용할 적절한 범위의 주어진 어드레스들 및 연관된 어드레스 공간 키를 제공받으면, 시스템의 다른 곳에서 어드레스 공간 키와 연관된 어드레스 맵핑을 변경하기 위한 결정이 내려진 경우에도, 스태시 요청들과 연관된 실제 물리적 어드레스들을 조정하기 위해, 스태시 요청들을 계속 발행할 수 있다. 이는, 예를 들어, 그러한 스태시 요청들의 타겟인 프로세싱 요소가, 그러한 스태시 요청들의 생성기의 동작에 대해 어떠한 변경들도 행할 필요 없이, 스태시 요청에 의해 제공된 데이터가 저장되는 곳을 변경할 수 있게 할 것이다.
어드레스 변환 회로부가 어드레스 공간 키를 사용하여, 주어진 어드레스가 대응하는 물리적 어드레스로 변환되는 방법에 영향을 미칠 수 있는 다수의 방식들이 존재한다. 그러나, 하나의 예시적인 구현에서, 어드레스 변환 회로부는 메모리 내의 하나 이상의 페이지 테이블들을 참조하여 어드레스 변환을 결정하도록 배열되고, 어드레스 공간 키는 적어도 하나의 페이지 테이블을 식별하기 위해 어드레스 변환 회로부에 의해 사용된다. 예를 들어, 어드레스 공간 키는 어드레스 변환 회로부가 메모리 내의 적어도 하나의 페이지 테이블에 대한 페이지 테이블 베이스 어드레스를 식별할 수 있게 하여, 정확한 페이지를 잠금해제하고 적절한 변환이 수행될 수 있게 하는 데 사용될 수 있다.
하나의 예시적인 구현에서, 멀티-레벨 어드레스 변환 프로세스가 수행될 수 있고, 어드레스 공간 키는 제1 레벨 페이지 테이블의 베이스 어드레스를 식별하는 데 사용될 수 있다. 이어서, 주어진 어드레스의 일부는 그 제1 레벨 페이지 테이블 내의 특정 엔트리를 식별하는 데 사용될 수 있고, 이어서 그 식별된 엔트리는 다음 레벨 페이지 테이블에 대한 기본 어드레스를 제공한다. 이어서, 주어진 어드레스의 추가 부분은 그 페이지 테이블 내의 특정 엔트리를 식별하는 데 사용될 수 있고, 그 엔트리는 다음 레벨 페이지 테이블에 대한 베이스 어드레스를 식별한다. 이러한 프로세스는 최종 레벨 페이지 테이블이 식별될 때까지 계속되며, 여기서 그 최종 레벨 페이지 테이블의 엔트리는 물리적 어드레스 정보를 식별한다.
이러한 멀티-레벨 어드레스 변환은 어드레스 변환의 각각의 스테이지에서 사용될 수 있다는 것에 유의해야 한다. 따라서, 가상 어드레스를 물리적 어드레스로 변환하기 위한 단일 스테이지 어드레스 변환이 존재할 수 있지만, 앞서 언급된 바와 같이, 다른 시스템들에서, 가상 어드레스를 중간 물리적 어드레스로 변환하기 위한 제1 스테이지 어드레스 변환, 및 중간 물리적 어드레스를 물리적 어드레스로 변환하기 위한 제2 스테이지 어드레스 변환이 존재할 수 있으며, 이들 스테이지들 중 어느 하나 또는 둘 모두에서 멀티-레벨 어드레스 변환이 사용될 수 있다.
앞서 언급된 바와 같이, 스태시 요청에 의해 특정된 주어진 어드레스가 어떤 형태를 취하든, 예를 들어, 그것이 가상 어드레스이든 또는 중간 물리적 어드레스이든, 그 주어진 어드레스를 대응하는 물리적 어드레스로 변환할 때 사용될 관련 페이지 테이블들을 식별하기 위해 어드레스 공간 키가 사용될 수 있다.
하나의 예시적인 구현에서, 프로세싱 요소는, 적어도 하나의 동작 모드에서, 어드레스 공간 키를 식별하는 후속 스태시 요청들에 의해 식별된 주어진 어드레스들이 대응하는 물리적 어드레스들로 변환되는 방법을 변경하기 위해, 어드레스 공간 키에 따라 어드레스 변환 회로부에 의해 수행되는 어드레스 변환을 수정하도록 인에이블된다. 따라서, 특정 어드레스 공간 키를 사용하는 스태시 요청들의 타겟인 프로세싱 요소는, 적어도 일부 동작 모드들에서, 그러한 스태시 요청들에 의해 특정된 주어진 어드레스들과 관련하여 수행되는 어드레스 변환을 변경하여, 물리적 어드레스들에 대한 그러한 주어진 어드레스들의 맵핑을 변경한다. 어드레스 변환을 변경하는 능력은 원하는 경우 특정의 신뢰할 수 있는 실행 환경들로 제한될 수 있다. 예를 들어, 어드레스 변환을 수정하는 그러한 능력은 하이퍼바이저 및/또는 프로세싱 요소 상에서 실행되는 감독 소프트웨어로 제한될 수 있다.
이는, 프로세싱 요소가 스태시 요청들의 생성기에 의해 발행된 스태시 요청들의 형태를 변경하려고 할 필요 없이, 그러한 스태시 요청들에 의해 타겟팅된 물리적 어드레스를 변경할 수 있음을 의미하기 때문에, 상당한 유연성을 제공한다. 실제로, 그러한 활동은 스태시 요청들의 생성기에 완전히 투명할 것이다. 연관된 저장 구조가 캐시인 경우, 그러한 단계들은, 예를 들어, 스태시된 데이터가 저장되는 캐시의 물리적 데이터 어레이 또는 저장 디바이스를 변경하는 데 사용될 수 있다. 예를 들어, 세트 연관 캐시에서, 스태시된 데이터의 항목이 저장될 실제 세트는 스태시된 데이터와 연관된 물리적 어드레스에 의존할 것이다. 다른 구현들에서, 저장 구조는 캐시가 아닐 수 있고, 대신에 프로세싱 요소에 이용가능한 일부 로컬 저장 버퍼 공간일 수 있다. 위의 기법들을 사용하여, 프로세싱 요소는, 예를 들어, 후속 스태시된 데이터가 저장되는 새로운 로컬 저장 버퍼를 할당할 수 있으며, 어드레스 변환은, 스태시 요청에 대해 특정된 각각의 주어진 어드레스가 이어서 새로운 로컬 저장 버퍼 내의 물리적 어드레스에 맵핑되게 변경되도록 변경된다.
하나의 예시적인 구현에서, 장치는 그 상호연결 회로부에 결합된 다수의 요소들을 상호연결하는 데 사용되는 상호연결 회로부를 더 포함한다. 다수의 요소들은, 스태시 요청들에 대한 타겟으로서 사용되고 있는 연관된 저장 구조를 갖는 앞서 언급된 프로세싱 요소를 포함할 수 있고, 스태시 요청들의 생성기를 또한 포함할 수 있다. 생성기 또는 스태시 요청들은 다양한 형태들을 취할 수 있지만, 하나의 예시적인 구현에서, 스태시 요청들의 이러한 생성기는 연관된 저장 구조를 갖는 프로세싱 요소를 대신하여 특정 동작들을 수행하는 임무를 맡은 하드웨어 가속기 디바이스일 수 있다. 그러한 하드웨어 가속기 디바이스들은 전형적으로, 범용 중앙 프로세싱 유닛(CPU) 상에서 실행되는 소프트웨어에서 가능한 것보다 더 효율적으로 특정 기능들을 수행할 수 있으며, 따라서 특정 작업들을 그러한 하드웨어 가속기 디바이스들에 위임하는 것이 효율적일 수 있다. 스태시 요청들의 생성기로서 사용될 수 있는 많은 상이한 유형들의 하드웨어 가속기 디바이스, 예를 들어, 그래픽스 프로세싱 유닛, 디지털 신호 프로세서, 암호화 가속기 등이 존재한다.
하나의 예시적인 구현에서, 각각의 스태시 요청은 타겟 식별자를 추가로 제공하고, 상호연결 회로부는 상호연결 회로부에 결합된 다수의 요소들 각각을 연관된 타겟 식별자와 연관시키는 데 사용되는 라우팅 저장소를 포함한다. 이어서, 상호연결 회로부는 상호연결 회로부에 의해 스태시 요청이 라우팅될 타겟 요소를 결정하기 위해 라우팅 저장소를 참조하도록 스태시 요청들의 생성기에 의해 생성된 각각의 스태시 요청의 수신에 응답한다.
상호연결 회로부는 단지 상이한 요소들 사이에서 상호연결 회로부를 통한 통신들의 라우팅을 관리하는 것에 추가하여 추가 기능들을 수행할 수 있다. 예를 들어, 상호연결 회로부는 다수의 요소들에 의해 액세스가능한 데이터의 일관성을 유지하기 위해 일관성 관리 회로부를 가질 수 있다. 예를 들어, 그러한 요소들 중 다수는 데이터의 로컬 사본들이 그러한 요소들에 의해 캐시될 수 있게 하는 캐시 구조들을 가질 수 있으며, 요소가 캐시될 수 있는 데이터의 항목에 대해 요청할 때, 그 요소가 그 데이터 항목의 가장 최신 버전에 액세스하는 것을 보장하는 것이 중요하다. 이러한 프로세스를 관리하기 위해, 일관성 관리 회로부는 요청된 데이터의 가장 최신 버전이 액세스되는 것을 보장하는 방식으로 캐시가능한 액세스 요청들을 처리하려고 할 수 있다. 이는 스누프(snoop) 요청들을 하나 이상의 요소들 및 이들의 연관된 캐시 저장소에 발행하여 특정 액션들이 그러한 스누프 요청들의 수신자들에 의해 착수되게 하는 것을 수반할 수 있다. 그러한 액션들은, 예를 들어, 캐시에 저장된 데이터의 항목의 로컬 사본을 무효화하는 것, 및/또는 그 캐시 내에 저장된 데이터의 그 항목의 사본을 일관성 관리 회로부로 리턴하는 것을 수반할 수 있다.
스태시 요청들이 프로세싱될 때, 그러한 일관성이 유지되는 것을 보장하는 것이 또한 중요하며, 여기서 스태시 요청의 대상인 데이터는 시스템의 다른 곳에 캐싱될 수 있는 유형이다. 따라서, 스태시 요청 처리 회로부는 스태시 요청과 연관된 데이터의 블록에 대한 일관성을 보장하기 위해 일관성 액션을 수행하도록 일관성 관리 회로부를 트리거하도록 배열될 수 있다. 요구되는 일관성 액션은 다양한 형태들을 취할 수 있지만, 예를 들어, 스태시 요청과 연관된 물리적 어드레스에서 데이터의 사본을 캐싱한 상호연결부에 연결된 임의의 다른 요소들이 데이터의 자신들의 사본을 무효화하는 것을 보장할 수 있어서, 이어서, 스태시 요청과 연관하여 제공된 데이터는 그 물리적 어드레스에서 데이터의 가장 최신 버전으로서 취급되는 것을 보장할 수 있다. 임의의 다른 캐시된 사본들이 무효화되게 함으로써, 일관성 관리 회로부는 이어서 그 기록들에서 스태시 요청의 타겟이 그 데이터의 가장 최신 버전을 보유하는 요소임을 식별할 수 있고, 이어서, 그 정보는 그 물리적 어드레스에서 데이터에 액세스하려 할 수 있는 요소들 중 임의의 요소에 의해 발행된 후속 액세스 요청과 연관하여 적절한 때에 사용가능하다.
일관성 관리 회로부가 그러한 일관성 액션들을 수행할 수 있게 하기 위해, 전형적으로, 해당 데이터의 물리적 어드레스가 일관성 관리 회로부에 제공될 필요가 있을 것이다. 따라서, 하나의 예시적인 구현에서, 스태시 요청 처리 회로부는, 대응하는 물리적 어드레스가 어드레스 변환 회로부에 의해 결정되면 일관성 액션을 수행하도록 일관성 관리 회로부를 트리거하도록 배열된다.
이어서, 일관성을 유지하는 것을 돕기 위해, 하나의 예시적인 구현에서, 스태시 요청 처리 회로부는, 데이터의 블록에 액세스하기 위한 후속 요청을 발행할 수 있는 다수의 요소들 중 임의의 요소가 데이터의 블록의 최신 버전에 액세스할 것임을 확인하기 위해 일관성 관리 회로부로부터 완료 신호가 수신될 때까지 스태시 요청과 연관된 데이터의 블록을 저장 구조에 저장하는 것을 연기하도록 배열된다.
일관성 관리 회로부에 의해 완료 신호가 발행되는 타이밍은 구현에 따라 변할 수 있다. 예를 들어, 일부 구현들에서, 일관성 관리 회로부에 의해 해당 데이터에 대해 수신된 임의의 후속 액세스 요청이 가장 최신 버전의 데이터가 액세스되게 할 것을 보장하기 위한 위치에 일관성 관리 회로부가 있는 경우, 모든 요구된 일관성 액션들이 일관성 관리 회로부에 의해 스누프 요청을 받는 요소들에 의해 반드시 착수되기 전에, 일관성 관리 회로부가 완료 신호를 발행하는 것이 가능할 수 있다. 스태시 요청 처리 회로부에 의한 완료 신호의 수신은 스태시 요청과 연관된 데이터의 블록이 저장 구조에 저장되는 것이 일관성 관점에서 이제 안전하다는 것을 스태시 요청 처리 회로부에 효과적으로 통지한다.
하나의 예시적인 구현에서, 스태시 요청은, 연관된 데이터의 블록이 저장 구조에 저장되고 저장 구조에 고유하게 저장된 것으로 마킹되게 하도록 배열되고, 일관성 관리 회로부는, 데이터의 블록의 임의의 사본들이 상호연결 회로부에 결합된 요소들에 액세스가능한 임의의 다른 로컬 저장 구조들에서 무효화되게 하도록 배열된다.
그러한 접근법에 의해, 저장 구조에 현재 스태시된 데이터의 블록의 사본을 사용하여 액세스가 수행되는 것을 보장함으로써, 데이터의 블록에 대한 액세스에 대한 임의의 후속 요청들이 정확하게 서비스될 수 있다는 것이 보장될 수 있는데, 이는 그 저장 구조가 데이터의 블록을 저장하는 유일한 엔티티이고, 그 저장 구조가 데이터의 가장 최신 버전을 저장한다는 것이 알려져 있기 때문이다.
하나의 예시적인 구현에서, 스태시 요청에 응답하여 저장 구조에 기록될 데이터의 블록에는 오리지널 스태시 요청이 제공된다. 그러나, 대안적인 구현에서, 데이터의 블록 자체는 스태시 요청이 발행될 때 제공되지 않을 수 있고, 대신에, 완료 신호가 수신되면, 스태시 요청 처리 회로부는 그 스태시 요청의 생성기로부터 데이터의 블록을 획득하기 위해 인터페이스를 통해 요청을 발행하도록 배열될 수 있다. 이 시점에서, 전형적으로, 임의의 추가의 일관성 액션들이 취해질 필요가 없을 것인데, 이는, 생성기가 데이터의 유일한 유효 사본을 갖고, 따라서 데이터가 저장 구조 내의 저장을 위해 단지 스태시 요청 처리 회로부에 제공될 수 있다는 것이 알려져 있기 때문이다.
스태시 요청들의 생성기의 거동을 변경할 어떠한 필요성도 없이, 물리적 어드레스 맵핑이 변경될 수 있게 한다는 점에서, 본 기법이 제공할 수 있는 유연성들에 부가하여, 추가의 추가적인 유연성들이 또한 실현될 수 있다. 예를 들어, 하나의 구현에서, 라우팅 저장소는, 주어진 타겟 식별자를 식별하는 후속 스태시 요청들이 라우팅되는 타겟 요소를 변경하기 위해, 주어진 타겟 식별자와 연관된 요소를 변경하도록 수정가능할 수 있다. 따라서, 예를 들어, 스태시 요청들의 원래 타겟인 연관된 저장 구조를 갖는 프로세싱 요소는, 적어도 소정의 동작 모드들에 있는 경우, 라우팅 저장소가 이러한 스태시 요청들과 관련하여 사용될 주어진 타겟 식별자에 대해 수정되게 하여, 스태시 요청들의 생성기의 거동을 수정할 필요 없이 스태시 요청의 실제 물리적 타겟이 변경될 수 있게 한다. 라우팅 저장소를 수정하는 그러한 능력은, 예를 들어, 하이퍼바이저에 및/또는 프로세싱 요소 상에서 실행되는 감독 소프트웨어에 주어질 수 있다.
이는 스태시 요청들을 처리할 때 상당히 향상된 유연성을 제공한다. 예를 들어, 프로세싱 요소는 이러한 생성된 스태시 데이터의 다운스트림 프로세싱을 시스템의 다른 요소, 예를 들어, 계산 저장 디바이스에 분담시키기로 결정할 수 있다. 라우팅 저장소에서 타겟 식별자를 변경함으로써, 이는 후속 스태시 요청들이 해당 계산 저장 디바이스로 라우팅되게 하여, 계산 저장 디바이스가 각각의 후속 스태시 요청과 함께 제공된 주어진 어드레스의 해석을 담당하게 될 것이다. 또한, 이는 어드레스 공간 키와 연관된 물리적 어드레스 맵핑을 변경함으로써, 그러한 후속 스태시 요청들이 그 계산 저장 디바이스 내의 물리적 어드레스를 타겟팅하게 하도록 배열될 수 있다. 이러한 변경은 스태시 요청들의 생성기의 거동을 변경할 필요 없이 구현될 수 있으며, 그러한 스태시 요청들의 재지향은 그러한 스태시 요청들의 생성기에 완전히 투명하다는 것에 유의해야 한다.
스태시 요청들의 생성기가 그러한 스태싱 동작들을 수행하도록 설정될 수 있는 다수의 방식들이 존재한다. 하나의 예시적인 구현에서, 프로세싱 요소는, 프로세싱 요소의 연관된 저장 구조를 타겟팅하는 스태시 요청들을 생성할 때 스태시 요청들의 생성기에 의해 사용될 어드레스 공간 키 및 주어진 어드레스들의 범위를 스태시 요청들의 생성기에 제공하도록 배열된다. 프로세싱 요소는 또한, 이러한 스태시 요청들을 발행할 때 사용될 타겟 식별자를 스태시 요청들의 생성기에 제공할 수 있다. 이러한 정보가 스태시 요청들의 생성기에 제공되는 타이밍은 구현에 따라 변할 수 있다. 그러나, 하나의 예시적인 구현에서, 스태시 요청들의 생성기가 프로세싱 요소를 대신하여 작업들을 수행하도록 설정될 시점에, 위의 정보는, 그러한 스태시 요청들을 발행할 때의 후속 사용을 위해 스태시 요청들의 생성기에 제공될 수 있다.
하나의 예시적인 구현에서, 프로세싱 요소는 인터페이스를 통해 메모리에 대한 정상 액세스 요청들을 상호연결 회로부에 발행하도록 배열된다. 따라서, 그러한 구현들에서, 스태시 요청들은 전형적인 액세스 요청들과 반대 방향으로 인터페이스를 통해 흐른다는 것을 알 수 있을 것이다. 특히, 종래의 액세스 요청들은 전형적으로 메모리를 타겟팅하고, 메모리로의 순방향 전파를 위해 프로세싱 요소에 의해, 그의 연관된 인터페이스를 통해 상호연결 회로부에 발행된다. 대조적으로, 스태시 요청들은 소스 프로세싱 요소(스태시 요청들의 전술된 생성기)로부터 상호연결 회로부에 의해 수신되고, 이어서, 스태시 데이터가 그 타겟 프로세싱 요소의 연관된 저장 구조 내에 저장되게 하도록 그 타겟 프로세싱 요소와 연관된 스태시 요청 처리 회로부에 의한 프로세싱을 위해, 상호연결 회로부를 통해 타겟 프로세싱 요소와 연관된 인터페이스로 라우팅된다.
앞서 언급된 바와 같이, 스태시 데이터가 저장되는 연관된 저장 구조는 다양한 형태들을 취할 수 있다. 예를 들어, 하나의 예시적인 구현에서, 이는 캐시일 수 있고, 이러한 경우들에서, 데이터가 저장되는 캐시 내의 위치(예를 들어, 세트 연관 캐시의 예에서 캐시 내의 세트)는 물리적 어드레스에 의존할 수 있음이 이해될 것이다. 그러나, 연관된 저장 구조가 캐시일 필요는 없으며, 따라서 예를 들어, 다른 구현에서 연관된 저장 구조는 프로세싱 요소에 액세스가능한 메모리 맵핑된 저장소일 수 있다. 예를 들어, 스태시 요청들에 의해 타겟팅되는 프로세싱 요소가 CPU인 경우, 그것은 물리적 어드레스들의 고유한 범위를 갖는 일부 로컬 버퍼 저장소를 가질 수 있고, 스태시 요청들의 생성기에 의해 사용될 어드레스 공간 키 및 주어진 어드레스 범위의 적절한 규격에 의해, 스태시 데이터는 그러한 버퍼 내의 물리적 어드레스들의 범위 내에 저장되게 될 수 있다.
다른 예시적인 사용 사례로서, 전술된 기법은, 상이한 NUMA(non-uniform memory access) 노드들에 위치될 수 있는 다수의 프로세서들이 제공되는 NUMA 아키텍처 내에서 이용될 수 있으며, 각각의 NUMA 노드는 메인 메모리의 일부를 갖는다. 이러한 예들에서, 연관된 저장 구조는 스태시 요청들에 의해 타겟팅되는 프로세서와 동일한 NUMA 노드에 있는 메인 메모리의 일부일 수 있으며, 이러한 접근법은 예를 들어, 스태시 요청들이 다른 NUMA 노드의 NUMA 메모리로 데이터를 기록하기 위해 소스 프로세서에 의해 사용될 수 있게 한다.
이제 도면들을 참조하여 특정 예들이 설명될 것이다.
도 1은 하나의 예시적인 구현에 따른 시스템의 블록도이다. 도 1에 도시된 바와 같이, 다수의 요소들(10, 45, 60, 65, 70, 95, 100)이 상호연결 회로부(75)를 통해 함께 결합된다. 요소들은 다양한 형태들, 예를 들어, 도 1에 도시된 프로세싱 디바이스들(10, 45)(예를 들어, 중앙 프로세싱 유닛(CPU)들의 형태를 취할 수 있음), 그래픽 프로세싱 유닛(GPU)(60), 하나 이상의 가속기 디바이스들(65), 시스템 메모리 관리 유닛(SMMU), 메인 메모리(95) 및 계산 저장 디바이스(100)를 취할 수 있다. 이들은 단지 상호연결 회로부에 연결될 수 있는 요소들의 예들일 뿐이며, 임의의 다른 적합한 요소들이 제공될 수 있다는 것이 인식될 것이다.
프로세싱 디바이스(10), 또는 실제로 프로세싱 디바이스(45)는 본 명세서에 설명된 기법들이 이용될 수 있는 장치의 예들이다. 도 1은 프로세싱 디바이스(10) 내에 제공된 컴포넌트들 중 일부를 더 상세히 도시하며, 프로세싱 디바이스(45)는 유사하게 구성될 수 있다. 특히, 프로세싱 디바이스(10)는, 예를 들어 메모리(95)로부터 페칭된 명령어들에 응답하여, 데이터 프로세싱 동작들을 수행하기 위한 프로세싱 요소(15), 이를테면, 프로세싱 파이프라인을 포함할 수 있다. 이러한 데이터 프로세싱 동작들을 수행할 때, 프로세싱 요소는 데이터 처리 동작들을 수행할 때 프로세싱 요소(15)에 의해 조작되는 데이터를 일시적으로 저장하는 데 사용되는 일부 범용 레지스터들(20)에 액세스할 수 있다.
이러한 데이터 프로세싱 동작들의 수행 동안, 프로세싱 요소(15)는 메모리(95)에 보유된 명령어들 및/또는 데이터에 액세스하려고 하는 메모리 액세스 요청들을 발행할 수 있고, 그러한 메모리 액세스 요청들은 그러한 액세스 요청들에 의해 특정된 어드레스들에 대한 어드레스 변환을 수행하는 데 사용되는 메모리 관리 유닛(MMU)(32)를 통해 라우팅될 수 있다. 특히, 프로세싱 요소에 의해 발행된 액세스 요청들은 액세스되고 있는 데이터와 연관된 메모리(95) 내의 물리적 어드레스를 직접 특정할 수 있는 것이 아니라, 대신에, 메모리 내의 물리적 어드레스를 식별하기 위해 변환을 필요로 하는 가상 어드레스 또는 중간 물리적 어드레스를 특정할 수 있다. 그러한 기법을 사용함으로써, 상이한 어드레스 공간들이 프로세싱 디바이스(10)에 의해 실행되는 상이한 프로세스들에 할당될 수 있다.
MMU(32)는 그러한 어드레스 변환 동작들을 수행하기 위한 어드레스 변환 회로부(25)를 포함할 수 있고, 도 1에 예시된 예에서, 그러한 어드레스 변환은 메모리에 제공된 하나 이상의 페이지 테이블들(99)을 참조하여 수행된다. 당업자들에 의해 이해될 바와 같이, 가상 어드레스를 물리적 어드레스로 변환하기 위해, 또는 실제로, 중간 물리적 어드레스를 물리적 어드레스로 변환하기 위해 다수의 페이지 테이블들이 액세스될 것을 요구하는 멀티-레벨 어드레스 변환이 수행될 수 있고, 따라서, 다수의 상이한 페이지 테이블들이 어드레스 변환 회로부(25)에 의해 액세스될 필요가 있을 수 있다. 어드레스 변환 프로세스를 가속화하기 위해, 메모리 내의 페이지 테이블들(99)로부터 검색된 페이지 테이블 디스크립터 정보 중 일부를 캐싱하고, 특히 그 디스크립터 정보를, MMU(32)의 일부를 형성하는 것으로 간주될 수 있는 변환 색인 버퍼(TLB)(30) 내에 로컬로 저장하는 것이 알려져 있다.
프로세싱 요소에 의해 발행된 액세스 요청들에 의해 정보가 액세스되는 것과 관련하여, 그 정보에 대한 액세스 속도를 개선하기 위해 메모리(95)에 보유된 정보의 서브세트를 저장하는 데 사용될 수 있는 캐시의 하나 이상의 레벨들을 제공하는 것이 알려져 있다. 프로세싱 요소(15)의 데이터 프로세싱 동작들을 수행할 때 그에 의해 액세스되는 데이터가 본 명세서에서 설명되는 기법들에 대해 특히 관심의 대상이며, 메모리(95)에 보유된 데이터의 서브세트를 저장하기 위해 데이터 캐시의 하나 이상의 레벨들이 제공될 수 있다. 따라서, 도 1에서, 그 데이터의 서브세트를 저장하기 위해 캐시(35)가 제공될 수 있다.
도 1에 도시된 바와 같이, MMU(32)가 프로세싱 요소에 의해 출력된 어드레스와 연관된 물리적 어드레스를 결정했다면, 데이터가 캐시 내에 존재하는지 여부를 결정하기 위해 캐시(35) 내에서 룩업 동작이 수행될 수 있고, 존재한다면, 액세스 요청의 대상인 데이터는, 메인 메모리(95)에 액세스할 필요가 있기보다는 캐시에서 액세스될 수 있다. 그러나, 캐시 내의 누락의 경우, 액세스 요청은, 그것의 연관된 인터페이스(97)를 통해 메모리(95)로 라우팅하기 위해, 상호연결 회로부(75)를 통해 인터페이스(12)를 통해 전파될 수 있다.
앞서 논의된 바와 같이, 프로세싱 디바이스(45)는 동일한 방식으로 구성될 수 있지만, 간략화를 위해, 캐시(50) 이외의 프로세싱 디바이스(45)의 내부 세부사항은 생략되었다.
다양한 디바이스들이 프로세싱 디바이스(10) 또는 프로세싱 디바이스(45)를 대신하여 특정 작업들을 수행하기 위한 하드웨어 가속기들로서 사용될 수 있다. 하나의 예는, 프로세싱 디바이스들(10, 45) 대신에 그래픽 프로세싱 동작들을 수행하도록 배열될 수 있는 GPU(60)이다. 그러나, 도 1의 가속기 디바이스(65)에 의해 일반적으로 예시된 다른 하드웨어 가속기 디바이스들이 또한 제공될 수 있다. 다양한 상이한 유형들의 가속기 디바이스, 예를 들어 디지털 신호 프로세서, 암호화 가속기 등이 제공될 수 있다는 것이 인식될 것이다.
시스템 내의 일부 컴포넌트들에 의해 발행된 액세스 요청들의 경우, 그러한 컴포넌트들은, 예를 들어 자기 자신의 MMU(32)를 갖는 프로세싱 디바이스(10)와 관련하여 도 1에 예시된 경우와 같이 그들 자신의 로컬 어드레스 변환 회로부를 가질 수 있다. 그러나, 다른 디바이스들은 상호연결 회로부에 연결되는 시스템 MMU(70)를 사용할 수 있다. 따라서, 가속기 디바이스(65)에 의해 발행된 요청들의 경우, 시스템 MMU(70)는 액세스되는 물리적 어드레스들을 식별하기 위해 요구되는 어드레스 변환을 수행하는 데 사용될 수 있다. GPU(60)는 또한 이러한 목적들을 위해 시스템 MMU(70)를 사용할 수 있다. 그러나 대안적으로, GPU(60)와 같은 하드웨어 가속기 디바이스는 또한 자기 자신의 내부 MMU(62)를 가질 수 있으며, 그 MMU는 GPU를 대신하여 어드레스 변환을 수행하기 위해 시스템 MMU(70)와 조합하여 사용된다. 예를 들어, GPU는 멀티 스테이지 어드레스 변환 프로세스를 사용할 수 있고, 각각의 스테이지는 다수의 레벨들을 포함하며, 이러한 경우에, 가상 어드레스를 중간 물리적 어드레스로 변환하기 위해 GPU(60)의 MMU(62)에 의해 스테이지 1 어드레스 변환이 수행될 수 있고, 이어서 중간 물리적 어드레스를 메모리(95) 내의 최종 물리적 어드레스로 변환하기 위해 시스템 MMU(70)가 스테이지 2 어드레스 변환을 수행하는 데 사용될 수 있다.
상호연결 회로부(75)에 연결될 수 있는 다른 예시적인 유형의 디바이스는 계산 저장 디바이스(100)이다. 이는 본질적으로, 비휘발성 저장소(105) 내에 저장된 데이터와 관련하여 소정의 특정 동작들을 수행할 수 있는 일부 연관된 계산 프로세싱 회로부와 함께 비휘발성 저장소(105)(이는 전체 메모리 물리적 어드레스 범위 내의 특정 물리적 어드레스 범위를 갖는 메모리 맵핑된 저장소를 형성할 수 있음)의 영역을 제공하는 것으로 간주될 수 있다.
도 1에 도시된 바와 같이, 상호연결 회로부(75)는, 상호연결 회로부(75)에 연결된 다수의 요소들 각각을 연관된 타겟 식별자와 연관시키는 데 사용될 수 있는 라우팅 저장소(80)를 포함할 수 있다. 도 1에 예시된 예에서, 요소들(10, 45, 60, 65, 70, 95, 및 100) 각각은 연관된 인터페이스 블록들(12, 47, 62, 67, 72, 97 및 102)을 갖고, 이를 통해 그러한 요소들은 상호연결 회로부에 연결되고, 따라서 라우팅 저장소는 그러한 인터페이스 블록들 각각에 대한 연관된 타겟 식별자를 식별할 수 있음을 알 수 있다. 요소들이 상호연결 회로부에 요청들을 발행할 때, 이들은 연관된 타겟 식별자를 특정할 수 있고, 이어서, 라우팅 저장소(80)를 참조하여, 상호연결 회로부(75)는 요청을 적절한 엔티티로 라우팅할 수 있다.
요소들 중 하나 이상이 메모리에 유지된 데이터의 사본들이 저장될 수 있는 로컬 캐시 구조들을 갖는 시스템들에서, 상호연결 회로부에는 또한, 데이터의 일관성을 유지하기 위한, 특히 메모리에 보유되는 임의의 캐시가능한 데이터의 일관성을 유지하기 위한 일관성 관리 회로부(85)가 제공될 수 있다. 임의의 요소가 메모리의 캐시가능한 영역 내의 데이터에 대한 액세스를 요청할 때, 그 요소가 데이터의 가장 최신 버전에 액세스할 것을 보장하기 위해, 데이터의 일관성을 유지하기 위해 다수의 알려진 캐시 일관성 프로토콜들 중 임의의 것이 일관성 관리 회로부에 의해 구현될 수 있다. 도 1에서 점선 박스(90)로 도시된 바와 같이, 상호연결부에 연결된 요소들 중 하나 이상과 관련하여 제공된 캐시들에 부가하여, 시스템 레벨 캐시(90)가 또한 제공될 수 있으며, 이는 상호연결 회로부에 의해 제공되는 컴포넌트들에 의해 제공되는 컴포넌트들 중 하나를 형성하는 것으로 간주될 수 있고, 전형적으로 일관성 관리 회로부(85)와 연관될 수 있고, 일관성 관리 회로부는 또한, 그러한 시스템 캐시 내에 저장된 데이터에 대한 일관성을 유지한다.
본원에 설명된 기법들에 따르면, 상호연결 회로부에 연결된 요소들 중 하나 이상은 스태시 요청들의 생성기로서 동작할 수 있다. 메모리를 타겟으로 하는 정상 메모리 액세스 요청들과 대조적으로, 스태시 요청은 그 대신 그 스태시 요청이 지향되는 상호연결 회로부에 결합된 특정 타겟 요소를 식별하고, 스태시 요청에 의해 특정된 데이터가 그 타겟팅된 요소의 연관된 저장 구조 내에 직접 저장되게 한다. 스태시 요청들이 지향되는 연관된 저장 구조는 다양한 형태들을 취할 수 있지만, 다음의 설명의 목적들을 위해 연관된 저장 구조는 프로세싱 요소들 중 하나 내의 캐시인 것으로 가정될 것이다.
따라서, 특정 예로서, GPU(60) 또는 실제로 다른 가속기 디바이스들(65) 중 하나는, 이어서 후속적으로 프로세싱 디바이스(10)에 의해 사용되는 데이터를 생성하기 위해, 프로세싱 디바이스(10)를 대신하여 다수의 데이터 프로세싱 작업들을 수행하도록 배열될 수 있다. 그 데이터가 하나 이상의 표준 메모리 액세스 요청들을 통해 메모리(95)에 기록될 수 있지만, 스태시 요청들을 사용함으로써 GPU(60) 또는 다른 가속기 디바이스(65)는 대신에, 생성된 데이터가 프로세싱 디바이스(10)의 캐시(35) 내에 직접 기록되게 할 수 있고, 그에 의해, 프로세싱 디바이스(10)가 후속적으로 메모리(95)로부터의 데이터에 액세스해야 하는 것과 연관될 레이턴시 및/또는 에너지 소비를 회피함으로써 성능을 개선할 수 있다.
전형적으로, 이러한 스태시 요청은 기록되는 데이터와 연관된 물리적 어드레스를 식별하고, 이어서 스태시 요청에 대한 타겟을 식별하기 위해 라우팅 저장소(80) 내에서 룩업될 수 있는 타겟 식별자를 제공할 것이다. 따라서, GPU(60)가 프로세싱 디바이스(10) 내의 캐시(35)를 타겟팅하는 스태시 요청을 발행하고 있었다면, GPU(60)는 프로세싱 디바이스(10) 및/또는 캐시(35)를 식별한 타겟 식별자를 제공할 수 있고, 이어서, 캐시 내에서 데이터가 기록되어야 하는 위치를 식별하기 위해 프로세싱 리 디바이스(10)에 의해 사용될 수 있는 물리적 어드레스를 또한 제공할 수 있다. 특히, 이러한 물리적 어드레스는 캐시 내의 세트를 식별하는 데 사용될 수 있고, 이어서 스태시 데이터는 식별된 세트 내의 이용가능한 캐시 라인에 기록된다는 것이 인식될 것이다.
도 1에 도시된 바와 같이, 프로세싱 디바이스(10), 또는 실제로 스태시 요청들의 임의의 수신자에는, 상호연결 회로부로부터 수신된 스태시 요청들을 처리하기 위한 스태시 요청 처리 회로부(40)가 제공되어, 그러한 스태시 요청들에 의해 식별된 데이터가 캐시(35)와 같은 연관된 저장 구조 내에 기록되게 할 수 있다. 본 명세서에 설명된 기법들에 따르면, GPU(60) 또는 가속기 디바이스(65)와 같은 스태시 요청들의 생성기들은 물리적 어드레스를 발행하는 것이 아니라, 대신에 메모리 내의 대응하는 물리적 어드레스로 변환할 필요가 있는 주어진 어드레스를 제공한다. 주어진 어드레스는 다양한 형태들을 취할 수 있지만, 예를 들어 가상 어드레스 또는 중간 물리적 어드레스일 수 있다.
또한, 스태시 요청의 수신자가 스태시 요청을 정확하게 프로세싱할 수 있게 하기 위해, 스태시 요청은 또한, 수신자 프로세싱 디바이스에 의해 사용될 수 있는 어드레스 공간 키를 식별하여, 적절한 어드레스 변환이 수행될 수 있게 할 수 있다. 어드레스 공간 키는 다양한 형태들을 취할 수 있고, 예를 들어, 가상 머신 식별자, 어드레스 공간 식별자, 또는 프로세스 어드레스 공간 식별자(PASID) 중 하나 이상을 포함할 수 있다. 다음의 논의의 목적들을 위해, PASID가 사용되는 것으로 가정될 것이다.
이러한 어드레스 공간 키를 사용함으로써, 이는 스태시 요청 처리 회로부(40)가 어드레스 변환을 수행하기 위해 MMU(32) 내의 어드레스 변환 회로부(25)와 같은 표준 어드레스 변환 회로부의 서비스들을 이용할 수 있게 할 수 있다. 특히, 어드레스 공간 키를 어드레스 변환 회로부(25)에 제공함으로써, 그 어드레스 변환 회로부는 이어서, 어드레스 변환을 수행하기 위해 어느 페이지 테이블들이 사용될지를 식별하기 위해 키를 사용할 수 있다. 예를 들어, 어드레스 공간 키는 어드레스 변환을 수행하는 데 요구되는 제1 레벨 페이지 테이블에 대한 베이스 어드레스를 식별하는 데 사용될 수 있다. 따라서, 스태시 요청 처리 회로부(40)가 전술된 유형의 스태시 요청을 수신할 때, 스태시 요청 처리 회로부(40)는 이어서 MMU(32)에 신호를 발행하여, 어드레스 변환 회로부(25)로 하여금 스태시 요청과 함께 제공된 주어진 어드레스의 어드레스 변환을 수행하게 할 수 있고(다음의 논의의 목적들을 위해, 그 주어진 어드레스는 가상 어드레스인 것으로 가정될 것임), 여기서 그 어드레스 변환은, 스태시 요청 처리 회로부(40)에 의해 MMU(32)에 또한 제공될 수 있는 스태시 요청에 의해 식별된 어드레스 공간 키에 따라 수행된다.
물리적 어드레스가 어드레스 변환 회로부에 의해 결정되면, 스태시 요청 처리 회로부는 스태시 요청과 연관된 데이터의 블록이 물리적 어드레스와 연관되는 연관된 저장 구조(예를 들어, 캐시(35)) 내의 위치에 저장되게 할 수 있다.
이러한 접근법에 의해, 이는 스태시 요청들의 처리가 가상화될 수 있게 하여, 그러한 스태시 요청들의 생성기의 거동을 수정할 필요 없이 스태시 요청들이 처리될 수 있는 방법에 대해 상당한 유연성을 제공한다. 특히, 프로세싱 디바이스(10)와 같은 프로세싱 디바이스가 자신을 대신하여 일부 작업들을 수행할 GPU(60)와 같은 하드웨어 가속기를 설정할 때, 이는 GPU에 적합한 가상 어드레스 범위, 및 스태시 요청들을 발행할 때 사용될 어드레스 공간 키를 제공할 수 있다. 또한, 이는 그러한 스태시 요청들과 함께 발행될 타겟 식별자를 제공하여, 그러한 스태시 요청들이 적절한 요소로, 예를 들어, 다시 프로세싱 디바이스(10)로 라우팅되어 스태시 데이터가 캐시(35) 내에 저장될 수 있게 하는 것을 보장할 수 있다.
그러나 스태시 요청들은 이제 더 이상 물리적 어드레스들을 사용하지 않기 때문에, 이는, 예를 들어 스태시 요청들이 GPU에 의해 생성되는 방식을 GPU에 통지하거나 또는 변경할 필요 없이, 그러한 스태시 요청들의 목적지가 변경될 수 있도록, 프로세싱 디바이스가 특정된 가상 어드레스 범위 및 어드레스 공간 키를 사용하여 발생된 스태시 요청들에 대해 사용되는 어드레스 맵핑에 대한 특정 변화들을 수행할 수 있게 한다. 그러한 접근법에 의해 제공되는 유연성의 더 많은 세부사항들은 도 4a 및 도 4b를 참조하여 나중에 논의될 것이다.
도 2는 스태시 요청들을 처리할 때 도 1의 시스템 내의 다양한 요소들 사이의 통신들을 예시하는 도면이고, 도 3은 스태시 요청들을 처리할 때 수행되는 단계들을 예시하는 연관된 흐름도이다. 먼저 도 3을 고려하면, 이어서, 단계(200)에서, 스태시 요청들의 수신자가 될 프로세싱 요소(본 명세서에서 피-스태시(stashee)로 또한 지칭될 수 있음)는, 자신을 대신하여 동작들을 수행하도록 요청하고 있음을 디바이스, 이 경우, 스태시 요청들, 적합한 가상 어드레스 범위, 어드레스 공간 키로 사용할 PASID, 및 스태시 요청들을 발행할 때 사용될 타겟 식별자를 생성할 디바이스(그리고 따라서 본 명세서에서 스태셔(stasher)로 지칭될 수 있음)에 제공할 수 있다.
스태시 요청들의 생성기가 이러한 방식으로 설정되면, 스태시 요청들의 생성기는 피-스태시를 대신하여 데이터 프로세싱 동작들을 후속적으로 수행할 수 있고, 이어서, 단계(205)에 의해 표시된 바와 같이, 스태시 요청을 생성할 수 있다. 이는, 스태시 요청의 생성기로부터, 예를 들어 도 1에 도시된 스태시 요청 처리 회로부(40)일 수 있는 타겟 디바이스 내의 스태시 요청 처리 회로부로 통과하는 라인(110)에 의해 도 2에서 도시된다. 앞서 논의된 바와 같이, 상호연결 회로부는 스태시 요청을 어떻게 라우팅할지를 결정하기 위해, 그리고 특히 스태시 요청의 타겟을 결정하기 위해 라우팅 저장소(80)를 참조할 것이며, 이어서 스태시 요청은 상호연결부를 통해 그리고 타겟 디바이스에 대한 적절한 인터페이스를 통해 라우팅된다. 이는 도 3의 단계(210)로 표시된다.
스태시 요청 처리 회로부(40)는 수신된 스태시 요청의 일부 예비 분석을 수행할 수 있고, 도 2에서 화살표(120)로 도시된 바와 같이, 특정 상황들에서 스태시 요청을 거부할 수 있다. 예를 들어, 스태시 요청 처리 회로부(40)는 예를 들어, 무효 어드레스 공간 키(도 2의 예에서는 무효 PASID 값)가 특정되는 것으로 인해 스태시 요청이 무효라고 결정할 수 있다.
그러나, 임의의 그러한 초기 체크들이 통과된다고 가정하면, 도 3의 단계(215)에 의해 그리고 도 2의 화살표(115)에 의해 표시된 바와 같이, 타겟 디바이스 내의 스태시 요청 처리 회로부는 스태시 요청에 의해 특정된 가상 어드레스와 관련하여 어드레스 변환이 수행되도록 요청하기 위해 연관된 MMU에 접촉할 수 있다. MMU에 전달되는 정보의 일부로서, 어드레스 공간 키뿐만 아니라 가상 어드레스가 또한 제공될 것이다.
도 2에서 버블(125)에 의해 표시된 바와 같이, MMU는, 제공된 가상 어드레스 및 어드레스 공간 키에 대해 요구된 어드레스 변환 정보가 이용가능한지 여부를 결정하기 위해 로컬 TLB에서 룩업을 수행할 수 있다. 그러한 경우, 도 2의 화살표(130)에 의해 표시된 바와 같이, TLB 내에서 히트가 발생하고, 요구된 물리적 어드레스는 스태시 요청 처리 회로부에 리턴될 수 있다. 대안적으로, TLB에서 히트가 검출되지 않거나 또는 TLB에서의 히트가 부분적인 어드레스 변환만을 제공하면, 요구된 어드레스 변환 정보를 검색하기 위해, 메모리(95) 내의 하나 이상의 페이지 테이블들(99)에 액세스하기 위해, 도 2에 도시된 바와 같이 페이지 테이블 워크(walk) 프로세스(135)가 개시될 수 있다. 이어서, 그 검색된 정보는 TLB(30) 내에 저장될 수 있지만, 또한, 화살표(140)로 표시된 바와 같이, 요구되는 물리적 어드레스가 스태시 요청 처리 회로부에 출력될 수 있게 할 것이다.
도 3의 단계(220)에 의해 표시된 바와 같이, 물리 어드레스가 MMU로부터 수신될 때, 스태시 요청 처리 회로부는 일관성 요청을 일관성 관리 회로부(85)에 전송하여, 물리 어드레스를 제공할 수 있다. 일관성 관리 회로부에 의해 수행되도록 요구되는 코히어런스 액션은 구현, 및 수행되는 스태시 요청의 유형에 의존할 것이다. 그러나, 도 2의 예에서, 오리지널 스태시 요청은 "무효화" 스태시 요청이라고 가정되며, 따라서 위의 어드레스 변환 프로세스에 의해 식별된 물리적 어드레스에 대한 데이터의 캐싱된 사본을 저장하는 임의의 캐시들이 무효화되어야 함을 식별하는데, 이는 스태시 요청에 의해 제공될 데이터가 그 데이터의 임의의 이전 버전을 대체할 것이고, 그에 따라 임의의 그러한 캐시된 사본들이 오래될 것이기 때문이다. 따라서, 그러한 예시적인 구현에서, 스태시 요청 처리 회로부로부터 일관성 관리 회로부로 발행된 일관성 요청은 MU(make unique) 요청일 것이고, 도 2에서 화살표(145)로 도시된 바와 같이, 어드레스 변환 회로부를 참조하여 결정된 물리적 어드레스를 특정할 것이다.
이어서, 일관성 관리 회로부는 표준 방식으로 메이크 유니크(make unique) 요청을 처리할 것이고, 따라서, 예를 들어 스누프 테이블를 참조하여 어느 요소들이 데이터의 캐싱된 사본들을 잠재적으로 가질 수 있는지를 식별하고, 스누프 요청들을 임의의 그러한 요소들에 발행하여 그 데이터의 로컬 캐싱된 사본들이 무효화되게 할 수 있다.
일관성 관리 회로부(85)가, 그 데이터에 대해 상호연결 회로부에 발행된 임의의 후속 액세스 요청이 적절하게 처리될 것을 보장하기에 충분한 단계들을 취하면, 그리고 특히 데이터의 가장 최신 버전이 액세스되게 할 것이라면, 일관성 관리 회로부(85)는 도 2의 화살표(150)에 의해 표시된 바와 같이, 스태시 요청 처리 회로부에 완료 신호를 다시 발행할 수 있다. 도 2에 도시된 바와 같이, 도시된 예시적인 구현에서, 완료 신호와 관련하여 핸드셰이크 메커니즘이 사용되며, 그에 따라, 스태시 요청 처리 회로부는 완료 신호의 수신을 확인응답하기 위해 일관성 관리 회로부에 확인응답 신호를 다시 발행할 것이다.
도 3의 단계(225)에 의해 표시된 바와 같이, 완료 신호가 수신될 때, 스태시 요청 처리 회로부는 스태시 데이터를 캐시에 저장하도록 배열된다. 하나의 예시적인 구현에서, 스태시 데이터, 즉 스태시 요청에 응답하여 기록될 데이터는 오리지널 스태시 요청의 일부로서 제공될 수 있다. 그러나, 대안적인 구현에서, 도 2에 예시된 바와 같이, 데이터에는 오리지널 스태시 요청이 제공되지 않을 수 있고, 대신에, 완료 신호의 수신 시에, 스태시 요청 전달 회로부는 데이터가 자신에게 제공되도록 요청하기 위해 스태시 요청의 생성기에 요청을 발행할 수 있다.
하나의 예시적인 구현에서, 도 2의 화살표(160)에 의해 표시된 바와 같이, 이러한 요청은 스누프 판독 요청으로서 스태시 요청들의 생성기에 발행될 수 있다. 이어서, 전형적으로, 스태시 요청의 생성기는, 임의의 추가적인 일관성 관리 동작들이 개시될 필요 없이, 화살표(165)에 의해 표시된 바와 같이, 상호연결부를 통해 단지 데이터 페이로드를 스태시 요청 처리 회로부에 리턴할 수 있다. 특히, 스태시 요청의 생성기(스태셔)는 자신이 생성한 데이터가 고유하며, 실제로, 예를 들어 소스 레지스터 내에 비-일관성 데이터로서 스태셔 내에 보유될 수 있다는 것을 알 것이다. 또한, 일관성 관리 회로부로부터 완료 신호가 수신되면, 단지 스태시 요청 처리 회로부로부터의 판독 요청이 발행되었을 것이고, 따라서 모든 요구된 일관성 액션들이 취해졌다는 것이 알려져 있다. 그러나, 다른 구현들에서, 데이터 페이로드를 스태시 요청 처리 회로부에 제공하기 전에 추가 일관성 검사를 수행하는 것이 적절한 것으로 고려되면, 그러한 일관성 동작은 일관성 관리 회로부에 일관성 요청을 전송하는 스태시 요청의 생성기에 의해 개시될 수 있다.
데이터 페이로드가 수신되면, 도 2에서 버블(170)에 의해 표시된 바와 같이, 수신된 데이터는 캐시의 이용가능한 캐시 라인 내에, 그리고 특히, 캐시가 설정된 연관 캐시인 구현의 경우, 물리적 어드레스를 사용하여 식별된 캐시의 세트 내에 있는 이용가능한 캐시 라인들 중 하나 내에 저장될 수 있다. 캐시 라인은 또한 고유한 것으로 마킹될 수 있는데, 이는 수행된 일관성 액션들에 의해, 캐시가 데이터의 유일한 사본을 저장한다는 것이 알려지기 때문이다. 특히, 임의의 다른 캐싱된 사본들은 이미 무효화되었을 것이다.
도 4a 및 도 4b는 본 명세서에서 논의된 방식으로 스태시 요청들을 가상화한 결과로서 실현될 수 있는 유연성 중 일부를 예시한다. 도 4a에 도시된 바와 같이, 예를 들어 스태싱에 사용될 물리적 어드레스 공간을 리맵핑하는 것이 가능하다. 특히, 스태시 요청들의 수신자가 될 그리고 그에 따라 스태셔에 의해 사용될 가상 어드레스 범위 및 PASID를 제공한 프로세싱 요소는, 적어도, 특정 동작 모드들에 있을 때, 그 PASID에 대한 가상 어드레스들을 물리적 어드레스들로 변환하는 데 사용되는 하나 이상의 페이지 테이블들을 업데이트할 수 있다. 이는, 예를 들어 특정 특권 상태로, 예를 들어 동작의 하이퍼바이저 또는 감독자 레벨에서 동작할 때, 프로세싱 요소에 의해 가능할 수 있다.
이어서, 단계(255)에 의해 표시된 바와 같이, 스태셔는 임의의 그러한 페이지 테이블 업데이트 전에 특정되었을 동일한 정보를 사용하여 스태시 요청들을 계속 발행할 수 있고, 단계(250)에 의해 수행되었던 리맵핑은 스태셔에 완전히 투명하다.
그러한 리맵핑은 다양한 상이한 방식들로 사용될 수 있다. 예를 들어, 캐시 기반 예 내에서, 이는, 물리적 어드레스 맵핑을 변경함으로써, 캐시의 어느 물리적 데이터 어레이 또는 저장 디바이스가 스태싱된 데이터를 보유하는 데 사용되는지를 변경할 수 있다. 추가로, 피-스태시가 일부 로컬 메모리 맵핑된 어드레스 공간을 갖고, 따라서 예를 들어, 메모리 맵핑된 어드레스 공간에서 하나 이상의 로컬 버퍼들을 확립할 수 있다면, 이러한 접근법은 피-스태시가 후속적인 스태싱된 데이터가 지향되는 새로운 버퍼를 생성할 수 있게 한다.
도 4b는 스태셔의 동작을 변경할 필요 없이 스태시 요청들의 처리에 대해 이루어질 수 있는 다른 조정들을 예시하는 흐름도이다. 단계(260)에 의해 표시된 바와 같이, 스태시 요청들에 사용되는 하나 이상의 타겟 식별자들에 대해, 그 타겟 식별자를 사용하여 발행된 임의의 후속 스태시 요청들을 수신하는 요소를 변경하기 위해, 연관된 타겟 요소는 상호연결 회로부에 의해 참조되는 라우팅 저장소(80) 내에서 변경될 수 있다. 이는 다수의 상황들에서 유용할 수 있다. 예를 들어, 이는, 프로세싱 디바이스(10)가 특정 데이터 프로세싱 작업들을 프로세싱 디바이스(45)에 분담하기로 결정하는 것을 가능하게 할 수 있고, 단지 타겟 식별자와 타겟팅되는 실제 요소 사이의 라우팅 저장소에서의 맵핑을 변경함으로써, 예를 들어, 스태시 데이터가 자신의 로컬 캐시(50)에 저장될 수 있게 하기 위해, 임의의 후속 스태시 요청은 자동으로 프로세싱 디바이스(45)로 재지향될 것이다. 이는, 스태셔의 동작에 대해 어떠한 변경들도 행할 필요 없이 수행될 수 있으며, 실제로, 스태셔는, 단계(265)에 의해 표시된 바와 같이, 원래 제공된 정보를 사용하여 스태시 요청들을 계속 생성한다.
또 추가적인 예로서, 도 4a 및 도 4b의 메커니즘들을 조합함으로써, 스태시 요청들과 연관된 물리적 어드레스 공간 및 그러한 스태시 요청들이 지향되는 실제 타겟 요소 둘 모두를 변경하는 것이 가능하다. 순전히 예시적인 예로서, GPU(60)는 원래, 프로세싱 디바이스(10)를 대신하여 스태시 요청들을 수행하도록 설정될 수 있지만, 프로세싱 디바이스(10)는, 자신이 스태싱된 데이터와 관련하여 특정 후속 프로세싱 작업들을 계산 저장 디바이스(100)에 분담시키기를 원한다고 후속적으로 결정할 수 있다. 이를 달성하기 위해, 프로세싱 디바이스(10)는, GPU에 의해 발행된 스태시 요청들에 의해 사용되는 타겟 식별자가 이제 계산 저장 디바이스(100)에 맵핑되도록 라우팅 저장소가 업데이트되게 할 수 있다. 이어서, 이는 추가로, 비휘발성 저장소(105) 내의 물리적 어드레스 공간을 식별하기 위해 스태시 요청들을 발행할 때 GPU에 의해 사용되는 PASID 값과 연관된 관련 페이지 테이블들의 맵핑을 변경할 수 있다.
따라서, 본 명세서에 설명된 기법들이 스태시 요청들의 처리와 관련하여 상당히 향상된 유연성을 제공하는데, 특히 스태셔의 동작을 조정할 필요 없이 스태시 요청들에 사용되는 타겟 요소 및/또는 물리적 어드레스 공간 둘 모두에 대한 특정한 기본 변경들이 이루어지게 할 수 있는 스태시 요청들의 처리를 위한 가상화된 메커니즘을 제공함이 인식될 것이다. 실제로, 임의의 그러한 변경들은 스태셔의 활동들에 대해 완전히 투명한 방식으로 이루어질 수 있다.
본 출원에서, "...하도록 구성된"이라는 단어들은 장치의 요소가 정의된 동작을 수행할 수 있는 구성을 갖는다는 것을 의미하는 데 사용된다. 이러한 문맥에서, "구성"은 하드웨어 또는 소프트웨어의 상호접속의 배열 또는 방식을 의미한다. 예를 들어, 장치는 정의된 동작을 제공하는 전용 하드웨어를 가질 수 있거나, 프로세서 또는 다른 프로세싱 디바이스가 기능을 수행하도록 프로그래밍될 수 있다. "하도록 구성된"은, 장치 요소가, 정의된 동작을 제공하기 위해 어떤 방식으로든 변경될 필요가 있음을 암시하지는 않는다.
본 발명의 예시적인 실시예들이 첨부 도면들을 참조하여 본 명세서에서 상세히 설명되었지만, 본 발명은 그러한 정확한 실시예들로 제한되지 않으며, 첨부된 청구항들에 의해 한정된 바와 같은 본 발명의 범위 및 사상으로부터 벗어남이 없이 실시예들에서 다양한 변경들, 추가들 및 수정들이 당업자에 의해 이루어질 수 있다는 것이 이해되어야 한다. 예를 들어, 본 발명의 범주로부터 벗어남이 없이 독립 청구항의 특징과 종속 청구항의 특징의 다양한 조합이 이루어질 수 있다.

Claims (16)

  1. 장치로서,
    프로세싱 요소에 의한 액세스를 위해 데이터를 저장하는 데 사용되는 연관된 저장 구조를 갖는 상기 프로세싱 요소;
    상기 프로세싱 요소를 상호연결 회로부에 결합하기 위한 인터페이스;
    상기 저장 구조를 타겟팅하는 스태시(stash) 요청이 상기 상호연결 회로부로부터 상기 인터페이스에서 수신되는 것에 응답하여, 상기 스태시 요청과 연관된 데이터의 블록이 상기 저장 구조 내에 저장되게 하는 스태시 요청 처리 회로부 - 상기 스태시 요청은 메모리 내의 대응하는 물리적 어드레스로 변환할 필요가 있는 주어진 어드레스를 식별하고 또한 어드레스 공간 키를 식별함 -; 및
    상기 스태시 요청에 의해 식별된 상기 어드레스 공간 키에 의존하는 어드레스 변환을 수행함으로써 상기 스태시 요청에 의해 식별된 상기 주어진 어드레스를 상기 대응하는 물리적 어드레스로 변환하기 위한 어드레스 변환 회로부를 포함하고;
    상기 스태시 요청 처리 회로부는 상기 데이터의 블록이 상기 물리적 어드레스와 연관된 상기 저장 구조 내의 위치에 저장되게 하기 위해 상기 어드레스 변환 회로부에 의해 결정된 상기 대응하는 물리적 어드레스에 응답하는, 장치.
  2. 제1항에 있어서, 상기 어드레스 변환 회로부는 메모리 내의 하나 이상의 페이지 테이블들을 참조하여 상기 어드레스 변환을 결정하도록 배열되고, 상기 어드레스 공간 키는 적어도 하나의 페이지 테이블을 식별하기 위해 상기 어드레스 변환 회로부에 의해 사용되는, 장치.
  3. 제1항 또는 제2항에 있어서, 상기 프로세싱 요소는, 적어도 하나의 동작 모드에서, 상기 어드레스 공간 키를 식별하는 후속 스태시 요청들에 의해 식별된 주어진 어드레스들이 대응하는 물리적 어드레스들로 변환되는 방법을 변경하기 위해, 상기 어드레스 공간 키에 따라 상기 어드레스 변환 회로부에 의해 수행되는 상기 어드레스 변환을 수정하도록 인에이블되는, 장치.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 상호연결 회로부에 결합된 다수의 요소들을 상호연결하기 위한 상기 상호연결 회로부를 더 포함하고, 상기 다수의 요소들은 스태시 요청들의 생성기를 포함하고;
    각각의 스태시 요청은 타겟 식별자를 추가로 제공하고;
    상기 상호연결 회로부는 상기 다수의 요소들 각각을 연관된 타겟 식별자와 연관시키기 위한 라우팅 저장소를 포함하고;
    상기 상호연결 회로부는 상기 상호연결 회로부에 의해 상기 스태시 요청이 라우팅될 타겟 요소를 결정하기 위해 상기 라우팅 저장소를 참조하도록 상기 스태시 요청들의 생성기에 의해 생성된 각각의 스태시 요청의 수신에 응답하는, 장치.
  5. 제4항에 있어서, 상기 상호연결 회로부는 상기 다수의 요소들에 의해 액세스가능한 데이터의 일관성을 유지하기 위한 일관성 관리 회로부를 갖고, 상기 스태시 요청 처리 회로부는 상기 스태시 요청과 연관된 상기 데이터의 블록에 대한 일관성을 보장하기 위해 일관성 액션을 수행하도록 상기 일관성 관리 회로부를 트리거하도록 배열되는, 장치.
  6. 제5항에 있어서, 상기 스태시 요청 처리 회로부는, 상기 대응하는 물리적 어드레스가 상기 어드레스 변환 회로부에 의해 결정되면 상기 일관성 액션을 수행하도록 상기 일관성 관리 회로부를 트리거하도록 배열되는, 장치.
  7. 제5항 또는 제6항에 있어서, 상기 스태시 요청 처리 회로부는, 상기 데이터의 블록에 액세스하기 위한 후속 요청을 발행할 수 있는 상기 다수의 요소들 중 임의의 요소가 상기 데이터의 블록의 최신 버전에 액세스할 것임을 확인하기 위해 상기 일관성 관리 회로부로부터 완료 신호가 수신될 때까지 스태시 요청과 연관된 상기 데이터의 블록을 상기 저장 구조에 저장하는 것을 연기하도록 배열되는, 장치.
  8. 제5항 내지 제7항 중 어느 한 항에 있어서, 상기 스태시 요청은, 상기 연관된 데이터의 블록이 상기 저장 구조에 저장되고 상기 저장 구조에 고유하게 저장된 것으로 마킹되게 하도록 배열되고, 상기 일관성 관리 회로부는, 상기 데이터의 블록의 임의의 사본들이 상기 상호연결 회로부에 결합된 요소들에 액세스가능한 임의의 다른 저장 구조들에서 무효화되게 하도록 배열되는, 장치.
  9. 제7항 또는 제8항에 있어서, 상기 완료 신호가 수신되면, 상기 스태시 요청 처리 회로부는, 상기 스태시 요청의 생성기로부터 상기 데이터의 블록을 획득하기 위해 상기 인터페이스를 통해 요청을 발행하도록 배열되는, 장치.
  10. 제4항 내지 제9항 중 어느 한 항에 있어서, 상기 라우팅 저장소는, 주어진 타겟 식별자를 식별하는 후속 스태시 요청들이 라우팅되는 상기 타겟 요소를 변경하기 위해, 상기 주어진 타겟 식별자와 연관된 요소를 변경하도록 수정가능한, 장치.
  11. 제4항 내지 제10항 중 어느 한 항에 있어서, 상기 프로세싱 요소는, 상기 프로세싱 요소의 연관된 저장 구조를 타겟팅하는 스태시 요청들을 생성할 때 상기 스태시 요청들의 생성기에 의해 사용될 상기 어드레스 공간 키 및 주어진 어드레스들의 범위를 상기 스태시 요청들의 생성기에 제공하도록 배열되는, 장치.
  12. 제1항 내지 제11항 중 어느 한 항에 있어서, 상기 프로세싱 요소는 상기 상호연결 회로부에 대한 상기 인터페이스를 통해 상기 메모리에 액세스 요청들을 발행하도록 배열되는, 장치.
  13. 제1항 내지 제12항 중 어느 한 항에 있어서, 상기 연관된 저장 구조는 캐시인, 장치.
  14. 제1항 내지 제12항 중 어느 한 항에 있어서, 상기 연관된 저장 구조는 상기 프로세싱 요소에 액세스가능한 메모리 맵핑된 저장소인, 장치.
  15. 제1항 내지 제14항 중 어느 한 항에 있어서, 상기 주어진 어드레스는 가상 어드레스인, 장치.
  16. 스태시 요청들을 처리하는 방법으로서,
    프로세싱 요소에 의한 액세스를 위해 데이터를 저장하는 데 사용되는 연관된 저장 구조를 갖는 상기 프로세싱 요소를 제공하는 단계;
    상기 프로세싱 요소를 상호연결 회로부에 결합하는 단계;
    상기 저장 구조를 타겟팅하는 스태시 요청이 상기 상호연결 회로부로부터 수신되는 것에 응답하여, 상기 스태시 요청과 연관된 데이터의 블록이 상기 저장 구조 내에 저장되게 하는 스태시 요청 처리 회로부를 이용하는 단계 - 상기 스태시 요청은 메모리 내의 대응하는 물리적 어드레스로 변환할 필요가 있는 주어진 어드레스를 식별하고 또한 어드레스 공간 키를 식별함 -;
    상기 스태시 요청에 의해 식별된 상기 어드레스 공간 키에 의존하는 어드레스 변환을 수행함으로써 상기 스태시 요청에 의해 식별된 상기 주어진 어드레스를 상기 대응하는 물리적 어드레스로 변환하기 위한 어드레스 변환 회로부를 이용하는 단계; 및
    상기 대응하는 물리적 어드레스가 상기 어드레스 변환 회로부에 의해 결정되는 것에 응답하여, 상기 데이터의 블록이 상기 물리적 어드레스와 연관된 상기 저장 구조 내의 위치에 저장되게 하는 단계를 포함하는, 방법.
KR1020237037865A 2021-04-08 2022-02-16 스태시 요청들을 처리하기 위한 장치 및 방법 KR20230164172A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/225,614 US11841800B2 (en) 2021-04-08 2021-04-08 Apparatus and method for handling stash requests
US17/225,614 2021-04-08
PCT/GB2022/050413 WO2022214778A1 (en) 2021-04-08 2022-02-16 Apparatus and method for handling stash requests

Publications (1)

Publication Number Publication Date
KR20230164172A true KR20230164172A (ko) 2023-12-01

Family

ID=80461287

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237037865A KR20230164172A (ko) 2021-04-08 2022-02-16 스태시 요청들을 처리하기 위한 장치 및 방법

Country Status (5)

Country Link
US (1) US11841800B2 (ko)
KR (1) KR20230164172A (ko)
CN (1) CN117099087A (ko)
GB (1) GB2619831A (ko)
WO (1) WO2022214778A1 (ko)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7774522B2 (en) * 2008-11-17 2010-08-10 Applied Micro Circuits Corporation Cache stashing processor control messages
US10037280B2 (en) * 2015-05-29 2018-07-31 Qualcomm Incorporated Speculative pre-fetch of translations for a memory management unit (MMU)
GB2567466B (en) * 2017-10-12 2020-01-22 Advanced Risc Mach Ltd Cache stashing in a data processing system
US10664419B2 (en) * 2017-11-02 2020-05-26 Arm Limited I/O driven data transfer in a data processing network
US10733106B2 (en) * 2017-11-02 2020-08-04 Arm Ltd I/O driven data routing and cache allocation
US11055222B2 (en) * 2019-09-10 2021-07-06 Mellanox Technologies, Ltd. Prefetching of completion notifications and context
US10949292B1 (en) * 2019-10-07 2021-03-16 Arm Limited Memory interface having data signal path and tag signal path
US11422944B2 (en) * 2020-08-10 2022-08-23 Intel Corporation Address translation technologies

Also Published As

Publication number Publication date
US20220327057A1 (en) 2022-10-13
GB202312937D0 (en) 2023-10-11
GB2619831A (en) 2023-12-20
US11841800B2 (en) 2023-12-12
WO2022214778A1 (en) 2022-10-13
CN117099087A (zh) 2023-11-21

Similar Documents

Publication Publication Date Title
US6308246B1 (en) Skewed finite hashing function
US8250254B2 (en) Offloading input/output (I/O) virtualization operations to a processor
US6647466B2 (en) Method and apparatus for adaptively bypassing one or more levels of a cache hierarchy
CN108153683B (zh) 用于在存储器中的地址范围之间传输数据的装置和方法
US6760786B2 (en) Multiprocessing system configured to perform efficient block copy operations
JP3924206B2 (ja) 不均一メモリ・アクセス(numa)データ処理システム
US7363462B2 (en) Performing virtual to global address translation in processing subsystem
JP4085389B2 (ja) マルチプロセッサシステム、マルチプロセッサシステムにおける一貫性制御装置及び一貫性制御方法
US20050005074A1 (en) Multi-node system in which home memory subsystem stores global to local address translation information for replicating nodes
JPH10143482A (ja) エフィシェントな書込み動作を実行するマルチプロセッサ・システム
JPH10149342A (ja) プリフェッチ動作を実行するマルチプロセス・システム
JPH10143476A (ja) プリフェッチ動作を開始するソフトウエアを実行するマルチプロセス・システム
KR20120060230A (ko) 메모리 요청들을 처리하기 위한 시스템들 및 방법들
JPH04227552A (ja) ストアスルーキャッシュ管理システム
US6742103B2 (en) Processing system with shared translation lookaside buffer
CN114238167B (zh) 信息预取方法、处理器、电子设备
EP1611513B1 (en) Multi-node system in which global address generated by processing subsystem includes global to local translation information
JP2000067009A (ja) 主記憶共有型マルチプロセッサ
US8661169B2 (en) Copying data to a cache using direct memory access
US20090158003A1 (en) Structure for a memory-centric page table walker
JP2000339221A (ja) 変換装置のエントリを無効化するシステム及び方法
JPH1091521A (ja) 二重ディレクトリー仮想キャッシュ及びその制御方法
JP6249120B1 (ja) プロセッサ
US11841800B2 (en) Apparatus and method for handling stash requests
CN114218132B (zh) 信息预取方法、处理器、电子设备