KR20210080173A - 이기종 시스템들을 위해 컴퓨터 애플리케이션들을 파티셔닝하기 위한 자동화된 학습 기술 - Google Patents
이기종 시스템들을 위해 컴퓨터 애플리케이션들을 파티셔닝하기 위한 자동화된 학습 기술 Download PDFInfo
- Publication number
- KR20210080173A KR20210080173A KR1020200124788A KR20200124788A KR20210080173A KR 20210080173 A KR20210080173 A KR 20210080173A KR 1020200124788 A KR1020200124788 A KR 1020200124788A KR 20200124788 A KR20200124788 A KR 20200124788A KR 20210080173 A KR20210080173 A KR 20210080173A
- Authority
- KR
- South Korea
- Prior art keywords
- function
- telemetry information
- hardware resource
- telemetry
- execution
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
- H04L41/5003—Managing SLA; Interaction between SLA and QoS
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Power Sources (AREA)
- Debugging And Monitoring (AREA)
- Microcomputers (AREA)
Abstract
시스템들, 장치들 및 방법들은 함수에 연관된 우선순위 데이터 구조를 식별하는 기술을 제공할 수 있으며, 여기서 우선순위 데이터 구조는 하드웨어 리소스 유형들을 우선순위 순서로 나열한다. 이 기술은 또한 제1 유형의 하드웨어 리소스가 이용가능한 경우 제1 유형의 하드웨어 리소스를 함수에 할당할 수 있으며, 여기서 제1 유형의 하드웨어 리소스는 우선순위 데이터 구조에서 최고 우선순위를 갖는다. 또한, 이 기술은 제1 유형의 하드웨어 리소스가 이용가능하지 않은 경우, 우선순위 순서에 따라 제2 유형의 하드웨어 리소스를 함수에 할당할 수 있다.
Description
실시예들은 일반적으로 애플리케이션 파티셔닝에 관한 것이다. 보다 구체적으로, 실시예들은 이기종 시스템들(heterogeneous systems)을 위해 컴퓨터 애플리케이션들을 파티셔닝하기 위한 자동화된 학습 기술에 관한 것이다.
주어진 컴퓨터 애플리케이션(예를 들어, 소프트웨어)은 전형적으로 컴퓨팅 시스템 내의 특정 프로세서(예를 들어, 중앙 처리 유닛/CPU)에서 실행되도록 작성된다. 그러나, 새로운 유형의 프로세서들(예를 들어, 특수 목적 가속기들)이 개발됨에 따라, 애플리케이션이 새로운 프로세서 상에서 효율적으로 실행될 수 있게 하는 것은, 비용이 많이 들고 시간 소모적인 애플리케이션 코드의 재작성을 수반할 수 있다. 애플리케이션이 프로세서들의 이기종 세트를 포함하는 컴퓨팅 시스템에서 실행되도록 작성된 경우에도, 애플리케이션이 프로세서들의 상이한 이기종 세트를 갖는 컴퓨팅 시스템에서 효율적으로 실행할 수 있도록 하는 것은 비용이 많이 들고 시간 소모적인 애플리케이션 코드의 재작성을 여전히 수반할 수 있다.
실시예들의 다양한 이점들은 이하의 명세서 및 첨부된 청구항들을 읽고 이하의 도면들을 참조함으로써 본 기술분야의 통상의 기술자에게 명백해질 것이다.
도 1은 실시예에 따른 소프트웨어 스택의 예의 블록도이다.
도 2는 실시예에 따른 라이브러리 버전들의 세트의 예의 블록도이다.
도 3a 및 도 3b는 실시예들에 따른 텔레메트리 데이터의 예들의 블록도들이다.
도 4는 실시예에 따른 프로세서 디스패치 테이블의 예의 블록도이다.
도 5는 실시예에 따라 스케줄러를 동작시키는 방법의 예를 나타내는 흐름도이다.
도 6은 실시예에 따라 성능 향상된 컴퓨팅 시스템을 동작시키는 방법의 예의 흐름도이다.
도 7은 실시예에 따른 성능 향상된 컴퓨팅 시스템의 예의 블록도이다.
도 8은 실시예에 따른 반도체 장치의 예의 도시이다.
도 9는 실시예에 따른 프로세서의 예의 블록도이다.
도 10은 실시예에 따른 멀티프로세서 기반 컴퓨팅 시스템의 예의 블록도이다.
도 1은 실시예에 따른 소프트웨어 스택의 예의 블록도이다.
도 2는 실시예에 따른 라이브러리 버전들의 세트의 예의 블록도이다.
도 3a 및 도 3b는 실시예들에 따른 텔레메트리 데이터의 예들의 블록도들이다.
도 4는 실시예에 따른 프로세서 디스패치 테이블의 예의 블록도이다.
도 5는 실시예에 따라 스케줄러를 동작시키는 방법의 예를 나타내는 흐름도이다.
도 6은 실시예에 따라 성능 향상된 컴퓨팅 시스템을 동작시키는 방법의 예의 흐름도이다.
도 7은 실시예에 따른 성능 향상된 컴퓨팅 시스템의 예의 블록도이다.
도 8은 실시예에 따른 반도체 장치의 예의 도시이다.
도 9는 실시예에 따른 프로세서의 예의 블록도이다.
도 10은 실시예에 따른 멀티프로세서 기반 컴퓨팅 시스템의 예의 블록도이다.
이제 도 1을 보면, 예를 들어 ONEAPI와 같은 통합된 프로그래밍 모델을 위한 소프트웨어 스택(20)이 도시되어 있다. 도시된 통합 소프트웨어 스택(20)은 레벨 0 인터페이스(22), 레벨 0 인터페이스(22) 아래의 시스템 소프트웨어(SW)(24), 레벨 0 인터페이스(22) 위의 시스템 소프트웨어(26), 및 개발자 인터페이스(28)를 포함한다. 레벨 0 인터페이스(22) 아래의 시스템 소프트웨어(24)는 프로세서들의 이기종 세트(36)와 통신한다. 프로세서들의 이기종 세트(36)는 예를 들어 CPU(예를 들어, 스칼라 연산들 및/또는 함수들을 지원할 수 있음), GPU(예를 들어, 벡터 연산들 및/또는 함수들을 지원할 수 있는 그래픽 처리 유닛), AI(인공 지능) 가속기(예를 들어, 매트릭스 연산들 및/또는 함수들을 지원할 수 있음), 및 FPGA(예를 들어, 공간 연산들 및/또는 함수들을 지원할 수 있는 필드 프로그래밍가능한 게이트 어레이)와 같은 하드웨어를 포함할 수 있다. 추가적으로, 개발자 인터페이스(28)는 최적화된 미들웨어 및 연관된 프레임워크들과 상호작용하며, 이는 결국 하나 이상의 최적화된 애플리케이션(38)을 지원한다.
실시예에서, 스택(20)의 자동 파티셔너 부분은 예를 들어 프로세서 디스패치 테이블(PDT) 데이터베이스(32), 메모리 할당 테이블(MAT) 데이터베이스(34) 등과 같은 우선순위 데이터 구조들을 유지하는 스케줄러(30)를 포함한다. 일례에서, 스케줄러(30)는 프로세서들의 이기종 세트(36)에 걸쳐 라이브러리 함수들의 실행을 자동으로 파티셔닝하기 위해 우선순위 데이터 구조들을 사용한다. 더 상세히 논의되는 바와 같이, PDT 데이터베이스(32)는 우선순위 순서에 따라, 그리고 함수별로 프로세서 유형들을 나열할 수 있다. 예를 들어, 라이브러리들의 세트(40)는 프로세서들의 이기종 세트(36) 내의 각각의 유형의 프로세서에 대해 구축된 함수를 포함할 수 있다. 이러한 경우에, 도시된 PDT 데이터베이스(32)는 어느 프로세서 유형이 해당 함수를 실행하기 위한 최고 우선순위를 갖는지, 어느 프로세서 유형이 해당 함수를 실행하기 위한 다음 최고 우선순위를 갖는지 등을 지정할 것이다. 마찬가지로, MAT 데이터베이스(34)는 어느 메모리 유형(예를 들어, 캐시, 휘발성 메모리, 비휘발성 메모리)이 해당 함수의 데이터 구조에 대해 최고 저장 우선순위를 갖는지, 어느 메모리 유형이 해당 함수의 데이터 구조에 대해 다음 최고 저장 우선순위를 갖는지를 지정할 수 있다. 일례에서, 우선순위 데이터 구조들은 함수의 실행 동안 수집된 텔레메트리 정보에 기초하여 생성된다. 따라서, 도시된 우선순위 데이터 구조들은 더 최적의 실행 구성이 함수별로 자동으로 식별될 수 있도록 함으로써 성능, 전력/에너지 효율 및/또는 확장성을 향상시킬 수 있다. 실제로, 시간에 따라 우선순위 데이터 구조들을 업데이트함으로써, 도시된 스택(20)은 프로세서들의 이기종 세트(36)에 걸쳐 함수 실행을 파티셔닝하기 위한 자동화된 학습 솔루션을 제공한다.
도 2는 CPU 라이브러리(50b), GPU 라이브러리(50c), AI 라이브러리(50d) 및 FPGA 라이브러리(50e)를 구축하기 위해 기본 라이브러리(50a)("Lib k")가 사용되는 복수의 라이브러리 버전(50)을 도시한다. 도시된 예에서, 기본 라이브러리(50a) 내의 각각의 함수("Func_1" 내지 "Func_m")는 기본 라이브러리(50a)의 다른 버전들(50)에서 대응물을 갖는다. 라이브러리 버전들(50) 중 특정한 것 또는 기본 함수들 중 일부가 주어진 유형의 프로세서 상에서 이용가능하지 않은 경우, 그러한 상태는 스케줄러 및/또는 애플리케이션 링커에 표시될 수 있다.
도 3a는 함수 식별자(ID)(66), 제1 텔레메트리 기록(62), 제2 텔레메트리 기록(64) 등을 포함하는 텔레메트리 정보(60)(예를 들어, 프로필 정보)의 예를 도시한다. 도시된 텔레메트리 기록들(62, 64)은 함수 ID(66)에 대응하는 함수의 연속적인 실행에 대해, 예를 들어 파라미터 크기 및 값, 메모리 요건들, 실행 시간, 스레드 수, 전력 소비 등과 같은 동작 조건들을 추적한다. 텔레메트리 기록들(62, 64)은 또한 함수 실행의 시각, 성능 및 전력 프로파일 특성 등을 문서화할 수 있다. 하드웨어 능력들의 활용(예를 들어, 단일 명령어 다중 데이터/SIMD 벡터 명령어들의 사용), 그래픽 능력들의 활용, 및 계층화된 메모리 서브시스템(예를 들어, 영구 메모리를 포함함)의 캐시 레벨들의 활용과 같은 정보도 수집될 수 있다. 일례에서, 그러한 정보는 그러한 프로필이 수집되는 트레이닝 세션 동안 한 번 생성된다.
다른 실시예들에서, 텔레메트리 정보(60)는 시간에 따른 함수의 실행과 함께 반복적으로 수집된다(예를 들어, 사용자에 의해 결정된 바와 같이 선택적으로 또는 주기적으로). 따라서, 제1 텔레메트리 기록(62)은 해당 함수의 제1 실행에 대응할 수 있고, 제2 텔레메트리 기록(64)은 해당 함수의 제2 실행에 대응할 수 있는 식이다. 이러한 접근 방식은 활용 예측들이 신뢰가능하지 않거나 예측가능하지 않을 수 있는 멀티-테넌트 컴퓨팅 아키텍처들에서 특히 유리할 수 있다. 실행마다 그리고 함수마다 다를 수 있는 추적되는 동작 조건들은 예를 들어 이미 논의된 PDT 데이터베이스(32)(도 1) 및/또는 MAT 데이터베이스(34)(도 1)와 같은 우선순위 데이터 구조들의 자동 생성을 용이하게 할 수 있다.
도 3b는 함수 ID(72) 및 단일 텔레메트리 기록(74)을 포함하는 텔레메트리 정보(70)의 예를 도시한다. 예시된 텔레메트리 기록(74)은 함수 ID(72)에 대응하는 함수의 연속적인 실행을 위해 예를 들어 파라미터 크기 및 값, 메모리 요건들, 실행 시간, 스레드 수, 전력 소비 등과 같은 동작 조건들을 추적한다. 따라서, 설명되는 솔루션은 각각의 함수에 대해 하나의 텔레메트리 기록(74)만을 유지하고, 시스템이 시간에 따른 함수로서 함수 실행에 관해 더 많이 학습함에 따라, 기록(74)은 동적 데이터 모델의 역할을 한다. 이러한 접근방식은 임의로 여러 회 실행되는 함수들을 다루는 데 특히 유용할 수 있다. 또 다른 실시예에서, 함수는 어떠한 대응하는 동적 프로파일 정보도 갖지 않을 수 있지만, 시스템 생성자는 예를 들어 스케줄링 프로세스에서의 프로세서 타겟팅의 제안된 순서(예를 들어, 먼저 특수 가속기를 시도하고, 다음으로 특정 GPU를 시도하고, 마지막으로 CPU를 시도함)의 표시와 같이, 함수에 관한 정보를 정적으로 제공할 수 있다.
도 4는 프로세서 디스패치 테이블(PDT)(80)을 도시한다. 이미 언급된 바와 같이, 함수 텔레메트리 정보는 함수를 이기종 시스템 내의 프로세서에 매핑하는 PDT(80)를 생성하는 데 사용될 수 있다. 다른 실시예들에서, 프로파일 정보는 개발자/사용자 힌트들 및 휴리스틱스에 의해 강화, 대체 또는 오버라이드될 수 있다. 실시예에서, PDT(80)는 주어진 함수의 실행을 위해 이기종 시스템의 프로세서를 타겟팅하기 위한 선호되는 순서를 지정한다. 간단한 실시예에서, PDT(80)는 각각의 요소가 타겟 프로세서의 ID인 정렬된 어레이이다. 일 실시예에서, 제1 요소는 주어진 함수의 실행을 위한 최고 우선순위의(예를 들어, 가장 선호되는) 프로세서를 지정한다. 이러한 경우에서, PDT의 제2 요소는 주어진 함수의 실행을 위한 프로세서의 제2 선택을 지정하는 등이다. 도시된 예에서, 최고 우선순위를 갖는 프로세서의 유형은 "가속기 1"이고, 다음 최고 우선순위를 갖는 프로세서의 유형은 "가속기 2"인 등이다. 예를 들어, 함수에 대응하는 텔레메트리 정보가 와이드 벡터 명령어들이 많이 사용됨을 나타내는 경우, 그러한 지식은 함수의 실행을 위한 프로세서 선택의 우선순위 순서에 반영될 수 있다. 즉, 스케줄러는 비교적 와이드한 명령어들을 갖는 프로세서 상에서 함수를 실행하려고 시도할 수 있다.
다른 유형의 우선순위 데이터 구조는 메모리 할당(예를 들어, 레이아웃) 테이블(MAT)이고, 이는 함수를 포함하는 계산 유닛들의 선택 데이터 구조들에 대한 메모리의 할당을 안내한다. 실시예에서, MAT는 개발자의 지식, 및 애플리케이션 또는 함수의 이전 실행으로부터의 함수들의 동적 텔레메트리 프로파일을 캡처한다. 시스템 에이전트는 선택 데이터 구조(예를 들어, 대형 어레이 또는 버퍼)가 특정 메모리 유닛에 매핑된 이전 실행들의 실행 특성들을 분석할 수 있다. 일례에서, 다음으로, 에이전트는 애플리케이션 또는 함수의 실행 동안 메모리 할당자에 의해 사용될, 데이터 구조에 대응하는 메모리 할당을 위한 우선순위 테이블을 생성한다. 따라서, MAT의 우선순위화된 목록은 함수의 데이터 구조에 대해 [캐시 => RAM => 영구 저장소]일 수 있는 반면, MAT의 우선순위화된 목록은 함수의 다른 데이터 구조에 대해 [RAM => 영구 저장소]일 수 있다. PDT와 마찬가지로, MAT는 시스템이 애플리케이션 또는 함수의 실행 특성에 관해 자동으로 더 많이 학습함에 따라 진화할 수 있다. 이와 같이, 새로운 실행들로부터의 학습들은 향후 실행들의 거동을 더 개선하는 데 사용된다. 특정 실시예들에서, MAT의 범위는 예를 들어 분해된 계층화된(disaggregated tiered) 메모리 아키텍처 시스템과 같은 아키텍처를 포괄하기 위해 단일 컴퓨팅 시스템의 컴포넌트들을 넘어서 확장된다.
도 5는 스케줄러를 동작시키는 방법(90)을 도시한다. 일반적으로, 방법(90)은 예를 들어 이미 논의된 스케줄러(30)(도 1)와 같은 스케줄러에서 구현될 수 있다. 보다 구체적으로, 방법(90)은 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 프로그래밍가능한 ROM(PROM), 펌웨어, 플래시 메모리 등과 같은 머신 또는 컴퓨터 판독가능한 저장 매체 내에, 예를 들어 프로그래밍가능한 로직 어레이(PLA), FPGA, 복합 프로그래밍가능한 로직 디바이스(CPLD)와 같은 구성가능한 로직 내에, 주문형 집적 회로(ASIC), 상보형 금속 산화물 반도체(CMOS) 또는 트랜지스터-트랜지스터 로직(TTL) 기술과 같은 회로 기술을 사용하는 고정 기능 로직 하드웨어 내에, 또는 이들의 임의의 조합에 저장된 로직 명령어들의 세트로서 하나 이상의 모듈에서 구현될 수 있다.
예를 들어, 방법(90)에 도시된 동작들을 수행하기 위한 컴퓨터 프로그램 코드는 JAVA, SMALLTALK, C++ 또는 그와 유사한 것과 같은 객체 지향 프로그래밍 언어, 및 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어와 같은 종래의 절차적 프로그래밍 언어들을 포함하는, 하나 이상의 프로그래밍 언어의 임의의 조합으로 작성될 수 있다. 추가로, 로직 명령어들은 어셈블러 명령어들, ISA 명령어들, 머신 명령어들, 머신 종속 명령어들, 마이크로코드, 상태 설정 데이터, 집적 회로에 대한 구성 데이터, 전자 회로 및/또는 하드웨어(예를 들어, 호스트 프로세서, 중앙 처리 유닛/CPU, 마이크로컨트롤러 등)에 고유한 다른 구조적 컴포넌트들을 개인화하는 상태 정보를 포함할 수 있다.
도시된 처리 블록(92)은 함수에 연관된(예를 들어, 전용인) 우선순위 데이터 구조(예를 들어, PDT, MAT)를 식별하기 위해 제공되며, 여기서 우선순위 데이터 구조는 하드웨어 리소스 유형들을 우선순위 순서로 나열한다. 블록(92)은 또한 수집된 텔레메트리 정보에 기초하여 우선순위 데이터 구조를 생성 및/또는 수정하는 것을 포함할 수 있다. 이와 관련하여, 블록(92)은 (예를 들어, 고성능 프로세서를 우선순위화함으로써) 성능을 개선하고, (예를 들어, 저전력 프로세서를 우선순위화함으로써) 전력 소비를 감소하는 등을 위해 우선순위 데이터 구조를 설계할 수 있다. 사실, 매핑들은 시각 특정적일 수도 있다.
하드웨어 리소스의 유형은 블록(94)에서 선택될 수 있으며, 여기서 블록(96)은 선택된 하드웨어 리소스 유형이 이용가능한지를 결정한다. 그렇다면, 블록(98)에서, 선택된 하드웨어 리소스 유형이 함수에 할당(예를 들어, 배정)된다. 선택된 하드웨어 리소스 유형이 이용가능하지 않은 경우, 도시된 방법(90)은 블록(94)으로 되돌아가고, 우선순위 순서에서 하드웨어 리소스의 다음 유형을 선택한다.
따라서, 우선순위 데이터 구조에서 최고 우선순위를 갖는 리소스의 유형이 이용가능한 경우, 그 유형의 리소스가 함수에 할당될 것이다. 그렇지 않으면, (우선순위 순서에 따라) 제2 유형의 하드웨어 리소스가 함수에 할당될 것이고, 여기서 제2 유형의 하드웨어 리소스는 다음 이용가능한 하드웨어 리소스 유형이다. 이미 언급된 바와 같이, 하드웨어 리소스 유형들은 프로세서 유형들(예를 들어, PDT의 경우) 및/또는 메모리 유형들(예를 들어, MAT의 경우)일 수 있다. 따라서, 도시된 방법(90)은 더 최적의 실행 구성이 함수별로 자동으로 식별될 수 있도록 함으로써 성능, 효율성 및/또는 확장성을 향상시킨다. 또한, 우선순위 데이터 구조가 시간이 지남에 따라 업데이트될 수 있기 때문에, 새로운 유형의 하드웨어 리소스들이 개발됨에 따라 비용이 많이 들고 시간소모적인 애플리케이션 코드의 재작성이 회피될 수 있다.
도 6은 성능 향상된 컴퓨팅 시스템을 동작시키는 방법(101)을 도시한다. 방법(101)은 RAM, ROM, PROM, 펌웨어, 플래시 메모리 등과 같은 머신 또는 컴퓨터 판독가능한 저장 매체 내에, 예를 들어 PLA, FPGA, CPLD와 같은 구성가능한 로직 내에, 예를 들어 ASIC, CMOS 또는 TTL 기술과 같은 회로 기술을 사용하는 고정 기능 로직 하드웨어 내에, 또는 이들의 임의의 조합에 저장된 로직 명령어들의 세트로서 하나 이상의 모듈에서 구현될 수 있다.
일반적으로, 애플리케이션/함수 스케줄러(100)는 실행을 위한 함수(또는 애플리케이션)를 구성하고 함수 실행을 위한 메모리를 할당할 때 프로세서 디스패치 테이블들(102) 및 메모리 할당 테이블들(104)의 글로벌 데이터베이스를 활용할 수 있다. 특정 실시예들에서, 실행에 관한 새로운 텔레메트리 정보는 새로운 정보에 기초하여 PDT들(102) 및 MAT들(104)을 수정하는 에이전트에 의해 사용되도록 기록된다. 예를 들어, 프로세스 블록(106)에서 애플리케이션/함수가 특정 프로세서/메모리 구성 상에서 실행될 수 있으며, 여기서 블록(108)에서 실행 텔레메트리 프로파일이 모집(예를 들어, 수집)된다. 실시예에서, 실행 분석기는 블록(110)에서 텔레메트리 정보(예를 들어, 프로파일, 히스토리)를 생성/업데이트한다. 도시된 예에서, 텔레메트리 정보 수집 및 우선순위 데이터 구조 업데이트는 함수의 복수 회의 실행을 위해 반복된다.
따라서, 도시된 방법(101)은 이기종 시스템들을 위해 컴퓨터 애플리케이션들을 파티셔닝하기 위한 자동화된 학습 솔루션을 제공한다(예를 들어, 비용이 많이 들고 시간 소모적인 애플리케이션 코드의 재작성을 방지함). 추가적으로, 텔레메트리 정보는 함수의 각각의 실행에 대해 상이한 텔레메트리 기록에 저장될 수 있거나(예를 들어, 도 3a 참조), 함수의 각각의 실행에 대해 동일한 텔레메트리 기록에 저장될 수 있다(예를 들어, 도 3b 참조). 실시예에서, 스케줄러(100)는 텔레메트리 정보에 기초하여 우선순위 데이터 구조들을 생성하고 수정한다.
이제 도 7을 보면, 성능 향상된 컴퓨팅 시스템(170)이 도시되어 있다. 시스템(170)은 일반적으로 컴퓨팅 기능(예를 들어, 개인용 휴대 정보 단말기/PDA, 노트북 컴퓨터, 태블릿 컴퓨터, 컨버터블 태블릿, 서버), 통신 기능(예를 들어, 스마트 폰), 이미징 기능(예를 들어, 카메라, 캠코더), 미디어 재생 기능(예를 들어, 스마트 텔레비전/TV), 웨어러블 기능(예를 들어, 시계, 아이웨어, 헤드웨어, 풋웨어, 쥬얼리), 차량 기능(예를 들어, 자동차, 트럭, 오토바이), 로봇 기능(예를 들어, 자율 로봇) 등, 또는 이들의 조합을 갖는 전자 디바이스/플랫폼의 일부일 수 있다. 도시된 예에서, 시스템(170)은 시스템 메모리(176)에 결합된 통합 메모리 제어기(IMC)(174)를 갖는 호스트 프로세서(172)를 포함한다.
도시된 시스템(170)은 또한 시스템 온 칩(SoC)으로서 반도체 다이(182) 상의 호스트 프로세서(172) 및 그래픽 프로세서(180)와 함께 구현되는 입력 출력(IO) 모듈(178)을 포함한다. 도시된 IO 모듈(178)은 예를 들어 디스플레이(184)(예를 들어, 터치 스크린, 액정 디스플레이/LCD, 발광 다이오드/LED 디스플레이), 네트워크 제어기(186)(예를 들어, 유선 및/또는 무선), 및 대용량 저장소(188)(예를 들어, 하드 디스크 드라이브/HDD, 광 디스크, 솔리드 스테이트 드라이브/SSD, 플래시 메모리)와 통신한다.
실시예에서, 호스트 프로세서(172), 그래픽 프로세서(180) 및/또는 IO 모듈(178)은 이미 논의된 방법(90)(도 5) 및/또는 방법(101)(도 6)의 하나 이상의 양태를 수행하기 위해 시스템 메모리(176) 및/또는 대용량 저장소(188)로부터 검색된 프로그램 명령어들(190)을 실행한다. 따라서, 도시된 명령어들(190)의 실행은 컴퓨팅 시스템(170)으로 하여금 함수의 실행 동안 텔레메트리 정보를 수집하고 텔레메트리 정보에 기초하여 우선순위 데이터 구조를 생성하게 할 수 있으며, 여기서 우선순위 데이터 구조는 하드웨어 리소스 유형들을 우선순위 순서로 나열한다. 일례에서, 명령어들(190)의 실행은 또한 컴퓨팅 시스템(170)으로 하여금 함수의 복수의 실행 동안 텔레메트리 정보를 수집하고 텔레메트리 정보에 기초하여 우선순위 데이터 구조를 수정하게 한다.
실시예에서, 도시된 명령어들(190)의 실행은 또한 컴퓨팅 시스템(170)으로 하여금 제1 유형의 하드웨어 리소스가 이용가능한 경우에 제1 유형의 하드웨어 리소스를 함수에 할당하게 하고, 여기서 제1 유형의 하드웨어 리소스는 우선순위 데이터 구조에서 최고 우선순위를 갖는다. 추가로, 명령어들(190)의 실행은 컴퓨팅 시스템(170)으로 하여금 제1 유형의 하드웨어 리소스가 이용가능하지 않은 경우에는 우선순위 순서에 따라 제2 유형의 하드웨어 리소스를 함수에 할당하게 할 수 있다. 실시예에서, 제2 유형의 하드웨어 리소스는 다음 이용가능한 유형의 하드웨어 리소스이다. 앞에서 논의된 바와 같이, 하드웨어 리소스 유형들은 프로세서 유형들, 메모리 유형들 등일 수 있다. 따라서, 컴퓨팅 시스템(170)은 적어도, 더 최적의 실행 구성들이 함수별로 자동으로 식별되고 사용될 수 있도록 하기 위해 우선순위 데이터 구조들을 사용하는 정도까지 성능이 향상된다.
도 8은 반도체 패키지 장치(192)를 도시한다. 도시된 장치(192)는 하나 이상의 기판(194)(예를 들어, 실리콘, 사파이어, 갈륨 비화물), 및 기판(들)(194)에 결합된 로직(196)(예를 들어, 트랜지스터 어레이 및 다른 집적 회로/IC 컴포넌트들)을 포함한다. 로직(196)은 구성가능한 로직 또는 고정 기능 로직 하드웨어에서 적어도 부분적으로 구현될 수 있다. 일례에서, 로직(196)은 이미 논의된 방법(90)(도 5), 및/또는 방법(101)(도 6)의 하나 이상의 양태를 구현한다. 따라서, 로직(196)은 함수의 실행 동안 텔레메트리 정보를 수집하고, 텔레메트리 정보에 기초하여 우선순위 데이터 구조를 생성할 수 있으며, 여기서 우선순위 데이터 구조는 하드웨어 리소스 유형들을 우선순위 순서로 나열한다. 일례에서, 로직(196)은 또한 함수의 복수의 실행 동안 텔레메트리 정보를 수집하고, 텔레메트리 정보에 기초하여 우선순위 데이터 구조를 수정한다.
실시예에서, 로직(196)은 제1 유형의 하드웨어 리소스가 이용가능한 경우에는 제1 유형의 하드웨어 리소스를 함수에 할당하고, 여기서 제1 유형의 하드웨어 리소스는 우선순위 데이터 구조에서 최고 우선순위를 갖는다. 추가적으로, 로직(196)은 제1 유형의 하드웨어 리소스가 이용가능하지 않은 경우에는 우선순위 순서에 따라 제2 유형의 하드웨어 리소스를 함수에 할당할 수 있다. 일례에서, 제2 유형의 하드웨어 리소스는 다음 이용가능한 하드웨어 리소스 유형이다. 이미 논의된 바와 같이, 하드웨어 리소스 유형들은 프로세서 유형들, 메모리 유형들 등일 수 있다. 따라서, 장치(192)는 적어도, 더 최적의 실행 구성들이 함수별로 자동으로 식별하고 사용되는 것을 가능하게 하기 위해 우선순위 데이터 구조들을 사용하는 정도까지 성능이 향상된다.
일례에서, 로직(196)은 기판(들)(194) 내에 위치(예를 들어, 임베드)되는 트랜지스터 채널 영역들을 포함한다. 따라서, 로직(196)과 기판(들)(194) 사이의 인터페이스는 계단 접합(abrupt junction)이 아닐 수 있다. 로직(196)은 또한 기판(들)(194)의 초기 웨이퍼 상에서 성장되는 에피택셜 층을 포함하는 것으로 간주될 수 있다.
도 9는 일 실시예에 따른 프로세서 코어(200)를 도시한다. 프로세서 코어(200)는 마이크로 프로세서, 임베디드 프로세서, 디지털 신호 프로세서(DSP), 네트워크 프로세서, 또는 코드를 실행하기 위한 다른 디바이스와 같은 임의의 유형의 프로세서를 위한 코어일 수 있다. 단 하나의 프로세서 코어(200)가 도 9에 도시되어 있지만, 처리 요소는 대안적으로 도 9에 도시된 프로세서 코어(200)를 하나보다 많이 포함할 수 있다. 프로세서 코어(200)는 단일 스레드 코어일 수 있거나, 적어도 하나의 실시예에서, 프로세서 코어(200)는 코어 당 하나보다 많은 하드웨어 스레드 컨텍스트(또는 "논리적 프로세서")를 포함할 수 있다는 점에서 멀티스레딩될 수 있다.
도 9는 또한 프로세서 코어(200)에 결합된 메모리(270)를 도시한다. 메모리(270)는 본 기술분야의 통상의 기술자들에게 공지되거나 다르게 이용가능한 여러 다양한 메모리(메모리 계층구조의 다양한 계층들을 포함함) 중 임의의 것일 수 있다. 메모리(270)는 프로세서 코어(200)에 의해 실행될 하나 이상의 코드(213) 명령어(들)를 포함할 수 있고, 여기서 코드(213)는 이미 논의된 방법(90)(도 5), 및/또는 방법(101)(도 6)의 하나 이상의 양태를 구현할 수 있다. 프로세서 코어(200)는 코드(213)에 의해 표시된 명령어들의 프로그램 시퀀스를 따른다. 각각의 명령어는 프런트 엔드 부분(210)에 입력되고, 하나 이상의 디코더(220)에 의해 처리될 수 있다. 디코더(220)는 미리 정의된 포맷의 고정 폭 마이크로 연산과 같은 마이크로 연산을 그것의 출력으로서 생성할 수 있거나, 원본 코드 명령어를 반영하는 다른 명령어들, 마이크로 명령어들 또는 제어 신호들을 생성할 수 있다. 도시된 프런트 엔드 부분(210)은 또한 레지스터 재명명 로직(225) 및 스케줄링 로직(230)을 포함하며, 이는 일반적으로 리소스들을 할당하고 실행을 위해 변환 명령어에 대응하는 동작을 큐잉한다.
실행 유닛들(255-1 내지 255-N)의 세트를 갖는 실행 로직(250)을 포함하는 프로세서 코어(200)가 도시된다. 일부 실시예들은 특정 함수들 또는 함수 세트들에 전용인 다수의 실행 유닛을 포함할 수 있다. 다른 실시예들은 특정 함수를 수행할 수 있는 하나의 실행 유닛 또는 단 하나의 실행 유닛을 포함할 수 있다. 도시된 실행 로직(250)은 코드 명령어들에 의해 지정된 동작들을 수행한다.
코드 명령어들에 의해 지정된 동작들의 실행을 완료한 후, 백엔드 로직(260)은 코드(213)의 명령어들을 폐기(retire)한다. 일 실시예에서, 프로세서 코어(200)는 비순차적 실행을 허용하지만 명령어들의 순차적 폐기를 필요로 한다. 폐기 로직(265)은 본 기술분야의 통상의 기술자에게 알려진 다양한 형태(예를 들어, 재정렬 버퍼 등)를 취할 수 있다. 이러한 방식으로, 프로세서 코어(200)는 적어도, 디코더에 의해 생성되는 출력, 레지스터 재명명 로직(225)에 의해 사용되는 하드웨어 레지스터들 및 테이블들, 및 실행 로직(250)에 의해 수정되는 임의의 레지스터들(도시되지 않음)의 측면에서, 코드(213)의 실행 동안 변환된다.
비록 도 9에는 도시되지 않았지만, 처리 요소는 프로세서 코어(200)와 함께 칩 상의 다른 요소들을 포함할 수 있다. 예를 들어, 처리 요소는 프로세서 코어(200)와 함께 메모리 제어 로직을 포함할 수 있다. 처리 요소는 I/O 제어 로직을 포함할 수 있고/있거나, 메모리 제어 로직과 통합된 I/O 제어 로직을 포함할 수 있다. 처리 요소는 또한 하나 이상의 캐시를 포함할 수 있다.
이제 도 10을 참조하면, 일 실시예에 따른 컴퓨팅 시스템(1000) 실시예의 블록도가 도시되어 있다. 도 10에는 제1 처리 요소(1070) 및 제2 처리 요소(1080)를 포함하는 멀티프로세서 시스템(1000)이 도시되어 있다. 2개의 처리 요소(1070 및 1080)가 도시되어 있지만, 시스템(1000)의 실시예는 또한 그러한 처리 요소를 단 하나만 포함할 수 있음이 이해된다.
시스템(1000)은 포인트-투-포인트 상호접속 시스템으로서 도시되며, 여기서 제1 처리 요소(1070) 및 제2 처리 요소(1080)는 포인트-투-포인트 상호접속부(1050)를 통해 결합된다. 도 10에 도시된 상호접속부들의 일부 또는 전부는 포인트-투-포인트 상호접속부보다는 멀티-드롭 버스로서 구현될 수 있다.
도 10에 도시된 바와 같이, 처리 요소들(1070 및 1080) 각각은 제1 및 제2 프로세서 코어(즉, 프로세서 코어들(1074a 및 1074b) 및 프로세서 코어들(1084a 및 1084b))를 포함하는 멀티코어 프로세서일 수 있다. 이러한 코어들(1074a, 1074b, 1084a, 1084b)은 도 9와 관련하여 위에서 논의된 것과 유사한 방식으로 명령어 코드를 실행하도록 구성될 수 있다.
각각의 처리 요소(1070, 1080)는 적어도 하나의 공유 캐시(1896a, 1896b)를 포함할 수 있다. 공유 캐시(1896a, 1896b)는 각각 코어들(1074a, 1074b 및 1084a, 1084b)과 같은 프로세서의 하나 이상의 컴포넌트에 의해 이용되는 데이터(예를 들어, 명령어들)를 저장할 수 있다. 예를 들어, 공유 캐시(1896a, 1896b)는 프로세서의 컴포넌트들에 의한 더 빠른 액세스를 위해 메모리(1032, 1034)에 저장된 데이터를 로컬로 캐시할 수 있다. 하나 이상의 실시예에서, 공유 캐시(1896a, 1896b)는 레벨 2(L2), 레벨 3(L3), 레벨 4(L4), 또는 다른 레벨의 캐시, 최종 레벨 캐시(LLC) 및/또는 이들의 조합과 같은 하나 이상의 중간 레벨 캐시를 포함할 수 있다.
단 2개의 처리 요소(1070, 1080)로 도시되었지만, 실시예들의 범위는 그렇게 제한되지 않는다는 것이 이해되어야 한다. 다른 실시예들에서, 하나 이상의 추가 처리 요소가 주어진 프로세서에 존재할 수 있다. 대안적으로, 처리 요소들(1070, 1080) 중 하나 이상은 가속기 또는 필드 프로그래밍가능한 게이트 어레이와 같은, 프로세서 이외의 요소일 수 있다. 예를 들어, 추가 처리 요소(들)는 제1 프로세서(1070)와 동일한 추가 프로세서(들), 제1 프로세서(1070)와 같은 프로세서에 대해 이기종 또는 비대칭인 추가 프로세서(들), 가속기들(예를 들어, 그래픽 가속기들 또는 디지털 신호 처리(DSP) 유닛들), 필드 프로그래밍가능한 게이트 어레이들, 또는 임의의 다른 처리 요소를 포함할 수 있다. 아키텍처, 마이크로 아키텍처, 열, 전력 소비 특성 등을 포함하는 다양한 장점 척도의 측면에서, 처리 요소들(1070, 1080) 사이에는 다양한 차이가 있을 수 있다. 이러한 차이들은 실질적으로 그 자체가 처리 요소들(1070, 1080) 사이의 비대칭성 및 이질성(heterogeneity)으로서 나타날 수 있다. 적어도 하나의 실시예에 대해, 다양한 처리 요소들(1070, 1080)은 동일한 다이 패키지에 상주할 수 있다.
제1 처리 요소(1070)는 메모리 제어기 로직(MC)(1072), 및 포인트-투-포인트(P-P) 인터페이스들(1076 및 1078)을 더 포함할 수 있다. 마찬가지로, 제2 처리 요소(1080)는 MC(1082) 및 P-P 인터페이스들(1086 및 1088)을 포함할 수 있다. 도 10에 도시된 바와 같이, MC들(1072 및 1082)은 프로세서들을 각각의 메모리들, 즉 메모리(1032) 및 메모리(1034)에 결합하며, 이들은 각각의 프로세서들에 로컬로 부착된 주 메모리의 일부일 수 있다. MC(1072 및 1082)가 처리 요소들(1070, 1080)에 통합된 것으로 도시되어 있지만, 대안적인 실시예들에 대해, MC 로직은 내부에 통합되기보다는 처리 요소들(1070, 1080) 외부의 이산 로직일 수 있다.
제1 처리 요소(1070) 및 제2 처리 요소(1080)는 각각 P-P 상호접속부들(1076, 1086)을 통해 I/O 서브시스템(1090)에 결합될 수 있다. 도 10에 도시된 바와 같이, I/O 서브시스템(1090)은 P-P 인터페이스들(1094 및 1098)을 포함한다. 또한, I/O 서브시스템(1090)은 I/O 서브시스템(1090)을 고성능 그래픽 엔진(1038)과 결합하기 위한 인터페이스(1092)를 포함한다. 일 실시예에서, 그래픽 엔진(1038)을 I/O 서브시스템(1090)에 결합하기 위해, 버스(1049)가 사용될 수 있다. 대안적으로, 포인트-투-포인트 상호접속부는 이러한 컴포넌트들을 결합할 수 있다.
차례로, I/O 서브시스템(1090)은 인터페이스(1096)를 통해 제1 버스(1016)에 결합될 수 있다. 일 실시예에서, 제1 버스(1016)는 주변 컴포넌트 상호접속(Peripheral Component Interconnect)(PCI) 버스, 또는 PCI 익스프레스 버스 또는 다른 3세대 I/O 상호접속 버스와 같은 버스일 수 있지만, 실시예들의 범위는 그렇게 제한되지는 않는다.
도 10에 도시된 바와 같이, 다양한 I/O 디바이스들(1014)(예를 들어, 생체 인식 스캐너들, 스피커들, 카메라들, 센서들)은 제1 버스(1016)를 제2 버스(1020)에 결합할 수 있는 버스 브리지(1018)와 함께 제1 버스(1016)에 결합될 수 있다. 일 실시예에서, 제2 버스(1020)는 로우 핀 카운트(low pin count)(LPC) 버스일 수 있다. 일 실시예에서, 예를 들어, 키보드/마우스(1012), 통신 디바이스(들)(1026), 및 코드(1030)를 포함할 수 있는 디스크 드라이브 또는 다른 대용량 저장 디바이스와 같은 데이터 저장 유닛(1019)을 포함하는 다양한 디바이스들이 제2 버스(1020)에 결합될 수 있다. 도시된 코드(1030)는 이미 논의된 방법(90)(도 5) 및/또는 방법(101)(도 6)의 하나 이상의 양태를 구현할 수 있다. 또한, 오디오 I/O(1024)는 제2 버스(1020)에 결합될 수 있고, 배터리(1010)는 컴퓨팅 시스템(1000)에 전력을 공급할 수 있다.
다른 실시예들이 고려된다는 점에 유의해야 한다. 예를 들어, 도 10의 포인트-투-포인트 아키텍처를 대신하여, 시스템은 멀티-드롭 버스 또는 다른 그러한 통신 토폴로지를 구현할 수 있다. 또한, 도 10의 요소들은 대안적으로 도 10에 도시된 것보다 더 많거나 더 적은 통합 칩을 사용하여 분할될 수 있다.
추가 참고들 및 예들:
예 1은 성능 향상된 컴퓨팅 시스템으로서, 네트워크 제어기; 네트워크 제어기에 결합되는 프로세서; 및 프로세서에 결합되는 메모리 - 메모리는 실행가능한 프로그램 명령어들의 세트를 포함함 - 를 포함하고, 실행가능한 프로그램 명령어들은 프로세서에 의해 실행될 때, 컴퓨팅 시스템으로 하여금: 함수에 연관된 우선순위 데이터 구조(prioritization data structure)를 식별하고 - 우선순위 데이터 구조는 하드웨어 리소스 유형들을 우선순위 순서로 나열함 -; 제1 유형의 하드웨어 리소스가 이용가능한 경우, 제1 유형의 하드웨어 리소스를 함수에 할당하고 - 제1 유형의 하드웨어 리소스는 우선순위 데이터 구조에서 최고 우선순위를 가짐 -; 및 제1 유형의 하드웨어 리소스가 이용가능하지 않은 경우, 우선순위 순서에 따라, 제2 유형의 하드웨어 리소스를 함수에 할당하게 - 하드웨어 리소스 유형들은 프로세서 유형들 또는 메모리 유형들 중 하나임 - 하는, 성능 향상된 컴퓨팅 시스템을 포함한다.
예 2는 예 1의 컴퓨팅 시스템을 포함하고, 여기서 명령어들은 실행될 때, 컴퓨팅 시스템으로 하여금: 함수의 실행 동안 텔레메트리 정보(telemetry information)를 수집하고; 텔레메트리 정보에 기초하여 우선순위 데이터 구조를 생성하게 하고, 제2 유형의 하드웨어 리소스는 다음 이용가능한 유형의 하드웨어 리소스이며, 텔레메트리 정보는 파라미터 크기 및 값, 메모리 요건, 실행 시간, 스레드 수, 또는 전력 소비 중 하나 이상을 포함하고, 우선순위 데이터 구조는 프로세서 디스패치 테이블 또는 메모리 할당 테이블 중 하나이다.
예 3은 예 1의 컴퓨팅 시스템을 포함하고, 여기서 명령어들은 실행될 때, 컴퓨팅 시스템으로 하여금: 함수의 복수의 실행 동안 텔레메트리 정보를 수집하고; 텔레메트리 정보에 기초하여 우선순위 데이터 구조를 수정하게 한다.
예 4는 예 3의 컴퓨팅 시스템을 포함하고, 여기서 명령어들은 실행될 때, 컴퓨팅 시스템으로 하여금: 제1 텔레메트리 정보를 제1 텔레메트리 기록에 저장하고 - 제1 텔레메트리 정보는 함수의 제1 실행에 연관됨 -; 제2 텔레메트리 정보를 제2 텔레메트리 기록에 저장하게 - 제2 텔레메트리 정보는 함수의 제2 실행에 연관됨 - 한다.
예 5는 예 3의 컴퓨팅 시스템을 포함하고, 여기서 명령어들은 실행될 때, 컴퓨팅 시스템으로 하여금: 제1 텔레메트리 정보를 텔레메트리 기록에 저장하고 - 제1 텔레메트리 정보는 함수의 제1 실행에 연관됨 -; 제2 텔레메트리 정보를 텔레메트리 기록에 저장하게 - 제2 텔레메트리 정보는 함수의 제2 실행에 연관됨 - 한다.
예 6은 반도체 장치로서, 하나 이상의 기판; 및 하나 이상의 기판에 결합되는 로직 - 로직은 구성가능한 로직 또는 고정 기능 하드웨어 로직 중 하나 이상에서 적어도 부분적으로 구현됨 - 을 포함하고, 하나 이상의 기판에 결합되는 로직은 함수에 연관된 우선순위 데이터 구조를 식별하고 - 우선순위 데이터 구조는 하드웨어 리소스 유형들을 우선순위 순서로 나열함 -; 제1 유형의 하드웨어 리소스가 이용가능한 경우, 제1 유형의 하드웨어 리소스를 함수에 할당하고 - 제1 유형의 하드웨어 리소스는 우선순위 데이터 구조에서 최고 우선순위를 가짐 -; 및 제1 유형의 하드웨어 리소스가 이용가능하지 않은 경우, 우선순위 순서에 따라, 제2 유형의 하드웨어 리소스를 함수에 할당하는, 반도체 장치를 포함한다.
예 7은 예 6의 반도체 장치를 포함하고, 여기서, 하나 이상의 기판에 결합되는 로직은 함수의 실행 동안 텔레메트리 정보를 수집하고; 텔레메트리 정보에 기초하여 우선순위 데이터 구조를 생성하고, 제2 유형의 하드웨어 리소스는 다음 이용가능한 유형의 하드웨어 리소스이며, 텔레메트리 정보는 파라미터 크기 및 값, 메모리 요건, 실행 시간, 스레드 수, 또는 전력 소비 중 하나 이상을 포함하고, 우선순위 데이터 구조는 프로세서 디스패치 테이블 또는 메모리 할당 테이블 중 하나이다.
예 8은 예 6의 반도체 장치를 포함하고, 여기서, 하나 이상의 기판에 결합되는 로직은 함수의 복수의 실행 동안 텔레메트리 정보를 수집하고; 텔레메트리 정보에 기초하여 우선순위 데이터 구조를 수정한다.
예 9는 예 8의 반도체 장치를 포함하고, 여기서, 하나 이상의 기판에 결합되는 로직은 제1 텔레메트리 정보를 제1 텔레메트리 기록에 저장하고 - 제1 텔레메트리 정보는 함수의 제1 실행에 연관됨 -; 제2 텔레메트리 정보를 제2 텔레메트리 기록에 저장한다 - 제2 텔레메트리 정보는 함수의 제2 실행에 연관됨 -.
예 10은 예 8의 반도체 장치를 포함하고, 여기서, 하나 이상의 기판에 결합되는 로직은 제1 텔레메트리 정보를 텔레메트리 기록에 저장하고 - 제1 텔레메트리 정보는 함수의 제1 실행에 연관됨 -; 제2 텔레메트리 정보를 텔레메트리 기록에 저장한다 - 제2 텔레메트리 정보는 함수의 제2 실행에 연관됨 -.
예 11은 예 6 내지 예 10 중 어느 하나의 반도체 장치를 포함하고, 여기서, 하드웨어 리소스 유형들은 프로세서 유형들이다.
예 12는 예 6 내지 예 10 중 어느 하나의 반도체 장치를 포함하고, 여기서, 하드웨어 리소스 유형들은 메모리 유형들이다.
예 13은 실행가능한 프로그램 명령어들의 세트를 포함하는 적어도 하나의 컴퓨터 판독가능한 저장 매체로서, 실행가능한 프로그램 명령어들은, 컴퓨팅 시스템에 의해 실행될 때, 컴퓨팅 시스템으로 하여금: 함수에 연관된 우선순위 데이터 구조를 식별하고 - 우선순위 데이터 구조는 하드웨어 리소스 유형들을 우선순위 순서로 나열함 -; 제1 유형의 하드웨어 리소스가 이용가능한 경우, 제1 유형의 하드웨어 리소스를 함수에 할당하고 - 제1 유형의 하드웨어 리소스는 우선순위 데이터 구조에서 최고 우선순위를 가짐 -; 및 제1 유형의 하드웨어 리소스가 이용가능하지 않은 경우, 우선순위 순서에 따라, 제2 유형의 하드웨어 리소스를 함수에 할당하게 하는, 적어도 하나의 컴퓨터 판독가능한 저장 매체를 포함한다.
예 14는 예 13의 적어도 하나의 컴퓨터 판독가능한 저장 매체를 포함하고, 여기서 명령어들은 실행될 때, 컴퓨팅 시스템으로 하여금: 함수의 실행 동안 텔레메트리 정보를 수집하고; 텔레메트리 정보에 기초하여 우선순위 데이터 구조를 생성하게 하고, 제2 유형의 하드웨어 리소스는 다음 이용가능한 유형의 하드웨어 리소스이며, 텔레메트리 정보는 파라미터 크기 및 값, 메모리 요건, 실행 시간, 스레드 수, 또는 전력 소비 중 하나 이상을 포함하고, 우선순위 데이터 구조는 프로세서 디스패치 테이블 또는 메모리 할당 테이블 중 하나이다.
예 15는 예 13의 적어도 하나의 컴퓨터 판독가능한 저장 매체를 포함하고, 여기서 명령어들은 실행될 때, 컴퓨팅 시스템으로 하여금: 함수의 복수의 실행 동안 텔레메트리 정보를 수집하고; 텔레메트리 정보에 기초하여 우선순위 데이터 구조를 수정하게 한다.
예 16은 예 15의 적어도 하나의 컴퓨터 판독가능한 저장 매체를 포함하고, 여기서 명령어들은 실행될 때, 컴퓨팅 시스템으로 하여금: 제1 텔레메트리 정보를 제1 텔레메트리 기록에 저장하고 - 제1 텔레메트리 정보는 함수의 제1 실행에 연관됨 -; 제2 텔레메트리 정보를 제2 텔레메트리 기록에 저장하게 - 제2 텔레메트리 정보는 함수의 제2 실행에 연관됨 - 한다.
예 17은 예 15의 적어도 하나의 컴퓨터 판독가능한 저장 매체를 포함하고, 여기서 명령어들은 실행될 때, 컴퓨팅 시스템으로 하여금: 제1 텔레메트리 정보를 텔레메트리 기록에 저장하고 - 제1 텔레메트리 정보는 함수의 제1 실행에 연관됨 -; 제2 텔레메트리 정보를 텔레메트리 기록에 저장하게 - 제2 텔레메트리 정보는 함수의 제2 실행에 연관됨 - 한다.
예 18은 예 13 내지 예 17 중 어느 하나의 적어도 하나의 컴퓨터 판독가능한 저장 매체를 포함하고, 여기서 하드웨어 리소스 유형들은 프로세서 유형들이다.
예 19는 예 13 내지 예 17 중 어느 하나의 적어도 하나의 컴퓨터 판독가능한 저장 매체를 포함하고, 여기서 하드웨어 리소스 유형들은 메모리 유형들이다.
예 20은 성능 향상된 컴퓨팅 시스템을 동작시키는 방법으로서, 함수에 연관된 우선순위 데이터 구조를 식별하는 단계 - 우선순위 데이터 구조는 하드웨어 리소스 유형들을 우선순위 순서로 나열함 -; 제1 유형의 하드웨어 리소스가 이용가능한 경우, 제1 유형의 하드웨어 리소스를 함수에 할당하는 단계 - 제1 유형의 하드웨어 리소스는 우선순위 데이터 구조에서 최고 우선순위를 가짐 -; 및 제1 유형의 하드웨어 리소스가 이용가능하지 않은 경우, 우선순위 순서에 따라, 제2 유형의 하드웨어 리소스를 함수에 할당하는 단계 - 하드웨어 리소스 유형들은 프로세서 유형들 또는 메모리 유형들 중 하나임 - 를 포함하는 방법을 포함한다.
예 21은 예 20의 방법을 포함하고, 함수의 실행 동안 텔레메트리 정보를 수집하는 단계; 및 텔레메트리 정보에 기초하여 우선순위 데이터 구조를 생성하는 단계를 더 포함하고, 제2 유형의 하드웨어 리소스는 다음 이용가능한 유형의 하드웨어 리소스이며, 텔레메트리 정보는 파라미터 크기 및 값, 메모리 요건, 실행 시간, 스레드 수, 또는 전력 소비 중 하나 이상을 포함하고, 우선순위 데이터 구조는 프로세서 디스패치 테이블 또는 메모리 할당 테이블 중 하나이다.
예 22는 예 21의 방법을 포함하고, 함수의 복수의 실행 동안 텔레메트리 정보를 수집하는 단계; 및 텔레메트리 정보에 기초하여 우선순위 데이터 구조를 수정하는 단계를 더 포함한다.
예 23은 예 22의 방법을 포함하고, 제1 텔레메트리 정보를 제1 텔레메트리 기록에 저장하는 단계 - 제1 텔레메트리 정보는 함수의 제1 실행에 연관됨 -; 및 제2 텔레메트리 정보를 제2 텔레메트리 기록에 저장하는 단계 - 제2 텔레메트리 정보는 함수의 제2 실행에 연관됨 - 를 더 포함한다.
예 24는 예 22의 방법을 포함하고, 제1 텔레메트리 정보를 텔레메트리 기록에 저장하는 단계 - 제1 텔레메트리 정보는 함수의 제1 실행에 연관됨 -; 및 제2 텔레메트리 정보를 텔레메트리 기록에 저장하는 단계 - 제2 텔레메트리 정보는 함수의 제2 실행에 연관됨 - 를 더 포함한다.
예 25는 예 20 내지 예 24 중 어느 하나의 방법을 수행하기 위한 수단을 포함한다.
따라서, 본 명세서에 설명된 기술은 CPU들, GPU들, FPGA들, 및 다른 특수 가속기들 및 이기종의 계층화된 메모리 서브시스템들을 포함하는 이기종 컴퓨터 시스템들을 위해 컴퓨터 애플리케이션들을 자동으로 파티셔닝하는 시스템들의 설계를 가능하게 한다. 이 기술은, 예를 들어 다양한 컴퓨팅 및 메모리 유형들에 매핑될 수 있는 ONEAPI와 같은 통합 프로그래밍 모델에 기초한다. 이 기술은 또한 레이턴시, 대역폭, 처리량, 전력 소비 및 비용의 측면에서 특정 서비스 수준 합의(Service-Level Agreement)(SLA)를 갖는 애플리케이션들 또는 도메인-특정 애플리케이션들에 대해 고도로 최적화된 컴퓨터 시스템을 설계하는 데 사용될 수 있다. 이 기술은 컴퓨팅 프리미티브의 컴퓨팅 특성들(예를 들어, 성능, 전력)에 관한 동적 텔레메트리 및 프로파일 피드백에 더하여, 알려진 알고리즘들, 프리미티브들 및 코드렛들의 성능 특성들에 관한 정적인 사전 지식을 사용할 수 있다. 따라서, 이 기술은 최상의 컴퓨팅 프로세서에서 실행되도록 컴퓨터 애플리케이션들을 자동으로 파티셔닝할 수 있다. 이 기술은 또한 시스템이 애플리케이션들을 실행하면서 학습하는 지능적인 방식으로 사용될 수 있고, 그에 의해 자동 애플리케이션 파티셔닝을 위한 학습 시스템을 초래한다. 추가로, 본 명세서에 설명된 기술은 프로그래밍의 용이성에 직접적으로 의존할 수 있는 시장 출시 시간(time to market)(TTM)을 감소시킬 수 있다. 또한, 이 기술은 그것들의 컴퓨팅 및 비용 요건들을 충족하는 컴퓨팅 플랫폼들의 개발을 가능하게 한다.
실시예들은 모든 유형의 반도체 집적 회로("IC") 칩과 함께 사용하기 위해 적용가능하다. 이러한 IC 칩들의 예들은 프로세서들, 제어기들, 칩셋 컴포넌트들, 프로그래밍가능한 로직 어레이들(PLA), 메모리 칩들, 네트워크 칩들, 시스템 온 칩(system on chip)(SoC), SSD/NAND 제어기 ASIC들, 및 그와 유사한 것을 포함하지만 이에 제한되지는 않는다. 추가로, 도면들 중 일부에서 신호 전도체 라인들은 라인들로 표현된다. 일부는 더 많은 구성 신호 경로들을 나타내기 위해 상이할 수 있거나, 다수의 구성 신호 경로를 나타내기 위해 숫자 레이블을 갖거나, 및/또는 주 정보 흐름 방향을 나타내기 위해 하나 이상의 끝에 화살표들을 가질 수 있다. 그러나, 이것은 제한적인 방식으로 해석되어서는 안 된다. 오히려, 그러한 추가된 세부사항은 회로의 더 쉬운 이해를 용이하게 하기 위해 하나 이상의 예시적인 실시예와 관련하여 사용될 수 있다. 추가 정보를 갖는지에 관계없이, 임의의 표현된 신호 라인들은 실제로 복수의 방향으로 이동할 수 있는 하나 이상의 신호를 포함할 수 있으며, 임의의 적절한 유형의 신호 체계, 예를 들어, 차동 쌍으로 구현된 디지털 또는 아날로그 라인, 광섬유 라인 및/또는 단일 종단 라인으로 구현될 수 있다.
예시적인 크기들/모델들/값들/범위들이 주어졌을 수 있지만, 실시예들은 그러한 것으로 제한되지 않는다. 제조 기술들(예를 들어, 포토리소그래피)이 시간의 경과에 따라 발전함에 따라, 더 작은 크기의 디바이스들이 제조될 수 있을 것으로 예상된다. 추가로, IC 칩들 및 다른 컴포넌트들에 대한 잘 알려진 전력/접지 접속들은 도시 및 논의의 단순화를 위해, 그리고 실시예들의 특정 양태들을 모호하게 하지 않도록, 도면들 내에 도시되거나 도시되지 않을 수 있다. 또한, 실시예들을 모호하게 하는 것을 피하기 위해, 또한 그러한 블록도 배열들의 구현에 관한 세부 사항이 실시예가 구현될 컴퓨팅 시스템에 크게 의존한다는 사실, 즉, 그러한 세부사항들이 기술분야의 통상의 기술자의 이해의 범위 내에 있어야 한다는 사실을 고려하여, 배열들이 블록도 형태로 도시될 수 있다. 예시적인 실시예들을 설명하기 위해 특정 세부사항들(예를 들어, 회로들)이 제시된 경우, 본 기술분야의 통상의 기술자에게는 실시예들이 이러한 특정 세부사항들 없이 또는 그것들의 변형들과 함께 실시될 수 있다는 것이 명백해야 한다. 따라서, 설명은 제한적인 것이 아니라 예시적인 것으로 간주되어야 한다.
용어 "결합된"은 본 명세서에서 해당 컴포넌트들 사이의 직접 또는 간접적인 임의의 유형의 관계를 지칭하기 위해 사용될 수 있고, 전기적, 기계적, 유체, 광학적, 전자기적, 전기기계적 또는 다른 접속들에 적용될 수 있다. 추가로, 본 명세서에서 "제1", "제2" 등의 용어는 논의를 용의하게 하기 위해서만 사용될 수 있고, 다르게 표시되지 않는 한, 특정한 시간적 또는 연대적 중요성은 지니지 않을 수 있다.
본 출원 및 청구항들에서 사용될 때, 용어 "~ 중 하나 이상"에 의해 결합되는 항목들의 목록은 나열된 용어들의 임의의 조합을 의미할 수 있다. 예를 들어, 문구 "A, B 또는 C 중 하나 이상"은 A; B; C; A 및 B; A 및 C; B 및 C; 또는 A, B 및 C를 의미할 수 있다.
본 기술분야의 통상의 기술자들은 상술한 설명으로부터, 실시예들의 폭넓은 기술들이 다양한 형태로 구현될 수 있음을 알 것이다. 그러므로, 실시예들이 특정 예들에 관련하여 설명되었지만, 도면들, 명세서 및 이하의 청구항들을 숙지하면 숙련된 실무자에게 다른 수정들이 명백해질 것이므로, 실시예들의 진정한 범위는 그렇게 제한되지 않아야 한다.
Claims (24)
- 컴퓨팅 시스템으로서,
제1 신뢰 도메인 및 제2 신뢰 도메인의 실행과 연관될 복수의 실행 유닛을 포함하는 프로세서;
상기 제1 및 제2 신뢰 도메인들과 연관된 데이터를 저장하는 캐시;
상기 프로세서에 결합되는 메모리 - 상기 메모리는 실행가능한 프로그램 명령어들의 세트를 포함함 -
를 포함하고, 상기 실행가능한 프로그램 명령어들은 상기 프로세서에 의해 실행될 때, 상기 컴퓨팅 시스템으로 하여금:
상기 제1 신뢰 도메인과 연관된 제1 데이터가 상기 캐시의 제1 부분에 저장될 것이라고 결정하고;
상기 제2 신뢰 도메인과 연관된 제2 데이터가 상기 제1 부분의 제1 일부에 저장될 것이며 반면에 상기 제1 데이터의 제2 일부가 제1 세트의 제2 일부에 남아 있는다고 결정하게
하는, 컴퓨팅 시스템. - 제1항에 있어서, 상기 명령어들은 실행될 때, 상기 컴퓨팅 시스템으로 하여금:
상기 제1 신뢰 도메인에 할당된 제1 값에 기초하여 상기 제1 데이터가 상기 제1 부분에 저장될 것이라고 결정하고;
상기 제2 신뢰 도메인에 할당된 제2 값에 기초하여 상기 제2 데이터가 상기 제1 일부에 저장될 것이라고 결정하게 - 상기 제2 값은 상기 제1 값과 상이함 -
하는, 컴퓨팅 시스템. - 제1항에 있어서, 상기 명령어들은 실행될 때, 상기 컴퓨팅 시스템으로 하여금:
함수의 복수의 실행 동안 텔레메트리 정보(telemetry information)를 수집하고;
상기 텔레메트리 정보에 기초하여 우선순위 데이터 구조(prioritization data structure)를 수정하게
하는, 컴퓨팅 시스템. - 제3항에 있어서, 상기 명령어들은 실행될 때, 상기 컴퓨팅 시스템으로 하여금:
제1 텔레메트리 정보를 제1 텔레메트리 기록에 저장하고 - 상기 제1 텔레메트리 정보는 상기 함수의 제1 실행에 연관됨 -;
제2 텔레메트리 정보를 제2 텔레메트리 기록에 저장하게 - 상기 제2 텔레메트리 정보는 상기 함수의 제2 실행에 연관됨 -
하는, 컴퓨팅 시스템. - 제3항에 있어서, 상기 명령어들은 실행될 때, 상기 컴퓨팅 시스템으로 하여금:
제1 텔레메트리 정보를 텔레메트리 기록에 저장하고 - 상기 제1 텔레메트리 정보는 상기 함수의 제1 실행에 연관됨 -;
제2 텔레메트리 정보를 상기 텔레메트리 기록에 저장하게 - 상기 제2 텔레메트리 정보는 상기 함수의 제2 실행에 연관됨 -
하는, 컴퓨팅 시스템. - 반도체 장치로서,
하나 이상의 기판; 및
상기 하나 이상의 기판에 결합되는 로직 - 상기 로직은 구성가능한 로직 또는 고정 기능 하드웨어 로직(fixed-functionality hardware logic) 중 하나 이상에서 적어도 부분적으로 구현됨 -
을 포함하고, 상기 하나 이상의 기판에 결합되는 로직은:
함수에 연관된 우선순위 데이터 구조를 식별하고 - 상기 우선순위 데이터 구조는 하드웨어 리소스 유형들을 우선순위 순서로 나열함 -;
제1 유형의 하드웨어 리소스가 이용가능한 경우, 상기 제1 유형의 하드웨어 리소스를 상기 함수에 할당하고 - 상기 제1 유형의 하드웨어 리소스는 상기 우선순위 데이터 구조에서 최고 우선순위를 가짐 -; 및
상기 제1 유형의 하드웨어 리소스가 이용가능하지 않은 경우, 상기 우선순위 순서에 따라, 제2 유형의 하드웨어 리소스를 상기 함수에 할당하는,
반도체 장치. - 제6항에 있어서, 상기 하나 이상의 기판에 결합되는 로직은:
상기 함수의 실행 동안 텔레메트리 정보를 수집하고;
상기 텔레메트리 정보에 기초하여 상기 우선순위 데이터 구조를 생성하고,
상기 제2 유형의 하드웨어 리소스는 다음 이용가능한 유형의 하드웨어 리소스이며, 상기 텔레메트리 정보는 파라미터 크기 및 값, 메모리 요건, 실행 시간, 스레드 수, 또는 전력 소비 중 하나 이상을 포함하고, 상기 우선순위 데이터 구조는 프로세서 디스패치 테이블 또는 메모리 할당 테이블 중 하나인, 반도체 장치. - 제6항에 있어서, 상기 하나 이상의 기판에 결합되는 로직은:
상기 함수의 복수의 실행 동안 텔레메트리 정보를 수집하고;
상기 텔레메트리 정보에 기초하여 상기 우선순위 데이터 구조를 수정하는,
반도체 장치. - 제8항에 있어서, 상기 하나 이상의 기판에 결합되는 로직은:
제1 텔레메트리 정보를 제1 텔레메트리 기록에 저장하고 - 상기 제1 텔레메트리 정보는 상기 함수의 제1 실행에 연관됨 -;
제2 텔레메트리 정보를 제2 텔레메트리 기록에 저장하는 - 상기 제2 텔레메트리 정보는 상기 함수의 제2 실행에 연관됨 - ,
반도체 장치. - 제8항에 있어서, 상기 하나 이상의 기판에 결합되는 로직은:
제1 텔레메트리 정보를 텔레메트리 기록에 저장하고 - 상기 제1 텔레메트리 정보는 상기 함수의 제1 실행에 연관됨 -;
제2 텔레메트리 정보를 상기 텔레메트리 기록에 저장하는 - 상기 제2 텔레메트리 정보는 상기 함수의 제2 실행에 연관됨 - ,
반도체 장치. - 제6항에 있어서, 상기 하드웨어 리소스 유형들은 프로세서 유형들인, 반도체 장치.
- 제6항에 있어서, 상기 하드웨어 리소스 유형들은 메모리 유형들인, 반도체 장치.
- 실행가능한 프로그램 명령어들의 세트를 포함하는 적어도 하나의 컴퓨터 판독가능한 저장 매체로서,
상기 실행가능한 프로그램 명령어들은, 컴퓨팅 시스템에 의해 실행될 때, 상기 컴퓨팅 시스템으로 하여금:
함수에 연관된 우선순위 데이터 구조를 식별하고 - 상기 우선순위 데이터 구조는 하드웨어 리소스 유형들을 우선순위 순서로 나열함 -;
제1 유형의 하드웨어 리소스가 이용가능한 경우, 상기 제1 유형의 하드웨어 리소스를 상기 함수에 할당하고 - 상기 제1 유형의 하드웨어 리소스는 상기 우선순위 데이터 구조에서 최고 우선순위를 가짐 -;
상기 제1 유형의 하드웨어 리소스가 이용가능하지 않은 경우, 상기 우선순위 순서에 따라, 제2 유형의 하드웨어 리소스를 상기 함수에 할당하게
하는, 적어도 하나의 컴퓨터 판독가능한 저장 매체. - 제13항에 있어서, 상기 명령어들은 실행될 때, 상기 컴퓨팅 시스템으로 하여금:
상기 함수의 실행 동안 텔레메트리 정보를 수집하고;
상기 텔레메트리 정보에 기초하여 상기 우선순위 데이터 구조를 생성하게
하고, 상기 제2 유형의 하드웨어 리소스는 다음 이용가능한 유형의 하드웨어 리소스이며, 상기 텔레메트리 정보는 파라미터 크기 및 값, 메모리 요건, 실행 시간, 스레드 수, 또는 전력 소비 중 하나 이상을 포함하고, 상기 우선순위 데이터 구조는 프로세서 디스패치 테이블 또는 메모리 할당 테이블 중 하나인, 적어도 하나의 컴퓨터 판독가능한 저장 매체. - 제13항에 있어서, 상기 명령어들은 실행될 때, 상기 컴퓨팅 시스템으로 하여금:
상기 함수의 복수의 실행 동안 텔레메트리 정보를 수집하고;
상기 텔레메트리 정보에 기초하여 상기 우선순위 데이터 구조를 수정하게
하는, 적어도 하나의 컴퓨터 판독가능한 저장 매체. - 제15항에 있어서, 상기 명령어들은 실행될 때, 상기 컴퓨팅 시스템으로 하여금:
제1 텔레메트리 정보를 제1 텔레메트리 기록에 저장하고 - 상기 제1 텔레메트리 정보는 상기 함수의 제1 실행에 연관됨 -;
제2 텔레메트리 정보를 제2 텔레메트리 기록에 저장하게 - 상기 제2 텔레메트리 정보는 상기 함수의 제2 실행에 연관됨 -
하는, 적어도 하나의 컴퓨터 판독가능한 저장 매체. - 제15항에 있어서, 상기 명령어들은 실행될 때, 상기 컴퓨팅 시스템으로 하여금:
제1 텔레메트리 정보를 텔레메트리 기록에 저장하고 - 상기 제1 텔레메트리 정보는 상기 함수의 제1 실행에 연관됨 -;
제2 텔레메트리 정보를 상기 텔레메트리 기록에 저장하게 - 상기 제2 텔레메트리 정보는 상기 함수의 제2 실행에 연관됨 -
하는, 적어도 하나의 컴퓨터 판독가능한 저장 매체. - 제13항에 있어서, 상기 하드웨어 리소스 유형들은 프로세서 유형들인, 적어도 하나의 컴퓨터 판독가능한 저장 매체.
- 제13항에 있어서, 상기 하드웨어 리소스 유형들은 메모리 유형들인, 적어도 하나의 컴퓨터 판독가능한 저장 매체.
- 방법으로서,
함수에 연관된 우선순위 데이터 구조를 식별하는 단계 - 상기 우선순위 데이터 구조는 하드웨어 리소스 유형들을 우선순위 순서로 나열함 -;
제1 유형의 하드웨어 리소스가 이용가능한 경우, 상기 제1 유형의 하드웨어 리소스를 상기 함수에 할당하는 단계 - 상기 제1 유형의 하드웨어 리소스는 상기 우선순위 데이터 구조에서 최고 우선순위를 가짐 -; 및
상기 제1 유형의 하드웨어 리소스가 이용가능하지 않은 경우, 상기 우선순위 순서에 따라, 제2 유형의 하드웨어 리소스를 상기 함수에 할당하는 단계 - 상기 하드웨어 리소스 유형들은 프로세서 유형들 또는 메모리 유형들 중 하나임 -
를 포함하는 방법. - 제20항에 있어서,
상기 함수의 실행 동안 텔레메트리 정보를 수집하는 단계; 및
상기 텔레메트리 정보에 기초하여 상기 우선순위 데이터 구조를 생성하는 단계
를 더 포함하고, 상기 제2 유형의 하드웨어 리소스는 다음 이용가능한 유형의 하드웨어 리소스이며, 상기 텔레메트리 정보는 파라미터 크기 및 값, 메모리 요건, 실행 시간, 스레드 수, 또는 전력 소비 중 하나 이상을 포함하고, 상기 우선순위 데이터 구조는 프로세서 디스패치 테이블 또는 메모리 할당 테이블 중 하나인, 방법. - 제21항에 있어서,
상기 함수의 복수의 실행 동안 텔레메트리 정보를 수집하는 단계; 및
상기 텔레메트리 정보에 기초하여 상기 우선순위 데이터 구조를 수정하는 단계
를 더 포함하는 방법. - 제22항에 있어서,
제1 텔레메트리 정보를 제1 텔레메트리 기록에 저장하는 단계 - 상기 제1 텔레메트리 정보는 상기 함수의 제1 실행에 연관됨 -; 및
제2 텔레메트리 정보를 제2 텔레메트리 기록에 저장하는 단계 - 상기 제2 텔레메트리 정보는 상기 함수의 제2 실행에 연관됨 -
를 더 포함하는 방법. - 제22항에 있어서,
제1 텔레메트리 정보를 텔레메트리 기록에 저장하는 단계 - 상기 제1 텔레메트리 정보는 상기 함수의 제1 실행에 연관됨 -; 및
제2 텔레메트리 정보를 상기 텔레메트리 기록에 저장하는 단계 - 상기 제2 텔레메트리 정보는 상기 함수의 제2 실행에 연관됨 -
를 더 포함하는 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/722,778 | 2019-12-20 | ||
US16/722,778 US11520501B2 (en) | 2019-12-20 | 2019-12-20 | Automated learning technology to partition computer applications for heterogeneous systems |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210080173A true KR20210080173A (ko) | 2021-06-30 |
Family
ID=70326675
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200124788A KR20210080173A (ko) | 2019-12-20 | 2020-09-25 | 이기종 시스템들을 위해 컴퓨터 애플리케이션들을 파티셔닝하기 위한 자동화된 학습 기술 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11520501B2 (ko) |
JP (1) | JP2021099785A (ko) |
KR (1) | KR20210080173A (ko) |
CN (1) | CN113010468A (ko) |
DE (1) | DE102020130528A1 (ko) |
TW (1) | TWI845762B (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200136921A1 (en) * | 2019-09-28 | 2020-04-30 | Intel Corporation | Methods, system, articles of manufacture, and apparatus to manage telemetry data in an edge environment |
US11948010B2 (en) * | 2020-10-12 | 2024-04-02 | International Business Machines Corporation | Tag-driven scheduling of computing resources for function execution |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101499021A (zh) * | 2008-01-31 | 2009-08-05 | 国际商业机器公司 | 在多个虚拟机上动态分配资源的方法和装置 |
US20110035802A1 (en) * | 2009-08-07 | 2011-02-10 | Microsoft Corporation | Representing virtual object priority based on relationships |
US8806003B2 (en) * | 2011-06-14 | 2014-08-12 | International Business Machines Corporation | Forecasting capacity available for processing workloads in a networked computing environment |
US9086902B2 (en) * | 2012-12-18 | 2015-07-21 | International Business Machines Corporation | Sending tasks between virtual machines based on expiration times |
US9851965B2 (en) * | 2015-06-19 | 2017-12-26 | Microsoft Technology Licensing, Llc | Storing optimization for customization resources |
US20170031622A1 (en) * | 2015-07-31 | 2017-02-02 | Netapp, Inc. | Methods for allocating storage cluster hardware resources and devices thereof |
US10990445B2 (en) * | 2017-08-04 | 2021-04-27 | Apple Inc. | Hardware resource allocation system for allocating resources to threads |
US20200136921A1 (en) * | 2019-09-28 | 2020-04-30 | Intel Corporation | Methods, system, articles of manufacture, and apparatus to manage telemetry data in an edge environment |
-
2019
- 2019-12-20 US US16/722,778 patent/US11520501B2/en active Active
-
2020
- 2020-09-16 TW TW109131870A patent/TWI845762B/zh active
- 2020-09-16 JP JP2020155791A patent/JP2021099785A/ja active Pending
- 2020-09-24 CN CN202011019439.0A patent/CN113010468A/zh active Pending
- 2020-09-25 KR KR1020200124788A patent/KR20210080173A/ko active Search and Examination
- 2020-11-19 DE DE102020130528.1A patent/DE102020130528A1/de active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2021099785A (ja) | 2021-07-01 |
US20200133537A1 (en) | 2020-04-30 |
CN113010468A (zh) | 2021-06-22 |
TW202129492A (zh) | 2021-08-01 |
TWI845762B (zh) | 2024-06-21 |
US11520501B2 (en) | 2022-12-06 |
DE102020130528A1 (de) | 2021-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12106154B2 (en) | Serverless computing architecture for artificial intelligence workloads on edge for dynamic reconfiguration of workloads and enhanced resource utilization | |
US20220343165A1 (en) | Device capability aware technology to execute deep learning computation graphs in web applications | |
CN113010235A (zh) | 用于功能即服务计算的统一编程模型 | |
US20210319298A1 (en) | Compute-based subgraph partitioning of deep learning models for framework integration | |
KR20210080173A (ko) | 이기종 시스템들을 위해 컴퓨터 애플리케이션들을 파티셔닝하기 위한 자동화된 학습 기술 | |
US20210319369A1 (en) | Multi-level caching for dynamic deep learning models | |
US20210365804A1 (en) | Dynamic ai model transfer reconfiguration to minimize performance, accuracy and latency disruptions | |
EP3879406A1 (en) | Simulated annealing-based memory allocations | |
KR20240013828A (ko) | 리그레인드 타일 실행을 위한 통합된 프로그래밍 인터페이스 | |
US11941437B2 (en) | Graph partitioning to exploit batch-level parallelism | |
US11249910B2 (en) | Initialization and management of class of service attributes in runtime to optimize deep learning training in distributed environments | |
US11640326B2 (en) | Ensemble based cluster tuning and framework fallback for AI accelerators using telemetry, compute, and temperature metrics | |
JP7397179B2 (ja) | 階層化オブジェクトメモリ配置のためのランタイム装置の管理 | |
US20230115542A1 (en) | Programmable matrix multiplication engine | |
US20230027351A1 (en) | Temporal graph analytics on persistent memory | |
US20210374554A1 (en) | Graph context-based operator checks to improve graph clustering and execution in ai accelerator framework integration | |
US20220066923A1 (en) | Dynamically configurable multi-mode memory allocation in an accelerator multi-core system on chip | |
US11989129B2 (en) | Multiple virtual NUMA domains within a single NUMA domain via operating system interface tables |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |