ES2986903T3 - Precisión dinámica para operaciones de cálculo de redes neuronales - Google Patents
Precisión dinámica para operaciones de cálculo de redes neuronales Download PDFInfo
- Publication number
- ES2986903T3 ES2986903T3 ES18162628T ES18162628T ES2986903T3 ES 2986903 T3 ES2986903 T3 ES 2986903T3 ES 18162628 T ES18162628 T ES 18162628T ES 18162628 T ES18162628 T ES 18162628T ES 2986903 T3 ES2986903 T3 ES 2986903T3
- Authority
- ES
- Spain
- Prior art keywords
- graphics
- processor
- memory
- processing
- data
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3293—Power saving characterised by the action undertaken by switching to a less power-consuming processor, e.g. sub-CPU
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
- G06N3/0442—Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/0895—Weakly supervised learning, e.g. semi-supervised or self-supervised learning
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/09—Supervised learning
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/098—Distributed learning, e.g. federated learning
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—Three-dimensional [3D] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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 Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Computer Hardware Design (AREA)
- Computer Graphics (AREA)
- Neurology (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Image Processing (AREA)
- Image Generation (AREA)
- Combined Controls Of Internal Combustion Engines (AREA)
- Advance Control (AREA)
Abstract
En un ejemplo, un aparato comprende un motor de cómputo que comprende un componente de alta precisión y un componente de baja precisión; y lógica, que incluye al menos parcialmente lógica de hardware, para recibir instrucciones en el motor de cómputo; seleccionar al menos uno del componente de alta precisión o el componente de baja precisión para ejecutar las instrucciones; y aplicar una compuerta a al menos uno del componente de alta precisión o el componente de baja precisión para ejecutar las instrucciones. También se divulgan y reivindican otras realizaciones. (Traducción automática con Google Translate, sin valor legal)
Description
DESC
Precisión dinámica para operaciones de cálculo de redes
CAMPO
Las realizaciones se refieren, en general, al procesami
aprendizaje automático mediante una unidad de procesa
ANTECEDENTES
El aprendizaje automático ha tenido éxito en la resolución
se entrenan y usan algoritmos de aprendizaje automático
implementaciones paralelas eficientes. En consecuenci
procesamiento de gráficos de propósito general (G
implementación práctica de redes neuronales profundas.
múltiples hilos y única instrucción (SIMT) se diseñan p
canalización de gráficos. En una arquitectura de SIMT,
programa de manera síncrona juntos tan a menudo com
La eficiencia proporcionada por las implementaciones p
uso de redes de alta capacidad y permite que esas redes
El documento US 2005/066205 A1 divulga una arquitect
polígonos por tamaño. Los triángulos pequeños y de bu
precisión. Otras primitivas se procesan utilizando una uni
El documento US 2012/284318 A1 se refiere a la impleme
de datos entrantes de una señal entrante se determina
una muestra de datos entrantes. La muestra de datos
intervalo de tiempo predefinido. Posteriormente, se obtie
variables basándose en una función de distribución de pr
entrantes. La muestra de datos entrantes y un coeficient
muestra de datos entrantes y una anchura de bits del co
multiplicadores de anchura de bits. Se realiza una op
multiplicador de anchura de bits para generar una salida
El documento US 2010/241938 A1 divulga una arquitectu
de SIMD y que soporta una multiplicidad de operaciones
donde el proceso ALU de alta precisión se activa únicam
La invención se define por un aparato de acuerdo con
preferidas en las reivindicaciones dependientes.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
Para que la forma en que las características citadas anter
en detalle, se puede obtener una descripción más particul
con referencia a las realizaciones, algunas de las cuales
observar que los dibujos adjuntos ilustran únicamente r
limitantes de su alcance.
La Figura 1 es un diagrama de bloques que ilust
o varios aspectos de las realizaciones descritas
Las Figuras 2A-2D ilustran unos componentes d
Las Figuras 3A-3B son diagramas de bloque
realizaciones.
Las Figuras 4A a 4F ilustran una arquitectura ilu
manera comunicativa a una pluralidad de proce
La Figura 5 es un diagrama conceptual de una
una realización.
Las Figuras 6A-6F y 7A-7E ilustran arquitectura CIÓN
uronales
o de datos y, más particularmente, al procesamiento de nto de gráficos de propósito general.
muchos tipos de tareas. Los cálculos que surgen cuando or ejemplo, redes neuronales) se prestan naturalmente a los procesadores paralelos, tales como las unidades de PU), han desempeñado un papel importante en la s procesadores de gráficos paralelos con arquitecturas de maximizar la cantidad de procesamiento paralelo en la pos de hilos paralelos intentan ejecutar instrucciones de ea posible para aumentar la eficiencia de procesamiento. lelas de algoritmos de aprendizaje automático permite el entrenen en conjuntos de datos más grandes.
de gráficos 3D que incorpora un módulo para clasificar comportamiento se procesan con una unidad de menor de alta precisión.
ción de filtros digitales. La anchura de bits de una muestra endo una distancia entre un cero inicial y un cero final de rantes se obtiene muestreando la señal entrante en un multiplicadores de anchura de bits con anchuras de bits abilidad (PDF) de anchuras de bits de muestras de datos e filtro se asignan basándose en la anchura de bits de la iente de filtro a un multiplicador de anchura de bits de los ción de multiplicación de una operación de MAC en el filtro digital.
de SIMD que comprende una pluralidad de procesadores baja precisión para cada operación de alta precisión, en e cuando se introducen valores de alta precisión.
reivindicación independiente. Se definen realizaciones
mente de las presentes realizaciones puedan entenderse de las realizaciones, brevemente resumida anteriormente, ilustran en los dibujos adjuntos. Sin embargo, se ha de izaciones típicas y, por lo tanto, no han de considerarse
un sistema informático configurado para implementar uno el presente documento.
rocesador paralelo, de acuerdo con una realización.
de multiprocesadores de gráficos, de acuerdo con las
tiva en la que una pluralidad de GPU están acopladas de ores de múltiples núcleos.
alización de procesamiento de gráficos, de acuerdo con
operaciones ilustrativas de acuerdo con realizaciones.
La Figura 8 ilustra una pila de software de apren
La Figura 9 ilustra una unidad de procesamien
acuerdo con una realización.
La Figura 10 ilustra un sistema informático de m
Las Figuras 11A-B ilustran capas de redes neur
La Figura 12 ilustra una red neuronal recurrente
La Figura 13 ilustra el entrenamiento y desplieg
La Figura 14 es un diagrama de bloques que ilu
La Figura 15 ilustra un sistema en un chip (SO
inferenciación usando un modelo entrenado.
La Figura 16 es un diagrama de bloques de un s
La Figura 17 es un diagrama de bloques de un p
La Figura 18 es un diagrama de bloques de un p
La Figura 19 es un diagrama de bloques de un
gráficos de acuerdo con algunas realizaciones.
La Figura 20 es un diagrama de bloques de un
adicional.
La Figura 21 ilustra una lógica de ejecución de
empleados en algunas realizaciones.
La Figura 22 es un diagrama de bloques que ilu
de acuerdo con algunas realizaciones.
La Figura 23 es un diagrama de bloques de un
Las Figuras 24A y 24B ilustran un formato de
comandos, de acuerdo con algunas realizacione
La Figura 25 ilustra una arquitectura de software
datos de acuerdo con algunas realizaciones.
La Figura 26 es un diagrama de bloques que ilus
una realización.
La Figura 27 es un diagrama de bloques que il
acuerdo con una realización.
La Figura 28 es un diagrama de bloques que ilu
La Figura 29 es un diagrama de bloques que i
circuito integrado de sistema en chip, de acuerd
DESCRIPCIÓN DETALLADA
En la siguiente descripción, se exponen numerosos detall
de diversas realizaciones. Sin embargo, se pueden
específicos. En otros casos, los métodos, procedimientos
en detalle para no oscurecer las realizaciones particulares
realizar usando diversos medios, tales como circuitos se
por ordenador organizadas en uno o más programas ("so
los propósitos de esta divulgación, la referencia a "l
combinación de los mismos.
aje automático, de acuerdo con una realización.
de gráficos de propósito general altamente paralela, de
ples GPU, de acuerdo con una realización.
les profundas ilustrativas.
strativa.
de una red neuronal profunda.
un aprendizaje distribuido.
de inferenciación ilustrativo adecuado para realizar una
ma de procesamiento, de acuerdo con una realización. esador de acuerdo con una realización.
esador de gráficos, de acuerdo con una realización. tor de procesamiento de gráficos de un procesador de
rocesador de gráficos proporcionado por una realización
s que incluye una matriz de elementos de procesamiento
a unos formatos de instrucción de procesador de gráficos
cesador de gráficos de acuerdo con otra realización. mandos de procesador de gráficos y una secuencia de
gráficos ilustrativa para un sistema de procesamiento de
un sistema de desarrollo de núcleo de IP, de acuerdo con
ra un circuito integrado de sistema en chip ilustrativo, de
un procesador de gráficos ilustrativo adicional.
tra un procesador de gráficos ilustrativo adicional de un on una realización.
específicos para proporcionar un entendimiento completo er en práctica diversas realizaciones sin los detalles omponentes y circuitos bien conocidos no se han descrito demás, diversos aspectos de las realizaciones se pueden nductores integrados ("hardware"), instrucciones legibles are") o alguna combinación de hardware y software. Para ca" significará hardware, software, firmware o algunaAlgunas realizaciones analizadas en el presente docu
GPCPU, CPU, GPU, etc.), controladores de gráficos, et
Además, algunas realizaciones se pueden aplicar en sis
ejemplo, con uno o más núcleos de procesador), tale
incluyen, por ejemplo, dispositivos informáticos móviles,
personal ultramóvil), ordenador portátil, dispositivo infor
inteligente o gafas inteligentes), etc.
En algunas realizaciones, una unidad de procesamient
núcleos de anfitrión/de procesador para acelerar las
automático, las operaciones de análisis de patrones y d
GPU puede acoplarse de manera comunicativa al p
interconexión (por ejemplo, una interconexión de alta v
GPU se puede integrar en el mismo paquete o chip que
núcleos a través de un bus/interconexión interna
Independientemente de la manera en la que se conecta
la GPU en forma de secuencias de comandos/instrucci
continuación, circuitería/lógica especializada para proce
En la siguiente descripción, se exponen numerosos d
minuciosa. Sin embargo, será evidente para un experto
documento pueden ponerse en práctica sin uno o más d
características bien conocidas para evitar oscurecer los
Vista general del sistema
La Figura 1 es un diagrama de bloques que ilustra un
más aspectos de las realizaciones descritas en el p
subsistema de procesamiento 101 que tiene uno o m
comunica por medio de una ruta de interconexión que p
de memoria 105 puede ser un componente separad
integrarse dentro del uno o más procesadores 102. El c
E/S 111 mediante un enlace de comunicaciones 106. E
que puede permitir que el sistema informático 100 recib
Adicionalmente, el concentrador de E/S 107 puede per
en el uno o más procesadores 102, para que proporcio
una realización, el uno o más dispositivos de visualizac
incluir un dispositivo de visualización local, interno o em
En una realización, el subsistema de procesamiento 10
acoplados al concentrador de memoria 105 mediante
comunicación 113 puede ser uno de cualquier número d
en normas, tales como, pero sin limitación, PCI Expre
comunicaciones específica del proveedor. En una reali
sistema de procesamiento paralelo o vectorial de enfoq
procesamiento y/o agrupaciones de procesamiento, tal
una realización, el uno o más procesadores paralelos
puede emitir píxeles a uno del uno o más o dispositivos
E/S 107. El uno o más procesadores paralelos 112 pued
de visualización (no mostrados) para posibilitar una con
Dentro del subsistema de E/S 111, una unidad de alma
de E/S 107 para proporcionar un mecanismo de almac
conmutador de E/S 116 para proporcionar un mecanism
de E/S 107 y otros componentes, tales como un adapt
pueden estar integrados en la plataforma, y otros divers
dispositivos de adición 120. El adaptador de red 118 p
alámbrica. El adaptador de red inalámbrica 119 puede in
de comunicación de campo cercano (NFC) o de otro tip
El sistema informático 100 puede incluir otros compone
conexiones de puerto, unidades de almacenamiento ó
conectarse también al concentrador de E/S 107. L
componentes de la Figura 1 pueden implementarse to pueden aplicarse en cualquier procesador (tal como ambién se divulgan y reivindican otras realizaciones.
as informáticos que incluyen uno o más procesadores (por mo los que se analizan en el presente documento, que ejemplo, un teléfono inteligente, tableta, UMPC (ordenador ico Ultrabook™, dispositivos llevables (tales como un reloj
gráficos (GPU) está acoplada de manera comunicativa a eraciones de gráficos, las operaciones de aprendizaje sas funciones de GPU de propósito general (GPGPU). La sador/núcleos de anfitrión a través de un bus u otra idad tal como PCIe o NVLink). En otras realizaciones, la núcleos y se puede acoplar de manera comunicativa a los l procesador (es decir, interna al paquete o chip). PU, los núcleos de procesador pueden asignar trabajo a s contenidas en un descriptor de trabajo. La GPU usa, a de manera eficiente estos comandos/instrucciones.
les específicos para proporcionar una comprensión más la materia que las realizaciones descritas en el presente tos detalles específicos. En otros casos, no se han descrito alles de las presentes realizaciones.
ma informático 100 configurado para implementar uno o nte documento. El sistema informático 100 incluye un rocesadores 102 y una memoria de sistema 104 que se incluir un concentrador de memoria 105. El concentrador ntro de un componente de conjunto de chips o puede ntrador de memoria 105 se acopla con un subsistema de bsistema de E/S 111 incluye un concentrador de E/S 107 na entrada desde uno o más dispositivos de entrada 108. un controlador de visualización, que puede estar incluido alidas a uno o más dispositivos de visualización 110A. En 110A acoplados con el concentrador de E/S 107 pueden ido.
luye uno o más procesador o procesadores paralelos 112 bus u otro enlace de comunicación 113. El enlace de nologías o protocolos de enlace de comunicación basados o puede ser una interfaz de comunicaciones o tejido de ón, el uno o más procesadores paralelos 112 forman un omputacional que incluye un gran número de núcleos de o un procesador de muchos núcleos integrados (MIC). En forman un subsistema de procesamiento de gráficos que isualización 110A acoplados mediante el concentrador de cluir también un controlador de visualización y una interfaz n directa a uno o más dispositivos de visualización 110B.
miento de sistema 114 puede conectarse al concentrador miento para el sistema informático 100. Puede usarse un interfaz para posibilitar conexiones entre el concentrador de red 118 y/o un adaptador de red inalámbrica 119 que ispositivos que puedan añadirse por medio de uno o más e ser un adaptador de Ethernet u otro adaptador de red uno o más de un dispositivo de red de Wi-Fi, de Bluetooth, e incluye una o más radios inalámbricas.
no mostrados explícitamente, que incluyen USB u otras o, dispositivos de captura de vídeo y similares, y puede rutas de comunicación que interconectan los diversos ndo cualquier protocolo adecuado, tal como protocolosbasados en PCI (interconexión de Componentes Per
interfaces y/o protocolo o protocolos de comunicación d
velocidad NV-Link, o protocolos de interconexión conoci
En una realización, el uno o más procesador o proces
procesamiento de gráficos y vídeo, que incluye, por eje
de procesamiento de gráficos (GPU). En otra realizaci
incorporan circuitería optimizada para procesamiento
computacional subyacente, descrita en mayor detalle
componentes del sistema informático 100 pueden integr
circuito integrado. Por ejemplo, el uno o más proces
procesador o procesadores 102 y el concentrador de E/
en chip (SoC). Como alternativa, los componentes del si
para formar una configuración de sistema en paquet
componentes del sistema informático 100 se puede inte
interconectar con otros módulos de múltiples chips en u
Se apreciará que, el sistema informático 100 mostrado
variaciones y modificaciones. La topología de conexión,
procesador o procesadores 102 y el número de proces
se desee. Por ejemplo, en algunas realizaciones, la
procesadores 102 directamente en lugar de a través de
la memoria de sistema 104 mediante el concentrador de
topologías alternativas, el procesador o procesadores p
directamente a uno del uno o más procesadores 10
realizaciones, el concentrador de E/S 107 y el concent
chip. Algunas realizaciones pueden incluir dos o más
mediante múltiples zócalos, que pueden acoplarse con d
112.
Algunos de los componentes particulares mostrados e
incluidos en todas las implementaciones del sistema info
de tarjetas o periféricos de adición o se pueden eliminar a
usar una terminología diferente para componentes s
concentrador de memoria 105 puede denominarse
concentrador de E/S 107 puede denominarse puente sur
La Figura 2A ilustra un procesador en paralelo 200, de
procesador en paralelo 200 pueden implementarse utiliz
procesadores programables, circuitos integrados esp
programables en campo (FPGA). El procesador paralel
paralelos 112 mostrados en la Figura 1, de acuerdo con
En una realización, el procesador paralelo 200 incluye
procesamiento paralelo incluye una unidad de E/S 204 qu
otras instancias de la unidad de procesamiento paralelo
a otros dispositivos. En una realización, la unidad de E/
una interfaz de concentrador o de conmutador, tal com
concentrador de memoria 105 y la unidad de E/S 204 for
procesamiento paralelo 202, la unidad de E/S 204 se co
de memoria 216, donde la interfaz de anfitrión 206 recibe
y la barra transversal de memoria 216 recibe comandos
Cuando la interfaz de anfitrión 206 recibe una memoria
interfaz de anfitrión 206 puede dirigir operaciones de tr
208. En una realización, el extremo frontal 208 se acopla
comandos u otros elementos de trabajo a una matriz de
planificador 210 garantiza que la matriz de agrupacione
en un estado válido antes de que se distribuyan las ta
agrupaciones de procesamiento 212.
La matriz de agrupaciones de procesamiento 212 puede i
de la agrupación 214A, agrupación 214B a la agrupa
agrupaciones de procesamiento 212 puede ejecutar un
asignar trabajo a las agrupaciones 214A-214N de la ma
algoritmos de planificación y/o distribución de trabajo, qu os) (por ejemplo, PCI-Express), o cualesquiera otras o de punto a punto, tales como la interconexión de alta n la técnica.
s paralelos 112 incorporan circuitería optimizada para circuitería de salida de vídeo, y constituyen una unidad l uno o más procesador o procesadores paralelos 112 ropósito general, mientras conservan la arquitectura el presente documento. En otra realización más, los con uno o más otros elementos de sistema en un único s paralelos 112, el concentrador de memoria 105, el pueden integrarse en un circuito integrado de sistema informático 100 pueden integrarse en un único paquete P). En una realización, al menos una porción de los en un módulo de múltiples chips (MCM), que se puede ma informático modular.
l presente documento es ilustrativo y que son posibles cluye el número y disposición de puentes, el número de procesadores paralelos 112 se puede modificar según oria de sistema 104 está conectada al procesador o ente, mientras que otros dispositivos se comunican con oria 105 y el procesador o procesadores 102. En otras los 112 están conectados al concentrador de E/S 107 o lugar de al concentrador de memoria 105. En otras de memoria 105 pueden estar integrados en un único untos de procesador o procesadores 102 conectados más instancias del procesador o procesadores paralelos
resente documento son opcionales y pueden no estar o 100. Por ejemplo, puede soportarse cualquier número s componentes. Además, algunas arquitecturas pueden es a los ilustrados en la Figura 1. Por ejemplo, el te norte en algunas arquitecturas, mientras que el
rdo con una realización. Los diversos componentes del uno o más dispositivos de circuito integrado, tales como os de la aplicación (ASIC) o matrices de puertas ilustrado es una variante del uno o más procesadores ealización.
unidad de procesamiento paralelo 202. La unidad de ibilita la comunicación con otros dispositivos, incluyendo La unidad de E/S 204 se puede conectar directamente 4 se conecta con otros dispositivos mediante el uso de concentrador de memoria 105. Las conexiones entre el un enlace de comunicación 113. Dentro de la unidad de con una interfaz de anfitrión 206 y una barra transversal andos dirigidos a realizar operaciones de procesamiento dos a realizar operaciones de memoria.
media de comandos mediante la unidad de E/S 204, la para realizar aquellos comandos a un extremo frontal un planificador 210, que está configurado para distribuir paciones de procesamiento 212. En una realización, el procesamiento 212 está configurada apropiadamente y a las agrupaciones de procesamiento de la matriz de
hasta "N" agrupaciones de procesamiento (por ejemplo, 214N). Cada agrupación 214A-214N de la matriz de úmero de hilos concurrentes. El planificador 210 puede e agrupaciones de procesamiento 212 usando diversos den variar dependiendo de la carga de trabajo que surgepara cada tipo de programa o cálculo. La planificación
puede ser ayudada, en parte, por lógica de compilador
para la ejecución por la matriz de agrupaciones de
diferentes agrupaciones 214A-214N de la matriz de a
tipos de programas o para realizar diferentes tipos de c
La matriz de agrupaciones de procesamiento 212 pued
procesamiento paralelo. En una realización, la matriz d
realizar operaciones de cálculo paralelo de propós
procesamiento 212 puede incluir lógica para ejecutar tar
y/o de audio, realización de operaciones de mode
transformaciones de datos.
En una realización, la matriz de agrupaciones de proce
procesamiento de gráficos paralelo. En realizaciones e
realizar operaciones de procesamiento de gráficos, la m
lógica adicional para soportar la ejecución de tales ope
limitación, una lógica de muestreo de textura para realiz
y otra lógica de procesamiento de vértices. Adicionalmen
configurar para ejecutar programas de sombreado relaci
limitación, sombreadores de vértices, sombreadores de
píxeles. La unidad de procesamiento paralelo 202 pued
la unidad de E/S 204 para su procesamiento. Durante
en memoria en chip (por ejemplo, la memoria de proces
escribirse de vuelta en memoria de sistema.
En una realización, cuando se usa la unidad de procesa
el planificador 210 puede estar configurado para dividir
aproximadamente igual, para posibilitar mejor la distri
múltiples agrupaciones 214A-214N de la matriz de agr
porciones de la matriz de agrupaciones de procesamie
procesamiento. Por ejemplo, una primera porción pued
generación de topología, una segunda porción puede
geometría, y una tercera porción puede configurarse
espacio de pantalla, para producir una imagen represen
por una o más de las agrupaciones 214A-214N pueden
transmitan los datos intermedios entre las agrupaciones
Durante la operación, la matriz de agrupaciones de p
ejecutar a través del planificador 210, que recibe coma
frontal 208. Para operaciones de procesamiento de grá
datos que hay que procesar, por ejemplo, datos de sup
de píxel, así como parámetros de estado y comandos
qué programa ha de ejecutarse). El planificador 210 pu
las tareas o puede recibir los índices desde el extremo
garantizar que la matriz de agrupaciones de procesamie
inicie la carga de trabajo especificada por memorias i
intermedias de lotes, memorias intermedias de inserció
Cada una de la una o más instancias de la unidad de pr
procesador paralelo 222. Se puede acceder a la memo
de memoria 216, que puede recibir solicitudes de mem
así como desde la unidad de E/S 204. La barra transvers
paralelo 222 mediante una interfaz de memoria 218. La
subdivisión (por ejemplo, unidad de subdivisión 220A,
220N) pudiendo cada una acoplarse a una porción (po
paralelo 222. En una implementación, el número de un
sea igual al número de unidades de memoria, de ma
correspondiente primera unidad de memoria 224A
correspondiente unidad de memoria 224B y una unidad
de memoria Nésima 224N. En otras realizaciones, el n
igual al número de dispositivos de memoria.
En diversas realizaciones, las unidades de memoria
memoria, que incluyen memoria de acceso aleatorio diná
una memoria gráfica de acceso aleatorio síncrona (SGR e manejarse dinámicamente por el planificador 210, o te la compilación de la lógica de programa configurada samiento 212. En una realización, pueden asignarse ciones de procesamiento 212 para procesar diferentes .
figurarse para realizar diversos tipos de operaciones de paciones de procesamiento 212 está configurada para neral. Por ejemplo, la matriz de agrupaciones de procesamiento que incluyen filtración de datos de vídeo que incluyen operaciones físicas y realización de
nto 212 está configurada para realizar operaciones de que el procesador paralelo 200 está configurado para e agrupaciones de procesamiento 212 puede incluir una es de procesamiento de gráficos, incluyendo, pero sin eraciones de textura, así como una lógica de teselación matriz de agrupaciones de procesamiento 212 se puede s con el procesamiento de gráficos tales como, pero sin ación, sombreadores de geometría y sombreadores de sferir datos desde la memoria de sistema por medio de esamiento, los datos transferidos pueden almacenarse aralelo 222) durante el procesamiento y, a continuación,
paralelo 202 para realizar el procesamiento de gráficos, rga de trabajo de procesamiento en tareas de tamaño n de las operaciones de procesamiento de gráficos a ones de procesamiento 212. En algunas realizaciones, 2 pueden configurarse para realizar diferentes tipos de figurarse para realizar un sombreado de vértices y una figurarse para realizar sombreado de teselación y de realizar sombreado de píxeles u otras operaciones de para su visualización. Los datos intermedios producidos cenarse en memorias intermedias para permitir que se -214N para su procesamiento adicional.
amiento 212 puede recibir tareas de procesamiento a que definen tareas de procesamiento desde el extremo las tareas de procesamiento pueden incluir índices de (parche), datos de primitiva, datos de vértices y/o datos efinen cómo han de procesarse los datos (por ejemplo, nfigurarse para extraer los índices que corresponden a al 208. El extremo frontal 208 puede configurarse para 12 está configurada en un estado válido antes de que se edias de comando de entrada (por ejemplo, memorias ).
miento paralelo 202 puede acoplarse con la memoria de procesador paralelo 222 mediante la barra transversal esde la matriz de agrupaciones de procesamiento 212, memoria 216 puede acceder a la memoria de procesador az de memoria 218 puede incluir múltiples unidades de d de subdivisión 220B, hasta la unidad de subdivisión plo, unidad de memoria) de la memoria de procesador s de subdivisión 220A-220N está configurado para que ue una primera unidad de subdivisión 220A tiene una segunda unidad de subdivisión 220B tiene una división Nésima 220N tiene una correspondiente unidad de unidades de subdivisión 220A a 220N puede no ser
224N pueden incluir diversos tipos de dispositivos de (DRAM) o memoria gráfica de acceso aleatorio, tal como que incluye una memoria gráfica de doble tasa de datos(GDDR). En una realización, las unidades de memoria
incluye, pero sin limitación, memoria de alto ancho de
implementación específica de las unidades de memoria
uno de diversos diseños convencionales. Los objetivos d
o mapas de textura, pueden almacenarse a través de
unidades de subdivisión 220A-220N escriban partes
eficientemente el ancho de banda disponible de la me
puede excluirse una instancia local de la memoria de
unificado que utiliza memoria de sistema junto con mem
En una realización, una cualquiera de las agrupaciones
212 puede procesar datos que se escribirán en cualq
memoria de procesador paralelo 222. La barra transvers
salida de cada agrupación 214A-214N a cualquier unida
que puede realizar operaciones de procesamiento adi
comunicarse con la interfaz de memoria 218 a través de l
en diversos dispositivos de memoria externos. En una
conexión a la interfaz de memoria 218 para comunicar
instancia local de la memoria de procesador paralelo 22
de las diferentes agrupaciones de procesamiento 214
memoria que no sea local a la unidad de procesamien
memoria 216 puede usar canales virtuales para separ
unidades de subdivisión 220A-220N.
Aunque se ilustra una única instancia de la unidad de pr
puede incluirse cualquier número de instancias de la uni
proporcionar múltiples instancias de la unidad de proc
pueden interconectar múltiples tarjetas adicionales. Las
202 pueden configurarse para interfuncionar incluso si l
de procesamiento, diferentes cantidades de memori
configuración. Por ejemplo, y en una realización, algu
pueden incluir unidades de coma flotante de precisión
incorporan una o más instancias de la unidad de proce
implementarse en una diversidad de configuraciones y fa
personales de sobremesa, portátiles o de mano, servid
embebidos.
La Figura 2B es un diagrama de bloques de una unidad
realización, la unidad de subdivisión 220 es una instan
Figura 2A. Como se ilustra, la unidad de subdivisión 220 i
de tramas 225 y una ROP 226 (unidad de operacio
lectura/escritura que está configurada para realizar oper
transversal de memoria 216 y la ROP 226. La memoria
escritura urgentes a la interfaz de memoria intermedia de
las actualizaciones sucias a la memoria intermedia de tr
225 para su procesamiento oportunista. En una realizaci
con una de las unidades de memoria en la memoria de p
224N de la Figura 2 (por ejemplo, dentro de la memoria
En las aplicaciones de gráficos, la ROP 226 es una unida
tales como estarcido, prueba z, mezcla y similares. La
que se almacenan en memoria de gráficos. En algunas
para comprimir datos z o de color que se escriben en la
la memoria. En algunas realizaciones, la ROP 226 se
ejemplo, la agrupación 214A-214N de la Figura 2) en lug
las solicitudes de lectura y escritura de datos de píxeles
en lugar de datos de fragmentos de píxeles. Los datos
de visualización, tal como uno del uno o más dispositivo
para su procesamiento adicional por el procesador o
adicional por una de las entidades de procesamiento de
La Figura 2C es un diagrama de bloques de una a
procesamiento paralelo, de acuerdo con una realización
instancia de una de las agrupaciones de procesamiento
214 puede configurarse para ejecutar muchos hilos en
un programa particular que se ejecuta en un conjunto -224N pueden incluir también memoria 3D apilada, que a (HBM). Los expertos en la materia apreciarán que la A-224N puede variar y puede seleccionarse a partir de derización, tales como memorias intermedias de tramas nidades de memoria 224A-224N, permitiendo que las ada objetivo de renderización en paralelo para usar de procesador paralelo 222. En algunas realizaciones, sador paralelo 222 en favor de un diseño de memoria aché local.
-214N de la matriz de agrupaciones de procesamiento de las unidades de memoria 224A-224N dentro de la memoria 216 puede estar configurada para transferir la subdivisión 220A-220N o a otra agrupación 214A-214N, les en la salida. Cada agrupación 214A-214N puede ra transversal de memoria 216 para leer desde o escribir zación, la barra transversal de memoria 216 tiene una n la unidad de E/S 204, así como una conexión a una ue posibilita que las unidades de procesamiento dentro N se comuniquen con la memoria de sistema u otra ralelo 202. En una realización, la barra transversal de jos de tráfico entre las agrupaciones 214A-214N y las
miento paralelo 202 dentro del procesador paralelo 200, e procesamiento paralelo 202. Por ejemplo, se pueden iento paralelo 202 en una única tarjeta adicional o se ntes instancias de la unidad de procesamiento paralelo rentes instancias tienen diferentes números de núcleos procesador paralelo local y/u otras diferencias de stancias de la unidad de procesamiento paralelo 202 alta con relación a otras instancias. Los sistemas que nto paralelo 202 o el procesador paralelo 200 pueden s de forma, incluyendo, pero sin limitación, ordenadores estaciones de trabajo, consolas de juegos y/o sistemas
ubdivisión 220, de acuerdo con una realización. En una una de las unidades de subdivisión 220A-220N de la e una caché L2221, una interfaz de memoria intermedia e rasterización). La caché L2 221 es una caché de es de carga y almacenamiento recibidas desde la barra é L2 221 emite los fallos de lectura y las solicitudes de s 225 para su procesamiento. Pueden enviarse también mediante la interfaz de memoria intermedia de tramas interfaz de memoria intermedia de tramas 225 interactúa ador paralelo, tal como las unidades de memoria 224A-ocesador paralelo 222).
procesamiento que realiza operaciones de rasterización 26 emite, a continuación, datos de gráficos procesados aciones, la ROP 226 incluye una lógica de compresión ria y descomprimir datos z o de color que se leen desde ye dentro de cada agrupación de procesamiento (por entro de la unidad de subdivisión 220. En tal realización, nsmiten a través de la barra transversal de memoria 216 ficos procesados pueden visualizarse en un dispositivo ositivos de visualización 110 de la Figura 1, encaminarse esadores 102, o encaminarse para su procesamiento el procesador paralelo 200 de la Figura 2A.
ción de procesamiento 214 dentro de una unidad de una realización, la agrupación de procesamiento es una -214N de la Figura 2. La agrupación de procesamiento lo, donde el término "hilo" se refiere a una instancia de ular de datos de entrada. En algunas realizaciones, seusan técnicas de emisión de instrucciones de única instr
paralela de un gran número de hilos sin proporcionar
realizaciones, se usan técnicas de única instrucción de
un gran número de hilos generalmente sincronizados, us
emitir instrucciones en un conjunto de motores de pr
procesamiento. A diferencia del régimen de ejecución de
habitualmente instrucciones idénticas, la ejecución de SI
de ejecución divergentes a través de un programa de
régimen de procesamiento de SIMD representa un subco
El funcionamiento de la agrupación de procesamiento 214
232 que distribuye tareas de procesamiento a procesador
instrucciones desde el planificador 210 de la Figura 2
multiprocesador de gráficos 234 y/o una unidad de textu
instancia ilustrativa de un procesador paralelo de SIMT. S
paralelos de SIMT de arquitecturas diferentes dentro de
más instancias del multiprocesador de gráficos 234
multiprocesador de gráficos 234 puede procesar datos
distribuir los datos procesados a uno de múltiples posibl
gestor de canalizaciones 232 puede facilitar la distribuci
distribuyan datos procesados mediante la barra transvers
Cada multiprocesador de gráficos 234 dentro de la agrupa
de lógica de ejecución funcional (por ejemplo, unidades
La lógica de ejecución funcional puede configurarse de
instrucciones antes de que se hayan completado instruc
diversidad de operaciones que incluyen aritmética d
comparación, operaciones booleanas, desplazamiento
realización, se puede aprovechar el mismo hardware fun
estar presente cualquier combinación de unidades funcio
Las instrucciones transmitidas a la agrupación de proces
ejecutan a lo largo del conjunto de motores de procesami
el mismo programa sobre diferentes datos de entrada.
motor de procesamiento diferente dentro de un multiproce
hilos que el número de motores de procesamiento dentr
hilos incluye menos hilos que el número de motores de
pueden estar inactivos durante los ciclos en los que se e
incluir también más hilos que el número de motores de
Cuando el grupo de hilos incluye más hilos que el núme
de gráficos 234, puede realizarse un procesamiento a l
pueden ejecutarse múltiples grupos de hilos concurrente
En una realización, el multiprocesador de gráficos 234 i
de carga y de almacenamiento. En una realización, el mu
interna y usar una memoria caché (por ejemplo, la caché
multiprocesador de gráficos 234 también tiene acceso a c
las unidades de subdivisión 220A-220N de la Figura
procesamiento 214 y pueden usarse para transferir da
acceder también a memoria global fuera de chip, que p
local y/o memoria de sistema. Cualquier memoria externa
como memoria global. Las realizaciones en las que la a
del multiprocesador de gráficos 234 pueden compartir in
memoria caché L1 308.
Cada agrupamiento de procesamiento 214 puede inclui
configurada para mapear direcciones virtuales en direcci
la MMU 245 pueden residir dentro de la interfaz de mem
entradas de tabla de página (PTE) usadas para mapear
opcionalmente, un índice de líneas de caché. La MM
adelantada (TLB) de direcciones o cachés que pueden r
L1 o la agrupación de procesamiento 214. La dirección fís
de superficie para permitir una intercalación de solicitud e
caché puede usarse para determinar si una solicitud de ión, de múltiples datos (SIMD) para soportar la ejecución tiples unidades de instrucción independientes. En otras tiples hilos (SIMT) para soportar la ejecución paralela de o una unidad de instrucciones comunes configurada para samiento dentro de cada una de las agrupaciones de D, donde todos los motores de procesamiento ejecutan permite que diferentes hilos sigan más fácilmente rutas s dado. Los expertos en la materia entenderán que un nto funcional de un régimen de procesamiento de SIMT.
puede controlar por medio de un gestor de canalizaciones paralelos de SIMT. El gestor de canalizaciones 232 recibe estiona la ejecución de esas instrucciones mediante un 36. El multiprocesador de gráficos 234 ilustrado es una mbargo, pueden incluirse diversos tipos de procesadores grupación de procesamiento 214. Puede incluirse una o ntro de una agrupación de procesamiento 214. El uede usarse una barra transversal de datos 240 para destinos, que incluyen otras unidades sombreadoras. El e datos procesados especificando destinos para que se e datos 240.
de procesamiento 214 puede incluir un conjunto idéntico ético-lógicas, unidades de carga-almacenamiento, etc.). a manera canalizada en la que pueden emitirse nuevas es previas. La lógica de ejecución funcional soporta una úmeros enteros y de coma flotante, operaciones de its y cálculo de diversas funciones algebraicas. En una nal-unitario para realizar diferentes operaciones y puede s.
ento 214 constituyen un hilo. Un conjunto de hilos que se paralelo es un grupo de hilos. Un grupo de hilos ejecuta a hilo dentro de un grupo de hilos puede asignarse a un or de gráficos 234. Un grupo de hilos puede incluir menos el multiprocesador de gráficos 234. Cuando un grupo de esamiento, uno o más de los motores de procesamiento procesando ese grupo de hilos. Un grupo de hilos puede cesamiento dentro del multiprocesador de gráficos 234. e motores de procesamiento dentro del multiprocesador rgo de ciclos de reloj consecutivos. En una realización, te en un multiprocesador de gráficos 234.
ye una memoria caché interna para realizar operaciones rocesador de gráficos 234 puede prescindir de una caché 08) dentro de la agrupación de procesamiento 214. Cada és L2 dentro de las unidades de subdivisión (por ejemplo, que se comparten entre todas las agrupaciones de entre hilos. El multiprocesador de gráficos 234 puede e incluir una o más de memoria de procesador paralelo a unidad de procesamiento en paralelo 202 puede usarse ación de procesamiento 214 incluye múltiples instancias ciones y datos comunes, que pueden almacenarse en la
na MMU 245 (unidad de gestión de memoria) que está s físicas. En otras realizaciones, una o más instancias de 218 de la Figura 2. La MMU 245 incluye un conjunto de dirección virtual con una dirección física de una tesela y, 45 puede incluir memorias intermedias de traducción ir dentro del multiprocesador de gráficos 234 o la caché se procesa para distribuir la localidad de acceso de datos nte entre unidades de subdivisión. El índice de líneas de línea de caché es un acierto o un fallo.
En aplicaciones gráficas y de cálculo, una agrupación d
multiprocesador de gráficos 234 esté acoplado a una u
textura, por ejemplo, determinar posiciones de muestra
Los datos de textura se leen desde una caché L1 de tex
la caché L1 dentro del multiprocesador de gráficos 234
paralelo local o memoria de sistema, según sea nec
procesadas a la barra transversal de datos 240 pa
procesamiento 214 para un procesamiento adicional o
una memoria de procesador paralelo local o una memori
Una preROP 242 (unidad de operaciones previas a la
multiprocesador de gráficos 234, dirigir datos a las uni
subdivisión como se describe en el presente document
Figura 2). La unidad de preROP 242 puede realizar opti
de píxel y realizar traducciones de dirección.
Se apreciará que, la arquitectura de núcleo descrita
variaciones y modificaciones. Puede incluirse cualqui
multiprocesador de gráficos 234, las unidades de textu
procesamiento 214. Además, aunque solo se muest
procesamiento paralelo como se describe en el present
la agrupación de procesamiento 214. En una realizació
para funcionar independientemente de otras agrupacion
separadas y distintas, cachés L1, etc.
La Figura 2D muestra un multiprocesador de gráficos
multiprocesador de gráficos 234 se acopla con el gest
214. El multiprocesador de gráficos 234 tiene una canali
de instrucciones 252, una unidad de instrucciones 254, u
258, uno o más núcleos de unidad de procesamiento
unidades de carga/almacenamiento 266. Los núcleos d
se acoplan con la memoria caché 272 y la memoria co
268.
En una realización, la caché de instrucciones 252 recib
canalizaciones 232. Las instrucciones se almacenan en
su ejecución por la unidad de instrucciones 254. La uni
grupos de hilos (por ejemplo, urdimbres), con cada hilo d
dentro del núcleo de GPGPU 262. Una instrucción pue
compartido o global especificando una dirección dentro
de direcciones 256 puede usarse para traducir direccio
memoria distinta a la que pueden acceder las unidades
El archivo de registro 258 proporciona un conjunto de r
gráficos 324. El archivo de registro 258 proporciona alm
de datos de las unidades funcionales (por ejemplo, núcl
multiprocesador de gráficos 324. En una realización, el a
funcionales de manera que cada unidad funcional está
258. En una realización, el archivo de registro 258 se di
el multiprocesador de gráficos 324.
Los núcleos de GPGPU 262 puede cada uno incluir uni
(ALU) de números enteros que se usan para ejecutar in
de GPGPU 262 pueden ser similares en arquitectura o p
Por ejemplo, y en una realización, una primera porción
sencilla y una ALU de números enteros, mientras que
FPU de precisión doble. En una realización, las FPU pu
coma flotante o posibilitar aritmética de coma flotante d
incluir adicionalmente una o más unidades de función
tales como operaciones de copiar rectángulo o de mez
de GPGPU puede incluir también lógica de función fija
La interconexión de memoria y caché 268 es una re
funcionales del multiprocesador de gráficos 324 al arc
realización, la interconexión de memoria y caché 268
unidad de carga/almacén 266 implemente operaciones
y el archivo de registro 258. El archivo de registro 258 p esamiento 214 puede configurarse de manera que cada de textura 236 para realizar operaciones de mapeo de xtura, leer datos de textura y filtrar los datos de textura. nterna (no mostrada) o, en algunas realizaciones, desde recuperan desde una caché L2, memoria de procesador . Cada multiprocesador de gráficos 234 emite tareas oporcionar la tarea procesada a otra agrupación de lmacenar la tarea procesada en una memoria caché L2, sistema a través de la barra transversal de memoria 216. erización) está configurada para recibir datos desde el de ROP, que pueden estar ubicadas con unidades de r ejemplo, las unidades de subdivisión 220A-220N de la ciones para la mezcla de color, organizar datos de color
presente documento es ilustrativa y que son posibles mero de unidades de procesamiento, por ejemplo, el 6, las preROP 242, etc., dentro de una agrupación de a agrupación de procesamiento 214, una unidad de umento puede incluir cualquier número de instancias de a agrupación de procesamiento 214 puede configurarse procesamiento 214 usando unidades de procesamiento
de acuerdo con una realización. En tal realización, el canalizaciones 232 de la agrupación de procesamiento de ejecución que incluye, pero sin limitación, una caché idad de mapeo de direcciones 256, un archivo de registro ficos de propósito general (GPGPU) 262 y una o más GPU 262 y las unidades de carga/almacenamiento 266 da 270 mediante una interconexión de memoria y caché
lujo de instrucciones para ejecutarse desde el gestor de é en la caché de instrucciones 252 y se despachan para e instrucción 254 puede despachar instrucciones como po de hilos asignado a una unidad de ejecución diferente ceder a cualquiera de un espacio de direcciones local, espacio de direcciones unificado. La unidad de mapeo n el espacio de direcciones unificado a una dirección de rga/almacenamiento 266.
s para las unidades funcionales del multiprocesador de miento temporal para operandos conectados a las rutas PGPU 262, unidades de carga/almacenamiento 266) del de registro 258 se divide entre cada una de las unidades ada a una porción especializada del archivo de registro ntre las diferentes urdimbres que se ejecutan mediante
de coma flotante (FPU) y/o unidades aritmético-lógicas ciones del multiprocesador de gráficos 324. Los núcleos diferir en arquitectura, de acuerdo con las realizaciones. s núcleos de GPGPU 262 incluye una FPU de precisión egunda porción de los núcleos de GPGPU incluye una implementar la norma IEEE 754-2008 para aritmética de isión variable. El multiprocesador de gráficos 324 puede de función especial para realizar funciones específicas píxeles. En una realización, uno o más de los núcleos cial.
interconexión que conecta cada una de las unidades e registro 258 y a la memoria compartida 270. En una interconexión de barra transversal que permite que la rga y almacenamiento entre la memoria compartida 270 perar a la misma frecuencia que los núcleos de GPGPU262, por lo tanto, la transferencia de datos entre los nú
baja latencia. La memoria compartida 270 se puede us
las unidades funcionales dentro del multiprocesador de
caché de datos, por ejemplo, para almacenar en caché
y la unidad de textura 236. La memoria compartida 270
programas. Los hilos que se ejecutan en los núcleos de
dentro de la memoria compartida además de los datos
dentro de la memoria caché 272.
Las Figuras 3A-3B ilustran multiprocesadores de
multiprocesadores de gráficos 325, 350 ilustrados son v
Los multiprocesadores de gráficos 325, 350 ilustrados
por flujo continuo (SM) que puede realizar la ejecución
La Figura 3A muestra un multiprocesador de gráficos 32
de gráficos 325 incluye múltiples instancias adicio
multiprocesador de gráficos 234 de la Figura 2D. Po
múltiples instancias de la unidad de instrucciones 332A-de textura 344A-344B. El multiprocesador de gráfico
ejecución de cálculo o de gráficos (por ejemplo, el núcl
el núcleo de GPGPU 338A-338B) y múltiples conjunto
realización, las unidades de recurso de ejecución tiene
de textura y/o de datos 342 y una memoria compartida 3
un tejido de interconexión 327. En una realización, el tej
barra transversal para posibilitar la comunicación entre l
La Figura 3B muestra un multiprocesador de gráficos 3
gráficos incluye múltiples conjuntos de recursos de e
ejecución incluye múltiples unidades de instrucción, ar
almacén, como se ilustra en la Figura 2D y en la Figura
en conjunto con la unidad o unidades de texturas 360
caché de instrucciones 354 y una memoria compartida
pueden compartir una caché de instrucciones 354 y un
una memoria caché de textura y/o de datos 358A-358B.
un tejido de interconexión 352 similar al tejido de interc
Los expertos en la materia entenderán que la arquitect
no limitante en cuanto al alcance de las presentes real
documento pueden implementarse en cualquier unidad
entre otros, uno o más procesadores de aplicaciones m
de escritorio o de servidor, incluidas CPU de múltiples n
como la unidad de procesamiento paralelo 202 de la Fi
de procesamiento de propósito especial, sin apartars
documento.
En algunas realizaciones, un procesador paralelo o
acoplado de manera comunicativa a núcleos de a
operaciones de aprendizaje automático, operaciones de
general (GPGPU). La GPU puede estar acoplada de m
de un bus u otra interconexión (por ejemplo, una interc
realizaciones, la GPU se puede integrar en el mismo p
comunicativa a los núcleos a través de un bus/interco
chip). Independientemente de la manera en la que se
trabajo a la GPU en forma de secuencias de comandos/
usa, a continuación, circuitería/lógica especializada par
Técnicas para interconexión de GPU a procesador d
La Figura 4A ilustra una arquitectura ilustrativa en la qu
comunicativa a una pluralidad de procesadores de múl
440-443 (por ejemplo, buses, interconexiones de punto
440-443 soportan un caudal de comunicación de
implementación. Pueden usarse diversos protocolos de
y NVLink 2.0. Sin embargo, los principios subyacente
comunicación o caudal particular.
de GPGPU 262 y el archivo de registro 258 es de muy permitir la comunicación entre hilos que se ejecutan en os 234. La memoria caché 272 puede usarse como una de textura comunicados entre las unidades funcionales ién se puede usar como memoria caché gestionada por U 262 pueden almacenar datos mediante programación cenados automáticamente en caché que se almacenan
os adicionales, de acuerdo con realizaciones. Los tes del multiprocesador de gráficos 234 de la Figura 2C. n estar configurados como un multiprocesador de envío ánea de un gran número de hilos de ejecución.
cuerdo con una realización adicional. El multiprocesador de unidades de recurso de ejecución relativas al plo, el multiprocesador de gráficos 325 puede incluir el archivo de registro 334A-334B y la unidad o unidades también incluye múltiples conjuntos de unidades de GPGPU 336A-336B, el núcleo de GPGPU 337A-337B, nidades de carga/almacenamiento 340A-340B. En una caché de instrucciones común 330, una memoria caché s diversos componentes pueden comunicarse mediante interconexión 327 incluye uno o más conmutadores de ersos componentes del multiprocesador de gráficos 325.
acuerdo con una realización adicional. El procesador de ión 356A-356D, donde cada conjunto de recursos de de registro, núcleos de GPGPU y unidades de cargaos recursos de ejecución 356A-356D pueden funcionar para operaciones de textura, mientras comparten una n una realización, los recursos de ejecución 356A-356D moria compartida 362, así como múltiples instancias de diversos componentes pueden comunicarse a través de n 327 de la Figura 3A.
scrita en las Figuras 1, 2A-2D y 3A-3B es descriptiva y nes. Por lo tanto, las técnicas descritas en el presente rocesamiento configurada adecuadamente, incluyendo, una o más unidades centrales de procesamiento (CPU) s, una o más unidades de procesamiento paralelo, tales , así como uno o más procesadores gráficos o unidades alcance de las realizaciones descritas en el presente
U como se describe en el presente documento está n/procesador para acelerar operaciones de gráficos, is de patrones y diversas funciones de GPU de propósito comunicativa al procesador/núcleos de anfitrión a través ón de alta velocidad tal como PCIe o NVLink). En otras o chip que los núcleos y se puede acoplar de manera interna del procesador (es decir, interna al paquete o ta la GPU, los núcleos de procesador pueden asignar cciones contenidas en un descriptor de trabajo. La GPU esar de manera eficiente estos comandos/instrucciones.
itrión
pluralidad de GPU 410-413 están acopladas de manera núcleos 405-406 a través de enlaces de alta velocidad o, etc.). En una realización, los enlaces de alta velocidad /s, 30 GB/s, 80 GB/s o mayor, dependiendo de la onexión que incluyen, pero sin limitación, PCIe 4.0 o 5.0 la invención no están limitados a ningún protocolo deAdemás, en una realización, dos o más de las GPU
velocidad 444-445, que pueden implementarse usand
usados para enlaces de alta velocidad 440-443. De m
núcleos 405-406 pueden conectarse a través del enlac
procesadores simétricos (SMP) que operan a 20 G
comunicación entre los diversos componentes de siste
mismos protocolos/enlaces (por ejemplo, a través de
menciona, los principios subyacentes de la invención
interconexión.
En una realización, cada procesador de múltiples núcl
memoria de procesador 401 -402, mediante las intercon
410-413 está acoplada de manera comunicativa a la m
memoria de GPU 450-453, respectivamente. Las interc
mismas tecnologías de acceso a memoria o diferentes.
procesador 401-402 y las memorias de GPU 420-423 p
aleatorio dinámicas (DRAM) (incluyendo DRAM apilada
GDDR6) o memoria de ancho de banda alto (HBM) y/o
Nano-Ram. En una realización, una porción de las m
memoria no volátil (por ejemplo, usando una jerarquía d
Como se describe a continuación, aunque los diversos
acoplarse físicamente a una memoria 401-402, 420-arquitectura de memoria unificada en la que el mismo es
espacio "de direcciones efectivas") está distribuido entr
de las memorias de procesador 401 -402 puede compren
y cada una de las memorias de GPU 420-423 puede c
sistema (dando como resultado un total de memoria dire
La Figura 4B ilustra detalles adicionales para una inter
módulo de aceleración de gráficos 446 de acuerdo co
puede incluir uno o más chips de GPU integrados en u
el enlace de alta velocidad 440. Como alternativa, el m
mismo paquete o chip que el procesador 407.
El procesador 407 ilustrado incluye una pluralidad de n
traducción adelantada 461A-461D y una o más cach
componentes para ejecutar instrucciones y procesar dat
subyacentes de la invención, (por ejemplo, unidades
ramificación, decodificadores, unidades de ejecución, m
462D pueden comprender cachés de nivel 1 (L1) y de niv
incluirse en la jerarquía de almacenamiento en caché
ejemplo, una realización del procesador 407 incluye 24
compartidas y doce cachés L3 compartidas. En esta real
núcleos adyacentes. El procesador 407 y el módulo de i
memoria de sistema 441, que puede incluir las memoria
La coherencia se mantiene para los datos e instruccion
memoria de sistema 441 a través de comunicación entre
cada caché puede tener una lógica/circuitería de cohere
del bus de coherencia 464 en respuesta a lecturas o e
implementación, se implementa un protocolo de monit
monitorizar los accesos de caché. Las técnicas de coh
expertos en la técnica y no se describirán en el pre
subyacentes de la invención.
En una realización, un circuito proxy 425 acopla de man
bus de coherencia 464, permitiendo al módulo de aceler
de caché como un par de los núcleos. En particular, una
través del enlace de alta velocidad 440 (por ejemplo, un
de aceleración de gráficos 446 al enlace de alta velocid
En una implementación, un circuito de integración de
acceso a memoria, gestión de contexto y gestión de
procesamiento de gráficos 431,432, N del módulo de a
gráficos 431,432, N puede comprender una unidad de p 413 están interconectadas a través de enlaces de alta mismos protocolos/enlaces o diferentes que aquellos a similar, dos o más de los procesadores de múltiples alta velocidad 433, que puede ser buses de múltiples 30 GB/s, 120 GB/s o más. Como alternativa, toda la ostrados en la Figura 4A puede conseguirse usando los ejido de interconexión común). Sin embargo, como se stán limitados a ningún tipo particular de tecnología de
405-406 está acoplado de manera comunicativa a una es de memoria 430-431, respectivamente, y cada GPU ia de la GPU 420-423 a través de las interconexiones de iones de memoria 430-431 y 450-453 pueden utilizar las odo de ejemplo y no como limitación, las memorias de n ser memorias volátiles, tal como memorias de acceso DRAM DDR de gráficos (GDDR) (por ejemplo, GDDR5, den ser memorias no volátiles, tales como 3D XPoint o ias puede ser memoria volátil y otra porción puede ser moria de dos niveles (2LM)).
esadores 405-406 y las diversas GPU 410-413 pueden particular, respectivamente, puede implementarse una o de direcciones de sistema virtual (también denominado as las diversas memorias físicas. Por ejemplo, cada una 64 GB del espacio de direcciones de memoria de sistema ender 32 GB del espacio de direcciones de memoria de nable de 256 GB en este ejemplo).
xión entre un procesador de múltiples núcleos 407 y un realización. El módulo de aceleración de gráficos 446 rjeta de línea que se acopla al procesador 407 mediante o de aceleración de gráficos 446 puede integrarse en el
s 460A-460D, cada uno con una memoria intermedia de 62A-462D. Los núcleos pueden incluir diversos otros ue no se han ilustrado para evitar oscurecer los principios xtracción de instrucciones, unidades de predicción de ias intermedias de reordenación, etc.). Las cachés 462A-L2). Además, una o más cachés compartidas 426 pueden compartidas por conjuntos de núcleos 460A-460D. Por leos, cada uno con su propia caché L1, doce cachés L2 ón, una de las cachés L2 y L3 están compartidas por dos ración de acelerador de gráficos 446 se conectan con la procesador 401 -402
macenados en las diversas cachés 462A-462D, 456 y la leos a través de un bus de coherencia 464. Por ejemplo, de caché asociada a la misma para comunicarse a través ras detectadas en líneas de caché particulares. En una ción de caché a través del bus de coherencia 464 para ia/monitorización de caché son bien entendidas por los e caso en detalle para evitar complicar los principios
omunicativa el módulo de aceleración de gráficos 446 al de gráficos 446 participar en el protocolo de coherencia rfaz 435 proporciona conectividad al circuito proxy 425 a PCIe, NVLink, etc.) y una interfaz 437 conecta el módulo 0.
erador 436 proporciona servicios de gestión de caché, rrupción en nombre de una pluralidad de motores de ación de gráficos 446. Cada motor de procesamiento de samiento de gráficos (GPU) separada. Como alternativa,los motores de procesamiento de gráficos 431, 43
procesamiento de gráficos dentro de una GPU, tal
procesamiento de medios (por ejemplo, codificadores/d
En otras palabras, el módulo de aceleración de gráfi
procesamiento de gráficos 431-432, N, o los motores
individuales integradas en un paquete, tarjeta de línea
En una realización, el circuito de integración de acelera
para realizar diversas funciones de gestión de memoria
denominadas traducciones de memoria efectiva a real)
de sistema 441. La MMU 439 puede incluir también
mostrada) para almacenar en caché las traducciones de
una caché 438 almacena comandos y datos para un a
431-432, N. En una realización, los datos almacenados
mantienen coherentes con las cachés de núcleo 46
mencionado, esto se puede conseguir mediante el circu
de caché en beneficio de la caché 438 y las memorias
438 relacionadas con modificaciones/accesos de líneas
456 y recibiendo actualizaciones desde la caché 438).
Un conjunto de registros 445 almacenan datos de cont
de gráficos 431-432, N y un circuito de gestión de conte
de gestión de contexto 448 puede realizar operaciones
de los diversos hilos durante conmutaciones de cont
almacena un segundo hilo de modo que el segundo hilo
Por ejemplo, en una conmutación de contexto, el circu
registro actuales en una región designada en memori
continuación, puede restablecer los valores de registro
de gestión de interrupciones 447 recibe y procesa interr
En una implementación, direcciones virtuales/efectiva
traducidas, por la MMU 439, a direcciones reales/físicas
integración de acelerador 436 soporta múltiples (por ej
otros dispositivos de aceleración. El módulo de aceler
aplicación ejecutada en el procesador 407 o puede co
presenta un entorno de ejecución de gráficos virtualizad
gráficos 431-432, N se comparten con múltiples aplic
subdividir en "cortes" que se asignan a diferentes VM y/
y las prioridades asociadas a las VM y/o aplicaciones.
Por tanto, el circuito de integración de acelerador actúa
gráficos 446 y proporciona servicios de traducción de
integración de acelerador 436 puede proporcionar insta
gestione la virtualización de los motores de procesamie
Debido a que los recursos de hardware de los mot
explícitamente con el espacio de direcciones reales ob
anfitrión puede dirigir estos recursos directamente usa
integración de acelerador 436, en una realización, es la
431 -432, N de modo que aparecen al sistema como uni
Como se menciona, en la realización ilustrada, una o m
uno de los motores de procesamiento de gráficos 431-M almacenan instrucciones y datos que se procesan po
432, N. Las memorias de gráficos 433-434, M pueden
apiladas), memoria de GDDR (por ejemplo, GDDR5,
como 3D XPoint o Nano-Ram.
En una realización, para reducir el tráfico de datos a trav
que los datos almacenados en las memorias de gráfico
frecuente por los motores de procesamiento de gráficos
460A-460D (al menos, no con frecuencia). De manera
necesitan los núcleos (y, preferentemente, no los moto
cachés 462A-462D, 456 de los núcleos y la memoria de pueden comprender diferentes tipos de motores de mo unidades de ejecución de gráficos, motores de ficadores de vídeo), muestreadores y motores de BLIT. uede ser una GPU con una pluralidad de motores de ocesamiento de gráficos 431-432, N pueden ser GPU común.
6 incluye una unidad de gestión de memoria (MMU) 439 como traducciones de memoria virtual a física (también colos de acceso de memoria para acceder a la memoria emoria intermedia de traducción adelantada (TLB) (no ción virtual/efectiva a física/real. En una implementación, eficiente por los motores de procesamiento de gráficos caché 438 y en las memorias de gráficos 433-434, N se 2D, 456 y la memoria de sistema 411. Como se ha xy 425 que toma parte en el mecanismo de coherencia 34, N (por ejemplo, enviando actualizaciones a la caché ché en las memorias caché de procesador 462A-462D,
ara hilos ejecutados por los motores de procesamiento 8 gestiona los contextos de hilo. Por ejemplo, el circuito bación y restauración para guardar y restaurar contextos por ejemplo, en donde se guarda un primer hilo y se ejecutarse por un motor de procesamiento de gráficos). gestión de contexto 448 puede almacenar valores de r ejemplo, identificada por un puntero de contexto). A o se vuelve al contexto. En una realización, un circuito nes recibidas desde los dispositivos de sistema.
de un motor de procesamiento de gráficos 431 son memoria de sistema 411. Una realización del circuito de , 4, 8, 16) módulos de aceleración de gráficos 446 y/u e gráficos 446 puede estar especializado en una única rse entre múltiples aplicaciones. En una realización, se el que los recursos de los motores de procesamiento de s o máquinas virtuales (VM). Los recursos se pueden caciones basándose en los requisitos de procesamiento
un puente al sistema para el módulo de aceleración de ciones y de caché de sistema. Además, el circuito de es de virtualización para que el procesador de anfitrión gráficos, las interrupciones y la gestión de memoria.
e procesamiento de gráficos 431-432, N se mapean o por el procesador anfitrión 407, cualquier procesador valor de dirección efectiva. Una función del circuito de ción física de los motores de procesamiento de gráficos independientes.
morias de gráficos 433-434, M están acopladas a cada , respectivamente. Las memorias de gráficos 433-434, uno de los motores de procesamiento de gráficos 431 -emorias volátiles, tales como DRAM (incluyendo DRAM ), o HBM, y/o pueden ser memorias no volátiles, tales
l enlace 440, se usan técnicas de desvío para garantizar -434, M son datos que serán usados de la manera más 32, N y preferentemente no serán usados por los núcleos r, el mecanismo de desvío intenta mantener datos que e procesamiento de gráficos 431-432, N) dentro de las ma 411.
La Figura 4C ilustra otra realización en la que el circuit
procesador 407. En esta realización, los motores de proc
a través del enlace de alta velocidad 440 al circuito de
interfaz 435 (que, de nuevo, pueden utilizar cualquier fo
de acelerador 436 puede realizar las mismas operaci
potencialmente a un caudal superior dada su proximid
462D, 426.
Una realización soporta diferentes modelos de progra
especializado (sin virtualización de módulo de aceleraci
virtualización). Este último puede incluir modelos de pro
de acelerador 436 y modelos de programación que son
En una realización del modelo de proceso especializado
especializados a una única aplicación o proceso bajo un
otras solicitudes de aplicación a los motores de gráficos
VM/subdivisión.
En los modelos de programación de proceso especiali
pueden estar compartidos por múltiples VM/subdivisio
hipervisor de sistema para virtualizar los motores de pro
cada sistema operativo. Para sistemas de subdivisión
gráficos 431-432, N son propiedad del sistema operativ
motores de procesamiento de gráficos 431-432, N para
Para el modelo de programación compartida, el módulo
de gráficos 431-432, N individual selecciona un eleme
realización, los elementos de proceso se almacenan e
técnicas de traducción de dirección efectivo a direcció
proceso puede ser un valor específico de la implementa
contexto con el motor de procesamiento de gráficos 431 -el elemento de proceso a la lista enlazada de elementos
pueden ser el desplazamiento del elemento de proceso
La Figura 4D ilustra un corte de integración de acelerad
"corte" comprende una porción especificada de los recur
436. El espacio de direcciones efectivo de aplicación 48
de proceso 483. En una realización, los elementos de pr
GPU 481 desde las aplicaciones 480 ejecutadas en el pr
de proceso para la aplicación 480 correspondiente. Un
proceso 483 puede ser un único trabajo solicitado por
trabajos. En este último caso, el WD 484 es un puntero a
482 de la aplicación.
El módulo de aceleración de gráficos 446 y/o los motores
compartirse por todos, o por un subconjunto de, los proc
una infraestructura para configurar el estado de proceso
446 para iniciar un trabajo en un entorno virtualizado.
En una implementación, el modelo de programación de
En este modelo, un único proceso es propietario del
procesamiento de gráficos 431 individual. Debido a que
único proceso, el hipervisor inicializa el circuito de inte
sistema operativo inicializa el circuito de integración de
el que se asigna el módulo de aceleración de gráficos 4
Durante la operación, una unidad de extracción de W
siguiente WD 484 que incluye una indicación del trabajo
del módulo de aceleración de gráficos 446. Los datos de
por la MMU 439, el circuito de gestión de interrupciones
Por ejemplo, una realización de la MMU 439 incluye circ
tablas de segmentos/páginas 486 dentro del espacio d
interrupciones 447 puede procesar los eventos de inter
446. Cuando se llevan a cabo operaciones gráficas
procesamiento de gráficos 431-432, N se traduce a una integración de acelerador 436 está integrado dentro del iento de gráficos 431 -432, N se comunican directamente gración de acelerador 436 mediante la interfaz 437 y la de bus o protocolo de interfaz). El circuito de integración que las descritas con respecto a la Figura 4B , pero strecha al bus de coherencia 462 y a las cachés 462A-
n que incluyen un modelo de programación de proceso e gráficos) y modelos de programación compartida (con ación que son controlados por el circuito de integración rolados por el módulo de aceleración de gráficos 446.
motores de procesamiento de gráficos 431-432, N están o sistema operativo. La única aplicación puede canalizar -432, N, lo que proporciona virtualización dentro de una
, los motores de procesamiento de gráficos 431-432, N de aplicación. Los modelos compartidos requieren un miento de gráficos 431-432, N para permitir el acceso por a sin un hipervisor, los motores de procesamiento de ambos casos, el sistema operativo puede virtualizar los orcionar acceso a cada proceso o aplicación.
celeración de gráficos 446 o un motor de procesamiento de proceso usando un manejador de proceso. En una moria de sistema 411 y son direccionables usando las l descritas en el presente documento. El manejador de proporcionado al proceso de anfitrión cuando registra su N (es decir, solicitando que el software de sistema añada roceso). Los 16 bits inferiores del manejador de proceso ro de la lista vinculada de elementos de proceso.
0 ilustrativo. Como se usa en el presente documento, un e procesamiento del circuito de integración de acelerador ntro de la memoria del sistema 411 almacena elementos o 483 se almacenan en respuesta a las invocaciones de ador 407. Un elemento de proceso 483 contiene el estado riptor de trabajo (WD) 484 contenido en el elemento de aplicación o puede contener un puntero a una cola de la de solicitudes de trabajos en el espacio de direcciones
rocesamiento de gráficos 431 -432, N individuales pueden en el sistema. Las realizaciones de la invención incluyen viar un WD 484 a un módulo de aceleración de gráficos
eso especializado es específico para la implementación. ulo de aceleración de gráficos 446 o de un motor de ódulo de aceleración de gráficos 446 es propiedad de un n de acelerador 436 para la subdivisión propietaria y el rador 436 para el proceso propietario en el momento en
en el corte de integración de acelerador 490 extrae el cer por uno de los motores de procesamiento de gráficos 484 pueden almacenarse en registros 445 y ser usados y/o el circuito de gestión de contexto 446 como se ilustra. ía de recorrido de segmentos/páginas para acceder a las ecciones virtuales de SO 485. El circuito de gestión de ión 492 recibidos del módulo de aceleración de gráficos a dirección efectiva 493 generada por un motor de ción real por la MMU 439.
En una realización, el mismo conjunto de registros 445 se
432, N y/o módulo de aceleración de gráficos 446, y pue
uno de estos registros duplicados se puede incluir en u
registros ilustrativos que pueden inicializarse por el hiper
Tabla 1 - Registros inicializados por hipervisor
plica para cada motor de procesamiento de gráficos 431 -inicializarse por el hipervisor o el sistema operativo. Cada orte de integración de acelerador 490. Se muestran los r en la Tabla 1.
Los registros ilustrativos que pueden inicializarse por el si
Tabla 2 - Registros inicializados por sistema operativo ma operativo se muestran en la Tabla 2.
En una realización, cada WD 484 es específico de un
procesamiento de gráficos 431-432, N particular. Este
procesamiento de gráficos 431-432, N para hacer su trab
la que la aplicación ha establecido una cola de comandos
La Figura 4E ilustra detalles adicionales para una realiz
espacio de direcciones real de hipervisor 498 en el que se
de direcciones real de hipervisor 498 es accesible median
aceleración de gráficos para el sistema operativo 495.
Los modelos de programación compartida permiten que to
de subdivisiones en el sistema usen un módulo de aceler
los que el módulo de aceleración de gráficos 446 está co
en cortes de tiempo y compartido dirigido a gráficos.
En este modelo, el hipervisor de sistema 496 posee el
disposición de todos los sistemas operativos 495. Par
virtualización por el hipervisor de sistema 496, el módulo d
requisitos: 1) La solicitud de trabajo de una aplicación
estado entre trabajos) o el módulo de aceleración de grá
restauración de contexto. 2) El módulo de aceleración d
aplicación se completa en una cantidad especificada de ti
de aceleración de gráficos 446 proporciona la capacidad
garantizar al módulo de aceleración de gráficos 446 la
programación compartido dirigido.
dulo de aceleración de gráficos 446 y/o de un motor de ontiene toda la información que requiere un motor de , o puede ser un puntero a una ubicación de memoria en trabajo que hay que completar.
ón de un modelo compartido. Esta realización incluye un acena una lista de elementos de proceso 499. El espacio un hipervisor 496 que virtualiza los motores de módulo de
s o un subconjunto de procesos de todas o un subconjunto n de gráficos 446. Hay dos modelos de programación en artido por múltiples procesos y subdivisiones: compartido
dulo de aceleración de gráficos 446 y pone su función a ue un módulo de aceleración de gráficos 446 soporte celeración de gráficos 446 puede satisfacer los siguientes e ser autónoma (es decir, no es necesario mantener el os 446 debe proporcionar un mecanismo de grabación y ráficos 446 garantiza que la solicitud de trabajo de una po, incluyendo cualquier fallo de conversión, o el módulo dar prioridad al procesamiento del trabajo. 3) Se ha de uidad entre procesos cuando se opera en el modelo deEn una realización, para el modelo compartido, se re
operativo 495 con un tipo de módulo de aceleración de g
de máscara de autoridad (AMR) y un puntero a área de
de aceleración de gráficos 446 describe la función de a
El tipo del módulo de aceleración de gráficos 446 pued
específicamente para el módulo de aceleración de gráfic
aceleración de gráficos 446, un puntero de dirección ef
dirección efectiva a una cola de comandos o cualquier ot
el módulo de aceleración de gráficos 446. En una realiz
para el proceso actual. El valor pasado al sistema opera
implementaciones del circuito de integración de acele
soportan un registro de anulación de máscara de autori
el valor de UAMOR actual al valor de AMR antes de p
hipervisor 496 puede aplicar el valor de registro de anula
el AMR en el elemento de proceso 483. En una realiz
dirección efectiva de un área en el espacio de direccion
gráficos 446 grabe y restaure el estado de contexto. Es
entre trabajos o cuando se da prioridad a un trabajo.
memoria de sistema anclada.
Tras recibir la llamada de sistema, el sistema operativo
que se le ha dado la autoridad para usar el módulo
continuación, llama al hipervisor 496 con la información
Tabla 3 - Parámetros de llamada de SO a hipervisor que la aplicación 480 realice una llamada al sistema s 446, un descriptor de trabajo (WD), un valor de registro ión/restauración de contexto (CSRP). El tipo del módulo ción dirigida como objetivo para la llamada de sistema. un valor específico de sistema. Al WD se le da formato 6 y puede estar en forma de un comando del módulo de a una estructura definida por el usuario, un puntero de ructura de datos para describir el trabajo que debe hacer el valor de AMR es el estado de AMR que se debe usar s similar a que una aplicación establezca el AMR. Si las 436 y del módulo de aceleración de gráficos 446 no e usuario (UAMOR), el sistema operativo puede aplicar el AMR en la llamada de hipervisor. Opcionalmente, el e máscara de autoridad (AMOR) actual antes de colocar el CSRP es uno de los registros 445 que contienen la la aplicación 482 para que el módulo de aceleración de ntero es opcional si no se requiere que se grabe estado de grabación/restauración de contexto puede ser una
puede verificar que la aplicación 480 se ha registrado y eleración de gráficos 446. El sistema operativo 495, a rada en la Tabla 3.
Tras recibir la llamada del hipervisor, el hipervisor 496 v
haya otorgado la autoridad para usar el módulo de acele
el elemento de proceso 483 en la lista enlazada de ele
aceleración de gráficos 446. El elemento de proceso pu
Tabla 4 - Información de elemento de proceso
que el sistema operativo 495 se haya registrado y se le de gráficos 446. A continuación, el hipervisor 496, pone s de proceso para el correspondiente tipo de módulo de cluir la información mostrada en la Tabla 4.
En una realización, el hipervisor inicializa una pluralidad
Como se ilustra en la Figura 4F, una realización de la inv
un espacio de direcciones virtual de memoria común us
402 y a las memorias de GPU 420-423. En esta imple
utilizan el mismo espacio de direcciones de memoria virt
402 y viceversa, simplificando de esta manera la program
de direcciones virtual/efectivo está asignada a la mem
memoria de procesador 402, una tercera porción a la
memoria virtual/efectivo total (en ocasiones denominado
manera, a lo largo de cada una de las memorias de
permitiendo que cualquier procesador o GPU acceda a c
esa memoria.
En una realización, la circuitería de gestión de desvío/co
439E garantiza la coherencia de caché entre las cachés
410-413 e implementa técnicas de desvío que indican l
tipos de datos. Aunque se ilustran múltiples casos de c
Figura 4F, la circuitería de desvío/coherencia puede impl
anfitrión 405 y/o dentro del circuito de integración de ace
Una realización permite que la memoria anexada a GPU
que se acceda a la misma usando tecnología de memori
de rendimiento típicas asociadas con la coherencia de c
la memoria adjunta a la GPU 420-423 como memoria
proporciona un entorno de operación beneficioso para la
del procesador de anfitrión 405 establezca operandos y
de datos de DMA de E/S tradicionales. Tales copias trad
accesos de E/S mapeada en memoria (MMIO) que so
memoria sencillos. Al mismo tiempo, la capacidad de acc
de coherencia de la caché puede ser crítica para el tie
tráfico de memoria de escritura de envío por flujo conti
puede reducir significativamente el ancho de banda d
eficiencia del establecimiento de operandos, la eficienci
desempeñan, todas ellas, un papel en la determinación
En una implementación, la selección entre el desvío de
una estructura de datos de rastreador de desvío. Puede
estructura granular de página (es decir, controlada en la g
por página de memoria adjunta a la GPU. La tabla de des
de una o más memorias adjuntas a la GPU 420-423, con
para almacenar en caché entradas usadas de manera f
toda la tabla de desvíos puede mantenerse dentro de la
En una implementación, se accede a la entrada de tabla
la GPU 420-423 antes del acceso real a la memoria de
lugar, las solicitudes locales desde la GPU 410-413 qu
directamente a una memoria de GPU 420-423 correspon
su página en el desvío de anfitrión se reenvían al procesa
como se ha analizado anteriormente). En una realización,
solicitada en el desvío de procesador de anfitrión compl
alternativa, las solicitudes dirigidas a una página con
continuación, la GPU puede hacer que la página pase
actualmente la página.
El estado de desvío de una página puede cambiarse
mecanismo basado en software asistido por hardware, o,
basado puramente en hardware.
Un mecanismo para cambiar el estado de desvío emplea
al controlador de dispositivo de la GPU que, a su vez, en
la GPU indicándole que cambie el estado de desvío y, pa
caché en el anfitrión. La operación de vaciado de caché s
de anfitrión 405 a un desvío de GPU, pero no se requier egistros 445 de corte de integración de acelerador 490.
n emplea una memoria unificada direccionable mediante para acceder a las memorias de procesador físico 401 -ación, las operaciones ejecutadas en las GPU 410-413 fectivo para acceder a las memorias de procesador 401 -idad. En una realización, una primera porción del espacio de procesador 401, una segunda porción a la segunda oria de GPU 420, y así sucesivamente. El espacio de spacio de direcciones efectivo) está distribuido, de esta esador 401-402 y de las memorias de GPU 420-423, uier memoria física con una dirección virtual mapeada a
ncia 494A-494E dentro de una o más de las MMU 439A-s procesadores de anfitrión (por ejemplo, 405) y las GPU emorias físicas en las que deben almacenarse ciertos itería de gestión de desvío/coherencia 494A-494E en la ntarse dentro de la MMU de uno o más procesadores de dor 436.
-423 se mapee como parte de la memoria de sistema, y tual compartida (SVM), pero sin sufrir de las desventajas de sistema completa. La capacidad de que se acceda a istema sin sobrecarga de coherencia de caché onerosa arga de la GPU. Esta disposición permite que el software eda a resultados de cálculo, sin la sobrecarga de copias nales implican llamadas de controlador, interrupciones y dos ellos, ineficientes en relación con los accesos de r a la memoria anexada a GPU 420-423 sin sobrecargas de ejecución de un cálculo descargado. En casos con sustancial, por ejemplo, la tara de coherencia de caché scritura efectivo observado por una GPU 410-413. La l acceso a resultados y la eficiencia del cálculo de GPU eficacia de la descarga de GPU.
y el desvío de procesador de anfitrión se controla por se una tabla de desvíos que puede ser, por ejemplo, una laridad de una página de memoria) que incluye 1 o 2 bits puede implementarse en un intervalo de memoria robado in una caché de desvío en la GPU 410-413 (por ejemplo, ente/reciente de la tabla de desvíos). Como alternativa, .
desvíos asociada a cada acceso a la memoria adjunta a , lo que provoca las siguientes operaciones. En primer ncuentran su página en el desvío de GPU se reenvían te. Las solicitudes locales desde la GPU que encuentran 405 (por ejemplo, a través de un enlace de alta velocidad solicitudes del procesador 405 que encuentran la página la solicitud como una lectura de memoria normal. Como vío de GPU pueden reenviarse a la GPU 410-413. A n desvío de procesador de anfitrión si no está usando
iante un mecanismo basado en software, mediante un a un conjunto limitado de casos, mediante un mecanismo
llamada API (por ejemplo, OpenCL), que, a su vez, llama un mensaje (o pone en cola un descriptor de comando) a lgunas transiciones, realice una operación de vaciado de uiere para una transición desde un desvío de procesador ra la transacción opuesta.
En una realización, se mantiene la coherencia de caché r
que no pueden almacenare en caché por el procesador
405 puede solicitar acceso desde la GPU 410, que p
implementación. Por tanto, para reducir la comunicaci
garantizar que las páginas con desvío por la GPU sean
405 y viceversa.
Canalización de procesamiento de gráficos
La Figura 5 ilustra una canalización de procesamient
realización, un procesador de gráficos puede implement
El procesador de gráficos puede incluirse dentro de los
el presente documento, tal como el procesador paralelo
del procesador o procesadores paralelos 112 de la Figur
implementar la canalización de procesamiento de gráf
procesamiento paralelo (por ejemplo, la unidad de proce
presente documento. Por ejemplo, una unidad sombre
Figura 3) puede estar configurada para realizar las fu
vértices 504, una unidad de procesamiento de control de
de teselación 512, una unidad de procesamiento
fragmentos/píxeles 524. Las funciones del ensamblador
la unidad de teselación 510, el rasterizador 522 y la u
realizarse por otros motores de procesamiento dentro de
de procesamiento 214 de la Figura 3) y una unidad
subdivisión 220A-220N de la Figura 2). La canalizació
también usando unidades de procesamiento especializ
realizarse una o más porciones de la canalización de pro
paralelo dentro de un procesador de propósito general (p
de la canalización de procesamiento de gráficos 500 pue
de procesador paralelo 222 como en la Figura 2) median
de la interfaz de memoria 218 de la Figura 2.
En una realización, el ensamblador de datos 502 es una
superficies y primitivas. El ensamblador de datos 502,
atributos de vértices, a la unidad de procesamiento de
una unidad de ejecución programable que ejecuta progr
datos de vértices según sea especificado por los progra
de vértices 504 lee datos que se almacenan en caché,
datos de vértices y puede estar programada para tr
coordenadas basada en objeto a un espacio de coorde
dispositivo normalizado.
Una primera instancia de un ensamblador de primiti
procesamiento de vértices 50. El ensamblador de pri
necesario y construye primitivas de gráficos para su pr
teselación 508. Las primitivas de gráficos incluyen
sucesivamente, según sea soportado por diversas interfa
de gráficos.
La unidad de procesamiento de control de teselación 50
parche geométrico. Los puntos de control se transforma
ejemplo, las bases del parche) a una representación qu
unidad de procesamiento de evaluación de teselación 5
puede calcular también factores de teselación para bord
a un único borde y cuantifica un nivel de detalle dep
teselación 510 está configurada para recibir los factore
parche en múltiples primitivas geométricas, tales com
transmiten a una unidad de procesamiento de evalu
evaluación de teselación 512 opera en coordenadas
representación superficial y atributos de vértice para cad
Una segunda instancia de un ensamblador de primit
procesamiento de evaluación de teselación 512, que le
y construye primitivas de gráficos para su procesamiento
de procesamiento de geometría 516 es una unidad de e entando temporalmente las páginas con desvío de GPU fitrión 405. Para acceder a estas páginas, el procesador conceder o no acceso inmediato, dependiendo de la ntre el procesador 405 y la GPU 410 es beneficioso las que requiere la GPU, pero no el procesador anfitrión
gráficos 500, de acuerdo con una realización. En una analización de procesamiento de gráficos 500 ilustrada. stemas de procesamiento paralelo como se describe en de la Figura 2, que, en una realización, es una variante os diversos sistemas de procesamiento paralelo pueden 500 mediante una o más instancias de la unidad de nto paralelo 202 de la Figura 2) como se describe en el (por ejemplo, el multiprocesador de gráficos 234 de la s de una o más de una unidad de procesamiento de lación 508, una unidad de procesamiento de evaluación eometría 516 y una unidad de procesamiento de tos 502, los ensambladores de primitivas 506, 514, 518, de operaciones de rasterización 526 también pueden grupación de procesamiento (por ejemplo, la agrupación ubdivisión correspondiente (por ejemplo, la unidad de procesamiento de gráficos 500 puede implementarse para una o más funciones. En una realización, pueden iento de gráficos 500 mediante lógica de procesamiento mplo, la CPU). En una realización, una o más porciones cceder a una memoria en chip (por ejemplo, la memoria a interfaz de memoria 528, que puede ser una instancia
d de procesamiento que recopila datos de vértices para tinuación, emite los datos de vértices, que incluyen los s 504. La unidad de procesamiento de vértices 504 es de sombreado de vértices, iluminando y transformando de sombreado de vértices. La unidad de procesamiento emoria local o de sistema para su uso al procesar los rmar los datos de vértices de una representación de del espacio mundial o un espacio de coordenadas de
506 recibe atributos de vértices desde la unidad de 506 lee atributos de vértice almacenados según sea amiento por la unidad de procesamiento de control de gulos, segmentos de línea, puntos, parches y así e programación de aplicaciones (API) de procesamiento
los vértices de entrada como puntos de control para un de una representación de entrada desde el parche (por decuada para su uso en la evaluación superficial por la a unidad de procesamiento de control de teselación 508 parches geométricos. Un factor de teselación se aplica te de la vista asociado con el borde. Una unidad de teselación para bordes de un parche y para teselar el itivas de línea, de triángulo o cuadrilaterales, que se de teselación 512. La unidad de procesamiento de metrizadas del parche subdividido para generar una tice asociado con las primitivas geométricas.
514 recibe atributos de vértices desde la unidad de atributos de vértices almacenados según sea necesario a unidad de procesamiento de geometría 516. La unidad ión programable que ejecuta programas de sombreadode geometría para transformar primitivas de gráficos re
por los programas de sombreado de geometría. En un
está programada para subdividir las primitivas de gráfi
parámetros usados para rasterizar las nuevas primitivas
En algunas realizaciones, la unidad de procesamiento
de geometría. La unidad de procesamiento de geometrí
primitivas de gráficos al ensamblador de primitivas 51
vértices desde la unidad de procesamiento de geometría
por una unidad de escala, selección y recorte de ventan
lee datos que se almacenan en memoria de proce
procesamiento de datos de geometría. La unidad de esc
selección y escalado de ventana gráfica y emite primitiv
El rasterizador 522 puede realizar optimizaciones de se
rasterizador 522 también realiza una conversión de ex
fragmentos y emitir esos fragmentos y datos de
fragmentos/píxeles 524. La unidad de procesamient
programable que está configurada para ejecutar pro
sombreadores de píxeles. La unidad de procesamiento
recibidos desde el rasterizador 522, como se especific
Por ejemplo, la unidad de procesamiento de fragmento
que incluyen, pero sin limitación, mapeo de textura,
perspectiva para producir fragmentos o píxeles som
rasterización 526. La unidad de procesamiento de frag
memoria de procesador paralelo o en la memoria de sist
Los programas de sombreado de fragmentos o de píxel
de muestra, de píxel, de tesela u otras dependiendo
procesamiento.
La unidad de operaciones de rasterización 526 es
rasterización que incluyen, pero sin limitación, estarcido,
datos de gráficos procesados para que se almacene
procesador paralelo 222 como en la Figura 2, y/o la
visualicen en el uno o más dispositivo o dispositivos de
del uno o más procesador o procesadores 102 o proces
la unidad de operaciones de rasterización 526 está confi
memoria y descomprimir datos z o de color que se leen
La descripción y los dibujos anteriores deben considera
en la materia comprenderán que pueden realizarse dive
en el presente documento sin apartarse del alcance d
adjuntas.
Haciendo referencia a las Figuras 6A-6B, se impleme
invención. El bloque de cálculo fusionado 630 incluye u
coma flotante (FP) de 32 instrucciones únicas y datos m
de baja precisión, por ejemplo, un procesador de com
(SIMD) 634 que opera a baja velocidad.
En la operación 610, se reciben instrucciones en el mo
los requisitos de cálculo para una carga de trabajo o hilo
seleccionará un conjunto de instrucciones y una puert
instrucciones. Por ejemplo, si los requisitos de cálculo i
SIMD 632 de alta precisión y alta velocidad, a continuac
velocidad y la puerta de reloj o puerta de alimentación la
si los requisitos de cálculo indican que una carga de tra
y baja velocidad, a continuación, la API seleccionará las
puerta de reloj o puerta de alimentación de las SIMD 63
(6A4) FPGA integrada para aceleración
Haciendo referencia a las Figuras 6C-6E, en algunos eje
665 puede acoplarse comunicativamente a una unidad d
de comunicación extensa y de baja latencia, como se re
una FPGA 665 en una unidad de ejecución (EU) 670 en s del ensamblador de primitivas 514 como se especifica lización, la unidad de procesamiento de geometría 516 en una o más primitivas de gráficos nuevas y calcular ráficos.
ometría 516 puede añadir o borrar elementos en el flujo emite los parámetros y vértices que especifican nuevas ensamblador de primitivas 518 recibe los parámetros y y construye primitivas de gráficos para su procesamiento fica 520. La unidad de procesamiento de geometría 516 paralelo o memoria de sistema para su uso en el elección y recorte de ventana gráfica 520 realiza recorte, gráficos procesadas a un rasterizador 522.
n de profundidad y otras basadas en la profundidad. El ción en las nuevas primitivas de gráficos para generar rtura asociados a la unidad de procesamiento de fragmentos/píxeles 524 es una unidad de ejecución as de sombreadores de fragmentos o programas de agmentos/píxeles 524 transforma fragmentos o píxeles los programas de sombreado de fragmentos o píxeles. eles 524 puede programarse para realizar operaciones reado, mezcla, corrección de textura y corrección de os que se emiten a una unidad de operaciones de s/píxeles 524 puede leer datos que se almacenan en la ara su uso cuando se procesan los datos de fragmentos. ueden estar configurados para sombrear a granularidad tasa de muestreo configurada para las unidades de
nidad de procesamiento que realiza operaciones de ba z, mezcla y similares, y emite datos de píxeles como la memoria de gráficos (por ejemplo, la memoria de ria de sistema 104 como en la Figura 1, para que se lización 110 o para su procesamiento adicional por uno o procesadores paralelos 112. En algunas realizaciones, da para comprimir datos z o de color que se escriben en e la memoria.
un sentido ilustrativo más que restrictivo. Los expertos modificaciones y cambios en las realizaciones descritas vención, tal como se establece en las reivindicaciones
n motor informático fusionado 630 de acuerdo con la dware de alta precisión, por ejemplo, un procesador de s (SIMD) 632 que opera a alta velocidad, y un hardware ante (FP) de 16 instrucciones únicas y datos múltiples
cálculo fusionado. En la operación 615, basándose en ular, una interfaz de programación de aplicaciones (API) reloj o puerta de alimentación para el otro conjunto de n que una carga de trabajo o hilo particular requiere las a API seleccionará las SIMD 632 de alta precisión y alta 634 de baja precisión y baja velocidad. Por el contrario, o hilo particular requiere las SIMD 634 de baja precisión 634 de hardware de baja precisión, baja velocidad y la alta precisión y alta velocidad.
, una matriz de puertas programables en campo (FPGA) cesamiento de gráficos (GPU) 660 mediante una interfaz nta en la Figura 6D. Como alternativa, se puede integrar GPU, como se ilustra en la Figura 6E.
En operación, en la operación 650 se determinan los re
particular y en la operación 655 se reasigna la FPGA 665
Haciendo referencia a la Figura 6F, en algunos ejemplo
comúnmente usadas (por ejemplo, función de activación
FPGA que está integrado con una unidad de ejecució
rendimiento para las operaciones matemáticas comunes.
El compilador de GPU 674 y/o el flujo del controlador 67
la GPU. El compilador 674 puede detectar operaciones d
y asumir que esta operación u operaciones se asignar
reemplazará la operación matemática con "enviar mensa
Como alternativa, un diseñador de aplicaciones de
matemática debe mapearse a FPGA. Las API de GPG
capacidad.
En el flujo del compilador, se añade una etapa de síntes
"bits" que programan la FPGA. Estos bits pasan a form
medida que los contextos cambian, la FPGA se reprogra
Haciendo referencia a las Figuras 7A-7B, en algunos eje
unidad de procesamiento de gráficos (GPU) para rastre
ejecutan aplicaciones de red neuronal (operación 710). L
715) como registros específicos de modelo (MSR) que pu
en la GPU. Los datos de nivel de precisión también s
ejecución para cargas de trabajo en la GPU.
Haciendo referencia a la Figura 7C, en algunos ejemplos
de procesamiento de gráficos (GPU) 750 identificadas c
GPU 750 pueden ser una GPU de baja precisión. En oper
de alta precisión pueden asignarse a una GPU de baja p
En algunos ejemplos, un sistema puede implementar u
únicamente se seleccionan errores de clasificación de ba
de este modo la energía consumida durante el entrenami
Haciendo referencia a la Figura 7D, en algunos ejem
canalización de entrenamiento de bajo nivel que compre
760, un módulo de entrenamiento de clasificador de preci
de precisión de bajo nivel 764 y una canalización de
extracción de características de alto nivel, un módulo de
entrenamiento de clasificador de precisión de alto nivel 7
nivel 774.
En uso, las señales de entrenamiento pueden introducirs
se introducen en la canalización de bajo nivel y que gen
entrenamiento de alto nivel.
Haciendo referencia a la Figura 7E, en algunos eje
informáticos heterogéneos (por ejemplo, FPGA 784, GP
si la utilización de todos los elementos informáticos est
presente documento define una estructura para planifi
profundo (DNN) que tiene en cuenta las diferentes caract
Haciendo referencia a la Figura 7E, en algunos ejempl
partes de una DNN entre elementos informáticos (por
basándose al menos en parte en las características de
ejemplo, a la FPGA 784 se le puede asignar una porción
relativamente más baja. Se puede asignar una capa com
Vista global de aprendizaje automático
Un algoritmo de aprendizaje automático es un algoritm
Pueden diseñarse realizaciones de algoritmos de apren itos de carga de trabajo para una carga de trabajo o hilo ra acomodar la carga de trabajo.
el compilador 674 puede asignar funciones matemáticas mo sigmoide usada en aprendizaje profundo) al bloque de EU). Esto proporciona una menor potencia y un mayor
ueden modificarse para aprovechar la FPGA integrada en aja carga tales como operaciones matemáticas comunes a la FPGA. En el código generado, el compilador 674 " que acceden al bloque de FPGA.
puede especificar sugerencias acerca de qué función (por ejemplo, OCL) se pueden mejorar para añadir esta
de FPGA 678 que "sintetiza" la operación matemática en parte del estado de contexto de un hilo de ejecución. A (por contexto).
los se pueden reservar uno o dos bits en hardware en una niveles de precisión de datos y/o pesos a medida que se datos de nivel de precisión pueden exponerse (operación n usarse para ajustar aplicaciones de red que se ejecutan ueden usar para planificar automáticamente tiempos de
n sistema puede comprender una pluralidad de unidades o GPU 0, GPU 1, GPU 2, GPU 3, etc. Una o más de las ión, las cargas de trabajo que no requieren procesamiento isión 750.
étodo de entrenamiento basado en precisión en el que precisión para entrenar con mayor precisión, minimizando to.
, un módulo de entrenamiento puede comprender una un módulo de extracción de características de bajo nivel n de bajo nivel 762 y un módulo de prueba de clasificador renamiento de alto nivel que comprende un módulo de racción de características de alto nivel 770, un módulo de y un módulo de prueba de clasificador de precisión de alto
cualquier canalización. Las señales de entrenamiento que n un error de clasificación se dirigen a la canalización de
os, el entrenamiento a través de múltiples elementos 82, T1000 786) funcionará de manera óptima únicamente quilibrada y optimizada. La materia objeto descrita en el diferentes partes de una red neuronal de aprendizaje sticas de rendimiento de cada dispositivo informático.
un planificador maestro 780 puede planificar diferentes mplo, una GPU 782, una FPGA 784 y un T1000 786) dimiento de los respectivos elementos informáticos. Por s pequeña basándose, al menos en parte, en su eficiencia ta en un segmento a un T1000786.
ue puede aprender basándose en un conjunto de datos. aje automático para modelar abstracciones de alto niveldentro de un conjunto de datos. Por ejemplo, pueden
determinar a cuál de varias categorías pertenece una entr
numérico dada una entrada; y pueden usarse los algo
traducido o para realizar texto a habla y/o reconocimiento
Un tipo ilustrativo de algoritmo de aprendizaje automático
un tipo sencillo de red neuronal es una red de realime
puede implementarse como un grafo acíclico en el qu
topología de red de realimentación prospectiva incluye un
por al menos una capa oculta. La capa oculta transf
representación que es útil para generar la salida en la
conectados mediante bordes a los nodos en capas adyac
Los datos recibidos en los nodos de una capa de entrad
decir, "se realimentan prospectivamente") a los nodos d
calcula los estados de los nodos de cada capa sucesiv
respectivamente, con cada uno de los bordes que cone
esté representando por el algoritmo que se está ejecuta
diversas formas.
Antes de que pueda usarse un algoritmo de aprendizaje
el algoritmo usando un conjunto de datos de entrena
topología de red, usar un conjunto de datos de entrena
red, y ajustar los pesos hasta que el modelo de red rinde
de datos de entrenamiento. Por ejemplo, durante un proc
red neuronal, la salida producida por la red en respuesta
datos de entrenamiento se compara con la salida etique
error que representa la diferencia entre la salida y la s
conexiones para minimizar ese error a medida que la se
La red se considera "entrenada" cuando se minimizan lo
las instancias del conjunto de datos de entrenamiento.
La precisión de un algoritmo de aprendizaje automático
conjunto de datos usado para entrenar el algoritmo. El
intensivo y puede requerir una cantidad de tiempo signifi
En consecuencia, se usa hardware de procesamient
aprendizaje automático. Esto es particularmente útil para
cálculos realizados al ajustar los coeficientes en l
implementaciones paralelas. Específicamente, muchos
software se han adaptado a hacer uso del hardwar
procesamiento de gráficos de propósito general.
La Figura 8 es un diagrama generalizado de una pila de s
una aplicación de aprendizaje automático 802 para en
entrenamiento o para usar una red neuronal profunda
aplicación de aprendizaje automático 802 puede incluir u
red neuronal y/o software especializado que puede usar
aplicación de aprendizaje automático 802 puede imple
pero sin limitación, reconocimiento de imágenes, mape
formación de imágenes médicas o traducción de idioma.
Puede posibilitarse una aceleración de hardware para l
estructura de aprendizaje automático 804. La estructur
biblioteca de primitivas de aprendizaje automático. Las pr
que se realizan comúnmente por algoritmos de aprendiz
804, se requeriría que los desarrolladores de algoritmos
computacional principal asociada con el algoritmo de ap
la lógica computacional a medida que se desarrollaran n
aprendizaje automático puede estar configurada par
proporcionadas por la estructura de aprendizaje automáti
tipo tensor, funciones de activación y agrupamiento, que
se entrena una red neuronal convolucional (CNN). La es
también primitivas para implementar subprogramas de
aprendizaje automático, tales como operaciones matricial
La estructura de aprendizaje automático 804 puede
aprendizaje automático 802 y genera la entrada apropia sarse algoritmos de reconocimiento de imágenes para a dada; los algoritmos de regresión pueden emitir un valor os de reconocimiento de patrones para generar texto habla.
una red neuronal. Hay muchos tipos de redes neuronales; ión prospectiva. Una red de realimentación prospectiva s nodos están dispuestos en capas. Típicamente, una apa de entrada y una capa de salida que están separadas a la entrada recibida por la capa de entrada en una apa de salida. Los nodos de red están completamente tes, pero no hay bordes entre nodos dentro de cada capa. e una red de realimentación prospectiva se propagan (es capa de salida mediante una función de activación que n la red basándose en coeficientes ("pesos") asociados, n las capas. Dependiendo del modelo específico que se , la salida del algoritmo de la red neuronal puede tomar
tomático para modelar un problema particular, se entrena to. Entrenar una red neuronal implica seleccionar una nto que representa un problema que es modelado por la n un error mínimo para todas las instancias del conjunto o de entrenamiento de aprendizaje supervisado para una a entrada que representa una instancia en un conjunto de a "correcta" para esa instancia, se calcula una señal de a etiquetada, y se ajustan los pesos asociados con las de error se retropropaga a través de las capas de la red. rrores para cada una de las salidas generadas a partir de
ede verse afectada significativamente por la calidad del ceso de entrenamiento puede ser computacionalmente iva en un procesador de propósito general convencional. aralelo para entrenar muchos tipos de algoritmos de timizar el entrenamiento de redes neuronales, ya que los redes neuronales se prestan de manera natural a goritmos de aprendizaje automático y aplicaciones de de procesamiento paralelo dentro de dispositivos de
ware de aprendizaje automático 800. Se puede configurar nar una red neuronal usando un conjunto de datos de trenada para implementar inteligencia de máquina. La funcionalidad de entrenamiento y de inferencia para una para entrenar una red neuronal antes del despliegue. La tar cualquier tipo de inteligencia automática incluyendo, localización, navegación autónoma, síntesis de habla,
aplicación de aprendizaje automático 802 mediante una e aprendizaje automático 804 puede proporcionar una itivas de aprendizaje automático son operaciones básicas automático. Sin la estructura de aprendizaje automático aprendizaje automático crearan y optimizaran la lógica dizaje automático, y volvieran a optimizar a continuación vos procesadores paralelos. En su lugar, la aplicación de ealizar los cálculos necesarios usando las primitivas 804. Las primitivas ilustrativas incluyen convoluciones de n operaciones computacionales que se realizan mientras ctura de aprendizaje automático 804 puede proporcionar bra lineal básicos realizados por muchos algoritmos de y vectoriales.
cesar datos de entrada recibidos de la aplicación de a una estructura de cálculo 806. La estructura de cálculo806 puede abstraer las instrucciones subyacentes prop
la estructura de aprendizaje automático 804 se aprove
GPGPU 810 sin requerir que la estructura de aprendizaje
del hardware de GPGPU 810. Adicionalmente, la estruct
para la estructura de aprendizaje automático 804 a lo la
de GPGPU 810.
Aceleración de aprendizaje automático de GPGPU
La Figura 9 ilustra una unidad de procesamiento de gráfi
con una realización. En una realización, la unidad de
configurarse para ser particularmente eficiente en el pr
asociadas con el entrenamiento de redes neuronales
directamente a otras instancias de la GPGPU para crear
de entrenamiento para redes neuronales particularment
La GPGPU 900 incluye una interfaz de anfitrión 902 pa
una realización, la interfaz de anfitrión 902 es una interf
puede ser una interfaz de comunicaciones o tejido de co
comandos desde el procesador de anfitrión y usa un plan
con estos comandos a un conjunto de agrupaciones
comparten una memoria caché 908. La memoria cach
memorias caché dentro de las agrupaciones de cálculo
La GPGPU 900 incluye memoria 914A-B acoplada con
de controladores de memoria 912A-B. En diversas reali
dispositivos de memoria que incluyen memoria de acces
de gráficos, tal como memoria de acceso aleatorio de g
datos doble de gráficos (GDDR). En una realización, las
3D apilada, que incluye, pero sin limitación, memoria de
En una realización, cada agrupación de cálculo GPLAB
tales como el multiprocesador de gráficos 400 de la Figu
cálculo tienen múltiples tipos de unidades de lógica de
computacionales con un intervalo de precisiones qu
automático. Por ejemplo, y en una realización, al meno
una de las agrupaciones de cálculo 906A-H puede confi
o de 32 bits, mientras que un subconjunto diferente de la
operaciones de coma flotante de 64 bits.
Múltiples instancias de la GPGPU 900 pueden config
mecanismo de comunicación usado por la agrupación de
a lo largo de las realizaciones. En una realización, las
de la interfaz de anfitrión 902. En una realización, la GP
GPGPU 900 con un enlace de GPU 910 que habilita u
realización, el enlace de la GPU 910 está acoplado a
comunicación y sincronización entre múltiples instancias
se acopla con una interconexión de alta velocidad par
paralelos. En una realización, las múltiples instancias de
de datos separados y se comunican mediante un dispos
902. En una realización, el enlace de GPU 910 puede
anfitrión además de o como una alternativa a la interfaz
Aunque la configuración ilustrada de la GPGPU 900
realización proporciona una configuración alternativa de
dentro de una plataforma de inferenciación de alto
inferenciación, la GPGPU 900 incluye menos de las agr
en relación con la configuración de entrenamiento. Ad
memoria 914A-B puede diferir entre las configuraciones
configuración de inferenciación de la GPGPU 900 pue
ejemplo, una configuración de inferenciación puede pro
escalar de números enteros de 8 bits, que se usan comú
neuronales desplegadas.
La Figura 10 ilustra un sistema informático de múltipl
informático de múltiples GPU 1000 puede incluir un proc nadas al controlador de GPGPU 808 para posibilitar que e la aceleración de hardware mediante el hardware de omático 804 tenga conocimiento íntimo de la arquitectura e cálculo 806 puede habilitar la aceleración de hardware de una diversidad de tipos y generaciones del hardware
de propósito general altamente paralela 900, de acuerdo cesamiento de propósito general (GPGPU) 900 puede amiento del tipo de cargas de trabajo computacionales ndas. Adicionalmente, la GPGPU 900 puede vincularse agrupación de múltiples GPU para mejorar la velocidad fundas.
abilitar una conexión con un procesador de anfitrión. En I Express. Sin embargo, la interfaz de anfitrión también caciones específico de proveedor. La GPGPU 900 recibe or global 904 para distribuir hilos de ejecución asociados cálculo 906A-H. Las agrupaciones de cálculo 906A-H 8 puede servir como una caché de nivel superior para -H.
grupaciones de cálculo 906A-H a través de un conjunto nes, la memoria 914A-B puede incluir diversos tipos de atorio dinámica (DRAM) o memoria de acceso aleatorio os síncrona (SGRAM), que incluye memoria de tasa de des de memoria 224A-N pueden incluir también memoria ancho de banda (HBM).
H incluye un conjunto de multiprocesadores de gráficos, . Los multiprocesadores de gráficos de la agrupación de ros y de coma flotante que pueden realizar operaciones luyen unas adecuadas para cálculos de aprendizaje subconjunto de las unidades de coma flotante en cada se para realizar operaciones de coma flotante de 16 bits idades de coma flotante puede configurarse para realizar
e para funcionar como una agrupación de cálculo. El ulo para la sincronización y el intercambio de datos varía les instancias de la GPGPU 900 se comunican a través 900 incluye un concentrador de E/S 909 que acopla la nexión directa a otras instancias de la GPGPU. En una puente de GPU a GPU especializado que posibilita la GPGPU 900. En una realización, el enlace de GPU 910 nsmitir y recibir datos a otras GPGPU o procesadores GPU 900 están ubicadas en sistemas de procesamiento de red que es accesible mediante la interfaz de anfitrión gurarse para habilitar una conexión a un procesador de nfitrión 902.
de configurarse para entrenar redes neuronales, una PGPU 900, que puede configurarse para el despliegue imiento o de baja potencia. En una configuración de iones de cálculo de las agrupaciones de cálculo 906A-H almente, una tecnología de memoria asociada con la nferenciación y de entrenamiento. En una realización, la oportar instrucciones específicas de inferenciación. Por ionar soporte para una o más instrucciones de producto nte durante las operaciones de inferenciación para redes
PU 1000, de acuerdo con una realización. El sistema or 1002 acoplado a múltiples GPGPU 1006A-D medianteun conmutador de interfaz de anfitrión 1004. El conmuta
dispositivo de conmutador de PCI Express que acopla el
el procesador 1002 puede comunicarse con el conjunto
1006A-D puede ser una instancia de la GPGPU 900 de
mediante un conjunto de enlaces de GPU a GPU de pu
GPU de alta velocidad pueden conectarse a cada un
especializado, tal como el enlace de GPU 910 como en
comunicación directa entre cada una de las GPGPU 1006
de anfitrión a la que está conectado el procesador 1002.
de P2P, el bus de interfaz de anfitrión permanece disponib
con otras instancias del sistema informático de múltiples
red. Aunque en la realización ilustrada las GPGPU 1006A
de interfaz de anfitrión 1004, en una realización, el proc
GPU de P2P 1016 y puede conectarse directamente a la
Implementaciones de red neuronal de aprendizaje aut
La arquitectura informática proporcionada por realizacio
para realizar los tipos de procesamiento paralelo que son
neuronales para un aprendizaje automático. Una red ne
tienen una relación de grafo. Como es bien conocido en la
de tipos de implementaciones de red neuronal. Un tip
prospectiva, como se ha descrito previamente.
Un segundo tipo ilustrativo de red neuronal es la red neur
realimentación prospectiva especializada para procesar
tales como datos de imagen. En consecuencia, las CNN
de imágenes y de visión de cálculo, pero también pueden
como procesamiento de habla y de idioma. Los nodos en l
de "filtros" (detectores de características inspirados por lo
cada conjunto de filtros se propaga a nodos en capas suc
la operación matemática convolucional a cada filtro par
especializado de operación matemática realizada por d
versión modificada de una de las dos funciones original
función para la convolución puede denominarse entrada,
de convolución. La salida puede denominarse mapa d
convolución puede ser una matriz multidimensional de d
imagen de entrada. El núcleo de convolución puede s
parámetros están adaptados por el proceso de entrenami
Las redes neuronales recurrentes (RNN) son una famili
incluyen conexiones de realimentación entre capas.
compartiendo datos de parámetro a lo largo de diferente
incluye ciclos. Los ciclos representan la influencia de un
futuro, ya que al menos una porción de los datos de sa
entrada posterior en una secuencia. Esta característic
procesamiento de idioma debido a la naturaleza variable
Las figuras descritas a continuación presentan redes de r
describen un proceso general para entregar y desplega
entenderá que estas descripciones son ilustrativas y no li
en el presente documento y los conceptos ilustrados
profundas y técnicas de aprendizaje automático en gener
Las redes neuronales ilustrativas descritas anteriorment
aprendizaje profundo es un aprendizaje automático qu
profundas usadas en el aprendizaje profundo son red
ocultas, en contraposición a redes neuronales poco pro
entrenamiento de redes neuronales más profundas
computacional. Sin embargo, las capas ocultas adicion
múltiples etapas que da como resultado un error de salida
poco profundo.
Las redes neuronales profundas usadas en aprendizaje
para realizar un reconocimiento de características acopla
matemático que puede realizar operaciones (por ejemp r de interfaz de anfitrión 1004, en una realización, es un ocesador 1002 a un bus de PCI Express a través del que GPGPU 1006A-D. Cada una de las múltiples GPGPU Figura 9. Las GPGPU 1006A-D pueden interconectarse a punto de alta velocidad 1016. Los enlaces de GPU a de las GPGPU 1006A-D mediante un enlace de GPU Figura 9. Los enlaces de GPU de P2P 1016 posibilitan la D sin requerir la comunicación a través del bus de interfaz n el tráfico de GPU a GPU dirigido a los enlaces de GPU para el acceso a memoria de sistema o para comunicarse U 1000, por ejemplo, mediante uno o más dispositivos de se conectan al procesador 1002 mediante el conmutador ador 1002 incluye el soporte directo para los enlaces de PGPU 1006A-D.
ático
descritas en el presente documento puede configurarse rticularmente adecuados para entrenar y desplegar redes nal puede generalizarse como una red de funciones que cnica, en el aprendizaje automático se usa una diversidad ilustrativo de red neuronal es la red de realimentación
l convolucional (CNN). Una CNN es una red neuronal de os que tienen una topología de tipo cuadrícula conocida, usan comúnmente para aplicaciones de reconocimiento arse para otros tipos de reconocimiento de patrones, tales apa de entrada de CNN están organizados en un conjunto ampos receptivos encontrados en la retina), y la salida de vas de la red. Los cálculos para una CNN incluyen aplicar roducir la salida de ese filtro. La convolución es un tipo funciones para producir una tercera función que es una En la terminología de redes convolucionales, la primera ntras que la segunda función puede denominarse núcleo características. Por ejemplo, la entrada a una capa de s que define los diversos componentes de color de una una matriz multidimensional de parámetros, donde los to para la red neuronal.
de redes neuronales de realimentación prospectiva que RNN posibilitan el modelado de datos secuenciales artes de la red neuronal. La arquitectura para una RNN lor presente de una variable sobre su propio valor en el a de la RNN se usa como realimentación para procesar hace que las RNN sean particularmente útiles para el la que pueden componerse los datos de idioma.
imentación prospectiva, CNN y RNN ilustrativas, así como respectivamente, cada uno de esos tipos de redes. Se ntes en cuanto a cualquier realización específica descrita den aplicarse, de manera general, a redes neuronales
ueden usarse para realizar un aprendizaje profundo. El sa redes neuronales profundas. Las redes neuronales neuronales artificiales compuestas por múltiples capas das que únicamente incluyen una única capa oculta. El en general, más intensivo desde el punto de vista s de la red habilitan un reconocimiento de patrones de ducido en relación con técnicas de aprendizaje automático
tomático incluyen típicamente una red de extremo frontal a una red de extremo trasero que representa un modelo clasificación de objetos, reconocimiento de habla, etc.)basándose en la representación de característica propor
se realice un aprendizaje automático sin requerir que s
modelo. En su lugar, las redes neuronales profundas pu
o estructura estadística dentro de los datos de entrada.
modelo matemático que puede asignar características d
red está especializado, en general, para la tarea especí
diferentes tareas.
Una vez que se ha estructurado la red neuronal, puede
red para realizar tareas específicas. El modelo de aprend
reducir el error de salida de la red. La retropropagación
neuronales. Se presenta un vector de entrada a la red p
salida deseada usando una función de pérdida y se cal
capa de salida. Los valores de error se retropropagan, a
asociado que representa aproximadamente su contribuci
de esos errores usando un algoritmo, tal como el algorit
pesos de la red neuronal.
Las Figuras 11A-B ilustran una red neuronal convolucio
una CNN. Como se muestra en la Figura 11A, una CNN
puede recibir la entrada 1102 que describe las compone
La entrada 1102 puede procesarse por múltiples capas
capa convolucional 1106). La salida de las múltiples cap
conjunto de capas completamente conectadas 1108. L
conexiones completas a todas las activaciones en la ca
realimentación prospectiva. La salida de las capas com
resultado de salida a partir de la red. Las activaciones d
calcularse usando una multiplicación matricial en lugar
hacen uso de las capas completamente conectadas
convolucional 1106 puede generar una salida para la CN
Las capas convolucionales están conectadas de maner
tradicional encontrada en las capas completamente con
completamente conectadas, de manera que cada unid
embargo, las capas convolucionales están conectadas d
convolución de un campo (en lugar del valor de estado re
de la capa subsiguiente, como se ilustra. Los núcleos as
de convolución, cuya salida se envía a la capa siguient
capas convolucionales es un aspecto que posibilita que
grandes.
La Figura 11B ilustra etapas de cálculo ilustrativas dentr
capa convolucional 1112 de una CNN puede procesars
etapas pueden incluir una etapa de convolución 1116, un
La capa de convolución 1114 puede emitir, a continu
convolucional final de la red puede generar datos de ma
capa completamente conectada, por ejemplo, para gene
En la etapa de convolución 1116 se realizan varias convol
lineales. La etapa de convolución 1116 puede incluir un
puede especificarse como una transformación lineal
rotaciones, traslaciones, ajuste a escala y combinacione
la salida de funciones (por ejemplo, neuronas) que están
determinarse como la región local asociada con la neuron
de las neuronas y la región en la entrada local a la qu
convolución 1116 define un conjunto de activaciones l
convolucional 1114.
Las activaciones lineales pueden ser procesadas por un
activación lineal se procesa por una función de activaci
propiedades no lineales de la red global sin afectar a los
varios tipos de funciones de activación no lineal. Un tip
una función de activación definida como f(x) = máx(0, x),
La etapa de agrupamiento 1120 usa una función de agru
con un sumario estadístico de las salidas cercanas. L ada en el modelo. Un aprendizaje profundo posibilita que alice una ingeniería de características artesanal para el aprender características basándose en una correlación características aprendidas se pueden proporcionar a un tadas a una salida. El modelo matemático usado por la a realizar, y se usarán diferentes modelos para realizar
arse un modelo de aprendizaje a la red para entrenar la describe cómo ajustar los pesos dentro del modelo para errores es un método común usado para entrenar redes su procesamiento. La salida de la red se compara con la un valor de error para cada una de las neuronas en la tinuación, hasta que cada neurona tiene un valor de error la salida original. La red puede aprender, a continuación, e descenso de gradiente estocástico, para actualizar los
lustrativa. La Figura 11A ilustra diversas capas dentro de trativa usada para modelar el procesamiento de imagen de rojo, verde y azul (RGB) de una imagen de entrada. olucionales (por ejemplo, la capa convolucional 1104, la onvolucionales puede procesarse opcionalmente por un euronas en una capa completamente conectada tienen revia, como se ha descrito previamente para una red de mente conectadas 1108 puede usarse para generar un o de las capas completamente conectadas 1108 pueden na convolución. No todas las implementaciones de CNN . Por ejemplo, en algunas implementaciones, la capa
persa, lo que difiere de la configuración de red neuronal das 1108. Las capas de red neuronal tradicionales están e salida interacciona con cada unidad de entrada. Sin anera dispersa debido a que se introduce la salida de la ctivo de cada uno de los nodos en el campo) en los nodos dos con las capas convolucionales realizan operaciones a reducción de dimensionalidad realizada dentro de las CNN realice un ajuste a escala para procesar imágenes
una capa convolucional de una CNN. La entrada a una tres etapas de una capa convolucional 1114. Las tres apa de detector 1118 y una etapa de agrupamiento 1120. n, datos a una capa convolucional sucesiva. La capa de características de salida o proporcionar entrada a una n valor de clasificación para la entrada a la CNN.
nes en paralelo para producir un conjunto de activaciones ansformación afín, que es cualquier transformación que una traducción. Las transformaciones afines incluyen estas transformaciones. La etapa de convolución calcula ectadas a regiones específicas en la entrada, que puede as neuronas calculan un producto escalar entre los pesos tán conectadas las neuronas. La salida de la etapa de les que se procesan por etapas sucesivas de la capa
pa de detector 1118. En la etapa de detector 1118, cada o lineal. La función de activación no lineal aumenta las pos receptivos de la capa de convolución. Pueden usarse rticular es la unidad lineal rectificada (ReLU), que utiliza modo que la activación tiene un umbral en cero.
ión que sustituye la salida de la capa convolucional 1106 nción de agrupamiento puede usarse para introducir lainvarianza de traslación en la red neurona!, de manera qu
agrupadas. La invarianza a la traslación local puede ser
en los datos de entrada es más importante que la ubicaci
de funciones de agrupamiento durante la etapa de
agrupamiento promedio y agrupamiento de norma 12. Adi
una etapa de agrupación. En su lugar, tales implementaci
un paso aumentado en relación con etapas de convoluci
La salida desde la capa convolucional 1114 puede proces
capa 1122 puede ser una capa convolucional adicional
ejemplo, la primera capa convolucional 1104 de la Figur
mientras que la segunda capa convolucional puede e
conectadas 1108.
La Figura 12 ilustra una red neuronal recurrente 1200 i
previo de la red influye sobre la salida del estado actual
maneras usando una diversidad de funciones. El uso d
matemáticos para predecir el futuro basándose en una s
usarse para realizar un modelado de idioma estadístico p
de palabras. La RNN 1200 ilustrada puede describirse co
de entrada, las capas ocultas 1204 para implementar un
para posibilitar una 'memoria' de estados previos y una
opera basándose en etapas de tiempo. El estado de
basándose en la etapa de tiempo previa mediante el me
dada, se define el estado de las capas ocultas 1204 por
Una entrada inicial (X<1>) en una primera etapa de tiempo p
una segunda entrada (X<2>) por la capa oculta 1204 us
procesamiento de la entrada inicial (X<1>). Un estado dado
matrices de parámetros. La función f es, en general, una
o una variante de la función rectificadora f(x) = máx(0, x).
capas ocultas 1204 puede variar dependiendo de los det
Además de las redes CNN y RNN básicas descritas, pu
RNN ilustrativa es la RNN de memoria a corto plazo larga
a largo plazo que pueden ser necesarias para procesar s
una red de creencia profunda convolucional, que tiene u
similar a una red de creencia profunda. Una red de creen
compuesta de múltiples capas de variables estocásticas (
aprendizaje no supervisado voraz. Los pesos aprendidos
redes neuronales de preentrenamiento determinando un
La Figura 13 ilustra el entrenamiento y despliegue de un
red dada para una tarea, se entrena la red neuronal us
desarrollado diversas estructuras de entrenamiento p
entrenamiento. Por ejemplo, la estructura de aprendizaje
una estructura de entrenamiento 1304. La estructura de
no entrenada 1306 y posibilitar que la red neuronal no e
paralelo descritos en el presente documento para gener
Para iniciar el proceso de entrenamiento, pueden elegirse
previo usando una red de creencia profunda. El ciclo
manera supervisada o no supervisada.
El aprendizaje supervisado es un método de aprendizaje
mediada, tal como cuando el conjunto de datos de entre
deseada para la entrada, o donde el conjunto de datos
conocida, y la salida de la red neuronal se califica manu
resultantes contra un conjunto de salidas esperadas o de
del sistema. La estructura de entrenamiento 1304 puede
no entrenada 1306. La estructura de entrenamiento 13
está convergiendo de bien la red neuronal no entrenad
correctas basándose en datos de entrada conocidos. El p
que se ajustan los pesos de la red para perfecciona
entrenamiento puede continuar hasta que la red neuron
con una red neuronal entrenada 1308. La red neuron
implementar cualquier número de operaciones de apren laciones pequeñas en la entrada no cambian las salidas n situaciones donde la presencia de una característica recisa de la característica. Pueden usarse diversos tipos rupamiento 1120, incluyendo agrupamiento máximo, lmente, algunas implementaciones de CNN no incluyen sustituyen una etapa de convolución adicional que tiene evias.
a continuación, por la siguiente capa 1122. La siguiente a de las capas completamente conectadas 1108. Por puede emitirse a la segunda capa convolucional 1106, se a una primera capa de las capas completamente
tiva. En una red neuronal recurrente (RNN), el estado red. Las RNN pueden construirse de una diversidad de RNN pivota, en general, alrededor del uso de modelos ncia anterior de entradas. Por ejemplo, una RNN puede redecir una palabra venidera, dada una secuencia previa ue tiene una capa de entrada 1202 que recibe un vector ción recurrente, un mecanismo de realimentación 1205 de salida 1206 para emitir un resultado. La RNN 1200 NN en una etapa de tiempo dada se ve influenciado mo de realimentación 1205. Para una etapa de tiempo tado anterior y la entrada en la etapa de tiempo actual. procesarse por la capa oculta 1204. Puede procesarse información de estado que se determina durante el de calcularse como st = f(Uxt Wst<1>), donde U y W son ealidad, tal como la función tangente hiperbólica (Tanh) embargo, la función matemática específica usada en las de la implementación específica de la RNN 1200.
habilitarse variaciones en esas redes. Una variante de M). Las RNN de LSTM pueden aprender dependencias ncias de idioma más largas. Una variante en la CNN es tructura similar a una CNN y se entrena de una manera rofunda (DBN) es una red neuronal generativa que está orias). Las DBN pueden entrenarse capa a capa usando a DBN pueden usarse a continuación para proporcionar unto inicial óptimo de pesos para la red neuronal.
neuronal profunda. Una vez que se ha estructurado una un conjunto de datos de entrenamiento 1302. Se han habilitar la aceleración de hardware del proceso de mático 804 de la Figura 8 puede estar configurada como namiento 1304 puede engancharse a una red neuronal ada se entrene usando los recursos de procesamiento red neuronal entrenada 1308.
esos iniciales aleatoriamente o mediante entrenamiento trenamiento puede realizarse, a continuación, de una
l que se realiza un entrenamiento como una operación nto 1302 incluye una entrada emparejada con la salida ntrenamiento incluye una entrada que tiene una salida nte. La red procesa las entradas y compara las salidas as. Los errores se retropropagan a continuación a través rse para ajustar los pesos que controlan la red neuronal ede proporcionar herramientas para monitorizar cómo 6 hacia un modelo adecuado para generar respuestas so de entrenamiento tiene lugar repetidamente a medida salida generada por la red neuronal. El proceso de anza una precisión estadísticamente deseada asociada trenada 1308 puede desplegarse a continuación para automático.
El aprendizaje no supervisado es un método de aprendi
datos no etiquetados. Por lo tanto, para un aprendizaje n
incluirá datos de entrada sin dato de salida asociado al
agrupamientos dentro de la entrada no etiquetada y
relacionadas con el conjunto de datos global. El entrena
de autoorganización, que es un tipo de red neuronal entr
a la reducción de la dimensionalidad de los datos. El entre
una detección de anomalías, lo que permite la identificac
que se desvían de los patrones normales de los datos.
También pueden emplearse variaciones al entrena
semisupervisado es una técnica en la que el conjunto de
etiquetados y no etiquetados de la misma distribución.
supervisado en el que se usan continuamente datos de en
incremental habilita la adaptación de la red neuronal
conocimiento inculcado dentro de la red durante el entren
Ya sea supervisado o no supervisado, el proceso de entr
puede ser demasiado intensivo desde el punto de vista c
un único nodo de cálculo, puede usarse una red distribu
entrenamiento.
La Figura 14 es un diagrama de bloques que ilustra un ap
de entrenamiento que usa múltiples nodos informáticos d
supervisado de una red neuronal. Cada uno de los no
procesadores de anfitrión y uno o más de los nodos de p
procesamiento de gráficos de propósito general altamen
aprendizaje distribuido puede realizarse en el paralelis
combinación del paralelismo de modelo y de datos 1404.
En el paralelismo de modelo 1402, diferentes nodos c
cálculos de entrenamiento para diferentes partes de una ú
entrenarse por un nodo de procesamiento diferente del si
incluyen la capacidad de ajustar a escala a modelos par
con diferentes capas de la red neuronal habilita el entre
pesos de todas las capas no cabrían en la memoria de un
de modelo puede ser particularmente útil en la realizació
grandes.
En el paralelismo de datos 1404, los diferentes nodos de
y cada nodo recibe una porción diferente de los datos.
combinan. Aunque son posibles diferentes enfoques al p
de datos requieren, todos ellos, una técnica de combinac
modelo entre cada nodo. Los enfoques ilustrativos para l
y paralelismo de datos basado en actualizaciones. El pro
de los datos de entrenamiento y establece los parámetro
parámetros de cada nodo. El promediado de parámetros
de parámetro. El paralelismo de datos basado en actualiz
que, en lugar de transferir parámetros desde los nodos al
modelo. Adicionalmente, el paralelismo de datos bas
descentralizada, donde las actualizaciones se comprimen
El paralelismo de modelo y de datos combinado 1406 p
en el que cada nodo computacional incluye múltiples GPU
con GPU separadas dentro de cada nodo que se usan p
El entrenamiento distribuido ha aumentado la sobrecarga
embargo, cada uno de los procesadores paralelos y
implementar diversas técnicas para reducir la sobrecar
posibilitar una transferencia de datos de GPU a GPU de
acelerada.
e en el que la red intenta entrenarse a sí misma usando upervisado, el conjunto de datos de entrenamiento 1302 o. La red neuronal no entrenada 1306 puede aprender ede determinar cómo las entradas individuales están nto no supervisado puede usarse para generar un mapa da 1307 que puede realizar operaciones útiles en cuanto iento no supervisado puede usarse también para realizar de puntos de datos en un conjunto de datos de entrada
nto supervisado y no supervisado. El aprendizaje tos de entrenamiento 1302 incluye una mezcla de datos aprendizaje incremental es una variante del aprendizaje da para entrenar adicionalmente el modelo. El aprendizaje trenada 1308 a los datos nuevos 1312 sin olvidar el iento inicial.
miento para redes neuronales particularmente profundas putacional para un único nodo cálculo. En lugar de usar de nodos computacionales para acelerar el proceso de
dizaje distribuido. El aprendizaje distribuido es un modelo ribuidos para realizar un entrenamiento supervisado o no computacionales distribuidos puede incluir uno o más esamiento de propósito general, tales como la unidad de paralela 900, como en la Figura 900. Como se ilustra, el de modelo 1402, el paralelismo de datos 1404 o una
putacionales en un sistema distribuido pueden realizar a red. Por ejemplo, cada capa de una red neuronal puede ma distribuido. Los beneficios del paralelismo de modelo larmente grandes. La división de los cálculos asociados iento de redes neuronales muy grandes en las que los ico nodo computacional. En algunos casos, el paralelismo e un entrenamiento no supervisado de redes neuronales
red distribuida tienen una instancia completa del modelo s resultados de los diferentes nodos, a continuación, se lelismo de datos, los enfoques de entrenamiento paralelo de resultados y de sincronización de los parámetros de ombinación de datos incluyen promediado de parámetros iado de parámetros entrena cada nodo en un subconjunto lobales (por ejemplo, pesos, desvíos) al promedio de los un servidor de parámetros central que mantiene los datos iones es similar al promediado de parámetros excepto
rvidor de parámetros, se transfieren las actualizaciones al en actualizaciones puede realizarse de una manera se transfieren entre nodos.
e implementarse, por ejemplo, en un sistema distribuido ada nodo puede tener una instancia completa del modelo entrenar diferentes porciones del modelo.
relación con el entrenamiento en una única máquina. Sin GPGPU descritos en el presente documento pueden del entrenamiento distribuido, incluyendo técnicas para o ancho de banda y una sincronización de datos remotaAplicaciones de aprendizaje automático ilustrativas
El aprendizaje automático puede aplicarse para resolver
sin limitación, visión informática, conducción y navegaci
idioma. La visión informática ha sido tradicionalmente un
de aprendizaje automático. Las aplicaciones de visión
visuales humanas, tales como el reconocimiento de car
visuales. Por ejemplo, las aplicaciones de visión informá
las vibraciones inducidas en los objetos visibles en un
paralelo habilita el entrenamiento de aplicaciones de visi
significativamente mayor que el previamente factible y
procesadores paralelos de baja potencia.
El aprendizaje automático acelerado por procesador par
reconocimiento de señales de carretera y de carril, evita
técnicas de aprendizaje automático aceleradas pueden
conjuntos de datos que definen las respuestas apr
procesadores paralelos descritos en el presente docu
neuronales cada vez más complejas usadas para soluc
procesadores de inferenciación de baja potencia en una
autónomos.
Las redes neuronales profundas aceleradas por proc
automático para un reconocimiento de habla automático
una secuencia acústica de entrada, dada la secuencia li
usando redes neuronales profundas ha posibilitado la
modelos de mezcla gaussiana (GMM) previamente usad
El aprendizaje automático acelerado por procesador pa
de lenguaje natural. Los procedimientos de aprendizaj
estadística para producir modelos que son robustos a
procesador de lenguaje natural ilustrativas incluyen trad
Las plataformas de procesamiento paralelo usadas par
de entrenamiento y plataformas de despliegue. Las plataf
e incluyen optimizaciones para acelerar el entrenamien
múltiples nodos y múltiples GPU. Los procesadores par
unidad de procesamiento de gráficos de propósito ge
informático de múltiples GPU 1000 de la Figura 1000.
desplegadas incluyen, en general, procesadores paralel
tales como cámaras, robots autónomos y vehículos autó
La Figura 15 ilustra un sistema en un chip (SOC) d
inferenciación usando un modelo entrenado. El SOC
incluyen un procesador de medios 1502, un procesador d
núcleos 1508. El SOC 1500 puede incluir adicional
agrupamiento de datos en chip compartido que es accesi
componentes de procesamiento pueden optimizarse par
a una diversidad de plataformas de aprendizaje automá
Por ejemplo, puede usarse una implementación del SOC
un vehículo autónomo. Donde el SOC 1500 está confi
diseñado y configurado para su cumplimiento con las n
de despliegue.
Durante la operación, el procesador de medios 1502 y
para acelerar operaciones de visión informática. El proc
baja latencia de múltiples flujos de vídeo de alta resolu
pueden escribirse en una memoria intermedia en la me
continuación analizar el vídeo decodificado y realizar de
tramas del vídeo decodificado en preparación del proce
de imagen entrenado. Por ejemplo, el procesador de visi
una CNN que se usa para realizar el reconocimiento de
realizan cálculos de modelo de extremo trasero por la G
El procesador de múltiples núcleos 1508 puede inclui
sincronización de transferencias de datos y operacion
medios 1502 y el procesador de visión 1504. El procesa
un procesador de aplicación para ejecutar aplicaciones diversidad de problemas tecnológicos, incluyendo, pero tónoma, reconocimiento del habla y procesamiento del las áreas de investigación más activas para aplicaciones rmática varían desde la reproducción de capacidades asta la creación de nuevas categorías de capacidades ueden configurarse para reconocer ondas de sonido de . El aprendizaje automático acelerado por procesador ormática usando un conjunto de datos de entrenamiento lita el desarrollo de sistemas de inferenciación usando
iene aplicaciones de conducción autónoma que incluyen de obstáculos, navegación y control de conducción. Las e para entrenar modelos de conducción basándose en as a una entrada de entrenamiento específica. Los pueden habilitar el entrenamiento rápido de las redes de conducción autónoma y posibilita el despliegue de forma móvil adecuada para su integración en vehículos
or paralelo han posibilitado enfoques de aprendizaje ). El ASR incluye la creación de una función que, dada tica más probable. El aprendizaje automático acelerado ución de los modelos ocultos de Markov (HMM) y los ra el ASR.
puede usarse también para acelerar el procesamiento omático pueden hacer uso de algoritmos de inferencia na entrada errónea o no familiar. Las aplicaciones de de máquina automática entre idiomas humanos.
prendizaje automático pueden dividirse en plataformas s de entrenamiento son, en general, altamente paralelas múltiples GPU y un único nodo y el entrenamiento de ilustrativos adecuados para entrenamiento incluyen la altamente paralela 900 de la Figura 900 y el sistema l contrario, las plataformas de aprendizaje automático potencia inferior adecuados para su uso en productos s.
renciación 1500 ilustrativo adecuado para realizar la puede integrar componentes de procesamiento que ón 1504, una GPGPU 1506 y un procesador de múltiples una memoria en chip 1505 que puede habilitar un or cada uno de los componentes de procesamiento. Los peración de baja potencia para posibilitar el despliegue que incluyen vehículos autónomos y robots autónomos.
0 como una porción del sistema de control principal para o para su uso en vehículos autónomos, el SOC está s de seguridad funcionales relevantes de la jurisdicción
ocesador de visión 1504 pueden funcionar en conjunto r de medios 1502 puede posibilitar la decodificación de por ejemplo, 4K, 8K). Los flujos de vídeo decodificados en el chip 1505. El procesador de visión 1504 puede a era preliminar las operaciones de procesamiento en las nto de las tramas usando un modelo de reconocimiento 04 puede acelerar las operaciones convolucionales para en en los datos de vídeo de alta resolución, mientras se 1506.
ica de control para ayudar con la secuenciación y la memoria compartida realizadas por el procesador de múltiples núcleos 1508 puede funcionar también como tware que pueden hacer uso de la capacidad de cálculode inferenciación de la GPGPU 1506. Por ejemplo, p
navegación y de conducción en software que se ejecut
puede emitir directamente cargas de trabajo computaci
trabajo computacionales al procesador de múltiples nú
estas operaciones a la GPGPU 1506.
La GPGPU 1506 puede incluir grupos de cálculo, tales
cálculo 906A-906H dentro de la unidad de procesamie
Las agrupaciones de cálculo dentro de la GPGPU 1
específicamente para realizar cálculos de inferenciación
puede soportar instrucciones para realizar cálculos de b
enteros de 8 bits y 4 bits.
Sistema de procesamiento de gráficos ilustrativo adi
Los detalles de las realizaciones anteriormente de
procesamiento de gráficos y los dispositivos descritos a
de gráficos de las Figuras 21-34 ilustran hardware de pr
implementar todas y cada una de las técnicas descritas
Vista global del sistema de procesamiento de gráfic
La Figura 16 es un diagrama de bloques de un sistema
diversas realizaciones, el sistema 1600 incluye uno o
1608, y puede ser un sistema de sobremesa de
multiprocesador o un sistema de servidor que tiene un
1607. En una realización, el sistema 1600 es una plat
integrado de sistema en un chip (SoC) para su uso en di
Una realización del sistema 1600 puede incluir o incorpo
una consola de juegos, incluyendo una consola de jue
juegos portátil o una consola de juegos en línea. En a
teléfono inteligente, dispositivo informático de tableta o
datos 1600 también puede incluir, acoplarse o estar inte
llevable tipo reloj inteligente, un dispositivo de gafas inteli
de realidad virtual. En algunas realizaciones, el sistema
decodificador que tiene uno o más procesadores 1602
de gráficos 1608.
En algunas realizaciones, cada uno del uno o más proce
para procesar instrucciones que, cuando se ejecutan, r
algunas realizaciones, cada uno del uno o más núcle
conjunto de instrucciones 1609 específico. En algunas r
el cálculo de conjunto de instrucciones complejo (CISC),
cálculo mediante una palabra de instrucción muy larga
puede procesar un conjunto de instrucciones diferente 1
de otros conjuntos de instrucciones. El núcleo de pr
procesamiento, tal como un procesador de señales digit
En algunas realizaciones, el procesador 1602 incluye l
procesador 1602 puede tener una única caché interna o
la memoria caché se comparte entre diversos compo
procesador 1602 también usa una memoria caché exte
memoria caché de último nivel (LLC)) (no mostrada), q
1607 usando técnicas de coherencia de memoria ca
adicionalmente en el procesador 1602 que puede incluir
de datos (por ejemplo, registros de números enteros, re
puntero de instrucción). Algunos registros pueden ser
pueden ser específicos al diseño del procesador 1602.
En algunas realizaciones, el procesador 1602 está acop
de comunicación tales como señales de dirección, de dat
en el sistema 1600. En una realización, el sistema 1600
que incluye un concentrador de controlador de memori
(E/S) 1630. Un concentrador de controlador de memoria
y otros componentes del sistema 1600, mientras que un implementarse al menos una porción de la lógica de el procesador de múltiples núcleos 1508. Tal software les a la GPGPU 1506 o pueden emitirse las cargas de 1508, que puede descargar al menos una porción de
o una configuración de baja potencia de los grupos de e gráficos de propósito general altamente paralela 900. pueden soportar instrucciones que están optimizadas na red neuronal entrenada. Por ejemplo, la GPGPU 1506 recisión tales como operaciones vectoriales de números
al
s pueden incorporarse dentro de los sistemas de inuación. Los dispositivos y el sistema de procesamiento amiento de gráficos y sistemas alternativos que pueden riormente.
strativo adicional
rocesamiento 1600, de acuerdo con una realización. En procesadores 1602 y uno o más procesadores gráficos sador único, un sistema de estación de trabajo de número de procesadores 1602 o núcleos de procesador a de procesamiento incorporada dentro de un circuito itivos móviles, portátiles o integrados.
dentro de una plataforma de juegos basada en servidor, medios, una consola de juegos móvil, una consola de as realizaciones, el sistema 1600 es un teléfono móvil, sitivo de internet móvil. El sistema de procesamiento de dentro de un dispositivo portátil, tal como un dispositivo es, un dispositivo de realidad aumentada o un dispositivo rocesamiento de datos 1600 es un televisor o dispositivo interfaz gráfica generada por uno o más procesadores
res 1602 incluye uno o más núcleos de procesador 1607 an operaciones para software de usuario y sistema. En e procesador 1607 está configurado para procesar un aciones, el conjunto de instrucciones 1609 puede facilitar álculo de conjunto de instrucciones reducido (RISC) o el W). Cada uno de múltiples núcleos de procesador 1607 que puede incluir instrucciones para facilitar la emulación ador 1607 puede incluir también otros dispositivos de (DSP).
emoria caché 1604. Dependiendo de la arquitectura, el tiples niveles de caché interna. En algunas realizaciones, es del procesador 1602. En algunas realizaciones, el (por ejemplo, una memoria caché de nivel-3 (L3) o una uede estar compartida entre los núcleos de procesador conocidas. Un archivo de registro 1606 está incluido rentes tipos de registros para almacenar diferentes tipos os de coma flotante, registros de estado y un registro de tros de propósito general, mientras que otros registros
con un bus de procesador 1610 para transmitir señales de control entre el procesador 1602 y otros componentes una arquitectura de sistema de 'concentrador' ilustrativa, 6 y un concentrador de controlador de entrada y salida facilita la comunicación entre un dispositivo de memoria centrador de controlador de E/S (ICH) 1630 proporcionaconexiones a los dispositivos de E/S mediante un bus d
controlador de memoria 1616 está integrada dentro del
El dispositivo de memoria 1620 puede ser un disposi
dispositivo de memoria de acceso aleatorio estática (SR
cambio de fase o algún otro dispositivo de memoria qu
memoria de proceso. En una realización, el dispositivo d
el sistema 1600, para almacenar datos 1622 e instrucc
1602 ejecutan una aplicación o proceso. El concentrad
procesador de gráficos externo 1612 opcional, que pu
1608 en los procesadores 1602 para realizar operacion
En algunas realizaciones, el ICH 1630 posibilita que lo
procesador 1602 mediante un bus de E/S de alta velo
controlador de audio 1646, una interfaz de firmware
Bluetooth), un dispositivo de almacenamiento de datos
y un controlador de E/S heredado 1640 para acoplar
personal 2 (PS/2)) al sistema. Uno o más controladores
entrada, tales como las combinaciones de teclado y rató
con el ICH 1630. En algunas realizaciones, un controla
bus de procesador 1610. Se apreciará que el sistema
usarse otros tipos de sistemas de procesamiento de dat
el concentrador de controlador de E/S 1630 puede
concentrador de controlador de memoria 1616 y el conc
procesador de gráficos externo discreto, tal como el pro
La Figura 17 es un diagrama de bloques de una realiza
procesador 1702A-1702N, un controlador de memoria
Aquellos elementos de la Figura 17 que tienen los mis
cualquier otra figura en el presente documento pueden
cualquier otra parte en el presente documento, pero si
adicionales hasta e incluyendo el núcleo adicional 1702
uno de los núcleos de procesador 1702A-1702N inclu
algunas realizaciones, cada núcleo de procesador tambi
1706.
Las unidades de caché internas 1704A-1704N y las uni
de memoria caché dentro del procesador 1700. La jer
caché de instrucciones y de datos dentro de cada núcle
compartida, tal como una caché de nivel 2 (L2), de nivel
de caché antes de la memoria externa se clasifica como
caché mantiene la coherencia entre las diversas unidad
En algunas realizaciones, el procesador 1700 puede incl
de bus 1716 y un núcleo de agente de sistema 1710. L
un conjunto de buses periféricos, tal como uno o más bu
PCI, PCI Express). El núcleo de agente de sistema 1
componentes de procesador. En algunas realizacione
controladores de memoria integrados 1714 para gestion
mostrados).
En algunas realizaciones, uno o más de los núcleos de
hilos simultáneos. En tal realización, el núcleo de age
operar los núcleos de procesador 1702A-1702N durant
sistema 1710 puede incluir adicionalmente una unidad d
para regular el estado de potencia de los núcleos de pr
En algunas realizaciones, el procesador 1700 incluye ad
operaciones de procesamiento de gráficos. En algunas
conjunto de unidades de caché compartidas 1706 y el
controladores de memoria integrados 1714. En algun
acoplado con el procesador de gráficos 1708 para contr
acopladas. En algunas realizaciones, el controlador de
con el procesador de gráficos mediante al menos una i
de gráficos 1708 o el núcleo de agente de sistema 1710 local. En una realización, la lógica del concentrador de sador.
e memoria de acceso aleatorio dinámica (DRAM), un dispositivo de memoria flash, dispositivo de memoria de e un rendimiento adecuado para dar servicio como una oria 1620 puede operar como memoria de sistema para 1621 para su uso cuando el uno o más procesadores controlador de memoria 1616 también se acopla con un municarse con el uno o más procesadores de gráficos gráficos y de medios.
féricos se conecten al dispositivo de memoria 1620 y al Los periféricos de E/S incluyen, pero sin limitación, un un transceptor inalámbrico 1626 (por ejemplo, Wi-Fi, (por ejemplo, unidad de disco duro, memoria flash, etc.), itivos heredados (por ejemplo, dispositivos de sistema us serie universal (USB) 1642 conectan dispositivos de 4. Un controlador de red 1634 puede acoplarse también red de alto rendimiento (no mostrado) se acopla con el mostrado es ilustrativo y no limitante, ya que pueden e están configurados de manera diferente. Por ejemplo, arse dentro del uno o más procesadores 1602, o el dor de controlador de E/S 1630 pueden integrarse en un or de gráficos externo 1612.
de un procesador 1700 que tiene uno o más núcleos de ado 1714 y un procesador de gráficos integrado 1708. úmeros (o nombres) de referencia que los elementos de r o funcionar de cualquier manera similar a la descrita en ación a esto. El procesador 1700 puede incluir núcleos resentado por los recuadros con línea discontinua. Cada o más unidades de caché internas 1704A-1704N. En ne acceso a una o más unidades de caché compartidas
de caché compartidas 1706 representan una jerarquía de memoria caché puede incluir al menos un nivel de rocesador y uno o más niveles de caché de nivel medio ), de nivel 4 (L4) u otros niveles, donde el nivel más alto C. En algunas realizaciones, la lógica de coherencia de caché 1706 y 1704A-1704N.
bién un conjunto de una o más unidades de controlador o más unidades de controlador de bus 1716 gestionan interconexión de componentes periféricos (por ejemplo, roporciona funcionalidad de gestión para los diversos núcleo de agente de sistema 1710 incluye uno o más acceso a diversos dispositivos de memoria externos (no
esador 1702A-1702N incluyen el soporte para múltiples e sistema 1710 incluye componentes para coordinar y rocesamiento de múltiples hilos. El núcleo de agente de rol de potencia (PCU), que incluye lógica y componentes dor 1702A-1702N y el procesador de gráficos 1708.
lmente el procesador de gráficos 1708 para ejecutar las ciones, el procesador de gráficos 1708 se acopla con el de agente de sistema 1710, que incluye el uno o más alizaciones, un controlador de visualización 1711 está salida de procesador de gráficos a una o más pantallas lización 1711 puede ser un módulo separado acoplado onexión, o puede estar integrado dentro del procesadorEn algunas realizaciones, se usa una unidad de interc
internos del procesador 1700. Sin embargo, puede us
interconexión de punto a punto, una interconexión con
en la técnica. En algunas realizaciones, el procesador d
a través de un enlace de E/S 1713.
El enlace de E/S 1713 ilustrativo representa al men
incluyendo una interconexión de E/S en paquete qu
procesador y un módulo de memoria integrado de alto r
realizaciones, cada uno de los núcleos de procesador
de memoria integrados 1718 como una caché de último
En algunas realizaciones, los núcleos de procesador 1
arquitectura de conjunto de instrucciones. En otra
heterogéneos en términos de arquitectura de conjunto
procesador 1702A-1702N ejecutan un primer conjunto
núcleos ejecuta un subconjunto del primer conjunto de i
realización, los núcleos de procesador 1702A-1702N so
o más núcleos que tienen un consumo de potencia re
potencia que tienen un consumo de potencia más bajo.
uno o más chips o como un circuito de SoC integra
componentes.
La Figura 18 es un diagrama de bloques de un pr
procesamiento de gráficos discreta, o puede ser un pro
de procesamiento. En algunas realizaciones, el proces
de memoria mapeada a registros en el procesador
procesador. En algunas realizaciones, el procesador d
acceder a memoria. La interfaz de memoria 1814 puede
a una o más cachés externas compartidas y/o a memori
En algunas realizaciones, el procesador de gráficos 18
enviar datos de salida de visualización a un dispositivo
incluye hardware para uno o más planos de superposic
de vídeo o elementos de interfaz de usuario. En algun
motor de códec de vídeo 1806 para codificar, decodifica
de codificación de medios, que incluyen, pero sin li
Movimiento (MPEG) tales como MPEG-2, formatos
H.264/MPEG-4 AVC, así como de la Sociedad de In
421M/VC-1 y formatos del Grupo Mixto de Expertos en
(MJPEG).
En algunas realizaciones, el procesador de gráficos 1
(BLIT) 1804 para realizar operaciones de rasterizador bi
de bloque de límite de bit. Sin embargo, en una realizac
más componentes del motor de procesamiento de gráfic
motor de cálculo para realizar operaciones de gráficos,
operaciones de medios.
En algunas realizaciones, el GPE 1810 incluye una ca
representar imágenes y escenas tridimensionales usan
primitivas 3D (por ejemplo, rectángulo, triángulo, etc
programable y fija que realizan diversas tareas dentro d
3D/de medios 1815. Aunque la canalización 3D 1812
realización del GPE 1810 también incluye una canalizac
operaciones de medios, tales como post-procesamiento
En algunas realizaciones, la canalización de medios 1
para realizar una o más operaciones de medios especi
desentrelazado de vídeo y aceleración de codificación
1806. En algunas realizaciones, la canalización de medi
hilos para generar hilos para su ejecución en el subsiste
para las operaciones de medios en una o más unidad
medios 1815.
n basada en anillo 1712 para acoplar los componentes una unidad de interconexión alternativa, tal como una u otras técnicas, que incluyen técnicas bien conocidas ficos 1708 se acopla con la interconexión en anillo 1712
de múltiples variedades de interconexiones de E/S, ilita la comunicación entre diversos componentes de iento 1718, tal como un módulo de eDRAM. En algunas -1702N y el procesador de gráficos 1708 usan módulos compartida.
702N son núcleos homogéneos que ejecutan la misma ción, los núcleos de procesador 1702A-1702N son strucciones (ISA), donde uno o más de los núcleos de nstrucciones, mientras que al menos uno de los otros ciones o un conjunto de instrucciones diferente. En una rogéneos en términos de microarquitectura, donde uno ente más alto se acoplan con uno o más núcleos de nalmente, el procesador 1700 puede implementarse en e tiene los componentes ilustrados, además de otros
dor de gráficos 1800, que puede ser una unidad de or de gráficos integrado con una pluralidad de núcleos e gráficos se comunica a través de una interfaz de E/S áficos y con comandos colocados en la memoria de ficos 1800 incluye una interfaz de memoria 1814 para a interfaz a memoria local, a una o más cachés internas, sistema.
bién incluye un controlador de visualización 1802 para isualización 1820. El controlador de visualización 1802 ra la visualización y la composición de múltiples capas alizaciones, el procesador de gráficos 1800 incluye un nscodificar medios a, desde o entre uno o más formatos n formatos del Grupo de Expertos de Imágenes en Codificación de Vídeo Avanzada (AVC) tales como s de Imágenes en Movimiento y Televisión (SMPTE) afía (JPEG), tal como los formatos JPEG y Motion JPEG
cluye un motor de transferencia de imagen de bloque sionales (2D) que incluyen, por ejemplo, transferencias s operaciones de gráficos 2D se realizan usando uno o PE) 1810. En algunas realizaciones, el GPE 1810 es un cluyen operaciones de gráficos tridimensionales (3D) y
ión 3D 1812 para realizar operaciones 3D, tales como ciones de procesamiento que actúan sobre formas de canalización 3D 1812 incluye elementos de función mento y/o generan hilos de ejecución en un subsistema uede usar para realizar operaciones de medios, una medios 1816 que se usa específicamente para realizar deo y mejora de imagen.
cluye unidades de lógica programable o de función fija as, tales como aceleración de decodificación de vídeo, eo en lugar o en nombre del motor de códec de vídeo 16 incluye adicionalmente una unidad de generación de /de medios 1815. Los hilos generados realizan cálculos ejecución de gráficos incluidas en el subsistema 3D/deEn algunas realizaciones, el subsistema de 3D/medios
canalización 3D 1812 y la canalización de medios 1816.
ejecución de hilos al subsistema de 3D/de medios 1815,
despachar las diversas solicitudes a recursos de ejecuc
una matriz de unidades de ejecución de gráficos para pr
subsistema de 3D/medios 1815 incluye una o más cac
realizaciones, el subsistema también incluye memoria co
compartir datos entre hilos y para almacenar datos de s
Motor de procesamiento de gráficos
La Figura 19 es un diagrama de bloques de un motor de
de acuerdo con algunas realizaciones. En una realizació
versión del GPE 1810 mostrado en la Figura 18. Los el
nombres) de referencia que los elementos de cualquier ot
de cualquier manera similar a la descrita en cualquier otr
Por ejemplo, se ilustra la canalización 3D 1812 y la cana
medios 1816 es opcional en algunas realizaciones del G
1910. Por ejemplo y, en al menos una realización, un pro
al GPE 1910.
En algunas realizaciones, el GPE 1910 se acopla con o
proporciona un flujo de comandos a la canalización 3D
realizaciones, el emisor por flujo continuo de comandos
sistema, o una o más de memoria caché interna y memo
flujo continuo de comandos 1903 recibe comandos desd
y/o a la canalización de medios 1816. Los comandos s
que almacena comandos para la canalización 3D 181
memoria intermedia en anillo puede incluir adicional
almacenan lotes de múltiples comandos. Los coman
referencias a datos almacenados en memoria, tales co
la canalización 3D 1812 y/o datos de imagen y objet
canalización 3D 1812 y la canalización de medios 1816
mediante la lógica dentro de las respectivas canalizacion
de núcleo de gráficos 1914.
En diversas realizaciones, la canalización 3D 1812 pue
sombreadores de vértices, sombreadores de geometrí
sombreadores de cálculo u otros programas de sombr
ejecución a la matriz de núcleo de gráficos 1914. La matri
de recursos de ejecución. La lógica de ejecución de múlt
la matriz de núcleo de gráficos 1914 incluye el soporte par
múltiples hilos de ejecución simultáneos asociados con
En algunas realizaciones, la matriz de núcleo de gráfi
funciones de medios, tales como procesamiento de vídeo
incluyen adicionalmente una lógica de propósito
computacionales de propósito general paralelas, ademá
propósito general puede realizar operaciones de proces
dentro del núcleo o núcleos de procesador 1607 de la Fi
Los datos de salida generados por hilos que se ejecutan
a memoria en una memoria intermedia de retorno unific
múltiples hilos. En algunas realizaciones, la URB 1918
ejecutan en la matriz de núcleo de gráficos 1914. En algu
para la sincronización entre hilos en la matriz de núcleo
función compartida 1920.
En algunas realizaciones, la matriz de núcleo de gráfic
número variable de núcleos de gráficos, teniendo cada
en la potencia objetivo y el nivel de rendimiento del G
dinámicamente escalables, de manera que pueden acti
necesarios.
La matriz de núcleo de gráficos 1914 se acopla con la lógi
que se comparten entre los núcleos de gráficos en la m incluye una lógica para ejecutar hilos generados por la na realización, las canalizaciones envían solicitudes de incluye una lógica de despacho de hilos para arbitrar y e hilos disponibles. Los recursos de ejecución incluyen r los hilos de medios y 3D. En algunas realizaciones, el ternas para instrucciones y datos de hilos. En algunas tida, que incluye registros y memoria direccionable, para
samiento de gráficos 1910 de un procesador de gráficos motor de procesamiento de gráficos (GPE) 1910 es una tos de la Figura 19 que tienen los mismos números (o ura en el presente documento pueden operar o funcionar te en el presente documento, pero sin limitación a esto. ión de medios 1816 de la Figura 18. La canalización de 910 y puede no incluirse explícitamente dentro del GPE dor de medios y/o de imágenes separado está acoplado
ye un emisor por flujo continuo de comandos 1903, que y/o a las canalizaciones de medios 1816. En algunas está acoplado con memoria, que puede ser memoria de ché compartida. En algunas realizaciones, el emisor por emoria y envía los comandos a la canalización 3D 1812 ectivas extraídas de una memoria intermedia en anillo, canalización de medios 1816. En una realización, la memorias intermedias de comandos en lotes que ara la canalización 3D 1812 también pueden incluir ro sin limitación, datos de vértices y de geometría para e memoria para la canalización de medios 1816. La esan los comandos y los datos realizando operaciones despachando uno o más hilos de ejecución a una matriz
cutar uno o más programas de sombreado, tales como mbreadores de píxeles, sombreadores de fragmentos, procesando las instrucciones y despachando hilos de núcleo de gráficos 1914 proporciona un bloque unificado fines (por ejemplo, las unidades de ejecución) dentro de ersos idiomas sombreadores de API 3d y puede ejecutar les sombreadores.
914 también incluye lógica de ejecución para realizar e imagen. En una realización, las unidades de ejecución al que es programable para realizar operaciones peraciones de procesamiento de gráficos. La lógica de to en paralelo o junto con la lógica de propósito general 16 o el núcleo 1702A-1702N como en la Figura 17.
matriz de núcleo de gráficos 1914 pueden emitir datos URB) 1918. La URB 1918 puede almacenar datos para usarse para enviar datos entre diferentes hilos que se ealizaciones, la URB 1918 puede usarse adicionalmente ráficos y la lógica de función fija dentro de la lógica de
914 es escalable, de manera que la matriz incluye un n número variable de unidades de ejecución basándose 10. En una realización, los recursos de ejecución son o desactivarse los recursos de ejecución según sean
función compartida 1920 que incluye múltiples recursos e núcleo de gráficos. Las funciones compartidas dentrode la lógica de función compartida 1920 son unidad
complementaria especializada a la matriz de núcleo d
compartida 1920 incluye, pero sin limitación, el mue
comunicación inter-hilo (ITC) 1923. Adicionalmente, al
1925 dentro de la lógica de función compartida 1920. S
una función especializada dada es insuficiente para la i
lugar, se implementa una única instanciación de esa fu
de función compartida 1920 y se comparte entre los re
1914. El conjunto preciso de funciones que se comparte
dentro de la matriz de núcleo de gráficos 1914 varía ent
La Figura 20 es un diagrama de bloques de otra realiza
Figura 20 que tienen los mismos números (o nombres)
presente documento pueden operar o funcionar de cual
presente documento, pero sin limitación a esto.
En algunas realizaciones, el procesador de gráficos 200
de canalización 2004, un motor de medios 2037 y núc
interconexión en anillo 2002 acopla el procesador de gr
procesadores de gráficos o uno o más núcleos de pro
procesador de gráficos es uno de muchos procesado
múltiples núcleos.
En algunas realizaciones, el procesador de gráficos 20
anillo 2002. Los comandos entrantes se interpretan por
frontal de canalización 2004. En algunas realizaciones,
escalable para realizar procesamiento de geometría 3D
gráficos 2080A-2080N. Para comandos de procesamien
2003 suministra comandos a la canalización de geomet
de medios, el emisor por flujo continuo de comandos 20
que se acopla a un motor de medios 2037. En algunas
calidad de vídeo (VQE) 2030 para post-procesamiento
de múltiples formatos (MFX) 2033 para proporcionar co
hardware. En algunas realizaciones, cada uno de la
generan hilos de ejecución para los recursos de ejecuci
2080A.
En algunas realizaciones, el procesador de gráficos 20
que cuentan con los núcleos modulares 2080A-2080N (
uno múltiples subnúcleos 2050A-550N, 2060A-2060N (
realizaciones, el procesador de gráficos 2000 puede te
En algunas realizaciones, el procesador de gráficos 20
primer subnúcleo 2050A y un segundo subnúcleo 206
procesador de baja potencia con un único subnúcleo (
de gráficos 2000 incluye múltiples núcleos de gráficos
subnúcleos 2050A-2050N y un conjunto de segundos
primeros subnúcleos 2050A-2050N incluye al menos u
muestreadores de medios/texturas 2054A-2054N. Cad
2060N incluye al menos un segundo conjunto de unidad
En algunas realizaciones, cada subnúcleo 2050A-2
compartidos 2070A-2070N. En algunas realizacione
compartida y lógica de operación de píxeles. Pueden i
realizaciones del procesador de gráficos.
Unidades de ejecución
La Figura 21 ilustra lógica de ejecución de hilos 21
empleados en algunas realizaciones de un GPE. Los e
nombres) de referencia que los elementos de cualquier o
de cualquier manera similar a la descrita en cualquier ot
En algunas realizaciones, la lógica de ejecución de
despachador de hilos 2104, una caché de instrucciones
que incluye una pluralidad de unidades de ejecución 21
un puerto de datos 2114. En una realización, la unidad d
o desactivando una o más unidades de ejecución (por lógica de hardware que proporcionan funcionalidad icos 1914. En diversas realizaciones, lógica de función or 1921, el cálculo matemático 1922 y la lógica de realizaciones implementan una o más caché o cachés ementa una función compartida donde la demanda para n dentro de la matriz de núcleo de gráficos 1914. En su especializada como una entidad autónoma en la lógica de ejecución dentro de la matriz de núcleo de gráficos re la matriz de núcleo de gráficos 1914 y están incluidas lizaciones.
e un procesador de gráficos 2000. Los elementos de la ferencia que los elementos de cualquier otra figura en el manera similar a la descrita en cualquier otra parte en el
uye una interconexión en anillo 2002, un extremo frontal e gráficos 2080A-2080N. En algunas realizaciones, la a otras unidades de procesamiento, que incluyen otros ores de propósito general. En algunas realizaciones, el tegrados dentro de un sistema de procesamiento de
cibe lotes de comandos a través de la interconexión en isor de flujo continuo de comandos 2003 en el extremo esador de gráficos 2000 incluye una lógica de ejecución cesamiento de medios a través del núcleo o núcleos de geometría 3D, el emisor por flujo continuo de comandos 6. Para al menos algunos comandos de procesamiento ministra los comandos al extremo frontal de vídeo 2034, aciones, el motor de medios 2037 incluye un motor de o e imágenes y un motor de codificación/decodificación ión y decodificación de datos de medios acelerados por ación de geometría 2036 y el motor de medios 2037 hilos proporcionados por al menos un núcleo de gráficos
luye recursos de ejecución de hilos ajustables a escala inados, en ocasiones, cortes de núcleo), teniendo cada inados, en ocasiones, subcortes de núcleo). En algunas alquier número de núcleos de gráficos 2080A a 2080N. luye un núcleo de gráficos 2080A que tiene al menos un n otras realizaciones, el procesador de gráficos es un mplo, 2050A). En algunas realizaciones, el procesador -2080N, incluyendo cada uno un conjunto de primeros cleos 2060A-2060N. Cada subnúcleo en el conjunto de er conjunto de unidades de ejecución 2052A-2052N y núcleo en el conjunto de segundos subnúcleos 2060A-ejecución 2062A-2062N y muestreadores 2064A-2064N. , 2060A-2060N comparte un conjunto de recursos recursos compartidos incluyen memoria de caché se también otros recursos compartidos en las diversas
e incluye una matriz de elementos de procesamiento tos de la Figura 21 que tienen los mismos números (o ura en el presente documento pueden operar o funcionar rte en el presente documento, pero sin limitación a esto.
2100 incluye un procesador de sombreador 2102, un una matriz de unidades de ejecución ajustable a escala 108N, un muestreador 2110, una caché de datos 2112 y ución escalable puede escalar dinámicamente activando lo, cualquiera de la unidad de ejecución 2108A, 2108B,2108C, 2108D, a 2108N-1 y 2108N) basándose en
realización, los componentes incluidos están interconec
cada uno de los componentes. En algunas realizacion
conexiones a memoria, tal como la memoria de siste
instrucciones 2106, el puerto de datos 2114, el muest
algunas realizaciones, cada unidad de ejecución (por ej
programable autónoma que puede ejecutar múltiples hi
elementos de datos en paralelo para cada hilo. En diver
2108N es ajustable a escala para incluir cualquier núm
En algunas realizaciones, las unidades de ejecución 2
de sombreador. Un procesador de sombreador 2102
despachar los hilos de ejecución asociados con los pr
2104. En una realización, el despachador de hilos incluy
las canalizaciones de gráficos y de medios e instanciar
las unidades de ejecución 2108A-2108N. Por ejemplo,
20) puede despachar sombreadores de vértices, de tes
(Figura 21) para su procesamiento. En algunas realiza
hilos en tiempo de ejecución que generan solicitudes d
En algunas realizaciones, las unidades de ejecución 21
un soporte nativo para muchas instrucciones de so
programas de sombreado desde bibliotecas de gráfic
traducción mínima. Las unidades de ejecución soport
programas de vértices, programas de geometría, sombr
sombreadores de píxeles, sombreadores de fragme
sombreadores de cálculo y de medios). Cada una de las
múltiple la ejecución de única instrucción de múltiples
entorno de ejecución eficiente frente a los accesos a m
cada unidad de ejecución tiene un archivo de registro
independiente asociado. La ejecución es de múltiple
operaciones de números enteros, de coma flotante de
SIMD, operaciones lógicas, operaciones trascendentale
desde la memoria o una de las funciones compartidas, u
2108A-2108N hace que un hilo en espera pase a esta
Mientras el hilo en espera estaba en inactividad, los re
Por ejemplo, durante un retardo asociado con una op
puede realizar operaciones para un sombreador de píxe
sombreado, incluyendo un sombreador de vértices difer
Cada unidad de ejecución en las unidades de ejecució
número de elementos de datos es el "tamaño de ejecuc
ejecución es una unidad lógica de ejecución para el acc
dentro de las instrucciones. El número de canales pu
Lógicas (ALU) o Unidades de Coma Flotante (FPU) fí
realizaciones, las unidades de ejecución 2108A-2108N s
El conjunto de instrucciones de unidad de ejecución inc
se pueden almacenar como un tipo de datos empaqu
diversos elementos basándose en el tamaño de datos
de 256 bits de ancho, los 256 bits del vector se almace
como cuatro elementos de datos empaquetados de 6
cuádruple (QW)), ocho elementos de datos empaqueta
palabra doble (DW)), dieciséis elementos de datos e
tamaño de palabra (W)), o treinta y dos elementos de
byte (B)). Sin embargo, son posibles diferentes anchura
Una o más memorias caché de instrucciones internas
hilos 2100 para almacenar en caché instrucciones de hi
una o más cachés de datos (por ejemplo, 2112) están in
En algunas realizaciones, se incluye un muestreador 21
3D y muestreo de medios para operaciones de medi
funcionalidad de textura especializada o muestreo de m
el proceso de muestreo antes de proporcionar los datos equisitos de cálculo de una carga de trabajo. En una s mediante un tejido de interconexión que se enlaza con a lógica de ejecución de hilos 2100 incluye una o más memoria caché, a través de una o más de la caché de or 2110 y las unidades de ejecución 2108A-2108N. En o, 2108A) es una unidad de cálculo de propósito general e hardware simultáneos mientras se procesan múltiples realizaciones, la matriz de unidades de ejecución 2108A-unidades de ejecución individuales.
-2108N se usan principalmente para ejecutar programas de procesar los diversos programas de sombreador y mas de sombreador mediante un despachador de hilos ica para arbitrar las solicitudes de iniciación de hilo desde ilos solicitados en una o más unidades de ejecución en nalización de geometría (por ejemplo, 2036 de la Figura n o de geometría a la lógica de ejecución de hilos 2100 s, el despachador de hilos 2104 puede procesar también los programas de sombreado de ejecución.
108N soportan un conjunto de instrucciones que incluye dor de gráficos 3D convencionales, de modo que los or ejemplo, Direct 3D y OpenGL) se ejecutan con una rocesamiento de vértices y de geometría (por ejemplo, res de vértices), procesamiento de píxeles (por ejemplo, y procesamiento de propósito general (por ejemplo, ades de ejecución 2108A-2108N puede emitir de manera s (SIMD) y la operación de múltiples hilos posibilita un ia de latencia más alta. Cada hilo de hardware dentro de ancho de banda alto especializado y un estado de hilo isiones por reloj a canalizaciones que pueden realizar isión sencilla y doble, de capacidad de ramificación de ras operaciones misceláneas. Mientras se esperan datos gica de dependencia dentro de las unidades de ejecución ctivo hasta que se hayan devuelto los datos solicitados. s de hardware pueden dedicarse a procesar otros hilos. n de sombreador de vértices, una unidad de ejecución n sombreador de fragmentos u otro tipo de programa de
8A-2108N opera en matrices de elementos de datos. El o el número de canales para la instrucción. Un canal de nmascaramiento y control de flujo de elementos de datos ser independiente del número de Unidades Aritméticopara un procesador de gráficos particular. En algunas tan tipos de datos de números enteros y de coma flotante.
instrucciones de SIMD. Los diversos elementos de datos en un registro y la unidad de ejecución procesará los elementos. Por ejemplo, cuando se opera en un vector n un registro y la unidad de ejecución opera en el vector separados (elementos de datos de tamaño de palabra e 32 bits separados (elementos de datos de tamaño de uetados de 16 bits separados (elementos de datos de de 8 bits separados (elementos de datos de tamaño de vector y tamaños de registro.
ejemplo, 2106) se incluyen en la lógica de ejecución de ara las unidades de ejecución. En algunas realizaciones, as en datos de hilo de caché durante la ejecución de hilo. ra proporcionar un muestreo de textura para operaciones En algunas realizaciones, el muestreador 2110 incluye para procesar los datos de textura o de medios durante streados a una unidad de ejecución.
Durante la ejecución, las canalizaciones de gráficos y d
ejecución de hilos 2100 por medio de una lógica de gen
y rasterizado un grupo de objetos geométricos en dato
ejemplo, lógica de sombreador de píxeles, lógica de
sombreador 2102 para calcular adicionalmente informaci
superficies (por ejemplo, memorias intermedias de color,
de estarcido, etc.). En algunas realizaciones, un som
valores de los diversos atributos de vértice que han
realizaciones, la lógica de procesador de píxeles dentro
un píxel suministrado por la interfaz de programación d
Para ejecutar el programa de sombreado, el procesa
ejecución (por ejemplo, 2108A) mediante el despachad
píxeles 2102 usa la lógica de muestreo de textura en el
de textura almacenados en memoria. Las operaciones a
entrada calculan datos de color de píxel para cada f
procesamiento posterior.
En algunas realizaciones, el puerto de datos 2114 pro
lógica de ejecución de hilos 2100 emita datos procesad
de salida de procesador de gráficos. En algunas realiz
más memorias caché (por ejemplo, la caché de datos
memoria por medio del puerto de datos.
La Figura 22 es un diagrama de bloques que ilustra un
acuerdo con algunas realizaciones. En una o más realiz
soportan un conjunto de instrucciones que tiene instrucci
ilustran los componentes que se incluyen en general
líneas discontinuas incluyen componentes que son opc
de las instrucciones. En algunas realizaciones, el for
instrucciones, en el sentido de que las mismas son
contraposición a micro-operaciones resultantes de la de
instrucción.
En algunas realizaciones, las unidades de ejecució
instrucciones en un formato de instrucción de 128 bits 2
disponible para algunas instrucciones basándose en
operandos seleccionados. El formato de instrucción de
de instrucción, mientras que algunas opciones y opera
instrucciones nativas disponibles en el formato de 64
instrucción se compacta en parte utilizando un conjunto
de la unidad de ejecución hace referencia a un conjunto
y usa las salidas de tabla de compactación para reconst
bits 2210.
Para cada formato, el código de operación de instrucci
ejecución. Las unidades de ejecución ejecutan cada in
datos de cada operando. Por ejemplo, en respuesta a
operación de adición simultánea a través de cada canal
de imagen. Por defecto, la unidad de ejecución realiza c
operandos. En algunas realizaciones, el campo de cont
opciones de ejecución, tal como la selección de canale
ejemplo, mezcla). Para las instrucciones en el formato
ejecución 2216 limita el número de canales de datos que
de tamaño de ejecución 2216 no está disponible para s
Algunas instrucciones de unidad de ejecución tienen ha
2220, src1 2222, y uno de destino 2218. En algunas re
de destino dual, donde está implicado uno de los destin
un tercer operando de origen (por ejemplo, SRC2 2224),
el número de operandos de origen. El último operando d
ejemplo, precodificado) pasado con la instrucción.
En algunas realizaciones, el formato de instrucción de
2226 que especifica, por ejemplo, si se usa el mo
direccionamiento de registro indirecto. Cuando se usa el
registro de uno o más operandos se proporciona directa ios envían solicitudes de iniciación de hilo a la lógica de n y de despacho de hilos. Una vez que se ha procesado íxeles, se invoca la lógica de procesador de píxel (por reador de fragmentos, etc.) dentro del procesador de salida y hace que se escriban los resultados para emitir orias intermedias de profundidad, memorias intermedias r de píxeles o sombreador de fragmentos calcula los terpolarse a través del objeto rasterizado. En algunas rocesador de sombreador 2102 ejecuta a continuación ación (API) o programa de sombreador de fragmentos. e sombreador 2102 despacha hilos a una unidad de hilos 2104. En algunas realizaciones, el sombreador de treador 2110 para acceder a datos de textura en mapas icas en los datos de textura y los datos de geometría de ento geométrico, o descartan uno o más píxeles del
na un mecanismo de acceso de memoria para que la la memoria para su procesamiento en una canalización s, el puerto de datos 2114 incluye o se acopla a una o ) para almacenar en caché datos para un acceso de
atos de instrucción de procesador de gráficos 2200 de s, las unidades de ejecución de procesador de gráficos en múltiples formatos. Los recuadros con línea continua instrucción de unidad de ejecución, mientras que las s o que únicamente están incluidos en un subconjunto de instrucción 2200 descrito e ilustrado son macroucciones suministradas a la unidad de ejecución, en cación de instrucciones una vez que se ha procesado la
procesador de gráficos soportan de manera nativa n formato de instrucción compacta de 64 bits 2230 está trucción, las opciones de instrucción y el número de its nativo 710 proporciona acceso a todas las opciones están restringidas en el formato de 64 bits 2230. Las 30 varían por realización. En algunas realizaciones, la ores de índice en un campo de índice 2213. El hardware las de compactación basándose en los valores de índice a instrucción nativa en el formato de instrucción de 128
12 define la operación que ha de realizar la unidad de ión en paralelo a través de los múltiples elementos de strucción de adición, la unidad de ejecución realiza una olor que representa un elemento de textura o elemento nstrucción a través de todos los canales de datos de los instrucción 2214 posibilita el control a través de ciertas r ejemplo, predicación) y orden de canal de datos (por nstrucción de 128 bits 2210, un campo de tamaño de cutarán en paralelo. En algunas realizaciones, el campo en el formato de instrucción compacto de 64 bits 2230.
s operandos, incluyendo dos operandos de origen, src0 iones, las unidades de ejecución soportan instrucciones s instrucciones de manipulación de datos pueden tener e el código de operación de instrucción 2212 determina en de una instrucción puede ser un valor inmediato (por
ts 2210 incluye un campo de modo de acceso/dirección direccionamiento de registro directo o el modo de de direccionamiento de registro directo, la dirección de por los bits en la instrucción.
En algunas realizaciones, el formato de instrucción de
2226, que especifica un modo de dirección y/o un mod
modo de acceso para definir una alineación de acceso
modos de acceso que incluyen un modo de acceso ali
donde la alineación de bytes del modo de acceso deter
Por ejemplo, cuando está en un primer modo, la instru
los operandos de origen y de destino y, cuando e
direccionamiento alineado por 16 bytes para todos los o
En una realización, la porción de modo de dirección d
instrucción ha de usar el direccionamiento directo o indir
directo, los bits en la instrucción proporcionan directam
se usa el modo de direccionamiento de registro indire
operandos basándose en un valor de registro de direcci
En algunas realizaciones, las instrucciones se agrupa
2212 para simplificar la decodificación de código de ope
5 y 6 permiten que la unidad de ejecución determine el
operación preciso mostrado es simplemente un ejemplo
de movimiento y de lógica 2242 incluye instrucciones d
comparar (cmp)). En algunas realizaciones, el grupo de
los cinco bits más significativos (MSB), donde las instr
instrucciones de lógica están en forma de 0001xxxxb. U
llamada, salto (jmp)) incluye instrucciones en forma d
misceláneas 2246 incluye una mezcla de instruccione
esperar, enviar) en forma de 0011 xxxxb (por ejemplo, 0x
2248 incluye instrucciones aritméticas a nivel de com
0100xxxxb (por ejemplo, 0x40). El grupo de cálculo ma
paralelo a través de canales de datos. El grupo de cálcu
(por ejemplo, dp4) en forma de 0101xxxxb (por ejem
aritmética tal como cálculos de producto escalar con op
Canalización de gráficos
La Figura 23 es un diagrama de bloques de otra realiza
Figura 23 que tienen los mismos números (o nombres)
presente documento pueden operar o funcionar de cual
presente documento, pero sin limitación a esto.
En algunas realizaciones, el procesador de gráficos 230
de medios 2330, un motor de visualización 2340, una l
de representación 2370. En algunas realizaciones, el pr
de un sistema de procesamiento de múltiples núcleos q
general. El procesador de gráficos se controla por las
mostrados) o mediante comandos emitidos al procesad
En algunas realizaciones, la interconexión de anillo 230
de procesamiento, tales como otros procesadores de
desde la interconexión en anillo 2302 se interpretan por
suministra instrucciones a componentes individuales de
2330.
En algunas realizaciones, el emisor por flujo continuo de
2305 que lee datos de vértices desde memoria y ejecut
el emisor por flujo continuo de comandos 2303. En alg
datos de vértices a un sombreador de vértices 230
coordenadas y de iluminación en cada vértice. En algun
de vértices 2307 ejecutan instrucciones de procesamien
de ejecución 2352A-2352B mediante un despachador d
En algunas realizaciones, las unidades de ejecución 23
tienen un conjunto de instrucciones para realizar opera
unidades de ejecución 2352A-2352B tienen una caché
compartida entre las matrices. La caché puede configur
una única caché que se subdivide para contener datos its 2210 incluye un campo de modo de acceso/dirección acceso para la instrucción. En una realización, se usa el atos para la instrucción. Algunas realizaciones soportan o de 16 bytes y un modo de acceso alineado de 1 byte, la alineación de acceso de los operandos de instrucción. puede usar un direccionamiento alineado por byte para en un segundo modo, la instrucción puede usar un ndos de origen y de destino.
mpo de modo de acceso/dirección 2226 determina si la . Cuando se usa el modo de direccionamiento de registro la dirección de registro de uno o más operandos. Cuando e puede calcular la dirección de registro de uno o más un campo de dirección inmediata en la instrucción.
ándose en los campos de bits del código de operación n 2240. Para un código de operación de 8 bits, los bits 4, de código de operación. El agrupamiento del código de algunas realizaciones, un grupo de código de operación vimiento y de lógica de datos (por ejemplo, mover (mov), o de operación de movimiento y de lógica 2242 comparte nes de mover (mov) están en forma de 0000xxxxb y las po de instrucciones de control de flujo 2244 (por ejemplo, 0xxxxb (por ejemplo, 0x20). Un grupo de instrucciones e incluye instrucciones de sincronización (por ejemplo, Un grupo de instrucciones de cálculo matemático paralelo te (por ejemplo, añadir, multiplicar (mult)) en forma de tico paralelo 2248 realiza las operaciones aritméticas en atemático vectorial 2250 incluye instrucciones aritméticas 0x50). El grupo de cálculo matemático vectorial realiza os de vectores.
de un procesador de gráficos 2300. Los elementos de la ferencia que los elementos de cualquier otra figura en el manera similar a la descrita en cualquier otra parte en el
luye una canalización de gráficos 2320, una canalización de ejecución de hilos 2350 y una canalización de salida dor de gráficos 2300 es un procesador de gráficos dentro cluye uno o más núcleos de procesamiento de propósito ituras de registro en uno o más registros de control (no gráficos 2300 mediante una interconexión en anillo 2302. pla el procesador de gráficos 2300 a otros componentes os o procesadores de propósito general. Los comandos misor de envío por flujo continuo de comandos 2303, que nalización de gráficos 2320 o la canalización de medios
andos 2303 dirige la operación de un extractor de vértices andos de procesamiento de vértices proporcionados por realizaciones, el extractor de vértices 2305 proporciona e realiza operaciones de transformación espacial de alizaciones, el extractor de vértices 2305 y el sombreador vértices despachando hilos de ejecución a las unidades s 2331.
2352B son una matriz de procesadores de vectores que s de gráficos y de medios. En algunas realizaciones, las adjunta 2351 que es específica para cada matriz o está como una caché de datos, una caché de instrucciones o trucciones en diferentes subdivisiones.
En algunas realizaciones, la canalización de gráficos 23
acelerada por hardware de objetos 3D. En algunas reali
las operaciones de teselación. Un sombreador de domi
trasero de la salida de teselación. Un teselador 2313 op
lógica de propósito especial para generar un conjunto
geométrico aproximado que se proporciona como entrad
si no se usa la teselación, pueden omitirse los compone
el teselador 2313 y el sombreador de dominio 2317).
En algunas realizaciones, pueden procesarse objetos g
mediante uno o más hilos despachados a unidades de
recortador 2329. En algunas realizaciones, el sombrea
lugar de en vértices o parches de vértices como en eta
está deshabilitada, el sombreador de geometría 2319 r
algunas realizaciones, el sombreador de geometría
geometría para realizar teselación de geometría si las u
Antes de la rasterización, un recortador 2329 procesa
de función fija o un recortador programable que tiene
algunas realizaciones, un componente de prueba de ra
de representador 2370 despacha sombreadores de
representaciones por píxel. En algunas realizaciones, la
ejecución de hilos 2350. En algunas realizaciones, una
prueba de profundidad 2373 y acceder a datos de vértic
El procesador de gráficos 2300 tiene un bus de interco
interconexión que permite que datos y mensajes pasen
realizaciones, las unidades de ejecución 2352A-2352B y
y de medios 2354 y la caché de textura/muestreador 2
realizar el acceso a memoria y comunicarse con los c
procesador. En algunas realizaciones, el muestreador 23
2352B cada uno tienen rutas de acceso a memoria sep
En algunas realizaciones, la canalización de salida de r
y prueba de profundidad 2373 que convierte objetos b
asociada. En algunas realizaciones, la lógica ventanas/enmascaradora para realizar una rasteriza
realizaciones también están disponibles una caché
asociadas. Un componente de operaciones de píxel 2
aunque, en algunas instancias, las operaciones de píxe
de imagen de bloque de bits con mezcla) se realizan
visualización por el controlador de visualización 2343 u
realizaciones, está disponible una caché L3 compartid
compartir datos sin el uso de memoria de sistema princi
En algunas realizaciones, la canalización de medios de
y un extremo frontal de vídeo 2334. En algunas realiza
canalización desde el emisor por flujo continuo de co
medios 2330 incluye un emisor de flujo continuo de com
de vídeo 2334 procesa comandos de medios antes d
realizaciones, el motor de medios 2337 incluye funcio
despacho a la lógica de ejecución de hilos 2350 a travé
En algunas realizaciones, el procesador de gráficos
realizaciones, el motor de visualización 2340 es externo
mediante la interconexión en anillo 2302, o algún otro bu
de visualización 2340 incluye un motor 2D 2341 y un c
motor de visualización 2340 contiene lógica de prop
canalización 3D. En algunas realizaciones, el control
visualización (no mostrado), que puede ser un dispositiv
portátil, o un dispositivo de visualización externo adjunt
En algunas realizaciones, la canalización de gráficos 23
realizar operaciones basándose en múltiples interfaces
de ninguna interfaz de programación de aplicaciones (A
el procesador de gráficos traduce llamadas de API qu cluye componentes de teselación para realizar teselación nes, un sombreador de casco programable 811 configura rogramable 817 proporciona una evaluación de extremo n la dirección del sombreador de casco 2311 y contiene bjetos geométricos detallados basándose en un modelo canalización de gráficos 2320. En algunas realizaciones, e teselación (por ejemplo, el sombreador de casco 2311,
tricos completos por un sombreador de geometría 2319 ción 2352A-2352B, o pueden continuar directamente al e geometría opera en objetos geométricos enteros, en nteriores de la canalización de gráficos. Si la teselación una entrada desde el sombreador de vértices 2307. En es programable por un programa de sombreador de es de teselación están desactivadas.
de vértices. El recortador 2329 puede ser un recortador ones de recortador y de sombreador de geometría. En ador y de profundidad 2373 en la canalización de salida eles para convertir los objetos geométricos en sus a de sombreador de píxeles está incluida en la lógica de cación puede eludir el componente de rasterizador y de n rasterizar mediante una unidad de salida de flujo 2323.
n, un tejido de interconexión o algún otro mecanismo de los componentes principales del procesador. En algunas ché o cachés asociadas 2351, el muestreador de textura e interconectan mediante un puerto de datos 2356 para nentes de canalización de salida del representador del as cachés 2351,2358 y las unidades de ejecución 2352A-s.
entación 2370 contiene un componente de rasterización s en vértices en una representación basada en píxeles rasterizador incluye una unidad generadora de de triángulo y de línea de función fija. En algunas presentación 2378 y una caché de profundidad 2379 ealiza operaciones basadas en píxeles sobre los datos, ciadas con operaciones 2D (por ejemplo, transferencias l motor 2D 2341, o se sustituyen en el momento de la o planos de visualización de superposición. En algunas 5 para todos los componentes de gráficos, permitiendo
sador de gráficos 2330 incluye un motor de medios 2337 s, el extremo frontal de vídeo 2334 recibe comandos de os 2303. En algunas realizaciones, la canalización de s separado. En algunas realizaciones, el extremo frontal viar el comando al motor de medios 2337. En algunas ad de generación de hilos para generar hilos para su distribuidor de hilos 2331.
incluye un motor de visualización 2340. En algunas ocesador 2300 y se acopla con el procesador de gráficos jido de interconexión. En algunas realizaciones, el motor lador de visualización 2343. En algunas realizaciones, el especial que puede operar independientemente de la de visualización 2343 se acopla con un dispositivo de isualización integrado en sistema, como en un ordenador iante un conector de dispositivo de visualización.
la canalización de medios 2330 pueden configurarse para ogramación de gráficos y de medios y no son específicas n algunas realizaciones, el software de controlador para específicas de una biblioteca de medios o de gráficosparticular a comandos que pueden procesarse por el pro
soporte para la Biblioteca de Gráficos Abierta (OpenGL)
de cálculo Vulkan, todas ellas del grupo Khronos. En a
para la biblioteca Direct3D de Microsoft Corporation. En
estas bibliotecas. También se puede proporcionar sopo
(OpenCV). También se soportaría una API futura con un
la canalización de la API futura a la canalización del pro
Programación de canalización de gráficos
La Figura 24A es un diagrama de bloques que ilustra
acuerdo con algunas realizaciones. La Figura 24B es un
de procesador de gráficos 2410 de acuerdo con una r
ilustran los componentes que están incluidos en ge
discontinuas incluyen componentes que son opcional
comandos de gráficos. El formato de comando de proc
campos de datos para identificar un cliente objetivo 240
de operación) 2404 y el campo de datos relevantes 2
operación 2405 y un tamaño de comando 2408 en algu
En algunas realizaciones, el cliente 2402 especifica la
datos de comando. En algunas realizaciones, un analiza
de cliente de cada comando para acondicionar el proc
comando a la unidad cliente apropiada. En algunas r
incluyen una unidad de interfaz de memoria, una unidad
de medios. Cada unidad de cliente tiene una canali
comandos. Una vez que se recibe el comando por la uni
2404 y, si está presente, el subcódigo de operación 24
realiza el comando usando información en el campo de
comando explícito 2408 para especificar el tamaño del c
determina automáticamente el tamaño de al menos algu
comando. En algunas realizaciones, se alinean los com
El diagrama de flujo en la Figura 24B muestra una secu
En algunas realizaciones, el software o firmware de
realización de un procesador de gráficos que usa una ve
ejecutar y terminar un conjunto de operaciones de gráfi
describe únicamente con propósitos ilustrativos, ya q
específicos o para esta secuencia de comandos. Adem
en una secuencia de comandos, de manera que el pro
manera al menos parcialmente concurrente.
En algunas realizaciones, la secuencia de comandos
comando de vaciado de canalización 2412 para hac
comandos actualmente pendientes para la canalizaci
canalización de medios 2424 no operan concurrentem
canalización de gráficos activa complete cualquier coma
analizador de comandos del procesador de gráficos pa
de dibujo activos completen las operaciones pend
Opcionalmente, cualquier dato en la caché de repres
memoria. En algunas realizaciones, puede usarse el co
de canalización o antes de colocar el procesador de grá
En algunas realizaciones, se usa un comando de selecci
requiere que el procesador de gráficos conmute explíc
requiere únicamente un comando de selección de canali
de emitir comandos de canalización a menos que el c
algunas realizaciones, se requiere un comando de v
conmutador de canalización mediante el comando de s
En algunas realizaciones, un comando de control de ca
operación y se usa para programar la canalización
realizaciones, el comando de control de canalización 2
activa. En una realización, el comando de control de ca
y para borrar datos de una o más memorias caché d
comandos.
dor de gráficos. En algunas realizaciones, se proporciona guaje Informático Abierto (OpenCL) y/o API de gráficos y as realizaciones, puede proporcionarse también soporte nas realizaciones, puede soportarse una combinación de ara la Biblioteca de Visión Informática de Código Abierto alización 3D compatible si pudiera hacerse un mapeo de dor de gráficos.
ormato de comando de procesador de gráficos 2400 de rama de bloques que ilustra una secuencia de comandos ción. Los recuadros de línea continua en la Figura 24A en un comando de gráficos, mientras que las líneas que están incluidos únicamente en un subconjunto de or de gráficos 2400 ilustrativo de la Figura 24A incluye l comando, un código de operación del comando (código para el comando. También se incluye un subcódigo de omandos.
ad de cliente del dispositivo de gráficos que procesa los e comandos de procesador de gráficos examina el campo iento adicional del comando y encaminar los datos de ciones, las unidades cliente de procesador de gráficos epresentador, una unidad 2D, una unidad 3D y una unidad n de procesamiento correspondiente que procesa los de cliente, la unidad de cliente lee el código de operación ara determinar la operación a realizar. La unidad cliente 2406. Para algunos comandos, se espera un tamaño de do. En algunas realizaciones, el analizador de comandos e los comandos basándose en el código de operación del s mediante múltiplos de una palabra doble.
de comandos de procesador de gráficos 2410 ilustrativo. sistema de procesamiento de datos que presenta una de la secuencia de comandos mostrada para establecer, e muestra una secuencia de comandos de muestra y se as realizaciones no están limitadas a estos comandos s comandos pueden emitirse como un lote de comandos dor de gráficos procesará la secuencia de comandos de
procesador de gráficos 2410 puede comenzar con un e alguna canalización de gráficos activa complete los n algunas realizaciones, la canalización 3D 2422 y la El vaciado de canalización se realiza para hacer que la pendiente. En respuesta a un vaciado de canalización, el á el procesamiento de comandos hasta que los motores s y se invaliden las cachés de lectura relevantes. ción que esté marcado como 'sucio' puede vaciarse a o de vaciado de canalización 2412 para la sincronización en un estado de baja potencia.
e canalización 2413 cuando una secuencia de comandos ente entre canalizaciones. En algunas realizaciones, se n 2413 una vez dentro de un contexto de ejecución antes to sea emitir comandos para ambas canalizaciones. En do de canalización 2412 inmediatamente antes de un ión de canalización 2413.
ción 2414 configura una canalización de gráficos para la 2422 y la canalización de medios 2424. En algunas configura el estado de canalización para la canalización ación 2414 se usa para la sincronización de canalización de la canalización activa antes de procesar un lote deEn algunas realizaciones, los comandos de estado de
un conjunto de memorias intermedias de retorno para
operaciones de canalización requieren la asignación, se
de retorno en las que las operaciones escriben datos inte
el procesador de gráficos también usa una o más memo
realizar comunicación de hilos cruzada. En algunas real
incluye seleccionar el tamaño y número de memorias inte
de canalización.
Los comandos restantes en la secuencia de comand
operaciones. Basándose en una determinación de can
canalización 3D 2422 comenzando con el estado de
comenzando en el estado de canalización de medios 24
Los comandos para configurar el estado de canalizació
estado de memoria intermedia de vértice, estado de
memoria intermedia de profundidad y otras variables de
comandos de primitivas 3D. Los valores de estos coma
3D particular en uso. En algunas realizaciones, los co
desactivar o desviar selectivamente ciertos elementos d
En algunas realizaciones, se usa el comando de primiti
por la canalización 3D. Los comandos y parámetros as
comando de primitiva 3D 2432 se reenvían a la función
función de extracción de vértices usa los datos de coma
de vértices. Las estructuras de datos de vértices se al
algunas realizaciones, el comando de primitiva 3D 2432
mediante sombreadores de vértices. Para procesar som
de ejecución de sombreadores a unidades de ejecución
En algunas realizaciones, se activa la canalización 3D
algunas realizaciones, una escritura de registro activa l
la ejecución mediante un comando 'ir' o 'disparar' en l
ejecución de comando usando un comando de sincroniz
a través de la canalización de gráficos. La canalización 3
3D. Una vez que están completadas las operaciones, s
de motor de píxel y los píxeles resultantes. Pueden
sombreado de píxeles y las operaciones de extremo tras
En algunas realizaciones, la secuencia de comandos de
medios 2424 cuando se realizan operaciones de medios.
para la canalización de medios 2424 depende de las o
operaciones de decodificación de medios específicas pu
decodificación de medios. En algunas realizaciones, p
realizarse la decodificación de medios, en su totalidad
núcleos de procesamiento de propósito general. En u
elementos para las operaciones de la unidad de procesa
el procesador de gráficos para realizar operacione
computacionales que no están relacionados explícitame
En algunas realizaciones, se configura la canalización d
2422. Un conjunto de comandos para configurar el esta
una cola de comandos antes de los comandos de objet
para el estado de canalización de medios 2440 incluyen d
que se usarán para procesar los objetos de medios. Es
codificación de vídeo dentro de la canalización de medi
algunas realizaciones, los comandos para el estado de
uno o más punteros por elementos de estado "indirectos
En algunas realizaciones, los comandos de objeto de m
procesamiento por la canalización de medios. Los objet
datos de vídeo que van a procesarse. En algunas realiz
ser válidos antes de emitir un comando de objeto de
canalización y se ponen en cola los comandos de objet
mediante un comando de ejecución 2444 o un evento de ria intermedia de retorno 2416 se usan para configurar las canalizaciones respectivas escriban datos. Algunas n o configuración de una o más memorias intermedias ios durante el procesamiento. En algunas realizaciones, ntermedias de retorno para almacenar datos de salida y nes, el estado de memoria intermedia de retorno 2416 ias de retorno que usar para un conjunto de operaciones
ifieren basándose en la canalización activa para las ción 2420, la secuencia de comandos se adapta a la ización 3D 2430, o a la canalización de medios 2424
2430 incluyen comandos de ajuste de estado 3D para nto de vértice, estado de color constante, estado de o que han de configurarse antes de que se procesen los se determinan, al menos en parte, basándose en la API s de estado de canalización 3D 2430 también pueden alización si esos elementos no se usarán.
2432 para enviar primitivas 3D para su procesamiento os que se pasan al procesador de gráficos mediante el xtracción de vértices en la canalización de gráficos. La de primitiva 3D 2432 para generar estructuras de datos an en una o más memorias intermedias de retorno. En a para realizar operaciones de vértices en primitivas 3D ores de vértice, la canalización 3D 2422 despacha hilos ocesador de gráficos.
mediante un comando o evento de ejecución 2434. En ución de comando. En algunas realizaciones, se activa uencia de comandos. En una realización, se activa la de canalización para vaciar la secuencia de comandos lizará un procesamiento de geometría para las primitivas erizan los objetos geométricos resultantes y los colores irse también comandos adicionales para controlar el e píxeles para estas operaciones.
sador de gráficos 2410 sigue la ruta de canalización de eneral, el uso y manera específicos de la programación iones de medios o de cálculo que van a realizarse. Las descargarse hacia la canalización de medios durante la omitirse también la canalización de medios y puede parte, usando recursos proporcionados por uno o más ealización, la canalización de medios también incluye e gráficos de propósito general (GPGPU), donde se usa ctoriales SIMD usando programas de sombreador n la representación de primitivas de gráficos.
ios 2424 de una manera similar que la canalización 3D canalización de medios 2440 se despacha o coloca en medios 2442. En algunas realizaciones, los comandos para configurar los elementos de canalización de medios luye datos para configurar la lógica de decodificación y l como el formato de codificación o decodificación. En lización de medios 2440 habilitan el soporte de uso de contienen un lote de ajustes de estado.
2442 suministran punteros a objetos de medios para su medios incluyen memorias intermedias que contienen es, todos los estados de canalización de medios deben s 2442. Una vez que está configurado el estado de la medios 2442, se activa la canalización de medios 2424 ción equivalente (por ejemplo, escritura de registro). Lasalida desde la canalización de medios 2424 pued
proporcionadas por la canalización 3D 2422 o la ca
operaciones de GPGPU se configuran y se ejecutan de
Arquitectura de software de gráficos
La Figura 25 ilustra una arquitectura de software de gr
2500 de acuerdo con algunas realizaciones. En alg
aplicación de gráficos 3D 2510, un sistema operativo 25
el procesador 2530 incluye un procesador de gráficos 2
general 2534. Cada uno de la aplicación de gráficos 25
sistema 2550 del sistema de procesamiento de datos.
En algunas realizaciones, la aplicación de gráficos 3
incluyen instrucciones de sombreador 2512. Las instrucc
de sombreador de alto nivel, tal como el lenguaje de so
OpenGL (GLSL). La aplicación también incluye las instr
para su ejecución por el núcleo o núcleos de procesado
objetos de gráficos 2516 definidos por datos de vértices
En algunas realizaciones, el sistema operativo 2520
Corporation, un sistema operativo similar a UNIX propie
que usa una variante del núcleo Linux. El sistema oper
la API de Direct3D, la API de OpenGL o la API de Vulkan
2520 usa un compilador de sombreador de extremo fro
2512 en HLSL a un lenguaje de sombreador de nivel inf
(JIT) o la aplicación puede realizar una compilación previ
de alto nivel se compilan en sombreadores de bajo nive
En algunas realizaciones, las instrucciones de sombrea
una versión de la Representación Intermedia Portátil Co
En algunas realizaciones, el controlador de gráficos de
de extremo posterior 2527 para convertir las instruccion
hardware. Cuando está en uso la API de OpenGL, las i
GLSL se pasan a un controlador de gráficos de modo de
el controlador de gráficos de modo de usuario 2526 usa
para comunicarse con un controlador de gráficos de m
de gráficos de modo de núcleo 2529 se comunica con
instrucciones.
Implementaciones de núcleo de IP
Uno o más aspectos de al menos una realización se pue
en un medio legible por máquina que representa y/o
procesador. Por ejemplo, el medio legible por máquin
dentro del procesador. Cuando son leídas por una máq
la lógica para realizar las técnicas descritas en el pr
"núcleos de IP", son unidades reutilizables de lógica par
legible por máquina tangible como un modelo de hardw
de hardware puede suministrarse a diversos clientes o i
en máquinas de fabricación que fabrican el circuito inte
circuito realiza las operaciones descritas en asociación
documento.
La Figura 26 es un diagrama de bloques que ilustra un
para fabricar un circuito integrado para realizar las o
desarrollo de núcleo de IP 2600 puede usarse para gen
en un diseño más grande o usarse para construir un
integrado). Una instalación de diseño 2630 puede gene
de IP en un lenguaje de programación de alto nivel (por
para diseñar, probar y verificar el comportamiento del n
de simulación 2612 puede incluir simulaciones funciona
o sintetizarse, a continuación, un diseño de nivel de t
simulación 2612. El diseño de RTL 2615 es una abstrac
flujo de señales digitales entre registros de hardware,
digitales modeladas. Además de un diseño de RTL 2615 st-procesarse, a continuación, mediante operaciones ación de medios 2424. En algunas realizaciones, las manera similar a la de las operaciones de medios.
s ilustrativa para un sistema de procesamiento de datos realizaciones, la arquitectura de software incluye una al menos un procesador 2530. En algunas realizaciones, uno o más núcleo o núcleos de procesador de propósito el sistema operativo 2520 se ejecutan en la memoria de
0 contiene uno o más programas de sombreador que de lenguaje de sombreador pueden estar en un lenguaje dor de alto nivel (HLSL) o el lenguaje de sombreador de nes ejecutables 2514 en un lenguaje máquina adecuado ropósito general 2534. La aplicación también incluye los
sistema operativo Microsoft® Windows® de Microsoft o un sistema operativo similar a UNIX de código abierto 2520 puede soportar una API de gráficos 2522 tal como ndo está en uso la API de Direct3D, el sistema operativo 2524 para compilar cualquier instrucción de sombreador La compilación puede ser una compilación justo a tiempo sombreador. En algunas realizaciones, los sombreadores nte la compilación de la aplicación de gráficos 3D 2510.
512 se proporcionan en una forma intermedia, tal como cional (SPIR) usada por la API de Vulkan.
de usuario 2526 contiene un compilador de sombreador sombreador 2512 en una representación específica de cciones de sombreador 2512 en el lenguaje de alto nivel ario 2526 para su compilación. En algunas realizaciones, unciones de modo de núcleo de sistema operativo 2528 e núcleo 2529. En algunas realizaciones, el controlador ocesador de gráficos 2532 para despachar comandos e
mplementar mediante código representativo almacenado e la lógica dentro de un circuito integrado tal como un de incluir instrucciones que representan diversa lógica las instrucciones pueden hacer que la máquina fabrique e documento. Tales representaciones, conocidas como circuito integrado que pueden almacenarse en un medio e describe la estructura del circuito integrado. El modelo ciones de fabricación, que cargan el modelo de hardware . El circuito integrado puede fabricarse de manera que el cualquiera de las realizaciones descritas en el presente
a de desarrollo de núcleo de IP 2600 que puede usarse iones de acuerdo con una realización. El sistema de iseños reutilizables modulares que pueden incorporarse ito integrado entero (por ejemplo, un circuito de SOC na simulación de software 2610 de un diseño de núcleo lo, C/C++). La simulación de software 2610 puede usare de IP usando un modelo de simulación 2612. El modelo e comportamiento y/o de temporización. Puede crearse ferencia de registro (RTL) 2615 a partir del modelo de del comportamiento del circuito integrado que modela el ncluyen la lógica asociada realizada usando las señales diseños de nivel inferior en el nivel de lógica o en el nivelde transistores también pueden crearse, diseñarse o s
simulación inicial pueden variar.
El diseño de RTL 2615, o un equivalente, puede sinteti
modelo de hardware 2620, que puede estar en un l
representación de datos de diseño físico. El HDL pued
núcleo de IP. El diseño de núcleo de IP puede almacen
2665 usando memoria no volátil 2640 (por ejemplo, disc
no volátil). Como alternativa, el diseño del núcleo IP se p
una conexión alámbrica 2650 o una conexión inalámbri
continuación un circuito integrado que se basa, al meno
fabricado puede estar configurado para realizar operaci
presente documento.
Circuito integrado de sistema en un chip ilustrativo
Las Figuras 27-29 ilustran circuitos integrados de ma
pueden fabricarse usando uno o más núcleos de IP, de
documento. Además de lo que se ilustra, pueden incluir
de gráficos adicionales, controladores de interfaz de peri
La Figura 27 es un diagrama de bloques que ilustra un
puede fabricarse usando uno o más núcleos de IP, de acu
incluye uno o más procesadores de aplicaciones 2705 (
2710, y puede incluir adicionalmente un procesador de i
de los cuales puede ser un núcleo de IP modular desde
circuito integrado 2700 incluye una lógica de bus o d
controlador de UART 2730, un controlador de SPI/SDI
circuito integrado puede incluir un dispositivo de visualiza
multimedia de alta definición (HDMI) 2750 y una interfaz
(MIPI) 2755. El almacenamiento puede proporcionarse p
flash y un controlador de memoria flash. La interfaz de
memoria 2765 para el acceso a dispositivos de memo
adicionalmente un motor de seguridad integrado 2770.
La Figura 28 es un diagrama de bloques que ilustra un p
de sistema en chip que puede fabricarse usando uno
procesador de gráficos 2810 puede ser una variante del
de gráficos 2810 incluye un procesador de vértices 2805
ejemplo, 2815A, 2815B, 2815C, 2815D a 2815N-1 y 281
programas de sombreado mediante lógica separada, de
para ejecutar operaciones para programas de sombre
procesadores de fragmentos 2815A-2815N ejecutan o
píxeles) para programas de sombreado de fragmentos
de procesamiento de vértices de la canalización de g
procesador o procesadores de fragmentos 2815A-2815
procesador de vértices 2805 para producir una memoria
visualización. En una realización, el procesador o proces
ejecutar programas de sombreado de fragmento según s
realizar operaciones similares como un programa de so
3D.
El procesador de gráficos 2810 incluye adicionalmente
2820B, caché o cachés 2825A-2825B e interconexión o i
2820A-2820B proporcionan un mapeo de dirección virt
para el procesador de vértices 2805 y/o el procesador o p
referencia a datos de vértice o de imagen/textura alm
imagen/textura almacenados en la una o más cachés 2
2820B pueden estar sincronizadas con otras MMU dentr
uno o más procesadores de aplicación 2705, el procesa
Figura 27, de manera que cada procesador 2705-2720
o unificada. La una o más interconexiones de circuito 2
interconecte con otros núcleos de IP dentro del SoC,
directa, de acuerdo con las realizaciones.
zarse. Por tanto, los detalles particulares del diseño y
además por la instalación de diseño para obtener un aje de descripción de hardware (HDL) o alguna otra ularse o probarse además para verificar el diseño de para su entrega a una instalación de fabricación de 3os o, memoria flash o cualquier medio de almacenamiento transmitir (por ejemplo, a través de Internet) a través de 60. La instalación de fabricación 2665 puede fabricar a parte, en el diseño de núcleo de IP. El circuito integrado de acuerdo con al menos una realización descrita en el
ilustrativa y procesadores de gráficos asociados que rdo con diversas realizaciones descritas en el presente ros circuitos y lógica, incluyendo procesadores/núcleos s o núcleos de procesador de propósito general.
ito integrado de sistema en un chip 2700 ilustrativo que con una realización. El circuito integrado 2700 ilustrativo jemplo, unas CPU), al menos un procesador de gráficos enes 2715 y/o un procesador de vídeo 2720, cualquiera ismas o múltiples instalaciones de diseño diferentes. El riféricos que incluye un controlador de USB 2725, un 5 y un controlador de I2S/I2C 2740. Adicionalmente, el 2745 acoplado a uno o más de un controlador de interfaz isualización de interfaz de procesador de industria móvil subsistema de memoria flash 2760 que incluye memoria oria puede proporcionarse mediante un controlador de DRAM o SRAM. Algunos circuitos integrados incluyen
ador de gráficos 2810 ilustrativo de un circuito integrado ás núcleos de IP, de acuerdo con una realización. El esador de gráficos 2710 de la Figura 27. El procesador o o más procesadores de fragmentos 2815A-2815N (por l procesador de gráficos 2810 puede ejecutar diferentes era que el procesador de vértices 2805 está optimizado de vértices, mientras que el uno o más procesador o iones de sombreado de fragmentos (por ejemplo, de píxeles. El procesador de vértices 2805 realiza la etapa os 3D y genera datos de primitivas y de vértices. El an los datos de primitiva y de vértice generados por el rmedia de tramas que se visualiza en un dispositivo de es de fragmentos 2815A-2815N están optimizados para porciona en la API de OpenGL, que pueden usarse para ado de píxeles como se proporciona en la API de Direct
o más unidades de gestión de memoria (MMU) 2820A-onexiones de circuito 2830A-2830B. La una o más MMU física para el procesador de gráficos 2810, incluyendo adores de fragmentos 2815A-2815N, que pueden hacer ados en memoria, además de datos de vértice o de -2825B. En una realización, la una o más MMU 2820A-l sistema, incluyendo una o más MMU asociadas con el e imágenes 2715 y/o el procesador de vídeo 2720 de la participar en un sistema de memoria virtual compartida -2830B posibilitan que el procesador de gráficos 2810 nte un bus interno del SoC o mediante una conexiónLa Figura 29 es un diagrama de bloques que ilustra un p
integrado de sistema en chip que puede fabricarse usan
El procesador de gráficos 2910 puede ser una variante d
de gráficos 2910 incluye la una o más MMU 2820A
interconexiones de circuito 2830A-2830B del circuito int
El procesador de gráficos 2910 incluye uno o más núcleo
2915B, 2915C, 2915D, 2915E, 2915F, a 2915N-1 y 2915
unificada en la que un solo núcleo o tipo o núcleo pue
incluyendo el código de programa de sombreador par
fragmentos y/o sombreadores de cálculo. El número ex
realizaciones e implementaciones. Adicionalmente, el pr
núcleos 2905, que actúa como un despachador de hilos
sombreador 2915A-2915N y una unidad de teselado
representación basada en teselas, en la que las operaci
espacio de imágenes, por ejemplo, para aprovechar la co
el uso de cachés internas.
En diversas realizaciones, las operaciones analizadas
hardware (por ejemplo, circuitería lógica), software,
proporcionarse como un producto de programa informáti
por ordenador tangible (por ejemplo, no transitorio) q
software) usadas para programar un ordenador para reali
legible por máquina puede incluir un dispositivo de alma
Además, dichos medios legibles por ordenador puede
donde el programa puede transferirse desde un ordenad
(por ejemplo, un cliente) por medio de señales de dat
propagación a través de un enlace de comunicación (po sador de gráficos 2910 ilustrativo adicional de un circuito no o más núcleos de IP, de acuerdo con una realización. ocesador de gráficos 2710 de la Figura 27. El procesador 0B, caché o cachés 2825A-2825B e interconexión o do 2800 de la Figura 28.
cleos de sombreador 2915A-2915N (por ejemplo, 2915A, ue proporciona una arquitectura de núcleo de sombreado jecutar todo tipo de código de sombreado programable, plementar sombreadores de vértices, sombreadores de de núcleos de sombreador presentes puede variar entre sador de gráficos 2910 incluye un gestor de tareas entre a despachar hilos de ejecución a uno o más núcleos de 18 para acelerar operaciones de teselado para una de representación para una escena se subdividen en el ncia espacial local dentro de una escena o para optimizar
el presente documento pueden implementarse como ware o combinaciones de los mismos, que pueden por ejemplo, que incluye un medio legible por máquina o tiene almacenadas instrucciones (o procedimientos de un proceso analizado en el presente documento. El medio miento.
scargarse como un producto de programa informático, moto (por ejemplo, un servidor) a un ordenador solicitante roporcionadas en una onda portadora u otro medio de mplo, un bus, un módem o una conexión de red).
Claims (1)
1. Un aparato que comprende:
un motor de cálculo fusionado (630) que comprende un componente de SIMD de alta precisión (632) que opera a alta velocidad, y un componente de SIMD de baja precisión (634) que opera a baja velocidad; y
lógica, que incluye al menos parcialmente lógica de hardware, caracterizado por:
recibir (610) instrucciones en el motor de cálculo fusionado (630) con conjuntos de instrucciones de alta precisión y baja precisión;
seleccionar (615), mediante una interfaz de programación de aplicaciones, basándose en los requisitos de cálculo para una carga de trabajo o hilo particular, al menos uno del conjunto de instrucciones de alta precisión para el componente de SIMD de alta precisión o el conjunto de instrucciones de baja precisión para el componente de SIMD de baja precisión para ejecutar las instrucciones; y
sincronizar en alimentación o sincronizar en reloj (620) el al menos uno del componente de SIMD de alta precisión para el conjunto de instrucciones de baja precisión o el componente de SIMD de baja precisión para el conjunto de instrucciones de alta precisión para ejecutar las instrucciones,
en donde si los requisitos de cálculo indican que la carga de trabajo o hilo particular requiere el componente de SIMD de alta precisión (632), se selecciona el componente de SIMD de alta precisión (632) y se sincroniza por reloj o se sincroniza por alimentación el componente de SIMD de baja precisión (634), y si los requisitos de cálculo indican que la carga de trabajo o hilo particular requiere el componente de SIMD de baja precisión (634), a continuación, se selecciona el componente de SIMD de hardware de baja precisión (634) y se sincroniza por reloj o se sincroniza por alimentación el componente de SIMD de alta precisión (632).
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US15/495,020 US11010659B2 (en) | 2017-04-24 | 2017-04-24 | Dynamic precision for neural network compute operations |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2986903T3 true ES2986903T3 (es) | 2024-11-13 |
Family
ID=61691805
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES18162628T Active ES2986903T3 (es) | 2017-04-24 | 2018-03-19 | Precisión dinámica para operaciones de cálculo de redes neuronales |
Country Status (5)
| Country | Link |
|---|---|
| US (4) | US11010659B2 (es) |
| EP (2) | EP3396532B1 (es) |
| CN (1) | CN108734650A (es) |
| ES (1) | ES2986903T3 (es) |
| PL (1) | PL3396532T3 (es) |
Families Citing this family (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11010659B2 (en) * | 2017-04-24 | 2021-05-18 | Intel Corporation | Dynamic precision for neural network compute operations |
| US10467177B2 (en) * | 2017-12-08 | 2019-11-05 | Kandou Labs, S.A. | High speed memory interface |
| US11150899B2 (en) * | 2018-04-09 | 2021-10-19 | Advanced Micro Devices, Inc. | Selecting a precision level for executing a workload in an electronic device |
| US10656913B2 (en) * | 2018-06-05 | 2020-05-19 | International Business Machines Corporation | Enhanced low precision binary floating-point formatting |
| US12217158B2 (en) | 2019-09-03 | 2025-02-04 | International Business Machines Corporation | Neural network circuitry having floating point format with asymmetric range |
| US12175359B2 (en) | 2019-09-03 | 2024-12-24 | International Business Machines Corporation | Machine learning hardware having reduced precision parameter components for efficient parameter update |
| US11604647B2 (en) | 2019-09-03 | 2023-03-14 | International Business Machines Corporation | Mixed precision capable hardware for tuning a machine learning model |
| WO2021174370A1 (en) * | 2020-03-05 | 2021-09-10 | Huawei Technologies Co., Ltd. | Method and system for splitting and bit-width assignment of deep learning models for inference on distributed systems |
| US11403102B2 (en) | 2020-06-27 | 2022-08-02 | Intel Corporation | Technology to learn and offload common patterns of memory access and computation |
| US12443841B2 (en) | 2020-12-04 | 2025-10-14 | International Business Machines Corporation | Four-bit training for machine learning |
| US12547235B2 (en) * | 2022-09-14 | 2026-02-10 | Advanced Micro Devices, Inc. | Dynamic vector lane broadcasting |
| US12105575B2 (en) * | 2022-10-19 | 2024-10-01 | Hewlett Packard Enterprise Development Lp | Reconfiguration of a computing system using a circuit switch |
| EP4435591A1 (en) * | 2023-03-20 | 2024-09-25 | BF exaQC AG | Computing system for mixed precision processing of a computational task and method thereof |
Family Cites Families (28)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7117462B2 (en) * | 2000-09-29 | 2006-10-03 | Matsushita Electric Industrial Co., Ltd. | Circuit operation verifying method and apparatus |
| US7253495B2 (en) * | 2002-10-15 | 2007-08-07 | Marvell World Trade Ltd. | Integrated circuit package with air gap |
| US7418606B2 (en) * | 2003-09-18 | 2008-08-26 | Nvidia Corporation | High quality and high performance three-dimensional graphics architecture for portable handheld devices |
| US7873812B1 (en) | 2004-04-05 | 2011-01-18 | Tibet MIMAR | Method and system for efficient matrix multiplication in a SIMD processor architecture |
| US8411105B1 (en) | 2004-05-14 | 2013-04-02 | Nvidia Corporation | Method and system for computing pixel parameters |
| US8683184B1 (en) * | 2004-11-15 | 2014-03-25 | Nvidia Corporation | Multi context execution on a video processor |
| GB0519981D0 (en) * | 2005-09-30 | 2005-11-09 | Ignios Ltd | Scheduling in a multicore architecture |
| US8421794B2 (en) * | 2007-03-23 | 2013-04-16 | Qualcomm Incorporated | Processor with adaptive multi-shader |
| JP4977570B2 (ja) * | 2007-10-03 | 2012-07-18 | 株式会社日立製作所 | デジタルキャリブレーション型アナログデジタル変換器及びそれを用いた無線受信回路及び無線送受信回路 |
| US8209597B2 (en) * | 2009-03-23 | 2012-06-26 | Cognitive Electronics, Inc. | System and method for achieving improved accuracy from efficient computer architectures |
| US8812569B2 (en) | 2011-05-02 | 2014-08-19 | Saankhya Labs Private Limited | Digital filter implementation for exploiting statistical properties of signal and coefficients |
| US8966457B2 (en) * | 2011-11-15 | 2015-02-24 | Global Supercomputing Corporation | Method and system for converting a single-threaded software program into an application-specific supercomputer |
| KR102028663B1 (ko) * | 2012-07-24 | 2019-10-04 | 삼성전자주식회사 | 에러 검출 방법 및 장치 |
| US9104474B2 (en) * | 2012-12-28 | 2015-08-11 | Intel Corporation | Variable precision floating point multiply-add circuit |
| CN103092248B (zh) * | 2012-12-31 | 2014-09-17 | 华为技术有限公司 | 一种前馈控制方法及装置 |
| US9600346B2 (en) * | 2013-07-10 | 2017-03-21 | International Business Machines Corporation | Thread scheduling across heterogeneous processing elements with resource mapping |
| GB201314067D0 (en) * | 2013-08-06 | 2013-09-18 | Microsoft Corp | Allocating Processor Resources |
| US9794289B1 (en) * | 2014-04-11 | 2017-10-17 | Symantec Corporation | Applying security policies based on context of a workload |
| US10223333B2 (en) | 2014-08-29 | 2019-03-05 | Nvidia Corporation | Performing multi-convolution operations in a parallel processing system |
| JP6492507B2 (ja) * | 2014-10-06 | 2019-04-03 | 株式会社デンソー | 電子制御装置 |
| US20170061279A1 (en) * | 2015-01-14 | 2017-03-02 | Intel Corporation | Updating an artificial neural network using flexible fixed point representation |
| US9715268B2 (en) * | 2015-05-08 | 2017-07-25 | Microsoft Technology Licensing, Llc | Reducing power by vacating subsets of CPUs and memory |
| US10334334B2 (en) * | 2016-07-22 | 2019-06-25 | Intel Corporation | Storage sled and techniques for a data center |
| US10891538B2 (en) | 2016-08-11 | 2021-01-12 | Nvidia Corporation | Sparse convolutional neural network accelerator |
| US10997496B2 (en) | 2016-08-11 | 2021-05-04 | Nvidia Corporation | Sparse convolutional neural network accelerator |
| US11010659B2 (en) | 2017-04-24 | 2021-05-18 | Intel Corporation | Dynamic precision for neural network compute operations |
| US11093822B2 (en) * | 2017-04-28 | 2021-08-17 | Intel Corporation | Variable precision and mix type representation of multiple layers in a network |
| US11150899B2 (en) * | 2018-04-09 | 2021-10-19 | Advanced Micro Devices, Inc. | Selecting a precision level for executing a workload in an electronic device |
-
2017
- 2017-04-24 US US15/495,020 patent/US11010659B2/en active Active
-
2018
- 2018-03-19 ES ES18162628T patent/ES2986903T3/es active Active
- 2018-03-19 EP EP18162628.4A patent/EP3396532B1/en active Active
- 2018-03-19 EP EP24166744.3A patent/EP4369252B1/en active Active
- 2018-03-19 PL PL18162628.4T patent/PL3396532T3/pl unknown
- 2018-04-24 CN CN201810372891.1A patent/CN108734650A/zh active Pending
-
2021
- 2021-05-11 US US17/317,857 patent/US11748606B2/en active Active
-
2023
- 2023-07-12 US US18/351,124 patent/US12346798B2/en active Active
-
2025
- 2025-05-28 US US19/220,351 patent/US20250299032A1/en active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| US11748606B2 (en) | 2023-09-05 |
| EP4369252A2 (en) | 2024-05-15 |
| US11010659B2 (en) | 2021-05-18 |
| US20180307971A1 (en) | 2018-10-25 |
| EP4369252A3 (en) | 2024-07-24 |
| US20250299032A1 (en) | 2025-09-25 |
| US20240005136A1 (en) | 2024-01-04 |
| CN108734650A (zh) | 2018-11-02 |
| EP3396532B1 (en) | 2024-05-29 |
| EP4369252B1 (en) | 2025-07-09 |
| EP3396532A2 (en) | 2018-10-31 |
| US20210334637A1 (en) | 2021-10-28 |
| US12346798B2 (en) | 2025-07-01 |
| PL3396532T3 (pl) | 2024-10-28 |
| EP3396532A3 (en) | 2019-03-13 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2986903T3 (es) | Precisión dinámica para operaciones de cálculo de redes neuronales | |
| ES2993373T3 (en) | Disaggregation of soc architecture | |
| ES2996958T3 (en) | Graphics processors and graphics processing units having dot product accumulate instruction for hybrid floating point format | |
| ES3011182T3 (en) | Barriers and synchronization for machine learning at autonomous machines | |
| ES2960064T3 (es) | Unidad de cálculo de gráficos de fin general y método para ejecutar instrucciones de precisión mixta | |
| ES2985693T3 (es) | Coordinación y mayor utilización de procesadores de gráficos durante una inferencia | |
| ES2922233T3 (es) | Mecanismo de optimización de cálculo | |
| ES3034105T3 (en) | Neural network scheduling mechanism | |
| ES3033526T3 (en) | Compute optimizations for low precision machine learning operations | |
| ES2930550T3 (es) | Métodos y aparatos para canalización de ejecución de red de aprendizaje profundo en plataforma multiprocesador | |
| ES2993162T3 (en) | Efficient sharing and compression of data across processing systems | |
| ES3025359T3 (en) | Methods and systems using improved convolutional neural networks for image processing | |
| ES3027615T3 (en) | Memory prefetching in multiple gpu environment | |
| ES2963941T3 (es) | Ahorro de memoria de GPU compartiendo la memoria intermedia entre instancias similares en la misma GPU | |
| US20200012531A1 (en) | Execution unit-shared hybrid technique for accelerated computing on graphics processors | |
| US20180300846A1 (en) | Efficient merging of atomic operations at computing devices | |
| US12198220B2 (en) | Dynamic allocation of cache based on instantaneous bandwidth consumption at computing devices | |
| ES3056687T3 (en) | Real time context dependent deep learning | |
| US20180285120A1 (en) | Register spill/fill using shared local memory space | |
| ES2934735T3 (es) | Sistemas y métodos para generar números aleatorios gaussianos con aceleración por hardware |