DE102014003855B4 - QOS-basiertes binäres Übersetzungs- und Anwendungsstreaming - Google Patents

QOS-basiertes binäres Übersetzungs- und Anwendungsstreaming Download PDF

Info

Publication number
DE102014003855B4
DE102014003855B4 DE102014003855.6A DE102014003855A DE102014003855B4 DE 102014003855 B4 DE102014003855 B4 DE 102014003855B4 DE 102014003855 A DE102014003855 A DE 102014003855A DE 102014003855 B4 DE102014003855 B4 DE 102014003855B4
Authority
DE
Germany
Prior art keywords
server
client
processor
client device
binary
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
DE102014003855.6A
Other languages
English (en)
Other versions
DE102014003855A1 (de
Inventor
Bharath Muthiah
William Bill Rash
Glenn J. Hinton
Martin G. Dixon
Scott D. Hahn
David B. Papworth
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE102014003855A1 publication Critical patent/DE102014003855A1/de
Application granted granted Critical
Publication of DE102014003855B4 publication Critical patent/DE102014003855B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

System (800) mit:einem Server (102, 206), der einen Hauptprozessor und eine Netzwerkschnittstelle aufweist, wobei der Hauptprozessor einen ersten Befehlssatz aufweist, wobei der Server zum Übersetzen einer Binärdatei, die einen zweiten Befehlssatz aufweist, in eine übersetzte ausführbare Datei dient, die den ersten Befehlssatz aufweist, wobei die Übersetzung unter Verwendung von Quality-of-Service(QoS)-Kriterien ausgeführt wird, wobei die QoS-Kriterien eine prioritätsbasierte Beschleunigung und mehrere Client-Parameter einschließen, wobei die mehreren Client-Parameter eine Client-Vorrichtungsauflösung, eine Client-Vorrichtungslage, einen Client-Anwendungstyp und einen Satz von Client-Decodierungsfähigkeiten umfassen, wobei die prioritätsbasierten Beschleunigungsfaktoren eine Netzwerklatenzzeit zwischen dem Server und der Client-Vorrichtung (175, 202) zum Festlegen der Binärübersetzungspriorität umfassen, wobei der Server die übersetzte Binärdatei ausführt, um einen Rahmen einer gerenderten Ausgabe zu erzeugen, und den Rahmen der gerenderten Ausgabe über die Netzwerkschnittstelle überträgt; undeiner Client-Vorrichtung (175, 202), die ein Display, einen Client-Prozessor und eine Client-Netzwerkschnittstelle aufweist, wobei die Client-Vorrichtung von dem Server (102, 206) den Rahmen der gerenderten Ausgabe über die Client-Netzwerkschnittstelle empfängt und den Rahmen der gerenderten Ausgabe auf dem Display unter Verwendung des Client-Prozessors (314, 400, 810, 970, 980) anzeigt, wobei der Server (102, 206) die Binärübersetzung in einer virtuellen Maschine (208) ausführt, wobei die virtuelle Maschine (208) für die Client-Vorrichtung (175, 202) abgestimmt ist, wobei die Ausführungsressourcen der virtuellen Maschine (208) über die QoS-Kriterien abgestimmt sind.

Description

  • ERFINDUNGSGEBIET
  • Ausführungsformen betreffen allgemein cloudbasierte Anwendungsdienste und insbesondere die Bereitstellung eines binären Übersetzungs- und Anwendungsstreamings unter Verwendung von Quality-of-Service-Kriterien.
  • ALLGEMEINER STAND DER TECHNIK
  • Prozessoren sind im Allgemeinen ausgelegt, eine spezielle Befehlssatzarchitektur umzusetzen, und führen im Allgemeinen nativ keine Anwendungen aus, die für eine andere Befehlssatzarchitektur kompiliert sind. Die Übersetzung von Binärdateien, die für einen Befehlssatz kompiliert sind, in eine Binärdatei, die nativ auf einem anderen Befehlssatz ausführbar ist, ist in den Computertechniken und -Wissenschaften mit unterschiedlichem Erfolg versucht worden. In einem Beispiel übersetzt ein Binärübersetzer eine Binärdatei in der Laufzeit von einer Befehlssatzarchitektur in eine andere Befehlssatzarchitektur. In einem Beispiel führt ein Prozessor, der eine Befehlssatzarchitektur aufweist, eine Emulationssoftware aus, die es dem Prozessor erlaubt, Binärdateien auszuführen, die eine andere Befehlssatzarchitektur aufweisen. Die Binärübersetzung bringt in jedem Fall einen Ausführungsnachteil während der Anwendungsausführung mit sich.
  • Außerdem ist das Streaming von nicht interaktiven Medien in den Computertechniken und -Wissenschaften bekannt, und es ist bekannt, dass Video-Streaming verschiedenen Computervorrichtungen bereitgestellt werden kann. Unter Verwendung einer verteilten Verarbeitung und Speicherung kann ein Inhalt in einem cloudbasierten Netzwerk gespeichert und bei Anforderung auf mehrere Vorrichtungen gestreamt werden, die an das Netzwerk angeschlossen sind. Das Streaming von interaktivem Inhalt, wie z.B. das Echtzeit-Streaming von Anwendungen, ist jedoch wegen der Umlauf-Netzwerklatenzzeiten problematisch.
  • US 2002/0184618 A1 offenbart eine native Ausführung einer Anwendung auf einem Client unter Verwendung von Codesegmenten, die von einem Server über ein Netzwerk übertragen werden. Der Server enthält eine Anwendungscodequelle und einen Servercode-Segmentmanager. Der Server kann auch einen Anwendungscode-Transformations-Manager enthalten, wenn die Codequelle nicht im nativen Binärformat des Clients vorliegt. Der Client enthält einen Client-Codesegment-Manager, einen Code-Cache-Linker und -Manager, einen Code-Cache und eine CPU. Wenn der Client versucht, eine Anwendung auszuführen, werden Codesegmente vom Server zum Client übertragen und im Code-Cache gespeichert. Die CPU führt dann die Codesegmente nativ aus. Wenn ein Codesegment zu einem Segment verzweigt, das sich nicht im Cache befindet, wird die Steuerung an den Client-Codesegment-Manager übergeben, der das erforderliche Codesegment vom Server-Codesegment-Manager des Servers anfordert.
  • US 2002/0071449 A1 offenbart: Bei der Kommunikation von Konflikten muss eine Station häufig übermäßig lange warten, bis die Station ihre Daten erfolgreich übertragen kann. In vielen Anwendungen ist eine längere Verzögerung nicht akzeptabel. Konkurrenzfreie Kommunikationen in einer Konkurrenzperiode ermöglichen es einem Hybridkoordinator (HC), einen konkurrenzfreien Zugriff auf ein Kommunikationsmedium zu planen, so dass verlängerte Verzögerungen beseitigt werden können, und den Konkurrenzzugriff auf das Medium zu koordinieren, so dass ein besserer Durchsatz und eine bessere Verzögerungsleistung erreicht werden . Es wird ein Verfahren zum Erstellen von wettbewerbsfreier Kommunikation innerhalb eines Wettbewerbszeitraums zusammen mit adaptiven Algorithmen für den Konfliktzugriff während desselben Wettbewerbszeitraums vorgestellt.
  • US 2011/179136 A1 offenbart ein elektronisches Gerät, das für die elektronische Kommunikation unter Verwendung eines virtuellen dispersiven Netzwerks konfiguriert ist und umfasst: eine Netzwerkschnittstelle zur Kommunikation über ein Netzwerk; eine auf das elektronische Gerät geladene Anwendung, die für die Kommunikation über ein Netzwerk programmiert ist; und eine Software für ein virtuelles dispersives Netzwerk, die konfiguriert ist, um für eine solche Anwendung eine virtuelle Maschine zu erstellen, die eine virtuelle Schnittstelle für die Netzwerkschnittstelle des elektronischen Geräts umfasst; Wählen eines Netzwerkprotokolls aus einer Vielzahl verfügbarer Netzwerkprotokolle basierend auf den aktuellen Kommunikationsanforderungen der Anwendung; und Veranlassen, dass die Netzwerkkommunikation der Anwendung über die virtuelle Netzwerkschnittstelle des elektronischen Geräts unter Verwendung des bestimmten Netzwerkprotokolls erfolgt.
  • Figurenliste
  • Die nachfolgende Beschreibung enthält eine Erörterung von Figuren, die Abbildungen aufweisen, die als Beispiel für Realisierungen der verschiedenen Ausführungsformen angeführt sind. Die Zeichnungen sollten als Beispiele und nicht als Einschränkung verstanden werden. Wie sie hier verwendet werden, sind Bezugnahmen auf eine oder mehrere „Ausführungsformen“ als Beschreibung eines speziellen Merkmals, einer Struktur oder eines Charakteristikums zu verstehen, die in mindestens einer Ausführung enthalten sind. Somit beschreiben Formulierungen wie „in einer Ausführungsform“ oder „in einer alternativen Ausführungsform“, die hier vorkommen, jeweils verschiedene Ausführungsformen und Realisierungen und beziehen sich nicht notwendigerweise alle auf die gleiche Ausführungsform. Sie schließen sich jedoch auch nicht unbedingt gegenseitig aus.
  • 1 ist ein Blockdiagramm einer Ausführungsform eines Systems zum Erbringen einer cloudbasierten Servicebereitstellung von binär übersetzten Anwendungen unter Verwendung von Servern, die in einem Datenzentrum untergebracht sind.
  • 2 ist ein Ablaufdiagramm einer Ausführungsform eines cloudbasierten Bereitstellungssystems für ARM-ISA-Anwendungen unter Verwendung von X86-basierten Servern.
  • 3 ist ein Blockdiagramm, das eine Binärübersetzung von einem Quellenbefehlssatz in einen Zielbefehlssatz gemäß einer Ausführungsform darstellt.
  • 4 ist ein Blockdiagramm eines Prozessors mit mehreren Kernen, einem integrierten Grafik- und Speichercontroller und einer übersetzungsspezifischen Logik gemäß einer Ausführungsform.
  • 5 ist eine Übersicht über eine Ausführungsform eines Verfahrens zum QoS-basierten Binärübersetzungs- und Ausführungsstreaming auf einem Server auf Basis einer X86-CPU.
  • 6 ist ein Flussdiagramm einer Ausführungsform eines serverseitigen Prozesses zur Verwendung einer prioritätsstufenbasierten Beschleunigung für eine ARM-ISA-Binärübersetzung.
  • 7 ist ein Flussdiagramm eines Prozesses zur Verwendung einer Grafikprozessorbeschleunigung gemäß einer Ausführungsform.
    • Die 8-11 sind Blockdiagramme von Computerarchitekturbeispielen.
  • Es folgen Beschreibungen von bestimmten Einzelheiten und Realisierungen einschließlich einer Beschreibung der Figuren, die einige oder alle nachfolgend beschriebenen Ausführungsformen darstellen können, sowie eine Erörterung anderer potenzieller Ausführungsformen oder Realisierungen der hier vorgestellten Erfindungsgedanken. Nachfolgend wird ein Überblick über Ausführungsformen gegeben, gefolgt von einer ausführlicheren Beschreibung mit Bezugnahme auf die Zeichnungen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Wegen der Netzwerklatenzzeit und des Ausführungs-Overhead ist es schwierig, die Kombination von Echtzeit-Anwendungsstreaming von Anwendungs-Binärdateien, die auf eine nicht native Befehlssatzarchitektur kompiliert sind, mit einem Echtzeit-Anwendungsstreaming zu realisieren. Wie hier beschrieben ist, wird eine auf Quality-of-Service(QoS)-Kriterien basierende serverseitige Binärübersetzungsausführung von Anwendungen auf mehreren Servern unter Verwendung einer verteilten Übersetzung und Ausführung entweder in einer virtualisierten oder nativen Ausführungsumgebung durchgeführt. Die übersetzten Anwendungen werden ausgeführt, um Ausgabeanzeigedaten zu erzeugen, die Ausgabeanzeigedaten werden in ein Medienformat codiert, das für Video-Streaming geeignet ist, und der Videostrom wird über ein Netzwerk einer Client-Vorrichtung zugeführt.
  • In einer Ausführungsform unterstützen ein oder mehrere Grafikprozessoren die Hauptprozessoren der Server durch Beschleunigen des Renderns der Anwendungsausgabe. Eine Ausführungsform verwendet QoS-Kriterien, um zu bestimmen, welche Anwendungen oder Anwendungstypen ein beschleunigtes Grafikrendern verwenden. In einer Ausführungsform beschleunigt ein Medienencoder, wie z.B. ein Festfunktions-Medienencoder eines Grafikprozessors, das Codieren der Anwendungs-Ausgaberahmen. In einer Ausführungsform führen ein oder mehrere Hauptprozessoren von einem oder mehreren Servern eine verteilte Berechnung für die Binärübersetzung aus, und ein oder mehrere Grafikprozessoren auf dem Server stellen eine zusätzliche Funktionalität bereit, wenn die Berechnungsressourcen beschränkt sind.
  • 1 ist ein Blockdiagramm einer Ausführungsform eines Systems zur Bereitstellung cloudbasierter Dienstleistungen binär übersetzter Anwendungen unter Verwendung von Servern, die in einem Datenzentrum untergebracht sind. Obwohl in 1 die Lieferung von ARM-ISA-Anwendungen unter Verwendung von X86-basierten Servern dargestellt ist, sind die Ausführungsformen nicht dermaßen eingeschränkt, da die verschiedenartigen Ausführungsformen für eine beliebige binäre Übersetzungs- oder Emulationsumgebung verwendet werden können, die Anwendungsdienste in einer verteilten Rechnerumgebung bereitstellt. In einer Ausführungsform stellt ein Datenzentrum 100 eine verteilte (z.B. cloudbasierte) Lieferung von ARM-ISA-Anwendungen an Client-Vorrichtungsendpunkte 175, wie z.B. Smartphones, Tablets, Laptops, Arbeitsplatzrechner und intelligente Vorrichtungen, bereit. Client-Endpunktanwendungen werden mindestens zum Teil in einer verteilten Berechnungsumgebung ausgeführt, und die Anwendungsausgabe wird zu einem Client-Endpunkt gestreamt. Die Qualität der Nutzererfahrung wird durch die Verwendung von QoS-Kriterien aufrechterhalten, um zu ermöglichen, dass das Anwendungsstreaming die wahrgenommene Latenzzeit minimiert und einer vereinbarten Qualitätsstufe für die Client-Vorrichtungen entspricht. Umfänglich verteilte Berechnungsressourcen können parallel arbeiten, um die binäre Übersetzung und Ausführung durchzuführen und mit beschränkten Berechnungsressourcen den Clients eine Anwendungsausgabe zu liefern.
  • Wie in 1 dargestellt ist, sind in einer Ausführungsform mehrere Serverplattformen 102, die auf X86-Hauptprozessoreinheiten (CPU) basieren, in einem Datenzentrum 100 untergebracht. Eine ARM-ISA-Anwendungsbinärdatei App 1-a wird in einer virtuellen Maschinen(VM)-Umgebung in eine X86-Anwendungsbinärdatei App 1-b übersetzt. Auf jedem Server laufen mehrere VM (z.B. VM1 104 bis VMn 105), um ARM-ISA-Anwendungsbinärdateien in X86-Anwendungsbinärdateien zu übersetzen. In einer Ausführungsform werden die übersetzten Anwendungsbinärdateien unter Verwendung des X86-Servers ausgeführt, und für jeden Rahmen der Anwendungsausgabe erzeugt ein Renderer 108 einen Ausgaberahmen. In einer Ausführungsform wird ein Medienencoder verwendet, um den Ausgaberahmen zu codieren, bevor der codierte Ausgaberahmen mittels einer Netzwerkschnittstelle 112 über ein Verbundnetzwerk, wie z.B. das Internet 150, übertragen wird. Client-Vorrichtungen 175, wie z.B. eine Client-Vorrichtung auf ARM-ISA-Basis, oder eine X86-basierte Client-Vorrichtung 179, können diese Dienstleistungen verwenden, um eine Anwendung unter Verwendung der Verarbeitungsleistung eines verteilten Netzwerks laufen zu lassen. Eine schnelle Übersetzung oder Emulation der nicht nativen Binärdateien unter Verwendung von QoS-Kriterien ermöglicht die Lieferung eines Femanwendungsstreamings an Client-Vorrichtungen mit Latenzzeiten, die mit einer lokalen Ausführung vereinbar sind.
  • Um die Latenzzeit zu minimieren, verwendet das Anwendungsstreaming-System verschiedene QoS-Kriterien einschließlich der prioritätsbasierten Übersetzung, die verwendet wird, um Übersetzungsressourcen zu planen und den mehreren VM, die zur Übersetzung und Ausführung der verschiedenen Anwendungen verwendet werden, Ausführungszeit in einer prioritätsbezogenen Weise bereitzustellen. Eine prioritätsbasierte Übersetzung erlaubt die Minimierung einer Umlauf-Latenzzeit, was das Ausführen und Streamen einer Femanwendung ermöglicht, während die Nutzererfahrung an den Client-Vorrichtungen erhalten bleibt. Als Teil einer prioritätsbasierten Übersetzung werden separate QoS-Hardwareattribute für den Übersetzercode verwendet, sodass die verschiedenen Prozessorelemente der Serverplattform 102 die Binärübersetzungsbefehle während der Ausführung erkennen und priorisieren, was zum Beispiel ermöglicht, dass die Übersetzung oder die Emulation bei einer höheren Zugriffspriorität abläuft. Die Befehle mit einer höheren Zugriffspriorität haben einen größeren Zugriff auf Systemressourcen. Zum Beispiel wird der Übersetzungscode im Prozessor-Cache bevorzugt, und Befehls- und Speicherwarteschlangen für die Übersetzung weisen eine höhere Cache-Priorität mit Bezug auf eine andere Software auf, die auf dem Server ausgeführt wird.
  • Ein zusätzlicher QoS-Gesichtspunkt ist die Display-Auflösung der emulierten Client-Vorrichtung. Ein weiteres entscheidendes QoS-Kriterium ist die Auflösung von Client-Endpunkten, die von einem Server aus betrachtet werden müssen, der ARM-Anwendungen (z.B. App 1-a, App 2-a) emuliert und rendert. Die Rahmenpuffer-Displaygröße, die durch jede VM gerendert wird, ist auf Basis der angestrebten Auflösung von Client-Endpunkten konfigurierbar. Als Teil des QoS-Prozesses werden die verschiedenen Netzwerklatenzzeiten zwischen dem Datenzentrum 100 und den Client-Vorrichtungen 175 abgefragt, um die Umlauf-Übergangszeiten zu bestimmen. Auf Basis der verfügbaren Ausführungskapazität und Netzwerklatenzzeiten können der Client-Vorrichtung bei unterschiedlichen Gegebenheiten unterschiedliche Ausgabeauflösungen geliefert werden, und es können unterschiedliche VM mit unterschiedlichen Rahmenpuffergrößen verwendet werden. In einer Ausführungsform ist jede VM auf einen Satz von Rahmenpuffergrößen konfigurierbar, aus denen die VM Inhalt bereitstellen kann.
  • Ein zusätzlicher QoS-Gesichtspunkt ist die geografische Lage der Client-Vorrichtung. Der Abstand zwischen dem Client-Endpunkt und einem Server beeinflusst das Leistungsniveau, welches der Server während des Ausführungs- und Codierungsprozesses bereitstellt, um die unterbrechungsfreie Lieferung an den Client-Endpunkt zu ermöglichen. In einer Ausführungsform werden mehrere Datenzentren zur Versorgung mehrerer geografischer Regionen verwendet, um die Umlauf-Latenzzeit zu minimieren.
  • Ein zusätzlicher QoS-Gesichtspunkt ist der Typ der Anwendung, die durch den Server emuliert wird. Der Server 102 verwendet Grafikverarbeitungsressourcen, um Spieleanwendungen mit komplexer Grafik zu beschleunigen. Der Grafikprozessor beschleunigt das Rendering eines jeden Rahmens, sodass der Rahmen codiert und der Client-Vorrichtung mit einer ausreichenden Rate zugeführt werden kann, um ein hohes Niveau der Nutzererfahrung aufrechtzuerhalten und um die Dienstgütevereinbarungen für die Streaming-Rahmenrate zu erfüllen. Andere Anwendungen, wie z.B. Office-Anwendungen oder Spiele mit einer geringen Grafikintensität, werden unter Verwendung der Berechnungsressourcen der verteilten Verarbeitungsumgebung gerendert. Darüber hinaus nutzen auch solche Anwendungen, wie z.B. die Anwendungen der rechnergestützten Konstruktion (CAD), die Grafikprozessorbeschleunigung beim Rendern geometrisch komplexer Konstruktionen.
  • Ein zusätzlicher QoS-Gesichtspunkt ist der Satz der Mediendecodierungsfähigkeiten der Client-Vorrichtung. Die Fähigkeit von einer der verschiedenen Client-Vorrichtungen 175 (z.B. die ARM-ISA-Clientvorrichtung 177 und die X86-ISA-Clientvorrichtung 179) zum Decodieren eines codierten Stroms legt den serverseitigen Algorithmus fest, der zum Codieren der emulierten ARM-Anwendungsausgabe auf dem Server 102 verwendet wird. Ist die Clientvorrichtung 175 zum Beispiel in der Lage, für bestimmte Medientypen (z.B. H.264) die Mediendecoder-Hardware zum beschleunigten Mediendecodieren zu verwenden, dann codiert der Server 102 die Anwendungsausgabe unter Verwendung eines Medientyps, der für die Client-Vorrichtung akzeptabel ist. Ist die Client-Vorrichtung 175 nicht in der Lage, eine beschleunigte Mediendecodierung auszuführen, dann codiert die Anwendungsausgabe unter Verwendung eines Medienformats, das die Client-Vorrichtung unter Verwendung eines Anwendungsprozessors auf der Client-Vorrichtung 175 decodieren kann.
  • 2 ist ein Ablaufdiagramm einer Ausführungsform eines cloudbasierten Lieferungssystems für ARM-ISA-Anwendungen unter Verwendung von X86-basierten Servern. In einer Ausführungsform sendet eine Client-Vorrichtung 202, wie z.B. die Client-Vorrichtungen 175 von 1, eine Anforderung 212 an einen cloudbasierten Anwendungsdienst, eine Anwendung ablaufen zu lassen. Die Client-Vorrichtung kann die Anwendung dem Server bereitstellen, oder die Anwendung kann in einer verteilten Speicherumgebung gespeichert werden, die mit der verteilten Ausführungsumgebung des Anwendungsdienstes verbunden ist. Die Anforderung gelangt zu einem Server-Ablaufplaner 204, und es wird eine Dienstgütevereinbarungs(SLA)-Frist für die Verarbeitung der Anforderung festgelegt, nachdem der Server-Ablaufplaner 204 die QoS-Kriterien überprüft hat, die mit der Client-Vorrichtung 202 verknüpft sind. Der Server-Ablaufplaner 204 wählt einen Server 206 mit verfügbaren Ausführungsressourcen aus und schickt 214 eine Anforderung an den Server 206. Der Server 206 von 2 ist eine Ausführungsform der X86-CPU-basierten Serverplattform 102 von 1. In einer Ausführungsform melden die Server dem Server-Ablaufplaner die verfügbare Ausführungszeit in Form einer emulierten Ausführungszeit anstelle einer nativen Befehlssatz-Ausführungszeit, um dem Server-Ablaufplaner 204 zu ermöglichen, die Aufträge von einer ARM-ISA-Anwendungsperspektive her zu planen.
  • Sobald der Server 206 die Anforderung 214 vom Server-Ablaufplaner empfängt, sendet der Server eine Empfangsbestätigung 226 an den Server-Ablaufplaner 204, um anzuzeigen, dass die Anforderung akzeptiert und innerhalb des SLA-Zeitrahmens ausgeführt wird. Ist der Server 206 nicht in der Lage, die Anforderung vor der SLA-Frist zu bedienen, dann kann der Server-Ablaufplaner die Anforderung neu zuweisen oder dem Server zusätzliche Berechnungsressourcen bereitstellen. Der Server 206 führt die Binärübersetzung für die verschiedenen Anwendungen und Client-Vorrichtungen (z.B. die Client-Vorrichtung 202) unter Verwendung virtueller Maschinenumgebungen, wie z.B. der virtuellen Maschine 208, aus, die eine Ausführungsform von einer der mehreren VM von 1 (z.B. VM1 104 bis VMn 106) ist. Die verschiedenen VM können auf Basis der Charakteristiken der mehreren Client-Vorrichtungen konfiguriert sein, und die Ausführungsressourcen sind unter den VM verteilt, um die Ausführungstermine einzuhalten. Eine Ausführungsform des Servers 206 überprüft eine Liste von verfügbaren virtuellen Maschinen und schickt 216 die Anwendungsanforderung an die virtuelle Maschine 208.
  • Sobald der virtuellen Maschine 208 eine Anforderung 214 an den Server 206 zugeleitet worden ist 216, wird an der Anwendung ein Übersetzungsprozess 218 ausgeführt, und im Speicher auf dem Server wird eine übersetzte Anwendung 228 erzeugt. In einer Ausführungsform wird die übersetzte Anwendung nativ auf dem Server 206 unter Verwendung der mehreren für den Server 206 verfügbaren Prozessoren ausgeführt, die entweder im Server 206 untergebracht oder auf anderen Servern im Datenzentrum 100 verfügbar sind. In einer Ausführungsform führen ein oder mehrere Prozessoren auf dem Server eine Befehlssatz-Emulationssoftware aus, die den Anwendungsbinärdateien eine ISA-Emulationsumgebung bietet. In einer Ausführungsform ist sowohl die Binärübersetzung als auch die Befehlssatzemulation verfügbar, und in einer Ausführungsform können virtuelle Maschinen eingesetzt werden, die für beide Verfahren geeignet sind. Aufgaben oder Anwendungen, von denen bekannt ist, dass sie unter Verwendung einer dynamischen Binärübersetzung gut funktionieren, werden virtuellen Maschinen zugewiesen, die zu einer Binärübersetzung in der Lage sind. Aufgaben oder Anwendungen, von denen bekannt ist, dass sie in einer Emulationsumgebung gut funktionieren, werden virtuellen Maschinen zugewiesen, die eine Befehlssatzemulation für Binärdateien verwenden, die nicht nativ zum Server sind. In einer Ausführungsform wird eine Substitutionsliste für akzeptable, X86-ISA-ähnlich arbeitende Programme angegeben, welche die gleiche Funktionalität wie die angeforderten ARM-ISA-Anwendungen bereitstellen. Zum Beispiel werden Dienstprogramme und Bibliotheken mit Binärdateien, die in dem nativen Befehlssatz des Servers oder der virtuellen Maschine verfügbar sind, transparent ersetzt.
  • Für die Anzeige eines jeden Ausgaberahmens der Anwendung wird der Ausgaberahmen entweder nativ oder in einer virtuellen Maschine auf dem Server 206 gerendert und codiert, und der Ausgaberahmen wird auf Basis der Decodierungsfähigkeiten der Client-Vorrichtung 202 codiert. Zum Beispiel wird der Client-Vorrichtung ein erster Ausgaberahmen 236 übermittelt, der decodiert und auf dem Display der Client-Vorrichtung angezeigt wird. Der Server 206 überträgt dann einen zweiten Ausgaberahmen 246 und zeigt ihn aufeinanderfolgend mit dem ersten Ausgaberahmen 236 an, wenn die Client-Vorrichtung 202 ihr Display aktualisiert. Der Server 206 stellt der Client-Vorrichtung 202 die Ausgaberahmen mit einer Rate bereit, die ausreichend ist, um mittels Anwendung der QoS-Kriterien eine ausgeglichene Anwendungserfahrung bereitzustellen, die eine Verschiebung von Berechnungsressourcen zwischen den Anwendungen und virtuellen Maschinen erlaubt und ein Rendern, Codieren und Liefern eines jeden Anwendungsrahmens in einer termingerechten Weise ermöglicht. Von der Client-Vorrichtung wird eine Steuerungseingabe 222 auf den Server übertragen, wie durch den Nutzer angezeigt wird, und die Steuerungseingabe 222 wird der Anwendung zugeführt, die auf dem Server ausgeführt wird, welcher auf die Steuerungseingabe 222 reagiert, wenn der Ausgaberahmen N 296 der Client-Vorrichtung übergeben wird.
  • 3 ist ein Blockdiagramm, das eine Binärübersetzung von einem Quellenbefehlssatz in einen Zielbefehlssatz gemäß einer Ausführungsform darstellt. Eine Ausführungsform realisiert die Binärumwandlung unter Verwendung einer Kombination aus Software, Firmware und Hardware und verwendet Prozessorbefehle, die für die Übersetzung und Umwandlung spezifisch sind, um spezifische Aspekte der Umwandlung und Übersetzung zu beschleunigen. Obwohl Übersetzung und Emulation von nicht-X86 auf X86 dargestellt sind, sind die Ausführungsformen nicht derart eingeschränkt. Für nativ ausgeführte Befehle wird ein Programm in einer höheren Programmiersprache 302 unter Verwendung eines x86-Compilers 304 kompiliert, um einen x86-Binärcode 306 zu erzeugen, der nativ durch einen Prozessor mit mindestens einem Prozessorkern 314 ausgeführt werden kann, der zum Ausführen des X86-Befehlssatzes in der Lage ist. Der Prozessor mit mindestens einem x86-Befehlssatzkern 314 verkörpert einen beliebigen Prozessor, der im Wesentlichen die gleichen Funktionen wie ein Intel-Prozessor mit mindestens einem X86-Befehlssatzkern ausführen kann. Der Prozessor 314 führt kompatibel einen wesentlichen Anteil des Befehlssatzes des Intel-X86-Befehlssatzkerns oder Objektcodeversionen von Anwendungen oder eine andere Software aus, die darauf ausgerichtet ist, auf einem Intel-Prozessor zu laufen, oder verarbeitet sie anderweitig.
  • Der X86-Compiler 308 verkörpert einen Compiler, der betriebsfähig ist, einen x86-Binärcode 310 (z.B. Objektcode)zu erzeugen, der mit oder ohne eine zusätzliche Verknüpfungsbearbeitung auf dem Prozessor mit mindestens einem x86-Befehlssatzkern 314 ausgeführt werden kann. Wenn das Programm in der höheren Programmiersprache 302 unter Verwendung eines alternativen Befehlssatzcompilers 304 kompiliert wird, um einen alternativen Befehlssatz-Binärcode 306 zu erzeugen, dann ist diese Binärdatei auf die gleiche Weise durch einen Prozessor nativ ausführbar, der den alternativen Befehlssatz 316 verwendet. Zum Beispiel schließt ein Prozessor mit einem nicht-X86-Kern einen Prozessor ein, der den MIPS-Befehlssatz von MIPS Technologies of Sunnyvale, CA, ausführt oder der den ARM-Befehlssatz von ARM Holdings of Sunnyvale, CA, ausführt. Der Befehlswandler 312 wandelt den nicht-X86-Binärcode 306 in einen Code um, der nativ durch den Prozessor eines X86-Befehlssatzkerns 314 ausführbar ist.
  • In einer Ausführungsform wird Hardware 313 zur Beschleunigung der Befehlsumwandlung in Verbindung mit dem Befehlswandler 312 eingesetzt. Der Beschleuniger der Befehlsumwandlung 313 schließt eine Beschleunigung für die Virtualisierungs- und Übersetzungsaufgaben auf Basis eines Server-Chipsatzes und Prozessors ein. Zum Beispiel sind X86-ISA-Erweiterungen und -Weiterentwicklungen eingeschlossen, um die ARM-ISA-Übersetzung in einer Ausführungsform eines X86-Prozessors, der 32-Bit- und 64-Bit-Ausführungsbetriebsarten enthält, zu beschleunigen. X86-Befehlssatzerweiterungen schließen Befehle zum Behandeln von ARM-ISA-spezifischen Konditionalen, einschließlich der Konditionale des ARM-v8-Befehlssatzes, ein.
  • Zusätzliche Befehlssatzerweiterungen stellen alternative Varianten von X86-Befehlen bereit, welche Befehle schneller ausführen, die aus einem nicht nativen Befehlssatz heraus übersetzt wurden. Zum Beispiel sind zusätzliche X86-Befehle verfügbar, um anzuzeigen, dass ein zu übersetzender ARM-ISA-Befehl eine Speicherbezugnahme, eine Ganzzahloperation in einer arithmetischen Logikeinheit (ALU) oder eine Gleitkommaoperation in einer Gleitkommaeinheit (FPU) ausführt. Durch eine Kombination von Software, Firmware und Hardware ermöglichen der Befehlswandler 312 und der Befehlswandlungsbeschleuniger 313 dem Prozessor oder einer anderen elektronischen Vorrichtung, die einen X86-Befehlssatzprozessor oder -Kern 314 aufweist, einen nicht-X86-Binärcode 306 auszuführen.
  • 4 ist ein Blockdiagramm eines Prozessors 400 mit mehreren Kernen, einem integrierten Grafik- und Speichercontroller und einer übersetzungsspezifischen Logik gemäß einer Ausführungsform. Der Prozessor 400 weist mehrere Kerne, von einem ersten Kern 402A bis zu einer Zahl N von Kernen 402N auf. In der Systemagent-Einheit sind auch ein Systemagent 410, ein Satz von einer oder mehreren Bus-Controllereinheiten 416 und ein Satz aus einer oder mehreren integrierten Grafik- und Speicher-Controllereinheit(en) 414 410 vorhanden. Zusätzlich liegt eine zweckgebundene übersetzungsspezifische Logik 408 vor, um die Binärübersetzung oder -Emulation aus einem nicht-X86-Befehlssatz zu beschleunigen.
  • Verschiedene Ausführungsformen des Prozessors 400 sind als Allzweck-Prozessorkerne konfiguriert, die zur Verwendung in einem Server geeignet sind, der ausgelegt ist, den Client-Vorrichtungen Binärübersetzung, Ausführung und Streaming in Echtzeit bereitzustellen, wobei QoS-Kriterien verwendet werden, um eine Streaminganwendungs-Bereitstellung in einem vereinbarten Dienst- und Qualitätsniveau zu liefern. Die Grafik- und Speicher-Controllereinheit(en) 414 enthält(enthalten) eine oder mehrere Grafikmaschinen die das Rendern für grafisch intensive Arbeitsvorgänge beschleunigen, wie durch die QoS-Kriterien festgelegt ist. Ist die Grafikmaschine auf einem Server nicht ausgelastet, dann stellt die Grafikmaschine eine GPGPU(Allzweck-Grafikverarbeitungseinheit)-Fähigkeit bereit, um einer Anwendung oder virtuellen Maschine, die auf dem Prozessor 400 Befehle ausführt, zusätzliche Ausführungsressourcen bereitzustellen. In einer Ausführungsform ist der Prozessor 400 ein Hochdurchsatz-Coprozessor mit vielen integrierten Kernen (MIC) (der 30 oder mehr Kerne aufweist) oder verwendet einen solchen, um den virtuellen Maschinen, die auf dem Server laufen, eine große Menge an Berechnungsressourcen bereitzustellen. Eine oder mehrere Komponenten des Prozessors 400 können ein Teil von einem oder mehreren Substraten sein und/oder auf ihnen unter Verwendung einer beliebigen Anzahl von Prozesstechnologien, wie z.B. BiCMOS, CMOS oder NMOS, ausgeführt werden.
  • Die Speicherhierarchie weist eine oder mehrere Cache-Ebenen innerhalb der Kerne, einen Satz oder eine oder mehrere gemeinsam benutzte Cache-Einheiten 406 und einen (nicht dargestellten) externen Speicher auf, der an den Satz von integrierten Grafik- und Speicher-Controllereinheiten 414 gekoppelt ist. Der Satz der gemeinsam benutzten Cache-Einheiten 406 schließt einen oder mehrere Cache-Speicher einer mittleren Ebene (z.B. einen Cache der Ebene 2 (L2) und einen der Ebene 3 (L3)) ein. In einer Ausführungsform verbindet eine Zwischenverbindungseinheit 412 auf Ringbasis die Übersetzungslogik 408, den Satz gemeinsam genutzter Cache-Einheiten 406 und die Systemagent-Einheit 410 einschließlich der integrierten Grafik- und Speicher-Controllereinheit(en) 414 miteinander. In einer Ausführungsform wird die Kohärenz zwischen einer oder mehreren Cache-Einheiten 406 und den Kernen 402-A-N aufrechterhalten.
  • In einigen Ausführungsformen ist einer oder sind mehrere der Kerne 402A-N zum Multithreading fähig. Der Systemagent 410 enthält diejenigen Komponenten, welche die Kerne 402A-N koordinieren und betreiben. Der Systemagent 410 kann zum Beispiel eine Leistungsregelungseinheit (PCU) und eine Display-Einheit enthalten. Die PCU kann eine Logik und Komponenten enthalten, die für die Regelung des Leistungszustandes der Kerne 402A-N und der integrierten Grafik-Logik 408 benötigt werden. Die Display-Einheit dient als Treiber der einen oder mehreren externen angeschlossenen Displays.
  • Die Kerne 402A-N können in Bezug auf den Architektur-Befehlssatz homogen oder heterogen sein; das heißt, zwei oder mehrere von den Kernen 402A-N können zur Ausführung des gleichen Befehlssatzes in der Lage sein, während andere nur zum Ausführen einer Teilmenge dieses Befehlssatzes oder eines anderen Befehlssatzes fähig sein können. In einer Ausführungsform führen ein oder mehrere Kerne 402A-N einen standardmäßigen X86-Befehlssatz aus, während ein oder mehrere zusätzliche Kerne einen erweiterten X86-Befehlssatz ausführen, der von der übersetzungsspezifischen Logik 408 Gebrauch macht.
  • 5 ist eine Übersicht über eine Ausführungsform eines Verfahrens des QoS-basierten Binärübersetzungs- und Ausführungsstreaming auf einem Server auf Basis einer X86-CPU. In einer Ausführungsform empfängt ein cloudbasierter Anwendungsstreaming-Dienst eine Anforderung über ein Netzwerk, eine ARM-ISA-Anwendung auszuführen, wie im Block 502 dargestellt ist. Im Block 504 überprüft ein Server-Ablaufplaner die QoS-Kriterien und weist auf Basis der Kriterien die Anwendung einem Server zu. Zum Beispiel kann der Server-Ablaufplaner auf Basis der Berechnungs- und Grafikintensität eine Anforderungspriorität festsetzen und die Anforderung einem Server mit einer ausreichenden Ausführungskapazität zuweisen. In einer Ausführungsform des Servers weist der Ablaufplaner demselben Server aufeinanderfolgende Anforderungen für dieselbe Anwendung zu, wenn möglich derart, dass der Server die übersetzte Anwendung aus einem Anwendungs-Cache oder aus zuvor übersetzten Anwendungen heraus aufrufen kann, was dem Server ermöglicht, wiederholte Übersetzungen derselben Anwendungsbinärdatei zu vermeiden. In einer Ausführungsform wird auch eine Substitutionsliste für akzeptable X86-ISA-ähnlich arbeitende Programme unterstützt, welche die gleiche Funktionalität wie die angeforderten ARM-ISA-Anwendungen bereitstellen. Wenn entweder nativ oder über eine zuvor ausgeführte Übersetzung ein akzeptables X86-ISA-ähnlich arbeitendes Programm verfügbar ist, dann setzt der Server transparent das X86-ähnlich arbeitende Programm für das ARM-ISA-Programm ein.
  • Im Block 506 überprüft der Server den Satz von virtuellen Servern, die in dem Satz von virtuellen Maschinen auf dem Server laufen, und weist einer verfügbaren virtuellen Maschine, die den QoS-Kriterien der Aufgabe entspricht, so z.B. einer VM mit einer geeigneten Rahmenpuffergröße oder einer VM mit einer angemessenen Menge von verfügbaren Grafikcontroller-Ausführungsressourcen, eine Übersetzungsaufgabe zu. Im Block 508 wird in der zugewiesenen virtuellen Maschine eine ARM-ISA-Anwendungsbinärdatei übersetzt. Die Prozessoren bieten für die ARM-ISA-Übersetzung spezifische Befehle an, welche die die Übersetzungssoftware und die virtuellen Maschinen verwenden können. In einer Ausführungsform können die Übersetzungsbefehle mit einer höheren Priorität als ein anderer Code ausgeführt werden, was den Übersetzungsbefehlen und -Daten eine höhere Cache-Priorität gibt als anderen Aufgaben, die auf den verschiedenen Prozessoren, welche zum Ausführen der Übersetzungssoftware verwendet werden, ausgeführt werden.
  • Wie im Block 510 dargestellt ist, wird die übersetzte Software auf dem Server ausgeführt, um eine Display-Ausgabe für die Anwendung zu erzeugen. Beliebige Eingabedaten oder Steuerungseingaben, die durch den Nutzer an der Client-Vorrichtung bereitgestellt werden, werden der ablaufenden Anwendung auf dem Server zugeführt, was es einem Nutzer an der Client-Vorrichtung ermöglicht, die ablaufende Anwendung so zu steuern, als ob die Anwendung auf der Client-Vorrichtung ausgeführt würde. Jeder Rahmen der Ausgabe wird durch den Server gerendert, und am Block 512 wird die Ausgabe in ein Medienformat codiert, welche der Client-Vorrichtung über ein Netzwerk übermittelt wird, wie im Block 514 dargestellt ist. Das Ausführen, Codieren und Übertragen wird durch QoS-Kriterien geregelt, wie z.B. die Display-Auflösung der Client-Vorrichtung, die Umlauflatenzzeit über das Netzwerk zwischen dem Server und der Client-Vorrichtung und der Anwendungstyp, der fernausgeführt wird. In einer Ausführungsform verwendet der Server die Grafikprozessorbeschleunigung für grafisch intensive Arbeitsvorgänge. Dem einen oder den mehreren Grafikprozessoren auf dem Server können Zeitschlitze zugeteilt werden, die es jeder virtuellen Maschine erlauben, auf einem Server auf Basis einer Ausführungspriorität eine spezifische Menge an Grafikprozessor-Ausführungszeit abzuarbeiten. In einer Ausführungsform verwendet der Server Grafikprozessoren mit einer Allzweckberechnungsfähigkeit, was dem Grafikprozessor erlaubt, zusätzliche Berechnungsressourcen bereitzustellen, um die verschiedenen Prozessoren des Servers und die verschiedenen verteilten Prozessoren, die an den Server gekoppelt sind, zu unterstützen.
  • 6 ist ein Flussdiagramm einer Ausführungsform eines serverseitigen Prozesses zur Verwendung einer prioritätsstufenbasierten Beschleunigung für eine ARM-ISA-Binärübersetzung. Wie im Block 602 dargestellt ist, wird in einer Ausführungsform die Anwendungspriorität auf Basis der Latenzzeit zwischen dem Server und der Client-Vorrichtung und der Dienstgütevereinbarungs(SLA)-Frist für die Anwendung festgelegt. Um eine Qualitätsdienstleistung aufrechtzuerhalten, wird durch den Server eine vereinbarte Dienstgüte für die Fernanwendungsausfiihrung bereitgestellt. Die Client-Vorrichtung erwartet innerhalb eines vereinbarten Zeitraums eine Reaktion auf eine Fernanwendungsanforderung, und die Zeit, die bis zum Ablauftermin verbleibt, gibt Auskunft über die Ausführungspriorität der Übersetzung. Hat zum Beispiel eine Ablaufplanungsverzögerung ein eingeschränktes Fenster für die Anwendungsübersetzung zur Folge, dann wird der Übersetzungsaufgabe eine hohe Priorität gegeben, und die Übersetzungsaufgabe wird mittels Anwendung zusätzlicher Berechnungsressourcen auf die Übersetzungsaufgabe beschleunigt.
  • Parallel zur Bestimmung der Anwendungspriorität gemäß der Darstellung im Block 602 wird in einer Ausführungsform eine Liste von Zuweisungen potenzieller virtueller Maschinen (VM) erzeugt, wie im Block 604 dargestellt ist. Die potenziellen Zuweisungen basieren auf QoS-Kriterien, die Charakteristiken der Client-Vorrichtung und den Anwendungstyp umfassen. Die Liste der potenziellen Zuweisungen umfasst VM mit einer Rahmen-Pufferkonfiguration, die mit der Display-Auflösung der Client-Vorrichtung kompatibel ist, oder VM mit ausreichenden verfügbaren Grafikprozessor-Ausführungsressourcen, wenn die Anwendung grafikintensiv ist. Im Block 606 wird eine virtuelle Maschine auf Basis der verfügbaren Ausführungsressourcen aus der Liste der potenziellen VM ausgewählt, und die Anwendungsbinärdatei wird der VM zugewiesen. Die VM führt dann die Binärübersetzung aus, wie im Block 608 dargestellt ist.
  • In einer Ausführungsform wird ein Prioritäts-Erzwingungsmechanismus verwendet, um eine beschleunigte Binärübersetzung in den virtuellen Maschinen mit höheren Prioritätsstufen zu ermöglichen. Nähert sich zum Beispiel ein Übersetzungsprozess seinem Ablauftermin, dann kann der Server den Übersetzungsprozess mittels Hinzufügen größerer Ausführungsressourcen zu den Übersetzungs-VM beschleunigen. Es werden Registerbits, Hardwarezeitgeber und eine in die Server-Hardware integrierte Steuerlogik verwendet, um die VM-Ausführung zu verwalten und den VM, welche Aufgaben hoher Priorität ausführen, größere Ausführungsressourcen bereitzustellen.
  • 7 ist ein Flussdiagramm eines Prozesses zur Verwendung der Grafikprozessorbeschleunigung gemäß einer Ausführungsform. Eine Ausführungsform des QoS-basierten Binärübersetzungs- und Anwendungsstreaming beginnt am Block 702 mit einer Überprüfung der QoS-Kriterien für die übersetzte Anwendung. Zum Beispiel sind die QoS-Kriterien, welche die Display-Auflösung und den Anwendungstyp enthalten, Indikatoren für den Grad der grafischen Komplexität, die in einer Anwendung vorliegt. Wurde im Block 704 bestimmt, dass die Anwendung eine hohe Grafiklast aufweist, dann führt der Server die Anwendung aus und rendert die Rahmenausgabe unter Verwendung der Grafikprozessorbeschleunigung, wie im Block 706 dargestellt ist. Zum Beispiel setzt eine Spieleanwendung, die bei einer HD-Auflösung (z.B. 1280x720, 1920x1080 usw.) ausgeführt wird, einen Grafikprozessor ein, um die Ausgaberahmen der Anwendung zu rendern. Wenn die QoS-Kriterien anzeigen, dass die Anwendung innerhalb des SLA-Zeitabschnitts unter Verwendung von Allzweck-Prozessorkernen ausgeführt werden kann, dann wird(werden) ein oder mehrere CPU-Kern(e) zur Ausführung und zum Rendern der Ausgaberahmen der Anwendung verwendet, wie im Block 708 dargestellt ist. Eine Dienstprogrammanwendung, wie z.B. eine Tabellenkalkulation, oder andere Office-Anwendungen laufen wahrscheinlich ohne Grafikbeschleunigung. Eine Ausführungsform kann jedoch Grafikprozessoren einsetzen, um das Rendern zu beschleunigen, wenn zum Beispiel die Netzwerklatenzzeit anzeigt, dass es schwierig ist, die SLA-Ablauffristen ohne beschleunigtes Rendern einzuhalten.
  • Nach dem Rendern werden die Ausgaberahmen in ein Medienformat codiert, wie im Block 710 dargestellt ist. In einer Ausführungsform wird das zu verwendende Medienformat auf Basis des Satzes von Mediendecodierungsfähigkeiten der Client-Vorrichtung bestimmt, einschließlich dessen, ob die Client-Vorrichtung hardwarebeschleunigtes Decodieren unterstützt. Unterstützt eine Client-Vorrichtung zum Beispiel ein hardwareunterstütztes Decodieren von Medien, die im H.264-Format codiert sind, dann kann der Server die Ausgaberahmen in das H.264-Format codieren, bevor der Ausgaberahmen der Client-Vorrichtung übermittelt wird. In einer Ausführungsform verwendet der Server eine spezialisierte Medienencoder-Hardware, um Ausgaberahmen vor der Übertragung an die Client-Vorrichtung zu codieren. In einer Ausführungsform enthält der Grafikprozessor eine Medienencoder-Hardware. In einer Ausführungsform unterstützt der Prozessor Befehle zum Beschleunigen des Medienencodierens.
  • Die 8-11 sind Blockdiagramme von Computerarchitekturbeispielen. Es sind auch andere Systemausgestaltungen und -Konfigurationen geeignet, die vom Stand der Technik her für Laptops, Desktops, Taschenrechner, Smartphones, Ingenieurarbeitsplatzrechner, Server, Netzwerkvorrichtungen, Netzwerkknoten, Schalter, eingebettete Prozessoren, digitale Signalprozessoren (DSP), Grafikgeräte, Videospielgeräte, Set-Top-Boxen, Mikrocontroller, Mobiltelefone, tragbare Media-Player, handgehaltene Geräte und verschiedene andere elektronische Geräte bekannt sind.
  • 8 zeigt ein Blockdiagramm eines Systems 800 gemäß einer Ausführungsform. Das System 800 enthält einen oder mehrere Prozessoren 810, 815, die an einen Controllerknoten 820 angeschlossen sind. In einer Ausführungsform weist der Controllerknoten 820 einen Grafik-Speicher-Controllerknoten (GMCH) 890 und einen Eingabe/Ausgabe-Knoten (IOH) 850 auf, der GMCH 890 weist Speicher- und Grafikcontroller auf, die mit dem Speicher 840 und einem Coprozessor 845 verbunden sind; der IOH 850 verbindet die Eingabe/Ausgabe(E/A)-Geräte 860 mit dem GMCH 890. Alternativ ist einer oder sind beide von den Speicher- und Grafikcontrollern in den Prozessor integriert (wie hier beschrieben ist), der Speicher 840 und der Coprozessor 845 sind mit dem Prozessor 810 und der Controllerknoten 820 ist in einem einzigen Chip mit dem IOH 850 verbunden.
  • Der optionale Charakter zusätzlicher Prozessoren 815 ist in 8 durch gestrichelte Linien gekennzeichnet. Jeder Prozessor 810, 815 weist einen oder mehrere der hier beschriebenen Verarbeitungskerne auf, von denen jeder irgendeine Variante des Prozessors 400 ist.
  • In einer Ausführungsform ist der Speicher 840 ein dynamischer Speicher mit wahlfreiem Zugriff (DRAM). In einer Ausführungsform ist 840 ein Phasenwechselspeicher (PCM) oder eine Kombination von PCM und DRAM. Für mindestens eine Ausführungsform kommuniziert der Controllerknoten 820 mit dem(den) Prozessor(en) 810, 815 über einen Multidrop-Bus, wie z.B. eine Ringschnittstelle, einen Front-Side-Bus (FSB), eine Punkt-zu-Punkt-Schnittstelle, wie z.B. Quick-Path-Interconnect (QPI), oder eine ähnliche Verbindung 895.
  • In einer Ausführungsform ist der Coprozessor 845 ein Spezialprozessor, wie zum Beispiel ein MIC-Prozessor mit einem hohen Durchsatz, ein Netzwerk- oder Kommunikationsprozessor, eine Kompressionsmaschine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen. In einer Ausführungsform kann der Controllerknoten 820 einen integrierten Grafikbeschleuniger aufweisen. In einer Ausführungsform ist eine Übersetzungs- oder Emulationsbeschleunigungshardware vorhanden, wie hier beschrieben ist.
  • Es kann eine Vielzahl von Unterschieden zwischen den physikalischen Ressourcen 810, 815 hinsichtlich eines Spektrums der Leistungskennzahlen geben, die Architektur-, Mikroarchitektur-, thermische, Leistungsverbrauchs-Charakteristiken und dergleichen einschließen.
  • 9 ist ein Blockdiagramm eines spezifischeren Beispiels für ein Serversystem 900 gemäß einer Ausführungsform. Wie in 9 dargestellt ist, ist das Multiprozessorsystem 900 ein Punkt-zu-Punkt-Verbindungssystem und weist einen ersten Prozessor 970 sowie einen zweiten Prozessor 980 auf, die über eine Punkt-zu-Punkt-Verbindung 950 verbunden sind. Jeder der Prozessoren 970 und 980 ist eine Variante des Prozessors 400. In einer Ausführungsform entsprechen die Prozessoren 970 und 980 den Prozessoren 810 und 815, während der Coprozessor 938 der Coprozessor 845 ist. In einer weiteren Ausführungsform entsprechen die Prozessoren 970 und 980 dem Prozessor 810 und dem Coprozessor 845.
  • Die Prozessoren 970 und 980 weisen gemäß Darstellung integrierte Speichercontroller(IMC)-Einheiten 972 bzw. 982 auf. Der Prozessor 970 weist als Teil seiner Bus-Controllereinheiten auch Punkt-zu-Punkt(P-P)-Schnittstellen 976 und 978 auf, ebenso weist der Prozessor 980 P-P-Schnittstellen 986 und 988 auf. Die Prozessoren 970, 980 können über Punkt-zu-Punkt(P-P)-Schnittstelle 950 unter Verwendung von P-P-Schnittstellenschaltkreisen 978, 988 Informationen austauschen. Wie in 9 dargestellt ist, verbinden die IMC 972 und 982 die Prozessoren mit den jeweiligen Speichern, nämlich einem Speicher 932 und einem Speicher 934, die Teile eines Hauptspeichers sein können, die lokal an den jeweiligen Prozessoren angebracht sind.
  • Die Prozessoren 970, 980 können jeweils über individuelle P-P-Schnittstellen 952, 954 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltkreisen 976, 994, 986, 998 Informationen mit einem Chipsatz 990 austauschen. Der Chipsatz 990 tauscht optional über eine Hochleistungsschnittstelle 939 Informationen mit dem Coprozessor 938 aus. In einer Ausführungsform ist der Coprozessor 938 ein Spezialprozessor, wie zum Beispiel ein MIC-Prozessor mit einem hohen Durchsatz, ein Netzwerk- oder Kommunikationsprozessor, eine Kompressionsmaschine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor, ein Binärübersetzungsbeschleuniger oder dergleichen.
  • Ein gemeinsam genutzter Cache (nicht dargestellt) kann in einem der beiden Prozessoren oder außerhalb von beiden Prozessoren, aber über eine P-P-Zwischenverbindung noch mit den Prozessoren verbunden, derart enthalten sein, dass die lokalen Cache-Informationen von einem der beiden oder von beiden Prozessoren in dem gemeinsam genutzten Cache gespeichert werden können, wenn ein Prozessor in einen Modus niedriger Leistung versetzt wird. In einer Ausführungsform erteilt der gemeinsam genutzte Cache von 900 den Übersetzungs-Beschleunigungsfunktionen und Virtualisierungs-Beschleunigungsfunktionen eine Priorität, wie hier beschrieben wurde.
  • Der Chipsatz 990 ist über eine Schnittstelle 996 an einen ersten Bus 916 angeschlossen. In einer Ausführungsform ist der erste Bus 916 ein Peripheral-Component-Interconnect(PCI)-Bus oder ein derartiger Bus wie ein PCI-Express-Bus oder ein anderer E/A-Interconnect-Bus der dritten Generation, aber das sind keine einschränkenden Beispiele.
  • Wie in 9 dargestellt ist, können verschiedene E/A-Geräte 914 zusammen mit einer Busbrücke 918, die den ersten Bus 916 an einen zweiten Bus 920 koppelt, an den ersten Bus 916 angeschlossen sein. In einer Ausführungsform ist(sind) ein oder mehrere zusätzliche Prozessor(en) 915, wie z.B. Coprozessoren, MIC-Prozessoren mit einem hohen Durchsatz, GPGPU, Beschleuniger (z.B. Grafikbeschleuniger oder digitale Signalverarbeitungs(DSP)-Einheiten), feldprogrammierbare Gate-Arrays (FPGA) oder ein beliebiger anderer Prozessor an den ersten Bus 916 angeschlossen. In einer Ausführungsform ist der zweite Bus 920 ein Low-Pin-Count(LPC)-Bus. An den zweiten Bus 920 können verschiedene Vorrichtungen, einschließlich einer Tastatur und/oder einer Maus 922, Kommunikationsgeräten 927 und einer Speichereinheit 928, wie z.B. ein Plattenlaufwerk oder eine andere Massenspeichervorrichtung, angeschlossen sein, die in einer Ausführungsform Befehle/Code und Daten 930 enthalten kann. Ferner kann eine Audio-E/A 924 an den zweiten Bus 920 ankoppeln. Es ist anzumerken, dass andere Architekturen möglich sind. Zum Beispiel kann ein System anstelle der Punkt-zu-Punkt-Architektur von 9 einen Multi-Drop-Bus, einen Ringbus oder eine andere derartige Architektur realisieren.
  • 10 ist ein Blockdiagramm eines zweiten, spezifischeren Systembeispiels 1000 gemäß einer Ausführungsform. Ähnliche Elemente in den 9 und 10 weisen gleiche Bezugsziffern auf, und bestimmte Aspekte der 9 sind in der 10 weggelassen worden, um ein Überdecken anderer Aspekte von 10 zu vermeiden.
  • 10 zeigt, dass die Prozessoren 970, 980 in einer Ausführungsform einen integrierten Speicher und eine E/A-Steuerlogik („CL“) 972 bzw. 982 aufweisen. Somit weisen die CL 972, 982 integrierte Speicher-Controllereinheiten auf und enthalten ein E/A-Steuerlogik. 10 zeigt, dass nicht nur die Speicher 932, 934 an die CL 972, 982 gekoppelt sind, sondern auch, dass auch E/A-Geräte 1014 an die Steuerlogik 972, 982 gekoppelt sind. An den Chipsatz 990 sind E/A-Altgeräte 1015 gekoppelt.
  • 11 ist ein Blockdiagramm eines SoC 1100 gemäß einer Ausführungsform. Ähnliche Elemente in 4 weisen gleiche Bezugsziffern auf. Außerdem sind Kästchen in gestrichelten Linien optionale Merkmale an weiterentwickelten SoC 1100. In einer Ausführungsform weist eine Client-Vorrichtung, wie sie hier beschrieben wurde, eine Variante des SoC 1100 auf. In 11 ist(sind) Zwischenverbindungseinheit(en) 1102 angeschlossen an: einen Anwendungsprozessor 1110, der einen Satz von einem oder mehreren Kernen 202A-N und (eine) gemeinsam genutzte Cache-Einheit(en) 406 aufweist; eine Systemagent-Einheit 410; (eine) Bus-Controllereinheit(en) 416; (eine) integrierte Speicher-Controllereinheit(en) 414; einen Satz von einem oder mehreren Coprozessoren 1120, die eine Binärübersetzungs-Beschleunigungslogik, eine integrierte Grafiklogik, einen Bildprozessor, einen Audioprozessor und eine Videoprozessor aufweisen; eine statische Speichereinheit mit wahlfreiem Zugriff (SRAM) 1130; eine Direktspeicherzugriffs(DMA)-Einheit 1132; und eine Displayeinheit 1140 zum Anschluss an ein oder mehrere externe Displays. In einer Ausführungsform weisen der(die) Coprozessoren) 1120 einen Spezialprozessor, wie zum Beispiel einen Netzwerk- oder Kommunikationsprozessor, eine Kompressionsmaschine, eine GPGPU, einen MIC-Prozessor mit hohem Durchsatz, einen eingebetteten Prozessor oder dergleichen auf. In einer Ausführungsform sind der Videoprozessor, die integrierte Grafiklogik oder die GPGPU in dem einen oder den mehreren Kernen 402N enthalten.
  • Ausführungsformen der hier offenbarten Einrichtungen können in Hardware, Software, Firmware oder einer Kombination derartiger Ausführungszugänge realisiert sein. Ausführungsformen können als Computerprogramme oder Programmcode realisiert sein, der auf programmierbaren Systemen läuft, die mindestens einen Prozessor, ein Speichersystem (dazu gehören flüchtige und nicht-flüchtige Speicher und/oder Speicherelemente), mindestens eine Eingabevorrichtung und mindestens eine Ausgabevorrichtung aufweisen.
  • Ein Programmcode, wie z.B. der in 9 dargestellte Code 930, kann auf Eingabebefehle angewendet werden, um die hier beschriebenen Funktionen auszuführen und Ausgabeinformationen zu erzeugen. Die Ausgabeinformationen können auf eine bekannte Weise auf eine oder mehrere Ausgabevorrichtungen angewendet werden. Für die Zwecke dieser Anmeldung schließt ein Verarbeitungssystem ein beliebiges System ein, das einen Prozessor, wie zum Beispiel einen Digitalsignalprozessor (DSP), einen Mikrocontroller, einen anwendungsspezifischen integrierten Schaltkreis (ASIC) oder einen Mikroprozessor, aufweist.
  • Der Programmcode kann in einer höheren verfahrensorientierten oder objektorientierten Programmiersprache realisiert sein, um mit einem Verarbeitungssystem zu kommunizieren. Falls gewünscht ist, kann der Programmcode in einer Assembler- oder Maschinensprache ausgeführt werden. Tatsächlich sind die hier beschriebenen Einrichtungen im Umfang nicht auf irgendeine spezielle Programmiersprache beschränkt. Auf jeden Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein.
  • Ein oder mehrere Aspekte von mindestens einer Ausführungsform können durch repräsentative Befehle realisiert werden, die auf einem maschinenlesbaren Medium gespeichert sind, welches eine verschiedenartige Logik innerhalb des Prozessors verkörpert, die dann, wenn sie von einer Maschine gelesen wird, die Maschine zum Erzeugen einer Logik veranlasst, um die hier beschriebenen Techniken auszuführen. Derartige Darstellungen, die als „IP-Kerne“ bezeichnet werden, können auf einem konkreten, nicht-flüchtigen maschinenlesbaren Medium gespeichert sein und den verschiedenen Kunden oder Fertigungseinrichtungen zum Laden in die Fertigungsmaschinen zur Verfügung gestellt werden, welche die Logik oder den Prozessor eigentlich ausführen.
  • Derartige maschinenlesbare Speichermedien können ohne Einschränkung nicht-flüchtige, konkrete Anordnungen von Gegenständen enthalten, die durch eine Maschine oder eine Vorrichtung hergestellt oder ausgebildet sind, wobei Speichermedien, wie z.B. Festplatten, ein beliebiger anderer Plattentyp einschließlich Disketten, optische Platten, Compactdisk-Festwertspeicher (CD-ROM), wiederbeschreibbare Compactdisks (CD-RW) und magnetooptische Platten, Halbleiterbauelemente, wie z.B. Festwertspeicher (ROM), Speicher mit wahlfreiem Zugriff (RAM), wie z.B. dynamische Speicher mit wahlfreiem Zugriff (DRAM), statische Speicher mit wahlfreiem Zugriff (SRAM), löschbare programmierbare Festwertspeicher (EPROM), Flash-Speicher, elektrisch löschbare programmierbare Festwertspeicher (EEPROM), Phasenänderungsspeicher (PCM), magnetische oder optische Karten oder ein beliebiger anderer Medientyp, der zum Speichern elektronischer Befehle geeignet ist, eingeschlossen sind.
  • Dementsprechend enthalten die Ausführungsformen auch nicht-flüchtige, konkrete maschinenlesbare Medien, die Befehle enthalten oder die Entwurfsdaten, wie z.B. die Hardwarebeschreibungssprache (HDL), enthalten, die Strukturen, Schaltkreise, Vorrichtungen, Prozessoren und/oder hier beschriebene Systemmerkmale festlegen. Derartige Ausführungsformen können auch als Programmprodukte bezeichnet werden.
  • Über das hier Beschriebene hinaus können verschiedene Abänderungen zu den offenbarten Ausführungsformen und Realisierungen ausgeführt werden, ohne ihren Umfang zu überschreiten. Deshalb sollten die Darstellungen und Beispiele hier im Sinne einer Veranschaulichung und nicht einer Einschränkung ausgelegt werden. Der Umfang der Ausführungsformen sollte ausschließlich durch Bezugnahme auf die nachfolgenden Ansprüche bemessen werden.

Claims (13)

  1. System (800) mit: einem Server (102, 206), der einen Hauptprozessor und eine Netzwerkschnittstelle aufweist, wobei der Hauptprozessor einen ersten Befehlssatz aufweist, wobei der Server zum Übersetzen einer Binärdatei, die einen zweiten Befehlssatz aufweist, in eine übersetzte ausführbare Datei dient, die den ersten Befehlssatz aufweist, wobei die Übersetzung unter Verwendung von Quality-of-Service(QoS)-Kriterien ausgeführt wird, wobei die QoS-Kriterien eine prioritätsbasierte Beschleunigung und mehrere Client-Parameter einschließen, wobei die mehreren Client-Parameter eine Client-Vorrichtungsauflösung, eine Client-Vorrichtungslage, einen Client-Anwendungstyp und einen Satz von Client-Decodierungsfähigkeiten umfassen, wobei die prioritätsbasierten Beschleunigungsfaktoren eine Netzwerklatenzzeit zwischen dem Server und der Client-Vorrichtung (175, 202) zum Festlegen der Binärübersetzungspriorität umfassen, wobei der Server die übersetzte Binärdatei ausführt, um einen Rahmen einer gerenderten Ausgabe zu erzeugen, und den Rahmen der gerenderten Ausgabe über die Netzwerkschnittstelle überträgt; und einer Client-Vorrichtung (175, 202), die ein Display, einen Client-Prozessor und eine Client-Netzwerkschnittstelle aufweist, wobei die Client-Vorrichtung von dem Server (102, 206) den Rahmen der gerenderten Ausgabe über die Client-Netzwerkschnittstelle empfängt und den Rahmen der gerenderten Ausgabe auf dem Display unter Verwendung des Client-Prozessors (314, 400, 810, 970, 980) anzeigt, wobei der Server (102, 206) die Binärübersetzung in einer virtuellen Maschine (208) ausführt, wobei die virtuelle Maschine (208) für die Client-Vorrichtung (175, 202) abgestimmt ist, wobei die Ausführungsressourcen der virtuellen Maschine (208) über die QoS-Kriterien abgestimmt sind.
  2. Binärübersetzungssystem nach Anspruch 1, wobei der Rahmen der gerenderten Ausgabe in ein Medienformat codiert wird, bevor der Server (102, 206) den Rahmen der gerenderten Ausgabe überträgt.
  3. Binärübersetzungssystem nach Anspruch 2, wobei der Server (102, 206) ferner einen Grafikprozessor aufweist, um den Rahmen der gerenderten Ausgabe zu erzeugen.
  4. Binärübersetzungssystem nach Anspruch 3, wobei der Grafikprozessor den Rahmen der gerenderten Ausgabe in das Medienformat codiert.
  5. Binärübersetzungssystem nach einem der Ansprüche 1 bis 4, wobei der Client-Prozessor (314, 400, 810, 970, 980) der Client-Vorrichtung (175, 202) den ersten Befehlssatz aufweist.
  6. Binärübersetzungssystem nach einem der Ansprüche 1 bis 5, wobei der Client-Prozessor (314, 400, 810, 970, 980) der Client-Vorrichtung (175, 202) den zweiten Befehlssatz aufweist.
  7. Binärübersetzungssystem nach einem der Ansprüche 1 bis 6, wobei der erste Befehlssatz ein x86-Befehlssatz und der zweite Befehlssatz ein ARM-Befehlssatz ist.
  8. Server (102, 206) mit: einem nicht flüchtigen maschinenlesbaren Speichermedium, das Befehle speichert; einem Prozessor (314, 400, 810, 970, 980) zum Ausführen der Befehle, wobei die Befehle Arbeitsvorgänge ausführen zum: Übersetzen einer Binärdatei, die einen zweiten Befehlssatz aufweist, in eine übersetzte Binärdatei, die einen ersten Befehlssatz aufweist, wobei die Übersetzung durch Quality-of-Service(QoS)-Kriterien geregelt wird, wobei die Befehle zum Übersetzen der Binärdatei in einem Cache des Prozessors (314, 400, 810, 970, 980) Priorität haben, Ausführen der übersetzten Binärdatei, um einem Ausgaberahmen (236, 246) zu rendern; einem Medienencoder, der mit dem Prozessor (314, 400, 810, 970, 980) verbunden ist, um den Ausgaberahmen (236, 246) in ein Medienformat zu codieren; und einer Netzwerkvorrichtung, die mit dem Medienencoder und dem Prozessor (314, 400, 810, 970, 980) verbunden ist, wobei die Netzwerkvorrichtung den codierten Ausgaberahmen (236, 246) an eine Client-Vorrichtung (175, 202) sendet, wobei die Arbeitsvorgänge zum Übersetzen der Binärdatei in einer virtuellen Maschine (208) ausgeführt werden, wobei die QoS-Kriterien eine prioritätsbasierte Beschleunigung und mehrere Client-Parameter einschließen, wobei die mehreren Client-Parameter eine Client-Vorrichtungsauflösung, eine Client-Vorrichtungslage, einen Client-Anwendungstyp und einen Satz von Client-Decodierungsfähigkeiten umfassen.
  9. Server (102, 206) nach Anspruch 8, ferner mit einem Ablaufplaner zum Festlegen einer Ausführungspriorität einer virtuellen Maschine (208) auf Basis der QoS-Kriterien.
  10. Server (102, 206) nach einem der Anspruch 8 oder Anspruch 9, ferner mit einem Grafikbeschleuniger, der an den Prozessor (314, 400, 810, 970, 980) gekoppelt ist, um den Prozessor beim Rendern des Ausgaberahmens (236, 246) zu unterstützen.
  11. Server (102, 206) nach Anspruch 10, wobei der Grafikbeschleuniger den Medienencoder unterstützt, um den Ausgaberahmen (236, 246) in ein Medienformat zu codieren.
  12. Nicht flüchtiges computerlesbares Medium, das Befehle zur Ausführung durch einen Prozessor (314, 400, 810, 970, 980) speichert, wobei die Befehle bei der Ausführung den Prozessor veranlassen, Arbeitsvorgänge auszuführen, wobei die Arbeitsvorgänge umfassen: Übersetzen einer Binärdatei, die einen zweiten Befehlssatz aufweist, in eine übersetzte Binärdatei, die einen ersten Befehlssatz aufweist, wobei die Übersetzung durch Quality-of-Service(QoS)-Kriterien geregelt wird, wobei die Übersetzung in einer virtuellen Maschine (208) geschieht, wobei die Ausführungsressourcen der virtuellen Maschine über die QoS-Kriterien für die Client-Vorrichtung abgestimmt sind, wobei die QoS-Kriterien eine prioritätsbasierte Beschleunigung und mehrere Client-Parameter einschließen, wobei die mehreren Client-Parameter eine Client-Vorrichtungsauflösung, eine Client-Vorrichtungslage, einen Client-Anwendungstyp und einen Satz von Client-Decodierungsfähigkeiten umfassen, wobei die prioritätsbasierten Beschleunigungsfaktoren eine Netzwerklatenzzeit zwischen dem Server und der Client-Vorrichtung (175, 202) zum Festlegen der Binärübersetzungspriorität umfassen; Ausführen der übersetzten Binärdatei, wobei die Ausführung durch einen Grafikprozessor unterstützt wird, wenn die Grafikbeschleunigung durch die QoS-Kriterien angezeigt ist; Codieren des Ausgaberahmens (236, 246) in ein Medienformat, wobei das Medienformat durch den Satz von Client-Decodierungsfähigkeiten ausgewählt ist; und Senden der Ausgaberahmens (236, 246) über eine Netzwerkvorrichtung an eine Client-Vorrichtung (175, 202).
  13. Computerlesbares Medium nach Anspruch 12, ferner umfassend: Übersetzen einer ersten Binärdatei in einer ersten virtuellen Maschine (208) auf einem ersten Server (102, 206); Übersetzen einer zweiten Binärdatei in einer zweiten virtuellen Maschine (208) auf einem zweiten Server (102, 206); und Ausführen einer dritten Binärdatei auf dem ersten Server (102, 206), wobei der erste Server zuvor die dritte Binärdatei übersetzt hat und die dritte Binärdatei vor der Ausführung rückübersetzt wird.
DE102014003855.6A 2013-03-15 2014-03-17 QOS-basiertes binäres Übersetzungs- und Anwendungsstreaming Active DE102014003855B4 (de)

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
DE102014003855A1 DE102014003855A1 (de) 2014-09-18
DE102014003855B4 true DE102014003855B4 (de) 2019-12-19

Family

ID=50554839

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102014003855.6A Active DE102014003855B4 (de) 2013-03-15 2014-03-17 QOS-basiertes binäres Übersetzungs- und Anwendungsstreaming

Country Status (7)

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

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
WO2016162720A1 (en) * 2015-04-10 2016-10-13 Google Inc. Binary translation into native client
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
CN110121698A (zh) * 2016-12-31 2019-08-13 英特尔公司 用于异构计算的系统、方法和装置
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
US11061871B2 (en) * 2019-03-15 2021-07-13 Google Llc Data placement for a distributed database
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
WO2020190814A1 (en) 2019-03-15 2020-09-24 Intel Corporation Graphics processors and graphics processing units having dot product accumulate instruction for hybrid floating point format
CN112534405A (zh) 2019-03-15 2021-03-19 英特尔公司 用于脉动阵列上的块稀疏操作的架构
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
EP4068104A1 (de) * 2021-03-30 2022-10-05 ABB Schweiz AG Verfahren zur steuerung eines opc-ua-servers, opc-ua-server, steuerschaltung, computerprogramm und computerlesbares medium

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020071449A1 (en) 2000-11-01 2002-06-13 Jin-Meng Ho Unified channel access for supporting quality of service (QoS) in a local area Network
US20020184618A1 (en) 2001-06-04 2002-12-05 Vasanth Bala Networked client-server architecture for transparently transforming and executing applications
US20110179136A1 (en) 2007-10-17 2011-07-21 Dispersive Networks, Inc. Apparatus, systems and methods utilizing dispersive networking

Family Cites Families (37)

* 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
EP0991994A4 (de) 1997-06-25 2001-11-28 Transmeta Corp Verbesserter mikroprozessor
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
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
WO2006020834A1 (en) * 2004-08-11 2006-02-23 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
CA2643300C (en) * 2006-02-21 2011-11-08 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
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
WO2009157795A1 (en) * 2008-06-27 2009-12-30 Intel Corporation Static code recognition for binary translation
US9602864B2 (en) * 2009-06-08 2017-03-21 Time Warner Cable Enterprises Llc Media bridge apparatus and methods
US9420055B2 (en) * 2010-05-13 2016-08-16 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 日本電気株式会社 情報処理システム、情報処理方法、情報処理装置およびその制御方法と制御プログラム
US9141362B2 (en) * 2012-09-27 2015-09-22 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

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020071449A1 (en) 2000-11-01 2002-06-13 Jin-Meng Ho Unified channel access for supporting quality of service (QoS) in a local area Network
US20020184618A1 (en) 2001-06-04 2002-12-05 Vasanth Bala Networked client-server architecture for transparently transforming and executing applications
US20110179136A1 (en) 2007-10-17 2011-07-21 Dispersive Networks, Inc. Apparatus, systems and methods utilizing dispersive networking

Also Published As

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

Similar Documents

Publication Publication Date Title
DE102014003855B4 (de) QOS-basiertes binäres Übersetzungs- und Anwendungsstreaming
DE102020108218A1 (de) Vorrichtung und Verfahren zur Konstruktion von Begrenzungsvolumenhierarchien mit reduzierter Genauigkeit
DE112016006154T5 (de) Multi-Core-Kommunikationsbeschleunigung Mithilfe einer Hardware-Warteschlangenvorrichtung
DE102020124932A1 (de) Vorrichtung und Verfahren zur Echtzeit-Grafikverarbeitung mittels lokaler und cloudbasierter Grafikverarbeitungsbetriebsmittel
DE102013017509A1 (de) Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten
DE112011101725T5 (de) Sub-Puffer-Objekte
DE102021102589A1 (de) Berechnungsgraph-optimierung
DE112012002465T5 (de) Grafikprozessor mit nicht blockierender gleichzeitiger Architektur
DE102018006537A1 (de) Dynamische Leistungsbeeinflussung in einem Prozessor
DE112017001703T5 (de) Verfahren und Vorrichtung zum effizienteren Ray-Tracing von instanziierter Geometrie
DE102013017511A1 (de) Effiziente speichervirtualisierung in mehrsträngigen verarbeitungseinheiten
DE112017003234T5 (de) Reduzieren von Speicherzugrifflatenzen während der Strahltraversierung
DE112013004800T5 (de) Anweisung zur Bitverschiebung nach links mit Ziehen von Einsen in niedrigwertigere Bit
DE102020132377A1 (de) Vorrichtung und Verfahren zur Drosselung einer Raytracing-Pipeline
DE102013208421A1 (de) Sharing einer Grafikverarbeitungseinheit unter vielen Anwendungen
DE112018007634T5 (de) Vorrichtung und verfahren für eine virtualisierte anzeige
DE102020113400A1 (de) Registerteilungsmechanismus
DE102020113789A1 (de) Asynchroner ausführungsmechanismus
DE102012222391B4 (de) Mehrkanal-Zeitscheibengruppen
DE102019124705A1 (de) Multiphasenarchitektur für Mehrraten-Pixelschattierung
DE102019106701A1 (de) Einrichtung und Verfahren zum virtualisierten Planen von mehreren doppelten Grafik-Engines
DE112018007635T5 (de) Vorrichtung und verfahren zur effizienten gemeinsamen nutzung einer lokalen anzeige für einen virtualisierten grafikprozessor
DE102020107554A1 (de) Verteilte kopier-engine
DE102020113932A1 (de) Virtualisierung und mehrfach-mandanten-unterstützung in grafikprozessoren
DE112019006744T5 (de) Einrichtung und verfahren für nahtlose containermigration für grafikprozessoren und zugehörige vorrichtungen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final