Vad är associativt minne?

Det mesta minnet lagras och nås på samma sätt. Innehållet sparas och hämtas sedan med en minnesadress. Detta är generellt användbart och används nästan universellt. Tyvärr finns det ett litet problem med denna typ av förvaring. Det är utmärkt om du vet var den data du behöver lagras. Det fungerar inte bra om du vill söka efter en specifik post.

Låt oss säga att du vill hitta en fil; du kommer ihåg dess namn men inte vilken mapp du sparade. Din dator kan söka efter filnamnet, men om du inte har använt det nyligen är det ofta ganska långsamt att utföra sökningen. Och det är med hänsyn till att filsystem lagras som filnamn och adresser.

Associativt minne, även känt som Content Addressable Memory, eller CAM, är utformat för att söka efter dess innehåll. Tyvärr är det mycket dyrt att implementera associativt minne. Det betyder att den bara används i ett fåtal fall, vanligtvis i avancerad nätverkshårdvara. Det associativa namnminnet kommer från det faktum att det är en hårdvaruimplementering av en associativ mjukvaruuppsättning.

Cellstruktur

Associativt minne används endast där extremt hög prestanda behövs. Som sådan är den baserad på SRAM snarare än DRAM. Som utgångspunkt gör bara detta det dyrt. DRAM använder en transistor och en kondensator per bit, och SRAM använder totalt 6 transistorer. För att effektivt söka innehållet i en minnescell modifieras varje cell för att ha jämförelsekretsar. Detta lägger till totalt 4 transistorer till varje cell. Detta innebär att associativt minne är betydligt mindre tätt än SRAM, som redan är en dyr lagringsform.

Användande

Associativt minne är dyrt och optimerat uteslutande för att matcha innehållsbaserade sökningar. Som sådan används den egentligen bara i enheter som ständigt behöver utföra den här typen av sökning; även då är den vanligtvis begränsad till avancerade modeller. Det finns i allmänhet bara två huvudsakliga platser där associativt minne används, nätverksväxlar och routrar.

Nätverkshårdvara som switchar och routrar måste erbjuda högpresterande nivåer för att hålla flera gigabitar av nätverkstrafik flytande konstant. Inom ett nätverk används MAC-adresser för att dirigera trafik. En switch kommer att veta vilken av dess många nätverksportar data måste skickas till så att den kommer till enheten med rätt MAC-adress. För att säkerställa att varje paket skickas till rätt plats, söks dess destinations MAC-adress efter. I ett traditionellt minnesformat skulle det ta lite tid och lägga till fördröjningen för varje nätverkskommunikation. Med associativt minne kan den sökningen vara mycket snabbare.

Binär och ternär

Det mesta associativa minnet är baserat på binärt, men en del är baserat på ternärt. En ternär associativ minnescell liknar den binära som beskrivs ovan. Istället för att ha en SRAM-cell har den dock två. Båda har då tillsammans de fyra extra transistorer som behövs för att utföra jämförelsen. Detta gör naturligtvis det ternära associativa minnet ännu dyrare än sin binära kusin, så vad används det till?

Den ternära cellens andra bit indikerar "vård" eller "bryr sig inte." Detta lägger till ett tredje tillstånd till cellen och den övergripande sökfunktionen. Den kan nu lagra en 1, 0 eller X för bry dig inte. Detta är särskilt användbart när man hanterar nätverksroutningstabeller baserade på subnätmasker med variabel längd och med åtkomstkontrollistor. Du kan ha flera positiva svar på en enda sökadress i båda dessa. Inom båda vill du bara ta del av den mest exakta instruktionen.

Som sådan kan en sökning efter 192.168.20.19 matcha följande regler 192.168.20.16/28 och 192.168.0.0/16. Om du utförde en vanlig binär sökning, måste du utföra beräkningar för att verifiera att adressen faller inom de angivna adressintervallen. Med ternär logik kan du dock avgöra om din sökadress matchar 192.168.xx i en enda operation. Du kan också bestämma att /28-matchningen är mycket mer exakt än /16-matchningen eftersom det finns färre "bryr sig inte"-bitar. Detta låter dig tillämpa de relaterade reglerna för åtkomstkontroll med företräde.

Eftersom ternärt associativt minne är ännu dyrare än den binära formen är det ännu mindre vanligt. Det kan i allmänhet bara hittas i topproutrar och flerskiktsswitchar.

Slutsats

Associativt minne är en form av minne som fungerar väldigt annorlunda än standardminne. Istället för att begära data som lagras i en specifik adress, söker den i hela minnet på en gång efter matchningar med en sökterm. För att uppnå detta med högpresterande nivåer är minnesceller baserade på en modifierad form av SRAM med en eller två SRAM-celler kombinerade med fyra extra transistorer som används för att utföra bitjämförelselogiken.

Enstaka SRAM-celler används i binärt associativt minne, medan två SRAM-celler används i ternärt associativt minne. Den ternära varianten tillåter lagring av ett tredje värde, vanligtvis 1, 0 eller "bryr sig inte." Detta tillåter innehåll att indikera att det ska matcha även om söktermen inte är exakt.

Eftersom associativa minnesceller är baserade på det dyra SRAM, är de dyra, med ternära är den mest kostsamma. På grund av att detta och dess struktur är explicit optimerad för sökning efter innehåll, används inte associativt minne i de flesta enheter.

Endast enheter som drar nytta av det och där prestanda överväger initialkostnaden har den. Som sådan finns det vanligtvis uteslutande i nätverkshårdvara av företagsklass. Inom den inställningen kallas det ofta CAM och TCAM, för innehållsadresserbart minne respektive ternärt innehållsadresserbart minne.


Hur man klona en hårddisk

Hur man klona en hårddisk

I den moderna digitala tidsåldern, där data är en värdefull tillgång, kan kloning av en hårddisk på Windows vara en avgörande process för många. Denna omfattande guide

Hur fixar jag drivrutinen WUDFRd kunde inte laddas på Windows 10?

Hur fixar jag drivrutinen WUDFRd kunde inte laddas på Windows 10?

Står du inför felmeddelandet när du startar din dator som säger att drivrutinen WUDFRd inte kunde laddas på din dator?

Så här åtgärdar du NVIDIA GeForce Experience Error Code 0x0003

Så här åtgärdar du NVIDIA GeForce Experience Error Code 0x0003

Upplever du NVIDIA GeForce-felkod 0x0003 på ditt skrivbord? Om ja, läs bloggen för att hitta hur du åtgärdar det här felet snabbt och enkelt.

Vad är SMPS?

Vad är SMPS?

Lär dig vad som är SMPS och innebörden av olika effektivitetsklasser innan du väljer en SMPS för din dator.

Varför slås inte min Chromebook på

Varför slås inte min Chromebook på

Få svar på frågan Varför slås inte min Chromebook på? I den här användbara guiden för Chromebook-användare.

Hur man rapporterar nätfiskebedrägerier till Google

Hur man rapporterar nätfiskebedrägerier till Google

Lär dig hur du rapporterar en bedragare till Google för att hindra dem från att lura andra med den här guiden.

Roomba stannar, sticker och vänder sig om – fixa

Roomba stannar, sticker och vänder sig om – fixa

Åtgärda ett problem där din Roomba robotdammsugare stannar, fastnar och fortsätter att vända sig om.

Hur man ändrar grafikinställningar på Steam Deck

Hur man ändrar grafikinställningar på Steam Deck

Steam Deck erbjuder en robust och mångsidig spelupplevelse precis vid dina fingertoppar. Dock för att optimera ditt spelande och säkerställa bästa möjliga

Vad är isoleringsbaserad säkerhet?

Vad är isoleringsbaserad säkerhet?

Vi skulle fördjupa oss i ett ämne som blir allt viktigare i världen av cybersäkerhet: isoleringsbaserad säkerhet. Detta förhållningssätt till

Hur man använder Auto Clicker för Chromebook

Hur man använder Auto Clicker för Chromebook

Idag skulle jag fördjupa dig i ett verktyg som kan automatisera repetitiva klickuppgifter på din Chromebook: Auto Clicker. Detta verktyg kan spara tid och