MICROCHIP TB3308 Manejo de problemas de coherencia de caché en tiempo de ejecución mediante el mantenimiento de caché
Introducción
El problema de la coherencia de la caché es inevitable en las aplicaciones que se ejecutan en microcontroladores (MCU) que tienen regiones de memoria almacenables en caché, que utilizan un acceso directo a la memoria (DMA) para las operaciones de transferencia de datos. Esto se debe a que la CPU realiza una operación de lectura/escritura desde la memoria caché mientras que el DMA transfiere datos entre el periférico y la memoria física.
Uno de los métodos para manejar la coherencia de la memoria caché requiere que la aplicación administre la memoria caché en tiempo de ejecución mediante las operaciones de mantenimiento de la memoria caché. MPLAB® Harmony v3 proporciona interfaces de programa de aplicación (API) de mantenimiento de caché para dispositivos PIC32MZ.
Este documento explica cómo una aplicación puede administrar problemas de coherencia de caché en tiempo de ejecución mediante el uso de API de administración de caché en MPLAB Harmony v3.
Nota: Los conceptos discutidos en este documento son comunes para todas las MCU PIC32MZ. El PIC32MZ EF se utiliza como examppara discutir los conceptos.
Descripción
La siguiente figura ilustra el problema de coherencia de caché que se observa cuando el DMA lee desde la SRAM en la MCU PIC32MZ EF.
Figura 1-1. Transferencia de memoria a periférico (lecturas DMA de SRAM)
La aplicación envía una solicitud para transferir el valor del búfer de datos TxBuffer 'ABCDEFGH' al periférico. La CPU llena el búfer de escritura DMA (TxBuffer) con los datos que se escribirán 'ABCDEFGH' en el periférico.
Sin embargo, debido a la política de caché establecida Write Back y Write Allocate, es posible que el búfer de escritura DMA (TxBuffer) no se escriba inmediatamente en la memoria principal y que los datos escritos permanezcan en la caché de datos. El búfer de escritura DMA (TxBuffer) en la memoria principal aún contiene el valor antiguo de '12345678'.
Cuando se activa el DMA para iniciar la transferencia de memoria a periférico, el DMA lee el búfer (TxBuffer) de la memoria principal como '12345678'. Como resultado, el DMA termina transfiriendo datos obsoletos al periférico.
La siguiente figura ilustra el problema de coherencia de caché que se observa cuando DMA escribe en SRAM.
Figura 1-2. Transferencia de periférico a memoria (DMA escribe en SRAM)
La aplicación envía una solicitud para recibir datos en el RxBuffer con un valor de '12345678' desde el periférico. El DMA llena el RxBuffer con un valor de '12345678' en la SRAM. Sin embargo, la memoria caché de datos no se actualiza y sigue conservando los datos anteriores. Cuando la CPU lee el RxBuffer, termina leyendo el valor anterior contenido en el búfer como 'ABCDEFGH'.
Manejo de coherencia de caché
Los dos métodos para manejar los problemas de coherencia de caché se ilustran en Transferencia de memoria a periférico (lecturas de DMA desde SRAM) y Transferencia de periférico a memoria (escrituras de DMA en SRAM). Estos métodos implican que la aplicación administre el caché en tiempo de ejecución mediante las operaciones de mantenimiento. Las operaciones incluyen la capacidad de realizar estas acciones:
Invalidar el caché: Marca las líneas de caché como no válidas. El acceso posterior obliga a que los datos se copien de la memoria principal a la memoria caché.
Limpiar el caché: Escribe las líneas de caché, que están marcadas como sucias, de regreso a la memoria principal. Para manejar la coherencia de caché que se analiza en Transferencia de memoria a periférico (lecturas de DMA desde SRAM), realice las siguientes acciones:
- La aplicación llena el búfer de datos de escritura (TxBuffer) con un valor 'ABCEDFGH'. Debido a la política de caché predeterminada (Write Back y Write Allocate), los datos escritos pueden estar en el caché.
Figura 1-3. Llenar búfer de escritura - Vacíe el búfer de datos de escritura (TxBuffer) con el valor 'ABCDEFGH' en la memoria principal llamando a la API de limpieza de caché.
Figura 1-4. Vaciar el búfer de escritura - La aplicación envía una solicitud para transferir datos del TxBuffer con un valor de 'ABCDEFGH' al periférico.
Figura 1-5. Escribir a periférico
Para manejar la coherencia de caché como se describe en Transferencia de periférico a memoria (escrituras de DMA en SRAM), siga estos pasos:
- La aplicación llama a la API de caché Invalidate para marcar las líneas de caché como no válidas.
Figura 1-6. Caché invalidado - La aplicación envía una solicitud para recibir datos en el RxBuffer con un valor de '12345678' desde el periférico.
- El DMA llena el RxBuffer con un valor de '12345678' en la SRAM.
- Debido a que la línea de caché correspondiente a RxBuffer está en un estado no válido, un acceso de lectura por parte de la CPU hace que RxBuffer se copie de la memoria principal a la caché de datos.
Figura 1-7. Manejar la coherencia de caché de transferencia de periférico a memoria
Implementación
Configuración
En un proyecto MPLAB Harmony v3 para el PIC32 MZ EF, las operaciones de mantenimiento de la memoria caché están habilitadas por MPLAB Harmony v3 Configurator (MHC) o MPLAB Code Configurator (MCC). En MHC o MCC, los ajustes de configuración se pueden encontrar en el gráfico del proyecto > Sistema > Configuración de MIPS > Caché.
Figura 2-1. Configuración de caché MHC
API de mantenimiento de caché de datos
MPLAB Harmony v3 proporciona las siguientes API de mantenimiento de caché de datos:
Tabla 2-1. API de mantenimiento de caché de datos
Nombre | Descripción |
DCACHE_INVALIDATE (vacío) | Invalida toda la caché de datos antes de habilitarla. |
DCACHE_CLEAN_BY_ADDR (dirección uint32_t, tamaño_t tamaño) | Reescribir e invalidar un rango de direcciones en el caché de datos. |
DCACHE_INVALIDATE_BY_ADDR (dirección uint32_t, tamaño_t tamaño) | Invalidar un rango de direcciones en el caché de datos. |
DCACHE_CLEAN_INVALIDATE_BY_ADDR (dirección uint32_t, tamaño_t tamaño) | Reescribir e invalidar un rango de direcciones en el caché de datos. |
Notas:
- Las API de mantenimiento de caché de instrucciones y datos específicos de MCU están disponibles como una biblioteca periférica (PLIB) plib_cache.c. Consulte la aplicación PLIB example en:
https://github.com/Microchip-MPLAB-Harmony/csp_apps_pic32mz_ef/tree/master/apps/cache/cache_maintenance. - Al usar las API de limpieza de caché e invalidación de caché por dirección:
- dirección: Debe estar alineado con el límite del tamaño de la línea de caché. Esto significa que la dirección del búfer DMA debe estar alineada con el límite de 16 bytes.
- tamaño: Debe ser un múltiplo del tamaño de la línea de caché. Esto significa que el tamaño del búfer DMA debe ser un múltiplo de 16 bytes.
Example
El siguiente código exampEl archivo demuestra el uso de las API de mantenimiento de caché de datos junto con las API de la biblioteca periférica MPLAB Harmony v3 DMA para leer y escribir datos a través de la interfaz UART.
Para obtener un código fuente detallado, consulte la aplicación PLIB example en:
https://github.com/Microchip-MPLAB-Harmony/csp_apps_pic32mz_ef/tree/master/apps/cache/cache_maintenance.
Nota: Los problemas de coherencia de caché discutidos anteriormente también se pueden manejar en el momento del enlace mediante el uso del atributo de variable coherente para el búfer de datos en contienda.
unsigned int __attribute__((coherente)) buffer[1024];
En este código, el compilador asigna (en el momento del enlace) el elemento 1024 en la región de memoria no almacenable en caché KSEG1.
Referencias
Los siguientes documentos se enumeran como recursos. Para obtener información adicional sobre la coherencia de caché y los productos de Microchip relacionados, consulte el Microchip Webo comuníquese con un representante de ventas local de Microchip.
- Uso de caché L1 en dispositivos PIC32MZ
- PIC32MZ EF Mantenimiento de caché PLIB Example
- El paquete MPLAB Harmony v3 Quick Docs proporciona páginas de ayuda independientes para que los usuarios comiencen a desarrollar aplicaciones en los microcontroladores SAM y PIC32 de 32 bits de Microchip. Descargue el repositorio quick_docs y comience con index.html file disponible en la carpeta de documentos.
La versión en línea está disponible en: microchip-mplab-harmony.github.io/quick_docs/. - Aterrizaje de MPLAB Harmony v3 web página: www.microchip.com/mplab/mplab-harmony
el microchip Websitio
Microchip ofrece soporte en línea a través de nuestro websitio en www.microchip.com/. Este webEl sitio se utiliza para hacer files e información fácilmente accesibles para los clientes. Algunos de los contenidos disponibles incluyen:
- Soporte de producto – Hojas de datos y erratas, notas de aplicación y sampprogramas, recursos de diseño, guías de usuario y documentos de soporte de hardware, últimas versiones de software y software archivado
- Soporte técnico general – Preguntas frecuentes (FAQ), solicitudes de soporte técnico, grupos de discusión en línea, lista de miembros del programa de socios de diseño de Microchip
- Negocios de Microchip – Selector de productos y guías de pedido, los últimos comunicados de prensa de Microchip, lista de seminarios y eventos, listas de oficinas de ventas, distribuidores y representantes de fábrica de Microchip
Servicio de Notificación de Cambio de Producto
El servicio de notificación de cambios de productos de Microchip ayuda a mantener a los clientes actualizados sobre los productos de Microchip. Los suscriptores recibirán una notificación por correo electrónico cada vez que haya cambios, actualizaciones, revisiones o erratas relacionadas con una familia de productos específica o una herramienta de desarrollo de interés.
Para registrarse, vaya a www.microchip.com/pcn y siga las instrucciones de registro.
Atención al cliente
Los usuarios de productos Microchip pueden recibir asistencia a través de varios canales:
- Distribuidor o Representante
- Oficina de ventas local
- Ingeniero de soluciones integradas (ESE)
- Apoyo técnico
Los clientes deben comunicarse con su distribuidor, representante o ESE para obtener asistencia. También hay oficinas de ventas locales disponibles para ayudar a los clientes. En este documento se incluye una lista de oficinas de ventas y ubicaciones.
El soporte técnico está disponible a través de websitio en: www.microchip.com/support
Característica de protección de código de dispositivos de microchip
Tenga en cuenta los siguientes detalles de la función de protección de código en los productos Microchip:
- Los productos de Microchip cumplen con las especificaciones contenidas en su hoja de datos de Microchip particular.
- Microchip cree que su familia de productos es segura cuando se utiliza de la manera prevista, dentro de las especificaciones de funcionamiento y en condiciones normales.
- Microchip valora y protege agresivamente sus derechos de propiedad intelectual. Los intentos de infringir las funciones de protección del código del producto Microchip están estrictamente prohibidos y pueden violar la Ley de derechos de autor del milenio digital.
- Ni Microchip ni ningún otro fabricante de semiconductores puede garantizar la seguridad de su código. La protección del código no significa que garanticemos que el producto sea “irrompible”. La protección del código evoluciona constantemente. Microchip se compromete a mejorar continuamente las características de protección del código de nuestros productos.
Aviso legal
Esta publicación y la información contenida en este documento solo se pueden usar con productos de Microchip, incluso para diseñar, probar e integrar productos de Microchip con su aplicación. El uso de esta información de cualquier otra manera viola estos términos. La información sobre las aplicaciones del dispositivo se proporciona solo para su conveniencia y puede ser reemplazada por actualizaciones. Es su responsabilidad asegurarse de que su aplicación cumpla con sus especificaciones. Comuníquese con su oficina local de ventas de Microchip para obtener soporte adicional u obtenga soporte adicional en www.microchip.com/en-us/support/design-help/client-support-services.
ESTA INFORMACIÓN ES PROPORCIONADA POR MICROCHIP "TAL CUAL". MICROCHIP NO HACE DECLARACIONES NI GARANTÍAS DE NINGÚN TIPO, YA SEA EXPRESA O IMPLÍCITA, ESCRITA U ORAL, LEGAL
O DE OTRO MODO, RELACIONADO CON LA INFORMACIÓN, INCLUYENDO PERO NO LIMITADO A CUALQUIER GARANTÍA IMPLÍCITA DE NO VIOLACIÓN, COMERCIABILIDAD E IDONEIDAD PARA UN FIN DETERMINADO, O GARANTÍAS RELACIONADAS CON SU CONDICIÓN, CALIDAD O RENDIMIENTO.
EN NINGÚN CASO SERÁ MICROCHIP RESPONSABLE POR CUALQUIER PÉRDIDA, DAÑO, COSTO O GASTO INDIRECTO, ESPECIAL, PUNITIVO, INCIDENTAL O CONSECUENTE DE NINGÚN TIPO RELACIONADO CON LA INFORMACIÓN O SU USO, SIN IMPORTAR LA CAUSA, AUNQUE SE HAYA ADVERTIDO A MICROCHIP DE LA POSIBILIDAD O LOS DAÑOS SEAN PREVISIBLES. EN LA MEDIDA EN QUE LO PERMITA LA LEY, LA RESPONSABILIDAD TOTAL DE MICROCHIP POR TODAS LAS RECLAMACIONES RELACIONADAS DE CUALQUIER MANERA CON LA INFORMACIÓN O SU USO NO EXCEDERÁ EL MONTO DE LAS TARIFAS, SI LAS HUBIERE, QUE HAYA PAGADO DIRECTAMENTE A MICROCHIP POR LA INFORMACIÓN.
El uso de dispositivos Microchip en aplicaciones de soporte vital y/o seguridad se realiza por cuenta y riesgo del comprador, y el comprador acepta defender, indemnizar y eximir de responsabilidad a Microchip de todos los daños, reclamaciones, demandas o gastos que resulten de dicho uso. No se transfiere ninguna licencia, implícita o de otro modo, en virtud de ningún derecho de propiedad intelectual de Microchip a menos que se indique lo contrario.
Marcas comerciales
El nombre y logotipo de Microchip, el logotipo de Microchip, Adaptec, AnyRate, AVR, logotipo de AVR, AVR Freaks, BesTime, BitCloud, CryptoMemory, CryptoRF, dsPIC, flexPWR, HELDO, IGLOO, JukeBlox, KeeLoq, Kleer, LANCheck, LinkMD, maXStylus, maXTouch, MediaLB, megaAVR, Microsemi, logotipo de Microsemi, MOST, logotipo de MOST, MPLAB, OptoLyzer, PIC, picoPower, PICSTART, logotipo de PIC32, PolarFire, Prochip Designer, QTouch, SAM-BA, SenGenuity, SpyNIC, SST, logotipo de SST, SuperFlash , Symmetricom, SyncServer, Tachyon, TimeSource, tinyAVR, UNI/O, Vectron y XMEGA son marcas comerciales registradas de Microchip Technology Incorporated en EE. UU. y otros países.
AgileSwitch, APT, ClockWorks, The Embedded Control Solutions Company, EtherSynch, Flashtec, Hyper Speed Control, HyperLight Load, IntelliMOS, Libero, motorBench, mTouch, Powermite 3, Precision Edge, ProASIC, ProASIC Plus, logotipo de ProASIC Plus, Quiet-Wire, SmartFusion, SyncWorld, Temux, TimeCesium, TimeHub, TimePictra, TimeProvider, TrueTime, WinPath y ZL son marcas comerciales registradas de Microchip Technology Incorporated en EE. UU.
Supresión de clave adyacente, AKS, analógico para la era digital, cualquier condensador, AnyIn, AnyOut, conmutación aumentada, BlueSky, BodyCom, CodeGuard, CryptoAuthentication, CryptoAutomotive, CryptoCompanion, CryptoController, dsPICDEM, dsPICDEM.net, coincidencia de promedio dinámico, DAM , ECAN, Espresso T1S, EtherGREEN, GridTime, IdealBridge, Programación en serie en circuito, ICSP, INICnet, Conexión en paralelo inteligente, Conectividad entre chips, JitterBlocker, Perilla en pantalla, maxCrypto, maxView, memBrain, Mindi, MiWi, MPASM, MPF, MPLAB Certified logo, MPLIB, MPLINK, MultiTRAK, NetDetach, NVM Express, NVMe, Omniscient Code Generation, PICDEM, PICDEM.net, PICkit, PICtail, PowerSmart, PureSilicon, QMatrix, REAL ICE , Ripple Blocker, RTAX, RTG4, SAM-ICE, E/S cuádruple en serie, simpleMAP, SimpliPHY, SmartBuffer, SmartHLS, SMART-IS, storClad, SQI, SuperSwitcher, SuperSwitcher II, Switchtec, SynchroPHY, Total Endurance, TSHARC, USBCheck, VariSense, VectorBlox, VeriPHY, ViewSpan, WiperLock, XpressConnect y ZENA son marcas comerciales de Microchip Technology Incorporated en el
Estados Unidos y otros países.
SQTP es una marca de servicio de Microchip Technology Incorporated en EE. UU.
El logotipo de Adaptec, Frequency on Demand, Silicon Storage Technology, Symmcom y Trusted Time son marcas comerciales registradas de Microchip Technology Inc. en otros países.
GestIC es una marca registrada de Microchip Technology Germany II GmbH & Co. KG, una subsidiaria de Microchip Technology Inc., en otros países.
Todas las demás marcas comerciales mencionadas en este documento son propiedad de sus respectivas empresas.
© 2021, Microchip Technology Incorporated y sus subsidiarias. Reservados todos los derechos.
ISBN: 978-1-5224-9447-8
Sistema de Gestión de Calidad
Para obtener información sobre los sistemas de gestión de calidad de Microchip, visite www.microchip.com/calidad.
Ventas y servicio a nivel mundial
AMÉRICAS
Oficina corporativa
2355 bulevar oeste de Chandler. Chandler, AZ 85224-6199 Teléfono: 480-792-7200
Fax: 480-792-7277 Apoyo técnico:
www.microchip.com/support
Web DIRECCIÓN:
www.microchip.com
Atlanta
Duluth, Georgia
Teléfono: 678-957-9614
Fax: 678-957-1455 Austin, Texas
Teléfono: 512-257-3370 Bostón
Westborough, Massachusetts
Teléfono: 774-760-0087
Fax: 774-760-0088 Chicago
Itasca, Illinois
Teléfono: 630-285-0071
Fax: 630-285-0075 Dallas
Addison, TX
Teléfono: 972-818-7423
Fax: 972-818-2924 Detroit
Novi, Michigan
Teléfono: 248-848-4000 Houston, Texas
Teléfono: 281-894-5983 Indianápolis
Noblesville, Indiana
Teléfono: 317-773-8323
Fax: 317-773-5453
Teléfono: 317-536-2380
Los Ángeles
Misión Viejo, California
Teléfono: 949-462-9523
Fax: 949-462-9608
Teléfono: 951-273-7800 Raleigh, Carolina del Norte
Teléfono: 919-844-7510
Nueva York, NY
Teléfono: 631-435-6000
San José, CA
Teléfono: 408-735-9110
Teléfono: 408-436-4270 Canadá – Toronto
Teléfono: 905-695-1980
Fax: 905-695-2078
ASIA/PACÍFICO
Australia – Sídney
Tel: 61-2-9868-6733 China – Pekín
Teléfono: 86-10-8569-7000 China – Chengdú
Tel: 86-28-8665-5511 China – Chongqing Tel: 86-23-8980-9588 China – Dongguan
Tel: 86-769-8702-9880 China – Guangzhou Tel: 86-20-8755-8029 China – Hangzhou
Tel: 86-571-8792-8115 China – RAE de Hong Kong Tel: 852-2943-5100 China – Nanjing
Teléfono: 86-25-8473-2460 China-Qingdao
Tel: 86-532-8502-7355 China – Shanghái
Teléfono: 86-21-3326-8000 China – Shenyang
Teléfono: 86-24-2334-2829 China-Shenzhen
Teléfono: 86-755-8864-2200 China – Suzhou
Teléfono: 86-186-6233-1526 China – Wuhan
Teléfono: 86-27-5980-5300 China – Xian
Teléfono: 86-29-8833-7252 China – Xiamen
Teléfono: 86-592-2388138 China – Zhuhai
Teléfono: 86-756-3210040
ASIA/PACÍFICO
India – Bangalore
Tel: 91-80-3090-4444 India – Nueva Delhi
Tel: 91-11-4160-8631 India – Pune
Tel: 91-20-4121-0141 Japón – Osaka
Tel: 81-6-6152-7160 Japón – Tokio
Tel: 81-3-6880- 3770 Corea – Daegu
Tel: 82-53-744-4301 Corea – Seúl
Tel: 82-2-554-7200 Malasia – Kuala Lumpur Tel: 60-3-7651-7906 Malasia – Penang
Tel: 60-4-227-8870 Filipinas – Manila Tel: 63-2-634-9065 Singapur
Tel: 65-6334-8870 Taiwán – Hsin Chu
Tel: 886-3-577-8366 Taiwán – Kaohsiung Tel: 886-7-213-7830 Taiwán – Taipei
Tel: 886-2-2508-8600 Tailandia – Bangkok Tel: 66-2-694-1351 Vietnam – Ho Chi Minh Tel: 84-28-5448-2100
EUROPA
Austria – Gales
Tel: 43-7242-2244-39 Fax: 43-7242-2244-393 Dinamarca – Copenhague Tel: 45-4485-5910
Fax: 45-4485-2829 Finlandia – Espoo
Tel: 358-9-4520-820 Francia – París
Tel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79 Alemania – Garching Tel: 49-8931-9700 Alemania – Haan
Tel: 49-2129-3766400 Alemania – Heilbronn Tel: 49-7131-72400 Alemania – Karlsruhe Tel: 49-721-625370 Alemania – Munich Tel: 49-89-627-144-0 Fax: 49-89-627-144 -44 Alemania – Rosenheim Tel: 49-8031-354-560 Israel – Ra'anana
Tel: 972-9-744-7705 Italia – Milán
Tel: 39-0331-742611 Fax: 39-0331-466781 Italia – Padua
Tel: 39-049-7625286 Países Bajos – Drunen Tel: 31-416-690399 Fax: 31-416-690340 Noruega – Trondheim Tel: 47-72884388 Polonia – Varsovia
Tel: 48-22-3325737 Rumanía – Bucarest Tel: 40-21-407-87-50 España – Madrid
Tel: 34-91-708-08-90 Fax: 34-91-708-08-91 Suecia – Gothenberg Tel: 46-31-704-60-40 Suecia – Estocolmo Tel: 46-8-5090-4654 Reino Unido – Wokingham
Tel: 44-118-921-5800 Fax: 44-118-921-5820
Documentos / Recursos
![]() |
MICROCHIP TB3308 Manejo de problemas de coherencia de caché en tiempo de ejecución mediante el mantenimiento de caché [pdf] Guía del usuario TB3308 Manejo de problemas de coherencia de caché en tiempo de ejecución mediante el mantenimiento de caché, TB3308, Manejo de problemas de coherencia de caché en tiempo de ejecución mediante el mantenimiento de caché, Tiempo de ejecución mediante mantenimiento de caché, Mantenimiento de caché |