Cache - Speicher ???



  • Der Cache ist ja ein Speicher ähnlich wie der RAM, nur das er direct bei der CPU plaziert ist und desswegen sehr schnell, aber begrenzt ist.

    Wie kann ich auf diesen Speicher zugreifen und damit arbeiten???



  • Gar nicht. Das macht die CPU von alleine.
    Ich glaube auch nicht, dass du das besser hinkriegen würdest als die CPU selbst.

    Was meinst du warum die so teuer ist? Bestimmt nicht wegen der Materialkosten. 😉

    Du könntest aber mal bei AMD oder Intel vorbeischauen. Die haben dort bestimmt Anleitungen, wie man für einen bestimmten Prozessor Code schreibt, der den Cache optimal ausnutzt.

    p.s.:
    Ich glaube, es gibt einen (möglicherweise undokumentierten) Assembler-Befehl, mit dem du den Cache für ungültig erklären kannst.
    Der Download heißt zwar Interrupt Liste, da ist aber auch eine Datei dabei, in der dieser Befehl steht.
    Ich bin mir aber nicht sicher.



  • Cache heißt übrigens ncihts anderes als "Vorratsspeicher". Da werden halt Dinge bereitgehalten von der CPU die vieleicht demnächst nochmal benötigt werden 😃



  • Original erstellt von cd9000:
    Was meinst du warum die so teuer ist? Bestimmt nicht wegen der Materialkosten. 😉
    [/QB]

    Oh doch, weil Cache statisches RAM ist und der ist sehr viel teurer als
    dynamischer Speicher. Der Grund liegt in der Bauweise. Im statischen RAM halten Transistoren die Zustände, im dynamischen Kondensatoren, die die Ladung
    nur eine gewisse Zeit halten, und daher refreshed werden müssen.
    Und Kondensatoren sind einfacher auf die Waver zu bringen als Transistoren!!

    @etechniker: Coole Signatur!!

    [ Dieser Beitrag wurde am 25.05.2003 um 23:17 Uhr von ºgrimmsenº® editiert. ]



  • Original erstellt von cd9000:
    p.s.:
    Ich glaube, es gibt einen (möglicherweise undokumentierten) Assembler-Befehl, mit dem du den Cache für ungültig erklären kannst.
    Der Download heißt zwar Interrupt Liste, da ist aber auch eine Datei dabei, in der dieser Befehl steht.
    Ich bin mir aber nicht sicher.

    Falls du INVD/WBINVD meinst, die sind sehr gut Dokumentiert. Sollte man aber nur im betriebssystem machen bzw. kann auch nur das Betriebssystem machen, Userprogramme fliegen dabei.



  • Waver?



  • Original erstellt von <?>:
    Waver?

    Siliziumplatten aus welchen dann Prozessoren werden.

    -junix



  • Der Cache ist ja ein Speicher ähnlich wie der RAM

    Ja und nein. Der Witz am Cache ist, dass die CPU gewisse Befehle die sie schonmal dekodiert hat da ablegt, wenn sie "glaubt" sie nochmal zu benötigen. Das spart viele Takte Decodierzeit.Daher ist auch nicht viel mehr drin als das Ungültig erklären des Caches. Es ist also keine Option dein Programm irgendwiwe schneller laufen zu lassen.

    -junix



  • Man kann auf den modernen CPUs sein Programm im Cache "locken", d.h. es wird nicht mehr aus dem Cache entfernt und bleibt die ganze Laufzeit drin. Ist aber für normale Programmierung ungeeignet, ist nur was für Embedded Systems (z.B. Hochgeschwindigkeitsregelungen in Achsantrieben von Robotern, XY-Kurveninterpolation, etc). Also wo nur ein kleines Programm direkt auf der CPU oder einem Microcontroller läuft und kein Windows oder Linux mit dabei hängt.

    Die damit erzielbaren Geschwindigkeiten sind gigantisch, da dann eine moderne CPU nämlich wirklich die versprochenen 3.000.000 Operationen pro Sekunde ausführt.



  • ich denke Cache Effekte kann man eh nicht wirklich in einer MultiProzess Environment ausnutzen, selbst wenn man alle Funktionen genau so groß macht, dass sie in den Cache passt, Indirektionen vermeidet etc. hat man immer noch das Problem, dass auch andere Anwendungen Rechenzeit erhalten und schon leert die CPU den Cache etc

    aber was interessantes zum Thema Cache ist

    http://www.fefe.de/devel/cachetiming.txt

    [ Dieser Beitrag wurde am 26.05.2003 um 10:10 Uhr von kingruedi editiert. ]



  • Das spart viele Takte Decodierzeit

    Nicht alle Caches der CPU speichern dekodierte Befehle.

    Die damit erzielbaren Geschwindigkeiten sind gigantisch, da dann eine moderne CPU nämlich wirklich die versprochenen 3.000.000 Operationen pro Sekunde ausführt

    Würde man das Internet per IC in den Prozessor integrieren (rein hypothetisch), würde man angeblich (hat unser Prof gesagt - also eher falsch ;)) an einem Tag nahezu eine Hälfte des gesammten I-Nets laden können.

    MfG SideWinder

    Edit: omg, das 'W' in SideWinder war klein geschrieben ;).

    [ Dieser Beitrag wurde am 26.05.2003 um 20:50 Uhr von SideWinder editiert. ]



  • Original erstellt von SideWinder:
    **[quote]
    Das spart viele Takte Decodierzeit
    **

    **
    Nicht alle Caches der CPU speichern dekodierte Befehle.

    Die damit erzielbaren Geschwindigkeiten sind gigantisch, da dann eine moderne CPU nämlich wirklich die versprochenen 3.000.000 Operationen pro Sekunde ausführt

    eine Hälfte des gesammten I-Nets laden können.

    MfG Sidewinder**[/QUOTE]

    Wohin willst du das denn laden?? 😃



  • Original erstellt von <?>:
    Waver?

    -> Wafer

    Ja und nein. Der Witz am Cache ist, dass die CPU gewisse Befehle die sie schonmal dekodiert hat da ablegt,

    Nein, das ist die Queue, im Cache liegt nur eine schneller zugreifbare Kopie von Teilen des Hauptspeichers.


Anmelden zum Antworten