BR112016025031B1 - Método e sistema para minimizar consumo de potência em processamento de quadro gráfico e memória legível por computador - Google Patents

Método e sistema para minimizar consumo de potência em processamento de quadro gráfico e memória legível por computador Download PDF

Info

Publication number
BR112016025031B1
BR112016025031B1 BR112016025031-1A BR112016025031A BR112016025031B1 BR 112016025031 B1 BR112016025031 B1 BR 112016025031B1 BR 112016025031 A BR112016025031 A BR 112016025031A BR 112016025031 B1 BR112016025031 B1 BR 112016025031B1
Authority
BR
Brazil
Prior art keywords
cpu
gpu
dcvs
workload
data
Prior art date
Application number
BR112016025031-1A
Other languages
English (en)
Other versions
BR112016025031A2 (pt
Inventor
Hee Jun Park
Young Hoon Kang
Mriganka Mondal
Original Assignee
Qualcomm Incorporated
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 Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112016025031A2 publication Critical patent/BR112016025031A2/pt
Publication of BR112016025031B1 publication Critical patent/BR112016025031B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/16Constructional details or arrangements
    • G06F1/20Cooling means
    • G06F1/206Cooling means comprising thermal management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3228Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2330/00Aspects of power supply; Aspects of display protection and defect management
    • G09G2330/02Details of power systems and of start or stop of display operation
    • G09G2330/021Power management, e.g. power saving
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/06Use of more than one graphics processor to process data before displaying to one or more screens
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

CO-OTIMIZAÇÃO DE DCVS CPU/GPU PARA REDUÇÃO DE CONSUMO DE ENERGIA NO PROCESSAMENTO DE QUADRO GRÁFICO. Sistemas, métodos e programas de computador são descritos para minimizar o consumo de energia no processamento de quadro gráfico. Um método desses compreende: a iniciação do processamento de quadro gráfico a ser realizado de forma cooperativa por uma unidade de processamento central (CPU) e uma unidade de processamento gráfico (GPU); recebimento dos dados de atividade de CPU e dados de atividade de GPU; a determinação de um conjunto de níveis de escalonamento de voltagem/frequência e relógio dinâmico disponíveis (DCVS) para GPU e CPU; e seleção a partir do conjunto de níveis DCVS disponíveis, de uma combinação ideal de um nível GPU DCVS e um nível CPU DCVS, com base nos dados de atividade de CPU e GPU, que minimiza um consumo de energia combinado da CPU e GPU durante o processamento de quadro gráfico.

Description

Descrição da Técnica Relacionada
[0001] Dispositivos de computação portáteis (por exemplo, telefones celulares, smartphones, computadores tablet, assistentes digitais portáteis (PDAs), e consoles de jogos portáteis) continuam a oferecer um conjunto em expansão permanente de características e serviços, e fornece aos usuários níveis sem precedentes de acesso à informação, recursos e comunicações. Para acompanhar esses aperfeiçoamentos de serviço, tais dispositivos têm se tornado mais poderosos, mais complexos. Os dispositivos de computação portáteis agora incluem comumente sistemas em chips (SoCs) e/ou múltiplos núcleos de microprocessador embutidos em um único substrato (por exemplo, uma unidade de processamento central (CPU), unidade de processamento gráfico (GPU), etc.), permitindo que os usuários executem aplicativos de software intensos em termos de potência e complexos. No entanto, as exigências de desempenho e funcionalidade aumentadas apresentam desafios operacionais e de projeto significativos para o gerenciamento da vida útil de bateria e consumo de potência.
[0002] Os métodos existentes para gerenciamento de consumo de potência de dispositivos multiprocessadores podem envolver técnicas de escalonamento de tensão e relógio dinâmico (DCVS). DCVS envolve o ajuste seletivo de frequência e/ou tensão aplicada aos processadores, dispositivos de hardware, etc. para resultar em características de eficiência de potência e/ou desempenho desejadas. As soluções DCVS convencionais exibem um número de problemas de desempenho, e a implementação de um método DCVS eficiente que escalone corretamente frequência/tensão para cada núcleo do sistema processador de múltiplos núcleos é um critério de desenho importante e desafiador. Por exemplo, técnicas DCVS para sistemas multiprocessadores (por exemplo, sistemas compreendendo uma CPU e uma GPU) exigem que cada processador inclua um módulo/processo DCVS separado e/ou ajuste a frequência/tensão de processador independentemente de outros processadores. Adicionalmente, quando da realização do processamento de quadro gráfico, a CPU separada e/ou algoritmos DCVS GPU são projetados para otimizar o desempenho dentro das restrições apresentadas pelos prazos fatais de processamento de quadro sem considerar a otimização de eficiência de potência.
[0003] De acordo, permanece a necessidade na técnica de se criar sistemas e métodos aperfeiçoados para otimização de DCVS para eficiência de potência em sistemas multiprocessadores.
Sumário da Descrição
[0004] Sistemas, métodos e programas de computador são descritos para minimizar o consumo de potência no processamento de quadro gráfico. Um método desses compreende: inicialização de processamento e quadro gráfico para ser realizado de forma cooperativa por uma unidade de processamento central (CPU) e uma unidade de processamento gráfica (GPU); recebimento de dados de atividade de CPU e dados de atividade de GPU; determinação de um conjunto de níveis de escalonamento de tensão/frequência e relógio dinâmico disponíveis (DCVS) para GPU e CPU; e seleção a partir do conjunto de níveis DCVS disponíveis de uma combinação ideal de um nível GPU DCVS e um nível CPU DCVS, com base nos dados de atividade de CPU e GPU, o que minimiza um consumo de potência combinado de CPU e GPU durante o processamento de quadro gráfico.
[0005] Outra modalidade compreende um sistema para minimização do consumo de potência no processamento de quadro gráfico. Um sistema como esse compreende um sistema em chip (SoC) incluindo uma unidade de processamento central (CPU), uma unidade de processamento gráfico (GPU) e um controlador de escalonamento de tensão de relógio dinâmico (DCVX) em comunicação com GPU e CPU. Um módulo de co-otimização CPU/GPU DCVS é configurado para determinar uma combinação ideal de um nível GPU DCVS e um nível CPU DCVS para o controlador DCVS, com base nos dados de atividade de CPU e GPU. A combinação ideal dos níveis GPU e CPU DCVS são selecionados para minimizar um consumo de potência combinado de CPU e GPU durante o processamento de quadro gráfico.
Breve Descrição dos Desenhos
[0006] Nas figuras, referências numéricas similares se referem a partes similares por todas as várias vistas a menos que seja indicado o contrário. Para referências numéricas com designações de caracteres alfabéticos tal como "102A" ou "102B", as designações de caractere alfabético podem diferenciar duas partes similares ou elementos presentes na mesma figura. As designações de caractere alfabético para referências numéricas podem ser omitidas quando for pretendido que uma referência numérica englobe todas as partes possuindo a mesma referência numérica em todas as figuras.
[0007] A figura 1 é um diagrama em bloco de uma modalidade de um sistema para co-otimizar o escalonamento de tensão/frequência (DCVS) e relógio dinâmico da unidade de processamento central (CPU) e unidade de processamento gráfico (GPU) no processamento de quadro gráfico.
[0008] A figura 2 é um fluxograma de uma modalidade de um método implementado no sistema da figura 1 para selecionar algoritmos de co-otimização DCVS de acordo com um tipo de carga de trabalho gráfico detectado.
[0009] A figura 3 é um diagrama em bloco ilustrando entradas e saídas de dados ilustrativos para módulos de co- otimização CPU/GPU DCVS no sistema da figura 1.
[0010] A figura 4 é um fluxograma ilustrando uma modalidade de um método implementado no sistema da figura 1 para co-otimizar DCVS de CPU e GPU para minimizar o consumo de potência durante o processamento de quadro gráfico.
[0011] As figuras 5A a 5C são uma série de diagramas de temporização ilustrando uma modalidade de um método de co-otimização CPU/GPU DCVS para as cargas de trabalho de gráficos serializados de CPU/GPU.
[0012] A figura 6 é uma tabela de dados ilustrando um espaço de frequência CPU/GPU ilustrativo para co- otimização de níveis GPU e CPU DCVS para consumo de potência combinado mínimo durante o processamento de quadro gráfico em uma primeira temperatura CPU/GPU.
[0013] A figura 7 ilustra a tabela de dados da figura 6 para uma segunda temperatura de CPU/GPU.
[0014] A figura 8 ilustra uma tabela de dados da figura 6 para uma terceira temperatura CPU/GPU.
[0015] A figura 9 ilustra uma modalidade de um algoritmo de co-otimização CPU/GPU DCVS implementando um método de busca descendente de gradiente.
[0016] A figura 10 é um fluxograma ilustrando uma modalidade de um método implementado no sistema da figura 1 para co-otimizar níveis CPU e GPU DCVS para cargas de trabalho gráfica paralelizadas de CPU/GPU.
[0017] As figuras 11A e 11B são uma série de diagramas de temporização ilustrando uma modalidade do método de co-otimização CPU/GPU DCVS para cargas de trabalho gráficas paralelizadas de CPU/GPU.
[0018] A figura 12 é um diagrama em bloco de uma modalidade de um dispositivo de computador portátil compreendendo o sistema da figura 1.
Descrição Detalhada
[0019] O termo "ilustrativo" é utilizado aqui para significar "servindo como um exemplo, caso ou ilustração". Qualquer aspecto descrito aqui como "ilustrativo" não deve ser necessariamente considerado preferido ou vantajoso sobre outros aspectos.
[0020] Nessa descrição, o termo "aplicativo" também pode incluir arquivos possuindo conteúdo executável, tal como um código de objeto, scripts, código de byte, arquivos de linguagem de marcação e emendas. Adicionalmente, um "aplicativo" referido aqui, também pode incluir arquivos que não são executáveis por natureza, tal como documentos que podem precisar ser abertos ou outros arquivos de dados que precisem ser acessados.
[0021] O termo "conteúdo" também pode incluir arquivos possuindo conteúdo executável, tal como código de objeto, scripts, código de byte, arquivos de linguagem de marcação e emendas. Adicionalmente, "conteúdo" referido aqui, também pode incluir arquivos que não são executáveis por natureza, tal como documentos que podem precisar ser abertos ou outros arquivos de dados que precisem ser acessados.
[0022] Como utilizado nessa descrição, os termos "componentes", "base de dados", "módulo", "sistema" e similares devem se referir a uma entidade relacionada com computador, hardware, firmware, uma combinação de hardware e software, software, ou software em execução. Por exemplo, um componente pode ser, mas não está limitado a ser, um processo rodando em um processador, um processador, um objeto, um elemento executável, uma sequência de execução, um programa e/ou um computador. Por meio de ilustração, ambos um aplicativo rodando em um dispositivo de computação e o dispositivo de computação podem ser um componente. Um ou mais componentes podem residir dentro de um processo e/ou sequência de execução, e um componente pode ser localizado em um computador e/ou distribuído entre dois ou mais computadores. Adicionalmente, esses componentes podem ser executados a partir de vários meios legíveis por computador possuindo várias estruturas de dados armazenadas no mesmo. Os componentes podem comunicar por meio de processos locais e/ou remotos tal como de acordo com um sinal possuindo um ou mais pacotes de dados (por exemplo, dados de um componente interagindo com outro componente em um sistema local, sistema distribuído e/ou através de uma rede tal como a Internet com outros sistemas por meio de sinal).
[0023] Nessa descrição, os termos "dispositivo de comunicação", "dispositivo sem fio", "telefone sem fio", "dispositivo de comunicação sem fio" e "aparelho sem fio" são utilizados de forma intercambiável. Com o advento da tecnologia sem fio de terceira geração ("3G") e quarta geração ("4G"), uma maior disponibilidade de largura de banda tem permitido mais dispositivos de computação portáteis com uma maior variedade de capacidades sem fio. Portanto, um dispositivo de computação portátil pode incluir um telefone celular, um pager, um PDA, um smartphone, um dispositivo de navegação, ou um computador portátil com uma conexão ou link sem fio.
[0024] A figura 1 ilustra um sistema 100 para co- otimização de níveis de escalonamento de tensão/frequência e relógio dinâmico (DCVS) de uma unidade de processamento central (CPU) 106 e uma unidade de processamento gráfica (GPU) 104 durante o processamento de quadro gráfico (referido como co-otimização CPU/GPU DCVS"). O processamento de quadro gráfico pode envolver qualquer carga de trabalho na qual a CPU 106 e a GPU 104 realizem de forma cooperativa o processamento de quadro. Por exemplo, o processamento de quadro gráfico pode envolver uma carga de trabalho serializada CPU/GPU e/ou uma carga de trabalho paralelizada CPU/GPU. Como é sabido na técnica, uma carga de trabalho serializada CPU/GPU envolve o processamento consecutivo pela CPU 106 e GPU 104 para cada quadro gráfico. Para cada quadro, a CPU 106 inicia o processamento e fornece saída para a GPU 104, que realiza o processamento adicional. A GPU 104 transfere a saída resultante para o monitor 110 através, por exemplo, de um processador de exibição móvel.
[0025] Os versados na técnica apreciarão que uma carga de trabalho paralelizada CPU/GPU envolve o processamento paralelo pela CPU 106 e GPU 104. A CPU 106 inicia o processamento para um quadro (n) e armazena a saída resultante em um armazenador de quadro 128 de uma memória 126. Durante o próximo período, a GPU 104 recupera a saída armazenada no armazenador e quadro 128 e realiza o processamento adicional para o quadro (n) enquanto a CPU 106 processa um quadro (n + 1) e armazena a saída correspondente no armazenador de quadro 128. O processo é repetido para cada quadro subsequente. Enquanto esse processo resulta em um único retardo de quadro, o mesmo fornece vantagens de desempenho devido ao processamento paralelo CPU/GPU.
[0026] Deve-se apreciar que o termo co-otimização CPU/GPU DCVS se refere à otimização conjunta de um nível DCVS para ambas a GPU 104 e CPU 106 de modo que o consumo de potência combinado de GPU 104 e CPU 106 seja minimizado. Em outras palavras, o sistema 100 determina uma combinação ideal de um nível GPU DCVS e um nível CPU DCVS para o controlador DCVS 112, que fornece menos consumo geral de potência de CPU e GPU durante o processamento de quadro gráfico.
[0027] O sistema 100 pode ser implementado em qualquer dispositivo de computação de multiprocessador, incluindo um computador pessoal, uma estação de trabalho, um servidor, um dispositivo de computação portátil (PCD), tal como um telefone celular, um assistente digital portátil (PDA), um console de jogos portátil, um computador palmtop, ou um computador tablet. Em uma modalidade, um ou mais dos componentes de sistema ilustrados na figura 1 podem ser incorporados em um sistema em chip (SoC) acoplado a um sistema de memória (por exemplo, memória de acesso randômico dinâmica (DRAM)) ou outros tipos de memória. Como ilustrado na figura 1, o sistema 100 compreende um ou mais dispositivos de processamento, unidades ou núcleos (por exemplo, CPU 106, GPU 104). O sistema 100 pode compreender adicionalmente qualquer outro dispositivo de hardware geral ou de finalidade específica, tal como, por exemplo, processadores de sinal digital, processadores de exibição móvel, codificadores de vídeo, etc.
[0028] A CPU 106, a GPU 104, e qualquer outro dispositivo de hardware 108 pode ser conectado a um acionador de hardware respectivo 114. Como sabido na técnica, os acionadores de hardware 114 fornecem uma interface de software para os dispositivos de hardware respectivos, permitindo que os sistemas operacionais e outros programas de computador acessem as funções de hardware sem precisar conhecer os detalhes precisos do hardware sendo utilizado. Os acionadores de hardware 114 são eletricamente acoplados a um controlador DCVS 112. O controlador DCVS 112 é configurado para implementar as técnicas DCVS de sistema pelo controle da frequência e tensão fornecidas para a CPU 106, GPU 104 e dispositivos de hardware 108. O controlador DCVS 112 pode ajustar a frequência e/ou tensão na qual os dispositivos operam através das interfaces para, por exemplo, um ou mais relógios 116, um circuito integrado de gerenciamento de potência (PMIC) 118, etc.
[0029] Como mencionado acima, durante o processamento de quadro gráfico, o controlador DCVS 112 pode interfacear com os módulos de co-otimização CPU/GPU DCVS 102 para otimizar em conjunto níveis DCVS para ambas a GPU 104 e a CPU 106 para fornecer o menor consumo de potência de CPU e GPU geral. Na modalidade da figura 1 e como descrito abaixo em maiores detalhes, os módulos de co-otimização de CPU/GPU DCVS 102 compreendem um módulo de detecção de tipo de carga de trabalho gráfica 120, que é configurado para determinar se a carga de trabalho gráfica compreende uma carga de trabalho serializada CPU/GPU ou uma carga de trabalho paralelizada CPU/GPU. O tipo de carga de trabalho pode ser detectado de várias formas. Em uma modalidade, um acionador de GPU pode determinar se um objeto de armazenamento de quadro (FBO) foi criado. Se um FBO tiver sido criado, o sistema 100 pode determinar que o tipo de carga de trabalho gráfica é CPU/GPU serializada. Se um FBO não tiver sido criado, o sistema pode determinar que o tipo de carga de trabalho gráfico é CPU/GPU paralelizado.
[0031] Outro método de detecção pode envolver o processamento de quadro de perfil de investigação. Se for determinado que o processamento para um quadro (n + 1) só começa depois do processamento de quadro (n) ser completado, o sistema 100 pode determinar que o tipo de carga de trabalho gráfico é CPU/GPU serializado. Isso pode ser assumido onde, por exemplo, o momento inicial para o quadro (n + 1) é aproximadamente igual ao momento final do processamento de quadro (n). Se, no entanto, o processamento para o quadro (n + 1) puder começar independentemente da situação do processamento de quadro (n), o sistema 100 pode determinar que o tipo de carga útil gráfica é CPU/GPU paralelizado. Isso pode ser assumido onde, por exemplo, o momento inicial para o quadro (n + 1) ocorrer antes do momento final do processamento de quadro (n).
[0032] O tipo de carga de trabalho também pode ser determinado com base em marcações de desempenho gráfico. Por exemplo, uma tabela de dados pode especificar que determinados tipos de marcações ou situações de desempenho e/ou utilização devem ser associados com cargas de trabalho serializadas CPU/GPU, enquanto outros associados com cargas de trabalho paralelizadas CPU/GPU.
[0033] Independentemente do método de detecção de tipo de carga de trabalho, o módulo 120 controla (bloco de decisão 206) qual algoritmo de co-otimização CPU/GPU DCVS deve ser aplicado. Para cargas de trabalho serializadas, um dentre um conjunto de algoritmos de co-otimização DCVS de CPU/GPU serializada pode ser aplicado (bloco 208). Para cargas de trabalho paralelizadas, um dentre um conjunto de algoritmos de co-otimização DCVS de CPU/GPU paralelizadas pode ser aplicado (bloco 210).
[0034] A figura 3 é um diagrama em bloco ilustrando registros de dados ilustrativos utilizados pelos módulos de co-otimização CPU/GPU DCVS 102 para otimização conjunta de níveis GPU e CPU DCVS para minimizar o consumo de potência combinado da CPU 106 e GPU 104 durante o processamento de quadro gráfico. Como descrito abaixo em maiores detalhes, os vários tipos de dados são utilizados para determinar um ponto de operação ideal (isso é, níveis GPU e CPU DCVS) para o consumo de potência CPU e GPU combinados mais baixos enquanto se observa os prazos de quadro. Em uma modalidade, os módulos de co-otimização CPU/GPU DCVS 102 podem ser configurados para determinar o ponto operacional ideal restringido pelas condições nas equações de 1 a 4. tempo ativo de CPU + GPU ativa < período de quadro = 1/quadros por segundo (FPS) Equação 1 CPU Fmin < frequência de CPU < CPU Fmax; onde Fmin é uma frequência de CPU mínima; e Fmax é uma frequência de CPU máxima Equação 2 GPU Fmin < frequência de GPU < GPU Fmax; onde Fmin é uma frequência GPU mínima; e Fmax é uma frequência GPU máxima Equação 3 Consumo de potência SoC Média Total Mínima = potência de CPU + potência de GPU + outros Equação 4
[0035] Com referência à figura 3, os módulos de co-otimização CPU/GPU DCVS 102 podem obter vários tipos de dados de atividade da CPU 106 e GPU 104 (isso é, referido como dados de atividade de CPU e dados de atividade de GPU, respectivamente). Os dados de atividade podem ser recebidos a partir do profiler de atividade CPU 302 e profiler de atividade GPU 304. Como é sabido na técnica, os criadores de perfil de atividade 302 e 304 podem obter dados relevantes a partir de, por exemplo, acionadores de CPU e GPU respectivos, contadores, registros outros hardwares, etc. Os dados de atividade podem incluir qualquer um dentre os seguintes, ou outros, tipos de dados relacionados com atividade CPU e/ou GPU; carga de trabalho, tempo de atividade, tempo de inatividade, tempo de espera, etc. Os módulos de co-otimização CPU/GPU DCVS 102 podem determinar possíveis modos de baixa potência associados com a CPU 106 (modos de baixa potência de CPU 306) e GPU 104 (modos de baixa potência de GPU 308). Os modos de baixa potência podem compreender uma lista ou tabela de níveis DCVS respectivos ou frequências operacionais, etc. Deve-se apreciar que os modos de baixa potência de CPU podem envolver qualquer uma das funções, características ou variáveis a seguir: modos de abertura de relógio, retenção com tensão mais baixa, saída de potência, etc. Os modos de baixa potência de GPU podem envolver, por exemplo, colapso de potência de pico temporal e pico espacial (SPTP), colapso de potência GFX, etc.
[0036] Como ilustrado adicionalmente na figura 3, a co-otimização de CPU/GPU DCVS também pode incorporar dados de temperatura dos sensores de temperatura de CPU 312 e sensores de temperatura de GPU 310, além de dados de fuga de corrente de alimentação de estado quiescente (IDDQ) associados com CPU (dados de fuga IDDQ 314) e GPU (dados de fuga de IDDQ 316). Os versados na técnica apreciarão que o ponto operacional CPU/CPU ideal para minimização do consumo de potência de CPU e GPU combinado pode ser determinado com base em um ou mais dentre os dados ilustrados na figura 3. O módulo de co-otimização CPU/GPU DCVS 102 fornece o ponto operacional CPU/GPU ideal para o controlador DCVS 112, que ajusta a CPU 106 e GPU 104 através, por exemplo, de relógios 116 e/ou PMIC 118 (figura 1).
[0037] A figura 4 é um fluxograma ilustrando uma modalidade de um método 400 implementado no sistema 100 para co-otimização de CPU e GPU DCVS para minimizar o consumo de potência durante o processamento de quadro gráfico. No bloco 402, os dados de atividade de GPU e CPU são recebidos a partir de, por exemplo, um profiler de atividade de CPU 302 e um profiler de atividade de GPU 304. Os módulos de co- otimização de CPU/GPU DCVS 102 podem determinar possíveis modos de potência baixa para CPU 106 e GPU 104 (bloco 404) e/ou níveis DCVS respectivos, frequências de operação, etc. (bloco 406) ou como descrito de outra forma acima. No bloco 408, os módulos de co-otimização de CPU/GPU DCVS 102 podem receber dados de temperatura e/ou dados de fuga IDDQ para a CPU 106 e GPU 104. Com base em um ou mais dos dados recebidos e/ou determinados nos blocos 402, 404, 406, e 408, os módulos de co-otimização CPU/GPU DCVS 102 selecionam os algoritmos de co-otimização adequados de acordo com o tipo de carga de trabalho gráfica, e determinam (bloco 410) uma combinação ideal de um nível CPU DCVS e um nível GPU DCVS que minimize o consumo de potência combinado da CPU 106 e GPU 104 durante o processamento de quadro gráfico. No bloco 412, o ponto operacional ideal (por exemplo, configurações DCVS são transmitidas para o controlador DCVS 112, que controla os ajustes de frequência e/ou tensão da CPU 106 e GPU 104 para processamento da carga de trabalho gráfica dentro dos prazos fatais do quadro (bloco 414).
[0038] As figuras 5A a 5C são uma série de diagramas de temporização para ilustrar uma modalidade de um método de co-otimização de CPU/GPU DCVS para cargas de trabalho gráficas de CPU/GPU serializadas. As figuras 5A e 3B ilustram métodos convencionais para minimização do consumo geral de potência de CPU/GPU pela otimização independente de CPU DCVS e GPU DCVS. A figura 5A ilustra uma primeira situação compreendendo a menor frequência de CPU e a menor frequência de GPU.
[0039] Como ilustrado na figura 5A, a frequência de CPU é de 800 MHz e frequência de GPU é de 579 MHz. A carga de trabalho serializada é ilustrada para os primeiros três quadros associados com a carga de trabalho (isso é, quadro n, quadro (n + 1), e quadro (n + 2) identificado como quadros 500, 502, e 504, respectivamente). Referências numéricas 506a1, 506a2 e 506a3 ilustram o processamento de CPU nos quadros respectivos 500, 502 e 504, respectivamente, enquanto referências numéricas 508a1, 508a2 e 508a3 ilustram o processamento da GPU. Como ilustrado na figura 5A, no quadro 500, o processamento de GPU 508a1 ocorre depois do processamento da CPU 506a1. Quando o processamento de GPU 508a1 está completo, a saída é fornecida para o monitor 110. No quadro 502, o processamento de GPU 508a2 ocorre depois do processamento de CPU 506a2. Quando o processamento de GPU 508a2 é completado, a saída é fornecida para o monitor 110. No quadro 504, o processamento de GPU 508a3 ocorre depois do processamento de CPU 506a3. Quando o processamento de GPU 508a3 é completado, a saída é fornecida para o monitor 110. Os dados de consumo de potência simulados para a situação 1 na figura 5A demonstra que o consumo de potência total = CPU (559 mW) + GPU (1205 mW) = 1764 mW.
[0040] A figura 5B ilustra uma segunda situação compreendendo a frequência de CPU mais alta e a frequência de GPU mais alta. Como ilustrado na figura 5B, a frequência de CPU é igual a 2200 MHz e a frequência de GPU é igual a 625 MHz. Novamente, a carga de trabalho serializada é ilustrada para os primeiros três quadros 500, 502, 504. As referências numéricas 506b1, 506b2 e 506b3 ilustram o processamento de CPU nos quadros respectivos 500, 502 e 504, respectivamente, enquanto as referências numéricas 508b1, 508b2 e 508b3 ilustram o processamento de GPU. Os dados de consumo de potência simulados para a situação 2 na figura 5B demonstram que o consumo de potência total = CPU (783 mW) + GPU (1206 mW) = 1988 mW. Por comparação com a figura 5A, deve-se apreciar que a largura dos blocos respectivos é proporcional à quantidade de tempo de processamento. Em comparação com os blocos na figura 5A (que são processados na frequência mais baixa), os blocos na figura 5B utilizam menos tempo de processamento devido à frequência mais alta. Os dados simulados ilustrados na situação 1 (figura 5A) otimizam melhor o consumo de potência do que a situação 2 (figura 5B).
[0041] A figura 5C ilustra os mesmos três quadros 500, 502, 505 da carga de trabalho serializada em uma implementação ilustrativa do sistema 100. Nessa terceira situação, a frequência de CPU e a frequência de GPU são otimizadas em conjunto, como descrito acima. A figura 5C ilustra que uma abordagem de co-otimização, como descrito acima, fornece um consumo de potência total menor do que as abordagens convencionais ilustradas na figura 5A (isso é, menor frequência de ambas a CPU e a GPU) e a figura 5B (isso é, a maior frequência de ambas a CPU e a GPU). No exemplo da figura 5C, o consumo de potência geral é minimizado onde a frequência de CPU é de 1000 MHz e a frequência de GPU é de 475 MHz. Os dados de consumo de potência simulados da situação 3 na figura 5C demonstram que o consumo de potência total = CPU (554 mW) + GPU (1204 mW) = 1757 mW. Essa abordagem de co-otimização na situação 3 (figura 5C) resulta no menor consumo de potência comparado com os métodos convencionais nas situações 1 e 2 (figuras 5A e 5B).
[0042] As figuras de 6 a 8 compreendem tabelas de dados ilustrando o consumo de potência GPU e CPU estimado para várias combinações de níveis de DCVS de GPU e CPU em uma carga de trabalho serializada ilustrativa. Deve-se apreciar que as tabelas de dados ilustram que o consumo de potência combinado de CPU/GPU é uma relação convexa não linear no espaço de frequência de CPU/GPU ilustrativo. Cada tabela de dados ilustra a potência de CPU e GPU média estimada de acordo com várias combinações de tempos de frequência e atividade. A figura 6 ilustra um primeiro exemplo no qual a temperatura da CPU 106 e da GPU 104 são aproximadamente iguais a 55°C. A figura 7 ilustra um segundo exemplo no qual a temperatura da CPU 106 e da GPU 104 são aproximadamente iguais a 85°C. A figura 8 ilustra um terceiro exemplo no qual a temperatura da CPU 106 é de aproximadamente 55°C e a temperatura da GPU 104 é de aproximadamente 80°C.
[0043] Em cada uma das figuras de 6 a 8, as combinações GPU são listadas em três colunas no lado esquerdo de cada tabela, e as combinações de CPU são listadas em três fileiras no topo de cada tabela. As células em cinza ilustram a potência de CPU e GPU total estimada de acordo com várias combinações. A célula escura em cada tabela identifica o ponto operacional ideal no espaço de frequência CPU/GPU para minimização do consumo de potência de CPU e GPU combinada. As figuras de 6 a 8 ilustram que o ponto de operação ideal varia dependendo das mudanças de temperatura de CPU e GPU, e essa é a razão pela qual o método na figura 3 e na figura 4 utiliza IDDQ (fuga) e informação de temperatura para determinar o ponto de operação ideal da CPU e da GPU.
[0044] Deve-se apreciar que os módulos de co- otimização de CPU/GPU DCVS 102 podem ser configurados para estimar a potência de CPU e GPU respectiva dentro de qualquer espaço de frequência desejável e com base em qualquer um dos dados de entrada descritos acima. Adicionalmente, os vários algoritmos de otimização podem ser empregados. A figura 9 ilustra uma implementação ilustrativa de um método de busca descendente de gradiente. Os níveis de frequência operacional de CPU (DCVS) são representados ao longo do eixo geométrico x 902 por linhas tracejadas verticais 906. Os níveis de frequência operacional de GPU (DCVS) são representados ao longo do eixo geométrico y 904 por linhas tracejadas horizontais 908. A interseção das linhas 908 e 906 define os pontos operacionais disponíveis para co- otimização de níveis de CPU e GPU DCVS.
[0045] No exemplo da figura 9, o ponto operacional 910 (ilustrado como um círculo preto) representa um ponto operacional atual da CPU 106 e GPU 104. O algoritmo de otimização pode ser configurado para estimar o consumo de potência de pontos operacionais DCVS adjacentes para determinar se existe um ponto operacional de potência mais baixa. Pode ser determinado que os pontos operacionais 912 (ilustrados com um X) resultam em um consumo de potência geral inferior, mas não correspondem aos prazos fatais do quadro e, portanto, não são considerados. A área triangular limitada representa as combinações dos níveis CPU/GPU DCVS que corresponderiam aos objetivos do processamento de quadro. Os pontos operacionais 914 (ilustrados com um círculo branco) podem ser determinados para resultar em um consumo de potência geral mais baixo e corresponde aos prazos fatais do quadro. No entanto, um ponto operacional 916 (ilustrado com um círculo em cinza) pode ser identificado como um novo ponto operacional ideal visto que não apenas corresponde aos objetivos de quadro, mas resulta em um consumo de potência de CPU/GPU combinadas geral mais baixo de todos os pontos operacionais adjacentes. Os versados na técnica apreciarão que outros métodos de otimização podem ser implementados incluindo, por exemplo, ramificação e busca bound tree ou qualquer outro método desejável.
[0046] A figura 10 é um fluxograma ilustrando uma modalidade de um método 1000 implementado no sistema da figura 1 para co-otimizar os níveis de CPU e GPU DCVS para as cargas de trabalho gráfico de CPU/GPU paralelizadas. No bloco 1002, os módulos de co-otimização de CPU/GPU DCVS 102 detectam uma carga de trabalho paralelizada da forma descrita acima. No bloco 1004, a combinação ideal dos níveis de CPU e GPU DCVS pode ser determinar com base em qualquer um dos dados de entrada (figura 3) que minimizam o consumo de potência combinado da CPU 106 e GPU 104 para a carga de trabalho paralelizada. O sistema 100 também pode determinar níveis DCVS adequados ou outras condições operacionais para aumentar o tempo de inatividade dos recursos de hardware comuns (dispositivos de hardware 118 - figura 1). Como ilustrado na figura 11B, a carga de trabalho CPU/GPU paralelizada e o processamento para recursos de hardware comuns podem ser sincronizados de acordo com um sinal de sincronização vertical (Vsync) 1109 de um acionador de exibição para o monitor 110. A figura 11A ilustra um exemplo comparativo no qual a sincronização vertical é empregada para uma carga de trabalho serializada em vez de uma carga de trabalho paralelizada. Deve-se apreciar que pela inclusão da sincronização vertical com uma carga de trabalho paralelizada de CPU/GPU co-otimizada (como ilustrado na figura 11B) o tempo de inatividade dos recursos de hardware comuns pode ser aumentado de forma significativa, resultando em uma utilização muito mais eficiente de recursos de hardware comuns com os níveis de CPU/GPU DCVS co-otimizados.
[0047] Com referência às figuras 11A e 11B, o processamento de CPU durante os quadros 1102, 1104, 1106 e 1108 é representado pelas referências numéricas 1110a, 1110b, 1110c e 1110d. O processamento de GPU na figura 11A (carga de trabalho serializada) é representado por referências numéricas 1112a, 1112b, 1112c e 1112d. O processamento de GPU na figura 11B (carga de trabalho paralelizada) é representado por referências numéricas 1112a, 1112b e 1112c, compensando o retardo de quadro inerente a cargas de trabalho paralelizadas. O processamento para recursos de hardware comuns durante os quadros 1102, 1104, 1106 e 1108 é representado pelas referências numéricas 1114a, 1114b, 1114c e 1114d, respectivamente. A figura 11B ilustra que pela combinação da sincronização vertical com uma carga de trabalho paralelizada de CPU/GPU, o tempo de inatividade dos recursos de hardware comuns pode ser aumentado (ilustrado pelos blocos de processamento mais estreitos na figura 11B do que na figura 11A).
[0048] Como mencionado acima, o sistema 100 pode ser incorporado a qualquer sistema de computação desejável. A figura 12 ilustra o sistema 100 incorporado em um dispositivo de computação portátil ilustrativo (PCD) 1200. Será prontamente apreciado que determinados componentes do sistema 100 (por exemplo, módulos de co-otimização CPU/GPU DCVS 102, CPU 106, GPU 104) podem ser incluídos no SoC 322 (figura 12) enquanto outros componentes (por exemplo, memória 126, monitor 110) podem ser componentes externos acoplados ao SoC 322. O SoC 322 pode incluir uma CPU de múltiplos núcleos 1202. A CPU de múltiplos núcleos 1202 pode incluir um núcleo zero 1210, um primeiro núcleo 121, e um núcleo N 1214. Um dos núcleos pode compreender a GPU 104 com um ou mais dos outros compreendendo a CPU 106.
[0049] Um controlador de exibição 328 e um controlador de tela de toque 330 podem ser acoplados à CPU 1202. Por sua vez, o monitor de tela de toque 1206 externo ao sistema em chip 322 pode ser acoplado ao controlador de exibição 328 e o controlador de tela de toque 330.
[0050] A figura 12 ilustra adicionalmente que um codificador de vídeo 334 (por exemplo, um codificador de linha de alternância de fase (PAL), um codificador SECAM (Sequential Couleur à Mémoire), ou um codificador do comitê de sistemas de televisão nacional (NTSC)) é acoplado à CPU de múltiplos núcleos 1202. Adicionalmente, um amplificador de vídeo 336 é acoplado ao codificador de vídeo 334 e ao monitor de tela de toque 1206. Além disso, uma porta de vídeo 338 é acoplada ao amplificador de vídeo 336. Como ilustrado na figura 12, um controlador de barramento serial universal (USB) 340 é acoplado à CPU de múltiplos núcleos 1202. Além disso, uma porta USB 342 é acoplada ao controlador USB 340. A memória 104 e um cartão de módulo de identidade de assinante (SIM) 346 podem ser acoplados também à CPU de múltiplos núcleos 1202. A memória 104 pode residir no SoC 322 ou pode ser acoplada ao SoC 322. A memória 104 pode compreender um sistema de memória DRAM.
[0051] Adicionalmente, como ilustrado na figura 12, uma câmera digital 348 pode ser acoplada à CPU de múltiplos núcleos 1202. Em um aspecto ilustrativo, a câmera digital 348 é uma câmera do dispositivo acoplado à carga (CCD) ou uma câmera semicondutora de óxido de metal complementar (CMOS).
[0052] Como ilustrado adicionalmente na figura 12, um codificador-decodificador de áudio (CODEC) 350 pode ser acoplado à CPU de múltiplos núcleos 1202. Ademais, um amplificador de áudio 352 pode ser acoplado ao CODEC de áudio estéreo 350. Em um aspecto ilustrativo, um primeiro alto falante estéreo 354 e um segundo alto falante estéreo 356 são acoplados ao amplificador de áudio 353. A figura 12 ilustra que um amplificador de microfone 358 também pode ser acoplado ao CODEC de áudio estéreo 350. Adicionalmente, um microfone 360 pode ser acoplado ao amplificador de microfone 358. Em um aspecto particular, um sintonizador de rádio de modulação de frequência (FM) 362 pode ser acoplado ao CODEC de áudio estéreo 350. Além disso, uma antena de FM 364 é acoplada ao sintonizador de rádio de FM 362. Adicionalmente, os fones de ouvido estéreo 366 podem ser acoplados ao CODEC de áudio estéreo 350.
[0053] A figura 12 ilustra adicionalmente que um transceptor de frequência de rádio (RF) 368 pode ser acoplado à CPU de múltiplos núcleos 1202. Um comutador de RF 370 pode ser acoplado ao transceptor de RF 368 e a uma antena de RF 372. Um teclado 204 pode ser acoplado à CPU de múltiplos núcleos 1202. Além disso, um fone de ouvido mono com um microfone 376 pode ser acoplado à CPU de múltiplos núcleos 1202. Adicionalmente, um dispositivo de vibração 378 pode ser acoplado à CPU de múltiplos núcleos 1202.
[0054] A figura 12 também ilustra que uma fonte de alimentação 380 pode ser acoplado ao SoC 322. Em um aspecto em particular, a fonte de alimentação 380 é uma fonte de alimentação de corrente contínua (DC) que fornece potência para vários componentes do PCD 1200 que exigem potência. Adicionalmente, em um aspecto particular, a fonte de alimentação é uma bateria DC recarregável ou uma fonte de alimentação DC que é derivada de um transformador de corrente alternada (AC) para DC que é conectado a uma fonte de potência AC.
[0055] A figura 12 indica adicionalmente que o PCD 1200 também pode incluir um cartão de rede 388 que pode ser utilizado para acessar uma rede de dados (por exemplo, uma rede de área local, uma rede de área pessoal, ou qualquer outra rede). O cartão de rede 388 pode ser um cartão de rede Bluetooth, um cartão de rede WiFi, um cartão de rede de área pessoal (PAN), um cartão de rede de tecnologia de potência ultra baixa de rede de área pessoal (PeANUT), um sintonizador de televisão/cabo/satélite, ou qualquer outro cartão de rede bem conhecido da técnica. Adicionalmente, o cartão de rede 388 pode ser incorporado a um chip (isso é, o cartão de rede 388 pode ser uma solução completa em um chip, e pode não ser um cartão de rede separado 388).
[0056] Como apresentado na figura 12, o monitor de tela de toque 1206, a porta de vídeo 338, a porta USB 342, a câmera 348, o primeiro alto falante estéreo 354, o segundo alto falante estéreo 356, o microfone 360, a antena de FM 364, os fones de ouvido estéreo 366, o comutador de RF 370, a antena de RF 372, o teclado 374, o fone de ouvido mono 376, o vibrador 378, e a fonte de alimentação de potência 380 podem ser externos ao SoC 322.
[0057] Deve-se apreciar que uma ou mais etapas do método descritas aqui podem ser armazenadas na memória como instruções de programa de computador, tal como os módulos descritos acima. Essas instruções podem ser executadas por qualquer processador adequado em combinação ou em conjunto com o módulo correspondente para realizar os métodos descritos aqui.
[0058] Determinadas etapas nos processos ou fluxos de processo descritas nessa especificação naturalmente precedem outras para a invenção para funcionar como descrito. No entanto, a invenção não está limitada à ordem das etapas descritas se tal ordem ou sequência não alterar a funcionalidade da invenção. Isso é, reconhece que algumas etapas podem ser realizadas antes, depois ou em paralelo (substancialmente simultaneamente com) outras etapas sem se distanciar do escopo e espírito da invenção. Em alguns casos, determinadas etapas podem ser omitidas ou não realizadas sem se distanciar da invenção. Adicionalmente, palavras tal como "doravante", "então", "próximo", etc. não devem limitar a ordem das etapas. Essas palavras são simplesmente utilizadas para orientar o leitor através da descrição do método ilustrativo.
[0059] Adicionalmente, os versados na técnica de programação podem escrever um código de computador ou identificar hardware e/ou circuitos adequados para implementação da invenção descrita sem dificuldades com base nos fluxogramas e descrição associada nessa especificação, por exemplo.
[0060] Portanto, a descrição de um conjunto particular de instruções de código de programa ou dispositivos de hardware detalhados não é considerada necessária para uma compreensão adequada de como criar e utilizar a invenção. A funcionalidade inventiva dos processos implementados por computador reivindicados é explicada em maiores detalhes na descrição acima e na conjunção com as figuras que podem ilustrar vários fluxos de processo.
[0061] Em um ou mais aspectos ilustrativos, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas em hardware, as funções podem ser armazenadas em ou transmitidas como uma ou mais instruções ou código em um meio legível por computador. O meio legível por computador inclui meio de armazenamento em computador e meio de comunicação incluindo qualquer meio que facilite a transferência de um programa de computador de um lugar para outro. Um meio de armazenamento pode ser qualquer meio disponível que possa ser acessado por um computador. Por meio de exemplo e não de limitação, tal meio legível por computador pode compreender RAM, ROM, EEPROM, NAND flash, NOR flash, M-RAM, P-RAM, R-RAM, CD-ROM ou outro armazenamento em disco ótico, armazenamento em disco magnético ou outros dispositivos de armazenamento magnético ou qualquer outro meio que possa ser utilizado para portar ou armazenar código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessado por um computador.
[0062] Além disso, qualquer conexão é adequadamente chamada de meio legível por computador. Por exemplo, se o software for transmitido a partir de um sítio da rede, um servidor ou outra fonte remota utilizando um cabo coaxial, um cabo de fibra ótica, um par torcido, uma linha de assinante digital ("DSL"), ou outras tecnologias sem fio tal como infravermelho, rádio e micro-ondas, então o cabo coaxial, o cabo de fibra ótica, o par torcido, DSL ou tecnologias sem fio tal como infravermelho, rádio e microondas são incluídos na definição de meio.
[0063] Disquete e disco, como utilizados aqui, inclui disco compacto ("CD"), disco a laser, disco ótico, disco versátil digital ("DVD"), disquete e disco Blu-ray onde disquetes normalmente reproduzem dados magneticamente, enquanto discos reproduzem dados oticamente com lasers. Combinações do acima também devem ser incluídas no escopo de meio legível por computador.
[0064] Modalidades alternativas se tornarão aparentes aos versados na técnica à qual a invenção pertence sem se distanciar de seu espírito e escopo. Portanto, apesar de os aspectos selecionados terem sido ilustrados e descritos em detalhes, será compreendido que várias substituições e alterações podem ser feitas sem se distanciar do espírito e escopo da presente invenção, como definido pelas reivindicações a seguir.

Claims (13)

1. Método (200) para minimizar consumo de potência em processamento de quadro gráfico, o método caracterizado pelo fato de que compreende: inicializar (202) processamento de quadro gráfico a ser realizado de forma cooperativa por uma unidade de processamento central, CPU, e uma unidade de processamento gráfico, GPU; detectar (204) um tipo de carga de trabalho associado com o processamento de quadro gráfico, em que o tipo de carga de trabalho compreende uma carga de trabalho serializada CPU/GPU ou uma carga de trabalho paralelizada CPU/GPU; selecionar um algoritmo de co-otimização apropriado de acordo com o tipo de carga de trabalho gráfico, em que para cargas de trabalho serializadas um dentre um conjunto de algoritmos de co-otimização de escalonamento de tensão/frequência e relógio dinâmico, DCVS, serializados CPU/GPU é aplicado (208), e em que para cargas de trabalho paralelizadas um dentre um conjunto de algoritmos de co- otimização DCVS paralelizado CPU/GPU é aplicado (210); receber (402) dados de atividade de CPU e dados de atividade de GPU; determinar (404, 406) um conjunto de níveis de DCVS disponíveis para a GPU e a CPU; e selecionar (410), utilizando o algoritmo de co- otimização selecionado, a partir do conjunto de níveis de DCVS disponíveis, uma combinação ótima de um nível de DCVS de GPU e um nível de DCVS de CPU, com base nos dados de atividade CPU e GPU, que minimiza um consumo de potência combinado da CPU e GPU durante o processamento de quadro gráfico.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que os dados de atividade de CPU e os dados de atividade de GPU são recebidos de um respectivo profiler de atividade associado com a CPU e GPU.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que os dados de atividade de CPU e GPU compreendem dados especificando um ou mais dentre uma carga de trabalho de processador, um tempo de atividade, um tempo de inatividade e um tempo de espera.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente: receber dados de temperatura a partir de um ou mais de pelo menos um sensor de temperatura de CPU e pelo menos um sensor de temperatura de GPU; e receber dados de fuga de corrente de alimentação de estado quiescente, IDDQ, associados com uma ou mais entre GPU e CPU; em que a combinação ótima dos níveis de DCVS de GPU e CPU é selecionada com base nos dados de atividade de CPU e GPU e um ou mais dentre os dados de temperatura e dados IDDQ.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o processamento de quadro gráfico compreende uma carga de trabalho serializada CPU/GPU, e em que a combinação ótima de nível de DCVS de GPU e nível de DCVS de CPU compreende um ponto operacional em um espaço de frequência CPU/GPU que minimiza o consumo de potência combinado da CPU e da GPU durante a carga de trabalho serializada CPU/GPU enquanto corresponde a um prazo de quadro.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o processamento de quadro gráfico compreende uma carga de trabalho paralelizada de CPU/GPU e em que a combinação ótima determinada de níveis de DCVS de CPU e GPU que minimiza o consumo de potência combinado da CPU e da GPU para a carga de trabalho paralelizada também aumenta um tempo de inatividade para processamento de recursos de hardware comuns; e o método compreendendo adicionalmente sincronizar a carga de trabalho de CPU/GPU paralelizada e os recursos de hardware comuns de acordo com um sinal de sincronização vertical a partir de um acionador de exibição.
7. Sistema para minimizar consumo de potência em processamento de quadro gráfico, o sistema caracterizado pelo fato de que compreende: meios para iniciar processamento de quadro gráfico a ser realizado de forma cooperativa por uma unidade de processamento central, CPU, e uma unidade de processamento gráfico, GPU; meios para detectar um tipo de carga de trabalho associada com o processamento de quadro gráfico, em que o tipo de carga de trabalho compreende uma carga de trabalho serializada CPU/GPU ou uma carga de trabalho paralelizada CPU/GPU; meios para selecionar um algoritmo de co- otimização apropriado de acordo com o tipo de carga de trabalho gráfico, em que para cargas de trabalho serializadas um dentre um conjunto de algoritmos de co-otimização de escalonamento de tensão/frequência e relógio dinâmico, DCVS, serializados CPU/GPU é aplicado, e em que para cargas de trabalho paralelizadas um dentre um conjunto de algoritmos de co-otimização DCVS de CPU/GPU paralelizado é aplicado (210); meios para receber dados de atividade de CPU e dados de atividade de GPU; meios para determinar um conjunto de níveis de DCVS disponíveis para a GPU e a CPU; e meios para selecionar, utilizando o algoritmo de co-otimização selecionado, a partir do conjunto de níveis de DCVS disponíveis de uma combinação ótima de um nível de DCVS de GPU e um nível de DCVS de CPU, com base nos dados de atividade de CPU e GPU, que minimiza um consumo de potência combinado da CPU e GPU durante o processamento de quadro gráfico.
8. Sistema, de acordo com a reivindicação 7, caracterizado pelo fato de que os dados de atividade de CPU e os dados de atividade de GPU são recebidos a partir de um respectivo profiler de atividade associado com a CPU e a GPU.
9. Sistema, de acordo com a reivindicação 7, caracterizado pelo fato de que os dados de atividade de CPU e de GPU compreendem dados especificando um ou mais dentre uma carga de trabalho de processador, um tempo de ativação, um tempo de inatividade e um tempo de espera.
10. Sistema, de acordo com a reivindicação 7, caracterizado pelo fato de que compreende adicionalmente: meios para receber dados de temperatura a partir de um ou mais dentre pelo menos um sensor de temperatura de CPU e pelo menos um sensor de temperatura de GPU; e meios para receber dados de fuga de corrente de suprimento de estado quiescente, IDDQ, associados com uma ou mais dentre GPU e CPU; em que a combinação ótima dos níveis de DCVS de GPU e CPU é selecionada com base nos dados de atividade de CPU e GPU e um ou mais dos dados de temperatura e dados IDDQ.
11. Sistema, de acordo com a reivindicação 7, caracterizado pelo fato de que o processamento de quadro gráfico compreende uma carga de trabalho serializada de CPU/GPU, e em que a combinação ótima do nível de DCVS de GPU e do nível de DCVS de CPU compreende um ponto operacional em um espaço de frequência CPU/GPU que minimiza o consumo de potência combinado da CPU e da GPU durante a carga de trabalho serializada CPU/GPU enquanto corresponde a um prazo de quadro.
12. Sistema, de acordo com a reivindicação 7, caracterizado pelo fato de que o processamento de quadro gráfico compreende uma carga de trabalho paralelizada de CPU/GPU e em que a combinação ótima determinada dos níveis de DCVS de CPU e GPU que minimiza o consumo de potência combinado da CPU e GPU para a carga de trabalho paralelizada também aumenta um tempo de inatividade para processamento de recursos de hardware comuns; e o sistema compreendendo adicionalmente meios para sincronizar a carga de trabalho de CPU/GPU paralelizada e os recursos de hardware comuns de acordo com um sinal de sincronização vertical a partir de um acionador de exibição.
13. Memória legível por computador, caracterizada pelo fato de que contém gravado na mesma o método conforme definido em qualquer uma das reivindicações 1 a 6.
BR112016025031-1A 2014-04-30 2015-04-29 Método e sistema para minimizar consumo de potência em processamento de quadro gráfico e memória legível por computador BR112016025031B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/266,685 US9378536B2 (en) 2014-04-30 2014-04-30 CPU/GPU DCVS co-optimization for reducing power consumption in graphics frame processing
US14/266,685 2014-04-30
PCT/US2015/028098 WO2015168189A1 (en) 2014-04-30 2015-04-29 Cpu/gpu dcvs co-optimization for reducing power consumption in graphics frame processing

Publications (2)

Publication Number Publication Date
BR112016025031A2 BR112016025031A2 (pt) 2017-08-15
BR112016025031B1 true BR112016025031B1 (pt) 2022-09-20

Family

ID=53177364

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112016025031-1A BR112016025031B1 (pt) 2014-04-30 2015-04-29 Método e sistema para minimizar consumo de potência em processamento de quadro gráfico e memória legível por computador

Country Status (7)

Country Link
US (1) US9378536B2 (pt)
EP (1) EP3137965B1 (pt)
JP (1) JP6412162B2 (pt)
KR (1) KR102380576B1 (pt)
CN (1) CN106258011B (pt)
BR (1) BR112016025031B1 (pt)
WO (1) WO2015168189A1 (pt)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10134314B2 (en) * 2011-11-30 2018-11-20 Intel Corporation Reducing power for 3D workloads
US9530174B2 (en) * 2014-05-30 2016-12-27 Apple Inc. Selective GPU throttling
US20160077565A1 (en) * 2014-09-17 2016-03-17 Advanced Micro Devices, Inc. Frequency configuration of asynchronous timing domains under power constraints
KR102325453B1 (ko) * 2014-12-04 2021-11-11 삼성전자주식회사 반도체 장치의 동작 방법
US9910475B2 (en) 2014-12-23 2018-03-06 Intel Corporation Processor core power event tracing
WO2017019546A1 (en) * 2015-07-24 2017-02-02 Power It Perfect, Inc. Systems and methods of controlling a power supply signal delivered to an electronic device
US10445850B2 (en) * 2015-08-26 2019-10-15 Intel Corporation Technologies for offloading network packet processing to a GPU
KR102375925B1 (ko) * 2015-08-31 2022-03-17 삼성전자주식회사 Cpu의 작동 방법과 상기 cpu를 포함하는 시스템의 작동 방법
KR102452154B1 (ko) * 2015-10-27 2022-10-07 삼성전자주식회사 영상 처리 장치 및 이를 포함하는 표시 시스템
US10108564B2 (en) * 2016-03-28 2018-10-23 Qualcomm Incorporated Active and stall cycle based dynamic scaling of processor frequency and bus bandwidth
US10296067B2 (en) * 2016-04-08 2019-05-21 Qualcomm Incorporated Enhanced dynamic clock and voltage scaling (DCVS) scheme
CN107610039A (zh) * 2016-07-12 2018-01-19 联发科技股份有限公司 图像处理方法及图像处理装置
US10776895B2 (en) * 2017-02-10 2020-09-15 Apple Inc. GPU power and performance management
US10290289B2 (en) * 2017-04-01 2019-05-14 Intel Corporation Adaptive multibit bus for energy optimization
US10319065B2 (en) * 2017-04-13 2019-06-11 Microsoft Technology Licensing, Llc Intra-frame real-time frequency control
CN107465929B (zh) * 2017-07-21 2019-02-01 山东大学 基于hevc的dvfs控制方法、系统、处理器及存储设备
US10699369B2 (en) * 2017-12-27 2020-06-30 Intel Corporation Intelligent memory DVFS scheme exploiting graphics inter-frame level correlation
CN111902790B (zh) * 2018-08-30 2022-05-31 华为技术有限公司 一种调频方法、装置及计算机可读存储介质
US11644887B2 (en) * 2018-11-19 2023-05-09 Alibaba Group Holding Limited Unified power management
US11423035B2 (en) 2019-02-04 2022-08-23 Pearson Education, Inc. Scoring system for digital assessment quality with harmonic averaging
US11854433B2 (en) * 2019-02-04 2023-12-26 Pearson Education, Inc. Systems and methods for item response modelling of digital assessments
US11181969B2 (en) * 2019-04-02 2021-11-23 Dell Products, Lp Method and system for graphics processor unit busy state detection
CN110308784A (zh) * 2019-04-30 2019-10-08 东莞恒创智能科技有限公司 基于Nvidia TX2的CPU、GPU联合调频节能优化方法
US11100698B2 (en) * 2019-06-28 2021-08-24 Ati Technologies Ulc Real-time GPU rendering with performance guaranteed power management
CN110365962B (zh) * 2019-07-17 2021-08-17 Oppo广东移动通信有限公司 色域转换处理方法、装置以及电子设备
US11093019B2 (en) 2019-07-29 2021-08-17 Microsoft Technology Licensing, Llc Integrated circuit power domains segregated among power supply phases
US11698812B2 (en) * 2019-08-29 2023-07-11 Intel Corporation System, apparatus and method for providing hardware state feedback to an operating system in a heterogeneous processor
US11409341B2 (en) 2019-10-01 2022-08-09 Intel Corporation Repeating graphics render pattern detection
CN112925592A (zh) 2019-12-05 2021-06-08 超威半导体公司 渲染主页面的内核软件驱动的颜色重新映射
US11194377B2 (en) * 2020-01-21 2021-12-07 Dell Products L.P. System and method for optimizing hardware resources for optimal workload performance
KR20210101663A (ko) 2020-02-10 2021-08-19 삼성전자주식회사 프레임의 생성에 소요된 시간 및 최대 허용 시간에 기반하여 프로세싱 유닛을 제어하는 전자 장치 및 전자 장치의 동작 방법
US11467621B2 (en) * 2020-02-28 2022-10-11 Qualcomm Incorporated Computer processing unit intra-frame clock and voltage scaling based on graphics application awareness
US20220044350A1 (en) * 2020-08-07 2022-02-10 Advanced Micro Devices, Inc. Graphics processing unit with selective two-level binning
CN112306689B (zh) * 2020-11-02 2021-05-11 时代云英(深圳)科技有限公司 一种边缘计算系统及方法
CN114510139A (zh) * 2020-11-16 2022-05-17 深圳市万普拉斯科技有限公司 一种调频方法、装置及电子设备
CN113138655B (zh) * 2021-04-02 2023-11-28 Oppo广东移动通信有限公司 处理器频率的调整方法、装置、电子设备及存储介质
WO2022231961A1 (en) * 2021-04-26 2022-11-03 Sony Semiconductor Solutions Corporation Dynamic voltage and frequency scaling for image-sensor applications
US20210326191A1 (en) * 2021-06-25 2021-10-21 Intel Corporation Methods and apparatus to align media workloads

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3266110B2 (ja) 1998-08-14 2002-03-18 日本電気株式会社 ビデオコントローラ及びその消費電力制御回路
US6924781B1 (en) 1998-09-11 2005-08-02 Visible Tech-Knowledgy, Inc. Smart electronic label employing electronic ink
JP4549652B2 (ja) * 2003-10-27 2010-09-22 パナソニック株式会社 プロセッサシステム
JP4476876B2 (ja) * 2005-06-10 2010-06-09 三菱電機株式会社 並列計算装置
US7529948B2 (en) 2005-08-25 2009-05-05 Apple Inc. Methods and apparatuses for dynamic power estimation
US8566607B2 (en) * 2005-08-26 2013-10-22 International Business Machines Corporation Cryptography methods and apparatus used with a processor
US8284205B2 (en) * 2007-10-24 2012-10-09 Apple Inc. Methods and apparatuses for load balancing between multiple processing units
US7949889B2 (en) * 2008-01-07 2011-05-24 Apple Inc. Forced idle of a data processing system
US8199158B2 (en) * 2008-06-11 2012-06-12 Intel Corporation Performance allocation method and apparatus
US8671413B2 (en) * 2010-01-11 2014-03-11 Qualcomm Incorporated System and method of dynamic clock and voltage scaling for workload based power management of a wireless mobile device
US9086883B2 (en) 2011-06-10 2015-07-21 Qualcomm Incorporated System and apparatus for consolidated dynamic frequency/voltage control
JP5794010B2 (ja) * 2011-07-19 2015-10-14 富士通株式会社 情報処理装置、制御プログラムおよび制御方法
US9442773B2 (en) * 2011-11-21 2016-09-13 Qualcomm Incorporated Thermally driven workload scheduling in a heterogeneous multi-processor system on a chip
US8924758B2 (en) 2011-12-13 2014-12-30 Advanced Micro Devices, Inc. Method for SOC performance and power optimization
US9129394B2 (en) * 2012-12-14 2015-09-08 Microsoft Technology Licensing, Llc CPU-GPU parallelization
US9477568B2 (en) * 2013-09-27 2016-10-25 International Business Machines Corporation Managing interconnect electromigration effects

Also Published As

Publication number Publication date
CN106258011A (zh) 2016-12-28
JP2017515230A (ja) 2017-06-08
CN106258011B (zh) 2019-07-12
KR20160147964A (ko) 2016-12-23
EP3137965B1 (en) 2019-02-20
JP6412162B2 (ja) 2018-10-24
KR102380576B1 (ko) 2022-03-29
WO2015168189A1 (en) 2015-11-05
EP3137965A1 (en) 2017-03-08
US9378536B2 (en) 2016-06-28
US20150317762A1 (en) 2015-11-05
BR112016025031A2 (pt) 2017-08-15

Similar Documents

Publication Publication Date Title
BR112016025031B1 (pt) Método e sistema para minimizar consumo de potência em processamento de quadro gráfico e memória legível por computador
US9626295B2 (en) Systems and methods for scheduling tasks in a heterogeneous processor cluster architecture using cache demand monitoring
US20170193971A1 (en) Variable Refresh Rate Display Synchronization
JP6236682B2 (ja) ユーザの存在検出に基づく可変タッチスクリーン装置、方法、プログラム、システム
US20160370844A1 (en) Techniques to control computational resources for an electronic device
US20130290762A1 (en) Methods and apparatuses to wake computer systems from sleep states
US10064141B2 (en) Core frequency/count decision-based thermal mitigation optimization for a multi-core integrated circuit
CN107924225B (zh) 用于动态地调整存储器状态转变定时器的系统和方法
TW201436426A (zh) 用於電子裝置之電池充電管理技術
US20160174361A1 (en) Signal routing
US9292356B2 (en) Thread processing on an asymmetric multi-core processor
TWI564684B (zh) 一般主機控制器延遲方法及設備
US9507641B1 (en) System and method for dynamic granularity control of parallelized work in a portable computing device (PCD)
US10725525B2 (en) Method of operating system-on-chip, system-on-chip performing the same and electronic system including the same
CN114258517B (zh) 用于调制解调器指导的应用处理器引导流程的系统和方法
US10067989B2 (en) Technologies for mining temporal patterns in big data
WO2018129708A1 (en) Determining processor utilization of multiprocessing system
JP2004164530A (ja) ポータブルコンピュータのオペレーションシステムによる電池状態読み取り方法
US11934248B2 (en) Performance and power tuning user interface
US11755450B1 (en) Systems and methods for detecting and suggesting breaks from use of an IHS (information handling system)
TW201807584A (zh) 將裝置連接至支援其能力的埠口之技術

Legal Events

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

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 29/04/2015, OBSERVADAS AS CONDICOES LEGAIS