2010-04-29 13 views
1

Dans les communautés cryptographiques, il est courant de mesurer la performance de l'algorithme en cycles/octets. Ma question est, quels paramètres dans l'architecture du processeur affectent ce numéro? Sauf le clockspeed ofcourse :)Cycles/calculs d'octets

Répondre

0

Deux facteurs importants sont:

  1. l'ISA de la CPU, ou plus précisément comment les instructions CPU étroitement mappez vers les opérations que vous devez effectuer - si vous pouvez effectuer une opération donnée dans une CPU d'une instruction mais qu'elle nécessite 3 instructions sur une autre CPU, alors la première CPU sera probablement plus rapide. Si vous avez des instructions crypto spécifiques sur le CPU, ou des extensions telles que SIMD qui peuvent être exploitées, alors tant mieux.

  2. le taux d'émission d'instructions de la CPU, à savoir le nombre d'instructions peuvent être émises par cycle d'horloge

0

Voici quelques caractéristiques du CPU qui peuvent avoir un impact sur les cycles/octet:

  • profondeur de pipeline
  • nombre d'UI et/ou FPU capable de travailler en parallèle
  • taille des mémoires cache
  • algorithmes de prédiction de branchement
  • algorithmes pour le traitement des miss cache

De plus, vous pouvez être intéressé par le problème général d'évaluer WCET (pire temps d'exécution de cas)

0

Principalement:

  • Bus mémoire bande passante
  • instructions CPU par cycle

La quantité de mémoire à laquelle la CPU peut accéder par seconde peut être un facteur limitant. Cela dépend de l'algorithme et de la grande partie du travail qui est l'accès à la mémoire. Les parties de la mémoire qui accèdent affecteront également le fonctionnement du cache mémoire.

De nos jours, les temps d'instruction ne sont pas mesurés en combien de cycles une instruction prend, mais combien d'instructions peuvent être exécutées dans le même cycle. Le pré-processeur de la CPU aligne plusieurs instructions à exécuter en parallèle, cela dépend donc du nombre de lignes parallèles du CPU et de la possibilité de paralléliser le code. Généralement, beaucoup de branchements conditionnels dans l'algorithme rendent la parallélisation plus difficile.