Allt från Computex 2023

Hur funkar kommunikationen mellan CPU och RAM?

Permalänk
Medlem

Hur funkar kommunikationen mellan CPU och RAM?

Detta är en spinoff från en annan tråd.

Skrivet av Olle P:

... Samma reflektion som jag gjorde när jag uppgraderade min dator.
Core i5-6600K stöder officiellt max 2133MHz DDR4. Jag köpte glad i hågen minne på 2666MHz. Kunde direkt konstatera att de i "normalfrekvensen" 2400MHz inte orsakade några som helst problem för CPU, och med XMP (2666MHz) aktiverat ökade prestandan mätbart.
Slutsatsen måste vara att vad CPU officiellt "stöder" och vad den kan utnyttja i princip helt saknar korrelation...

Skrivet av Tumnus:

Stöd betyder bara att Intel kan garantera att man kan köra i den klockfrekvensen. Allt över kan lika gärna fungera som inte..

Jag är rätt säker på att det inte är så enkelt.

Enligt de schematiska skisserna ska CPU kommunicera direkt med RAM, utan att gå via moderkortets chipset.
Strikt tolkat skulle det innebära att (någon krets i) CPU skickar klocksignal och multipel till RAM. Om Intel bestämt att CPU (bara) stöder 1800MHz och 2133MHz så skulle det bara finnas dessa frekvenser att välja på i UEFI, oavsett vad RAM-tillverkaren definierat i sina kretsar.

1. Hur är bussen mellan CPU och RAM konstruerad?
2. Mer exakt var (vilken hårdvara) styrs RAM-frekvenserna? (Basfrekvens och multipel för RAM kan ändras oberoende av CPUs basklocka.)
3. Hur ser frekvensberoendet ut mellan CPU (basklocka), databuss och RAM?

Jag får intrycket att RAM körs närmast fristående från databussen (och därmed CPU). Kommunikation mellan RAM och bussen sker endast när data ska läsas/skrivas. Med RAM fristående från CPU finns ingen som helst koppling mellan hur snabbt RAM som används och CPUs funktion, även om prestandan förstås påverkas.

Permalänk
Medlem

Vill du lära dig rekommenderar jag Little Man Computer, LMC som verkligen demonstrerar hur kommunikationen mellan RAM och CPU fungerar.

Visa signatur

Gigabyte GA-Z77X-UP7 | i7 3770K 3.5 GHz | Crucial Ballistix Elite DDR3 1600 MHz 4x4 GB | Crucial M500 240GB SSD | Seagate Desktop 3TB 7200rpm 64MB | Corsair H80i | Gigabyte GTX 970 Windforce G1 Gaming 4GB SLI | BitFenix Ronin | Be-Quiet Dark Power Pro 10 750 W | Asus Xonar Essence STX
Inet Fraktfritt

Permalänk
Medlem

LMC visar ju tyvärr huvudsakligen assemblerprogrammering. Hårdvaran är mycket förenklad.
Jag har även fått prova att skriva mikrokod (den kod i CPU som definierar hur maskinkoden, som levereras i binär form, ska tolkas av hårdvaran) när jag gick på högskolan för ca 25 år sedan.

Från mitt minne av undervisningen, rätta mig om jag har fel:
* Dataöverföring via buss fungerar ungefär som att slussa båtar, men data utgörs här av vattennivån (spänningen) som kan vara "hög" eller "låg". Bussklockan avgör när slussportarna kan öppnas eller stängas och latensen avgör hur många cykler porten behöver vara öppen för att nivån ska hinna stabiliseras.
* När data ska skickas via bussen så "öppnas" den mot avsändaren, som talar om vilka ledare som ska ha "hög" respektive "låg" spänning, och mottagaren.
* När spänningen förväntas ha stabiliserats "stängs" förbindelsen i båda ändar och är redo att skicka nästa uppsättning data.

Mitt resonemang:
* Jag misstänker att i båda ändar av bussen mellan CPU och RAM sitter någon form av "godsexpedition" som agerar mellanhand för de data som ska till/från bussen. Mot bussen arbetar den med bussfrekvensen och åt andra hållet arbetar den med frekvensen hos CPU/RAM.
* Då spelar det ingen som helst roll för CPUs funktion vilken frekvens RAM använder, och CPU har inte "stöd" för någon specifik frekvens hos RAM.

Frågor:
1. Stämmer mitt resonemang?
2. Eftersom det inte finns någon nordbrygga på nyare moderkort och CPU ska kommunicera "direkt" med RAM, vilken hårdvara styr rent fysiskt frekvensen hos RAM?
3. Om svaret på fråga 2 är CPU så finns en logik i påståendet att CPU stöder vissa frekvenser för RAM, men bara om andra frekvenser (och multiplar) är "omöjliga" att ställa in via UEFI. Varför går det då alls att ställa in och använda andra frekvenser? Är det bara för att jag har en "olåst" processor?