L1-cache i processorer, varför är det uppdelat i data och instruktioner

Om du har observerat de olika diagrammen för olika arkitekturer, har du sett hur i alla dem cachen närmast processorn, vanligtvis kallad första nivå cache eller L1, är uppdelad i två olika typer av minne som kallas datacache och instruktion cache. Vad är orsaken till detta? Fortsätt läsa och du kommer att förstå varför det är en vanlig praxis i alla mönster

Den första cachen som implementerades var den första nivån cache, som sedan starten alltid har delats in i två brunnar, om du någonsin har undrat varför det är, fortsätt läsa och du kommer att förstå det utan problem.

L1 Cache i processorer

Vad är L1 eller toppnivå cache?

Jerarquia cacher

L1-cache eller förstainstanscache är närmast CPU och GPU kärnor, vilket gör den till den typ av cache som har den högsta bandbredden och lägsta latensen för hela cachehierarkin. Det är den första där minneshierarkisystemet letar efter data när man letar efter data i någon typ av processor.

Det måste komma ihåg att cachen inte fungerar som en del av RAM men kopierar data från RAM-minnet nära processorn just nu. En processor går genom minnet sekventiellt genom de olika minnesadresserna, så för att öka prestandan när du samlar in data används ett cacheminne.

L1-cache är alltid separat

Cache primer nivel spllit

L1-cachen i alla processorer är indelad i två olika brunnar, en datacache och en instruktionscache. Vad betyder det här? Det är enkelt, först måste vi förstå att alla processorer och grafikprocessorer använder en Von Neumann architrave där instruktionerna som är vad processorn måste göra, och data som är vad instruktionen måste manipulera finns i samma minne. .

Detta betyder att instruktionerna har en form i vilken x bitar av koden som bildar en instruktion, de första bitarna motsvarar opkoden som indikerar den åtgärd som ska göras av processorn, bitar som kommer nästa motsvarar hur man gör det instruktionen och den senare hänvisar till uppgifterna. Antingen där data är eller är i sig, även om det finns instruktioner som saknar databitarna och andra saknar lägesbitarna.

Data går från RAM till de olika nivåerna av cache, där data och instruktioner hålls tillsammans tills L2-cachen, från vilken det finns en mekanism som kopierar den första delen av instruktionen, opkoden och läget, i cachen på instruktioner och den andra delen i Memory Access Register, där bitarna som pekar på minnesadressen placeras. Idag är den här sista delen lite mer komplex, men av didaktiska skäl kommer vi att låta det vara.

Vad är orsaken till cacheseparationen?

Placa Rayos X

Anledningen till detta är att internt vad som är informationen om instruktionens opkod behandlas annorlunda än resten. Opkoden hanteras av processorns instruktionsavkodare. Faktum är att i alla processorer hanteras den första delen av instruktionen först och anledningen till detta är mycket enkel. Det finns instruktioner som inte pekar på en minnesadress utan snarare inkluderar data för att fungera och därför är det inte nödvändigt att data kopieras till minnesåtkomstregistret utan snarare att kopieras till ett specialregister.

När du behöver söka efter data i RAM i ett system med förstainstanscache, när processorn har verifierat att opkoden motsvarar en instruktion som pekar på en data i en del av minnet, kopieras den adressen till MAR kommer RAM att returnera data i MDR-registret, Memory Data Register, och motsvarande mekanismer kommer att kopiera data i motsvarande register, normalt ackumulatorregistret, vilket är det som används för aritmetiska operationer.

Hela processen med att avkoda instruktionerna och söka efter data sker parallellt med flera åtkomstar till L1-cachen som, om de görs under samma minnesbrunn, skulle sluta skapa ett enormt strid när de kom åt. Med andra ord var L1-cachen nyckeln till att öka processorns prestanda, med 80486 som den första PC-processorn som implementerade den. I GPU: er började cache-nivåer på första nivån implementeras med ankomsten av skuggningsenheter i dem.