BR102021012475A2 - Computador hospedeiro, método para executar chamadas de função gráfica em uma máquina virtual, e, máquina virtual - Google Patents
Computador hospedeiro, método para executar chamadas de função gráfica em uma máquina virtual, e, máquina virtual Download PDFInfo
- Publication number
- BR102021012475A2 BR102021012475A2 BR102021012475-0A BR102021012475A BR102021012475A2 BR 102021012475 A2 BR102021012475 A2 BR 102021012475A2 BR 102021012475 A BR102021012475 A BR 102021012475A BR 102021012475 A2 BR102021012475 A2 BR 102021012475A2
- Authority
- BR
- Brazil
- Prior art keywords
- graphics
- host
- gpu
- functions
- target
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 37
- 230000006870 function Effects 0.000 claims abstract description 197
- 238000013507 mapping Methods 0.000 claims description 26
- 238000012545 processing Methods 0.000 claims description 25
- 238000010586 diagram Methods 0.000 description 8
- 238000004088 simulation Methods 0.000 description 6
- 230000002093 peripheral effect Effects 0.000 description 5
- 230000001052 transient effect Effects 0.000 description 5
- 239000002184 metal Substances 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 239000011521 glass Substances 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 230000008685 targeting Effects 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
- G06F9/45512—Command shells
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45545—Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
- G06F9/226—Microinstruction function, e.g. input/output microinstruction; diagnostic microinstruction; microinstruction format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45554—Instruction set architectures of guest OS and hypervisor or native processor differ, e.g. Bochs or VirtualPC on PowerPC MacOS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/363—Graphics controllers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
Abstract
Um computador hospedeiro para emular um sistema alvo inclui uma memória hospedeira, uma CPU, e uma GPU hospedeira. A memória hospedeira é configurada para armazenar uma biblioteca de funções gráficas e a VM. A VM inclui uma seção de memória emulada armazenando código alvo configurado para execução no sistema alvo. A CPU é configurada para executar a VM para emular o sistema alvo. A VM é configurada para executar o código alvo e interceptar uma chamada de função gráfica no código alvo. A VM é adicionalmente configurada para redirecionar a chamada de função gráfica para uma função gráfica correspondente na biblioteca de funções gráficas armazenadas na memória hospedeira. A GPU hospedeira é configurada para executar a função gráfica correspondente para determinar pelo menos uma característica configurada para ser representada em uma exibição acoplada à GPU hospedeira.
Description
[001] Certos aspectos de simulação de sistema visam usar, testar ou de outra maneira exercitar o software para um dado sistema alvo sem o hardware genuíno propriamente dito. Essa simulação pode ser alcançada por modificação, ou “redirecionamento”, do software (isto é, o código alvo) para compilar no hardware nativo e sistema operacional (SO) de um computador hospedeiro, ou “hospedeiro”, o código redirecionado inclui uma interface de programação de aplicativo (API) para ligação em ponte entre o código redirecionado e o hardware nativo e SO. Geralmente, o redirecionamento do software é intensivo em termos de trabalho e reduz a fidelidade da simulação.
[002] Alternativamente, a simulação pode ser alcançada por virtualização do sistema integrado, ou “hardware alvo” (por exemplo, em uma máquina virtual, ou VM) para executar uma ou mais porções do código alvo, onde a VM executa por intermédio de um hipervisor no computador hospedeiro, ou central. Em alguns casos, as VMs executam sem um hipervisor. A virtualização se refere à imitação de uma dada unidade de hardware por um programa de software, como uma VM, executando em um computador local ou hospedeiro. A virtualização de hardware alvo, tal como, por exemplo, um único computador de bordo (SBC) ou um controlador de barramento de dados, geralmente requer o conhecimento detalhado do hardware específico para construir uma VM que imitará, ou emulará, o sistema alvo com desempenho comparável ao hardware genuíno. Para a finalidade dessa descrição, os termos “virtualização” e “emulação” são usados de forma intercambiável para se referir a uma VM na qual qualquer aspecto de hardware alvo está sendo emulado, embora o computador hospedeiro possa usar um ou mais outros aspectos do hardware alvo.
[003] Esta seção é destinada a apresentar ao leitor os vários aspectos da técnica que pode ser relacionada a vários aspectos da presente descrição, que são descritos e/ou reivindicados abaixo. Acredita-se que essa discussão seja útil em prover o leitor com informação dos fundamentos para facilitar uma melhor compreensão dos vários aspectos da presente descrição. Consequentemente deve ser entendido que essas declarações devem ser lidas sob esta luz, e não como admissões da técnica anterior.
[004] Um aspecto é direcionado a um computador hospedeiro para emular um sistema alvo. O computador hospedeiro inclui uma memória hospedeira, uma unidade de processamento central (CPU), e uma GPU hospedeira. A memória hospedeira é configurada para armazenar uma biblioteca de funções gráficas e uma máquina virtual (VM). A VM inclui uma seção de memória emulada armazenando código alvo configurado para execução no sistema alvo. A CPU é configurada para executar a VM para emular o sistema alvo. A VM é configurada para executar o código alvo e interceptar uma chamada de função gráfica no código alvo. A VM é adicionalmente configurada para redirecionar a chamada de função gráfica para uma função gráfica correspondente na biblioteca de funções gráficas armazenadas na memória hospedeira. A GPU hospedeira é configurada para executar a função gráfica correspondente para determinar pelo menos uma característica configurada para ser representada em uma exibição acoplada à GPU hospedeira.
[005] Outro aspecto é direcionado a um método para executar chamadas de função gráfica na VM emulando um sistema alvo. O método inclui executar a VM em um computador hospedeiro incluindo a GPU hospedeira. O método inclui executar código alvo para o sistema alvo dentro da VM, o código alvo incluindo uma primeira chamada de função gráfica para uma primeira função gráfica alocada a um primeiro endereço na memória emulada da VM. O método inclui mapear o primeiro endereço para uma primeira função de intercepção gráfica incluindo uma chamada para pelo menos uma função gráfica correspondente em uma biblioteca de funções gráficas armazenadas na memória hospedeira do computador hospedeiro e direcionadas para a GPU hospedeira. O método inclui interceptar a primeira chamada de função gráfica no primeiro endereço na memória emulada da VM. O método inclui executar, com base no mapeamento, a pelo menos uma função gráfica correspondente para determinar pelo menos uma característica configurada para ser representada em uma exibição acoplada à GPU hospedeira.
[006] Ainda outro aspecto é direcionado a uma memória legível por computador acoplada à CPU, uma GPU hospedeira, e RAM de um computador hospedeiro. A memória legível por computador inclui uma seção de código alvo armazenando código alvo configurado para ser executado por um sistema alvo. A memória legível por computador inclui uma biblioteca de funções gráficas direcionadas para a GPU hospedeira. A memória legível por computador inclui uma seção de VM armazenando uma VM que, na execução pela CPU, aloca uma pluralidade de espaços de endereço na RAM, correspondentes às funções gráficas invocadas pelo código alvo. Uma seção de VM inclui uma pluralidade de funções de intercepção gráficas incluindo chamadas para pelo menos uma função gráfica correspondente na biblioteca de funções gráficas direcionadas para a GPU hospedeira. Uma seção de VM inclui um mapeamento das funções gráficas invocadas pelo código alvo para uma pluralidade de funções de intercepção gráficas. A execução do código alvo pela VM resulta na interceptação de invocações de funções gráficas no código alvo e redirecionamento das invocações para pelo menos uma função gráfica correspondente, direcionada para a GPU hospedeira, para determinar pelo menos uma característica configurada para ser representada em uma exibição acoplada à GPU hospedeira.
[007] Existem vários refinamentos das características notadas em relação aos aspectos acima mencionados. Outras características podem também ser incorporadas também nos aspectos acima mencionados. Esses refinamentos e características adicionais podem existir individualmente ou em qualquer combinação. Por exemplo, várias características discutidas abaixo com relação a qualquer dos exemplos ilustrados podem ser incorporadas em qualquer dos aspectos acima descritos, sozinhas ou em qualquer combinação.
[008] A figura 1 é um diagrama de blocos de um sistema incorporado de exemplo de acordo com uma modalidade;
a figura 2 é um diagrama de blocos de um computador hospedeiro de exemplo para emular o sistema incorporado mostrado na figura 1 de acordo com uma modalidade;
a figura 3 é um diagrama de blocos de uma máquina virtual de exemplo para emular o sistema incorporado mostrado na figura 1 de acordo com uma modalidade;
a figura 4 é um diagrama de blocos de uma memória legível por computador, de exemplo, para o computador hospedeiro mostrado na figura 2 de acordo com uma modalidade; e
a figura 5 é um fluxograma de um método de exemplo para executar chamadas de função gráfica em código alvo executando em uma máquina virtual emulando o sistema incorporado, mostrado na figura 1, de acordo com uma modalidade.
a figura 2 é um diagrama de blocos de um computador hospedeiro de exemplo para emular o sistema incorporado mostrado na figura 1 de acordo com uma modalidade;
a figura 3 é um diagrama de blocos de uma máquina virtual de exemplo para emular o sistema incorporado mostrado na figura 1 de acordo com uma modalidade;
a figura 4 é um diagrama de blocos de uma memória legível por computador, de exemplo, para o computador hospedeiro mostrado na figura 2 de acordo com uma modalidade; e
a figura 5 é um fluxograma de um método de exemplo para executar chamadas de função gráfica em código alvo executando em uma máquina virtual emulando o sistema incorporado, mostrado na figura 1, de acordo com uma modalidade.
[009] Caracteres de referência correspondentes indicam partes correspondentes ao longo das várias vistas dos desenhos. Embora características específicas dos vários exemplos possam ser mostradas em alguns desenhos e não em outros, isso é somente por conveniência. Qualquer característica de qualquer desenho pode ser referenciada e/ou reivindicada em combinação com qualquer característica de qualquer outro desenho.
[0010] Tradicionalmente, onde os detalhes do hardware alvo específico são escassos, onde a operação é complexa, ou onde as demandas de processamento são altas, a virtualização de pelo menos alguns sistemas alvos, ou hardware, como uma unidade de processamento gráfico (GPU), pode ser não prática sem o sacrifício da fidelidade. Por exemplo, a documentação dos registros de hardware dentro de uma GPU é geralmente escassa, assim a virtualização da GPU geralmente requereria a engenharia reversa, embora a engenharia reversa nem sempre possa ser possível para a GPU. Adicionalmente, a emulação de a manipulação de dados gráficos teria que ser manipulada em um nível de registro, ou os registros de GPU alvo teriam que ser mapeados para os registros da GPU hospedeira, que podem não coincidir de forma um para um e as chamadas para os registros de GPU alvo podem não ser compatíveis com as chamadas para os registros da GPU hospedeira. Além disso, uma GPU virtualizada poderia operar de forma relativamente lenta, resultando em desempenho global reduzido da VM. Além disso, as propostas tradicionais de emulação da GPU são muitas vezes computacionalmente caras e desgastante para a VM.
[0011] Os exemplos descritos aqui levam em conta esses problemas tradicionais e outros fatores. Um efeito técnico dos exemplos dados aqui melhora o desempenho de computação por reduzir o fardo sobre a VM. Um efeito técnico dos exemplos dados aqui melhora a operação de um computador por reduzir o fardo sobre a CPU por intermédio da VM.
[0012] O computador hospedeiro e a máquina virtual (VM) descritos provêm a virtualização de alta fidelidade das funções gráficas de um sistema alvo sem virtualização da GPU do sistema alvo. As GPUs, isto é, as GPUs alvos, em alguns sistemas incorporados, como dispositivos de aviônicos ou outros sistemas de computação de veículos terrestres ou marítimos, ou sistemas de computação de assistência médica e dispositivos médicos, particularmente aqueles com funções de exibição, tais como, por exemplo, um controlador para uma exibição multifunção (MFD), são complexas, executam computações com alta largura de banda, e frequentemente incorporam tecnologia proprietária que torna a virtualização não prática. O computador hospedeiro descrito aqui hospeda uma VM que virtualiza, ou emula, certo hardware do sistema alvo, executa o código alvo, e intercepta chamadas de função gráfica (por exemplo, chamadas de OpenGL, DirectX, ou Metal, ou chama para qualquer outra biblioteca de gráficos, interface, ou padrão originalmente direcionado para a GPU alvo do sistema alvo) antes do tempo de execução, na inicialização, ou partida, do código alvo, ou no tempo de execução para redirecionar os mesmos para executar pela GPU hospedeira para o computador hospedeiro. Em uma modalidade alternativa, o computador hospedeiro pode hospedar uma VM que virtualiza outro sistema de computação que tem um diferente OS e/ou as biblioteca de gráficos, executa o código alvo, e intercepta chamadas de função gráfica para redirecionar os mesmos para execução pela GPU hospedeira para o computador hospedeiro. A interceptação é realizada por identificação, na VM, de endereços de funções gráficas invocadas no código alvo (por exemplo, binárias ou código de montagem), e registro, ou mapeamento, cada um para uma função de intercepção gráfica, na VM, direcionado para a GPU hospedeira. Consequentemente, a VM redireciona cada chamada funcional gráfica para a GPU hospedeira sem modificar o código alvo e sem comprometer a fidelidade da simulação e a saída gráfica.
[0013] Geralmente, nas modalidades descritas, a GPU hospedeira do computador hospedeiro é diferente da GPU alvo do sistema alvo, mas a implementação hospedeira da biblioteca de gráficos é suficientemente compatível para que a fidelidade da simulação e a saída gráfica não sejam significantemente afetadas.
[0014] A figura 1 é um diagrama de blocos de um sistema alvo de exemplo 99. No exemplo ilustrado, o sistema alvo 99 é um sistema incorporado 100. O sistema incorporado 100 opera uma exibição 102 principalmente sobre uma interface gráfica 104. O sistema incorporado 100 inclui um ou mais computadores de bordo únicos (SBC) 106, cada um incluindo um ou mais hardwares periféricos conectados aos SBC 106 sobre um barramento de dados 108. Os dispositivos periféricos incluem, por exemplo, uma GPU alvo 110, uma interface de comunicação 112, e uma interface de entrada/saída (E/S) discreta 114. O sistema incorporado 100 pode também incluir, por exemplo, memória persistente e não persistente, sensores, controladores de barramento, ou controladores de interrupção (não mostrados). Em outras modalidades, outras configurações são contempladas, como um computador de bordo com várias placas.
[0015] O SBC 106 é um sistema de computação incorporado em uma única placa de circuito impresso e é frequentemente usado em sistemas incorporados compactos, como aviônicos, ou sistemas de computação em navios, equipamentos pesados, ou veículos terrestres, como automóveis, veículos blindados, ou tanques, ou em sistemas de computação de alta densidade, como servidores ou outros sistemas de computação de "lâmina". O SBC 106 geralmente inclui uma unidade de processamento central (CPU) 116, a memória de acesso aleatório (RAM) 118, e a memória 120. Em modalidades alternativas, certos aspectos do SBC 106 podem ser “fora da placa”, por exemplo, a CPU 116, a RAM 118, e a memória 120 podem ser integradas ao SBC 106, enquanto a GPU alvo 110, a interface de comunicação 112, e a interface de E/S discreta 114 podem ser implementadas separadamente em uma ou mais placas de circuito impresso diferentes, placas-filhas, ou cartões de mezanino.
[0016] A memória 120 inclui múltiplas seções, incluindo pelo menos uma biblioteca de gráficos 122 e uma seção armazenando o código alvo 124. Na operação, o SBC 106 e, mais especificamente, a CPU 116, obtém acesso à memória 120 para recuperar e executar o código alvo 124. O código alvo 124 inclui, por exemplo, o código binário executável para operar a exibição 102. Consequentemente, o código alvo 124 inclui chamadas de função gráfica para várias funções gráficas na biblioteca de gráficos 122. Quando uma tal chamada é executada pela CPU 116, a CPU 116 direciona a chamada para a GPU alvo 110 para realizar a execução da função gráfica, que finalmente resulta na determinação de uma ou mais características que podem ser, ou são configuradas para ser, representadas na exibição 102.
[0017] Adicionalmente, o código alvo 124 inclui instruções para a CPU 116 interagir com um ou mais hardwares periféricos, tais como a interface de comunicação 112 e a interface de E/S discreta 114.
[0018] A figura 2 é um diagrama de blocos de um computador hospedeiro de exemplo 200 para emular o sistema incorporado 100 mostrado na figura 1. O computador hospedeiro 200 inclui uma CPU hospedeira 202, RAM 204, uma GPU hospedeira 206, e a memória hospedeira legível por computador 208. O computador hospedeiro 200 opera uma exibição 210 principalmente sobre uma interface gráfica 212 que se estende entre a GPU hospedeira 206 e a exibição 210. A exibição 210 pode ser um dispositivo de exibição genérico, como uma exibição de LCD ou LED, uma exibição vestível, como óculos de realidade virtual ou aumentada, óculos ou viseira, ou, na alternativa, pode ser uma exibição genuína, como a exibição 102. A CPU hospedeira 202, a RAM 204, a GPU hospedeira 206, e a memória hospedeira 208 são conectadas dentro do computador hospedeiro 200 por um barramento de dados 214.
[0019] A memória hospedeira 208 inclui uma seção armazenando uma VM 216, uma seção armazenando uma biblioteca de gráficos 218 de várias funções gráficas direcionadas à GPU hospedeira 206, uma seção armazenando código alvo 124 do sistema incorporado 100, e uma seção armazenando um processo hospedeiro 224, ou um programa hospedeiro, que orquestra a emulação dos vários componentes de hardware do sistema incorporado 100. O processo hospedeiro 224 pode incluir, por exemplo, um aplicativo armazenado na memória hospedeira 208 e carregado à RAM 204 para execução pela CPU hospedeira 202. A biblioteca de gráficos 218 pode incluir, por exemplo, funções OpenGL, DirectX ou Metal, ou qualquer outra biblioteca de gráficos tendo uma implementação que pode ser executada no computador central, por exemplo, no computador hospedeiro 200. Em certas modalidades, a memória hospedeira 208 pode incluir uma seção armazenando pelo menos uma porção da biblioteca de gráficos alvos 122, direcionados para a GPU hospedeira 206. Em modalidades alternativas, uma ou mais seções da memória hospedeira 208 podem ser omitidas e os dados armazenados remotamente. Por exemplo, em certas modalidades, o código alvo 124 pode ser armazenado remotamente em um servidor ou dispositivo de armazenamento em massa, e tornado disponível sobre uma rede à CPU hospedeira 202.
[0020] A figura 3 é um diagrama de blocos de VM 216 para emular o sistema incorporado 100 mostrado na figura 1. A CPU hospedeira 202 obtém acesso à memória hospedeira 208 e executa a VM 216. A VM 216 inclui uma memória emulada 222 que armazena, por exemplo, o código alvo 124. O processo hospedeiro 224, sendo executado na CPU hospedeira 202, orquestra a execução da VM 216 e do código alvo 124. Por exemplo, o processo hospedeiro 224 orquestra, ou monitora, o acesso à memória e execução de instrução para a interceptação de chamadas para biblioteca de gráficos 122 ou para direcionar as chamadas para a GPU alvo 110 no código alvo 124. Em certas modalidades, o processo hospedeiro 224 pode ser separado da VM 216 ou, em modalidades alternativas, incorporado na VM 216. A execução do código alvo 124 interage com as emulações de hardware para o sistema incorporado 100 dentro da VM 216. Todavia, a GPU hospedeira 206 do computador hospedeiro 200 é frequentemente diferente da GPU alvo 110 do sistema incorporado 100. Ainda, a GPU alvo 110 é geralmente demasiadamente complexa e tem largura de banda demasiadamente alta para emular dentro da VM 216 e do processo hospedeiro 224.
[0021] O código alvo 124 inclui pelo menos uma chamada de função gráfica para uma função gráfica na biblioteca de gráficos 122, que é direcionada à GPU alvo 110 do sistema incorporado 100 (mostrado na figura 1). Todavia, dado que a GPU alvo 110 não é emulada dentro da VM 216, chamadas de função gráfica são interceptadas dentro da VM 216 e redirecionadas para execução pela GPU hospedeira 206 do computador hospedeiro 200. Mais especificamente, o código alvo 124 é analisado, ou estaticamente antes da execução, ou antes do tempo de execução, ou dinamicamente durante a execução, ou no momento da execução, para identificar chamadas de função gráfica e para identificar endereços correspondentes na memória emulada para a VM 216 alocada às funções gráficas (na biblioteca de gráficos 122), que podem ser encontrados na memória emulada 222, ou podem ser uma seção da RAM emulada, ou podem estar em uma pilha de códigos alvos. Uma pluralidade de funções de intercepção gráficas 226 é definida na memória emulada 222, que incluem chamadas para funções gráficas correspondentes na biblioteca de gráficos 218 e direcionadas para a GPU hospedeira 206. Os endereços correspondentes na memória emulada para a VM 216 são mapeados para uma pluralidade de funções de intercepção gráficas 226. O mapeamento pode ser armazenado, por exemplo, na memória emulada 222 da VM 216. O mapeamento pode ser na forma de uma tabela mapeando os correspondentes endereços para uma pluralidade de funções de intercepção gráficas. As tabelas de mapeamento podem ser implementadas dentro do processo hospedeiro 224 e armazenadas ou na memória hospedeira 208 ou na RAM 204. Alternativamente, as tabelas de mapeamento podem ser implementadas dentro da VM 216 e armazenadas na memória emulada 222. Consequentemente, as chamadas de função gráfica dentro do código alvo 124 são interceptadas antes da execução, na inicialização do código alvo 124, ou dinamicamente durante a execução, ou no momento da execução, por funções de intercepção gráficas, e redirecionadas para uma função gráfica correspondente na biblioteca de gráficos 218 na memória hospedeira 208 do computador hospedeiro 200. Porque as funções na biblioteca de gráficos 218 são direcionadas à GPU hospedeira 206, a chamada de função gráfica redirecionada é executada pela GPU hospedeira 206 para determinar pelo menos uma característica configurada para ser representada na exibição 210.
[0022] A figura 4 é um diagrama de blocos da memória hospedeira legível por computador 208 para o computador hospedeiro 200 mostrado na figura 2. A memória hospedeira 208 é uma memória não volátil, como memória de disco, acoplada à CPU hospedeira 202, à GPU hospedeira 206, e à RAM 204 do computador hospedeiro 200. A memória hospedeira 208 inclui uma seção armazenando código alvo 124, uma seção armazenando biblioteca de gráficos 218 direcionada para a GPU hospedeira 206, e uma seção armazenando VM 216. A VM 216, na execução pela CPU hospedeira 202, aloca uma pluralidade de espaços de endereço, por exemplo, na RAM 204, correspondentes às funções gráficas invocadas, ou chamadas, pelo código alvo 124. A VM 216 inclui, por exemplo, na memória emulada 222, funções de intercepção gráficas 226 e um mapeamento 228 de uma pluralidade de espaços de endereço para as funções de intercepção gráficas 226. A VM 216 também inclui emulações de hardware 230 para virtualizar componentes de hardware do sistema incorporado 100. Consequentemente, na execução do código alvo 124, invocações de funções gráficas são interceptadas em seu código de instrução e redirecionadas pela função de intercepção gráfica 226 para uma função gráfica na biblioteca de gráficos 218, que é direcionada para a GPU hospedeira 206. A execução da função gráfica pela GPU hospedeira 206 resulta na determinação de pelo menos uma característica configurada para ser representada na exibição 210.
[0023] Conforme descrito acima, as funções de intercepção gráficas 226 incluem uma ou mais chamadas para funções gráficas correspondentes na biblioteca de gráficos 218 na memória hospedeira 208 e direcionadas para a GPU hospedeira 206. Por exemplo, a biblioteca de gráficos 218 pode incluir uma biblioteca de OpenGL, uma biblioteca de DirectX, ou uma biblioteca de Metal.
[0024] A figura 5 é um fluxograma de um método de exemplo 500 para executar chamadas de função gráfica no código alvo executando em uma máquina virtual, como o código alvo 124 executando na VM 216 emulando um sistema alvo 99, como o sistema incorporado 100 mostrado na figura 1. A VM 216 executa 502 no computador hospedeiro 200, que inclui a CPU hospedeira 202, a RAM 204, a GPU hospedeira 206, e a memória hospedeira 208. A VM 216 e, mais especificamente, a CPU hospedeira 202, obtém acesso à, e executa 504, o código alvo 124 para o sistema incorporado 100. A execução do código alvo 124 usando a VM 216 inclui emular certos componentes de hardware do sistema incorporado 100. Geralmente, para a finalidade do método 500, a GPU alvo 110 não é emulada.
[0025] O código alvo inclui uma primeira chamada de função gráfica para uma primeira função gráfica na biblioteca de gráficos 122, direcionada para a GPU alvo 110 do sistema incorporado 100. A primeira chamada de função gráfica geralmente inclui instruções tanto para a CPU alvo 116 quanto para a GPU alvo 110 durante a execução. A primeira função gráfica é alocada a um primeiro endereço na memória emulada de VM 216. O código alvo 124 é analisado para uma pluralidade de chamadas de função gráfica, incluindo a primeira chamada de função gráfica, para uma pluralidade de funções gráficas correspondentes na biblioteca de gráficos 122, direcionadas para a GPU alvo 110. O computador hospedeiro 200 também identifica endereços correspondentes na memória emulada da VM 216, alocada às funções gráficas correspondentes. O primeiro endereço é mapeado 506 para uma primeira função de intercepção gráfica 226 definida na memória emulada 222 da VM 216. Uma pluralidade de funções de intercepção gráficas 226 é definida na memória emulada 222, onde as funções de intercepção gráficas 226 incluem, cada, pelo menos uma chamada de função gráfica para uma função gráfica correspondente na biblioteca de gráficos 218 na memória hospedeira 208 do computador hospedeiro 200 e direcionadas para a GPU hospedeira 206. Por exemplo, a primeira função de intercepção gráfica inclui uma chamada para pelo menos uma função gráfica correspondente na biblioteca de gráficos 218, armazenada na memória hospedeira 208 do computador hospedeiro 200 e direcionada para a GPU hospedeira 206. Adicionalmente, as funções de intercepção gráficas 226 também incluem instruções para a emulação da CPU alvo 116 na VM 216, como um código de operação de retorno para o código alvo 124.
[0026] Na execução do código alvo 124 pela VM 216, a primeira chamada de função gráfica é interceptada 508, estaticamente antes da execução, na inicialização de código alvo 124, ou dinamicamente durante a execução, ou no momento da execução, no primeiro endereço na memória emulada da VM, e redirecionada de acordo com o mapeamento 228 para a primeira função de intercepção gráfica 226. Consequentemente, a GPU hospedeira 206 executa 510 a função gráfica correspondente da biblioteca de gráficos 218, conforme instruída pela primeira função de intercepção gráfica, resultando na determinação de pelo menos uma característica configurada para ser representada na exibição 210.
[0027] Em certas modalidades, o código alvo pode incluir direcionar chamadas para a GPU alvo 110, independentemente de chamadas para a biblioteca de gráficos 122. Em tais modalidades, as chamadas direcionadas para a GPU alvo 110 são também interceptadas e redirecionadas para a GPU hospedeira 206.
[0028] Em algumas modalidades, mapear 506 correspondentes endereços encontrados na memória emulada de VM 216 para as funções de intercepção gráficas 226 inclui uma tabela mapeando os correspondentes endereços encontrados na memória emulada de VM 216, alocados a uma pluralidade de funções gráficas correspondentes para uma pluralidade de funções de intercepção gráficas 226.
[0029] Um efeito técnico de exemplo dos métodos, sistemas, e aparelhos descritos aqui inclui pelo menos um dentre: (a) emulação de um sistema alvo usando uma VM, incluindo chamadas de função gráfica sem emular a GPU alvo ou o código alvo de re-hospedagem; (b) melhoria da fidelidade de a funcionalidade de exibição virtualizada dos sistemas incorporados; (c) interceptação de chamadas de função gráfica no código alvo dentro da VM estaticamente antes da execução, na inicialização de código alvo, ou dinamicamente durante a execução; e (d) redirecionamento de chamadas de função gráfica para a biblioteca hospedeira de gráficos e GPU hospedeira no computador hospedeiro.
[0030] Algumas modalidades envolvem o uso de um ou mais dispositivos de processamento ou computação eletrônicos. Quando usados aqui, os termos “processador” e “computador” e termos relacionados, por exemplo, “dispositivo de processamento”, “dispositivo de computação”, e “controlador” não são limitados a exatamente aqueles circuitos integrados referidos na técnica como um computador, mas amplamente se referem a um processador, um dispositivo de processamento, um controlador, uma unidade de processamento central de finalidade geral (CPU), uma unidade de processamento gráfico (GPU), um microcontrolador, um microcomputador, um controlador lógico programável (PLC), um processador de computador com conjunto reduzido de instruções, uma rede de portas lógicas programáveis (FPGA), um dispositivo de processamento de sinal digital (DSP), um circuito integrado específico de aplicação (ASIC), e outros circuitos ou dispositivos de processamento programáveis, capazes de executar as funções descritas aqui, e esses termos são usados de forma intercambiável aqui. Esses dispositivos de processamento são geralmente “configurados” para executar funções por programação ou para ser programados, ou pelo aprovisionamento de instruções a executar. Os exemplos acima não são destinados a limitar de alguma maneira a definição ou significado dos termos processador, dispositivo de processamento, e termos relacionados.
[0031] Nas modalidades descritas aqui, a memória pode incluir, mas não é limitada a, um meio legível por computador, não transitório, como memória flash, uma memória de acesso aleatório (RAM), memória exclusivamente de leitura (ROM), memória exclusivamente de leitura programável apagável (EPROM), memória exclusivamente de leitura programável eletricamente apagável (EEPROM), e RAM não volátil (NVRAM). Quando usado aqui, o termo “meios legíveis por computador não transitórios” é destinado a ser representativo de quaisquer meios legíveis por computador tangíveis, incluindo, sem limitação, dispositivos de armazenamento em computador não transitórios, incluindo, sem limitação, meios voláteis e não voláteis, e meios removíveis e não removíveis, tais como um firmware, armazenamento físico e virtual, CD-ROMs, DVDs, e qualquer outra fonte digital, como uma rede ou a Internet, bem como meios digitais a serem ainda desenvolvidos, com a única exceção sendo um sinal de propagação transitório. Alternativamente, um disquete, uma memória exclusivamente de leitura de disco compacto (CD-ROM), um disco magneto-óptico (MOD), um disco versátil digital (DVD), ou qualquer outro dispositivo à base de computador implementado em qualquer método ou tecnologia para o armazenamento de informação em curto prazo e em longo prazo, tal como, instruções legíveis por computador, estruturas de dado, módulos e submódulos de programa, ou outros dados podem também ser usados. Por conseguinte, os métodos descritos aqui podem ser codificados como instruções executáveis, por exemplo, “software” e “firmware", incorporadas em um meio legível por computador, não transitório. Ainda, quando usados aqui, os termos “software” e “firmware” são intercambiáveis, e incluem qualquer programa de computador armazenado na memória para execução por computadores pessoais, estações de trabalho, clientes e servidores. Tais instruções, quando executadas por um processador, fazem com que o processador realize pelo menos uma porção dos métodos descritos aqui.
[0032] Também, nas modalidades descritas aqui, canais de entrada adicionais podem ser, mas não são limitados a, periféricos de computador, associados a uma interface de operador, tal como um Mouse e um teclado. Alternativamente, outros periféricos de computador podem também ser usados, que podem incluir, por exemplo, mas não ser limitados a, um digitalizador. Além disso, em algumas modalidades, os canais de saída adicionais podem incluir, mas não ser limitados a, um monitor de interface de operador.
[0033] Os sistemas e métodos descritos aqui não são limitados às modalidades específicas descritas aqui, mas, em vez disso, os componentes dos sistemas e/ou etapas dos métodos podem ser utilizados independentemente e separadamente de outros componentes e/ou etapas descritos aqui.
[0034] Embora as características específicas de várias modalidades da descrição possam ser mostradas em alguns desenhos e não em outros, isso é somente por conveniência. De acordo com os princípios da descrição, qualquer característica de um desenho pode ser referenciada e/ou reivindicada em combinação com qualquer característica de qualquer outro desenho.
[0035] Quando usado aqui, um elemento ou etapa recitado no singular e precedido pela palavra “um” ou “uma” deve ser entendido como não excluindo elementos ou etapas plurais, a menos que tal exclusão seja explicitamente mencionada. Além disso, referências a “uma modalidade” da presente invenção ou a “modalidade de exemplo” não são destinadas a ser interpretadas como excluindo a existência de modalidades adicionais que também incorporam as características recitadas.
[0036] Outros exemplos ilustrativos e não exclusivos de acordo com a invenção são descritos nos seguintes parágrafos:
[0037] Em um exemplo de acordo com a presente invenção, um computador hospedeiro para emular um sistema alvo, o computador hospedeiro compreendendo:
uma memória hospedeira armazenando uma biblioteca de funções gráficas e uma máquina virtual (VM), a VM incluindo uma seção de memória emulada armazenando código alvo configurado para execução no sistema alvo;
uma unidade de processamento central (CPU) configurada para executar a VM para emular o sistema alvo, a VM configurada para:
executar o código alvo,
interceptar uma chamada de função gráfica no código alvo, e
redirecionar a chamada de função gráfica para uma função gráfica correspondente na biblioteca de funções gráficas armazenadas na memória hospedeira; e
uma unidade de processamento gráfico hospedeira (GPU) configurada para executar a função gráfica correspondente para determinar pelo menos uma característica configurada para ser representada em uma exibição acoplada à GPU hospedeira.
uma memória hospedeira armazenando uma biblioteca de funções gráficas e uma máquina virtual (VM), a VM incluindo uma seção de memória emulada armazenando código alvo configurado para execução no sistema alvo;
uma unidade de processamento central (CPU) configurada para executar a VM para emular o sistema alvo, a VM configurada para:
executar o código alvo,
interceptar uma chamada de função gráfica no código alvo, e
redirecionar a chamada de função gráfica para uma função gráfica correspondente na biblioteca de funções gráficas armazenadas na memória hospedeira; e
uma unidade de processamento gráfico hospedeira (GPU) configurada para executar a função gráfica correspondente para determinar pelo menos uma característica configurada para ser representada em uma exibição acoplada à GPU hospedeira.
[0038] Opcionalmente, o computador hospedeiro do parágrafo anterior, em que o código alvo compreende código binário incluindo uma pluralidade de chamadas de função gráfica direcionadas para uma GPU alvo do sistema alvo.
[0039] Opcionalmente, o computador hospedeiro do parágrafo anterior, em que a VM inclui uma segunda seção de memória emulada armazenando um mapeamento de endereços correspondentes a uma pluralidade de chamadas de função gráfica no código alvo para uma pluralidade de funções de intercepção gráficas que incluem chamadas para pelo menos uma função gráfica correspondente na biblioteca de funções gráficas armazenadas na memória hospedeira e direcionadas para a GPU hospedeira.
[0040] Opcionalmente, o computador hospedeiro dos parágrafos anteriores, em que a memória hospedeira armazena um mapa de endereços correspondentes a uma pluralidade de chamadas de função gráfica no código alvo para uma pluralidade de funções de intercepção gráficas que incluem chamadas para pelo menos uma função gráfica correspondente na biblioteca de funções gráficas armazenadas na memória hospedeira e direcionadas para a GPU hospedeira.
[0041] Opcionalmente, o computador hospedeiro dos parágrafos anteriores, em que a memória hospedeira armazena uma biblioteca de funções OpenGL direcionadas para a GPU hospedeira.
[0042] Opcionalmente, o computador hospedeiro dos parágrafos anteriores, compreendendo adicionalmente uma interface gráfica acoplada à GPU hospedeira e configurada para acoplar a GPU hospedeira à exibição.
[0043] Opcionalmente, o computador hospedeiro do parágrafo anterior, compreendendo adicionalmente um dispositivo de exibição de aviônicos acoplado à interface gráfica.
[0044] Um método para executar chamadas de função gráfica em uma máquina virtual (VM) emulando um sistema alvo, o método compreendendo:
executar a VM em um computador hospedeiro incluindo uma unidade de processamento gráfico hospedeira (GPU);
executar código alvo para o sistema alvo dentro da VM, o código alvo incluindo uma primeira chamada de função gráfica para uma primeira função gráfica alocada a um primeiro endereço na memória emulada da VM;
mapear o primeiro endereço para uma primeira função de intercepção gráfica incluindo uma chamada para pelo menos uma função gráfica correspondente em uma biblioteca de funções gráficas armazenadas na memória hospedeira do computador hospedeiro e direcionadas para a GPU hospedeira; interceptar a primeira chamada de função gráfica no primeiro endereço na memória emulada da VM; e
executar, com base no mapeamento, a pelo menos uma função gráfica correspondente para determinar pelo menos uma característica configurada para ser representada em uma exibição acoplada à GPU hospedeira.
executar a VM em um computador hospedeiro incluindo uma unidade de processamento gráfico hospedeira (GPU);
executar código alvo para o sistema alvo dentro da VM, o código alvo incluindo uma primeira chamada de função gráfica para uma primeira função gráfica alocada a um primeiro endereço na memória emulada da VM;
mapear o primeiro endereço para uma primeira função de intercepção gráfica incluindo uma chamada para pelo menos uma função gráfica correspondente em uma biblioteca de funções gráficas armazenadas na memória hospedeira do computador hospedeiro e direcionadas para a GPU hospedeira; interceptar a primeira chamada de função gráfica no primeiro endereço na memória emulada da VM; e
executar, com base no mapeamento, a pelo menos uma função gráfica correspondente para determinar pelo menos uma característica configurada para ser representada em uma exibição acoplada à GPU hospedeira.
[0045] Opcionalmente, o método do parágrafo anterior, compreendendo adicionalmente analisar o código alvo para uma pluralidade de chamadas de função gráfica para uma pluralidade de funções gráficas correspondentes, incluindo a primeira chamada de função gráfica para a primeira função gráfica, e identificar endereços correspondentes na memória emulada da VM, alocados a uma pluralidade de funções gráficas correspondentes.
[0046] Opcionalmente o método do parágrafo anterior, compreendendo adicionalmente definir uma pluralidade de funções de intercepção gráficas correspondentes a uma pluralidade de funções gráficas correspondentes, e mapear os endereços correspondentes na memória emulada da VM para uma pluralidade de funções de intercepção gráficas.
[0047] Opcionalmente o método do parágrafo anterior, compreendendo adicionalmente armazenar, na memória emulada da VM, uma tabela mapeando endereços correspondentes na memória emulada da VM, alocados a uma pluralidade de funções gráficas correspondentes para uma pluralidade de funções de intercepção gráficas.
[0048] Opcionalmente, o método dos parágrafos anteriores, em que executar a VM no computador hospedeiro compreende emular componentes de hardware do sistema alvo, os componentes de hardware excluindo uma GPU alvo do sistema alvo.
[0049] Uma memória legível por computador, acoplada a uma unidade de processamento central (CPU), uma unidade de processamento gráfico hospedeira (GPU), e a memória de acesso aleatório (RAM) de um computador hospedeiro, a memória legível por computador compreendendo: uma seção de código alvo armazenando código alvo configurado para ser executado por um sistema alvo;
uma biblioteca de funções gráficas direcionadas para a GPU hospedeira;
uma seção de máquina virtual (VM) armazenando uma VM que, na execução pela CPU, aloca uma pluralidade de espaços de endereço na RAM, correspondentes às funções gráficas invocadas pelo código alvo, a uma seção de VM incluindo:
uma pluralidade de funções de intercepção gráficas incluindo chamadas para pelo menos uma função gráfica correspondente na biblioteca de funções gráficas direcionadas para a GPU hospedeira; e
um mapeamento das funções gráficas invocadas pelo código alvo para uma pluralidade de funções de intercepção gráficas, em que execução do código alvo pela VM resulta na interceptação de invocações de funções gráficas no código alvo e redirecionamento das invocações para pelo menos uma função gráfica correspondente direcionada para a GPU hospedeira para determinar pelo menos uma característica configurada para ser representada em uma exibição acoplada à GPU hospedeira.
uma biblioteca de funções gráficas direcionadas para a GPU hospedeira;
uma seção de máquina virtual (VM) armazenando uma VM que, na execução pela CPU, aloca uma pluralidade de espaços de endereço na RAM, correspondentes às funções gráficas invocadas pelo código alvo, a uma seção de VM incluindo:
uma pluralidade de funções de intercepção gráficas incluindo chamadas para pelo menos uma função gráfica correspondente na biblioteca de funções gráficas direcionadas para a GPU hospedeira; e
um mapeamento das funções gráficas invocadas pelo código alvo para uma pluralidade de funções de intercepção gráficas, em que execução do código alvo pela VM resulta na interceptação de invocações de funções gráficas no código alvo e redirecionamento das invocações para pelo menos uma função gráfica correspondente direcionada para a GPU hospedeira para determinar pelo menos uma característica configurada para ser representada em uma exibição acoplada à GPU hospedeira.
[0050] Opcionalmente a memória legível por computador do parágrafo anterior, em que uma seção de VM armazena emulações de componentes de hardware do sistema alvo.
[0051] Opcionalmente, a memória legível por computador dos parágrafos anteriores, em que a interceptação de invocações de funções gráficas no código alvo ocorre estaticamente antes da execução do código alvo.
[0052] Opcionalmente, a memória legível por computador dos parágrafos anteriores, em que a interceptação de invocações de funções gráficas no código alvo ocorre na inicialização do código alvo.
[0053] Opcionalmente, a memória legível por computador dos parágrafos anteriores, em que a interceptação de invocações de funções gráficas no código alvo ocorre dinamicamente durante a execução do código alvo.
[0054] Opcionalmente, a memória legível por computador dos parágrafos anteriores, em que a biblioteca de funções gráficas inclui uma biblioteca de OpenGL.
[0055] Opcionalmente, a memória legível por computador dos parágrafos anteriores, em que a biblioteca de funções gráficas inclui uma biblioteca de DirectX.
[0056] Opcionalmente, a memória legível por computador dos parágrafos anteriores, em que a biblioteca de funções gráficas inclui uma biblioteca de Metal.
[0057] Uma máquina virtual (VM) para emular um sistema alvo, a VM compreendendo:
memória emulada armazenando código alvo configurado para ser executado no sistema alvo; e
uma unidade de processamento central emulada (CPU) configurada para:
executar o código alvo,
interceptar uma chamada de função gráfica no código alvo, e
redirecionar a chamada de função gráfica para uma função gráfica correspondente em uma biblioteca de funções gráficas direcionadas para uma unidade de processamento gráfico hospedeira (GPU).
memória emulada armazenando código alvo configurado para ser executado no sistema alvo; e
uma unidade de processamento central emulada (CPU) configurada para:
executar o código alvo,
interceptar uma chamada de função gráfica no código alvo, e
redirecionar a chamada de função gráfica para uma função gráfica correspondente em uma biblioteca de funções gráficas direcionadas para uma unidade de processamento gráfico hospedeira (GPU).
[0058] Opcionalmente, a VM do parágrafo anterior, em que o código alvo compreende código binário incluindo uma pluralidade de chamadas de função gráfica direcionadas para uma GPU alvo de um dispositivo de aviônico.
[0059] Opcionalmente, a VM dos parágrafos anteriores, em que a VM inclui uma segunda seção de memória emulada armazenando um mapeamento de endereços correspondentes a uma pluralidade de chamadas de função gráfica no código alvo para uma pluralidade de funções de intercepção gráficas que incluem chamadas para pelo menos uma função gráfica correspondente na biblioteca de funções gráficas direcionadas para a GPU hospedeira.
[0060] Opcionalmente, a VM dos parágrafos anteriores, em que a CPU emulada é adicionalmente configurada para interceptar a chamada de função gráfica no código alvo antes da execução do código alvo.
[0061] Opcionalmente, a VM dos parágrafos anteriores, em que a CPU emulada é adicionalmente configurada para interceptar a chamada de função gráfica no código alvo na inicialização do código alvo.
[0062] Opcionalmente, a VM dos parágrafos anteriores, em que a CPU emulada é adicionalmente configurada para interceptar a chamada de função gráfica no código alvo durante a execução do código alvo.
[0063] Essa descrição por escrito usa exemplos para descrever várias modalidades, que inclui o melhor modo, para permitir que qualquer pessoa especializada na técnica coloque em prática aquelas modalidades, incluindo produzir e usar quaisquer dispositivos ou sistemas e realizar quaisquer métodos incorporados. O escopo patenteável é definido pelas reivindicações e pode incluir outros exemplos que ocorrem àqueles especializados na técnica. Tais outros exemplos são destinados a estarem dentro do escopo das reivindicações, se elas tiverem elementos estruturais que não diferem da linguagem literal das reivindicações, ou se elas incluírem elementos estruturais equivalentes com diferenças não substanciais das linguagens literais das reivindicações.
Claims (15)
- Computador hospedeiro (200) para emular um sistema alvo (99), o computador hospedeiro caracterizado pelo fato de que compreende:
uma memória hospedeira (208) armazenando uma biblioteca de funções gráficas (218) e uma máquina virtual (VM) (216), a VM incluindo uma seção de memória emulada (222) armazenando código alvo (124) configurado para execução no sistema alvo;
uma unidade de processamento central (CPU) (202) configurada para executar a VM para emular o sistema alvo, a VM configurada para:
executar o código alvo,
interceptar uma chamada de função gráfica no código alvo, e
redirecionar a chamada de função gráfica para uma função gráfica correspondente na biblioteca de funções gráficas armazenadas na memória hospedeira; e
uma unidade de processamento gráfico hospedeira (GPU) (206) configurada para executar a função gráfica correspondente para determinar pelo menos uma característica configurada para ser representada em uma exibição (210) acoplada à GPU hospedeira. - Computador hospedeiro (200) de acordo com a reivindicação 1, caracterizado pelo fato de que o código alvo (124) compreende código binário incluindo uma pluralidade de chamadas de função gráfica direcionadas para uma GPU alvo (110) do sistema alvo (99).
- Computador hospedeiro (200) de acordo com a reivindicação 2, caracterizado pelo fato de que a VM (216) inclui uma segunda seção de memória emulada (222) armazenando um mapeamento de endereços (228) correspondentes a uma pluralidade de chamadas de função gráfica no código alvo (124) para uma pluralidade de funções de intercepção gráficas (226) que incluem chamadas para pelo menos uma função gráfica correspondente na biblioteca de funções gráficas (218) armazenadas na memória hospedeira (208) e direcionadas para a GPU hospedeira (206).
- Computador hospedeiro (200) de acordo com a reivindicação 2, caracterizado pelo fato de que a memória hospedeira (208) armazena um mapa de endereços correspondentes a uma pluralidade de chamadas de função gráfica no código alvo (124) para uma pluralidade de funções de intercepção gráficas (226) que incluem chamadas para pelo menos uma função gráfica correspondente na biblioteca de funções gráficas (218) armazenadas na memória hospedeira e direcionadas para a GPU hospedeira (206).
- Computador hospedeiro (200) de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que a memória hospedeira (208) armazena uma biblioteca de funções OpenGL (218) direcionadas para a GPU hospedeira (206).
- Computador hospedeiro (200) de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que compreende adicionalmente uma interface gráfica (212) acoplada à GPU hospedeira (206) e configurada para acoplar a GPU hospedeira à exibição (210).
- Computador hospedeiro (200) de acordo com a reivindicação 6, caracterizado pelo fato de que compreende adicionalmente um dispositivo de exibição de aviônicos (102; 210) acoplado à interface gráfica (212).
- Método (500) para executar chamadas de função gráfica em uma máquina virtual (VM) (216) emulando um sistema alvo (99), o método caracterizado pelo fato de que compreende:
executar (502) a VM em um computador hospedeiro (200) incluindo uma unidade de processamento gráfico hospedeira (GPU) (206);
executar (504) código alvo (124) para o sistema alvo dentro da VM, o código alvo incluindo uma primeira chamada de função gráfica para uma primeira função gráfica alocada a um primeiro endereço na memória emulada (222) da VM;
mapear (506) o primeiro endereço para uma primeira função de intercepção gráfica (226) incluindo uma chamada para pelo menos uma função gráfica correspondente em uma biblioteca de funções gráficas (218) armazenadas na memória hospedeira (208) do computador hospedeiro e direcionadas para a GPU hospedeira;
interceptar (508) a primeira chamada de função gráfica no primeiro endereço na memória emulada da VM; e
executar (510), com base no mapeamento, a pelo menos uma função gráfica correspondente para determinar pelo menos uma característica configurada para ser representada em uma exibição (210) acoplada à GPU hospedeira. - Método (500) de acordo com a reivindicação 8, caracterizado pelo fato de que compreende adicionalmente analisar o código alvo (124) para uma pluralidade de chamadas de função gráfica para uma pluralidade de correspondentes funções gráficas, incluindo a primeira chamada de função gráfica para a primeira função gráfica, e identificar endereços correspondentes na memória emulada (222) da VM (216) alocada a uma pluralidade de funções gráficas correspondentes.
- Método (500) de acordo com a reivindicação 9, caracterizado pelo fato de que compreende adicionalmente definir uma pluralidade de funções de intercepção gráficas (226) correspondentes a uma pluralidade de funções gráficas correspondentes, e mapear os endereços correspondentes na memória emulada (222) da VM (216) para uma pluralidade de funções de intercepção gráficas.
- Método (500) de acordo com a reivindicação 10, caracterizado pelo fato de que compreende adicionalmente armazenar, na memória emulada (222) da VM (216), uma tabela mapeando (228) os endereços correspondentes na memória emulada da VM alocada a uma pluralidade de funções gráficas correspondentes para uma pluralidade de funções de intercepção gráficas (226).
- Método (500) de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que executar (502) a VM (216) no computador hospedeiro (200) compreende emular componentes de hardware do sistema alvo (99), os componentes de hardware excluindo uma GPU alvo (110) do sistema alvo.
- Máquina virtual (VM) (216) para emular um sistema alvo (99), a VM caracterizada pelo fato de que compreende:
memória emulada (222) armazenando código alvo (124) configurado para ser executado no sistema alvo; e
uma unidade de processamento central emulada (CPU) (230) configurada para:
executar o código alvo,
interceptar uma chamada de função gráfica no código alvo, e
redirecionar a chamada de função gráfica para uma função gráfica correspondente em uma biblioteca de funções gráficas (218) direcionadas a uma unidade de processamento gráfico hospedeira (GPU) (206). - Máquina virtual (216) de acordo com a reivindicação 13, caracterizada pelo fato de que o código alvo (124) compreende código binário incluindo uma pluralidade de chamadas de função gráfica direcionadas para uma GPU alvo (110) de um dispositivo de aviônico.
- Máquina virtual (216) de acordo com qualquer uma das reivindicações anteriores, caracterizada pelo fato de que a VM (216) inclui uma segunda seção de memória emulada (222) armazenando um mapeamento (228) de endereços correspondentes a uma pluralidade de chamadas de função gráfica no código alvo (124) para uma pluralidade de funções de intercepção gráficas (226) que incluem chamadas para pelo menos uma função gráfica correspondente na biblioteca de funções gráficas (218) direcionadas para a GPU hospedeira (206).
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202062706878P | 2020-09-15 | 2020-09-15 | |
US62/706,878 | 2020-09-15 |
Publications (1)
Publication Number | Publication Date |
---|---|
BR102021012475A2 true BR102021012475A2 (pt) | 2022-03-22 |
Family
ID=77358146
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR102021012475-0A BR102021012475A2 (pt) | 2020-09-15 | 2021-06-23 | Computador hospedeiro, método para executar chamadas de função gráfica em uma máquina virtual, e, máquina virtual |
Country Status (8)
Country | Link |
---|---|
US (1) | US11797323B2 (pt) |
EP (1) | EP3968154A1 (pt) |
JP (1) | JP2022048996A (pt) |
KR (1) | KR20220036331A (pt) |
CN (1) | CN114185638A (pt) |
AU (1) | AU2021225171A1 (pt) |
BR (1) | BR102021012475A2 (pt) |
CA (1) | CA3123272A1 (pt) |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8274518B2 (en) * | 2004-12-30 | 2012-09-25 | Microsoft Corporation | Systems and methods for virtualizing graphics subsystems |
CN103424115B (zh) | 2013-07-19 | 2015-12-09 | 上海理工大学 | 微小型飞行器地面试验姿态记录仪 |
US9904973B2 (en) | 2015-11-11 | 2018-02-27 | Amazon Technologies, Inc. | Application-specific virtualized graphics processing |
CN106406977B (zh) | 2016-08-26 | 2019-06-11 | 山东乾云启创信息科技股份有限公司 | 一种gpu虚拟化实现系统及方法 |
CN106371890B (zh) | 2016-08-29 | 2019-05-28 | 山东乾云启创信息科技股份有限公司 | 一种gpu的模拟方法 |
US10417023B2 (en) * | 2016-10-31 | 2019-09-17 | Massclouds Innovation Research Institute (Beijing) Of Information Technology | GPU simulation method |
CN109697102A (zh) | 2017-10-23 | 2019-04-30 | 阿里巴巴集团控股有限公司 | 一种实现虚拟机桌面访问的方法及装置 |
CN108107456B (zh) | 2017-12-22 | 2020-01-17 | 湖南卫导信息科技有限公司 | 实时获取外部轨迹gpu实时生成导航仿真信号的方法 |
US11720408B2 (en) * | 2018-05-08 | 2023-08-08 | Vmware, Inc. | Method and system for assigning a virtual machine in virtual GPU enabled systems |
CN108693510B (zh) | 2018-05-18 | 2022-01-07 | 西安电子科技大学 | 基于gpu的知识辅助机载机会阵地杂波快速仿真方法 |
CN110503318A (zh) | 2019-08-02 | 2019-11-26 | 中国航空无线电电子研究所 | 综合模块化航空电子处理系统资源配置与仿真评估平台 |
CN110515050B (zh) | 2019-08-30 | 2021-08-10 | 北京空间飞行器总体设计部 | 一种基于gpu的星载sar实时回波模拟器 |
-
2021
- 2021-06-23 BR BR102021012475-0A patent/BR102021012475A2/pt unknown
- 2021-06-25 CA CA3123272A patent/CA3123272A1/en active Pending
- 2021-08-11 US US17/399,675 patent/US11797323B2/en active Active
- 2021-08-16 EP EP21191456.9A patent/EP3968154A1/en active Pending
- 2021-08-17 CN CN202110943352.0A patent/CN114185638A/zh active Pending
- 2021-08-19 KR KR1020210109604A patent/KR20220036331A/ko active Search and Examination
- 2021-08-31 AU AU2021225171A patent/AU2021225171A1/en active Pending
- 2021-09-02 JP JP2021143436A patent/JP2022048996A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
CA3123272A1 (en) | 2022-03-15 |
KR20220036331A (ko) | 2022-03-22 |
AU2021225171A1 (en) | 2022-03-31 |
US11797323B2 (en) | 2023-10-24 |
US20220083362A1 (en) | 2022-03-17 |
CN114185638A (zh) | 2022-03-15 |
JP2022048996A (ja) | 2022-03-28 |
EP3968154A1 (en) | 2022-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101296025B1 (ko) | 컴퓨터 시스템에서의 네스티드 가상화 성능의 개선 | |
US10310879B2 (en) | Paravirtualized virtual GPU | |
CN107111498B (zh) | 利用图形虚拟化从/向主机计算机进行虚拟机的实时迁移 | |
US9417899B2 (en) | Memory page de-duplication in a computer system that includes a plurality of virtual machines | |
US10620963B2 (en) | Providing fallback drivers for IO devices in a computing system | |
US20180074956A1 (en) | Method, apparatus, and electronic device for modifying memory data of a virtual machine | |
US20070038996A1 (en) | Remote I/O for virtualized systems | |
US9952887B2 (en) | Device simulation in a secure mode supported by hardware architectures | |
US20140298340A1 (en) | Virtual machine system, virtualization mechanism, and data management method | |
EP3570166B1 (en) | Speculative virtual machine execution | |
US20100280817A1 (en) | Direct pointer access and xip redirector for emulation of memory-mapped devices | |
Yao et al. | Sugar: Secure GPU acceleration in web browsers | |
CN106845245B (zh) | 一种基于Xen虚拟化平台的漏洞热修复方法 | |
US9851992B2 (en) | Paravirtulized capability for device assignment | |
BR102021012475A2 (pt) | Computador hospedeiro, método para executar chamadas de função gráfica em uma máquina virtual, e, máquina virtual | |
EP3435229B1 (en) | System integration using virtualization | |
US20220066911A1 (en) | Virtual machine for developing and testing target code for hardware designs | |
CN116700897A (zh) | 计算环境模板的创建方法、装置、计算设备及存储介质 | |
Kinebuchi et al. | Dynamic translator-based virtualization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B03A | Publication of a patent application or of a certificate of addition of invention [chapter 3.1 patent gazette] |