KR20220125247A - 일관성 및 비일관성 메모리 요청들에 대한 중재 방식 - Google Patents

일관성 및 비일관성 메모리 요청들에 대한 중재 방식 Download PDF

Info

Publication number
KR20220125247A
KR20220125247A KR1020227023227A KR20227023227A KR20220125247A KR 20220125247 A KR20220125247 A KR 20220125247A KR 1020227023227 A KR1020227023227 A KR 1020227023227A KR 20227023227 A KR20227023227 A KR 20227023227A KR 20220125247 A KR20220125247 A KR 20220125247A
Authority
KR
South Korea
Prior art keywords
memory
inconsistent
requests
coherent
memory requests
Prior art date
Application number
KR1020227023227A
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 KR20220125247A publication Critical patent/KR20220125247A/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
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • G06F11/3062Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations where the monitored property is the power consumption
    • 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
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0653Configuration or reconfiguration with centralised address assignment
    • 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/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • 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/1008Correctness of operation, e.g. memory ordering
    • 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/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)

Abstract

시스템 내의 프로세서는 클라이언트 모듈로부터의 일관성 메모리 요청들을 저장하기 위한 복수의 엔트리들을 갖는 일관성 메모리 요청 버퍼 및 클라이언트 모듈로부터의 비일관성 메모리 요청들을 저장하기 위한 복수의 엔트리들을 갖는 비일관성 메모리 요청 버퍼에 응답한다. 클라이언트 모듈은 일관성 및 비일관성 메모리 요청들을 버퍼링하고, 프로세서 또는 그의 캐시들 중 하나의 하나 이상의 조건들에 기초하여 메모리 요청들을 릴리스한다. 메모리 요청들은 일관성 메모리 버퍼와 연관된 제 1 워터마크 및 비일관성 메모리 버퍼와 연관된 제 2 워터마크에 기초하여 중앙 데이터 패브릭으로 및 시스템으로 릴리스된다.

Description

일관성 및 비일관성 메모리 요청들에 대한 중재 방식
컴퓨터 리소스들을 효율적으로 사용하기 위해, 서버 또는 다른 프로세싱 시스템은 가상화된 컴퓨팅 환경을 구현할 수 있으며, 여기서 프로세싱 시스템은 다수의 가상 머신들 또는 게스트들을 동시에 실행한다. 프로세싱 시스템의 리소스들은 시간-다중화(time-multiplexed) 또는 다른 중재(arbitrated) 방식으로 게스트들에 제공되어, 리소스들은 하드웨어 리소스들의 전용 세트로서 각각의 게스트에 나타난다. 그러나 게스트의 동시 실행으로 인해 각각의 게스트가 무단 액세스에 취약해질 수 있다. 개인 게스트 정보를 보호하기 위해, 가상화 기반 보안(VBS) 및 다른 가상화 보안 메커니즘은 프로세싱 시스템에 어드레스 변환 요구 사항을 포함하는 보안 요구 사항을 부과한다. 예를 들어, VBS는 하이퍼바이저 또는 다른 게스트 관리자가 게스트 운영 체제에 의해 수행되는 어드레스 변환에 더하여, 가상 어드레싱을 위한 어드레스 변환의 추가 계층을 제공할 것을 요구한다. 그러나, 이러한 어드레스 변환 요구들은 프로세싱 시스템 전체에 대한, 일관성 프로브 트래픽(coherency probe traffic)의 양을 증가시키는 것을 포함하여, 메모리 트래픽의 양을 실질적으로 증가시킬 수 있고, 이에 의해 시스템의 전력 소비를 바람직하지 않게 증가시키면서 또한 전체 프로세싱 효율을 감소시킨다.
본 개시는 첨부된 도면을 참조함으로써 당업자에게 더 잘 이해될 수 있고, 많은 특징 및 장점이 명백해질 수 있다. 다른 도면에서 동일한 참조 기호를 사용하는 것은 유사하거나 동일한 항목을 나타낸다.
도 1은 일부 실시예들에 따른 일관성(coherent) 및 비일관성(non-coherent) 뱃치(batch) 제어기들을 갖는 시스템의 블록도이다.
도 2는 일부 실시예들에 따른 일관성 변환 요청들을 위한 중재 방식(arbitration scheme)을 위한 방법을 예시하는 타이밍도이다.
도 3은 일부 실시예들에 따른 별도의 일관성 및 비일관성 메모리 대역폭 모니터들의 블록도이다.
도 4는 일부 실시예들에 따른 일관성 및 비일관성 메모리 요청들에 대한 중재 방식을 위한 방법을 예시하는 흐름도이다.
도 5는 일부 실시예들에 따른 도 1의 시스템의 프로세서의 블록도이다.
도 6은 일부 실시예들에 따른 일관성 및 비일관성 제어기들의 블록도이다.
도 7은 일부 실시예들에 따른 다수의 직접 메모리 액세스(DMA) 클라이언트들을 지원하는 클라이언트 디바이스의 블록도이다.
도 8은 일부 실시예들에 따른 어드레스 변환 시스템의 블록도이다.
도 1-8은 일관성 및 비일관성 메모리 트래픽에 대한 별도의 버퍼들 및 워터마크 임계치들을 구현함으로써 프로세싱 시스템의 상호접속부를 통해 메모리 트래픽을 관리하기 위한 기법들을 개시한다. 이에 의해, 프로세싱 시스템은 상이한 레이트들로, 그리고 상이한 프로세싱 시스템 조건들, 예컨대, 트래픽을 수신하는 프로세서 코어들이 저전력 상태에 있는지 여부에 의존하여 상이한 유형들의 트래픽 (즉, 일관성 및 비일관성 요청들)을 제공한다. 이렇게 하면 전체 시스템 전력 소비가 줄어들고 메모리 성능이 향상된다.
예시하기 위해, 일부 실시예들에서, 프로세싱 시스템은 시스템의 중앙 프로세싱 유닛(CPU), 그래픽 프로세싱 유닛(GPU) 및 시스템 메모리 사이와 같은 상이한 시스템 모듈들 사이에서, 메모리 액세스 요청들 및 일관성 프로브들을 포함하는 메모리 트래픽을 전달하기 위해 상호접속부를 채용한다. GPU는 시스템에서 메모리 요청들을 생성하는 클라이언트 모듈 또는 클라이언트 디바이스의 일 예이다. 메모리 "요청들" 및 "프로브들"은 본 명세서에서 동의어로 사용되며, 여기서 "프로브들" 및 "일관성 프로브들"의 사용은 일반적으로 특정 메모리 값(메모리 위치에서의 데이터)의 일관성 상태를 결정하는 것 또는 판독 또는 기록 메모리 활동을 위한 데이터와 함께 일관성 상태를 전달하는 것을 수반하는 메모리 요청들을 지칭한다. 메모리 트래픽은 크게 두 가지 카테고리들, 즉 상이한 시스템 모듈들 사이에서 일관성이 유지되도록 요구하는 일관성 메모리 트래픽, 및 일관성이 유지되도록 요구하지 않는 비일관성 트래픽으로 나누어진다. 예를 들어, 프로그램들을 실행하는 적절한 기능을 보장하기 위해 CPU와 GPU의 로컬 캐시들 사이에서 일관성이 유지되어야 하기 때문에, CPU와 GPU 사이에서 공유되는 페이지 테이블들을 타겟으로 하는 메모리 요청들은 일관성 트래픽이다. 대조적으로, 프레임 버퍼 데이터가 다른 시스템 모듈들에 의해 액세스되지 않기 때문에, GPU에 의해서만 액세스되는 프레임 버퍼 데이터를 타겟으로 하는 메모리 액세스는 비일관성 트래픽이다. 일관성 메모리 트래픽은 다수의 일관성 프로브들을 생성하는 경향이 있으며, 여기서 데이터의 주어진 세트에 액세스하기 전에, 시스템 모듈의 메모리 제어기는 특정된 일관성 프로토콜에 따라 다른 시스템 모듈들에서의 데이터의 일관성 상태를 결정한다. 그러나, 이들 일관성 프로브들을 서비스하는 것은, 일관성 프로브를 서비스하기 위해 CPU (또는 하나 이상의 다른 모듈들)가 저전력 상태를 종료하도록 요구함으로써 시스템 전력을 소비한다.
전력 소비를 감소시키기 위해, 프로세싱 시스템은 메모리 트래픽이 CPU 또는 그 일부의 전력 상태에 따라 그룹화된 또는 "스터터링된(stuttered)" 방식으로 CPU에 제공되는 통신 프로토콜을 시행한다. 예를 들어, CPU가 저전력 모드에 있을 때, 저전력 모드에 대한 여부와 상관없이 프로세싱 시스템은 임계 양(threshold amount)의 트래픽이 계류중(pending)일 때까지 버퍼에 메모리 트래픽을 홀딩한다. 임계 양은 본 명세서에서 "워터마크" 또는 "워터마크 임계치"로 지칭된다. 워터마크에 도달할 때까지 메모리 트래픽을 홀딩함으로써, 트래픽은 CPU, 캐시들, 상호접속부 등에서 더 효율적으로 프로세싱된다. 그러나, 비일관성 메모리 트래픽은 일관성 프로브들을 생성하지 않기 때문에, 비일관성 메모리 트래픽은 시간 경과에 따른 전력 소비와 관련하여 CPU에 동일한 영향을 미치지 않으므로, 본 명세서에서 더 설명되는 바와 같이, 비일관성 메모리 트래픽에 대한 더 낮은 워터마크 레벨을 사용하는 것이 더 효율적이다. 따라서, 본 명세서에 설명된 기법들을 사용하여, 프로세싱 시스템은 일관성 및 비일관성 메모리 트래픽에 대해 상이한 버퍼들 및 대응하는 상이한 워터마크들을 채용하여, 프로세싱 효율을 개선한다. 모든 메모리 트래픽에 대한 종래의 공유 구조의 사용은 클라이언트 모듈에 걸쳐 그리고 일관성 및 비일관성 메모리 트래픽 사이에서 더 낮은 성능을 초래하며, 이는 개별 유형의 트래픽의 게이팅이 클라이언트 모듈마다 별도로 수행되는 이유이다.
도 1은 전자 디바이스를 대신하여 태스크들을 수행하기 위한 명령어들의 세트들(예를 들어, 컴퓨터 프로그램의 명령어들, 운영 체제 프로세스의 명령어들)을 실행하는 프로세싱 시스템(100)의 블록도이다. 따라서, 상이한 실시예들에서, 프로세싱 시스템(100)은 데스크톱 컴퓨터, 랩톱 컴퓨터, 서버, 스마트폰, 태블릿, 게임 콘솔, 전자책 리더 등과 같은 다양한 상이한 유형들의 전자 디바이스들 중 하나에 통합된다. 명령어 세트의 실행을 지원하기 위해, 프로세싱 시스템(100)은 중앙 프로세싱 유닛(CPU)(110), 시스템 메모리(130), 제1 클라이언트 모듈(140) 및 제2 클라이언트 모듈(150)을 포함한다. CPU(110)는 x86 아키텍처 또는 ARM-기반 아키텍처와 같은 특정 명령어 아키텍처에 따라 범용 명령어를 실행하는 프로세싱 유닛이다. 클라이언트 모듈(140, 150)은 CPU(110)를 대신하여 특정 동작을 수행하기 위한 부가적인 프로세싱 유닛, 엔진 등과 같은 모듈이다. 예를 들어, 일부 실시예에서, 클라이언트 모듈(140)은 그래픽 및 벡터 프로세싱 동작을 실행하는 그래픽 프로세싱 유닛(GPU)이고, 클라이언트 모듈(150)은 그 자신, CPU(110), 또는 하나 이상의 다른 디바이스를 대신하여 입력 및 출력 동작을 실행하는 입력/출력(I/O) 엔진이다. 시스템 메모리(130) 내의 명령어들은 CPU 명령어(133) 및 GPU 명령어(134) 중 하나 이상을 포함한다.
명령어들의 실행을 추가로 지원하기 위해, 프로세싱 시스템(100)은 다수의 레벨들을 갖는 메모리 계층을 포함하고, 각각의 레벨은 메모리 모듈들의 상이한 세트에 대응한다. 예시된 예에서, 메모리 계층은 시스템 메모리(130) 및 CPU(110)에서의 레벨 3(L3) 캐시(112)를 포함한다. 일부 실시예들에서, 메모리 계층은 CPU(110) 및 클라이언트 모듈들(140, 150) 중 하나 이상에서 레벨 1(L1) 및 레벨 2(L2) 캐시들과 같은 추가적인 레벨들을 포함한다.
메모리 계층에 액세스하기 위해, 디바이스(CPU(110) 및 클라이언트 모듈(140, 150) 중 임의의 것)는 메모리 위치에 데이터를 기록하기 위한 기록 요청 또는 메모리 위치로부터 데이터를 검색하기 위한 판독 요청과 같은 메모리 액세스 요청을 생성한다. 각각의 메모리 액세스 요청은 요청에 의해 타겟팅된 데이터의 메모리 위치를 표시하는 메모리 어드레스를 포함한다. 일부 실시예들에서, 메모리 요청은 실행되는 컴퓨터 프로그램들에 의해 사용되는 가상 어드레스 공간 내의 메모리 위치를 표시하는 가상 어드레스로 생성된다. 프로세싱 시스템(100)은 요청에 의해 타겟팅된 데이터를 저장하는 물리적 메모리 위치를 식별하고 액세스하기 위해, 본 명세서에 추가로 설명되는 바와 같이, 가상 어드레스를 물리적 어드레스로 변환한다. 메모리 액세스 요청을 프로세싱하기 위해, CPU(110)는 메모리 제어기(113)를 포함하고, 시스템 메모리(130)는 메모리 제어기(131)를 포함한다. 유사하게, 클라이언트 모듈(140 및 150)은 메모리 액세스 요청을 프로세싱하도록 동작하는 메모리 관리자(145 및 155)를 포함한다.
상이한 디바이스들(CPU(110) 및 클라이언트 모듈들(140, 150))이 데이터의 공유된 세트 상에서 동작하는 것을 보장하기 위해, 메모리 제어기들(113 및 131) 및 메모리 관리기들(145 및 155)(집합적으로 메모리 관리기들로 지칭됨)은 함께 MESI 방식 또는 MOESI 방식과 같은 특정된 일관성 방식을 구현한다. 따라서, 메모리 관리자들은 각각의 메모리 위치의 일관성 상태를 모니터링하고 특정된 일관성 방식에 의해 정의된 규칙들에 기초하여 메모리 위치의 일관성 상태를 조절(adjust)한다.
일관성을 유지하기 위해, 메모리 관리자들 각각은 주어진 메모리 액세스 요청이 일관성으로 유지될 필요가 있는, 본 명세서에서 "일관성 데이터"로 지칭되는 데이터, 또는 본 명세서에서 "비일관성 데이터"로 지칭되는, 시스템(100)에 걸쳐 일관성으로 유지될 필요가 없는 데이터를 타겟팅하는지를 식별한다. 일관성 데이터의 예는, 가상에서 물리적 메모리 어드레스들로 변환하는데 사용되는 페이지 테이블들(예를 들어, 시스템 메모리(130)의 페이지 테이블들(132))을 통해 액세스되는 데이터의 세트인데, 이는 이들 테이블들이 전형적으로 CPU(110)와 클라이언트 모듈들(140 및 150) 사이에 공유되기 때문이다. 비일관성 데이터의 예는 GPU(클라이언트 모듈(140))에 의해 생성된 프레임 버퍼 데이터이며, 그 동작은 CPU 명령어(133) 및 GPU 명령어(134) 중 하나 이상에 기초한다. 비일관성 데이터는 프로세싱 시스템 (100)의 다른 디바이스들에 의해 액세스되지 않는다. 일관성 데이터에 대한 예로서, 메모리 액세스 요청이 일관성 액세스 요청이라는 것을 식별하는 것에 응답하여, 대응하는 메모리 관리자 (145, 155)는 메모리 계층의 상이한 레벨들에서 타겟팅된 일관성 데이터의 일관성 상태를 결정하기 위한 일관성 프로브들의 세트를 생성한다. 프로브들은, 타겟팅된 데이터를 저장하는 임의의 메모리 위치들의 일관성 상태를 식별하고 각각의 위치들로부터의 일관성 상태 정보로 프로브에 응답하는 상이한 메모리 관리자들에 통신된다. 그런 다음, 시작(originating) 메모리 관리자는 일관성 프로브 응답들에 기초하여, 특정된 일관성 방식에 의해 정의된 바와 같은 적절한 동작을 취한다. 데이터는 CPU 명령어(133) 및 GPU 명령어(134) 중 하나 이상을 포함하는 시스템 메모리(130) 내의 하나 이상의 명령어에 의해 동작된다.
시스템(100)에서, 일관성 프로브들 및 메모리 액세스 요청들은 중앙 데이터 패브릭(120)을 통해 상이한 디바이스들과 시스템 메모리(130) 사이에서 통신된다. 중앙 데이터 패브릭(120)은 시스템 메모리(130)로/로부터의 메모리 트래픽(142) 및 클라이언트 모듈들(140, 150)로/로부터의 메모리 트래픽의 적어도 일부를 서비스하는 입력-출력 메모리 관리 유닛(IOMMU)(123)과 통신한다. 예를 들어, IOMMU(123)는 테이블 워커(table walker)로서 동작하고, CPU 캐시들(예를 들어, L3 캐시(112)) 및 시스템(100) 내의 다른 캐시들의 프로브가 현재 일관성 상태를 획득하게 하는 일관성 메모리 요청들의 일부로서 페이지 테이블들(132)에 걸쳐 테이블 워크들을 수행한다. 클라이언트 모듈(140, 150)로/로부터의 메모리 트래픽은 IOMMU(123) 및 메모리 제어기들(113, 131)에 의해 다양한 일관성 상태를 업데이트하는 트래픽 채널(146)을 포함한다. 클라이언트 모듈들(140, 150)로의 그리고 그로부터의 메모리 트래픽은, DMA 트래픽(147)이 일관성 메모리 액세스 요청들이거나 또는 그렇지 않으면 일관성 메모리 액세스 요청들을 생성할 때 시스템 메모리(130) 및 시스템(100) 내의 다른 메모리 캐시들의 콘텐츠들과 관련된 메모리 어드레스 변환 직접 메모리 액세스(DMA) 트래픽(147)을 포함한다. 일부 DMA 트래픽(147)은 일관성 트래픽이고, 일부 DMA 트래픽(147)은 비일관성 트래픽이다.
위에서 언급된 바와 같이, 일부 경우들에서, 일관성 프로브들 및 다른 메모리 트래픽은 CPU(110)와 같은 프로세싱 디바이스에서의 전력 소비를 증가시킨다. 예시하기 위해, 일부 실시예들에서, 프로세싱 시스템 (100)은 임계 시간량 내에 CPU (110)에 의해 어떠한 동작들도 수행되지 않을 것을 검출하는 것과 같은 정의된 시스템 조건들에 응답하여 CPU(110)의 하나 이상의 모듈들 (예를 들어, 코어들 (111) 및 L3 캐시 (112) 중 하나 이상)을 저전력 상태로 배치하기 위해 전력 관리자 (도 1에 도시되지 않음)를 사용한다. 일관성 프로브에 응답하여, 프로세싱 시스템은 프로브를 프로세싱하기 위해 CPU (110)의 하나 이상의 모듈들을 활성 고전력 모드로 복귀시킨다. 따라서, 시간 경과에 따라 분산되는(spread out) 다수의 일관성 프로브들은 CPU(110)의 모듈들이 비교적 많은 시간 동안 활성 모드에서 유지되게 하여, 전력을 소비하게 한다. 따라서, 아래에서 추가로 설명되는 바와 같이, 클라이언트 모듈들(140 및 150)은 중앙 데이터 패브릭(120)에 트래픽을 제공하기 전에, 일관성 프로브들 및 다른 메모리 트래픽을 그룹화, 뱃치(batch), 또는 스터터링한다. 이러한 그룹화는 CPU(110)가 비교적 작고 집중된 시간 기간들에서 프로브들 및 다른 메모리 트래픽을 프로세싱하게 한다. 이것은 차례로 CPU(110)의 모듈들이 저전력 모드에서 유지되는 시간의 양을 증가시킴으로써, 전력을 절약한다. 이 그룹화는 클라이언트 모듈들(140, 150)로부터의 모든 메모리 트래픽에 대해, 클라이언트 모듈들(140, 150)로부터의 모든 DMA 트래픽에 대해, 또는 클라이언트 모듈들(140, 150)로부터의 모든 일관성 DMA 트래픽에 대해 수행된다.
그러나, 위에서 언급된 바와 같이, 비일관성 메모리 트래픽은 일관성 프로브들을 초래하지 않고, 따라서 CPU (110)가 활성 모드에 배치되게 하지 않는다. 예를 들어, 제1 클라이언트 모듈(GPU)(140)은 시스템 메모리(130) 내의 전용 그래픽 프레임 버퍼와 같이 직접 시스템 메모리(130)로/로부터 판독하고 기록한다. 따라서, 그리고 아래에서 추가로 설명되는 바와 같이, 프로세싱 시스템(100)은 일관성 및 비일관성 메모리 트래픽의 통신들을 상이하게 관리하여(예를 들어, 그룹들 및 게이트들), 상이한 유형들의 메모리 트래픽을 상이한 레이트들에서 그리고 상이한 시간들에서 중앙 데이터 패브릭(120)에 제공하고 일관성 및 비일관성 메모리 트래픽에 대해 동일하거나 상이한 크기의 뱃치들에서 그렇게 한다. 설명의 목적들을 위해, 일관성 메모리 트래픽은 특정된 유형의 트래픽이고, 특히, 때때로 또는 그렇지 않으면 일관성 트래픽을 생성하는 페이지 테이블 워크 요청들 또는 하나 이상의 페이지 테이블 워크들로 지칭되거나 이를 포함하는 메모리 어드레스 변환 요청들인 것으로 가정된다. 일부 어드레스 변환 트래픽은 비일관성 트래픽이다. 본 명세서에 설명된 기법들은 다른 유형들의 메모리 트래픽과 구별되는 임의의 유형의 일관성 메모리 트래픽에 적용된다는 것이 이해될 것이다.
각각의 메모리 관리자(145, 155)는 어드레스 변환, 어드레스 변환 테이블 워크 등의 기능을 수행하며, 일종의 메모리 관리 유닛(Memory Management Unit; MMU)으로 동작한다. 클라이언트 모듈들(140, 150)의 일부 실시예들은 가상 관리자(VM)로서의 메모리 관리자(145, 155) 및 하나 이상의 대응하는 변환 룩-어사이드 버퍼들(TLBs)(명확성을 위해 도시되지 않음)를 사용하여 가상-물리적 어드레스 변환들을 수행한다. 예를 들어, 일부 경우에, VM 및 하나 이상의 TLB들은 각각의 클라이언트 모듈(140, 150)에서 수신된 메모리 액세스 요청에 포함되거나 클라이언트 모듈(140, 150) 자체에 의해 생성되는 가상 어드레스로부터 도메인 물리적 어드레스를 생성하는 제1 어드레스 변환 계층의 일부로서 구현된다. VM 및 TLB들의 일부 실시예들은 클라이언트 모듈들(140, 150) 외부에서 구현된다. 편의상 도시되지 않았지만, 클라이언트 모듈들(140, 150)은 또한 다양한 메모리 요청들을 홀딩하기 위해 어드레스 변환 버퍼들을 포함하고 사용한다. 클라이언트 모듈 변환 버퍼들은 종종 페이지 테이블 계층 구조의 모든 계층을 홀딩할 수 없다.
클라이언트 모듈들(140, 150)은 또한 하나 이상의 클라이언트 모듈 서비스 품질(QoS) 요구사항들을 충족시키기 위해 물리적으로 가능한 페이지 테이블들(132)의 특정 양의 프리페칭을 수행한다. 예를 들어, QoS 요구사항은 미리 결정된 양의 시간 내에 최소 수의 DMA 요청들을 성공적으로 프로세싱하고 있다. 프리페칭은 클라이언트 모듈들(140, 150)에 대한 프리페치 메모리 요청들에 의해 수행되고, 이들 요청들은 비일관성 및 일관성 유형들의 프리페치 메모리 요청들일 수 있다. 프리페칭은 각각의 메모리 관리자(145, 155)의 프리페치 버퍼 크기의 대상인 프리페칭 정책에 따라 수행된다. 프리페치 버퍼는 액세스가능한 데이터의 속성(예를 들어, 데이터가 특정 메모리에서 연속 또는 연속 범위에 있는지 여부)에 의존하는 데이터에 대한 것이다.
동작시, 클라이언트 모듈들(140, 150)은 상이한 버퍼를 사용하여 메모리 액세스를 버퍼링한다. 메모리 일관성 상태를 수반하는 일관성 메모리 액세스들은 일관성 버퍼들 (141, 151)에서 버퍼링된다. 시스템 메모리(130)를 수반하는 몇몇 유형들의 DMA 명령어들을 포함하여 일관성 상태를 수반하지 않는 비일관성 메모리 액세스들은 비일관성 버퍼들(142, 152)에서 버퍼링된다. 프리페치 메모리 요청들 및 디맨드 메모리 요청들 둘 모두는 그들의 일관성/비일관성 특성에 따라 각각의 버퍼들(141, 151, 142, 152) 각각에서 버퍼링되고, 이들 버퍼들은 명확성을 위해 예시되지 않은 각각의 클라이언트 모듈 메모리 또는 다른 구조에 있다. 예로서, 디맨드 메모리 요청들(demand memory requests)은 시스템이 동작함에 따라 실질적으로 실시간으로 지연 없이 생성 및 릴리스되는 요청들이다. 클라이언트 모듈들(140, 150) 내의 메모리 명령어들 또는 "요청들"은 각각 비일관성 및 일관성 메모리 동작들에 대한 비일관성 및 일관성 모니터들의 동작에 기초하여 실행을 위해 버퍼링되고 릴리스되며(released), 여기서 모니터들은 본 명세서에서 추가로 설명되는 바와 같이, 각각 일관성 뱃치 제어기들(143, 153) 및 비일관성 뱃치 제어기들(144, 154)의 일부이다. 메모리 요청들은 뱃치로 발송되거나 릴리스된다. 클라이언트 디바이스 (140, 150)로부터 릴리스된 각각의 뱃치는 비일관성 메모리 요청들의 세트 및 일관성 메모리 요청들의 세트를 포함할 수도 있거나, 또는 단지 하나의 유형 또는 다른 유형일 수도 있다. 대체로, 일관성 뱃치 제어기들(143, 153)은 필요에 따라 CPU(110) 및 그의 컴포넌트들, 및 시스템(100) 내의 다른 컴포넌트들의 상태들을 추적한다. 어드레스 변환들은 클라이언트 모듈 메모리 내의, 시스템 메모리(130) 내의, 또는 시스템(100) 내의 메모리들의 조합에 있는 클라이언트 메모리 어드레스 테이블들의 세트와 같은 특정 메모리 어드레스 테이블들에 대해 수행된다. 공유된 시스템 메모리(130)에서의 어드레스 변환 테이블 워크는 일관성일 수 있고, (존재한다면) CPU에 캐싱될 수 있고, 따라서 L3 캐시(112)와 같은 캐시들을 프로빙하는 것을 필요로 한다.
비공유된 메모리 위치들 및 일부 직접 액세스 메모리 위치들에 대해, 비일관성 뱃치 제어기들 (144, 154)은 각각의 비일관성 임계치에 대해 비일관성 버퍼들 (142, 152)에서 큐잉되거나(queued) 버퍼링되는 임의의 비일관성 어드레스 변환 요청들을 포함하는 비일관성 요청들을 게이팅(gating) 또는 스로틀링(throttle)한다. 유사한 방식으로, 일관성 뱃치 제어기들(143, 153)은 각각의 클라이언트 모듈(140, 150)이 생성하는 일관성 버퍼들(141, 151)에 큐잉되거나 버퍼링되는 메모리 프로브 요청들을 게이팅 또는 스로틀링한다. 일관성 뱃치 제어기들 (143, 153)은 시스템 (100)의 다른 컴포넌트들 중 하나 이상으로 지향되는 메모리 프로브 요청들을 게이팅 또는 스로틀링한다. 일관성 프로브들은 각각의 일관성 임계치에 대해, CPU(110) 및 그 컴포넌트들의 상태들, 및 시스템 (100)에서의 임의의 다른 복사본의 상태들 중 하나 이상의 상태들에 응답한다.
도 2는 일부 실시예들에 따른 일관성 변환 메모리 요청들을 위한 중재 방식을 위한 방법(200)을 예시하는 타이밍도이다. 시스템(예를 들어, 시스템(100))에서, 방법(200)의 단계들은 CPU(110) 및 L3 캐시(112)와 같은 CPU 캐시들과 같은 컴포넌트들의 특정 상태들에 따라 수행된다. 다양한 컴포넌트들의 상태들은 시간이 수평축(221)을 따라 마킹되는 시간에 따라 변화한다. 방법(200)에 수반되는 메모리 요청들은 둘 모두 일관성이 있고 어드레스 변환을 필요로 한다. 예를 들어, 일부 DMA 요청이 이 범주에 속한다.
참고로, 일부 DMA 유형의 메모리 요청들을 포함하는 일관성 변환 요청들의 종래의 타이밍은 도면의 상부 부분(210)에 예시되고 "일관성 변환 요청들의 뱃칭 없음"으로 표기된다. 종래 타이밍의 제1상태(201)에서, 코어(111) 중 하나 또는 코어 콤플렉스와 같은 코어는 전력 공급 상태로 유지되고 방법(200)에서 최대 전력으로 라벨링된다. 코어와 연관된 L3 캐시는 또한 비-전력 절약 상태에서 전원이 공급된 상태로 유지된다. 종래의 방식의 제1 상태(201)에서의 코어 및 L3 캐시는 뱃칭 없이 일관성 및 비일관성 메모리 요청들을 계속 수신하고 서비스한다. 제2 상태(202)에서, 시스템(100)은 코어를 저전력 상태로 배치하고, L3 캐시는 캐시 일관성 상태들 및 콘텐츠들이 코어(111)에 의해 변경되지 않은 채로 유지되는 보존 전용 모드(retention only mode)로 배치된다. 종래의 방식의 제2 상태(202)에서의 코어 및 L3 캐시는 일관성 및 비일관성 메모리 요청들을 계속 수신하고 서비스한다. 제3 상태(203) 및 제4 상태(204)에서, 시스템(100)은 코어를 저전력 상태로 유지한다. 그러나, 제3 상태(203) 및 제4 상태(204)에서, L3 캐시는 인커밍 일관성 요청들(예를 들어, 일관성 프로브들)을 수신 및 서비스하기 위해 보존 모드를 종료한다. 제5 상태(205)에 의해 표현되는 바와 같이, 코어(111)를 저전력 상태에 배치한 이후의 특정 시간에, 예컨대 상대적인 CPU 비활동 시간 동안, L3 캐시는 플러싱되고 중앙 데이터 패브릭(DF)(120)의 관련 부분들은 코어(111) 및 그의 지원 구조체들이 그들의 저전력 상태에 있는 동안 시스템에 의한 전력 소비를 추가로 보존하기 위해 전력 게이팅된다.
종래의 방식 대신에, 일관성 변환 요청들에 대한 배칭 방식(batching scheme)이 구현되고 도면의 하부 부분(220)에 예시된다. 이 방식은 "일관성 변환 요청들의 뱃칭"으로 명칭된다. 타이밍의 관점에서, 제 1 뱃칭 상태 (211)에서, 코어 또는 코어 콤플렉스는 제 2 뱃칭 상태 (212)에 도시된 바와 같이 저전력 상태로 배치될 때까지 최대 전력에 있다. 이 제 2 상태 (212)에서, 컴포넌트들은 일관성 및 비일관성 메모리 요청들을 계속 수신하고 서비스한다. 예를 들어, 일관성 변환 요청들 둘 모두가 서비스되고, 직접 비디오 데이터 요청들이 시스템(100)에 의해 서비스된다. 그러나, 시스템(100)은 제1 클라이언트 모듈(140)에 대한 버퍼들(141, 142) 및 뱃치 제어기들(143, 144) 중 하나 이상의 동작에 기초하여 메모리 어드레스 일관성 변환 요청을 계속 뱃칭(batch)하거나 뱃칭하기 시작한다. 이는 제2 클라이언트 모듈(150)의 각각의 컴포넌트(151-155)에 의해서도 동일하게 수행된다.
특정 시간 또는 특정 임계 수의 일관성 변환 요청에 도달할 때, 제3 뱃칭 상태(213)에서, 시스템은 일관성 변환 요청을 릴리스하고, L3 캐시(112)는 일관성 변환 요청(방법(200)에서 "변환"으로 라벨링됨)을 서비스하기 위해 보존 모드를 종료한다. 제4 상태(214)에서, L3 캐시(112)는 전력을 보존하기 위해 보존 모드로 유지되거나 보전 모드로 복귀하고, 임의의 인커밍 요청들(예를 들어, 일관성 프로브들)은 후속 상태에서 계속 뱃칭되고 릴리스된다. 따라서, 제2 상태(212) 및 제4 상태(214) 중 하나 이상에서, 시스템(100)은 적어도 변환 요청들을 뱃칭함으로써 전력 소비를 절약한다. 제5 상태(215)에 의해 표현되는 바와 같이, 코어(111)를 저전력 상태에 배치한 후의 특정 시간에, L3 캐시는 플러싱되고, 중앙 DF(120)의 관련 부분들은 전력 게이팅되어, 전력 절약을 추가로 증가시킨다.
도 3은 일부 실시예들에 따른 별도의 일관성 및 비일관성 뱃치 제어기들(310, 320)의 블록도(300)이다. 각각의 뱃치 제어기들(310, 320) 중 하나는 시스템(100) 내의 각각의 클라이언트 모듈들(140, 150)에 한 쌍의 모니터로서 제공된다. 일부 실시예들에 따르면, 본 명세서에서 추가로 설명되는 바와 같이 각각의 클라이언트 모듈(140, 150)의 각각의 데이터 프로세싱 또는 데이터 생성 유닛에 한 쌍의 뱃치 제어기들(310, 320)이 제공된다. 뱃치 제어기들(310, 320)은 특정 클라이언트 모듈에 대해 시스템(100) 내의 메모리 요청들의 각각의 수들을 추적한다.
일부 실시예들에 따르면, 각각의 뱃치 제어기(310, 320)는 프리페치 및 디맨드 요청들(301, 311) 둘 모두를 추적 또는 모니터링한다. 비일관성 뱃치 제어기(310)는 요청들(301)을 뱃칭(그룹화)하고 일관성 뱃치 제어기(320) 및 그 일관성 긴급 임계치 (313)와 동일하거나 상이한 긴급 임계치 (303)에서 긴급(302)로서 요청들(301)을 릴리스한다. 일관성 뱃치 제어기(320)는 요청들(311)을 뱃칭하고 일관성 긴급 임계치(313)에 도달하거나 초과할 때 요청들을 긴급(312)으로서 릴리스한다. 일부 실시예들에서, 뱃칭은 모든 변환 트래픽 또는 모든 DMA 변환 트래픽에 대해 수행된다.
특정 릴리스 타이밍은 방법(200)의 상태들에 의해 표현되는 시간 윈도우의 끝에서 또는 각각의 임계치를 충족하거나 초과하는 것과 같은 특정 모니터링 이벤트의 검출시에 행해진다. 뱃치 제어기들(310, 320)은 각각의 요청 채널들 상에서 요청들의 뱃치의 긴급성 또는 릴리스를 어써트(assert)한다. 각각의 뱃치 제어기(310, 320)는 버퍼들(310, 320) 내의 요청들(301, 311)의 각각의 실제 수들인 그 자신의 각각의 일관성 및 비일관성 버퍼 워터마크들을 갖는다. 일관성 및 비일관성 워터마크들이 그들 각각의 긴급 임계치들 (303, 313)에 도달하거나 또는 초과할 때, 요청들의 뱃치(batch)가 완료를 위해 발송된다. 즉, 뱃치 제어기(310, 320)가 그것의 메모리 요청 버퍼에서 다수의 버퍼링된 일관성 또는 비일관성 메모리 요청들을 검출할 때, 뱃치 제어기(310, 320)는 하나 이상의 추가적인 동작들을 취한다.
도 4는 시스템(100)과 같은 시스템에서 수행될 일부 실시예들에 따른 일관성 및 비일관성 메모리 요청들에 대한 중재 방식을 위한 방법(400)을 예시하는 흐름도이다. 방법(400)은 시스템 내의 클라이언트 모듈(예를 들어, 클라이언트 모듈(140))의 제1 DMA 클라이언트와 같은 DMA 클라이언트 및 버퍼들(141, 142) 및 뱃치 제어기들(143, 144)의 동작을 예시한다. 메모리 액세스 요청들은 DMA 클라이언트 또는 클라이언트 모듈(140, 150)에 의해 생성된다. 블록(401)에서, 시스템은 클라이언트 모듈로부터 메모리 액세스 요청을 수신한다.
블록(402)에서, 시스템은 프로세서 코어 및 그 프로세서 캐시가 각각 활성 전력 상태(비-저전력 상태)에 있는지 여부를 결정한다. 그렇다면, 블록(403)에서, 시스템(100)은 메모리 요청들을 뱃치하지 않는다.
블록들(402 및 403)과 관련하여, 시스템(100)은 복수의 방식들 중 하나로 프로세서 코어(111) 및 그 캐시(112) 중 하나 이상의 전력 상태를 결정한다. 예를 들어, 클라이언트 모듈(140)과 관련하여, 클라이언트 모듈(140)의 뱃치 제어기들(143, 144) 각각은 프로세서 코어(111)가 특정 전력 상태(예를 들어, 활성 전력 상태, 저전력 상태)에 있다는 제1 신호를 수신한다. 이 신호에 기초하여, 시스템은 블록들(403, 404) 중 하나로 진행한다. 신호가 활성 또는 최대 전력 상태를 참조할 때, 뱃치 제어기들(143, 144) 및 버퍼들(141, 142)은 (클라이언트 모듈(140)에 대한) 메모리 관리자(145)와 협력하여 동작하고, 활성 전력 상태에 대한 신호의 부재는 본 명세서에 추가로 설명되는 바와 같이 뱃칭 및 정렬을 야기한다.
정렬과 관련하여, 클라이언트 모듈(140)은 동일한 뱃치에서 임의의 현재 버퍼링된 비일관성 메모리 요청들(예를 들어, DMA 메모리 요청들) 중 적어도 일부 및 적어도 일부 일관성 메모리 요청들(예를 들어, 캐시 일관성 프로브들)을 릴리스한다. 릴리스는 예를 들어, 클라이언트 모듈(140) 또는 (하나 이상의 임계치들(303, 313)과 관련된 임계치 이벤트에 대한) 그 컴포넌트, 또는 CPU(110) 또는 (방법(200)에서의 상태 이벤트 또는 상태 변화에 대한) 코어(111) 또는 코어 콤플렉스와 같은 그 컴포넌트에 의해 생성된 릴리스 신호에 기초한다. 예로서, 긴급 임계치(313)가 교차되어 일관성 요청들과 함께 비일관성 요청들을, 만약 있다면, 릴리스할 때, 또는 컴포넌트 전력 상태 변화가 CPU(110)에서와 같이 검출되거나 시그널링될 때, 릴리스가 발생한다. 일부 실시예들에서, 요청들의 정렬은 클라이언트 모듈(140)의 동작의 시간 윈도우의 에지에서와 같이 일관성 메모리 요청들과 비일관성 메모리 요청들의 정렬이다. 본 명세서에서 참조된 "정렬"은 구체적으로 표시되지 않는 한 일관성 메모리 요청들의 타이밍을 비일관성 메모리 요청들과 정렬하거나 조정(coordinating)하는 것이 아니다. 메모리 요청들의 버퍼링 및 릴리스를 위한 동작의 시간 윈도우(예를 들어, 상태들(211 내지 215) 중 하나로 표현됨)는 시스템(100), 중앙 데이터 패브릭(120), 클라이언트 모듈(140, 150) 또는 CPU(110)의 동작의 다수의 클록 사이클들을 포함한다.
블록(404)에서, 프로세서 코어 및 그 캐시가 저전력 상태에 있거나 저전력 상태에 대해 스케줄링될 때, 뱃칭이 수행되고 특정 메모리 요청들은 시스템(100) 내의 다른 클라이언트들로부터의 요청들과 정렬된다. 예를 들어, 시스템은 클라이언트의 일관성 요청들을 뱃칭하며, 비일관성 요청들을 뱃칭하며, 클라이언트로부터의 비일관성 요청들을 동일한 클라이언트의 일관성 요청들과 정렬한다. 뱃칭은 각각의 요청들을 버퍼링하고 그룹의 요청들을 릴리스하는 것을 포함한다. 예를 들어, 버퍼링은 제1 버퍼에서 비일관성 요청들 및 일관성 요청들을 버퍼링하는 것을 포함한다. 다른 예에서, 버퍼링은 제 1 버퍼 (예를 들어, 비일관성 버퍼 (142))에서 비일관성 요청들을 버퍼링하는 것 및 제 2 버퍼 (예를 들어, 일관성 버퍼 (141))에서 일관성 요청들을 버퍼링하는 것을 포함한다.
블록(404)에 후속하여, 시스템(100)은 프로세서 코어 및 그 캐시가 저전력 상태에 있을 때 추가 동작들을 수행한다. 블록(405)에서 시작하여 블록(407)을 통해, 블록도(300)와 관련하여 설명된 바와 같이 뱃치 제어기(143, 144)의 동작에 기초하여 특정 동작들이 수행된다. 블록(405)에서, 시스템 또는 클라이언트는, 비일관성 버퍼에서의 비일관성 클라이언트 메모리 요청들의 비일관성 워터마크 (현재 레벨)가 긴급 비일관성 워터마크 임계치 미만이거나 그렇지 않으면 이를 교차할 때 비일관성 요청들에 대한 긴급성을 시그널링한다. 일 예로서, 비일관성 워터마크는 비일관성 DMA 메모리 동작 또는 비일관성 공유 메모리 동작에 대한 비일관성 어드레스 변환 워터마크 임계치이다. 즉, 충분한 비일관성 요청들이 시간 단위로 완료되고 있지 않을 때, 비일관성 요청들은 시스템이 중앙 데이터 패브릭(120)을 통해 적시에 클라이언트(140, 150)로부터의 비일관성 요청들을 완료하도록 긴급성 표시로 완료를 위해 제출된다.
블록406에서, 시스템 또는 클라이언트는 또한 일관성 버퍼 내의 일관성 클라이언트 메모리 요청들의 일관성 워터마크 (현재 레벨)가 긴급 일관성 워터마크 임계치를 초과하거나 교차할 때 일관성 요청들에 대한 긴급성을 시그널링한다. 예를 들어, 긴급 일관성 워터마크 임계치는 프로브 워터마크 임계치이다. 긴급 비일관성 워터마크 임계치는 긴급 일관성 워터마크 임계치와 동일하거나 상이한 값을 취하며, 임계치들은 일관성 및 비일관성 버퍼들에 대해 서로 독립적으로 동작한다. 긴급성은 일관성 및 비일관성 요청들에 대한 각각의 요청 채널 상에서 어써트된다. 임계치들은 클라이언트 모듈(140, 150), 중앙 데이터 패브릭(120), CPU(110) 및 시스템 메모리(130) 중 하나 이상과 같은 시스템(100)의 컴포넌트들 중 하나의 각각의 레지스터에 저장된다.
블록(407)에서, 제한된 프로브 메모리 대역폭 및 일관성 메모리 요청들의 높은 또는 비교적 높은 레이트로 실행되는 것과 같은 특정 시스템 또는 소프트웨어 애플리케이션에 대해, 시스템은 일관성 메모리 요청들에 대한 시간 단위 당 또는 그룹 당 특정 대역폭 상한(bandwidth cap) 또는 최대치를 설정한다. 이 상한은 특정 클라이언트 모듈(140, 150)에 대해서와 같이 시스템(100)에서 일관성 메모리 요청 활동의 양을 검출하는 것에 응답하여 수행된다. 이 상한은 특정 클라이언트 모듈(140, 150)로부터 시스템(100)에서 시간 경과에 따라 프로브 요청들을 분산시키고 그에 의해 일관성 메모리 대역폭을 더 보수적으로 소비하는데 유용하다. 블록(408)에서, 시스템(100)은 프로세서 캐시(112)가 플러싱되는지 여부를 결정한다. 그렇다면, 뱃치들에서의 버퍼링 및 릴리스는 더 이상 블록들(404 내지 407)에서와 같이 수행되지 않는다. 대신에, 블록(409)에서, 일관성 및 비일관성 요청들은 패브릭 스터터 효율을 최대화하기 위해 함께 뱃칭된다. 이러한 캐시가 플러싱되고 일관성 메모리 요청을 제공하기 위한 컨텍스트 정보가 없기 때문에 CPU 캐시는 고려되지 않는다. 일부 시스템들에서, 뱃칭은 프로세서 캐시(112)가 플러싱되었을 때 더 이상 실질적인 전력 절약을 제공하지 않는다. 프로세서 캐시(112)가 플러싱되지 않았다면, 블록(404 내지 407)에서와 같은 활동은 스케줄링된 캐시 플러시까지 또는 프로세서 코어(111) 및 그의 L3 캐시(112)가 저전력 모드로부터 릴리스될 때까지(예를 들어, 최대 전력 모드로 다시 배치됨) 계속된다.
방법(400)은 일관성 및 비일관성 메모리 요청들을 생성하는 임의의 디바이스에 적용가능하다. 도시되지 않았지만, 시스템(100)의 하나의 상태는 프로세서 코어(111)가 저전력 상태에 있고 그의 L3 캐시(112)가 활성 전력 상태에 있을 때 발생한다는 것이 이해된다. 이러한 상태는 다양한 메모리 캐시가 메모리 요청을 서비스하는 공통 상태이다. 동작들은 블록(404)에서와 같이 시스템(100)에서 계속되고, 시간이 지남에 따라, L3 캐시(112)는 도 2를 참조하여 설명된 바와 같이 전력 소비를 보존하기 위해 저전력 또는 비활성 상태로 일시적으로 배치될 기회를 갖는다. 대체로, 방법(400)을 수행하는 시스템의 다양한 컴포넌트들은 그 변형들을 포함하는 블록들(401-409)의 다양한 활동들을 수행하는 회로부를 포함하는 것으로 이해된다.
도 5는 일부 실시예들에 따른 시스템(100)의 CPU(110)의 블록도이다. L3 메모리 캐시(112) 및 메모리 제어기(113) 외에, CPU(110)는 전력 관리자(517) 및 제1 및 제2 코어 콤플렉스(521, 522)를 포함한다. 제1 코어 콤플렉스(521)는 제1 프로세싱 코어(511), 제1 레벨(L1으로 라벨링됨) 메모리 캐시(513), 및 제2 레벨(L2로 라벨링됨) 메모리 캐시(515)를 포함한다. 제2 코어 콤플렉스(522)는 제2 프로세싱 코어(512), 제2 L1 메모리 캐시(514), 및 제2 L2 메모리 캐시(516)를 포함한다. L3 메모리 캐시(112)는 코어 콤플렉스(521, 522)에 걸쳐 공유된다. 적어도 L3 캐시(112)는 클라이언트 모듈들(140, 150)이 그들 각각의 메모리 요청들을 위해 사용하는 CPU 일관성 콘텍스트의 일부이다. 일부 실시예들에서, 적어도 L2 및 L3 캐시는 CPU 일관성 콘텍스트의 일부이다. 제1 및 제2 코어 콤플렉스(521, 522) 각각은 적어도 전력 공급 상태와 저전력 상태 사이에서 전력을 제공하는 관점에서 독립적으로 제어된다. 코어 콤플렉스(521, 522)로의 전력은 예를 들어 전력 관리자(517)에 의해 제어된다. 다른 실시예들에서, 전력은 각각의 코어 콤플렉스(521, 522)에 대해 제공된 각각의 전력 관리자에 의해 관리된다. CPU(110)가 과중한 작업부하 하에 있지 않을 때, 코어 콤플렉스들(521, 522) 중 하나 또는 둘 모두는 전력 관리자(517)의 동작에 의한 것과 같이 전력 소비를 감소시키기 위해 저전력 상태로 배치된다.
하나 또는 둘 모두의 콤플렉스(521, 522)가 저전력 상태에 있을 때, 클라이언트 모듈(140, 150)은 시스템 메모리(130)로부터 판독하고 그에 기록하도록 여전히 동작할 수 있고, 그에 의해 CPU(110)의 캐시들 내의 엔트리들의 현재 일관성 상태를 갖는 것으로부터 여전히 이점을 얻을 수 있다. 미리 결정된 시간 후에, 저전력 코어 콤플렉스와 연관된 캐시들 중 하나 이상의 캐시에서의 엔트리들은 데이터 및 그 내부의 명령어들이 오래되고(stale) 리프레시될 필요가 있다고 가정됨에 따라 플러싱된다. 때때로, 중앙 데이터 패브릭(120)은 CPU 상태를 클라이언트 모듈들(140, 150)에 통신한다. CPU 상태는 CPU(110)의 활성 또는 저전력 상태(또는 코어 콤플렉스들(521, 522) 각각에 대한 활성 또는 저전력 상태) 및 CPU(110)의 하나 이상의 캐시들이 플러싱되는지 여부를 포함하는, 이에 대한 캐시 상태를 포함한다. 예를 들어, CPU 상태는 메모리 관리자(145, 155)에 통신된다. CPU 또는 프로세서 상태에 기초하여, 각각의 제어기들(143, 144, 153, 154)은 본 명세서에 추가로 설명되는 바와 같은 방식 또는 스케줄과 일치하는 클라이언트 모듈들(140, 150)의 일관성 및 비일관성 메모리 요청들의 정렬 및 릴리스를 트리거한다. 상태는 프로세싱 동안 사용되는 상태 정보를 포함한다. 예를 들어, 저전력 상태(코어(511, 512) 또는 코어 콤플렉스(521, 522)가 오프라인임)에 있고 CPU 캐시들(캐시들(112, 515, 516) 중 하나 이상)이 플러싱되지 않은 상태에 있을 때, 이 상태 동안 CPU(110)에 발송된 일관성 메모리 프로브는 하나 이상의 저전력 캐시들을 그의 보존 상태로부터 벗어나게 하고 프로브는 중앙 데이터 패브릭(120)을 트리거하여 CPU 캐시들과 통신한다. 이 프로세스 동안, 특정 메모리 요청들은 CPU 캐시들이 메모리 어드레스 변환 요청들을 서비스하기 위해 캐시 보존 (저전력) 상태에서 벗어나는 시간을 감소시키기 위해 함께 뱃칭된다.
도 6은 클라이언트 모듈(610) 내의 일부 실시예들에 따른 비일관성 및 일관성 뱃치 제어기들(144, 143)의 블록도이다. 비일관성 뱃치 제어기 (144)는 비일관성 (메모리 어드레스) 워터마크들의 세트(601), 비일관성 워터마크 임계치들의 세트(602), 및 시스템(100)에서의 클라이언트 모듈들에 대한 모니터 로직을 포함하는 (비일관성) 뱃치 제어 로직(603)을 포함하며, 이에 의해 비일관성 (예를 들어, 비일관성 변환) 요청들이 모니터링된다.
일관성 뱃치 제어기(143)는 일관성 워터마크들의 세트(611), 일관성 워터마크 임계치들의 세트(612), 및 시스템(100) 내의 클라이언트 모듈들에 대한 모니터 로직을 포함하는 (일관성) 뱃치 제어 로직(613)을 포함한다. 뱃치 제어로직(603, 613)은 각각의 워터마크(601, 611)(메모리 요청의 수)를 특정 클라이언트 모듈로부터의 그 매칭 워터마크 임계치(602, 612)와 비교한다. 예를 들어, 뱃치 제어로직은 시스템(100) 내의 클라이언트 모듈들(140, 150) 각각에 대해 제공된다. 용어 워터마크가 본 명세서에서 사용되지만, 워터마크는 각각의 뱃치 제어로직(603, 613)에 의해 모니터링되는 메모리(예를 들어, 일관성, 비일관성, 변환, 프로브) 요청들의 현재 수를 지칭한다.
IOMMU(123)는 어드레스 변환기(621) 및 하나 이상의 변환 룩-어사이드(look-aside) 버퍼(TLB)(622)를 포함한다. 어드레스 변환기(621)는 일반적으로 테이블 워커(table walker)(도시되지 않음)로 지칭되거나, 그렇지 않으면 이를 포함하며, 이에 의해 어드레스 변환기(621)는 (모듈 또는 디바이스) 가상 메모리 어드레스를, 시스템 메모리(130)의 페이지 테이블들(132)과 같은 특정 페이지 테이블들을 워크함으로써 당업자들에 의해 이해되는 바와 같이, 물리적 메모리 내의 어드레스와 같은 물리적 메모리 어드레스로 변환한다. 프로세싱 시스템(100)에서 명령어들(예를 들어, CPU 명령어(133), GPU 명령어(134))을 실행하는 각각의 프로세스는 가상 어드레스들을 사용할 때 대응하는 페이지 테이블(132)을 갖는다. 프로세스에 대한 페이지 테이블(132)은 프로세스에 의해 사용되고 있는 디바이스-생성(예를 들어, 가상) 어드레스들을 시스템 메모리(130) 내의 물리적 어드레스들로 변환한다. 예를 들어, IOMMU(123)는 페이지 테이블(132)의 테이블-워크(table-walk)를 수행하여 메모리 액세스 요청에서의 어드레스의 변환을 결정한다. IOMMU(123)에 의해 빈번하게 사용되는 변환들은 빈번하게 요청되는 어드레스 변환들을 캐싱하는데 사용되는 시스템 메모리(130) 내의 TLB(622) 또는 TLB에 저장된다. 엔트리들은 TLB 교체 정책에 따라 새로운 엔트리들을 위한 공간을 만들기 위해 TLB(622)로부터 제거된다. TLB(622)는 IOMMU(123)의 통합된 부분으로서 도시된다. 그러나, 다른 실시예들에서, TLB(622)는 IOMMU(123)에 의해 액세스가능한 별도의 구조 및 컴포넌트로 구현된다.
클라이언트 모듈들(140, 150)에 대해, 중앙 데이터 패브릭(120) 및 IOMMU(123)는 시스템(100)의 다른 부분들에 변환 인터페이스를 제공한다. 일부 실시예들에서, 클라이언트 모듈들(140, 150)은 상당한 양의 IOMMU 트래픽을 포함하는 상당한 양의 메모리 트래픽을 생성하는 고 대역폭 유형의 디바이스들이다. 명확성을 위해 예시되지 않았지만, 중앙 데이터 패브릭(120)은 클라이언트 모듈들(140, 150) 및 시스템(100)의 다른 컴포넌트들과 통신하기 위한 시스템 제어기 및 PCIe 제어기를 포함할 수 있는 주변 제어기들로서 하나 이상의 버스 제어기들을 포함한다. 클라이언트 버스 제어기는 입력/출력(I/O) 허브 및 버스에 양방향으로 연결되고 다양한 컴포넌트 간의 통신을 용이하게 한다. I/O 허브들을 통해, 다양한 컴포넌트들은 예를 들어, 제1 클라이언트 모듈(140)의 뱃치 제어기들(143, 144), 및 시스템(100)의 다양한 컴포넌트들 내의 레지스터들 및 메모리 위치들에 직접 데이터를 발송 및 수신할 수 있다.
도 7은 일부 실시예들에 따른 복수의 DMA 클라이언트들을 지원하는 다중 클라이언트 디바이스(710)의 블록도이다. 디바이스(710)는 시스템(100)의 클라이언트 모듈(140, 150)의 다른 실시예이다. 디바이스(710)는 적어도 하나의 클라이언트 가상 관리자(VM)(701), 적어도 하나의 메모리 어드레스 변환 캐시(702) 및 복수의 DMA 클라이언트(714, 724)를 포함한다. 제1 DMA 클라이언트(714)는 자신의 일관성 프리페치 버퍼(711), 비일관성 프리페치 버퍼(712) 및 MMU(713)를 포함한다. 제2 DMA 클라이언트(724)는 제2 일관성 프리패치 버퍼(721), 제2 비일관성 프리패치 버퍼(722) 및 제2 MMU(723)를 포함한다. 각각의 DMA 클라이언트(714, 724)는 독립적으로 시스템 메모리(130)에 판독 및 기록한다. DMA 클라이언트들(714, 724) 각각은 중앙 데이터 패브릭(120)의 각각의 변환 모니터(121) 및 프로브 모니터(122)에 의해 추적된다. 제1 DMA 클라이언트(714)는 디스플레이(720)와 같은 제1 외부 디바이스에 결합되고 그와 연관된다. 제2 DMA 클라이언트(724)는 카메라(730)와 같은 제2 외부 디바이스에 결합되고 그와 연관된다. 제1 MMU(713)는 디스플레이(720)에 대한 시스템 메모리(130)의 전용 부분 및 시스템 메모리(130)의 일관성 공유 부분 중 하나 또는 둘 모두에 판독 및/또는 기록한다. 제2 MMU(723)는 카메라(730)에 대한 시스템 메모리(130)의 전용 부분 및 시스템 메모리(130)의 일관성 공유 부분 중 하나 또는 둘 모두에 판독 및/또는 기록한다.
도 8은 일부 실시예들에 따른 어드레스 변환 시스템(800)의 블록도이다. 시스템(800)은 시스템(100)의 컴포넌트들을 사용하여 제1 클라이언트 모듈(140)로부터의 클라이언트 모듈 가상 어드레스(801)를 클라이언트 모듈 물리적 어드레스(802)로 변환하고, 이어서 시스템 메모리(130) 내의 시스템 물리적 어드레스(803)로 변환한다. 메모리 액세스 요청은 제1 클라이언트 모듈(140) 상에서 실행되거나 그와 연관된 애플리케이션에 의해 사용되는 클라이언트 가상 어드레스(801)와 같은 디바이스-생성 어드레스를 포함한다. 예시된 실시예에서, VBS 호환 메커니즘은 (1) OS 또는 디바이스 드라이버(810)에 의해 관리되는 제1 레벨 변환(815) 및 (2) 하이퍼바이저(820)에 의해 관리되는 제2 레벨 변환(825)을 포함하는 2-레벨 변환 프로세스를 사용하여 (예를 들어, 커널 모드 멀웨어에 대한) 메모리 보호를 제공한다. VBS 어드레스 변환 트래픽 및 이 트래픽이 소비하는 프로브 메모리 대역폭은 결과적으로 CPU 캐시 전력 요구 사항들을 증가시키고, VBS가 시스템 메모리(130)에서와 같은 일관성 메모리에 액세스하는데 사용될 때 데이터 액세스들에 대한 메모리 성능을 감소시킬 가능성을 갖는다. 제1 레벨 변환(815)은 메모리 액세스 요청의 가상 어드레스와 같은 디바이스-생성 어드레스를 클라이언트 물리적 어드레스(802)로 변환한다. 클라이언트 물리적 어드레스는 GPU 물리적 어드레스와 같은 도메인 물리적 어드레스라고도 한다. 일부 실시예들에서, 제1 레벨 변환(815)은 본 명세서에서 논의된 바와 같이, 일반적으로 게스트 VM과 연관된 클라이언트 모듈 VM 및 연관된 TLB에 의해 수행된다.
클라이언트 물리적 어드레스(802)는 제2 레벨 변환(825)으로 전달되고, 이는 클라이언트 물리적 어드레스(802)를 시스템 메모리(130) 내의 위치를 표시하는 시스템 물리적 어드레스(803)로 변환한다. 본 명세서에서 논의된 바와 같이, 제2 레벨 변환(825)은 또한, 예를 들어, 제2 레벨 변환(825)을 수행하기 위해 사용되는 연관된 페이지 테이블들 및 변환 룩-어사이드 버퍼들(TLB들)의 엔트리들로 인코딩되는 허가 정보(permission information)를 사용하여, 디바이스가 시스템 물리적 어드레스(803)에 의해 표시된 시스템 메모리(130)의 특정 영역에 액세스하도록 승인되었는지를 검증한다. 일부 실시예에서, 이러한 변환 시스템(800)은 IOMMU(123)와 같은 IOMMU에 의해 지원되거나 매개(mediated)된다. OS 또는 디바이스 드라이버 (810)와 연관된 설정(804)에 기초하여, 워터마크 임계치들 (602, 612) 중 하나 또는 둘 모두는 제 1 클라이언트 모듈 (140)에 대한 시작 값에 대해 설정되거나 조절된다. OS 또는 디바이스 드라이버(810)에서의 편의를 위해 예시되었지만, 설정(804)은 대안적으로 하이퍼바이저(820)에 있거나 또는 이와 연관된다. 일부 실시예들에서, 설정(804)은 시스템 메모리(130)의 레지스터에 또는 클라이언트 모듈(예를 들어, GPU(140), I/O 엔진(150)) 내의 자체 전용 메모리 레지스터에 저장된다. 단일 설정(804)이 도시되지만, 설정(804)은 대안적으로, 특정 실시예들에서, 특정 클라이언트 모듈(140, 150)(예를 들어, GPU, I/O 엔진)에 대한 하나 이상의 QoS 값들과 관련된 복수의 값들이다. 설정(804)은 사용자에 의해 설정되거나, 클라이언트 모듈(150)에 결합된 디스플레이(720) 및 카메라(730)와 같은 외부 디바이스로부터 하드웨어, 펌웨어, 또는 소프트웨어 값의 판독 또는 구성 검출을 통해 프로그램적으로 획득된다. 설정(804)은 외부 디바이스와의 통신의 초기화시에 결정될 수 있고, 예를 들어 제1 클라이언트 모듈(140)에 대한 제어기(143, 144)의 거동을 조절하기 위해 시스템(100)의 동작 동안 업데이트된다.
일부 실시예들에서, 위에서 설명된 장치 및 기술들은, 도 1 내지 8을 참조하여 위에서 설명된 CPU(110), 시스템 메모리(130), 및 클라이언트 디바이스들 또는 모듈들(140, 150, 710)과 같은, 하나 이상의 집적 회로(IC) 디바이스들(집적 회로 패키지들 또는 마이크로칩들이라고도 지칭됨)을 포함하는 시스템에서 구현된다. 버퍼가 메모리 요청을 저장하거나 그렇지 않으면 홀딩 또는 추적하기 위해 설명되지만, 당업자에 의해 이해되는 바와 같이 다른 특정 유형의 구조, 디바이스 또는 메커니즘이 대체될 수 있다. 예를 들어, 클라이언트 모듈들(140, 150)에 대한 버퍼들(141, 142, 151, 152)과 같은 버퍼 대신에, 테이블, 메모리 블록, 메모리 레지스터, 링크드 리스트 등이 사용된다. 위에서 설명된 다른 회로, 컴포넌트, 모듈, 디바이스 등에 대해서도 동일하게 적용된다.
전자 설계 자동화(EDA) 및 컴퓨터 지원 설계(CAD) 소프트웨어 도구들이 설명된 IC 디바이스들의 설계 및 제조에 사용될 수 있다. 이러한 설계 도구들은 전형적으로 하나 이상의 소프트웨어 프로그램들로서 표현된다. 하나 이상의 소프트웨어 프로그램들은, 회로부를 제조하기 위해 제조 시스템을 설계 또는 적응시키기 위한 프로세스의 적어도 일부를 수행하도록 하나 이상의 IC 디바이스들의 회로부를 나타내는 코드 상에서 동작하도록 컴퓨터 시스템을 조작하기 위해 컴퓨터 시스템에 의해 실행가능한 코드를 포함한다. 이 코드는 명령어, 데이터, 또는 명령어와 데이터의 조합을 포함할 수 있다. 설계 도구 또는 제조 도구를 나타내는 소프트웨어 명령어들은 전형적으로 컴퓨팅 시스템에 액세스가능한 컴퓨터 판독가능 스토리지 매체에 저장된다. 마찬가지로, IC 디바이스의 설계 또는 제조의 하나 이상의 단계들을 나타내는 코드는 동일한 컴퓨터 판독가능 스토리지 매체 또는 상이한 컴퓨터 판독가능 스토리지 매체에 저장되고 이로부터 액세스될 수 있다.
컴퓨터 판독 가능 스토리지 매체는 컴퓨터 시스템에 명령어 및/또는 데이터를 제공하기 위해 사용하는 동안 컴퓨터 시스템에 의해 액세스 가능한 임의의 비일시적 스토리지 매체 또는 비일시적 스토리지 매체의 조합을 포함할 수 있다. 그러한 스토리지 매체는 광학 매체(예를 들어, 콤팩트 디스크(CD), 디지털 다목적 디스크(DVD), 블루레이 디스크), 자기 매체(예를 들어, 플로피 디스크, 자기 테이프 또는 자기 하드 드라이브), 휘발성 메모리(예를 들어, 랜덤 액세스 메모리(RAM) 또는 캐시), 비휘발성 메모리(예를 들어, 읽기 전용 메모리(ROM) 또는 플래시 메모리), 또는 MEMS(마이크로 전자기계 시스템) 기반 스토리지 매체를 포함할 수 있고 그러나 여기에 제한은 되지 않는다. 컴퓨터 판독 가능 스토리지 매체는 컴퓨팅 시스템(예를 들어, 시스템 RAM 또는 ROM)에 내장될 수 있고, 컴퓨팅 시스템(예를 들어, 자기 하드 드라이브)에 고정적으로 부착되거나 컴퓨팅 시스템(예를 들어, 광학 디스크 또는 유니버설 직렬 버스(USB) 기반 플래시 메모리), 또는 유선 또는 무선 네트워크(예: 네트워크 액세스 가능 스토리지(NAS))를 통해 컴퓨터 시스템에 연결된다.
일부 실시예들에서, 위에서 설명된 기술들의 특정 양태들은 소프트웨어를 실행하는 프로세싱 시스템의 하나 이상의 프로세서들에 의해 구현될 수 있다. 소프트웨어는 비일시적 컴퓨터 판독가능 스토리지 매체 상에 저장되거나 그렇지 않으면 유형적으로 실시된 하나 이상의 실행가능한 명령어들의 세트들을 포함한다. 소프트웨어는 하나 이상의 프로세서들에 의해 실행될 때, 위에서 설명된 기술들의 하나 이상의 양태들을 수행하기 위해 하나 이상의 프로세서들을 조작하는 명령어들 및 특정 데이터를 포함할 수 있다. 비일시적 컴퓨터 판독 가능 스토리지 매체는 자기 또는 광학 디스크 스토리지 디바이스, 플래시 메모리(Flash memory), 캐시(cache), 램(RAM) 등과 같은 솔리드 스테이트 스토리지 디바이스 또는 다른 비휘발성 메모리 디바이스 등을 포함할 수 있다. 비일시적 컴퓨터 판독가능 스토리지 매체 상에 저장된 실행가능한 명령어들은 소스 코드, 어셈블리 언어 코드, 객체 코드, 또는 하나 이상의 프로세서들에 의해 해석되거나 다른 방식으로 실행가능한 다른 명령어 포맷일 수 있다.
일반적인 설명에서 상술한 모든 활동 또는 엘리먼트가 요구되지 않으며, 특정 활동 또는 장치의 일부가 요구되지 않을 수 있으며, 상술한 것들에 더하여 하나 이상의 추가적인 활동이 수행될 수 있거나, 또는 포함된 엘리먼트들이 요구된다는 점에 유의한다. 또한 활동이 나열되는 순서는 반드시 활동이 수행되는 순서는 아니다. 또한, 구체적인 실시예를 참조하여 개념을 설명하였다. 그러나 통상의 지식을 가진 자라면 아래의 청구항들에 기재된 바와 같이 본 개시의 범위를 벗어나지 않는 범위에서 다양한 수정 및 변경이 가능하다는 것을 알 수 있다. 따라서, 본 명세서 및 도면은 제한적인 의미가 아니라 예시적인 것으로 간주되어야 하며, 이러한 모든 수정은 본 개시의 범위 내에 포함되도록 의도된다.
이점들, 다른 장점들, 및 문제점들에 대한 해결책들이 특정 실시예들과 관련하여 위에서 설명되었다. 그러나, 이점, 장점, 문제에 대한 해결책, 및 어떤 이점, 장점, 또는 해결책이 발생하거나 더 두드러지게 될 수 있는 어떤 특징은 청구항들 중 어느 하나 또는 모든 청구항들의 중요한, 요구되는, 또는 필수적인 특징으로 해석되지 않는다. 더욱이, 위에서 개시된 특정 실시예들은 단지 예시적이며, 개시된 주제가 본 명세서의 교시들의 이점을 갖는 당업자들에게 명백하지만 상이한 그러나 동등한 방식들로 수정되고 실시될 수 있다. 이하의 청구항에 기재된 것 이외의, 본 명세서에 기재된 구성 또는 설계의 상세사항에 대한 제한은 의도되지 않는다. 따라서, 위에서 개시된 특정 실시예들은 변경 또는 수정될 수 있고, 이러한 모든 변형들은 개시된 주제의 범위 내에서 고려된다는 것이 명백하다. 따라서, 본 명세서에서 추구하는 보호범위는 아래의 청구범위에 명시된 바와 같다.

Claims (20)

  1. 프로세서에 있어서,
    클라이언트 모듈로부터의 일관성 메모리 요청들을 저장하기 위한 복수의 엔트리들을 갖는 일관성 메모리 요청 버퍼;
    상기 클라이언트 모듈로부터의 비일관성 메모리 요청들을 저장하기 위한 복수의 엔트리들을 갖는 비일관성 메모리 요청 버퍼를 포함하고; 및
    상기 클라이언트 모듈은,
    상기 일관성 메모리 요청 버퍼에 일관성 메모리 요청들을 버퍼링하고;
    상기 비일관성 메모리 요청 버퍼에서 비일관성 메모리 요청들을 버퍼링하고; 및
    상기 일관성 메모리 요청 버퍼 및 상기 비일관성 메모리 요청 버퍼 중 하나로부터의 복수의 요청들을 상기 일관성 메모리 요청 버퍼와 연관된 제 1 워터마크 및 상기 비일관성 메모리 요청 버퍼와 연관된 제 2 워터마크에 기초하여 중앙 데이터 패브릭 및 시스템 중 하나로 릴리스하도록 구성되며, 상기 제 1 워터마크는 상기 제 2 워터마크와는 상이한, 프로세서.
  2. 제1항에 있어서, 상기 클라이언트 모듈은,
    프로세서 코어가 특정된 전력 상태에 있다는 표시를 수신하고; 및
    상기 일관성 메모리 요청들을 버퍼링하기 시작하고 상기 수신된 표시에 기초하여 상기 비일관성 메모리 요청들을 버퍼링하도록 더 구성되는, 프로세서.
  3. 제1항 또는 제2항에 있어서,
    클라이언트 모듈 메모리;
    메모리 어드레스 테이블들의 세트; 및
    상기 일관성 메모리 요청들 및 상기 비일관성 메모리 요청들 중 적어도 하나의 클라이언트 모듈 가상 메모리 어드레스들을 상기 메모리 어드레스 테이블들의 세트를 사용하여 상기 클라이언트 모듈 메모리의 물리적 클라이언트 모듈 메모리 어드레스들로 변환하기 위한 테이블 워커로서 동작하는 메모리 관리자를 더 포함하는, 프로세서.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 비일관성 메모리 요청들은 비일관성 프리페치 메모리 요청들을 포함하는, 프로세서.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 비일관성 메모리 요청들 각각은 가상화 기반 보안 (VBS) 메커니즘과 연관된 제 1 메모리 어드레스 변환 및 제 2 메모리 어드레스 변환에 기초하여 변환되는, 프로세서.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서, 상기 클라이언트 모듈은,
    다음 중 적어도 하나의 경우 상기 복수의 상기 요청들을 릴리스하도록 더 구성되고, 상기 다음 중 적어도 하나의 경우는,
    상기 제 1 워터마크는 상기 일관성 메모리 요청 버퍼에서의 버퍼링된 일관성 메모리 요청들의 제 1 수가 일관성 워터마크 임계치를 초과하는 것을 표시하는 경우; 및
    상기 제 2 워터마크는 프로세서 코어가 저전력 상태에 있다는 신호를 수신한 후에 상기 비일관성 메모리 요청 버퍼에서 버퍼링된 비일관성 메모리 요청들의 제 2 수가 비일관성 워터마크 임계치를 초과하는 것을 표시하는 경우인, 프로세서.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서, 상기 클라이언트 모듈은,
    일관성 메모리 요청 활동의 양에 기초하여 상기 일관성 메모리 요청 버퍼로부터 릴리스되는 일관성 메모리 요청들의 수를 제한하도록 더 구성되는, 프로세서.
  8. 시스템에 있어서,
    클라이언트 모듈로부터의 일관성 메모리 요청들을 저장하기 위한 복수의 엔트리들을 갖는 일관성 메모리 요청 버퍼;
    상기 클라이언트 모듈로부터의 비일관성 메모리 요청들을 저장하기 위한 복수의 엔트리들을 갖는 비일관성 메모리 요청 버퍼를 포함하고; 및
    상기 클라이언트 모듈은,
    상기 일관성 메모리 요청 버퍼에 일관성 메모리 요청들을 버퍼링하고;
    상기 비일관성 메모리 요청 버퍼에서 비일관성 메모리 요청들을 버퍼링하고;
    일관성 워터마크 임계치에 대해 상기 일관성 메모리 요청 버퍼에서의 일관성 메모리 요청들의 일관성 워터마크를 모니터링하고;
    비일관성 워터마크 임계치에 대해 상기 비일관성 메모리 요청 버퍼에서의 비일관성 메모리 요청들의 비일관성 워터마크를 모니터링하고; 및
    상기 일관성 워터마크 및 상기 비일관성 워터마크에 기초하여 상기 비일관성 메모리 요청 버퍼로부터의 일관성 메모리 요청들의 제 2 세트와 함께 상기 비일관성 메모리 요청 버퍼로부터의 비일관성 메모리 요청들의 제 1 세트를 동일한 뱃치에서 릴리스하도록 구성되는, 시스템.
  9. 제8항에 있어서, 상기 클라이언트 모듈은,
    상기 시스템 내의 프로세서 코어가 저전력 상태에 있음을 표시하는 신호에 응답하여 상기 비일관성 메모리 요청들을 버퍼링하고 상기 일관성 메모리 요청들을 버퍼링하기 시작하도록 더 구성되는, 시스템.
  10. 제8항 또는 제9항에 있어서,
    상기 비일관성 메모리 요청들 각각은 비일관성 프리페치 메모리 요청 및 디맨드 비일관성 메모리 요청 중 적어도 하나를 포함하는, 시스템.
  11. 제8항 내지 제10항 중 어느 한 항에 있어서,
    상기 비일관성 메모리 요청들 각각은 가상화 기반 보안 (VBS) 메커니즘과 일치하는 제 1 메모리 어드레스 변환 및 제 2 메모리 어드레스 변환을 요구하는, 시스템.
  12. 제8항 내지 제11항 중 어느 한 항에 있어서, 상기 비일관성 메모리 요청들 및 상기 일관성 메모리 요청들의 릴리스는 릴리스 신호를 수신하는 것에 응답하고, 상기 릴리스 신호는 기초로 생성되는, 시스템.
  13. 제12항에 있어서, 상기 릴리스 신호는 다음 중 적어도 하나에 기초하여 생성되고, 상기 다음 중 적어도 하나는,
    상기 일관성 워터마크 임계치를 초과하는 상기 일관성 메모리 요청 버퍼 내의 버퍼링된 일관성 메모리 요청들의 제1 수; 및
    프로세서 코어가 저전력 상태에 있다는 신호를 수신한 후에 상기 비일관성 워터마크 임계치를 초과하는 상기 비일관성 메모리 요청 버퍼에서의 버퍼링된 비일관성 메모리 요청들의 제2 수인 것인, 시스템.
  14. 제8항 내지 제13항 중 어느 한 항에 있어서, 상기 클라이언트 모듈은,
    상기 시스템에서 일관성 메모리 요청 활동의 양을 검출하고; 및
    상기 릴리스 신호를 수신하는 것에 응답하여 일관성 메모리 요청 활동의 상기 양을 검출한 후 상기 일관성 메모리 요청 버퍼로부터 릴리스되는 일관성 메모리 요청들의 수를 제한하도록 더 구성되는, 시스템.
  15. 디바이스 생성 일관성 및 비일관성 메모리 요청들을 중재하기 위한 방법으로서, 상기 방법은,
    프로세서 코어 및 프로세서 공유 캐시의 전력 상태를 검출하는 단계; 및
    상기 프로세서 코어의 저전력 상태를 검출하는 것에 응답하여:
    일관성 메모리 요청 버퍼에 일관성 메모리 요청들을 버퍼링하는 단계;
    비일관성 메모리 요청 버퍼에서 비일관성 메모리 요청들을 버퍼링하는 단계;
    일관성 워터마크 임계치에 대해 상기 일관성 메모리 요청 버퍼에서의 일관성 메모리 요청들의 일관성 워터마크를 모니터링하는 단계;
    비일관성 워터마크 임계치에 대해 상기 비일관성 메모리 요청 버퍼에서의 비일관성 메모리 요청들의 비일관성 워터마크를 모니터링하는 단계; 및
    상기 비일관성 메모리 요청 버퍼로부터의 일관성 메모리 요청들의 제 2 세트와 함께 상기 비일관성 메모리 요청 버퍼로부터의 비일관성 메모리 요청들의 제 1 세트를 릴리스하는 단계를 포함하는, 방법.
  16. 제15항에 있어서,
    상기 저전력 상태에 기초하여 비일관성 메모리 요청들의 상기 제 1 세트 및 일관성 메모리 요청들의 상기 제 2 세트를 릴리스하는 단계를 더 포함하는, 방법.
  17. 제15항 또는 제16항에 있어서,
    상기 비일관성 메모리 요청들 각각은 비일관성 프리페치 메모리 요청 및 디맨드 비일관성 메모리 요청 중 적어도 하나를 포함하는, 방법.
  18. 제15항 내지 제17항 중 어느 한 항에 있어서,
    상기 비일관성 메모리 요청들을 릴리스한 후 상기 비일관성 메모리 요청들 각각에 대해 가상화 기반 보안 (VBS) 메커니즘과 일치하는 제 1 메모리 어드레스 변환 및 제 2 메모리 어드레스 변환을 수행하는 단계를 더 포함하는, 방법.
  19. 제15항 내지 제18항 중 어느 한 항에 있어서, 상기 비일관성 메모리 요청들 및 상기 일관성 메모리 요청들을 릴리스하는 단계는,
    일관성 워터마크 임계치를 초과하는 상기 일관성 메모리 요청 버퍼에서 버퍼링된 일관성 메모리 요청들의 제1 수를 검출하는 단계; 및
    프로세서 코어가 저전력 상태에 있다는 신호를 수신한 후에 비일관성 워터마크 임계치를 초과하는 상기 비일관성 메모리 요청 버퍼에서의 버퍼링된 비일관성 메모리 요청들의 제 2 수를 검출하는 단계 중 적어도 하나에 기초하는, 방법.
  20. 제19항에 있어서, 상기 비일관성 워터마크 임계치는 상기 일관성 워터마크 임계치와 상이한, 방법.
KR1020227023227A 2019-12-20 2020-12-11 일관성 및 비일관성 메모리 요청들에 대한 중재 방식 KR20220125247A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/723,185 2019-12-20
US16/723,185 US11513973B2 (en) 2019-12-20 2019-12-20 Arbitration scheme for coherent and non-coherent memory requests
PCT/US2020/064483 WO2021126690A1 (en) 2019-12-20 2020-12-11 Arbitration scheme for coherent and non-coherent memory requests

Publications (1)

Publication Number Publication Date
KR20220125247A true KR20220125247A (ko) 2022-09-14

Family

ID=76438302

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227023227A KR20220125247A (ko) 2019-12-20 2020-12-11 일관성 및 비일관성 메모리 요청들에 대한 중재 방식

Country Status (6)

Country Link
US (1) US11513973B2 (ko)
EP (1) EP4078382A4 (ko)
JP (1) JP2023507096A (ko)
KR (1) KR20220125247A (ko)
CN (1) CN115087961B (ko)
WO (1) WO2021126690A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11914517B2 (en) * 2020-09-25 2024-02-27 Advanced Micro Devices, Inc. Method and apparatus for monitoring memory access traffic

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002045322A2 (en) * 2000-11-29 2002-06-06 Pulsent Corporation Method and apparatus for combining dedicated and shared networks for efficient data transmission
US20030167348A1 (en) 2001-07-02 2003-09-04 Globespanvirata, Inc. Communications system using rings architecture
US7298777B2 (en) * 2003-06-06 2007-11-20 Texas Instruments Incorporated Searching in a spread spectrum communications
US7237131B2 (en) 2003-12-30 2007-06-26 Intel Corporation Transaction-based power management in a computer system
US20090249046A1 (en) 2008-03-31 2009-10-01 Mips Technologies, Inc. Apparatus and method for low overhead correlation of multi-processor trace information
JP2010097311A (ja) * 2008-10-15 2010-04-30 Panasonic Corp 半導体装置及び半導体集積回路
US8266389B2 (en) * 2009-04-29 2012-09-11 Advanced Micro Devices, Inc. Hierarchical memory arbitration technique for disparate sources
US9176913B2 (en) 2011-09-07 2015-11-03 Apple Inc. Coherence switch for I/O traffic
WO2015018003A1 (en) * 2013-08-07 2015-02-12 Qualcomm Incorporated Ltr/obff design scheme for ethernet adapter application
US9360523B2 (en) 2014-04-18 2016-06-07 Breker Verification Systems Display in a graphical format of test results generated using scenario models
US9824015B2 (en) 2015-05-29 2017-11-21 Qualcomm Incorporated Providing memory management unit (MMU) partitioned translation caches, and related apparatuses, methods, and computer-readable media
WO2017135962A1 (en) 2016-02-05 2017-08-10 Hewlett Packard Enterprise Development Lp Allocating coherent and non-coherent memories
US10509736B2 (en) * 2016-07-29 2019-12-17 Advanced Micro Devices, Inc. Controlling access by IO devices to pages in a memory in a computing device
US10768962B2 (en) * 2016-12-19 2020-09-08 Vmware, Inc. Emulating mode-based execute control for memory pages in virtualized computing systems
US10303603B2 (en) 2017-06-13 2019-05-28 Microsoft Technology Licensing, Llc Low power multi-core coherency
US10474211B2 (en) * 2017-07-28 2019-11-12 Advanced Micro Devices, Inc. Method for dynamic arbitration of real-time streams in the multi-client systems
US11188255B2 (en) * 2018-03-28 2021-11-30 Intel Corporation Dynamic major mode for efficient memory traffic control
US11013056B2 (en) * 2018-04-13 2021-05-18 Qualcomm Incorporated Dynamic prioritization of uplink traffic
US11256644B2 (en) * 2018-09-05 2022-02-22 Fungible, Inc. Dynamically changing configuration of data processing unit when connected to storage device or computing device

Also Published As

Publication number Publication date
WO2021126690A1 (en) 2021-06-24
US11513973B2 (en) 2022-11-29
CN115087961B (zh) 2023-10-27
US20210191879A1 (en) 2021-06-24
JP2023507096A (ja) 2023-02-21
EP4078382A1 (en) 2022-10-26
CN115087961A (zh) 2022-09-20
EP4078382A4 (en) 2024-01-17

Similar Documents

Publication Publication Date Title
US11030126B2 (en) Techniques for managing access to hardware accelerator memory
US9128849B2 (en) Coherent memory scheme for heterogeneous processors
US11907542B2 (en) Virtualized-in-hardware input output memory management
US11341059B2 (en) Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations
US8762994B2 (en) Power-optimized interrupt delivery
US20170371822A9 (en) Pcie traffic tracking hardware in a unified virtual memory system
KR20070024670A (ko) 집적 dma 엔진을 사용하는 고성능 휘발성 디스크드라이브 메모리 액세스 장치 및 방법
US10296356B2 (en) Implementation of reset functions in an SoC virtualized device
US10467138B2 (en) Caching policies for processing units on multiple sockets
US11003588B2 (en) Networked input/output memory management unit
US9471226B2 (en) Reverse copy on write for better cache utilization
JP2023507292A (ja) ゼロ値メモリ圧縮
KR20220125247A (ko) 일관성 및 비일관성 메모리 요청들에 대한 중재 방식
KR20220061983A (ko) 입출력 메모리 관리 유닛으로부터 게스트 운영 시스템으로의 인터럽트 제공
CN114080587A (zh) 输入-输出存储器管理单元对访客操作系统缓冲区和日志的访问
KR20220001016A (ko) 게스트 운영체제에 입출력 메모리 관리 유닛 레지스터 복사본을 제공하는 방법
US11226819B2 (en) Selective prefetching in multithreaded processing units
US20220197506A1 (en) Data placement with packet metadata
Kornaros et al. Towards full virtualization of heterogeneous noc-based multicore embedded architectures
US10051087B2 (en) Dynamic cache-efficient event suppression for network function virtualization
US20210191641A1 (en) Systems and methods for reducing instruction code memory footprint for multiple processes executed at a coprocessor

Legal Events

Date Code Title Description
A201 Request for examination