Heim häufiges Problem Nachdem ich dem Unternehmen beigetreten war, verstand ich, was Cache ist.

Nachdem ich dem Unternehmen beigetreten war, verstand ich, was Cache ist.

Jul 31, 2023 pm 04:03 PM
cache


Vorwort

Zu diesem Zeitpunkt gab mir der Leiter eine Aufgabe zur Überwachung der Perf-Hardware. Während ich Perf verwendete, gab ich die Befehlsleiste ein Ich habe die folgenden Informationen gesehen:

Nachdem ich dem Unternehmen beigetreten war, verstand ich, was Cache ist.

Meine Aufgabe ist es, dafür zu sorgen, dass diese Cache-Ereignisse normal zählen, aber der Schlüssel ist, ich weiß überhaupt nicht, was diese missesloads bedeuten.

Ich weiß nur, dass es sich bei beiden um Caches handelt, aber diese Namen sind sehr ähnlich, was ist der Unterschied?

Aus diesem Grund hielt ich es für notwendig, etwas über Cache zu lernen, und mein Verständnis von Cache, Leistung usw. begann damit.

Das Folgende sind einige grundlegende konzeptionelle Kenntnisse, die ich beim Studium des Caches zusammengefasst habe. Ich glaube, dass sie für Leute hilfreich sein werden, die die zugrunde liegende Ebene oder den Cache nicht verstehen.

Grundsätzlich werde ich jeden in Form von Fragen und Antworten anleiten, da ich es einmal mit vielen Fragen durchgegangen bin.

1. Was ist Cache?

Zunächst müssen wir wissen, dass die CPU nicht direkt auf den Speicher zugreift, sondern zuerst den Cache durchsuchen muss. Warum?

Ursache: Die Daten in der CPU werden in Registern gespeichert. Die Zugriffsgeschwindigkeit auf Register ist sehr hoch, aber die Registerkapazität ist gering. Die Speicherkapazität ist groß, aber die Geschwindigkeit ist langsam. Um das Problem der Geschwindigkeit und Kapazität zwischen CPU und Speicher zu lösen, wird Cache eingeführt.

Der Cache befindet sich zwischen der CPU und dem Hauptspeicher. Wenn die CPU auf den Hauptspeicher zugreift, greift sie zunächst auf den Cache zu, um festzustellen, ob sich solche Daten im Cache befinden Gibt es an die CPU zurück; wenn sich keine Daten im Cache befinden, und greift dann auf den Hauptspeicher zu.

2. Mehrstufige Cache-Speicherstruktur

Im Allgemeinen gibt es nicht nur einen Cache, sondern mehrere, also mehrstufige Caches.

Grund: Der CPU-Zugriffscache ist auch sehr schnell. Wir können jedoch keine vollständige Kompatibilität zwischen Geschwindigkeit und Kapazität erreichen. Wenn die Geschwindigkeit der CPU, die auf den Cache zugreift, der Geschwindigkeit der CPU entspricht, die auf das Register zugreift, bedeutet dies, dass der Cache sehr schnell, die Kapazität jedoch sehr gering ist Eine kleine Cache-Kapazität reicht nicht aus, um unsere Anforderungen zu erfüllen, daher wurde ein mehrstufiger Cache eingeführt.

Mehrstufiger Cache unterteilt den Cache in mehrere Ebenen L1, L2, L3 usw.

  • In der Reihenfolge der Geschwindigkeit ist die Reihenfolge L1>L2>L3.

  • Je nach Speicherkapazität ist die Reihenfolge L3>L2>L1.

Nachdem ich dem Unternehmen beigetreten war, verstand ich, was Cache ist.

L1 ist der CPU am nächsten und L3 dem Hauptspeicher am nächsten.

Normalerweise ist L1 in den Befehlscache unterteilt (ICache)和data cache(DCache),并且L1 cache是cpu私有的,每个cpu都有一个L1 cache。

3、“命中”和“缺失”是什么意思?

命中:CPU要访问的数据在cache中有缓存,称为“命中”,即cache hit

缺失:CPU要访问的数据在cache中没有缓存,称为“缺失”,即cache miss

🎜🎜🎜🎜3. Was bedeuten „Treffer“ und „Fehlend“? 🎜🎜 🎜🎜🎜🎜Hit🎜: Die Daten, auf die die CPU zugreifen soll, werden im Cache zwischengespeichert, was als „Treffer“ bezeichnet wird, d. h. cache hit🎜🎜🎜missing🎜: Die Daten, auf die die CPU zugreifen soll, werden nicht im Cache zwischengespeichert heißt „fehlend“, also Cache-Zeile. cache line:高速缓存行,将cache平均分成相等的很多块,每一个块大小称之为cache line

cache line也是cache和主存之间数据传输的最小单位.

当CPU试图load一个字节数据的时候,如果cache缺失,那么cache控制器会从主存中一次性的load cache line大小的数据到cache中。例如,cache line大小是8字节。CPU即使读取一个byte,在cache缺失后,cache会从主存中load 8字节填充整个cache line。

CPU访问cache时的地址编码,通常由tag、index和offset三部分组成:

Nachdem ich dem Unternehmen beigetreten war, verstand ich, was Cache ist.
  • tag(标记域):用于判断cache line缓存的数据的地址是否和处理器寻址地址一致。

- index(索引域):用于索引和查找地址在高速缓存中的哪一行

  • offsetCache-Zeile ist auch die kleinste Einheit der Datenübertragung zwischen Cache und Hauptspeicher

    Wenn die CPU versucht, ein Datenbyte zu laden und der Cache fehlt, lädt der Cache-Controller auf einmal Daten in Cache-Zeilengröße aus dem Hauptspeicher in den Cache. Die Cache-Zeilengröße beträgt beispielsweise 8 Byte. Selbst wenn die CPU ein Byte liest, lädt der Cache nach dem Fehlen des Caches 8 Bytes aus dem Hauptspeicher, um die gesamte Cache-Zeile zu füllen.

Die Adresskodierung, wenn die CPU auf den Cache zugreift, besteht normalerweise aus drei Teilen: Tag, Index und Offset:

Nachdem ich dem Unternehmen beigetreten war, verstand ich, was Cache ist.

  • tag(tag field)🎜: wird zur Bestimmung des Cache-Zeilen-Cache verwendet Ob die Adresse der Daten mit der Adressierungsadresse des Prozessors übereinstimmt. 🎜🎜🎜🎜- index (Indexfeld) 🎜: Wird zum Indizieren und Finden der Zeile im Cache verwendet, in der sich die Adresse befindet 🎜
    • offset🎜 (offset) 🎜: Offset in der Cache-Zeile. Der Inhalt der Cache-Zeile kann durch Wort oder Byte adressiert werden 🎜🎜🎜🎜Die Beziehung zwischen Cache-Zeile und Tag, Index, Offset usw. ist wie in der Abbildung dargestellt: 🎜
      Nachdem ich dem Unternehmen beigetreten war, verstand ich, was Cache ist.

      5. Greift der Cache auf eine virtuelle Adresse oder eine physische Adresse zu?

      Wir wissen, dass die CPU nicht direkt auf den Speicher zugreift, sondern die CPU eine virtuelle Adresse ausgibt, die dann von der MMU in eine physische Adresse umgewandelt wird, und dann werden die Daten entsprechend der physischen Adresse aus dem Speicher abgerufen . Greift der Cache also auf eine virtuelle oder eine physische Adresse zu?

      A: Nicht unbedingt. Dabei kann es sich entweder um eine virtuelle Adresse, eine physische Adresse oder eine Kombination aus virtuellen und physischen Adressen handeln.

      Weil der Cache über mehrere Organisationsmethoden im Hardware-Design verfügt:

      • VIVTVirtueller CacheVIVT虚拟高速缓存:虚拟地址的index,虚拟地址的tag。
      • PIPT物理高速缓存:物理地址的index,物理地址的tag。
      • VIPT物理标记的虚拟高速缓存:虚拟地址的index,物理地址的tag。

      6、什么是歧义和别名问题?

      歧义(homonyms: der Index der virtuellen Adresse, das Tag der virtuellen Adresse.

    VIPT</ Code><strong style=" color: black>Virtueller Cache des physischen Tags 🎜: Index der virtuellen Adresse, Tag der physischen Adresse.
🎜🎜🎜🎜 6. Was sind Mehrdeutigkeits- und Aliasing-Probleme? 🎜🎜 🎜🎜🎜🎜Mehrdeutigkeit (Alias ​​​​(alias:多个虚拟地址映射到了相同的物理地址(多个虚拟地址被称为别名)。

例如上述VIVT方式就会存在别名问题,那VIVT、PIPT和VIPT那个方式更好呢?

PIPT其实是比较理想的,因为index和tag都使用了物理地址,软件层面不需要任何维护就能避免歧义和别名问题。

VIPT的tag使用了物理地址,所以不存在歧义问题,但index是虚拟地址,所以可能也存在别名问题

VIVT : Viele virtuelle Adressen werden derselben physischen Adresse zugeordnet (mehrere virtuelle Adressen werden Aliase genannt). Bei der oben genannten VIVT-Methode tritt beispielsweise ein Alias-Problem auf. Welche Methode ist besser, VIVT, PIPT oder VIPT?

.

Andambiguity and Alias-Probleme bestehen. Tatsächlich wird in der Hardware derzeit grundsätzlich PIPT oder VIPT verwendet. VIVT hat zu viele Probleme, es ist Geschichte geworden und niemand wird es nutzen. Darüber hinaus gibt es die PIVT-Methode nicht, da sie nur Mängel und keine Vorteile aufweist. Sie ist nicht nur langsam, sondern es bestehen auch Mehrdeutigkeits- und Aliasing-Probleme.

Die Organisation des Caches sowie Mehrdeutigkeits- und Alias-Probleme sind relativ große Inhaltsteile. Hier müssen Sie nur wissen, dass die Adresse, auf die der Cache zugreift, entweder eine virtuelle Adresse, eine physische Adresse oder eine Kombination aus einer virtuellen Adresse und einer physischen Adresse sein kann. Und unterschiedliche Organisationsmethoden werden Mehrdeutigkeits- und Alias-Probleme haben.

🎜🎜🎜7. Cache-Zuweisungsstrategie? 🎜🎜 🎜🎜🎜🎜 bezieht sich darauf, wie der Cache zugewiesen wird, wenn ein Cache-Fehler auftritt. 🎜🎜

Zuordnung lesen: Wenn cache fehlt, dieses In In allen Fällen ein CPU读数据时,发生cache缺失,这种情况下都会分配一个cache line缓存从主存读取的数据。默认情况下,cache都支持读分配。

写分配:当CPU写数据发生cache缺失时,才会考虑写分配策略。当我们不支持写分配的情况下,写指令只会更新主存数据,然后就结束了。当支持写分配的时候,我们首先从主存中加载数据到cache line中(相当于先做个读分配动作),然后会更新cache lineStandardmäßig ist Schreibzuweisung: tritt auf, wenn die CPU Daten schreibt: rgba(27, 31, 35, 0.05);Schriftfamilie: „Operator Mono“, Consolas, Monaco, Menlo, Monospace;Wortumbruch: break-all ;color: rgb(239, 112, 96);"> Die Schreibzuweisungsstrategie wird nur berücksichtigt, wenn der Cache fehlt. Wenn wir die Schreibzuweisung nicht unterstützen, aktualisiert der Schreibbefehl nur die Hauptspeicherdaten und endet dann. Wenn die Schreibzuweisung unterstützt wird, laden wir zunächst Daten aus dem Hauptspeicher in Daten in der Cache-Zeile.

8. Cache-Update-Strategie?

bezieht sich darauf, wie der Schreibvorgang die Daten aktualisieren soll, wenn der Cache erreicht wird.

🎜Passthrough schreiben🎜: Wenn die CPU den Speicherbefehl ausführt und der Cache trifft, aktualisieren wir die Daten im Cache und die Daten im Hauptspeicher. 🎜Die Daten im Cache und im Hauptspeicher sind immer konsistent🎜. 🎜

Schreiben Sie zurück : aktualisiert, wenn CPU执行store指令并在cache命中时,我们只更新cache中的数据。并且每个cache line中会有一个bit位记录数据是否被修改过,称之为dirty bit。我们会将dirty bit置位。主存中的数据只会在cache line被替换或者显示的clean in Betrieb ist. Daher können die Daten im Hauptspeicher unveränderte Daten sein, während die geänderten Daten im Cache liegen . Die Daten im Cache und im Hauptspeicher sind möglicherweise inkonsistent.

Endlich

Über Cache sowie TLB, MESI, Speicherkonsistenzmodell usw. ist es etwas, das Niederschlag und Zusammenfassung erfordert, um es wirklich zu beherrschen.

Aber viele Leute nutzen es möglicherweise nicht. Nur wenn es um Leistungsprobleme geht und Sie die Cache-Trefferquote verbessern müssen, werden Sie wissen, wie wichtig dieses Wissen ist.

In Bezug auf das in diesem Artikel besprochene Wissen habe ich eine Mindmap des Grundwissens zum Cache zusammengefasst:

Nachdem ich dem Unternehmen beigetreten war, verstand ich, was Cache ist.



Das obige ist der detaillierte Inhalt vonNachdem ich dem Unternehmen beigetreten war, verstand ich, was Cache ist.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Nachdem ich dem Unternehmen beigetreten war, verstand ich, was Cache ist. Nachdem ich dem Unternehmen beigetreten war, verstand ich, was Cache ist. Jul 31, 2023 pm 04:03 PM

Die Sache ist tatsächlich so. Zu diesem Zeitpunkt gab mir mein Leiter eine Perf-Hardware-Leistungsüberwachungsaufgabe. Während der Verwendung von Perf habe ich die folgenden Informationen eingegeben: Meine Aufgabe besteht darin, diese Cache-Ereignisse zu aktivieren normal gezählt werden. Aber der Punkt ist, ich habe keine Ahnung, was diese Fehlschläge und Belastungen bedeuten.

Warum erhöht die Verwendung des Caches die Computergeschwindigkeit? Warum erhöht die Verwendung des Caches die Computergeschwindigkeit? Dec 09, 2020 am 11:28 AM

Die Verwendung des Caches kann die Geschwindigkeit des Computers erhöhen, da der Cache die Wartezeit der CPU verkürzt. Cache ist ein kleiner, aber schneller Speicher, der zwischen der CPU und dem Hauptspeicher DRAM liegt. Die Funktion des Cache besteht darin, die Dateneingabe- und -ausgaberate der CPU zu erhöhen. Der Cache hat eine geringe Kapazität, aber eine hohe Geschwindigkeit, während die Speichergeschwindigkeit niedrig ist, aber eine große Kapazität aufweist. Durch die Optimierung des Planungsalgorithmus wird die Leistung des Systems verbessert stark verbessert.

Was ist Cache? Was ist Cache? Nov 25, 2022 am 11:48 AM

Cache wird als Cache-Speicher bezeichnet. Es handelt sich um einen Hochgeschwindigkeitsspeicher mit geringer Kapazität, der im Allgemeinen aus Hochgeschwindigkeits-SRAM besteht um die Lücke zwischen CPU und Speicher zu verringern oder zu beseitigen. Die Auswirkung des Geschwindigkeitsunterschieds zwischen ihnen auf die Systemleistung. Die Cache-Kapazität ist klein, aber schnell, die Speichergeschwindigkeit ist niedrig, aber die Kapazität ist groß. Durch die Optimierung des Planungsalgorithmus wird die Leistung des Systems erheblich verbessert.

So verwenden Sie den Cache im SpringBoot-Projekt So verwenden Sie den Cache im SpringBoot-Projekt May 16, 2023 pm 02:34 PM

Vorwort Caching kann die Systemleistung und -stabilität effektiv verbessern, indem es häufig aufgerufene Daten im Speicher speichert und so den Druck auf zugrunde liegende Datenquellen wie Datenbanken verringert. Ich denke, jeder hat es mehr oder weniger in seinen Projekten verwendet, und unser Projekt ist keine Ausnahme. Als ich jedoch kürzlich den Code des Unternehmens überprüfte, war der Text sehr dumm und niedrig. Der grobe Text lautet wie folgt: publicUsergetById(Stringid) {Useruser=cache. getUser();if(user!=null){returnuser;}//Benutzer aus der Datenbank abrufen=loadFromDB(id);cahce.put(id,user);returnu

Tutorial zum Nginx-Reverse-Proxy-Caching. Tutorial zum Nginx-Reverse-Proxy-Caching. Feb 18, 2024 pm 04:48 PM

Hier ist das Tutorial für das Nginx-Reverse-Proxy-Caching: Nginx installieren: sudoaptupdatesudoaptinstallnginx Reverse-Proxy konfigurieren: Nginx-Konfigurationsdatei öffnen: sudonano/etc/nginx/nginx.conf Fügen Sie die folgende Konfiguration im http-Block hinzu, um das Caching zu aktivieren: http{...proxy_cache_path /var/cache/nginxlevels=1:2keys_zone=my_cache:10mmax_size=10ginactive=60muse_temp_path=off;proxy_cache

Nginx-Cache-Konfigurationsplan und Lösung der damit verbundenen Speichernutzungsprobleme Nginx-Cache-Konfigurationsplan und Lösung der damit verbundenen Speichernutzungsprobleme May 23, 2023 pm 02:01 PM

5 Optionen für den Nginx-Caching-Cache 1. Einer der herkömmlichen Caches (404). Diese Methode besteht darin, den 404-Fehler von Nginx an das Backend weiterzuleiten und dann Proxy_store zu verwenden, um die vom Backend zurückgegebene Seite zu speichern. Konfiguration: Location/{root/home/html/;#Home-Verzeichnis läuft ab1d;#Ablaufzeit der Webseite error_page404=200/fetch$request_uri;#404 ​​​​Geleitet zum /fetch-Verzeichnis} Location/fetch/{#404 Geleitet internal ;#Gibt an, dass auf dieses Verzeichnis nicht direkt extern zugegriffen werden kann

Was sind die Eigenschaften von Cache, ROM und RAM? Was sind die Eigenschaften von Cache, ROM und RAM? Aug 26, 2022 pm 04:05 PM

Eigenschaften des Caches: Ein ein- oder zweistufiger Hochgeschwindigkeitsspeicher mit geringer Kapazität zwischen der CPU und dem Hauptspeicher. Die Informationen gehen natürlich verloren, wenn der Computer ausgeschaltet ist. Eigenschaften des ROM: Es kann nur Daten aus dem Speicher lesen, aber keine Informationen hineinschreiben. Die Daten bleiben auch nach dem Ausschalten des Computers bestehen. Eigenschaften des RAM: Er kann Daten aus dem Speicher lesen und Informationen in den Speicher schreiben; er wird zum Speichern von Befehlen, Programmen und Daten verwendet, die zum Ausführen des Programms erforderlich sind. Informationen gehen natürlich verloren, wenn der Computer ausgeschaltet ist.

So implementieren Sie den Second-Level-Cache von Caffeine+Redis basierend auf Spring Cache So implementieren Sie den Second-Level-Cache von Caffeine+Redis basierend auf Spring Cache Jun 01, 2023 am 10:13 AM

Die Details sind wie folgt: 1. Lassen Sie uns darüber sprechen, was ein hartcodierter Cache ist. Bevor ich SpringCache lernte, habe ich Caching oft hartcodiert verwendet. Nehmen wir ein praktisches Beispiel. Um die Abfrageeffizienz von Benutzerinformationen zu verbessern, verwenden wir das Caching für Benutzerinformationen keyStringcacheKey= "userId_