Achtung: Ich verwende hier die Größen K und M als 1024er-Basis, anstelle der 1000. (MiB habe ich mir noch nicht angewöhnt und bevor es inkonsistent wird ...)
Unterschiede:
Der Cache bei NVidias Kepler-Karten ist pro SMX (bis zu 32 pro Karte) 4-geteilt. Es gibt "3" L1-Caches: 64KB L1-Cache, der Unterteilt ist in den Shared Memory und den L1-Cache. Die Unterteilung kann vom Programmierer konfiguriert werden, aber nur in diesen Schritten: 48/16, 32/32, 16/48. Dazu kommt ein nochmal 48KB großer "Read-only"-Data-Cache, der programmierbar ist! Darin können also bewusst Daten abgelegt werden, die der Programmierer sich dort wünscht. Und dadrüber sitzt dann der L2-Cache, der zwischen den SMX-Units gilt und primär dafür gedacht ist, effizienter auf den VRAM zugreifen zu können und viele Daten auf einmal zu lesen.
Also effektiv 48KB programmierbarer L1-Cache, 64KB konfigurierbarer L1-Cache und 1,5MB GPU-Verwalteter L2-Cache.
AMD: Bei AMDs Tahiti sieht es anders aus. Jede CU (SMX-pentant, bis zu 32 Stück) hat einen eigenen 16KB großen L1-Instruction-Cache, zusätzlich dazu einen 32KB großen skalaren Daten-Cache, der über jeweils 4CUs reicht. Und noch einen 64KB großen Textur-/Daten-Cache pro CU. Dafür hat AMD's Tahiti nur einen 768KB großen L2-Cache, der von der GPU-Verwaltet wird.
Bei AMD sind die Caches nicht Programmierbar oder Konfigurierbar, das übernimmt alles die Hardware. Wir haben hier aber mehr Dynamik in der Hardware:
80KB CU-Cache, 32KB Cache über 4CUs und 768KB über alle CUs.
So viel zur Architektur. ABER: Wie wirkt sich das auf die Leistung aus?
Natürlich positiv, der (zwar schnelle, aber noch immer zu langsame) Video-RAM wird massiv entlastet, sowohl bei NVidia als auch bei ATI. Da beide mit ähnlichen Herstellungsverfahren bei ähnlichen Kosten ungefähr gleichwertige Karten produzieren, würde ich nun aber behaupten, keine der Cache-Architekturen ist besser oder schlechter. Zumal die Effizienz von Caches auch sehr stark vom Szenario abhängt. Programme mit vielen Sprüngen provozieren jede Menge Cache-misses, wodurch dieser fast überflüssig wird. Lineare Programme, oder Programme mit überschaubaren Schleifen hingegen profitieren extrem von Cache-Nutzung.
Ein direkter Vergleich ist also nicht ohne weiteres möglich, wegen der Gleichwertigkeit der Karten darf aber davon ausgegangen werden, dass beide Cache-Strategien sehr gut sind. Nvidia hat einen theoretischen Vorteil: Programmierbaren L1-Cache (teilweise, siehe oben). Wie stark das aber genutzt wird, weiß ich nicht. Ich vermute, das wird nur im GPU-Computing verwendet, in Grafik-Anwendungen wohl kaum.