Relationen mellan RAM och en processor är helt symbiotisk, medan RAM är meningslöst utan processorn kan den inte leva utan den oavsett var den är. Så de är en del av en helhet som matar varandra. Så det finns ett förhållande för prestanda och detta är den aritmetiska intensiteten. Vi förklarar vad det består av.
En processor, oavsett om det är en CPU eller ett GPU, gör inget annat än bearbeta data , vilket leder till behov av minne att mata den. Tyvärr, med tiden, har avståndet mellan minneshastigheten och CPU: n ökat, vilket har lett till implementering av tekniker som cacheminne. Vi kan inte glömma heller latens mellan processorn och minnet, vilket uppstår när gränssnittet mellan RAM och processorn inte kan ge eller ändra data med tillräckligt hög hastighet.
Vi kan dock inte mäta prestanda på ett generellt sätt, eftersom varje program eller snarare varje algoritm inom varje program har en annan beräknad belastning. Och det är här den aritmetiska intensitetsbegreppet kommer in. Men låt oss se vad det är och vad det består av, liksom andra element som har att göra med prestanda på en dator.
Vad är aritmetisk intensitet?
Aritmetisk densitet är ett mått på prestanda, som består av att mäta antalet flytande operationer som en processor utför på ett specifikt avsnitt av kod. För att få det divideras antalet floating-point-operationer med antalet byte som algoritmen använder för att utföra.
Hur användbart är det? Tja, det faktum att det tillåter inom vissa datorfält där mycket kraftfulla datorer behövs för att specifika uppgifter ska kunna ha det bästa möjliga hårdvarusystemet för att köra algoritmerna under de bästa förhållandena. Denna modell används främst inom vetenskaplig beräkning. Även om det också tjänar till att optimera prestanda i slutna system, till exempel spelkonsoler.
Om man använder sig av en mycket parallelliserad hårdvaruarkitektur krävs en hög aritmetisk intensitet, det vill säga ett lågt förhållande mellan bandbredd och beräkningskapacitet från det ögonblick då förhållandet mellan processorns beräkningskapacitet och den tillgängliga minnesbandbredden är hög. Eftersom det krävs i många applikationer och särskilt i grafik att en beräkning bearbetas flera gånger och därför krävs en stor beräkningseffekt i jämförelse.
Algoritmprestanda och relation med aritmetisk intensitet
När de skriver en algoritm tar programmerare hänsyn till prestandan för algoritmerna som de skriver i sina program, som mäts med Big O -notationen, som mäter medelvärdet för operationer med avseende på data. Big O -notationen mäts inte med något riktmärke, utan programmerarna beräknar dem för hand för att få en grov uppfattning om programmens arbetsbelastning
- Eller (1): the algoritm beror inte på storleken på data som ska bearbetas. En algoritm med en O (1) prestanda anses ha idealisk prestanda och är oslagbar.
- O (n): exekveringstid är direkt proportionell mot datastorlek, prestanda växer linjärt. Det kan också vara att a
- O (logg n): förekommer i algoritmer som vanligtvis hugger upp och löser ett problem delvis, till exempel datorderingsalgoritmer eller binära sökningar.
- O (n log n): det är en utveckling av den föregående, det handlar om att ytterligare dela upp de olika delarnas upplösning.
- O (n 2 ): det finns algoritmer som utför flera iterationer eftersom de måste fråga efter data flera gånger. Därför är de vanligtvis mycket repetitiva algoritmer och har därför en exponentiell beräkningsbelastning.
- O (n!): En algoritm som följer denna komplexitet är en helt bristfällig algoritm när det gäller prestanda och kräver omskrivning.
Inte alla algoritmer kan nå O (1) komplexitetsnivå, och några av dem fungerar mycket bättre på en typ av hårdvara än en annan. Det är därför domänspecifika acceleratorer eller processorer har utvecklats under de senaste åren som accelererar en typ av algoritm framför andra. Den allmänna idén är att dela upp algoritmerna i delar och behandla var och en av dem med den mest lämpliga bearbetningsenheten för sin aritmetiska intensitet.
Förhållandet mellan kommunikation och datorer
Det omvända fallet är förhållandet mellan kommunikation och beräkning, som mäts omvänt till aritmetisk intensitet och därför uppnås genom att dividera antalet byte med effekten i flytande punktoperationer. Så den används för att mäta den bandbredd som krävs för att köra den delen av koden. Problemet vid mätning kommer från att data inte alltid finns på samma plats och därför används RAM -bandbredden som referens.
Det måste beaktas att det inte är en helt tillförlitlig åtgärd, inte bara på grund av det faktum att cachesystemet tar data närmare processorn, utan också på grund av att det finns fenomenet latens där varje typ av minne används RAM har olika fördelar och nackdelar och ett resultat kan variera beroende på vilken typ av minne som används.
Idag, när man väljer minne i ett system, beaktas inte bara bandbredd utan även energiförbrukning, eftersom energikostnaden för att flytta data överstiger kostnaden för att bearbeta den. Så du väljer vissa typer av specifikt minne i vissa applikationer. Naturligtvis alltid inom de kostnader som är förknippade med att bygga ett system och de är inte desamma i en superdator som i en hemdator.