Reservation station

Estació de reserves com a part de la microarquitectura Nehalem d'Intel

Una estació de reserva unificada, també coneguda com a planificador unificat, és una característica descentralitzada de la microarquitectura d'una CPU que permet canviar el nom del registre, i és utilitzada per l'algorisme Tomasulo per a la programació dinàmica d'instruccions.[1]

Les estacions de reserva permeten a la CPU obtenir i reutilitzar un valor de dades tan bon punt s'ha calculat, en lloc d'esperar que s'emmagatzemi en un registre i torni a llegir-lo. Quan s'emeten instruccions, poden designar l'estació de reserva des de la qual volen llegir la seva entrada. Quan s'han d'escriure diverses instruccions al mateix registre, totes poden continuar i només cal escriure (lògicament) l'última. Comprova si els operands estan disponibles (RAW) i si la unitat d'execució està lliure (Risc estructural) abans de començar l'execució.[2]

Les instruccions s'emmagatzemen amb els paràmetres disponibles i s'executen quan estiguin a punt. Els resultats són identificats per la unitat que executarà la instrucció corresponent. El canvi de nom implícit del registre resol els perills de WAR i WAW. Com que es tracta d'una estructura totalment associativa, té un cost molt elevat en comparadors (cal comparar tots els resultats retornats de les unitats de processament amb totes les adreces emmagatzemades).[3]

En l'algorisme de Tomasulo, les instruccions s'emeten en seqüència a les estacions de reserva que emmagatzemen la instrucció així com els operands de la instrucció. Si l'operand no està disponible, l'estació de reserves escolta en un bus de dades comú perquè l'operand estigui disponible. Quan l'operand està disponible, l'estació de reserves l'emmagatzema i l'execució de la instrucció pot començar.

Les unitats funcionals (com ara un sumador o un multiplicador), cadascuna té les seves pròpies estacions de reserva corresponents. La sortida de la unitat funcional es connecta al bus de dades comú, on les estacions de reserva estan escoltant els operands que necessiten.[4]

Referències

  1. «Out-of-Order Execution» (en anglès). [Consulta: 28 novembre 2023].
  2. Gelas, Johan De. «Intel Core versus AMD's K8 architecture» (en anglès). [Consulta: 28 novembre 2023].
  3. Spasov, Dejan «A Circuit for Flushing Instructions from Reservation Stations in Microprocessors» (en anglès). SpringerLink. Springer International Publishing [Cham], 2020, pàg. 127–137. DOI: 10.1007/978-3-030-62098-1_11.
  4. «Pipelined Processor Design» (en anglès). [Consulta: 28 novembre 2023].