Domanda

Rapido riepilogo:? In modalità x86-64, sono di gran lunga salta lento come in modalità x86-32

sul processore x86, salta caduta in tre tipi:

  • breve, con un PC-offset di +/- 127 byte (2 byte istruzione)
  • vicino, con un +/- 32k compensato che "rotola" il segmento in corso (istruzione 3 byte)
  • fino ad ora, che possono saltare ovunque (5 istruzioni byte)

breve e vicino salti prendono 1-2 cicli di clock, mentre lontano salti prendere 50-80 cicli di clock, a seconda del processore. Dalla mia lettura della documentazione, questo è perché "vanno al di fuori CS, il segmento di codice corrente".

Nella schermata x86-64, segmenti di codice non vengono utilizzati - Il segmento è effettivamente sempre 0..infinity. Ergo, non ci dovrebbe essere una sanzione per andare fuori un segmento.

Quindi, la domanda:? Il numero di cicli di clock per un cambiamento di gran lunga saltare se il processore è in modalità x86-64

connessa interrogazione bonus: La maggior parte * nix-like sistemi operativi in ??esecuzione in modalità protetta a 32 bit impostati in modo esplicito le dimensioni dei segmenti a 0..infinity e gestire lineare -> traduzione fisica interamente attraverso le tabelle di pagina. Ottengono un beneficio da questo, in termini di tempo per le chiamate lontano (un numero inferiore di cicli di clock), o è davvero la pena di un'eredità CPU interna dalle dimensioni registri di segmento sono stati dal momento che il 8086?

È stato utile?

Soluzione

CS viene utilizzato non solo per la base e il limite, ma anche per le autorizzazioni. Il CPL è codificato lì, così come altri settori quali:

  • D-bit - 32 bit o 16 bit dimensione del segmento di default
  • L-bit - compatibilità seleziona o modalità a 64 bit per il segmento (e in questo caso la base e limite sono significativi)

Far salta può anche passare attraverso un cancello di compito, e di gran lunga le chiamate può anche passare attraverso i cancelli di chiamata. Tutti questi devono essere trattati, a prescindere dalla modalità a 64 bit.

In sintesi, un salto di gran lunga in modalità a 64 bit non è più veloce rispetto alla modalità a 32 bit. Infatti, considerando che quando la modalità a 64 bit è attivato, i descrittori di segmento sono due volte più grande di quando in modalità a 64 bit è disattivato, tutti gli accessi descrittore-tavolo sono raddoppiati, il che può allungare il tempo del salto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top