Que é a execución fóra de orde?

Os ordenadores son máquinas complexas sen ningunha parte máis complexa que a CPU. A un nivel básico de visión xeral, parece que a CPU debería ser relativamente sinxela. Leva unha serie de comandos, procesaos e, a continuación, envía os datos. Non obstante, isto non se parece moito ao funcionamento real das CPU modernas.

Subescalar a superescalar

As primeiras CPU eran exactamente como esperarías. Tomaron instrucións individualmente, na orde en que se lles daban, procesáronas ata completar e despois pasaron á seguinte instrución. As CPU deste tipo eran subescalares, capaces de completar menos dunha instrución por ciclo de reloxo. Os deseñadores da CPU identificaron que había moitas etapas diferentes para completar unha instrución. Cada unha destas etapas requiriu hardware diferente. Isto significaba que ao executar unha única instrución a través de toda a secuencia á vez, algunhas partes do hardware quedaban inactivas. En calquera tipo de procesador, o hardware inactivo é un hardware inútil.

Para utilizar este hardware inactivo, os deseños de CPU actualizáronse para utilizar un enfoque de pipeline. Isto separou aínda máis o hardware para cada etapa pero permitiu que todos fosen utilizados ao mesmo tempo mediante unha serie de instrucións. Aínda que aínda levaba uns poucos ciclos para que cada instrución pasase pola canalización, o rendemento global foi dunha instrución por ciclo. Isto fixo escalar as CPU.

Para poder facer máis, os procesadores necesitaban ser superescalares. Para conseguilo, implantáronse varias conducións paralelas.

Manter as canalizacións alimentadas con datos

O principal problema de rendemento dos ordenadores é normalmente a latencia da memoria. Moitas instrucións operan con datos, polo que eses datos deben estar dispoñibles para que a instrución se execute. A pregunta é, que fai se precisa esperar eses datos porque non están dispoñibles inmediatamente? Tradicionalmente, a resposta era só parar e esperar a que estea dispoñible. Isto deixa toda a canalización baleira, potencialmente durante centos de ciclos de CPU. As cousas empeoran aínda cando dúas instrucións en canalizacións paralelas necesitan esperar pola memoria, xa que a primeira aguantará ata a solicitude dos datos da segunda. Aínda que a memoria caché da CPU pode axudar a solucionar este problema, aínda non pode solucionalo. Precisaba un novo paradigma para solucionalo. Ese cambio de paradigma foi Out Of Order Execution ou OOO.

A primeira etapa dunha canalización é decodificar a instrución. Isto significa traballar o que hai que facer e verificar que os datos necesarios para a operación están dispoñibles. Nunha CPU OOO, as instrucións descodificadas engádense a unha cola. Só se eliminan da cola e se procesan realmente cando os datos que necesitan están dispoñibles. Criticamente, non importa a orde en que se engadiron as instrucións á cola. Se unha instrución anticipada está esperando datos, unha instrución máis recente pode saltar adiante se está lista. Os procesadores OOO poden reordenar as instrucións que se supón que deben procesar en función da cola das próximas instrucións e cales delas están listas para a súa execución.

Dependencias críticas

Este proceso supón dúas cousas. En primeiro lugar, que é posible identificar e manexar de forma fiable as verdadeiras dependencias. En segundo lugar, pode manexar e identificar de forma fiable as dependencias falsas. Cal é a diferenza? Ben, unha verdadeira dependencia é unha dependencia que non se pode mitigar en absoluto nun sistema OOO. O exemplo máis sinxelo é a lectura despois de escribir. Se tes unha instrución que se supón que debe escribir algúns datos e outra que debería ler eses datos, non hai forma de poder reordenar esas instrucións. Deben completarse na orde en que se presentaron, ou obterás datos de tonterías.

Unha falsa dependencia é aquela que se pode ocultar con outro truco intelixente. Poñamos o exemplo de escribir despois de ler. A primeira vista, pode pensar que non pode sobrescribir os datos antes de lelos. Aínda que as cousas non son tan sinxelas. E se tes outro lugar onde podes escribir os datos novos e, a continuación, podes intercambiar os datos novos e antigos unha vez lidos os datos antigos? Este é o proceso de cambio de nome do rexistro e é fundamental para o procesamento de OOO.

Normalmente, un conxunto de instrucións define un número determinado de rexistros arquitectónicos que se usan no sistema. Literalmente non podes dirixirte a ningún outro. Pero e se fai rexistros de sobreprovisionamento? Podes ocultalos na súa maior parte, utilizalos para almacenar datos que aínda non deberían terse procesado e, a continuación, simplemente intercambiar as etiquetas dos rexistros ocultos e arquitectónicos cando a liña de tempo sexa correcta de novo. En calquera momento, hai a cantidade exacta de rexistros arquitectónicos, pero non necesariamente están sempre no mesmo lugar. Unha analoxía do mundo real sería o hot-desking.

Conclusión

A execución fóra de orde é un paradigma de procesamento onde as instrucións poden ser reordenadas de forma dinámica no momento da execución pola CPU. Isto faise a partir das primeiras instrucións emitidas que teñen datos dispoñibles. Isto significa que as instrucións que se están cargando na canalización están sempre listas para ser executadas e non hai atrasos mentres se esperan os datos. Por suposto, é necesario ter unha cola suficientemente longa para que non se enche de instrucións á espera de datos, pero iso é un reto de implementación. A execución de OOO depende do cambio de nome do rexistro para ocultar dependencias falsas. Aínda que estas instrucións sexan realmente executadas sen orde, os rexistros son renombrados de tal xeito que se oculta este feito ao resto do ordenador.


Que é SMPS?

Que é SMPS?

Aprende o que é SMPS e o significado das diferentes clasificacións de eficiencia antes de escoller un SMPS para o teu ordenador.

Que é a seguridade baseada no illamento?

Que é a seguridade baseada no illamento?

Imos afondar nun tema cada vez máis importante no mundo da ciberseguridade: a seguridade baseada no illamento. Este enfoque para

Como usar o clic automático para Chromebook

Como usar o clic automático para Chromebook

Hoxe imos afondar nunha ferramenta que pode automatizar tarefas de clic repetitivos no teu Chromebook: o Clicker automático. Esta ferramenta pode aforrar tempo e

Roomba detén, pégase e dá a volta - Solución

Roomba detén, pégase e dá a volta - Solución

Resolve un problema no que o teu robot aspirador Roomba se detén, se pega e segue xirando.

Por que o meu Chromebook non se acende

Por que o meu Chromebook non se acende

Obtén respostas á pregunta Por que non se acende o meu Chromebook? Nesta guía útil para usuarios de Chromebook.

Como cambiar a configuración gráfica en Steam Deck

Como cambiar a configuración gráfica en Steam Deck

O Steam Deck ofrece unha experiencia de xogo robusta e versátil ao teu alcance. Non obstante, para optimizar o teu xogo e garantir o mellor posible

Como cambiar a cara do reloxo nun Fitbit Versa 4

Como cambiar a cara do reloxo nun Fitbit Versa 4

Cambia a esfera do teu Fitbit Versa 4 para darlle ao teu reloxo un aspecto diferente todos os días de forma gratuíta. Mira o rápido e sinxelo que é.

Como denunciar estafas de phishing a Google

Como denunciar estafas de phishing a Google

Aprende a denunciar a un estafador a Google para evitar que estafe a outros con esta guía.

Como eliminar unha GPU do PC con Windows en 2023

Como eliminar unha GPU do PC con Windows en 2023

Necesitas eliminar a GPU do teu PC? Únete a min mentres explico como eliminar unha GPU do teu PC nesta guía paso a paso.

Que é o Shoulder Surf?

Que é o Shoulder Surf?

O hombro surf é unha clase de ataque de enxeñería social. Implica que un atacante recompila información mirando a túa pantalla.