BR112019026957A2 - sistema e método para dimensionamento de buffer dinâmico em um dispositivo de computação - Google Patents

sistema e método para dimensionamento de buffer dinâmico em um dispositivo de computação Download PDF

Info

Publication number
BR112019026957A2
BR112019026957A2 BR112019026957-6A BR112019026957A BR112019026957A2 BR 112019026957 A2 BR112019026957 A2 BR 112019026957A2 BR 112019026957 A BR112019026957 A BR 112019026957A BR 112019026957 A2 BR112019026957 A2 BR 112019026957A2
Authority
BR
Brazil
Prior art keywords
use case
buffers
buffer
buffer size
soc
Prior art date
Application number
BR112019026957-6A
Other languages
English (en)
Inventor
Vasantha Kumar Bandur Puttappa
Umesh Rao
Kunal Desai
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 BR112019026957A2 publication Critical patent/BR112019026957A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B1/00Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
    • H04B1/38Transceivers, i.e. devices in which transmitter and receiver form a structural unit and in which at least one part is used for functions of transmitting and receiving
    • H04B1/3827Portable transceivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2205/00Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F2205/06Indexing scheme relating to groups G06F5/06 - G06F5/16
    • G06F2205/063Dynamically variable buffer size
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Power Sources (AREA)
  • Information Transfer Systems (AREA)
  • Measurement Of Velocity Or Position Using Acoustic Or Ultrasonic Waves (AREA)
  • Small-Scale Networks (AREA)

Abstract

Trata-se de métodos e sistemas para controlar dinamicamente o tamanho de buffer em um dispositivo de computação em um dispositivo de computação (PCD). Um módulo de monitor determina um primeiro caso de uso para definir um primeiro nível de atividade para uma pluralidade de componentes do PCD. Com base no primeiro caso de uso, uma pluralidade de buffers é ajustada a um primeiro tamanho de buffer. Cada um dos buffers é associado a um dentre a pluralidade de componentes, e o primeiro tamanho de buffer para cada buffer se baseia no primeiro nível de atividade do componente associado. Um segundo caso de uso para o PCD, diferente do primeiro caso de uso, é determinado. O segundo caso de uso define um segundo nível de atividade para a pluralidade de componentes. Pelo menos um dos buffers é ajustado a um segundo tamanho de buffer diferente do primeiro tamanho de buffer com base no segundo caso de uso.

Description

“SISTEMA E MÉTODO PARA DIMENSIONAMENTO DE BUFFER DINÂMICO EM UM DISPOSITIVO DE COMPUTAÇÃO” DESCRIÇÃO DA TÉCNICA RELACIONADA
[0001] Dispositivos de computação, incluindo computadores desktop, servidores e dispositivos de computação portáteis (“PCDs”) são ubíquos. PCDs, por exemplo, estão se tornando necessidades para pessoas em níveis pessoais e profissionais. Esses dispositivos podem incluir telefones celulares (tais como smartphones), assistentes digitais portáteis (PDAs”), consoles de jogos portáteis, computadores do tipo palmtop, computadores do tipo tablet, dispositivos para serem usados junto ao corpo e outros dispositivos eletrônicos portáteis. Tais PCDs comumente usam memórias, tais como buffers do tipo primeiro a entrar, primeiro a sair ou registros de memória que atuam como buffers para assegurar que dados sejam transferidos entre componentes do PCD de modo eficiente e sem perda de dados. Tais memórias de buffer são tipicamente dimensionadas como inicialização de um PCD para um cenário de “pior caso”, por exemplo, as memórias de buffer, tais como FIFOs, podem ser dimensionadas para assegurar que nenhum dado seja perdido quando um primeiro componente que transfere dados opera a uma frequência máxima, enquanto o outro componente que transfere dados opera a uma frequência mínima.
[0002] À medida que os PCDs se tornam mais potentes e são necessários para realizar mais tarefas, a redução do consumo de energia se torna mais importante para assegurar uma vida útil de bateria satisfatória. As técnicas anteriores típicas par reduzir ou controlar o consumo de energia incluem estrangulamento ou controle de um nível de tensão no qual os componentes PCD operam e/ou uma frequência de clock os componentes PCD. Entretanto, tais métodos de controle de consumo de energia podem não ser eficazes em todas as circunstâncias, tal como quando múltiplos componentes do PCD estão em um único trilho de alimentação, de modo que o nível de tensão no trilho de alimentação não possa ser reduzido devido aos requisitos de um componente, embora outros componentes no trilho de alimentação possam ser operados a um nível de tensão mais baixo.
[0003] Tais métodos para controlar o consumo de energia ignoram os vazamentos de energia significativos que resultam dos buffers dimensionados para lidar com cenários de “pior caso”. Portanto, há uma necessidade de sistemas e métodos para controlar dinamicamente o dimensionamento de buffer FIFO em dispositivos de computação, tais como PCDs.
SUMÁRIO DA REVELAÇÃO
[0004] Várias modalidades de métodos e sistemas para controlar dinamicamente um tamanho de memória de buffer em um dispositivo de computação são reveladas. Em uma modalidade exemplificativa, é fornecido um método, sendo que o método compreende determinar com um módulo de monitor de um sistema em um chip (“SoC”), um primeiro caso de uso para o PCD. O primeiro caso de uso define um primeiro nível de atividade para uma pluralidade de componentes do SoC. O método inclui ajustar uma pluralidade de memórias de buffer a um primeiro tamanho de buffer com base no primeiro caso de uso. Cada um dentre a pluralidade de buffers é associado a um dentre a pluralidade de componentes do SoC, e o primeiro tamanho de buffer para cada um dos buffers se baseia no primeiro nível de atividade do componente associado do SoC
[0005] O método inclui adicionalmente determinar um segundo caso de uso para o PCD diferente do primeiro caso de uso. O segundo caso de uso define um segundo nível de atividade para a pluralidade de componentes do SoC. Pelo menos um dentre a pluralidade de buffers é ajustado a um segundo tamanho de buffer com base no segundo caso de uso. O segundo tamanho de buffer para o pelo menos um buffer se baseia no segundo nível de atividade do componente associado do SoC, e o segundo tamanho de buffer é diferente do primeiro tamanho de buffer.
[0006] Em outra modalidade, é revelado um sistema de computador para controlar dinamicamente o tamanho de buffer em um dispositivo de computação. O sistema exemplificativo compreende uma pluralidade de componentes de um sistema em um chip (“SoC”) do PCD; uma pluralidade de buffers no SoC, sendo que cada um dentre a pluralidade de buffers é associado a um dentre a pluralidade de componentes; e um módulo de monitor do SoC. O módulo de monitor é configurado para determinar um primeiro caso de uso para o PCD, sendo que o primeiro caso de uso define um primeiro nível de atividade para a pluralidade de componentes do SoC. O módulo de monitor também é configurado para ajustar a pluralidade de buffers a um primeiro tamanho de buffer com base no primeiro caso de uso, em que o primeiro tamanho de buffer para cada um dos buffers se baseia no primeiro nível de atividade do componente associado do SoC.
[0007] O módulo de monitor é adicionalmente configurado para determinar um segundo caso de uso para o PCD, diferente do primeiro caso de uso, sendo que o segundo caso de uso define um segundo nível de atividade para a pluralidade de componentes do SoC. Finalmente, o módulo de monitor é configurado para ajustar pelo menos um dentre a pluralidade de buffers a um segundo tamanho de buffer com base no segundo caso de uso. O segundo tamanho de buffer para o pelo menos um buffer se baseia no segundo nível de atividade do componente associado do SoC, e o segundo tamanho de buffer é diferente do primeiro tamanho de buffer.
BREVE DESCRIÇÃO DOS DESENHOS
[0008] Nos desenhos, as referências numéricas similares se referem a partes similares ao longo das várias vistas, exceto se indicado em contrário. Para referências numéricas com designações de caractere de letra, tais como “102A” ou “102B”, as designações de caractere de letra podem diferenciar duas partes ou elementos similares presentes na mesma Figura. As designações de caractere de letra para referências numéricas podem ser omitidas quando se pretende que uma referência numérica abranja todas as partes que têm a mesma referência numérica em todas as Figuras.
[0009] A Figura 1 é um diagrama de blocos funcional que ilustra uma modalidade exemplificativa de um dispositivo de computação portátil (PCD) em que os sistemas e métodos para dimensionamento de buffer dinâmico do tipo primeiro a entrar, primeiro a sair (FIFO) podem ser implementados;
[0010] A Figura 2 é um diagrama de blocos que mostra componentes exemplificativos em um sistema em um chip (SoC) que podem ser implementados em um PCD;
[0011] A Figura 3 é um diagrama de blocos que mostra aspectos de uma modalidade exemplificativa de um sistema para dimensionamento de buffer dinâmico FIFO em um dispositivo de computação;
[0012] A Figura 4A é o diagrama de blocos da Figura 2, no qual um exemplo da operação de um sistema e método para dimensionamento de buffer dinâmico FIFO é ilustrado para um caso de uso;
[0013] A Figura 4B é o diagrama de blocos da Figura 2, no qual um exemplo da operação de um sistema e método para dimensionamento de buffer dinâmico FIFO é ilustrado para um caso de uso diferente;
[0014] A Figura 5A é uma tabela de estado exemplificativa que pode ser usada durante a operação de um sistema e método para dimensionamento de buffer dinâmico FIFO;
[0015] A Figura 5B é uma tabela de pesquisa exemplificativa (LUT) que pode ser usada durante a operação de um sistema e método para dimensionamento de buffer dinâmico FIFO;
[0016] A Figura 6 é um diagrama de blocos que mostra componentes exemplificativos em um SoC e aspectos adicionais de uma operação exemplificativa de um sistema e método para dimensionamento de buffer dinâmico FIFO para um caso de uso;
[0017] A Figura 7A é um diagrama de blocos que mostra aspectos de um FIFO com um primeiro tamanho;
[0018] A Figura 7B é um diagrama de blocos que mostra aspectos do FIFO da Figura 6A após redimensionamento de acordo com os sistemas e métodos exemplificativos no presente documento; e
[0019] A Figura 8 é um fluxograma lógico que ilustra a operação de um método exemplificativo para dimensionamento de buffer dinâmico FIFO em um dispositivo de computação
DESCRIÇÃO DETALHADA
[0020] A palavra “exemplificativo” usada no presente documento significa “servir como um exemplo, instância ou ilustração”. Qualquer aspecto descrito no presente documento como “exemplificativo” não deve ser necessariamente interpretado como exclusivo, preferencial ou vantajoso em relação a outros aspectos.
[0021] Nesta descrição, o termo “aplicativo” também pode incluir arquivos que têm conteúdo executável, tais como código de objeto, scripts, código de byte, arquivos de linguagem de marcação e patches. Além disso, um “aplicativo mencionado no presente documento também pode incluir arquivos que não são de natureza executável, tais como documentos que precisam ser abertos ou outros arquivos de dados que precisam ser acessados.
[0022] Conforme usado nesta descrição, os termos “componente”, “banco de dados”, “módulo”, “sistema” e similares se destinam a se referir a uma entidade relacionada a computador, hardware, firmware, uma combinação de hardware e software, software, ou software em execução e representar meios exemplificativos para fornecer a funcionalidade e realizar as determinadas etapas nos processos ou fluxos de processo descritos neste relatório descritivo. Por exemplo, um componente pode ser, porém sem limitação, um processo em execução em um processador, um processador, um objeto, um executável, um thread de execução, um programa e/ou um computador. A título de ilustração, tanto um aplicativo em execução em um dispositivo de computação como o dispositivo de computação podem ser um componente.
[0023] Um ou mais componentes podem se situar dentro de um processo e/ou thread de execução, e um componente pode ser localizado em um computador e/ou distribuído entre dois ou mais computadores. Além disso, esses componentes podem executar a partir de vários meios legíveis por computador que têm várias estruturas de dados armazenadas nos mesmos. Os componentes podem se comunicar por meio de processos locais e/ou remotos, tal como de acordo com um sinal que tem um ou mais pacotes de dados (por exemplo, dados a partir de um componente que interage 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 do sinal)
[0024] Nesta descrição, os termos “unidade de processamento central (“CPU”)”, “processador de sinal digital (“DSP”)”, “unidade de processamento gráfico (“GPU”)” e “chip” são usados de forma intercambiável. Além disso, uma CPU, DSP, GPU ou um chip podem ser compreendidos de um ou mais componentes de processamento distintos geralmente denominados no presente documento como “núcleo
(s)”.
[0025] Nesta descrição, os termos “carga útil”, “carga de processo” e “carga útil de processo” são usados de forma intercambiável e geralmente voltados em direção à carga de processamento ou porcentagem de carga de processamento, associada a um determinado componente de processamento em uma determinada modalidade, tal como quando esse componente de processamento está executando uma ou mais tarefas ou instruções. Ademais, um “componente de processamento” pode ser, porém sem limitação, um sistema em um chip (“SoC”), uma unidade de processamento central, uma unidade de processamento gráfico, um núcleo, um núcleo principal, um subnúcleo, uma área de processamento, um mecanismo de hardware, uma câmera, um modem, etc., ou qualquer outro componente que se situe dentro ou fora de um circuito integrado dentro de um dispositivo de computação portátil
[0026] Nesta descrição, o termo “dispositivo de computação portátil” (“PCD”) é usado para descrever qualquer dispositivo que opere em uma fonte de alimentação com capacidade limitada, tal como uma bateria. Embora os PCDs operados por bateria estejam em uso há décadas, avanços tecnológicos nas baterias recarregáveis juntamente com o advento da tecnologia sem fio de terceira geração (“3G”) e quarta geração (“4G”) possibilitaram vários PCDs com múltiplas capacidades. Portanto, um PCD pode ser um telefone celular, um telefone via satélite, um pager, um PDA, um telefone inteligente, um dispositivo de navegação, um smartbook ou leitor, um reprodutor de mídia, um computador do tipo tablet, uma combinação dos dispositivos anteriormente mencionados, um computador do tipo laptop com uma conexão sem fio e/ou produtos para serem usados junto ao corpo, entre outros
[0027] Nos PCDs, a qualidade de serviço concorrente, vida útil da bateria e outras preocupações podem levar vários componentes, sistemas e/ou subsistemas do PCD a serem operados com energia ou tensão mais alta (ou mais baixa) e/ou com frequência mais alta (ou mais baixa). Adicionalmente, os PCDs incluem tipicamente uma ou mais memórias de buffer para auxiliar na negociação de dados entre os vários componentes, sistemas e/ou subsistemas dos PCDs. Entretanto, essas memórias de buffer ou buffers são tipicamente ajustadas ou dimensionadas na inicialização ou operação inicial do PCD e permanecem estáticas em tamanho, levando a um excesso de vazamento de energia quando o buffer não é usado. Tal perda de energia pode ser especialmente significativa em buffers que são dimensionados para um cenário de “pior caso”, tais como buffers dimensionados para assegurar que os dados não sejam perdidos quando um componente que transmite dados opera a uma frequência máxima, enquanto um componente que recebe os dados opera a uma frequência mínima. Essa perda de energia do tamanho de buffer não é considerada em estratégias de controle de energia tradicionais focalizadas em frequência de operação e/ou tensões dos componentes PCD.
[0028] Determinou-se que a capacidade para controlar dinamicamente o tamanho dos buffers usados pelos componentes e/ou subsistemas PCD pode levar a economia de energia substancial além da economia de energia obtida pelo controle de tensão/frequência tradicional dos componentes/subsistemas PCD. Adicionalmente, o dimensionamento dinâmico dos buffers pode fornecer economia de energia quando os métodos de controle de energia baseados em tensão/frequência tradicional não puderem, tal como quando a tensão de um componente inativo não pode ser reduzida devido ao fato de que o componente compartilha um trilho de alimentação com um componente ativo. Desse modo, os presentes sistemas e métodos para dimensionar dinamicamente buffers ou memórias de buffer fornecem uma capacidade de baixo custo para melhorar a economia de energia ou para realize a economia de energia quanto as economias de energia de tensão/frequência tradicionais são ineficazes.
[0029] Os sistemas e métodos para gerenciamento térmico com reconhecimento de caminho de dados descritos no presente documento, ou porções dos sistemas e métodos, podem ser implementados em hardware ou software. Caso implementados em hardware, os sistemas, ou porções dos sistemas podem incluir qualquer uma ou uma combinação das seguintes tecnologias, que são bem conhecidas na técnica: sensores, componentes eletrônicos discretos, circuitos integrados, circuitos integrados de aplicação específica que têm dispositivos semicondutores e elementos resistivos adequadamente configurados etc. Qualquer um desses dispositivos de hardware, que atua isoladamente ou com outros dispositivos, ou outros componentes, tal como uma memória, também pode formar ou compreender componentes ou meios para realizar várias operações ou etapas dos métodos revelados.
[0030] Quando um sistema ou método descrito no presente documento é implementado, ou parcialmente implementado, em software, a porção de software pode ser usada para realizar os métodos descritos no presente documento. O software e os dados usados na representação de vários elementos podem ser armazenados em uma memória e executados por um sistema de execução de instruções adequado (por exemplo, um microprocessador). O software pode compreender uma listagem ordenada de instruções executáveis para implementar funções lógicas, e pode ser incorporado em qualquer “meios legível por processador” para uso pelo, ou em conexão com um sistema, aparelho ou dispositivo de execução de instruções, tal como um processador de núcleo único ou múltiplos núcleos ou sistema contendo processador. Tais sistemas geralmente irão acessar as instruções a partir do sistema, aparelho ou dispositivo de execução de instruções e executar as instruções.
[0031] A Figura 1 é um diagrama de blocos funcional que ilustra uma modalidade exemplificativa de um dispositivo de computação portátil (PCD) em que os sistemas e métodos para gerenciamento térmico com reconhecimento de caminho de dados podem ser implementados. Conforme mostrado, o PCD 100 inclui um sistema em um chip (“SoC”) 102 que inclui uma unidade de processamento central de múltiplos núcleos (“CPU”) 110 e um processador de sinal analógico 128 que são acoplados em conjunto. A CPU 110 pode compreender múltiplos núcleos que incluem um zeroézimo núcleo 122, um primeiro núcleo 124, até e incluindo um N- ésimo núcleo 126. Ademais, em vez de uma CPU 110, um processador de sinal digital (“DSP”) também pode ser empregado, conforme entendido por uma pessoa de habilidade comum na técnica. Conforme será entendido, os núcleos 122, 122, 126 podem ser implementados para executar uma ou mais instruções ou tarefas, tais como instruções ou tarefas de um aplicativo que é executado pelo PCD 100. Conforme também será entendido, tais instruções ou tarefas podem ser, em vez disso, ou adicionalmente, executadas por ou em um ou mais componentes de processamento, tal como a GPU 182 ilustrada na Figura 1.
[0032] Em uma modalidade, um módulo de monitor 114 pode ser implementado para se comunicar com os buffers do tipo primeiro a entrar, primeiro a sair (FIFO)(não ilustrado na Figura 1) implementados por vários componentes PCD 100 durante a operação, assim como com outros componentes do SoC 102, tal como a CPU 110 ou GPU 182, etc. O módulo de monitor 114 também pode, em algumas modalidades, determinar qual dentre os vários FIFOs será redimensionado, e em qual grau os FIFOs serão redimensionados, conforme descrito abaixo. Embora mostrado como um único componente no SoC 102, por uma questão de conveniência na Figura 1, o módulo de monitor 114 pode, em algumas modalidades, compreender múltiplos componentes, em que um, alguns ou todos os quais podem não estar situados no SoC 102. Não é necessário na presente revelação que o módulo de monitor 114 seja um componente ilustrado na Figura 1 e, em algumas modalidades, o módulo de monitor 114 pode ser implementado em software, tais como instruções executáveis, código e/ou parâmetros armazenados em uma memória 112.
[0033] Conforme ilustrado na Figura 1, um controlador de visor 129 e um controlador de tela sensível ao toque 130 são acoplados à CPU 110. Uma tela sensível ao toque 132 externa ao SoC 102 é acoplada ao controlador de visor 131 e ao controlador de tela sensível ao toque 130. Novamente, embora mostrados na Figura 1 como componentes únicos situados no SoC 102, tanto o controlador de visor 131 como o controlador de tela sensível ao toque 30 podem compreender múltiplos componentes, um ou mais dos quais não podem se situar no SoC 102, em algumas modalidades
[0034] O PCD 100 pode incluir adicionalmente um codificador de vídeo 134, por exemplo, um codificador de Linha de Fase Alternada (“PAL”), um codificador sequencial couleur avec memoire (“SECAM”), um codificador do comitê de sistema nacional de televisão (“NTSC”) ou qualquer outro tipo de codificador de vídeo 134. O codificador de vídeo 134 é acoplado à CPU 110. Um amplificador de vídeo 136 é acoplado ao codificador de vídeo 134 e à tela sensível ao toque 132. Uma porta de vídeo 138 é acoplada ao amplificador de vídeo 136. Conforme mostrado na Figura 1, um controlador de barramento serial universal (“USB”) 140 é acoplado à CPU 110. Além disso, uma porta USB 142 é acoplada ao controlador USB 140. Uma memória 112 e um cartão de módulo de identidade de assinante (SIM) 146 também podem ser acoplados à CPU 110. Ademais, conforme mostrado na Figura 1, uma câmera digital 148 pode ser acoplada à CPU 110 do SoC 102. Em um aspecto exemplificativo, a câmera digital 148 é uma câmera de dispositivo de carga acoplada (“CCD”) ou uma câmera de semicondutor de óxido metálico complementar (“CMOS”).
[0035] Conforme adicionalmente ilustrado na Figura 1, um CODEC de áudio estéreo 150 pode ser acoplado ao processador de sinal analógico 126. Além disso, um amplificador de áudio 152 pode ser acoplado ao CODEC de áudio estéreo 150. Em um aspecto exemplificativo, um primeiro alto-falante estéreo 154 e um segundo alto-falante estéreo 156 são acoplados ao amplificador de áudio 152. A Figura 1 mostra que um amplificador de microfone 158 também pode ser acoplado ao CODEC de áudio estéreo 150. Adicionalmente, um microfone 160 pode ser acoplado ao amplificador de microfone 158. Em um aspecto particular, um sintonizador de rádio de modulação de frequência (“FM”) 162 pode ser acoplado ao CODEC de áudio estéreo 150. Além disso, uma antena FM 164 é acoplada ao sintonizador de rádio FM 162. Ademais, fones de ouvido estéreo 166 podem ser acoplados ao CODEC de áudio estéreo 150
[0036] A Figura 1 indica adicionalmente que um transceptor de radiofrequência (“RF”) 168 pode ser acoplado ao processador de sinal analógico 128. Um comutador RF 170 pode ser acoplado ao transceptor RF 168 e a uma antena RF
172. Conforme mostrado na Figura 1, um teclado numérico 174 pode ser acoplado ao processador de sinal analógico 128. Além disso, um monofone de ouvido com um microfone 176 pode ser acoplado ao processador de sinal analógico 128. Ademais, um dispositivo vibrador 178 pode ser acoplado ao processador de sinal analógico 128. A Figura 1 também mostra que uma fonte de alimentação 188, por exemplo uma bateria, é acoplada ao SoC 102 através do PMIC 180. Em um aspecto particular, a fonte de alimentação inclui uma bateria CC recarregável ou uma fonte de alimentação CC que é derivada de um transformador de corrente alternada (“CA”) em CC que é conectado a uma fonte de energia CA
[0037] A CPU 110 também pode ser acoplada a um ou mais sensores térmicos no chip internos 157A, 157B, assim como um ou mais sensores térmicos fora do chip externos 157C. Os sensores térmicos no chip 157A podem compreender um ou mais sensores de temperatura proporcionais à temperatura absoluta (“PTAT”) que se baseiam na estrutura PNP vertical e são geralmente dedicados a circuitos de integração em escala muito larga (“VLSI”) de semicondutor de óxido metálico complementar (“CMOS”). Os sensores térmicos fora do chip 157C podem compreender um ou mais termistores ou outros sensores desejados. Os sensores térmicos 157C podem produzir uma queda de tensão que é convertida em sinais digitais com um controlador de conversor analógico-digital (“ADC”) 103. Entretanto, outros tipos de sensores térmicos 157A, 157B, 157C podem ser empregados sem se que se afaste do escopo da invenção.
[0038] Na modalidade ilustrada na Figura 1, a tela sensível ao toque 132, a porta de vídeo 138, a porta USB 142, a câmera 148, a primeiro alto-falante estéreo 154, o segundo alto-falante estéreo 156, o microfone 160, a antena FM 164, os fones de ouvido estéreos 166, o comutador RF 170, a antena RF 172, o teclado numérico 174, o monofone de ouvido 176, o vibrador 178, a fonte de alimentação 188, o PMIC 180 e os sensores térmicos 157C são externos ao SoC 102
[0039] Conforme discutido acima, em um aspecto particular, uma ou mais das etapas de método descritas no presente documento podem ser implementadas por instruções executáveis, código e/ou parâmetros armazenados em uma memória 112 que podem formar o módulo de monitor 114, ou outros componentes discutidos no presente documento. As instruções que formam o módulo de monitor 114 podem ser executadas pela CPU 110, pelo processador de sinal analógico 128 ou outro processador, além do controlador ADC 103, para realizar os métodos descritos no presente documento. Ademais, a CPU 110, processador de sinal analógico 128, a memória 112, as instruções armazenadas na mesma ou uma combinação dos mesmos podem servir como um meio para realizar uma ou mais das etapas do método descrito no presente documento
[0040] A Figura 2 é um diagrama de blocos que mostra componentes exemplificativos em um SoC 102 que pode ser implementado em um PCD 100. O PCD 100, em uma modalidade, pode ser sob a forma de um telefone sem fio. A Figura 2 serve para propósitos ilustrativos, e mostra uma disposição exemplificativa de determinados componentes de hardware do PCD exemplificativo 100, sendo que os componentes de hardware são mostrados na forma de bloco e eletricamente acoplados entre si por meio de um caminho de comunicação, tal como uma interconexão ou barramento 270
[0041] O barramento 270 pode incluir múltiplos caminhos de comunicação através de uma ou mais conexões com fio ou sem fio. Dependendo da implementação, o barramento 270 pode incluir elementos adicionais, que são omitidos por uma questão de simplicidade, tais como controladores, drivers, repetidores e receptores para permitir comunicações. Ademais, o barramento 270 pode incluir conexões de endereço, controle e/ou dados para permitir comunicações adequadas entre os vários componentes ilustrados na Figura 2 e/ou componentes adicionais do SoC 102 e/ou PCD 100, se for desejado. Em uma modalidade, o barramento 270 pode compreender um barramento de rede no chip (NOC) 270
[0042] Conforme ilustrado na Figura 2, o SoC 102 pode incluir múltiplos processadores ou núcleos, incluindo CPU_0 222, CPU_1 224, CPU_2 226 e CPU_3 228 (coletivamente CPUs 222-228). Embora quatro CPUs 222-228 sejam ilustradas, em outras modalidades, o SoC 102 pode ter mais ou menos CPUs 222-228 e/ou as CPUs 222-228 podem ser dispostas de modo diferente do ilustrado na Figura 2. Adicionalmente, o SoC 102 pode ter uma arquitetura diferente para os componentes de processamento do ilustrado na Figura 2, tal como uma arquitetura “big — little” com cada uma das CPUs 222-228 compreendendo dois componentes de processamento separados de tamanhos diferentes. A presente revelação é igualmente aplicável a todas tais variações de arquitetura.
[0043] Conforme também ilustrado na Figura 2, o SoC 102 também pode compreender uma GPU separada 282 para processar ou executar cargas úteis relacionadas a gráficos, tal como renderizar informações gráficas para um visor de usuário 232. De modo similar, o SoC 102 pode incluir um codificador de vídeo 234 para codificar ou decodificar arquivos de vídeo. Embora não ilustrado, o SoC 102 também pode incluir um codificador de áudio separado para codificar ou decodificar arquivos de áudio e/ou as porções de áudio de arquivos de vídeo. O SoC 102 também pode incluir uma ou mais câmeras ilustradas como câmera 248 na Figura 2. De modo similar, SoC 102 pode incluir um ou mais componentes para permitir comunicações entre o PCD 100 e outros dispositivos e sistemas de computador. Tais componentes de comunicação podem incluir modem 260 e/ou LAN de longa distância (WLAN) 262
[0044] O SoC 102 também irá incluir um ou mais subsistemas 240 para suportar os componentes listados acima e/ou para realizar outra funcionalidade para o SoC 102 ou PCD 100. Conforme será entendido, esses subsistemas (ilustrados por uma questão de conveniência como um único subsistema 240) podem incluir vários componentes ou lógica configurados para trabalhar em conjunto com ou para trabalhar independentemente dos componentes identificados acima do SoC 102. Por exemplo, em uma modalidade, o subsistema 240 pode compreender um subsistema de áudio de baixa potência (LPASS) para manipular dados de áudio para SoC 102. De modo similar, em uma modalidade, o subsistema 240 pode incluir um subsistema de vídeo para manipular dados de vídeo para o SoC 102, tais como dados de vídeo a serem codificados pelo codificador de vídeo 234 e/ou dados de vídeo a serem renderizados pela GPU 282. O SoC 102 pode, em várias modalidades, incluir mais subsistemas que o subsistema 240 ilustrado.
[0045] Finalmente, na modalidade ilustrada na Figura 2, o SoC 102 inclui um ou mais buffers (250A-2501). Os buffers 250A-250I permitem armazenamento em buffer de dados antes de serem lidos pelo respectivo componente ou subsistema ilustrado na Figura 2 ao qual cada buffer 250A- 2501 é acoplado. Conforme será entendido, os buffers 250A- 2501 podem ser implementados como qualquer estrutura de buffer ou memória desejada (por exemplo, qualquer tipo de memória diferente de SRAIVI e DRAM), tal como, buffer do tipo primeiro a entrar, primeiro a sair (FIFO). Por uma questão de conveniência, os buffers são ilustrados como FIFOs 250A-2501 nas modalidades exemplificativas discutidas abaixo. Entretanto, a discussão abaixo e a presente revelação são igualmente aplicáveis a qualquer tipo de armazenamento ou memória do método usado para armazenamento em buffer. Conforme também será entendido, a representação de FIFOs separados 250A-2501 na Figura 2 é ilustrativa. Os FIFOs 250A-250I, em outras modalidades, podem não ser buffers ou componentes fisicamente separados do SoC 102. Por exemplo, FIFOs 250A-2501 podem não ser separados dos componentes, mas, em vez disso, fazer parte do componente para o qual um FIFO 250A-2501 fornece armazenamento em buffer. Em tais modalidades, um buffer particular, tal como FIFO 250A, pode ser considerado parte do componente (subsistema 240) para o qual o FIFO 250A fornece armazenamento em buffer - isto é, dentro da caixa que representa o subsistema 240 na Figura 2. Em outras modalidades FIFOs 250A-2501 podem ser implementados como uma série de registros de memória ou uma série de endereços em uma única memória, com cada série de registros ou endereços de memória designados para atuar como um FIFO 250A-2501 para um componente particular.
[0046] Adicionalmente, conforme ilustrado pelo FIFO 250C e pelo FIFO 250D, um ou mais componentes do SoC 102 podem compartilhar um buffer, embora em algumas modalidades, cada componente tenha seu próprio buffer. Conforme será entendido, o SoC 102 pode ter mais ou menos componentes e subsistemas que aqueles ilustrados na Figura
2 e/ou a disposição espacial dos componentes ou subsistemas pode ser disposta de modo diferente da disposição ilustrativa mostrada na Figura 2.
[0047] Voltando à Figura 3, um diagrama de blocos que mostra aspectos de uma modalidade exemplificativa de um sistema 300 para dimensionamento de buffer dinâmico FIFO é ilustrado. O sistema 300 pode ser implementado em um SoC 102 que tem os componentes exemplificativos 200 de SoC 102 ilustrados na Figura 2. Adicionalmente, o SoC 102 do sistema 300 pode ser o SoC 102 do PCD 100 ilustrado na Figura 1. Conforme ilustrado na Figura 3, o SoC 102 inclui uma CPU 110 com múltiplos componentes de processamento, tais como núcleos 222, 224, 230, que podem corresponder, em uma modalidade, às CPUs 222-228 da Figura 2. A CPU 110 é eletricamente acoplada a um caminho de comunicação, tal como, uma interconexão ou barramento 270, tal como o barramento 270 descrito acima para a Figura 2. O SoC 102 também pode incluir GPU 282, modem 260 e câmera 248 eletricamente acoplados ao barramento 270
[0048] O sistema 300 inclui um controlador de memória 308 em comunicação com o barramento 270, sendo que o controlador de memória 308 é configurado para controlar as memórias ou acoplado ao SoC 102, incluindo a memória de sistema 112 (Figura 1) e determinados aspectos dos FIFOs 250A-2501 (Figura 2. Embora não ilustrado, o sistema 300 também pode incluir vários drivers para os componentes do SoC 102 contendo a informações de configuração e operação sobre os componentes do SoC 102. Tais drivers podem ser distribuídos entre e/ou colocalizados com os vários componentes aos quais um driver particular se aplica.
[0049] O sistema 300 também inclui um módulo de monitor 114 em comunicação com o barramento 270. Em uma modalidade, o módulo de monitor 114 pode operar para determinar quando redimensionar um ou mais FIFO 250A-250I (Figura 2) e/ou para determinar a quantidade que um ou mais FIFOs 250A-2501 serão redimensionados. Embora mostrado como um único componente no SoC 102 na Figura 2, o módulo de monitor 114, em algumas modalidades, pode compreender múltiplos componentes e/ou a funcionalidade do módulo de monitor 114 discutida no presente documento pode ser distribuída entre vários componentes do SoC 102. Em outras modalidades, o módulo de monitor 114 pode não ser um componente, conforme ilustrado na Figura 2, mas, em vez disso, o módulo de monitor 114 pode ser implementado em software, tais como instruções executáveis, código e/ou parâmetros armazenados em uma memória do SoC 102
[0050] Independentemente de como implementado, para efetuar as determinações sobre quando e/ou como redimensionar os buffers, o módulo de monitor 114 pode receber ou obter informações a partir de vários componentes para determinar ou entender um caso de uso para o PCD 100. O módulo de monitor 114 pode receber ou obter de modo similar informações de vários componentes para determinar ou entender uma alteração de um primeiro caso de uso para um segundo caso de uso, que poderia justificar o redimensionamento de um ou mais buffers. Em uma modalidade, um caso de uso é um modo ou maneira de categorizar como o PCD 100 está sendo usado. Um caso de uso fornece informações sobre (ou pode ser definido por) um nível de atividade, ou nível de atividade esperado de vários componentes do PCD 100 ou SoC 102 durante aquele caso de uso
[0051] Os casos de uso exemplificativos podem incluir jogos, reprodução de vídeo, comunicação (tal como mensagem de texto ou uma chamada telefônica), atividade computacional, câmera (tal como, tirar fotos); tomada de vídeo ((que pode ser um subconjunto do caso de uso da câmera ou um caso de uso separado); música (que pode incluir reprodução de arquivos de música salvos no PCD 100 e/ou transmissão contínua de música para o PCD 100); navegação na internet; back-up do PCD 100; inicialização (tal como quando o PCD 100 é ligado após ser desligado); padrão (que pode ser um caso de uso padrão quando outros casos de uso não se aplicam); ou outros casos de uso. Adicionalmente, em algumas modalidades, novos casos de uso podem ser definidos ou criados com base em como o PCD 100 é usado ao longo de um período de tempo. Em tais modalidades, o novo (ou novos) caso de uso pode ser definido ou criado pelo módulo de monitor 114
[0052] A determinação de qual caso de uso se aplica ao PCD 100 em um tempo particular pode se basear no conhecimento de ou informações sobre os aplicativos ou programas que estão sendo executados pelo PCD 100, ou que estão prestes a serem executados pelo PCD 100. Este conhecimento ou informações podem ser diretos (tal como o software entender quais aplicativos, instruções ou código estão executando no SoC 102) ou podem ser inferidos (tal como com base nas entradas de usuário). Em algumas implementações, a determinação de qual caso de uso se aplica ao PCD 100 em um tempo particular pode, de maneira adicional ou, em vez disso, se basear nas informações de estado atual sobre o PCD 100, tal como o nível de atividade de um ou mais componentes no PCD 100 ou SoC 102 (tal como GPU 282, câmera 248, modem 260, codificador de vídeo 232, etc.). Em ainda outras implementações, o caso de uso que se aplica ao PCD 100 em um tempo particular pode se basear em um evento de disparo particular, tal como reiniciar o PCD 100 ou SoC 102 a partir de um estado desligado.
[0053] Independentemente de como determinado ou entendido, cada caso de uso será associado a um nível de atividade esperado ou antecipado para um ou mais componentes do SoC 102 e/ou PCD 100. Por exemplo, um caso de uso de “câmera” pode ser quando a câmera e/ou um aplicativo de câmera foi ativado pelo usuário do PCD 100. Para tal caso de uso, pode-se esperar que a câmera (tal como a câmera 248 da Figura 2 e Figura 3) e o visor (tal como o visor 232 da Figura 2), e quaisquer subsistemas de suporte, estejam ativos. Pode-se esperar também que para o caso de uso de “câmera”, o modem 260, GPU 282, codificador de vídeo 234, assim como outros componentes do SoC 102 (Figura 2) podem não estar ativos, ou ser menos ativos que em outros casos de uso.
[0054] A título de outro exemplo, um caso de uso de “comunicação” pode ser quando o modem e/ou um aplicativo de comunicação que usa o modem, foi ativado pelo usuário do PDC 100. A Figura 4A é o diagrama de blocos da Figura 2, no qual um exemplo da operação de um sistema e método para dimensionamento de buffer dinâmico FIFO é ilustrado para um caso de uso de “comunicação”
exemplificativo. Para tal caso de uso, pode-se esperar que o modem 260 e quaisquer subsistemas de suporte estejam ativos, conforme representado pela região sombreada da Figura 4A. O buffer para tais componentes ativos como o modem 260 (FIFO 250H) serão dimensionados para acomodar o nível de atividade esperado — isto é, profundidade de buffer relativamente maior.
[0055] Em contraste, pode-se esperar que os componentes restantes do SoC 102 (não sombreado) não estejam ativos, ou estejam menos ativos para esse caso de uso “comunicação”. Os buffers para tais componentes inativos como a câmera 248 (FIFO 250G) e a GPU 282 (FIFO 250F) serão dimensionados para acomodar a inatividade esperada — isto é, profundidades de buffer menores. Desse modo, para os componentes que se espera que sejam menos ativos para esse caso de uso, o tamanho ou profundidade dos buffers acoplados a esses componentes pode ser reduzido, impedindo ou reduzindo o vazamento de energia sem causar impacto no desempenho do PCD.
[0056] Observe que, para o caso de uso de “comunicação”, dependendo do tipo de comunicação, a largura de banda total do modem 260 pode não ser usada. Será entendido que mesmo que a largura de banda total do 260 não seja usada, o modem 260 pode ser síncrono com outros componentes (por exemplo, com um controlador de memória, não ilustrado na Figura 4A) para qualidade de propósitos de serviço, para impedir latência etc. Em outras palavras, o modem 260 pode ser forçado a operar a uma frequência mais alta mesmo que o modem 260 esteja usando toda sua largura de banda.
[0057] Em tais casos de uso, técnicas de consumo de energia tradicionais que controlar a tensão ou frequência do modem 260 não serão eficazes, uma vez que o modem 260 é síncrono com outros componentes e/ou compartilha um trilho de alimentação com outros componentes. Nesse caso, o FIFO 250H pode ser dimensionado relativamente grande, mas ainda pode ser menor que o tamanho ou profundidade total (por exemplo, reduzido em 25%). Tal dimensionamento dinâmico do FIFO 250H permite o que o mesmo acomode o nível de atividade esperado do modem 260 enquanto ainda proporciona economia de energia. Dessa maneira, o dimensionamento dinâmico do FIFO 250H pode proporcionar economia de energia sem causar impacto no desempenho do SoC 102 ou PCD 100, onde os métodos de redução de energia baseados em tensão/frequência tradicionais podem ser não aplicáveis ou ineficazes.
[0058] Ainda outro exemplo é um caso de uso de “jogos”, em que um usuário está executando um aplicativo de jogo no PCD 100. A Figura 4B é o diagrama de blocos da Figura 2, no qual um exemplo da operação de um sistema e método para dimensionamento de buffer dinâmico FIFO é ilustrado para um caso de uso de “jogos” exemplificativo. Para tal caso de uso, pode-se esperar que a GPU 282 e o visor 232 sejam os mais ativos conforme refletidos pela região sombreada da Figura 2C. Os buffers para esses componentes ativos como a GPU 282 (FIFO 250E) e o visor 232 (FIFO 250F) serão dimensionados para acomodar o nível de atividade esperado — isto é, profundidade de buffer relativamente maior.
[0059] Para tal caso de uso de “jogos”, pode-
se esperar que o controlador de memória 308, a CPU 222-228, o modem 260 e o codificador de vídeo 234 estejam moderadamente ativos. Os buffers para esses componentes moderadamente ativos (FIFOs 250C, 250D, 250H) serão dimensionados para acomodar o nível de atividade moderado esperado — isto é, a uma profundidade de buffer menor que comparação com os componentes ativos. Finalmente, no caso de uso de “jogos”, pode-se esperar que a câmera 248 esteja inativa. Os buffers para tais componentes inativos (FIFO 250G) serão dimensionados para acomodar a inatividade esperada — isto é, a uma profundidade de buffer ainda menor em comparação com os componentes moderados e ativos. Tal dimensionamento dinâmico de FIFOs 250C, 205F, 250H, e/ou 250G H — e, em particular, a redução de tamanho ou profundidade de buffer para componentes inativos ou menos ativos do SoC 102 — permite a prevenção ou redução de vazamento de energia sem causar impacto no desempenho do PCD 100 ou SoC 102
[0060] Conforme ilustrado por esse exemplo de caso de uso de “jogos” da Figura 4B, o nível de atividade de vários componentes do SoC 102 pode não ser necessariamente categorizado como ativo/inativo. Em vez disso, os níveis de atividade para um ou mais casos de uso podem ser relativos, ou variados, com múltiplos níveis ou graus de atividade dependendo do componente. Observe que nesse exemplo de caso de uso de “jogos”, os componentes menos ativos ou inativos também podem ter sua tensão e/ou frequência reduzida como parte de um método de economia ou controle de energia tradicional. O dimensionamento dinâmico dos buffers nesse exemplo de caso de uso de “jogos”
proporciona economia de energia/redução de energia adicional além de economias de energia/reduções de energia disponíveis a partir de métodos de redução de energia baseados em tensão/frequência tradicionais.
[0061] Para implementações ou casos de uso com graus relativos ou variados de atividade dos componentes, as informações ou dados sobre o estado ou nível de atividade e/ou tamanho de buffer podem ser armazenadas ou contidas no módulo de monitor 114 ou em uma memória acessada pelo módulo de monitor 114 ou algum outro componente de SoC 102. Em uma modalidade, tais informações podem ser armazenadas em uma tabela, tal como tabela de estado 500A da Figura 5A. A tabela de estado 500A pode incluir níveis ou estados, tais como F0, F1, F2, F3 etc. que representam um nível ou estado de atividade esperado para cada componente do SoC 102 para cada caso de uso. A tabela de estado 500A é ilustrativa e, em várias modalidades, pode incluir mais ou menos casos de uso, mais ou menos componentes e/ou mais ou menos níveis/estados de atividade.
[0062] Em algumas modalidades, a tabela de estado 500A pode ser fixa, enquanto em outras modalidades, o módulo de monitor 114 ou outro componente pode ter a capacidade de modificar a tabela de estado 500A para alterar um ou mais dos valores de nível de atividade, adicionar ou excluir casos de uso, adicionar ou excluir componentes, etc. Adicionalmente, será entendido que, em vez de uma única tabela de estado 500A, conforme ilustrado na Figura 5A, as informações na tabela de estado 500A, em vez disso, podem ser distribuídas em múltiplas tabelas diferentes, tal como uma tabela de estado individual (não mostrada) para cada componente do SoC 102. A tabela de estado 500A pode ser uma tabela de pesquisa. A tabela de estado 500A pode ser armazenada ou contida no módulo de monitor 114 em uma modalidade, ou pode ser armazenada em uma memória e acessada pelo módulo de monitor 114, tal como quando o módulo de monitor 114 é implementado em software.
[0063] Além disso, ou em vez disso, as informações sobre o caso de uso, o módulo de monitor 114 pode receber ou obter informações a partir dos próprios buffers (tais como FIFOs 250A-250I da Figura 2) que podem indicar que o buffer (ou buffers) precisa ser redimensionado, ou que pode ser usado na determinação para redimensionar um ou mais buffers. Por exemplo, quando um FIFO 250A-250I começa ser preenchido com dados, ou contém dados acima de nível limite, o FIFO 250A-250I pode enviar um sinal que indica que está ficando sem espaço, cujo sinal pode ser recebido pelo módulo de monitor 114
[0064] Voltando à Figura 3, como parte da determinação ou entendimento do caso de uso, ou como parte de uma determinação separada após o caso de uso ser entendido, o módulo de monitor 114 pode conter ou pode receber ou obter informações para determinar uma quantidade para redimensionar um ou mais buffers. Por exemplo, dependendo de um nível de atividade ou nível ou “estado” de atividade esperado de um componente, para um caso de uso particular, o módulo de monitor 114 pode determinar uma quantidade para redimensionar o buffer para aquele componente.
[0065] Em uma modalidade, tal determinação pode ser binária — isto é, se o componente estiver “ativo” dimensiona o buffer na profundidade “A” e se o componente estiver “inativo” dimensiona o buffer na profundidade “B”. Em algumas implementações dessa modalidade, as profundidades “A” e “B” podem ser um valor fixo para cada componente do SoC 102 — em outras palavras, todo componente ativo tem seu buffer redimensionado na profundidade “A” e todo componente inativo tem seu redimensionado na profundidade “B”, em que os valores de “A” e “B” são iguais para todos os componentes. Em tais implementações, o valor de “B” pode ser uma fração de “A”, tal como 50% da profundidade “A”. Em outras implementações dessa modalidade, os valores de “A” e “B” podem variar de componente para componente.
[0066] Em uma modalidade diferente, a determinação da quantidade para redimensionar o buffer pode não ser binária — isto é, a quantidade do buffer que é redimensionada pode depender do nível de atividade relativo do componente. Em tais modalidades, a relação entre o nível de atividade e o tamanho de buffer pode ser armazenada em uma tabela, tal como uma tabela de pesquisa (LUT) 500B da Figura 5B. Conforme ilustrado na LUT exemplificativa 500 da Figura 5B, cada nível de atividade ou estado de um componente para um caso de uso resulta em uma redução diferente no tamanho de buffer (tal como redução em um ou mais more dos FIFOs 250A-250I da Figura 2.
[0067] Em algumas modalidades, as informações de tamanho de buffer para todos os componentes do SoC 102 podem ser orientadas por uma única tabela, tal como a LUT 500B. Em outras modalidades, cada componente do SoC 102 pode ter um LUT individual 500B, e os valores de redução de tamanho de buffer podem variar para cada componente. Por exemplo, o estado F1 para câmera 248 pode resultar em uma redução de 50% no tamanho de buffer, enquanto o estado F1 para a GPU 282 pode resultar em uma redução de 25%, conforme ilustrado na LUT 500B. A LUT 500B pode ser armazenada no módulo de monitor 114, ou pode ser armazenada em uma memória e acessada pelo módulo de monitor 114, tal como quando o módulo de monitor 114 é implementado em software. Em algumas modalidades, a LUT 500B pode ser fixa, enquanto em outras modalidades o módulo de monitor 114 ou outro componente pode ter a capacidade de modificar a LUT 500B para adicionar ou excluir níveis de atividade, alterar os valores de redução de tamanho de buffer para um ou mais níveis de atividade etc.
[0068] Voltando à Figura 6, um diagrama de blocos que ilustra componentes exemplificativos de um SoC 102 durante a operação de um sistema e método para dimensionamento de buffer dinâmico FIFO para outro caso de uso de “jogos”. Para o caso de uso de “jogos” da Figura 6, espera-se que o controlador de memória 308, GPU 282 e CPU 222 sejam os componentes mais ativos, conforme refletido pela região sombreada da Figura 6. Os buffers para esses componentes FIFO ativos 250E (para GPU 282), FIFO 250D (para CPU 222) e FIFO 250J (para controlador de memória 308) serão dimensionados para acomodar o nível de atividade esperado — isto é, profundidade de buffer relativamente maior. Isso é refletido na Figura 6, com a indicação que o FIFO 250D, 250E e 250J será dimensionado para o nível de atividade F0. Conforme indicado na LUT 500B da Figura 5B, o nível de atividade F0 para esse exemplo corresponde a um tamanho de redução de buffer de 0% - isto é, um buffer dimensionado total/máximo.
[0069] Continuando com esse exemplo de caso de uso de “jogos”, espera-se que o controlador de memória 308 seja o próximo componente mais ativo. O buffer FIFO 250H para o modem será dimensionado para acomodar esse nível de atividade esperado, conforme refletido na Figura 6, com a indicação de que o FIFO 250H será dimensionado para o nível de atividade F1. Conforme indicado na LUT 500B da Figura 5B, o nível de atividade F1 para esse exemplo corresponde a um tamanho de redução de buffer de 25% - isto é, um tamanho de buffer ligeiramente reduzido.
[0070] De modo similar, espera-se que a câmera 248 seja ainda menos ativa para esse caso de uso de “jogos” e o FIFO 250G para a câmera 248 na Figura 6 é dimensionado para o nível de atividade F2. O nível de atividade F2 para esse exemplo corresponde a um tamanho de redução de buffer de 50% - isto é, uma profundidade de buffer menor que para o estado F0 ou F1. A CPU 222-228, modem 260 e codificador de vídeo 234 serão moderadamente ativos. Finalmente, espera-se que o codificador de vídeo 234 seja o componente menos ativo nesse caso de uso exemplificativo e o FIFO 250B para o codificador de vídeo 234 seja dimensionado para o nível de atividade F3 que corresponde a uma redução de 75% no tamanho ou profundidade de buffer.
[0071] Desse modo, para os componentes que se espera que sejam menos ativos para esse caso de uso, o tamanho ou profundidade dos buffers acoplados a esses componentes pode ser reduzido, impedindo ou reduzindo o vazamento de energia sem causar impacto no desempenho do PCD. Novamente, o dimensionamento dinâmico dos buffers nesse exemplo de caso de uso de “jogos” adicional proporciona economia de energia/redução de energia adicional além das economias de energia/reduções de energia que podem estar disponíveis a partir de métodos de redução de energia baseados em tensão/frequência tradicionais aplicados aos componentes inativos do SoC 102.
[0072] A Figura 6 fornece um exemplo ilustrativo de como buffers podem ser dinamicamente alterados com base no caso de uso, ou uma alteração no caso de uso. Conforme será entendido, diferentes casos de uso podem resultar nos buffers sendo dimensionados de modo diferente, conforme indicado na Figura 6. Adicionalmente, em algumas modalidades, uma designação do mesmo estado ou nível de atividade para os buffers de dois componentes diferentes (tais como F0 para FIFO 250J do controlador de memória 3078 e FIFO 250E para GPU 282) pode não indicar que os buffers são dimensionados iguais. Em outras palavras, o estado F0 para o buffer de controlador de memória 308 (FIFO 250J) pode corresponder a um tamanho ou profundidade de buffer, enquanto o estado F0 para o buffer de GPU 282 (FIFO 250E) pode corresponder a um tamanho ou profundidade diferente.
[0073] Voltando à Figura 7A, um diagrama de blocos de aspectos de um FIFO exemplificativo 700A com um primeiro tamanho ou profundidade. FIFO 700A pode ser um buffer, tais como os FIFOs 250A-250J discutidos acima. No exemplo da Figura 7A, FIFO 700A é o tamanho/profundidade total/máximo de buffer, e é compreendido de uma pluralidade de registros ou endereços de memória (chamados no presente documento de porções 702A-702F). Conforme ilustrado na Figura 7A, FIFO 700A tem um lado de gravação 704 no qual os dados podem colocados para armazenamento em buffer e um lado de leitura 706 a partir do qual o componente acoplado ao FIFO 770A pode ler os dados armazenados em buffer. Adicionalmente, há um ponto intermediário 708 que reflete o FIFO “intermediário” 770A — isto é, o local em que o número de porções 702A-702C em um lado do ponto intermediário 708 é igual ao número de porções 702D-702F no outro lado do ponto intermediário 708
[0074] A Figura 7B ilustra o FIFO 700A da Figura 7B após o mesmo ter sido reduzido a um segundo tamanho ou profundidade (FIFO 700B). Conforme indicado na Figura 7B, um mecanismo para reduzir o tamanho ou profundidade de um buffer de acordo com os sistemas e métodos revelados no presente documento consiste em aguardar até tanto o ponteiro de gravação 710 como o ponteiro de leitura 712 estarem do mesmo lado do ponto intermediário 708 e, então desligar ou bloquear a energia de uma ou mais porções 702D-702E no outro lado do ponto intermediário 708
[0075] No exemplo da Figura 7B, uma redução de 50% no tamanho ou profundidade de buffer é realizado ao aguardar até que o ponteiro de gravação 710 e o ponteiro de leitura 712 estejam no lado esquerdo ou de leitura 706 do ponto intermediário 708. Um único comutador de alimentação pode, então, ser operado para desligar porções 702D-702F (isto é, a metade direita do FIFO 700B) para reduzir FIFO 770B à metade do tamanho ou profundidade do FIFO 770A da
Figura 7A, conforme indicado pela hachura nas porções 702D- 702F. Conforme será entendido, um mecanismo similar pode ser usado para obter qualquer redução no tamanho ou profundidade de buffer desejado (por exemplo 25%, 50%, 75%, 85%, etc.). Conforme também será entendido, em um ponto posterior no tempo que o FIFO 770B pode ser retornado para o maior tamanho pelo comutador de alimentação que opera para voltar às porções 702D-702F
[0076] Em outras implementações, o mesmo FIFO 700B também pode ser reduzido a tamanhos ou profundidades variáveis com a implementação ou adição de comutadores de alimentação ou portas de alimentação. Por exemplo, um primeiro comutador de alimentação para desligar uma primeira porção 702F pode resultar em uma redução no tamanho ou profundidade de buffer de 25% para FIFO 700B. Um segundo comutador de alimentação para desligar também uma segunda porção 702E pode resultar em uma redução no tamanho ou profundidade de buffer de 50% para FIFO 700B. Em um ponto posterior no tempo FIFO 770B pode ser retornado para um tamanho maior pelo comutador (ou comutadores) de alimentação que operam para retornar uma ou mais porções 702D-702F para aumentar FIFO 770B ao tamanho ou profundidade desejado.
[0077] É desejável, em algumas modalidades, fornecer múltiplos comutadores de alimentação para permitir reduções variáveis no tamanho ou profundidade de buffer de um FIFO particular 700B. Em outras modalidades, os custos adicionais, energia, etc., de cada comutador de alimentação e/ou conjunto de circuitos de controle necessário para controlar de modo variável o tamanho ou profundidade de buffer de um FIFO particular 700B podem não ser garantidos. Em tais modalidades, um único comutador de alimentação para permitir um único tamanho de redução (tal como uma redução de 50%, por exemplo) pode ser mais desejável. Caso tal controle variável de tamanho ou profundidade de buffer seja desejável, pode depender de uma variedade de fatores, incluindo o componente do SoC 102 para o qual um buffer será usado, a economia de energia esperada da redução do tamanho do buffer particular etc. As Figuras 7A a 7B ilustram um mecanismo para ajustar dinamicamente o tamanho.
[0078] A Figura 8 é um fluxograma lógico que ilustra a operação de um método exemplificativo 800 para controlar dinamicamente o tamanho de buffer em um dispositivo de computação. O método 800 começa no bloco 802 com uma determinação de um primeiro caso de uso para um dispositivo de computação, tal como o PCD 100. O primeiro caso de uso pode ser um dentre uma pluralidade de casos de uso. A pluralidade de casos de uso pode ser um conjunto predefinido e ajustado, em algumas modalidades, enquanto em outras modalidades, a pluralidade de casos de uso pode mudar ou ser alterada ao longo do tempo. A determinação do bloco 802 pode ser a identificação de um caso de uso particular que se aplica a como o PCD 100 está sendo atualmente operado. Em algumas modalidades, a determinação do bloco 802 pode ser de um caso de uso padrão no caso em que a operação atual do PCD não se adequa a outros casos de uso predefinidos.
[0079] A determinação do primeiro caso de uso no bloco 802 pode ser efetuada pelo módulo de monitor 114 em uma modalidade (consulte a Figura 3), e o módulo de monitor 114 em tais modalidades pode receber ou obter informações a partir de vários componentes para determinar ou entender qual caso de uso se aplica a como o PCD 100 está sendo atualmente usado. Tais informações recebidas podem incluir o nível de atividade presente de um ou mais componentes no PCD 100 ou SoC 102 (tais como GPU 282, câmera 248, modem 260, codificador de vídeo 232, etc. da Figura 2 e/ou Figura 3.
[0080] A determinação no bloco 802, de maneira adicional ou alternativa, pode se basear no conhecimento de ou informações sobre os aplicativos ou programas que estão sendo executados pelo PCD 100, ou que estão prestes a serem executados pelo PCD 100. Tal conhecimento ou informações podem ser diretos (tal como o software entender quais aplicativos, instruções ou código estão executando no SoC 102) ou podem ser inferidos (tal como com base nas entradas de usuário). A determinação no bloco 802, de maneira adicional ou alternativa, também pode se basear em um evento de disparo, tal como reiniciar o PCD 100 ou SoC 102 a partir de um estado desligado.
[0081] O método 800 continua no bloco 804, onde as informações de tamanho ou profundidade de buffer para o primeiro caso de uso são obtidas. Os buffers podem ser os FIFOs 250A-250J discutidos acima para as Figuras 4A a 4B, e a Figura 6. Dependendo do caso de uso determinado no bloco 802, pode-se esperar que vários componentes de SoC 102 sejam mais ou menos ativos. No bloco 804, os valores para o tamanho ou profundidade de buffer para cada FIFO 250A-250J associado aos vários componentes do SoC 102 são obtidos ou determinados para o primeiro caso de uso.
[0082] Em algumas modalidades, a obtenção das informações de tamanho de buffer no bloco 804 podem compreender leitura das informações de tamanho de buffer a partir de uma ou mais tabelas. Por exemplo, um nível de estado ou atividade esperado para um ou mais componentes pode ser obtido para o caso de uso determinado a partir de uma tabela, tal como a tabela de estado 500A da Figura 5A. Conforme discutido acima, em vez de uma única tabela 500A, diferentes tabelas de estado (não mostrado) podem ser mantidas para cada componente do SoC 102, em algumas implementações. De maneira adicional ou alternativa, um valor de redução de tamanho para um ou mais buffers (cada buffer associado a um componente em uma modalidade) pode ser obtido a partir de uma tabela, tal como a LUT 500B da Figura 5B. Conforme será entendido, outros modos de obtenção de informações de tamanho ou profundidade de buffer para o primeiro caso de uso podem ser implementados em vez de tabelas. Adicionalmente, em algumas modalidades, o bloco 804 pode não ser uma etapa separada, mas, em vez disso, pode fazer parte da determinação do bloco 802
[0083] O método 800 continua no bloco 806 onde, com base no primeiro caso de uso determinado e nas informações de tamanho de buffer obtidas, um primeiro tamanho de buffer é ajustado para o buffer (ou buffers) associado a um ou mais componentes do dispositivo de computação. Os buffers podem ser os FIFOs 250A-250J discutidos acima para as Figuras 4A a 4B, e a Figura 6. Dependendo do caso de uso determinado no bloco 802, pode-se esperar que vários componentes de SoC 102 sejam mais ou menos ativos. No bloco 806, o tamanho ou profundidade de buffer para cada FIFO 250A-250J associado a vários componentes do SoC 102 é ajustado conforme necessário, de acordo com o caso de uso determinado e as informações de tamanho de buffer obtidas.
[0084] Em uma modalidade, isso pode incluir reduzir o tamanho ou profundidade de buffer de componentes que se espera que sejam menos ativos ou inativos e/ou aumentar o tamanho ou profundidade de buffer de componentes que se espera que sejam mais ativos. Conforme discutido acima, a quantidade de aumento ou diminuição de tamanho ou profundidade de buffer pode variar por componente e/ou por caso de uso. O ajuste de tamanho de buffer pode ser realizado por qualquer mecanismo desejado, tal como mecanismo discutido para as Figuras 7A a 7B acima. Adicionalmente, tal ajuste de tamanho de buffer pode ser realizado além de, ou em vez de, quaisquer outras estratégias de mitigação ou controle de energia que o PCD 100 ou SoC 102 estiver implementando.
[0085] No bloco 808, um segundo caso de uso, diferente do primeiro caso de uso, é determinado para o dispositivo de computação. Essa determinação do bloco 808 pode ser efetuada da mesma maneira que a determinação discutida acima para o bloco 802 em resposta à alteração de condições nos componentes do PCD 100 e/ou uma alteração em como o PCD 100 está sendo usado. A título de exemplo, o PCD 100 pode alterar de um caso de uso de “jogos” para um caso de uso de “comunicação”, tal como quando um uso para de jogar um jogo no PCD 100 para efetuar ou receber uma chamada telefônica no PCD 100. No bloco 808, essa alteração no caso de uso e/ou alteração na operação do PCD 100 é detectada ou determinada, tal como através do módulo de monitor 114. Conforme discutido acima, o módulo de monitor 114 pode ser implementado em software.
[0086] A determinação no bloco 808 pode ser efetuada com base nas informações de vários componentes para determinar ou entender que o uso/estado de PCD 100 foi alterado e para determinar qual caso se aplica a como o PCD 100 está sendo atualmente usado. Tais informações recebidas podem incluir o nível de atividade presente de um ou mais componentes no PCD 100 ou SoC 102 (tais como GPU 282, câmera 248, modem 260, codificador de vídeo 232, etc. da Figura 2 e/ou Figura 3. A determinação no bloco 808, de maneira adicional ou alternativa, pode se basear no conhecimento de ou informações sobre os aplicativos ou programas que estão sendo executados pelo PCD 100, que pararam de executar no PCD 100 e/ou que estão prestes a serem executados pelo PCD 100. Tal conhecimento ou informações podem ser diretos (tal como o software entender quais aplicativos, instruções ou código estão executando no SoC 102) ou podem ser inferidos (tal como com base nas entradas de usuário).
[0087] A determinação no bloco 808, de maneira adicional ou alternativa, também pode se basear em um evento de disparo, tal como reiniciar o PCD 100 ou SoC 102 a partir de um estado desligado anterior. Como o bloco 802 acima, a determinação do bloco 808 pode ser a identificação de um segundo caso de uso particular para como o PCD 100 está sendo atualmente operado diferente do primeiro caso de uso. Em algumas modalidades, a determinação do bloco 806 pode ser de um caso de uso padrão no caso em que a operação atual do PCD não se adequa a outros casos de uso predefinidos.
[0088] O método 800 continua no bloco 810, onde as informações de tamanho ou profundidade de buffer para o segundo caso de uso são obtidas. Os buffers podem ser os FIFOs 250A-250J discutidos acima para as Figuras 4A a 4B, e a Figura 6. Dependendo do segundo caso de uso determinado no bloco 808, pode-se esperar que vários componentes de SoC 102 sejam mais ou menos ativos do que eles eram para o primeiro caso de uso. No bloco 810, novos valores para o tamanho ou profundidade de buffer para cada FIFO 250A-250J associado aos vários componentes do SoC 102 são obtidos ou determinados para o segundo caso de uso. Espera-se que para uma ou mais dos buffers esses novos segundos valores para o tamanho ou profundidade de buffer possam ser diferentes dos primeiros valores para o tamanho ou profundidade de buffer obtido ou ajustado para o primeiro caso de uso
[0089] Em algumas modalidades, a obtenção das novas ou segundas informações de tamanho de buffer no bloco 810 pode compreender a leitura das informações de tamanho de buffer a partir de uma ou mais tabelas, tal como a tabela de estado 500A da Figura 5A e/ou LUT 500 da Figura 5B, conforme discutido para o bloco 804. Conforme será entendido, outros modos de obtenção de informações de tamanho ou profundidade de buffer para o segundo caso de uso podem ser implementados em vez de tabelas. Adicionalmente, em algumas modalidades, o bloco 810 pode não ser uma etapa separada, mas, em vez disso, pode fazer parte da determinação do bloco 808
[0090] No bloco 812, um segundo tamanho de buffer é ajustado para o buffer (ou buffers) associado a um ou mais componentes do dispositivo de computação, com base no segundo caso de uso determinado e nas informações de tamanho de buffer obtidas para o segundo caso de uso. Os buffers podem ser novamente os FIFOs 250A-250J discutidos acima para as Figuras 4A a 4B, e a Figura 6. Dependendo do caso de uso determinado no bloco 808, pode-se esperar que vários componentes de SoC 102 sejam mais ou menos ativos. No bloco 812, o tamanho ou profundidade de buffer para cada FIFO 250A-250J associado a vários componentes do SoC 102 é ajustado conforme necessário, de acordo com o segundo caso de uso determinado.
[0091] Em uma modalidade, isso pode incluir reduzir o tamanho ou profundidade de buffer de componentes que se espera que sejam menos ativos ou inativos e/ou aumentar o tamanho ou profundidade de buffer de componentes que se espera que sejam mais ativos no segundo caso de uso. Conforme discutido acima, a quantidade de aumento ou diminuição de tamanho ou profundidade de buffer pode variar por componente e/ou por caso de uso. Adicionalmente, tal ajuste de tamanho de buffer pode ser realizado além de, ou em vez de, quaisquer outras estratégias de mitigação ou controle de energia que o PCD 100 ou SoC 102 estiver implementando.
[0092] O método 800 continua no bloco opcional 814, em que os dados ou informações de caso de uso para um ou mais do dispositivo de computação podem ser atualizados, se necessário. Para modalidades em que a pluralidade de casos de uso pode alterar ao longo do tempo, tais alterações podem ser rastreadas (por exemplo, por módulo de monitor 114) e podem ser efetuadas de tempos e tempos no bloco 814. Alterações nas informações de caso de uso podem resultar de dados reunidos ao longo do tempo durante a operação do PCD 100 sobre como o PCD 100 é usado. Tais alterações nas informações de caso de uso no bloco 814 podem incluir excluir casos de uso, adicionar novos casos de uso, alterar o nível de atividade de um ou mais componentes para um caso de uso, alterar o tamanho ou profundidade de buffer para um nível de atividade particular para um ou mais componentes, ou qualquer combinação dos mesmos.
[0093] Para modalidades em que a pluralidade de casos de uso é predeterminada e pode não ser alterada, o bloco 814 pode não ser realizado ou pode ser realizado apenas em parte. Por exemplo, em algumas modalidades, casos de uso podem não ser adicionados ou excluídos, mas os valores de nível de atividade e/ou informações de tamanho de buffer para níveis de atividade podem ser atualizados. O método 800, então continua a monitorar o estado do PCD 100 e/ou os componentes de SoC 102 para determinar quaisquer alterações futuras ou adicionais no caso de uso. No caso de tais alterações futuras, os blocos 808, 810, 812, e/ou 814 podem reiterar para um terceiro caso de uso, quarto caso de uso etc. conforme descrito acima.
[0094] A Figura 8 descreve apenas uma modalidade exemplificativa de um método 800 de redimensionamento de buffer dinâmico em um dispositivo de computação, tal como PCD 100. Em outras modalidades, blocos ou etapas adicionais podem ser adicionados ao método 800.
De modo similar, em algumas modalidades, vários blocos ou etapas mostrados na Figura 8 podem ser combinados ou omitidos, tal como, por exemplo, combinar os blocos 802 e 804 em um bloco ou etapa de predição/obtenção, em vez dos dois blocos separados ilustrados na Figura 8. Alternativamente, os blocos 804 e 806 podem ser combinados em um bloco ou etapa de obtenção/ajuste de tamanho de buffer, em vez dos dois blocos separados ilustrados na Figura 8. Tais variações do método 800 são abrangidas pelo escopo desta revelação.
[0095] Adicionalmente, determinadas etapas nos processos ou fluxos de processo descritos neste relatório descritivo, naturalmente precedem outras para que a invenção funcione conforme descrito. Entretanto, a revelação não se limita à ordem das etapas descritas se tal ordem ou sequência não alterar a funcionalidade. Além disso, é reconhecido que algumas etapas podem ser realizadas antes, após ou em paralelo (de maneira substancialmente simultânea) com outras etapas sem que se afaste do escopo desta revelação. Em alguns casos, determinadas etapas podem ser omitidas ou não realizadas sem que se afaste do escopo da revelação. Ademais, palavras, tais como “posteriormente”, “então”, “a seguir”, “subsequentemente” etc. não se destinam a limitar a ordem das etapas. Essas palavras são simplesmente usadas para orientar o leitor através da descrição do método exemplificativo 800
[0096] As várias operações e/ou métodos descritos acima podem ser realizados por vários componentes e/ou módulos de hardware e/ou software, e tais componentes e/ou módulos podem fornecer meios para realizar tais operações e/ou métodos. Adicionalmente, uma pessoa com conhecimento comum na técnica de programação é capaz de escrever código de computador ou identificar hardware e/ou circuitos adequados para implementar o método ou sistema revelado sem dificuldade com base nos fluxogramas e na descrição associada neste relatório descritivo, por exemplo
[0097] Portanto, a revelação de um conjunto de instruções de código de programa particular ou dispositivos de hardware detalhados não é considerada necessária para um entendimento adequado de como produzir e usar o sistema ou método revelado. A funcionalidade inventiva dos processos habilitados para processador reivindicados é explicada em mais detalhes na descrição acima e em conjunto com os desenhos, que podem ilustrar vários fluxos de processo.
[0098] Em um ou mais aspectos exemplificativos, conforme indicado acima, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Caso implementadas em software, as funções podem ser armazenadas ou transmitidas como uma ou mais instruções ou código em um meio legível por computador, tal como um meio legível por processador não transitório. Meios legíveis por computador incluem tanto meios de armazenamento de dados como meios de comunicação que incluem qualquer meio que facilite a transferência de um programa de um local para outro.
[0099] Uma mídia de armazenamento pode ser qualquer mídia disponível que possa ser acessada por um computador ou processador. A título de exemplo e sem limitação, tal meio legível por computador pode compreender
RAM, ROM, EEPROM, CD-ROM ou outro armazenamento de disco óptico, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético, ou qualquer outro meio que possa ser usado para portar ou armazenar código de programa desejado sob a forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Disco magnético e disco óptico, conforme usado no presente documento, incluem disco compacto (“CD”), disco a laser, disco óptico, disco versátil digital (“DVD”), disquete e disco Blu-ray, em que os discos magnéticos geralmente reproduzem dados magneticamente, enquanto os discos ópticos reproduzem dados opticamente com lasers. As combinações do supracitado também devem ser abrangidas pelo escopo de mídia legível por computador não transitória.
[0100] Embora os aspectos selecionados tenham sido ilustrados e descritos em detalhes, será entendido que várias substituições e alterações podem ser efetuadas no presente documento sem que se afaste do escopo da presente revelação, conforme definido pelas reivindicações a seguir.

Claims (30)

REIVINDICAÇÕES
1. Método para controlar dinamicamente o tamanho de buffer em um dispositivo de computação em um dispositivo de computação portátil (“PCD”), sendo que o método compreende: determinar com um módulo de monitor de um sistema em um chip (“SoC”), um primeiro caso de uso para o PCD, sendo que o primeiro caso de uso define um primeiro nível de atividade para uma pluralidade de componentes do SoC; ajustar uma pluralidade de buffers a um primeiro tamanho de buffer com base no primeiro caso de uso, em que cada um dentre a pluralidade de buffers é associado a um dentre a pluralidade de componentes do SoC, o primeiro tamanho de buffer para cada um dos buffers se baseia no primeiro nível de atividade do componente associado do SoC; determinar com o módulo de monitor de um segundo caso de uso para o PCD diferente do primeiro caso de uso, sendo que o segundo caso de uso define um segundo nível de atividade para a pluralidade de componentes do SoC; e ajustar pelo menos um dentre a pluralidade de buffers a um segundo tamanho de buffer com base no segundo caso de uso, em que o segundo tamanho de buffer para o pelo menos um buffer se baseia no segundo nível de atividade do componente associado do SoC, sendo que o segundo tamanho de buffer é diferente do primeiro tamanho de buffer.
2. Método, de acordo com a reivindicação 1, em que ajustar o pelo menos um dentre a pluralidade de buffers a um segundo tamanho de buffer com base no segundo caso de uso compreende:
reduzir a profundidade de buffer do pelo menos um dentre a pluralidade de buffers.
3. Método, de acordo com a reivindicação 2, em que reduzir a profundidade de buffer do pelo menos um dentre a pluralidade de buffers compreende adicionalmente: reduzir a profundidade de buffer em uma quantidade variável dependendo do segundo nível de atividade do componente associado do SoC.
4. Método, de acordo com a reivindicação 1, em que o primeiro tamanho de buffer para o buffer associado a um primeiro dentre a pluralidade de componentes do SoC é diferente do primeiro tamanho de buffer para o buffer associado a um segundo dentre a pluralidade de componentes do SoC.
5. Método, de acordo com a reivindicação 1, em que a pluralidade de buffers compreende buffers do tipo primeiro a entrar, primeiro a sair (FIFO).
6. Método, de acordo com a reivindicação 1, em que: ajustar a pluralidade de buffers ao primeiro tamanho de buffer com base no primeiro caso de uso compreende adicionalmente obter uma primeira informação de tamanho para a pluralidade de buffers para o primeiro caso de uso, e ajustar pelo menos um dentre a pluralidade de buffers ao segundo tamanho de buffer com base no segundo caso de uso, compreende adicionalmente obter uma segunda informação de tamanho para a pluralidade de buffers para o segundo caso de uso.
7. Método, de acordo com a reivindicação 1, que compreende adicionalmente: atualizar dados de caso de uso para um ou mais dentre a pluralidade de componentes do SoC, em que atualizar dados de caso de uso compreende adicionar um novo caso de uso, excluir um dentre a pluralidade de casos de uso, alterar um valor de nível de atividade para um ou mais casos de uso, alterar um valor de informações de tamanho para um ou mais dos níveis de atividade para um ou mais dos casos de uso ou uma combinação dos mesmos.
8. Método, de acordo com a reivindicação 1, que compreende adicionalmente: determinar com o módulo de monitor um caso de uso N para o PCD diferente do caso de uso N-1, em que N é um número inteiro maior que 2, sendo que o caso de uso N define um nível de atividade N para a pluralidade de componentes do SoC; e ajustar pelo menos um dentre a pluralidade de buffers a um tamanho de buffer N com base no caso de uso N, em que o tamanho de buffer N para o pelo menos um buffer se baseia no nível de atividade N do componente associado do SoC, sendo que o tamanho de buffer N é diferente do tamanho de buffer N-1.
9. Sistema de computador para controlar dinamicamente o tamanho de buffer em um dispositivo de computação em um dispositivo de computação portátil (“PCD”), sendo que o sistema compreende: uma pluralidade de componentes de um sistema em um chip (“SoC”) do PCD; uma pluralidade de buffers no SoC, sendo que cada um dentre a pluralidade de buffers é associado a um dentre a pluralidade de componentes; e um módulo de monitor do SoC, sendo que o módulo de monitor é configurado para: determinar um primeiro caso de uso para o PCD, sendo que o primeiro caso de uso define um primeiro nível de atividade para a pluralidade de componentes do SoC, ajustar a pluralidade de buffers a um primeiro tamanho de buffer com base no primeiro caso de uso, sendo que o primeiro tamanho de buffer para cada um dos buffers se baseia no primeiro nível de atividade do componente associado do SoC, determinar um segundo caso de uso para o PCD diferente do primeiro caso de uso, sendo que o segundo caso de uso define um segundo nível de atividade para a pluralidade de componentes do SoC, e ajustar pelo menos um dentre a pluralidade de buffers a um segundo tamanho de buffer com base no segundo caso de uso, em que o segundo tamanho de buffer para o pelo menos um buffer se baseia no segundo nível de atividade do componente associado do SoC, sendo que o segundo tamanho de buffer é diferente do primeiro tamanho de buffer.
10. Sistema de computador, de acordo com a reivindicação 9, em que ajustar o pelo menos um dentre a pluralidade de buffers a um segundo tamanho de buffer com base no segundo caso de uso compreende reduzir a profundidade de buffer do pelo menos um dentre a pluralidade de buffers.
11. Sistema de computador, de acordo com a reivindicação 10, em que reduzir a profundidade de buffer do pelo menos um dentre a pluralidade de buffers compreende adicionalmente reduzir a profundidade de buffer em uma quantidade variável dependendo do segundo nível de atividade do componente associado do SoC.
12. Sistema de computador, de acordo com a reivindicação 9, em que o primeiro tamanho de buffer para o buffer associado a um primeiro dentre a pluralidade de componentes do SoC é diferente do primeiro tamanho de buffer para o buffer associado a um segundo dentre a pluralidade de componentes do SoC.
13. Sistema de computador, de acordo com a reivindicação 9, em que a pluralidade de buffers compreende buffers do tipo primeiro a entrar, primeiro a sair (FIFO).
14. Sistema de computador, de acordo com a reivindicação 9, em que o módulo de monitor é adicionalmente configurado para: ajustar a pluralidade de buffers ao primeiro tamanho de buffer com base no primeiro caso de uso obtendo- se uma primeira informação de tamanho para a pluralidade de buffers para o primeiro caso de uso, e ajustar pelo menos um dentre a pluralidade de buffers ao segundo tamanho de buffer com base no segundo caso de uso obtendo-se uma segunda informação de tamanho para a pluralidade de buffers para o segundo caso de uso.
15. Sistema de computador, de acordo com a reivindicação 14, em que o módulo de monitor é adicionalmente configurado para: atualizar dados de caso de uso para um ou mais dentre a pluralidade de componentes do SoC, em que atualizar dados de caso de uso compreende adicionar um novo caso de uso, excluir um dentre a pluralidade de casos de uso, alterar um valor de nível de atividade para um ou mais casos de uso, alterar um valor de informações de tamanho para um ou mais dos níveis de atividade para um ou mais dos casos de uso ou uma combinação dos mesmos.
16. Sistema de computador, de acordo com a reivindicação 9, em que o módulo de monitor é adicionalmente configurado para: determinar um caso de uso N para o PCD diferente do caso de uso N-1, em que N é um número inteiro maior que 2, sendo que o caso de uso N define um nível de atividade N para a pluralidade de componentes do SoC, e ajustar pelo menos um dentre a pluralidade de buffers a um tamanho de buffer N com base no caso de uso N, em que o tamanho de buffer N para o pelo menos um buffer se baseia no nível de atividade N do componente associado do SoC, sendo que o tamanho de buffer N é diferente do tamanho de buffer N-1.
17. Sistema de computador para controlar dinamicamente o tamanho de buffer em um dispositivo de computação em um dispositivo de computação portátil (“PCD”), sendo que o sistema compreende: meios para determinar com um módulo de monitor de um sistema em um chip (“SoC”), um primeiro caso de uso para o PCD, sendo que o primeiro caso de uso define um primeiro nível de atividade para uma pluralidade de componentes do SoC; meios para ajustar uma pluralidade de buffers a um primeiro tamanho de buffer com base no primeiro caso de uso, em que cada um dentre a pluralidade de buffers é associado a um dentre a pluralidade de componentes do SoC, o primeiro tamanho de buffer para cada um dos buffers se baseia no primeiro nível de atividade do componente associado do SoC; meios para determinar com o módulo de monitor de um segundo caso de uso para o PCD diferente do primeiro caso de uso, sendo que o segundo caso de uso define um segundo nível de atividade para a pluralidade de componentes do SoC; e meios para ajustar pelo menos um dentre a pluralidade de buffers a um segundo tamanho de buffer com base no segundo caso de uso, em que o segundo tamanho de buffer para o pelo menos um buffer se baseia no segundo nível de atividade do componente associado do SoC, sendo que o segundo tamanho de buffer é diferente do primeiro tamanho de buffer.
18. Sistema de computador, de acordo com a reivindicação 17, em que os meios para ajustar o pelo menos um dentre a pluralidade de buffers a um segundo tamanho de buffer com base no segundo caso de uso compreendem: meios para reduzir a profundidade de buffer do pelo menos um dentre a pluralidade de buffers.
19. Sistema de computador, de acordo com a reivindicação 18, em que os meios para reduzir a profundidade de buffer do pelo menos um dentre a pluralidade de buffers compreendem adicionalmente: meios para reduzir a profundidade de buffer em uma quantidade variável dependendo do segundo nível de atividade do componente associado do SoC.
20. Sistema de computador, de acordo com a reivindicação 17, em que o primeiro tamanho de buffer para o buffer associado a um primeiro dentre a pluralidade de componentes do SoC é diferente do primeiro tamanho de buffer para o buffer associado a um segundo dentre a pluralidade de componentes do SoC.
21. Sistema de computador, de acordo com a reivindicação 17, em que a pluralidade de buffers compreende buffers do tipo primeiro a entrar, primeiro a sair (FIFO).
22. Sistema de computador, de acordo com a reivindicação 17, em que: os meios para ajustar a pluralidade de buffers ao primeiro tamanho de buffer com base no primeiro caso de uso compreendem adicionalmente meios para obter uma primeira informação de tamanho para a pluralidade de buffers para o primeiro caso de uso, e os meios para ajustar pelo menos um dentre a pluralidade de buffers ao segundo tamanho de buffer com base no segundo caso de uso, compreendem adicionalmente meios para obter uma segunda informação de tamanho para a pluralidade de buffers para o segundo caso de uso.
23. Sistema de computador, de acordo com a reivindicação 17, que compreende adicionalmente: meios para atualizar dados de caso de uso para um ou mais dentre a pluralidade de componentes do SoC, em que atualizar dados de caso de uso compreende adicionar um novo caso de uso, excluir um dentre a pluralidade de casos de uso, alterar um valor de nível de atividade para um ou mais casos de uso, alterar um valor de informações de tamanho para um ou mais dos níveis de atividade para um ou mais dos casos de uso ou uma combinação dos mesmos.
24. Produto de programa de computador que compreende um meio utilizável por computador não transitório que tem um código de programa legível por computador incorporado no mesmo, sendo que o dito código de programa legível por computador é adaptado para ser executado para implementar um método para controlar dinamicamente o tamanho de buffer em um dispositivo de computação em um dispositivo de computação portátil (“PCD”), sendo que o método compreende: determinar com um módulo de monitor de um sistema em um chip (“SoC”), um primeiro caso de uso para o PCD, sendo que o primeiro caso de uso define um primeiro nível de atividade para uma pluralidade de componentes do SoC; ajustar uma pluralidade de buffers a um primeiro, primeiro tamanho de buffer com base no primeiro caso de uso, em que cada um dentre a pluralidade de buffers é associado a um dentre a pluralidade de componentes do SoC, o primeiro tamanho de buffer para cada um dos buffers se baseia no primeiro nível de atividade do componente associado do SoC; determinar com o módulo de monitor de um segundo caso de uso para o PCD diferente do primeiro caso de uso, sendo que o segundo caso de uso define um segundo nível de atividade para a pluralidade de componentes do SoC; e ajustar pelo menos um dentre a pluralidade de buffers a um segundo tamanho de buffer com base no segundo caso de uso, em que o segundo tamanho de buffer para o pelo menos um buffer se baseia no segundo nível de atividade do componente associado do SoC, sendo que o segundo tamanho de buffer é diferente do primeiro tamanho de buffer.
25. Produto de programa de computador, de acordo com a reivindicação 24, em que ajustar o pelo menos um dentre a pluralidade de buffers a um segundo tamanho de buffer com base no segundo caso de uso compreende: reduzir a profundidade de buffer do pelo menos um dentre a pluralidade de buffers.
26. Produto de programa de computador, de acordo com a reivindicação 25, em que reduzir a profundidade de buffer do pelo menos um dentre a pluralidade de buffers compreende adicionalmente: reduzir a profundidade de buffer em uma quantidade variável dependendo do segundo nível de atividade do componente associado do SoC.
27. Produto de programa de computador, de acordo com a reivindicação 24, em que o primeiro tamanho de buffer para o buffer associado a um primeiro dentre a pluralidade de componentes do SoC é diferente do primeiro tamanho de buffer para o buffer associado a um segundo dentre a pluralidade de componentes do SoC.
28. Produto de programa de computador, de acordo com a reivindicação 24, em que a pluralidade de buffers compreende buffers do tipo primeiro a entrar, primeiro a sair (FIFO).
29. Produto de programa de computador, de acordo com a reivindicação 24, em que: ajustar a pluralidade de buffers ao primeiro tamanho de buffer com base no primeiro caso de uso compreende adicionalmente obter uma primeira informação de tamanho para a pluralidade de buffers para o primeiro caso de uso, e ajustar pelo menos um dentre a pluralidade de buffers ao segundo tamanho de buffer com base no segundo caso de uso, compreende adicionalmente obter uma segunda informação de tamanho para a pluralidade de buffers para o segundo caso de uso.
30. Produto de programa de computador, de acordo com a reivindicação 29, em que o método compreende adicionalmente: atualizar dados de caso de uso para um ou mais dentre a pluralidade de componentes do SoC, em que atualizar dados de caso de uso compreende adicionar um novo caso de uso, excluir um dentre a pluralidade de casos de uso, alterar um valor de nível de atividade para um ou mais casos de uso, alterar um valor de informações de tamanho para um ou mais dos níveis de atividade para um ou mais dos casos de uso ou uma combinação dos mesmos.
BR112019026957-6A 2017-06-27 2018-06-01 sistema e método para dimensionamento de buffer dinâmico em um dispositivo de computação BR112019026957A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/634,701 US10713189B2 (en) 2017-06-27 2017-06-27 System and method for dynamic buffer sizing in a computing device
US15/634,701 2017-06-27
PCT/US2018/035677 WO2019005424A1 (en) 2017-06-27 2018-06-01 SYSTEM AND METHOD FOR DIMENSIONING A DYNAMIC BUFFER IN A COMPUTER DEVICE

Publications (1)

Publication Number Publication Date
BR112019026957A2 true BR112019026957A2 (pt) 2020-06-30

Family

ID=62685230

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112019026957-6A BR112019026957A2 (pt) 2017-06-27 2018-06-01 sistema e método para dimensionamento de buffer dinâmico em um dispositivo de computação

Country Status (10)

Country Link
US (1) US10713189B2 (pt)
EP (1) EP3646162B1 (pt)
KR (1) KR102623137B1 (pt)
CN (1) CN110809754B (pt)
AU (1) AU2018295010B2 (pt)
BR (1) BR112019026957A2 (pt)
ES (1) ES2871099T3 (pt)
SG (1) SG11201910416XA (pt)
TW (1) TWI772438B (pt)
WO (1) WO2019005424A1 (pt)

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6657634B1 (en) * 1999-02-25 2003-12-02 Ati International Srl Dynamic graphics and/or video memory power reducing circuit and method
WO2007063625A1 (ja) * 2005-12-02 2007-06-07 Matsushita Electric Industrial Co., Ltd. 信号処理装置および信号処理方法
WO2007107938A1 (en) 2006-03-22 2007-09-27 Koninklijke Philips Electronics N.V. A device and a method for saving energy by sharing a buffer
US20070260780A1 (en) * 2006-04-11 2007-11-08 Nokia Corporation Media subsystem, method and computer program product for adaptive media buffering
US20090028171A1 (en) 2007-07-27 2009-01-29 Texas Instruments Incorporated Fifo buffer with adaptive threshold level
CN101802872B (zh) * 2007-09-12 2016-06-15 爱立信电话股份有限公司 深度缓冲器压缩
US8064256B2 (en) 2009-03-02 2011-11-22 Unity Semiconductor Corporation Non-volatile FIFO with third dimension memory
US8738863B2 (en) * 2009-09-25 2014-05-27 Intel Corporation Configurable multi-level buffering in media and pipelined processing components
US8793522B2 (en) * 2011-06-11 2014-07-29 Aliphcom Power management in a data-capable strapband
US9167296B2 (en) * 2012-02-28 2015-10-20 Qualcomm Incorporated Customized playback at sink device in wireless display system
US9189199B2 (en) 2012-12-06 2015-11-17 Nvidia Corporation Folded FIFO memory generator
US9235377B2 (en) * 2013-03-12 2016-01-12 Invensense, Inc. Multiple, per sensor configurable FIFOs in a single static random access memory (SRAM) structure
US9337952B2 (en) 2013-04-22 2016-05-10 Intel Corporation Embedded resilient buffer
US9747048B2 (en) * 2014-06-02 2017-08-29 Micron Technology, Inc. Systems and methods for packing data in a scalable memory system protocol
US20160026436A1 (en) 2014-07-24 2016-01-28 Qualcomm Incorporated Dynamic Multi-processing In Multi-core Processors
US9514009B2 (en) * 2014-07-24 2016-12-06 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Reducing server power consumption to compensate for a power supply failure in a multiple power supply configuration
US9568547B2 (en) * 2015-03-17 2017-02-14 Intel Corporation Method, apparatus and system for dynamic bandwidth management in systems

Also Published As

Publication number Publication date
SG11201910416XA (en) 2020-01-30
TWI772438B (zh) 2022-08-01
EP3646162B1 (en) 2021-04-21
US10713189B2 (en) 2020-07-14
AU2018295010A1 (en) 2019-12-05
CN110809754A (zh) 2020-02-18
KR20200018495A (ko) 2020-02-19
ES2871099T3 (es) 2021-10-28
WO2019005424A1 (en) 2019-01-03
AU2018295010B2 (en) 2022-07-07
US20180373652A1 (en) 2018-12-27
CN110809754B (zh) 2023-06-30
KR102623137B1 (ko) 2024-01-09
EP3646162A1 (en) 2020-05-06
TW201905690A (zh) 2019-02-01

Similar Documents

Publication Publication Date Title
US10114443B2 (en) Thermal mitigation of multi-core processor
US9734073B2 (en) System and method for flash read cache with adaptive pre-fetch
JP6250700B2 (ja) 不揮発性メモリの使用を介した揮発性メモリの電力消費の低減
JP6158135B2 (ja) モバイルデバイス内の組み込まれた不揮発性メモリとメイン揮発性メモリとの並列使用
US9928168B2 (en) Non-volatile random access system memory with DRAM program caching
KR102244114B1 (ko) 시스템 온 칩에서의 메모리 액세스들을 위한 전력 관리
KR101324885B1 (ko) 복수의 회로들에서의 성능 파라미터들 조정
BR112016022266B1 (pt) Método para controlar dinamicamente um domínio de potência em um dispositivo de computação portátil, domínio de potência disposto em um dispositivo de computação portátil e memória legível por computador
EP3161622B1 (en) Accelerating boot time zeroing of memory based on non-volatile memory (nvm) technology
US8078800B2 (en) Dynamic operating point modification in an integrated circuit
US9798369B2 (en) Indicating critical battery status in mobile devices
US20190205042A1 (en) Configurable flush of data from volatile memory to non-volatile memory
BR112019026957A2 (pt) sistema e método para dimensionamento de buffer dinâmico em um dispositivo de computação
US10497369B2 (en) Method and system for power savings in voice control of a computing device
US20160077959A1 (en) System and Method for Sharing a Solid-State Non-Volatile Memory Resource
US20150049571A1 (en) Memory control device, control method of memory control device, information processing apparatus

Legal Events

Date Code Title Description
B350 Update of information on the portal [chapter 15.35 patent gazette]