1 van 1

Computer rekenmethode

Geplaatst: do 05 jan 2012, 13:45
door Onwetend
Goedemiddag,

ik heb een vrij simpele vraag. Hoe rekent een computer? oftewel hoe voert een computer zijn berekeningen uit.

bijvoorbeeld bij een som met betrekking tot producten.

als je 3 x 4 invoert in de computer, doet de computer dan 4 + 4 + 4 = 1+1+1+1 + 1+1+1+1 + 1+1+1+1? of gebruikt een computer een andere logica?

maw: is een computer langer bezig met de som 100/10 dan de som 10/1?

Re: Computer rekenmethode

Geplaatst: do 05 jan 2012, 13:50
door In physics I trust
Kan je hier al iets mee?

Re: Computer rekenmethode

Geplaatst: do 05 jan 2012, 14:04
door Onwetend
Iets, maar nog niet voldoende.

ten eerste vraag ik me af hoe een computer de invoer van de gebruiker dan omzet naar een binair-getal. hoe weet een computer dat 64=binair1000000? is dit van te voren al ingesteld? dat lijkt mij toch niet, omdat er dan een bovengrens zou moeten zitten aan de rekencapaciteit van de computer.

ten tweede vraag ik me af: hoe telt de computer de 1-en en 0-en bij elkaar op? doet hij dit door de stroompjes te tellen?

eigenlijk is het antwoord dat ik zoek ook niet helemaal het juiste antwoord op de vraag die ik stelde. ik ben voornamelijk geinterreseerd in het antwoord op de 2e vraag, namelijk:

is voor een computer 10*6 sneller uitgerekend dan 10*60?

Re: Computer rekenmethode

Geplaatst: do 05 jan 2012, 14:09
door 317070
Onwetend schreef:ik heb een vrij simpele vraag. Hoe rekent een computer? oftewel hoe voert een computer zijn berekeningen uit.

bijvoorbeeld bij een som met betrekking tot producten.

als je 3 x 4 invoert in de computer, doet de computer dan 4 + 4 + 4 = 1+1+1+1 + 1+1+1+1 + 1+1+1+1? of gebruikt een computer een andere logica?

maw: is een computer langer bezig met de som 100/10 dan de som 10/1?
Over het algemeen kunnen alle computers direct optellen, aftrekken, vermenigvuldigen en delen. Dus zonder het te splitsen in eenvoudigere berekeningen. Over het algemeen wordt bijvoorbeeld worteltrekken en machten wel gesplitst in eenvoudigere berekeningen en zijn er meerdere instructies nodig om ze uit te voeren.

Maar eigenlijk is hier geen lijn in te trekken. Zo zijn er computers die in 1 instructie matrixberekeningen kunnen uitvoeren en zijn er die dat niet kunnen. Hetzelfde met bijvoorbeeld de FFT en vele andere formules. Het hangt er allemaal van af of je een geluidskaart/grafische kaart/media accelerator/... in je computer steken hebt of niet.

Moest je geïnteresseerd zijn in de details, moet je hier eens kijken. Er bestaan veel verschillende instructiesets, waarvan SSE de belangrijkste is/was. Tegenwoordig worden soms om erg gespecialiseerde redenen sommige functies toch als 1 instructie in de processor gestoken. Bijvoorbeeld de MPSADBW instructie, die de berekening (|x0−y0|+|x1−y1|+|x2−y2|+|x3−y3|, |x0−y1|+|x1−y2|+|x2−y3|+|x3−y4|, …, |x0−y7|+|x1−y8|+|x2−y9|+|x3−y10|) in 1 keer kan maken. Op het eerste gezicht vrij nutteloos, ware het niet dat de instructie erg nuttig is om mpeg4 videos af te spelen...

Re: Computer rekenmethode

Geplaatst: do 05 jan 2012, 14:15
door 317070
Berichten kruisten elkaar.
ten eerste vraag ik me af hoe een computer de invoer van de gebruiker dan omzet naar een binair-getal. hoe weet een computer dat 64=binair1000000? is dit van te voren al ingesteld? dat lijkt mij toch niet, omdat er dan een bovengrens zou moeten zitten aan de rekencapaciteit van de computer.
Dat is van te voren ingesteld. Berekeningen met een 64bit processor zijn standaard in 64bit getallen. Als je berekeningen met grotere getallen wil maken, dan moet je die berekening opsplitsen in kleinere getallen in je software. Je hardware ligt al vast.
ten tweede vraag ik me af: hoe telt de computer de 1-en en 0-en bij elkaar op? doet hij dit door de stroompjes te tellen?
Dat is elektronica. Je computer vereenvoudigt alles tot het niveau van niet-poorten, en-poorten en of-poorten, daarmee kun je alle bewerkingen uitvoeren die je wilt uitvoeren. Maar dit is
is voor een computer 10*6 sneller uitgerekend dan 10*60?
Nee, beide duren exact even lang, voor een (geklokte) computer maakt dit niet uit. De processor werkt aan de snelheid van de klok, en dus duren ingewikkelde instructies even lang als eenvoudige.

Re: Computer rekenmethode

Geplaatst: do 05 jan 2012, 14:15
door In physics I trust
Wow, van dat laatste was ik niet op de hoogte. Dit is een erg interessante pagina; ik vraag me af op welk niveau de code die er wordt getoond, wordt uitgevoerd?

Re: Computer rekenmethode

Geplaatst: do 05 jan 2012, 14:33
door 317070
Wow, van dat laatste was ik niet op de hoogte. Dit is een erg interessante pagina; ik vraag me af op welk niveau de code die er wordt getoond, wordt uitgevoerd?
Opnieuw, daar is geen lijn in te trekken. Sommige instructies worden ook echt in 1 klokslag in pure hardware uitgevoerd, sommige processoren gebruiken microcode om een instructie uit te voeren. Dat is een erg lage programmeertaal (nog onder binaire machinecode!) en pokkemoeilijk om te programmeren (maar wel leuk als je het eindelijk werkend krijgt ;) )

Maar dat zijn dus de instructies die je in assembler zou schrijven en worden (vrijwel) rechtstreeks ook zo in hardware uitgevoerd.

Maar dat is allemaal erg geavanceerd. Ik denk dat de topicstarter er meer aan heeft als ik bij de oppervlakkige uitleg blijf? Want vrijwel alle uitleg die je gaat vinden en gemakkelijk kunt begrijpen gaat over hoe ze processoren in de jaren '70 maakten, nu zijn we 40 jaar verder en alles is zo hard geoptimaliseerd en verbeterd dat het erg moeilijk is om nog precies te begrijpen hoe de berekening gebeurt en hoe lang die nu exact duurt. Bijna mijn volledige opleiding de afgelopen 3 jaar gaat daar over en ik ken nog steeds alleen maar de 'basis'.

Re: Computer rekenmethode

Geplaatst: do 05 jan 2012, 20:46
door Xenion
Poging tot eenvoudigere uitleg:

De software waarmee je werkt doet normaal de vertaling tussen binair en decimaal zodat de gebruiker daar niet mee bezig moet zijn.

De binaire vorm kan doorgegeven worden met 1 elektrische draad per bit en daar staat dan een hoge spanning of een lage spanning op die de 1 of 0 aangeeft.

Die draden met de bits komen dan binnen in een (of meer) ALU, waar er dan gerekend kan worden. De klok in de CPU zorgt dat de waarden doorschuiven.

Maar dat is zowat het laagste niveau waar je op kan werken en zoals 317070 al aangeeft wordt dat de laatste jaren moeilijker en moeilijker om nog te snappen wat er daar gebeurt.