Cache



  • Hi,

    angenommen ich habe zu viel Geld und möchte nicht ein schnödes SSD sondern z.B. 1 TB Cache. Geht das? Ist das dann noch performant?


  • Mod

    Kostenpunkt: Rund 3500 bis 4000 Euro. Siehe http://geizhals.at/?cat=hdssd&xf=252_1024000

    Wieso sollte das nicht mehr performant sein? Also: Die Top-Modelle in dieser Preisklasse sind meistens auch noch sehr schnell.

    MfG SideWinder


  • Mod

    Ich glaube er meint kein großes SSD, sondern 1TB von dem Speicher den man als L1 Cache in Prozessoren eingebaut hat. Antwort: Nein, das wäre nicht performant. CPU-Cache ist schnell, weil er direkt im CPU verbaut ist. Was bei externem Speicher langsam ist, sind die Datenleitungen zur CPU und die werden auch nicht wesentlich schneller, wenn auf der Gegenseite ein schneller Speicher ist.

    Man könnte: a) Bei Intel, AMD, IBM mal fragen, ob sie die einen Prozessor mit 1 TB Cachespeicher entwickeln und bauen. Mit ein paar zig Milliarden Euro dürfte das machbar sein. Für Programme deren innerster Loop nicht komplett in die heutzutage üblichen Caches passt, dürfte das eine Leistungssteigerung um Faktor 30~200 bringen. Für alle anderen (und das sind die meisten), bringt das erstaunlich wenig.
    b) Mal bei den Boardherstellern anfragen, ob schnellere Datenleitungen machbar sind. Da weiß ich allerdings nicht, ob man technisch dazu überhaupt in der Lage ist. Der Datenbus ist bekannterweise DER Flaschenhals überhaupt in modernen Computern. Wenn man dort für Geld verbesserte Versionen kaufen könnte, so würden diese sicherlich für den High-End Markt erhältlich sein.



  • SeppJ schrieb:

    Für Programme deren innerster Loop nicht komplett in die heutzutage üblichen Caches passt, dürfte das eine Leistungssteigerung um Faktor 30~200 bringen. Für alle anderen (und das sind die meisten), bringt das erstaunlich wenig.

    Das ist jetzt Programmcode. Es gibt ja auch Programme, die über große Datenbereiche iterieren, da sollte das doch was bringen.

    Noch was: Cache ist assoziativ, Hauptspeicher und Sekundärspeicher nicht, das könnte bei einem Aufblasen eines Caches Probleme bereiten.



  • Ich dachte, er meint einfach 1 TB RAM, der dann gleich nach dem OS-Start mit dem Inhalt der Festplatte gefüllt wird, angefangen mit den meistbenutzten Datenbereichen.


  • Mod

    Lady Gogol schrieb:

    SeppJ schrieb:

    Für Programme deren innerster Loop nicht komplett in die heutzutage üblichen Caches passt, dürfte das eine Leistungssteigerung um Faktor 30~200 bringen. Für alle anderen (und das sind die meisten), bringt das erstaunlich wenig.

    Das ist jetzt Programmcode. Es gibt ja auch Programme, die über große Datenbereiche iterieren, da sollte das doch was bringen.

    Sobald die Daten erstmal fließen (also ein großer zusammenhängender Bereich gelesen wird), geht das sogar einigermaßen flott. Nur die Latenz ist halt vergleichsweise hoch. Falls man nur triviale Operationen mit den Daten macht, ist es natürlich trotzdem zu langsam, aber wenn man zwischendurch ein bisschen was rechnet, reicht die Datenrate für viele Anwendungen aus, um die CPU 100% zu belasten. Aber ja: Der Datenbus ist wie schon angesprochen der wichtigste Flaschenhals.

    Ich dachte, er meint einfach 1 TB RAM, der dann gleich nach dem OS-Start mit dem Inhalt der Festplatte gefüllt wird, angefangen mit den meistbenutzten Datenbereichen.

    Also wie man es heutzutage schon macht? Das nennt man dann (Pre-)Caching. Nur das die häufigst genutzten Datenbereiche insgesamt nur ein paar 100 MB sind.



  • Ist das technisch überhaupt möglich? Wenn man das assoziativ (!) machen will, müsste man schön viele Transistoren verbraten. Bestimmt mehr als jetzt in so einer normalen CPU schon drinne sind.



  • sfjllsfjsfjl schrieb:

    Hi,

    angenommen ich habe zu viel Geld und möchte nicht ein schnödes SSD sondern z.B. 1 TB Cache. Geht das? Ist das dann noch performant?

    Es gibt SAN Kisten wo man mächtig viel RAM als Cache reinstecken kann. 1TB kann aber keine mir bekannte. Wenns zweistellige Gigabyte Beträge sind ist es wohl schon sehr viel. Unsere (Firma) SAN hat irgendwo bei 2GB Cache.
    Bei Lösungen für Data-Warehouse wird es vermutlich was in der Grössenordnung geben, nur das kann dann wirklich keiner mehr bezahlen.

    Davon abgesehen...

    Beim Schreiben bringt dir der grosse Cache sowieso nicht wirklich viel. Random Writes ohne "Flushes" dazwischen können zwar dadurch besser sortiert werden, und daher schneller weggeschrieben, aber das bringt real nicht wirklich sehr viel. (In synthetischen Benchmarks schon, real wie gesagt eher weniger. Vor allem wenn nur ein Client zugreift.)



  • Lady Gogol schrieb:

    Noch was: Cache ist assoziativ, Hauptspeicher und Sekundärspeicher nicht, das könnte bei einem Aufblasen eines Caches Probleme bereiten.

    Du bist gerade bei einer anderen Bedeutung von Cache gestrandet, die hier nicht paßt. Natürlich kann man Bandspeicher mit Trommelspeicher cachen, ohne daß das was assoziativ sein müßte.



  • Cache ist ja nur dazu noetig eine langsammerere ebene darunter zum teil abzufangen, wenn man es schnell haben will, sollte man nicht den cache vergroessern, sondern eben die ebenen darunter.

    falls es also um CPU cache geht, versucht man die latenz und bandbreit vom RAM zu verstecken. Ein grund dafuer ist die transferleistung, cache hat intern oft 128 oder 256 bitbreiten mit prozessortakt und latenzen von ca 3-12cycle, DDR-ram hat komplexe addressierungsmodi die zu grossen latenzen fuehren koennen mit transferraten meist bei nur 20GB/s peak.

    also, anderes ram.

    du koenntest alternatives RAM einbauen, z.B.
    -SRAM, das ist auch was caches sind. ist um einiges teurer, weil es mehr platz braucht (6 bzw 8 transistoren), die latenz steigt mit der speichergroesse, weil die signale halt ein wenig zeit brauchen um angelegt zu werden, bei 256kb sind es etwas 6cycles normalerweise (so ca 3GHz cpu takt als basis)
    -1T-SRAM, ist ein wenig guenstiger und kleiner als SRAM, hat dafuer etwas hoehere fixkosten was performance angeht
    -EDRAM, ist langsammer als sram, aber immer noch viel schneller als DRAM, dafuer ist der flaechenverbrauch sehr moderat und es wird in groesseren systemen verbaut. dafuer leidet die latenz ein wenig.

    du muestest dann entsprechend zum ram natuerlich einen controller nutzen.

    aber ram latenz zu verkleinern oder die bandbreite zu vergroessern bringt in vielen faellen kaum etwas, das zeigen die meisten benchmarks, du muestest schon ein sehr spezielles problem haben was dann aber vermutlich kosteneffizienter anders geloest werden koennte. z.B. mehrere hardware threads laufen lassen die solange keine cpu-einheiten beanspruchen bis der speicher angekommen ist den sie anforderten. Graphikkarten haben auf diese weise, trotz winzigen caches, so gut wie keine stalls, entsprechend geht man sogar andersrum ram und vergroessert ram latenz um dafuer mehr bandbreite zu erhalten, was zZ bis zu 300GB/s sind.


Anmelden zum Antworten