Esecuzione dell'operazione in termini di cicli di clock

1

In genere per un singolo instrcution, sono necessari 6 cicli di macchine :

  1. Istruzione FETCH
  2. Istruzione DECODE
  3. VALUTAZIONE INDIRIZZO
  4. recupera OPERANDS
  5. ESEGUI l'eeprazione
  6. STORE risultato

La mia preoccupazione riguarda il quinto passaggio; operazione excute. Questo è fatto nella ALU che è semplicemente un gruppo di circuiti digitali che fanno ADD, MUL, XADD, ... ecc.

La mia domanda: è il tempo impiegato (in termini di cicli di clock ) per eseguire l'esclusione di un ADD, ad esempio, uguale a quello preso per eseguire XADD? Voglio dire sono i circuiti digitali per ogni singola operazione progettata in modo da consumare lo stesso numero di cicli di clock ?

In altre parole, è stato fissato il tempo del ciclo macchina

    
posta AhmedWas 04.03.2016 - 09:25
fonte

3 risposte

4

Nella maggior parte dei casi, sì, il tempo di ciclo per ogni fase è fisso. Ci sono alcune eccezioni, a seconda del processore. Ma la descrizione che date è enormemente troppo semplificata. I processori moderni sono organizzati in pipeline, in modo che uno stadio di esecuzione di un'istruzione possa essere eseguito contemporaneamente ad altri. Mentre alcuni processori utilizzano una pipeline a 6 stadi come quella che descrivi, sono una piccola minoranza. I processori più moderni suddividono l'operazione in molte più fasi, ognuna delle quali richiede una sola volta. Ad esempio, i processori Intel Core dell'attuale generazione hanno 19 livelli, ognuno dei quali richiede un singolo ciclo. In alcune circostanze un'istruzione può saltare uno di essi. Di solito, più istruzioni vengono eseguite simultaneamente in stadi diversi, ma alcune istruzioni in alcune circostanze impediranno il proseguimento di altre operazioni (ad esempio, previsioni errate di ramo o se non sono pronte istruzioni perché devono attendere i dati che non sono ancora stati prodotti). Inoltre, il core del processore può disporre di più pipeline, pertanto più istruzioni vengono eseguite completamente in parallelo e in alcune architetture non tutte le pipeline sono in grado di eseguire tutti i tipi di istruzione. Il recupero e la decodifica delle istruzioni sono condivisi tra tutte le pipeline e in molti casi possono gestire molte istruzioni per ciclo. Nei moderni processori basati su istruzioni CISC come Intel x86, le istruzioni vengono tradotte in micro istruzioni RISC prima dell'esecuzione, quindi un'istruzione di programma può tradurre in più istruzioni nella pipeline (o viceversa). Determinare le prestazioni effettive nelle situazioni del mondo reale è estremamente difficile.

    
risposta data 04.03.2016 - 09:48
fonte
2

Innanzi tutto, quando dici "tipicamente", non sarei d'accordo. Sì, nei libri di testo tutti derivati gli uni dagli altri parlano di quegli stati in cantiere. Ma è stato tanto tempo fa e le condutture sono cambiate di dimensioni e forma ogni generazione (ogni anno o due). Ma questo non è rilevante per la tua domanda.

La risposta è "dipende" dipende dalle persone che progettano il nucleo specifico su cosa vogliono fare. Per semplici operazioni logiche, e, o, non, ecc. Avrebbe davvero bisogno di giustificare il motivo per cui ne hanno bisogno più di una. Forse due se discutono i confronti tra flag ne hanno bisogno di un altro, possibile ma molto improbabile. Aggiunta a punto fisso, a meno che gli operandi non siano così ampi da non chiudere i tempi per la frequenza di clock obiettivo, quindi non dovrebbero aver bisogno di più di un orologio. Per moltiplicare o dividere però, la quantità di logica richiesta per prendere gli operandi N bit dai numeri N degli orologi a uno sale in modo esponenziale, quindi se hanno un moltiplicare o dividere del tutto e se scelgono di farne un orologio lì è un vero compromesso, e potrebbero ancora imbattersi in una chiusura dei tempi per un tasso di frequenza target. Potrebbero scegliere di gestire la resa e il costo per unità o consentire ad esempio due orologi e aumentare il loro margine.

In breve, non ci sono risposte assolute, nessun progetto di pipe tipico, nessuna ipotesi generale su quanti orologi ci sono da fare dopo l'avvento di una pipeline. Le istruzioni logiche e di addizione / sottrazione bit per bit dovrebbero essere un orologio, ma altre potrebbero essere più di una ma potrebbero essere nascoste nella pipa e si sentono ugualmente uguali (l'intero punto di una pipeline).

    
risposta data 06.03.2016 - 18:10
fonte
1

Ignoriamo che il tuo modello non è il modo in cui funziona una tipica CPU moderna; era abbastanza ragionevole qualche anno fa.

In una CPU moderna, la frequenza di clock non è assolutamente fissa, ma sicuramente non cambia da istruzione a istruzione. La CPU misurerà la sua temperatura, o verrà detto dal sistema operativo che ha bisogno di usare meno energia possibile, e come risultato può cambiare la sua velocità di clock per un tempo considerevole (molti millisecondi). Quindi la frequenza di clock può essere ridotta per ridurre la quantità di calore prodotto o per ridurre il consumo energetico (la tensione verrà ridotta, il che rende tutto più lento, ma consente di risparmiare enormi quantità di energia).

Ogni singola operazione nella CPU sarà limitata a esattamente un ciclo. Deve finire in quell'unico ciclo. Le cose che non funzionano in un singolo ciclo sono suddivise in più operazioni, ognuna delle quali prende un singolo ciclo. Se xadd impiega più picosecondi che aggiungere, i progettisti della CPU hanno due scelte: fare un ciclo di clock più lungo in modo che xadd possa essere eseguito in un ciclo (aggiungendo più lentamente di quanto deve essere) o facendo accorciare il ciclo dell'orologio, abbastanza a lungo per aggiungere e dividere l'istruzione xadd in due unità di lavoro che eseguono ciascuna un ciclo. Questa scelta della durata del ciclo di clock si applica a tutto .

Potresti cercare su google un diagramma della microarchitettura di una nuova CPU Intel. Potrebbe essere uno shock per il sistema: -)

    
risposta data 07.03.2016 - 12:11
fonte