ES2871099T3 - Sistema y método para dimensionar memoria intermedia dinámica en un dispositivo informático - Google Patents

Sistema y método para dimensionar memoria intermedia dinámica en un dispositivo informático Download PDF

Info

Publication number
ES2871099T3
ES2871099T3 ES18733123T ES18733123T ES2871099T3 ES 2871099 T3 ES2871099 T3 ES 2871099T3 ES 18733123 T ES18733123 T ES 18733123T ES 18733123 T ES18733123 T ES 18733123T ES 2871099 T3 ES2871099 T3 ES 2871099T3
Authority
ES
Spain
Prior art keywords
use case
soc
buffers
buffer
buffer size
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
ES18733123T
Other languages
English (en)
Inventor
Puttappa Vasantha Kumar Bandur
Umesh Rao
Kunal Desai
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2871099T3 publication Critical patent/ES2871099T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Quality & Reliability (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Sources (AREA)
  • Information Transfer Systems (AREA)
  • Measurement Of Velocity Or Position Using Acoustic Or Ultrasonic Waves (AREA)
  • Small-Scale Networks (AREA)

Abstract

Un método (800) para controlar dinámicamente un tamaño de memoria intermedia en un dispositivo informático en un dispositivo informático portátil, PCD, comprendiendo el método: determinar (802) con un módulo de supervisión de un sistema en un chip, SoC, un primer caso de uso para el PCD, definiendo el primer caso de uso un primer nivel de actividad para una pluralidad de componentes del SoC; establecer (806) una pluralidad de memorias intermedias a un primer tamaño de memoria intermedia basándose en el primer caso de uso, en donde cada una de la pluralidad de memorias intermedias se asocia a uno de la pluralidad de componentes del SoC, el primer tamaño de memoria intermedia para cada una de las memorias intermedias se basa en el primer nivel de actividad del componente asociado del SoC; determinar (808) con el módulo de supervisión un segundo caso de uso para el PCD diferente del primer caso de uso, definiendo el segundo caso de uso un segundo nivel de actividad para la pluralidad de componentes del SoC; y establecer (812) al menos una de la pluralidad de memorias intermedias a un segundo tamaño de memoria intermedia basándose en el segundo caso de uso, en donde el segundo tamaño de memoria intermedia para la al menos una memoria intermedia se basa en el segundo nivel de actividad del componente asociado del SoC, el segundo tamaño de memoria intermedia es diferente del primer tamaño de memoria intermedia.

Description

DESCRIPCIÓN
Sistema y método para dimensionar memoria intermedia dinámica en un dispositivo informático
Descripción de la técnica relacionada
Los dispositivos informáticos, incluyendo ordenadores de sobremesa, servidores y dispositivos informáticos portátiles ("PCD") están generalizados. Los PCD, por ejemplo, se están convirtiendo en necesidades para las personas a nivel personal y profesional. Estos dispositivos pueden incluir teléfonos celulares (tales como teléfonos inteligentes), asistentes digitales personales ("PDA"), consolas de juegos portátiles, ordenadores portátiles, ordenadores de tableta, dispositivos electrónicos ponibles y portátiles. Tales PCD usan comúnmente memorias, tales como memorias intermedias primero en entrar-primero en salir o registradores de memoria que actúan como memorias intermedias para garantizar que los datos se transfieren entre componentes del PCD de forma eficiente y sin pérdida de datos. Tales memorias intermedias se dimensionan habitualmente como un arranque de un PCD para un escenario de "peor escenario", por ejemplo, las memorias intermedias, tales como FIFO pueden dimensionarse para garantizar que no se pierde ningún dato cuando un primer componente que transfiere datos opera a una frecuencia máxima, mientras otro componente que transfiere datos opera a una frecuencia mínima.
A medida que los PCD se vuelven más potentes y se requiere que realicen más tareas, disminuir el consumo de potencia se vuelve más importante para garantizar una duración satisfactoria de la batería. Técnicas anteriores típicas para recudir o controlar el consumo de potencia incluyen la regulación o control de un nivel de tensión en la que operan los componentes de PCD y/o una frecuencia de reloj para componentes de PCD. Sin embargo, tales métodos de control de consumo de potencia pueden no ser efectivos en todas las circunstancias, tales como cuando múltiples componentes del PCD están en un único carril de alimentación de tal forma que el nivel de tensión en el carril de alimentación puede no reducirse debido a los requisitos de un componente, mientras otros componentes en el carril de alimentación podrían operarse en un nivel de tensión menor.
Tales métodos para controlar el consumo de potencia ignoran las fugas de potencia significativas que resultan de las memorias intermedias dimensionadas para tratar escenarios de "peor caso". Por lo tanto, existe una necesidad de sistemas y métodos para controlar dinámicamente el dimensionamiento de memoria intermedia FIFO en dispositivos informáticos, tales como PCD.
El documento WO 2007/107938 A1 divulga un dispositivo y un método para ahorrar energía compartiendo una memoria intermedia. El dispositivo comprende al menos una primera unidad de procesamiento para procesar un primer flujo y una segunda unidad de procesamiento para procesar un segundo flujo en donde la primera unidad de procesamiento y la segunda unidad de procesamiento procesan el primer flujo y el segundo flujo independientemente entre sí. Una memoria intermedia para uso común por la primera unidad de procesamiento y la segunda unidad de procesamiento se distribuye de forma óptima en una primera porción y una porción restante para la primera unidad de procesamiento y la segunda unidad de procesamiento respectivamente. La memoria intermedia se distribuye mediante un medio para asignación basándose en unas primeras características de consumo de potencia de la primera unidad de procesamiento y segundas características de consumo de potencia de la segunda unidad de procesamiento. Sumario de la divulgación
La invención se define en las reivindicaciones independientes.
Se divulgan diversas realizaciones de métodos y sistemas para controlar dinámicamente un tamaño de memoria intermedia en un dispositivo informático. En una realización ilustrativa, se proporciona un método, comprendiendo el método determinar con un módulo de supervisión de un sistema en un chip ("SoC") un primer caso de uso para el PCD. El primer caso de uso define un primer nivel de actividad para una pluralidad de componentes del SoC. El método incluye establecer una pluralidad de memorias intermedias a un primer tamaño de memoria intermedia basándose en el primer caso de uso. Cada una de la pluralidad de memorias intermedias se asocia a uno de la pluralidad de componentes del SoC, y el primer tamaño de memoria intermedia para cada una de las memorias intermedias se basa en el primer nivel de actividad del componente asociado del SoC.
El método incluye adicionalmente determinar un segundo caso de uso para el PCD diferente del primer caso de uso. El segundo caso de uso define un segundo nivel de actividad para la pluralidad de componentes del SoC. Al menos una de la pluralidad de memorias intermedias se establece a un segundo tamaño de memoria intermedia basándose en el segundo caso de uso. El segundo tamaño de memoria intermedia para la al menos una memoria intermedia se basa en el segundo nivel de actividad del componente asociado del SoC, y el segundo tamaño de memoria intermedia es diferente del primer tamaño de memoria intermedia.
En otra realización, se divulga un sistema informático para controlar dinámicamente un tamaño de memoria intermedia en un dispositivo informático. El sistema ilustrativo comprende una pluralidad de componentes de un sistema en un chip ("SoC") del PCD; una pluralidad de memorias intermedias en el SoC, cada una de la pluralidad de memorias intermedias asociada con uno de la pluralidad de componentes; y un módulo de supervisión del SoC. El módulo de supervisión está configurado para determinar un primer caso de uso para el PCD, definiendo el primer caso de uso un primer nivel de actividad para la pluralidad de componentes del SoC. El módulo de supervisión está configurado también para establecer la pluralidad de memorias intermedias a un primer tamaño de memoria intermedia basándose en el primer caso de uso, en el que el primer tamaño de memoria intermedia para cada una de las memorias intermedias se basa en el primer nivel de actividad del componente asociado del SoC.
El módulo de supervisión está configurado adicionalmente para determinar un segundo caso de uso para el PCD diferente del primer caso de uso, definiendo el segundo caso de uso un segundo nivel de actividad para la pluralidad de componentes del SoC. Finalmente, el módulo de supervisión está configurado para establecer al menos una de la pluralidad de memorias intermedias a un segundo tamaño de memoria intermedia basándose en el segundo caso de uso. El segundo tamaño de memoria intermedia para la al menos una memoria intermedia se basa en el segundo nivel de actividad del componente asociado del SoC, y el segundo tamaño de memoria intermedia es diferente del primer tamaño de memoria intermedia.
Breve descripción de los dibujos
En los dibujos, números de referencia similares se refieren a partes similares a lo largo de todas las diversas vistas a no ser que se indique lo contrario. Para números de referencia con designaciones con carácter de letra tales como "102A" o "102B", las designaciones con carácter de letra pueden diferenciar dos partes o elementos similares en la misma figura. Las designaciones con carácter de letra para números de referencia pueden omitirse cuando se pretende que un número de referencia abarque todas las partes que tienen el mismo número de referencia en todas las figuras.
La Figura 1 es un diagrama de bloques funcional que ilustra una realización de ejemplo de un dispositivo informático portátil (PCD) en el que pueden implementarse sistemas y métodos para dimensionamiento de memoria intermedia primero en entrar-primero en salir (FIFO) dinámica;
La Figura 2 es un diagrama de bloques que muestra componentes ilustrativos en un sistema en un chip (SoC) que puede implementarse en un PCD;
La Figura 3 es un diagrama de bloques que muestra aspectos de una realización ilustrativa de un sistema para dimensionamiento de memoria intermedia FIFO dinámica en un dispositivo informático;
La Figura 4A es el diagrama de bloques de la Figura 2, en el que se ilustra un ejemplo de la operación de un sistema y método para dimensionamiento de memoria intermedia FIFO dinámica para un caso de uso;
La Figura 4B es el diagrama de bloques de la Figura 2, en el que se ilustra un ejemplo de la operación de un sistema y método para dimensionamiento de memoria intermedia FIFO dinámica para un caso de uso diferente; La Figura 5A es una tabla de estado ilustrativa que puede usarse durante la operación de un sistema y método para dimensionamiento de memoria intermedia FIFO dinámica;
La Figura 5B es una tabla de consulta ilustrativa (LUT) que puede usarse durante la operación de un sistema y sistema y método para dimensionamiento de memoria intermedia FIFO dinámica,
La Figura 6 es un diagrama de bloques que muestra componentes ilustrativos en un SoC y aspectos adicionales de una operación de ejemplo de un sistema y método para dimensionamiento de memoria intermedia FIFO dinámica para un caso de uso;
La Figura 7A es un diagrama de bloques que muestra aspectos de un FIFO con un primer tamaño;
La Figura 7B es un diagrama de bloques que muestra aspectos de la FIFO de la Figura 6A después del redimensionamiento de acuerdo con sistemas y métodos ilustrativos en este documento; y
La Figura 8 es un diagrama de flujo lógico que ilustra la operación de un método ilustrativo para dimensionamiento de memoria intermedia FIFO dinámica en un dispositivo informático.
Descripción detallada
La palabra "ilustrativo" se usa en este documento para significar "que sirve como un ejemplo, caso o ilustración". Cualquier aspecto descrito en este documento como "ilustrativo" no necesariamente tiene que interpretarse como excluido, preferido o ventajoso sobre otros aspectos.
En esta descripción, el término "aplicación" también puede incluir archivos que tienen contenido ejecutable, tal como código objeto, rutinas, código de bytes, archivos de lenguaje de marcas y parches. Además, una "aplicación", referida en este documento, también puede incluir archivos que no son ejecutables en naturaleza, tales como documentos que pueden necesitarse que se abran u otros archivos de datos que necesitan ser accedidos.
Como se usa en esta descripción, los términos "componente", "base de datos", "módulo", "sistema" y similares se conciben para referirse a una entidad relacionada con un ordenador, ya sea hardware, firmware, una combinación de hardware y software, software o software en ejecución y representan medios ilustrativos para proporcionar la funcionalidad y realizar las ciertas etapas en los procesos o flujos de proceso descritos en esta memoria descriptiva. Por ejemplo, un componente puede ser, pero sin ser una limitación, un proceso que se ejecuta en un procesador, un procesador, un objeto, un ejecutable, un hilo de ejecución, un programa y/o un ordenador. Por medio de ilustración, tanto una aplicación que se ejecuta en un dispositivo informático como el dispositivo informático pueden ser un componente.
Uno o más componentes pueden residir dentro de un proceso y/o hilo de ejecución, y un componente puede ubicarse en un ordenador y/o distribuirse entre dos o más ordenadores. Además, estos componentes pueden ejecutase desde diversos medios legibles por ordenador que tienen diversas estructuras de datos almacenadas en los mismos. Los componentes pueden comunicarse por medio de procesos locales y/o remotos tales como de acuerdo con una señal que tiene uno o más paquetes de datos (por ejemplo, datos de un componente que interactúa con otro componente en un sistema local, sistema distribuido y/o a través de una red tal como la Internet con otros sistemas por medio de la señal).
En esta descripción, los términos "unidad de procesamiento central ("CPU")", "procesador de señales digitales ("DSP")", "unidad de procesamiento gráfico ("GPU")" y "chip" se usan indistintamente. Además, una CPU, DSP, GPU o un chip pueden constar de uno o más componentes de procesamiento distintos denominados generalmente en este documento como "núcleo o núcleos".
En esta descripción, los términos "carga de trabajo", "carga de proceso" y "carga de trabajo de proceso" se usan indistintamente y se dirigen generalmente hacia la carga de procesamiento, o porcentaje de carga de procesamiento, asociada con un componente de procesamiento dado en una realización dada, tal como cuando ese componente de procesamiento está ejecutando una o más tareas o instrucción. Además, un "componente de procesamiento" puede ser, pero sin limitación, un sistema en un chip ("SoC"), una unidad de procesamiento central, una unidad de procesamiento gráfico, un núcleo, un núcleo principal, un subnúcleo, un área de procesamiento, un motor de hardware, una cámara, un módem, etc. o cualquier otro componente que reside dentro de, o externo a, un circuito integrado dentro de un dispositivo informático portátil.
En esta descripción, el término "dispositivo informático portátil" ("PCD") se usa para describir cualquier dispositivo que opera en una fuente de alimentación con capacidad limitada, tal como una batería. Aunque los PCD operados por batería han estado en uso durante décadas, los avances tecnológicos en baterías recargables acoplados con la llegada de la tecnología inalámbrica de tercera generación ("3G") y cuarta generación ("4G") han habilitado numerosos PCD con múltiples capacidades. Por lo tanto, un PCD puede ser un teléfono celular, un teléfono por satélite, un buscapersonas, una PDA, un teléfono inteligente, un dispositivo de navegación, un libro inteligente o lector, un reproductor multimedia, un ordenador de tableta, una combinación de los dispositivos anteriormente mencionados, un ordenador portátil con una conexión inalámbrica y/o productos ponibles, entre otros.
En los PCD, calidad de servicio competitiva, duración de la batería y otros problemas pueden conducir a que diversos componentes, sistemas y/o subsistemas del PCD se operen en una mayor (o menor) potencia o tensión y/o mayor (o menor) frecuencia. Adicionalmente, los PCD habitualmente incluyen una o más memorias intermedias para ayudar en la negociación de datos entre los diversos componentes, sistemas y/o subsistemas de los PCD. Sin embargo, estas memorias intermedias o memorias intermedias se establecen habitualmente o dimensionan en el arranque inicial u operación del PCD y permanecen estáticas en tamaño, conduciendo a una fuga de potencia excesiva cuando no se usa la memoria intermedia. Tal pérdida de potencia puede ser especialmente significativa en memorias intermedias que se dimensionan para un escenario de "peor caso", tal como memorias intermedias dimensionadas para garantizar que no se pierden datos cuando un componente que transmite datos opera a una frecuencia máxima mientras un componente que recibe los datos opera a una frecuencia mínima. Esta pérdida de potencia del tamaño de memoria intermedia no se tiene en cuenta en estrategias de control de potencia tradicionales centradas en frecuencia operativa y/o tensiones de los componentes de PCD.
Se ha determinado que la capacidad de controlar dinámicamente el tamaño de memorias intermedias usadas por los componentes de PCD y/o subsistemas puede conducir a ahorros de potencia sustanciales más allá de los ahorros de potencia obtenidos mediante el control de tensión/frecuencia tradicional de los componentes/subsistemas de PCD. Adicionalmente, dimensionar dinámicamente las memorias intermedias puede proporcionar ahorros de potencia cuando no podrán los métodos de control de potencia basada en tensión/frecuencia tradicional, tal como cuando la tensión de un componente inactivo no puede reducirse porque el componente comparte un carril de alimentación con un componente activo. Por lo tanto, los sistemas y métodos presentes para dimensionar dinámicamente memorias intermedias o memorias intermedias proporcionan una capacidad económica para o bien mejorar ahorros de potencia o bien para realizar ahorros de potencia cuando los métodos de ahorros de potencia de tensión/frecuencia no son efectivos.
El sistema y métodos para gestión térmica con reconocimiento de trayectoria de datos descritos en este documento, o porciones del sistema y métodos, pueden implementarse en hardware o software. Si se implementa en hardware, los sistemas, o porciones de los sistemas pueden incluir cualquiera, o una combinación de, las siguientes tecnologías, que se conocen bien en la técnica: sensores, componentes electrónicos discretos, circuitos integrados, circuitos integrados específicos de la aplicación que tienen dispositivos de semiconductores y elementos resistivos apropiadamente configurados, etc. Cualquiera de estos dispositivos de hardware, ya actúen o solos, con otros dispositivos, u otros componentes tales como una memoria también pueden formar o comprender componentes o medios para realizar diversas operaciones o etapas de los métodos divulgados.
Cuando se implementa, o se implementa parcialmente, un sistema o método descrito en este documento en software, la porción de software puede usarse para realizar los métodos descritos en este documento. El software y datos usados en la representación de diversos elementos pueden almacenarse en una memoria y ejecutarse por un sistema de ejecución de instrucciones adecuado (por ejemplo, un microprocesador). El software puede comprender un listado ordenado de instrucciones ejecutables para implementar funciones lógicas, y puede incorporarse en cualquier "medio legible por procesador" para su uso por o en conexión con un sistema de ejecución de instrucciones, aparato o dispositivo, tal como un procesador de un único o múltiples núcleos o sistema que contiene procesadores. Tales sistemas accederán generalmente a las instrucciones desde el sistema de ejecución de instrucciones, aparato o dispositivo y ejecutarán las instrucciones
La Figura 1 es un diagrama de bloques funcional que ilustra una realización de ejemplo de un dispositivo informático portátil (PCD) en el que pueden implementarse sistemas y métodos para gestión térmica con reconocimiento de trayectoria de datos. Como se muestra, el PCD 100 incluye un sistema en chip ("SoC") 102 que incluye una unidad de procesamiento central ("CPU") de múltiples núcleos 110 y un procesador de señales analógico 128 que se acoplan juntos. La CPU 110 puede comprender múltiples núcleos que incluyen un ceroésimo núcleo 122, un primer núcleo 124 hasta, e incluyendo, un Nésimo núcleo 126. Además, en lugar de una CPU 110, también puede emplearse un procesador de señales digitales ("DSP") según se entiende por un experto en la materia. Como se entenderá, los núcleos 122, 122, 126 pueden implementarse para ejecutar una o más instrucciones o tareas, tales como instrucciones o tareas de una aplicación que se ejecuta por el PCD 100. Como también se entenderá, tales instrucciones o tareas pueden ejecutarse en su lugar, o adicionalmente, por o en uno o más componentes de procesamiento adicionales, tales como la GPU 182 ilustrada en la Figura 1.
En una realización, puede implementarse un módulo de supervisión 114 para comunicarse con las memorias intermedias primero en entrar-primero en salir (FIFO) (no ilustradas en la Figura 1) implementadas por diversos componentes del PCD 100 durante la operación, así como con otros componentes del SoC 102, tales como la CPU 110 o la GPU 182, etc. El módulo de supervisión 114 también pueden determinar en algunas realizaciones cuáles entre diversos FIFO se redimensionarán, y hasta que grados las FIFO se redimensionarán como se describe a continuación. Aunque en la Figura 1 se muestra por conveniencia como un único componente en el SoC 102, el módulo de supervisión 114 puede comprender en algunas realizaciones múltiples componentes, uno, algunos o todos de los cuales pueden no ubicarse en el SoC 102. No es necesario en la presente divulgación que el módulo de supervisión 114 sea un componente ilustrado en la Figura 1, y en algunas realizaciones el módulo de supervisión 114 puede implementarse en software tal como instrucciones ejecutables, código y/o parámetros almacenados en una memoria 112.
Como se ilustra en la Figura 1, un controlador de dispositivo 129 y un controlador de pantalla táctil 130 se acoplan a la CPU 110. Un visualizador de pantalla táctil 132 externo al SoC 102 se acopla al controlador de visualización 131 y al controlador de pantalla táctil 130. De nuevo, aunque en la Figura 1 se muestran como componentes individuales ubicados en el SoC 102, o bien el controlador de visualización 131 o bien el controlador de pantalla táctil 130 puede comprender múltiples componentes, uno o más de los cuales pueden no estar ubicados en el SoC 102 en algunas realizaciones.
El PCD 100 puede incluir adicionalmente un codificador de vídeo 134, por ejemplo, un codificador de línea de alternancia de fase ("PAL"), un codificador de color secuencial con memoria ("SECAM"), un codificador del comité nacional de sistema(s) de televisión o cualquier otro tipo de codificador de vídeo 134. El codificador de vídeo 134 se acopla a la CPU 110. Un amplificador de vídeo 136 se acopla al codificador de vídeo 134 y al visualizador de pantalla táctil 132. Un puerto de vídeo 138 se acopla al amplificador de vídeo 136. Como se representa en la Figura 1, un controlador de Bus Serial Universal ("USB") 140 se acopla a la CPU 110. Además, un puerto USB 142 se acopla al controlador de USB 140. Una memoria 112 y una tarjeta de módulo de identidad de abonado (SIM) 146 también pueden acoplarse a la CPU 110. Además, como se muestra en la Figura 1, una cámara digital 148 puede acoplarse a la CPU 110 del SoC 102. En un aspecto ilustrativo, la cámara digital 148 es una cámara de dispositivo de carga acoplada ("CCD") o una cámara de semiconductor complementario de óxido metálico ("CMOS").
Como se ilustra adicionalmente en la Figura 1, un CÓDEC de audio estéreo 150 puede acoplarse al procesador de señales analógico 126. Además, un amplificador de audio 152 puede acoplarse al CÓDEC de audio estéreo 150. En un aspecto ilustrativo, un primer altavoz estéreo 154 y un segundo altavoz estéreo 156 se acoplan al amplificador de audio 152. La Figura 1 muestra que un amplificador de micrófono 158 también puede acoplarse al CÓd Ec de audio estéreo 150. Adicionalmente, un micrófono 160 puede acoplarse al amplificador de micrófono 158. En un aspecto particular, un sintonizador de radio de frecuencia modulada ("FM") 162 puede acoplarse al CÓDEC de audio estéreo 150. Además, una antena de FM 164 se acopla al sintonizador de radio Fm 162. Además, los auriculares estéreos 166 pueden acoplarse al CÓDEC de audio estéreo 150.
La Figura 1 indica adicionalmente que un transceptor de frecuencia de radio ("RF") 168 puede acoplarse al procesador de señales analógico 128. Un conmutador de r F 170 puede acoplarse al transceptor de RF 168 y una antena de RF 172. Como se muestra en la Figura 1, un teclado numérico 174 puede acoplarse al procesador de señales analógico 128. Además, un auricular mono con un micrófono 176 puede acoplarse al procesador de señales analógico 128. Además, un dispositivo de vibrador 178 puede acoplarse al procesador de señales analógico 128. La Figura 1 también muestra que una fuente de alimentación 188, por ejemplo una batería, se acopla al SoC 102 a través del PMIC 180. En un aspecto particular, la fuente de alimentación incluye una batería de CC recargable o una fuente de alimentación de CC que se deriva a partir de un transformador de corriente alterna ("CA") a CC que se conecta a una fuente de alimentación de CA.
La CPU 110 también puede acoplarse a uno o más sensores térmicos internos y en chip 157A, 157B así como uno o más sensores térmicos externos y fuera de chip 157C. Los sensores térmicos en chip 157A pueden comprender uno o más sensores de temperatura de temperatura proporcional a absoluta ("PTAT") que se basan en una estructura de PNP vertical y se dedican normalmente a circuitos de integración a muy larga escala ("VLSI") de semiconductor complementario de óxido metálico ("CMOS"). Los sensores térmicos fuera de chip 157C pueden comprender uno o más termistores u otros sensores deseados. Los sensores térmicos 157C pueden producir una caída de tensión que se convierte a señales digitales con un controlador de convertidor de analógico a digital ("ADC") 103. Sin embargo, pueden emplearse otros tipos de sensores térmicos 157A, 157B, 157C sin alejarse del alcance de la invención.
En la realización ilustrada en la Figura 1, el visualizador de pantalla táctil 132, el puerto de vídeo 138, el puerto de USB 142, la cámara 148, el primer altavoz estéreo 154, el segundo altavoz estéreo 156, el micrófono 160, la antena de FM 164, los auriculares estéreos 166, el conmutador de RF 170, la antena de RF 172, el teclado numérico 174, el auricular mono 176, el vibrador 178, la fuente de alimentación 188, el PMIC 180 y los sensores térmicos 157C son externos al SoC 102.
Como se ha analizado anteriormente, en un aspecto particular, una o más de las etapas de método descritas en este documento pueden implementarse mediante instrucciones ejecutables, código y/o parámetros almacenados en una memoria 112 que pueden formar el módulo de supervisión 114, u otros componentes analizados en este documento. Las instrucciones que forman el módulo de supervisión 114 pueden ejecutarse por la CPU 110, el procesador de señales analógico 128 u otro procesador, además del controlador de ADC 103, para realizar los métodos descritos en este documento. Además, la CPU 110, el procesador de señales analógico 128, la memoria 112, las instrucciones almacenadas en la misma o una combinación de los mismos pueden servir como un medio para realizar una o más de las etapas de método descritas en este documento.
La Figura 2 es un diagrama de bloques que muestra componentes ilustrativos en un SoC 102 que pueden implementarse en un PCD 100. El PCD 100 puede ser, en una realización, en forma de un teléfono inalámbrico. La Figura 2 es para propósitos de ilustración, y muestra una disposición ilustrativa de ciertos componentes de hardware del PCD ilustrativo 100, los componentes de hardware representados en el forma de bloque y acoplados eléctricamente entre sí a través de una trayectoria de comunicación tal como una interconexión o bus 270.
El bus 270 puede incluir múltiples trayectorias de comunicación a través de una o más conexiones por cable o inalámbricas. Dependiendo de la implementación, el bus 270 puede incluir elementos adicionales, que se omiten por simplicidad, tales como controladores, controladores de dispositivo, repetidores y receptores, para habilitar comunicaciones. Además, el bus 270 puede incluir dirección, control y/o conexiones de datos para habilitar comunicaciones apropiadas entre los diversos componentes ilustrados en la Figura 2 y/o componentes adicionales del SoC 102 y/o PCD 100 si se desea. En una realización, el bus 270 puede comprender un bus de red en chip (NOC) 270.
Como se ilustra en la Figura 2, el SoC 102 puede incluir múltiples procesadores o núcleos, incluyendo CPU_0 222, CPU_1 224, CPU_2 226 y CPU_3228 (colectivamente CPU 222-228). Aunque se ilustran cuatro CPU 222-228, en otras realizaciones el SoC 102 puede tener más o menos CPU 222-228 y/o las CPU 222-228 pueden disponerse de forma diferente que la ilustrada en la Figura 2. Adicionalmente, el SoC 102 puede tener una arquitectura diferente para los componentes de procesamiento que la ilustrada en la Figura 2, tal como una arquitectura "grande - pequeña", comprendiendo cada una de las CPU 222-228 dos componentes de procesamiento separados de diferentes tamaños. La presente divulgación es igualmente aplicable a todas tales variaciones de arquitectura.
Como también se ilustra en la Figura 2, el SoC 102 también puede comprender una GPU 282 separada para procesar o ejecutar cargas de trabajo relacionadas con gráficos, tales como la renderización de información gráfica a un visualizador de usuario 232. De manera similar, el SoC 102 puede incluir un codificador de vídeo 234 para codificar o decodificar archivos de vídeo. Aunque no se ilustra, el SoC 102 también puede incluir un codificador de audio separado para codificar o decodificar archivos de audio y/o las porciones de audio de archivos de vídeo. El SoC 102 también puede incluir una o más cámaras ilustradas como la cámara 248 en la Figura 2. De manera similar, el SoC 102 puede incluir uno o más componentes para permitir comunicaciones entre el PCD 100 y otros dispositivos y sistemas informáticos. Tales componentes de comunicación pueden incluir el módem 260 y/o LAN de área extensa (WLAN) 262.
El SoC 102 también incluirá uno o más subsistemas 240 para soportar los componentes listados anteriormente y/o para realizar otra funcionalidad para el SoC 102 o PCD 100. Como se entenderá, estos subsistemas (ilustrados por conveniencia como un único subsistema 240) pueden incluir diversos componentes o lógica configurada para funcionar en conjunto con o funcionar independientemente de los componentes del SoC 102 anteriormente identificados. Por ejemplo, en una realización el subsistema 240 puede comprender un subsistema de audio de baja potencia (LPASS) para el tratamiento de datos de audio para el SoC 102. De manera similar, en una realización el subsistema 240 puede incluir un subsistema de vídeo para el tratamiento de datos de vídeo para el SoC 102, tales como datos de vídeo a codificar por el codificador de vídeo 234 y/o datos de vídeo a renderizar por la GPU 282. El SoC 102 puede incluir en diversas realizaciones más subsistemas que el subsistema 240 ilustrado.
Finalmente, en la realización ilustrada en la Figura 2, el SoC 102 incluye una o más memorias intermedias (250A-250I). Las memorias intermedias 250A-250I permiten el almacenamiento en memoria intermedia de datos antes de que se lean por su respectivo componente o subsistema ilustrado en la Figura 2 al que se acopla cada memoria intermedia 250A-250I. Como se entenderá, las memorias intermedias 250A-250I pueden implementarse como cualquier memoria intermedia o estructura de memoria deseada (por ejemplo, cualquier tipo de memoria distinto de SRAM y DRAM) tal como una memoria intermedia primero en entrar-primero en salir (FIFO). Por conveniencia, las memorias intermedias se ilustran como las FIFO 250A-250I en las realizaciones ilustrativas analizadas a continuación. Sin embargo, el análisis a continuación y la presente divulgación son igualmente aplicables a cualquier tipo de almacenamiento o memoria del método usado para almacenar en memoria intermedia. Como también se entenderá, la representación de las FIFO 250A-250I separadas en la Figura 2 es ilustrativa. Las FIFO 250A-250I, en otras realizaciones, pueden no ser memorias intermedias o componentes físicamente separados del SoC 102. Por ejemplo, las FIFO 250A-250I pueden no estar separadas de los componentes, sino que pueden ser en su lugar una parte del componente para el que una FIFO 250A-250I proporciona almacenamiento en memoria intermedia. En tales realizaciones una memoria intermedia particular, tal como la FIFO 250A, puede considerarse parte del componente (subsistema 240) para el que la FIFO 250A proporciona almacenamiento en memoria intermedia - es decir dentro de la caja que representa el subsistema 240 en la Figura 2. En otras realizaciones las FIFO 250A-250I pueden implementarse como una serie de registradores de memoria o una serie de direcciones en una memoria única, con cada serie de registradores de memoria o direcciones designadas para actuar como una FIFO 250A-250I para un componente particular.
Adicionalmente, como se ilustra por la FIFO 250C y la FIFO 250D, uno o más componentes del SoC 102 pueden compartir una memoria intermedia, aunque en algunas realizaciones cada componente tendrá su propia memoria intermedia. Como se entenderá, el SoC 102 puede tener más o menos componentes y subsistemas que los ilustrados en la Figura 2 y/o la disposición espacial de los componentes o subsistemas pueden disponerse de forma diferente que la disposición ilustrativa mostrada en la Figura 2.
Pasando a la Figura 3, se ilustra un diagrama de bloques que muestra aspectos de una realización ilustrativa de un sistema 300 para dimensionamiento de memoria intermedia FIFO dinámica. El sistema 300 puede implementarse en un SoC 102 que tiene los componentes ilustrativos 200 de SoC 102 ilustrados en la Figura 2. Adicionalmente, el SoC 102 del sistema 300 puede ser el SoC 102 de PCD 100 ilustrado en la Figura 1. Como se ilustra en la Figura 3, el SoC 102 incluye una CPU 110 con múltiples componentes de procesamiento tales como los núcleos 222, 224, 230, que pueden corresponder en una realización a las CPU 222-228 de la Figura 2. El CPU 110 se acopla eléctricamente a una trayectoria de comunicación tal como una interconexión o bus 270 tal como el bus 270 descrito anteriormente para la Figura 2. El SoC 102 también puede incluir la GPU 282, el módem 260 y la cámara 248 eléctricamente acoplados al bus 270.
El sistema 300 incluye un controlador de memoria 308 en comunicación con el bus 270, el controlador de memoria 308 configurado para controlar las memorias en o acopladas al SoC 102, incluyendo la memoria de sistema 112 (Figura 1) y ciertos aspectos de las FIFO 250A-250I (Figura 2). Aunque no se ilustra, el sistema 300 también puede incluir diversos controladores de dispositivo para los componentes del SoC 102 que contienen información de configuración y operación acerca de los componentes del SoC 102. Tales controladores de dispositivo pueden distribuirse entre y/o coubicarse con los diversos componentes a los que se aplica un controlador de dispositivo particular.
El sistema 300 también incluye un módulo de supervisión 114 en comunicación con el bus 270. En una realización el módulo de supervisión 114 puede operar para determinar cuándo redimensionar una o más FIFO 250A-250I (Figura 2) y/o para determinar la cantidad que se redimensionará una o más FIFO 250A-250I. Aunque se muestra como un único componente en el SoC 102 en la Figura 2, el módulo de supervisión 114 puede comprender, en algunas realizaciones, múltiples componentes y/o la funcionalidad del módulo de supervisión 114 analizado en este documento puede distribuirse entre diversos componentes del SoC 102. En otras realizaciones, el módulo de supervisión 114 puede no ser un componente en absoluto como se ilustra en la Figura 2, sino que en su lugar el módulo de supervisión 114 puede implementarse en software tal como instrucciones ejecutables, código y/o parámetros almacenados en una memoria del SoC 102.
Independientemente de cómo se implemente, para hacer las determinaciones acerca de cuándo y/o cómo redimensionar las memorias intermedias, el módulo de supervisión 114 puede recibir u obtener información desde diversos componentes para determinar o entender un caso de uso para el PCD 100. El módulo de supervisión 114 puede recibir u obtener de forma similar información desde diversos componentes para determinar o entender un cambio desde un primer caso de uso a un segundo caso de uso que justificaría el redimensionamiento de una o más memorias intermedias. En una realización, un caso de uso es una forma o manera para categorizar cómo se está usando el PCD 100. Un caso de uso proporciona información acerca de (o puede definirse por) un nivel de actividad, o nivel de actividad esperado, de diversos componentes del PCD 100 o SoC 102 durante ese caso de uso.
Casos de uso ilustrativos pueden incluir juego, reproducción de vídeo, comunicación (tal como mensajería de texto o una llamada de teléfono), actividad computacional, cámara (tal como hacer fotografías); captura de vídeo (que puede ser un subconjunto del caso de uso de cámara o un caso de uso separado); música (que puede incluir la reproducción de archivos de música guardados en el PCD 100 y/o música en difusión en continuo en el PCD 100); navegación de internet; realización de respaldo del PCD 100; arranque (tal como cuando el PCD 100 se está encendiendo después de haberse apagado); por defecto (que puede ser un caso de uso por defecto cuando no se aplican otros casos de uso); u otros casos de uso. Adicionalmente, en algunas realizaciones, pueden definirse o crearse casos de uso nuevos basándose en cómo se usa el PCD 100 durante un periodo de tiempo. En tales realizaciones, el caso o casos de uso nuevos pueden definirse o crearse por el módulo de supervisión 114.
Determinar qué caso de uso se aplica al PCD 100 en un momento particular puede basarse en el conocimiento de o información acerca de las aplicaciones o programas que se están ejecutando por el PCD 100, o que están a punto de ejecutarse por el PCD 100. Este conocimiento o información puede ser directo (tal como software que entiende qué aplicaciones, instrucciones o código se ejecutan en el SoC 102) o puede inferirse (tal como basándose en entradas de usuario). En algunas implementaciones, determinar qué caso de uso se aplica al PCD 100 en un momento particular puede basarse adicionalmente, o en su lugar, en información de estado actual acerca del PCD 100, tal como el nivel de actividad de uno o más componentes en el PCD 100 o SoC 102 (tal como GPU 282, cámara 248, módem 260, codificador de vídeo 232, etc.). En aún otras implementaciones, el caso de uso que se aplica al PCD 100 en un momento particular puede basarse en un evento de desencadenamiento particular, tal como reiniciar el PCD 100 o SoC 102 desde un estado apagado.
Independientemente de cómo se determine o entienda, cada caso de uso se asociará con un nivel de actividad esperado o anticipado para uno o más componentes del SoC 102 y/o PCD 100. Por ejemplo, un caso de uso de "cámara" puede ser en el que la cámara y/o a aplicación de cámara se han activado por el usuario del PCD 100. Para un caso de uso de este tipo, puede esperarse que la cámara (tal como la cámara 248 de la Figura 2 y la Figura 3) y el visualizador (tal como el visualizador 232 de la Figura 2), y cualquier subsistema de soporte, estarán activos. También puede esperarse que para el caso de uso de "cámara", el módem 260, GPU 282, codificador de vídeo 234, así como otros componentes del SoC 102 (Figura 2) pueden no estar activos, o estarán menos activos que en otros casos de uso.
Por medio de otro ejemplo, un caso de uso de "comunicación" puede ser en el que el módem y/o una aplicación de comunicación que usa el módem se han activado por el usuario del PCD 100. La Figura 4A es el diagrama de bloques de la Figura 2, en el que se ilustra un ejemplo de la operación de un sistema y método para dimensionamiento de memoria intermedia FIFO dinámica para un caso de uso de "comunicación" ilustrativo. Para un caso de uso de este tipo, puede esperarse que el módem 260 y cualquier subsistema de soporte estarán activos como se representa por la región sombreada de la Figura 4A. La memoria intermedia para tales componentes activos como el módem 260 (FIFO 250H) se dimensionará para acomodarse al nivel de actividad esperado - es decir, una profundidad relativamente mayor de memoria intermedia.
Por el contrario, puede esperarse que los restantes componentes del SoC 102 (sin sombreado) pueden no estar activos, o estarán menos activos para este caso de uso de "comunicación". Las memorias intermedias para tales componentes inactivos como la cámara 248 (FIFO 250G) y la GPU 282 (FIFO 250F) se dimensionarán para acomodarse la inactividad esperada - es decir, profundidades de memoria intermedia más pequeñas. Por lo tanto, para los componentes que se espera que estén menos activos para este caso de uso, puede reducirse el tamaño y profundidad de las memorias intermedias acopladas a estos componentes, evitando o reduciendo la potencia de fuga sin tener impacto en el rendimiento del PCD.
Obsérvese que para el caso de uso de "comunicación", dependiendo del tipo de comunicación, puede no usarse todo el ancho de banda del módem 260. Se entenderá que incluso aunque no se usa todo el ancho de banda del módem 260, el módem 260 puede estar sincronizado con otros componentes (por ejemplo, con un controlador de memoria no ilustrado en la Figura 4A) para propósito de calidad de servicios, para evitar latencia, etc. En otras palabras, puede forzarse al módem 260 a operar a una frecuencia mayor incluso aunque el módem 260 esté usando todo su ancho de banda.
En tales casos de uso, las técnicas de consumo de potencia tradicionales que controlan la tensión o frecuencia del módem 260 no serán efectivas ya que el módem 260 está sincronizado con otros componentes y/o compartiendo un carril de potencia con otros componentes. En ese caso, la FIFO 250H puede dimensionarse relativamente grande, pero puede ser aún menos que el tamaño o profundidad completo (por ejemplo, reducido un 25 %). Tal dimensionamiento dinámico de la FIFO 250H le permite acomodar el nivel de actividad esperado del módem 260 mientras aún proporciona ahorros de potencia. De esta manera, el dimensionamiento dinámico de la FIFO 250H puede proporcionar ahorros de potencia sin tener impacto en el rendimiento del SoC 102 o PCD 100 en el que los métodos tradicionales de reducción de potencia basada en tensión/frecuencia pueden ser inaplicables o inefectivos.
Otro ejemplo más es un caso de uso de "juego" en el que un usuario está ejecutando una aplicación de juego en el PCD 100. La Figura 4B es el diagrama de bloques de la Figura 2, en el que un ejemplo de la operación de un sistema y método para dimensionamiento de memoria intermedia FIFO dinámica se ilustra para un caso de uso de "juego" ilustrativo. Para un caso de uso de este tipo, puede esperarse que la GPU 282 y el visualizador 232 puedan ser los más activos como se refleja por la región sombreada de la Figura 2C. Las memorias intermedias para estos componentes activos como la GPU 282 (FIFO 250E) y el visualización 232 (FIFO 250F) se dimensionarán para acomodarse el nivel de actividad esperado - es decir, una profundidad relativamente mayor de memoria intermedia.
Para un caso de uso de "juego" de este tipo puede esperarse que el controlador de memoria 308, la CPU 222-228, el módem 260 y el codificador de vídeo 234 estarán moderadamente activos. Las memorias intermedias para estos componentes moderadamente activos (las FIFO 250C, 250D, 250H) se dimensionarán para acomodarse el nivel de actividad moderado esperado - es decir, en una profundidad de memoria intermedia más pequeña en comparación con los componentes activos. Finalmente, en el caso de uso de "juego" puede esperarse que la cámara 248 estará inactiva. Las memorias intermedias para tales componentes inactivos (FIFO 250G) se dimensionarán para acomodarse la inactividad esperada - es decir, en una profundidad de memoria intermedia incluso más pequeña en comparación con componentes moderados y activos. Tal dimensionamiento dinámico de las FIFO 250C, 205f , 250H y/o 250G H - y en particular la reducción de tamaño o profundidad de memoria intermedia para componentes inactivos o menos activos del SoC 102 - permite la prevención o reducción de potencia de fuga sin tener impacto en el rendimiento del PCD 100 o SoC 102.
Como se ilustra mediante este ejemplo de caso de uso de "juego" de la Figura 4B, el nivel de actividad de diversos componentes del SoC 102 puede no categorizarse necesariamente como activo/inactivo. En su lugar, los niveles de actividad para uno o más casos de uso pueden ser relativos, o variar, con múltiples niveles o grados de actividad dependiendo del componente. Obsérvese que en este ejemplo de caso de uso de "juego", los componentes menos activos o inactivos también pueden tener su tensión y/o frecuencia reducidas como parte de un método tradicional de control o ahorro de potencia. El dimensionamiento dinámico de las memorias intermedias en este ejemplo de caso de uso de "juego" proporciona ahorros de potencia/reducción de potencia adicional más allá de los ahorros de potencia/reducciones de potencia disponibles a partir de métodos tradicionales de reducción de potencia basados en tensión/frecuencia.
Para implementaciones o casos de uso con grados relativos o variables de actividad de los componentes, la información o datos acerca del estado o nivel de actividad y/o tamaño de memoria intermedia puede almacenarse o contenerse en el módulo de supervisión 114 o en una memoria accedida por el módulo de supervisión 114 o algún otro componente de SoC 102. En una realización tal información puede almacenarse en una tabla tal como la tabla de estados 500A de la Figura 5A. La tabla de estados 500A puede incluir niveles o estados, tales como F0, F1, F2, F3, etc. que representan un nivel o estado de actividad esperado para cada componente del SoC 102 para cada caso de uso. La tabla de estados 500A es ilustrativa y en diversas realizaciones puede incluir más o menos casos de uso, más o menos componentes y/o más o menos niveles/estados de actividad.
En algunas realizaciones la tabla de estados 500A puede ser fija, mientras en otras realizaciones el módulo de supervisión 114 u otro componente puede tener la capacidad de modificar la tabla de estados 500A para cambiar uno o más de los valores de nivel de actividad, añadir o borrar casos de uso, añadir o borrar componentes, etc. Adicionalmente, se entenderá que en lugar de una única tabla de estados 500A como se ilustra en la Figura 5A, la información en la tabla de estados 500A puede estar distribuida en su lugar en múltiples tablas diferentes, tales como una tabla de estados individual (no mostrada) para cada componente del SoC 102. La tabla de estados 500A puede ser una tabla de consulta. La tabla de estados 500A puede almacenarse o contenerse en el módulo de supervisión 114 en una realización, o puede almacenarse en una memoria y accederse por el módulo de supervisión 114, tal como cuando módulo de supervisión 114 se implementa en software.
Además de, o en lugar de, la información acerca del caso de uso, el módulo de supervisión 114 puede recibir u obtener información desde las propias memorias intermedias (tales como las FIFO 250A-250I de la Figura 2) que puede indicar que la memoria o memorias intermedias necesitan redimensionarse, o que pueden usarse en la determinación para redimensionar una o más memoria o memorias intermedias. Por ejemplo, cuando una FIFO 250A-250I ha empezado a llenarse con datos, o contiene datos por encima de un nivel umbral, la FIFO 250A-250I puede enviar una señal que indica que se está quedando sin espacio, señal que puede recibirse por el módulo de supervisión 114.
Volviendo a la Figura 3, como parte de la determinación o entendimiento del caso de uso, o como parte de una determinación separada después de que se entiende el caso de uso, el módulo de supervisión 114 puede contener o puede recibir u obtener información para determinar una cantidad para redimensionar una o más memorias intermedias. Por ejemplo, dependiendo de un nivel de actividad o nivel de actividad esperado o "estado" de un componente, para un caso de uso particular, el módulo de supervisión 114 puede determinar una cantidad para redimensionar la memoria intermedia para ese componente.
En una realización, tal determinación puede ser binaria - es decir, si el componente está "activo" dimensionar la memoria intermedia a la profundidad "A" y si el componente está "inactivo" dimensionar la memoria intermedia una profundidad "B". En algunas implementaciones de esta realización, las profundidades "A" y "B" pueden ser un valor fijo para cada componente del SoC 102 - en otras palabras cada componente activo tiene su memoria intermedia redimensionada a la profundidad "A" y cada componente inactivo tiene su memoria intermedia redimensionada a una profundidad "B" en donde los valores de "A" y "B" son los mismos para todos los componentes. En tales implementaciones el valor de "B" puede ser una fracción de "A" tal como el 50 % de la profundidad "A". En otras implementaciones de esta realización, los valores de "A" y "B" pueden variar de componente a componente.
En una realización diferente, la determinación de la cantidad para redimensionar la memoria intermedia puede no ser binaria - es decir, la cantidad que se redimensiona la memoria intermedia puede depender del nivel de actividad relativo del componente. En tales realizaciones, la relación de nivel de actividad con tamaño de memoria intermedia puede almacenarse en una tabla, tal como la tabla de consulta (LUT) 500B de la Figura 5B. Como se ilustra en la LUT 500 ilustrativa de la Figura 5B, cada nivel o estado de actividad de un componente para un caso de uso particular resulta en una reducción diferente en el tamaño de memoria intermedia (tal como reducción en una o más de las FIFO 250A-250I de la Figura 2).
En algunas realizaciones la información de tamaño de memoria intermedia para todos los componentes del SoC 102 puede gobernarse por una única tabla tal como LUT 500B. En otras realizaciones, cada componente del SoC 102 puede tener una LUT 500B individual, y que los valores de reducción de tamaño de memoria intermedia pueden variar para cada componente. Por ejemplo, el estado F1 para la cámara 248 puede resultar en una reducción del 50 % en el tamaño de memoria intermedia, mientras el estado F1 para la GPU 282 puede resultar en una reducción del 25 % como se ilustra en LUT 500B. La LUT 500B puede almacenarse en el módulo de supervisión 114, o puede almacenarse en una memoria y accederse por el módulo de supervisión 114, tal como cuando el módulo de supervisión 114 se implementa en software. En algunas realizaciones la LUT 500B puede ser fija, mientras en otras realizaciones el módulo de supervisión 114 u otro componente puede tener la capacidad de modificar la LUT 500B para añadir o borrar niveles de actividad, cambiar los valores de reducción de tamaño de memoria intermedia para uno o más niveles de actividad, etc.
Pasando a la Figura 6, un diagrama de bloques que ilustra ilustrativo componentes de un SoC 102 durante la operación de un sistema y método para dimensionamiento de memoria intermedia FIFO dinámica para otro caso de uso de "juego". Para el caso de uso de "juego" de la Figura 6, se espera que el controlador de memoria 308, la GPU 282 y la CPU 222 serán componentes más activos como se refleja por la región sombreada de la Figura 6. Las memorias intermedias para estos componentes activos, FIFO 250E (para la GPU 282), FIFO 250D (para la CPU 222) y FIFO 250J (para el controlador de memoria 308), se dimensionarán para acomodarse el nivel de actividad esperado - es decir, una profundidad relativamente mayor de memoria intermedia. Esto se refleja en la Figura 6 con la indicación de que las FIFo 250D, 250E y 250J se dimensionarán para el nivel de actividad F0. Como se indica en la LUT 500B de la Figura 5B, el nivel de actividad F0 para este ejemplo corresponde a un tamaño de reducción de memoria intermedia del 0 % - es decir una memoria intermedia dimensionada completa/máxima.
Continuando con este ejemplo de caso de uso de "juego", se espera que el controlador de memoria 308 será el siguiente componente más activo. La memoria intermedia FIFO 250H para el módem se dimensionará para acomodarse a este nivel de actividad esperado reflejado en la Figura 6 con la indicación de que la FIFO 250H se dimensionará para el nivel de actividad F1. Como se indica en la LUT 500B de la Figura 5B, el nivel de actividad F1 para este ejemplo corresponde a un tamaño de reducción de memoria intermedia del 25 % - es decir, un tamaño de memoria intermedia ligeramente reducido.
De manera similar, se espera que la cámara 248 será incluso menos activa para este caso de uso de "juego" y la FIFO 250G para cámara 248 en la Figura 6 se dimensiona para el nivel de actividad F2. El nivel de actividad F2 para este ejemplo corresponde a un tamaño de reducción de memoria intermedia del 50 % - es decir, una profundidad de memoria intermedia más pequeña que el estado o bien F0 o bien F1. La CPU 222-228, el módem 260 y el codificador de vídeo 234 estará moderadamente activos. Finalmente, se espera que el codificador de vídeo 234 sea el componente menos activo en este caso de uso ilustrativo y la FIFO 250B para el codificador de vídeo 234 se dimensiona para el nivel de actividad F3 que corresponde a una reducción en tamaño o profundidad de memoria intermedia del 75 %.
Por lo tanto, para los componentes que se espera que estén menos activos para este caso de uso, puede reducirse el tamaño y profundidad de las memorias intermedias acopladas a estos componentes, evitando o reduciendo la potencia de fuga sin tener impacto en el rendimiento del PCD. De nuevo el dimensionamiento dinámico de las memorias intermedias en este ejemplo adicional de caso de uso de "juego" proporciona ahorros de potencia/reducción de potencia adicionales más allá de los ahorros de potencia/reducciones de potencia que pueden estar disponibles a partir de métodos tradicionales de reducción de potencia basados en tensión/frecuencia aplicados a los componentes inactivos del SoC 102.
La Figura 6 proporciona un ejemplo ilustrativo de cómo pueden cambiarse dinámicamente las memorias intermedias basándose en el caso de uso, o un cambio en el caso de uso. Como se entenderá, diferentes casos de uso pueden resultar en las memorias intermedias dimensionándose de forma diferente que la indicada en la Figura 6. Adicionalmente, en algunas realizaciones, una designación del mismo estado o nivel de actividad para las memorias intermedias de dos diferentes componentes (tal como F0 para la FIFO 250J del controlador de memoria 3078 y la FIFO 250E para el GPU 282) puede no indicar que las memorias intermedias se dimensionan igual. En otras palabras, el estado f 0 para la memoria intermedia (FIFO 250J) del controlador de memoria 308 puede corresponder a un tamaño o profundidad de memoria intermedia, mientras el estado F0 para la memoria intermedia (FIFO 250E) de la GPU 282 puede corresponder a un tamaño o profundidad diferente.
Pasando a la Figura 7A, un diagrama de bloques de aspectos de una FIFO 700A ilustrativa con un primer tamaño o profundidad. La FIFO 700A puede ser una memoria intermedia tal como las FIFO 250A-250J analizadas anteriormente. En el ejemplo de la Figura 7A, la FIFO 700A está al tamaño o profundidad de memoria intermedia más completo/máximo, y se comprende de una pluralidad de direcciones de registradores o memoria (denominadas en este documento como las porciones 702A-702F). Como se ilustra en la Figura 7A, la FIFO 700A tiene un lado de escritura 704 en el que los datos pueden situarse para almacenarse en memoria intermedia y un lado de lectura 706 desde el que el componente acoplado a la FIFO 770A puede leer los datos almacenados en memoria intermedia. Adicionalmente, existe un punto medio 708 que refleja el "centro" de la FIFO 770A - es decir, la ubicación en la que el número de porciones 702A-702C en un lado del punto medio 708 es igual al número de porciones 702D-702F en el otro lado del punto medio 708.
La Figura 7B ilustra la FIFO 700A de la Figura 7B después de que se ha reducido a un segundo tamaño o profundidad (FIFO 700B). Como se indica en la Figura 7B, un mecanismo para reducir el tamaño y profundidad de una memoria intermedia de acuerdo con los sistemas y métodos divulgados en este documento es esperar hasta que tanto el puntero de escritura 710 como el puntero de lectura 712 estén en el mismo lado del punto medio 708 y, a continuación, apagar o desactivar la potencia de una o más porciones 702D-702E en el otro lado de punto medio 708.
En el ejemplo de la Figura 7B, una reducción en tamaño o profundidad de memoria intermedia del 50 % se logra esperando hasta que el puntero de escritura 710 y el puntero de lectura 712 estén en el lado izquierdo o de lectura 706 del punto medio 708. Un único conmutador de potencia puede operarse, a continuación, para apagar las porciones 702D-702F (es decir, la mitad derecha de FIFO 700b ) para reducir la FIFO 770B a una mitad del tamaño y profundidad de FIFO 770A de la Figura 7A como se indica por la trama en las porciones 702D-702F. Como se entenderá, un mecanismo similar puede usarse para conseguir cualquier reducción en tamaño o profundidad de memoria intermedia deseada (por ejemplo, 25 %, 50 %, 75 %, 85 %, etc.). Como también se entenderá, en un punto posterior en tiempo, la FIFO 770B puede devolverse al tamaño más grande por el conmutador de potencia que opera para encender de nuevo las porciones 702D-702F.
En otras implementaciones, la misma FIFO 700B también puede reducirse a tamaños o profundidades variables con la implementación de conmutadores de potencia o puertas de potencia adicionales. Por ejemplo, un primer conmutador de potencia para apagar una primera porción 702F puede resultar en una reducción en tamaño o profundidad de memoria intermedia del 25 % para la FIFO 700B. Un segundo conmutador de potencia para apagar también una segunda porción 702E puede resultar en una reducción en tamaño o profundidad de memoria intermedia del 50 % para la FIFO 700B. En un punto posterior en tiempo, la FIFO 770B puede devolverse a un tamaño mayor por el conmutador o conmutadores de potencia que operan para encender de vuelta una o más de las porciones 702D-702F para ampliar la FIFO 770B al tamaño o profundidad deseada.
En algunas realizaciones puede ser deseable proporcionar múltiples conmutadores de potencia para permitir reducciones variables en tamaño o profundidad de memoria intermedia de una FIFO 700b particular. En otras realizaciones, los costes adicionales, potencia, etc., de cada conmutador de potencia y/o circuitería de control necesarios para controlar de forma variable el tamaño o profundidad de memoria intermedia de un FIFO 700B particular pueden no garantizarse. En tales realizaciones puede ser más deseable un único conmutador de potencia para permitir un único tamaño de reducción (tal como una reducción del 50 %, por ejemplo). Que tal control de tamaño o profundidad de memoria intermedia variable sea deseable puede depender de una diversidad de factores, incluyendo el componente del SoC 102 para el que se usará una memoria intermedia, los ahorros de potencia esperados de la reducción del tamaño de la memoria intermedia particular, etc. Las Figuras 7A-7B ilustran un mecanismo para ajustar dinámicamente el tamaño de
La Figura 8 es un diagrama de flujo lógico que ilustra la operación de un método ilustrativo 800 para controlar dinámicamente un tamaño de memoria intermedia en un dispositivo informático. El método 800 comienza en el bloque 802 con una determinación de un primer caso de uso para un dispositivo informático, tal como el PCD 100. El primer caso de uso puede ser uno de una pluralidad de casos de uso. La pluralidad de casos de uso pueden predefinirse y establecerse en algunas realizaciones, mientras en otras realizaciones la pluralidad de casos de uso puede cambiar o alterarse con el paso del tiempo. La determinación del bloque 802 puede ser la identificación de un caso de uso particular que se aplica para cómo se está operando el PCD 100 en la actualidad. En algunas realizaciones la determinación de bloque 802 puede ser un caso de uso por defecto en el caso en el que la operación actual del PCD 100 no se ajusta a los otros casos de uso predefinidos.
La determinación del primer caso de uso en el bloque 802 puede hacerse por el módulo de supervisión 114 en una realización (véase la Figura 3), y el módulo de supervisión 114 en tales realizaciones puede recibir u obtener información desde diversos componentes para determinar o entender qué caso de uso se aplica para cómo se está usando el PCD 100 en la actualidad. Tal información recibida puede incluir el nivel de actividad presente de uno o más componentes en el PCD 100 o el SoC 102 (tal como el GPU 282, la cámara 248, el módem 260, el codificador de vídeo 232, etc. de la Figura 2 y/o la Figura 3).
La determinación en el bloque 802 puede basarse adicionalmente, o como alternativa, en el conocimiento de o información acerca de las aplicaciones o programas que se están ejecutando del PCD 100, o que están a punto de ejecutarse por el PCD 100. Tal conocimiento o información puede ser directo (tal como software que entiende qué aplicaciones, instrucciones o código se ejecutan en el SoC 102) o puede inferirse (tal como basándose en entradas de usuario). La determinación en el bloque 802 también puede basarse adicionalmente, o como alternativa, en un evento de desencadenamiento, tal como el reinicio del PCD 100 o el SoC 102 desde un estado de apagado.
El método 800 continúa al bloque 804 en el que se obtiene el tamaño de memoria intermedia o información de profundidad para el primer caso de uso. La memoria o memorias intermedias pueden ser las FIFO 250A-250J analizadas anteriormente para las Figuras 4A-4B y la Figura 6. Dependiendo del caso de uso determinado en el bloque 802, puede esperarse que diversos componentes del SoC 102 sean más o menos activos. En el bloque 804, los valores para el tamaño o profundidad de memoria intermedia para cada FIFO 250A-250J asociada con los diversos componentes del SoC 102 se obtienen o determinan para el primer caso de uso.
En algunas realizaciones, obtener la información de tamaño de memoria intermedia en el bloque 804 puede comprender leer la información de tamaño de memoria intermedia de una o más tablas. Por ejemplo, puede obtenerse un estado o nivel de actividad esperado para uno o más componentes para el caso de uso determinado de una tabla tal como la tabla de estados 500A de la Figura 5A. Como se ha analizado anteriormente, en lugar de una única tabla 500A, pueden mantenerse diferentes tablas de estados (no mostradas) para cada componente de SoC 102 en algunas implementaciones. Adicionalmente, o como alternativa, un valor de tamaño reducción para una o más memorias intermedias (cada memoria intermedia asociada con un componente en una realización) puede obtenerse de una tabla tal como la LUT 500B de la Figura 5B. Como se entenderá, pueden implementarse otras formas de obtener el tamaño de memoria intermedia o información de profundidad para el primer caso de uso en lugar de tablas. Adicionalmente, en algunas realizaciones, el bloque 804 puede no ser una etapa separada, sino que en su lugar puede ser parte de la determinación del bloque 802.
El método 800 continúa al bloque 806 en el que, basándose en el primer caso de uso determinado y la información de tamaño de memoria intermedia obtenida, un primer tamaño de memoria intermedia se establece para memoria o memorias asociadas con uno o más componentes del dispositivo informático. La memoria o memorias intermedias pueden ser las FIFO 250A-250J analizadas anteriormente para las Figuras 4A-4B y la Figura 6. Dependiendo del caso de uso determinado en el bloque 802, puede esperarse que diversos componentes del SoC 102 sean más o menos activos. En el bloque 806, el tamaño o profundidad de memoria intermedia para cada FIFO 250A-250J asociada con los diversos componentes del SoC 102 se ajusta según se necesite de acuerdo con el caso de uso determinado e información de tamaño de memoria intermedia obtenida.
En una realización, esto puede incluir reducir el tamaño o profundidad de memoria intermedia de componentes que se espera que sean menos activos o inactivos y/o incrementar el tamaño o profundidad de memoria intermedia de componentes que se espera que sean más activos. Como se ha analizado anteriormente, la cantidad de aumento o disminución de tamaño o profundidad de memoria intermedia puede variar por componente y/o por caso de uso. El ajuste de tamaño de memoria intermedia puede lograrse por cualquier mecanismo deseado, tal como el mecanismo analizado para las Figuras 7A-7B anteriores. Adicionalmente, tal ajuste de tamaño de memoria intermedia puede lograrse además de, o en lugar de, cualquier otra estrategia de migración o control de potencia que está implementando el PCD 100 o SoC 102.
En el bloque 808 se determina un segundo caso de uso, diferente del primer caso de uso, para el dispositivo informático. Esta determinación del bloque 808 puede hacerse de la misma manera como la determinación analizada anterior para el bloque 802 en respuesta a cambiar condiciones en componentes del PCD 100 y/o un cambio en cómo se está usando el PCD 100. A modo de ejemplo, el PCD 100 puede cambiar desde un caso de uso de "juego" a un caso de uso de "comunicación", tal como cuando un usuario deja de jugar a un juego en el PCD 100 para hacer o recibir una llamada de teléfono en el PCD 100. En el bloque 808 se detecta o determina este cambio en caso de uso y/u operación de cambio del PCD 100, tal como por el módulo de supervisión 114. Como se ha analizado anteriormente, el módulo de supervisión 114 puede implementarse en software.
La determinación en el bloque 808 puede hacerse basándose en información desde diversos componentes para determinar o entender que el uso/estado de PCD 100 ha cambiado y para determinar qué caso de uso se aplica a cómo se está usando el PCD 100 en la actualidad. Tal información recibida puede incluir el nivel de actividad presente de uno o más componentes en el PCD 100 o el SoC 102 (tal como el GPU 282, la cámara 248, el módem 260, el codificador de vídeo 232, etc. de la Figura 2 y/o la Figura 3). La determinación en el bloque 808 puede basarse adicionalmente, o como alternativa, en el conocimiento de o información acerca de las aplicaciones o programas que se están ejecutando por el PCD 100, que ha dejado de ejecutarse en el PCD 100, y/o que están a punto de ejecutarse por el PCD 100. Tal conocimiento o información puede ser directo (tal como software que entiende qué aplicaciones, instrucciones o código se ejecutan en el SoC 102) o puede inferirse (tal como basándose en entradas de usuario).
La determinación en el bloque 808 también puede basarse adicionalmente, o como alternativa, en un evento de desencadenamiento, tal como el reinicio del PCD 100 o SoC 102 desde un estado apagado anterior. Como en el bloque 802 anterior, la determinación de bloque 808 puede ser la identificación de un segundo caso de uso particular para cómo se está operando el PCD 100 en la actualidad diferente del primer caso de uso. En algunas realizaciones la determinación de bloque 806 puede ser un caso de uso por defecto en el caso en el que la operación actual del PCD 100 no se ajusta a los otros casos de uso predefinidos.
El método 800 continúa al bloque 810 en el que se obtiene el tamaño de memoria intermedia o información de profundidad para el segundo caso de uso. La memoria o memorias intermedias pueden ser las FIFO 250A-250J analizadas anteriormente para las Figuras 4A-4B y la Figura 6. Dependiendo del segundo caso de uso determinado en el bloque 808, puede esperarse que diversos componentes del SoC 102 sean más o menos activos que lo que fueron para el primer caso de uso. En el bloque 810, para el segundo caso de uso se obtienen o determinan nuevos valores para el tamaño o profundidad de memoria intermedia para cada FIFO 250A-250J asociada con los diversos componentes del SoC 102. Se espera que para una o más de las memorias intermedias estos nuevos y segundos valores para el tamaño o profundidad de memoria intermedia puedan ser diferentes de los primeros valores para el tamaño o profundidad de memoria intermedia obtenida o establecida para el primer caso de uso.
En algunas realizaciones, obtener la información del nuevo o segundo tamaño de memoria intermedia información en el bloque 810 puede comprender leer la información de tamaño de memoria intermedia desde una o más tablas tales como la tabla de estados 500A de la Figura5A y/o la LUT 500 de la Figura 5B como se ha analizado para el bloque 804. Como se entenderá, pueden implementarse otras formas de obtener tamaño de memoria intermedia o información de profundidad para el segundo caso de uso en lugar de tablas. Adicionalmente, en algunas realizaciones, el bloque 810 puede no ser una etapa separada, sino que en su lugar puede ser parte de la determinación del bloque 808.
En el bloque 812 se establece un segundo tamaño de memoria intermedia para memoria o memorias asociadas con uno o más componentes del dispositivo informático en el que, basándose en el segundo caso de uso determinado y la información de tamaño de memoria intermedia obtenida para el segundo caso de uso. La memoria o memorias intermedias pueden ser, de nuevo, las FIFO 250A-250J analizadas anteriormente para las Figuras 4A-4B y la Figura 6. Dependiendo del caso de uso determinado en el bloque 808, puede esperarse que diversos componentes del SoC 102 sean más o menos activos. En el bloque 812, el tamaño o profundidad de memoria intermedia para cada FIFO 250A-250J asociada con los diversos componentes del SoC 102 se ajusta según sea necesario de acuerdo con el segundo caso de uso determinado.
En una realización, esto puede incluir reducir el tamaño o profundidad de memoria intermedia de componentes que se espera que sean menos activos o inactivos y/o incrementar el tamaño o profundidad de memoria intermedia de componentes que se espera que sean más activos en el segundo caso. Como se ha analizado anteriormente, la cantidad de aumento o disminución de tamaño o profundidad de memoria intermedia puede variar por componente y/o por caso de uso. Adicionalmente, tal ajuste de tamaño de memoria intermedia puede lograrse además de, o en lugar de, cualquier otra estrategia de migración o control de potencia que está implementando el PCD 100 o SoC 102.
El método 800 continúa al bloque opcional 814 en el que los datos de caso de uso o información para uno o más componentes del dispositivo informático pueden actualizarse si se necesita. Para realizaciones en las que la pluralidad de casos de uso pueden cambiar con el paso del tiempo, tales cambios pueden rastrearse (por ejemplo por el módulo de supervisión 114) y puede hacerse de vez en cuando en el bloque 814. Cambios a la información de caso de uso pueden resultar a partir de datos recopilados con el paso del tiempo durante la operación del PCD 100 acerca de cómo se usa el PCD 100. Tales cambios a la información de caso de uso en el bloque 814 puede incluir borrar casos de uso, añadir caso de uso nuevos, cambiar el nivel de actividad de uno o más componentes para un caso de uso, cambiar el tamaño o profundidad de memoria intermedia para un nivel de actividad particular para uno o más componentes o cualquier combinación de los mismos.
Para realizaciones en las que la pluralidad de casos de uso se predeterminan y pueden no cambiarse, el bloque 814 puede no realizarse o puede realizarse únicamente en parte. Por ejemplo, en algunas realizaciones, pueden no añadirse o borrarse casos de uso, pero pueden actualizarse valores de nivel de actividad y/o información de tamaño de memoria intermedia para niveles de actividad. El método 800, a continuación, continúa para supervisar el estado del PCD 100 y/o los componentes del SoC 102 para determinar cualquier cambio futuro o adicional en el caso de uso. En el caso de tales cambios futuros, los bloques 808, 810, 812 y/u 814 pueden reiterarse para un tercer caso de uso, cuarto caso de uso, etc. como se ha descrito anteriormente.
La Figura 8 describe únicamente una realización ilustrativa de un redimensionamiento de memoria intermedia dinámica del método 800 en un dispositivo informático tal como PCD 100. En otras realizaciones, pueden añadirse bloques o etapas adicionales al método 800. De manera similar, en algunas realizaciones diversos bloques o etapas mostradas en la Figura 8 pueden combinarse u omitirse, tal como por ejemplo combinar los bloques 802 y 804 en un bloque o etapa de predicción/obtención en lugar de los dos bloques separados ilustrados en la Figura 8. Como alternativa, los bloques 804 y 806 podrían combinarse en un bloque o etapa de tamaño de memoria intermedia de obtención/establecimiento en lugar de los dos bloques separados ilustrados en la Figura 8. Tales variaciones del método 800 pertenecen al alcance de esta divulgación.
Adicionalmente, ciertas etapas en los procesos o flujos de proceso descritos en esta memoria descriptiva preceden naturalmente a otros para que la invención funcione como se describe. Sin embargo, la divulgación no se limita al orden de las etapas descritas si tal orden o secuencia no altera la funcionalidad. Además, se reconoce que algunas etapas pueden realizarse antes, después o en paralelo (sustancialmente simultáneamente) con otras etapas sin alejarse del alcance de esta divulgación. En algunos casos, ciertas etapas pueden omitirse o no realizarse sin alejarse del alcance de la divulgación. Además, palabras tales como "después", "a continuación", "siguiente", "posteriormente", etc. no pretenden limitar el orden de las etapas. Estas palabras se usan simplemente para guiar al lector a través de la descripción del método 800 ilustrativo.
Las diversas operaciones y/o métodos descritos anteriormente pueden realizarse por diversos componente o componentes y/o módulo o módulos de hardware y/o software, y tal componente o componentes y/o módulo o módulos pueden proporcionar los medios para realizar tales operaciones y/o métodos. Adicionalmente, un experto en programación es capaz de escribir código informático o identificar hardware y/o circuitos apropiados para implementar el método divulgado o sistema sin dificultad basándose en los diagramas de flujo y descripción asociada en esta memoria descriptiva, por ejemplo.
Por lo tanto, la divulgación de un conjunto particular de instrucciones de código de programa o dispositivos de hardware detallados no se considera necesario para un entendimiento adecuado de cómo realizar y usar el sistema o método divulgado. La funcionalidad inventiva de los procesos habilitados por procesador reivindicados se explica en más detalle en la anterior descripción y en conjunto con los dibujos, que pueden ilustrar diversos flujos de proceso.
En uno o más aspectos ilustrativos como se ha indicado anteriormente, las funciones descritas pueden implementarse en hardware, software, firmware o cualquier combinación de los mismos. Si se implementan en software, las funciones pueden almacenarse en o transmitirse como una o más instrucciones o código en un medio legible por ordenador, tal como un medio legible por procesador no transitorio. Medio legible por ordenador incluye tanto medios de almacenamiento de datos y medios de comunicación que incluyen cualquier medio que facilita la transferencia de un programa desde una ubicación a otra.
Un medio de almacenamiento puede ser cualquier medio disponible que puede accederse por un ordenador o un procesador. A modo de ejemplo, y no como limitación, tal medio legible por ordenador puede comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento de disco óptico, almacenamiento de disco magnético u otros dispositivos de almacenamiento magnético, o cualquier otro medio que puede usarse para transportar o almacenar código de programa deseado en forma de instrucciones o estructuras de datos y que puede accederse por un ordenador. Disco magnético y disco óptico, como se usan en este documento, incluyen disco compacto ("CD"), disco láser, disco óptico, disco versátil digital ("DVD"), disco flexible y disco Blu-ray donde los discos magnéticos normalmente reproducen datos magnéticamente, mientras que los discos ópticos reproducen datos ópticamente con láseres. Combinaciones de lo anterior deberían incluirse también dentro del alcance de medio legible por ordenador no transitorio.
Aunque se han ilustrado y descrito en detalle aspectos seleccionados, se entenderá que pueden hacerse diversas sustituciones y alteraciones en este documento sin alejarse del alcance de la presente divulgación, según se define mediante las siguientes reivindicaciones.

Claims (15)

REIVINDICACIONES
1. Un método (800) para controlar dinámicamente un tamaño de memoria intermedia en un dispositivo informático en un dispositivo informático portátil, PCD, comprendiendo el método:
determinar (802) con un módulo de supervisión de un sistema en un chip, SoC, un primer caso de uso para el PCD, definiendo el primer caso de uso un primer nivel de actividad para una pluralidad de componentes del SoC; establecer (806) una pluralidad de memorias intermedias a un primer tamaño de memoria intermedia basándose en el primer caso de uso, en donde
cada una de la pluralidad de memorias intermedias se asocia a uno de la pluralidad de componentes del SoC, el primer tamaño de memoria intermedia para cada una de las memorias intermedias se basa en el primer nivel de actividad del componente asociado del SoC;
determinar (808) con el módulo de supervisión un segundo caso de uso para el PCD diferente del primer caso de uso, definiendo el segundo caso de uso un segundo nivel de actividad para la pluralidad de componentes del SoC; y
establecer (812) al menos una de la pluralidad de memorias intermedias a un segundo tamaño de memoria intermedia basándose en el segundo caso de uso, en donde el segundo tamaño de memoria intermedia para la al menos una memoria intermedia se basa en el segundo nivel de actividad del componente asociado del SoC, el segundo tamaño de memoria intermedia es diferente del primer tamaño de memoria intermedia.
2. El método de la reivindicación 1, en donde establecer la al menos una de la pluralidad de memorias intermedias a un segundo tamaño de memoria intermedia basándose en el segundo caso de uso comprende:
reducir la profundidad de memoria intermedia de la al menos una de la pluralidad de memorias intermedias.
3. El método de la reivindicación 2, en donde reducir la profundidad de memoria intermedia de la al menos una de la pluralidad de memorias intermedias comprende además:
reducir la profundidad de memoria intermedia por una cantidad variable dependiendo del segundo nivel de actividad del componente asociado del SoC.
4. El método de la reivindicación 1, en donde el primer tamaño de memoria intermedia para la memoria intermedia asociada con un primero de la pluralidad de componentes del SoC es diferente del primer tamaño de memoria intermedia para la memoria intermedia asociada con un segundo de la pluralidad de componentes del SoC.
5. El método de la reivindicación 1, en donde la pluralidad de memorias intermedias comprenden memorias intermedias primero en entrar-primero en salir, FIFO.
6. El método de la reivindicación 1, en donde:
establecer la pluralidad de memorias intermedias al primer tamaño de memoria intermedia basándose en el primer caso de uso comprende además obtener una primera información de tamaño para la pluralidad de memorias intermedias para el primer caso de uso, y
establecer la al menos una de la pluralidad de memorias intermedias al segundo tamaño de memoria intermedia basándose en el segundo caso de uso comprende además obtener una segunda información de tamaño para la pluralidad de memorias intermedias para el segundo caso de uso.
7. El método de la reivindicación 1, que comprende adicionalmente:
actualizar (814) datos de caso de uso para uno o más de la pluralidad de componentes del SoC, en donde actualizar datos de caso de uso comprende añadir un caso de uso nuevo, borrar uno de la pluralidad de casos de uso, cambiar un valor de nivel de actividad para uno o más casos de uso,
cambiar un valor de información de tamaño para uno o más de los niveles de actividad para uno o más de los casos de uso o una combinación de los mismos.
8. El método de la reivindicación 1, que comprende adicionalmente:
determinar con el módulo de supervisión un caso de uso N para el PCD diferente del caso de uso N-1, donde N es un número entero mayor que 2, definiendo el caso de uso N un nivel de actividad N para la pluralidad de componentes del SoC; y
establecer al menos una de la pluralidad de memorias intermedias a un tamaño de memoria intermedia N basándose en el caso de uso N, en donde el tamaño de memoria intermedia N para la al menos una memoria intermedia se basa en el nivel de actividad N del componente asociado del SoC, el tamaño de memoria intermedia N es diferente del tamaño de memoria intermedia N-1.
9. Un sistema informático para controlar dinámicamente un tamaño de memoria intermedia en un dispositivo informático en un dispositivo informático portátil, PCD, comprendiendo el sistema:
medios para determinar (802) con un módulo de supervisión de un sistema en un chip, SoC, un primer caso de uso para el PCD, definiendo el primer caso de uso un primer nivel de actividad para una pluralidad de componentes del SoC;
medios para establecer (806) una pluralidad de memorias intermedias a un primer tamaño de memoria intermedia basándose en el primer caso de uso, en donde
cada una de la pluralidad de memorias intermedias se asocia a uno de la pluralidad de componentes del SoC, el primer tamaño de memoria intermedia para cada una de las memorias intermedias se basa en el primer nivel de actividad del componente asociado del SoC;
medios para determinar (808) con el módulo de supervisión un segundo caso de uso para el PCD diferente del primer caso de uso, definiendo el segundo caso de uso un segundo nivel de actividad para la pluralidad de componentes del SoC; y
medios para establecer (812) al menos una de la pluralidad de memorias intermedias a un segundo tamaño de memoria intermedia basándose en el segundo caso de uso, en donde el segundo tamaño de memoria intermedia para la al menos una memoria intermedia se basa en el segundo nivel de actividad del componente asociado del SoC, el segundo tamaño de memoria intermedia es diferente del primer tamaño de memoria intermedia.
10. El sistema informático de la reivindicación 9, en donde los medios para establecer la al menos una de la pluralidad de memorias intermedias a un segundo tamaño de memoria intermedia basándose en el segundo caso de uso comprenden:
medios para reducir la profundidad de memoria intermedia de la al menos una de la pluralidad de memorias intermedias,
en donde los medios para reducir la profundidad de memoria intermedia de la al menos una de la pluralidad de memorias intermedias comprenden además:
medios para reducir la profundidad de memoria intermedia por una cantidad variable dependiendo del segundo nivel de actividad del componente asociado del SoC.
11. El sistema informático de la reivindicación 9, en donde el primer tamaño de memoria intermedia para la memoria intermedia asociada con un primero de la pluralidad de componentes del SoC es diferente del primer tamaño de memoria intermedia para la memoria intermedia asociada con un segundo de la pluralidad de componentes del SoC.
12. El sistema informático de la reivindicación 9, en donde la pluralidad de memorias intermedias comprenden memorias intermedias primero en entrar-primero en salir, FIFO.
13. El sistema informático de la reivindicación 9, en donde:
los medios que establecen la pluralidad de memorias intermedias al primer tamaño de memoria intermedia basándose en el primer caso de uso comprenden además medios para obtener una primera información de tamaño para la pluralidad de memorias intermedias para el primer caso de uso, y
los medios para establecer la al menos una de la pluralidad de memorias intermedias al segundo tamaño de memoria intermedia basándose en el segundo caso de uso comprenden además medios para obtener una segunda información de tamaño para la pluralidad de memorias intermedias para el segundo caso de uso.
14. El sistema informático de la reivindicación 9, que comprende adicionalmente: medios para actualizar (814) datos de caso de uso para uno o más de la pluralidad de componentes del SoC, en donde actualizar datos de caso de uso comprende añadir un caso de uso nuevo, borrar uno de la pluralidad de casos de uso, cambiar un valor de nivel de actividad para uno o más casos de uso, cambiar un valor de información de tamaño para uno o más de los niveles de actividad para uno o más de los casos de uso o una combinación de los mismos.
15. Un programa informático que comprende instrucciones ejecutables para provocar que al menos un ordenador realice un método de acuerdo con una de las reivindicaciones 1 a 8 cuando se ejecuta.
ES18733123T 2017-06-27 2018-06-01 Sistema y método para dimensionar memoria intermedia dinámica en un dispositivo informático Active ES2871099T3 (es)

Applications Claiming Priority (2)

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
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
ES2871099T3 true ES2871099T3 (es) 2021-10-28

Family

ID=62685230

Family Applications (1)

Application Number Title Priority Date Filing Date
ES18733123T Active ES2871099T3 (es) 2017-06-27 2018-06-01 Sistema y método para dimensionar memoria intermedia dinámica en un dispositivo informático

Country Status (9)

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

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
WO2009035410A2 (en) * 2007-09-12 2009-03-19 Telefonaktiebolaget L M Ericsson (Publ) Depth buffer compression
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
US9491505B2 (en) * 2012-02-28 2016-11-08 Qualcomm Incorporated Frame capture and buffering at source 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
US9823864B2 (en) * 2014-06-02 2017-11-21 Micron Technology, Inc. Systems and methods for throttling packet transmission 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
BR112019026957A2 (pt) 2020-06-30
US10713189B2 (en) 2020-07-14
AU2018295010B2 (en) 2022-07-07
WO2019005424A1 (en) 2019-01-03
CN110809754B (zh) 2023-06-30
EP3646162A1 (en) 2020-05-06
TW201905690A (zh) 2019-02-01
CN110809754A (zh) 2020-02-18
EP3646162B1 (en) 2021-04-21
KR20200018495A (ko) 2020-02-19
US20180373652A1 (en) 2018-12-27
TWI772438B (zh) 2022-08-01
AU2018295010A1 (en) 2019-12-05
SG11201910416XA (en) 2020-01-30
KR102623137B1 (ko) 2024-01-09

Similar Documents

Publication Publication Date Title
KR101324885B1 (ko) 복수의 회로들에서의 성능 파라미터들 조정
BR112020019436A2 (pt) Sistema, aparelho e método para restrição otimizada de um processador
EP3345070B1 (en) Systems and methods for dynamically adjusting memory state transition timers
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
US9477409B2 (en) Accelerating boot time zeroing of memory based on non-volatile memory (NVM) technology
JP2016076251A (ja) モバイルデバイス内の組み込まれた不揮発性メモリとメイン揮発性メモリとの並列使用
JP2017529600A (ja) システム・オン・チップにおけるメモリアクセスの電力管理
CN105706168B (zh) 用于经由数据掩蔽来降低存储器i/o功率的系统、方法和计算机可读介质
CN102597912A (zh) 用于平台功率节省的协调设备和应用程序中断事件
US8078800B2 (en) Dynamic operating point modification in an integrated circuit
US10754415B2 (en) Control apparatus that controls memory and control method thereof
US20170068304A1 (en) Low-power memory-access method and associated apparatus
KR20070096844A (ko) 집적 회로 및 그것을 이용한 신호 처리 장치
US9734890B1 (en) Systems and methods for individually configuring dynamic random access memories sharing a common command access bus
ES2871099T3 (es) Sistema y método para dimensionar memoria intermedia dinámica en un dispositivo informático
US20220121594A1 (en) Soc architecture to reduce memory bandwidth bottlenecks and facilitate power management
JP2013007974A (ja) 電子機器、電子機器の制御方法、電子機器の制御プログラム
BR112019026957B1 (pt) Método e sistema de computador para controlar dinamicamente o tamanho de buffer em um dispositivo de computação em um dispositivo de computação portátil, e, memória
JP2009251888A (ja) 半導体メモリ装置
JP5952019B2 (ja) 情報処理装置、半導体装置、及び消費電力抑制方法
US12381179B2 (en) Modular low latency electrical sequence for die-to-die interface
TWM532048U (zh) 電腦系統