Cua d'entrada de recuperació prèvia

Unitat d'optimització de la CPU

L'obtenció dels codis operatius d'instruccions de la memòria del programa amb molta antelació es coneix com a captació prèvia i es serveix mitjançant una cua d'entrada de recuperació prèvia (PIQ). Les instruccions obtingudes prèviament s'emmagatzemen en una cua. L'obtenció d'opcodes amb molta antelació, abans de la seva necessitat d'execució, augmenta l'eficiència general del processador augmentant la seva velocitat. El processador ja no ha d'esperar que les operacions d'accés a la memòria per completar el codi operatiu de la instrucció posterior. Aquesta arquitectura es va utilitzar de manera destacada al microprocessador Intel 8086.

Introducció

modifica

El pipelining es va posar al capdavant del disseny d'arquitectura informàtica durant la dècada de 1960 a causa de la necessitat d'una computació més ràpida i eficient. La canalització és el concepte més ampli i la majoria dels processadors moderns carreguen les seves instruccions alguns cicles de rellotge abans d'executar-les. Això s'aconsegueix carregant prèviament el codi de la màquina de la memòria a una cua d'entrada de recuperació prèvia.

Aquest comportament només s'aplica als ordinadors von Neumann (és a dir, no als ordinadors d'arquitectura Harvard) que poden executar codi automodificable i tenir algun tipus de canalització d'instruccions. Gairebé tots els ordinadors moderns d'alt rendiment compleixen aquests tres requisits.[1]

Normalment, el comportament d'obtenció prèvia del PIQ és invisible per al model de programació de la CPU. Tanmateix, hi ha algunes circumstàncies en què el comportament de PIQ és visible i el programador ha de tenir en compte.

Quan un processador x86 canvia el mode del mode real al mode protegit i viceversa, s'ha de netejar el PIQ, o en cas contrari, la CPU continuarà traduint el codi de la màquina com si estigués escrit en el seu darrer mode. Si el PIQ no s'esborra, el processador pot traduir els seus codis malament i generar una excepció d'instrucció no vàlida.

Avaluació del rendiment basada en la teoria de les cues

modifica

Va ser A.K Erlang (1878-1929) el primer que va concebre una cua com a solució a la congestió del trànsit telefònic. Es proposen diferents models de cua per tal de simular aproximadament els sistemes de cua en temps real de manera que es puguin analitzar matemàticament per a diferents especificacions de rendiment.

Els models de cua es poden representar mitjançant la notació de Kendall:

A1/A2/A3/A4

on:

  • A1 és la distribució del temps entre dues arribades
  • A2 és la distribució del temps de servei
  • A3 és el nombre total de servidors
  • A4 és la capacitat del sistema
  1. Model M/M/1 (Servidor únic de cua única/ Markovian): En aquest model, els elements de la cua es serveixen per ordre d'arribada. Tenint en compte les tarifes mitjanes d'arribada i de servei, aleshores les tarifes reals varien al voltant d'aquests valors mitjans de manera aleatòria i, per tant, s'han de determinar mitjançant una funció de distribució de probabilitat acumulada.
  2. Model M/M/r : aquest model és una generalització del model bàsic M/M/1 on funcionen diversos servidors en paral·lel. Aquest tipus de model també pot modelar escenaris amb usuaris impacients que surten de la cua immediatament si no estan rebent servei. Això també es pot modelar mitjançant un procés de Bernoulli que només té dos estats, èxit i fracàs. El millor exemple d'aquest model són els nostres sistemes de telefonia fixa habituals.
  3. Model M/G/1 (model d'entrada finita de Takacs) : Aquest model s'utilitza per analitzar casos avançats. Aquí la distribució del temps de servei ja no és un procés de Markov. Aquest model considera el cas de més d'una màquina avariada reparada per un sol reparador. El temps de servei per a qualsevol usuari augmentarà en aquest cas.

Generalment, en aplicacions com ara la cua d'entrada de recuperació prèvia, el model M/M/1 s'utilitza popularment a causa de l'ús limitat de les funcions de la cua. En aquest model d'acord amb els microprocessadors, l'usuari fa el paper de la unitat d'execució i el servidor és la unitat d'interfície de bus.

Cua d'instruccions

modifica

El processador executa un programa agafant les instruccions de la memòria i executant-les. En general, la velocitat d'execució del processador és molt més ràpida que la velocitat d'accés a la memòria. La cua d'instruccions s'utilitza per obtenir prèviament les instruccions següents en un buffer separat mentre el processador executa la instrucció actual.

Amb un pipeline de quatre etapes, la velocitat a la qual s'executen les instruccions pot ser fins a quatre vegades la de l'execució seqüencial.[2]

El processador sol tenir dues unitats separades per obtenir les instruccions i per executar les instruccions.[3][4]

La implementació d'una arquitectura de canalització només és possible si la unitat d'interfície de bus i la unitat d'execució són independents. Mentre la unitat d'execució està descodificant o executant una instrucció que no requereix l'ús dels busos de dades i d'adreces, la unitat d'interfície de bus obté els codis operatius d'instruccions de la memòria.

Referències

modifica
  1. «ARM Information Center» (en anglès). ARM Technical Support Knowledge Articles.
  2. Zaky, Safwat. Computer Organization (en anglès). Fourth. McGraw-Hill, 1996, p. 310–329. ISBN 0-07-114309-2. 
  3. «Block diagram of 8086 CPU» (en anglès). Arxivat de l'original el 2009-04-21. [Consulta: 29 novembre 2023].
  4. Hall, Douglas. Microprocessors and Interfacing (en anglès). Tata McGraw-Hill, 2006, p. 2.12. ISBN 0-07-060167-4.