BR112016004712B1 - Dispositivo de interface, sistema, método, e, mídia legível por computador - Google Patents

Dispositivo de interface, sistema, método, e, mídia legível por computador Download PDF

Info

Publication number
BR112016004712B1
BR112016004712B1 BR112016004712-5A BR112016004712A BR112016004712B1 BR 112016004712 B1 BR112016004712 B1 BR 112016004712B1 BR 112016004712 A BR112016004712 A BR 112016004712A BR 112016004712 B1 BR112016004712 B1 BR 112016004712B1
Authority
BR
Brazil
Prior art keywords
interface
mass storage
processing unit
host
data
Prior art date
Application number
BR112016004712-5A
Other languages
English (en)
Other versions
BR112016004712A2 (pt
Inventor
Roelof Roderick Colenbrander
Original Assignee
Sony Computer Entertainment America Llc
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 Sony Computer Entertainment America Llc filed Critical Sony Computer Entertainment America Llc
Publication of BR112016004712A2 publication Critical patent/BR112016004712A2/pt
Publication of BR112016004712B1 publication Critical patent/BR112016004712B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • 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
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/352Details of game servers involving special game server arrangements, e.g. regional servers connected to a national server or a plurality of servers managing partitions of the game world
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/355Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an MPEG-stream for transmitting to a mobile phone or a thin client
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/90Constructional details or arrangements of video game devices not provided for in groups A63F13/20 or A63F13/25, e.g. housing, wiring, connections or cabinets
    • A63F13/95Storage media specially adapted for storing game information, e.g. video game cartridges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Abstract

dispositivo de interface, sistema, e, método. os aspectos da presente invenção referem-se a sistemas e métodos para a virtualização de armazenamento em massa usando uma placa de interface, ou outra unidade de hardware especial, operativamente acoplado a um sistema host. em várias modalidades, o dispositivo de interface e um sistema host podem emular coletivamente um dispositivo de armazenamento em massa para um outro sistema de computação de "terminal" de uma maneira que seja transparente para o sistema do terminal. além disso, em várias modalidades, um dispositivo de armazenamento em massa pode ser emulado de uma maneira que seja transparente para o sistema de terminal, sem a necessidade de modificações à arquitetura de hardware ou software da plataforma de terminal.

Description

REIVINDICAÇÃO DE PRIORIDADE
[001] Este pedido reivindica o benefício do número de Pedido não- Provisória co-pendente, antes de comumente atribuído, U.S. 14/135.213, a Roelof Roderick Colenbrander, intitulado "MASS STORAGE VIRTUALIZATION FOR CLOUD COMPUTING", (n° de Registo Legal SCEA13031US00), depositado em 19 de dezembro de 2013, cujo todo o conteúdo é incorporado neste documento por referência.
REFERÊNCIA CRUZADA A PEDIDOS RELACIONADOS
[002] Este pedido está relacionado ao número de Pedido co-pendente comumente atribuído U.S. 14/135.374, para Roelof Roderick Colenbrander, intitulada "VIDEO LATENCY REDUCTION", (n° de Registro Legal SCEA13037US00), depositado em 19 de dezembro de 2013, cujo todo o conteúdo é incorporado neste documento por referência.
CAMPO
[003] Os aspectos da presente descrição referem-se à virtualização de armazenamento. Outros aspectos da presente divulgação referem-se à virtualização de armazenamento para aplicações de computação em nuvem desenvolvidos para plataformas embutidas.
FUNDAMENTOS
[004] Com as larguras de banda e as taxas de transferência de dados dos sistemas de telecomunicações continuando a avançar, muitas das necessidades de computação de hoje em dia estão se deslocando para sistemas de computação distribuída com base na rede, comumente referido como "computação em nuvem". De um modo geral, a computação em nuvem envolve o descarregamento de certas tarefas de computação a um ou mais recursos de computação remotos e utilização dos recursos de computação remotos para fornecer serviços a um dispositivo local. A computação em nuvem é frequentemente implementada como um modelo cliente-servidor, com o servidor remoto fornecendo as capacidades de computação desejados a um dispositivo cliente local, evitando a necessidade do dispositivo cliente local efetuar certas tarefas de computação por contra própria. Em muitos casos, os recursos de computação podem ser totalmente ou quase totalmente descarregados para o servidor, com o cliente fornecendo pouco ou não mais do que uma interface de usuário para a tarefa de computação nuvem, permitindo que potencialmente qualquer dispositivo conectado à Internet sirva como um cliente para uma aplicação específica.
[005] A computação em nuvem foi adotada em uma ampla variedade de serviços, incluindo soluções de armazenamento de dados remoto, serviços de streaming de música e de vídeo e uma grande variedade de outras soluções de consumo e de negócios de computação. Em geral, a computação em nuvem oferece vários benefícios bem conhecidos, incluindo o aumento da eficiência através do uso de recursos compartilhados, flexibilidade acentuada em termos de acesso a conteúdo sem restrições a um dispositivo em particular, os custos iniciais inferiores quando atualizações de hardware se tornam disponíveis e outras vantagens.
[006] Um cenário em que a computação em nuvem ainda tem de conseguir a adoção mais ampla está no campo sempre popular de jogos eletrônicos. Os jogos eletrônicos, incluindo jogos de computador pessoal (PC), jogos de console doméstico, jogos de console de portátil e similares, continuam sendo uma fonte popular de entretenimento entre os consumidores. Com uma coleção grande e sempre crescente de títulos de jogos disponíveis, os jogos em nuvem oferecem uma solução particularmente atraente para muitas demandas de videogame. Idealmente, dentro de um quadro de jogos em nuvem um usuário seria capaz de acessar instantaneamente qualquer título de vídeo game dentre uma vasta coleção de títulos armazenados remotamente, sem necessitar de uma cópia física do jogo, sem ter que esperar pela transferência por download do título e sem localmente possuir o sistema de hardware ou os recursos necessários para executar o jogo. Infelizmente, a implementação desse tipo de serviço dentro de um projeto de servidor tradicional de computação em nuvem apresenta vários desafios técnicos que até agora impediram a adoção generalizada de jogos em nuvem para muitas plataformas de videogame.
[007] Um desafio é que muitos dos jogos eletrônicos de hoje em dia têm ritmo acelerado e são cheios de ação, com gráficos avançados que exigem uma quantidade significativa de recursos de computação para renderizar. Particularmente em um projeto de servidor de com base em streaming de vídeo, em que todos as computações de jogo e as computações de renderização de gráficos são executadas remotamente, o jogo precisa ser capaz de executar todas essas tarefas e entregar um fluxo de áudio/vídeo comprimido ao dispositivo cliente com mínima ou nenhuma latência perceptível em resposta às entradas de controle. Caso contrário, isso pode atrapalhar o sincronismo para o jogador e não conseguirá replicar a capacidade de resposta de uma sessão tradicional de jogo executada localmente.
[008] Outro desafio decorre do fato de que houve tradicionalmente uma distinção entre jogos de PC por um lado, que são projetados para funcionar em computadores pessoais, laptops e outros sistemas de computação de um propósito natureza geral e jogos de console, por outro lado, que são projetados para funcionar em sistemas especializados conhecidos como consoles de videogame. Os consoles de jogos eletrônicos são normalmente concebidos como plataformas embutidas com arquiteturas de computação únicas especialmente adaptadas para o ambiente de jogos eletrônicos. Usar o hardware de console dedicado como uma plataforma de jogos eletrônicos fornecem vários benefícios, particularmente na forma de otimização do hardware para altas demandas de recurso de computação de renderização de gráficos e computações de jogos necessárias para produzir muitos dos jogos eletrônicos de hoje. Como resultado, enquanto os jogos de PC alcançaram alguma popularidade, jogos de console têm tradicionalmente dominado o mercado de videogames e podem continuar a fazê-lo no futuro.
[009] No entanto, a adaptação de consoles de videogame e outras plataformas embutidas para um serviço de streaming em nuvem apresenta vários desafios. Modificações extensivas da arquitetura de hardware ou software da plataforma especializada podem apresentar problemas de compatibilidade com aplicativos desenvolvidos para a plataforma especializada. Como resultado, o servidor de armazenamento e as técnicas de virtualização tradicionais não são uma solução viável para aplicações projetadas com base em streaming de nuvem para muitas dessas plataformas.
[0010] É nesse contexto que surge a presente divulgação.
SUMÁRIO
[0011] Uma implementação da presente invenção pode incluir um dispositivo de interface que tem uma primeira interface de comunicação, uma segunda interface de comunicação e uma unidade de processamento especializado acoplada operativamente às referidas interfaces de comunicação. A primeira interface de comunicação é uma interface de armazenamento em massa. A segunda interface de comunicação é uma interface de expansão. A unidade de processamento especializado inclui um controlador de dispositivo de armazenamento em massa conectados à primeira interface de comunicação e um mecanismo de acesso direto à memória conectado à segunda interface de comunicação. O controlador de dispositivo de armazenamento em massa é configurado para receber uma solicitação de dados de armazenamento em massa através da primeira interface de comunicação, O mecanismo de DMA é configurado para notificar um sistema host da solicitação de dados de armazenamento em massa através da segunda interface de comunicação.
[0012] Outra implementação da presente invenção pode incluir um sistema que tem uma unidade de processamento central; uma primeira unidade de memória acoplada operativamente à unidade de processamento central; um processo de armazenamento incorporado na primeira unidade de memória e executável pela unidade de processamento central (CPU); uma primeira interface de comunicação; e uma unidade de processamento especializado operativamente acoplado à primeira interface de comunicação. A primeira interface de comunicação é uma interface de armazenamento em massa. A unidade de processamento especializado tem um controlador de dispositivo de armazenamento em massa conectado à primeira interface de comunicação e uma interface de acesso à memória acoplado operativamente à CPU. O controlador de dispositivo de armazenamento em massa é configurado para receber uma solicitação de dados de armazenamento em massa através da primeira interface de comunicação. A interface de acesso à memória está configurada para notificar o processo de armazenamento da solicitação de dados de armazenamento em massa, O processo de armazenamento está configurado para processar a solicitação de dados mediante acesso a um sistema de armazenamento.
[0013] Outra implementação pode incluir um método que compreende: a) receber, a partir de um primeiro dispositivo de computação, uma solicitação de dados de armazenamento em massa em um controlador de dispositivo de armazenamento em massa; b) notificar, com uma interface de acesso à memória conectada ao controlador de dispositivo de armazenamento em massa, um processo de armazenamento incorporado em um segundo dispositivo de computação da solicitação de dados; c) acessar, com o processo de armazenamento do segundo dispositivo de computação, um sistema de armazenamento de dados que corresponde à solicitação de dados; d) armazenar, com o processo de armazenamento do segundo dispositivo de computação, os dados que correspondem à solicitação de dados em uma primeira unidade de memória; e) programar, com o processo de armazenamento do segundo dispositivo de computação, o controlador de dispositivo de armazenamento em massa para acessar os dados a partir da primeira unidade de memória a fim de completar a solicitação de dados.
BREVE DESCRIÇÃO DAS FIGURAS
[0014] Os ensinamentos da presente invenção podem ser facilmente compreendidos considerando a seguinte descrição detalhada em conjunto com os desenhos anexos, em que:
[0015] A FIG. 1 é um diagrama esquemático de um exemplo de técnica de streaming através de uma rede.
[0016] A FIG. 2 é um diagrama esquemático de um outro exemplo de técnica de streaming através de uma rede.
[0017] A FIG. 3 é um diagrama esquemático de um exemplo de sistema host que tem uma placa de interface para fornecer a virtualização de armazenamento para um sistema de terminal.
[0018] A FIG. 4A-4B é um diagrama esquemático de um exemplo de arquitetura de computador para um sistema host acoplado a um terminal de sistema. A FIG. 4A é um diagrama esquemático de um exemplo de arquitetura de sistema de terminal. A FIG. 4B é um exemplo de sistema host e arquitetura placa de interface.
[0019] A FIG. 5 é um diagrama esquemático de um exemplo de projeto de interface de placa que tem uma unidade de processamento especializado.
[0020] A FIG. 6 é um diagrama esquemático de um exemplo de método de emulação de um dispositivo de armazenamento em massa.
DESCRIÇÃO DETALHADA
[0021] Embora a seguinte descrição detalhada contenha muitos detalhes específicos para fins de ilustração, aquele versado na técnica irá observar que muitas variações e alterações dos detalhes seguintes estão dentro do escopo da invenção. Por conseguinte, as modalidades de exemplo da invenção descritas abaixo são apresentadas sem qualquer perda de generalidade para, e sem impor limitações sob a invenção reivindicada.
Introdução
[0022] Os aspectos da presente invenção referem-se a sistemas e métodos para a virtualização de armazenamento em massa usando uma placa de interface, ou outra unidade de hardware especial, operativamente acoplado a um sistema host. Em várias modalidades, o dispositivo de interface e um sistema host podem emular colectivamente um dispositivo de armazenamento em massa para um outro sistema de computação de "terminal" de uma maneira que seja transparente para o sistema do terminal. Além disso, em várias modalidades, um dispositivo de armazenamento em massa pode ser emulado de uma maneira que seja transparente para o sistema de terminal, sem a necessidade de modificações à arquitetura de hardware ou software da plataforma de terminal.
[0023] Os versados na técnica podem estar familiarizados com softwares de "máquina virtual", como VMWare, VirtualBox ou Parallels, que permitem que, por exemplo, uma sessão de "virtual" de um sistema operacional mais antigo (por exemplo, Windows XP) seja executado dentro de uma sessão de um sistema operacional mais recente (por exemplo, Windows 7). O software de máquina virtual é muitas vezes usado para simular os componentes de hardware físicos, tais como unidades de disco, placas de rede, placas de vídeo em software por razões de compatibilidade. De acordo com os aspectos da presente divulgação o hardware e o software especializados podem virtualizar um dispositivo de armazenamento em massa em situações nas quais não seja prático fazê-lo com apenas o software.
Detalhes de Implementação
[0024] Para melhor ilustrar os vários aspectos da presente invenção, um primeiro exemplo ilustrativo de um sistema de computação distribuída 100 é representado na FIG. 1. O sistema distribuído 100 representado na FIG. 1 envolve uma pluralidade de dispositivos de computação 102,104 conectados através de uma rede 106, tal como a internet.
[0025] No exemplo de sistema distribuído, um servidor de streaming 102 executa um programa 108 a fim de fornecer um stream em tempo real da saída de programa ao dispositivo de cliente conectado remotamente 104 através da rede 106. No diagrama esquemático ilustrada da FIG. 1, o programa 104 pode ser um programa de jogo eletrônico que processa entradas de controle recebidas a partir do dispositivo cliente 104 e envia um áudio comprimido e stream de vídeo para o dispositivo cliente 104 de acordo com a execução do programa 108. Um usuário localizado no lado do cliente pode interagir com o programa por meio de uma interface de usuário do dispositivo cliente 104, por exemplo, fornecendo entradas de controle e recepção da saída de áudio e de vídeo em uma exibição e/ou alto-falantes conectados ao dispositivo cliente 104. No exemplo da FIG. 1, a carga computacional para processar as entradas, que renderiza os gráficos de jogos e similares, pode ser totalmente transferida para o servidor de streaming 102 para execução remota.
[0026] A fim de implementar os jogos em nuvem usando o sistema 100 representado na FIG. 1, o servidor de streaming 102 pode ser configurado não só para executar o programa de jogo 108, mas o servidor de streaming 102 também pode aplicar um "processo de servidor de streaming" 110 incorporado no servidor 102, que pode executar várias funções para coordenar as entradas/saídas dos programas para comunicação entre o dispositivo cliente 104 e o servidor de streaming 102 através da rede 106. A título de exemplo, o processo de servidor de transmissão 110 pode ser realizado em um ou mais aplicativos que são executados no servidor de streaming 102 em coordenação com o software de jogo 108. A execução remota do jogo 108 juntamente com o processo de servidor de transmissão 110 pode ser realizada com pouca ou nenhuma latência entre as entradas e as saídas para o dispositivo cliente 104 de modo que o usuário no lado do cliente perceba que o programa 108 está sendo executado localmente. Além disso, uma grande coleção de programas armazenados remotamente pode ser acessível para a execução. Por exemplo, em uma aplicação de jogos em nuvem, o usuário gostaria de ser capaz de selecionar qualquer jogo desenvolvido para a plataforma de videogame relevante e o servidor remoto seria capaz de carregar o jogo, executá-lo e transmitir sua saída para o dispositivo cliente de acordo com as entradas recebidas do usuário e sem latência perceptível entre as entradas recebidas e saídas de áudio/vídeo.
[0027] No exemplo representado na FIG. 1, isso pode ser conseguido por meio da execução tanto do processo de servidor de transmissão 110 como o código de jogo 108 no mesmo dispositivo de computação, por exemplo, o servidor de streaming 102. O servidor de fluxo pode acessar um programa selecionado a partir de potencialmente qualquer dispositivo de armazenamento, tal como um dispositivo de armazenamento em massa conectado localmente, um servidor de armazenamento, uma rede e similares, através de uma conexão adequada. Para os jogos em nuvem e outras implementações de computação em nuvem, isso pode ser facilmente implementado caso a aplicação de software 108 que é executada no servidor 102 para o cliente 104 seja projetada para executar em arquitetura de computador pessoal (PC) ou outra arquitetura de computador que seja semelhante ao servidor streamliner 102. A título de exemplo, e não como forma de limitação, para uma implementação de jogo de PC em nuvem, um servidor com base em x86 prontamente disponível pode ser usado não só para implementar o processo de servidor de streaming 110, mas também executar o programa de jogos para PC 108 uma vez que é acessado pelo servidor 102.
[0028] No entanto, a técnica de exemplo 100 representada na FIG. 1 pode não ser adequada para certas aplicações em que o programa 108 é projetado para ser executado em plataformas embutidas e outras arquiteturas especializadas. Por exemplo, se o programa desejado for um jogo eletrônico concebido para uma plataforma de console dedicado, o software de jogo pode não ser capaz de ser executado na arquitetura de servidor sem algum tipo de emulador. Infelizmente, em um ambiente de computação em nuvem em que minimizar a latência é uma preocupação principal, um emulador de software executado em um servidor de streaming pode ser uma solução indesejável, especialmente em aplicativos de gráficos intensivos em que a interpretação do código pelo emulador em tempo de execução iria introduzir um atraso perceptível. Além disso, em muitos casos, seria impraticável construir um servidor dedicado para cada arquitetura única para o qual se deseje um serviço em nuvem. Em outras situações, um emulador poderia ser uma solução desejável, mas um emulador adequado pode não estar disponível.
[0029] Para abordar esses desafios, pode ser desejável usar um dispositivo de computação adicional no lado de servidor durante a execução do programa, através do qual o dispositivo de computação adicional executa o programa desejado, enquanto o servidor de streaming acoplado ao mesmo exerça as suas funções habituais para realizar interface com um dispositivo cliente. Um exemplo de ilustrativo de um sistema distribuído 200 que utiliza tal técnica é representado na FIG. 2, em que um "sistema de terminal" 212 está conectado a um servidor de streaming 202 e o sistema de terminal executa uma aplicação desejada 208. O servidor de streaming pode fornecer recursos para armazenamento de rede e compressão de vídeo caso o sistema de terminal não tenha, outra forma, recursos disponíveis suficientes para essas funções.
[0030] Em certas implementações, o sistema de terminal 212 pode ser um sistema embutido ou outro sistema de computação com uma arquitetura especializada, como um console de videogame, enquanto o servidor de streaming 202 pode ser baseado em qualquer arquitetura de computação, tal como uma arquitetura de conjunto de instruções x86, que esteja adaptado para fornecer serviços de streaming e não necessariamente tem de ter uma arquitetura similar à do sistema de terminal 212. O servidor de streaming 202 pode ser configurado para executar um processo de servidor de transmissão 202 e fornecer os serviços em nuvem usuais para o programa de sistema de terminal 208 e os dispositivos de computação no lado do servidor, por exemplo, o servidor de streaming 202 e o sistema de terminal 212, podem coletivamente operar para fornecer os serviços de streaming de jogos para um dispositivo cliente 204.
[0031] A configuração na vista esquemática simplificada representada na FIG. 2 pode fornecer uma solução de servidor prática e flexível que pode ser facilmente adaptada para uma variedade de diferentes plataformas de software concebidas para uma variedade de diferentes arquiteturas de computação. Por exemplo, potencialmente qualquer servidor de streaming 202 pode ser adaptado para transmitir as aplicações de software concebidas para uma variedade de diferentes arquiteturas de computação conectando-se localmente a um sistema de terminal que executa o software.
[0032] No entanto, a execução do software desejado em um sistema de terminal 212 no lado de servidor pode apresentar certos desafios dentro de uma estrutura de computação em nuvem. Por exemplo, o sistema de terminal 212 pode ser capaz de executar qualquer programa selecionado para uma sessão de streaming atual dentre uma variedade de diferentes programas, similar ao processo descrito acima em relação à configuração do exemplo representado na FIG. 1. Da mesma forma, quaisquer outras leituras/escritas de dados a um dispositivo de armazenamento exigidas pelo programa 208 em execução no sistema de terminal 212 poderiam ser liberadas das limitações de armazenamento local pelo sistema de terminal. Solicitações de dados de armazenamento são normalmente realizadas através de uma conexão de armazenamento em massa local no sistema de terminal 212, como uma conexão Serial Advanced Technology Attachment (SATA) ou outra interface de armazenamento em massa. Seria desejável fornecer uma solução de armazenamento virtualizada para o sistema de terminal sem ter que fazer modificações em sua arquitetura de hardware ou consumir recursos computacionais adicionais com o processo de virtualização de armazenamento.
[0033] Para melhor observar o desafio no contexto de um ambiente de jogo em nuvem, o exemplo a seguir ilustra a forma como o servidor configurado na FIG. 2 pode ser utilizado em uma implementação de jogos em nuvem específica. Especificamente, um usuário no dispositivo cliente 204 pode ser atribuído a um "sistema de terminal em nuvem" 212 para uma sessão de jogo. No momento que o usuário começa a tocar, o jogo 208 que o usuário quer jogar deve estar disponível no sistema de terminal em nuvem 212. Da mesma forma, uma vez que a sessão de jogo acabou e o usuário terminou, o sistema de terminal 212 deve ser restaurado para um estado limpo para uma próxima sessão por um usuário diferente, que pode envolver um jogo diferente.
[0034] Infelizmente, a virtualizar o armazenamento de jogo dessa maneira usando o software de virtualização de armazenamento dentro do sistema de terminal 212 consumiria recursos computacionais valiosos (por exemplo, CPU e memória) e poderia produzir problemas de compatibilidade com o jogo. Além disso, em um aplicativo que envolve uma carga computacional pesada, tal como muitos jogos eletrônicos modernos, que incorporam gráficos avançados e outras tarefas de recursos intensivos, consumir os recursos adicionais do sistema de terminal para a virtualização de armazenamento pode não ser uma solução viável.
[0035] Um exemplo ilustrativo de uma técnica de virtualização de armazenamento de acordo com várias implementações da presente invenção é retratado na FIG. 3. Na técnica de virtualização de exemplo da FIG. 3, um dispositivo de armazenamento em massa é emulado usando um "sistema host" que tem um componente de hardware especializado, de modo que um dispositivo de armazenamento em massa possa ser imitado por um sistema de terminal conectado ao mesmo. A técnica de exemplo da FIG. 3 pode ser implementada em uma aplicação de streaming em nuvem similar ao representado na FIG. 2, em que o sistema de terminal pode ser um sistema especializado executando a aplicação desejada e o sistema host para a emulação de dispositivo de armazenamento em massa é um servidor de streaming. No entanto, entende-se que a virtualização de armazenamento de acordo com os princípios contidos neste documento pode ser implementada em outros contextos, incluindo aplicações de computação em nuvem para além do streaming de jogos, e implementações locais onde a virtualização de armazenamento para um dispositivo de computação é desejada, particularmente, onde é desejado sem se fazer modificações ao dispositivo de computação.
[0036] Voltando ao exemplo da FIG. 3 em mais detalhe, o armazenamento virtualizado é fornecido para o sistema de terminal 312 usando um dispositivo de interface especializado 320 acoplado a um sistema hospedeiro 302 para o dispositivo de interface, que é, neste caso, o servidor de streaming. O dispositivo de interface 320 junto com um processo de armazenamento 322 embutido no sistema host 302 pode executar várias solicitações de dados de dispositivos de armazenamento em massa recebidos a partir do sistema de terminal 312.
[0037] No exemplo representado na FIG. 3, o dispositivo de interface 320 pode ser um equipamento de hardware que se parece com um dispositivo de armazenamento em massa real para o sistema de terminal, porém, por baixo das aparências, seus dados podem vir de um servidor de armazenamento (não representado). Um dispositivo de armazenamento em massa normal geralmente usa uma conexão SATA ou outra interface de armazenamento em massa padrão. A fim emular o dispositivo de armazenamento em massa e receber as solicitações de dados, o dispositivo de interface 320 da FIG. 3 pode incluir uma conexão similar à SATA ou outra interface de comunicação de armazenamento em massa compatível com a interface de comunicação de armazenamento em massa do sistema de terminal, juntamente com os componentes adicionais, tais como uma unidade processamento especializado, uma memória e outros componentes.
[0038] Em várias implementações, a fim de facilitar uma integração fácil da funcionalidade de virtualização de armazenamento no sistema de computação, tais como um servidor de streaming ou outro sistema "host", o dispositivo de interface 320 pode ser implementado como uma placa de expansão, tal como uma placa de complemento de PCI-Express, que pode ser conectada ao sistema host 302 através de uma interface de expansão do sistema host. Durante a operação, a placa de interface pode receber solicitações de leitura e/ou escrita de disco a partir do sistema de terminal através de sua conexão de armazenamento em massa (por exemplo, através de uma porta SATA). Esses pedidos de acesso a dados podem ser, em última instância, processados por uma aplicação de armazenamento 322 no sistema host 302e o aplicativo de armazenamento pode acessar os dados de um arquivo, servidor de armazenamento ou alguma outra coisa.
[0039] Embora não seja necessário para a funcionalidade de virtualização de armazenamento, o dispositivo de interface 320 também pode incluir, opcionalmente, componentes adicionais para fornecer outra funcionalidade que possa ser especialmente útil em um contexto de streaming em nuvem. Por exemplo, a fim de suportar a funcionalidade de streaming no sistema host, o dispositivo de interface 320 pode, opcionalmente, incluir uma ou mais interfaces adicionais para transferência de dados áudio e/ou vídeo, assim como para apoiar a funcionalidade correspondente para suportar o streaming de áudio/vídeo (A/V) através de um processo de streaming do sistema host 302 a fim de apoiar de jogos em nuvem ou outras implementações de computação em nuvem. A interface de A/V opcional do dispositivo de interface 320 pode ser compatível com o sistema de terminal 312 e pode configurada de acordo com qualquer um de uma variedade de padrões de A/V, tais como HDMI, vídeo de composto, vídeo componente, S- vídeo ou de outra interface de comunicação de A/V.
[0040] As FIGS. 4A e 4B fornecer uma descrição mais detalhada de uma arquitetura de hardware/software ilustrativa de um dispositivo de interface e certos dispositivos de computação de acordo com várias implementações da presente invenção. A FIG. 4A ilustra uma arquitetura de computação para um sistema de terminal de exemplo de acordo com vários aspectos da presente divulgação. A FIG. 4B ilustra uma arquitetura de computação para um sistema host que tem um dispositivo de interface de exemplo de acordo com várias implementações da presente divulgação. Em algumas implementações, o sistema de terminal pode ser um sistema existente incorporado, console de videogame ou outro dispositivo de computação que tem uma arquitetura especializada. Em algumas implementações, o sistema host pode ser um servidor streaming configurado para transmitir uma aplicação em execução no sistema de terminal para um dispositivo cliente, por exemplo, como retratado na FIG. 2.
[0041] O sistema de terminal de exemplo 412 pode incluir um controlador host de armazenamento em massa 424 (às vezes também conhecido como um adaptador host ou adaptador de barramento host), que pode ser, por exemplo, um controlador host SATA (AHCI), controlador host USB ou um controlador host para outro padrão de interface de comunicação de armazenamento em massa. O sistema de terminal 412 também pode incluir um driver de dispositivo de armazenamento em massa correspondente 426 que é compatível com o controlador host de dispositivo de armazenamento em massa 424 para facilitar a comunicação através da interface de dispositivo de armazenamento. A fim de se conectar a um dispositivo de armazenamento em massa, normalmente o controlador host 424 seria ligado ao dispositivo de armazenamento de massa através de um conector correspondente (tal como um cabo SATA, cabo USB ou outro conector dependendo da interface de dispositivo de armazenamento em massa do sistema de terminal). Especificamente, o controlador host 424 seria conectado a um controlador de dispositivo de armazenamento em massa (por vezes também conhecido como um "controlador de disco", embora o dispositivo de armazenamento em massa possa ser uma unidade de estado sólido ou outro dispositivo de armazenamento que não necessariamente utilize um disco) do dispositivo de armazenagem em massa em particular a qual se conecta. No sistema de exemplo retratado nas FIGS. 4A-4B, o controlador host 424 é conectado, em vez disso, ao dispositivo de interface 420, que juntamente com o seu sistema host 402 emula um dispositivo de armazenamento em massa para o sistema de terminal 412.
[0042] O dispositivo de interface 420 pode incluir uma interface de comunicação para conexões do dispositivo de armazenamento em massa que seja compatível com a interface de comunicação de armazenamento usada pelo sistema de terminal 412. A interface de comunicação do dispositivo de interface pode incluir uma ou mais portas de armazenamento em massa 414, tais como uma ou mais portas SATA, portas USB ou outro hardware de interface de armazenamento em massa compatível. O dispositivo de interface 402 pode incluir uma unidade de processamento especializado operativamente acoplado à interface de hardware de armazenamento em massa, sendo que a unidade de processamento especializado tem lógica 428 que é dedicada à realização de funções associadas com a emulação de dispositivo de armazenamento em massa, e opcionalmente outras funções, para sinais recebidos através do conector de armazenamento do sistema de terminal 402. A lógica 428 também pode suportar a comunicação com o sistema host 402 através de uma interface de comunicação adicional, que pode se comunicar com um barramento periférico do sistema host 402 a fim de interagir com um processo de armazenamento incorporado no sistema host. A título de exemplo, e não a título de limitação, o dispositivo de interface 420 pode ser uma placa de complemento que se comunica com o barramento de processo do sistema host 402 através de uma interface de expansão, como o peripheral component interconnect (PCI), Extended-PCI (PCI-X), PCI-Express (PCIe) ou outra interface que facilite a comunicação com o sistema host 402, por exemplo, através de um barramento periférico. O sistema host pode incluir um driver de dispositivo de interface 426 para suportar a troca de sinais através do dispositivo de interface 420.
[0043] Em certas implementações, a unidade de processamento especializado pode ser uma matriz de portas de campo programáveis (FPGA), um circuito integrado aplicação específica (ASIC) ou uma outra unidade de processamento especializado que tenha unidades de lógica dedicada configurado de acordo com os princípios descritos neste documento. As unidades lógicas 428 da unidade de processamento especializado também pode incluir lógica específica para suportar várias funções para streaming em nuvem além da virtualização de armazenamento, tal como captura de áudio/vídeo da saída de uma aplicação 408 em execução no sistema de terminal 402, que pode facilitar o streaming da saída de A/V através da rede pelo sistema host 402 em implementações que envolvem jogos em nuvem. A placa de interface 402 pode incluir uma interface de comunicação de A/V, tal como uma ou mais portas HDMI ou outras portas de A/V, assim como um receptor de A/V compatível 430 para receber a saída de A/V do aplicativo em execução no sistema de terminal através de um conector de A/V correspondente.
[0044] No exemplo representado nas FIGS. 4A-4B, um controlador de dispositivo de armazenamento em massa incorporado na lógica 428 da unidade de processamento especializado é controlado pelo driver de dispositivo de interface 426 no sistema host 402 e um processo de armazenamento 432 incorporado no sistema host 402, por exemplo, uma aplicação de software sendo executada em uma unidade de processamento central 404, podem fornecer serviços de transporte de dados para o driver de dispositivo de interface 426. Por exemplo, se o sistema de terminal 412 solicitar a leitura dos dados de sua unidade de disco ou outro dispositivo de armazenamento em massa conectado através do conector de armazenamento em massa, essa solicitação pode fazê-lo através do controlador host de armazenamento em massa 424, do controlador de dispositivo de armazenamento de massa contido na lógica 428, do driver de dispositivo de interface 426, ao processo de armazenamento 432 embutido no sistema host. O processo de armazenamento 432 pode, então, recuperar os dados, que pegariam a partir de uma variedade de fontes. Por exemplo, o processo de armazenamento 432 pode recuperar os dados de uma unidade de disco ou outro dispositivo de armazenamento em massa conectado localmente ao mecanismo host ou pode recuperar os mesmos a partir de um driver de memória ou um servidor de armazenamento através de uma rede. Qualquer que seja o método que o processo de armazenamento usada, o mesmo é transparente para o sistema de terminal 402.
[0045] Em certas implementações, o sistema host 402 pode, opcionalmente, ser um servidor de streaming para transmitir através de uma rede de um stream de saída a partir da aplicação 408 em execução no sistema de terminal 412. Por exemplo, o sistema host 402 pode incluir um processo de A/V 434, que pode ser uma aplicação em execução no sistema host 402. O processo de captura de A/V pode coordenar com a lógica dedicada 428 na unidade de processamento especializado para a captura de um stream de A/V enviado através de um conector de A/V conectado à placa de interface 420. O servidor de streaming 402 pode incluir um adaptador de Ethernet ou adaptador de rede 436e um driver de Ethernet correspondente ou outro driver de rede 438 para o sistema de operação do host 402, com uma biblioteca de rede compatível 439 que fornece suporte ao protocolo de comunicação de rede. O sistema host também pode incluir a memória de sistema 440, controlada por um driver de memória correspondente 442 (por exemplo, tmpfs) e suportada por uma biblioteca de filesystem 444. Um processo de servidor de streaming 446 pode ser executado no sistema host 402 para executar as funções associadas a fornecer um stream em tempo real para um dispositivo cliente conectado através de uma rede (não mostrada nas FIGS. 4A-4B).
[0046] Em algumas situações, o armazenamento de dados pode ser implementado usando uma combinação de um servidor de armazenamento remoto 448 (mostrado em tracejado na FIG. 4A), a memória 440 e o driver de memória 442. A título de exemplo, e não como forma de limitação, em algumas implementações os dados só podem ser lidos a partir do servidor de armazenamento 448 e escritos à memória 440 através do driver de memória 442.
[0047] O sistema de terminal 412 pode incluir vários outros componentes para suportar a aplicação 408, que podem ser, por exemplo, software de jogos eletrônicos criado para uma plataforma embutida existente. O sistema de terminal 412 pode incluir uma camada de filesystem 427 para acessar o armazenamento, assim vários componentes para suportar a renderização de gráficos para a aplicação 408. Em adição a uma unidade de processamento central (CPU), o sistema de terminal 412 pode incluir uma unidade de processamento gráfico (GPU) 450, que pode ser operada por um driver de gráficos 452 e suportado por uma biblioteca de gráficos 454. Um transmissor de A/V 456, tal como o transmissor de HDMI, podem ser incluídos para transmitir a saída de áudio e/ou vídeo de aplicação para o dispositivo de interface host no sistema host por meio de um conector de A/V compatível.
[0048] Voltando-se agora à FIG. 5, um diagrama esquemático de um dispositivo de interface de exemplo 520 que pode ser implementado na placa de interface 420, alguns componentes na mesma e internos de uma unidade de processamento especializado de exemplo 560 é representado de acordo com várias implementações da presente invenção. A título de exemplo, e não a título de limitação, o dispositivo de interface 520 pode ser configurado como uma placa de complemento que tem componentes fixados a uma placa de circuito impresso (PCB) e a placa de interface 520 pode interagir com um barramento periférico de um sistema host através de uma interface de hardware host 562, tal como uma porta de expansão periférica ou outra interface de comunicação de expansão que permite a comunicação do barramento periférico de um sistema host quando conectado.
[0049] A unidade de processamento especializado de exemplo560 pode incluir vários blocos de lógica dedicada para funcionalidade especializada de acordo com diversos aspectos da presente divulgação. A unidade de processamento especializado pode ser implementada, por exemplo, como um FPGA, ASIC ou unidade de processamento especializado similar. A unidade de processamento especializado 560 pode incluir um bloco de interface host 564 que implementa parte de uma pilha de protocolos para a interface de comunicação entre a placa de interface 520 e um barramento periférico de um sistema host (não retratado na FIG. 5) para o dispositivo de interface 560.
[0050] Os barramentos de comunicação como PCI-Express podem ser pensados como uma pilha de protocolos com várias camadas. Protocolos de comunicação diferentes têm diferentes camadas. Normalmente há uma "camada de aplicação" no topo, então, algumas camadas relacionadas de transporte no meio e alguma camada física no fundo. O bloco de interface host 564 não precisa implementar todas as camadas de uma tal pilha de protocolos. Em vez disso, o bloco de interface host pode cuidar da camada física, que é responsável por colocar as informações digitais em um enlace de comunicação, por exemplo, através de sinais elétricos ou ópticos. O bloco de interface host também pode ser responsável por porções ou possivelmente todas as "camadas de transporte" da pilha de protocolo, mas não precisa ser responsável pela camada de aplicação.
[0051] A título de exemplo, e não a título de limitação, o bloco de interface host 564 pode ser um bloco de disco rígido de PCIe para comunicação através de uma conexão PCI-Express, e que incorpora a pilha de protocolos para uma interface PCIe ou outra interface para acessar um barramento local do sistema host. O bloco de interface host 564 pode ser integrado em uma unidade de interface de acesso à memória 566 que, em conjunto com outras unidades lógicas da unidade de processamento especializado 560, pode acessar diretamente a memória do sistema de um sistema host através da interface de hardware host 562, por exemplo, usando uma interrupção da solicitação ao sistema host.
[0052] Em algumas implementações, a interface de acesso à memória 566 pode incluir componentes que fornecem acesso à memória e funcionalidade de interrupção. Em particular, o bloco de interface host 564 pode ser configurado para fornecer uma ligação entre uma interconexão on- chip 572 e a interface de hardware host 562 de uma maneira que torna qualquer dispositivo on-chip acessível a partir do sistema host usando a entrada/saída (I/O) de memória mapeada. Essa funcionalidade permite que o sistema host programe qualquer dispositivo conectado à interconexão on-chip 572, tal como o controlador de armazenamento em massa 570, controlador de memória 576 ou GPIO 582.
[0053] A interface de acesso à memória 566 também pode incluir uma conexão de interrupção 565 que permite que qualquer dispositivo conectado, por exemplo, o controlador de armazenamento em massa 570, gere uma interrupção mediante uma chega de evento (por exemplo, uma solicitação de leitura de armazenamento em massa)). É desejável que a interface de acesso à memória forneça essa funcionalidade caso não haja somente um dispositivo realizando interface com o hardware de interface de hardware host 562.
[0054] A interface de acesso à memória 566 também pode (opcionalmente) incluem um mecanismo de acesso direto à memória (DMA) 567. Conforme usado neste documento, e conforme é geralmente entendido pelos versados na técnica, o termo acesso direto à memória (DMA) refere-se a uma característica que permite que certos subsistemas de hardware dentro de um computador acessem à memória de sistema independentemente da unidade de processamento de central (CPU) do computador. O mecanismo de DMA 567 pode implementar as operações de movimentação de dados entre o bloco de interface host 564 e a interface de hardware host 562. Em algumas implementações, a unidade de interface de acesso à memória 566 pode implementar porções de uma pilha de protocolos (por exemplo, PCI Express) não fornecidos pelo bloco de interface host 564, tal como conectar o bloco de interface host 564 à interconexão on-chip 572.
[0055] Para fins de funcionalidades para virtualização de dispositivo de armazenamento em massa, o dispositivo de interface 520 pode incluir uma ou mais interfaces de comunicação do dispositivo de armazenamento em massa 568, que podem ser aplicadas sob a forma de uma ou mais portas SATA 569 e/ou conectores, ou outras interfaces de comunicação de dispositivo de armazenamento em massa, e que podem ser associadas a uma placa de circuito do dispositivo de interface 520. A título de exemplo, e não como forma de limitação, a placa de interface 520 pode conter duas portas SATA para facilitar a conexão a dois sistemas de terminais, embora seja observado que o dispositivo de interface pode, alternativamente, conter uma variedade diferente de conectores de dispositivo de armazenamento em massa de modo a que um único dispositivo de interface 520 possa servir uma variedade diferente de sistemas de terminais. Para cada um dos conectores de dispositivo de armazenamento em massa 568, pode haver um controlador de dispositivo de armazenamento em massa correspondente 570 incorporado na unidade de processamento especializado 560 que seja compatível com a interface de comunicação de armazenamento em massa em particular (por exemplo, SATA).
[0056] O um ou mais controladores de dispositivo de armazenamento em massa 570 podem ser conectados a outras unidades lógicas da unidade de processamento especializado 560 através da interconexão on-chip 572, que pode fornecer a cada um dos controladores de dispositivo de armazenamento em massa 572 acesso aos componentes de interface de sistema host (por exemplo, PCI-Express). A interconexão on-chip pode ser configurada a uma arquitetura de barramento on-chip padrão configurada para se conectar aos blocos funcionais de uma unidade de processamento especializado (por exemplo, um ASIC ou FPGA). Por exemplo, caso a unidade de processamento especializado 560 seja um FPGA, os componentes da unidade de processamento especializado podem ser interconectados usando arquitetura de mestre-escravo, por exemplo, uma Advanced Microcontroller Bus Architecture (AMBA), tais como AXI4 ou AXI4-Lite, ou outra arquitetura de barramento on-chip adequada. AXI4 pode ser usado para o transporte de dados grandes e AXI-Lite pode ser usado para conexões de baixo desempenho ou para fins de configuração. As interconexões on-chip dos blocos lógicos de unidade de processamento especializado podem ser configuradas de acordo com uma configuração do tipo mestre-escravo, conforme mostrado na FIG. 5. No esquema ilustrado, "M" e as linhas em negrito correspondentes representam uma conexão mestre, "S" e as linhas pontilhadas correspondentes representam uma conexão de escravo, e "Ctrl" representa controle.
[0057] O dispositivo de interface 520 podem incluir uma ou mais unidades de memória 574 que podem ser controladas por um controlador de memória 576 fornecido na lógica da unidade de processamento especializado 560. A unidade de memória pode suportar o transporte de dados entre um sistema de terminal conectado através da interface de armazenamento em massa 568 e um sistema host conectado através da interface de hardware host 562, de acordo com as solicitações de dados emitidas pelo sistema terminal. Por exemplo, a unidade de memória 574 pode ser uma unidade RAM temporária, como DDR3 RAM, ou outra unidade de memória volátil configurada para armazenar temporariamente os dados solicitados pelas solicitações de leitura emitidas pelo sistema de terminal, de acordo com os princípios descritos neste documento. O controlador de memória 576 pode ser conectado à arquitetura de barramento on-chip 572 para executar as operações de leitura/escrita de memória de acordo com os sinais recebidos de outras unidades lógicas da unidade de processamento especializado 560.
[0058] Durante a operação, um controlador host de armazenamento em massa de um dispositivo de computação (não ilustrado na FIG. 5) conectado através da interface de armazenamento 560 pode solicitar o controlador de dispositivo de armazenamento em massa 570 para executar leitura, escrita e outras operações. Após a recepção de tal solicitação, o controlador de dispositivo de armazenamento em massa 570 pode notificar um driver de dispositivo de interface e o processo de armazenamento no sistema host (não mostrado na FIG. 5) usando uma interrupção da solicitação, através da interface de hardware host 562, por exemplo, PCI-Express. Os componentes de software no sistema host pode, em seguida, tomar decisões sobre o manuseio da solicitação.
[0059] Por exemplo, no caso de uma solicitação de leitura a partir do sistema de terminal, a aplicação de armazenamento no sistema host (não ilustrado) pode recuperar esses dados a partir de alguma fonte de armazenamento e armazená-los na unidade de memória de dispositivo de interface 574 através da interface de hardware host 562. Quando terminar, o aplicativo de armazenamento no sistema host pode programar o controlador de dispositivo de armazenamento em massa 570 na unidade de processamento especializado 560 para completar a solicitação de leitura mediante leitura da memória de dispositivo de interface 574. A título de exemplo, e não como forma de limitação, suponha que o controlador host de armazenamento em massa 424 pode ser um controlador SATA. Para uma operação SATA (leitura/escrita e há outros), o controlador host de armazenamento em massa 424 no servidor de streaming 402 transmite uma interrupção. O driver host de armazenamento em massa 426 no servidor de streaming 402 verifica o estado do controlador host de armazenamento em massa 424. Se a solicitação for determinada como sendo uma "solicitação de escrita", então, o controlador host de armazenamento em massa 424 será programado para escrever seus dados para a memória 574 (por exemplo, memória DDR3) no dispositivo de interface 520. O controlador host de armazenamento em massa 424 pode ter seu próprio mecanismo DMA embutido 567 para essa finalidade. Outra interrupção é gerada quando os dados forem gravados na memória 574. O motorista host de armazenamento em massa 426, então, emite uma solicitação de DMA usando o mecanismo de DMA 567 para copiar a partir da memória 574 para a memória de sistema host 440.
[0060] Um tampão na memória de sistema host 440 pode ser diretamente compartilhado com o processo de armazenamento. Quando a transação de DMA para a memória de sistema host 440 for feita, o processo de armazenamento será notificado da solicitação de escrita e terminará a operação de escrita. Podendo escrever os dados em um disco, em um dispositivo de armazenamento em rede ou onde se desejar armazenar os dados.
[0061] Observa-se que uma memória 574 no dispositivo de interface 520 pode não ser necessária para as operações de leitura ou escrita. É possível para o controlador host de armazenamento em massa 424 para escrever diretamente na memória de sistema host 440. Por exemplo, a unidade interface de acesso à memória 566 pode mapear PCI-Express para AXI4 e também AXI4 para PCI-Express. Esse recurso permitiria que qualquer dispositivo AXI4 Master escreva na memória de sistema host.
[0062] O dispositivo de interface pode opcionalmente incluir vários outros componentes que fornecem funcionalidade adicional para aplicações de streaming executadas em um sistema de terminal, tal como streaming de jogos em nuvem. Por exemplo, a unidade de processamento especializado 560 também pode incluir um ou mais blocos de captura de áudio e/ou vídeo 578 para capturar um stream de A/V de um ou mais sistemas de terminal. Cada um dentre a uma ou mais unidades lógicas de captura de A/V 578 pode estar operativamente conectado a um receptor de A/V correspondente 530, cada um dos quais pode, por sua vez estar conectado a uma interface de hardware de A/V adequada 580, tal como uma porta HDMI ou outra porta de conexão de A/V conforme mostrado na FIG. 5. A saída de A/V do sistema de terminal pode estar conectada ao receptor de A/V 530 através da interface de A/V 580 usando um conector de A/V compatível. A unidade de captura de A/V 578 pode se comunicar com o driver de dispositivo de interface e o processo de A/V no sistema host através da interface de hardware host 562, que pode estar conectado a um barramento de sistema host (por exemplo, um barramento periférico) e o sistema host pode, então, fornecer o fluxo de A/V a um dispositivo cliente através de uma rede.
[0063] O dispositivo de interface 582 também podem incluir um ou mais blocos de entrada/saída de propósito geral (GPIO) para suportar funcionalidade adicional. A título de exemplo, e não como forma de limitação, cada um dos blocos GPIO pode estar conectado a um correspondente um dentre os sistemas de terminal para fornecer uma funcionalidade adicional, tal como o controle de potência dos sistemas de terminal e outras funcionalidades.
[0064] Conforme observado acima, a unidade de processamento especializado 560 pode ser implementada, por exemplo, como um FPGA, ASIC ou outro circuito integrado que tem blocos dedicados a certas funcionalidades, tais como um dispositivo de controlador de armazenamento em massa, controlador de memória, mecanismo de DMA e similares, de acordo com vários aspectos da presente divulgação. Em certas implementações da presente divulgação, uma ou mais dessas unidades podem ser fornecidas como unidades reutilizáveis de lógica ou outro projeto de chips comumente referido na técnica como blocos IP ou núcleos IP.
[0065] A FIG. 6 retrata um exemplo de fluxograma para emular um dispositivo de armazenamento em massa para um sistema de terminal 612 de acordo com vários aspectos da presente divulgação. No exemplo representado na FIG. 6, um dispositivo de interface 620 e sistema host 602 operativamente acoplado um ao outro são configurados para emular um dispositivo de armazenamento em massa para o sistema de terminal 612. Enquanto o exemplo ilustrativo da FIG. 6 retrata a emulação para uma solicitação de leitura emitida através do sistema de terminal para fins de explicação, observa-se que as implementações da presente invenção podem ser configuradas para completar as solicitações de escrita e outras solicitações de dados de armazenamento em massa emitidas pelo sistema de terminal usando os componentes ilustrados.
[0066] Conforme mostrado na FIG. 6, um dispositivo de armazenamento em massa pode ser emulado por um sistema de terminal 612 ou qualquer outro sistema de computação, que pode ter uma unidade de processamento central (CPU) 681 e uma unidade de memória 682 configurada para executar várias aplicações (não retratadas). O sistema de terminal 612 pode fazer vários tipos de leitura, escrita e outras solicitações de dados através de um conector de dispositivo de armazenamento em massa usando um controlador de dispositivo de armazenamento em massa 624. Normalmente, essas solicitações seriam completadas por um dispositivo de armazenamento em massa local com um controlador de dispositivo correspondente. No exemplo da FIG. 6, essas solicitações de dados podem ser satisfeitas por um dispositivo de interface 620 em comunicação com um sistema de computador host 602, que pode acessar alguma outra fonte de armazenamento 699 para lidar com as várias solicitações de dados.
[0067] Na ilustração da FIG. 6, uma solicitação de leitura 684 é emitida pelo controlador host de armazenamento em massa 624 do sistema de terminal 612, que é recebida em um controlador de dispositivo de armazenamento em massa 670 da unidade de processamento especializado 660. O controlador de dispositivo de armazenamento em massa 670 notifica o processo de armazenamento 632 embutido no sistema host 602 usando uma interrupção da solicitação 684, por exemplo, através de um mecanismo de DMA 666 conforme mostrado na FIG. 6. O processo de armazenamento pode ser uma aplicação incorporada na memória de sistema 640 do sistema host 602, que pode ser executada por uma unidade de processamento central 686 do sistema host 602 para tomar decisões sobre como lidar com a solicitação 684.
[0068] Conforme mostrado na FIG. 6, o processo de armazenamento pode recuperar os dados solicitados 687 a partir de alguma outra fonte de armazenamento 699, tal como um servidor de armazenamento. O processo de armazenamento pode armazenar os dados recuperados 689 na unidade de memória de dispositivo de interface 674, por exemplo, através de uma interface de expansão (não ilustrada), tal como PCI-e, ou outra interface de comunicação com um barramento periférico do sistema host 602. Observa-se que, em vez de ser implementado como uma placa de complemento ou outro componente periférico que se comunica com o barramento periférico através de uma interface de expansão, em algumas implementações, o dispositivo de interface 620 pode ser implementado como com a unidade de processamento especializado 660 conectado diretamente ao barramento periférico de sistema host e fornecido como uma parte integrante do sistema host 602.
[0069] Em implementações alternativas, a unidade de processamento especializado 660, por exemplo, FPGA, ASIC ou circuito equivalente, poderia ser colocada diretamente na placa-mãe do servidor de streaming 402 e conectada a um barramento periférico no servidor de streaming. A unidade de processamento especializado pode ser conectada através de PCI-Express.
[0070] Uma vez que os dados obtidos pelo processo de armazenamento sejam armazenados na memória de interface 674, o processo de armazenamento pode programar o controlador de dispositivo de armazenamento em massa 670 para completar a solicitação acessando-se aos dados armazenados 689 na memória de interface e enviando ao sistema de terminal 612.
[0071] Durante uma operação de leitura do controlador de dispositivo de armazenamento em massa 670 pode gerar uma interrupção (que poderiam ser transferida usando uma funcionalidade de interrupção incorporada no mecanismo de DMA 666) a um driver de armazenamento no sistema operacional do sistema host 602. Caso a solicitação seja determinada como sendo uma solicitação de leitura 684, o driver de armazenamento pede o processo de armazenamento 632 para "ler os dados" que estão armazenados na memória host 640 (que pode ser compartilhada com o driver de armazenamento). Uma vez que todos os dados tenham sido lidos, o mecanismo de DMA 666 pode ser programado para transferir os dados 689 da memória host 640 para a interface de memória 674. Conclusão
[0072] Observa-se que os aspectos da presente invenção foram descritos com referência a jogos em nuvem como um exemplo específico em que a necessidade de virtualização do armazenamento em massa de acordo com várias implementações da presente invenção pode ser desejável, mas as implementações da presente invenção não são assim limitadas. As implementações da presente invenção podem fornecer o dispositivo de armazenamento em massa para a emulação de qualquer dispositivo de computação, o que pode não envolver a computação em nuvem ou jogos em nuvem.
[0073] Observa-se que a implementação da presente invenção pode usar qualquer uma dentre uma variedade de protocolos de comunicação de armazenamento em massa, incluindo SATA, USB, IDE, RS232, Firewire, Thunderbolt e outros padrões de interface de comunicação de armazenamento em massa.
[0074] Observa-se que as implementações da presente invenção podem usar qualquer uma dentre uma variedade de padrões de áudio e/ou vídeo, incluindo HDMI, S-Video, vídeo componente, vídeo composto, Display Port, VGA, DVI e outros padrões de interface de comunicação de A/V.
[0075] Embora o que precede seja uma descrição completa da modalidade preferida da presente invenção, é possível usar diversas alternativas, modificações e equivalentes. Portanto, o escopo da presente invenção deve ser determinado não com referência a descrição acima, mas, em vez disso, deve ser determinado com referência às reivindicações anexas, juntamente com o escopo completo de equivalentes. Qualquer característica descrita neste documento, seja preferida ou não, pode ser combinada com qualquer outra característica descrita neste documento, seja preferida ou não. Nas reivindicações que se seguem, o artigo indefinido "um" ou "uma" refere- se a uma quantidade de um ou mais do item seguinte ao artigo, exceto quando expressamente indicado do contrário. As reivindicações anexas não devem ser interpretadas como abrangendo as limitações de função mais média, a menos que tal limitação seja explicitamente citada em uma determinada reivindicação usando a frase "significa".

Claims (12)

1. Dispositivo de interface, caracterizado pelo fato de que compreende: uma interface de hardware (562), a interface de hardware sendo uma porta de conexão de tipo A/V; e um dispositivo de interface (620) compreendendo: uma primeira interface de comunicação, a primeira interface de comunicação sendo uma interface de armazenamento em massa; uma segunda interface de comunicação, a segunda interface de comunicação é uma interface de expansão; e uma unidade de processamento especializado (660) acoplada operativamente às interfaces de comunicação, em que a unidade de processamento especializado tem um controlador de dispositivo de armazenamento em massa conectado à primeira interface de comunicação e uma interface de acesso à memória conectada à segunda interface de comunicação, em que a unidade de processamento especializado (660) compreende uma ou mais unidade de captura A/V (578) cada um acoplado a um receptor A/V (530) correspondente, os receptores A/V sendo acoplados um sistema terminal (612) através da interface de hardware, em que o controlador de dispositivo de armazenamento em massa é configurado para receber, do sistema terminal (612), uma solicitação de dados de armazenamento em massa (684) através da primeira interface de comunicação, em que a interface de acesso à memória está configurada para notificar um sistema host (602) da solicitação de dados de armazenamento em massa através da segunda interface de comunicação, em que um processo de armazenamento executado pelo sistema host é configurado para retornar informação solicitada e transmitir a informação para a unidade de processamento especializado através da segunda interface de comunicação, e a unidade de processamento especializado é operável para transmitir a informação solicitada para o sistema terminal através da primeira interface de comunicação, e em que um ou mais unidades de captura A/V é configurada para receber uma saída A/V do sistema host através do receptor A/V correspondente, e o sistema host inicia a entrega da saída A/V para um sistema cliente (204) através de uma rede (206).
2. Dispositivo de interface de acordo com a reivindicação 1, caracterizado pelo fato de que compreende ainda uma unidade de memória (574), em que a unidade de processamento especializado inclui um controlador de memória (576) conectado à unidade de memória.
3. Dispositivo de interface de acordo com a reivindicação 1, caracterizado pelo fato de que a interface de acesso à memória é configurada para notificar o sistema host da solicitação de dados usando uma interrupção da solicitação de dados.
4. Dispositivo de interface de acordo com a reivindicação 1, caracterizado pelo fato de que a interface de acesso à memória inclui um mecanismo DMA (666) configurado para implementar as operações de movimentação de dados.
5. Dispositivo de interface de acordo com a reivindicação 1, caracterizado pelo fato de que a unidade de processamento especializado é uma matriz de portas de campo programáveis (FPGA) ou um circuito integrado aplicação específica (ASIC).
6. Dispositivo de interface de acordo com a reivindicação 1, caracterizado pelo fato de que compreende ainda: uma placa de circuito impresso (PCB); em que a primeira interface de comunicação inclui uma ou mais portas de armazenamento em massa fixa ao PCB ou um ou mais conectores de expansão fixos à PCB.
7. Dispositivo de interface de acordo com a reivindicação 1, caracterizado pelo fato de que a primeira interface de comunicação inclui uma ou mais portas de armazenamento em massa, em que a unidade de processamento especializado tem um controlador de dispositivo de armazenamento em massa para cada porta de armazenamento em massa.
8. Sistema, caracterizado pelo fato de que compreende: uma unidade central de processamento (404); uma primeira unidade de memória (440) operativamente acoplada à unidade de processamento central; um processo de armazenamento (432) incorporado na primeira unidade de memória e executável pela unidade de processamento central; e um dispositivo de interface como definido na reivindicação 1.
9. Sistema de acordo com a reivindicação 8, caracterizado pelo fato de que compreende ainda um sistema de terminal (412) operativamente acoplado à primeira interface de comunicação através de um conector de armazenamento em massa, em que o sistema de terminal tem um controlador host de armazenamento em massa configurado para emitir a solicitação de dados de armazenamento em massa.
10. Sistema de acordo com a reivindicação 8, caracterizado pelo fato de que compreende ainda: uma pluralidade de sistemas de terminais, em que a unidade de processamento especializado tem uma pluralidade dos controladores de dispositivo de armazenamento em massa, em que a primeira interface de comunicação tem uma pluralidade de portas de armazenamento em massa, em que cada sistema de terminal é conectado a um correspondente dentre as portas de armazenamento em massa com um conector de armazenamento em massa, em que cada porta de armazenamento em massa é conectada a um correspondente dentre os controladores de dispositivo de armazenamento em massa.
11. Método, caracterizado pelo fato de que compreende: a) receber, a partir de um primeiro dispositivo de computação, uma solicitação de dados de armazenamento em massa em um controlador de dispositivo de armazenamento em massa; b) notificar, com uma interface de acesso à memória conectada ao controlador de dispositivo de armazenamento em massa, um processo de armazenamento incorporado em um segundo dispositivo de computação da solicitação de dados; c) acessar, com o processo de armazenamento do segundo dispositivo de computação, um sistema de armazenamento de dados que corresponde à solicitação de dados; d) armazenar, com o processo de armazenamento do segundo dispositivo de computação, os dados que correspondem à solicitação de dados em uma primeira unidade de memória; e) programar, com o processo de armazenamento do segundo dispositivo de computação, o controlador de dispositivo de armazenamento em massa para acessar os dados a partir da primeira unidade de memória a fim de completar a solicitação de dados; f) receber uma saída A/V do segundo dispositivo de computação por meio de um receptor A/V; e g) entregar a saída A/V para um sistema cliente por meio de uma rede.
12. Mídia legível por computador caracterizada pelo fato de que compreende instruções que, quando executadas em um processador, fazem com que o computador realize um método como definido na reivindicação 1.
BR112016004712-5A 2013-12-19 2014-10-21 Dispositivo de interface, sistema, método, e, mídia legível por computador BR112016004712B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/135,213 US10353633B2 (en) 2013-12-19 2013-12-19 Mass storage virtualization for cloud computing
US14/135213 2013-12-19
PCT/US2014/061633 WO2015094474A1 (en) 2013-12-19 2014-10-21 Mass storage virtualization for cloud computing

Publications (2)

Publication Number Publication Date
BR112016004712A2 BR112016004712A2 (pt) 2017-08-01
BR112016004712B1 true BR112016004712B1 (pt) 2022-06-14

Family

ID=53400073

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112016004712-5A BR112016004712B1 (pt) 2013-12-19 2014-10-21 Dispositivo de interface, sistema, método, e, mídia legível por computador

Country Status (9)

Country Link
US (2) US10353633B2 (pt)
EP (2) EP3690664A1 (pt)
JP (1) JP2016534463A (pt)
KR (1) KR101788724B1 (pt)
CN (2) CN110888599B (pt)
BR (1) BR112016004712B1 (pt)
RU (1) RU2649771C2 (pt)
TW (1) TWI531958B (pt)
WO (1) WO2015094474A1 (pt)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9086995B2 (en) 2012-10-04 2015-07-21 Sony Computer Entertainment America, LLC Method and apparatus for improving decreasing presentation latency
US9497358B2 (en) 2013-12-19 2016-11-15 Sony Interactive Entertainment America Llc Video latency reduction
US9332216B2 (en) 2014-03-12 2016-05-03 Sony Computer Entertainment America, LLC Video frame rate compensation through adjustment of vertical blanking
US9795879B2 (en) * 2014-12-31 2017-10-24 Sony Interactive Entertainment America Llc Game state save, transfer and resume for cloud gaming
US10554713B2 (en) * 2015-06-19 2020-02-04 Microsoft Technology Licensing, Llc Low latency application streaming using temporal frame transformation
US10744407B2 (en) * 2015-09-08 2020-08-18 Sony Interactive Entertainment LLC Dynamic network storage for cloud console server
KR102335715B1 (ko) * 2015-12-04 2021-12-06 한국전자기술연구원 가상화 기반의 임베디드 하드웨어 개발 및 검증 프레임워크 구조
US10423331B2 (en) * 2016-02-02 2019-09-24 Samsung Electronics Co., Ltd. Polymorphic storage devices
US11287973B2 (en) 2016-02-02 2022-03-29 Samsung Electronics Co., Ltd. Polymorphic storage devices
US11816043B2 (en) * 2018-06-25 2023-11-14 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of I/O requests
CN111372115B (zh) * 2020-03-03 2022-02-08 北京奇艺世纪科技有限公司 应用程序的访问方法及装置、通讯系统

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5034817A (en) 1990-02-28 1991-07-23 The United States Of America As Represented By The Secretary Of The Navy Reconfigurable video line digitizer and method for storing predetermined lines of a composite video signal
US5502462A (en) 1993-11-01 1996-03-26 The 3Do Company Display list management mechanism for real-time control of by-the-line modifiable video display system
US5969828A (en) 1997-03-12 1999-10-19 Minolta Co., Ltd. Digital copying machine, image reading device used in said digital copying machine, and image processing method used in these devices
AU2001255716B2 (en) * 2000-04-28 2006-02-02 Fziomed, Inc. Hemostatic compositions of polyacids and polyalkylene oxides and methods for their use
AR031640A1 (es) * 2000-12-08 2003-09-24 Applied Research Systems Amplificacion isotermica de acidos nucleicos en un soporte solido
US6874060B2 (en) * 2001-12-07 2005-03-29 Dell Products L.P. Distributed computer system including a virtual disk subsystem and method for providing a virtual local drive
US20030110300A1 (en) * 2001-12-12 2003-06-12 Micro-Star Int'l Co., Ltd. Virtual storage interface device
CN1243313C (zh) * 2001-12-27 2006-02-22 中国科学院计算技术研究所 具有大容量存储器的数据流处理板
US7711847B2 (en) * 2002-04-26 2010-05-04 Sony Computer Entertainment America Inc. Managing users in a multi-user network game environment
US8037229B2 (en) * 2002-11-21 2011-10-11 Sandisk Technologies Inc. Combination non-volatile memory and input-output card with direct memory access
US7505890B2 (en) * 2003-01-15 2009-03-17 Cox Communications, Inc. Hard disk drive emulator
US7106352B2 (en) 2003-03-03 2006-09-12 Sun Microsystems, Inc. Automatic gain control, brightness compression, and super-intensity samples
US7287099B1 (en) * 2003-03-18 2007-10-23 Unisys Corporation System for support of remote console by emulation of local console with multipath data flow structure
US7565408B2 (en) 2003-03-20 2009-07-21 Dell Products L.P. Information handling system including a local real device and a remote virtual device sharing a common channel
JP4179556B2 (ja) * 2004-06-25 2008-11-12 株式会社日立情報システムズ コンピュータ集中運用センタシステムとそのデータ管理制御方法およびプログラム
US20060061517A1 (en) 2004-09-23 2006-03-23 Jolly Paul A Delivering pixels received at a lower data transfer rate over an interface that operates at a higher data transfer rate
JP4390694B2 (ja) * 2004-12-24 2009-12-24 富士通株式会社 Dma回路及びこれを用いたディスクアレイ装置
US20100017189A1 (en) * 2006-01-04 2010-01-21 Andriy Naydon Transparent Intellectual Network Storage Device
EP2044543A4 (en) 2006-04-13 2012-07-04 Yosef Mizrachi METHOD AND DEVICE FOR PROVIDING GAME SERVICES AND MOVING WITH VIDEO CONTENT
US7383992B2 (en) * 2006-10-10 2008-06-10 Imation Corp. Memory card with host interface and including internal interface for receiving micro-size memory cards
US8179388B2 (en) 2006-12-15 2012-05-15 Nvidia Corporation System, method and computer program product for adjusting a refresh rate of a display for power savings
KR100794312B1 (ko) * 2006-12-27 2008-01-11 삼성전자주식회사 명령어 자동 처리 유니트를 포함한 메모리 컨트롤러 및그를 포함한 메모리 시스템
US8838856B2 (en) * 2007-02-16 2014-09-16 Emulex Corporation Virtual universal asynchronous receiver transmitter for server systems
US7669000B2 (en) * 2007-10-23 2010-02-23 Brocade Communication Systems, Inc. Host bus adapter with multiple hosts
US20090135916A1 (en) 2007-11-26 2009-05-28 Mediatek Inc. Image processing apparatus and method
WO2009079560A1 (en) 2007-12-17 2009-06-25 Stein Gausereide Real time video inclusion system
CA2713876C (en) * 2008-02-26 2014-11-04 Vmware, Inc. Extending server-based desktop virtual machine architecture to client machines
US8499119B2 (en) * 2008-04-07 2013-07-30 Qualcomm Incorporated Method and apparatus for delivering and caching multiple pieces of content
US8225019B2 (en) * 2008-09-22 2012-07-17 Micron Technology, Inc. SATA mass storage device emulation on a PCIe interface
JP4581012B2 (ja) 2008-12-15 2010-11-17 株式会社東芝 電子機器、及び表示制御方法
US8775544B2 (en) * 2009-02-04 2014-07-08 Citrix Systems, Inc. Methods and systems for dynamically switching between communications protocols
US20100280817A1 (en) 2009-04-30 2010-11-04 Spansion Llc Direct pointer access and xip redirector for emulation of memory-mapped devices
US8635387B2 (en) * 2009-10-09 2014-01-21 Emulex Design & Manufacturing Corporation Enhanced I/O performance in a multi-processor system via interrupt affinity schemes
DE102009058795A1 (de) 2009-12-18 2011-06-22 Epcos Ag, 81669 Piezoelektrisches Keramikmaterial, Verfahren zur Herstellung des piezoelektrischen Keramikmaterials, piezoelektrisches Vielschichtbauelement und Verfahren zur Herstellung des piezoelektrischen Vielschichtbauelements
US8669993B2 (en) 2010-01-11 2014-03-11 Apple Inc. User interface unit for fetching only active regions of a frame
JP5569053B2 (ja) * 2010-03-11 2014-08-13 ソニー株式会社 コンテンツ配信装置、コンテンツ配信方法および送信サーバ
US8341363B2 (en) 2010-05-03 2012-12-25 Panzura, Inc. Efficient cloud network attached storage
CN101937261A (zh) * 2010-05-18 2011-01-05 上海同悦信息科技有限公司 基于通用串行总线的云计算终端
US20140019563A1 (en) * 2010-11-16 2014-01-16 Telefonaktiebolaget Lm Ericsson (Publ) Message targeting platform
KR101312268B1 (ko) 2010-12-24 2013-09-25 주식회사 케이티 클라우드 컴퓨팅 환경에서 게임 서비스 제공 방법, 클라우드 컴퓨팅 서버, 및 클라우드 컴퓨팅 시스템
EP2472879B1 (en) 2010-12-31 2013-06-05 Advanced Digital Broadcast S.A. A method and a system for determining a video frame type
US20120306926A1 (en) 2011-06-06 2012-12-06 Apple Inc. Inline scaling unit for mirror mode
US8281288B1 (en) 2011-10-20 2012-10-02 Google Inc. Integrated development environment with network-based compilation and sandboxed native machine-language capabilities
US10319333B2 (en) 2012-09-26 2019-06-11 Apple Inc. Refresh rate matching for displays
US20140195634A1 (en) * 2013-01-10 2014-07-10 Broadcom Corporation System and Method for Multiservice Input/Output
US20140281023A1 (en) 2013-03-18 2014-09-18 Nvidia Corporation Quality of service management server and method of managing quality of service
US9497358B2 (en) 2013-12-19 2016-11-15 Sony Interactive Entertainment America Llc Video latency reduction

Also Published As

Publication number Publication date
RU2016107200A (ru) 2017-08-30
WO2015094474A1 (en) 2015-06-25
US20190294382A1 (en) 2019-09-26
EP3036646B1 (en) 2020-06-24
CN110888599B (zh) 2023-06-27
CN104735123A (zh) 2015-06-24
RU2649771C2 (ru) 2018-04-04
BR112016004712A2 (pt) 2017-08-01
EP3690664A1 (en) 2020-08-05
JP2016534463A (ja) 2016-11-04
TWI531958B (zh) 2016-05-01
KR101788724B1 (ko) 2017-10-20
EP3036646A4 (en) 2017-07-19
US10353633B2 (en) 2019-07-16
US20150178018A1 (en) 2015-06-25
EP3036646A1 (en) 2016-06-29
CN110888599A (zh) 2020-03-17
CN104735123B (zh) 2019-11-08
TW201537447A (zh) 2015-10-01
KR20160046893A (ko) 2016-04-29

Similar Documents

Publication Publication Date Title
BR112016004712B1 (pt) Dispositivo de interface, sistema, método, e, mídia legível por computador
TWI779325B (zh) 實施用於雲端遊戲資料儲存及擷取之高速資料通信組構之系統及方法
US8473715B2 (en) Dynamic accelerator reconfiguration via compiler-inserted initialization message and configuration address and size information
US11623140B2 (en) High-speed save data storage for cloud gaming
US10235195B2 (en) Systems and methods for discovering private devices coupled to a hardware accelerator
Markussen et al. Smartio: Zero-overhead device sharing through pcie networking
US20100169069A1 (en) Composite device emulation
US20070174034A1 (en) Transparent intellectual network storage device
WO2022068753A1 (zh) 服务器系统、容器设置方法及装置

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 21/10/2014, OBSERVADAS AS CONDICOES LEGAIS