KR102493859B1 - 듀얼 모드 로컬 데이터 저장 - Google Patents

듀얼 모드 로컬 데이터 저장 Download PDF

Info

Publication number
KR102493859B1
KR102493859B1 KR1020197017661A KR20197017661A KR102493859B1 KR 102493859 B1 KR102493859 B1 KR 102493859B1 KR 1020197017661 A KR1020197017661 A KR 1020197017661A KR 20197017661 A KR20197017661 A KR 20197017661A KR 102493859 B1 KR102493859 B1 KR 102493859B1
Authority
KR
South Korea
Prior art keywords
requestor
requestors
access
partitions
active
Prior art date
Application number
KR1020197017661A
Other languages
English (en)
Other versions
KR20190082308A (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 KR20190082308A publication Critical patent/KR20190082308A/ko
Application granted granted Critical
Publication of KR102493859B1 publication Critical patent/KR102493859B1/ko

Links

Images

Classifications

    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/282Partitioned cache

Abstract

공유된 자원에 액세스하는 요청을 효율적으로 처리하기 위한 시스템 및 방법이 설명된다. 많은 요청자 각각은 공유된 자원의 파티션에 할당된다. 제어기가 요청자 중 그 어느 것도 할당되지 않은 파티션에 액세스하는 요청을 생성하는 것이 없다고 결정하면, 제어기는 활성 요청자들이 할당된 파티션들에 동시에 액세스하는 것을 허용한다. 상기 제어기가 적어도 하나의 활성 요청자가 할당되지 않은 파티션에 액세스하는 요청을 생성한다고 결정하면, 상기 제어기는 다른 활성 요청자가 액세스하는 것을 중지시키면서 단일 활성 요청자가 전체 공유된 자원에 독점적인 액세스를 얻는 것을 허용한다. 상기 제어기는 상기 활성 요청자 간에 독점적인 액세스를 교번한다. 다양한 실시예에서, 상기 공유된 자원은 그래픽 처리 유닛 내의 로컬 데이터 저장소이고, 상기 다수의 요청자 각각은 단일 명령 다중 데이터(SIMD) 컴퓨팅 유닛이다.

Description

듀얼 모드 로컬 데이터 저장
본 발명은 듀얼 모드 로컬 데이터 저장에 관한 것이다.
작업의 병렬화는 컴퓨터 시스템의 처리량을 증가시키는데 사용된다. 이를 위해, 컴파일러 또는 소프트웨어 프로그래머는 프로그램 코드로부터 병렬화된 작업을 추출하여 시스템 하드웨어에서 병렬로 실행한다. 비순차 실행, 딥 파이프라인(deep pipeline), 추측 실행 및 다중 스레드 실행(multi-threaded execution)을 사용하면 명령 레벨의 병렬 처리를 활용하여 처리량을 증가시킬 수 있다. 하드웨어에서 병렬 실행을 더 증가시키기 위해 병렬 아키텍처 프로세서를 시스템에 포함시키면 데이터 레벨의 병렬 처리를 활용하여 종래의 범용 프로세서로부터 연산 집약적이고 반복적인 작업을 오프로딩(offload)할 수 있다. 이러한 작업의 예로는 비디오 그래픽 렌더링, 암호화, 가비지(garbage) 수집 및 다른 벡터 명령 응용을 포함한다.
데이터 레벨의 병렬 처리를 활용하는 상기 시스템의 다양한 예는 병렬 아키텍처 프로세서로서 단일 명령 다중 데이터(single instruction multiple data: SIMD) 프로세서를 포함한다. 그래픽 처리 유닛(graphics processing unit: GPU)은 SIMD 프로세서의 일례이다. GPU는 하나 이상의 SIMD 컴퓨팅 유닛(compute unit)을 포함하고, 각 컴퓨팅 유닛은 각각의 스레드의 명령을 실행하기 위해 처리 자원의 다수의 레인(lane)을 갖는다. 명령은 레인에 걸쳐 실행되는 스레드에서는 동일하지만 주어진 레인에 특정된 데이터 요소를 갖는다. 운영 체제 스케줄러(operating system scheduler) 또는 소프트웨어 프로그래밍 플랫폼을 통해 프로그래머는 SIMD컴퓨팅 유닛의 레인에 대한 스레드를 스케줄링한다.
로컬 데이터 저장소(local data store)를 사용하지 않으면, SIMD 컴퓨팅 유닛 내의 주어진 레인에 의해 생성된 결과 데이터는, 결과 데이터를 다른 형태의 데이터 저장부에 저장하고 검색하는 고비용의 대기 시간 없이는 다른 레인에 액세스할 수 없다. SIMD 컴퓨팅 유닛의 다수의 레인은 로컬 데이터 저장소를 공유하고 있지만, 시스템은, 레인의 수를 동적으로 변화시켜 로컬 데이터 저장소에서 공유할 저장부의 양을 변경할 수 있는 아키텍처를 제공하지는 않는다. 따라서 시스템은 로컬 데이터 저장소의 충돌 해결 및 전체 액세스 가능성(어드레스 지정 가능성)을 지원하지 않는다.
전술한 사항을 고려하여, 공유된 자원에 액세스하는 요청을 효율적으로 처리하기 위한 효율적인 방법 및 시스템이 요구된다.
도 1은 공유된 자원에 액세스하는 것을 지원하는 컴퓨팅 시스템의 일 실시예의 일반화된 다이어그램;
도 2는 병렬 아키텍처 프로세서의 일 실시예의 일반화된 다이어그램;
도 3은 공유된 자원을 목표(target)로 하는 액세스 요청을 처리하는 방법의 일 실시예의 일반화된 다이어그램;
도 4는 공유된 자원을 목표로 하는 액세스 요청을 처리하는 방법의 다른 실시예의 일반화된 다이어그램; 및
도 5는 공유된 자원을 사용하기 위해 액세스 요청의 소스(source)를 선택하는 방법의 일 실시예의 일반화된 다이어그램.
본 발명은 다양한 변형 및 대안적인 형태를 취할 수 있지만, 특정 실시예가 도면에 예로서 도시되고 본 명세서에서 상세히 설명된다. 그러나, 도면 및 상세한 설명은 본 발명을 특정 개시된 형태로 제한하려고 의도된 것이 아니라, 반대로, 본 발명은 첨부된 청구 범위에 의해 한정된 본 발명의 범위 내에 있는 모든 수정, 등가물 및 대안을 포함하려고 의도된 것으로 이해되어야 한다.
이하의 설명에서, 본 발명의 완전한 이해를 제공하기 위해 다수의 특정 상세가 제시된다. 그러나, 이 기술 분야에 통상의 지식을 가진 자라면 본 발명이 이러한 특정 상세 없이 실시될 수 있다는 것을 이해할 수 있을 것이다. 일부 경우에, 잘 알려진 회로, 구조 및 기술은 본 발명을 모호하게 하는 것을 피하기 위해 상세히 도시되지 않았다. 또한, 설명의 단순성 및 명료성을 위해, 도면에 도시된 요소는 반드시 축척에 맞게 도시된 것은 아닌 것으로 이해된다. 예를 들어, 일부 요소의 치수는 다른 요소에 비해 과장되어 있다.
공유된 자원에 액세스하는 요청을 효율적으로 처리하기 위한 시스템 및 방법이 고려된다. 다양한 실시예에서, 많은 요청자(requestor) 각각은 공유된 자원의 파티션(partition)에 할당된다. 일부 실시예에서, 각 파티션은 공유된 자원의 다른 파티션과 오버랩되지 않는 별개의 파티션이다. 제어기는 공유된 자원에 액세스하는 것을 지원하는 데 사용된다. 제어기가 요청자 중 그 어느 것도 할당되지 않은 파티션에 액세스하는 요청을 생성하는 것이 없다고 결정하면, 제어기는 활성(active) 요청자들이 할당된 파티션들에 동시에 액세스할 수 있게 한다. 그러나 제어기가 적어도 하나의 활성 요청자가 할당되지 않은 파티션에 액세스하는 요청을 생성한다고 결정하면, 제어기는 다른 활성 요청자가 액세스하는 것을 중지(stall)시키면서 단일 활성 요청자가 전체 공유된 자원에 액세스하는 것을 허용한다.
제어기는 활성 요청자를 선택하는 것에 의해 조정(arbitration)을 수행한다. 일부 실시예에서, 선택은 가장 최근에 사용된 기준에 기초한다. 제어기는 선택된 요청자가 액세스하는 것을 허용하면서 선택되지 않은 요청자가 공유된 자원에 액세스하는 것을 중지시킨다. 일부 실시예에서, 제어기는 선택된 요청자가 수행한 액세스 요청의 수에 제한값을 설정하거나, 또는 선택된 요청자가 액세스 요청을 수행하기 위한 시간 기간, 예를 들어, 클록 사이클의 수에 제한값을 설정한다. 활성 요청자가 추가 액세스 요청을 하는 경우, 제어기는 선택된 요청자가 공유된 자원에 액세스하는 것을 중지시키고, 이 선택된 요청자를 가장 최근에 선택된 활성 요청자로 마킹(mark)한다. 이후 제어기는 요청자를 선택 해제하고, 다른 활성 요청자를 선택하여 전체 공유된 자원에 독점적인 액세스를 하도록 다시 조정을 수행한다.
다양한 실시예에서, 공유된 자원은 그래픽 처리 유닛의 로컬 데이터 저장소이고, 다수의 요청자 각각은 단일 명령 다중 데이터(SIMD) 컴퓨팅 유닛이다. 일부 실시예에서, 제어기는 SIMD 컴퓨팅 유닛이 할당된 메모리 어드레스 경계 외부의 로컬 데이터 저장소의 영역으로 액세스하는 것을 검출함으로써 할당되지 않은 파티션에 액세스하는 요청을 검출한다. 다양한 실시예에서, 주어진 SIMD 컴퓨팅 유닛이 전체 로컬 데이터 저장소에 독점적 액세스를 할 때, 이 컴퓨팅 유닛은, 조정이 다시 일어나서 다른 SIMD 컴퓨팅 유닛이 독점적 액세스를 얻기 전에 단일 클록 사이클 동안 독점적 액세스를 한다. 그러나, 클록 사이클의 또 다른 수도 가능하고 고려된다. 대안적으로, 다른 실시예에서, 제어기는 액세스 요청의 수를 모니터링하고, 그 수가 제한값에 도달할 때 조정이 다시 일어난다. 다양한 실시예에서, 각각의 SIMD 컴퓨팅 유닛은 로컬 데이터 저장소에 대한 판독 포트 및 기입 포트를 포함하고, 이들 포트는 다른 SIMD 컴퓨팅 유닛이 로컬 데이터 저장소에 독점적 액세스를 할 때 다른 SIMD 컴퓨팅 유닛에 대해서 로컬 데이터 저장소에 액세스하는 것을 제공하는데 사용된다.
도 1을 참조하면, 공유된 자원에 액세스하는 것을 지원하는 컴퓨팅 시스템의 일 실시예의 일반화된 블록도가 도시된다. 도시된 실시예에서, 컴퓨팅 시스템은 조정 제어 유닛(120)을 통해 공유된 자원(140)에 액세스하는 요청자(110A 내지 110H)를 포함한다. 일부 실시예에서, 공유된 자원(140)은 공유 메모리이고, 조정 제어 유닛(120)은 메모리 제어기이다. 다른 실시예에서, 공유된 자원(140)은 특정 연산 집약 기능을 갖는 유닛이거나 또는 네트워크에 액세스 전환을 제공하기 위한 유닛이다. 자원 및 임의의 연관된 제어기의 다른 예도 가능하고 고려된다.
요청자(110A 내지 110H)는 연산 자원(112A 내지 112H)을 포함한다. 다양한 실시예에서, 연산 자원(112A 내지 112H)은 파이프라인 레지스터, 중간 결과를 저장하기 위한 데이터 구조부, 정수 연산, 부동 소수점 연산, 부울리안 논리 연산, 분기 조건 비교 등을 수행하는 회로부를 포함한다. 도시된 바와 같이, 공유된 자원(140)은 다수의 파티션(142A 내지 142H)으로 분할된다. 일부 실시예에서, 각각의 파티션(142A 내지 142H)은 동일한 양의 데이터 저장부, 동일한 양의 연산 집약 기능 등을 포함한다. 다른 실시예에서, 하나 이상의 파티션(142A 내지 142H)은 파티션(142A 내지 142H)의 다른 파티션보다 더 적거나 또는 더 많은 데이터 저장부 또는 연산 집약 기능을 포함한다.
다양한 실시예에서, 파티션(142A 내지 142H) 각각은 파티션(142A 내지 142H)의 임의의 다른 파티션과 오버랩되지 않는 별개의 파티션이다. 다른 실시예에서, 오버랩이 사용된다. 다양한 실시예에서, 파티션(142A 내지 142H)의 각 파티션은 연산 자원(112A 내지 112H) 중 하나의 연산 자원에 할당된다. 다른 실시예에서, 2개 이상의 연산 자원(112A 내지 112H)이 파티션(142A 내지 142H) 중 동일한 하나의 파티션에 할당된다.
일부 실시예에서, 파티션(142A 내지 142H)의 크기에 더하여 연산 자원(112A 내지 112H)과 파티션(142A 내지 142H) 사이의 할당은 프로그래밍 가능한 제어 및 상태 레지스터(도시되지 않음)에 의해 설정된다. 펌웨어, 실행 소프트웨어 애플리케이션 또는 다른 소프트웨어는 제어 및 상태 레지스터를 업데이트하여 연산 자원(112A 내지 112H)을 파티션(142A 내지 142H)에 초기 할당하고 이후 재할당하고 파티션(142A 내지 142H)의 크기를 변경하는데 사용된다. 다른 실시예에서, 요청자(110A 내지 110H) 및/또는 조정 제어 유닛(120) 내의 하드웨어 회로부에 의해 구현되는 제어 로직은 초기 할당과 크기 변경 및 후속 재할당과 크기 재변경을 수행한다.
하나 이상의 연산 자원(112A 내지 112H)이 하나 이상의 애플리케이션의 명령을 처리할 때, 하나 이상의 요청자(110A 내지 110H)는 공유된 자원(140)에 액세스하는 요청을 생성한다. 다양한 실시예에서, 생성된 액세스 요청은 파티션(142A 내지 142H) 중 하나의 파티션을 식별한다. 파티션(142A 내지 142H) 중 하나의 파티션을 식별함으로써, 생성된 액세스 요청은 식별된 파티션을 목표로 한다. 목표로 하는 파티션은 할당된 파티션이거나 할당되지 않은 파티션이다.
요청자(110A 내지 110H)에 의해 생성된 액세스 요청 중 그 어느 것도 파티션(142A 내지 142H) 중 할당되지 않은 파티션을 목표로 하는 것이 없다면, 액세스 요청은 할당에 기초하여 서비스된다. 각 액세스 요청은 조정 제어 유닛(120)에 의해 할당된 파티션에 액세스하는 것이 허용된다. 멀티플렉서("MUX") 게이트(130A 내지 130H)에 의해 구현되는 선택 로직은 허가(grant) 신호(들)(132A 내지 132H)에 기초하여 액세스 정보(134A 내지 134H)를 선택한다. 허가 신호(들)(132A 내지 132H)는 이전에 설정된 할당에 기초하여 요청자(110A 내지 110H) 중 할당된 하나의 요청자를 선택하는 방식으로 조정 제어 유닛(120)에 의해 선언(asserted)된다. 따라서, 파티션(142A 내지 142H)은 요청자(110A 내지 110H) 중 할당된 하나의 요청자에 의해 액세스된다. 다양한 실시예에서, 2개 이상의 파티션(142A 내지 142H)은 할당에 기초하여 충돌이 없을 때 동시에 액세스된다.
요청자(110A 내지 110H)에 의해 생성된 임의의 액세스 요청이 파티션(142A 내지 142H) 중 할당되지 않은 파티션을 목표로 하고 있다면, 요청자(110A 내지 110H)는 파티션(142A 내지 142H)에 독점적 액세스를 얻는다. 독점적 액세스는 조정 제어 유닛(120)에 의해 제공되는 조정에 기초하여 일어난다. 예를 들어, 다양한 실시예에서, 요청자(110A 내지 110H)의 각 활성 요청자는 가장 최근에 선택된 기준에 기초하여 클록 사이클 동안 독점적 액세스를 얻는다. 다른 실시예에서, 조정 제어 유닛(120)은 클록 사이클의 수 또는 액세스 요청의 수를 사용하여 요청자(110A 내지 110H)의 다른 활성 요청자가 파티션(142A 내지 142H)에 독점적 액세스를 얻을 수 있는 시기를 결정한다.
일부 실시예에서, 컴퓨팅 시스템은, 조정 제어 유닛(120)이 중앙 집중된 조정자를 포함하고 하나 이상의 요청자(110A 내지 110H)가 분산 조정 로직을 포함하는 하이브리드 조정 방식을 포함한다. 예를 들어, 하나 이상의 요청자(110A 내지 110H)는 연산 자원(112A 내지 112H) 내의 다수의 소스에 의해 생성된 다수의 요청으로부터 조정 제어 유닛(120)으로 송신할 주어진 요청을 선택하는 조정자를 포함한다. 조정 제어 유닛(120)은 요청자(110A 내지 110H)로부터 수신된 다수의 요청으로부터 공유된 자원(140)으로 송신할 하나 이상의 요청을 선택한다. 허가 신호(132A 내지 132H)는 수신된 요청에 기초하여 선언되고, 임의의 수신된 요청이 파티션(142A 내지 142H) 중 할당된 파티션을 목표로 하는지 여부를 검출하는 것에 기초하여 선언된다. 또한, 일부 실시예에서, 조정 제어 유닛(120)은 가장 최근 선택된 방식과 함께 인코딩된 우선 순위에 기초하여 공유된 자원(140)에 독점적 액세스를 하기 위한 클록 사이클의 수 또는 액세스 요청의 수를 조절한다.
요청에 대한 응답(150)은 조정 제어 유닛(120)으로 다시 송신되는 것으로 도시된다. 다른 실시예에서, 응답(150)은 예를 들어 버스를 통해 요청자(110A 내지 110H)에 직접 송신된다. 일부 실시예에서, 요청자(110A 내지 110H)의 인터페이스 내의 폴링 로직(polling logic)은 버스 또는 조정 제어 유닛(120)으로부터 연관된 응답 데이터(150)를 검색하는데 사용된다. 다양한 다른 실시예에서, 응답(150)은 컴퓨팅 시스템 내 다른 컴퓨팅 유닛(도시되지 않음)으로 송신된다.
이제 도 2를 참조하면, 병렬 아키텍처 프로세서(200)의 일 실시예가 도시된다. 다양한 실시예에서, 병렬 아키텍처 프로세서(200)는 조정 제어 유닛(250)을 통해 로컬 데이터 저장소(260)에 액세스하는 컴퓨팅 유닛(210A 내지 210D)을 갖는 그래픽 처리 유닛(GPU)이다. 일반적으로, GPU는 레인(220A 내지 220M) 간에 데이터를 공유하기 위해 컴퓨팅 유닛(210A 내지 210D) 각각에 대해 별개의 로컬 데이터 공유부를 포함한다. 그러나, 여기서, 로컬 데이터 공유부(260)는 컴퓨팅 유닛(210A 내지 210D) 간에 공유된다. 그리하여, 컴퓨팅 유닛(210A) 내의 하나 이상의 레인(220A 내지 220M)이 동작 모드에 기초하여 컴퓨팅 유닛(210D) 내의 하나 이상의 레인(220A 내지 220M)과 결과 데이터를 공유하는 것이 가능하다.
전술한 바와 같이, 병렬 아키텍처 프로세서(200)는 단일 명령 다중 데이터(SIMD) 연산과 같은 고도의 병렬 데이터 응용을 위해 최적화된 특수 목적의 집적 회로부를 포함한다. 다양한 실시예에서, 병렬 아키텍처 프로세서(200)는 비디오 그래픽 렌더링에 사용되는 그래픽 처리 유닛(GPU)이다. 도시된 바와 같이, 컴퓨팅 유닛(210A) 내의 레인(220A 내지 220M) 각각은 레지스터(222A) 및 산술 논리 유닛(arithmetic logic unit: ALU)(224A)을 포함한다. 컴퓨팅 유닛(210A 내지 210D)의 다른 컴퓨팅 유닛 내의 레인은 또한 유사한 구성 요소를 포함한다. 다양한 실시예에서, 레지스터(222A)는 피연산자(operand) 및 결과를 저장하기 위한 레지스터 파일로서 사용되는 저장 요소이다.
다양한 실시예에서, ALU(224A) 내의 데이터 흐름은 파이프라인으로 연결된다. ALU(224A)는 파이프라인 레지스터, 중간 결과를 저장하기 위한 데이터 구조부, 및 정수 연산, 부동 소수점 연산, 부울리안 논리 연산, 분기 조건 비교 등을 수행하기 위한 회로부를 포함한다. 이러한 구성 요소는 설명의 편의를 위해 도시되어 있지 않다. 레인(220A 내지 220M)에 걸쳐 주어진 행(row) 내의 컴퓨팅 유닛 각각은 동일한 컴퓨팅 유닛이다. 이 컴퓨팅 유닛 각각은 동일한 명령으로 동작하지만, 다른 스레드와 연관된 상이한 데이터로 동작한다.
컴퓨팅 유닛(210A) 내의 레인(220A 내지 220M) 각각은 명령을 위해 캐시(230)에 액세스한다. 또한, 캐시(230)는 레지스터(222A)에 로딩할 피연산자 데이터를 저장한다. 비디오 그래픽 렌더링을 수행하는 실시예에서, 캐시(230)는 레벨 1 (L1) 텍스처 캐시(texture cache)라고 지칭된다. 컴퓨팅 유닛(210A 내지 210D) 각각은 컴퓨팅 유닛(210A 내지 210D)에 대한 전체 데이터 공유부로서 작용하는 공유된 L2 캐시(도시되지 않음)에 추가 액세스를 갖는다. 예를 들어, 다양한 실시예에서, 컴퓨팅 유닛(210A 내지 210D) 각각은 공유된 L2 캐시로부터 데이터를 저장하고 검색하기 위해 캐시(230) 위 상부에 논리적으로 배치된 캐시 제어기를 포함한다.
전술한 바와 같이, 레인(220A 내지 220M) 각각은 별개의 스레드에 대한 데이터를 처리한다. 컴퓨팅 유닛(210A 내지 210D) 각각은 주어진 작업 유닛에 대한 스레드를 처리한다. 운영 체제(OS) 스케줄러 또는 사용자-레벨 스케줄러는 라운드 로빈(round-robin) 방식, 우선 순위 방식, 이용 가능성 방식 또는 이들의 조합과 같은 다양한 방식을 사용하여 병렬 아키텍처 프로세서(200)를 갖는 컴퓨터 시스템에서 실행되는 작업 부하(workload)를 스케줄링한다. 대안적으로, 프로그래머는 런타임 시스템과 함께 작업 부하를 스케줄링한다. 이러한 경우, 프로그래머는 소프트웨어 플랫폼을 이용하여 스케줄링을 수행한다. 예를 들어 OpenCL
Figure 112019062938013-pct00001
(Open Computing Language) 프레임워크는 이기종 컴퓨팅 환경 전반에 걸쳐 프로그래밍을 지원하고, 이기종 컴퓨팅을 위해 낮은 레벨의 애플리케이션 프로그래밍 인터페이스(Application Programming Interface: API)를 포함한다.
OpenCL 프레임워크(일반적으로 본 명세서에서 "OpenCL"이라고 함)는 실행 큐(execution queue)를 한정하는데 사용되는 C와 유사한 언어 인터페이스를 포함하고, 여기서 각 큐는 OpenCL 디바이스와 연관된다. OpenCL 디바이스는 범용 중앙 처리 유닛(CPU), GPU 또는 이기종 다중 코어 아키텍처에서 적어도 하나의 프로세서 코어를 갖는 다른 유닛일 수 있다. OpenCL 프레임워크에서 함수 호출은 OpenCL 컴퓨팅 커널(compute kernel) 또는 간단히 "컴퓨팅 커널"이라고 한다. 소프트웨어 프로그래머는 실행 큐에서 컴퓨팅 커널을 스케줄링한다. 컴퓨팅 커널은 하나 이상의 연산 작업 유닛을 생성하기 위해 하나 이상의 데이터 레코드와 매칭된다. 각 작업 유닛은 고유한 식별자(ID)를 갖는다. 컴퓨팅 유닛(210A 내지 210D) 각각은 OS에 의해 또는 소프트웨어 프로그래머에 의해 많은 작업 유닛 중 하나의 작업 유닛에 할당된다. 컴퓨팅 유닛(210A 내지 210D) 중 주어진 컴퓨팅 유닛 내의 레인(220A 내지 220M) 각각은 할당된 작업 유닛 내의 스레드를 할당받는다.
레인(220A 내지 220M) 각각은 로컬 데이터 공유부(260)에 액세스한다. 예를 들어, 다양한 실시예에서, 레인(220A 내지 220M) 각각은 로컬 데이터 공유부(260) 내에 할당된 공간을 갖는다. 컴퓨팅 유닛(210A 내지 210D) 중 주어진 컴퓨팅 유닛 내 레인(220A 내지 220M) 각각은 동일한 주어진 컴퓨팅 유닛 내의 다른 레인의 할당된 공간에 액세스를 갖는다. 예를 들어, 컴퓨팅 유닛(210A) 내의 레인(220A)은 컴퓨팅 유닛(210A) 내의 레인(220M)에 할당된 로컬 데이터 저장소(260) 내의 할당된 공간에 액세스를 갖는다. 컴퓨팅 유닛(210A) 내의 레인(220A 내지 220M)은 동일한 작업 유닛을 처리하는 것으로 인해 서로 할당된 공간에 액세스를 갖는다.
각각의 레인(220A 내지 220M)에 의해 생성된 요청은 데이터의 블록에 액세스를 시도한다. 다양한 실시예에서, 데이터의 블록 또는 데이터 블록은 연속적인 메모리 위치에 저장된 바이트의 세트이다. 데이터 블록에서 바이트의 수는 설계 선택에 따라 달라지며, 임의의 크기일 수 있다. 스케줄러(240)는 컴퓨팅 유닛(210A) 내의 레인(220A 내지 220M)에 의해 생성된 액세스 요청을 스케줄링하는데 사용된다. 생성된 액세스 요청은 스케줄러(240)로부터 조정 제어 유닛(250)을 통해 로컬 데이터 저장소(260)로 송신된다.
도시된 바와 같이, 로컬 데이터 공유부(260)는 다수의 파티션(262A 내지 262D)으로 분할된다. 다양한 실시예에서, 파티션(262A 내지 262D) 각각은 파티션(262A 내지 262D)의 임의의 다른 파티션과 오버랩되지 않는 별개의 파티션이다. 일부 실시예에서, 파티션(262A 내지 262D) 각각은 동일한 양의 데이터 저장부를 포함한다. 다른 실시예에서, 하나 이상의 파티션(262A 내지 262D)은 파티션(262A 내지 262D) 중 다른 파티션보다 더 적거나 또는 더 많은 데이터 저장부를 포함한다.
다양한 실시예에서, 파티션(262A 내지 262D)의 크기에 더하여 컴퓨팅 유닛(210A 내지 210D)과 파티션(262A 내지 262D) 사이의 할당은 운영 체제, 소프트웨어 프로그래머, 전용 제어 유닛 또는 다른 것에 의해 설정된다. 예를 들어, 일부 실시예에서, 프로그래밍 가능한 제어 및 상태 레지스터(도시되지 않음)는 할당을 설정하기 위해 특정 값을 저장한다. 펌웨어, 실행 소프트웨어 애플리케이션 또는 다른 소프트웨어는, 파티션(262A 내지 262D)의 크기를 한정하는 것에 더하여, 제어 및 상태 레지스터를 업데이트하여 컴퓨팅 유닛(210A 내지 210D) 및 파티션(262A 내지 262D)을 초기에 할당하고 이후 재할당하는데 사용된다. 다른 실시예에서, 컴퓨팅 유닛(210A 내지 210D) 및/또는 조정 제어 유닛(250) 내의 하드웨어 회로부에 의해 구현되는 제어 로직은 초기 할당, 후속 재할당 및 크기 변경을 수행한다.
다양한 실시예에서, 조정 제어 유닛(250)은 컴퓨팅 유닛(210A 내지 210D)에 걸쳐 공유 메모리 기능을 제공하는데 사용된다. 예를 들어, 다양한 실시예에서, 동일한 작업 유닛의 스레드는 컴퓨팅 유닛(210A 내지 210D) 중 단일 컴퓨팅 유닛에 스케줄링되기보다는 컴퓨팅 유닛(210A 내지 210D) 중 둘 이상의 컴퓨팅 유닛에 걸쳐 스케줄링된다. 효율적인 처리를 위해, 레인들 사이의 통신은 컴퓨팅 유닛(210A 내지 210D) 중 단일 컴퓨팅 유닛을 넘어 확장되어야 한다.
일례에서, 컴퓨팅 유닛(210A)은 파티션(262A)에 할당되고, 컴퓨팅 유닛(210D)은 파티션(262D)에 할당된다. 그러나, 나중에, 동일한 작업 유닛의 스레드는 2개의 컴퓨팅 유닛(210A 및 210D)에 걸쳐 스케줄링된다. 이제 효율적인 실행을 위해 컴퓨팅 유닛(210A) 내 하나 이상의 레인(220A 내지 220M)이 컴퓨팅 유닛(210D) 내 하나 이상의 레인(220A 내지 220M)과 통신할 필요가 있을 수 있다. 조정 제어 유닛(250)은 이러한 상황을 식별하고, 컴퓨팅 유닛(210A 및 210D) 중 선택된 컴퓨팅 유닛에 대해서 로컬 데이터 저장소(260)에 독점적으로 액세스하는 것을 제공한다.
조정 제어 유닛(250)에 의해 선택된 컴퓨팅 유닛은 주어진 시간 기간 동안 독점적인 액세스를 갖는다. 다양한 실시예에서, 주어진 지속 기간은 단일 클록 사이클이다. 따라서, 상기 예에서, 컴퓨팅 유닛(210A 및 210D)은 각 클록 사이클마다 로컬 데이터 저장소(260)에 독점적인 액세스를 교대로 갖는다. 다양한 실시예에서, 주어진 지속 기간은 프로그래밍 가능하다. 다른 실시예에서, 지속 기간은 클록 사이클의 다른 수에 기초하여 측정된다. 또 다른 실시예에서, 주어진 지속 기간은 액세스 요청의 수, 인코딩된 우선 순위, 요청자의 식별자(ID), 응답 데이터의 목적지의 ID, 가장 최근에 선택된 방식 등에 기초하여 측정된다. 조정 제어 유닛(250)에 의해 사용되는 로직의 보다 상세한 설명은 다음에 설명된다.
이제 도 3을 참조하면, 공유된 자원을 목표로 하는 액세스 요청을 처리하기 위한 방법(300)의 일 실시예가 도시된다. 논의를 위해, (도 4 및 도 5에서뿐만 아니라) 본 실시예에 있는 단계들은 순차적으로 도시된다. 그러나, 다른 실시예에서, 일부 단계는 도시된 것과 다른 순서로 일어나고, 일부 단계는 동시에 수행되고, 일부 단계는 다른 단계와 결합되고, 일부 단계는 존재하지 않는다.
다양한 실시예에서, 다수의 요청자가 공유된 자원에 액세스하기 위해 컴퓨팅 시스템에서 설정된다. 공유된 자원은 다수의 파티션으로 분할된다. 설정 공정의 일부는 다수의 요청자 각각을 다수의 파티션 중 하나의 파티션에 할당하는 것이다(블록 302). 할당은 하드웨어, 소프트웨어 또는 이들의 조합으로 구현된 로직에 기초한다. 운영 체제, 소프트웨어 프로그래머, 전용 제어 유닛 또는 다른 것은 할당을 수행한다. 또한, 일부 실시예에서, 파티션의 크기가 또한 설정 공정 동안 설정된다. 할당을 위해 최종 요청자에 도달하면(조건 블록(304)의 "예" 분기), 하나 이상의 소프트웨어 애플리케이션의 명령이 컴퓨팅 시스템에 의해 처리된다(블록 306).
하나 이상의 소프트웨어 애플리케이션의 처리 동안, 활성 요청자는 공유된 자원에 대해 액세스 요청을 생성한다(블록 308). 다양한 실시예에서, 생성된 액세스 요청은 다수의 파티션 중 하나의 파티션을 식별한다. 일부 실시예에서, 식별은 파티션의 식별자(ID)를 포함한다. 다른 실시예에서, 필드 또는 인코딩과 같은 지시는 간접적으로 파티션을 식별하고, 제어 로직은 지시에 기초하여 식별을 결정한다. 또 다른 실시예에서, 어드레스는 파티션과 연관된 주어진 어드레스 범위 내의 데이터 저장 위치를 지시함으로써 간접적으로 파티션을 식별한다. 다수의 파티션 중 하나의 파티션을 식별함으로써, 생성된 액세스 요청은 식별된 파티션을 목표로 한다. 목표로 하는 파티션은 할당된 파티션이거나 또는 할당되지 않은 파티션이다.
생성된 액세스 요청 중 그 어느 것도 할당되지 않은 파티션을 목표로 하는 것이 없다면(조건 블록(310)의 "아니오" 분기), 액세스 요청은 할당에 기초하여 서비스된다(블록 312). 각 액세스 요청은 할당된 파티션에 액세스하는 것이 허용된다. 그러나, 임의의 생성된 액세스 요청이 할당되지 않은 파티션을 목표로 하고 있다면(조건 블록(310)의 "예" 분기), 액세스 요청은 조정에 기초하여 서비스되어 전체 공유된 자원에 독점적인 액세스를 허용한다(블록 314). 예를 들어, 활성 요청자 각각은 주어진 지속 기간 동안 전체 공유된 자원에 독점적인 액세스를 얻는다. 다양한 실시예에서, 주어진 지속 기간은 클록 사이클의 수에 기초하여 측정된다. 다른 실시예에서, 주어진 지속 기간은 액세스 요청의 수에 기초하여 측정된다. 다양한 실시예에서, 주어진 지속 기간은 프로그래밍 가능하다. 일부 실시예에서, 주어진 지속 기간은 인코딩된 우선 순위, 요청자의 식별자(ID), 응답 데이터의 목적지의 ID, 가장 최근에 선택된 방식 등에 더 기초한다.
이제 도 4를 참조하면, 공유된 자원을 목표로 하는 액세스 요청을 처리하기 위한 방법(400)의 다른 실시예가 도시된다. 다수의 요청자가 공유된 자원 내의 파티션에 할당되었다. 전술한 바와 같이 요청자는 파티션 중 하나의 파티션을 식별하는 액세스 요청을 생성한다. 생성된 액세스 요청 중 그 어느 것도 할당되지 않은 파티션을 목표로 하는 것이 없다면(조건 블록(402)의 "아니오" 분기), 액세스 요청은 할당된 파티션에 액세스하는 것에 기초하여 서비스된다(블록 404). 각 액세스 요청은 할당된 파티션에 액세스하는 것이 허용된다. 다양한 실시예에서, 공유되지 않은 파티션들은 동시에 액세스된다. 명령의 처리는 계속되고(블록 406), 요청자는 액세스 요청을 생성한다.
임의의 생성된 액세스 요청이 할당되지 않은 파티션을 목표로 하고 있다면(조건 블록(402)의 "예" 분기), 공유된 자원에 충돌 없이 액세스하기 위해 하나의 요청자가 선택된다(블록 408). 다양한 실시예에서, 선택된 요청자는 할당되지 않은 파티션을 목표로 하는 액세스 요청을 생성한 요청자이다. 다른 실시예에서, 선택된 요청자는 현재 가장 최근에 선택된 요청자인 요청자이다. 일부 실시예에서, 가장 최근에 선택된 요청자가 되는 것은 요청자의 최종 액세스 요청이 서비스된 이후 경과 시간에 기초한다. 다른 실시예에서, 가장 최근에 선택된 요청자가 되는 것은 요청자에 서비스되는 액세스 요청의 수에 기초한다. 일부 실시예에서, 선택은 인코딩된 우선 순위, 요청자의 ID, 요청자와 연관된 컴퓨팅 유닛에 의해 처리되는 동작을 식별하는 것 등에 더 기초한다.
선택되지 않은 요청자는 중지된다(블록 410). 일부 실시예에서, 중지는 선택되지 않은 요청자가 공유된 자원에 액세스하는 요청을 송신하는 것을 방지하는 것을 포함한다. 다른 실시예에서, 중지는 선택되지 않은 요청자로부터 요청 큐에 저장된 액세스 요청을 선택하지 않는 것을 포함한다. 일부 실시예에서, 선택되지 않은 요청자의 ID는 큐에서 무시할 액세스 요청을 식별하는데 사용된다.
공유된 자원에서 임의의 파티션은 선택된 요청자에 의해 생성된 액세스 요청에 의해 액세스하는데 이용 가능하다(블록 412). 선택된 요청자에 의해 생성된 액세스 요청은 주어진 시간 기간 동안 공유된 자원에 독점적인 액세스를 갖는다. 전술한 바와 같이, 일부 실시예에서, 주어진 지속 기간은 클록 사이클의 수에 기초하여 측정된다. 다른 실시예에서, 주어진 지속 기간은 액세스 요청의 수에 기초하여 측정된다. 다양한 실시예에서, 주어진 지속 기간은 프로그래밍 가능하다. 일부 실시예에서, 주어진 지속 기간은 인코딩된 우선 순위, 요청자의 식별자(ID), 응답 데이터의 목적지의 ID, 가장 최근에 선택된 방식 등에 더 기초한다.
주어진 지속 기간에 도달하면, 조정을 사용하여 요청자의 선택을 전환하기 위한 지시가 설정된다. 현재 선택된 요청자가 선택 해제되고 중지된다. 블록(408)의 선택 단계에서 설명된 기준과 같이 이전에 사용된 조정 기준에 기초하여 다른 활성 요청자가 선택된다. 조정 논리에 기초한 선택은 현재 작업 부하가 완료되거나 재설정이 강제될 때까지 계속된다. 명령의 처리가 계속되고(블록 406), 요청자가 액세스 요청을 생성한다. 전술한 바로부터 알 수 있는 바와 같이 액세스 요청은 두 가지 모드 중 하나의 모드에서 처리된다. 생성된 액세스 요청 중 그 어느 것도 할당되지 않은 파티션을 목표로 하는 것이 없다면, 처리는 제1 모드에서 계속되고 여기서 할당된 파티션이 액세스 요청을 처리하는 데 이용 가능하다. 그러나 임의의 생성된 액세스 요청이 할당되지 않은 파티션을 목표로 하고 있다면, 처리는 제2 모드로 전환되고 여기서 전체 공유된 자원에 독점적인 액세스를 하기 위해 요청자가 선택된다.
이제 도 5를 참조하면, 공유된 자원을 사용하기 위해 액세스 요청의 소스를 선택하는 방법(500)의 일 실시예의 일반화된 블록도가 도시된다. 다수의 요청자가 공유된 자원 내의 파티션에 할당되었다. 전술한 바와 같이 요청자는 파티션 중 하나의 파티션을 식별하는 액세스 요청을 생성한다. 적어도 하나의 활성 요청자가 자원의 할당되지 않은 파티션에 액세스하는 요청을 하는 것으로 결정된다(블록 502). 활성 요청자 중 하나의 활성 요청자가 전체 자원에 독점적인 액세스를 하기 위해 그 다음 요청자로서 선택된다(블록 504). 전술한 바와 같이, 가장 최근에 선택된 방식, 인코딩된 우선 순위, 계류 중인 액세스 요청의 수, 이미 서비스된 액세스 요청의 수, 연관된 컴퓨팅 유닛에 의해 수행된 연산의 지시, 현재 계류 중인 요청의 경과 시간 등과 같은 많은 요인이 선택하는데 고려된다.
다양한 실시예에서, 선택된 요청자는 주어진 지속 기간 동안 공유된 자원의 각 파티션에 독점적인 액세스를 갖는다. 전술한 바와 같이 주어진 지속 기간은 다양한 요인에 기초한다. 선택된 요청자가 예를 들어 주어진 지속 기간 동안 공유된 자원에 액세스하지 않았다면(예를 들어, 조건 블록(506)의 "아니오" 분기), 선택된 요청자는 선택을 유지하고, 독점적 액세스로 공유된 자원에 계속 액세스한다(블록 508). 그러나, 선택된 요청자가 주어진 지속 기간 동안 공유된 자원에 액세스하였다면(조건 블록(506)의 "예" 분기), 선택된 요청자는 선택 해제된다(블록 510).
요청자가 가장 최근에 선택된 요청자인 것을 나타내는 지시가 설정된다(블록 512). 요청자의 작업 부하가 아직 완료되지 않았다면(조건 블록(514)의 "아니오" 분기), 방법(500)의 제어 흐름은 블록(504)으로 복귀하고, 여기서 공유된 자원에 독점적 액세스를 하기 위해 다른 요청자가 선택된다. 요청자의 작업 부하가 완료되었다면(조건 블록(514)의 "예" 분기), 요청자의 선택이 또한 완료된다(블록 516). 일부 실시예에서, 다른 작업 부하가 요청자에게 할당되었다면, 동작 모드는 공유된 자원의 할당된 파티션에만 액세스를 제공하도록 재설정된다.
전술한 실시예 중 하나 이상의 실시예는 소프트웨어를 포함한다는 것이 주목된다. 이러한 실시예에서, 방법 및/또는 메커니즘을 구현하는 프로그램 명령은 컴퓨터 판독 가능한 매체 상에 전달되거나 저장된다. 프로그램 명령을 저장하도록 구성된 다양한 유형의 매체도 이용 가능하고, 하드 디스크, 플로피 디스크, CD-ROM, DVD, 플래시 메모리, 프로그래밍 가능한 ROM(Programmable ROM: PROM), 랜덤 액세스 메모리(Random Access Memory: RAM) 및 다른 다양한 형태의 휘발성 또는 비-휘발성 메모리를 포함한다. 일반적으로 말하면, 컴퓨터로 액세스 가능한 저장 매체는 컴퓨터에 명령 및/또는 데이터를 제공하기 위해 사용 동안 컴퓨터에 의해 액세스 가능한 임의의 저장 매체를 포함한다. 예를 들어, 컴퓨터로 액세스 가능한 저장 매체는 예를 들어 디스크(고정식 또는 착탈식), 테이프, CD-ROM 또는 DVD-ROM, CD-R, CD-RW, DVD-R, DVD-RW 또는 블루-레이(Blu-Ray) 등과 같은 자기 매체 또는 광학 매체와 같은 저장 매체를 포함한다. 저장 매체는 RAM(예를 들어, 동기식 동적 RAM(SDRAM), DDR(Double Data Rate) (DDR, DDR2, DDR3 등) SDRAM, 저전력 DDR(LPDDR2 등) SDRAM, 램버스 DRAM(RDRAM), 정적 RAM(SRAM) 등), ROM, 플래시 메모리, 범용 직렬 버스(USB) 인터페이스 등과 같은 주변 인터페이스를 통해 액세스 가능한 비-휘발성 메모리(예를 들어, 플래시 메모리)와 같은 휘발성 또는 비-휘발성 메모리 매체를 더 포함한다. 저장 매체는 네트워크 및/또는 무선 링크와 같은 통신 매체를 통해 액세스 가능한 저장 매체뿐만 아니라 마이크로 전자 기계 시스템(microelectromechanical system: MEMS)을 포함한다.
추가적으로, 다양한 실시예에서, 프로그램 명령은 C와 같은 하이 레벨 프로그래밍 언어의 하드웨어 기능의 거동 레벨 설명 또는 레지스터 전송 레벨(register-transfer level: RTL) 설명, 또는 설계 언어(HDL), 예를 들어, 베릴로그(Verilog), VHDL, 또는 데이터베이스 포맷, 예를 들어, GDSII 스트림 포맷(GDSII)을 포함한다. 일부 경우에 설명은 합성 도구(synthesis tool)에 의해 판독되고, 이 합성 도구는 설명을 합성하여 합성 라이브러리로부터 게이트 목록을 포함하는 넷리스트를 생성한다. 넷리스트는 시스템을 포함한 하드웨어의 기능을 또한 나타내는 일련의 게이트를 포함한다. 그런 다음 넷리스트는 배치하고 라우팅되어 마스크에 적용될 기하 형상을 나타내는 데이터 세트를 생성한다. 마스크는 다양한 반도체 제조 단계에서 사용되어 시스템에 대응하는 반도체 회로 또는 회로들을 생성한다. 대안적으로, 컴퓨터로 액세스 가능한 저장 매체 상의 명령은 원하는 대로 넷리스트(합성 라이브러리를 갖거나 갖지 않음) 또는 데이터 세트이다. 추가적으로 명령은 카덴스(Cadence)
Figure 112019062938013-pct00002
, EVE
Figure 112019062938013-pct00003
및 멘토 그래픽스(Mentor Graphics)
Figure 112019062938013-pct00004
와 같은 공급업체로부터 하드웨어 기반 유형 에뮬레이터(emulator)에 의해 에뮬레이션을 하는데 사용된다.
상기 실시예는 상당히 상세히 설명되었지만, 전술한 내용을 완전히 이해하면, 이 기술 분야에 통상의 지식을 가진 자에게는 다양한 변형 및 수정이 명백해질 것이다. 다음의 청구 범위는 이러한 모든 변형 및 수정을 포함하도록 해석되어야 하는 것으로 의도된다.

Claims (20)

  1. 컴퓨팅 시스템으로서,
    복수의 파티션을 포함하는 공유된 자원;
    상기 공유된 자원의 상기 복수의 파티션 중 상이한 파티션에 각각 할당된 복수의 요청자 - 상기 복수의 요청자 각각은 상기 복수의 파티션에 대한 요청을 생성하도록 구성됨 - 와; 그리고
    상기 공유된 자원에 연결된 제어기를 포함하고,
    상기 공유된 자원에 액세스하기 위해 상기 복수의 요청자 중 복수의 활성(active) 요청자로부터 복수의 요청을 수신하는 것에 응답하여, 상기 제어기는,
    할당되지 않은 파티션을 목표로 하는 활성 요청자가 없다고 결정한 것에 응답하여, 상기 복수의 활성 요청자에게 할당된 파티션에 동시 액세스(simultaneous access)를 제공하고,
    할당되지 않은 파티션을 목표로 하는 활성 요청자가 있다고 결정한 것에 응답하여,
    상기 복수의 활성 요청자 중 제1 요청자를 선택하고;
    상기 제1 요청자에게 상기 복수의 파티션의 모든 파티션에 액세스하는 것을 제공하고; 그리고
    상기 제1 요청자에게 모든 파티션에 액세스하는 것을 제공할 때 상기 제1 요청자가 아닌 상기 복수의 요청자 각각이 상기 공유된 자원에 액세스하는 것을 중지시키도록 구성된, 컴퓨팅 시스템.
  2. 제1항에 있어서, 상기 제1 요청자는 상기 할당되지 않은 파티션을 목표로 하는 활성 요청자가 아닌, 컴퓨팅 시스템.
  3. 제1항에 있어서, 상기 제1 요청자는 상기 복수의 요청자 중 가장 최근에 선택된 활성 요청자인, 컴퓨팅 시스템.
  4. 제1항에 있어서, 상기 제어기는,
    상기 제1 요청자의 액세스 요청의 주어진 수가 완료되었다고 결정한 것; 및
    상기 복수의 요청자가 추가 액세스 요청을 갖는다고 결정한 것
    에 응답하여 상기 제1 요청자를 선택 해제하도록 더 구성된, 컴퓨팅 시스템.
  5. 제4항에 있어서, 상기 액세스 요청의 주어진 수는 단일 클록 사이클 내에서 서비스되는 액세스 요청의 수인, 컴퓨팅 시스템.
  6. 제4항에 있어서, 상기 제어기는,
    상기 제1 요청자가 상기 공유된 자원에 액세스하는 것을 중지시키고; 그리고
    상기 제1 요청자를 상기 복수의 요청자 중 가장 최근에 선택된 활성 요청자로 마킹하도록 더 구성된, 컴퓨팅 시스템.
  7. 제6항에 있어서, 상기 제어기는,
    상기 복수의 요청자 중 상기 제1 요청자와는 다른 제2 요청자를 선택하고;
    상기 선택된 제2 요청자에 대한 중지를 제거하고; 그리고
    상기 제2 요청자에게 상기 복수의 파티션의 모든 파티션에 액세스하는 것을 제공하도록 더 구성된, 컴퓨팅 시스템.
  8. 제1항에 있어서, 상기 공유된 자원은 그래픽 처리 유닛 내의 로컬 데이터 저장소이고, 상기 복수의 요청자 각각은 단일 명령 다중 데이터(single instruction multiple data: SIMD) 컴퓨팅 유닛인, 컴퓨팅 시스템.
  9. 방법으로서,
    제어기에 의해, 복수의 요청자 각각을 공유된 자원의 복수의 파티션의 상이한 파티션에 할당하는 단계 - 상기 복수의 요청자 각각은 상기 복수의 파티션에 대한 요청을 생성하도록 구성됨 - 와;
    상기 공유된 자원에 액세스하기 위해 상기 복수의 요청자 중 복수의 활성 요청자로부터 복수의 요청을 수신하는 것에 응답하여,
    할당되지 않은 파티션을 목표로 하는 활성 요청자가 없다고 결정한 것에 응답하여, 상기 제어기에 의해, 상기 복수의 활성 요청자에게 할당된 파티션에 동시 액세스를 제공하는 단계; 및
    할당되지 않은 파티션을 목표로 하는 활성 요청자가 있다고 결정한 것에 응답하여,
    상기 제어기에 의해, 상기 복수의 활성 요청자 중 제1 요청자를 선택하고;
    상기 제어기에 의해, 상기 제1 요청자에게 상기 복수의 파티션의 모든 파티션에 액세스하는 것을 제공하고; 그리고
    상기 제어기에 의해, 상기 제1 요청자에게 모든 파티션에 액세스하는 것을 제공할 때 상기 제1 요청자가 아닌 상기 복수의 요청자 각각이 상기 공유된 자원에 액세스하는 것을 중지시키는 단계를 포함하는, 방법.
  10. 제9항에 있어서, 상기 제1 요청자는 상기 할당되지 않은 파티션을 목표로 하는 활성 요청자가 아닌, 방법.
  11. 제9항에 있어서, 상기 제1 요청자는 상기 복수의 요청자 중 가장 최근에 선택된 활성 요청자인, 방법.
  12. 제9항에 있어서,
    상기 제1 요청자의 액세스 요청의 주어진 수가 완료되었다고 결정한 것; 및
    상기 복수의 요청자가 추가 액세스 요청을 갖는다고 결정한 것
    에 응답하여, 상기 제어기에 의해, 상기 제1 요청자를 선택 해제 결정하는 단계를 더 포함하는, 방법.
  13. 제12항에 있어서, 상기 액세스 요청의 주어진 수는 단일 클록 사이클 내에 서비스되는 액세스 요청의 수인, 방법.
  14. 제12항에 있어서,
    상기 제어기에 의해, 상기 제1 요청자가 상기 공유된 자원에 액세스하는 것을 중지시키는 단계; 및
    상기 제어기에 의해, 상기 제1 요청자를 상기 복수의 요청자 중 가장 최근에 선택된 활성 요청자로 마킹하는 단계를 더 포함하는, 방법.
  15. 제14항에 있어서,
    상기 제어기에 의해, 상기 복수의 요청자 중 상기 제1 요청자와는 다른 제2 요청자를 선택하는 단계;
    상기 제어기에 의해, 상기 선택된 제2 요청자에 대한 중지를 제거하는 단계; 및
    상기 제어기에 의해, 상기 제2 요청자가 상기 복수의 파티션 중 임의의 파티션에 액세스하는 것을 허용하는 단계를 더 포함하는, 방법.
  16. 제9항에 있어서, 상기 공유된 자원은 그래픽 처리 유닛 내의 로컬 데이터 저장소이고, 상기 복수의 요청자 각각은 단일 명령 다중 데이터(SIMD) 컴퓨팅 유닛인, 방법.
  17. 제어기로서,
    복수의 파티션을 포함하는 공유된 자원에 연결된 제1 인터페이스;
    상기 공유된 자원의 상기 복수의 파티션의 상이한 파티션에 각각 할당된 복수의 요청자에 연결된 제2 인터페이스 - 상기 복수의 요청자 각각은 상기 복수의 파티션에 대한 요청을 생성하도록 구성됨 - 와; 그리고
    제어 유닛을 포함하고,
    상기 공유된 자원에 액세스하기 위해 상기 복수의 요청자 중 복수의 활성 요청자로부터 복수의 요청을 수신하는 것에 응답하여, 상기 제어기는,
    할당되지 않은 파티션을 목표로 하는 활성 요청자가 없다고 결정한 것에 응답하여, 상기 복수의 활성 요청자에게 할당된 파티션에 동시 액세스를 제공하고,
    할당되지 않은 파티션을 목표로 하는 활성 요청자가 있다고 결정한 것에 응답하여,
    상기 복수의 활성 요청자 중 제1 요청자를 선택하고;
    상기 제1 요청자에게 상기 복수의 파티션의 모든 파티션에 액세스하는 것을 제공하고; 그리고
    상기 제1 요청자에게 모든 파티션에 액세스하는 것을 제공할 때 상기 제1 요청자가 아닌 상기 복수의 요청자 각각이 상기 공유된 자원에 액세스하는 것을 중지시키도록 구성된, 제어기.
  18. 제17항에 있어서, 상기 제1 요청자는 상기 할당되지 않은 파티션을 목표로 하는 활성 요청자가 아닌, 제어기.
  19. 제17항에 있어서, 상기 제어 유닛은,
    상기 제1 요청자의 액세스 요청의 주어진 수가 완료되었다고 결정한 것; 및
    상기 복수의 요청자가 추가 액세스 요청을 갖는다고 결정한 것
    에 응답하여 상기 제1 요청자를 선택 해제하도록 더 구성된, 제어기.
  20. 제19항에 있어서, 상기 제어 유닛은,
    상기 제1 요청자가 상기 공유된 자원에 액세스하는 것을 중지시키고; 그리고
    상기 제1 요청자를 상기 복수의 요청자 중 가장 최근에 선택된 활성 요청자로 마킹하도록 더 구성된, 제어기.
KR1020197017661A 2016-11-23 2017-11-21 듀얼 모드 로컬 데이터 저장 KR102493859B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/360,205 2016-11-23
US15/360,205 US10073783B2 (en) 2016-11-23 2016-11-23 Dual mode local data store
PCT/US2017/062853 WO2018098183A1 (en) 2016-11-23 2017-11-21 Dual mode local data store

Publications (2)

Publication Number Publication Date
KR20190082308A KR20190082308A (ko) 2019-07-09
KR102493859B1 true KR102493859B1 (ko) 2023-01-31

Family

ID=57544333

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197017661A KR102493859B1 (ko) 2016-11-23 2017-11-21 듀얼 모드 로컬 데이터 저장

Country Status (6)

Country Link
US (1) US10073783B2 (ko)
EP (1) EP3327570A1 (ko)
JP (1) JP7246308B2 (ko)
KR (1) KR102493859B1 (ko)
CN (1) CN110023904B (ko)
WO (1) WO2018098183A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10445850B2 (en) * 2015-08-26 2019-10-15 Intel Corporation Technologies for offloading network packet processing to a GPU
WO2020185623A1 (en) 2019-03-08 2020-09-17 Mobileye Vision Technologies Ltd. Priority based management of access to shared resources
CN111506350A (zh) * 2020-04-30 2020-08-07 中科院计算所西部高等技术研究院 具有ooda循环分区机制的流式处理器
TWI817039B (zh) * 2020-09-08 2023-10-01 以色列商無比視視覺科技有限公司 用以管理多個啟動器存取共享資源之方法及系統以及相關電腦程式產品

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150310900A1 (en) * 2014-04-25 2015-10-29 Apple Inc. Request aggregation with opportunism

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5265232A (en) 1991-04-03 1993-11-23 International Business Machines Corporation Coherence control by data invalidation in selected processor caches without broadcasting to processor caches not having the data
US5584017A (en) 1991-12-19 1996-12-10 Intel Corporation Cache control which inhibits snoop cycles if processor accessing memory is the only processor allowed to cache the memory location
JP2906805B2 (ja) * 1992-02-20 1999-06-21 富士通株式会社 メモリ共有型マルチプロセッサシステム
US6044446A (en) 1997-07-01 2000-03-28 Sun Microsystems, Inc. Mechanism to reduce interprocessor traffic in a shared memory multi-processor computer system
US7096323B1 (en) 2002-09-27 2006-08-22 Advanced Micro Devices, Inc. Computer system with processor cache that stores remote cache presence information
US6868485B1 (en) 2002-09-27 2005-03-15 Advanced Micro Devices, Inc. Computer system with integrated directory and processor cache
US7047322B1 (en) 2003-09-30 2006-05-16 Unisys Corporation System and method for performing conflict resolution and flow control in a multiprocessor system
US7023445B1 (en) 2004-04-12 2006-04-04 Advanced Micro Devices, Inc. CPU and graphics unit with shared cache
US7360032B2 (en) 2005-07-19 2008-04-15 International Business Machines Corporation Method, apparatus, and computer program product for a cache coherency protocol state that predicts locations of modified memory blocks
US7472253B1 (en) 2006-09-22 2008-12-30 Sun Microsystems, Inc. System and method for managing table lookaside buffer performance
US7669011B2 (en) 2006-12-21 2010-02-23 Advanced Micro Devices, Inc. Method and apparatus for detecting and tracking private pages in a shared memory multiprocessor
US9619428B2 (en) * 2008-05-30 2017-04-11 Advanced Micro Devices, Inc. SIMD processing unit with local data share and access to a global data share of a GPU
JP5233437B2 (ja) 2008-06-23 2013-07-10 トヨタ車体株式会社 自動車用表示装置、保護パネルの形状設計方法及び形状設計装置
US8667200B1 (en) 2009-09-22 2014-03-04 Nvidia Corporation Fast and highly scalable quota-based weighted arbitration
US20120159090A1 (en) * 2010-12-16 2012-06-21 Microsoft Corporation Scalable multimedia computer system architecture with qos guarantees
US10860384B2 (en) * 2012-02-03 2020-12-08 Microsoft Technology Licensing, Llc Managing partitions in a scalable environment
US9864638B2 (en) * 2012-06-22 2018-01-09 Intel Corporation Techniques for accessing a graphical processing unit memory by an application
CN105224886B (zh) * 2014-06-26 2018-12-07 中国移动通信集团甘肃有限公司 一种移动终端安全隔离方法、装置及移动终端

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150310900A1 (en) * 2014-04-25 2015-10-29 Apple Inc. Request aggregation with opportunism

Also Published As

Publication number Publication date
JP7246308B2 (ja) 2023-03-27
CN110023904A (zh) 2019-07-16
KR20190082308A (ko) 2019-07-09
US10073783B2 (en) 2018-09-11
CN110023904B (zh) 2021-11-02
WO2018098183A1 (en) 2018-05-31
JP2020500379A (ja) 2020-01-09
US20180143907A1 (en) 2018-05-24
EP3327570A1 (en) 2018-05-30

Similar Documents

Publication Publication Date Title
JP5859639B2 (ja) 異種コア用の自動負荷バランシング
KR102493859B1 (ko) 듀얼 모드 로컬 데이터 저장
JP6571078B2 (ja) メモリにアクセスするための並列処理装置、コンピュータにより実施される方法、システム、コンピュータ可読媒体
KR101559090B1 (ko) 이종 코어를 위한 자동 커널 마이그레이션
US10007527B2 (en) Uniform load processing for parallel thread sub-sets
US9710306B2 (en) Methods and apparatus for auto-throttling encapsulated compute tasks
KR100942740B1 (ko) 스케줄 제어 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체 및 스케줄 제어 방법
Hugo et al. Composing multiple StarPU applications over heterogeneous machines: a supervised approach
CN103197953A (zh) 推测执行和回滚
JP6260303B2 (ja) 演算処理装置及び演算処理装置の制御方法
US20120331278A1 (en) Branch removal by data shuffling
US10019283B2 (en) Predicting a context portion to move between a context buffer and registers based on context portions previously used by at least one other thread
JP2006155624A (ja) 仮想化ロジック
US20070101332A1 (en) Method and apparatus for resource-based thread allocation in a multiprocessor computer system
JP2015504541A (ja) マルチプロセッサ・コンピューティング・システムにおけるメモリ・アクセスを動的に最適化する方法、プログラム、及びコンピューティング・システム
Cong et al. Architecture support for domain-specific accelerator-rich cmps
US20190129754A1 (en) Trusted memory zone
JP6135392B2 (ja) キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法
US9244828B2 (en) Allocating memory and using the allocated memory in a workgroup in a dispatched data parallel kernel
US9898333B2 (en) Method and apparatus for selecting preemption technique
US8910181B2 (en) Divided central data processing
US8689230B2 (en) Determination of running status of logical processor
Ward Sharing non-processor resources in multiprocessor real-time systems
KR101952221B1 (ko) 캐시 부스팅과 경과시간 최소화를 통한 효율적인 멀티태스킹 그래픽처리장치
Abeydeera Optimizing throughput architectures for speculative parallelism

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant