![]() |
Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Architettura degli elaboratori e delle reti (http://www.dsy.it/forum/forumdisplay.php?forumid=210)
-- CPU singolo ciclo BRANCH (http://www.dsy.it/forum/showthread.php?threadid=31070)
CPU singolo ciclo BRANCH
Nell' istruzione branch l'indirizzo di salto è calcolato in 2 passi
1 - calcolo dello spiazzamento in byte: offset*4
2 - somma base+offset
non capisco a cosa serve moltiplicare l'offset per 4, chi me lo spiega???
mi pare che moltiplicare per 4 sia lo stesso che shiftare a sx di due..che è quello che devi fare...
__________________
"Why, Sir, you find no man at all intellectual who is willing to leave London.
No, Sir, when a man is tired of London, he is tired of life; for there is in London all that life can afford."
(DR SAMUEL JOHNSON 1777)
MSN andrea.poretti(at)hotmail.it
ma perchè devo shiftare??
ops..
non era quello il motivo..
La moltiplicazione per 4 la fai perchè l'offset ti viene fornito in byte e tu devi calcolare un nuovo indirizzo e per fare cio' hai bisogno i bit che poi sommerai al base..
__________________
"Why, Sir, you find no man at all intellectual who is willing to leave London.
No, Sir, when a man is tired of London, he is tired of life; for there is in London all that life can afford."
(DR SAMUEL JOHNSON 1777)
MSN andrea.poretti(at)hotmail.it
ma perchè nel calcolare l'indirizzo di una lw non avviene la moltiplicazione per 4 ma solo l'addizione
ps:
so che non è fondamentale per passare l'esame ma volevo capire
e poi un altra cosa nelle cpu pipeline quando si parla di forwarding per le criticità di dati, in un primo esempio preleva i dati all' inizio di mem, nel secondo esempio alla fine di mem, ma allora dove si trovano sti dati? a me sembra sensato all' inizio di mem, cioè alla fine di ex
Beh, l'indirizzo normalmente si riferisce al singolo byte. Lavorando però con istruzioni word a 32 bit (1 word = 4 bytes) possiamo solo effettuare spostamenti su locazioni che siano multipli di 4. La base lo è già per definizione quindi:
(esempio)
base = indirizzo 200 (multiplo di 4)
vogliamo saltare di 10 istruzioni perché il branch richiede l'undicesima: 10 * 4 = 40
prossima locazione = 200 + 40 = 240 (esattamente + 10 istruzioni da 4 bytes cad.)
Per quanto riguarda il forwarding non ho capito di quale esempio stai parlando (se sul libro di Patterson/Hennessy o sugli appunti). Comunque, come c'é scritto negli appunti, l'informazione che serve all'istruzione successiva è disponibile all'uscita della ALU, prima della sua collocazione in MEM.
Diverso è per lo stallo, in cui per effettuare una LW bisogna ovviamente leggere prima la MEM
ciaoo
mi riferivo alle slide, sei stato chiaro , dovrei aver risolto tutto dopo magari lo rileggo, grazie!
ok capito tutto...
Re: CPU singolo ciclo BRANCH
Salve qualcuno sa dirmi quanti cicli di clock sono necessari per l'esecuzione di beq e j in un' unità a ciclo singolo e a ciclo multiplo.
Originally posted by Gehur
Nell' istruzione branch l'indirizzo di salto è calcolato in 2 passi
1 - calcolo dello spiazzamento in byte: offset*4
2 - somma base+offset
non capisco a cosa serve moltiplicare l'offset per 4, chi me lo spiega???
All times are GMT. The time now is 01:52. | Show all 8 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.