salto del processore?

probabilmente è una domanda banale.. ma nn ho idea di cosa sia........cos'è il " salto del processore"? è qual'è la differenza tra un salto condizionato e uno incondizionato?? ( io e l'informatica non siamo molto amici...........)

3 risposte

Classificazione
  • 7 anni fa
    Risposta preferita

    Il processore ossia la CPU e' il "cuore" del computer e da essa dipendono tutte le operazioni che vengono effettuate e consentono al sistema di funzionare.

    La CPU conosce solo un tipo di linguaggio ( se cosi' vogliamo chiamarlo ) detto linguaggio macchina composto esclusivamente da codici binari.

    Il linguaggio di programmazione che piu' si avvicina alla struttura della CPU e' l'Assembly, linguaggio a basso livello, che contiene le istruzioni che consentono alla CPU di compiere determinate azioni.

    Le istruzioni dell'Assembly comprendono quelle di salto ossia ad un certo punto l'istruzione dice di "saltare" ad un determinato indirizzo di memoria.

    Questa istruzione JMP si dice salto incondizionato poiche' viene eseguita tal quale.

    Le altre istruzioni di salto sono invece condizionate poiche' avvengono in presenza di una determinata condizione.

    JZ ( salta se zero ) manda ad un detrminato indirizzo se durante l'esecuzione del programma si verifica la condizione in cui un valore sotto controllo e' Zero.

    Ciao

    Alvin

    Fonte/i: Programmatore a riposo
  • L. S.
    Lv 4
    7 anni fa

    Un 'salto' è una variazione del flusso sequenziale delle istruzioni, ad esempio un'istruzione GOTO nei linguaggi a basso livello, oppure un costrutto IF nei linguaggi ad alto livello.

    I salti sono importanti perchè influiscono pesantemente sull'efficienza di un processore; poichè non so cosa conosci sull'argomento, comincio dall'inzio...

    I processori sono molto più veloci delle memorie RAM, dove sono caricati i programmi in esecuzione; per questo motivo il processore sprecherebbe la maggior parte del tempo 'aspettando' le istruzioni successive dalla RAM. Per ovviare a questo problema esiste una memoria cache che carica una 'coda di prefetch', ovvero una lista delle istruzioni successive a quella in corso di eleborazione. Il problema deriva dal fatto che se è presente un salto, esso può essere eseguito o non eseguito (pensa ad esempio ad un ciclo if): se il salto viene eseguito, il normale flusso delle istruzioni viene alterato, tutto ciò che è caricato nella coda di prefetch è inutile ed il processore è costretto ad aspettare il trasferimento di nuove istruzioni dalla memoria RAM. Il problema è ulteriormente peggiorato dalla struttura a pipeline dei processori attuali, che porta a sprecare anche 20 cicli clock per caricare una nuova istruzione.

    Per questo motivo tutti i recenti processori integrano un'unità, chiamata BPU (Branch Prediction Unit, in italiano unità di predizione dei salti), che analizza il codice in anticipo per tentare di predire i salti, operazione che può essere anche molto complicata, dato che per esempio un ciclo può dipendere dal valore di una variabile che a sua volta può venir modificata dal ciclo stesso...

    Vi sono vari metodi per effettuare la predizione (statica, bimodale, locale, globale, ...) ma penso che la loro trattazione esuli dalla domanda posta.

    Riguardo ai tipi di salto, il salto incondizionato, oggi deprecato in linguaggi di alto livello, è un salto che viene sempre eseguito (es. GOTO), il salto condizionato invece dipende, come suggerisce il nome, dal verificarsi di una condizione (es. IF, REPEAT, WHILE, ....)

    Se ti interessa l'argomento posso segnalarti un buon WikiBook, ovviamente è solo un'infarinatura, ma è piuttosto chiaro e ben scritto: http://it.wikibooks.org/wiki/Architetture_dei_proc...

  • 7 anni fa

    Beh... la domanda non è stata formulata in maniera adeguata.

    Esistono due tipi di "salto" nei linguaggi di programmazione. C'è quello condizionato e quello incondizionato. Il salto condizionato viene eseguito soltanto se si verificano determinate condizioni. Il salto incondizionato, invece, viene sempre eseguito.

Altre domande? Fai una domanda e ottieni le risposte che cerchi.