Det betyder att cpu-kärnorna i en processor använder samma minne men har egna snabba cachekopior av de delar av detta minne som de använder. Dessa lokala cachekopior får inte hamna ur fas med varandra när någon av kärnorna ändrar i sitt lokala cache – ändringarna måste spridas.
Tidigare har forskarna antagit att cachekoherens inte är skalbar, att resurserna som krävs för att koordinera cachekopiorna kommer explodera när antalet kärnor växer. Den teknik som Intel använder i sin arkitektur i7 tros exempelvis kunna skalas upp till kanske 16 kärnor.
Men det går bra att bygga processorer med hundratals cachekoherenta kärnor. Kanske tusentals. Det hävdar tre forskare i en artikel som snart kommer att publiceras i en vetenskaplig journal.
De hävdar bland annat att när du adderar cachekoherens till en multikärna med lokala cacheminnen, så adderar du högst 20 procent till nätverkstrafiken vid en så kallad cache-miss (data måse synkroniseras med det gemensamma minnet).
Forskarna har egentligen inte uppfunnit några nya metoder. De sätter samman några existerande strategier och analyserar i detalj hur cachetrafiken skulle se ut. Och det visar sig att den vedertagna värsta falls-analysen varit för pessimistisk.
I forskarnas arkitektur håller varje block i cacheminnet exakt reda på vilka av kärnorna som använder det. Ett annan konstruktionsdetalj är att alla block som finns i de lokala cacheminnena också finns i det gemensamma cacheminnet. Du kan läsa en preliminär version av forskarnas rapport här (länk).
Forskarna hävdar inte att deras arkitektur är den bästa tänkbara, utan bara att den är ett bevis på att tidigare pessimistiska antaganden inte stämmer.
De påpekar också att det finns andra hinder mot att skala upp multikärnor till hundratals, eller tusentals kärnor. Men cachekoherens är inte ett av dem. Vilket exempelvis betyder att ni som konstruerar operativsystem kan andas ut – era operativsystem är framåtkompatibla med morgondagens multikärnor.