En quoi le DES en pipeline est-il différent du DES séquentiel?

Filip Mazi

En quoi le DES en pipeline est-il différent du DES séquentiel?


J’ai implémenté DES (Data Encryption Standard) Coder en VHDL en utilisant ISE IDE par Xilinx dans une architecture séquentielle qui était assez facile et directe. Maintenant, ma tâche est de faire la même chose en utilisant une architecture en pipeline afin que le tout fonctionne avec la fréquence d’horloge maximale possible. J’ai lu de nombreux articles sur le site de l’IEEE concernant le DES en pipeline, mais je n’arrivais toujours pas à comprendre complètement le sujet. Qu’est-ce qui est différent? Jusqu’à présent, j’ai compris que je devais faire en sorte:

Il n’y a pas d’instructions complexes dans le code de chaque module. Par exemple, si j’avais l’instruction « x <= a * b * c », je devrais la diviser en deux instructions pour la boucle et quand l’itérateur est égal à 0, faire « temp <= a * b » et quand l’itérateur est égal à 1 faire « x <= temp * c ». Juste un exemple mais montre la façon de penser – au lieu d’une instruction complexe – de nombreuses instructions simples (en utilisant des boucles ou pour générer).

Une fois que l’entrée A arrive à Feistel Round 2, l’entrée B (par exemple, le mot en clair suivant 64 bits) est immédiatement chargée dans Feistel Round 1 et ainsi de suite, ce qui nous permet de traiter 16 mots « quasi simultanément ». Cela nous obligerait à avoir un registre de synchronisation avant et après chaque module de fonction Feistel. J’ai aussi lu quelque chose sur les modules pour « pipeline » et « module de contrôle » bien qu’aucun des articles n’ait mentionné comment ils fonctionnaient. Pour être honnête, je n’ai aucune idée sur la façon de mettre en œuvre cette partie.

Mes présomptions sont-elles erronées sur l’un des 2 points? Quelqu’un pourrait-il m’expliquer en détail comment mordre dans ce problème? Quelqu’un at-il un exemple de travail codeur / décodeur DES en pipeline sur FPGA? Je serai reconnaissant pour chaque aide.

Eugene Sh.

Lâchement lié: DES est cassé. Ne l’utilisez pas.

Tony EE rocketscientist

Mieux vaut utiliser 2Fish. Même si la NSA l’a mal classée au 2e rang

Eugene Sh.

Eh bien, la norme de l’industrie est AES, qui est actuellement Rijndael …

Filip Mazi

Pour être honnête, je n’ai pas l’intention de l’utiliser. C’est juste mon projet universitaire. Je suis intéressé par la programmation de FPGA, VHDL, Cryptography et Cryptanalysis alors mon professeur m’a suggéré de faire cela comme mon projet. Je proposais également AES mais cette idée a été rejetée car elle était trop compliquée à mon stade (2ème année de Uni) et que je devais laisser cela à ma thèse.

faible

Cela ne ressort pas tout à fait de votre question, mais j’imagine que dans l’implémentation séquentielle actuelle, vous n’avez qu’un seul bloc feistel. Vous avez un compteur de 0 à 15 et passez par le même feistel 16 fois pour chiffrer chaque bloc (vous avez actuellement besoin de 16 cycles pour traiter un bloc). Ensuite, une évolution possible du pipeline consiste à avoir 16 blocs de feistels en séquence et à faire en sorte que chaque bloc traverse ce pipeline. Vous pouvez donc traiter 16 blocs (chacun à une position différente dans le pipeline) simultanément et chiffrer un bloc par cycle … À moins que ce ne soit déjà le cas. Précisez s’il vous plaît.

Réponses


 Jasen

une implémentation en série met toutes les données à travers chaque étape et vous devez attendre que la sortie se stabilise avant de pouvoir l’utiliser.

schématique

simuler ce circuit – Schéma créé à l’aide de CircuitLab

avec une implémentation en pipeline, il y a un registre entre chaque étape afin qu’après que la première étape ait traité le bloc, sa sortie puisse être stockée dans le registre et que le deuxième bloc puisse entrer dans le pipeline. de cette manière, aux dépens d’une certaine latence, le débit peut être multiplié par plusieurs.

La raison pour laquelle la mise en œuvre en pipeline inférieure est plus rapide est que le premier étage ne peut être cadencé qu’à la vitesse inverse de la propagation du retard de F1-F4 en cascade. Si F1-F4 prend très longtemps à calculer, vous ne pouvez pas pomper beaucoup de données à travers elle.

Le chemin de données en pipeline peut être cadencé aussi vite que le pire des délais de propagation des étages le permet. Cela signifie que, en supposant que F1-F4 ont le même délai de propagation, vous pouvez pomper 4 fois plus de données.

Filip Mazi

Merci pour votre réponse. Je pense que c’est ce que j’ai fait (je viens de modifier mon article) mais je devrai attendre octobre pour le tester sur FPGA.

 

#en, des, différent?, du, Est-il, Le, Pipeline, quoi, séquentiel?

 

google

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *