KR20140113513A - QoS 기반 바이너리 변환 및 애플리케이션 스트리밍 - Google Patents

QoS 기반 바이너리 변환 및 애플리케이션 스트리밍 Download PDF

Info

Publication number
KR20140113513A
KR20140113513A KR1020140030194A KR20140030194A KR20140113513A KR 20140113513 A KR20140113513 A KR 20140113513A KR 1020140030194 A KR1020140030194 A KR 1020140030194A KR 20140030194 A KR20140030194 A KR 20140030194A KR 20140113513 A KR20140113513 A KR 20140113513A
Authority
KR
South Korea
Prior art keywords
server
client
processor
binary
client device
Prior art date
Application number
KR1020140030194A
Other languages
English (en)
Other versions
KR101625276B1 (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 KR20140113513A publication Critical patent/KR20140113513A/ko
Application granted granted Critical
Publication of KR101625276B1 publication Critical patent/KR101625276B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols

Abstract

일 실시예에서, 애플리케이션들에 대해 서비스 품질(QoS) 기준 기반의 서버측 바이너리 변환 및 실행은 가상화 또는 네이티브 실행 환경 중 어느 하나에서 분산 변환 및 실행을 이용하여 복수의 서버 상에서 수행된다. 변환된 애플리케이션들이 실행되어 출력 디스플레이 데이터를 생성하고, 출력 디스플레이 데이터는 비디오 스트리밍에 적합한 미디어 포맷으로 인코딩되고, 비디오 스트림은 네트워크를 통해 클라이언트 디바이스에 전달된다. 일 실시예에서, 하나 이상의 그래픽 프로세서는 애플리케이션 출력의 렌더링을 가속함으로써 서버들의 중앙 프로세서들을 보조하고, 미디어 인코더는 애플리케이션 출력을 미디어 포맷으로 인코딩한다.

Description

QoS 기반 바이너리 변환 및 애플리케이션 스트리밍{QOS BASED BINARY TRANSLATION AND APPLICATION STREAMING}
실시예들은 일반적으로 클라우드 기반 애플리케이션 서비스에 관한 것이고, 더 구체적으로는 서비스 품질(Quality of Service) 기준을 이용하여 바이너리 변환 및 애플리케이션 스트리밍을 제공하는 것에 관한 것이다.
프로세서들은 일반적으로 특정 명령어 세트 아키텍처를 구현하도록 설계되며, 일반적으로 다른 명령어 세트 아키텍처를 위해 컴파일링된 애플리케이션들은 네이티브로(natively) 실행하지 않는다. 컴퓨팅 기술 및 과학에서, 하나의 명령어 세트를 위해 컴파일링된 바이너리 파일들을 다른 명령어 세트 상에서 네이티브로 실행가능한 바이너리로 변환하는 것은 다양한 성공도로 시도되어 왔다. 한 경우에서는, 바이너리 변환기가 런타임에서 바이너리를 하나의 명령어 세트 아키텍처로부터 다른 명령어 세트 아키텍처로 변환한다. 한 경우에서, 하나의 명령어 세트 아키텍처를 갖는 프로세서는 프로세서가 다른 명령어 세트 아키텍처를 갖는 바이너리들을 실행하는 것을 허용하는 에뮬레이션 소프트웨어를 실행한다. 어느 경우에서든, 바이너리 변환은 애플리케이션 실행 동안 성능 패널티를 부과한다.
추가로, 컴퓨팅 기술 및 과학에서는 논-인터랙티브 미디어 컨텐츠의 스트리밍이 알려져 있으며, 스트리밍 비디오가 다양한 컴퓨팅 디바이스들에 전달될 수 있다는 것이 알려져 있다. 분산 프로세싱 및 저장을 이용하면, 컨텐츠는 클라우드 기반 네트워크에 저장될 수 있고, 요구 시에(on demand) 네트워크에 접속된 복수의 디바이스에 스트리밍될 수 있다. 그러나, 애플리케이션의 실시간 스트리밍과 같은 인터랙티브 컨텐츠의 스트리밍은 왕복 네트워크 대기시간(round trip network latencies)으로 인해 문제가 많다.
이하의 설명은 다양한 실시예들의 구현의 예로서 주어지는 실례들을 포함하는 도면들의 논의를 포함한다. 도면은 제한이 아닌 예시로서 이해되어야 한다. 여기에서 이용될 때, 하나 이상의 "실시예"에 대한 언급은 적어도 하나의 구현에 포함된 특정한 특징, 구조 또는 특성을 설명하는 것으로서 이해되어야 한다. 따라서, 여기에서 나타나는 "일 실시예에서" 또는 "다른 실시예에서"와 같은 문구들은 각각 다양한 실시예들 및 구현을 기술하며, 반드시 모두 동일한 실시예를 지칭하는 것은 아니다. 그러나, 그들은 또한 반드시 상호 배타적이지도 않다.
도 1은 데이터센터에 하우징된 서버들을 이용하여 바이너리 변환된 애플리케이션들의 클라우드 기반 서비스 전달을 제공하기 위한 시스템의 실시예의 블록도이다.
도 2는 X86 기반 서버들을 이용하는 ARM ISA 애플리케이션들을 위한 클라우드 기반 전달 시스템의 실시예의 시퀀스 도이다.
도 3은 실시예에 따른 소스 명령어 세트로부터 타겟 명령어 세트로의 바이너리 변환을 도시하는 블록도이다.
도 4는 실시예에 따른 복수의 코어, 통합된 그래픽 및 메모리 제어기, 및 변환 특정 로직을 구비하는 프로세서의 블록도이다.
도 5는 X86 CPU 기반 서버 상에서의 QoS 기반 바이너리 변환 및 실행 스트리밍의 방법의 실시예의 개요이다.
도 6은 ARM ISA 바이너리 변환을 위해 우선순위 레벨 기반 가속을 이용하는 서버측 프로세스의 실시예의 흐름도이다.
도 7은 실시예에 따라 그래픽 프로세서 가속을 이용하는 프로세스의 흐름도이다.
도 8-11은 예시적인 컴퓨터 아키텍처들의 블록도이다.
이하에 설명되는 실시예들의 일부 또는 전부를 도시할 수 있는 도면들의 설명을 포함하는 것은 물론, 여기에 제공되는 발명의 개념의 다른 잠재적인 실시예들 또는 구현들을 논의하는, 소정의 세부사항들 및 구현들의 설명이 이어진다. 실시예들의 개요가 이하에 제공되며, 도면들을 참조하는 보다 더 상세한 설명이 이어진다.
논-네이티브 명령어 세트 아키텍처로 컴파일링된 애플리케이션 바이너리들의 실시간 애플리케이션 스트리밍과 실시간 애플리케이션 스트리밍의 조합은 네트워크 대기시간 및 실행 오버헤드로 인해 구현하기가 어렵다. 여기에 설명되는 바와 같이, 애플리케이션들에 대한 서비스 품질(QoS) 기준 기반의 서버측 바이너리 변환 실행은 가상화 또는 네이티브 실행 환경 중 어느 하나에서의 분산 변환 및 실행을 이용하여 복수의 서버 상에서 수행된다. 변환된 애플리케이션들이 실행되어 출력 디스플레이 데이터를 생성하고, 출력 디스플레이 데이터는 비디오 스트리밍에 적합한 미디어 포맷으로 인코딩되고, 비디오 스트림은 네트워크를 통해 클라이언트 디바이스에 전달된다.
일 실시예에서, 하나 이상의 그래픽 프로세서는 애플리케이션 출력의 렌더링을 가속함으로써 서버들의 중앙 프로세서들을 보조한다. 실시예는 어느 애플리케이션 또는 애플리케이션 유형이 가속된 그래픽 렌더링을 이용하는지를 판정하기 위해 QoS 기준을 이용한다. 일 실시예에서, 그래픽 프로세서의 고정 함수 미디어 인코더(fixed function media encoder)와 같은 미디어 인코더는 애플리케이션 출력 프레임들의 인코딩을 가속한다. 일 실시예에서, 하나 이상의 서버의 하나 이상의 중앙 프로세서는 바이너리 변환을 위해 분산 계산(distributed computation)을 수행하고, 서버 상의 하나 이상의 그래픽 프로세서는 계산 자원이 제한된 때에 보조 프로세싱 기능을 제공한다.
도 1은 데이터센터에 하우징된 서버들을 이용하여 바이너리 변환된 애플리케이션들의 클라우드 기반 서비스 전달을 제공하기 위한 시스템의 실시예의 블록도이다. 도 1에서는, X86 기반 서버들을 이용하는 ARM ISA 애플리케이션의 전달이 도시되어 있지만, 실시예들은 그와 같이 제한되지 않는데, 왜냐하면 분산 컴퓨팅 환경에서 애플리케이션 서비스들을 제공하는 임의의 바이너리 변환 또는 에뮬레이션 환경에 대해 다양한 실시예들이 이용될 수 있기 때문이다. 일 실시예에서, 데이터센터(100)는 스마트폰, 태블릿, 랩탑, 개인용 컴퓨터 및 지능형 디바이스와 같은 클라이언트 디바이스 엔드포인트들(175)에 대한 ARM ISA 애플리케이션들의 분산(예를 들어, 클라우드 기반) 전달을 제공한다. 클라이언트 엔드포인트 애플리케이션들은 적어도 부분적으로는 분산 컴퓨팅 환경에서 실행되고, 애플리케이션 출력은 클라이언트 엔드포인트에 스트리밍된다. 애플리케이션 스트리밍이 인지되는 대기시간을 최소화하고 클라이언트 디바이스들에 대한 합의된 서비스 레벨을 충족시키는 것을 허용하기 위해, QoS 기준을 이용하는 것에 의해 사용자 경험의 품질이 유지된다. 바이너리 변환 및 실행을 수행하고, 제한된 컴퓨팅 자원들을 갖는 클라이언트들에 애플리케이션 출력을 전달하기 위해, 광범위한 분산 컴퓨팅 자원들이 병렬로 작업할 수 있다.
도 1에 도시된 바와 같이, 실시예는 데이터센터(100) 내에 복수의 X86 중앙 처리 유닛(CPU) 기반의 서버 플랫폼(102)을 하우징한다. ARM ISA 애플리케이션 바이너리 앱 1-a는 가상 머신(VM) 환경 내에서 X86 애플리케이션 바이너리 앱 1-b로 변환된다. ARM ISA 애플리케이션 바이너리들을 X86 애플리케이션 바이너리들로 변환하기 위해, 각각의 서버 상에서 복수의 VM(예를 들어, VM1(104) 내지 VMn(105))이 운영된다. 실시예는 X86 서버를 이용하여, 변환된 애플리케이션 바이너리들을 실행하고, 애플리케이션 출력의 각각의 프레임에 대하여, 렌더러(108)가 출력 프레임을 생성한다. 실시예는 네트워크 인터페이스(112)를 경유하여 인터넷(150)과 같은 상호접속된 네트워크를 통해 인코딩된 출력 프레임을 전송하기 전에, 출력 프레임을 인코딩하기 위해 미디어 인코더를 이용한다. ARM ISA 기반 클라이언트 디바이스와 같은 클라이언트 디바이스들(175), 또는 X86 기반 클라이언트 디바이스(179)는 분산 네트워크의 처리 능력을 이용하여 애플리케이션을 실행하기 위해 이러한 서비스들을 이용할 수 있다. QoS 기준을 이용하는 논-네이티브 바이너리들의 신속한 변환 또는 에뮬레이션은 로컬 실행에 일치하는 대기시간을 갖고서 원격 애플리케이션 스트리밍을 클라이언트 디바이스들에 전달하는 것을 허용한다.
대기시간을 최소화하기 위해, 애플리케이션 스트리밍 시스템은 우선순위 기반 변환을 포함하는 다양한 QoS 기준을 이용하는데, 그것은 변환 자원들을 스케줄링하고, 다양한 애플리케이션을 변환하고 실행하는 데에 이용되는 복수의 VM에게 우선순위화된 방식으로 실행 시간을 제공하기 위해 이용된다. 우선순위 기반 변환은 왕복 대기시간의 최소화를 가능하게 하며, 이는 클라이언트 디바이스들에서의 사용자 경험을 유지하면서도 원격 애플리케이션 실행 및 스트리밍을 가능하게 한다. 우선순위 기반 변환의 일부로서, 변환기 코드에 대해 별개의 QoS 하드웨어 속성들이 이용되며, 따라서 서버 플랫폼(102)의 다양한 프로세서 요소들은 실행 동안 바이너리 변환 명령어들을 인식하고 우선순위화하여, 예를 들면 변환 또는 에뮬레이션이 더 높은 액세스 우선순위에서 실행되는 것을 허용한다. 높은 액세스 우선순위의 명령어들은 시스템 자원들에 대해 더 많은 액세스를 갖는다. 예를 들어, 변환 코드는 프로세서 캐시 내에서 유리해지며(favored), 변환을 위한 명령어들 및 메모리 큐들은 서버 상에서 실행 중인 다른 소프트웨어에 비해 높은 캐시 우선순위를 갖는다.
추가의 QoS 고려사항은 에뮬레이트되는 클라이언트 디바이스의 디스플레이 해상도이다. ARM 애플리케이션들(예를 들어, 앱 1-a, 앱 2-a)을 에뮬레이션하고 렌더링하는 서버로부터 고려될 필요가 있는 클라이언트 엔드포인트들의 해상도는 다른 핵심적인 QoS 기준이다. 각각의 VM에 의해 렌더링되는 프레임 버퍼 디스플레이 크기는 타겟으로 되는 클라이언트 엔드포인트 해상도에 기초하여 구성가능하다. QoS 프로세스의 일부로서, 왕복 이동 시간(round-trip transit times)을 결정하기 위해, 데이터센터(100)와 클라이언트 디바이스들(175) 간의 다양한 네트워크 대기시간들이 질의된다. 이용가능한 실행 용량 및 네트워크 대기시간에 기초하여, 상이한 상황들 하에서 상이한 출력 해상도들이 클라이언트 디바이스에 전달될 수 있고, 상이한 프레임 버퍼 크기들을 갖는 상이한 VM들이 이용될 수 있다. 일 실시예에서, 각각의 VM은 프레임 버퍼 크기들의 세트로 구성가능하고, 그 VM은 그로부터 컨텐츠를 전달할 수 있다.
추가의 QoS 고려사항은 클라이언트 디바이스의 지리적 위치이다. 클라이언트 엔드포인트와 서버 간의 거리는, 클라이언트 디바이스 엔드포인트에의 한결같은 전달(seamless delivery)을 가능하게 하기 위해 실행 및 인코딩 프로세스 동안 서버가 제공하는 성능의 레벨에 영향을 준다. 일 실시예는 왕복 대기시간을 최소화하기 위해, 복수의 데이터센터를 이용하여 복수의 지리적 영역을 서빙한다.
추가의 QoS 고려사항은 서버에 의해 에뮬레이트되는 애플리케이션의 유형이다. 서버(102)는 복잡한 그래픽을 갖는 게임 애플리케이션을 가속하기 위해 그래픽 프로세싱 자원을 이용한다. 그래픽 프로세서는 각각의 프레임의 렌더링을 가속하여, 프레임이 높은 레벨의 사용자 경험을 유지하고 스트리밍 프레임 레이트에 대한 서비스 레벨 합의를 충족시키는 데에 충분한 레이트에서 인코딩되어 클라이언트 디바이스에 전달될 수 있다. 낮은 그래픽 강도를 갖는 사무용 애플리케이션 또는 게임과 같은 다른 애플리케이션들은 분산 프로세싱 환경의 계산 자원들을 이용하여 렌더링된다. 추가로, CAD(computer aided design) 애플리케이션과 같은 애플리케이션들은 또한 기하학적으로 복잡한 디자인을 렌더링할 때에 그래픽 프로세서 가속을 이용한다.
추가의 QoS 고려사항은 클라이언트 디바이스의 미디어 디코딩 능력의 세트이다. 다양한 클라이언트 디바이스들(175)(예를 들어, ARM ISA 클라이언트 디바이스(177) 및 X86 ISA 클라이언트 디바이스(179)) 중 하나가 인코딩된 스트림을 디코딩하는 능력은, 서버(102) 상에서 에뮬레이트된 ARM 애플리케이션 출력을 인코딩하기 위해 이용되는 서버측 알고리즘을 결정한다. 예를 들어, 클라이언트 디바이스(175)가 소정의 미디어 유형들(예를 들어, H.264)에 대하여 가속된 미디어 디코딩을 위한 미디어 디코더 하드웨어를 이용할 수 있는 경우, 서버(102)는 클라이언트 디바이스가 허용할 수 있는 미디어 유형을 이용하여 애플리케이션 출력을 인코딩한다. 클라이언트 디바이스(175)가 가속된 미디어 디코딩을 수행할 수 없는 경우, 서버는 클라이언트 디바이스가 클라이언트 디바이스(175) 상에서 애플리케이션 프로세서를 이용하여 디코딩할 수 있는 미디어 포맷을 이용하여 애플리케이션 출력을 인코딩한다.
도 2는 X86 기반 서버들을 이용하는 ARM ISA 애플리케이션들을 위한 클라우드 기반 전달 시스템의 실시예의 시퀀스 도이다. 일 실시예에서, 도 1의 클라이언트 디바이스들(175)과 같은 클라이언트 디바이스(202)는 애플리케이션을 실행하기 위해 클라우드 기반 애플리케이션 서비스에 요청을 송신한다(212). 클라이언트 디바이스가 애플리케이션을 서버에 제공할 수 있거나, 애플리케이션이 애플리케이션 서비스의 분산 실행 환경에 연결된 분산 저장 환경에 저장될 수 있다. 요청은 서버 스케줄러(204)에 도달하고, 서버 스케줄러(204)가 클라이언트 디바이스(202)에 연관된 QoS 기준을 검토한 후, 요청을 처리하기 위해 서비스 레벨 합의(SLA: service level agreement) 데드라인이 결정된다. 서버 스케줄러(204)는 이용가능한 실행 자원들을 갖는 서버(206)를 선택하고, 그 서버(206)에 요청을 디스패치한다(214). 도 2의 서버(206)는 도 1의 X86 CPU 기반 서버 플랫폼(102)의 실시예이다. 일 실시예에서, 서버들은 네이티브 명령어 세트 실행 시간이 아니라 에뮬레이트된 실행 시간에 관련하여, 이용가능한 실행 시간을 서버 스케줄러에 보고하여, 서버 스케줄러(204)가 ARM ISA 애플리케이션의 관점으로부터 작업들을 스케줄링할 수 있게 해준다.
서버(206)가 서버 스케줄러로부터 요청(214)을 수신하고 나면, 서버는 서버 스케줄러(204)에 확인응답(226)을 송신하여, 요청이 받아들여졌으며 SLA 타임프레임 내에서 실행될 것임을 나타낸다. 서버(206)가 SLA 데드라인 이전에 요청을 서비스할 수 없는 경우, 서버 스케줄러는 요청을 재할당할 수 있거나, 서버에 대하여 추가의 계산 자원들을 프로비저닝할 수 있다. 서버(206)는 도 1의 복수의 VM(예를 들어, VM1(104) 내지 VMn(106)) 중 하나의 실시예인 가상 머신(208)과 같은 가상 머신 환경을 이용하여 다양한 애플리케이션들 및 클라이언트 디바이스들(예를 들어, 클라이언트 디바이스(202))에 대한 바이너리 변환을 수행한다. 다양한 VM들은 복수의 클라이언트 디바이스의 특성에 기초하여 구성될 수 있으며, 실행 데드라인들을 충족시키기 위해 VM들 간에 실행 자원들이 분산된다. 서버(206)의 실시예는 이용가능한 가상 머신들의 목록을 검토하고, 애플리케이션 요청을 가상 머신(208)에 디스패치한다(216).
서버(206)에의 요청(214)이 가상 머신(208)에 디스패치되고 나면(216), 애플리케이션에 대해 변환 동작(218)이 수행되고, 변환된 애플리케이션(228)이 서버 상의 메모리 내에 생성된다. 일 실시예에서, 변환된 애플리케이션은 서버(206)가 이용할 수 있는 복수의 프로세서를 이용하여 서버(206) 상에서 네이티브로 실행되며, 그러한 복수의 프로세서는 서버(206) 내에 하우징되어 있거나 데이터센터(100) 내의 다른 서버들 상에서 이용가능하다. 일 실시예에서, 서버 상의 하나 이상의 프로세서는 명령어 세트 에뮬레이션 소프트웨어를 실행하는데, 이것은 애플리케이션 바이너리들에 ISA 에뮬레이션 환경을 제공한다. 일 실시예에서, 바이너리 변환 및 명령어 세트 에뮬레이션 둘 다가 이용가능하며, 실시예는 어느 한 방법을 행할 수 있는 가상 머신을 배치할 수 있다. 동적 바이너리 변환을 이용하여 양호한 성능을 발휘하는 것으로 알려진 태스크 또는 애플리케이션은 바이너리 변환이 가능한 가상 머신에 할당된다. 에뮬레이션 환경을 이용하여 양호한 성능을 발휘하는 것으로 알려진 태스크 또는 애플리케이션은 서버에게 네이티브가 아닌 바이너리들에 대하여 명령어 세트 에뮬레이션을 이용하는 가상 머신에 할당된다. 일 실시예에서, 허용가능한 X86 ISA 호환가능(work-alike) 프로그램들에 대한 대체 목록은 요청된 ARM ISA 애플리케이션과 동일한 기능을 제공한다. 예를 들어, 서버 또는 가상 머신의 네이티브 명령어 세트에서 이용가능한 바이너리들을 갖는 유틸리티들 또는 라이브러리들은 투명하게(transparently) 대체된다.
디스플레이할 애플리케이션의 각각의 출력 프레임에 대하여, 출력 프레임은 네이티브로 또는 가상 머신 내에서, 서버(206) 상에서 렌더링 및 인코딩되고, 출력 프레임은 클라이언트 디바이스(202)의 디코딩 능력에 기초하여 인코딩된다. 예를 들어, 제1 출력 프레임(236)은 클라이언트 디바이스에 전송되는데, 이것은 디코딩되어 클라이언트 디바이스의 디스플레이 상에 디스플레이된다. 다음으로, 서버(206)는 제2 출력 프레임(246)을 전송하고, 그것은 클라이언트 디바이스(202)가 자신의 디스플레이를 갱신할 때 제1 출력 프레임(236)과 차례로 디스플레이된다. 서버(206)는 QoS 기준을 이용하여 원활한 애플리케이션 경험을 제공하기에 충분한 레이트로 클라이언트(202)에 출력 프레임들을 제공하며, 이것은 컴퓨팅 자원들이 애플리케이션들 및 가상 머신들 간에서 시프트할 수 있게 하고, 각각의 애플리케이션 프레임의 적시의 렌더링, 인코딩 및 전달을 가능하게 한다. 제어 입력(222)은 사용자에 의해 나타내어진 대로 클라이언트 디바이스로부터 서버로 전달되고, 제어 입력(222)은 출력 프레임 N(296)이 클라이언트 디바이스에 전달될 때 제어 입력(222)에 응답하는, 서버 상에서 실행 중인 애플리케이션에 전달된다.
도 3은 실시예에 따른 소스 명령어 세트로부터 타겟 명령어 세트로의 바이너리 변환을 도시하는 블록도이다. 실시예는 소프트웨어, 펌웨어 및 하드웨어의 조합을 이용하여 바이너리 변환을 구현하며, 전환(conversion) 및 변환의 특정 양태들을 가속하기 위해 변환 및 전환 특정 프로세서 명령어들(translation and conversion specific processor instructions)을 이용한다. 논-X86으로부터 X86으로의 변환 및 에뮬레이션이 도시되어 있지만, 실시예들은 그와 같이 한정되지 않는다. 네이티브로 실행되는 명령어들에 대하여, 하이 레벨 언어(302)로 된 프로그램이 x86 컴파일러(304)를 이용하여 컴파일링되어, X86 명령어 세트를 실행할 수 있는 적어도 하나의 프로세서 코어(314)를 갖는 프로세서에 의해 네이티브로 실행될 수 있는 x86 바이너리 코드(306)를 생성한다. 적어도 하나의 x86 명령어 세트 코어(314)를 갖는 프로세서는 적어도 하나의 X86 명령어 세트 코어를 갖는 인텔 프로세서와 실질적으로 동일한 기능을 수행할 수 있는 임의의 프로세서를 나타낸다. 프로세서(314)는 인텔 X86 명령어 세트 코어의 명령어 세트, 또는 인텔 프로세서 상에서 실행되는 것을 목표로 하는 애플리케이션 또는 다른 소프트웨어의 개체 코드 버전들(object code versions)의 상당 부분을 호환가능하게 실행하거나 다르게 처리한다.
X86 컴파일러(308)는 추가의 연결 처리(linkage processing)를 이용하거나 이용하지 않고서 적어도 하나의 x86 명령어 세트 코어(314)를 갖는 프로세서 상에서 실행될 수 있는 x86 바이너리 코드(310)(예를 들어, 개체 코드)를 생성하도록 동작가능한 컴파일러를 표현한다. 마찬가지로, 하이 레벨 언어(302)로 된 프로그램이 대안적인 명령어 세트 컴파일러(304)를 이용하여 컴파일링되어, 대안적인 명령어 세트 바이너리 코드(306)를 생성하며, 그 바이너리는 대안적인 명령어 세트(316)를 이용하여 프로세서에 의해 네이티브로 실행가능하다. 예를 들어, 논-X86 코어를 갖는 프로세서는 캘리포니아주 서니베일의 MIPS Technologies의 MIPS 명령어 세트를 실행하거나 캘리포니아주 서니베일의 ARM Holdings의 ARM 명령어 세트를 실행하는 프로세서를 포함한다. 명령어 전환기(instruction converter)(312)는 논-X86 바이너리 코드(306)를 X86 명령어 세트 코어(314)의 프로세서에 의해 네이티브로 실행가능한 코드로 전환한다.
실시예는 명령어 전환기(312)와 함께, 명령어 전환 가속을 위한 하드웨어(313)를 이용한다. 명령어 전환 가속기(313)는 가상화 및 변환 태스크를 위하여 서버 칩셋 및 프로세서 기반 가속을 포함한다. 예를 들어, 32비트 및 64비트 실행 모드를 포함하여, X86 프로세서의 구현에서 ARM ISA 변환을 가속하기 위해, X86 ISA 확장 및 강화가 포함된다. X86 명령어 세트 확장은 ARM v8 명령어 세트의 조건절(conditional)을 포함하여, ARM ISA 특정 조건절들을 다루기 위한 명령어들을 포함한다.
추가의 명령어 세트 확장은 논-네이티브 명령어 세트로부터 변환된 명령어들을 더 쉽게 실행하는 X86 명령어들의 다른 변형들을 가능하게 한다. 예를 들어, 변환될 ARM ISA 명령어가 메모리 참조, 산술 로직 유닛(ALU) 상에서의 정수 연산(integer operation), 또는 부동 소수점 유닛(FPU) 상에서의 부동 소수점 연산을 수행하고 있음을 나타내기 위해, 추가의 X86 명령어들이 이용가능하다. 소프트웨어, 펌웨어 및 하드웨어의 조합을 통해, 명령어 전환기(312) 및 명령어 전환 가속기(313)는 프로세서, 또는 X86 명령어 세트 프로세서 또는 코어(314)를 갖는 다른 전자 디바이스가 논-X86 바이너리 코드(306)를 실행하는 것을 허용한다.
도 4는 실시예에 따른 복수의 코어, 통합된 그래픽 및 메모리 제어기, 및 변환 특정 로직(translation specific logic)을 구비하는 프로세서(400)의 블록도이다. 프로세서(400)는 제1 코어(402A)로부터 N개의 코어(402N)까지의 복수의 코어를 갖는다. 또한, 시스템 에이전트(410), 하나 이상의 버스 제어기 유닛(416)의 세트, 및 시스템 에이전트 유닛(410) 내의 하나 이상의 통합된 그래픽 및 메모리 제어기 유닛(414)의 세트가 제공된다. 추가로, 논-X86 명령어 세트로부터의 바이너리 변환 또는 에뮬레이션을 가속하기 위해, 특수 목적의 변환 특정 로직(408)이 제공된다.
프로세서(400)의 다양한 실시예들은 합의된 서비스 및 품질 레벨 내에서 스트리밍 애플리케이션 전달을 가능하게 하기 위해 QoS 기준을 이용하면서, 실시간 바이너리 변환, 실행, 및 클라이언트 디바이스들에의 스트리밍을 제공하도록 설계된 서버 내에서의 이용에 적합한 범용 프로세서 코어들로서 구성된다. 그래픽 및 메모리 제어기 유닛(들)(414)은 QoS 기준에 의해 결정된 대로, 그래픽의 강도가 높은 동작들(graphically intensive operation)에 대해 렌더링을 가속하는 하나 이상의 그래픽 엔진을 포함한다. 그래픽 엔진은 서버 상의 그래픽 엔진이 충분히 이용되지 않는(underutilized) 경우, 프로세서(400) 상에서 명령어들을 실행하는 애플리케이션 또는 가상 머신에 추가의 실행 자원을 제공하기 위해, GPGPU(general purpose graphics processing unit) 능력을 제공한다. 일 실시예에서, 프로세서(400)는 하이-스루풋(high-throughput)의 MIC(many integrated core) 코프로세서(30개 이상의 코어를 포함함)이거나 그것을 이용하여, 서버 상에서 실행 중인 가상 머신들에 대량의 계산 자원을 제공한다. 프로세서(400)의 하나 이상의 컴포넌트는 예를 들어 BiCMOS, CMOS 또는 NMOS와 같은 다수의 프로세서 기술 중 임의의 것을 이용하여 하나 이상의 기판에 구현될 수 있고/거나 그것의 일부일 수 있다.
메모리 계층구조는 코어들 내의 하나 이상의 레벨의 캐시, 하나 이상의 공유 캐시 유닛(406)의 세트, 및 통합된 그래픽 및 메모리 제어기 유닛들(414)의 세트에 연결된 외부 메모리(도시되지 않음)를 포함한다. 공유 캐시 유닛들(406)의 세트는 하나 이상의 중간 레벨 캐시(예를 들어, 레벨 2(L2) 및 레벨 3(L3) 캐시)를 포함한다. 일 실시예에서는, 링 기반 상호접속 유닛(412)이 통합된 그래픽 및 메모리 제어기 유닛(들)(414)을 포함하여, 변환 로직(408), 공유 캐시 유닛들(406)의 세트 및 시스템 에이전트 유닛(410)을 상호접속한다. 일 실시예에서, 하나 이상의 캐시 유닛(406)과 코어들(402-A-N) 사이에서 일관성이 유지된다.
일부 실시예들에서, 코어들(402A-N) 중 하나 이상은 멀티스레딩을 할 수 있다. 시스템 에이전트(410)는 코어들(402A-N)을 조정(coordinating)하고 동작시키는 컴포넌트들을 포함한다. 시스템 에이전트 유닛(410)은 예를 들어 전력 제어 유닛(PCU) 및 디스플레이 유닛을 포함할 수 있다. PCU는 코어들(402A-N) 및 통합된 그래픽 로직(408)의 전력 상태를 조절하는 데에 필요한 로직 및 컴포넌트들이거나 그것들을 포함할 수 있다. 디스플레이 유닛은 하나 이상의 외부 접속된 디스플레이를 구동하기 위한 것이다.
코어들(402A-N)은 아키텍처 명령어 세트에 관련하여 동종(homogenous) 또는 이종(heterogeneous)일 수 있는데; 즉 코어들(402A-N) 중 둘 이상은 동일 명령어 세트를 실행할 수 있을 수 있는 한편, 다른 것들은 그 명령어 세트의 부분집합만을 실행할 수 있거나 다른 명령어 세트를 실행할 수 있을 수 있다. 일 실시예에서, 하나 이상의 코어(402A-N)는 표준 X86 명령어 세트를 실행하는 한편, 하나 이상의 추가 코어는 확장된 X86 명령어 세트를 실행하며, 이것은 변환 특정 로직(408)을 이용한다.
도 5는 X86 CPU 기반 서버 상에서의 QoS 기반 바이너리 변환 및 실행 스트리밍의 방법의 실시예의 개요이다. 일 실시예에서, 클라우드 기반 애플리케이션 스트리밍 서비스는 블록(502)에 보여진 바와 같이, ARM ISA 애플리케이션을 실행하라는 요청을 네트워크를 통해 수신한다. 블록(504)에서, 서버 스케줄러는 QoS 기준을 검토하고, 그 기준에 기초하여 서버에 애플리케이션을 할당한다. 예를 들어, 서버 스케줄러는 계산 및 그래픽 강도에 기초하여 요청 우선순위를 평가할 수 있고, 충분한 실행 능력을 갖는 서버에 그 요청을 할당할 수 있다. 서버 스케줄러의 일 실시예는 가능하다면 동일 애플리케이션에 대한 연속적인 요청들을 동일 서버에 할당하여, 그 서버가 애플리케이션 캐시 또는 이전에 변환된 애플리케이션들로부터 그 변환된 애플리케이션을 검색할 수 있게 하여, 서버가 동일 애플리케이션 바이너리의 반복된 변환을 피할 수 있게 해 준다. 실시예는 또한 요청된 ARM ISA 애플리케이션과 동일한 기능을 제공하는 허용가능한 X86 ISA 호환가능 프로그램들에 대한 대체 목록을 유지한다. 허용가능한 X86 ISA 호환가능 프로그램이 네이티브 방식으로, 또는 이전에 실행된 변환을 통해 이용가능할 때, 서버는 ARM ISA 프로그램을 X86 호환가능 프로그램으로 투명하게 대체한다.
블록(506)에서, 서버는 서버 상의 가상 머신들의 세트 내에서 실행되는 가상 서버들의 세트를 검토하고, 변환 태스크를 그 태스크의 QoS 기준과 상호관련있는 이용가능한 가상 머신, 예를 들어 적절한 프레임 버퍼 크기를 갖는 VM, 또는 적절한 양의 이용가능한 그래픽 제어기 실행 자원을 가지고 있는 VM에 할당한다. 블록(508)에서, ARM ISA 애플리케이션 바이너리는 할당된 가상 머신 내에서 변환된다. 프로세서들은 변환 소프트웨어 및 가상 머신이 이용할 수 있는, ARM ISA 변환에 특정한 명령어들을 제공한다. 실시예는 다른 코드보다 높은 우선순위에서 변환 명령어들을 실행하여, 변환 명령어들 및 데이터에게, 변환 소프트웨어를 실행하는 데에 이용되는 다양한 프로세서들 상에서 실행되는 다른 태스크들보다 더 높은 캐시 우선순위를 제공할 수 있다.
블록(510)에 보여진 바와 같이, 변환된 애플리케이션은 서버 상에서 실행되어, 애플리케이션을 위한 디스플레이 출력을 생성한다. 클라이언트 디바이스에서 사용자에 의해 제공되는 임의의 입력 데이터 또는 제어 입력은 서버 상의 실행 중인 애플리케이션에 전달되어, 클라이언트 디바이스에서의 사용자가 마치 애플리케이션이 클라이언트 디바이스에서 실행되고 있는 것처럼 그 실행 중인 애플리케이션을 제어할 수 있게 해 준다. 출력의 각 프레임은 서버에 의해 렌더링되고, 블록(512)에서, 출력은 미디어 포맷으로 인코딩되며, 이것은 블록(514)에 보여진 바와 같이 네트워크를 통해 클라이언트 디바이스에 전송된다. 실행, 인코딩 및 전송은 클라이언트 디바이스의 디스플레이 해상도, 서버와 클라이언트 디바이스 간의 네트워크를 통한 왕복 대기시간, 및 원격 실행되는 애플리케이션 유형과 같은 QoS 기준에 의해 지배된다. 일 실시예에서, 서버는 그래픽의 강도가 높은 동작들에 대하여 그래픽 프로세서 가속을 이용한다. 서버 상의 하나 이상의 그래픽 프로세서는 타임 슬라이스화될 수 있고, 이는 서버 상에서 실행되는 각각의 가상 머신에게 실행 우선순위에 기초한 특정 량의 그래픽 프로세서 실행 시간을 허용한다. 일 실시예에서, 서버는 범용 컴퓨팅 능력을 갖는 그래픽 프로세서를 이용하여, 그래픽 프로세서가 서버의 다양한 프로세서들, 및 서버에 연결된 다양한 분산 프로세서들을 돕기 위한 추가의 컴퓨팅 자원을 제공하는 것을 허용한다.
도 6은 ARM ISA 바이너리 변환을 위한 우선순위 레벨 기반 가속을 이용하는 서버측 프로세스의 실시예의 흐름도이다. 블록(602)에 보여진 바와 같이, 실시예는 서버와 클라이언트 디바이스 간의 대기시간, 및 애플리케이션에 대한 SLA(service level agreement) 데드라인에 기초하여 애플리케이션 우선순위를 결정한다. 품질 서비스를 유지하기 위해, 합의된 서비스 레벨이 원격 애플리케이션 실행을 위해 서버에 의해 제공된다. 클라이언트 디바이스는 합의된 기간 내에서 원격 실행 요청에 대한 응답을 기대하고, 데드라인까지 남아있는 시간은 변환의 실행 우선순위에 대해 알려준다. 예를 들어, 스케줄링 지연이 애플리케이션 변환의 윈도우 감소를 야기한 경우, 변환 태스크는 높은 우선순위를 받고, 변환 태스크는 그 변환 태스크에의 추가의 계산 자원의 적용을 통해 가속된다.
블록(602)에 보여진 바와 같이 애플리케이션 우선순위를 결정하는 것과 병렬로, 실시예는 블록(604)에 보여진 바와 같이 잠재적인 가상 머신(VM) 할당의 목록을 생성한다. 잠재적인 할당들은 클라이언트 디바이스 특성 및 애플리케이션 유형을 포함하는 QoS 기준에 기초한다. 잠재적인 할당들의 목록은 클라이언트 디바이스의 디스플레이 해상도와 호환가능한 프레임 버퍼 구성을 갖는 VM들, 또는 애플리케이션이 그래픽의 강도가 높은 경우에는 이용가능한 그래픽 프로세서 실행 자원이 충분한 VM들을 포함한다. 블록(606)에서, 잠재적인 VM들의 목록으로부터의 가상 머신은 이용가능한 실행 자원들에 기초하여 선택되고, 애플리케이션 바이너리는 그 VM에 할당된다. 다음으로, VM은 블록(608)에 보여진 바와 같이 바이너리 변환을 수행한다.
일 실시예에서는, 더 높은 우선순위 레벨을 갖는 가상 머신들에서의 바이너리 변환의 가속을 가능하게 하기 위해, 우선순위 시행 메커니즘(priority enforcement mechanism)이 이용된다. 예를 들어, 변환 프로세스가 데드라인에 가까워지고 있는 경우, 서버는 더 많은 실행 자원들을 변환 VM들에 추가하는 것을 통해 변환 프로세스를 가속할 수 있다. 서버 하드웨어에 통합되는 레지스터 비트, 하드웨어 타이머 및 제어 로직은 VM 실행을 관리하고, 높은 우선순위의 태스크를 수행하는 VM들에 더 많은 실행 자원을 제공하기 위해 이용된다.
도 7은 실시예에 따라 그래픽 프로세서 가속을 이용하는 프로세스의 흐름도이다. QoS 기반 바이너리 변환 및 애플리케이션 스트리밍의 실시예는 변환된 애플리케이션에 대한 QoS 기준을 검토함으로써 블록(702)에서 시작한다. 예를 들어, 디바이스 디스플레이 해상도 및 애플리케이션 유형을 포함하는 QoS 기준은 애플리케이션 내에 존재하는 그래픽 복잡도의 표시자이다. 블록(704)에서, 애플리케이션이 높은 그래픽 부하를 갖는 것으로 판정되는 경우, 서버는 애플리케이션을 실행하고, 블록(706)에 보여진 바와 같이 그래픽 프로세서 가속을 이용하여 프레임 출력을 렌더링한다. 예를 들어, HD 해상도(예를 들어, 1280x720, 1920x1080 등)에서 실행 중인 게임 애플리케이션은 애플리케이션의 출력 프레임들을 렌더링하기 위해 그래픽 프로세서를 이용한다. QoS 기준이 애플리케이션이 범용 프로세서 코어들을 이용하여 SLA 기간 내에서 실행될 수 있음을 나타내는 경우, 블록(708)에 보여진 바와 같이, 애플리케이션의 출력 프레임들을 실행하고 렌더링하기 위해 하나 이상의 CPU 코어가 이용된다. 스프레드시트 또는 다른 사무용 애플리케이션과 같은 유틸리티 애플리케이션은 그래픽 가속 없이 유사하게 실행된다. 그러나, 실시예는 예를 들어 네트워크 대기시간이 가속된 렌더링 없이는 SLA 데드라인에 맞추기가 어렵다는 것을 나타내는 경우에 렌더링을 가속하기 위해 그래픽 프로세서들을 이용할 수 있다.
렌더링 후에, 블록(710)에 보여진 바와 같이, 출력 프레임들은 미디어 포맷으로 인코딩된다. 실시예는 클라이언트 디바이스가 하드웨어 가속 디코딩을 지원하는지를 포함하여, 클라이언트 디바이스 미디어 디코딩 능력들의 세트에 기초하여 이용할 미디어 포맷을 결정한다. 예를 들어, 클라이언트 디바이스가 H.264 포맷으로 인코딩된 미디어의 하드웨어 가속 디코딩을 지원하는 경우, 서버는 출력 프레임을 클라이언트 디바이스에 전송하기 전에, 출력 프레임들을 H.264 포맷으로 인코딩할 수 있다. 일 실시예에서, 서버는 클라이언트 디바이스에의 전송 전에 출력 프레임들을 인코딩하기 위해, 특수화된 미디어 인코더 하드웨어를 이용한다. 일 실시예에서, 그래픽 프로세서는 미디어 인코더 하드웨어를 포함한다. 일 실시예에서, 프로세서는 미디어 인코딩을 가속하는 명령어를 지원한다.
도 8-11은 예시적인 컴퓨터 아키텍처들의 블록도이다. 랩탑, 데스크탑, 핸드핼드형 PC, 스마트폰, 엔지니어링 워크스테이션, 서버, 네트워크 디바이스, 네트워크 허브, 스위치, 내장형 프로세서, DSP(digital signal processor), 그래픽 디바이스, 비디오 게임 디바이스, 셋탑 박스, 마이크로컨트롤러, 셀폰, 휴대용 미디어 플레이어, 핸드핼드형 디바이스, 및 다양한 다른 전자 디바이스들에 대하여 본 기술분야에 알려져 있는 다른 시스템 설계 및 구성도 이용가능하다.
도 8은 실시예에 따른 시스템(800)의 블록도를 도시한 것이다. 시스템(800)은 제어기 허브(820)에 연결된 하나 이상의 프로세서(810, 815)를 포함한다. 일 실시예에서, 제어기 허브(820)는 그래픽 메모리 제어기 허브(GMCH: graphics memory controller hub)(890) 및 입력/출력 허브(IOH: Input/Output Hub)(850)를 포함하고; GMCH(890)는 메모리(840) 및 코프로세서(845)에 연결된 메모리 및 그래픽 제어기들을 포함하고; IOH(850)는 입력/출력(I/O) 디바이스들(860)을 GMCH(890)에 연결한다. 대안적으로, 메모리 및 그래픽 제어기들 중 하나 또는 둘 다가 (여기에 설명된 바와 같이) 프로세서 내에 통합되고, 메모리(840) 및 코프로세서(845)는 프로세서(810), 및 IOH(850)를 갖는 싱글 칩 내의 제어기 허브(820)에 연결된다.
추가의 프로세서들(815)의 선택적인 특성은 도 8에 점선으로 표시되어 있다. 각각의 프로세서(810, 815)는 여기에 설명되는 프로세싱 코어들 중 하나 이상을 포함하며, 이들 각각은 프로세서(400)의 소정 버전이다.
일 실시예에서, 메모리(840)는 DRAM(dynamic random access memory)이다. 일 실시예에서, 참조번호 840은 상 변화 메모리(PCM: phase change memory), 또는 PCM과 DRAM의 조합이다. 적어도 하나의 실시예에서, 제어기 허브(820)는 링 인터페이스와 같은 멀티드롭 버스(multi-drop bus), 프론트 사이드 버스(FSB: front side bus), QuickPath 상호접속(QPI)과 같은 점-대-점 인터페이스, 또는 유사한 접속(895)을 통해 프로세서(들)(810, 815)와 통신한다.
일 실시예에서, 코프로세서(845)는 예를 들어 하이스루풋의 MIC 프로세서, 네트워크 또는 통신 프로세서, 압축 엔진, 그래픽 프로세서, GPGPU, 내장형 프로세서 또는 그와 유사한 것과 같은 특수 목적의 프로세서이다. 일 실시예에서, 제어기 허브(820)는 통합된 그래픽 가속기를 포함할 수 있다. 일 실시예에서, 여기에 설명된 바와 같이, 메모리 변환 또는 에뮬레이션 가속 하드웨어가 존재한다.
아키텍처, 마이크로아키텍처, 열, 전력 소비 특성 등을 포함하는 다양한 장점의 척도와 관련하여, 물리적 자원들(810, 815) 간에 다양한 차이가 존재할 수 있다.
도 9는 실시예에 따른 더 구체적인 예시적인 서버 시스템(900)의 블록도이다. 도 9에 도시된 바와 같이, 멀티프로세서 시스템(900)은 점-대-점 상호접속 시스템이고, 점-대-점 상호접속부(950)를 통해 연결된 제1 프로세서(970) 및 제2 프로세서(980)를 포함한다. 프로세서들(970 및 980) 각각은 프로세서(400)의 변형이다. 일 실시예에서, 프로세서들(970 및 980)은 각각 프로세서들(810 및 815)인 한편, 코프로세서(938)는 코프로세서(845)이다. 다른 실시예에서, 프로세서들(970 및 980)은 각각 프로세서(810) 및 코프로세서(845)이다.
각각 통합된 메모리 제어기(IMC: integrated memory controller) 유닛들(972 및 982)을 포함하는 프로세서들(970 및 980)이 도시되어 있다. 프로세서(970)는 또한 버스 제어기 유닛들의 일부로서 점-대-점(P-P) 인터페이스들(976 및 978)을 포함하고; 마찬가지로, 제2 프로세서(980)는 P-P 인터페이스들(986 및 988)을 포함한다. 프로세서들(970, 980)은 점-대-점(P-P) 인터페이스 회로들(978, 988)을 이용하여 P-P 인터페이스(950)를 통해 정보를 교환할 수 있다. 도 9에 도시된 바와 같이, IMC들(972 및 982)은 프로세서들을 각자의 메모리들, 즉 각각의 프로세서들에 로컬로 접속된 메인 메모리의 부분일 수 있는 메모리(932) 및 메모리(934)에 연결한다.
프로세서들(970, 980)은 각각 점-대-점 인터페이스 회로들(976, 994, 986, 998)을 이용하여 개별 P-P 인터페이스들(952, 954)을 통해 칩셋(990)과 정보를 교환한다. 칩셋(990)은 선택적으로는 고성능 인터페이스(939)를 통해 코프로세서(938)와 정보를 교환한다. 일 실시예에서, 코프로세서(938)는 예를 들어 하이스루풋의 MIC 프로세서, 네트워크 또는 통신 프로세서, 압축 엔진, 그래픽 프로세서, GPGPU, 내장형 프로세서, 바이너리 변환 가속기 또는 그와 유사한 것과 같은 특수 목적의 프로세서이다.
공유 캐시(도시되지 않음)는 어느 한 프로세서 내부에, 또는 P-P 상호접속을 통해 프로세서들과 접속되어 있으면서도 프로세서들 둘 다의 외부에 포함될 수 있어서, 프로세서들 중 하나 또는 둘 다의 로컬 캐시 정보는 프로세서가 저전력 모드에 들어가는 경우에 공유 캐시에 저장될 수 있게 된다. 일 실시예에서, 참조번호 900의 공유 캐시는 설명된 바와 같이 변환 가속 기능 및 가상화 가속 기능에 우선순위를 부여한다.
칩셋(990)은 인터페이스(996)를 통해 제1 버스(916)에 연결된다. 일 실시예에서, 제1 버스(916)는 주변 컴포넌트 상호접속(PCI: Peripheral Component Interconnect) 버스, 또는 PCI 익스프레스 버스 또는 다른 제3세대 I/O 상호접속 버스와 같은 버스이지만, 이들은 제한적인 예가 아니다.
도 9에 도시된 바와 같이, 다양한 I/O 디바이스들(914)은 제1 버스(916)를 제2 버스(920)에 연결하는 버스 브리지(918)와 함께 제1 버스(916)에 연결될 수 있다. 일 실시예에서, 코프로세서, 하이스루풋 MIC 프로세서, GPGPU, 가속기(예를 들어, 그래픽 가속기 또는 디지털 신호 처리(DSP) 유닛), FPGA(field programmable gate array) 또는 임의의 다른 프로세서와 같은 하나 이상의 추가 프로세서(들)(915)가 제1 버스(916)에 연결된다. 일 실시예에서, 제2 버스(920)는 LPC(low pin count) 버스이다. 일 실시예에서, 키보드 및/또는 마우스(922), 통신 디바이스들(927), 및 명령어들/코드 및 데이터(930)를 포함할 수 있는 디스크 드라이브 또는 다른 대용량 디바이스와 같은 저장 유닛(928)을 포함하는 다양한 디바이스들이 제2 버스(920)에 연결될 수 있다. 추가로, 오디오 I/O(924)가 제2 버스(920)에 연결될 수 있다. 다른 아키텍처들도 가능하다는 점에 유의해야 한다. 예를 들어, 도 9의 점-대-점 아키텍처 대신에, 시스템은 멀티드롭 버스, 링 버스 또는 다른 그러한 아키텍처를 구현할 수 있다.
도 10은 실시예에 따른 제2의 더 구체적인 예시적인 시스템(1000)의 블록도이다. 도 9 및 도 10의 유사 구성요소들은 유사 참조번호들을 가지며, 도 9의 일부 양태들은 도 10의 다른 양태들을 모호하게 하지 않기 위해 도 10에서는 생략되어 있다.
도 10은 일 실시예에서 프로세서들(970, 980)이 각각 통합된 메모리 및 I/O 제어 로직("CL")(972 및 982)을 포함하는 것을 도시한다. 따라서, CL(972, 982)은 통합된 메모리 제어기 유닛들을 포함하고, I/O 제어 로직을 포함한다. 도 10은 CL(972, 982)에 연결된 메모리들(932, 934)뿐만 아니라, I/O 디바이스들(1014)이 제어 로직(972, 982)에 연결되어 있는 것을 도시하고 있다. 레거시 I/O 디바이스들(1015)은 칩셋(990)에 연결된다.
도 11은 실시예에 따른 SoC(1100)의 블록도이다. 도 4의 유사한 구성요소들은 유사한 참조번호들을 갖는다. 추가로, 점선으로 된 박스들은 더 향상된 SoC들 상의 선택적인 특징들이다. 일 실시예에서, 여기에 설명된 것과 같은 클라이언트 디바이스는 SoC(1100)의 변형을 포함한다. 도 11에서, 상호접속 유닛(들)(1102)은 하나 이상의 코어(202A-N)의 세트 및 공유 캐시 유닛(들)(406)을 포함하는 애플리케이션 프로세서(1110); 시스템 에이전트 유닛(410); 버스 제어기 유닛(들)(416); 통합된 메모리 제어기 유닛(들)(414); 바이너리 변환 가속 로직, 통합된 그래픽 로직, 이미지 프로세서, 오디오 프로세서 및 비디오 프로세서를 포함하는 하나 이상의 코프로세서(1120)의 세트; 정적 랜덤 액세스 메모리(SRAM) 유닛(1130); 직접 메모리 액세스(DMA) 유닛(1132); 및 하나 이상의 외부 디스플레이에 연결하기 위한 디스플레이 유닛(1140)에 연결된다. 일 실시예에서, 코프로세서(들)(1120)는 예를 들어 네트워크 또는 통신 프로세서, 압축 엔진, GPGPU, 하이스루풋 MIC 프로세서, 내장형 프로세서 또는 그와 유사한 것과 같은 특수 목적의 프로세서를 포함한다. 일 실시예에서, 비디오 프로세서, 통합된 그래픽 로직 또는 GPGPU가 하나 이상의 코어(402N) 내에 포함된다.
여기에 개시된 메커니즘들의 실시예들은 하드웨어, 소프트웨어, 펌웨어 또는 그러한 구현 방식들의 조합으로 구현될 수 있다. 실시예들은 적어도 하나의 프로세서, 저장 시스템(휘발성 및 비휘발성 메모리 및/또는 저장 요소를 포함함), 적어도 하나의 입력 디바이스 및 적어도 하나의 출력 디바이스를 포함하는 프로그래밍가능한 시스템 상에서 실행되는 컴퓨터 프로그램들 또는 프로그램 코드로서 구현될 수 있다.
도 9에 도시된 코드(930)와 같은 프로그램 코드는 여기에 설명된 기능들을 수행하고 출력 정보를 생성하기 위해 입력 명령어들에 적용될 수 있다. 출력 정보는 하나 이상의 출력 디바이스에, 알려진 방식으로 적용될 수 있다. 이러한 적용을 위하여, 처리 시스템은 예를 들어, DSP(digital signal processor), 마이크로컨트롤러, ASIC(application specific integrated circuit) 또는 마이크로프로세서와 같은 프로세서를 갖는 임의의 시스템을 포함한다.
프로그램 코드는 처리 시스템과 통신하기 위해, 하이레벨의 절차적(procedural) 또는 개체 지향(object oriented) 프로그래밍 언어로 구현될 수 있다. 프로그램 코드는 필요한 경우 어셈블리 또는 머신 언어로 구현될 수 있다. 실제로, 여기에 설명되는 메커니즘들은 범위에 있어서 임의의 특정한 프로그래밍 언어로 제한되지 않는다. 어느 경우에서든, 언어는 컴파일링되거나 해석된 언어일 수 있다.
적어도 하나의 실시예의 하나 이상의 양태는 프로세서 내의 다양한 로직을 나타내는 머신 판독가능한 매체 상에 저장된 전형적인 명령어들에 의해 구현될 수 있는데, 그것은 머신에 의해 판독된 때에, 그 머신이 여기에 설명된 기법들을 수행하는 로직을 만들게 한다. "IP 코어"로서 알려진 그러한 표현들은 유형의 비-일시적 머신판독가능한 매체(tangible, non-transitory machine-readable medium)에 저장될 수 있고, 실제로 로직 또는 프로세서를 만드는 제조 머신들에 로딩되도록 다양한 고객 또는 제조 설비에 공급될 수 있다.
그러한 머신 판독가능한 저장 매체는 하드 디스크, 플로피 디스크, 광학 디스크, 컴팩트 디스크 판독 전용 메모리(CD-ROM), 재기입가능한 컴팩트 디스크(CD-RW) 및 자기 광학 디스크를 포함하는 임의의 다른 유형의 디스크, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 예를 들어 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), 소거가능하고 프로그래밍가능한 판독 전용 메모리(EPROM), 플래시 메모리, 전기적으로 소거가능하고 프로그래밍가능한 판독 전용 메모리(EEPROM)와 같은 반도체 디바이스, 상 변화 메모리(PCM), 자기 또는 광학 카드, 또는 전자 명령어를 저장하는 데에 적합한 임의의 다른 유형의 매체와 같은 저장 매체를 포함하여, 머신 또는 디바이스에 의해 제조 또는 형성되는 비-일시적인 유형의 물건들의 구성을 포함할 수 있지만, 이에 한정되지는 않는다.
따라서, 실시예들은 여기에 설명된 구조, 회로, 장치, 프로세서 및/또는 시스템 특징을 정의하는 HDL(Hardware Description Language)과 같은 명령어들을 포함하거나 설계 데이터를 포함하는 비-일시적인 유형의 머신 판독가능한 매체를 포함한다. 그러한 실시예들은 또한 프로그램 제품이라고도 지칭될 수 있다.
여기에 설명된 것들 외에, 개시된 실시예들 및 구현들에 대하여 그들의 범위를 벗어나지 않고서 다양한 수정이 가해질 수 있다. 그러므로, 여기에서의 도시 및 예시들은 제한적인 의미가 아니라 예시의 의미로서 해석되어야 한다. 실시예들의 범위는 이하의 청구항을 참조해서만 판단되어야 한다.
100 : 데이터센터
102 : X86 CPU 기반 서버 플랫폼
108 : 렌더러
110 : 인코더
112 : 네트워크 인터페이스
175 : 클라이언트 디바이스
150 : 인터넷
177 : ARM ISA 클라이언트 디바이스
179 : X86 ISA 클라이언트 디바이스

Claims (20)

  1. 중앙 프로세서 및 네트워크 인터페이스를 갖는 서버 - 상기 중앙 프로세서는 제1 명령어 세트를 갖고, 상기 서버는 제2 명령어 세트를 갖는 바이너리를 상기 제1 명령어 세트를 갖는 변환된 실행파일(executable)로 변환(translate)하는 것이며, 상기 변환은 서비스 품질(QoS) 기준을 이용하여 수행되고, 상기 서버는 변환된 바이너리를 실행하여, 렌더링된 출력의 프레임을 생성하고, 상기 렌더링된 출력의 프레임을 상기 네트워크 인터페이스를 통해 전송함 - ; 및
    디스플레이, 클라이언트 프로세서 및 클라이언트 네트워크 인터페이스를 갖는 클라이언트 디바이스 - 상기 클라이언트 디바이스는 상기 서버로부터 상기 클라이언트 네트워크 인터페이스를 경유하여 상기 렌더링된 출력의 프레임을 수신하고, 상기 클라이언트 프로세서를 이용하여 상기 디스플레이 상에 상기 렌더링된 출력의 프레임을 디스플레이하는 것임 -
    를 포함하는 시스템.
  2. 제1항에 있어서, 상기 QoS 기준은 우선순위 기반 가속 및 복수의 클라이언트 파라미터를 포함하고, 상기 복수의 클라이언트 파라미터는 클라이언트 디바이스 해상도, 클라이언트 디바이스 위치, 클라이언트 애플리케이션 유형, 및 클라이언트 디코딩 능력들의 세트를 포함하는 바이너리 변환 시스템.
  3. 제1항에 있어서, 상기 서버가 상기 렌더링된 출력의 프레임을 전송하기 전에, 상기 렌더링된 출력의 프레임은 미디어 포맷으로 인코딩되는 바이너리 변환 시스템.
  4. 제3항에 있어서, 상기 서버는 상기 렌더링된 출력의 프레임을 생성하기 위해 그래픽 프로세서를 더 포함하는 바이너리 변환 시스템.
  5. 제4항에 있어서, 상기 그래픽 프로세서는 상기 렌더링된 출력의 프레임을 상기 미디어 포맷으로 인코딩하는 바이너리 변환 시스템.
  6. 제1항에 있어서, 상기 클라이언트 디바이스의 상기 클라이언트 프로세서는 상기 제1 명령어 세트를 갖는 바이너리 변환 시스템.
  7. 제1항에 있어서, 상기 클라이언트 디바이스의 상기 클라이언트 프로세서는 상기 제2 명령어 세트를 갖는 바이너리 변환 시스템.
  8. 제2항에 있어서, 상기 서버는 가상 머신 내에서 바이너리 변환을 실행하는 바이너리 변환 시스템.
  9. 제8항에 있어서, 상기 가상 머신은 상기 클라이언트 디바이스에 대해 튜닝되는 바이너리 변환 시스템.
  10. 제9항에 있어서, 가상 머신 실행 자원들은 상기 QoS 기준을 통해 튜닝되는 바이너리 변환 시스템.
  11. 제10항에 있어서, 우선순위 기반 가속은 바이너리 변환 우선순위를 설정하기 위해 상기 서버와 상기 클라이언트 디바이스 간의 네트워크 대기시간을 고려하는 바이너리 변환 시스템.
  12. 제11항에 있어서, 상기 제1 명령어 세트는 x86 명령어 세트이고, 상기 제2 명령어 세트는 ARM 명령어 세트인 바이너리 변환 시스템.
  13. 명령어들을 저장하고 있는 비일시적인 머신 판독가능한 저장 매체(non-transitory machine-readable storage medium);
    상기 명령어들을 실행하는 프로세서 - 상기 명령어들은:
    제2 명령어 세트를 갖는 바이너리를 제1 명령어 세트를 갖는 변환된 바이너리로 변환하고 - 상기 변환은 서비스 품질(QoS) 기준에 의해 지배되고, 상기 바이너리를 변환하는 명령어들은 상기 프로세서의 캐시 내에서 우선순위를 가짐 - ,
    상기 변환된 바이너리를 실행하여 출력 프레임을 렌더링하는
    동작들을 수행하는 것임 - ;
    상기 프로세서에 연결되어 상기 출력 프레임을 미디어 포맷으로 인코딩하는 미디어 인코더; 및
    상기 미디어 인코더 및 상기 프로세서에 연결되어, 인코딩된 출력 프레임을 클라이언트 디바이스에 전송하는 네트워크 디바이스
    를 포함하는 서버.
  14. 제13항에 있어서, 상기 바이너리를 변환하는 동작들은 가상 머신 내에서 실행되는 서버.
  15. 제14항에 있어서, 상기 QoS 기준은 우선순위 기반 가속 및 복수의 클라이언트 파라미터를 포함하고, 상기 복수의 클라이언트 파라미터는 클라이언트 디바이스 해상도, 클라이언트 디바이스 위치, 클라이언트 애플리케이션 유형, 및 클라이언트 디코딩 능력들의 세트를 포함하는 서버.
  16. 제15항에 있어서, 상기 QoS 기준에 기초하여 가상 머신의 실행 우선순위를 설정하기 위해 스케줄러를 더 포함하는 서버.
  17. 제16항에 있어서, 상기 프로세서가 상기 출력 프레임을 렌더링하는 것을 보조하기 위해 상기 프로세서에 연결되는 그래픽 가속기를 더 포함하는 서버.
  18. 제17항에 있어서, 상기 그래픽 가속기는 상기 미디어 인코더가 상기 출력 프레임을 미디어 포맷으로 인코딩하는 것을 보조하는 서버.
  19. 프로세서에 의한 실행을 위한 명령어들을 저장하고 있는 비일시적인 컴퓨터 판독가능한 매체(non-transitory computer readable medium)로서,
    상기 명령어들은 실행될 때에 상기 프로세서로 하여금 동작들을 수행하게 하고, 상기 동작들은,
    제2 명령어 세트를 갖는 바이너리를 제1 명령어 세트를 갖는 변환된 바이너리로 변환하는 동작 - 상기 변환은 서비스 품질(QoS) 기준에 의해 지배되고, 상기 변환은 가상 머신 내에서 발생하고, 상기 가상 머신은 상기 QoS 기준을 통해 튜닝되고, 상기 QoS 기준은 우선순위 기반 가속 및 복수의 클라이언트 파라미터를 포함하고, 상기 복수의 클라이언트 파라미터는 클라이언트 디바이스 해상도, 클라이언트 디바이스 위치, 클라이언트 애플리케이션 유형, 및 클라이언트 디코딩 능력들의 세트를 포함함 - ;
    상기 변환된 바이너리를 실행하여 출력 프레임을 렌더링하는 동작 - 상기 QoS 기준에 의해 그래픽 가속이 나타내어지는 경우, 상기 실행은 그래픽 프로세서에 의해 보조됨 - ;
    상기 출력 프레임을 미디어 포맷으로 인코딩하는 동작 - 상기 미디어 포맷은 클라이언트 디코딩 능력들의 세트에 의해 선택됨 - ; 및
    상기 출력 프레임을 네트워크 디바이스를 통해 클라이언트 디바이스에 전송하는 동작
    을 포함하는 컴퓨터 판독가능한 매체.
  20. 제19항에 있어서,
    제1 서버 상의 제1 가상 머신 내에서 제1 바이너리를 변환하는 동작;
    제2 서버 상의 제2 가상 머신 내에서 제2 바이너리를 변환하는 동작; 및
    상기 제1 서버 상에서 제3 바이너리를 실행하는 동작 - 상기 제1 서버는 이전에 상기 제3 바이너리를 변환하였고, 상기 제3 바이너리는 상기 실행 이전에 재변환됨 - 을 더 포함하는 컴퓨터 판독가능한 매체.
KR1020140030194A 2013-03-15 2014-03-14 QoS 기반 바이너리 변환 및 애플리케이션 스트리밍 KR101625276B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/844,086 2013-03-15
US13/844,086 US9525586B2 (en) 2013-03-15 2013-03-15 QoS based binary translation and application streaming

Publications (2)

Publication Number Publication Date
KR20140113513A true KR20140113513A (ko) 2014-09-24
KR101625276B1 KR101625276B1 (ko) 2016-05-27

Family

ID=50554839

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140030194A KR101625276B1 (ko) 2013-03-15 2014-03-14 QoS 기반 바이너리 변환 및 애플리케이션 스트리밍

Country Status (7)

Country Link
US (2) US9525586B2 (ko)
JP (1) JP5873513B2 (ko)
KR (1) KR101625276B1 (ko)
CN (1) CN104050007B (ko)
BR (1) BR102014006116A2 (ko)
DE (1) DE102014003855B4 (ko)
GB (2) GB2550007B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170129794A (ko) * 2015-04-10 2017-11-27 구글 엘엘씨 네이티브 클라이언트로의 이진 변환

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9525586B2 (en) * 2013-03-15 2016-12-20 Intel Corporation QoS based binary translation and application streaming
KR102067276B1 (ko) * 2013-05-30 2020-02-11 삼성전자주식회사 어플리케이션 실행 방법 및 그 장치
US20150220442A1 (en) * 2014-02-04 2015-08-06 Bluedata Software, Inc. Prioritizing shared memory based on quality of service
US10554713B2 (en) * 2015-06-19 2020-02-04 Microsoft Technology Licensing, Llc Low latency application streaming using temporal frame transformation
US10148538B2 (en) * 2016-01-21 2018-12-04 Fujitsu Limited Distributed controllers
US10169082B2 (en) 2016-04-27 2019-01-01 International Business Machines Corporation Accessing data in accordance with an execution deadline
US10073687B2 (en) * 2016-08-25 2018-09-11 American Megatrends, Inc. System and method for cross-building and maximizing performance of non-native applications using host resources
KR102520017B1 (ko) 2016-12-31 2023-04-11 인텔 코포레이션 이종 컴퓨팅을 위한 시스템들, 방법들, 및 장치들
US10409614B2 (en) 2017-04-24 2019-09-10 Intel Corporation Instructions having support for floating point and integer data types in the same register
US10474458B2 (en) * 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
TWI658365B (zh) * 2017-10-30 2019-05-01 緯創資通股份有限公司 連接模組
US11012694B2 (en) * 2018-05-01 2021-05-18 Nvidia Corporation Dynamically shifting video rendering tasks between a server and a client
CN109471630B (zh) * 2018-11-16 2021-11-16 广州虎牙科技有限公司 一种应用处理方法和设备
US10990280B1 (en) * 2018-12-03 2021-04-27 Parallels International Gmbh Smart keyboard
WO2020190798A1 (en) 2019-03-15 2020-09-24 Intel Corporation Multi-tile memory management for detecting cross tile access, providing multi-tile inference scaling, and providing optimal page migration
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
WO2020190808A1 (en) 2019-03-15 2020-09-24 Intel Corporation Sparse optimizations for a matrix accelerator architecture
US11061871B2 (en) * 2019-03-15 2021-07-13 Google Llc Data placement for a distributed database
US11349875B2 (en) * 2019-08-21 2022-05-31 International Business Machines Corporation Dynamic balancing of security rules execution in a database protection system
US11295507B2 (en) * 2020-02-04 2022-04-05 Advanced Micro Devices, Inc. Spatial partitioning in a multi-tenancy graphics processing unit
TWI811560B (zh) * 2020-08-17 2023-08-11 宏碁股份有限公司 資源整合系統及資源整合方法
EP4068104A1 (en) * 2021-03-30 2022-10-05 ABB Schweiz AG Method for controlling an opc ua server, opc ua server, control circuit, computer program, and computer-readable medium

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6091897A (en) 1996-01-29 2000-07-18 Digital Equipment Corporation Fast translation and execution of a computer program on a non-native architecture by use of background translator
WO1998059292A1 (en) 1997-06-25 1998-12-30 Transmeta Corporation Improved microprocessor
US7275246B1 (en) * 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US7661107B1 (en) * 2000-01-18 2010-02-09 Advanced Micro Devices, Inc. Method and apparatus for dynamic allocation of processing resources
US7058074B2 (en) * 2000-11-01 2006-06-06 Texas Instruments Incorporated Unified channel access for supporting quality of service (QoS) in a local area network
US7640153B2 (en) * 2001-06-04 2009-12-29 Hewlett-Packard Development Company, L.P. Networked client-server architecture for transparently transforming and executing applications
US20040172631A1 (en) * 2001-06-20 2004-09-02 Howard James E Concurrent-multitasking processor
US20080318685A9 (en) * 2005-09-12 2008-12-25 Oak Steven R Controlled access layer system and method
KR100451554B1 (ko) * 2002-08-30 2004-10-08 삼성전자주식회사 멀티미디어용 시스템온칩 프로세서
TW590982B (en) * 2002-09-27 2004-06-11 Agnitio Science & Technology I Micro-fluid driving device
JP4052163B2 (ja) * 2003-03-28 2008-02-27 日本電気株式会社 携帯電話機、その表示制御方法及びプログラム
US7590982B1 (en) * 2003-12-17 2009-09-15 Vmware, Inc. System and method for virtualizing processor and interrupt priorities
US20080098446A1 (en) * 2004-08-11 2008-04-24 Vidiator Enterprises Inc, Multicast and Broadcast Streaming Method and System
US20070006178A1 (en) * 2005-05-12 2007-01-04 Microsoft Corporation Function-level just-in-time translation engine with multiple pass optimization
NZ570606A (en) * 2006-02-21 2011-11-25 Purdue Research Foundation Trans-fused chromenoisoquinolines, synthesis and methods for use
US8259706B2 (en) * 2006-02-28 2012-09-04 Genband Us Llc Multistage prioritization of packets within a session over internet protocol (SOIP) network
CN101114039A (zh) * 2006-07-28 2008-01-30 鸿富锦精密工业(深圳)有限公司 镜头模块
US7596781B2 (en) * 2006-10-16 2009-09-29 International Business Machines Corporation Register-based instruction optimization for facilitating efficient emulation of an instruction stream
US7725657B2 (en) * 2007-03-21 2010-05-25 Intel Corporation Dynamic quality of service (QoS) for a shared cache
KR101446939B1 (ko) 2007-03-30 2014-10-06 삼성전자주식회사 원격 제어 장치 및 그 제어 방법
US8327354B1 (en) 2007-05-31 2012-12-04 Hewlett-Packard Development Company, L.P. Virtualization with binary translation
US7712092B2 (en) * 2007-10-01 2010-05-04 The Board Of Trustees Of The Leland Stanford Junior University Binary translation using peephole translation rules
US8560634B2 (en) * 2007-10-17 2013-10-15 Dispersive Networks, Inc. Apparatus, systems and methods utilizing dispersive networking
US8390636B1 (en) * 2007-11-12 2013-03-05 Google Inc. Graphics display coordination
US9904969B1 (en) * 2007-11-23 2018-02-27 PME IP Pty Ltd Multi-user multi-GPU render server apparatus and methods
US20110107314A1 (en) * 2008-06-27 2011-05-05 Boris Artashesovich Babayan Static code recognition for binary translation
US9602864B2 (en) * 2009-06-08 2017-03-21 Time Warner Cable Enterprises Llc Media bridge apparatus and methods
US8982738B2 (en) * 2010-05-13 2015-03-17 Futurewei Technologies, Inc. System, apparatus for content delivery for internet traffic and methods thereof
US20120079095A1 (en) * 2010-09-24 2012-03-29 Amazon Technologies, Inc. Cloud-based device synchronization
US9069622B2 (en) 2010-09-30 2015-06-30 Microsoft Technology Licensing, Llc Techniques for load balancing GPU enabled virtual machines
US8984519B2 (en) * 2010-11-17 2015-03-17 Nec Laboratories America, Inc. Scheduler and resource manager for coprocessor-based heterogeneous clusters
US8880851B2 (en) * 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
TWI451268B (zh) * 2011-11-08 2014-09-01 Inst Information Industry 提供虛擬桌面之雲端系統、於虛擬桌面播放多媒體之方法以及其電腦可讀取記錄媒體
KR20130078630A (ko) * 2011-12-30 2013-07-10 한국전자통신연구원 유무선 융합 mac 어댑터 및 이를 이용한 프레임 전송 방법
TWI482525B (zh) * 2012-03-06 2015-04-21 Ind Tech Res Inst 分散式應用平台系統及其傳輸訊息的服務品質控制方法
US9081896B1 (en) * 2012-03-21 2015-07-14 Amazon Technologies, Inc. Generating a replacement binary for emulation of an application
JP6095091B2 (ja) * 2012-03-24 2017-03-15 日本電気株式会社 情報処理システム、情報処理方法、情報処理装置およびその制御方法と制御プログラム
WO2014047828A1 (en) * 2012-09-27 2014-04-03 Intel Corporation Method and apparatus to schedule store instructions across atomic regions in binary translation
US9525586B2 (en) * 2013-03-15 2016-12-20 Intel Corporation QoS based binary translation and application streaming
US9998483B2 (en) * 2015-12-22 2018-06-12 Mcafee, Llc Service assurance and security of computing systems using fingerprinting

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170129794A (ko) * 2015-04-10 2017-11-27 구글 엘엘씨 네이티브 클라이언트로의 이진 변환

Also Published As

Publication number Publication date
GB2550007A (en) 2017-11-08
GB201404232D0 (en) 2014-04-23
JP5873513B2 (ja) 2016-03-01
GB2514222A (en) 2014-11-19
GB2514222B (en) 2017-01-25
BR102014006116A2 (pt) 2015-11-03
JP2014182798A (ja) 2014-09-29
KR101625276B1 (ko) 2016-05-27
US10469557B2 (en) 2019-11-05
CN104050007B (zh) 2019-12-03
US20140281008A1 (en) 2014-09-18
DE102014003855A1 (de) 2014-09-18
CN104050007A (zh) 2014-09-17
GB201621335D0 (en) 2017-02-01
GB2550007B (en) 2017-12-13
US20170237797A1 (en) 2017-08-17
US9525586B2 (en) 2016-12-20
DE102014003855B4 (de) 2019-12-19

Similar Documents

Publication Publication Date Title
KR101625276B1 (ko) QoS 기반 바이너리 변환 및 애플리케이션 스트리밍
US10565127B2 (en) Apparatus and method for managing a virtual graphics processor unit (VGPU)
US11080213B2 (en) Apparatus and method for dynamic provisioning, quality of service, and scheduling in a graphics processor
JP6140190B2 (ja) 準仮想化された高性能コンピューティングおよびgdi高速化
US11957974B2 (en) System architecture for cloud gaming
TW201706840A (zh) 促進圖形處理命令的動態運行時變換以用於在計算裝置之改善的圖形效能
EP3862060A1 (en) System architecture for cloud gaming
US11436696B2 (en) Apparatus and method for provisioning virtualized multi-tile graphics processing hardware
KR20200086613A (ko) 분산형 그래픽 디바이스에서의 작업부하 스케줄링 및 분배
TWI706373B (zh) 用於型樣驅動自適應虛擬繪圖處理單元的裝置、方法及系統
US10410311B2 (en) Method and apparatus for efficient submission of workload to a high performance graphics sub-system
US11354768B2 (en) Intelligent graphics dispatching mechanism
JP2021086612A (ja) フレキシブルなキャッシュ割り当て技術の優先度ベースのキャッシュラインエビクションアルゴリズム
JP2014503898A (ja) 処理装置の同期動作のための方法およびシステム
CN111724294A (zh) 分布式拷贝引擎
CN117597664A (zh) 用于多租户系统中的加速器和设备的动态能力发现和执行
CN116113974A (zh) 生成插值视频帧的技术
US11706404B2 (en) Weighted prediction mechanism
CN115104119A (zh) 生成插值视频帧的技术

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: 20190429

Year of fee payment: 4