KR101478567B1 - 가속 이익 추정기 - Google Patents

가속 이익 추정기 Download PDF

Info

Publication number
KR101478567B1
KR101478567B1 KR20130054528A KR20130054528A KR101478567B1 KR 101478567 B1 KR101478567 B1 KR 101478567B1 KR 20130054528 A KR20130054528 A KR 20130054528A KR 20130054528 A KR20130054528 A KR 20130054528A KR 101478567 B1 KR101478567 B1 KR 101478567B1
Authority
KR
South Korea
Prior art keywords
application
version
accelerated
programmable hardware
execution
Prior art date
Application number
KR20130054528A
Other languages
English (en)
Other versions
KR20140117241A (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 KR20140117241A publication Critical patent/KR20140117241A/ko
Application granted granted Critical
Publication of KR101478567B1 publication Critical patent/KR101478567B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • G06F11/3062Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations where the monitored property is the power consumption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3428Benchmarking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Business, Economics & Management (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Accounting & Taxation (AREA)
  • Development Economics (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Game Theory and Decision Science (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • General Business, Economics & Management (AREA)

Abstract

가속 이익 추정에 관한 기술이 일반적으로 설명된다. 일부 실시예에서, 데이터 센터는 프로그램 가능 하드웨어 가속기(PHA)로부터 이익을 얻을 수 있는 어플리케이션을 식별하고, 식별된 어플리케이션을 그 가속된 버전, 즉 하나 이상의 식별된 PHA를 사용하는 버전을 실행하고 가속된 버전의 성능을 기준 버전, 즉 하나 이상의 식별된 PHA를 사용하지 않는 버전에 비교함으로써 테스트할 수 있다. 데이터 센터는 비교 결과를 데이터 센터 고객에게 보고하여 PHA의 채택을 고객에게 권장할 수 있다.

Description

가속 이익 추정기{ACCELERATION BENEFIT ESTIMATOR}
여기에서 달리 언급하지 않으면, 본 섹션에서 기술된 내용은 본 출원에서 청구항에 대한 선행 기술이 아니며 본 섹션에 포함한 것에 의해 선행 기술로서 인정된 것이 아니다.
FPGA(Field Programmable Gate Array)와 같은 프로그램 가능 하드웨어(programmable hardware)의 이용은 컴퓨팅 장치에서의 에너지 효율 및 처리 속도의 실질적인 이익(benefit)을 낼 수 있다. FPGA는 특정 유형의 동작, 예컨대, 그 중에서도, 비디오 디코딩 동작 및 암호화/복호화 동작을 가속(accelerating)하는 데에 특화된 프로그램 가능 하드웨어 가속기(Programmable Hardware Accelerator(PHA))로 프로그램될 수 있다. PHA는 종종 그 특화된 동작을 범용 프로세서들에 비해 보다 효율적으로 처리할 수 있다. 컴퓨터 시스템은 PHA를 이용하여 특화된 동작(이를 위하여 프로그램됨)을 처리하도록 구성될 수 있는 한편, 다른 컴퓨팅 태스크(task)는 컴퓨터의 중앙 처리 장치(central processing unit(CPU)) 내 프로세서와 같은 범용 프로세서에 의해 처리될 수 있다.
데이터 센터(data center)에서 사용되는 PHA는 데이터 센터 고객에 의해 실행된 어플리케이션(application)의 연산 효율을 증가시킬 수 있다. 데이터 센터 및 데이터 센터 고객 모두 PHA의 채택으로부터 보다 낮은 데이터 센터 비용 및 보다 빠른 성능의 형태로 이익을 얻는다. 그러나, PHA의 잠재적인 이점에 익숙하지 않은 데이터 센터 고객은 이들을 채택하는데 늦어 고객 및 데이터 센터의 불이익에 이를 수 있다.
본 개시는 일반적으로 가속 이익 추정(acceleration benefit estimation)에 관한 장치, 방법 및 컴퓨터 판독 가능 매체를 포함하는 기술을 설명한다. 일부 예시적인 방법은, 예컨대, 데이터 센터 내 컴퓨팅 장치에 의하여, 데이터 센터 고객을 위한 태스크를 수행하도록 어플리케이션의 기준 버전(reference version)을 실행하는 단계; 어플리케이션의 기준 버전을 실행하기 위한 실행 시간, 실행 비용 및/또는 실행 에너지 소비를 측정하는 단계; 어플리케이션에 대한 PHA를 식별하는 단계 - 식별된 PHA는 어플리케이션의 기준 버전의 실행 동안 이용되지 않음 -; 컴퓨팅 장치에 의하여, 어플리케이션의 기준 버전에 의해 수행된 태스크를 수행하도록 어플리케이션의 가속된 버전(accelerated version)을 자동적으로 실행하는 단계 - 어플리케이션의 가속된 버전은 식별된 PHA의 사용에 의하여 가속됨 -; 어플리케이션의 가속된 버전을 실행하기 위한 실행 시간, 실행 비용 및/또는 실행 에너지 소비를 측정하는 단계; 어플리케이션의 기준 버전과 어플리케이션의 가속된 버전 간의 실행 시간, 실행 비용 및/또는 실행 에너지 소비의 차이를 계산하는 단계; 및/또는 계산된 차이를 데이터 센터 고객에게 제공하는 단계에 의하여, 데이터 센터에서의 프로그램 가능 하드웨어 가속 이익을 추정하는 것에 관련될 수 있다.
일부 예시적인 방법은, 예컨대, 데이터 센터 내 컴퓨팅 장치에 의해 실행된 어플리케이션의 고객 활성 가속(customer-activated acceleration)을 제공하는 단계 - 고객 활성 가속은 어플리케이션 태스크를 수행하기 위해 PHA를 사용함 -; 데이터 센터 고객에 의해 고객 활성 가속이 활성화되지 않은 어플리케이션을 선택하는 단계; 어플리케이션의 기준 버전을 고객 활성 가속 없이 실행하기 위한 실행 시간, 실행 비용 및/또는 실행 에너지 소비를 측정하는 단계; 컴퓨팅 장치에 의하여, 선택된 어플리케이션의 가속된 버전을 자동적으로 실행하는 단계; 어플리케이션의 가속된 버전을 실행하기 위한 실행 시간, 실행 비용 및/또는 실행 에너지 소비를 측정하는 단계; 및 데이터 센터 고객에게 어플리케이션의 기준 버전과 어플리케이션의 가속된 버전 간의 실행 시간의 차이, 실행 비용의 차이 또는 실행 에너지 소비의 차이를 제공하는 단계에 의하여, 데이터 센터에서의 프로그램 가능 하드웨어 가속 이익을 추정하는 것에 관련될 수 있다.
여기에서 설명된 다양한 기술을 구현하는 명령어를 가지는 컴퓨터 판독 가능 매체, 컴퓨팅 장치 및 데이터 센터가 또한 개시된다. 예시적인 컴퓨터 판독 가능 매체는 프로세서에 의해 실행 가능한 컴퓨터 실행 가능 명령어를 가지는 비 일시적인(non-transitory) 컴퓨터 판독 가능 매체를 포함할 수 있으며, 명령어는 프로세서에 의해 실행되면, 프로세서가 여기에서 제공되는 다양한 방법의 임의의 조합을 수행하도록 한다. 예시적인 데이터 센터 및/또는 컴퓨팅 장치는 여기에서 설명된 방법을 수행하도록 구성된 프로세서, 메모리 및 소프트웨어 및/또는 하드웨어 컴포넌트를 포함하는 서버를 포함할 수 있다.
전술한 요약은 예시적인 것일 뿐이고, 어떤 방식으로든 제한을 의도한 것은 아니다. 상술한 예시적인 태양, 실시예 및 특징들에 더하여, 추가의 태양, 실시예 및 특징들이 도면과 이하의 상세한 설명을 참조함으로써 분명하게 될 것이다.
본 개시의 전술한 특징들 및 기타 특징들은, 첨부 도면을 참조하여 이하의 설명 및 첨부된 청구항으로부터 충분히 분명해질 것이다. 이러한 도면들은 본 개시에 따르는 단지 몇 가지의 실시예만을 도시한 것이고, 따라서 그 범위를 제한하는 것으로 간주되어서는 안된다는 점을 이해하면서, 본 개시는 첨부된 도면의 사용을 통하여, 더 구체적이고 상세하게 기술될 것이다.
도 1은 가속 이익 추정에 관한 사용을 위해 구성된 예시적인 컴퓨팅 장치를 도시하는 블록도이고;
도 2는 PHA 이익 추정을 위하여 구성된 데이터 센터를 도시하는 블록도이고;
도 3은 이익 추정 관리기(benefit estimation manager)를 구현하는 장치의 일 예시로서의 컴퓨팅 장치의 블록도이고;
도 4는 어플리케이션의 가속된 버전을 형성(build)하기 위한 예시적인 방법을 도시하는 흐름도이고;
도 5는 프로그램 가능 하드웨어 가속 이익을 추정하기 위한 예시적인 방법을 도시하는 흐름도이고;
도 6은 프로그램 가능 하드웨어 가속 이익을 추정하기 위한 예시적인 방법을 도시하는 흐름도이며; 모두 본 개시의 적어도 일부 실시예에 따라 배열된다.
이하의 상세한 설명에서, 여기의 일부를 구성하는 첨부 도면에 대한 참조가 이루어진다. 도면에서, 유사한 부호는, 문맥에서 다른 지시가 없다면, 일반적으로 유사한 구성요소를 식별한다. 상세한 설명, 도면, 및 청구항에서 기술된 실시예들은 제한하는 것으로 의미되지 않는다. 여기에 제시된 대상의 범위와 사상을 벗어나지 않고, 다른 실시예가 이용될 수 있고, 다른 변경이 이루어질 수 있다. 여기에서 일반적으로 기술되고 도면에서 도시된 바와 같은 본 개시의 태양들이 다양한 다른 구성으로 배열, 대체, 조합, 및 설계될 수 있음과, 이 모두가 여기에서 명확히 고려되고 본 개시의 일부가 됨이 쉽게 이해될 것이다.
본 개시는, 그 중에서도, 일반적으로 가속 이익 추정에 관한 방법, 장치, 시스템 및/또는 거기에 사용되는 컴퓨터 판독 가능 매체를 포함하는 기술에 관련된다. 일부 예시에서, 데이터 센터는 PHA로부터 이익을 얻을 수 있는 어플리케이션을 식별하고, 식별된 어플리케이션의 가속된 버전, 즉 하나 이상의 식별된 PHA를 이용하는 버전을 실행(running 또는 executing)하고 가속된 버전의 성능을 기준 버전, 즉 하나 이상의 식별된 PHA를 사용하지 않는 버전에 비교함으로써 식별된 어플리케이션을 테스트할 수 있다. 데이터 센터는 비교 결과를 데이터 센터 고객에게 보고(report)하여 고객에게 PHA의 채택을 권장(encourage)할 수 있다.
상술한 바와 같이, 일부 예시적인 방법은, 예컨대, 데이터 센터 내 컴퓨팅 장치에 의하여 데이터 센터 고객을 위한 태스크를 수행하도록 어플리케이션의 기준 버전을 실행하는 단계; 어플리케이션의 기준 버전을 실행하기 위한 실행 시간, 실행 비용 및/또는 실행 에너지 소비를 측정하는 단계; 어플리케이션에 대한 PHA를 식별하는 단계 - 식별된 PHA는 어플리케이션의 기준 버전의 실행 동안 이용되지 않음 -; 컴퓨팅 장치에 의하여, 어플리케이션의 기준 버전에 의해 수행된 태스크를 수행하도록 어플리케이션의 가속된 버전을 자동적으로 실행하는 단계 - 어플리케이션의 가속된 버전은 식별된 PHA의 사용에 의해 가속됨; 어플리케이션의 가속된 버전을 실행하기 위한 실행 시간, 실행 비용 및/또는 실행 에너지 소비를 측정하는 단계; 어플리케이션의 기준 버전 및 어플리케이션의 가속된 버전 간의 실행 시간, 실행 비용 및/또는 실행 에너지 소비의 차이를 계산하는 단계; 및/또는 계산된 차이를 데이터 센터 고객에게 제공하는 단계에 의하여 데이터 센터에서의 프로그램 가능 하드웨어 가속 이익을 추정하는 것에 관련될 수 있다.
일부 실시예에서, 방법은 데이터 센터 내 프로그램 가능 하드웨어 리소스(resource)가 데이터 센터 고객에 의한 사용을 위해 이용 가능한지 여부를 결정하는 단계를 포함할 수 있다. 예컨대, 방법은 데이터 센터 내 프로그램 가능 하드웨어 리소스의 이용 가능성을 조건으로 가속 이익 추정을 행할 수 있다. 프로그램 가능 하드웨어 리소스가 이용 가능한 경우, 가속 이익 추정이 진행할 수 있고 PHA의 채택이 이에 따라 권장될 수 있다. 프로그램 가능 하드웨어 리소스가 이용 가능하지 않은 경우, 방법은 프로그램 가능 하드웨어 리소스가 이용 가능하게 되는 때까지 가속 이익 추정을 연기할 수 있다.
일부 실시예에서, 방법은 어플리케이션의 고객 활성 가속을 제공하는 단계를 포함할 수 있으며, 고객 활성 가속은 어플리케이션 태스크를 수행하기 위해 PHA를 사용한다. 예컨대, 웹 기반 사용자 인터페이스(user interface(UI))는 고객 어플리케이션 가속 선택을 수신하도록 구성될 수 있고, 데이터 센터는 UI를 통하여 수신된 고객 어플리케이션 가속 선택을 구현하도록 구성될 수 있다. 방법은 고객이 그 어플리케이션을 가속하도록 선택하지 않은 경우, 및 특히, 상당한 가속 이익이 있을 가능성 있는 경우에 가속 이익을 추정할 수 있다. 예컨대, 방법은 데이터 센터 고객에 의해 고객 활성 가속이 활성화되지 않은 어플리케이션을 선택하는 단계; 어플리케이션의 기준 버전을 고객 활성 가속 없이 실행하기 위한 실행 시간, 실행 비용 및/또는 실행 에너지 소비 중 하나 이상을 측정하는 단계; 선택된 어플리케이션의 가속된 버전을 자동적으로 실행하는 단계; 어플리케이션의 가속된 버전을 실행하기 위한 실행 시간, 실행 비용 및/또는 실행 에너지 소비 중 하나 이상을 측정하는 단계; 및 데이터 센터 고객에게, 어플리케이션의 기준 버전과 가속된 버전 간의 실행 시간, 실행 비용 및/또는 실행 에너지 소비의 차이를 제공하는 단계를 포함할 수 있다. 고객 활성 가속이 활성화되지 않은 선택된 어플리케이션은, 예컨대, 식별된 어플리케이션 유형을 가지는 어플리케이션 또는 어플리케이션을 선택하기 전에 적어도 하나의 식별된 PHA로 동작 가능하도록 설정되는 식별된 어플리케이션 세그먼트 유형을 포함하는 어플리케이션을 포함할 수 있다. 어플리케이션/어플리케이션 세그먼트 유형은 실행 시간, 실행 비용 및/또는 실행 에너지 소비 절약에서 5% 이상의 이익과 같이 상당한 가속 이익을 경험하는 것으로, 예컨대 어플리케이션 유형과의 이력상 경험(historical experience)으로부터 알려질 수 있다.
일부 실시예에서, 어플리케이션에 대한 하나 이상의 PHA를 식별하는 단계는 PHA에 의하여 적어도 부분적으로 교체 가능한 세그먼트에 대하여 어플리케이션 내 코드를 분석하는 단계를 포함할 수 있다. 어플리케이션 내 코드를 분석하는 단계는, 예컨대, 플로우 추출 프로세스(flow extraction process) 및/또는 해시 비교 프로세스(hash comparison process)를 포함할 수 있다. 교체 가능한 코드 세그먼트가 식별되는 경우, 방법은 세그먼트를 적어도 부분적으로 교체하기 위하여 PHA를 PHA의 라이브러리(library)로부터 검색(retrieve)할 수 있거나, 방법은 세그먼트를 적어도 부분적으로 교체하도록 PHA를 생성할 수 있다.
일부 실시예는 어플리케이션의 기준 버전 및 어플리케이션의 가속된 버전에 의해 생성된 출력을 비교하여 비교된 출력이 실질적으로 동일한지 여부를 결정하는 단계를 포함할 수 있다. 출력 비교는 의도된 바와 같이 기능하지 않는 PHA의 제안 및/또는 채택을 방지하는 데에 유용할 수 있다. 일부 실시예는 예컨대, 식별된 PHA가 측정 가능한 이익을 달성함에 사실상 관련됨을 보장하도록 컴퓨팅 장치의 장치 실행 이력(execution history)을 확인하여 어플리케이션의 가속된 버전의 실행 동안 식별된 PHA의 사용을 입증하는 단계를 포함할 수 있다.
일부 실시예에서, 어플리케이션의 가속된 버전을 자동적으로 실행하는 단계는 기준 버전에 더하여, 가속된 버전의 "모든" 인스턴스(instance)를 실행하는 단계를 포함할 수 있다. 일부 실시예는 기준 어플리케이션의 가속되지 않은 세그먼트와 병행하여 가속된 세그먼트를 실행하도록 어플리케이션 실행을 분기(fork)함으로써 리소스를 보존할 수 있다. 예컨대, 어플리케이션의 가속된 버전을 자동적으로 실행하는 단계는 어플리케이션의 기준 버전과 관련되어 실행되는 가속되지 않은 세그먼트와 병행하여 어플리케이션의 가속된 세그먼트를 실행하도록 어플리케이션의 기준 버전을 분기하는 단계를 포함할 수 있다.
일부 실시예에서, 방법은 가속 이익 추정을 실시간으로, 예컨대, 데이터 센터 고객에 의한 어플리케이션의 기준 버전의 사용과 관련되어 수행할 수 있다. 어플리케이션의 가속된 버전을 자동적으로 실행하는 단계는 어플리케이션의 기준 버전을 실행하는 단계와 동시에 수행될 수 있다. 일부 실시예에서, 가속 이익 추정은 낮은 데이터 센터 수요의 기간 동안, 예컨대, 밤에 또는 다른 낮은 수요의 기간 동안 행해질 수 있다. 어플리케이션의 가속된 버전을 자동적으로 실행하는 단계는 기준 버전의 실행과는 상이한 시간에, 예컨대, 낮은 데이터 센터 수요의 기간 동안에 수행될 수 있으며, 성능은 어플리케이션의 기준 버전의 종전 실행의 성능 측정치와 비교될 수 있다. 대안적으로, 어플리케이션의 기준 버전 및 가속된 버전 둘 다는 예컨대, 어플리케이션의 기준 버전 및 가속된 버전 둘 다에 대한 사용자 사용 경우를 시뮬레이트(simulate)함으로써, 낮은 데이터 센터 수요의 기간 동안에 동시에 실행될 수 있다.
실시예는 여기에서 논의된 동작 중 임의의 것을 자동화할 수 있다. 예컨대, 데이터 센터 내 프로그램 가능 하드웨어 리소스가 이용 가능한지 여부/가속 이익 추정을 수행할지 여부를 결정하는 단계는 스케줄(schedule)에 따라 자체 개시(self-initiate)할 수 있으며, 이에 따라 사람 운용자에 의한 개시를 제거할 수 있다. 어느 어플리케이션이 어플리케이션 이익 추정을 위한 후보인지 식별하는 단계, 어플리케이션의 기준 버전을 측정하는 단계, 어플리케이션에 대한 PHA를 식별하는 단계, 어플리케이션의 가속된 버전을 실행하는 단계, 어플리케이션의 가속된 버전을 측정하는 단계, 어플리케이션의 기준 버전 및 어플리케이션의 가속된 버전 간의 차이를 계산하는 단계, 및/또는 차이를 데이터 센터 고객에게 제공하는 단계는, 여기에서 설명된 다양한 다른 동작 중 임의의 것의 성공적인 완료에 따라, 예컨대 프로그램 가능 하드웨어 리소스가 데이터 센터에서 이용 가능하다고 결정하는 것에 응답하여, 자동적으로 수행될 수 있다. 다른 실시예는 여기에서 설명된 다양한 동작 중 임의의 것의 개시/운용자 입력을 포함할 수 있다.
일부 실시예는 어플케이션의 기준 버전과 가속된 버전 간의 다수의 비교를 수행하도록 배열되어, 시간에 따라 PHA로 어플리케이션을 가속하는 이익의 보다 완전한 이해를 달성할 수 있다. 마찬가지로, 일부 실시예는 데이터 센터 고객을 위하여 실행된 다수의 상이한 어플리케이션에 대하여 프로그램 가능 하드웨어 가속 이익을 추정하여, 그 고객에 대한 PHA의 이익의 보다 완전한 이해를 달성할 수 있다. 예컨대, 일부 실시예는 어플리케이션의 기준 버전 및 가속된 버전을 실행하는 다수의 인스턴스에 대응하여 어플리케이션의 기준 버전 및 가속된 버전 간의 차이를 종합(aggregating)하는 단계를 포함할 수 있으며, 다수의 인스턴스에 따른 차이를 요약하는 보고를 데이터 센터 고객에게 제공할 수 있다.
도 1은 본 개시의 적어도 일부 실시예에 따라 배열된, 가속 이익 추정에 관련되어 사용하기 위하여 구성된 예시적인 컴퓨팅 장치를 도시하는 블록도이다. 도시된 바와 같이, 도 1은 예컨대, 다수의 VM을 실행하도록 구성되는 데이터 센터 내 서버를 포함할 수 있는 컴퓨팅 장치(100)를 포함한다. 컴퓨팅 장치(100)는 VM(101, 102 ..., n), 하이퍼바이저(hypervisor)/프로세서(115), 구성 컨트롤러(configuration controller)(130), 컨피그웨어 라이브러리(configware library)(140), 메모리(150) 및 FPGA(160)를 포함한다. 컴퓨팅 장치(100)는 n개의 VM을 관리하도록 구성될 수 있고, 여기서 n은 VM의 임의의 개수이며 n은 시간에 따라 변동할 수 있다. 하이퍼바이저/프로세서(115)는 하이퍼바이저(110) 및 프로세싱 코어(121, 122, ..., m)를 포함한다. 프로세싱 코어(121, 122, ..., m)는 임의의 개수의 코어를 포함할 수 있다. 컴퓨팅 장치(100)는 PHA(171, 172, 173)를 FPGA(160)로 로드(load)할 수 있다.
도 1에서, 하이퍼바이저(110)는 프로세싱 코어(121, 122, ..., m)에 의하여 VM(101, 102, ..., n)의 실행을 스케줄링(scheduling)하도록 구성될 수 있다. 예컨대, 하이퍼바이저(110)는 컴퓨팅 장치(100)에 대한 리소스 공유 알고리즘(resource sharing algorithm)에 따라, 상이한 실행하는 VM, 예컨대, VM(101) 및 VM(102) 사이에서 프로세싱 코어(121)를 전환하도록 컨텍스트 전환(context switch)을 수행할 수 있다. 일부 예시적인 실시예에서, 리소스는 공정 배분 밸런싱 알고리즘(fair-share balancing algorithm)을 통하여 공유될 수 있으며, 여기서 스케줄러 프로세스는 VM(101, 102) 각각에 대하여 동등한 시간을 제공할 수 있다. 다양한 기타 리소스 공유 알고리즘, 예컨대 일부 VM에 다른 것보다 많은 처리 시간을 제공하도록 VM(101, 102)에 가중치를 할당하는 것이 이용될 수 있다. 상이한 VM은 동일 또는 상이한 데이터 센터 고객과 연관될 수 있고, 각각의 VM은 그 각각의 데이터 센터 고객을 위하여 어플리케이션을 실행할 수 있다. 하이퍼바이저(110)는 도시된 코어 중 하나 이상에 의한 실행을 위하여 도시된 VM 중 하나 이상에 대한 VM 상태 정보와 같은 VM 데이터(105)를 로드할 수 있다.
컴퓨팅 장치(100)는 PHA를 FPGA(160)에 로드하여 VM(101, 102, ..., n) 중 임의의 것을 위한 동작 및/또는 그 VM에서 실행된 어플리케이션을 처리할 수 있다. PHA를 로드하기 위하여, 코어(121, 122, ..., m) 중 임의의 것은, 예컨대 PHA ID(131)를 구성 컨트롤러(130)에 제공할 수 있다. 구성 컨트롤러(130)는 코프로세서(coprocessor) PHA ID(131)에 대응하는 PHA(170)를 컨피그웨어 라이브러리(140)로부터 검색하도록 구성될 수 있다. 구성 컨트롤러(130)는 예컨대, 예시적인 PHA(171, 172 및 173)와 같이 PHA(170)를 FPGA(160)로 로드하도록 구성될 수 있다.
VM을 실행하는 것과 관련하여, VM 데이터(105)와 함께 구성되는 하이퍼바이저/프로세서(115)는 예컨대, FPGA(160)에 로드된 PHA, 예컨대, PHA(171, 172 및 173)에 의하여 FPGA 입력 데이터(161)의 처리를 위해 FPGA 입력 데이터(161)를 메모리(150)에 배치함으로써 PHA를 이용할 수 있다. FPGA(160) 및/또는 거기에 로드된 PHA(171, 172 및 173)는 FPGA 입력 데이터(161)를 처리하고 FPGA 출력 데이터(162)를 생산하도록 구성될 수 있다. FPGA(160) 및/또는 거기에 로드된 PHA(171, 172 및 173)는 FPGA 출력 데이터(162)를 메모리(150)에 배치할 수 있다. FPGA 출력 데이터(162)는 하이퍼바이저/프로세서(115) 및/또는 VM이나 거기에서 실행하는 VM 내 어플리케이션에 의해 검색될 수 있고, FPGA 출력 데이터(162)는 예컨대, FPGA 출력 데이터(162)가 생산되는 VM에 의해 저장, 이용, 디스플레이, 추가적인 처리 등이 될 수 있다.
일부 실시예에서, 이익 추정 관리기 컴포넌트(도 1에 도시되지 않음)는 도 2에 도시된 바와 같이, 하이퍼바이저(110), VM, 컴퓨팅 장치(100)와 같은 데이터 센터 내 다른 컴퓨팅 장치, 및/또는 그러한 위치의 조합에 포함될 수 있다. 이익 추정 관리기는 프로그램 가능 하드웨어 가속 이익을 추정하는 것과 관련하여 도 2를 참조하여 설명된 동작을 관리하도록 구성될 수 있다. 이익 추정 관리기는 예컨대 어플리케이션의 기준 버전의 성능을 측정할 수 있으며, 여기서 예컨대, 기준 버전이 PHA(171, 172 및 173)을 이용하지 않을 수 있거나 기준 버전이 PHA(171, 172 및 173)의 서브세트(subset)를 이용할 수 있다. 예컨대, 여기에서 설명된 바와 같이, 이익 추정 관리기는 PHA, 예컨대, PHA(171, 172 및/또는 173)을 식별, PHA(171, 172 및/또는 173)를 이용하는 어플리케이션의 가속된 버전을 실행, 어플리케이션의 가속된 버전의 성능을 측정, 및/또는 측정 결과를 어플리케이션의 기준 버전의 성능에 비교할 수 있다.
FPGA(160) 내 PHA(171, 172 및 173)와 같은, 데이터 센터 내 PHA의 증가된 이용이 여기에서 개시된 기술의 채택을 통하여 달성될 수 있다. 데이터 센터 내 PHA의 이용을 증가시키는 것은 상당한 이익을 제공할 수 있다. 또한, 보다 많은 PHA 채택의 이익은 컴퓨팅 기술이 계속해서 발전함에 따라 증가할 수 있다. 프로세서 설계는 종래의 반도체 스케일링(scaling)에 대한 제한에 의하여 좌우되어 왔다. 최소 배선폭(feature size)이 너무 작게 되어 절연(insulation)이 수 개의 원자 두께일 수 있다. 예컨대, 현재 인텔
Figure 112013042597005-pat00001
아이비 브리지(Intel
Figure 112013042597005-pat00002
Ivy Bridge) 세대는 22 나노미터(nm) 기술을 이용한다. 양자 터널링(quantum tunneling)으로 인하여 누설 전류의 증가가 발생한다. 절연이 얇아짐에 따라 터널링 전류가 기하 급수적으로 증가하므로, 우리는 집적 회로에 대한 새로운 스케일링 체제로 들어갔다. 칩이 동일한 전력을 사용하면서 증가된 칩 밀도 및 빈도를 이용한 종래의 드나드(Dennard) 스케일링을 대신해, 이제 누설 전류는, 최소 배선폭이 감소하는 비율(factor)이 S인 경우 S2의 비율만큼 사용 전력을 증가시키고 있다. 이러한 전력 제한은 특히 배터리 전력 공급의 모바일 장치에 관련되지만, 또한 열적 제한으로 인하여 데이터 센터 서버에 대하여도 중요하게 되고 있다. 여기에서 또한 에너지 소비라고 지칭된, 전력 사용은 또한 데이터 센터 동작에서 주요 비용이 되고 있다.
예컨대, 여기에서 설명된 기술을 이용하여 PHA의 이용 가능성 및 채택을 증가시키는 것은 컴퓨팅 하드웨어에 의한 에너지 소비를 감소시킬 수 있는 한편 또한 그 성능을 향상시킬 수 있다. 이는 적어도 부분적으로 PHA가 범용 CPU보다 더 적은 수의 트랜지스터 전환(transistor transition)을 이용하여 연산을 수행할 수 있기 때문이다. PHA는 CPU의 유연성(flexibility)을 증가된 효율성과 맞바꾼다. PHA는 아마도 병행 가능한(parallelizable) 연산에 대하여 시간-에너지 곱에서 1000배의 감소를 달성할 수 있으며, 병행될 수 없는 연산에 대하여 10배까지의 감소를 달성할 수 있다. 결과적으로, FPGA 회로 상에 형성된 PHA의 증가된 채택은 누설 제한 문제에 해결책을 제공할 수 있다. PHA를 이용하는 것의 이익을 추정하는 것은 일부 경우에서 가속된 어플리케이션과 연관되는 상당한 성능 향상을 입증할 수 있으며, 이에 따라, 특히 향상된 연산 성능이 점점 더 PHA에 의존함에 따라 PHA 채택을 권장할 수 있다.
도 2는 본 개시의 적어도 일부 실시예에 따라 배열된 PHA 이익 추정을 위하여 구성된 데이터 센터를 도시하는 블록도이다. 도시된 바와 같이, 도 2는 데이터 센터 고객(201, 202, 및 203) 및 데이터 센터(205)를 포함한다. 데이터 센터(205)는 컴퓨팅 장치(210) 및 컴퓨팅 장치(230)를 포함한다. 컴퓨팅 장치(210)는 고객 계정(account) 인터페이스(211) 및 이익 추정 관리기(212)를 포함한다. 이익 추정 관리기(212)는 프로그램 가능 하드웨어 리소스 평가기(213), 어플리케이션 선택기(214), PHA 식별기(215), PHA 생성기(216) 및/또는 PHA 데이터베이스(217), 가속된 어플리케이션 형성기(builder)(218), 실행/측정 관리기(219), 출력 비교기(220) 및 성능 비교기(221)를 포함한다. 컴퓨팅 장치(230)는 어플리케이션의 기준 버전(231), 어플리케이션의 가속된 버전(232) 및 성능 측정 모듈(233)을 포함한다.
도 2에서, 기준 버전(231)은 고객(201)을 위하여 데이터 센터(205) 내에서 실행되는 어플리케이션을 포함할 수 있다. 고객 계정 인터페이스(211)는 어플리케이션의 고객 활성 가속을 제공할 수 있다. 예컨대, 고객 계정 인터페이스(211)는 인터넷을 통하여 고객(201)에 의해 액세스 가능한 웹 기반 계정 관리 UI를 제공할 수 있다. 계정 관리 UI는 활성화(251)와 같은 어플리케이션 가속 선택을 수신하도록 구성될 수 있으며, 이에 따라 고객(201)은 기준 버전(231)의 가속을 선택할 수 있다. 데이터 센터(205)는, 그 중에서도, 어플리케이션 태스크를 수행하기 위해 하나 이상의 PHA를 사용함으로써 활성화(251)를 구현하도록 구성될 수 있다. 데이터 센터(205)는 데이터 센터(205) 내 가속된 버전(232)를 배치함으로써 활성화(251)를 구현하도록 구성될 수 있다.
고객(201)은 활성화(251)를 제공하도록 선택할 수 있거나 선택하지 않을 수 있다. 고객은 예컨대 고객(201)이 잠재적인 가속 이익을 알지 못하는 경우 활성화(251)를 제공하지 않도록 선택할 수 있다. 데이터 센터(205)는 이익 추정 관리기(212)를 적용하여 활성화(251)의 이익을 추정하고 성능 이익 추정 데이터(252)를 고객(201)에게 제공할 수 있다. 이에 따라, 데이터 센터(205)는 성능 이익 추정 데이터(252)에 비추어 활성화(251)를 제공하도록 고객(201)에게 권장할 수 있고, 일부 실시예에서, 고객(201)이 성능 이익 추정 데이터(252)를 수신한 이후에 활성화(251) 데이터를 제공할 수 있다.
도 2에 따른 일부 실시예에서, 데이터 센터 고객은 기준 버전(231)과 같은 어플리케이션을 먼저 데이터 센터(205)에 제공할 수 있다. 어플리케이션이 가속 기술을 이용하지 않으면, 이익 추정 관리기(212)는 이용 가능한 미사용 가속기 리소스가 있는지 여부를 결정할 수 있다. 이용 가능한 리소스가 존재하면, 이익 추정 관리기(212)는 PHA 식별기(215)를 통하여 어플리케이션을 실행하여 PHA가 기준 버전(231)의 부분을 교체하는 데 이용될 수 있는지 여부를 알 수 있다. 그러한 PHA가 존재하면, 가속된 어플리케이션 형성기(218)는 컴퓨팅 장치(230)로 송신하기 위한 가속된 버전(232)을 포함하는 가속된 런타임 패키지(accelerated runtime package)를 생성할 수 있다. 컴퓨팅 장치(230)는 프로세스 둘 다, 즉 원래의 기준 버전(231) 및 가속된 버전(232)을 병행하여 실행할 수 있다. 일부 실시예에서, 상기 프로세스는 전체적으로 자동적이며, 데이터 센터 운용자와의 어떤 상호작용도 필요로 하지 않는다는 점을 주목한다.
일부 실시예에서, 컴퓨팅 장치(230)는 도 1에서 도시된 바와 같은 컴퓨팅 장치를 포함할 수 있고, 컴퓨팅 장치(210)는 데이터 센터 고객(201, 202 및 203)과 인터페이싱하고 데이터 센터(205)에 대한 다양한 관리 및 운영 기능을 수행하도록 구성된 관리 장치(administration device)를 포함할 수 있다. 프로그램 가능 하드웨어 리소스 평가기(213)는 데이터 센터(205) 내 프로그램 가능 하드웨어 리소스, 예컨대 FPGA(160)가, 데이터 센터 고객(201)에 의한 사용을 위하여, 예컨대 고객(201)의 기준 버전(231)을 가속하기 위하여 이용 가능한지 여부를 결정하도록 구성될 수 있다. 예컨대, 프로그램 가능 하드웨어 리소스 평가기(213)는 데이터 센터(205) 내 FPGA가 전부 이용되고 있는지 여부를 평가할 수 있다. 일부 실시예에서, 프로그램 가능 하드웨어 리소스 평가기(213)는 FPGA 이용 데이터에 대하여, 컴퓨팅 장치(230) 내 FPGA 관리기 프로세스를 쿼리(query)할 수 있거나 하이퍼바이저(110)와 같은 하이퍼바이저를 쿼리할 수 있다. FPGA 이용 데이터는 예컨대, FPGA(160) 이용의 백분율, FPGA(160) 내 미사용 리소스의 양 및/또는 FPGA(160) 이용에 대한 프록시(proxy)를 제공하는 데이터를 포함할 수 있다. 하이퍼바이저(110) 및/또는 다른 FPGA 관리기 프로세스는 FPGA 이용 데이터를 결정할 수 있고 FPGA 이용 데이터를 하드웨어 리소스 평가기(213)로 반환할 수 있다. 하드웨어 리소스 평가기(213)는 데이터 센터(205) 내 다수의 컴퓨팅 장치(230) 전반에 걸쳐 FPGA 이용 데이터를 종합하여 프로그램 가능 하드웨어 리소스가 데이터 센터 고객(201)에 의한 사용을 위해 이용 가능한지 여부를 결정할 수 있다.
프로그램 가능 하드웨어 리소스가 이용 가능한 경우, 프로그램 가능 하드웨어 리소스 평가기(213)는 어플리케이션 선택기(214)에 프로그램 가능 하드웨어 리소스가 이용 가능함을 통지함으로써 가속 이익 추정 프로세스를 시작할 수 있다. 프로그램 가능 하드웨어 리소스가 이용 가능하지 않은 경우, 프로그램 가능 하드웨어 리소스 평가기(213)는 프로그램 가능 하드웨어 리소스가 이용 가능하게 되는 때까지 어플리케이션 선택기(214)에 통지하는 것을 연기할 수 있다.
일부 실시예에서, 어플리케이션 선택기(214)는 데이터 센터 고객(201)에 의해 고객 활성 가속이 활성화되지 않은 어플리케이션을 선택하도록 구성될 수 있다. 어플리케이션 선택기(214)는 추가적인 처리를 위해 PHA 식별기(215)로의 선택된 어플리케이션, 예컨대, 기준 버전(231)을 식별할 수 있다. 예컨대, 일부 실시예에서, 활성 정보(253)는 프로그램 가능 하드웨어 가속이 활성화되는 어플리케이션 및/또는 프로그램 가능 하드웨어 가속이 활성화되지 않는 어플리케이션을 나타낼 수 있다. 어플리케이션 선택기(214)는 고객 활성 가속이 활성화되지 않은 어플리케이션, 예컨대, 기준 버전(231)을 선택하도록 구성될 수 있다. 일부 실시예에서, 어플리케이션 선택기(214)는 식별된 어플리케이션 유형을 가지는 어플리케이션 및/또는 식별된 어플리케이션 세그먼트 유형을 포함하는 어플리케이션을 선택하도록 구성될 수 있으며, 어플리케이션 선택기(214)는 어플리케이션을 선택하기 전에 적어도 하나의 식별된 PHA로 동작 가능하도록 그 유형을 설정할 수 있다. 예컨대, 특정 어플리케이션은 암호화, 그래픽 및 비디오 인코딩과 같은 프로그램 가능 하드웨어 가속으로부터 이익을 얻는 동작을 수행하는 것으로 알려진다. 이러한 및 다른 어플리케이션/어플리케이션 세그먼트 유형이 예컨대, 실행 시간, 실행 비용 및/또는 실행 에너지 소비 절약에서의 1% 이상의 이익과 같이 상당한 가속 이익을 경험하는 것으로, 어플리케이션 유형과의 이력상 경험으로부터 알려질 수 있다.
일부 실시예에서, PHA 식별기(215)는 기준 버전(231)과 같은 어플리케이션에 대한 PHA를 식별하도록 구성될 수 있으며, 식별된 PHA는 기준 버전(231)의 실행 동안 이용되지 않는다. 예컨대, 도 2에서, PHA 식별기(215)는 기준 버전(231)을 가속하는 것과 관련하여 사용하기 위한 PHA(171)를 식별할 수 있다. PHA 식별기(215)는 가속된 어플리케이션 형성기(218)로의 PHA(171)를 식별할 수 있거나, PHA 식별기(215)는 PHA(171)를 PHA 데이터베이스(217)로부터 검색할 수 있고 검색된 PHA, 예컨대, PHA(171)를 가속된 어플리케이션 형성기(218)로 제공할 수 있거나, PHA식별기(215)는 PHA 생성기(216)에 PHA(171)를 생성하라고 명령하고, 생성된 PHA, 예컨대, PHA(171)를 가속된 어플리케이션 형성기(218)로 제공할 수 있다.
일부 실시예에서, 어플리케이션에 대한 하나 이상의 PHA를 식별하는 것은, 예컨대, PHA 식별기(215)에 의하여, PHA(171)와 같은 PHA에 의해 적어도 부분적으로 교체 가능한 세그먼트에 대하여 기준 버전(231)과 같은 어플리케이션 내의 코드를 분석하는 것을 포함할 수 있다. 어플리케이션 내 코드를 분석하는 것은, 예컨대, 플로우 추출 프로세스 및/또는 해시 비교 프로세스를 포함할 수 있다. 교체 가능한 코드 세그먼트가 식별되는 경우, 식별된 세그먼트를 적어도 부분적으로 교체하기 위한 PHA는 PHA 데이터베이스(217)와 같은 PHA의 라이브러리로부터 검색될 수 있거나, 예컨대 PHA 생성기(216)에 의하여 생성될 수 있다. PHA 데이터베이스(217) 및 PHA 생성기(216)는 PHA를 검색 및/또는 합성하기 위해 현재 사용되는 것 및 개발될 수 있는 것을 포함하는 임의의 이용 가능한 기술을 이용할 수 있다.
일부 실시예에서, 가속된 어플리케이션 형성기(218)는 어플리케이션의 기준 버전(231)의 가속된 버전인 가속된 버전(232)과 같은 선택된 어플리케이션의 가속된 버전을 형성하도록 구성될 수 있다. 즉, 가속된 버전(232) 및 기준 버전(231)은 동일한 어플리케이션의 두 개의 상이한 버전을 포함할 수 있다. 가속된 버전(232)은 PHA(171)를 이용할 수 있는 한편, 기준 버전(231)은 PHA(171)를 이용하지 않을 수 있다. 기준 버전(231)이 일부 경우에서 하나 이상의 PHA를 이용할 수 있는 한편, 가속된 버전(232)은 기준 버전(231)에 의해 이용되지 않는 PHA(171)와 같은 하나 이상의 추가적인 PHA를 이용할 수 있다. 가속된 버전(232) 및 기준 버전(231)은 유사하거나 동일한 입력을 가질 수 있고 유사하거나 동일한 출력을 생산할 수 있으나, 가속된 버전(232)은 기준 버전(231)에 비하여 보다 효율적으로 및/또는 보다 나은 성능으로 동작할 수 있다. 가속된 버전(232)은 PHA 식별기(215)에 의하여 식별된 PHA의 사용에 의하여 가속될 수 있으며, 예컨대, 가속된 버전(232)은 PHA(171)의 사용에 의해 가속될 수 있다.
일부 실시예에서, 가속된 어플리케이션 형성기(218)는 예컨대, 어플리케이션의 완전히 가속된 버전 대신, 분기 명령어(forking instruction)에 따라 어플리케이션의 가속된 세그먼트를 생성하도록 구성될 수 있다. 분기 명령어는 어플리케이션의 기준 버전이 두 개의 실행 경로, 가속된 실행 경로 및 기준 실행 경로로 분기하게 하도록 구성될 수 있다. 컴퓨팅 장치(230)는 제1 실행 경로에서 기준 어플리케이션의 가속되지 않은 세그먼트를 실행할 수 있으며, 컴퓨팅 장치(230)는 제2 실행 경로에서 병행하여 가속된 세그먼트를 실행할 수 있다. 실행 경로의 출력 및 성능은 여기에서 설명된 바와 같이 측정되고 비교될 수 있다. 제2 실행 경로에서의 가속된 세그먼트의 실행이 완료된 경우, 출력 및 성능 데이터는 비교를 위하여 저장될 수 있으며, 제2 실행 경로는 종료될 수 있는 한편, 제1 실행 경로는 계속할 수 있다.
일부 실시예에서, 실행/측정 관리기(219)는 예컨대, 컴퓨팅 장치(230)에 의한 실행을 위하여 가속된 버전(232)을 로드하고, 컴퓨팅 장치(230)에 의한 실행을 위하여 성능 측정 모듈(233)을 로드하고, 기준 버전(231), 가속된 버전(232) 및/또는 성능 측정(233)을 자동적으로 개시(261)하도록 구성될 수 있다. 실행/측정 관리기(219)는 따라서, 컴퓨팅 장치(230)에 의하여, 가속된 버전(232)을 실행하여 기준 버전(231)에 의하여 수행된 태스크를 수행할 수 있고, 가속된 버전(232)은 어플리케이션과의 사용을 위해 PHA 식별기(215)에 의해 식별된 PHA(171)와 같은 하나 이상의 PHA의 이용에 의해 가속될 수 있다. 일부 실시예에서, 실행/측정 관리기(219)는 기준 버전(231)으로의 사용을 위해 고객(201)으로부터 수신된 태스크 명령어 또는 기타 입력을 복사할 수 있으며, 복사된 태스크 명령어 또는 기타 입력을 가속된 버전(232)에 제공할 수 있다.
일부 실시예에서, 실행/측정 관리기(219)는 기준 버전(231)을 실행/개시하는 것과 동시에 가속된 버전(232)을 자동적으로 실행/개시할 수 있다. 예컨대, 실행/측정 관리기(219)는 기준 버전(231) 및 가속된 버전(232)을 "실시간"으로, 즉, 고객(201)에 의한 기준 버전(231)의 사용과 관련되어, 또는 낮은 데이터 센터 수요의 기간 동안의 시뮬레이션 동안 동시에 개시할 수 있다. 실행/측정 관리기(219)는 성능 측정(233)을 개시하여 기준 버전(231) 및 가속된 버전(232)의 성능을 동시에 측정할 수 있다. 일부 실시예에서, 실행/측정 관리기(219)는 기준 버전(231)의 실행과는 상이한 시간에, 예컨대, 낮은 데이터 센터 수요의 기간 동안에 가속된 버전(232)을 자동적으로 실행/개시할 수 있고, 가속된 버전(232)의 성능은 기준 버전(231)의 종전 실행의 성능 측정치에 비교될 수 있다. 실행/측정 관리기(219)는 성능 측정(233)을 개시하여 기준 버전(231)의 성능을 측정할 수 있고, 실행/측정 관리기(219)는 이후 성능 측정(233)을 재개시하여 가속된 버전(232)의 성능을 측정할 수 있다.
일부 실시예에서, 성능 측정(233)은 기준 버전(231) 및 가속된 버전(232)의 성능을 측정하도록 구성될 수 있다. 성능 측정(233)은 예컨대, 컴퓨팅 장치(230) 상에서 기준 버전(231) 및 가속된 버전(232)을 실행하기 위한 실행 시간, 실행 비용 또는 실행 에너지 소비 중 하나 이상을 측정할 수 있다. 성능 측정(233)은 기준 버전(231) 및 가속된 버전(232)과 연관된 성능 측정 결과를 포함하는 출력(273)을 성능 비교기(221)에 제공할 수 있다.
일부 실시예에서, 출력 비교기(220)는 각각 어플리케이션의 기준 버전(231) 및 가속된 버전(232)에 의하여 생성된 출력(271 및 272)을 비교하여 비교된 출력(271 및 272)이 실질적으로 동일한지 여부를 결정하도록 구성될 수 있다. 출력(271 및 272)이 실질적으로 동일한 경우, 실시예는 성능 비교기(221)에 의하여 성능을 비교하고, 성능 이익 추정 데이터(252)를 고객(201)에게 제공하도록 진행할 수 있다. 출력(271 및 272)이 실질적으로 동일하지 않은 경우, 실시예는 성능 비교기(221)에 의하여 성능을 비교하는 것 및 성능 이익 추정 데이터(252)를 고객(201)에게 제공하는 것과 같은 이익 추정 동작을 중단할 수 있다. 출력(271 및 272)이 실질적으로 동일하지 않은 경우, 일부 실시예는 또한 PHA 식별기(215)로 시작하는 이익 추정 관리기(212)의 동작을 반복하도록 시도할 수 있거나 기준 버전(231)을 가속하는 이익을 추정하기 위한 이익 추정 관리기(212)에 의한 추가적인 시도를 방지하도록 문제 있는 것으로서 기준 버전(231)을 표시할 수 있다.
일부 실시예가 출력(271 및 272)을 비교하여 출력(271 및 272)이 동일한지 여부를 결정할 수 있는 한편, 일부 실시예는 출력(271 및 272)을 비교하여 출력(271 및 272)이 실질적으로 동일한지, 예컨대, 90% 내지 100% 동일한지를 결정할 수 있다. 실질적으로 동일한 출력이 이익 추정 프로세스를 진행하기에 충분한 경우의 결정은 출력(271 및 272)의 데이터 유형 및/또는 어플리케이션 유형에 따를 수 있다.
일부 실시예에서, 출력 비교기(220)는 컴퓨팅 장치(230)의 장치 실행 이력을 확인하여 어플리케이션의 가속된 버전(232)의 실행 동안 식별된 PHA, 예컨대 PHA(171)의 사용을 입증하도록 구성될 수 있다. 가속된 버전(232)을 실행하는 장치에 대한 장치 실행 이력이 PHA(171)의 사용을 나타내는 경우, 실시예는 성능 비교기(221)에 의하여 성능을 비교하고, 성능 이익 추정 데이터(252)를 고객(201)에게 제공하도록 진행할 수 있다. 가속된 버전(232)을 실행하는 장치에 대한 장치 실행 이력이 PHA(171)의 비사용을 나타내면, 실시예는 성능 비교기(221)에 출력(273)을 제공하지 않을 수 있거나 기준 버전(231) 및 가속된 버전(232)의 종합된 성능 측정치로부터의 출력(273)을 생략하도록 성능 비교기(221)에 통지할 수 있다.
일부 실시예에서, 성능 비교기(221)는 어플리케이션의 기준 버전(231)과 어플리케이션의 가속된 버전(232) 간의 실행 시간의 차이, 실행 비용의 차이 또는 실행 에너지 소비의 차이 중 하나 이상을 계산하도록 구성될 수 있다. 예컨대, 출력(273)은 기준 버전(231) 및 가속된 버전(232)에 대한 측정된 실행 시간, 실행 비용 및/또는 실행 에너지 소비 정보를 포함할 수 있고 성능 비교기(221)는 이러한 측정치 중 임의의 것의 차이를 계산할 수 있다. 일부 실시예에서, 성능 비교기(221)는 예컨대, 출력(273)에 포함된 실행 시간 측정치로부터 실행 비용 및/또는 실행 에너지 소비를 유도(derive)하고 이후 실행 시간, 실행 비용 및/또는 실행 에너지 소비의 차이를 계산함으로써, 차이를 계산하기 전에 측정치를 유도할 수 있다. 차이를 계산하는 것은, 예컨대 하나의 측정치를 다른 것으로부터 감산하여, 예컨대 기준 버전(231)이 가속된 버전(232)보다 20분 많은 (또는 임의의 양만큼 많거나 적은) 실행 시간을 이용함을 보이는 것, 및/또는 하나의 측정치를 다른 것으로 나누어 퍼센트 차를 계산하여, 예컨대 기준 버전(231)이 가속된 버전(232)보다 20% 많은 (또는 임의의 퍼센트 많거나 적은) 실행 시간을 이용함을 보이는 것을 포함할 수 있다.
일부 실시예에서, 성능 비교기(221)는 기준 버전(231) 및 가속된 버전(232)을 실행하는 다수의 인스턴스에 대응하여 어플리케이션의 기준 버전(231) 및 어플리케이션의 가속된 버전(232) 간의 차이를 종합할 수 있다. 예컨대, 실행/측정 관리기(219)는 기준 버전(231)이 한 달(또는 다른 기간) 중에 이용되는 때마다 가속된 버전(232)의 실행을 개시할 수 있으며, 성능 측정(233)은 기준 버전(231) 및 가속된 버전(232)이 실행되는 때마다 기준 버전(231) 및 가속된 버전(232)을 측정할 수 있다. 성능 비교기(221)는 273과 같은 결과적인 측정 출력을 종합할 수 있다. 성능 비교기(221)는 이후 종합된 측정 출력 전반에 걸쳐 성능 차이를 계산할 수 있다.
일부 실시예에서, 성능 비교기(221)는 성능 이익 추정 데이터(252)를 고객 계정 인터페이스(211)에 제공할 수 있다. 성능 이익 추정 데이터(252)는 기준 버전(231) 및 가속된 버전(232) 간의 계산된 성능 차이를 포함할 수 있으며, 예컨대, 성능 이익 추정 데이터(252)는 기준 버전(231) 및 가속된 버전(232) 간의 실행 시간의 차이, 실행 비용의 차이, 실행 에너지 소비의 차이 중 하나 이상을 포함할 수 있다. 일부 실시예에서, 성능 이익 추정 데이터(252)는 다수의 인스턴스/실행에 걸쳐 기준 버전(231) 및 가속된 버전(232) 간의 성능 차이를 요약하는 보고, 예컨대, 여기에서 설명된 바와 같은 종합된 차이를 요약하는 보고를 포함할 수 있다. 일부 실시예에서, 보고는 또한 다수의 상이한 어플리케이션과 관련되어, 예컨대 가속을 위한 후보일 수 있는 고객(201)에 대한 모든 어플리케이션에 대하여, 성능 차이를 조합하도록 종합될 수 있다.
고객 계정 인터페이스(211)를 통하여, 및/또는 고객(201)에 성능 이익 추정 데이터(252)를 이메일 보내거나 아니면 통신함으로써 성능 이익 추정 데이터(252)가 고객(201)에 제공될 수 있다. 성능 이익 추정 데이터(252)를 고객(201)에게 제공하는 것의 예시는 예컨대, "고객님이 빅클라우드(BigCloud) 가속기 프로젝트를 이용할 것을 선택하셨다면, 2012년 8월 동안 빅클라우드 상에서의 고객님의 IT 청구는 34% 빨리 실행했을 것이고 고객님이 지불한 $654(즉, 비용) 대신 $475이 들었을 것입니다."와 같은 메시지를 고객(201)에게 제공할 수 있다. 물론, 성능 이익을 데이터 센터 고객에게 통신하는 많은 다른 방법이 가능하다.
도 3은 본 개시의 적어도 일부 실시예에 따라 배열된, 이익 추정 관리기를 구현하는 장치의 일 예시로서의 컴퓨팅 장치(300)의 블록도이다. 매우 기초적인 구성(301)에서, 컴퓨팅 장치(300)는 하나 이상의 프로세서(310) 및 시스템 메모리(320)를 포함할 수 있다. 메모리 버스(330)는 프로세서(310) 및 시스템 메모리(320) 사이의 통신을 위하여 이용될 수 있다.
요구되는 구성에 따라, 프로세서(310)는 마이크로프로세서(μP), 마이크로컨트롤러(μC), 디지털 신호 프로세서(DSP), 또는 그들의 임의의 조합을 포함하는 임의의 유형일 수 있으나, 이에 제한되지는 않는다. 프로세서(310)는 레벨 1 캐시(311) 및 레벨 2 캐시(312)와 같은 하나 이상의 레벨(level)의 캐시(cache), 프로세서 코어(313), 및 레지스터(314)를 포함할 수 있다. 프로세서 코어(313)는 산술 논리 연산장치(arithmetic logic unit; ALU), 부동 소수점 장치(floating point unit; FPU), 디지털 신호 처리 코어(DSP Core), 또는 그들의 임의의 조합을 포함할 수 있다. 메모리 컨트롤러(315)는 또한 프로세서(310)와 함께 사용될 수 있거나, 또는 일부 구현예에서 메모리 컨트롤러(315)는 프로세서(310)의 내적인 일부일 수 있다.
요구되는 구성에 따라, 시스템 메모리(320)는 (RAM과 같은) 휘발성 메모리, (ROM, 플래시 메모리 등과 같은) 비휘발성 메모리, 또는 그들의 임의의 조합을 포함하는 임의의 유형일 수 있으나, 이에 제한되지는 않는다. 시스템 메모리(320)는 보통 운영 체제(321), 하나 이상의 어플리케이션(322) 및 프로그램 데이터(325)를 포함할 수 있다. 일부 실시예에서, 운영 체제(321)는 가상 머신 관리기(virtual machine manager(VMM))에 의하여 관리되는 가상 머신을 포함할 수 있다. 어플리케이션(322)은 예컨대, 이익 추정 관리기(212) 또는 그 일부를 포함할 수 있다. 예컨대, 어플리케이션(322)은 프로그램 가능 하드웨어 리소스 평가기(231), 어플리케이션 선택기(214), PHA 식별기(215), PHA 생성기(216), PHA 데이터베이스(217), 가속된 어플리케이션 형성기(218), 실행/측정 관리기(219), 출력 비교기(220) 및/또는 성능 비교기(221) 중 하나 이상을 포함할 수 있다. 프로그램 데이터(325)는 PHA 데이터베이스(217)와 같은, 이익 추정 관리기(212) 또는 그 일부에 의해서 이용될 수 있는 데이터(326) 및/또는 출력(271), 출력(272) 또는 출력(273)과 같은 출력 데이터를 포함할 수 있다.
컴퓨팅 장치(300)는 기초적인 구성(301) 및 임의의 요구되는 장치 및 인터페이스 사이에서 통신을 용이하게 하도록 추가적인 특징 또는 기능, 및 추가적인 인터페이스를 가질 수 있다. 예를 들어, 버스/인터페이스 컨트롤러(340)는 저장 인터페이스 버스(341)를 통한 기초적인 구성(301) 및 하나 이상의 데이터 저장 장치(350) 사이의 통신을 용이하게 하도록 사용될 수 있다. 데이터 저장 장치(350)는 이동식 저장 장치(351), 고정식 저장 장치(352), 또는 그 조합일 수 있다. 이동식 저장 장치 및 고정식 저장 장치의 예를 몇 가지 들자면, 플렉서블 디스크 드라이브(flexible disk drive) 및 하드 디스크 드라이브(HDD)와 같은 자기 디스크 장치, 컴팩트 디스크(CD) 드라이브 또는 디지털 다목적 디스크(DVD) 드라이브와 같은 광 디스크 드라이브, 고체 상태 드라이브(SSD), 및 테이프 드라이브 등을 포함한다. 예시적인 컴퓨터 저장 매체는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈(program module), 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성의 이동식 및 고정식 매체를 포함할 수 있다.
레벨 1 캐시(311), 레벨 2 캐시(312), 시스템 메모리(320), 이동식 저장 장치(351) 및 고정식 저장 장치(352)는 모두 컴퓨터 저장 매체의 예이다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, 디지털 다목적 디스크(DVD) 또는 기타 광 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 요구되는 정보를 저장하도록 사용될 수 있고, 컴퓨팅 장치(300)에 의해 액세스될 수 있는 임의의 기타 매체를 포함하나, 이에 제한되지는 않는다. 임의의 그러한 컴퓨터 저장 매체는 장치(300)의 일부일 수 있다.
컴퓨팅 장치(300)는 또한 버스/인터페이스 컨트롤러(340)를 통한 다양한 인터페이스 장치(예컨대, 출력 인터페이스, 주변 인터페이스, 및 통신 인터페이스)로부터 기초적인 구성(301)으로의 통신을 용이하게 하기 위한 인터페이스 버스(342)를 포함할 수 있다. 예시적인 출력 장치(360)는 그래픽 처리 유닛(361) 및 오디오 처리 유닛(362)을 포함하며, 이는 하나 이상의 A/V 포트(363)를 통하여 디스플레이 또는 스피커와 같은 다양한 외부 장치로 통신하도록 구성될 수 있다. 예시적인 주변 인터페이스(370)는 직렬 인터페이스 컨트롤러(371) 또는 병렬 인터페이스 컨트롤러(372)를 포함할 수 있으며, 이는 하나 이상의 I/O 포트(373)를 통하여 입력 장치(예컨대, 키보드, 마우스, 펜, 음성 입력 장치, 터치 입력 장치 등) 또는 기타 주변 장치(예컨대, 프린터, 스캐너 등)와 같은 외부 장치와의 유선 또는 무선 연결 중 하나를 통하여 통신하도록 구성될 수 있다. 마우스, 키보드 등과 같은 다른 종래의 I/O 장치도 마찬가지로 연결될 수 있다. 예시적인 통신 장치(380)는 네트워크 컨트롤러(381)를 포함하며, 이는 하나 이상의 통신 포트(382)를 통하여 네트워크 통신 상에서 하나 이상의 다른 컴퓨팅 장치(390), 예컨대 컴퓨팅 장치(320), 고객 계정 인터페이스(211)를 구현하는 컴퓨팅 장치, 및/또는 데이터 센터 고객(201, 202, 203)에 의하여 동작되는 컴퓨팅 장치와의 통신을 용이하게 하도록 배열될 수 있다.
컴퓨터 저장 매체는 통신 매체의 하나의 예일 수 있다. 통신 매체는 일반적으로 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파 또는 기타 수송 메커니즘(transport mechanism)과 같은, 변조된 데이터 신호에서의 기타 데이터에 의해 구현될 수 있고 임의의 정보 전달 매체를 포함할 수 있다. "변조된 데이터 신호"는 신호 내에 정보를 인코딩하는 방식으로 설정되거나 변경된 하나 이상의 특성을 갖는 신호일 수 있다. 예를 들어, 통신 매체는 유선 네트워크 또는 직접 유선 연결(direct-wired connection)과 같은 유선 매체, 및 음향, 라디오 주파수(RF), 적외선(IR) 및 기타 무선 매체와 같은 무선 매체를 포함할 수 있으나, 이에 제한되지 않는다.
컴퓨팅 장치(300)는 데이터 센터 내 서버로서 구현될 수 있다. 컴퓨팅 장치(300)는 또한 네트워크 서버, 전자 상거래 서버, 또는 랩탑 컴퓨터 및 랩탑이 아닌 컴퓨터 구성 모두를 포함하는 개인용 또는 사업용 컴퓨터와 같은, FPGA 가속을 이용하도록 구성된 임의의 장치로서 구현될 수 있다.
도 4는 본 개시의 적어도 일부 실시예에 따라 배열된, 어플리케이션의 가속된 버전을 형성하기 위한 예시적인 방법을 도시하는 흐름도이다. 도 4는 또한 가속된 버전을 형성하는 데에 사용하기 위한 PHA를 식별하는 것과 가속된 버전의 실행을 개시하는 것을 포함한다. 예시적인 흐름도는 블록(401, 402, 403 및 404)을 포함하는 PHA 식별기(215), 가속된 어플리케이션 형성기(218), PHA 데이터베이스(217), PHA 생성기(216) 및/또는 실행/측정 관리기(219) 중 하나 이상의 동작/모듈을 포함할 수 있다. 다양한 도시된 블록은 방법에서 수행될 수 있는 동작, 컴퓨팅 장치(300)에서의 기능적인 모듈 및/또는 컴퓨터 판독 가능 매체(450) 상에 기록될 수 있는 명령어를 나타낼 수 있다.
도 4는 예컨대, 블록(401)을 먼저 및 블록(219)을 마지막으로 순차적으로 수행되는 것으로 도시되는 블록을 포함한다. 그러나, 이러한 블록이 특정 실시예에 적합하도록 편의에 따라 재배열될 수 있다는 점 및 이러한 블록 또는 그 일부가 일부 실시예에서 동시에 수행될 수 있다는 점이 인정될 것이다. 또한, 일부 예시에서 다양한 블록이 제거, 추가적인 블록으로 분할, 및/또는 다른 블록과 조합될 수 있다는 점이 인정될 것이다.
도 4는 컴퓨팅 장치(300)가 어플리케이션의 가속된 버전과 관련되어 사용하기 위한 PHA를 식별할 수 있고 식별된 PHA를 사용하도록 구성된 가속된 버전을 형성할 수 있는 예시적인 방법을 도시한다. 예시된 방법은 일반적으로 어플리케이션의 기준 버전을 역 컴파일(decompile)하는 단계, 역 컴파일된 기준 버전을 이용하여 어플리케이션과의 사용을 위한 PHA를 식별 및/또는 합성하는 단계 및 식별/합성된 PHA를 사용하는 가속된 버전을 형성하는 단계를 포함할 수 있다. 어플리케이션의 가속된 버전은 그 실행 및 성능 측정을 위하여 실행/측정 관리기(219)에 제공될 수 있다. 일부 실시예에서, 도 4에 따른 방법은 사람 운용자로부터의 입력을 필요로 하지 않는, 완전히 자동적일 수 있다. 일부 실시예에서, 방법은 운용자 상호작용을 포함할 수 있다.
PHA 식별기(215)는 "기준 버전 로드" 블록(401), "기준 버전 역 컴파일" 블록(402), "가속기 식별" 블록(403) 및 "플로우 추출" 블록(404)을 포함할 수 있다. "기준 버전 로드" 블록(401)은 선택된 어플리케이션의 기준 블록을 컴퓨팅 장치(300) 메모리로 로드할 수 있다. 기준 버전은 실행 가능할 수 있거나 "기계 언어"일 수 있다. "기준 버전 역 컴파일" 블록(402)은 기준 버전의 기계 언어를, 예컨대, 어셈블리 언어 또는 기준 버전을 표현하는 다른 보다 하이 레벨(high-level)의 언어 출력을 생산함으로써 역 컴파일할 수 있다. 역 컴파일된 코드는 가속된 어플리케이션 형성기(218)에 제공될 수 있고 블록(403 및 404)에 의한 분석을 위해 저장될 수 있다. 기준 어플리케이션의 하이 레벨의 언어 버전이 존재하는 실시예에서, 블록(401 및 402)은 생략될 수 있다. 또한, 블록(401 및 402)은 임의의 기준 버전 입력, 예컨대, 하이 레벨의 언어, 컴파일된 바이트 코드, 스크립트(script), 컴파일된 코드 등을 다루는 데 적절하도록 구성될 수 있다.
"가속기 식별" 블록(403)은 역 컴파일된 어셈블리 언어를, PHA 데이터베이스(217)에 저장된 PHA에 의해 교체 가능한 알려진 알고리즘/어플리케이션 세그먼트에 대하여, 탐색(search)할 수 있다. 블록(403)은 식별된 어플리케이션 세그먼트를 교체하는 데에 사용하기 위한 PHA 데이터베이스(217)에 저장된 PHA에 대한 식별자에 따라, 가속된 어플리케이션 형성기(218)로의 교체 가능한 알고리즘/어플리케이션 세그먼트를 식별할 수 있다. "플로우 추출" 블록(404)은 역 컴파일된 어셈블리 언어의 플로우 트리(flow tree)를 분석하여 합성된 PHA에 의해 교체될 수 있는 어플리케이션 세그먼트를 식별할 수 있다. 블록(404)은 식별된 어플리케이션 세그먼트를 교체하도록 PHA를 생성하는 데에 사용하기 위한, 가속된 어플리케이션 형성기(218)로의 교체 가능한 알고리즘/어플리케이션 세그먼트를 식별할 수 있다.
PHA 데이터베이스(217) 내 PHA 및/또는 PHA 생성기(216)에 의해서 합성된 PHA는 하드웨어 기술 언어(hardware descriptor language(HDL)) 기술 파일을 포함할 수 있으며, 이는 보통 컨피그웨어(configware)라고 지칭된다. 임의의 디지털 회로 또는 어플리케이션은 이러한 요소로부터 생성될 수 있다. 그러나, 컨피그웨어 및 HDL 프로그래밍은 보통 데이터 센터 고객을 위하여 어플리케이션을 생성하고 관리하는 소프트웨어 프로그래머와는 대조적으로 주로 전기 기술자(electrical engineer)의 기술을 이용하는 특수 분야로 남아 있다. 기업들은 HDL로 그 자신의 PHA를 프로그램하여 그 어플리케이션을 가속하기 위하여 리소스를 준비하지 않을 수 있다. 다행히도, 데이터 센터는 도 4에 도시된 바와 같이 두 소스 중 하나로부터 고객에게 코프로세서를 공급할 수 있다.
PHA 데이터베이스(217)는 예컨대, 사전에 생성된 PHA의 라이브러리를 포함할 수 있다. 많은 경우에, 동일한 코드가 많은 상이한 어플리케이션에서 반복된다. 예컨대, ZIP 및 JPEG 처리 명령어는 많은 어플리케이션에서 발생한다. 웹 콘텐츠(content)를 제공하는 무엇이든, 단지 수개의 단락을 나열하는 경우라도, 텍스트에 대하여 ZIP를 이용할 가능성이 있을 수 있다. 마찬가지로, 컴파일러의 배후에서 로우 레벨(low level)의 명령어가 특정 알려진 동작을 하려는 경향이 있음에 따라 비터비(viterbi) 및 래딕스(radix) 명령은 많은 상이한 겉보기의 어플리케이션 코드베이스(codebase)의 기준(basis)을 형성한다. 결과적으로, 많은 코드 세그먼트가 있으며, 이에 대하여 HDL PHA를 생성하고 PHA 데이터베이스(217)와 같은 라이브러리에 그들을 배치할 가치가 있을 수 있다.
일부 실시예에서, "가속기 식별" 블록(403)은 어플리케이션을 탐색하여 어플리케이션이 PHA가 존재하는 코드 세그먼트를 포함하는지 여부를 알 수 있다. 이러한 문제는 알려진 바이러스에 대하여 이진 파일을 탐색하는 문제와 유사하다. 알려진 코드의 "지문"을 찾는 데 이용될 수 있는 다양한 기법이 있다. 하나의 기법은 컨트롤 플로우 그래프(control flow graph(CFG))를 코드로부터 생성하고 이후 PHA 데이터베이스(217) 내 PHA의 CFG에 대한 형태학적인 비교(morphological comparison)를 행하는 것이다. 이는 플로우 추출로 지칭된다. 다른 기법은 역 컴파일된 기준 어플리케이션에서의 코드의 고유한 한 토막(snippet)에 대하여 탐색을 하는 것이다. 이는 예컨대, 해시 함수를 이용하여 행해질 수 있다.
일부 실시예에서, "플로우 추출" 블록(404)은 루프 내에서 많이 이용되는 코드를 식별할 수 있고 이러한 "핫 코드(hot code)"의 CFG가 PHA로의 변환을 위해 추출되고 가속된 어플리케이션 형성기(218)로 보내질 수 있다.
일부 실시예에서, 가속된 어플리케이션 형성기(218)는 역 컴파일된 코드, PHA 데이터베이스(217) 내 PHA의 어플리케이션 세그먼트 및 대응하는 식별자, 및 PHA 생성기(216)에 의해 생성된 합성된 PHA에 의한 교체를 위하여 식별된 어플리케이션 세그먼트를 포함할 수 있다. 가속된 어플리케이션 생성기(218)는 식별된 PHA를 PHA 데이터베이스(217)로부터 검색 및/또는 PHA 생성기(216)를 활성화하여 합성된 PHA에 의한 교체를 위해 식별된 어플리케이션 세그먼트를 교체하도록 PHA를 합성할 수 있다. 가속된 어플리케이션 형성기(218)는, 예컨대 탐색/합성된 PHA 또는 그것에 대한 레퍼런스(reference)를 역 컴파일된 코드로 삽입하고 교체를 위해 식별된 어플리케이션 세그먼트를 제거하거나 수정함으로써, 어플리케이션의 기준 버전의 수신된 역 컴파일된 코드를 수정할 수 있다. 가속된 어플리케이션 형성기(218)는 선택적으로 수정된 코드를 컴파일하여 가속된 버전(232)을 생성할 수 있다. 가속된 어플리케이션 형성기(218)는 도 2와 관련되어 설명된 바와 같이 가속된 버전(232)의 실행 및 측정을 위하여 가속된 버전(232)을 실행/측정 관리기(219)에 제공할 수 있다. 일부 실시예에서, 가속된 어플리케이션 형성기(218)는 가속된 버전(232)을 컴퓨팅 장치(230) 내 서버에 송신 또는 로드할 수 있고, 가속된 어플리케이션 형성기(218)는 실행/측정 관리기(219)에 가속된 버전(232)이 측정할 준비가 됨을 통지할 수 있다.
도 5는 본 개시의 적어도 일부 실시예에 따라 배열된 프로그램 가능 하드웨어 가속 이익을 추정하기 위한 예시적인 방법을 도시하는 흐름도이다. 예시적인 흐름도는 블록(213, 214, 502, 501, 231, 232, 219, 503, 504, 220, 221 및 505)에 의해 도시된 바와 같은 하나 이상의 동작/모듈을 포함할 수 있으며, 이는 방법에서 수행될 수 있는 동작, 컴퓨팅 장치(300) 내 기능적인 모듈 및/또는 컴퓨터 판독 가능 매체(550) 상에 기록될 수 있는 명령어를 나타낼 수 있다.
도 5는 예컨대, 블록(213)을 먼저 및 블록(505)을 마지막으로, 순차적으로 수행되는 것으로 도시된 블록을 포함한다. 그러나, 이러한 블록이 특정 실시예에 적합하도록 편의에 따라 재배열될 수 있음과 이러한 블록 또는 그 일부가 일부 실시예에서 동시에 수행될 수 있음이 인정될 것이다. 또한 일부 예시에서, 다양한 블록이 제거, 추가적인 블록으로 분할, 및/또는 다른 블록과 조합될 수 있음이 인정될 것이다.
도 5는 예시적인 방법을 도시하며, 이에 의해 컴퓨팅 장치(300) 내 이익 추정 관리기는 충분한 프로그램 가능 하드웨어 리소스가 데이터 센터에서 이용 가능한지 여부를 결정하여 데이터 센터 고객에 의한 PHA의 채택을 권장하는 것을 타당화, 이익 추정을 위한 적절한 어플리케이션을 선택, 어플리케이션의 가속된 버전을 형성, 어플리케이션의 기준 버전과 비교하여 가속된 버전의 성능 이익을 측정, 및/또는 성능 이익 추정 데이터를 데이터 센터 고객에게 제공할 수 있다.
블록(213 및 214)이 도 2에 도입된다. "프로그램 가능 하드웨어 리소스 평가기" 블록(213)에서, 컴퓨팅 장치(300)는 데이터 센터 내 프로그램 가능 하드웨어 리소스가 데이터 센터 고객에 의한 사용을 위하여 이용 가능한지 여부를 결정할 수 있다. 예컨대, 컴퓨팅 장치(300)는 데이터 센터 내 컴퓨팅 장치(100)와 같은 컴퓨팅 장치에서 사용되지 않거나 부분적으로 사용되는 FPGA가 있는지를 결정할 수 있다. 일부 실시예에서, 블록(213)은, 예컨대 블록(214)에서 이익 추정을 위하여 선택하기 위해 어플리케이션의 수를 결정하는 것에서의 사용을 위한 이용 가능한 프로그램 가능 하드웨어 리소스를 수량화(quantify)할 수 있다.
데이터 센터에 불충분한 이용 가능한 프로그램 가능 하드웨어 리소스가 있는 경우, 예컨대, 이용 가능한 프로그램 가능 하드웨어 리소스가 소정의 최소값 아래인 경우 - 여기서 최소값은 데이터 센터의 크기, 데이터 센터 내 어플리케이션을 가속화하는데 요구되는 프로그램 가능 하드웨어 리소스의 양 및/또는 특정 실시예에 적용 가능한 다른 고려사항에 따라 설정될 수 있음 -, 블록(213)은 "비교 진행하지 않음" 블록(501)으로 이어질 수 있으며, 도 5에 도시된 나머지 동작은 블록(213)이 프로그램 가능 하드웨어 리소스가 이용 가능하다고 결정하는 때까지 연기될 수 있다. 데이터 센터에 충분한 이용 가능한 프로그램 가능 하드웨어 리소스가 있는 경우, 블록(213)은 블록(214)으로 이어질 수 있으며, 블록(213)은 선택적으로 이용 가능한 프로그램 가능 하드웨어 리소스의 양을 블록(214)에 제공할 수 있다.
"어플리케이션 선택기" 블록(214)에서, 컴퓨팅 장치(300)는 가속할 하나 이상의 어플리케이션을 선택할 수 있다. 일부 실시예에서, 블록(214)은 예컨대, 보다 많은 프로그램 가능 하드웨어 리소스가 데이터 센터에서 이용 가능한 경우 보다 많은 가속을 위한 어플리케이션을 선택하고, 보다 적은 프로그램 가능 하드웨어 리소스가 데이터 센터에서 이용 가능한 경우 보다 적은 가속을 위한 어플리케이션을 선택함으로써, 이용 가능한 프로그램 가능 하드웨어 리소스의 양과 상호 관련하는 어플리케이션의 수를 선택할 수 있다. 블록(214)은 다양한 어플리케이션 선택 기준 중 임의의 것을 이용할 수 있다. 예컨대, 데이터 센터 고객이 이미 자신의 어플리케이션을 가속한 경우 가속 이익을 측정할 필요가 없을 수 있으므로, 블록(214)은 데이터 센터 고객에 의하여 가속이 활성화되지 않은 어플리케이션을 선택할 수 있다.
일부 실시예에서, 블록(214)은 사전에 존재하는 가속된 버전을 가지는 어플리케이션을 선택할 수 있으며, 이 실시예는 블록(502)의 이용을 제거할 수 있다. 측정 데이터 및/또는 출력 비교 데이터가 사전에 존재하는 가속된 버전에 대하여 이미 존재하는 경우, 실시예는 또한 블록(219, 503, 504, 220 및 221)을 생략할 수 있다는 점이 인식될 것이다.
일부 실시예에서, 블록(214)은, 블록(502)이 동작 가능한 가속된 버전을 형성하도록 준비된 어플리케이션을 선택할 수 있다. 예컨대, 블록(214)은 식별된 어플리케이션 유형을 가지는 어플리케이션 또는 식별된 어플리케이션 세그먼트 유형을 포함하는 어플리케이션을 선택할 수 있으며, 식별된 어플리케이션 또는 어플리케이션 세그먼트 유형은, 어플리케이션을 선택하기 전에 PHA 데이터베이스(217) 내 적어도 하나의 식별된 프로그램 가능 하드웨어 가속기로 동작 가능하도록 설정될 수 있다. 블록(214)은 블록(502)으로 이어질 수 있다.
"PHA 식별/가속된 버전 형성" 블록(502)에서, 컴퓨팅 장치(300)는 도 4에 따른 어플리케이션의 가속된 버전을 형성하기 위한 방법, 예컨대 도 4에 도시된 블록(215, 216, 217 및/또는 218)과 관련된 동작을 수행할 수 있다. 블록(502)은 기준 버전(231)을 이용하여 가속된 버전(232)을 생성할 수 있다. 예컨대, PHA 데이터베이스(217) 내 적절한 PHA의 이용 불가능성 또는 PHA 생성기(216)에 의해 적절한 PHA를 합성할 수 없음으로 인하여, 가속된 버전이 생성될 수 없는 경우, 블록(502)은 가속될 수 없는 어플리케이션에 대하여 "비교 진행하지 않음"의 블록(501)으로 이어질 수 있다. 블록(502)은 가속될 수 있는 어플리케이션에 대하여 블록(219)으로 이어질 수 있다.
"실행/측정 관리기" 블록(219)에서, 컴퓨팅 장치(300)는 블록(503 및/또는 504)을 개시하여 기준 버전(231) 및 가속된 버전(232)을 실행 및 측정할 수 있다. 일부 실시예에서, 블록(219)은, 예컨대 가속된 버전(232)의 실행 경로에 기준 버전(231)에 대한 고객 입력을 미러링(mirroring)함으로써, 기준 버전(231)에 의하여 수행된 태스크를 수행하도록 가속된 버전(232)의 실행을 관리할 수 있다.
일부 실시예에서, 데이터 센터 고객은 기준 버전(231)을 개시할 수 있고, 블록(219)은 예컨대, 블록(503)에서의 기준 버전(231)의 고객 개시에 응답하여 블록(504)에서 가속된 버전(232)을 자동적으로 실행할 수 있다. 블록(219)은 블록(503)에서의 기준 버전(231)의 측정 및 블록(504)에서의 가속된 버전(232)의 측정을 자동적으로 개시할 수 있다. 일부 실시예에서, 예컨대 성능 측정의 목적으로 기준 버전(231) 및 가속된 버전(232)의 데이터 센터 고객 사용을 시뮬레이트하기 위해, 블록(219)은 기준 버전(231)과 가속된 버전(232)의 실행 및 기준 버전(231)과 가속된 버전(232)의 측정 둘 다를 개시할 수 있다. 블록(502)은 블록(503 및 504)으로 이어질 수 있다.
"기준 버전 실행/측정" 블록(503) 및 "가속된 버전 실행/측정" 블록(504)에서, 컴퓨팅 장치(300)는 기준 버전(231) 및/또는 가속된 버전(232)이 예시적인 컴퓨팅 장치(100)에서와 같은 컴퓨팅 장치(230)에서 실행하도록 할 수 있다. 컴퓨팅 장치(300)는 도 2에서 도시된 성능 측정(233)을 활성화하여 컴퓨팅 장치(230)에서 기준 버전(231) 및 가속된 버전(232)을 실행하기 위한 실행 시간, 실행 비용 및/또는 실행 에너지 소비와 같은 성능 기준을 측정할 수 있다. 블록(503 및 504)은 기준 버전(231) 및 가속된 버전(232)으로부터의 어플리케이션 출력을 블록(220)으로 제공할 수 있고, 블록(503 및 504)은 기준 버전(231) 및 가속된 버전(232)의 측정으로부터의 성능 측정 출력을 블록(221)에 제공할 수 있다. 블록(503 및 504)은 블록(220)으로 이어질 수 있다.
"출력 비교기" 블록(220)에서, 컴퓨팅 장치(300)는, 도 2를 참조하여 설명된 바와 같이, 기준 버전(231) 및 가속된 버전(232)에 의해 생성된 출력을 비교하여 비교된 출력이 실질적으로 동일한지 여부를 결정할 수 있다. 예컨대, 비디오 인코딩 어플리케이션의 경우에서, 기준 버전(231) 및 가속된 버전(232)은 둘 다 인코딩된 비디오 출력을 생성할 수 있다. 인코딩된 비디오 출력은 블록(220)에서 비교되어 동일하거나 실질적으로 동일한지 여부를 결정할 수 있다. 블록(220)은 여기에서 설명된 일부 실시예에서 실질적으로 동일한 것을 수용할 수 있다. 예컨대, 일부 경우에, 가속된 버전(232)에서의 PHA는 가속된 버전(232)이 상이하기는 하지만 수용 가능한 출력을 생성하도록 할 수 있다. 예컨대, 인코딩된 비디오에서의 특정 색채는 가속된 버전(232)에 의하여 생성된 출력에서 상이하게 렌더링(rendering)될 수 있으나, 그럼에도 불구하고 색채는 인코딩된 비디오 출력 비교를 위하여 설정된 기준 하에서 "실질적으로 동일"한 것으로 받아들여질 수 있다. 블록(220)은 비교된 출력이 동일하거나 실질적으로 동일한 경우 블록(221)으로 이어질 수 있다. 블록(220)은 비교된 출력이 동일 또는 실질적으로 동일하지 않은 경우, "비교 진행하지 않음" 블록(501)으로 이어질 수 있다.
"성능 비교기" 블록(220)에서, 컴퓨팅 장치(300)는 블록(503 및 504)에서 획득된 성능 측정치를 비교할 수 있다. 블록(220)은 예컨대, 도 2를 참조하여 설명된 바와 같이, 기준 버전(231) 및 가속된 버전(232) 간의 실행 시간의 차이, 실행 비용의 차이 및/또는 실행 에너지 소비의 차이 중 하나 이상을 계산할 수 있다. 블록(221)은 블록(505)으로 이어질 수 있다.
"성능 이익 추정 데이터 저장" 블록(505)에서, 컴퓨팅 장치(300)는 블록(503 및 504)에서 획득된 측정 데이터 및/또는 블록(221)으로부터의 성능 비교 출력을 저장할 수 있다. 예컨대, 블록(505)은 도 2에 도시된 고객 계정 인터페이스(211)에 성능 이익 추정 데이터를 저장할 수 있다. 블록(505)은 이에 따라 실행 시간, 실행 비용 및/또는 실행 에너지 소비의 차이와 같은 성능 이익 추정 데이터를 데이터 센터 고객에게 제공할 수 있다.
도 6은 본 개시의 적어도 일부 실시예에 따라 배열된 프로그램 가능 하드웨어 가속 이익을 추정하기 위한 예시적인 방법을 도시하는 흐름도이다. 예시적인 흐름도는 블록(213, 214, 601, 501, 231, 602, 219, 603, 604, 605, 220, 221 및 505)에 의해 도시된 하나 이상의 동작/모듈을 포함할 수 있으며, 이는 방법에서 수행될 수 있는 동작, 컴퓨팅 장치(300)에서의 기능적인 모듈 및/또는 컴퓨터 판독 가능 매체(650) 상에 기록될 수 있는 명령어를 나타낼 수 있다.
도 6은 예컨대 블록(213)을 먼저 및 블록(505)을 마지막으로, 순차적으로 수행되는 것으로 도시되는 블록을 포함한다. 그러나, 이러한 블록들이 특정 실시예에 적합하도록 편의에 따라 재배열될 수 있음과 이러한 블록 또는 그 일부가 일부 실시예에서 동시에 수행될 수 있음이 인정될 것이다. 또한, 일부 예시에서, 다양한 블록들이 제거, 추가적인 블록으로 분할, 및/또는 다른 블록과 조합될 수 있음이 인정될 것이다.
도 6은 도 5에 따른 방법과 어떠한 점에서는 유사한 프로그램 가능 하드웨어 가속 이익을 추정하기 위한 예시적인 방법을 도시하고, 동일한 블록은 동일한 식별번호로 식별된다. 도 6에 따른 방법에서, 가속 기법은 어플리케이션의 가속된 세그먼트의 사용을 포함할 수 있고, 기준 버전의 실행 경로는 가속되지 않은 세그먼트 및 가속된 세그먼트 둘 다를 실행하도록 분기될 수 있다. 성능 측정은 가속된 실행 경로 및 가속되지 않은 실행 경로를 측정하고, 선택적으로 이러한 측정치를 기준 버전의 분기되지 않은 세그먼트의 측정치와 조합할 수 있도록 변경될 수 있다.
도 6에서 블록(213 및 214)은 도 5 및 도 2와 관련되어 설명된 바와 같이 동작할 수 있다. 블록(214)은 블록(601)으로 이어질 수 있다. "PHA 식별/분기 명령어 생성" 블록(601)에서, 컴퓨팅 장치(300)는 여기에서 설명된 바와 같이, 기준 버전(231)과의 사용을 위하여 PHA를 식별 및/또는 합성할 수 있다. 도 5에 도시된 가속된 버전(232)과 같이 완전 가속된 버전을 형성하는 것 대신에, 블록(601)은 가속된 세그먼트 및 분기 명령어(602)를 생성할 수 있다. 가속된 세그먼트 및 분기 명령어(602)는 실행 관리기(219)가 기준 버전(231)의 실행을 가속된 세그먼트에 대한 실행 경로 및 기준 버전(231)의 대응하는 원래의 가속되지 않은 세그먼트에 대한 실행 경로를 포함하는 적어도 두 개의 실행 경로로 분기하게 조정할 수 있다. 가속된 세그먼트 및 분기 명령어(602)는 기준 버전(231)을 가속하는 데에 요구되는 많은 상이한 가속된 세그먼트 및 분기 명령어를 포함할 수 있다. 블록(601)은 블록(219)으로 이어질 수 있다.
"실행/측정 관리기" 블록(219)에서, 컴퓨팅 장치(300)는 일반적으로 블록(602)으로부터의 가속된 세그먼트 및 기준 버전(231)의 실행 및 측정을 설정 및 개시할 수 있다. 블록(219)은 예컨대, 이하에서 설명되는 블록(603, 604 및 605)의 동작을 설정 및 관리할 수 있다. 블록(219)은 블록(603)으로 이어질 수 있다.
"기준 버전 실행/측정 및 분기 명령어" 블록(603)에서, 컴퓨팅 장치(300)는 예시적인 컴퓨팅 장치(100)와 같은 컴퓨팅 장치(230)에서 기준 버전(231)을 실행 및 측정할 수 있고, 컴퓨팅 장치(300)는 블록(602)으로부터의 가속된 세그먼트를 실행 및 측정하기 위해 기준 버전(231)을 분기하도록 컴퓨팅 장치(100)를 조정할 수 있다. 컴퓨팅 장치(300)는, 기준 버전(231)의 사용자 개시에 응답하여, 컴퓨팅 장치(100)에서 기준 버전(231)의 실행을 개시하거나 기준 버전(231)의 측정을 개시함으로써, 예컨대, 도 2에 도시된 성능 측정(233)에 의하여 블록(603)을 개시할 수 있다. 컴퓨팅 장치(300)는 블록(602)으로부터의 분기 명령어를 컴퓨팅 장치(100)에 로드할 수 있다. 컴퓨팅 장치(300)는, 예컨대 PHA를 FPGA(160)에 로드함으로써, 블록(602)으로부터의 가속된 세그먼트에 포함된 PHA를 컴퓨팅 장치(100)에 로드할 수 있다.
"가속되지 않은 세그먼트 실행/측정" 블록(604) 및 "가속된 세그먼트 실행/측정" 블록(605)에서, 분기 명령어에 응답하여, 컴퓨팅 장치(100)는 기준 버전(231)의 실행 경로를 분기하여 기준 버전(231)의 가속되지 않은 세그먼트 및 블록(602)으로부터의 가속된 세그먼트 둘 다를 실행할 수 있으며, 여기서 가속된 세그먼트는 FPGA(160)에 로드된 PHA의 동작을 포함할 수 있다. 블록(604)은 가속되지 않은 세그먼트의 성능 측정을 할 수 있고 블록(605)은 가속된 세그먼트의 성능 측정을 할 수 있다. 블록(605)에서 가속된 세그먼트의 실행 및 측정이 완료되면, 방법은 가속된 세그먼트를 포함하는 실행 경로를 종료할 수 있다. 블록(604)에서의 가속되지 않은 세그먼트의 실행 및 측정이 완료되면, 가속되지 않은 세그먼트를 포함하는 실행 경로는 블록(603)으로 계속/복귀할 수 있다. 블록(603)은 다른 분기 명령어 또는 기준 버전(231)의 실행 및/또는 측정이 중단될 때까지 기준 버전(231)의 실행 및 측정을 계속할 수 있다. 블록(603, 604 및/또는 605)은 블록(220)으로 이어질 수 있다.
"출력 비교기" 블록(220)에서, 컴퓨팅 장치(300)는 도 5 및 도 2와 관련하여 설명된 어플리케이션 출력을 비교할 수 있다. 도 6에 따른 실시예에서, 비교된 출력은 블록(604 및 605)으로부터의 출력을 포함할 수 있다. 블록(220)은 블록(221)으로 이어질 수 있다.
"성능 비교기" 블록(221)에서, 컴퓨팅 장치(300)는 도 5 및 도 2와 관련되어 설명된 성능 측정치를 비교할 수 있다. 도 6에 따른 일부 실시예에서, 블록(221)은 블록(603)과 연관된 측정치를 블록(604)과 연관된 측정치와 조합함으로써 기준 버전(231)의 성능을 계산할 수 있고, 블록(603)과 연관된 측정치를 블록(605)과 연관된 측정치와 조합함으로써 "가상의" 가속된 버전의 성능을 계산할 수 있다. 기준 버전(231) 및 가상의 가속된 버전과 연관된 조합된 측정치 간의 차이는 이후 여기에서 설명된 바와 같이 결정될 수 있다. 일부 실시예에서, 블록(221)은 블록(603)과 연관된 성능 측정치를 고려하지 않으면서, 블록(604 및 605) 간의 성능 차이를 결정할 수 있다. 블록(221)은 블록(505)으로 이어질 수 있다. 블록(505)의 동작은 도 5를 참조하여 설명된다.
시스템의 양상들의 하드웨어 및 소프트웨어 구현 사이에는 구별이 거의 없다; 하드웨어 또는 소프트웨어의 사용은 일반적으로 (그러나 어떤 맥락에서 하드웨어 및 소프트웨어 사이의 선택이 중요할 수 있다는 점에서 항상 그런 것은 아니지만) 비용 대비 효율의 트레이드오프(tradeoff)를 나타내는 설계상 선택(design choice)이다. 본 개시에서 기재된 프로세스 및/또는 시스템 및/또는 다른 기술들이 영향 받을 수 있는 다양한 수단(vehicles)(예를 들어, 하드웨어, 소프트웨어 및/또는 펌웨어)이 있으며, 선호되는 수단은 프로세스 및/또는 시스템 및/또는 다른 기술이 사용되는 맥락(context)에 따라 변경될 것이다. 예를 들어, 구현자가 속도 및 정확성이 가장 중요하다고 결정한다면, 구현자는 주로 하드웨어 및/또는 펌웨어 수단을 선택할 수 있으며, 유연성이 가장 중요하다면, 구현자는 주로 소프트웨어 구현을 선택할 수 있으며; 또는, 다른 대안으로서, 구현자는 하드웨어, 소프트웨어 및/또는 펌웨어의 어떤 결합을 선택할 수 있다.
전술한 상세한 설명은 블록도, 흐름도, 및/또는 예시를 통해 장치 및/또는 프로세스의 다양한 실시예를 설명하였다. 그러한 블록도, 흐름도, 및/또는 예시는 하나 이상의 기능 및/또는 동작을 포함하는 한, 당업자라면 그러한 블록도, 흐름도, 또는 예시 내의 각각의 기능 및/또는 동작은 하드웨어, 소프트웨어, 펌웨어, 또는 그들의 실질적으로 임의의 조합의 넓은 범위에 의해 개별적으로 및/또는 집합적으로 구현될 수 있다는 것이 이해할 것이다. 일 실시예에서, 본 개시에 기재된 대상의 몇몇 부분은 ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array), DSP(Digital Signal Processor) 또는 다른 집적의 형태를 통해 구현될 수 있다. 그러나, 당업자라면, 본 개시의 실시예의 일부 양상은, 하나 이상의 컴퓨터 상에 실행되는 하나 이상의 컴퓨터 프로그램(예를 들어, 하나 이상의 컴퓨터 시스템 상에 실행되는 하나 이상의 프로그램), 하나 이상의 프로세서 상에서 실행되는 하나 이상의 프로그램(예를 들어, 하나 이상의 마이크로프로세서 상에서 실행되는 하나 이상의 프로그램), 펌웨어 또는 이들의 실질적으로 임의의 조합으로써, 전체적으로 또는 부분적으로 균등하게 집적 회로에서 구현될 수 있다는 점, 소프트웨어 및/또는 펌웨어를 위한 코드의 작성 및/또는 회로의 설계는 본 개시에 비추어 당업자의 기술 범위 내라는 점을 알 수 있을 것이다. 또한, 당업자라면, 본 개시의 대상의 매커니즘(mechanism)들이 다양한 형태의 프로그램 제품으로 분배될 수 있음을 이해할 것이며, 본 개시의 대상의 예시는, 분배를 실제로 수행하는데 사용되는 신호 베어링 매체의 특정 유형과 무관하게 적용됨을 이해할 것이다. 신호 베어링 매체의 예는, 플렉서블 디스크, 하드 디스크 드라이브(HDD), CD, DVD, 디지털 테이프, 컴퓨터 메모리 등과 같은 기록 가능 유형의 매체, 디지털 및/또는 아날로그 통신 매체(예를 들어, 섬유 광학 케이블, 도파관, 유선 통신 링크, 무선 통신 링크 등)와 같은 전송 유형 매체를 포함할 수 있으나, 이에 제한되지는 않는다.
당업자라면, 여기서 설명된 형식으로 장치 및/또는 프로세스를 기술하고, 이후, 공학 실무를 사용하여 그러한 기술된 장치 및/또는 방법을 데이터 처리 시스템에 통합한다는 것은 당해 분야에서는 일반적이란 것을 인식할 것이다. 즉, 여기서 기술된 장치 및/또는 방법의 적어도 일부는 합당한 실험량을 통해 데이터 처리 시스템에 통합될 수 있다. 당업자라면, 전형적인 데이터 처리 시스템은 일반적으로 하나 이상의 시스템 유닛 하우징, 비디오 디스플레이 장치, 휘발성 및 비휘발성 메모리 같은 메모리, 마이크로프로세서 및 디지털 신호 프로세서 같은 프로세서, 운영 체제, 드라이버, 그래픽 사용자 인터페이스 및 어플리케이션 프로그램과 같은 컴퓨터 엔티티(computational entities), 터치 패드 또는 스크린 같은 하나 이상의 상호작용 장치, 및/또는 피드백 루프 및 제어 모터(예를 들면, 위치 및/또는 속도를 감지하기 위한 피드백; 컴포넌트 및/또는 양(quantities)을 이동하고 및/또는 조정하기 위한 제어 모터)를 포함하는 제어 시스템을 일반적으로 포함한다는 것을 인식할 것이다. 전형적인 데이터 처리 시스템은 데이터 컴퓨팅/통신 및/또는 네트워크 컴퓨팅/통신 시스템에서 전형적으로 발견되는 바와 같은 임의의 적절한 상업적으로 이용 가능한 컴포넌트를 이용하여 구현될 수 있다. 여기서 기술된 대상은 때때로 상이한 다른 컴포넌트 내에 포함되거나 접속된 상이한 컴포넌트를 도시한다. 도시된 그러한 아키텍처는 단순히 예시적인 것이고, 사실상 동일한 기능을 달성하는 다른 많은 아키텍처가 구현될 수 있다는 것이 이해되어야 한다. 개념적으로, 동일한 기능을 달성하기 위한 컴포넌트의 임의의 배치는 원하는 기능이 달성되도록 유효하게 "연관"된다. 이에 따라, 특정 기능을 달성하기 위해 여기서 결합된 임의의 두 개의 컴포넌트는, 아키텍처 또는 중간 컴포넌트와는 무관하게, 원하는 기능이 달성되도록 서로 "연관"된 것으로 볼 수 있다. 마찬가지로, 연관된 두 개의 컴포넌트는 또한 원하는 기능을 달성하기 위해 서로 "동작적으로 접속"되거나 또는 "동작적으로 연결"되는 것으로 간주될 수 있고, 그와 같이 연관될 수 있는 임의의 두 개의 컴포넌트는 또한 원하는 기능을 달성하기 위해 서로 "동작적으로 연결가능"한 것으로 볼 수 있다. 동작적으로 연결 가능하다는 것의 특정 예는 물리적으로 연결 가능하고 및/또는 물리적으로 상호작용하는 컴포넌트 및/또는 무선으로 상호작용이 가능하고 및/또는 무선으로 상호작용하는 컴포넌트 및/또는 논리적으로 상호작용하고 및/또는 논리적으로 상호작용이 가능한 컴포넌트를 포함하지만, 이에 한정되는 것은 아니다.
여기에서 실질적으로 임의의 복수 및/또는 단수의 용어의 사용에 대하여, 당업자는 맥락 및/또는 응용에 적절하도록, 복수를 단수로 및/또는 단수를 복수로 해석할 수 있다. 다양한 단수/복수의 치환은 명확성을 위해 여기에서 명시적으로 기재될 수 있다.
당업자라면, 일반적으로 본 개시에 사용되며 특히 첨부된 청구범위(예를 들어, 첨부된 청구범위)에 사용된 용어들이 일반적으로 "개방적(open)" 용어(예를 들어, 용어 "포함하는"은 "포함하지만 이에 제한되지 않는"으로, 용어 "갖는"는 "적어도 갖는"으로, 용어 "포함하다"는 "포함하지만 이에 한정되지 않는" 등으로 해석되어야 함)로 의도되었음을 이해할 것이다. 또한, 당업자라면, 도입된 청구항의 기재사항의 특정 수가 의도된 경우, 그러한 의도가 청구항에 명시적으로 기재될 것이며, 그러한 기재사항이 없는 경우, 그러한 의도가 없음을 또한 이해할 것이다. 예를 들어, 이해를 돕기 위해, 이하의 첨부 청구범위는 "적어도 하나" 및 "하나 이상" 등의 도입 구절의 사용을 포함하여 청구항 기재사항을 도입할 수 있다. 그러나, 그러한 구절의 사용이, 부정관사 "하나"("a" 또는 "an")에 의한 청구항 기재사항의 도입이, 그러한 하나의 기재사항을 포함하는 발명으로, 그러한 도입된 청구항 기재사항을 포함하는 특정 청구항을 제한함을 암시하는 것으로 해석되어서는 안되며, 동일한 청구항이 도입 구절인 "하나 이상" 또는 "적어도 하나" 및 "하나"("a" 또는 "an")과 같은 부정관사(예를 들어, "하나"는 "적어도 하나" 또는 "하나 이상"을 의미하는 것으로 일반적으로 해석되어야 함)를 포함하는 경우에도 마찬가지로 해석되어야 한다. 이는 청구항 기재사항을 도입하기 위해 사용된 정관사의 경우에도 적용된다. 또한, 도입된 청구항 기재사항의 특정 수가 명시적으로 기재되는 경우에도, 당업자라면 그러한 기재가 일반적으로 적어도 기재된 수(예를 들어, 다른 수식어가 없는 "두개의 기재사항"을 단순히 기재한 것은, 일반적으로 적어도 두 개의 기재사항 또는 두 개 이상의 기재사항을 의미함)를 의미하도록 해석되어야 함을 이해할 것이다. 또한, "A, B 및 C,등 중의 적어도 하나"와 유사한 규칙이 사용된 경우에는, 일반적으로 그러한 해석은 당업자가 그 규칙을 이해할 것이라는 전제가 의도된 것이다(예를 들어, "A, B 및 C 중의 적어도 하나를 갖는 시스템"은, A만을 갖거나, B만을 갖거나, C만을 갖거나, A 및 B를 함께 갖거나, A 및 C를 함께 갖거나, B 및 C를 함께 갖거나, A, B, 및 C를 함께 갖는 시스템을 포함하지만 이에 제한되지 않음). "A, B 또는 C 중의 적어도 하나"와 유사한 규칙이 사용된 경우에는, 일반적으로 그러한 해석은 당업자가 그 규칙을 이해할 것이라는 전제가 의도된 것이다(예를 들어, "A, B 또는 C 중의 적어도 하나를 갖는 시스템"은, A만을 갖거나, B만을 갖거나, C만을 갖거나, A 및 B를 함께 갖거나, A 및 C를 함께 갖거나, B 및 C를 함께 갖거나, A, B, 및 C를 함께 갖는 시스템을 포함하지만 이에 제한되지 않음). 또한 당업자라면, 실질적으로 어떠한 이접 접속어(disjunctive word) 및/또는 두 개 이상의 대안적인 용어들을 나타내는 구절은, 그것이 상세한 설명, 청구범위 또는 도면에 있는지와 상관없이, 그 용어들 중의 하나, 그 용어들 중의 어느 하나, 또는 그 용어들 두 개 모두를 포함하는 가능성을 고려했음을 이해할 것이다. 예를 들어, "A 또는 B"라는 구절은 "A" 또는 "B" 또는 "A 및 B"의 가능성을 포함하는 것으로 이해될 것이다.
특정 예시적인 기법이 다양한 방법, 장치, 시스템을 이용하여 여기에서 설명되고 도시되었지만, 청구된 대상에서 벗어나지 않으면서, 다양한 다른 변경이 이루어질 수 있고, 균등물이 대체될 수 있음이 당업자에 의하여 이해되어야 한다. 또한, 여기에서 설명된 중심 개념에서 벗어나지 않으면서 청구된 대상의 교시에 특정 상황을 적응시키도록 많은 변경이 이루어질 수 있다. 따라서, 청구된 대상이 개시된 특정 예시에 제한되지 않으나 그러한 청구된 대상이 또한 첨부된 청구항 및 그 균등의 범위 내에 들어가는 모든 구현예를 포함할 수 있음이 의도된다.

Claims (49)

  1. 프로그램 가능 하드웨어 가속 이익(programmable hardware acceleration benefit)을 추정하기 위한 방법으로서,
    데이터 센터(data center) 내 하나 이상의 컴퓨팅 장치에 의하여, 데이터 센터 고객(customer)에 대한 하나 이상의 태스크(task)를 수행하기 위한 어플리케이션의 기준 버전(reference version)을 실행하는 단계;
    상기 어플리케이션의 상기 기준 버전을 실행하기 위한 실행 시간, 실행 비용 또는 실행 에너지 소비 중 하나 이상을 측정하는 단계;
    상기 어플리케이션에 대한 하나 이상의 프로그램 가능 하드웨어 가속기를 식별하는 단계 - 상기 식별된 프로그램 가능 하드웨어 가속기는 상기 어플리케이션의 상기 기준 버전의 실행 동안 이용되지 않음 -;
    상기 하나 이상의 컴퓨팅 장치에 의하여, 상기 어플리케이션의 상기 기준 버전에 의해 수행된 상기 하나 이상의 태스크를 수행하기 위한 상기 어플리케이션의 가속된 버전(accelerated version)을 자동적으로 실행하는 단계 - 상기 어플리케이션의 상기 가속된 버전은 상기 하나 이상의 식별된 프로그램 가능 하드웨어 가속기의 사용에 의해 가속됨 -;
    상기 어플리케이션의 상기 가속된 버전을 실행하기 위한 실행 시간, 실행 비용 또는 실행 에너지 소비 중 하나 이상을 측정하는 단계;
    상기 어플리케이션의 상기 기준 버전 및 상기 어플리케이션의 상기 가속된 버전 간의 실행 시간의 차이, 실행 비용의 차이 또는 실행 에너지 소비의 차이 중 하나 이상을 계산하는 단계; 및
    상기 실행 시간의 차이, 상기 실행 비용의 차이 또는 상기 실행 에너지 소비의 차이 중 하나 이상을 상기 데이터 센터 고객에게 제공하는 단계
    를 포함하는 프로그램 가능 하드웨어 가속 이익을 추정하기 위한 방법.
  2. 청구항 2은(는) 설정등록료 납부시 포기되었습니다.
    제1항에 있어서,
    상기 데이터 센터 내 프로그램 가능 하드웨어 리소스(resource)가 상기 데이터 센터 고객에 의한 사용을 위해 이용 가능한지 여부를 결정하는 단계
    를 더 포함하는 프로그램 가능 하드웨어 가속 이익을 추정하기 위한 방법.
  3. 청구항 3은(는) 설정등록료 납부시 포기되었습니다.
    제1항에 있어서,
    상기 어플리케이션에 대한 하나 이상의 프로그램 가능 하드웨어 가속기를 식별하는 단계는 프로그램 가능 하드웨어 가속기에 의하여 적어도 부분적으로 교체 가능한 세그먼트(segment)에 대하여 상기 어플리케이션 내 코드를 분석하는 단계를 포함하는, 프로그램 가능 하드웨어 가속 이익을 추정하기 위한 방법.
  4. 청구항 4은(는) 설정등록료 납부시 포기되었습니다.
    제3항에 있어서,
    상기 어플리케이션의 상기 세그먼트를 적어도 부분적으로 교체하기 위해 프로그램 가능 하드웨어 가속기를 프로그램 가능 하드웨어 가속기의 라이브러리(library)로부터 검색(retrieving)하는 단계
    를 더 포함하는 프로그램 가능 하드웨어 가속 이익을 추정하기 위한 방법.
  5. 청구항 5은(는) 설정등록료 납부시 포기되었습니다.
    제3항에 있어서,
    상기 어플리케이션의 상기 세그먼트를 적어도 부분적으로 교체하기 위해 프로그램 가능 하드웨어 가속기를 생성하는 단계
    를 더 포함하는 프로그램 가능 하드웨어 가속 이익을 추정하기 위한 방법.
  6. 청구항 6은(는) 설정등록료 납부시 포기되었습니다.
    제3항에 있어서,
    상기 어플리케이션 내 코드를 분석하는 단계는 플로우 추출 프로세스(flow extraction process)를 포함하는, 프로그램 가능 하드웨어 가속 이익을 추정하기 위한 방법.
  7. 청구항 7은(는) 설정등록료 납부시 포기되었습니다.
    제3항에 있어서,
    상기 어플리케이션 내 코드를 분석하는 단계는 해시 비교 프로세스(hash comparison process)를 포함하는, 프로그램 가능 하드웨어 가속 이익을 추정하기 위한 방법.
  8. 청구항 8은(는) 설정등록료 납부시 포기되었습니다.
    제1항에 있어서,
    상기 어플리케이션의 상기 기준 버전 및 상기 어플리케이션의 상기 가속된 버전에 의해서 생성된 출력을 비교하여 상기 비교된 출력이 동일한지 여부를 결정하는 단계
    를 더 포함하는 프로그램 가능 하드웨어 가속 이익을 추정하기 위한 방법.
  9. 청구항 9은(는) 설정등록료 납부시 포기되었습니다.
    제1항에 있어서,
    상기 어플리케이션의 상기 가속된 버전을 자동적으로 실행하는 단계는 상기 어플리케이션의 상기 기준 버전에 의해 실행되는 가속되지 않은 세그먼트와 병행하여 상기 어플리케이션의 가속된 세그먼트를 실행하도록 상기 어플리케이션의 상기 기준 버전을 분기(forking)하는 단계를 포함하는, 프로그램 가능 하드웨어 가속 이익을 추정하기 위한 방법.
  10. 청구항 10은(는) 설정등록료 납부시 포기되었습니다.
    제1항에 있어서,
    상기 어플리케이션의 상기 가속된 버전을 자동으로 실행하는 단계는 상기 어플리케이션의 상기 기준 버전을 실행하는 단계와 동시에 수행되는, 프로그램 가능 하드웨어 가속 이익을 추정하기 위한 방법.
  11. 청구항 11은(는) 설정등록료 납부시 포기되었습니다.
    제1항에 있어서,
    상기 어플리케이션의 상기 기준 버전을 측정하는 단계, 상기 어플리케이션에 대한 프로그램 가능 하드웨어 가속기를 식별하는 단계, 상기 어플리케이션의 상기 가속된 버전을 측정하는 단계, 상기 어플리케이션의 상기 기준 버전 및 상기 어플리케이션의 상기 가속된 버전 간의 차이를 계산하는 단계 및 상기 차이를 상기 데이터 센터 고객에게 제공하는 단계는 자동적으로 수행되는, 프로그램 가능 하드웨어 가속 이익을 추정하기 위한 방법.
  12. 청구항 12은(는) 설정등록료 납부시 포기되었습니다.
    제1항에 있어서,
    상기 어플리케이션의 상기 기준 버전 및 상기 어플리케이션의 상기 가속된 버전을 실행하는 다수의 인스턴스에 대응하여 상기 어플리케이션의 상기 기준 버전 및 상기 어플리케이션의 상기 가속된 버전 간의 차이를 종합(aggregating)하는 단계를 더 포함하고,
    상기 차이를 상기 데이터 센터 고객에게 제공하는 단계는 상기 다수의 인스턴스에 따른 차이를 요약하는 보고(report)를 제공하는 단계를 포함하는, 프로그램 가능 하드웨어 가속 이익을 추정하기 위한 방법.
  13. 청구항 13은(는) 설정등록료 납부시 포기되었습니다.
    제1항에 있어서,
    상기 어플리케이션의 상기 가속된 버전의 실행 동안 상기 하나 이상의 식별된 프로그램 가능 하드웨어 가속기의 사용을 입증하도록 상기 하나 이상의 컴퓨팅 장치의 장치 실행 이력(device execution history)을 확인하는 단계
    를 더 포함하는 프로그램 가능 하드웨어 가속 이익을 추정하기 위한 방법.
  14. 프로세서에 의해서 실행 가능한 컴퓨터 실행 가능 명령어를 가지는 비일시적인(non-transitory) 컴퓨터 판독 가능 저장 매체로서, 상기 명령어는 상기 프로세서에 의하여 실행되면 프로그램 가능 하드웨어 가속 이익 추정기를 구현하고, 상기 프로그램 가능 하드웨어 가속 이익 추정기는 상기 프로세서로 하여금,
    데이터 센터 고객에 대한 하나 이상의 태스크를 수행하기 위한 어플리케이션의 기준 버전을 실행하기 위한 실행 시간, 실행 비용, 실행 에너지 소비 중 하나 이상을 측정하고;
    상기 어플리케이션에 대한 하나 이상의 프로그램 가능 하드웨어 가속기를 식별하고 - 상기 식별된 프로그램 가능 하드웨어 가속기는 상기 어플리케이션의 상기 기준 버전의 실행 동안 이용되지 않음-;
    상기 어플리케이션의 상기 기준 버전에 의해 수행된 상기 하나 이상의 태스크를 수행하기 위한 상기 어플리케이션의 가속된 버전을 자동적으로 실행하고 - 상기 어플리케이션의 상기 가속된 버전은 상기 하나 이상의 식별된 프로그램 가능 하드웨어 가속기의 사용에 의해 가속됨 -;
    상기 어플리케이션의 상기 가속된 버전을 실행하기 위한 실행 시간, 실행 비용, 실행 에너지 소비 중 하나 이상을 측정하고;
    상기 어플리케이션의 상기 기준 버전 및 상기 어플리케이션의 상기 가속된 버전 간의 실행 시간의 차이, 실행 비용의 차이 또는 실행 에너지 소비의 차이 중 하나 이상을 계산하며;
    상기 실행 시간의 차이, 상기 실행 비용의 차이 또는 상기 실행 에너지 소비의 차이 중 하나 이상을 상기 데이터 센터 고객에게 제공하도록 하는, 비일시적인 컴퓨터 판독 가능 저장 매체.
  15. 청구항 15은(는) 설정등록료 납부시 포기되었습니다.
    제14항에 있어서,
    상기 프로세서로 하여금 데이터 센터 내 프로그램 가능 하드웨어 리소스가 상기 데이터 센터 고객에 의한 사용을 위해 이용 가능한지 여부를 결정하도록 하는 명령어
    를 더 포함하는 비일시적인 컴퓨터 판독 가능 저장 매체.
  16. 청구항 16은(는) 설정등록료 납부시 포기되었습니다.
    제14항에 있어서,
    상기 어플리케이션에 대한 하나 이상의 프로그램 가능 하드웨어 가속기를 식별하는 것은 프로그램 가능 하드웨어 가속기에 의해 적어도 부분적으로 교체 가능한 세그먼트에 대한 상기 어플리케이션 내 코드를 분석하는 것을 포함하는, 비일시적인 컴퓨터 판독 가능 저장 매체.
  17. 청구항 17은(는) 설정등록료 납부시 포기되었습니다.
    제16항에 있어서,
    상기 프로세서로 하여금 상기 어플리케이션의 상기 세그먼트를 적어도 부분적으로 교체하도록 프로그램 가능 하드웨어 가속기를 프로그램 가능 하드웨어 가속기의 라이브러리로부터 검색하도록 하는 명령어
    를 더 포함하는 비일시적인 컴퓨터 판독 가능 저장 매체.
  18. 청구항 18은(는) 설정등록료 납부시 포기되었습니다.
    제16항에 있어서,
    상기 프로세서로 하여금 상기 어플리케이션의 상기 세그먼트를 적어도 부분적으로 교체하도록 프로그램 가능 하드웨어 가속기를 생성하도록 하는 명령어
    를 더 포함하는 비일시적인 컴퓨터 판독 가능 저장 매체.
  19. 청구항 19은(는) 설정등록료 납부시 포기되었습니다.
    제16항에 있어서,
    상기 어플리케이션 내 코드를 분석하는 것은 플로우 추출 프로세스를 포함하는, 비일시적인 컴퓨터 판독 가능 저장 매체.
  20. 청구항 20은(는) 설정등록료 납부시 포기되었습니다.
    제16항에 있어서,
    상기 어플리케이션 내 코드를 분석하는 것은 해시 비교 프로세스를 포함하는, 비일시적인 컴퓨터 판독 가능 저장 매체.
  21. 청구항 21은(는) 설정등록료 납부시 포기되었습니다.
    제14항에 있어서,
    상기 프로세서로 하여금 상기 어플리케이션의 상기 기준 버전 및 상기 어플리케이션의 상기 가속된 버전에 의해서 생성된 출력을 비교하여 상기 비교된 출력이 동일한지 여부를 결정하도록 하는 명령어
    를 더 포함하는 비일시적인 컴퓨터 판독 가능 저장 매체.
  22. 청구항 22은(는) 설정등록료 납부시 포기되었습니다.
    제14항에 있어서,
    상기 어플리케이션의 상기 가속된 버전을 자동으로 실행하는 것은 상기 어플리케이션의 상기 기준 버전에 의해 실행되는 가속되지 않은 세그먼트와 병행하여 상기 어플리케이션의 가속된 세그먼트를 실행하도록 상기 어플리케이션의 상기 기준 버전을 분기하는 것을 포함하는, 비일시적인 컴퓨터 판독 가능 저장 매체.
  23. 청구항 23은(는) 설정등록료 납부시 포기되었습니다.
    제14항에 있어서,
    상기 어플리케이션의 상기 가속된 버전을 자동적으로 실행하는 것은 상기 어플리케이션의 상기 기준 버전을 실행하는 것과 동시에 수행되는, 비일시적인 컴퓨터 판독 가능 저장 매체.
  24. 청구항 24은(는) 설정등록료 납부시 포기되었습니다.
    제14항에 있어서,
    상기 어플리케이션의 상기 기준 버전을 측정하는 것, 상기 어플리케이션에 대한 프로그램 가능 하드웨어 가속기를 식별하는 것, 상기 어플리케이션의 상기 가속된 버전을 측정하는 것, 상기 어플리케이션의 상기 기준 버전 및 상기 어플리케이션의 상기 가속된 버전 간의 차이를 계산하는 것, 및 상기 차이를 상기 데이터 센터 고객에게 제공하는 것은 자동적으로 수행되는, 비일시적인 컴퓨터 판독 가능 저장 매체.
  25. 청구항 25은(는) 설정등록료 납부시 포기되었습니다.
    제14항에 있어서,
    상기 프로세서로 하여금 상기 어플리케이션의 상기 기준 버전 및 상기 어플리케이션의 상기 가속된 버전을 실행하는 다수의 인스턴스에 대응하여 상기 어플리케이션의 상기 기준 버전 및 상기 어플리케이션의 상기 가속된 버전 간의 차이를 종합하도록 하는 명령어를 더 포함하고,
    상기 차이를 상기 데이터 센터 고객에게 제공하는 것은 상기 다수의 인스턴스에 따른 차이를 요약하는 보고를 제공하는 것을 포함하는, 비일시적인 컴퓨터 판독 가능 저장 매체.
  26. 청구항 26은(는) 설정등록료 납부시 포기되었습니다.
    제14항에 있어서,
    상기 프로세서로 하여금 상기 어플리케이션의 상기 가속된 버전의 실행 동안 상기 하나 이상의 식별된 프로그램 가능 하드웨어 가속기의 사용을 입증하도록 하나 이상의 컴퓨팅 장치의 장치 실행 이력을 확인하도록 하는 명령어
    를 더 포함하는 비일시적인 컴퓨터 판독 가능 저장 매체.
  27. 프로그램 가능 하드웨어 가속 이익을 추정하도록 구성되는 컴퓨팅 장치로서,
    프로세서;
    메모리; 및
    상기 메모리에 저장되며 상기 프로세서에 의해 실행 가능한 프로그램 가능 하드웨어 가속 이익 추정기를 포함하고,
    상기 프로그램 가능 하드웨어 가속 이익 추정기는,
    데이터 센터 고객에 대하여 하나 이상의 태스크를 수행하기 위한 어플리케이션의 기준 버전을 실행하기 위한 실행 시간, 실행 비용 또는 실행 에너지 소비 중 하나 이상을 측정하고;
    상기 어플리케이션에 대하여 하나 이상의 프로그램 가능 하드웨어 가속기를 식별하고 - 상기 식별된 프로그램 가능 하드웨어 가속기는 상기 어플리케이션의 상기 기준 버전의 실행 중에 이용되지 않음 -;
    상기 어플리케이션의 상기 기준 버전에 의해 수행된 상기 하나 이상의 태스크를 수행하기 위한 상기 어플리케이션의 가속된 버전을 자동적으로 실행하고 - 상기 어플리케이션의 상기 가속된 버전은 상기 하나 이상의 식별된 프로그램 가능 하드웨어 가속기의 사용에 의해 가속됨 -;
    상기 어플리케이션의 상기 가속된 버전을 실행하기 위한 실행 시간, 실행 비용 또는 실행 에너지 소비 중 하나 이상을 측정하고;
    상기 어플리케이션의 상기 기준 버전 및 상기 어플리케이션의 상기 가속된 버전 간의 실행 시간의 차이, 실행 비용의 차이 또는 실행 에너지 소비의 차이 중 하나 이상을 계산하며;
    상기 실행 시간의 차이, 상기 실행 비용의 차이 또는 상기 실행 에너지 소비의 차이 중 하나 이상을 상기 데이터 센터 고객에 제공하도록 구성되는, 컴퓨팅 장치.
  28. 제27항에 있어서,
    상기 프로그램 가능 하드웨어 가속 이익 추정기는 데이터 센터 내 프로그램 가능 하드웨어 리소스가 상기 데이터 센터 고객에 의한 사용을 위해 이용 가능한지 여부를 결정하도록 구성되는, 컴퓨팅 장치.
  29. 제27항에 있어서,
    상기 어플리케이션에 대한 하나 이상의 프로그램 가능 하드웨어 가속기를 식별하는 것은 프로그램 가능 하드웨어 가속기에 의해 적어도 부분적으로 교체 가능한 세그먼트에 대한 상기 어플리케이션 내 코드를 분석하는 것을 포함하는, 컴퓨팅 장치.
  30. 제29항에 있어서,
    상기 프로그램 가능 하드웨어 가속 이익 추정기는 상기 어플리케이션의 세그먼트를 적어도 부분적으로 교체하도록 프로그램 가능 하드웨어 가속기를 프로그램 가능 하드웨어 가속기의 라이브러리로부터 검색하도록 구성되는, 컴퓨팅 장치.
  31. 제29항에 있어서,
    상기 프로그램 가능 하드웨어 가속 이익 추정기는 상기 어플리케이션의 세그먼트를 적어도 부분적으로 교체하도록 프로그램 가능 하드웨어 가속기를 생성하도록 구성되는, 컴퓨팅 장치.
  32. 청구항 32은(는) 설정등록료 납부시 포기되었습니다.
    제29항에 있어서,
    상기 어플리케이션 내 코드를 분석하는 것은 플로우 추출 프로세스를 포함하는, 컴퓨팅 장치.
  33. 청구항 33은(는) 설정등록료 납부시 포기되었습니다.
    제29항에 있어서,
    상기 어플리케이션 내 코드를 분석하는 것은 해시 비교 프로세스를 포함하는, 컴퓨팅 장치.
  34. 제27항에 있어서,
    상기 프로그램 가능 하드웨어 가속 이익 추정기는 상기 어플리케이션의 상기 기준 버전 및 상기 어플리케이션의 상기 가속된 버전에 의해 생성된 출력을 비교하여 상기 비교된 출력이 동일한지 여부를 결정하도록 구성되는, 컴퓨팅 장치.
  35. 제27항에 있어서,
    상기 어플리케이션의 상기 가속된 버전을 자동적으로 실행하는 것은 상기 어플리케이션의 상기 기준 버전에 의해 실행되는 가속되지 않은 세그먼트와 병행하여 상기 어플리케이션의 가속된 세그먼트를 실행하도록 상기 어플리케이션의 상기 기준 버전을 분기하는 것을 포함하는, 컴퓨팅 장치.
  36. 제27항에 있어서,
    상기 어플리케이션의 상기 가속된 버전을 자동적으로 실행하는 것은 상기 어플리케이션의 상기 기준 버전을 실행하는 것과 동시에 수행되는, 컴퓨팅 장치.
  37. 제27항에 있어서,
    상기 어플리케이션의 상기 기준 버전을 측정하는 것, 상기 어플리케이션에 대한 프로그램 가능 하드웨어 가속기를 식별하는 것, 상기 어플리케이션의 상기 가속된 버전을 측정하는 것, 상기 어플리케이션의 상기 기준 버전 및 상기 어플리케이션의 상기 가속된 버전 사이의 차이를 계산하는 것 및 상기 차이를 상기 데이터 센터 고객에 제공하는 것은 자동적으로 수행되는, 컴퓨팅 장치.
  38. 제27항에 있어서,
    상기 프로그램 가능 하드웨어 가속 이익 추정기는 상기 어플리케이션의 상기 기준 버전 및 상기 어플리케이션의 상기 가속된 버전을 실행하는 다수의 인스턴스에 대응하여 상기 어플리케이션의 상기 기준 버전 및 상기 어플리케이션의 상기 가속된 버전 간의 차이를 종합하도록 구성되고,
    상기 차이를 상기 데이터 센터 고객에 제공하는 것은 상기 다수의 인스턴스에 따른 차이를 요약하는 보고를 제공하는 것을 포함하는, 컴퓨팅 장치.
  39. 제27항에 있어서,
    상기 프로그램 가능 하드웨어 가속 이익 추정기는 상기 어플리케이션의 상기 가속된 버전의 실행 동안 상기 하나 이상의 식별된 프로그램 가능 하드웨어 가속기의 사용을 입증하도록 하나 이상의 다른 컴퓨팅 장치의 장치 실행 이력을 확인하도록 구성되는, 컴퓨팅 장치.
  40. 데이터 센터에서 프로그램 가능 하드웨어 가속 이익을 추정하기 위한 방법으로서,
    상기 데이터 센터 내 하나 이상의 컴퓨팅 장치에 의해 실행되는 하나 이상의 어플리케이션의 고객 활성 가속(customer-activated acceleration)을 제공하는 단계 - 상기 고객 활성 가속은 하나 이상의 어플리케이션 태스크를 수행하도록 프로그램 가능 하드웨어 가속기를 사용함-;
    데이터 센터 고객에 의해 상기 고객 활성 가속이 활성화되지 않은 어플리케이션을 선택하는 단계;
    상기 고객 활성 가속 없이 상기 어플리케이션의 기준 버전을 실행하기 위한 실행 시간, 실행 비용 또는 실행 에너지 소비 중 하나 이상을 측정하는 단계;
    상기 어플리케이션에 대하여 하나 이상의 프로그램 가능 하드웨어 가속기를 식별하는 단계 - 상기 프로그램 가능 하드웨어 가속기는 상기 어플리케이션의 상기 기준 버전에 의해 이용되지 않음 -;
    상기 하나 이상의 컴퓨팅 장치에 의하여, 상기 선택된 어플리케이션의 가속된 버전을 자동적으로 실행하는 단계;
    상기 어플리케이션의 상기 가속된 버전을 실행하기 위한 실행 시간, 실행 비용 또는 실행 에너지 소비 중 하나 이상을 측정하는 단계; 및
    상기 데이터 센터 고객에게, 상기 어플리케이션의 상기 기준 버전 및 상기 어플리케이션의 상기 가속된 버전 간의 실행 시간의 차이, 실행 비용의 차이 또는 실행 에너지 소비의 차이를 제공하는 단계
    를 포함하는 데이터 센터에서 프로그램 가능 하드웨어 가속 이익을 추정하기 위한 방법.
  41. 삭제
  42. 제40항에 있어서,
    상기 어플리케이션에 대한 하나 이상의 프로그램 가능 하드웨어 가속기를 식별하는 단계는 프로그램 가능 하드웨어 가속기에 의해 적어도 부분적으로 교체 가능한 세그먼트에 대한 상기 어플리케이션 내 코드를 분석하는 단계를 포함하는, 데이터 센터에서 프로그램 가능 하드웨어 가속 이익을 추정하기 위한 방법.
  43. 제40항에 있어서,
    상기 어플리케이션의 상기 기준 버전 및 상기 어플리케이션의 상기 가속된 버전에 의해 생성된 출력을 비교하여 상기 비교된 출력이 동일한지 여부를 결정하는 단계
    를 더 포함하는, 데이터 센터에서 프로그램 가능 하드웨어 가속 이익을 추정하기 위한 방법.
  44. 제40항에 있어서,
    상기 어플리케이션의 상기 가속된 버전을 자동적으로 실행하는 단계는, 상기 어플리케이션의 상기 기준 버전에 의해 실행되는 가속되지 않은 세그먼트와 병행하여 상기 어플리케이션의 가속된 세그먼트를 실행하도록 상기 어플리케이션의 상기 기준 버전을 분기하는 단계를 포함하는, 데이터 센터에서 프로그램 가능 하드웨어 가속 이익을 추정하기 위한 방법.
  45. 제40항에 있어서,
    상기 어플리케이션의 상기 가속된 버전을 자동적으로 실행하는 단계는 상기 어플리케이션의 상기 기준 버전을 실행하는 단계와 동시에 수행되는, 데이터 센터에서 프로그램 가능 하드웨어 가속 이익을 추정하기 위한 방법.
  46. 제40항에 있어서,
    상기 어플리케이션의 상기 기준 버전 및 상기 어플리케이션의 상기 가속된 버전을 실행하는 다수의 인스턴스에 대응하여 상기 어플리케이션의 상기 기준 버전 및 상기 어플리케이션의 상기 가속된 버전 간의 차이를 종합하는 단계를 더 포함하고,
    상기 차이를 상기 데이터 센터 고객에게 제공하는 단계는 상기 다수의 인스턴스에 따른 차이를 요약하는 보고를 제공하는 단계를 포함하는, 데이터 센터에서 프로그램 가능 하드웨어 가속 이익을 추정하기 위한 방법.
  47. 제40항에 있어서,
    상기 어플리케이션의 상기 가속된 버전의 실행 동안 상기 하나 이상의 식별된 프로그램 가능 하드웨어 가속기의 사용을 입증하도록 상기 하나 이상의 컴퓨팅 장치의 장치 실행 이력을 확인하는 단계
    를 더 포함하는 데이터 센터에서 프로그램 가능 하드웨어 가속 이익을 추정하기 위한 방법.
  48. 제40항에 있어서,
    상기 데이터 센터 내 프로그램 가능 하드웨어 리소스가 상기 데이터 센터 고객에 의한 사용을 위하여 이용 가능한지 여부를 결정하는 단계
    를 더 포함하는 데이터 센터에서 프로그램 가능 하드웨어 가속 이익을 추정하기 위한 방법.
  49. 제40항에 있어서,
    데이터 센터 고객에 의하여 상기 고객 활성 가속이 활성화되지 않은 어플리케이션을 선택하는 단계는 식별된 어플리케이션 유형을 가지는 어플리케이션 또는 식별된 어플리케이션 세그먼트 유형을 포함하는 어플리케이션을 선택하는 단계를 포함하고,
    상기 식별된 어플리케이션 유형 또는 상기 식별된 어플리케이션 세그먼트 유형은, 상기 어플리케이션을 선택하는 단계 이전에, 적어도 하나의 식별된 프로그램 가능 하드웨어 가속기로 동작 가능하도록 설정되는, 데이터 센터에서 프로그램 가능 하드웨어 가속 이익을 추정하기 위한 방법.
KR20130054528A 2013-03-26 2013-05-14 가속 이익 추정기 KR101478567B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/850,671 2013-03-26
US13/850,671 US9747185B2 (en) 2013-03-26 2013-03-26 Acceleration benefit estimator

Publications (2)

Publication Number Publication Date
KR20140117241A KR20140117241A (ko) 2014-10-07
KR101478567B1 true KR101478567B1 (ko) 2015-01-02

Family

ID=51621766

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20130054528A KR101478567B1 (ko) 2013-03-26 2013-05-14 가속 이익 추정기

Country Status (3)

Country Link
US (1) US9747185B2 (ko)
JP (1) JP5840716B2 (ko)
KR (1) KR101478567B1 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9740363B2 (en) * 2013-10-02 2017-08-22 Velocity Technology Solutions, Inc. Methods and systems for managing community information
KR102269271B1 (ko) * 2014-09-12 2021-06-28 삼성전자주식회사 오픈 컴퓨팅 언어 기반의 애플리케이션 실행 방법 및 장치
CN106528188B (zh) * 2015-09-09 2019-08-30 腾讯科技(深圳)有限公司 一种应用加速方法及装置
US9870307B2 (en) * 2016-02-01 2018-01-16 Linkedin Corporation Regression testing of software services
US9886366B2 (en) 2016-03-25 2018-02-06 Microsoft Technology Licensing, Llc Replay-suitable trace recording by service container
US11099894B2 (en) 2016-09-28 2021-08-24 Amazon Technologies, Inc. Intermediate host integrated circuit between virtual machine instance and customer programmable logic
US10338135B2 (en) 2016-09-28 2019-07-02 Amazon Technologies, Inc. Extracting debug information from FPGAs in multi-tenant environments
US10795742B1 (en) * 2016-09-28 2020-10-06 Amazon Technologies, Inc. Isolating unresponsive customer logic from a bus
US10223317B2 (en) 2016-09-28 2019-03-05 Amazon Technologies, Inc. Configurable logic platform
US10282330B2 (en) * 2016-09-29 2019-05-07 Amazon Technologies, Inc. Configurable logic platform with multiple reconfigurable regions
US10162921B2 (en) 2016-09-29 2018-12-25 Amazon Technologies, Inc. Logic repository service
US10250572B2 (en) 2016-09-29 2019-04-02 Amazon Technologies, Inc. Logic repository service using encrypted configuration data
US10642492B2 (en) 2016-09-30 2020-05-05 Amazon Technologies, Inc. Controlling access to previously-stored logic in a reconfigurable logic device
US10423438B2 (en) 2016-09-30 2019-09-24 Amazon Technologies, Inc. Virtual machines controlling separate subsets of programmable hardware
US11115293B2 (en) 2016-11-17 2021-09-07 Amazon Technologies, Inc. Networked programmable logic service provider
JP6312880B1 (ja) * 2017-02-07 2018-04-18 雅人 溝垣 分析装置、分析方法及び分析プログラム
US10459751B2 (en) * 2017-06-30 2019-10-29 ATI Technologies ULC. Varying firmware for virtualized device
JP6992343B2 (ja) 2017-09-13 2022-01-13 富士通株式会社 情報処理装置、情報処理方法、および情報処理プログラム
JP7504095B2 (ja) * 2018-11-21 2024-06-21 ズークス インコーポレイテッド 調整されたコンポーネントインターフェース制御フレームワーク
US11327798B1 (en) * 2019-05-08 2022-05-10 Meta Platforms, Inc. Accelerating an application code portion based on a received configuration
DE112020001632T5 (de) * 2019-05-10 2022-01-13 Hitachi Astemo, Ltd. Hypervisor und steuervorrichtung
US11734056B1 (en) * 2022-07-29 2023-08-22 Intuit Inc. Declarative code player execution of a processing widget

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04216174A (ja) * 1990-02-16 1992-08-06 Internatl Business Mach Corp <Ibm> ハードウェア・アクセラレータを用いた論理シミユレーション方法および装置
KR20060088717A (ko) * 2005-02-02 2006-08-07 (주)에네스산전 인버터 사용 효과의 측정방법
JP2008165746A (ja) 2006-12-06 2008-07-17 Toshiba Corp アクセラレータ、情報処理装置及び情報処理方法
JP4936517B2 (ja) 2006-06-06 2012-05-23 学校法人早稲田大学 ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1306751A4 (en) 2000-06-06 2009-05-06 Tadahiro Ohmi SYSTEM AND METHOD FOR MANAGING VARIABLE FUNCTION INFORMATION PROCESSING CIRCUITS
US8244718B2 (en) * 2006-08-25 2012-08-14 Teradata Us, Inc. Methods and systems for hardware acceleration of database operations and queries
US8957903B2 (en) 2010-12-20 2015-02-17 International Business Machines Corporation Run-time allocation of functions to a hardware accelerator
US8572623B2 (en) 2011-01-11 2013-10-29 International Business Machines Corporation Determining an optimal computing environment for running an image based on performance of similar images
JP5653865B2 (ja) 2011-08-23 2015-01-14 日本電信電話株式会社 データ処理システム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04216174A (ja) * 1990-02-16 1992-08-06 Internatl Business Mach Corp <Ibm> ハードウェア・アクセラレータを用いた論理シミユレーション方法および装置
KR20060088717A (ko) * 2005-02-02 2006-08-07 (주)에네스산전 인버터 사용 효과의 측정방법
JP4936517B2 (ja) 2006-06-06 2012-05-23 学校法人早稲田大学 ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
JP2008165746A (ja) 2006-12-06 2008-07-17 Toshiba Corp アクセラレータ、情報処理装置及び情報処理方法

Also Published As

Publication number Publication date
JP2014191828A (ja) 2014-10-06
JP5840716B2 (ja) 2016-01-06
US9747185B2 (en) 2017-08-29
KR20140117241A (ko) 2014-10-07
US20140297405A1 (en) 2014-10-02

Similar Documents

Publication Publication Date Title
KR101478567B1 (ko) 가속 이익 추정기
US9569179B1 (en) Modifying models based on profiling information
US7900188B2 (en) Specifying implementations of code for code generation from a model
US20190156387A1 (en) Datacenter-based hardware accelerator integration
US20200026577A1 (en) Allocation of Shared Computing Resources Using Source Code Feature Extraction and Clustering-Based Training of Machine Learning Models
US9396095B2 (en) Software verification
JP2018005890A (ja) 未知のプログラムバイナリのための入力発見
Jahr et al. Finding near‐perfect parameters for hardware and code optimizations with automatic multi‐objective design space explorations
US9563473B2 (en) Concurrent workload deployment to synchronize activity in a design palette
Stier et al. Towards Modeling and Analysis of Power Consumption of Self-Adaptive Software Systems in Palladio.
US10248554B2 (en) Embedding profile tests into profile driven feedback generated binaries
CN114174983B (zh) 用于高级构造的优化的自动验证的方法和系统
Chen et al. Architecture-based integrated management of diverse cloud resources
Witzke et al. Proactive Resource Management to Optimize Distributed Workflow Executions
Brede et al. Xcs on embedded systems: an analysis of execution profiles and accelerated classifier deletion
Nambiar Benchmarking big data systems: introducing TPC express benchmark HS
Yu et al. Optimizing Dynamic-Shape Neural Networks on Accelerators via On-the-Fly Micro-Kernel Polymerization
WO2015039009A1 (en) A system to automate compliance with licenses of third-party content
US20240281686A1 (en) Input-based modification of a quantum circuit
Alsayyah et al. Energy Efficient Software Development Techniques for Cloud based Applications
US11636245B2 (en) Methods and systems for leveraging computer-aided design variability in synthesis tuning
US20240303056A1 (en) Method and system for compiling applications
Sierra et al. Optimizing the Analysis and Evaluation of Logic Simulation Workloads in HPC Systems
Schwarzer et al. Automatic estimation of performance requirements for software tasks of mobile devices
Owenson Towards the use of mini-applications in performance prediction and optimisation of production codes

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
FPAY Annual fee payment

Payment date: 20170929

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20181129

Year of fee payment: 5