KR102334511B1 - 작업 의존성 관리 - Google Patents

작업 의존성 관리 Download PDF

Info

Publication number
KR102334511B1
KR102334511B1 KR1020197038917A KR20197038917A KR102334511B1 KR 102334511 B1 KR102334511 B1 KR 102334511B1 KR 1020197038917 A KR1020197038917 A KR 1020197038917A KR 20197038917 A KR20197038917 A KR 20197038917A KR 102334511 B1 KR102334511 B1 KR 102334511B1
Authority
KR
South Korea
Prior art keywords
task
hardware
processor
memory
tasks
Prior art date
Application number
KR1020197038917A
Other languages
English (en)
Other versions
KR20200014378A (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 KR20200014378A publication Critical patent/KR20200014378A/ko
Application granted granted Critical
Publication of KR102334511B1 publication Critical patent/KR102334511B1/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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4405Initialisation of multiprocessor systems
    • 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/5016Allocation 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 the resource being the memory
    • 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/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/524Deadlock detection or avoidance
    • 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
    • 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/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/503Resource availability

Abstract

본 발명은 병렬 컴퓨팅에서 작업 의존성 관리의 하드웨어 가속에 관한 것이다. 특히, 하드웨어 기반 의존성 관리를 위한 솔루션이 제안되어, 중첩된 작업을 지원하고, 전용 하드웨어 메모리의 메모리 풀 조건으로 인한 시스템 교착 상태를 해결하고, 소프트웨어 런타임 및 하드웨어 가속의 시너지 동작을 통해 중첩된 작업이 처리될 때 해결할 수 없는 교착 상태를 해결한다. 또한 보다 큰 데이터 교환의 버퍼링된 비동기 통신을 도입하여, 멀티-코어 프로세서 요소를 통한 표준 액세스와 반대로, 멀티-코어 프로세서 요소의 지원을 덜 필요로한다. 본 발명은 동작 동안 성능 상의 이점, 제조 비용 절감 및 에너지 소비 절감을 달성하기 위해 멀티-코어 프로세서와 동일한 실리콘 다이에서 하드웨어 가속 프로세서로서 구현될 수 있다.

Description

작업 의존성 관리
본 발명은 작업 의존성(task dependency)를 관리하기 위한 기술 및 장치에 관한 것으로, 보다 상세하게는 멀티-코어 병렬 컴퓨팅 시스템에서의 중첩된 작업 의존성 관리의 하드웨어 가속과, 시스템 교착 상태를 해결하기 위한 하드웨어 및 소프트웨어의 공동 사용에 관한 것이다.
병렬 컴퓨팅은 멀티-코어 및 다수-코어 플랫폼에서 성능을 얻고 에너지 소비를 줄이는 유비쿼터스 원칙이 되었다. 한편, 병렬 영역 감지, 균등한 작업/업부 분배 및 그 동기화와 같은 중요한 과제들이 있다. 작업 기반 데이터 흐름 프로그래밍 모델은 이러한 과제를 해결하기 위해 빠르게 발전하고 있다. 이러한 모델 중에서 OpenMP, Intel의 TBB, StarS 및 OmpS가 가장 잘 알려져 있다. 작업-기반 데이터 흐름 프로그래밍 모델을 사용하여, 응용 프로그램은 런타임시 관리되는 의존성있는 작업들의 모음으로 표현될 수 있다. 런타임 관리는 컴파일러 시간 관리와 달리 하드웨어 리소스를 더 잘 활용할 수 있다. 중간 규모의 작업 크기로, 이러한 프로그래밍 모델은 높은 수준의 작업 병렬화를 활용할 수 있다. 그러나 세분화된 작업으로 런타임 관리 모델은 많은 수의 작업 또는 상호 의존적인 작업으로 작업(work)을 실행하고 실행된 작업에 따라 컨텍스트를 전환하는 데 관련된 런타임 오버 헤드로 인해 상이한 종류의 성능 저하에 시달린다.
이 결함을 극복하고 보다 정확한 작업 병렬화를 가능하게 하는 가장 직접적인 방법은 가장 많은 시간이 소요되는 런타임 기능을 하드웨어로 오프로드하여 런타임을 개선하는 것이다. 실제로 소프트웨어 런타임 오버 헤드는 주로 작업 생성, 의존성 분석 및 작업 예약으로 구성된다. 그 중에서도 작업 의존성 분석이 가장 시간 소모적인 기능이다. 하드웨어에서 이 부분을 가속화하는 데 중점을 둔다. 메인/작업자 스레드로부터 작업 의존성 분석을 제거함으로써, 다른 중요한 작업을 수행하는 데 더 많은 리소스를 사용할 수 있다.
이종성(heterogeneity) 및 작업 병렬성을 이용하기 위한 지시문으로 순차적 프로그램에 주석을 달기 위해 다양한 프로그래밍 모델이 종래 기술에서 사용된다. 예를 들어 데이터 의존성 방향으로 작업을 지정할 수 있다. 작업 간의 암시적 동기화는 의존성 분석에 의해 자동으로 관리되는 반면, 동기화 관리에서는 코드 실행이 재개될 수 있기 전에 모든 하위 작업이 완료될 때까지 스레드가 기다릴 것이다. 컴파일러가 프로그램에서 작업 주석을 찾으면 다음 명령문을 설명하고 작업을 만들기 위해 생성할 시간 시스템 호출을 도입한다. 실행시 런타임 시스템은 작업 생성을 관리하고 작업 의존성 그래프를 계산하며 의존성이 준비되어 실행될 수 있을 때 작업을 스케줄한다.
OpenMP 표준에서 중첩된 작업(nested tasks)은 의존성이 있거나 없는 다른 작업들에 의해 생성된 작업으로 정의된다. 병렬 프로그램의 프로그래밍 기능을 향상시키기 위해 일반적으로 중첩된 작업이 지원된다. 예를 들어 재귀 함수가 작업 인 재귀 코드에서, 주 작업이 너무 커서 분해될 수 있는 코드(예: 비디오 코딩)에서, 또는 작업을 갖도록 이미 프로그래밍된 라이브러리를 호출하기 위해 작업을 이용할 때에도, 중첩된 작업을 찾을 수 있다. 따라서 중첩된 작업 지원은 범용 코드를 실행하는 모든 작업 관리자의 필수 기능이다.
OpenMP 표준은 다음과 같이 중첩 작업에 대한 두 가지 제한 사항을 정의한다.
- 하위 작업은 상위 작업의 의존성 중 일부만 가질 수 있다.
- 하위 작업의 의존성은 형제 작업, 즉 동일한 상위의 하위 작업에만 영향을 준다.
중첩된 작업에 대한 지원은 거의 모든 소프트웨어 기반 작업 의존성 소프트웨어 관리자에서 구현된다. 지원하기가 쉽고 시스템은 최소 수백 메가 바이트 정도의 시스템 메모리를 사용하기 때문에 전체 메모리에서 문제없이 메모리 요구 사항을 처리하며 작업 의존성을 저장하기 위해 절대로 가득 찬 것으로 간주할 수 없다. 이 솔루션은 구현이 용이하여 메모리 처리에 대한 걱정없이 사용자가 쉽게 프로그래밍할 수 있다.
하드웨어 작업 의존성 관리에 대해 동일한 기술이 종래 기술에서 발견되지 않았다. 이 경우 작업 의존성 데이터와 스케줄링 데이터가 저장되는 전용 및 제한된 물리적 메모리의 물리적 처리를 처리해야 하는 것은 프로그래머이다. 이러한 경우 전용 메모리가 가득 차거나 중요한 메모리 충돌(메모리 교체가 불가능하여 이미 풀 상태인 메모리 엔트리에 데이터를 저장할 수 없는 경우)이 자주 발생한다. 중첩되지 않은 작업의 경우 메모리 공간을 사용할 수 있을 때까지 새로운 작업이 처리되지 않으므로 처리하기가 쉽다. 그러나 중첩된 작업이 존재하는 경우 모든 하위 작업의 의존성도 저장해야 하므로 상위 작업 의존성은 관리 중에 상당히 확장될 수 있다.
하드웨어 의존성 관리를 위한 하드웨어 지원의 종래 기술은 순수한 소프트웨어 기반 작업 의존성 관리에 비해 뛰어난 확장성 및 성능 향상을 보여 주었다. 그러나 종래 기술은 중첩된 작업을 지원하지 않으며, 동적 작업 기반 데이터 흐름 프로그래밍 모델 런타임 내에 하드웨어 지원으로 통합된 실제 시스템에서 평가되지도 않았다.
본 발명은 하드웨어 지원을 사용하여 런타임에서 중첩된 작업 의존성 관리를 효율적으로 처리하고 하드웨어 가속기의 전용 메모리에서 풀 메모리/임계 메모리 충돌의 결과로 발생하는 문제를 효율적으로 처리하는 문제에 대한 해결책을 제시한다.
또한 중첩된 작업을 처리할 때 교착 상태를 효율적으로 해결하고 특히 하드웨어와 소프트웨어 기반 런타임 작업 의존성 관리를 함께 사용하는 문제에 대한 솔루션을 제공한다. 이러한 조건은 풀 메모리 또는 중요한 메모리 충돌 상태를 검출하고, 새 작업의 수신을 중단하며, 나머지 작업을 위해 필요한 경우 로컬 메모리를 플러싱 및 재구성하는 메커니즘과 함께 하드웨어 가속기에서 전용 로컬 메모리를 사용하는 수정된 하드웨어 설정을 통해 또한 해결된다. 이 작업은 확장된 플래그 및 매개 변수에 의해 지원되어, 중첩된 작업의 상위를 식별하고 사용 가능한 메모리 공간 및 유효한 작업 식별 번호를 식별한다.
또한, 표준 프로세스에 멀티-코어 프로세서를 통한 메모리 액세스가 포함되도록 시스템 메모리 액세스에 대한 솔루션을 제공한다. 이 문제와 관련하여, 본 발명은 일반적인 메모리 액세스보다 빠르지만 시스템 구성 요소들 사이의 작은 데이터 교환이 성능을 저하시키기 때문에 여전히 매우 효율적이지 않은 DMA(Direct Memory Access)로 한 단계 발전한다. 이러한 메모리 액세스를 효율적으로 수행하기 위해, 본 발명은 버퍼 및 비동기 통신을 도입한다.
첫 번째 양상에서, 하드웨어 처리 시스템의 병렬 컴퓨팅 시스템에서 런타임에 작업 의존성을 관리하는 방법이 제안된다. 병렬 컴퓨팅 시스템은 런타임 소프트웨어를 실행하는 멀티-코어 프로세서, 하드웨어 가속 프로세서, 통신 모듈 및 게이트웨이를 포함할 수 있다. 이 방법은 병렬 컴퓨팅 시스템을 초기화하는 단계; 각각의 멀티-코어 프로세싱 요소에서 실행되는 각각의 스레드에 대해 시스템 메모리에 데이터 버퍼를 할당하는 단계; 버퍼링된 비동기 통신을 사용하여, 통신에 사용된 버퍼의 길이 및 시스템 메모리 어드레스를 하드웨어 가속 프로세서로 전송하는 단계; 상기 병렬 프로세싱 요소들에서 실행되는 스레드들을 우회하여 상기 버퍼들에 직접 액세스하는 하드웨어 가속 프로세서; 상기 하드웨어 가속 프로세서는 새로운 작업 버퍼를 판독하고 상기 하드웨어 가속 프로세서에 부착된 전용 로컬 메모리에서 메모리 풀(full) 조건 또는 임계 메모리 충돌을 감지하면, 새로운 작업 수신을 중지하도록 게이트웨이에게 지시하는 단계; 하드웨어 가속 프로세서는 마지막 판독 작업의 의존성을 계속 처리하는 단계; 마지막 판독 작업의 의존성 처리를 완료한 경우, 메모리 공간이 비워지고 다음 작업으로 처리가 계속되는 단계를 포함한다.
일부 예에서, 작업이 중첩된 작업 일 때, 방법은 제 1 하위 작업 의존성이 처리된 경우, 런타임 소프트웨어가 하드웨어 가속 프로세서로 하여금 작업 의존성을 계속 처리할 수 있게 하는 단계; 첫 번째 하위 작업 의존성이 처리되지 않은 경우, 새 작업 버퍼를 잠그고 모든 하위 작업을 제거하도록 스레드에 지시하기 전에 임계 값 시간에 도달하거나 새 작업 버퍼 상태를 점검할 때까지 대기하는 단계; 다른 작업에 의해 작성된 나머지 작업이 있는 경우 해당 포인터를 모두 업데이트하여 런타임 소프트웨어가 새 작업 버퍼를 재구성하는 단계; 상기 하드웨어 가속 프로세서가 상기 제 1 하위 작업의 상태를 점검하는 단계; 스레드가 작업을 순서대로 실행하거나 작업을 전체적으로 하위 작업과 함께 소프트웨어 작업 의존성 그래프 관리자에 제출하는 단계; 메모리 풀 또는 중요한 메모리 충돌 신호가 지워지면 작업 및 의존성 관리를 위해 런타임 소프트웨어가 하드웨어 가속 프로세서로 복귀하는 단계; 스레드가 순서대로 작업을 실행하거나, 작업을 전체로서 그 하위 의존성과 함께 소프트웨어 작업 의존성 그래프 관리자에게 제출하는 단계를 포함한다.
시스템이 프로세서 세트와 가속기 세트를 포함하는 경우, 가속기에 직접 순서대로 작업을 제출하는 것은 번거로울 수 있다. 풀(full) 신호로 인해 게이트웨이 모듈이 중지되면, 가속기가 하드웨어 작업 의존성 관리자(25)에 직접 연결된 시스템은 가속기에 대한 사용 가능한 연결이 없기 때문에 교착 상태에 빠질 수 있다. 이 문제를 해결하기 위해 다른 방법을 사용할 수 있다. 예를 들어, 가속기가 하드웨어 작업 관리자에만 연결된 경우, 시스템이 풀 상태인 경우에도 가속기에 대기 작업을 직접 제출하도록 바이패스가 포함될 수 있다. 대안으로서 또는 추가적으로, 하드웨어 작업 관리자와 병렬로 작동하는 간단한 가속기 하드웨어 관리자(30)가 구현되어 바이패스로서 사용될 수 있다. 가속기로 직접 작업을 보내도록 구성된 소프트웨어 가속기 관리자도 사용할 수 있다. 이러한 경우에 있어서, 필요한 통신을 수행하기 위해 가속기와 선택된 메커니즘 사이의 특정 연결이 생성될 수 있다.
다른 양상에서, 멀티-코어 프로세서에서 런타임 작업 의존성 관리를 위한 하드웨어 가속 프로세서가 제안된다. 멀티-코어 프로세서는 슬레이브 모드에서 동작하는 상호 연결된 프로세서 요소들을 포함할 수 있다. 하드웨어 가속 프로세서는: 멀티-코어 프로세서, 시스템 메모리 및 기타 주변 장치 모듈의 상호 연결된 프로세싱 요소들과 통신하기 위한 데이터 통신 로직; 게이트웨이 요소의 동작을 수정하기 위한 제어 로직 - 상기 게이트웨이 요소는 멀티-코어 프로세서의 프로세싱 요소들에서 실행되는 복수의 스레드로부터 새로운 작업 및 완료된 작업을 제공함; 하드웨어 가속 프로세서에 의해 관리되는 데이터 특성화 작업 및 작업 의존성을 저장하는 전용 로컬 메모리; 및 멀티-태스크 병렬 동작에서 교착 상태를 해결하기 위한 제어 로직 - 상기 제어 로직은 작업 의존성을 강화하고 작업 데이터를 유지함 - 을 포함할 수 있다.
다른 양상에서, 컴퓨터 프로그램 제품이 개시된다. 컴퓨터 프로그램 제품은 본 명세서에 개시된 일부 예에 따라 병렬 컴퓨팅 시스템에서 런타임에 작업 의존성을 관리하는 방법을 컴퓨팅 시스템으로 하여금 수행하게 하는 프로그램 명령어를 포함할 수 있다.
컴퓨터 프로그램 제품은 저장 매체(예를 들어, CD-ROM, DVD, USB 드라이브, 컴퓨터 메모리 또는 판독 전용 메모리) 상에 구현되거나 캐리어 신호(예를 들어, 전기 또는 광 캐리어 신호)에 실릴 수 있다. .
컴퓨터 프로그램은 소스 코드, 객체 코드, 코드 중간 소스 및 객체 코드, 예컨대 부분적으로 컴파일된 형태, 또는 프로세스의 구현에 사용하기에 적합한 임의의 다른 형태일 수 있다. 캐리어는 컴퓨터 프로그램을 운반할 수 있는 임의의 실체 또는 장치 일 수 있다.
예를 들어, 캐리어는 ROM, 예를 들어 CD ROM 또는 반도체 ROM과 같은 저장 매체, 또는 자기 기록 매체, 예를 들어 하드 디스크를 포함할 수 있다. 또한, 캐리어는 전기적 또는 광학적 신호와 같은 전송 가능한 캐리어일 수 있으며, 전기적 또는 광학적 케이블을 통해 또는 무선 또는 다른 수단에 의해 전달될 수 있다.
컴퓨터 프로그램이 케이블 또는 다른 장치 또는 수단에 의해 직접 전달될 수 있는 신호로 구현될 때, 캐리어는 그러한 케이블 또는 다른 장치 또는 수단에 의해 구성될 수 있다.
대안으로서, 캐리어는 컴퓨터 프로그램이 내장된 집적 회로일 수 있고, 집적 회로는 관련 방법의 수행에 또는 실현에 사용하기에 적합하다.
도 1은 작업 스케줄링 및 의존성 관리를 위한 하드웨어 가속 프로세서를 갖는 단일-칩 멀티-코어 프로세서를 도시한다.
도 2는 작업 스케줄링 및 의존성 관리를 위한 하드웨어 가속 프로세서의 내부 하드웨어 아키텍처를 도시한다.
도 3a는 하드웨어 가속 프로세서에 의해 새로운 작업을 처리하는 것과 관련된 단계의 흐름도를 도시한다.
도 3b는 하드웨어 가속 프로세서에 의해 완료된 작업을 처리하는 것과 관련된 단계의 흐름도를 도시한다.
도 4a는 신규 작업을 판독하는 것과 관련된 단계의 흐름도를 도시한다.
도 4b는 대기 작업을 기록하는 것과 관련된 단계의 흐름도를 도시한다.
도 4c는 완료 작업을 판독하는 것과 관련된 단계의 흐름도를 도시한다.
도 5는 작업 의존성을 관리하기 위해 런타임 소프트웨어가 하드웨어 가속 프로세서를 작동시키는 단계를 도시한 도면이다.
도 6a는 중첩되지 않은 작업의 의존성 관리와 관련된 단계의 흐름도를 도시한다.
도 6b는 중첩된 작업의 의존성 관리와 관련된 단계의 흐름도를 도시한다.
"예시적인"이라는 단어는 본 명세서에서 "예, 실례 또는 예시로서 기능하는"을 의미하는 것으로 사용된다. 본 명세서에서 "예시적인"것으로 설명된 임의의 예는 반드시 다른 실시예들보다 바람직하거나 유리한 것으로 해석될 필요는 없다.
약어 "OmpSs"는 "작업 기반 프로그래밍 모델 OmpSs"를 의미한다.
약어 "TBB"는 "나사 빌딩 블록"(Thread Building Blocks)을 의미한다.
약어 "StarSs"는 "작업 기반 프로그래밍 모델 StarSs"를 의미한다.
약어 "GW"는 "게이트웨이"를 의미한다.
약어 "TRS"는 "작업 예약 스테이션"(Task Reservation Station)을 의미한다.
약어 "DCT"는 "종속 체인 추적기"(Dependence Chain Tracker)를 의미한다.
약어 "TM"은 "작업 메모리"(Task Memory)를 의미한다.
약어 "Task_ID"는 "작업 신원"을 의미한다.
약어 "VM"은 "버전 메모리"를 의미한다.
약어 "DM"은 "종속 메모리"를 의미한다.
약어 "ARB"는 "중재인"(Arbiter)을 의미하는 것으로 의도된다.
약어 "H/W"는 "하드웨어"를 의미한다.
약어 "S/W"는 "소프트웨어"를 의미한다.
약어 "FIFO"는 "선입 선출"을 의미한다.
약어 "N #"은 "신규 작업 정보 #"를 의미한다.
약어 "F #"는 "완료 작업 정보 #"를 의미한다.
약어 "Picos++_ID"는 "작업 메모리 유닛의 엔트리"를 의미한다.
약어 "DMA"는 "직접 메모리 액세스"를 의미한다.
약어 "ID"는 "신원"을 의미한다.
약어 "CPU"는 "중앙 처리 장치"를 의미한다.
본원 및 청구 범위에 사용된 바와 같이, 단수 형태 "a"및 "the"는 문맥 상 명백하게 다르게 지시하지 않는 한, 복수의 지시 대상을 포함한다. 따라서, 예를 들어, "일 처리 코어 요소"에 대한 언급은 컴퓨팅, 전자 및 병렬 처리에 숙련된 자들에게 알려진 하나 또는 복수의 이러한 요소 및 그 등가물을 포함한다.
본 명세서 및 청구 범위에 사용된 바와 같이, 용어 "메모리"는 달리 명시되지 않는 한, 임의의 공지된 기술 및 구성으로 구현되는 임의의 유형의 메모리 소자의 의미를 갖는다.
본 발명은 병렬 컴퓨팅에서 작업 의존성 관리의 하드웨어 가속 문제를 처리한다. 특히, 하드웨어 기반 의존성 관리 솔루션을 통해 중첩된 작업을 지원하고, 전용 하드웨어 메모리의 메모리 풀 조건으로 인한 시스템 교착 상태를 해결하고 소프트웨어 런타임 및 하드웨어 가속의 시너지 동작을 통해 중첩된 작업이 처리될 때 해결 불가능한 교착 상태를 해결하기 위한 솔루션을 교시한다. 또한, 멀티-코어 프로세서 요소를 통한 표준 액세스와 반대로 멀티-코어 프로세서 요소로부터의 지원을 덜 필요로하는, 보다 큰 데이터 교환의 버퍼링된 비동기식 통신이 도입된다.
본 발명은 동작 동안 성능 상의 이점, 제조 비용 절감, 및 에너지 소비 절감을 달성하기 위해 멀티-코어 프로세서와 동일한 실리콘 다이에서 하드웨어 가속 프로세서로서 구현될 수 있다.
도 1은 작업 스케줄링 및 의존성 관리를 위한 하드웨어 가속 프로세서를 갖는 단일-칩 멀티-코어 프로세서를 도시한다. 단일-칩 멀티-코어 프로세서(10)는 멀티-코어 프로세서(100), 시스템 메모리(140), 시스템 데이터 버스(150) 및 하드웨어 가속 모듈(160)을 포함할 수 있다.
멀티-코어 프로세서(100)는 시스템 데이터 버스(150)에 액세스하고 시스템 메모리(140) 및 하드웨어 가속 모듈(160)과 통신하기 위한 모든 관련 통신 로직을 갖는 적어도 2 개의(최대 n) 상호 연결된 처리 코어(110, 120, 130)를 포함할 수 있다. 멀티-코어 요소는 슬레이브 모드에서 동작하도록 구성되고, 하드웨어 가속 모듈(160) 내 하드웨어 가속 프로세서(180)에 의해 제어된다. 시스템 메모리는 원형 FIFO로서 관리되는 3 개의 버퍼를 포함할 수 있다. 각 버퍼는 최대 N 개의 유닛을 저장하며, 여기서 각 유닛은 하나의 작업을 나타내고 하나 이상의 작업이 해당하는 동일 스레드에 의해 생성되며, 각 스레드는 멀티-코어 프로세싱 요소 중 하나로 실행된다. 본 발명의 대안적인 예에서, 하나보다 많은 스레드가 각각의 멀티-코어 프로세싱 요소에서 실행된다. 또 다른 예에서, 멀티-코어 프로세싱 요소는 상이한 유형의 것이다.
예로서, 새로운 작업 버퍼 내의 각 유닛은 Task_ID(8 바이트 길이), 의존성 수(4 바이트), 제 1 의존성 메모리 어드레스 및 방향(12 바이트),… 등등의 필드를 포함하여, 최대 15개의 의존성, 총 192 바이트를 포함할 수 있다. 컴파일 시간에 의존성의 수가 알려져 있으므로, 더 많은 의존성이 있는 경우, 순차적 실행으로 표시되므로 메모리 풀 상태/중요 메모리 충돌 상태로 인한 시스템 교착 상태를 피할 수 있다. 각 대기 작업 유닛에는 Task_ID 및 Picos++_ID(4 바이트)가 포함된다. 완료된 각 작업은 Picos++_ID로 표시된다. 새 작업과 완료된 작업 유닛의 Task_ID 및 Picos++_ID 필드의 특수 값은 유효한 작업을 나타 내기 위해 예약되어 있으며, 대기 작업 유닛의 Picos++_ID의 특수 값은 이 유닛 내 빈 공간을 나타내는 데 사용된다. 이 예의 수정은 다른 크기와 유형의 버퍼가 사용되는 경우에 존재하며, 임의의 수와 길이의 필드가 다른 특수 값과 함께 주입된다.
대안적인 예에서, 하드웨어 가속 프로세서(180)는 멀티-코어 프로세서 요소(110, 120, 130) 중 하나와 직접 통신하며, 이 멀티-코어 프로세서 요소는 나머지 멀티-코어 프로세서 요소(110, 120, 130)의 마스터로서 동작하도록 구성된다.
하드웨어 가속 모듈(160)은 게이트웨이(GW)(170), 하드웨어 가속 프로세서(180) 및 전용 메모리(190)를 포함할 수 있다. GW(170)는 멀티-코어 프로세서 요소(110, 120, 130)로부터 신규 및 완료 작업을 페치하여, 이들을 하드웨어 가속 프로세서(180)에 모두 수용되는 작업 예약 스테이션(TRS) 및 종속 체인 추적기(DCT)에게로 디스패치한다.
단일-칩 멀티-코어 프로세서(10)는 도 1에 도시되지 않은 추가 모듈 및 요소를 포함할 수 있다. 또한, 대안적인 예는 본 발명의 내용을 벗어나지 않으면서 도 1의 수정된 버전을 사용할 수 있다.
도 2는 작업 스케줄링 및 의존성 관리를 위한 하드웨어 가속 프로세서의 내부 하드웨어 아키텍처를 도시한다. 이 프로세서(200)는 데이터에 액세스하기 위한 데이터 통신 모듈(205)(및 제어 버스, 도 1에 도시되지 않음), 게이트웨이(220), 통합된 전용 로컬 작업 메모리(TM)(265)를 갖는 TRS(260), 통합된 전용 로컬 의존성 메모리(DM)(285) 및 버전 메모리(VM)(290)를 갖는 DCT(280), 통합 전용 로컬 폴-백 메모리(293), 중재자(ARB)(250), 작업 스케줄러(TS)(296) 및 FIFO 대기열(210, 215, 225, 230, 235, 240, 245, 255, 270, 275)을 포함할 수 있다.
하드웨어 가속 프로세서(200)는 특히 복잡한 의존성 패턴으로 많은 수의 세밀한 작업을 관리해야 하는 경우 작업 기반 데이터 흐름 프로그래밍 모델에 대한 작업 의존성 그래프 관리를 가속화하는 데 사용된다. 런타임 소프트웨어 측면에서, 하드웨어 가속 프로세서(200)는 작업 생성시 시스템 메모리로부터 새로운 작업 및 의존성을 판독하는 블랙 박스로 보일 수 있고, 시스템 메모리에 실행 준비된 작업을 기록하며, 완료된 작업을 처리할 수 있다.
GW(220)는 멀티-코어 프로세서 요소(110, 120, 130)로부터 신규 및 완료된 작업을 페치하여 하드웨어 가속 프로세서(180)에 포함된 작업 예약 스테이션(TRS)(260) 및 의존 체인 추적기(DCT)(280)로 디스패치한다. TRS(260)는 주요 작업 관리 단위이며 새로운 작업의 준비 상태를 추적하고 완료된 작업의 삭제를 관리한다. 이것은 작업 메모리(TM)(265)를 포함한다. 예로서, 본 발명의 범위를 제한하지 않으면서, TM(265)은 256 개의 엔트리를 위한 공간을 가지며, 각 엔트리는 256 개의 작업에 대응한다. 각 엔트리에는 작업 신원(Task_ID), 작업 당 의존성 수(#Deps), 각 의존성이 저장된 DCT의 위치 및 이 의존성의 다음 작업 소비자에 대한 참조가 저장된다.
DCT(280)는 주요 의존성 관리 유닛이다. DM(285) 및 VM(290)이라는 두 개의 통합 전용 로컬 메모리를 통해 작업 의존성을 관리한다. DM(285)는 의존성의 메모리 주소를 태그로 저장하고, 데이터 의존성 추적을 위해 이전에 도착한 항목에 대해, 새로운 각각의 의존성마다 각각에 대한 주소 매칭을 수행한다.
VM(290)은 일련의 작업 소비자 및 모든 참조의 생산자를 동일한 의존성 주소(즉, "버전")에 대한 모든 참조의 작업 체인 소비자 및 생산자를 유지한다.
ARB(250)는 스위치로서 작용하고 TRS(260)와 DCT(280) 사이의 FIFO 큐(245, 255, 270, 275)를 다중화한다.
TS(296)는 준비된 모든 작업을 저장하고 유휴 작업자에게 예약한다. 각 구성 요소 쌍은 FIFO 대기열과 연결되어 비동기식 통신이 가능하다.
폴-백 메모리(293)는 전용 로컬 의존성 메모리(DM)가 가득차거나 임계 메모리 충돌에 도달할 때 마지막 예비로서만 사용될 수 있다. 다른 예들에서, 폴-백 메모리(293)는 전용 로컬 메모리들(TM, DM, VM) 중 하나가 가득 찼거나 중요한 메모리 충돌에 도달할 때 마지막 예비로 사용될 수 있다. 일단 사용되면, 메모리 풀 신호는 GW(220)로 전송되어 교착 상태 방지 메커니즘이 이후에 제시된 바와 같이 중첩된 작업의 관리를 처리한 후 신호가 없어 질 때까지 새로운 작업 수신을 중지시킨다.
도 2는 또한 새로운(라벨링 N#) 및 완료된(라벨링 F#) 작업을 처리할 때의 동작 흐름의 시퀀스를 도시한다(이 예에서는 N1-N6 및 F1-F4).
도 3a는 하드웨어 가속 프로세서에 의해 새로운 작업을 처리하는 것과 관련된 단계의 흐름도를 도시한다. 이 방법은 멀티-코어 프로세싱 요소(110, 120, 130)로부터 GW(300)에 도착하는 새로운 작업으로 시작한다. GW(300)는 새로운 작업 메타 데이터 및 의존성(310)을 판독하고(N1), TRS(313)로부터 자유 TM 엔트리를 얻으며(N2), 새로운 작업(316)를 TRS(303)에 분배하고(N3), 새로운 작업(323)의 의존성을 DCT(306)에 분배한다(N4).
TRS(303)는 작업 정보를 대응하는 TM(265) 엔트리에 Task_ID 및 #Deps로 저장한다. DCT(306)는 각각의 새로운 작업의 의존성을 이전(326) 이전에 수신한 이전 작업의 의존성과 매칭한다. 일치(330)가 있는 경우, DCT(306)는 작업 의존성 일치(333)를 저장하고, 소비자/생산자 작업 의존성 일치(336)를 TRS(303)에게 통지하고(N5), 의존성 준비 상태인 경우, 일치하지 않으면(330), DCT(306)는 TRS(303)에게 의존성이 준비되었다는 것을 통지한다(340)(N5).
TRS(303)는 DCT(343)로부터 수신한 모든 통지를 처리한다. 하나 이상의 의존성이 준비되지 않은 경우, DCT(306)에 제어를 남겨서, 각각의 새로운 작업의 의존성을 이전에 수신된 이전 작업의 의존성에 계속 일치시키도록한다(326). 모든 의존성이 대기 상태인 경우(346), TRS(303)는 작업을 대기 상태(348)로 표시한다(N6).
도 3b는 하드웨어 가속 프로세서에 의해 완료된 작업을 처리하는 것과 관련된 단계의 흐름도를 도시한다.
이 방법은 GW(350)가 멀티-코어 프로세싱 요소(110, 120, 130)로부터 완료된 작업(360)을 판독하고(F1) 이를 TRS 363으로 전달(F2)하는 것으로 시작한다. TRS(353)는 DCT(280)에서의 각각의 의존성 위치에 대한 대응하는 TM(265) 엔트리를 점검한다. 각각의 위치에 대해, TRS(353)는 하나의 완료된 의존성(370)을 DCT(280)에 전송한다(F3).
DCT(280)는 각각의 완료된 의존성(373)에 대해 DM(285) 및 VM(290)을 검사하고 완료된 의존성의 모든 인스턴스를 삭제하거나 이전에 준비되지 않은 의존성의 다음 버전을 깨운다(376)(F4).
이 방법은 TRS(353)가 준비된 메시지를 다음 참조된 작업 소비자(있는 경우)에게, 각 깨워진 의존성(380)(F4)에 대하여 전송하면서 종료된다(380)(F4).
도 4a, 도 4b 및 도 4c는 하드웨어 가속 프로세서-일반 프로세서 통신 메커니즘의 흐름도를 도시한다. 이러한 통신에는 새 작업 버퍼, 준비된(또는 '대기'로 표현) 작업 버퍼 및 완료된 작업 버퍼의 세 가지 버퍼가 필요하다.
도 4a는 도 3a에 기술된 프로세스 이전에, 새로운 작업 버퍼로부터 새로운 작업을 판독하는 것과 관련된 단계들의 흐름도를 도시한다. 새로운 작업 판독 방법(400)은 통신 모듈(205)이 특히, 새로운 작업 버퍼(410)에서 새로운 작업(405), 특히 유닛/엔트리의 Task_ID 플래그를 판독함과 함께 시작된다. Task_ID 플래그가 유효하지 않은 경우(415), 기록 준비된 작업을 준비 작업 버퍼에 처리하려고 시도한다. 새로운 작업 버퍼에서 유닛의 Task_ID 플래그가 유효하면(415), 하드웨어 가속 프로세서는 새로운 작업 정보를 읽고 새로운 작업 버퍼에서 이 유닛(425)을 무효화하여 미래의 새로운 작업이 저장될 수 있게한다.
도 4b는 준비된 작업을 준비된 작업 버퍼에 기록하는 것과 관련된 단계의 흐름도를 도시한다. 기입 준비 작업 방법(440)은 통신 모듈(205)이 준비 작업 버퍼(445)에서 유닛/엔트리의 Task_ID 플래그를 판독하는 것으로 시작한다. 유닛이 비어 있지 않은 경우(Task_ID는 유효하며, 이의 이닛은 유효한 데이터를 가지고 있음을 나타냄), 하드웨어 가속 프로세서는 완료된 작업(455) 버퍼를 검사한다. 준비된 작업 버퍼의 이작업을이 비어 있고(450) 준비된 작업이 있는 경우, 하드웨어 가속 프로세서는 준비된 작업을 준비된 작업 버퍼(460) 내 이 유닛에 기록한다.
도 4c는 완료된 작업 버퍼로부터 완료된 작업을 판독하는 것과 관련된 단계의 흐름도를 도시한다. 판독 완료된 작업 방법(470)은 완료된 작업 버퍼 유닛/엔트리로부터 Picos++_ID 필드(475)를 판독하는 통신 모듈(205)로 시작하고, 필드가 유효하지 않은 경우(480), 하드웨어 가속 프로세서는 스위칭하여, 신규 작업 버퍼 내 새로운 작업을 점검한다(485). 완료된 작업 버퍼 엔트리의 필드가 유효하면(480), 하드웨어 가속 프로세서는 완료된 작업을 읽고(490) 이 유닛을 무효화한다(495).
도 4a-c의 방법은 간단한 작업, 즉 중첩되지 않은 경우에는 문제없이 작동한다.
본 발명은 하드웨어 가속 프로세서(160)의 시스템 메모리(140)로의 액세스를 수정함으로써 성능의 개선을 교시한다.
도 5는 작업 의존성을 관리하기 위해 하드웨어 가속 프로세서와 결합하기 위해 런타임 소프트웨어에 관련된 단계를 도시한다. 이 방법은 시스템 초기화(500)로 시작한다. 멀티-코어 프로세싱 요소(110, 120, 130) 중 하나에서 실행되는 런타임 소프트웨어는 하나의 멀티-코어 프로세싱 요소(110, 120)에서 실행되는 각각의 스레드에 대해 시스템 메모리(140)에 데이터 버퍼(510)를 할당한다. 그런 다음 버퍼 및 비동기 통신(520)을 사용하여 버퍼의 주소 및 길이를 하드웨어 가속 프로세서(180)로 전송한다. 방법은 하드웨어 가속 프로세서(180)가 멀티-코어 프로세싱 요소(110, 120, 130)에서 실행중인 스레드로부터의 추가 개입없이 시스템 메모리에서 이들 버퍼에 직접 액세스하는 것으로 종료한다.
다른 예에서, 다른 필드가 작업의 parent_ID를 포함하는 새로운 작업 패킷에 추가되어 DCT로 전송된다. 수신 DCT는 parent_ID를 추가 태그로 사용하여 의존성을 차별화하며, 이 태그는 비 형제 작업의 의존성을 별도의 작업 의존성 그래프로 유지 관리하는 데 사용된다. 하드웨어 작업 관리자가 새 작업을 수신하지만 하드웨어 가속 프로세서 메모리가 부족하거나 메모리 충돌이 발생하는 상황이 발생할 수 있다. 그러나 중첩되지 않은 작업의 경우 모든 작업 완료 실행은 다음 새 작업을 위해 메모리를 비운다. 따라서 조만간 또는 나중에, 이 새로운 작업은 하드웨어 가속 프로세서에 들어갈 수 있다.
그러나 의존성이 있는 중첩된 작업의 경우, 사용 가능한 상위 작업에서 하드웨어 가속 프로세서의 모든 전용 메모리를 차지하고 첫 번째 하위 판독 후 의존성을 저장할 메모리가 없어 메모리 부족으로 교착 상태가 발생할 수 있다.
이 문제를 해결하기 위해 일단 작업이 읽히면 수정된 데이터 흐름이 사용된다. 즉, 작업이 원자적으로 처리된다. 즉, 모든 의존성이 하나로 처리된다. 이 설계 및 데이터 흐름은 GW(220)가 새로운 작업을 판독 전에 전용 메모리의 여유 공간을 인식한다는 것을 의미한다. 새 작업에 TM 및 VM 메모리에 이미 존재하는 의존성이 있는 경우, 원활한 작업이 가능하다. 그러나 새로운 의존성의 경우 해싱이 사용되지만 DM 사용률(중요 메모리 충돌)에 관계없이 저장해야할 메모리가 풀 상태이기 때문에 저장될 수 없으며, 중요한 메모리가 충돌한다. 이 문제는 예상할 수 없다. 중첩되지 않은 작업의 처리 속도가 단순히 느려지지만 중첩된 작업으로 교착 상태가 발생할 수 있다. 이 문제를 극복하기 위해 새로운 폴-백 메모리(293)가 도입되고 새로운 의존성이 DM에 저장될 수 없을 때마다 사용된다. 사용되면 메모리 풀 신호를 상승시켜서, GW가 새 작업을 읽지 못하게 하고 현재 작업의 나머지 의존성을 계속 처리할 수 있다.
하위 작업이 새 작업 버퍼 안에 저장되어 있지만 하드웨어에서 읽을 수 없는 경우, 시스템이 중지된다. 제 1 하위 작업의 의존성이 그 상위 작업의 일부분이라는 사실 때문에 제 1 작업은 항상 실행할 준비가 되어 있다. 이는 다른 하위 작업의 경우에는 해당되지 않다. 따라서 제 1 하위 작업이 여전히 새 작업 버퍼에 있으면 잠재적 교착 상태를 피하기 위해 처리되어야 한다. 하드웨어 가속 프로세서가 제 1 하위 작업을 읽은 경우 교착 상태의 위험이 없으며 하드웨어의 나머지 하위 프로세스는 하드웨어가 처리할 때까지 큐에 남아 있어야 한다.
도 6a는 멀티-코어 프로세서(100)에서 실행되는 소프트웨어 런타임 지원에 대한 하드웨어 가속 프로세서의 초기화로부터 시작하여 중첩되지 않은 작업의 의존성 관리와 관련된 단계의 흐름도를 도시한다. 방법(600)은 런타임으로 시작한다. 소프트웨어는 하드웨어 가속 프로세서(180)를 열어 메모리(603)에서 새로운 준비 및 완료된 작업을 위한 3 개의 버퍼에 액세스하여 할당한 다음 버퍼 주소 및 길이를 하드웨어 가속 프로세서(180)에 전송한다.
멀티-코어 프로세서(100)에서 실행되는 런타임 소프트웨어 지원은 새로운 작업 정보를 생성하고 새로운 작업 버퍼(610)의 여유 공간에 복사하고, 준비된 작업 버퍼에서 준비된 작업을 검사하고, 준비된 작업 풀에 복사한다(613). 그런 다음 런타임 소프트웨어는 준비된 작업 버퍼의 항목을 빈 상태(616)로 재설정한다. 작업이 완료되면 런타임 소프트웨어는 작업을 완료된 작업 버퍼의 여유 공간에 복사하고(620) 처리가 완료되면 그것은 3 개의 버퍼를 할당 해제하고 하드웨어 가속 프로세서(180)를 정지시킨다(623).
도 6b는 중첩되지 않은 작업의 의존성 관리와 관련된 단계의 흐름도를 도시한다. 방법(635)은 하드웨어 가속 프로세서(180)가 상위 작업이 하위 작업(640)를 저장한 새로운 작업 버퍼에서 엔트리를 점검하는 것으로 시작한다. 새로운 의존성이 DM(285)에 저장될 수 없다면 폴-백 메모리(293)를 사용한다(643). 일단 사용되면, 하드웨어 가속 프로세서(180)는 메모리 풀 신호를 GW(220)로 전송한다(646). 신호를 수신하면, GW(220)는 임의의 새로운 작업의 판독을 중단한다(650). 하드웨어 가속 프로세서(180)는 현재 작업의 나머지 의존성을 연속적으로 처리한다(653). 제 1 하위 작업이 준비되면(660) 런타임 소프트웨어 지원이 정상 동작으로 유지되고(663), 그렇지 않으면 임계 시간에 도달하거나 새로운 작업 버퍼의 교착 상태를 점검한 후에 스레드가 새로운 작업 버퍼를 잠그고 모든 하위 작업을 제거한다(666). 그런 다음, 런타임 소프트웨어는 대응하는 모든 포인터를 업데이트함으로써 다른 작업에 의해 생성된 나머지 작업이 있는 경우 새로운 작업 버퍼를 재구성한다(670). 작업은 그 후 대응 스레드에 의해 순서대로 직접 실행되며, 또는, 소프트웨어 작업 의존성 그래프 관리자에게 전체로서 제출된다(676). 방법(635)은 메모리 풀 신호가 제거될 때 런타임 소프트웨어가 작업 및 의존성 관리를 하드웨어 가속 프로세서(180)로 복귀시키면서 종료된다.
시스템이 프로세서 세트 및 가속기 세트를 포함하는 경우, 가속기에 직접 순서대로 작업을 제출하는 것은 번거로울 수 있다. 풀 신호로 인해 게이트웨이 모듈이 중지되면, 가속기가 하드웨어 작업 의존성 관리자에 직접 연결된 시스템은 가속기에 사용 가능한 연결이 없기 때문에 교착 상태가 발생할 수 있다. 이 문제를 해결하기 위해 다른 방법을 사용할 수 있다. 예를 들어, 가속기가 하드웨어 작업 관리자에만 연결된 경우 시스템이 풀 상태인 경우에도 가속기에 준비된 작업을 직접 제출하기 위한 25 바이패스를 포함할 수 있다. 대안으로서 또는 추가적으로, 하드웨어 작업 관리자와 병렬로 작업하는 간단한 가속기 하드웨어 관리자가 구현되어 바이패스로서 사용될 수 있다. 가속기로 직접 작업을 보내도록 구성된 소프트웨어 가속기 관리자도 사용할 수 있다. 이러한 경우에, 필요한 통신을 수행하기 위해, 가속기와 선택된 메커니즘 사이의 특정한 30개의 연결이 생성될 수 있다.
상기의 예시적인 설명은 간략화되고 실시예에서 사용되었지만 본 발명의 일부가 아니며, 실시예의 이해를 위해 필요하지 않으며, 관련된 당업자에게 명백한 하드웨어 및 소프트웨어 요소를 포함하지 않는다. 미술. 또한, 기술된 방법, 시스템 아키텍처 및 소프트웨어 아키텍처의 변형이 가능하며, 예를 들어 방법 단계 및 하드웨어 및 소프트웨어 요소는 재배치, 생략 또는 새로 추가될 수 있다.
다수의 예만이 본 명세서에 개시되었지만, 다른 대안, 변형, 사용 및/또는 그의 등가물이 가능하다. 또한, 기술된 예의 모든 가능한 조합이 또한 포함된다. 따라서, 본 개시의 범위는 특정 예에 의해 제한되지 않아야 하고, 다음의 청구 범위의 공정한 판독에 의해서만 결정되어야 한다. 도면과 관련된 참조 부호가 청구 범위의 괄호 안에 있는 경우, 청구 범위의 명료성을 높이기 위한 것일뿐, 청구 범위의 범위를 제한하는 것으로 해석되지 않아야 한다.
또한, 도면을 참조하여 설명된 예는 컴퓨팅 장치/시스템에서 수행되는 컴퓨팅 장치/시스템 및 프로세스를 포함하지만, 본 발명은 또한 시스템을 실제로 적용시키기에 적합한 컴퓨터 프로그램, 특히 컴퓨터 프로그램, 또는 캐리어 상에 있는 컴퓨터 프로그램으로 확장된다.

Claims (17)

  1. 하드웨어 프로세싱 시스템의 병렬 컴퓨팅 시스템에서의 작업 의존성을 런타임으로 관리하는 방법으로서, 상기 병렬 컴퓨팅 시스템은 런타임 소프트웨어를 실행하는 멀티-코어 프로세서, 하드웨어 가속 프로세서, 통신 모듈 및 게이트웨이를 포함하고, 상기 방법은,
    - 병렬 컴퓨팅 시스템을 초기화하는 단계;
    - 각각의 멀티-코어 프로세싱 요소에서 실행되는 각각의 스레드에 대해 시스템 메모리 내 데이터 버퍼를 할당하는 단계;
    - 비동기식 버퍼링(buffering) 통신을 사용하여 통신에 사용된 버퍼의 길이 및 시스템 메모리 어드레스를 하드웨어 가속 프로세서에 전송하는 단계;
    - 상기 하드웨어 가속 프로세서가 병렬 프로세싱 요소에서 실행되는 스레드를 우회하여 버퍼에 직접 액세스하는 단계;
    - 상기 하드웨어 가속 프로세서가 새로운 작업의 버퍼를 판독하고 하드웨어 가속 프로세서에 부착된 전용 로컬 메모리의 메모리 풀 상태 또는 중요 메모리 충돌을 감지하면, 새로운 작업 수신을 중지하도록 게이트웨이에게 지시하는 단계;
    - 하드웨어 가속 프로세서가 마지막 판독한 작업의 의존성의 프로세싱을 계속하는 단계; 및
    - 마지막 판독한 작업의 의존성의 프로세싱이 완료되면 메모리 공간이 비워지고 다음 작업으로 의존성의 프로세싱이 계속되는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서, 작업이 중첩된 작업(nested task)인 경우, 메모리 풀 상태 또는 중요 메모리 충돌이 감지되면,
    - 첫 번째 하위 작업(child task)의 의존성이 프로세싱된 경우, 런타임 소프트웨어는 하드웨어 가속 프로세서가 작업 의존성 프로세싱을 계속하게 하고,
    - 첫 번째 하위 작업의 의존성이 프로세싱되지 않은 경우, 새 작업 버퍼를 잠그고 모든 하위 작업을 제거하도록 스레드에 지시하기 전에 임계 시간에 도달할 때까지 기다리거나 새 작업 버퍼 상태를 체크하며,
    - 타 작업에 의해 생성된 잔여 작업이 있는 경우 런타임 소프트웨어는 모든 해당 포인터를 업데이트함으로써 새 작업 버퍼를 재구성하고,
    - 스레드가 작업을 순서대로 실행하거나, 또는, 하위 작업 의존성과 함께 전체로서 소프트웨어 작업 의존성 그래프 관리자에게 작업을 제출하며,
    - 메모리 풀 상태 또는 중요 메모리 충돌 신호가 지워지면 작업 및 의존성 관리를 위해 런타임 소프트웨어가 하드웨어 가속 프로세서로 되돌아가는, 방법.
  3. 제 1 항에 있어서, 상기 하드웨어 가속 프로세서는 작업 의존성, 작업 생산자 및 생성자 스레드, 및 작업 ID 및 의존성 수를 저장하기 위한 3 가지 유형의 전용 로컬 메모리, 및 전용 로컬 메모리 중 적어도 하나가 풀 상태 또는 중요 메모리 충돌 상태에 이르면 이용하기 위한 하나의 추가 메모리를 포함하며,
    메모리 공간이 비워질 때까지 작업의 흐름을 변경하기 위해 메모리 풀(memory full) 신호가 이용되는, 방법.
  4. 제 1 항에 있어서, 상기 멀티-코어 프로세싱 요소 중 하나가 마스터이고 상기 마스터는 각각의 슬레이브를 대신하여 하드웨어 가속 프로세서와 통신하는 방법.
  5. 제 1 항에 있어서, 의존성의 프로세싱은
    게이트웨이에서, 새로운 작업의 메타 데이터 및 의존성을 수신하는 것 - 상기 작업은 상호 연결된 멀티-코어 프로세서에서 실행되는 런타임 소프트웨어에 의해 제어되는 스레드로부터 전송됨 - ,
    상기 게이트웨이가 하드웨어 가속 프로세서의 전용 로컬 작업 메모리로부터 빈 엔트리를 획득하는 것,
    상기 게이트웨이가 새로운 작업을 내부 작업 예약 모듈에, 그리고, 하드웨어 가속 프로세서의 내부 의존성 체인 추적기 모듈에 분배하는 것,
    상기 하드웨어 가속 프로세서가 멀티-코어 프로세서, 작업 의존성, 전용 로컬 메모리 및 자유 공간에서 작업 처리를 추적하는 것을 포함하는, 방법.
  6. 멀티-코어 프로세서에서 런타임 작업 의존성 관리를 위한 하드웨어 가속 프로세서로서, 상기 멀티-코어 프로세서는 슬레이브 모드에서 동작하는 상호 연결된 프로세서 요소를 포함하고, 상기 하드웨어 가속 프로세서는:
    - 멀티-코어 프로세서, 시스템 메모리 및 기타 주변 장치 모듈의 상호 연결된 프로세싱 요소와 통신하기 위한 데이터 통신 로직;
    - 게이트웨이 요소의 동작을 수정하기 위한 제어 로직 - 상기 게이트웨이 요소는 멀티-코어 프로세서의 프로세싱 요소에서 실행되는 복수의 스레드로부터 새로운 작업 및 완료된 작업을 제공함 - ;
    - 하드웨어 가속 프로세서에 의해 관리되는 작업 및 작업 의존성을 특징짓는 데이터를 저장하기 위한 전용 로컬 메모리;
    - 멀티-태스크 병렬 동작에서 교착 상태를 해결하기 위한 제어 로직 - 상기 제어 로직은 새로운 작업을 판독할 때 하드웨어 가속 프로세서에 부착된 전용 로컬 메모리의 메모리 풀 상태 또는 중요 메모리 충돌을 감지하면, 새로운 작업 수신을 중지하도록 게이트웨이에게 지시 - 을 포함하는 하드웨어 가속 프로세서.
  7. 제 6 항에 있어서, 상기 하드웨어 가속 프로세서는 프로그램 가능한 로직으로 구현되고, 중첩된 작업에서의 의존성을 핸들링하도록 구성되는 하드웨어 가속 프로세서.
  8. 제 6 항에 있어서, 교착 상태를 해결하기 위한 제어 로직은:
    - 타 중첩된 작업을 처리하기 전에 상위 작업(parent task)과 이들의 하위 작업(children task)이 함께 관리되는 단일 이벤트로서 작업을 처리하기 위한 제 1 로직;
    - 상기 하드웨어 가속 프로세서의 모든 전용 로컬 메모리 요소에서 사용 가능한 메모리 공간을 게이트웨이에 알리기 위한 제 2 로직 - 상기 게이트웨이는 상기 메모리 요소에 충분한 공간이 없으면 작업 판독을 중단함 - 을 더 포함하는, 하드웨어 가속 프로세서.
  9. 제 6 항에 있어서, 멀티-코어 프로세서의 초기화 동안, 상기 멀티-코어 프로세서에서 실행되는 스레드는 시스템 메모리 내에서 데이터 버퍼를 할당하고, 비동기식 버퍼링 통신 프로토콜을 사용해, 상기 버퍼의 어드레스 및 길이를 하드웨어 가속 프로세서에 전송하며, 상기 하드웨어 가속 프로세서는 멀티-코어 프로세싱 요소들을 우회하여 시스템 메모리 내 데이터 버퍼들을 직접 액세스하는, 하드웨어 가속 프로세서.
  10. 제 6 항에 있어서, 상기 하드웨어 가속 프로세서, 전용 로컬 메모리, 게이트웨이 및 멀티-코어 프로세서는 모두 동일한 실리콘 다이 내에 있는 하드웨어 가속 프로세서.
  11. 제 6 항에 있어서, 상기 하드웨어 가속 프로세서는:
    - 멀티-코어 프로세서로부터 신호를 수신함에 응답하여 스위치 온하고,
    - 런타임 소프트웨어가 시스템 메모리에서 신규, 실행 대기, 및 완료 작업을 위한 3개의 버퍼를 성공적으로 할당한 후, 버퍼 주소와 길이를 하드웨어 가속 프로세서로 전송하기 위한 로직을 더 포함하며,
    - 런타임 소프트웨어가 프로세싱을 완료한 후 - 프로세싱은 새로운 작업 생성, 새로운 작업을 새로운 작업 버퍼 내 여유 공간에 복사, 대기 작업 버퍼 내 대기 작업 체크, 대기 작업을 작업자 스레드용 대기 작업 풀에 복사, 대기 작업 버퍼 내 엔트리를 빈 상태로 리셋, 완료 작업을 완료 작업 버퍼 내 여유 공간에 복사, 및 버퍼 할당 해제를 포함함 - 상기 하드웨어 가속 프로세서는 런타임 소프트웨어로부터 명령을 수신한 후 스위치 오프되는, 하드웨어 가속 프로세서.
  12. 제 6 항에 있어서, 멀티-태스크 병렬 동작에서 교착 상태를 해결하기 위한 제어 로직은 상기 멀티-코어 프로세서에서 실행되는 런타임 소프트웨어와 통신하고, 상기 하드웨어 가속 프로세서는
    - 하드웨어 가속 프로세서의 전용 로컬 메모리에서 메모리 풀 조건이 발생하면, 런타임 소프트웨어가 첫 번째 하위 작업이 하드웨어 가속 프로세서에 의해 성공적으로 판독되었음을 확인하고, 하드웨어 런타임 작업 의존성 관리를 통한 기본 작업을 허용하며, 또는, 실패한 경우, 시간 임계 값에 도달하거나 새 작업 버퍼에서 조건을 확인한 후, 런타임 소프트웨어는 스레드가 새 작업 버퍼를 잠그고 모든 하위 작업을 제거하며, 다른 실행 작업에 의해 생성된 나머지 작업을 가질 경우 해당 포인터를 업데이트함으로써 버퍼를 재구성하고, 타 작업을 생성하게 하지 않고 스레드에 의해 하위 작업을 순서대로 실행하거나 소프트웨어 작업 의존성 그래프 관리에게 전체로서 제출하고,
    - 하드웨어 가속 프로세서의 전용 로컬 메모리에서 풀 조건이 지워지면, 런타임 소프트웨어가 의존성 관리를 위해 하드웨어 가속 프로세서로 되돌아가는, 하드웨어 가속 프로세서.
  13. 제 12 항에 있어서, 상기 하드웨어 가속 프로세서는:
    프로세서 세트 및 가속기 세트;
    대기 작업을 가속기 세트에 직접 제출하기 위한 바이패스 로직을 포함하는, 하드웨어 가속 프로세서.
  14. 하드웨어 가속 프로세서와 상호 연결된 멀티-코어 프로세서에서 하드웨어-기반 런타임 작업 의존성 관리를 하드웨어 가속 프로세서로 하여금 수행하게 하는 명령을 포함하는 컴퓨터 프로그램이 기록된 비일시적 컴퓨터 판독형 저장 매체로서, 상기 명령은 하드웨어 가속 프로세서로 하여금
    - 게이트웨이에서, 새로운 작업의 메타 데이터 및 의존성을 수신하고 - 상기 작업은 상호 연결된 멀티-코어 프로세서에서 실행되는 런타임 소프트웨어에 의해 제어되는 스레드로부터 전송됨 - ,
    - 하드웨어 가속 프로세서의 전용 로컬 작업 메모리로부터 빈 엔트리를 게이트웨이로 하여금 획득시키게 하며,
    - 게이트웨이가 새로운 작업을 내부 작업 예약 모듈에게, 그리고, 하드웨어 가속 프로세서의 내부 의존성 체인 추적기 모듈에게, 분배시키게 하고,
    - 하드웨어 가속 프로세서가 멀티-코어 프로세서에서의 작업 프로세싱, 작업 의존성, 전용 로컬 메모리의 여유 공간을 추적하게 하며,
    - 하드웨어 가속 프로세서가 내부 전용 메모리 풀 상태를 검출하는 경우 멀티-코어 프로세서의 런타임을 제어하는 런타임 소프트웨어로부터의 새로운 작업 수신을 중지하도록 게이트웨이에 지시하게 하고,
    - 프로세싱되는 작업이 다른 작업을 생성하지 않게 하면서 메모리 플러시(memory flush)를 이용하고 의존성 있는 작업에 대해 전용 로컬 작업 메모리를 재구성함으로써, 메모리 풀 상태 및 상기 상태가 만드는 교착 상태를 해결하게 하며,
    - 소프트웨어를 실행하여 하드웨어 또는 소프트웨어 의존성 관리 중 하나를 선택하게 하며,
    - 런타임 소프트웨어가 메모리 풀 상태가 지났음을 감지한 후 소프트웨어를 실행하여 하드웨어 의존성 관리로 되돌아가게 하는, 비일시적 컴퓨터 판독형 저장 매체.
  15. 컴퓨팅 시스템으로 하여금 청구항 제1항에 따르는 방법을 수행하게 하는 명령이 포함된 컴퓨터 프로그램이 기록된 컴퓨터 판독형 저장 매체.
  16. 컴퓨팅 시스템으로 하여금 청구항 제1항에 따르는 방법을 수행하게 하는 컴퓨터 프로그램으로서, 컴퓨터 판독형 저장 매체에 기록되는 컴퓨터 프로그램.
  17. 삭제
KR1020197038917A 2017-05-29 2017-07-24 작업 의존성 관리 KR102334511B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP17382307.1 2017-05-29
EP17382307 2017-05-29
PCT/EP2017/068695 WO2018219480A1 (en) 2017-05-29 2017-07-24 Managing task dependency

Publications (2)

Publication Number Publication Date
KR20200014378A KR20200014378A (ko) 2020-02-10
KR102334511B1 true KR102334511B1 (ko) 2021-12-03

Family

ID=59077992

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197038917A KR102334511B1 (ko) 2017-05-29 2017-07-24 작업 의존성 관리

Country Status (4)

Country Link
US (1) US11436048B2 (ko)
EP (1) EP3631629A1 (ko)
KR (1) KR102334511B1 (ko)
WO (1) WO2018219480A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102655094B1 (ko) * 2018-11-16 2024-04-08 삼성전자주식회사 메모리를 공유하는 이종의 프로세서들을 포함하는 스토리지 장치 및 그것의 동작 방법
CN111831422B (zh) * 2019-04-15 2024-04-30 大唐移动通信设备有限公司 一种任务处理方法及装置
CN111324428B (zh) * 2019-09-20 2023-08-22 杭州海康威视系统技术有限公司 任务分配方法、装置、设备和计算机可读存储介质
CN111950988B (zh) * 2020-08-18 2022-03-29 北京字节跳动网络技术有限公司 分布式工作流调度方法、装置、存储介质及电子设备
US11563690B2 (en) * 2020-08-19 2023-01-24 Redpanda Data, Inc. Low latency queuing system
CN112965793B (zh) * 2021-01-21 2023-11-21 中国互联网络信息中心 一种面向标识解析数据的数据仓库任务调度方法和系统
CN117806786A (zh) * 2022-09-26 2024-04-02 华为技术有限公司 任务调度方法和电子装置
CN116775274A (zh) * 2023-03-24 2023-09-19 美的集团(上海)有限公司 内存优化方法、装置、设备、产品、存储介质和芯片

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100748715B1 (ko) 2005-12-27 2007-08-13 주식회사 텔레칩스 하드웨어 작업관리 장치
US20100162245A1 (en) 2008-12-19 2010-06-24 Microsoft Corporation Runtime task with inherited dependencies for batch processing
US20150268992A1 (en) 2014-03-21 2015-09-24 Oracle International Corporation Runtime handling of task dependencies using dependence graphs
US20160217016A1 (en) 2015-01-26 2016-07-28 Qualcomm Incorporated Method and System for Accelerating Task Control Flow

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7203775B2 (en) * 2003-01-07 2007-04-10 Hewlett-Packard Development Company, L.P. System and method for avoiding deadlock
US7831804B2 (en) * 2004-06-22 2010-11-09 St Microelectronics S.R.L. Multidimensional processor architecture
US8180971B2 (en) * 2005-12-09 2012-05-15 University Of Rochester System and method for hardware acceleration of a software transactional memory
US9536275B1 (en) * 2007-07-31 2017-01-03 Nvidia Corporation Using a geometry shader for variable input and output algorithms
US9424315B2 (en) * 2007-08-27 2016-08-23 Teradata Us, Inc. Methods and systems for run-time scheduling database operations that are executed in hardware
US8387066B1 (en) * 2007-09-28 2013-02-26 Emc Corporation Dependency-based task management using set of preconditions to generate scheduling data structure in storage area network
FR2925187B1 (fr) * 2007-12-14 2011-04-08 Commissariat Energie Atomique Systeme comportant une pluralite d'unites de traitement permettant d'executer des taches en parallele,en mixant le mode d'execution de type controle et le mode d'execution de type flot de donnees
WO2010004474A2 (en) 2008-07-10 2010-01-14 Rocketic Technologies Ltd Efficient parallel computation of dependency problems
CN105843684B (zh) * 2009-02-13 2020-03-03 起元技术有限责任公司 管理任务执行
US8320392B1 (en) * 2009-12-16 2012-11-27 Integrated Device Technology, Inc. Method and apparatus for programmable buffer with dynamic allocation to optimize system throughput with deadlock avoidance on switches
US8504803B2 (en) * 2010-05-26 2013-08-06 Tethys Solutions LLC System and method for creating and executing portable software
US9928109B2 (en) 2012-05-09 2018-03-27 Nvidia Corporation Method and system for processing nested stream events
US10013351B2 (en) * 2014-06-27 2018-07-03 International Business Machines Corporation Transactional execution processor having a co-processor accelerator, both sharing a higher level cache
US9824414B2 (en) 2014-12-09 2017-11-21 Intel Corporation Thread dispatching for graphics processors
US9678790B2 (en) 2015-01-07 2017-06-13 Qualcomm Incorporated Devices and methods implementing operations for selective enforcement of task dependencies
US10572376B2 (en) * 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US11360808B2 (en) * 2017-04-09 2022-06-14 Intel Corporation Efficient thread group scheduling

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100748715B1 (ko) 2005-12-27 2007-08-13 주식회사 텔레칩스 하드웨어 작업관리 장치
US20100162245A1 (en) 2008-12-19 2010-06-24 Microsoft Corporation Runtime task with inherited dependencies for batch processing
US20150268992A1 (en) 2014-03-21 2015-09-24 Oracle International Corporation Runtime handling of task dependencies using dependence graphs
US20160217016A1 (en) 2015-01-26 2016-07-28 Qualcomm Incorporated Method and System for Accelerating Task Control Flow

Also Published As

Publication number Publication date
WO2018219480A1 (en) 2018-12-06
US11436048B2 (en) 2022-09-06
EP3631629A1 (en) 2020-04-08
KR20200014378A (ko) 2020-02-10
US20200110634A1 (en) 2020-04-09

Similar Documents

Publication Publication Date Title
KR102334511B1 (ko) 작업 의존성 관리
US11550627B2 (en) Hardware accelerated dynamic work creation on a graphics processing unit
US8230201B2 (en) Migrating sleeping and waking threads between wake-and-go mechanisms in a multiple processor data processing system
US9417935B2 (en) Many-core process scheduling to maximize cache usage
US8082315B2 (en) Programming idiom accelerator for remote update
US8225120B2 (en) Wake-and-go mechanism with data exclusivity
US8341635B2 (en) Hardware wake-and-go mechanism with look-ahead polling
US7373640B1 (en) Technique for dynamically restricting thread concurrency without rewriting thread code
US8145723B2 (en) Complex remote update programming idiom accelerator
US8171476B2 (en) Wake-and-go mechanism with prioritization of threads
US8312458B2 (en) Central repository for wake-and-go mechanism
US8732683B2 (en) Compiler providing idiom to idiom accelerator
US8788795B2 (en) Programming idiom accelerator to examine pre-fetched instruction streams for multiple processors
US8886919B2 (en) Remote update programming idiom accelerator with allocated processor resources
TWI537831B (zh) 多核心處理器、用於執行處理程序切換之方法、用於保全一記憶體區塊之方法、用於致能使用一多核心裝置之異動處理之設備、以及用於執行記憶體異動處理之方法
US9378069B2 (en) Lock spin wait operation for multi-threaded applications in a multi-core computing environment
US20100293341A1 (en) Wake-and-Go Mechanism with Exclusive System Bus Response
JP2012104140A (ja) 待機状態にあるプロセッサ実行リソースの共有
KR20120070303A (ko) 실시간 멀티코어 시스템의 동기화 스케쥴링 장치 및 방법
EP3014423B1 (en) Binary translation for multi-processor and multi-core platforms
US11061730B2 (en) Efficient scheduling for hyper-threaded CPUs using memory monitoring
CN103699363A (zh) 一种用于在多核平台下优化关键临界区的方法
US10360652B2 (en) Wavefront resource virtualization
US11481250B2 (en) Cooperative workgroup scheduling and context prefetching based on predicted modification of signal values
Deshpande et al. Analysis of the Go runtime scheduler

Legal Events

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