Come si scrive codice che utilizza al meglio la cache della CPU per migliorare le prestazioni?

Questo potrebbe sembrare una domanda soggettiva, ma quello che sto cercando sono istanze specifiche, che potreste aver riscontrato in relazione a questo.

  1. Come rendere il codice, cache efficace / cache-friendly (più colpi di cache, come pochi errori di cache ansible)? Da entrambi i punti di vista, cache di dati e cache di programma (cache di istruzioni), vale a dire quali cose nel proprio codice, correlate a strutture di dati e costrutti di codice, si dovrebbe prendere cura di renderlo efficace nella cache.

  2. Ci sono particolari strutture dati che si devono usare / evitare, o c’è un modo particolare di accedere ai membri di quella struttura, ecc … per rendere efficace la cache del codice.

  3. Ci sono dei costrutti di programma (se, per, switch, break, goto, …), code-flow (per dentro un if, se all’interno di un for, ecc …) si dovrebbe seguire / evitare in questa materia?

Non vedo l’ora di ascoltare le esperienze individuali relative alla creazione di codice efficiente in cache in generale. Può essere qualsiasi linguaggio di programmazione (C, C ++, Assembly, …), qualsiasi target hardware (ARM, Intel, PowerPC, …), qualsiasi sistema operativo (Windows, Linux, S ymbian, …), ecc. .

La varietà aiuterà a capire meglio profondamente.