Bonjour Kannagi,
RISC comme MIPS ont des registres de flags explicites pour les opérations flottantes (FCRS...).
Mais pour les entiers; ils utilisent des opérations de branchement conditionnel intégrant comparaison et décision de branchement. C'est plus simple mais ne permet pas l'anticipation. En effet, avoir des décisions conditionnelles qui font à la fois la comparaison et l'exploitation de celle-ci pour un branchement (ou autre) oblige à ne connaître le branchement effectif qu'au dernier moment.
Ceci étant, comme la plupart des instructions CISC modifient les flags, il est difficile de faire une comparaison quelques opérations avant le branchement conditionnel en résultant. Pour favoriser les optimisations, il faudrait plutôt multiplier (2 ou 4 devraient suffire) les registres de flags ce qui permettrait l'anticipation (et non seulement la prédiction) du branchement effectif quelques opérations plus loin (genre cmp ri, rj, rfk pour registre de flag k suivi, quelques opérations plus loin, d'un jcxx addr, rfk).
Certains pensent qu'il n'y a pas de pipe sur les machines RISC (une instruction = un tick, même pour * ou / ?). C'était vrai au tout début lorsque le jeu d'instructions était vraiment réduit mais les RISC d'aujourd'hui ont bien plus plus d'instructions que les CISC d'hier. Donc le besoin de pipe réapparaît et son optimisation également.
Salut
Partager