|  Startsida |  Hårdvara |  Nätverk |  Programmering |  Programvara |  Felsökning |  System |   
Programmering
  • C /C + + -programmering
  • Computer Programspråk
  • Delphi Programmering
  • Java Programming
  • JavaScript programmering
  • PHP /MySQL Programmering
  • perl Programmering
  • python Programming
  • Ruby programmering
  • Visual Basics Programmering
  • * Dator Kunskap >> Programmering >> C /C + + -programmering >> Content

    Vad är direkt kartläggning och funktion?

    Direktmappning är en cacheminnesdesign där varje minnesadress mappas till en specifik cache-linje. Det betyder att det bara finns en möjlig cacheplats för varje minnesadress. Direktmappning är enkel att implementera och har låg hårdvaruoverhead, men det kan resultera i cachekonflikter om flera minnesadresser mappas till samma cache-linje.

    För att beräkna cache-linjeindexet för en given minnesadress delas minnesadressen med cache-radens storlek. Resten av denna division är cache-linjeindexet. Till exempel, om minnesadressen är 0x100 och cache-radstorleken är 16 byte, är cache-radindex 4.

    Direktmappningsfunktionen mappar en minnesadress till ett cache-linjeindex enligt följande formel:

    ```

    cacheLineIndex =memoryAddress mod cacheLineSize

    ```

    Där:

    * cacheLineIndex är cache-linjeindexet

    * minnesadress är minnesadressen

    * cacheLineSize är cacheminnets storlek

    Här är ett exempel på hur direkt kartläggning fungerar. Tänk på en cache med en cache-radstorlek på 16 byte. Följande tabell visar minnesadresserna som mappas till varje cachelinjeindex:

    | Cachelinjeindex | Minnesadresser |

    |---|---|

    | 0 | 0x000, 0x010, 0x020, ..., 0x0F0 |

    | 1 | 0x100, 0x110, 0x120, ..., 0x1F0 |

    | 2 | 0x200, 0x210, 0x220, ..., 0x2F0 |

    | 3 | 0x300, 0x310, 0x320, ..., 0x3F0 |

    | ... | ... |

    Låt oss nu säga att vi vill komma åt minnesadressen 0x123. För att beräkna cache-linjeindexet för denna adress delar vi 0x123 med 16. Resten av denna division är 3. Därför är cache-linjeindexet för minnesadressen 0x123 3.

    Enligt tabellen ovan mappas cache-linjeindex 3 till minnesadresserna 0x300, 0x310, 0x320, ..., 0x3F0. Därför mappas minnesadressen 0x123 till cacheraden som innehåller minnesadresserna 0x300, 0x310, 0x320, ..., 0x3F0.

    Tidigare:

    nästa:
    relaterade artiklar
    ·Hur man använder negativa tal i C
    ·Hur Code Matrix Subtraktion i C + +
    ·Hur man använder callback-funktion i C
    ·Hur man läser en CSV -fil i C
    ·Hur man deklarerar Statiska funktioner i C + +
    ·En handledning om Microsoft Visual Studio C + +
    ·Hur man skriver om Uttalanden i C + +
    ·Hur Tally procent i C + +
    ·Vad definieras minne formellt som?
    ·Vad är Bakco-funktioner?
    Utvalda artiklarna
    ·Hur kan du skapa en roll i MySQL för en grupp människ…
    ·Hur man skapar PDF med Javascript
    ·Dynamiskt RAM kallas dynamiskt eftersom?
    ·Vad är ett datorgenererat program?
    ·Hur man skriver data Uttalanden
    ·En SQLite Java Tutorial
    ·Hur man tar bort inledande blanksteg i Perl
    ·Hur får man det index från en kolumn namn i en Java J…
    ·Hur Draw sekvensdiagram
    ·Vad är Data Persistens
    Copyright © Dator Kunskap https://www.dator.xyz