ES2801598T3 - Generación de habilitación de compuertas de reloj - Google Patents

Generación de habilitación de compuertas de reloj Download PDF

Info

Publication number
ES2801598T3
ES2801598T3 ES17817485T ES17817485T ES2801598T3 ES 2801598 T3 ES2801598 T3 ES 2801598T3 ES 17817485 T ES17817485 T ES 17817485T ES 17817485 T ES17817485 T ES 17817485T ES 2801598 T3 ES2801598 T3 ES 2801598T3
Authority
ES
Spain
Prior art keywords
clock
clock signal
pipeline
packets
counter
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
ES17817485T
Other languages
English (en)
Inventor
Adam Andrew Zerwick
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 ES2801598T3 publication Critical patent/ES2801598T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3237Power saving characterised by the action undertaken by disabling clock generation or distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/08Clock generators with changeable or programmable clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3656Software debugging using additional hardware using a specific debug interface
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/396Clock trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2117/00Details relating to the type or aim of the circuit design
    • G06F2117/04Clock gating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/06Power analysis or power optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/12Timing analysis or timing optimisation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Geometry (AREA)
  • Evolutionary Computation (AREA)
  • Quality & Reliability (AREA)
  • Advance Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Image Processing (AREA)
  • Information Transfer Systems (AREA)
  • Power Sources (AREA)

Abstract

Un sistema de compuertas de reloj para una canalización (410), que comprende: un dispositivo de compuertas de reloj (425) configurado para dejar pasar o bloquear una señal de reloj (clk) hacia la canalización; y un controlador de reloj (420) configurado para hacer un seguimiento de un número de paquetes de entrada en una entrada de la canalización, hacer un seguimiento de un número de paquetes de salida en una salida de la canalización, determinar si se ha de dejar pasar o bloquear la señal de reloj en base al número de los paquetes de entrada y el número de los paquetes de salida, ordenar al dispositivo de compuertas de reloj que deje pasar la señal de reloj si se determina dejar pasar la señal de reloj, y ordenar al dispositivo de compuertas de reloj que bloquee la señal de reloj si se determina bloquear la señal de reloj; en el que el controlador de reloj está configurado para ordenar al dispositivo de compuertas de reloj que bloquee la señal de reloj si el número de los paquetes de entrada coincide con el número de paquetes de salida, y ordenar al dispositivo de compuertas de reloj que deje pasar la señal de reloj si el número de los paquetes de entrada no coincide con el número de paquetes de salida.

Description

DESCRIPCIÓN
Generación de habilitación de compuertas de reloj
REFERENCIA CRUZADA A SOLICITUDES RELACIONADAS
[0001] La presente solicitud reivindica la prioridad y el beneficio de la solicitud provisional n.° 62/433,547 presentada en la Oficina de Patentes y Marcas de EE. UU. el 13 de diciembre de 2016, y la solicitud no provisional n.° 15/666,107 presentada en la Oficina de Patentes y Marcas de EE. UU, el 1 de agosto de 2017.
ANTECEDENTES
Campo
[0002] Los aspectos de la presente divulgación se refieren a las compuertas de reloj, y más en particular, a la generación de habilitación de compuertas de reloj.
Antecedentes
[0003] Reducir el consumo de energía en un dispositivo móvil es importante para prolongar la vida útil de la batería del dispositivo móvil. Un contribuyente significativo al consumo de energía de un chip (una pastilla) en un dispositivo móvil es la energía dinámica, que se debe a la conmutación de los transistores en el chip. En este sentido, se han diseñado diversos sistemas de reducción de energía para reducir el consumo de energía dinámica en un chip. Un sistema conlleva bloquear el paso de una señal de reloj hacia un circuito (por ejemplo, una canalización) en el chip cuando el circuito no está en uso (por ejemplo, no está procesando datos). El bloqueo del paso de la señal de reloj hacia el circuito detiene la conmutación de los transistores del circuito, reduciéndose de este modo la energía dinámica.
[0004] Se llama la atención sobre el documento US 2004/032855 A1 que describe un circuito de procesamiento de datos de comunicación que controla adecuadamente una operación de activación/desactivación de señales de reloj, con lo cual se reduce por tanto eficazmente el consumo de energía. El circuito de procesamiento de datos de comunicación procesa datos de comunicación en base a una señal de reloj que se va a introducir. El circuito de procesamiento de datos de comunicación incluye una sección de procesamiento de paquetes para procesar datos de comunicación, un contador de paquetes para discernir entre la presencia y la ausencia de datos de comunicación en proceso en la sección de procesamiento de paquetes, y un controlador de reloj para introducir o detener una señal de reloj destinada a la sección de procesamiento de paquetes como respuesta a una salida del contador de paquetes.
[0005] Se llama además la atención sobre el documento EP 2 124 130 A2 que describe un procesador de paquetes que tiene una o dos o más unidades de procesamiento de paquetes con un detector de paquetes que detecta si existe o no un paquete en una unidad de procesamiento de paquetes, y facilita una señal de detección de paquetes que indica un resultado de la detección, y un controlador de frecuencia de reloj que controla un reloj que se va a suministrar a la unidad de procesamiento de paquetes en base a la señal de detección de paquetes.
BREVE EXPLICACIÓN
[0006] La presente invención se expone en las reivindicaciones independientes, respectivamente. Los modos de realización preferentes de la invención se describen en las reivindicaciones dependientes.
[0007] A continuación, se presenta un sumario simplificado de uno o más modos de realización para permitir una comprensión básica de dichos modos de realización. Este sumario no es una visión general amplia de todos los modos de realización contemplados y no pretende identificar ni elementos clave o cruciales de todos los modos de realización ni delimitar el alcance de algunos o de todos los modos de realización. Su único propósito es presentar algunos conceptos de uno o más modos de realización de manera simplificada como preludio a la descripción más detallada que se presenta posteriormente.
[0008] Un aspecto se refiere a un sistema de compuertas de reloj para una canalización. El sistema de compuertas de reloj incluye un dispositivo de compuertas de reloj configurado para bloquear o dejar pasar una señal de reloj hacia la canalización, y un controlador de reloj. El controlador de reloj está configurado para hacer un seguimiento de un número de paquetes de entrada en una entrada de la canalización, hacer un seguimiento de un número de paquetes de salida en una salida de la canalización, determinar si se ha de bloquear o dejar pasar la señal de reloj en base al número de los paquetes de entrada y el número de los paquetes de salida, ordenar al dispositivo de compuertas de reloj que deje pasar la señal de reloj si se determina dejar pasar la señal de reloj, y ordenar al dispositivo de compuertas de reloj que bloquee la señal de reloj si se determina bloquear la señal de reloj.
[0009] Un segundo aspecto se refiere a un procedimiento de compuertas de reloj. El procedimiento incluye hacer un seguimiento de un número de paquetes de entrada en una entrada de una canalización, hacer un seguimiento de un número de paquetes de salida en una salida de la canalización y determinar si se debe bloquear o dejar pasar una señal de reloj hacia la canalización en base al número de los paquetes de entrada y el número de los paquetes de salida. El procedimiento también incluye dejar pasar la señal de reloj hacia la canalización si se determina dejar pasar la señal de reloj, y bloquear la señal de reloj si se determina bloquear la señal de reloj.
[0010] Para conseguir los fines anteriores y otros relacionados, el uno o más modos de realización incluyen las características descritas en mayor detalle más adelante en el presente documento y expuestas en particular en las reivindicaciones. La descripción siguiente y los dibujos adjuntos exponen con detalle determinados aspectos ilustrativos del uno o más modos de realización.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
[0011]
La FIG. 1 muestra un ejemplo de canalización de procesamiento de imágenes.
La FIG. 2A muestra un ejemplo de sistema de compuertas de reloj que incluye una máquina de estados finitos. La FIG. 2B muestra un diagrama de estados ejemplar para la máquina de estados finitos de la FIG. 2A. La FIG. 3 muestra un ejemplo de sistema de compuertas de reloj configurado para verificar si hay datos válidos y/o una señal de listo en cada fase de una canalización.
La FIG. 4 muestra un ejemplo de sistema de compuertas de reloj de acuerdo con unos aspectos de la presente divulgación.
La FIG. 5 muestra una implementación ejemplar de un controlador de reloj de acuerdo con determinados aspectos de la presente divulgación.
La FIG. 6 muestra un ejemplo en el que el controlador de reloj de la FIG. 5 recibe una señal de reloj para operaciones de temporización del controlador de reloj de acuerdo con determinados aspectos de la presente divulgación.
La FIG. 7 es una tabla que muestra ejemplos de áreas de chips para diferentes procedimientos de compuertas de reloj y diferentes profundidades de canalización.
La FIG. 8 muestra un ejemplo de celda de compuertas de reloj (CGC) que se puede usar en un sistema de compuertas de reloj de acuerdo con determinados aspectos de la presente divulgación.
La FIG. 9 es un diagrama de flujo que ilustra un procedimiento para compuertas de reloj de acuerdo con determinados aspectos de la presente divulgación.
DESCRIPCIÓN DETALLADA
[0012] La descripción detallada expuesta a continuación, en relación con los dibujos adjuntos, pretende ser una descripción de diversas configuraciones y no pretende representar las únicas configuraciones en las cuales se pueden llevar a la práctica los conceptos descritos en el presente documento. La descripción detallada incluye detalles específicos con el propósito de permitir una plena comprensión de los diversos conceptos. Sin embargo, resultará evidente a los expertos en la técnica que estos conceptos se pueden llevar a la práctica sin estos detalles específicos. En algunos casos, se muestran estructuras y componentes bien conocidos en forma de diagrama de bloques para evitar ofuscar dichos conceptos.
[0013] Un sistema puede incluir una canalización configurada para procesar datos de una fuente de datos, y facilitar los datos procesados a un colector de datos. La canalización incluye múltiples fases de canalización (también denominadas unidades o elementos de procesamiento) que procesan los datos (por ejemplo, secuencialmente). Se puede usar una canalización, por ejemplo, para procesar datos de imagen de una fuente de datos de imagen, tal como un sensor de cámara o una memoria.
[0014] A este respecto, la FIG. 1 muestra un ejemplo de canalización de procesamiento de imágenes 110 (también denominado módulo de procesamiento de señales de imagen (ISP)). La canalización de procesamiento de imágenes 110 recibe datos (por ejemplo, datos de imagen) desde una fuente de datos 105 (por ejemplo, un sensor de cámara, una memoria, etc.). La canalización de procesamiento de imágenes 110 procesa los datos recibidos y facilita los datos procesados (por ejemplo, datos de imagen procesados) a un colector de datos 115 (por ejemplo, un procesador de visualización, una unidad central de procesamiento (CPU), una memoria, etc.). La canalización de procesamiento de imágenes 110 incluye múltiples fases de canalización para procesar los datos. El procesamiento de imágenes puede incluir uno o más de los siguientes: filtrado de ruido, corrección de color, correlación de tonos, interpolación cromática, etc.
[0015] La canalización de procesamiento de imágenes 110 recibe una señal de reloj (denominada "clk") para operaciones de temporización de la canalización de procesamiento de imágenes 110. La señal de reloj clk se requiere para que la canalización de procesamiento de imágenes 110 procese datos. Sin embargo, hay determinados períodos de tiempo (por ejemplo, entre tramas) durante los cuales no hay datos en la canalización de procesamiento de imágenes 110 que se deban procesar. Durante estos períodos de tiempo, es deseable bloquear (inhabilitar) el paso de la señal de reloj clk hacia la canalización de procesamiento de imágenes 110 para ahorrar energía. El bloqueo de la señal de reloj clk reduce el consumo de energía dinámica al detener la conmutación de transistores en la canalización de procesamiento de imágenes 110 cuando no hay datos en la canalización 110 que se deban procesar.
[0016] La FIG. 2A muestra un ejemplo de compuertas de reloj de acuerdo con un enfoque. En este enfoque, un sistema de compuertas de reloj 215 incluye una máquina de estados finitos (FSM) de habilitación de reloj 220 y un dispositivo de compuertas de reloj 225. El dispositivo de compuertas de reloj 225 está configurado para bloquear y dejar pasar selectivamente la señal de reloj clk hacia la canalización de procesamiento de imágenes 210 bajo el control de la FSM 220, como se describe en mayor detalle a continuación.
[0017] En este ejemplo, la canalización de procesamiento de imágenes 210 recibe datos válidos (por ejemplo, datos de píxeles) de la fuente de datos (no mostrada en la FIG. 2A) en tramas, en la que cada trama incluye múltiples líneas de datos válidos. En la FIG. 2A, los datos válidos recibidos por la canalización de procesamiento de imágenes 210 desde la fuente de datos se denotan por "rx vld", y los datos válidos facilitados por la canalización de procesamiento de imágenes 210 al colector de datos (no mostrado en la FIG.2A) se denotan por "tx_vld".
[0018] En este ejemplo, la canalización de procesamiento de imágenes 210 recibe una señal de control de recepción (denotada por "rx_ctrl") desde la fuente de datos, y facilita una señal de control de transmisión (denotada por "tx_ctrl") al colector de datos. La señal de control de recepción rxctrl incluye marcadores que indican el inicio de una trama de entrada (denotado por ''rxsof''), el final de una trama de entrada (denotado por "rxeof"), el inicio de una línea de entrada (denotado por "rxSol") y el final de una línea de entrada (denotado por "rxeol"). La señal de control de transmisión tx_ctrl incluye marcadores que indican el inicio de una trama de salida (denotado por "txsof"), el final de una trama de salida (denotado por ''txeof''), el inicio de una línea de salida (denotado por "txSol"), y el final de una línea de salida (denotado por "txeol").
[0019] En funcionamiento, la FSM 220 recibe la señal de control de recepción rx_ctrl y la señal de control de transmisión tx_ctrl, y determina si se ha de ordenar al dispositivo de compuertas de reloj 225 que bloquee (inhabilite) la señal de reloj clk o deje pasar (habilite) la señal de reloj clk en base a las señales de control recibidas. Por ejemplo, la FSM 220 puede ordenar al dispositivo de compuertas de reloj 225 que bloquee (inhabilite) la señal de reloj clk entre el final de una trama de salida (txeof) y el inicio de la siguiente trama de entrada (rxsof), suponiendo que no haya datos válidos entre tramas adyacentes. La FSM 220 también puede ordenar al dispositivo de compuertas de reloj 225 que bloquee (inhabilite) la señal de reloj clk entre el final de una línea de salida (txeol) y el inicio de la siguiente línea de entrada (rxSol), suponiendo que no haya datos válidos entre líneas adyacentes. Por tanto, la FSM 220 puede bloquear (inhabilitar) la señal de reloj clk entre tramas adyacentes y entre líneas adyacentes dentro de una trama para reducir el consumo de energía. La FIG. 2B muestra un diagrama de máquina de estados ejemplar para la FSM 220 de acuerdo con determinados aspectos, en la que la señal de reloj clk se bloquea en el estado inactivo.
[0020] Un inconveniente de este enfoque es que la FSM 220 no bloquea (inhabilita) la señal de reloj clk cuando hay una o más "burbujas" dentro de una línea activa, en el que una burbuja es un espacio sin datos válidos. Por tanto, este enfoque pierde oportunidades para bloquear (inhabilitar) la señal de reloj clk durante determinados períodos de tiempo cuando no hay datos válidos en la canalización 210, desperdiciando de este modo energía.
[0021] La FIG. 3 muestra un ejemplo de compuertas de reloj de acuerdo con otro enfoque. En este enfoque, la canalización de procesamiento de imágenes 310 recibe datos válidos rx_vld desde la fuente de datos (no mostrada en la FIG.3), y facilita datos válidos tx_vld al colector de datos (no mostrado en la FIG.3). Además, la canalización de procesamiento de imágenes 310 facilita una señal de listo para recepción (denominada "rx_rdy") a la fuente de datos para indicar a la fuente de datos que la canalización de procesamiento de imágenes 310 está lista para recibir datos válidos desde la fuente de datos. La canalización de procesamiento de imágenes 310 también recibe una señal de listo para transmisión (denotada por "tx_rdy") desde el colector de datos que indica que el colector de datos está listo para recibir datos válidos desde la canalización de procesamiento de imágenes 310.
[0022] En este ejemplo, la canalización de procesamiento de imágenes 310 incluye unos cerrojos 315-1 a 315-3 para enclavar datos válidos (por ejemplo, datos de píxeles) en diferentes puntos de la canalización de procesamiento de imágenes 310, y unas unidades de procesamiento 320-1 a 320-3 (por ejemplo, lógica combinatoria) configuradas para procesar datos válidos en diferentes fases de canalización. La canalización de procesamiento de imágenes 310 también incluye una lógica 325-1 a 325-3 para generar la señal de listo para recepción rx_rdy. Por ejemplo, la lógica 325-1 a 325-3 puede verificar si en los cerrojos hay datos válidos y verificar la señal de listo para transmisión tx_rdy para determinar si la canalización 310 está lista para recibir más datos válidos desde la fuente de datos. Por ejemplo, la lógica 325-1 a 325-3 puede dejar de imponer la señal de listo para recepción rx_rdy si los cerrojos están llenos y la señal de listo para transmisión tx_rdy no se impone. En este caso, la canalización 310 puede estar llena y no puede facilitar (transmitir) datos válidos al colector de datos para dejar espacio en la canalización 310 a más datos válidos. Los cerrojos 315-1 a 315-3, las unidades de procesamiento 320-1 a 320-3 y/o la lógica 325-1 a 325-3 se pueden temporizar usando la señal de reloj clk (no mostrada en la FIG.3).
[0023] En este ejemplo, el sistema de compuertas de reloj incluye una lógica de control de compuertas de reloj 330 (representada como una compuerta OR en la FIG.3) que verifica si hay datos válidos en la canalización 310. La lógica de control de compuertas de reloj 330 realiza esta tarea verificando si hay datos válidos y/o una señal de listo en cada una de las fases de la canalización. Si la lógica de control de compuertas de reloj 330 detecta datos válidos y/o una señal de listo en al menos uno de los estados de canalización, la lógica de control de compuertas de reloj 330 habilita el paso de (deja pasar) la señal de reloj clk hacia la canalización de procesamiento de imágenes 310. Si la lógica de control de compuertas de reloj 330 no detecta ningún dato válido y/o señal de listo, la lógica de control de compuertas de reloj 330 inhabilita (bloquea) la señal de reloj clk.
[0024] A diferencia del enfoque de compuertas de reloj previo analizado anteriormente con referencia a la FIG.
2A, este enfoque puede bloquear (inhabilitar) el reloj de la señal de reloj clk durante una burbuja (espacio sin datos válidos) dentro de una línea activa. Esto se debe a que este enfoque bloquea (inhabilita) el reloj de la señal de reloj clk cuando no hay datos válidos en la canalización 310. Sin embargo, este enfoque potencialmente puede dar lugar a problemas relacionados con la temporización cuando la profundidad de la canalización es grande, las frecuencias de reloj son altas, etc. Esto es así porque el abanico de entrada (es decir, el número de entradas) en la lógica de control de compuertas de reloj 330 se incrementa a medida que la profundidad de canalización (número de fases de canalización) se incrementa. El incremento en el abanico de entrada incrementa los retardos de propagación en la lógica de control de compuertas de reloj 330, lo que hace que sea más difícil para la lógica de control de compuertas de reloj 330 cumplir determinados requisitos de temporización para un funcionamiento adecuado, especialmente a altas frecuencias. Como resultado, es difícil mejorar la canalización 310 usando este enfoque.
[0025] La FIG. 4 muestra un sistema de compuertas de reloj 415, de acuerdo con determinados aspectos de la presente divulgación. El sistema de compuertas de reloj 415 incluye un controlador de reloj 420 y un dispositivo de compuertas de reloj 425. El dispositivo de compuertas de reloj 425 está configurado para bloquear o dejar pasar selectivamente la señal de reloj clk hacia la canalización de procesamiento de imágenes 410 bajo el control del controlador de reloj 420, como se describe en mayor detalle a continuación.
[0026] En funcionamiento, la canalización de procesamiento de imágenes 410 recibe datos válidos (por ejemplo, datos de píxeles) desde la fuente de datos en paquetes y facilita datos válidos (por ejemplo, datos de píxeles) al colector de datos en paquetes. Cada paquete puede incluir N bits de datos válidos (por ejemplo, de 8 a 14 bits). El controlador de reloj 420 hace un seguimiento del número de paquetes de entrada en la entrada de la canalización de procesamiento de imágenes 410 (número de paquetes recibidos por la canalización de procesamiento de imágenes 410). El controlador de reloj 420 también hace un seguimiento del número de paquetes de salida en la salida de la canalización de procesamiento de imágenes 410 (número de paquetes facilitados por la canalización de procesamiento de imágenes 410). En un ejemplo, el controlador de reloj 420 hace un seguimiento del número de paquetes de entrada cuando se impone la señal de listo para recepción rx rdy, y hace un seguimiento del número de paquetes de salida cuando se impone la señal de listo para transmisión tx rdy. En otro ejemplo, el controlador de reloj 420 hace un seguimiento del número de paquetes de entrada y hace un seguimiento del número de paquetes de salida independientemente de la señal de listo para recepción rx_rdy y la señal de listo para transmisión tx_rdy, respectivamente.
[0027] El controlador de reloj 420 compara a continuación el número de paquetes de entrada con el número de paquetes de salida para determinar si la canalización de procesamiento de imágenes 410 está vacía (no hay datos válidos en la canalización 410). Por ejemplo, el controlador de reloj 420 puede determinar que la canalización 410 está vacía cuando el número de paquetes de entrada y el número de paquetes de salida coinciden, y determinar que la canalización 410 no está vacía cuando el número de paquetes de entrada y el número de paquetes de salida no coinciden.
[0028] Si el controlador de reloj 420 determina que la canalización 410 está vacía, el controlador de reloj 420 puede ordenar al dispositivo de compuertas de reloj 425 que bloquee (inhabilite) el paso de la señal de reloj clk hacia la canalización 410 para ahorrar energía. En un ejemplo, después de determinar que la canalización 410 está vacía, el controlador de reloj 420 también puede verificar si hay un paquete de entrada de datos válidos en la entrada de la canalización 410. Si el controlador de reloj 420 no detecta un paquete de entrada de datos válidos, el controlador de reloj 420 puede ordenar al dispositivo de compuertas de reloj 425 que bloquee (inhabilite) el paso de la señal de reloj clk hacia la canalización 410.
[0029] Si el controlador de reloj 420 determina que la canalización 410 no está vacía, el controlador de reloj 420 puede dejar la señal de reloj clk habilitada (sin bloquear).
[0030] Después de que se haya bloqueado (inhabilitado) el paso de la señal de reloj clk hacia la canalización 410, el controlador de reloj 420 puede establecer si en la entrada de la canalización 410 hay un paquete de entrada de datos válidos. Si el controlador de reloj 420 detecta un paquete de entrada, el controlador de reloj 420 habilita (deja pasar) la señal de reloj clk de modo que la canalización 410 pueda comenzar a procesar el paquete de entrada. Si el controlador de reloj 420 no detecta un paquete de entrada, el controlador de reloj 420 deja la señal de reloj clk inhabilitada (bloqueada). En un ejemplo, el controlador de reloj 420 establece si en la entrada de la canalización 410 hay un paquete de entrada cuando se impone la señal de listo para recepción rx_rdy. En este ejemplo, la canalización 410 retiene la señal de listo para recepción rx_rdy cuando la señal de reloj clk está bloqueada. En otro ejemplo, el controlador de reloj 420 establece si en la entrada de la canalización 410 hay un paquete de entrada independiente de la señal de listo para recepción rx_rdy.
[0031] El controlador de reloj 420 es ventajoso con respecto al primer enfoque de compuertas de reloj analizado anteriormente con referencia a la FIG. 2A, en la medida en que el controlador de reloj 420 puede bloquear la señal de reloj clk durante una burbuja dentro de una línea activa. Esto se debe a que el controlador de reloj 420 bloquea la señal de reloj clk cuando la canalización 410 queda vacía durante la burbuja.
[0032] Además, el controlador de reloj 420 es ventajoso con respecto al segundo enfoque de compuertas de reloj analizado anteriormente con referencia a la FIG. 3 en la medida en que el controlador de reloj 420 tiene un pequeño abanico de entrada (número de entradas) en comparación con la lógica de control de compuertas de reloj 330 mostrada en la FIG. 3. Esto es así porque el controlador de reloj 420 verifica la entrada y la salida de la canalización 410 en lugar de verificar si en cada fase de canalización 410 hay datos válidos y/o una señal de listo. Como resultado, no es necesario incrementar el abanico de entrada del controlador de reloj 420 a medida que se añaden más fases de canalización, lo que hace que este enfoque sea más escalable. El abanico de entrada relativamente pequeño de este enfoque mitiga los problemas de temporización asociados con el segundo enfoque de compuertas de reloj analizado anteriormente.
[0033] La FIG. 5 muestra una implementación ejemplar del controlador de reloj 420 de acuerdo con determinados de la presente divulgación. En este ejemplo, el controlador de reloj 420 incluye un primer dispositivo de control 510, un primer contador 520, un segundo dispositivo de control 515, un segundo contador 525, un dispositivo de comparación 540 y un dispositivo de control de reloj 550. El primer contador 520 está configurado para contar un número de paquetes de entrada, y el segundo contador 515 está configurado para contar un número de paquetes de salida, como se analiza en mayor detalle a continuación. Cada contador puede ser un contador de vuelta a cero que se pone a cero cuando se alcanza un valor máximo del contador.
[0034] En funcionamiento, el primer dispositivo de control 510 establece si en la entrada de la canalización 410 hay paquetes de entrada de datos válidos (por ejemplo, cuando se impone la señal de listo para recepción rx_rdy). Por ejemplo, se puede indicar cada paquete de entrada mediante un indicador de paquete (por ejemplo, un delimitador). El indicador de paquete puede estar localizado al principio del paquete o al final del paquete. En este ejemplo, el primer dispositivo de control 510 puede detectar un paquete de entrada detectando el indicador de paquete respectivo. El primer dispositivo de control 510 puede incrementar el valor de recuento del primer contador 520 cada vez que el primer dispositivo de control 510 detecta un paquete de entrada. Por tanto, en este ejemplo, el primer contador 520 hace un seguimiento de un número de paquetes de entrada.
[0035] El segundo dispositivo de control 515 establece si en la salida de la canalización 410 hay paquetes de salida de datos válidos (por ejemplo, cuando se impone la señal de listo para transmisión tx_rdy). Por ejemplo, se puede indicar cada paquete de salida mediante un indicador de paquete (por ejemplo, un delimitador). El indicador de paquete puede estar localizado al principio del paquete o al final del paquete. En este ejemplo, el segundo dispositivo de control 515 puede detectar un paquete de salida detectando el indicador de paquete respectivo. El segundo dispositivo de control 515 puede incrementar el valor de recuento del segundo contador 525 cada vez que el segundo dispositivo de control 515 detecta un paquete de salida. Por tanto, en este ejemplo, el segundo contador 525 hace un seguimiento de un número de paquetes de salida.
[0036] El dispositivo de comparación 540 compara el valor de recuento del primer contador 520 con el valor de recuento del segundo contador 525. Si los valores de recuento coinciden, el dispositivo de comparación 540 determina que la canalización 410 está vacía. Si los valores de recuento no coinciden, el dispositivo de comparación 540 determina que la canalización 410 no está vacía. El dispositivo de comparación 540 genera a continuación una marca de vacío en base a la comparación, en el que la marca de vacío indica si la canalización 410 está vacía. Por ejemplo, la marca de vacío puede tener un primer valor lógico (por ejemplo, uno) cuando se determina que la canalización 410 está vacía, y un segundo valor lógico (por ejemplo, cero) cuando se determina que la canalización 410 no está vacía.
[0037] El dispositivo de control de reloj 550 está configurado para recibir la marca de vacío desde el dispositivo de comparación 540. Si la marca de vacío indica que la canalización no está vacía, el dispositivo de control de reloj 550 puede dejar la señal de reloj clk habilitada (sin bloquear). En este caso, el dispositivo de compuertas de reloj 425 deja pasar la señal de reloj clk hacia la canalización 410. Si la marca de vacío indica que la canalización está vacía, el dispositivo de control de reloj 550 puede ordenar al dispositivo de compuertas de reloj 425 que bloquee (inhabilite) el paso de la señal de reloj clk hacia la canalización 410. En un ejemplo, si la marca de vacío indica que la canalización está vacía, el dispositivo de control de reloj 550 también puede verificar si hay un paquete de entrada de datos válidos en la entrada de la canalización 410. Si el dispositivo de control de reloj 550 no detecta un paquete de entrada de datos válidos, el dispositivo de control de reloj 550 puede ordenar al dispositivo de compuertas de reloj 425 que bloquee (inhabilite) el paso de la señal de reloj clk hacia la canalización 410. En este ejemplo, el dispositivo de control de reloj 550 puede detectar un paquete de entrada detectando el indicador de paquete respectivo (por ejemplo, delimitador). Cuando el dispositivo de compuertas de reloj 425 bloquea (inhabilita) la señal de reloj clk, el dispositivo de compuertas de reloj 425 facilita un estado lógico constante (cero o uno) a la canalización 410 independiente del estado lógico de la señal de reloj clk.
[0038] Después de que se haya bloqueado (inhabilitado) el paso de la señal de reloj clk hacia la canalización 410, el dispositivo de control de reloj 550 puede establecer si en la entrada de la canalización 410 hay un paquete de entrada de datos válidos. Si el dispositivo de control de reloj 550 detecta un paquete de entrada, el dispositivo de control de reloj 550 habilita (deja pasar) la señal de reloj clk. Si el dispositivo de control de reloj 550 no detecta un paquete de entrada, el dispositivo de control de reloj 550 deja la señal de reloj clk inhabilitada (bloqueada).
[0039] En un ejemplo, el dispositivo de control de reloj 550 puede estar configurado para facilitar un primer valor lógico (por ejemplo, uno) al dispositivo de compuertas de reloj 425 para habilitar la señal de reloj clk y facilitar un segundo valor lógico (por ejemplo, cero) al dispositivo de compuertas de reloj 425 para bloquear (inhabilitar) la señal de reloj clk. En este ejemplo, el dispositivo de control de reloj 550 facilita el primer valor lógico cuando la marca de vacío indica que la canalización no está vacía. El dispositivo de control de reloj 500 puede facilitar el segundo valor lógico cuando la marca de vacío indica que la canalización está vacía. En un ejemplo, el dispositivo de control de reloj 550 puede facilitar el segundo valor lógico cuando la marca de vacío indica que la canalización 410 está vacía y no se detecta ningún paquete de entrada en la entrada de la canalización. Después de que se haya bloqueado la señal de reloj clk, el dispositivo de control de reloj 550 puede establecer si en la entrada de la canalización hay un paquete de entrada, y cambiar su salida del segundo valor lógico al primer valor lógico tras la detección de un paquete de entrada para volver a habilitar la señal de reloj clk.
[0040] El controlador de reloj 420 también puede recibir la señal de reloj clk para temporizar unas operaciones del controlador de reloj 420. A este respecto, la FIG. 6 muestra un ejemplo en el que el primer dispositivo de control 510, el primer contador 520, el segundo dispositivo de control 515, el segundo contador 525 y el dispositivo de comparación 540 reciben la señal de reloj clk desde la salida del dispositivo de compuertas de reloj 425. Por tanto, en este ejemplo, cuando se inhabilita (bloquea) el paso de la señal de reloj clk hacia la canalización 410, la señal de reloj clk para el primer dispositivo de control 510, el primer contador 520, el segundo dispositivo de control 515, el segundo contador 525 y el dispositivo de comparación 540 también se bloquean para ahorrar energía. El primer y el segundo contadores 520 y 525 pueden mantener sus valores de recuento actuales cuando la señal de reloj clk está bloqueada. En este ejemplo, cada uno del primer y el segundo contadores 520 y 525 puede reanudar el recuento desde el valor de recuento retenido cuando la señal de reloj clk se vuelve a habilitar. De forma alternativa, los contadores 520 y 525 se pueden reiniciar cuando la señal de reloj clk se bloquea. En este ejemplo, cada uno del primer y el segundo contador 520 y 525 puede comenzar a contar desde un valor de recuento de reinicio (por ejemplo, cero) cuando la señal de reloj clk se vuelve a habilitar.
[0041] La señal de reloj clk para el dispositivo de control de reloj 550 puede pasar por alto el dispositivo de compuertas de reloj 425 de modo que la señal de reloj clk para el dispositivo de control de reloj 550 no se bloquea cuando la señal de reloj clk para la canalización 410 se bloquea. En este ejemplo, la señal de reloj clk se puede usar para temporizar operaciones del dispositivo de control de reloj 550 usadas para detectar un paquete de entrada en la entrada de la canalización 410 y, al detectar un paquete de entrada, habilitar (dejar pasar) la señal de reloj clk para la canalización 410. En otro ejemplo, el dispositivo de control de reloj 550 puede incluir una o más compuertas lógicas que no necesitan la señal de reloj clk para habilitar la señal de reloj clk cuando un paquete de entrada está presente en la entrada de la canalización 410. En este caso, no es necesario proporcionar la señal de reloj clk al dispositivo de compuertas de reloj 425.
[0042] Se pueden implementar diversos componentes del controlador de reloj 420 usando componentes de un controlador síncrono de primero en entrar, primero en salir (FIFO), como se analiza en mayor detalle a continuación.
[0043] Un controlador síncrono FIFO controla la escritura de datos en y la lectura de datos desde una memoria FIFO. A este respecto, un controlador FIFO puede incluir un contador de escritura, un contador de lectura y un dispositivo de comparación. El valor de recuento del contador de escritura se incrementa cuando se introducen datos en la memoria FIFO, y se usa para generar un puntero de escritura que especifica la ubicación (dirección) en la memoria FIFO en la que se van a escribir los datos. El valor de recuento del contador de lectura se incrementa cuando se leen datos desde la memoria FIFO, y se usa para generar un puntero de lectura que especifica la ubicación (dirección) en la memoria FIFO desde la que se van a leer los datos. El dispositivo de comparación compara el puntero de escritura con el puntero de lectura para determinar si la memoria FIFO está vacía y facilita una marca de vacío en base a la comparación que indica si la memoria FIFO está vacía. Por ejemplo, el dispositivo de comparación puede determinar que la memoria FIFO está vacía cuando el puntero de escritura y el puntero de lectura coinciden.
[0044] En un ejemplo, el primer contador 520, el segundo contador 525 y el dispositivo de comparación 540 del controlador de reloj 420 se pueden implementar usando un contador de escritura, un contador de lectura y un dispositivo de comparación de un controlador FIFO. En este ejemplo, la canalización 410 se trata como una memoria FIFO con el propósito de determinar si la canalización 410 está vacía. Esto permite que el controlador de reloj 420 reúse componentes (por ejemplo, un contador de escritura, un contador de lectura y un dispositivo de comparación) de un controlador FIFO usado para generar la marca de vacío para el controlador FIFO para generar la marca de vacío para el controlador de reloj 420.
[0045] Cabe destacar que, aunque la canalización 410 se trata como una memoria FIFO con el propósito de determinar si la canalización 410 está vacía en el ejemplo anterior, la canalización difiere de una memoria FIFO en otros aspectos. Por ejemplo, la canalización 410 procesa datos mientras que una memoria FIFO simplemente almacena (por ejemplo, almacena en memoria intermedia) datos.
[0046] La FIG. 7 es una tabla 700 que muestra ejemplos de áreas de chip para los tres procedimientos de compuertas de reloj diferentes analizados para diferentes profundidades de canalización (es decir, diferentes números de fases de canalización). Las cuatro primeras filas de la tabla 700 muestran ejemplos de áreas de chip para el enfoque FSM (mostrado en la FIG.2A) para profundidades de canalización de 2, 50, 100 y 500. Las cuatro siguientes filas de la tabla 700 muestran ejemplos de áreas de chip para el enfoque de compuerta OR (mostrado en la FIG. 3) para profundidades de canalización de 2, 50, 100 y 500. Las cuatro últimas filas de la tabla 700 muestran ejemplos de áreas de chip para el enfoque FIFO (mostrado en las FIGS. 4-6) para profundidades de canalización de 2, 50, 100 y 500.
[0047] Como se muestra en la FIG. 7, el área de chip para el enfoque FSM no se incrementa a medida que la profundidad de canalización asciende. Por el contrario, el área del chip para el enfoque de compuerta OR se incrementa de forma aproximadamente lineal con los incrementos en la profundidad de canalización. Esto se debe a que se añade una entrada adicional a la compuerta OR para cada fase de canalización adicional. El enfoque de compuerta OR no es muy escalable porque los incrementos en la profundidad de canalización pueden dar como resultado incrementos significativos en el área del chip ocupada por la compuerta OR. El incremento significativo en el área de chip no solo ocupa un valioso espacio en el chip, sino que también se traduce en un incremento significativo en el consumo de energía.
[0048] El área de chip para el enfoque FIFO se incrementa ligeramente con los incrementos en la profundidad de canalización. El incremento en el área de chip se debe a los bits adicionales necesarios para hacer un seguimiento de un número mayor de paquetes de entrada y de salida a medida que la profundidad de canalización se incrementa. Los bits adicionales se escalan con log2 (es decir, logaritmo de base 2) de la profundidad de canalización. Como se muestra en la tabla 700, el incremento en el área de chip para el enfoque FIFO es significativamente menor que el enfoque de compuerta OR. Por tanto, a medida que se incrementa la profundidad de canalización, el enfoque FIFO requiere un área y una potencia significativamente menores que los del enfoque de compuerta OR.
[0049] El enfoque FIFO ocupa más área de chip que el enfoque FSM en el ejemplo mostrado en la FIG. 7. Sin embargo, el enfoque FIFO puede bloquear la señal de reloj clk durante las burbujas de las líneas activas, mientras que el enfoque FSM no bloquea la señal de reloj clk durante las burbujas, como se analiza anteriormente. Por tanto, el enfoque FIFO puede bloquear la señal de reloj con más frecuencia (es decir, aprovechar más oportunidades para bloquear la señal de reloj), lo que da como resultado más ahorro de energía gracias al bloqueo de reloj.
[0050] El dispositivo de compuertas de reloj 425 se puede implementar usando una cualquiera de un número de celdas de compuertas de reloj (CGC) conocidas en la técnica. Por ejemplo, la biblioteca de celdas estándar para un chip (pastilla) típicamente incluye una o más CGC. En este ejemplo, se puede seleccionar una de las CGC de la biblioteca de celdas para implementar el dispositivo de compuertas de reloj 425.
[0051] A este respecto, la FIG. 8 muestra una celda de compuertas de reloj (CGC) 810 ejemplar que se puede usar para implementar el dispositivo de compuertas de reloj 425. En este ejemplo, la CGC 810 incluye un cerrojo activado por flanco negativo 820 y una compuerta AND 830. La CGC 810 tiene una entrada de control de compuertas 812 que recibe una señal de control de compuertas desde el dispositivo de control de reloj 550, una entrada de reloj 814 que recibe la señal de reloj clk y una salida 816 acoplada a la entrada de reloj de la canalización 410. El cerrojo 820 tiene una entrada de control 822 que recibe la señal de control de compuertas, una entrada de reloj 824 que recibe la señal de reloj clk y una salida 826. La compuerta AND 830 tiene una primera entrada 832 acoplada a la salida 826 del cerrojo 820, una segunda entrada 834 que recibe la señal de reloj clk, y una salida 836 acoplada a la salida 816 de la CGC 810.
[0052] En este ejemplo, la CGC 810 bloquea la señal de reloj clk cuando la señal de control de compuertas del dispositivo de control de reloj 550 es baja (cero lógico). En este caso, la CGC 810 facilita un cero lógico a la canalización 410 independientemente del estado lógico de la señal de reloj clk. La CGC 810 pasa la señal de reloj clk a la canalización 410 cuando la señal de control de compuertas es alta (uno lógico). La señal de control de compuertas también se puede denominar señal de habilitación de reloj, ya que controla si la señal de reloj clk para la canalización está habilitada.
[0053] En funcionamiento, el cerrojo 820 enclava el valor lógico de la señal de control de compuertas en un flanco descendente de la señal de reloj clk, y facilita el valor lógico enclavado de la señal de control de compuertas a la primera entrada 832 de la compuerta AND 830. Si el valor lógico enclavado de la señal de control de compuertas es de uno lógico, la compuerta AND 830 pasa la señal de reloj clk a la salida 816 de la CGC 810. Si el valor lógico enclavado de la señal de control de compuertas es de cero lógico, la compuerta AND 830 facilita un cero lógico independientemente del estado lógico de la señal de reloj clk, bloqueando eficazmente la señal de reloj clk. En este ejemplo, el cerrojo 820 se usa para evitar problemas en la salida 816 de la CGC 810. Se debe apreciar que la CGC 810 mostrada en la FIG. 8 es solo ejemplar, y que el dispositivo de compuertas de reloj 425 se puede implementar usando otras CGC conocidas en la técnica.
[0054] La FIG. 9 ilustra un procedimiento 900 para compuertas de reloj de acuerdo con determinados aspectos de la presente divulgación. El controlador de reloj 420 y el dispositivo de compuertas de reloj 425 pueden realizar el procedimiento 900.
[0055] En la etapa 910, se hace un seguimiento de un número de paquetes de entrada en una entrada de una canalización. Por ejemplo, se puede hacer un seguimiento del número de paquetes de entrada incrementando un valor de recuento de un primer contador (por ejemplo, el primer contador 520) para cada paquete de entrada.
[0056] En la etapa 920, se hace un seguimiento de un número de paquetes de salida en una salida de la canalización. Por ejemplo, se puede hacer un seguimiento del número de paquetes de entrada incrementando un valor de recuento de un segundo contador (por ejemplo, el segundo contador 525) para cada paquete de salida.
[0057] En la etapa 930, se determina si se ha de bloquear o dejar pasar una señal de reloj hacia la canalización en base al número de los paquetes de entrada y al número de los paquetes de salida. Por ejemplo, se puede determinar bloquear la señal de reloj si el número de los paquetes de entrada y el número de los paquetes de salida coinciden, y se puede determinar dejar pasar la señal de reloj hacia la canalización si el número de los paquetes de entrada y el número de los paquetes de salida no coinciden.
[0058] En la etapa 940, la señal de reloj se pasa a la canalización si se determina dejar pasar la señal de reloj.
[0059] En la etapa 950, la señal de reloj se bloquea si se determina bloquear la señal de reloj.
[0060] El controlador de reloj 420 analizado anteriormente se puede implementar con un procesador de propósito general, un procesador de señales digitales (DSP), un circuito integrado específico de la aplicación (ASIC), una matriz de compuertas programables in situ (FPGA) u otro dispositivo de lógica programable, componentes de hardware discretos (por ejemplo, compuertas lógicas) o cualquier combinación de los mismos diseñada para realizar las funciones descritas en el presente documento. Un procesador puede realizar las funciones descritas en el presente documento ejecutando software que comprende código para realizar las funciones. El software puede estar almacenado en un medio de almacenamiento legible por ordenador, tal como una RAM, una ROM, una EEPROM, un disco óptico y/o un disco magnético.
[0061] Dentro de la presente divulgación, la palabra "ejemplar" se usa para significar "que sirve de ejemplo, caso o ilustración". No se debe interpretar necesariamente que cualquier implementación o aspecto descrito en el presente documento como "ejemplar" es preferente o ventajoso con respecto a otros aspectos de la divulgación. Asimismo, el término "aspectos" no requiere que todos los aspectos de la divulgación incluyan la característica, la ventaja o el modo de funcionamiento analizados.
[0062] Aunque la presente divulgación se analiza anteriormente usando el ejemplo de una canalización de procesamiento de imágenes, se debe apreciar que la presente divulgación no se limita a este ejemplo. Los modos de realización de la presente divulgación se pueden aplicar a otros tipos de canalizaciones que procesan datos para bloquear o dejar pasar la señal de reloj hacia los otros tipos de canalizaciones.
[0063] La descripción previa de la divulgación se proporciona para permitir que cualquier experto en la técnica realice o use la divulgación. Diversas modificaciones de la divulgación resultarán fácilmente evidentes a los expertos en la técnica, y los principios genéricos definidos en el presente documento se pueden aplicar a otras variantes sin apartarse del alcance de la divulgación. Por tanto, no se pretende limitar la invención a los ejemplos descritos en el presente documento, sino que se le ha de conceder el alcance más amplio consecuente con las reivindicaciones adjuntas.

Claims (15)

REIVINDICACIONES
1. Un sistema de compuertas de reloj para una canalización (410), que comprende:
un dispositivo de compuertas de reloj (425) configurado para dejar pasar o bloquear una señal de reloj (clk) hacia la canalización; y
un controlador de reloj (420) configurado para hacer un seguimiento de un número de paquetes de entrada en una entrada de la canalización, hacer un seguimiento de un número de paquetes de salida en una salida de la canalización, determinar si se ha de dejar pasar o bloquear la señal de reloj en base al número de los paquetes de entrada y el número de los paquetes de salida, ordenar al dispositivo de compuertas de reloj que deje pasar la señal de reloj si se determina dejar pasar la señal de reloj, y ordenar al dispositivo de compuertas de reloj que bloquee la señal de reloj si se determina bloquear la señal de reloj;
en el que el controlador de reloj está configurado para ordenar al dispositivo de compuertas de reloj que bloquee la señal de reloj si el número de los paquetes de entrada coincide con el número de paquetes de salida, y ordenar al dispositivo de compuertas de reloj que deje pasar la señal de reloj si el número de los paquetes de entrada no coincide con el número de paquetes de salida.
2. El sistema de compuertas de reloj de la reivindicación 1, en el que el controlador de reloj comprende:
un primer contador (520);
un primer dispositivo de control (510) configurado para detectar los paquetes de entrada en la entrada de la canalización, e incrementar un valor de recuento del primer contador para cada uno de los paquetes de entrada detectados, en el que el valor de recuento del primer contador indica el número de los paquetes de entrada;
un segundo contador (525); y
un segundo dispositivo de control (515) configurado para detectar los paquetes de salida en la salida de la canalización, e incrementar un valor de recuento del segundo contador para cada uno de los paquetes de salida detectados, en el que el valor de recuento del segundo contador indica el número de los paquetes de salida.
3. El sistema de compuertas de reloj de la reivindicación 2, en el que el controlador de reloj comprende además:
un dispositivo de comparación configurado para comparar el valor de recuento del primer contador con el valor de recuento del segundo contador, y generar una marca en base a la comparación, en el que la marca indica si la canalización está vacía; y
un dispositivo de control de reloj configurado para ordenar al dispositivo de compuertas de reloj que deje pasar la señal de reloj si la marca no indica que la canalización está vacía, y para ordenar al dispositivo de compuertas de reloj que bloquee la señal de reloj si la marca indica que la canalización está vacía.
4. El sistema de compuertas de reloj de la reivindicación 3, en el que la marca indica que la canalización está vacía si el valor de recuento del primer contador y el valor de recuento del segundo contador coinciden.
5. El sistema de compuertas de reloj de la reivindicación 4, en el que la marca no indica que la canalización está vacía si el valor de recuento del primer contador y el valor de recuento del segundo contador no coinciden.
6. El sistema de compuertas de reloj de la reivindicación 2, en el que el primer dispositivo de control está configurado para detectar cada uno de los paquetes de entrada detectando un delimitador del paquete de entrada.
7. El sistema de compuertas de reloj de la reivindicación 6, en el que el segundo dispositivo de control está configurado para detectar cada uno de los paquetes de salida detectando un delimitador del paquete de salida.
8. El sistema de compuertas de reloj de la reivindicación 1, en el que, después de ordenar al dispositivo de compuertas de reloj que bloquee la señal de reloj, el controlador de reloj está configurado además para establecer si en la entrada de la canalización hay un siguiente paquete de entrada, y, al detectar el siguiente paquete de entrada, ordenar al dispositivo de compuertas de reloj que deje pasar la señal de reloj.
9. Procedimiento (900) para compuertas de reloj, que comprende:
hacer un seguimiento (910) de un número de paquetes de entrada en una entrada de una canalización (410);
hacer un seguimiento (920) de un número de paquetes de salida en una salida de la canalización; determinar (930) si se ha de bloquear o dejar pasar una señal de reloj (clk) hacia la canalización en base al número de los paquetes de entrada y el número de los paquetes de salida;
dejar pasar (940) la señal de reloj hacia la canalización si se determina dejar pasar la señal de reloj; y bloquear (950) la señal de reloj si se determina bloquear la señal de reloj; y
en el que determinar si se ha de bloquear o dejar pasar la señal de reloj comprende:
determinar que se ha de bloquear la señal de reloj si el número de los paquetes de entrada coincide con el número de los paquetes de salida; y
determinar que se ha de dejar pasar la señal de reloj si el número de los paquetes de entrada no coincide con el número de los paquetes de salida.
10. El procedimiento de la reivindicación 9, en el que hacer un seguimiento del número de los paquetes de entrada comprende incrementar un valor de recuento de un primer contador para cada uno de los paquetes de entrada, y hacer un seguimiento del número de los paquetes de salida comprende incrementar un valor de recuento de un segundo contador para cada uno de los paquetes de salida.
11. El procedimiento de la reivindicación 10, en el que incrementar el valor de recuento del primer contador incluye:
detectar cada uno de los paquetes de entrada en la entrada de la canalización detectando un delimitador del paquete de entrada; e
incrementar el valor de recuento del primer contador para cada uno de los paquetes de entrada detectados.
12. El procedimiento de la reivindicación 10, en el que incrementar el valor de recuento del segundo contador incluye:
detectar cada uno de los paquetes de salida en la salida de la canalización detectando un delimitador del paquete de salida; e
incrementar el valor de recuento del segundo contador para cada uno de los paquetes de salida detectados.
13. El procedimiento de la reivindicación 10, en el que determinar si se ha de bloquear o dejar pasar la señal de reloj comprende:
comparar el valor de recuento del primer contador con el valor de recuento del segundo contador; y determinar si se ha de bloquear o dejar pasar la señal de reloj en base a la comparación; y
en el que determinar si se ha de bloquear o dejar pasar la señal de reloj comprende determinar que se ha de bloquear la señal de reloj si el valor de recuento del primer contador y el valor de recuento del segundo contador coinciden,
en el que determinar si se ha de bloquear o dejar pasar la señal de reloj comprende determinar que se ha de dejar pasar la señal de reloj si el valor de recuento del primer contador y el valor de recuento del segundo contador no coinciden.
14. El procedimiento de la reivindicación 9, que comprende además:
después de bloquear la señal de reloj, establecer si en la entrada de la canalización hay un siguiente paquete de entrada; y
dejar pasar la señal de reloj al detectar el siguiente paquete de entrada.
15. El sistema de compuertas de reloj de la reivindicación 1, o el procedimiento de la reivindicación 9, en el que la canalización es una canalización de procesamiento de imágenes.
ES17817485T 2016-12-13 2017-11-27 Generación de habilitación de compuertas de reloj Active ES2801598T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662433547P 2016-12-13 2016-12-13
US15/666,107 US10761559B2 (en) 2016-12-13 2017-08-01 Clock gating enable generation
PCT/US2017/063306 WO2018111526A1 (en) 2016-12-13 2017-11-27 Clock gating enable generation

Publications (1)

Publication Number Publication Date
ES2801598T3 true ES2801598T3 (es) 2021-01-11

Family

ID=62489120

Family Applications (1)

Application Number Title Priority Date Filing Date
ES17817485T Active ES2801598T3 (es) 2016-12-13 2017-11-27 Generación de habilitación de compuertas de reloj

Country Status (11)

Country Link
US (1) US10761559B2 (es)
EP (1) EP3555726B1 (es)
JP (1) JP6746791B2 (es)
KR (1) KR102143089B1 (es)
CN (1) CN110073311B (es)
AU (1) AU2017377949B2 (es)
BR (1) BR112019010936A2 (es)
ES (1) ES2801598T3 (es)
HU (1) HUE050331T2 (es)
TW (1) TWI722258B (es)
WO (1) WO2018111526A1 (es)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11114057B2 (en) * 2018-08-28 2021-09-07 Samsung Display Co., Ltd. Smart gate display logic
US11099602B2 (en) * 2019-04-30 2021-08-24 International Business Machines Corporation Fault-tolerant clock gating
CN112462845B (zh) * 2020-11-25 2024-06-18 海光信息技术股份有限公司 数据传输时钟控制电路、方法和处理器
US12081214B2 (en) 2021-12-07 2024-09-03 Mediatek Inc. Clock gating cells

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6636074B2 (en) 2002-01-22 2003-10-21 Sun Microsystems, Inc. Clock gating to reduce power consumption of control and status registers
JP2004078581A (ja) 2002-08-19 2004-03-11 Nec Corp 通信データ処理回路
JP2004274099A (ja) 2003-03-05 2004-09-30 Nec Corp パケット処理回路
TWI253556B (en) * 2003-06-11 2006-04-21 Faraday Tech Corp Pipeline-based circuit with a postponed clock-gating mechanism for reducing power consumption and related driving method thereof
US6822481B1 (en) * 2003-06-12 2004-11-23 Agilent Technologies, Inc. Method and apparatus for clock gating clock trees to reduce power dissipation
US7594200B2 (en) * 2005-12-19 2009-09-22 International Business Machines Corporation Method for finding multi-cycle clock gating
US7949887B2 (en) * 2006-11-01 2011-05-24 Intel Corporation Independent power control of processing cores
US7797561B1 (en) * 2006-12-21 2010-09-14 Nvidia Corporation Automatic functional block level clock-gating
US7802118B1 (en) * 2006-12-21 2010-09-21 Nvidia Corporation Functional block level clock-gating within a graphics processor
US8073669B2 (en) * 2007-08-21 2011-12-06 International Business Machines Corporation Method and apparatus for detecting clock gating opportunities in a pipelined electronic circuit design
US7861192B2 (en) * 2007-12-13 2010-12-28 Globalfoundries Inc. Technique to implement clock-gating using a common enable for a plurality of storage cells
JP5007703B2 (ja) 2008-05-19 2012-08-22 日本電気株式会社 パケット処理装置、パケット制御方法及びパケット制御プログラム
WO2010080176A1 (en) * 2009-01-12 2010-07-15 Rambus Inc. Mesochronous signaling system with multiple power modes
JP2011061457A (ja) * 2009-09-09 2011-03-24 Elpida Memory Inc クロック生成回路及びこれを備える半導体装置並びにデータ処理システム
US9557795B1 (en) 2009-09-23 2017-01-31 Xilinx, Inc. Multiprocessor system with performance control based on input and output data rates
US20110202788A1 (en) 2010-02-12 2011-08-18 Blue Wonder Communications Gmbh Method and device for clock gate controlling
US8533648B2 (en) * 2010-05-13 2013-09-10 Oracle International Corporation Automatic clock-gating propagation technique
US9444440B2 (en) * 2011-06-30 2016-09-13 Stmicroelectronics International N.V. Transition detector
JP2013125436A (ja) 2011-12-15 2013-06-24 Panasonic Corp 画像処理回路および半導体集積回路
US9323315B2 (en) 2012-08-15 2016-04-26 Nvidia Corporation Method and system for automatic clock-gating of a clock grid at a clock source
US20140225655A1 (en) * 2013-02-14 2014-08-14 Qualcomm Incorporated Clock-gated synchronizer
WO2015047422A1 (en) * 2013-09-30 2015-04-02 Intel Corporation Early wake-warn for clock gating control
GR20130100707A (el) * 2013-12-23 2015-07-31 Arm Limited, Μεταφραση διευθυνσης σε μια συσκευη επεξεργασιας δεδομενων
US9154130B2 (en) * 2014-01-14 2015-10-06 Analog Devices, Inc. Four-state input detection circuitry
US10204532B2 (en) * 2015-09-25 2019-02-12 Intel Corporation Multiple input cryptographic engine

Also Published As

Publication number Publication date
US20180164846A1 (en) 2018-06-14
KR20190094364A (ko) 2019-08-13
TW201826710A (zh) 2018-07-16
EP3555726A1 (en) 2019-10-23
JP6746791B2 (ja) 2020-08-26
HUE050331T2 (hu) 2020-11-30
AU2017377949A1 (en) 2019-05-16
CN110073311B (zh) 2023-03-24
WO2018111526A1 (en) 2018-06-21
KR102143089B1 (ko) 2020-08-10
JP2020513628A (ja) 2020-05-14
US10761559B2 (en) 2020-09-01
BR112019010936A2 (pt) 2019-10-01
EP3555726B1 (en) 2020-04-22
TWI722258B (zh) 2021-03-21
AU2017377949B2 (en) 2021-08-19
CN110073311A (zh) 2019-07-30

Similar Documents

Publication Publication Date Title
ES2801598T3 (es) Generación de habilitación de compuertas de reloj
US9063727B2 (en) Performing cross-domain thermal control in a processor
KR102108831B1 (ko) 저전력을 위해 피지컬 레이어의 웨이크업 신호를 라우트할 수 있는 장치, 이의 동작 방법, 및 상기 장치를 포함하는 데이터 처리 시스템
CN107911104B (zh) 时钟门控电路
US9569305B2 (en) Memory device and control method of memory device
US9519442B2 (en) Method for concurrent system management and error detection and correction requests in integrated circuits through location aware avoidance logic
US9348356B2 (en) Embedded multimedia card (eMMC), host controlling eMMC, and method operating eMMC system
US20110051531A1 (en) Data output control circuit of a double data rate (ddr) synchronous semiconductor memory device responsive to a delay locked loop (dll) clock
WO2018038805A1 (en) Low power data transfer for memory subsystem
ES2733375T3 (es) Circuitos de líneas de bits globales de Memoria Estática de Acceso Aleatorio (SRAM) para reducir los fallos de energía durante los accesos de lectura de memoria, y procedimientos y sistemas relacionados
US20130227329A1 (en) Using a stuttered clock signal to reduce self-induced voltage noise
US11508423B2 (en) Noise shielding circuit and chip
US8929162B1 (en) Gating and sampling a data strobe signal using a shared enable signal
US9337952B2 (en) Embedded resilient buffer
ES2767746T3 (es) Sistema y procedimiento de control condicional de dispositivos de circuito de retención
US20140003184A1 (en) Realignment of command slots after clock stop exit
US9384820B1 (en) Aligning calibration segments for increased availability of memory subsystem
US9129661B2 (en) Single port memory that emulates dual port memory
CN110546613B (zh) 用于跨功率域信号的基于信号量保护的方法、装置和系统
US9891853B1 (en) Memory calibration abort
US7058752B2 (en) Hardware detected command-per-clock
US20080238490A1 (en) Semiconductor device and method for driving the same
US9128716B2 (en) Memory device and control method
US7813213B1 (en) Pulsed arbitration system
JP2012079075A (ja) Cpuインターフェース回路