# Instrucció de control de memòria cau

En informàtica, una instrucció de control de memòria cau és una pista incrustada en el flux d'instruccions d'un processador destinada a millorar el rendiment de la memòria cau de maquinari, utilitzant el coneixement previ del patró d'accés a la memòria subministrat pel programador o compilador. Poden reduir la contaminació de la memòria cau, reduir els requisits d'amplada de banda, evitar les latències, proporcionant un millor control sobre el conjunt de treball. La majoria de les instruccions de control de la memòria cau no afecten la semàntica d'un programa, encara que algunes sí.

## Exemples

Diverses d'aquestes instruccions, amb variants, són compatibles amb diverses arquitectures de conjunts d'instruccions de processador, com ara ARM, MIPS, PowerPC i x86.

### Prefetch

També anomenat bloc de memòria cau de dades tàctil, l'efecte és sol·licitar la càrrega de la línia de memòria cau associada a una adreça determinada. Això ho realitza la instrucció PREFETCH del conjunt d'instruccions x86. Algunes variants obvien els nivells més alts de la jerarquia de la memòria cau, la qual cosa és útil en un context de "streaming" per a dades que es recorren una vegada, en lloc de mantenir-se al conjunt de treball. La recuperació prèvia s'ha de produir amb prou antelació per mitigar la latència de l'accés a la memòria, per exemple en un bucle que travessa la memòria de manera lineal. La funció intrínseca del compilador GNU __builtin_prefetch es pot utilitzar per invocar-ho als llenguatges de programació C o C++.

### Obtenció prèvia d'instruccions

Una variant de recuperació prèvia per a la memòria cau d'instruccions.

## Alternatives

In recent times, cache control instructions have become less popular as increasingly advanced application processor designs from Intel and ARM devote more transistors to accelerating code written in traditional languages, e.g., performing automatic prefetch, with hardware to detect linear access patterns on the fly. However the techniques may remain valid for throughput-oriented processors, which have a different throughput vs latency tradeoff, and may prefer to devote more area to execution units.

### Prefetch Automàtic

En els darrers temps, les instruccions de control de memòria cau s'han tornat menys populars a mesura que els dissenys de processadors d'aplicacions cada cop més avançats d'Intel i ARM dediquen més transistors a accelerar el codi escrit en idiomes tradicionals, per exemple, realitzant una recuperació prèvia automàtica, amb maquinari per detectar patrons d'accés lineal sobre la marxa. No obstant això, les tècniques poden seguir sent vàlides per als processadors orientats al rendiment, que tenen una diferència entre el rendiment i la latència, i poden preferir dedicar més àrea a les unitats d'execució.

### Memòria Scratchpad

Alguns processadors admeten la memòria Scratchpad on es poden col·locar elements temporals i l'accés directe a la memòria (DMA) per transferir dades a i des de la memòria principal quan sigui necessari. Aquest enfocament és utilitzat pel processador Cell i alguns sistemes integrats. Aquests permeten un major control sobre el trànsit de memòria i la localitat (ja que el conjunt de treball es gestiona mitjançant transferències explícites) i elimina la necessitat d'una cara coherència de la memòria cau en una màquina de molts nuclis.

### Prefetch de vectors

Els processadors vectorials (per exemple, les unitats de processament de gràfics (GPU) modernes i Xeon Phi) utilitzen un paral·lelisme massiu per aconseguir un alt rendiment mentre treballen amb la latència de memòria (reduint la necessitat de captació prèvia). Moltes operacions de lectura s'emeten en paral·lel, per a invocacions posteriors d'un nucli de càlcul; els càlculs es poden suspendre a l'espera de dades futures, mentre que les unitats d'execució es dediquen a treballar les dades de les dades de peticions anteriors que ja han aparegut. Això és més fàcil d'aprofitar per als programadors conjuntament amb els models de programació adequats (nuclis informàtics), però més difícil d'aplicar a la programació de propòsit general.

## Referències

* ↑ «Power PC manual, see 1.10.3 Cache Control Instructions» (en anglès). Arxivat de l'original el 2016-10-13. [Consulta: 7 setembre 2023].
* ↑ «What is Cache-Control and How HTTP Cache Headers Work | CDN Guide | Imperva» (en anglès americà). https://www.imperva.com.+[Consulta: 7 setembre 2023].
* ↑ CDNetworks. «What Is Cache-Control? Everything You Need to Know» (en anglès americà), 21-01-2021. [Consulta: 7 setembre 2023].
* ↑ «Cache Control» (en anglès). https://www.cs.jhu.edu.+[Consulta: 7 setembre 2023].