Els cicles per instrucció poden ser inferiors a 1?
ISA defineix les coses com les instruccions i les seves instruccions i hi ha algunes coses que no entenc.
- La longitud d' instrucció (la quantitat de bits) afecta a la quantitat d' instruccions que es poden realitzar en un cicle del rellotge?
- He intentat fer algunes investigacions sobre el que realment determina la quantitat d' instruccions que es poden realitzar en un cicle (que va portar a la pregunta més amunt), però sense sort. És el PCI Sempre variable o és que hi ha una quantitat específica de cicles que requereix per a realitzar certes instruccions, com potser una "una instrucció de càrrega pla" Sempre Pren un cicle?
4 respostes 4
Amb processadors moderns, hi ha tanta traducció, cau, organitzar l'execució especuliva, etc. Passa entre llegir els bytes d' instruccions de la memòria i executar instruccions, que la vostra pregunta no es pot respondre amb prou feines . Una CPU moderna No executa els bytes d' instrucció que llegeix de la memòria però un producte intern que crea transformacions complexes.
És comparable a una pregunta com "Quants caràcters del codi font C poden executar la CPU en un cicle del rellotge?" Bé, els bytes d'Instracció de màquina es poden apropar gradualment al motor d'execució de la CPU que el codi font C, però només gradualment. Tens la idea...
En els vells 8080 dies del 8080/Z80/6502 era fàcil. Cada instrucció va ser documentada per prendre un nombre fix de cicles de CPU (si s' utilitza la memòria de velocitat decent). Podeu crear temps exactes d' executar programes específicament dissenyats.
És clar, es pot aplicar algun raonament comú. Abans d' executar una instrucció per primera vegada, la CPU ha d' haver- la llegit de la memòria. Per tant, una instrucció més llarga pren més temps que una més curta - a la primera execució.
Si està dins d' un bucle, probablement des de la segona iteració, la instrucció ja és a la memòria cau de la CPU, disponible en una fracció del temps d' accés a la RAM. Potser la CPU tradueix des de x86 codis d' articles a paraules internes d' instruccions, aleshores la longitud dels bytes de la instrucció original ja no importa després d' aquesta traducció.
Si voleu saber d' una seqüència donada d' instruccions, quant de temps calen per executar-los, o bé necessiteu un programari perfecte per al subsistema de CPU i memòria específic que teniu en ment (moder totes les coses que he esmentat), o proveu- lo amb un punt de referència. Però sigueu conscients que en ambdós casos, els resultats no només depenen de les vostres instruccions, sinó també del tipus de CPU, la velocitat relativa de la RAM, el contingut inicial de la memòria de la CPU, i molts altres factors. No et sorprenguis de veure els temps d'execució real diferents per un factor de dos o més dels resultats teorèticas o de punts de referència.
En general, una CPU moderna tindrà camins des de la memòria a la memòria cau i des de la memòria cau a ALU que li permet recuperar tota una instrucció a la vegada, independentment de la longitud 1 .
Com a tal, és bastant inusual per a la mida de les instruccions a directament . Al mateix temps, una CPU mai té espai de memòria cau il·limitat. Una instrucció més gran ocupa més espai al cau, que limita el nombre d' instruccions que poden encaixar a la memòria cau. Això, al seu torn, porta a una probabilitat més alta de la memòria cau, en aquest cas la CPU pot acabar esperant la memòria principal.
Per si el PCI sempre és variable: sí, com a mínim sempre. En particular, les dependències de recursos entre instruccions poden limitar la quantitat que es pot fer en qualsevol cicle donat. Considereu una tasca completament sèrieda, on cada pas de la tasca depèn de la passa anterior.
En aquest cas, és essencialment impossible executar més d' una instrucció per rellotge (més curt de reforçar el problema, que generalment està més enllà del que qualsevol CPU intentarà).
Al mateix temps, una CPU moderna i alta forma sempre tindrà alguna possibilitat d'executar més d'una instrucció per cicle si no hi ha cap dependències entre ells. Com una cosa així:
OR r0, r1, r2 OR r3, r4, r5
... llauna Normalment s' executa en paral· leles, si El processador té recursos disponibles per a fer-ho. Hem de saber més sobre les instruccions anteriors abans que puguem dir quant de temps portarà executar aquestes instruccions. Amb instruccions més complexes que inclouen accés a les dades que podrien (o no ser) estar en un cau, etc., la imatge esdevé encara més complexa.
- Tot i que això no sempre està garantit. Per exemple, un x86 suporta instruccions amb 16 bytes de prefix (més les instruccions mateixes), així que tot i que és poc comú a l' exercici, una única instrucció pot ser massa gran per transferir en un únic cicle, com a mínim en algun maquinari. Fins i tot en aquest cas, una gran instrucció no necessàriament redueix el PCI - amb un cau de traces, el que es desa no és la instrucció en brut.
Bé, si el coll d'ampolla és memòria a través del rendiment, una longitud d' instruccions més petita permet més instruccions per byte. Tot i així, l'ús de la longitud variable per a una densitat més gran o d'amplibilitat pot contrarestar aquest avantatge degut a la complexitat.
A part d'això, depèn.
En cpu-arttures més senzills, sovint hi ha un comptador de rellotge específic de cada instrucció per disseny, que Pot Depen de les dades d' un subconjunt. Tot i així, les interrupcions poden influir en el temps.
En arquitectures complexes, especialment d'alta forma, degut al paral·lel de paral·lels, a l'hora de dirigir l'execució, compartir un autobús amb perifèrics i altres consideracions, les coses són més difícils. Mentre que probablement hi ha suficients unitats d'execució d'alguns tipus que algun subconjunt d' instruccions no haurà de compartir, i no accedeixen a l'exterior (memory, dispositius), molts altres estan influenciats pel que s'ha fet abans, i encara poden estar executant.
En un processador PowerPC, cada instrucció és sempre 4 bytes - per tant la mida d' instrucció no pot afectar res.
En un processador x86 o ia64, les instruccions són entre 1 i 15 bytes (pot ser 16). Com que els nous processadors poden executar més d' una instrucció per cicle, han de descodificar més d' una instrucció per cicle. Això requereix dues coses: instruccions de descodificació, i trobar on comença la següent instrucció. Podeu descodificar diverses instruccions simultàniament tenint més d'un descodificador. Però trobar on comencen les instruccions (més ràpid) és difícil.
Per instruccions simples, és possible determinar la longitud i amb l' inici de la següent instrucció molt ràpidament. Per a instruccions complexes, trobar la longitud de l' instrucció porta massa temps per a començar a descodificar la següent instrucció. El resultat és que en un cicle, aquests processadors poden descodificar múltiples instruccions, però només per arribar a una instrucció complexa.
Artículos Relacionados:
- És millor el cicle per instrucció?
- Quin ordinador és millor per a classes en línia?
- Quin processador és millor per a l'educació?
- Quins són els 4 tipus d'ordinadors per a la classe 1?
- Processador -