# Datortermer
Author: johan

Det finns många olika termer som står i datorannonser, men vad betyder alla siffrorna? I den här tråden tänkte jag att vi kan hjälpas åt att beskriva termerna.

**Processorn**: Pentium, AMD, 64 bit, Pentium M, Celerion? Vad är det för skillnad på alla olika processorer och vilka är egentligen bäst? Kan en processor med lägre klockfrekvens (mhz) vara snabbare än en med högre klockfrekvens? Vad är hyperthreading och är det värt att kosta på dig dubbla processorer?

**Minne**: Vad är det för skillnad på hårddiskminne och RAM-minne? Påverkar hårddiskutrymmet datorns hastighet? Hur mycket ram-minne bör en dator ha och vad händer om man har för lite?

**Cache**: Vad är egentligen "cache" och hur påverkar det datorns prestanda?

**Grafikkort**: Vad gör ett grafikkort? Hur mycket minne ska det ha? Vilka märken är bäst?

**Kortplatser**: Vad är skillnaden mellan PCI, PCI Express och AGP? Vilket är bäst? Behöver jag fler kortplatser?

Fyll gärna på med egna termer!

## Comment 1
Author: charlie

Skulle kunna svara lite på olika saker om CPUer eftersom jag jobbar med dem dagligen. Kan börja med AMD64/EM64T:  

Idag så befinner så befinner sig x86 arkitekturen inför ett generationskifte. Intel som för några år sedan såg att 64bitars marknaden växte. Med 64 bitar så menas att processorn direkt kan hantera 64 bitar samt (kanske mycket viktigare) kan adressera 64 bitar.

Skillnaden mellan 32 bitar / 64 bitar är 4.294.967.296 (4GB) / 18.446.744.073.709.551.616 (18 EB (Exabytes)). Alltså vi spränger minnesbegränsningarna rätt så rejält. 

Intel satsade därför på en arkitektur som inte var beroende av massa 70-tals arv (x86 bygger på en mycket gammal arkitektur) ch utvecklade tillsammans med HP Itanium. En Itanium har möjligheten att addressera en full 64 bitars adress och har fantastiska möjligheter vad gäller register och felhantering.

AMD, som inte hade möjligheten att koncentrera hela sin R/D avdelning på att skapa en helt ny arkitektur tog den gamla x86

arkitekturen och la på några extra register och 64 bitars register. Dock så kan den inte adressera 64 bitar adresser men minnesrymden har expanderat avsevärt. Intel vart så förra året tvungen att acceptera AMDs (AMD64) lösning eftersom flera kunder var i behov av utökad minnesrymd. Dock så ville MS inte skapa desktop OS för Itanium eftersom deras utvecklarverktygsavdelning fann det svår att skapa verktyg för Itanium. Intel tvingades då att lägga till något som kallas EM64T (Extended Memory 64 Technology).

Intels processorer kan använda sig av 16GB minne alltså långt ifrån de 18 EB som en Itanium burk kan använda sig av. Men det räcker gott för de flesta desktopburkar.

En AMD64/EM64T burk har också begåvats med 8 nya 64bitars registrer. Man har alltså dubblat antal platser i processorn man kan använda utan att man måste gå till minnet (cachen) för att skriva/läsa (Mer om detta kanske i ett annat inlägg).

Nackdelar: 

Dessa 8 extra register kan öka prestandandan avsevärt. Men eftersom en processor måste spara undan innehållet i register när den ska göra något annat eller blir ombedd att utföra något så innebär det att man potentiellt måste spara undan mycket mer information i minnet ( dubbelt så många register som är dubbelt så stora).

En annan nackdel när man kör i 64 bitarsläge är att i princip så har man bara hälften så mycket minne som när man kör i 32 bitarsläge. Eftersom man spar undan 64 bitar istället för 32 bitar s å behövs 8 bytes istället för 4 bytes.

Så vad händer med Itanium? Så som det ser ut i dagsläget så kommer Itanium att accumelera mer och av servermarknaden. Dock så drar det på tok för mycket ström för att sitta i en vanlig desktop.

## Comment 2
Author: charlie

När jag ändå sitter här:

**Multicore:** 

Nu när moores lag inte direkt gäller för en CPU, de blir faktist inte snabbare bara för att man klockar upp dom. En vanlig Centrino 1.8 MHz är faktist snabbare än en Xeon 3.3 GHz!

Så behöver tillverkarna komma över den lilla vägbula som vi befinner oss i nu. Sun tog fram sina Nigara processorer som är 6 core / die. Alltså i princip 6 stycken processorer som sitter på en och samma krets. Detta är faktist effektivare än att ha 6 stycken processorer som sitter på ett och samma moderkort eftersom kommunikationen är mycket effektivare, man behöver inte kontakta en extern krets för att synkronisera utan logiken sitter i CPUn.

Intel har precis lanscerat sin Core Duo som är en dual core x86 processor, AMD har sina dual core processorer. Intel kommer dessutom med en Itanium 2 (Montecito) som enligt specarna kommer med 32!!!! cores. 

Alltså, MHz som begrepp är ute, det är mer som hur många varv/min en motor tål.

## Comment 3
Author: AktieTrader

Mycket intressant charlie om Itanium och AMD64/EM64T. 18 EB är MYCKET, jag skulle tro att det är ca 20 gånger mer än vad det finns i alla datorer idag ihop.

Jag läste om HP och Intels samarbete i mitten på 90-talet men visste inte att det var Itanuim som var prcessorn som togs fram. Jag sökte lite priser 6000-104000 (Itanium2) bara för processorn, ingen för hemmet precis :-) Man förstår att det är mest superdatorer som använder dessa processorer i mängder.

Det där med MHz håller jag med om, och det gäller inte bara på flerkärninga utan AMD's enkärninga är väldigt effektiva per MHz med. Min gamla dator med en AMX XP2000+ (motsvarar ca P4 2GHz) går i 1666 MHz. Min nya AMD Opteron 144 går i 1800MHz. Bara 134MHz högre frekvens men oerhört mycket snabbare.

## Comment 4
Author: charlie

Vi kan kolla lite på vad MHz är för något lite mer i detalj.

I processorn sitter en kristall som genererar en puls med den angivna  frekvensen alltså 3 GHz innebär 3 miljarder impulser i sekunden!

Denna impuls möjliggör att processorn kan exekvera en instruktionsenhet. En typisk x86 instruktion skulle kunna se ut:

add al, 20h

Problemet är att vissa instruktioner i x86 arkitekturen  inte direkt mappar emot den underliggande RISC arkitekturen utan bryts ner i flera små instruktioner, skulle man exekvera en instruktion som i realiteten blir 8 instruktioner i övergången CISC/RISC så blir det bara en 1/8 kvar av processorfrekvensen alltså 375 MHz. (Detta är lite grovt, det finns andra mekanismer som kan väga upp lite grann)

En annan avgörande faktor för snabbheten är dess L1 och L2 Cache:ar

Cachen används för att CPUn ska kunna accessa minnet utan att direkt behöva accessa det.

Då frågar man sig varför behöver man en cache?

Jo för att på alla moderkort (AMD har denna krets integrerad i CPUn) så sitter det en MMU (Memory Management Unit) som används av CPU:n men även av andra enheter så som diskenheterna etc. för att skriva/läsa minnet. För att processorn inte ska behöva synkronisera på en minnesadress hela tiden för att vara säker på att den inte updateras av någon annan så används en cache.

Så fort som CPU accessar en minnesadress så kommer en sk. **cache line** läsas in från minnet och kopieras till Cachen.

Denna cache line kan sedan fritt användas av CPUn att läsa och modifiera utan att man behöver ta lås i minnet för.

Om en processor har mycket cache så innebär det lite synkronisering av minnet och att man skriver/läser stora enheter av minnet samtidigt, för att gå runt minnesbushastigheten.

## Comment 5
Author: tillalex

Mycket intressant charlie!

Tycker nog vi skulle gått över till parallellprocessorer för länge sedan men det verkar trögt. Man skyller alltid på mjukvaran men jag svårt att tro det skulle vara bekymmersamt i det långa perspektivet.

Om man kan bygga Superdatorer med vanliga PC i kluster så måste det gå att skala ned och göra samma sak i en multichiplösning. Jag tycker Transmetas Crusoe var en bra början, den emulerade x86 mjukt i chipet. Tänk om man kunde emulera en "super x86" över flera processorer.

Fast nog gäller Moore's lag. Den har inget med hastighet att göra utan komplexiteten. Oftast tolkat som att antalet transistorer fördubblas per 18-24mån.

## Comment 6
Author: Erik

#5 - Det är lätt att underskatta svårigheterna, även om jag i sak håller med dig. Parallellisering har en oerhörd potential att förbättra prestandan, men för att fortfarande kunna erbjuda en enkel programmeringsmodell måste det finnas ett mycket robust system i botten som tar han om synkroniseringsproblem. Det är visserligen ingen direkt dagsfärsk vetenskap, men det finns nog MÅNGA buggar gömda i dagens system som kommer dyka upp mer eller mindre sporadiskt vid en övergång till parallella system.

## Comment 7
Author: tillalex

Buggar kommer vi alltid ha.

## Comment 8
Author: Erik

Jag menar förståss relativt sett fler buggar. ;)

## Comment 9
Author: Cartman

Tack Charlie för lyxig info! Mycket intressant, du förklarar dom enklare och svårare sakerna lättfattligt. Och pekar på specialgrejer som bara den som är verkligt insatt kan skriva om. Ser fram emot nästa skrivelse.

## Comment 10
Author: Kaj

En term till värd att beakta är på bildskärmarna. Om man köper LCD skärmar var uppmärksam på responstiden. Detta är framför allt viktigt om man spelar spel eller tittar på filmer med mycket rörelse. Responstiden bör ligga _under_ 10 ms (helst ner mot 6 ms). Om den är högre t ex 16 ms så kommer bilden att bli ryckig vid snabba bildrörelser.

## Comment 11
Author: charlie

#5-8

Utan att säga för mycket... så är sannolikheten att OS och VEE (Virtual Execution Engines som JVM och CLR) håller på att växa samman. Fördelen med detta är att det är möjligt att göra en runtime-analys, ifall man har ett race-condition eller möjligtvis deadlock.

Operativ System är stora dinosaurer som har enbart är inriktade i resurshantering och väldigt lite har koncentrerats på själva exekveringen.

Så om 3-8 år så kanske vi inte har Windows, Linux och OS X..  vad vet jag?

## Comment 12
Author: charlie

Hyperthreading:

Jag har diskuterat lite vad multicore tekniken är. I september så släpper Intel Menron dual core EM64T processorer som dessutom är Hypertrådade. Så vad exakt är hypertrådning.

Som jag tidigare beskrev så har en processor ett antal register som används för beräkningar och annat. Dessa är hypersnabba om man jämför med att accessa minnet. 

I moderna OS så har man ofta som minsta exekveringsenhet sk. trådar. Dessa trådar har ett helt eget state, alltså en egen uppsättning register. En hypertrådad processor har helt enkelt två registeruppsättningar, när man byter exekveringstråd så behöver man (förhoppnigsvis) inte spara undan alla register i minnet. Utan man kan (föhoppningsvis) återgå till samma tråds state utan att gå via en dyr spara/läsupp procedur.

Sättet  som skiljer sig från en äkta multicore processor är att det enbart finns en EE (Execution Engine) alltså den som behandlar instruktionerna.

Dock så finns det dubbla APICs (Advanced Programmable Interrupt Controller). Mer vad detta är någon annan gång...
