← Område 3 Uppslag · Minnet och de binära talen Räkna binärt

Dator- och nätverksteknik · område 3 · lektion 9 och 10

Minnet och de binära talen

RAM-minnet är den enda delen i datorn som glömmer allt när strömmen bryts. Den här sidan förklarar varför — och lär dig räkna i det talsystem minnet själv använder.

Missade du lektion 9 eller 10?

Då är det här sidan att läsa. Avsnitt 1 till 3 är lektion 9, avsnitt 4 och 5 är lektion 10. Noderna i avsnitt 6 kan du göra själv, i din egen takt.

1. Minnet som glömmer

Varje bit i RAM-minnet är en liten kondensator — en behållare för elektrisk laddning. Är den laddad läses den som en etta, är den tom som en nolla.

Problemet är att laddningen läcker ur sig. Inte på timmar, utan på millisekunder. Lämnad ensam skulle varje etta i minnet sjunka mot noll och bli en nolla.

Lösningen heter refresh: minnesstyrenheten sveper igenom minnet rad för rad och laddar om varje cell innan den hinner blekna. Riktig DRAM gör det ungefär var 64:e millisekund — tusentals gånger i sekunden, hela tiden datorn är på.

Det är därför RAM kallas flyktigt minne. Stängs strömmen av stannar omladdningen, laddningen läcker ut, och allt innehåll är borta. Inte raderat — bara utrunnet.

Prova själv

Gå till ComputerExplorer → ram → dram-refresh. Stäng av refresh och vänta. Cellerna bleknar en efter en och räknaren Förlorade bitar tickar uppåt. Slå på den igen, skriv om data, och skruva sedan upp Läckagetakt tills minnet tappar data trots att refresh är på.

Flyktigt betyder inte trasigt. Det är konstruktionen, inte en defekt. Snabbheten är priset man betalar med glömskan — och på lektion 11 möter du två enheter som gjort motsatt val.

2. Adressen och de två bussarna

Minnet är inte en hög. Det är numrerade platser, och varje plats har ett eget nummer — sin adress.

Poängen är att processorn inte letar. Den pekar. Ska den läsa något lägger den adressen på adressbussen, och minnet svarar med innehållet på databussen.

BussBärRiktning
Adressbussenvilken plats det gällerfrån processorn till minnet
Databussenvad som står däråt båda hållen

En buss är samma sorts sak som PCIe och SATA från område 2 — en uppsättning ledningar som binder ihop två delar. Skillnaden är att de här ligger inuti, mellan processorn och minnet.

Att varje plats har ett eget nummer är hela anledningen till att RAM heter Random Access Memory: vilken adress som helst kan nås direkt, i valfri ordning, med ungefär samma hastighet.

Blanda inte ihop adressen med värdet

Adressen är var. Värdet är vad. I noden Adressjakten ställs båda frågorna om vartannat, och det är den vanligaste förväxlingen i hela området.

3. Faktorn åtta

En byte är åtta bitar. Alltid. Prefixen är desamma som överallt annars: kilo, mega, giga, tera.

Därför skiljer en gigabyte och en gigabit med faktorn åtta:

100 Mbit/s ÷ 8 = 12,5 MB/s
Det här kostar poäng i labb 3

Du mäter i MB/s. Tillverkaren anger ofta Mbit/s. Blandas de ihop blir ditt resultat fel med en faktor åtta — och det är det vanligaste felet i hela labben.

4. Räkna binärt

Binärt använder bara två tecken, 0 och 1. Varje position har ett värde, och positionerna dubblas åt vänster:

128   64   32   16    8    4    2    1

Binärt till decimalt: summera positionerna som är ettor

128   64   32   16    8    4    2    1
  1    0    1    0    0    1    1    0

128 +  0 + 32 +  0 +  0 +  4 +  2 +  0  =  166

Decimalt till binärt: börja från 128 och fråga "får det plats?"

Talet 200:

PositionFår det plats?Kvar
128Ja → 172
64Ja → 18
32Nej → 08
16Nej → 08
8Ja → 10
4Nej → 00
2Nej → 00
1Nej → 00

Svaret är 11001000. Kontrollen: 128 + 64 + 8 = 200.

Metoden att minnas

Börja alltid från det största talet och arbeta neråt. Den som börjar från 1 och räknar uppåt fastnar.

Åtta bitar rymmer talen 0 till 255. Det är 256 olika värden, inte 255 — nollan räknas med. Alla åtta bitar satta till 1 ger 255, det största ett byte rymmer.

5. Hex, kort

Noderna i avsnitt 6 visar adresser hexadecimalt. Hex är bara ett annat sätt att skriva samma tal: vi räknar 0 till 9 som vanligt, och när siffrorna tar slut fortsätter vi med bokstäver.

0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F

A är 10, B är 11, C är 12, D är 13, E är 14 och F är 15. Ett tecken räcker alltså till sexton värden i stället för tio. Står det 0x framför betyder det bara "det här är hex".

Hex ingår inte i det du prövas på — det är där för att noderna använder det. Fastnar du, håll dig till adresserna 0 till 9 tills mekaniken sitter.

6. Noderna att öva i

Du hittar dem genom att klicka dig fram i Computer Explorer, i den ordning som står här:

Vägen ditHeterVad du ska se
ComputerExplorer → ram → dram-refreshDRAM-uppdateringStäng av refresh och se minnet rinna ut
ComputerExplorer → ram → address-gameAdressjaktenSkilj frågan om platsen från frågan om innehållet
ComputerExplorer → ram → read-write-vizRAM: 16 BYTESlå på Långsamt läge. Adressen läggs ut först, data sedan
ComputerExplorer → binary → counterBinär räknareKryssa i Visa bitvärden — då står positionsraden under varje bit
ComputerExplorer → binary → arithmeticBinär additionCarryn som ripplar genom flera positioner
Vill du ha mer?

ComputerExplorer → ram → stack-viz visar hur ett program använder minnet, och ComputerExplorer → binary → race-game tränar omvandlingen på tid. Ingetdera ingår i området — de är där om du vill.

7. Ordlista

Ordträning

OrdBetyder
RAMRandom Access Memory. Arbetsminnet, där vilken adress som helst nås lika snabbt i valfri ordning
Flyktigt minneMinne som tappar sitt innehåll när strömmen bryts
KondensatorBehållare för elektrisk laddning. En per bit i RAM-minnet
RefreshOmladdningen av varje minnesrad, ungefär var 64:e millisekund, så att laddningen inte hinner läcka ut
AdressNumret på en enskild plats i minnet. Talar om var, inte vad
AdressbussLedningarna som bär adressen från processorn till minnet
DatabussLedningarna som bär själva innehållet, åt båda hållen
BitDen minsta enheten. Antingen 0 eller 1
ByteÅtta bitar. Rymmer talen 0 till 255
Mbit/sMegabit per sekund. Mäter hastighet. Dela med 8 för att få MB/s
HexadecimaltTalsystem med sexton tecken: 0–9 och sedan A–F
CarryMinnessiffran som bärs vidare till nästa position vid addition