Què és lexecució fora dordre?

Els ordinadors són màquines complexes sense cap part més complexa que la CPU. A un nivell bàsic de visió general, sembla que la CPU hauria de ser relativament senzilla. Pren una sèrie d'ordres, les processa i després emet les dades. Tot i això, això té poca semblança amb el funcionament real de les CPU modernes.

Subescalar a superescalar

Les primeres CPU eren exactament com esperíeu. Van prendre instruccions individualment, en l'ordre en què se'ls van donar, les van processar fins a completar-les i després van passar a la següent instrucció. Les CPU d'aquest tipus eren subescalars, capaços de completar menys d'una instrucció per cicle de rellotge. Els dissenyadors de CPU van identificar que hi havia moltes etapes diferents per completar una instrucció. Cadascuna d'aquestes etapes requeria un maquinari diferent. Això significava que quan s'executaven una sola instrucció a través de tota la seqüència alhora, algunes parts del maquinari estaven inactius. En qualsevol tipus de processador, el maquinari inactiu és maquinari inútil.

Per utilitzar aquest maquinari inactiu, els dissenys de CPU es van actualitzar per utilitzar un enfocament de pipeline. Això va separar encara més el maquinari per a cada etapa, però va permetre que tots fossin utilitzats al mateix temps mitjançant una sèrie d'instruccions. Tot i que encara va trigar uns quants cicles a cada instrucció per passar pel pipeline, el rendiment global era d'una instrucció per cicle. Això va fer escalar les CPU.

Per poder fer més, els processadors havien de ser superescalars. Per aconseguir-ho, es van implementar múltiples canonades paral·leles.

Mantenir les canonades alimentades amb dades

El principal problema de rendiment dels ordinadors és normalment la latència de memòria. Moltes instruccions funcionen amb dades i, per tant, cal que aquestes dades estiguin disponibles perquè la instrucció s'executi. La pregunta és, què feu si heu d'esperar aquestes dades perquè no estan disponibles immediatament? Tradicionalment, la resposta era només aturar-se i esperar que estigui disponible. Això deixa tot el pipeline buit, potencialment durant centenars de cicles de CPU. Les coses empitjoren encara quan dues instruccions en canalitzacions paral·leles necessiten esperar memòria, ja que la primera aguantarà fins i tot la sol·licitud de les dades de la segona. Tot i que la memòria cau de la CPU pot ajudar a solucionar aquest problema, encara no el pot solucionar. Calia un nou paradigma per solucionar-ho. Aquest canvi de paradigma va ser Out Of Order Execution o OOO.

La primera etapa d'un pipeline és descodificar la instrucció. Això significa saber què s'ha de fer i verificar que les dades necessàries per a l'operació estan disponibles. En una CPU OOO, les instruccions descodificades s'afegeixen a una cua. Només s'eliminen de la cua i es processen realment quan les dades que necessiten estan disponibles. De manera crítica, no importa l'ordre en què s'han afegit les instruccions a la cua. Si una instrucció primerenca està esperant dades, una instrucció més recent pot saltar endavant si està a punt. Els processadors OOO poden reordenar les instruccions que se suposa que han de processar en funció de la cua d'instruccions properes i quines d'aquestes estan preparades per a l'execució.

Dependències crítiques

Aquest procés suposa dues coses. En primer lloc, que és possible identificar i gestionar de manera fiable les dependències reals. En segon lloc, podeu gestionar i identificar de manera fiable les falses dependències. Quina és la diferència? Bé, una veritable dependència és una dependència que no es pot mitigar en absolut en un sistema OOO. L'exemple més fàcil és la lectura després d'escriptura. Si teniu una instrucció que se suposa que ha d'escriure algunes dades i una altra que ha de llegir aquestes dades, no hi ha manera de poder reordenar aquestes instruccions. S'han d'omplir en l'ordre en què es van presentar, o obtindreu dades sense sentit.

Una falsa dependència és aquella que es pot amagar amb un altre truc intel·ligent. Prenguem l'exemple de l'escriptura després de la lectura. A primera vista, podríeu pensar que no podeu sobreescriure les dades abans d'haver-les llegit. Les coses, però, no són tan senzilles. Què passa si teniu un altre lloc on podeu escriure les dades noves i, després, només podeu intercanviar les dades noves i antigues un cop s'hagin llegit les dades antigues? Aquest és el procés de canvi de nom del registre i és fonamental per al processament OOO.

Normalment, un conjunt d'instruccions defineix un nombre determinat de registres arquitectònics que s'utilitzen al sistema. Literalment, no pots dirigir-te a cap altre. Però, què passa si fas registres de sobreprovisió? Només podeu amagar-los en la seva major part, utilitzar-los per emmagatzemar dades que encara no s'haurien d'haver processat i després simplement intercanviar les etiquetes dels registres ocults i arquitectònics quan la línia de temps torni a ser correcta. En qualsevol moment, hi ha la quantitat exacta correcta de registres arquitectònics, però no necessàriament sempre estan al mateix lloc. Una analogia del món real seria hot-desking.

Conclusió

L'execució fora d'ordre és un paradigma de processament on les instruccions es poden reordenar dinàmicament en el moment de l'execució per part de la CPU. Això es fa sobre la base de les primeres instruccions emeses que tenen dades disponibles. Això vol dir que les instruccions que es carreguen al pipeline sempre estan a punt per executar-se i no hi ha retards a l'espera de les dades. Per descomptat, cal tenir una cua prou llarga que no s'ompli d'instruccions a l'espera de dades, però això és un repte d'implementació. L'execució d'OOO es basa en el canvi de nom del registre per amagar dependències falses. Fins i tot si aquestes instruccions s'executen realment fora d'ordre, els registres es canvien de nom de manera que s'amaga aquest fet a la resta de l'ordinador.


Què és SMPS?

Què és SMPS?

Apreneu què és SMPS i el significat de les diferents classificacions d'eficiència abans de triar un SMPS per al vostre ordinador.

Per què el meu Chromebook no sencén

Per què el meu Chromebook no sencén

Obteniu respostes a la pregunta: Per què el meu Chromebook no s'encén? En aquesta guia útil per als usuaris de Chromebook.

Com informar de les estafes de pesca a Google

Com informar de les estafes de pesca a Google

Obteniu informació sobre com informar d'un estafador a Google per evitar que estafeu altres persones amb aquesta guia.

Roomba satura, senganxa i gira - Arregla

Roomba satura, senganxa i gira - Arregla

Solucioneu un problema en què el vostre robot aspirador Roomba s'atura, s'enganxa i segueix girant.

Com canviar la configuració gràfica a Steam Deck

Com canviar la configuració gràfica a Steam Deck

El Steam Deck ofereix una experiència de joc robusta i versàtil al teu abast. Tanmateix, per optimitzar el vostre joc i garantir el millor possible

Què és la seguretat basada en laïllament?

Què és la seguretat basada en laïllament?

Anàvem a aprofundir en un tema que cada cop és més important en el món de la ciberseguretat: la seguretat basada en l'aïllament. Aquest enfocament a

Com utilitzar el clic automàtic per a Chromebook

Com utilitzar el clic automàtic per a Chromebook

Avui anàvem a aprofundir en una eina que pot automatitzar tasques de clics repetitius al vostre Chromebook: el clic automàtic. Aquesta eina us pot estalviar temps i

Com canviar la cara del rellotge en un Fitbit Versa 4

Com canviar la cara del rellotge en un Fitbit Versa 4

Canvia la cara del rellotge del teu Fitbit Versa 4 per donar-li un aspecte diferent cada dia de manera gratuïta. Mireu que fàcil i ràpid és.

Com treure una GPU dun PC Windows el 2023

Com treure una GPU dun PC Windows el 2023

Necessites treure la GPU del teu ordinador? Uneix-te a mi mentre t'explico com eliminar una GPU del teu PC en aquesta guia pas a pas.

Què és el surf despatlles?

Què és el surf despatlles?

El surf a l'espatlla és una classe d'atac d'enginyeria social. Implica que un atacant recopila informació mirant la pantalla.