BRPI0515920B1 - Método, meio operável por computador e sistema para virtualização de recursos de processador - Google Patents

Método, meio operável por computador e sistema para virtualização de recursos de processador Download PDF

Info

Publication number
BRPI0515920B1
BRPI0515920B1 BRPI0515920-2A BRPI0515920A BRPI0515920B1 BR PI0515920 B1 BRPI0515920 B1 BR PI0515920B1 BR PI0515920 A BRPI0515920 A BR PI0515920A BR PI0515920 B1 BRPI0515920 B1 BR PI0515920B1
Authority
BR
Brazil
Prior art keywords
processor
thread
data
memory
address
Prior art date
Application number
BRPI0515920-2A
Other languages
English (en)
Inventor
Aguilar Maximino Jr.
Norman Day Michael
Richard Nutter Mark
Xenidis James
Original Assignee
International Business Machines Corporation
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 International Business Machines Corporation filed Critical International Business Machines Corporation
Publication of BRPI0515920A2 publication Critical patent/BRPI0515920A2/pt
Publication of BRPI0515920B1 publication Critical patent/BRPI0515920B1/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache

Abstract

sistema e método para tornar virtuais recursos de processador. um sistema e um método para o virtualização de recursos do processador é apresentado. uma thread é criada em um processador e a memória local do processador é mapeada em um espaço de endereço eficaz. ao fazer assim, a memória local do processador é acessível por outros processadores, independentemente de se o processador está funcionando. as threads adicionais criam mapeamentos locais adicionais do espaço de endereço eficaz. o espaço de endereço eficaz corresponde a uma memória local física ou a uma área de cópia "virtual". quando o processador está funcionando, um processador diferente pode acessar os dados que estão situados na memória local do primeiro processador da área de armazenamento local do processador. quando o processador não está funcionando, uma cópia virtual da memória local do processador é armazenado em uma posição de memória (isto é, memória cache travada, memória de sistema fixada, memória virtual etc.) para que outros processadores continuem acessando.

Description

(54) Título: MÉTODO, MEIO OPERÁVEL POR COMPUTADOR E SISTEMA PARA VIRTUALIZAÇÃO DE RECURSOS DE PROCESSADOR (51) Int.CI.: G06F 12/02; G06F 12/109 (52) CPC: G06F 12/0284,G06F 12/109 (30) Prioridade Unionista: 30/09/2004 US 10/955,093 (73) Titular(es): INTERNATIONAL BUSINESS MACHINES CORPORATION (72) Inventor(es): MAXIMINO AGUILAR JR.; MICHAEL NORMAN DAY; MARK RICHARD NUTTER; JAMES XENIDIS
1/27 “MÉTODO, MEIO OPERÁVEL POR COMPUTADOR E SISTEMA PARA
VIRTUALIZAÇÃO DE RECURSOS DE PROCESSADOR”.
Fundamentos da Invenção
1. Campo técnico [0001] A presente invenção diz respeito, em geral, um sistema e método para a visualização de recursos de processador. Mais particularmente, a presente invenção diz respeito a um sistema e método para virtualizar memória de processador tal que um ou mais threads podem acessar a memória do processador, independentemente de um estado do processador.
2. Descrição da Técnica Relacionada [0002] Sistemas de computadores estão se tornando mais e mais complexos. A indústria da informática tipicamente dobra o desempenho de um sistema de computador a cada 18 meses (por exemplo, computador pessoal, PDA, console de game). Para que a indústria de computadores realize essa tarefa, a indústria dos semicondutores produz circuitos integrados que dobram o desempenho a cada 18 meses. Um sistema de computador usa circuitos integrados para funções específicas baseadas em arquitetura de circuitos integrados. Duas arquiteturas fundamentais são: 1) baseadas em microprocessador e 2) baseadas em processador de sinal digital.
[0003] Um circuito integrado com uma arquitetura baseada em microprocessador é tipicamente usado para lidar com operações de controle, enquanto um circuito integrado com uma arquitetura baseada em processador de sinal digital é normalmente projetado para tratar manipulações de processamento de sinal (ou seja, operações matemáticas). À medida que a tecnologia evolui, a indústria de informática
Petição 870170057703, de 10/08/2017, pág. 9/40
2/27 e indústria de semi-condutores perceberam a importância do uso de ambas as arquiteturas, ou tipos de processador, em um projeto de sistema de computador.
[0004] Muitos sistemas de computadores utilizam uma arquitetura de múltiplos processadores, a fim de fornecer uma quantidade substancial de poder de processamento durante a tentativa de suportar uma ampla gama de aplicações de software. Um desafio encontrado, porém, é que cada um destes processadores dedicados inclui memória interna que não é acessível por outros processadores, como uma área de armazenamento local e arquivos de registrador. Outro desafio encontrado é que, se um determinado processador está indisponível, outros processadores não podem acessar os dados do processador indisponível.
[0005] Além disso, um processador pode executar vários threads que acessam o mesmo espaço de memória. Um desafio encontrado é que quando uma determinado thread está acessando um determinado espaço de memória, os outros threads devem esperar até que o thread particular esteja completa antes dos outros threads serem capazes de acessar o espaço de memória.
3.Sumário [0006] Foi descoberto que os referidos desafios são abordados em concretizações da invenção pelo mapeamento de uma memória de processador local em um espaço de endereçamento efetivo para cado thread que uma aplicação cria, e usando uma entrada de tabela de paginação para cado thread em que um tradutor de endereço acessa a fim de determinar se para obter uma cópia eletrônica dos dados para o thread processar. Para cado thread que uma aplicação cria, um sistema operacional guarda uma entrada de tabela de
Petição 870170057703, de 10/08/2017, pág. 10/40
3/27 paginação em uma tabela de paginação que inclui um endereço efetivo e um endereço real. O endereço real corresponde a uma localização de armazenamento local ou a uma área de cópia eletrônica. Quando um tradutor de endereço recebe um pedido do thread para recuperar os dados, o tradutor de endereço busca a entrada de tabela de paginação e recupera os dados da localização de endereço real.
[0007] Em concretizações da invenção, um primeiro processador inclui um sistema operacional pelo qual o sistema operacional pode ser um sistema operacional de tempo real (por exemplo, um sistema operacional de jogo) ou um sistema operacional virtual (por exemplo, um sistema operacional de navegação da web). O sistema operacional invoca um thread para uma aplicação específica. O thread é responsável por executar tarefas específicas, tais como a renderização do terreno para uma aplicação de jogo. Quando o sistema operacional invoca o thread, o sistema operacional envia uma entrada de tabela de paginação para uma tabela de paginação. A entrada de tabela de paginação inclui um endereço efetiva e um endereço real que corresponde a uma localização de dados que utiliza o thread. O endereço real pode corresponder a uma localização de memória local física (por exemplo, armazenamento local), ou o endereço real pode corresponder a uma área de cópia eletrônica. Por exemplo, a área de cópia eletrônica pode ser em cache, memória de sistema com pinos ou disco.
[0008] O thread envia uma solicitação que inclui um endereço efetivo para um tradutor de endereço. O endereço efetivo indica a localização de memória efetiva dos dados que o thread pretende acessar. O tradutor de endereço recebe o pedido, e busca uma entrada de tabela de paginação na
Petição 870170057703, de 10/08/2017, pág. 11/40
4/27 tabela da paginação em que o tradutor de endereço identifica o endereço real que corresponde ao endereço efetivo. Se o endereço real corresponde a uma área de armazenamento do processador local, o tradutor de endereço recupera os dados da área de armazenamento do processador local e transfere os dados para o thread. Se o endereço real corresponde a uma área de cópia eletrônica, o tradutor de endereço obtém uma cópia dos dados cópia da área de cópia eletrônica e passa a cópia dos dados para o thread.
[0009] O sistema operacional gerencia os dados do thread salvando e restaurando os dados de e para a área de cópia eletrônica com base em políticas específicas e no estado de um processador correspondente. Em casos especiais, como quando uma memória de processador está sendo utilizada por múltiplos threads, o sistema operacional poderá criar cópia eletrônicas do armazenamento local para cado thread que utiliza diferentes cópia eletrônicas. O sistema operacional cria uma nova entrada de tabela de paginação na tabela de paginação cada vez que o sistema operacional executa uma operação de salvar ou restaurar.
4.Breve descrição dos Desenhos [0010] Concretizações da invenção serão agora descritas, a título de exemplo, apenas com referência aos desenhos anexos, em que:
A Figura 1 é um diagrama mostrando um processador principal acessando uma memória local do processador secundário.
A Figura 2 é um diagrama mostrando umo thread que está incluída em um processador secundário acessando uma memória local do processador principal.
Petição 870170057703, de 10/08/2017, pág. 12/40
5/27
A Figura 3 é um diagrama de umo thread acessando uma cópia eletrônica de uma memória local do processador que está localizada em uma área de cópia eletrônica;
A Figura 4 é um fluxograma de alto nível mostrando as etapas tomadas em um sistema operacional que gerencia a memória do processador com base em uma ou mais threads.
A Figura 5 é um fluxograma mostrando as etapas tomadas ao copiar os dados que estão incluídos em uma memória local de processador secundário em uma área de cópia eletrônica.
A Figura 6 é um fluxograma mostrando as etapas tomadas para restaurar e salvar dados de e para um armazenamento local do processador.
A Figura 7 é um fluxograma mostrando as etapas tomadas na tradução de um endereço usando uma entrada de tabela de paginação e fornecendo dados para umo thread com base no endereço traduzido.
A Figura 8 é um diagrama mostrando uma pluralidade de processadores executando uma pluralidade de threads cujos endereços são mapeados em um espaço de endereçamento comum.
A Figura 9 é um diagrama mostrando dois sistemas operacionais compartilhando recursos de processador em um ambiente de processadores heterogêneos.
Figura 10 é um diagrama mostrando uma arquitetura elemento processador que inclui uma pluralidade de processadores heterogêneos.
A figura 11A ilustra um sistema de tratamento de informação que é um exemplo simplificado de um sistema de computador capaz de executar as operações de computação descritas a seguir.
A Figura 11B é um diagrama com uma área de armazenamento local dividido em memória privada e uma memória não privada.
Petição 870170057703, de 10/08/2017, pág. 13/40
6/27
5.Descrição Detalhada [0011] A descrição seguinte destina-se a fornecer uma descrição detalhada de um exemplo da invenção e não deve ser tomada para ser uma limitação da invenção em si. Pelo contrário, qualquer número de variações pode cair no escopo de aplicação da invenção, que é definido pelas reivindicações que seguem a descrição.
[0012] A Figura 1 é um diagrama mostrando um processador principal acessando um local de memória do processador secundário. Processador A 100 é um processador principal, que inclui um sistema operacional 115. O sistema Operacional 115 pode ser um sistema operacional de tempo real, como um sistema operacional de jogo, ou o sistema operacional 115 pode ser um sistema operacional virtual, tal como um sistema operacional de navegação da web.
[0013] O sistema operacional 115 recebe um pedido de thread da aplicação 105, por meio da qual o sistema operacional 115 invoca o thread 1 110. O thread 1 110 é responsável por executar tarefas específicas, tais como renderização de terrenos em uma aplicação de jogo. Quando o sistema operacional 115 invoca o thread 1 110, o sistema operacional 115 envia a entrada de tabela de paginação 150 para a tabela de paginação 140. A entrada de tabela de paginação 150 inclui um endereço efetivo e um endereço real que corresponde à localização de dados que o thread 1 110 utiliza. O endereço real pode corresponder a uma localização de memória local física (por exemplo, armazenamento local), ou o endereço real pode corresponder a uma área de cópia eletrônica. Por exemplo, uma cópia eletrônica dos dados pode ser armazenada em cache, memória de sistema com pinos, ou
Petição 870170057703, de 10/08/2017, pág. 14/40
7/27 disco (ver Figura 4 e texto correspondente para mais detalhes quanto à memória local física e áreas de cópia eletrônica.
[0014] O thread 1 110 envia um pedido 120 para o tradutor de endereço 130 solicitando acesso a uma determinada porção de memória. A solicitação 120 inclui um endereço efetivo que indica a efetiva localização de memória dos dados que o thread 1 110 pretende ter acesso. O tradutor de endereço 130 recebe o pedido 120, e procura a entrada de tabela de paginação 150 na tabela de paginação 140. O tradutor de endereço 130 identifica que a localização de endereço real local está localizada em um armazenamento local B 170 do processador B 160. O tradutor de endereço 130 recupera dados 180 a partir do armazenamento local B 170, e envia os dados 180 para o thread 1 110. Em uma concretização, tradutor de endereço 130 incrementalmente envia dados 160 para o thread 1 110, como em uma maneira paginação por paginação. Em uma concretização, um thread pode residir em um processador 160 B por meio do qual o thread recupera dados de um armazenamento local do processador A 100 (ver figura 2 e o correspondente texto para mais detalhes sobre threads residentes no processador B 160).
[0015] A Figura 2 é um diagrama mostrando um thread que está incluída em um processador secundário acessando uma memória local do processador principal (por exemplo, um armazenamento local). A Figura 2 é semelhante à Figura 1, com a ressalva de que o processador 160 B inclui um thread que solicita dados de uma memória local do processador A 100, como um armazenamento local 260.
[0016] O processador A 100 inclui sistema operacional 115, segundo o qual, quando o sistema operacional
115 invoca o thread 200, o sistema operacional 115 envia uma
Petição 870170057703, de 10/08/2017, pág. 15/40
8/27 entrada de tabela de paginação 240 para a tabela de paginação 140. A entrada de tabela de paginação 240 inclui um endereço efetivo e um endereço real que corresponde a uma localização de dados que o thread 200 utiliza.
[0017] O thread 2 200 envia pedido 220 ao tradutor de endereço 130. O tradutor de endereço 130 busca a entrada tabela de paginação 240, e determina que os dados estão localizados em um armazenamento local A 260. O tradutor de endereço 130 recupera dados 280 a partir do armazenamento local 260, e fornece os dados 280 o thread 2 200. O tradutor de endereço 130, a tabela de paginação 140, o processador B 160, o processador A 100 e o sistema operacional 115 são os mesmos que aqueles apresentados na Figura 1.
[0018] A Figura 3 é um diagrama de um thread acessando uma cópia eletrônica de uma memória local do processador que está localizado em uma área de cópia eletrônica. Durante a operação, um sistema operacional salva e restaura a memória física para as áreas de cópia eletrônica com base na informação de política. Por exemplo, um sistema operacional pode salvar e restaurar dados em intervalos de tempo particulares (ver Figura 6 e texto correspondente para mais detalhes). Quando os dados são varridos de um armazenamento local para uma área de cópia eletrônica, o sistema operacional muda uma entrada de tabela de paginação na tabela de paginação 140 de modo que o tradutor 130 recupera os dados da área de cópia eletrônica correta.
[0019] O processador A 100 inclui um thread 3 300, que envia uma solicitação 310 para o tradutor de endereço 130. Por sua vez, o tradutor de endereço 130 identifica a entrada de tabela de paginação na tabela de paginação 140, e determina que os dados estão localizados em uma área de
Petição 870170057703, de 10/08/2017, pág. 16/40
9/27 cópia eletrônica, tal como as áreas de cópias eletrônicas 320. As áreas de cópias eletrônicas 320 incluem cache 330, kernel 340, e armazenamento de disco 350. Cache 330 pode ser um cache L1 ou L2, o kernel 340 pode ser memória de sistema com pinos, o armazenamento em disco 350 pode ser um disco rígido externo.
[0020] O tradutor de endereço 130 recupera dados 360 a partir de áreas de cópia eletrônica 320 e fornece dados 360 para o thread 3 300 para posterior processamento. O tradutor de endereço 130, a tabela de paginação 140 e um processador 100 são os mesmos que aqueles apresentados na Figura 1.
[0021] A Figura 4 é um fluxograma de alto nível mostrando as etapas tomadas no sistema operacional que gerencia a memória de processador com base em uma ou mais threads. O processamento começa em 400, quando o sistema operacional recebe um pedido de thread da aplicação 105 (etapa 410). Por exemplo, a aplicação 105 pode desejar invocar um thread que realiza cálculos complexos, tal como a renderização do terreno. O sistema operacional inicia uma thread na etapa 420 por meio da qual o sistema operacional identifica recursos para suportar o thread, tal como o processador B 160. A aplicação 105 e o processador 160 B são os mesmos que aqueles apresentados na Figura 1.
[0022] Uma etapa 430, o processamento identifica o estado de tarefa do processador B 160. Por exemplo, se uma thread requer dados a partir de uma determinada memória local do processador, o sistema operacional identifica se o mesmo processador é o processador que está atribuído para suportar o thread.
Petição 870170057703, de 10/08/2017, pág. 17/40
10/27 [0023] A determinação é feita quanto ao fato de se o thread deve acessar uma memória local do processador físico (armazenamento local) para obter os dados ou se o thread deveria ter acesso a uma cópia eletrônica dos dados em uma área de cópia eletrônica (decisão 440) . Por exemplo, se o thread executa no mesmo processador que inclui os dados, o thread pode acessar o armazenamento local do processador. Em outro exemplo, um thread pode executar em um processador diferente do que a localização dos dados, caso em que o sistema operacional copia os dados para uma área de cópia eletrônica de modo que o thread pode ter acesso a cópia eletrônica, independentemente de o processador correspondente está inativo.
[0024] Se o thread deve usar a memória física local, a decisão 440 se divide para o ramo físico 442, no qual o sistema operacional cria uma entrada de tabela de paginação da tabela de paginação 140 (etapa 450), que inclui um endereço real que é utilizado por um tradutor de endereço para acessar aos dados de uma memória local de processador, ou armazenamento local. A tabela de paginação 140 é a mesma que aquela apresentada na Figura 1.
[0025] Por outro lado, se o thread deve usar uma cópia eletrônica do armazenamento local, a decisão 440 se divide para o ramo Cópia Eletrônica 448, na qual o processamento copia os dados no armazenamento local para uma área de cópia eletrônica (bloco de processo pré-definido 460, ver Figura 5 e texto correspondente para mais detalhes). O sistema operacional cria uma entrada de tabela de paginação da tabela de paginação 140 (etapa 470), que inclui um endereço real que é utilizado por um tradutor de endereço para acessar uma cópia eletrônica de dados em uma área de
Petição 870170057703, de 10/08/2017, pág. 18/40
11/27 cópia eletrônica. Portanto, quando o thread solicita dados, o tradutor de endereço acessa uma área de cópia eletrônica, a fim de fornecer os dados para o thread, independentemente do respectivo estado do processador (ver Figura 3 e texto correspondente para mais detalhes sobre área de cópia eletrônica).
[0026] O sistema operacional executa gestão de memória, recuperando e salvando os dados para dentro e fora do armazenamento local com base em políticas específicas de gestão. Durante o processo de gestão de memória, o sistema operacional poderá restaurar dados a partir de uma área de cópia eletrônica do processador para um armazenamento local, ou o sistema operacional poderá salvar os dados no armazenamento local em uma área de cópia eletrônica (bloco de processo pré-definido 480, ver Figura 6 e texto correspondente para mais detalhes).
[0027] A determinação é feita para determinar se o sistema operacional deve continuar processando pedidos de thread e gerenciar a memória (decisão 490) . Se o sistema operacional deve continuar, a decisão 490 divide-se para o ramo Sim 492 que retorna em loop para processar mais pedidos de threads. Este ciclo continua até que o sistema operacional deva parar, ponto no qual a decisão 490 dividese para o ramal Não 498, no qual o sistema operacional termina em 499.
[0028] A Figura 5 é um fluxograma que mostra as etapas tomadas em copiar os dados que estão incluídos na memória local do processador secundário (ou seja, no armazenamento local) em uma área de cópia eletrônica. O processamento começa em 500, em que o processamento recupera os dados do armazenamento local B 170 na etapa 510. O
Petição 870170057703, de 10/08/2017, pág. 19/40
12/27 armazenamento local B 170 é o mesmo que aquele apresentado na Figura 1.
[0029] A determinação é feita quanto a guardar os dados no cache, tal como cache L1 bloqueado ou cache L2 bloqueado (decisão 520) . Se o sistema operacional deve salvar os dados em cache, a decisão 520 divide-se para o ramal Sim 522, no qual o processamento armazena uma cópia dos dados no cache 330 na etapa 530, e retorna em 540. A Cache 330 é a mesmo que aquela apresentada na Figura 3. Por outro lado, se o sistema operacional não deve armazenar os dados em cache, a decisão 520 se divide para o ramal Não 528 ignorando as etapas de armazenamento de dados no cache.
[0030] A determinação é feita quanto ao fato de se salvar os dados na memória de sistema com pinos, tal como a memória que está reservada dentro do kernel (decisão 550). Se o sistema operacional deve guardar os dados na memória de sistema com pinos, a decisão 550 divide-se para o ramal Sim 552, no qual o processamento armazena uma cópia dos dados no kernel 340 na etapa 560, e retorna em 570. O kernel 340 é o mesmo que o apresentado na Figura 3. Por outro lado, se o sistema operacional não deve armazenar os dados na memória de sistema com pinos, a decisão 550 divide-se para o ramal Não 558 ignorando as etapas de armazenamento de dados no sistema de memória com pinos.
[0031] A determinação é feita quanto a guardar os dados no disco, como um disco rígido externo (decisão 580). Se o sistema operacional deve salvar os dados em disco, a decisão 580 divide-se para o ramal Sim 582, no qual o processamento armazena os dados em armazenamento de disco 350 na etapa 590, e retorna em 595. O armazenamento em disco 350 é o mesmo que o apresentado na Figura 3. Por outro lado,
Petição 870170057703, de 10/08/2017, pág. 20/40
13/27 se o sistema operacional não deve armazenar os dados em disco, a decisão 580 divide-se para o ramal Não 588 ignorando as etapas de armazenando dados em disco, e retorna a 595.
[0032] A Figura 6 é um fluxograma mostrando as etapas tomadas para restaurar e salvar dados de e para um armazenamento local de processador (ou seja, memória local). Um sistema operacional gera dados correspondentes de thread ao salvar e restaurar os dados com base em políticas específicas e no estado dos processadores correspondentes. Um sistema operacional tenta proporcionar um thread com a capacidade de acesso aos dados na memória física local, por oposição ao acesso a uma cópia eletrônica dos dados em uma área de cópia eletrônica. Em casos especiais, como quando uma memória de processador está sendo utilizada por múltiplos threads, o sistema operacional cria cópias eletrônicas do armazenamento local por meio do qual os threads utilizam as cópias eletrônicas.
[0033] O processamento começa em 600, quando o processamento recupera políticas do armazenamento de políticas 610 na etapa 605. O armazenamento de políticas 610 pode ser armazenado em uma área de armazenamento não volátil, tal como um disco rígido do computador. O processamento seleciona uma primeira tarefa na etapa 615. Em uma concretização, o tratamento pode selecionar um primeiro thread, em vez de uma primeira tarefa.
[0034] A determinação é feita para determinar se restaurar dados a partir de uma área de cópia eletrônica para um armazenamento local (decisão 620). Por exemplo, um thread pode estar em baixa prioridade e, entretanto, ter utilizado uma cópia eletrônica de dados em uma área de cópia
Petição 870170057703, de 10/08/2017, pág. 21/40
14/27 eletrônica. Para continuar com este exemplo, o sistema operacional pode mover o thread para uma alta prioridade e o sistema operacional restaura o armazenamento local com a cópia eletrônica e, por sua vez, instrui um tradutor de endereço para recuperar dados a partir do armazenamento local para fornecer à thread.
[0035] Se o sistema operacional pretende restaurar dados a partir de uma área de cópia eletrônica para um armazenamento local, a decisão 620 divide-se para o ramo Sim 622 ficando, no qual o processamento recupera a cópia eletrônica da área de cópia eletrônica 320 na etapa 625, e armazena a cópia eletrônica no armazenamento local B 170 (etapa 630). As áreas de cópias eletrônicas 320 e o armazenamento local B 170 são os mesmos que aqueles mostrados nas figuras 3 e 1, respectivamente. O processamento muda uma entrada de tabela de paginação na tabela de paginação 140 na etapa 635, que inclui um novo endereço correspondente a uma localização de armazenamento local em que o tradutor de endereço recupera os dados para fornecer para o thread. Durante as etapas 625, 630 e 635, o tradutor de endereço está bloqueado tal que a memória local B 170 está inacessível por outros threads até que a operação de restauração esteja completa. Por outro lado, se o sistema operacional não deve efetuar uma operação de restauração, a decisão 620 divide-se para o ramal Não 628 ignorando as etapas de restauração de dados.
[0036] A determinação é feita quanto ao fato de se guardar os dados de um armazenamento local uma área de cópia eletrônica (decisão 640). Por exemplo, um thread pode ser colocado em baixa prioridade e, portanto, o sistema operacional encarrega um tradutor endereço, através de uma
Petição 870170057703, de 10/08/2017, pág. 22/40
15/27 entrada de tabela de paginação, de utilizar uma cópia eletrônica dos dados.
[0037] Se o sistema operacional deseja salvar os dados em uma área de cópia eletrônica, a decisão 640 dividese para o ramal Sim 642, no qual o processamento recupera os dados do armazenamento local B 170 na etapa 645, e copia os dados para as áreas de cópias eletrônicas 320 (etapa 650). As áreas de cópias eletrônicas 320 podem incluir cache, sistema de memória com pinos, ou de disco (ver figuras 3, 5, e texto correspondente para mais detalhes sobre área de cópia eletrônica).
[0038] O processamento muda uma entrada de tabela de paginação da tabela de paginação 140 na etapa 655 que inclui um novo endereço real correspondente à área de cópia eletrônica em que um tradutor de endereço usa para obter os dados para o thread correspondente. Durante as etapas 645, 650 e 655, o tradutor de endereço está bloqueado tal que a memória local B 170 está inacessível por outros threads até que a operação salvar seja concluída.
[0039] A determinação é feita para determinar se existem mais tarefas para processar (decisão 660). Se há mais tarefas a processar, decisão 660 divide-se para o ramal Sim 662 que entra em loop de volta para selecionar (etapa 670) e processa a próxima tarefa. Este ciclo continua até que não haja mais tarefas a processar, ponto em que a decisão 660 divide-se para o ramal Não 668 no qual o processamento retorna a 680.
[0040] A Figura 7 é um fluxograma que mostra as etapas tomadas na tradução de um endereço usando uma entrada de tabela de paginação e fornecendo dados para um thread com base no endereço traduzido. O processamento começa em 700,
Petição 870170057703, de 10/08/2017, pág. 23/40
16/27 em que o tradutor de endereço recebe um pedido do thread 720 na etapa 710. O thread 720 pode ser um thread particular, tal como o thread 1 110, o thread 2 200, ou o thread 3 300 que são mostradas nas Figuras 1, 2 e 3, respectivamente. O thread 720 inclui um endereço efetivo que corresponde à localização dos dados que o thread 720 pretende ter acesso.
[0041] Na etapa 730, o tradutor de endereço acessa a tabela de paginação 140 e traduz o endereço efetivo para um endereço real usando uma ou mais das entradas de tabela de paginação. Um sistema operacional gerencia as entradas de tabela de paginação de modo que cada entrada de tabela de paginação inclui um endereço real, que corresponde a uma memória local física ou uma área de cópia eletrônica (ver Figura 6 e texto correspondente para mais informações relativas a gerenciamento de entrada de tabela de paginação). A tabela de paginação 140 é a mesma que aquela apresentada na Figura 1.
[0042] O tradutor de endereço recupera dados a partir de qualquer área de cópia eletrônicas 320 ou memória local B 170 com base no endereço traduzidos real (etapa 740). A área de cópia eletrônica 320 e a memória local B 170 são as mesmas que aquelas mostradas nas figuras 3 e 1, respectivamente. Na etapa 750, o processamento passa os dados recuperados paro thread 720. Em uma concretização, o tradutor de endereço incrementalmente passa os dados para o thread 720, tal como uma paginação de dados em um tempo.
[0043] A determinação é feita para determinar se o tradutor de endereço deve continuar a processar pedidos de thread (decisão 760). Se o tradutor de endereço deve continuar a processar pedidos de thread, a decisão 760 divide-se para o ramo Sim 762, em que entra em loop de
Petição 870170057703, de 10/08/2017, pág. 24/40
17/27 volta para processar mais pedidos de thread. Este ciclo continua até que não haja mais pedidos thread a serem processados, ponto no qual a decisão 760 divide-se para o ramo Não 768, em que a tradução de endereço acaba em 770.
[0044] A Figura 8 é um diagrama mostrando uma pluralidade de processadores executando uma pluralidade de threads cujos endereços são mapeados em um espaço de endereçamento comum. A presente invenção permite que múltiplos threads funcionem em múltiplos processadores, cada um, enquanto cada respectivo acesso à memória do thread é gerido por um sistema operacional e mapeado em um espaço de endereçamento, como o espaço de endereçamento 850.
[0045] O processador B1 800 inclui thread E 805 e thread F 810. O espaço de endereçamento efetivo do thread E 805 e do thread F 810 são o espaço de endereçamento efetivo E 855 e o espaço de endereçamento efetivo F 860, respectivamente, ambos os quais estão incluídos no espaço de endereçamento 850. Cada thread executa operações independentes e, além disso, alguns threads podem ser controlados por um primeiro sistema operacional e outros threads podem ser controlados por um segundo sistema operacional (veja a Figura 9 e texto correspondente para mais detalhes sobre vários sistemas operacionais).
[0046] O processador B2 815 inclui três threads, que são thread G 820, thread H 825, I e thread 830. Como pode ser visto na Figura 8, o endereço efetivo do thread G 820, o do thread H 825 e o do thread I 830 são o endereço eficaz G 865, o endereço eficaz H 870, e o endereço eficaz I 875, respectivamente, que estão localizados no espaço de endereçamento 850.
Petição 870170057703, de 10/08/2017, pág. 25/40
18/27 [0047] Por último, o processador B3 860 inclui duas threads, que são o thread J 840 e thread K 845. O espaço de endereçamento efetivo do thread J 840 e do thread K 845 são o espaço de endereçamento efetivo J 880 e o espaço de endereçamento efetivo K 885, respectivamente, que estão localizados no espaço de endereçamento 850.
[0048] Os threads mostrados na figura 8 podem ser geridos de modo que seus respectivos processadores são virtuais para um sistema operacional ou um aplicativo. Por exemplo, podem existir dois sistemas operacionais, tal que um sistema operacional pensa que está controlando três processadores, enquanto o outro sistema operacional pensa que está controlando dois processadores, embora haja apenas três processadores no sistema de computador (ver Figura 9 e o texto correspondente para mais detalhes sobre compartilhamento de recursos entre os dois sistemas operacionais.
[0049] A Figura 9 é um diagrama mostrando dois sistemas operacionais compartilhando recursos de processador em um ambiente de processador heterogêneo. A Figura 9 mostra a utilização de virtualizar uma memória local de processador, a fim de compartilhar recursos entre os diferentes sistemas operacionais. Por exemplo, um sistema de computador pode executar dois sistemas operacionais e incluir oito processadores. Neste exemplo, o primeiro sistema operacional requer seis processadores e o segundo sistema operacional requer todos os oito processadores. Neste exemplo, os recursos do processador são virtualizados e compartilhados entre os dois sistemas operacionais, a fim de satisfazer os requisitos de ambos os sistemas operacionais.
Petição 870170057703, de 10/08/2017, pág. 26/40
19/27 [0050] O processador A 100 inclui um sistema operacional 1 900 e um sistema operacional 2 950. Cada sistema operacional pode ser responsável por funções específicas. Por exemplo, o sistema operacional 1 900 pode ser um sistema operacional de tempo real para um aplicativo de jogo e o sistema operacional 2 950 pode ser um sistema operacional virtual que gerencie navegação na web.
[0051] A Figura 9 mostra um processador B1 800, um processador B2 815, e um processador B3 835 executando múltiplos threads. O sistema operacional 1 900 utiliza threads E 805, H 825, I 830, J 840 e K 845. Como tal, o sistema operacional 900 acha que tem controle de todos os três processadores (B1 800, B2 815 e B3 835). Os processadores Bl 800, B2 815 e B3 835 são os mesmos que aqueles apresentados na Figura 8.
[0052] Além disso, a Figura 9 mostra que o sistema operacional 2 950 utiliza threads F 810 e G 820. Como tal, o sistema operacional 950 acha que tem controle de dois processadores (800 B1 e B2 815). Combinados, os sistemas operacionais acham que há cinco processadores no sistema de computador, quando, na realidade, são apenas três. Threads E 805, F 810, G 820, C 825, I 830, J 840, e 845 K são as mesmas que aquelas mostradas na Figura 8.
[0053] Cada um dos threads pode ter acesso à memória local correspondente a um dos outros processadores usando a invenção descrita aqui. Por exemplo, o thread E 805 poderá acessar a memória local do processador B3 835 enviando um pedido para um tradutor de endereço para acessar a memória local do processador B3 835. Neste exemplo, o tradutor de endereço identifica um endereço real correspondente à memória local do processador B3 835 utilizando uma entrada
Petição 870170057703, de 10/08/2017, pág. 27/40
20/27 de tabela de paginação que está localizada em uma tabela de paginação. O endereço real pode corresponder a uma memória local física, ou o endereço real pode corresponder a uma área de cópia eletrônica que inclui uma cópia eletrônica dos dados do processador B3 835 (ver figuras 1 a 7 e texto correspondente para mais detalhes quanto à tradução de endereço).
[0054] arquitetura
A Figura 10 é um diagrama mostrando uma de elemento processador que inclui uma pluralidade de processadores heterogêneos. Os processadores heterogêneos compartilham uma memória comum e um barramento comum. A arquitetura de elemento processador (PEA) 1000 envia e recebe informações para/ de dispositivos externos através entrada/ saída 1070, e distribui as informações para o plano de controle 1010 e plano de dados 1040 utilizando o barramento de elemento processador 1060. O plano de controle 1010 gerencia o PEA 1000 e distribui trabalho para o plano de dados 1040.
[0055] O plano de controle 1010 inclui unidade de processamento 1020 que executa o sistema operacional (OS) 1025. Por exemplo, a unidade de processamento 1020 pode ser um núcleo PC Power que está incorporado no PEA 1000 e o OS 1025 pode ser um sistema operacional Linux. A unidade de processamento 1020 gerencia uma tabela de mapeamento de memória comum para PEA 1000. A tabela de mapeamento de memória corresponde às localizações de memória incluídas no PEA 1000, tal como a memória L2 1030, bem como memória nãoprivada incluída no plano de dados 1040 (veja as Figuras 11A e 11B, e texto correspondente para mais detalhes sobre o mapeamento de memória).
Petição 870170057703, de 10/08/2017, pág. 28/40
21/27 [0056] O plano de dados 1040 inclui complexo de processamento sinergético (SPC) 1045, 1050 e 1055. Cada SPC é utilizado para processar informações de dados e cada SPC pode ter diferentes conjuntos instrução. Por exemplo, o PEA 1000 pode ser utilizado em um sistema de comunicações sem fio e cada SPC pode ser responsável pelo processamento separado de tarefas, tais como a modulação, processamento de taxa de chip, codificação e interfaceamento de rede. Em outro exemplo, cada SPC pode ter conjuntos de instrução idênticos e podem ser utilizados em paralelo para realizar operações que se beneficiam de processos paralelos. Cada SPC inclui uma unidade de processamento sinérgica (SPU), que é um núcleo de processamento, tal como um processador de sinal digital, um microcontrolador, um microprocessador, ou uma combinação desses núcleos.
[0057] Os SPC 1045, 1050 e 1055 estão ligados ao barramento de elemento processador 1060, que transmite informações entre o plano de controle 1010, o plano de dados 1040, e entrada / saída 1070. O barramento 1060 é um barramento multi-processador coerente on-chip que passa informações entre E / S 1070, o plano de controlo 1010 e plano de dados 1040. E/ S 1070 inclui lógica flexível de entrada / saída que atribui dinamicamente pinos interface para controladores de entrada / saída baseados em dispositivos periféricos que estão ligados ao PEA 1000. Por exemplo, o PEA 1000 pode ser ligado a dois dispositivos periféricos, tais como o periférico A e o periférico B, em que cada periférico se conecta a um determinado número de pinos de entrada e saída no PEA 1000. Neste exemplo, a lógica flexível de entrada / saída é configurada para rotear os pinos de entrada e saída externos do PEA 1000 que estão
Petição 870170057703, de 10/08/2017, pág. 29/40
22/27 ligados a um periférico A para um primeiro controlador de entrada/saída (ou seja, IOC A) e rotear os pinos de entrada e saída externos do PEA 1000 que estão ligados a um periférico B para um segundo controlador de entrada/saída (ou seja, COI B).
[0058] A figura 11A ilustra um sistema de tratamento de informação que é um exemplo simplificado de um sistema de computador capaz de realizar as operações de computação descritas a seguir. O exemplo apresentado na Figura 11A mostra uma pluralidade de processadores heterogêneos usando um mapa memória comum, a fim de compartilhar memória entre os processadores heterogêneos. O dispositivo 1100 inclui a unidade de processamento 1130 que executa um sistema operacional para os dispositivos 1100. A unidade de processamento 1130 é semelhante à unidade de processamento 1020 mostrada na Figura 10. A unidade de processamento 1130 utiliza mapeamento de memória do sistema 1120 para alocar espaço de memória em todo o dispositivo 1100. Por exemplo, a unidade de processamento 1130 usa o mapa de memória do sistema 1120 para identificar e alocar áreas de memória quando a unidade de processamento 1130 quando um pedido de memória. A unidade de processamento 1130 acessa a memória L2 1125 para a recuperação de dados e informações de pedidos. A memória L2 1125 é semelhante à memória L2 1030 mostrada na Figura 10.
[0059] O mapa de memória do sistema 1120 separa as áreas de mapeamento de memória em regiões que são as regiões 735, 745, 750, 755 e 760. A região 735 é uma região de mapeamento para a memória de sistema externa que pode ser controlada por um dispositivo de entrada/ saída separado. A região 745 é uma região de mapeamento para as localizações
Petição 870170057703, de 10/08/2017, pág. 30/40
23/27 de armazenamento não-privadas correspondentes a um ou mais complexos de processamento sinergéticos, tal como o SPC 1102. O SPC 1102 é semelhante ao SPC mostrado na Figura 10, tal como o SPC A 1045. O SPC 1102 inclui memória local, tal como o armazenamento local 1110, em que parte da memória local pode ser alocada para a memória do sistema global para os outros processadores terem acesso. Por exemplo, 1 MB do armazenamento local 1110 pode ser atribuído ao armazenamento não-privado, em que se torna acessível por outros processadores heterogêneos. Neste exemplo, aliases de armazenamento local 745 gerenciam o 1 MB de armazenamento não privado localizado no armazenamento local 1110.
[0060] A região 750 é uma região de mapeamento para buffers de tradução lookaside (TLB' s) e controle do fluxo de memória (registradores MFC). Um buffer de tradução lookaside inclui referências cruzadas entre os endereços virtuais e os endereços reais de paginação referenciados recentemente da memória. O controle do fluxo de memória fornece funções de interface entre o processador e o barramento, como controle de DMA e sincronização.
[0061] A região 755 é uma região de mapeamento para o sistema operacional e é uma memória de sistema com pinos com garantias de largura de banda e latência. A região 760 é uma região de mapeamento para dispositivos de entrada/ saída que são externos ao dispositivo 1100 e são definidos pelo sistema e arquiteturas de entrada / saída.
[0062] O complexo de processamento sinergético (SPC) 1102 inclui unidade de processamento sinergéticas (SPU) 1105, armazenamento local 1110, e unidade de gerenciamento de memória (MMU) 1115. A unidade de processamento 1130 gerencia o SPU 1105 e processa dados em resposta à direção
Petição 870170057703, de 10/08/2017, pág. 31/40
24/27 processamento armazenamento da unidade de processamento 1130. Por exemplo, a SPU 1105 pode ser um núcleo de processamento sinal digital, um núcleo microprocessador, um núcleo microcontrolador ou uma combinação desses núcleos. O armazenamento local 1110 é uma área de armazenamento que o SPU 1105 configura para a área de armazenamento privada e uma área de armazenamento nãoprivado. Por exemplo, se o SPU 1105 requer uma quantidade substancial de memória local, o SPU 1105 pode alocar 100% do armazenamento local 1110para memória privada. Em outro exemplo, se o SPU 1105 requer uma quantidade mínima de memória local, o SPU 1105 pode alocar 10% do armazenamento local 1110 para memória privada e alocar os 90% restantes de armazenamento local 1110 para memória não privada (ver Figura 11B e texto correspondente para mais detalhes sobre a configuração de armazenamento local).
[0063] As porções de armazenamento local 1110 que são alocadas à memória não privada são gerenciadas pelo mapa de memória de sistema 1120 na região 745. Estas regiões de memória não-privadas podem ser acessadas por outras SPUs ou por unidade de processamento 1130. MMU 1115 inclui uma função de acesso de memória direto (DMA) e transmite informações a partir de um armazenamento local 1110 para outras localizações de memória dentro do dispositivo 1100.
[0064] A Figura 11B é um diagrama mostrando uma área de armazenamento local dividido em memória privada e memória não privada. Durante o boot do sistema, a unidade de sinérgico (SPU) 1160 particiona o local 1170 em duas regiões, que são o armazenamento privado 775 e o armazenamento não privado 780.
A SPU 1160 é semelhante à SPU 1105 e o armazenamento local
1170 é semelhante ao armazenamento local 1110 que são
Petição 870170057703, de 10/08/2017, pág. 32/40
25/27 mostrados na figura 11A. O armazenamento privado 775 é acessível pela SPU 1160, enquanto o armazenamento não privado 780 é acessível pela SPU 1160, bem como de outras unidades de processamento dentro de um determinado dispositivo. A SPU 1160 utiliza armazenamento privado 775 para acesso rápido aos dados. Por exemplo, a SPU 1160 pode ser responsável por cálculos complexos que requerem que a SPU 1160 acesse rapidamente extensas quantidades de dados que são armazenados na memória. Neste exemplo, a SPU 1160 podem alocar 100% do armazenamento local 1170 para armazenamento privado 775, a fim de garantir que a SPU 1160 tenha memória local suficiente para o acesso. Em outro exemplo, a SPU 1160 pode não exigir uma grande quantidade de memória local e, portanto, pode alocar 10% do armazenamento local 1170 para armazenamento privado 775 e alocar os 90% restantes do armazenamento local 1170 para armazenamento não privado 780.
[0065] Uma região de mapeamento de memória do sistema tal como aliases de armazenamento local 1190, gerencia porções do armazenamento local 1170 que são alocadas para o armazenamento não privado. Aliases de local de armazenamento 1190 é semelhante à aliases de local de armazenamento 745 que é mostrada na figura 11A. Aliases de local de
armazenamento 1190 gerenciam o armazenamento não privada
para cada SPU e permite que outros SPU acessem o
armazenamento não privada, bem como uma unidade de
processamento de controle de dispositivo.
[0066] Embora o sistema de computador descrito nas figuras 10, 11A, e 11B são capazes de executar os processos descritos neste documento, este sistema de computador é simplesmente um exemplo de um sistema de computador. Aqueles qualificados na técnica irão apreciar que muitos outros
Petição 870170057703, de 10/08/2017, pág. 33/40
26/27 projetos de sistema de computador são capazes de realizar os processos descritos a seguir.
[0067] Uma das implementações preferidas da invenção é uma aplicação, ou seja, um conjunto de instruções (código de programa) em um módulo de código que pode, por exemplo, ser residente na memória de acesso aleatório do computador. Até exigido pelo computador, o conjunto de instruções pode ser armazenado em uma outra memória de computador, por exemplo, em uma unidade de disco rígido, ou em um armazenamento removível, como um disco óptico (para eventual utilização em um CD-ROM) ou disquete (para eventual utilização de uma unidade de disquete), ou baixado através da Internet ou outra rede de computadores. Assim, a presente invenção pode ser implementada como um produto de programa de computador para uso em computador. Além disso, embora os vários métodos descritos são convenientemente executados em um computador de uso geral seletivamente ativado ou reconfigurado por software, uma pessoa de habilidade ordinária na técnica também reconhecerá que tais métodos podem ser realizados em hardware, em firmware, ou em aparelhos mais especializados construídos para realizar as etapas necessárias do método.
[0068] Embora concretizações particulares da presente invenção tenham sido apresentadas e descritas, será óbvio para aqueles qualificados na técnica que, com base nos ensinamentos aqui apresentados, mudanças e alterações podem ser feitas sem se afastar da presente invenção e de seus aspectos mais amplos e, portanto, as reivindicações anexas englobam em seu escopo todas essas alterações e modificações que estão dentro do verdadeiro escopo da presente invenção. Além disso, deve ser entendido que a invenção é definida
Petição 870170057703, de 10/08/2017, pág. 34/40
27/27 exclusivamente pelas reivindicações anexas. Será entendido por aqueles com habilidade na técnica que, se um número específico de um elemento de reivindicação introduzido é pretendido, tal pretensão será recitada explicitamente nas reivindicações, e na ausência de tal recitação, essa limitação não está presente. Para um exemplo não-limitante, com uma ajuda para a compreensão, as seguintes reivindicações anexas contêm o uso de frases introdutória pelo menos um e um ou mais, para introduzir elementos de reivindicação. No entanto, a utilização de tais expressões não deve ser interpretado de forma a concluir que a introdução de um elemento de reivindicação pelo artigo indefinido um ou uma limite qualquer reivindicação particular que contenha tal elemento de reivindicação introduzido para invenções que contenham apenas um desses elementos, mesmo quando a mesma reivindicação inclui as frases de introdução um ou mais ou pelo menos e artigos indefinidos tais como um ou uma, o mesmo é válido para a utilização nas reivindicações dos artigos definidos.
Petição 870170057703, de 10/08/2017, pág. 35/40
1/3

Claims (11)

  1. REIVINDICAÇÕES
    1. Método para virtualização de recursos de processador caracterizado pelo fato de que compreende:
    receber uma solicitação de thread (410) de um sistema operacional em execução em um primeiro processador para acionar uma thread;
    em resposta a receber uma solicitação de thread, determinar um estado de processador (430) de um segundo processador, o segundo processador incluindo dados em um armazenamento local (1170) acessível pela thread;
    em resposta a determinar que o estado do segundo processador indica que a thread deveria acessar uma cópia virtual dos dados, copiar os dados (460) do armazenamento local do segundo processador para uma área de cópia virtual (320), resultando em uma cópia virtual dos dados;
    após a cópia, receber uma solicitação de dados da thread que inclui um endereço eficaz, em que i endereço eficaz corresponde aos dados que estão localizados no armazenamento local do segundo processador;
    traduzir o endereço eficaz para um endereço real usando uma entrada de tabela de página, em que o endereço real corresponde à área de cópia virtual; e fornecer a cópia virtual dos dados localizados na área de cópia virtual para o primeiro processador usando o endereço real.
  2. 2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a área de cópia virtual é selecionada do grupo que consiste de um cache (330), um kernel (340) e um disco (350).
  3. 3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende:
    Petição 870170089234, de 20/11/2017, pág. 8/10
    2/3 recuperar uma ou mais políticas (610);
    determinar (620) se restaura os dados com base em uma ou mais das políticas; e restaurar os dados em resposta à determinação, a restauração ainda compreendendo:
    recuperar (625) os dados da área de cópia virtual; salvar (630) os dados no armazenamento local; e mudar uma entrada de tabela de página que corresponde à restauração.
  4. 4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o armazenamento local (1170) corresponde aos registros localizados no segundo processador (1160).
  5. 5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o primeiro processador (1130) é uma unidade de processamento e o segundo processador (1102) é uma unidade de processamento sinérgica.
  6. 6. Meio operável por computador para virtualização de recursos de processador caracterizado pelo fato de que tem o método definido em qualquer das reivindicações 1 a 5 gravado no mesmo.
  7. 7. Sistema para virtualização de recursos de processador compreendendo:
    uma pluralidade de processadores (100, 800, 815, 835); um ou mais dispositivos de armazenamento não voláteis acessíveis pela pluralidade de processadores;
    uma memória compartilhada acessível pela pluralidade de processadores; e caracterizado pelo fato de que uma ferramenta de gerenciamento de dados para fornecer dados para uma thread, a ferramenta de gerenciamento de dados compreendo um meio
    Petição 870170089234, de 20/11/2017, pág. 9/10
    3/3 operável por computador eficaz para executar o método tal como definido em qualquer uma das reivindicações 1 a 5.
  8. 8. Sistema, de acordo com a reivindicação 7, caracterizado pelo fato de que o endereço real corresponde a uma área de cópia virtual, a área de cópia virtual selecionado do grupo que consiste de um cache (330), um kernel (340) e um disco (350).
  9. 9. Sistema, de acordo com a reivindicação 7, caracterizado pelo fato de que o meio operável por computador é ainda eficaz para:
    recuperar (610) uma ou mais políticas de um ou mais dispositivos de armazenamento não-voláteis;
    determinar (630) se restaura os dados com base em uma ou mais políticas; e restaurar os dados em resposta à determinação, o meio operável por computador ainda efetivo para:
    recuperar (625) os dados de uma área de cópia virtual incluída na memória compartilhada;
    salvar (630) os dados no armazenamento local; e mudar (635) uma entrada de tabela de página que corresponde à restauração.
  10. 10. Sistema, de acordo com a reivindicação 7, caracterizado pelo fato de que o primeiro processador (1130) e o segundo processador (1102) são heterogêneos.
    Petição 870170089234, de 20/11/2017, pág. 10/10
    1/11
    FIGURA 1
    2/11
    FIGURA 2
    3/11
    FIGURA 3
    4/11 f' F'm À < 42g )
    FIGURA 4
    5/11
    Armazenamento local B 12&
    FIGURA 5
    6/11
    Ψ
    Λ Retornar
    FIGURA 6
    7/11 não
    FIGURA 7
    8/11
    .. Processador B2 ; Thread G 820 ·' Thread H 825 ; Thread 1 830 :
    Processador Β3 Thread
    AJâSÍJA·’
    Thread K V--' 845 /
    Espaço de Endereça mento 850 Endereço áfétivo E Endereço Efetivo F 8^0^'·^··- Endereço Efetivo G Endereço Efetivo H Endereço Efetivo 1 . EndereçoEfetivo J /.U/.03 /. „ Endereço Efetivo K 11Í885/J,/'
    FIGURA 8
    9/11
    ProcessadorA /,/,: 100 /
    z* /
    / \ / > \x' \ \ / χ \ v \/\ /\ \ / \ \ z*·
    Processador B2 ///;&ÍÊ·/· .
    Thread G
    820 >·;·:
    Thread H
    -/'/825
    X! Thread I 830
    Processador B3
    Thread J
    Wsé;
    Thread K : 845/
    FIGURA 9
    10/11
    FIGURA 10
  11. 11/11
    FIGURA 11A
    FIGURA 11B
BRPI0515920-2A 2004-09-30 2005-08-24 Método, meio operável por computador e sistema para virtualização de recursos de processador BRPI0515920B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/955,093 US7290112B2 (en) 2004-09-30 2004-09-30 System and method for virtualization of processor resources
US10/955,093 2004-09-30
PCT/EP2005/054164 WO2006034931A1 (en) 2004-09-30 2005-08-24 System and method for virtualization of processor resources

Publications (2)

Publication Number Publication Date
BRPI0515920A2 BRPI0515920A2 (pt) 2009-08-04
BRPI0515920B1 true BRPI0515920B1 (pt) 2018-03-20

Family

ID=35385802

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0515920-2A BRPI0515920B1 (pt) 2004-09-30 2005-08-24 Método, meio operável por computador e sistema para virtualização de recursos de processador

Country Status (10)

Country Link
US (1) US7290112B2 (pt)
EP (1) EP1805629B1 (pt)
JP (1) JP4639233B2 (pt)
KR (1) KR100968188B1 (pt)
CN (1) CN100421089C (pt)
BR (1) BRPI0515920B1 (pt)
CA (1) CA2577865C (pt)
MX (1) MX2007003679A (pt)
TW (1) TWI340900B (pt)
WO (1) WO2006034931A1 (pt)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7716638B2 (en) * 2005-03-04 2010-05-11 Microsoft Corporation Methods for describing processor features
US7613905B2 (en) * 2006-04-06 2009-11-03 Texas Instruments Incorporated Partial register forwarding for CPUs with unequal delay functional units
US8255383B2 (en) * 2006-07-14 2012-08-28 Chacha Search, Inc Method and system for qualifying keywords in query strings
US8336046B2 (en) * 2006-12-29 2012-12-18 Intel Corporation Dynamic VM cloning on request from application based on mapping of virtual hardware configuration to the identified physical hardware resources
US7647483B2 (en) * 2007-02-20 2010-01-12 Sony Computer Entertainment Inc. Multi-threaded parallel processor methods and apparatus
US8200910B2 (en) * 2008-02-01 2012-06-12 International Business Machines Corporation Generating and issuing global shared memory operations via a send FIFO
US8239879B2 (en) * 2008-02-01 2012-08-07 International Business Machines Corporation Notification by task of completion of GSM operations at target node
US8275947B2 (en) * 2008-02-01 2012-09-25 International Business Machines Corporation Mechanism to prevent illegal access to task address space by unauthorized tasks
US7873879B2 (en) * 2008-02-01 2011-01-18 International Business Machines Corporation Mechanism to perform debugging of global shared memory (GSM) operations
US8146094B2 (en) * 2008-02-01 2012-03-27 International Business Machines Corporation Guaranteeing delivery of multi-packet GSM messages
US8255913B2 (en) * 2008-02-01 2012-08-28 International Business Machines Corporation Notification to task of completion of GSM operations by initiator node
US8484307B2 (en) * 2008-02-01 2013-07-09 International Business Machines Corporation Host fabric interface (HFI) to perform global shared memory (GSM) operations
US8214604B2 (en) * 2008-02-01 2012-07-03 International Business Machines Corporation Mechanisms to order global shared memory operations
US9454410B2 (en) 2008-03-04 2016-09-27 Microsoft Technology Licensing, Llc Transparent integration of application components
KR101398935B1 (ko) * 2008-04-29 2014-06-27 삼성전자주식회사 가상화를 이용한 시스템 복원 방법 및 장치
US9015446B2 (en) 2008-12-10 2015-04-21 Nvidia Corporation Chipset support for non-uniform memory access among heterogeneous processing units
US9032101B1 (en) 2008-12-10 2015-05-12 Nvidia Corporation Chipset support for binding and migrating hardware devices among heterogeneous processing units
US9009386B2 (en) 2010-12-13 2015-04-14 International Business Machines Corporation Systems and methods for managing read-only memory
KR20130084846A (ko) 2012-01-18 2013-07-26 삼성전자주식회사 플래시 메모리를 기반으로 하는 저장 장치, 그것을 포함한 사용자 장치, 그리고 그것의 데이터 읽기 방법
US9116809B2 (en) 2012-03-29 2015-08-25 Ati Technologies Ulc Memory heaps in a memory model for a unified computing system
CN103377141B (zh) * 2012-04-12 2016-10-12 无锡江南计算技术研究所 高速存储区的访问方法以及访问装置
US9569279B2 (en) 2012-07-31 2017-02-14 Nvidia Corporation Heterogeneous multiprocessor design for power-efficient and area-efficient computing
WO2014046974A2 (en) 2012-09-20 2014-03-27 Case Paul Sr Case secure computer architecture
US10445249B2 (en) * 2017-11-09 2019-10-15 International Business Machines Corporation Facilitating access to memory locality domain information

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT1228728B (it) * 1989-03-15 1991-07-03 Bull Hn Information Syst Sistema multiprocessore con replicazione di dati globali e due livelli di unita' di traduzione indirizzi.
JPH04246745A (ja) 1991-02-01 1992-09-02 Canon Inc 情報処理装置及びその方法
JP3454854B2 (ja) * 1992-01-16 2003-10-06 株式会社東芝 メモリ管理装置及び方法
JP3536219B2 (ja) * 1993-10-05 2004-06-07 日本電信電話株式会社 分散メモリ保護管理装置
JPH07302227A (ja) * 1994-05-06 1995-11-14 Hitachi Ltd メモリ保護方法およびその装置
JPH0830568A (ja) * 1994-07-20 1996-02-02 Fujitsu Ltd 分散メモリ型並列計算機のキャッシュ制御方式
JP3926866B2 (ja) 1996-05-10 2007-06-06 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、情報処理方法、及び描画システム
US5860146A (en) 1996-06-25 1999-01-12 Sun Microsystems, Inc. Auxiliary translation lookaside buffer for assisting in accessing data in remote address spaces
US6122711A (en) * 1997-01-07 2000-09-19 Unisys Corporation Method of and apparatus for store-in second level cache flush
US6003065A (en) 1997-04-24 1999-12-14 Sun Microsystems, Inc. Method and system for distributed processing of applications on host and peripheral devices
US6075938A (en) 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
US6647508B2 (en) 1997-11-04 2003-11-11 Hewlett-Packard Development Company, L.P. Multiprocessor computer architecture with multiple operating system instances and software controlled resource allocation
US6128724A (en) 1997-12-11 2000-10-03 Leland Stanford Junior University Computation using codes for controlling configurable computational circuit
FI108478B (fi) 1998-01-21 2002-01-31 Nokia Corp Sulautettu jõrjestelmõ
US6381659B2 (en) 1999-01-19 2002-04-30 Maxtor Corporation Method and circuit for controlling a first-in-first-out (FIFO) buffer using a bank of FIFO address registers capturing and saving beginning and ending write-pointer addresses
JP3543942B2 (ja) 2000-03-02 2004-07-21 株式会社ソニー・コンピュータエンタテインメント 画像生成装置
JP2001319243A (ja) 2000-03-03 2001-11-16 Sony Computer Entertainment Inc 画像生成装置、画像生成装置におけるジオメトリ処理形態の切換方法、記録媒体、コンピュータプログラム、半導体デバイス
US6677951B2 (en) 2000-03-03 2004-01-13 Sony Computer Entertainment, Inc. Entertainment apparatus having compatibility and computer system
US20020016878A1 (en) * 2000-07-26 2002-02-07 Flores Jose L. Technique for guaranteeing the availability of per thread storage in a distributed computing environment
US6742103B2 (en) 2000-08-21 2004-05-25 Texas Instruments Incorporated Processing system with shared translation lookaside buffer
JP2002207685A (ja) 2000-10-12 2002-07-26 Sony Computer Entertainment Inc 仮想世界システム、サーバコンピュータおよび情報処理装置
US6606690B2 (en) * 2001-02-20 2003-08-12 Hewlett-Packard Development Company, L.P. System and method for accessing a storage area network as network attached storage
US7093104B2 (en) 2001-03-22 2006-08-15 Sony Computer Entertainment Inc. Processing modules for computer architecture for broadband networks
US6826662B2 (en) 2001-03-22 2004-11-30 Sony Computer Entertainment Inc. System and method for data synchronization for a computer architecture for broadband networks
US7233998B2 (en) 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US6809734B2 (en) 2001-03-22 2004-10-26 Sony Computer Entertainment Inc. Resource dedication system and method for a computer architecture for broadband networks
US6526491B2 (en) 2001-03-22 2003-02-25 Sony Corporation Entertainment Inc. Memory protection system and method for computer architecture for broadband networks
JP2003033576A (ja) 2001-05-18 2003-02-04 Sony Computer Entertainment Inc エンタテインメントシステム、通信システム、通信プログラム、通信プログラムを格納したコンピュータ読み取り可能な記録媒体、及び通信方法
DE10128475A1 (de) * 2001-06-12 2003-01-02 Siemens Ag Mehrprozessorsystem mit geteiltem Arbeitsspeicher
JP2003140965A (ja) * 2001-11-07 2003-05-16 Hitachi Ltd 分散共有メモリ型並列計算機および命令スケジューリング方法
US6947051B2 (en) * 2003-02-18 2005-09-20 Microsoft Corporation Video memory management
JP2005309793A (ja) * 2004-04-22 2005-11-04 Hitachi Ltd データ処理システム

Also Published As

Publication number Publication date
WO2006034931A1 (en) 2006-04-06
KR20070052272A (ko) 2007-05-21
CN100421089C (zh) 2008-09-24
TW200630797A (en) 2006-09-01
BRPI0515920A2 (pt) 2009-08-04
EP1805629B1 (en) 2012-09-26
KR100968188B1 (ko) 2010-07-06
TWI340900B (en) 2011-04-21
JP4639233B2 (ja) 2011-02-23
US7290112B2 (en) 2007-10-30
MX2007003679A (es) 2007-04-19
CA2577865C (en) 2011-09-27
CN1989492A (zh) 2007-06-27
JP2008515069A (ja) 2008-05-08
CA2577865A1 (en) 2006-04-06
US20060069878A1 (en) 2006-03-30
EP1805629A1 (en) 2007-07-11

Similar Documents

Publication Publication Date Title
BRPI0515920B1 (pt) Método, meio operável por computador e sistema para virtualização de recursos de processador
US11620060B2 (en) Unified hardware and software two-level memory
JP5735070B2 (ja) パーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲスト・アドレスからホスト・アドレスへの変換
US9798487B2 (en) Migrating pages of different sizes between heterogeneous processors
US9767036B2 (en) Page state directory for managing unified virtual memory
CN100373344C (zh) 用于在实时与虚拟化操作系统之间共享资源的系统和方法
TWI470435B (zh) 為本地與遠端實體記憶體間之共用虛擬記憶體提供硬體支援
ES2642347T3 (es) Conjuntos de tablas de páginas de múltiples núcleos de campos de atributos
US20140281299A1 (en) Opportunistic migration of memory pages in a unified virtual memory system
US10216413B2 (en) Migration of peer-mapped memory pages
US20150370721A1 (en) Mapping mechanism for large shared address spaces
US20230409486A1 (en) Fault buffer for tracking page faults in unified virtual memory system
Bhattacharjee et al. Heterogeneity and Virtualization

Legal Events

Date Code Title Description
B06G Technical and formal requirements: other requirements [chapter 6.7 patent gazette]

Free format text: APRESENTE O DEPOSITANTE A TRADUCAO COMPLETA DO PEDIDO, CONFORME O DISPOSTO NO ITEM 9.2.1 DO AN NO 128/97.

B11A Dismissal acc. art.33 of ipl - examination not requested within 36 months of filing
B04C Request for examination: application reinstated [chapter 4.3 patent gazette]
B15K Others concerning applications: alteration of classification

Ipc: G06F 12/02 (2006.01), G06F 12/109 (2016.01)

B06A Patent application procedure suspended [chapter 6.1 patent gazette]
B06A Patent application procedure suspended [chapter 6.1 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: 10 (DEZ) ANOS CONTADOS A PARTIR DE 20/03/2018, OBSERVADAS AS CONDICOES LEGAIS.