FR 3107127 A1 20210813 FR 2001243 A 20200207 Procédé et dispositif de conception d’un circuit mémoire calculatoire La présente description concerne un procédé de conception de circuits pour un circuit mémoire calculatoire (106) comprenant : évaluer, par le dispositif informatique (1100) pour une pluralité de types de cellules mémoires, un nombre (N) représentant un nombre de cycles du circuit mémoire calculatoire (106) par instruction à exécuter par le circuit mémoire calculatoire (106), l’évaluation étant basée sur l’indication d’au moins un type d’instruction ; déterminer, par le dispositif informatique, pour chacun de la pluralité de types de cellules mémoires et sur la base du nombre N et d’une taille de stockage mémoire, une fréquence de fonctionnement du circuit mémoire calculatoire ; et sélectionner l’un de la pluralité de types de cellules mémoires sur la base de la fréquence de fonctionnement déterminée du circuit mémoire calculatoire. Figure pour l'abrégé : Fig. 1 Procédé et dispositif de conception d’un circuit mémoire calculatoire La présente description concerne de façon générale le domaine de la conception de circuits, et en particulier un procédé et un dispositif pour la conception d’un circuit mémoire calculatoire. Il a été montré que, dans l’informatique à hautes performances, la consommation d’énergie du transfert de données entre les mémoires et les éléments de traitement de données est nettement supérieure à la consommation d’énergie des opérations elles-mêmes. Les architectures munies de fonctions de calcul dans la mémoire (IMC - de l’anglais In-Memory Computing) et les architectures munies de fonctions de calcul proches de la mémoire (NMC - de l’anglais Near-Memory Computing) répondent à ce problème en réalisant certaines opérations de traitement de données dans la matrice de cellules binaires (IMC) ou au niveau de circuits périphériques (NMC). Par exemple, des solutions connues dans la technique comme les C-SRAM (de l’anglais Computational Static Random Access Memory - mémoire statique calculatoire à accès aléatoire) ont été proposées. De telles solutions peuvent offrir des avantages en ce qui concerne l’efficacité énergétique pouvant atteindre plusieurs dizaines de TOPS/W (téra-opérations par seconde et par watt). Des outils de conception de circuits ont été proposés pour permettre la conception de circuits mémoires basés sur des cellules mémoires standards, comme des cellules SRAM. Par exemple, pour des contraintes de mémoire données (capacité de stockage, surface, etc.), de tels outils sont capables d’évaluer, par simulation ou par d’autres techniques, des mises en œuvre basées sur divers de types de cellules SRAM et sont capables de générer une ou plusieurs solutions ayant une meilleure efficacité énergétique. Il y a toutefois une difficulté technique pour obtenir un outil de conception de circuits pour réaliser la conception de circuits qui doivent inclure des solutions IMC ou NMC, comme des C-SRAM. En particulier, il y a des difficultés techniques en ce qui concerne la qualification du silicium et la faible capacité d’adaptation à des exigences d’application spécifiques. Un objet de modes de réalisation de la présente description est de répondre au moins partiellement à une ou plusieurs difficultés de l’art antérieur. Selon un aspect, on prévoit un procédé pour la conception de circuits d’un circuit mémoire calculatoire comprenant : recevoir, par un dispositif informatique, une indication d’au moins un type d’instruction à exécuter par le circuit mémoire calculatoire et une indication d’une taille de stockage mémoire du circuit mémoire calculatoire ; évaluer, par le dispositif informatique pour une pluralité de types de cellules mémoires, un nombre représentant un nombre de cycles du circuit mémoire calculatoire par instruction à exécuter par le circuit mémoire calculatoire, l’évaluation étant basée sur l’indication d’au moins un type d’instruction ; déterminer, par le dispositif informatique, pour chacun de la pluralité de types de cellules mémoires et sur la base du nombre N et de la taille de stockage mémoire, une fréquence de fonctionnement du circuit mémoire calculatoire ; et sélectionner l’un de la pluralité de types de cellules mémoires sur la base de la fréquence de fonctionnement déterminée du circuit mémoire calculatoire. Selon un mode de réalisation, le procédé comprend en outre : déterminer, par le dispositif informatique pour chacun de la pluralité de types de cellules mémoires, sur la base de la fréquence de fonctionnement du circuit mémoire calculatoire, une fréquence d’instructions maximum des instructions à exécuter par le circuit mémoire calculatoire ; et sélectionner, par le dispositif informatique, l’un de la pluralité de types de cellules mémoires ayant la fréquence d’instructions maximum la plus élevée. Selon un mode de réalisation, le procédé comprend en outre : recevoir, par le dispositif informatique, une indication d’une fréquence d’instructions des instructions à exécuter par le circuit mémoire calculatoire ; déterminer, par le dispositif informatique pour chacun de la pluralité de types de cellules mémoires et sur la base de l’indication de la fréquence d’instructions et du nombre N, une fréquence de fonctionnement minimum du circuit mémoire calculatoire ; et sélectionner un ou plusieurs de la pluralité de types de cellules mémoires pour lesquels une fréquence de fonctionnement est supérieure à la fréquence de fonctionnement minimum du circuit mémoire calculatoire. Selon un mode de réalisation, le procédé comprend en outre la génération, par le dispositif informatique, pour le type sélectionné de cellule mémoire, d’un ou plusieurs fichiers de conception représentant une mise en œuvre du circuit mémoire calculatoire ayant le type sélectionné de cellules mémoires et un ou plusieurs éléments de traitement pour mettre en œuvre ladite au moins une opération. Selon un mode de réalisation, l’indication d’au moins un type d’instruction comprend une indication d’un nombre d’opérations de chacun desdits au moins un type d’instruction. Selon un mode de réalisation, l’indication d’au moins un type d’instruction comprend une indication d’une distribution relative d’occurrences de chaque type d’instruction par rapport au nombre global d’instructions. Selon un autre aspect, on prévoit un dispositif informatique pour la conception de circuits d’un circuit mémoire calculatoire, le dispositif informatique comprenant un ou plusieurs processeurs sous le contrôle d’instructions mémorisées dans une mémoire d’instructions, le dispositif informatique étant agencé pour : recevoir une indication d’au moins une opération à effectuer par le circuit mémoire calculatoire et une indication d’une taille de stockage mémoire du circuit mémoire calculatoire ; déterminer, pour une pluralité de types de cellules mémoires, un nombre représentant un nombre de cycles du circuit mémoire calculatoire par instruction à exécuter par le circuit mémoire calculatoire ; déterminer, pour chacun de la pluralité de types de cellules mémoires et sur la base du nombre N et de la taille de stockage mémoire, une fréquence de fonctionnement du circuit mémoire calculatoire ; et sélectionner l’un de la pluralité de types de cellules mémoires sur la base de la fréquence de fonctionnement déterminée du circuit mémoire calculatoire. Selon un mode de réalisation, le dispositif informatique est en outre agencé pour : déterminer, pour chacun de la pluralité de types de cellules mémoires, sur la base de la fréquence de fonctionnement du circuit mémoire calculatoire, une fréquence d’instructions maximum des instructions à exécuter par le circuit mémoire calculatoire ; et sélectionner, par le dispositif informatique, l’un de la pluralité de types de cellules mémoires ayant la fréquence d’instructions maximum la plus élevée. Selon un mode de réalisation, le dispositif informatique est en outre agencé pour : recevoir une indication d’une fréquence d’instructions des instructions à exécuter par le circuit mémoire calculatoire ; déterminer, pour chacun de la pluralité de types de cellules mémoires et sur la base de l’indication de la fréquence d’instructions et du nombre N, une fréquence de fonctionnement minimum du circuit mémoire calculatoire ; et sélectionner un ou plusieurs de la pluralité de types de cellules mémoires pour lesquels une fréquence de fonctionnement est supérieure à la fréquence de fonctionnement minimum du circuit mémoire calculatoire. Selon un mode de réalisation, le dispositif informatique est en outre agencé pour générer, pour chacun des types sélectionnés de cellules mémoires, un ou plusieurs fichiers de conception représentant une mise en œuvre du circuit mémoire calculatoire ayant le type de cellules mémoires sélectionné et un ou plusieurs éléments de traitement pour mettre en œuvre ladite au moins une opération. Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles: la figure 1 représente schématiquement des circuits de mémoires calculatoires selon un exemple de réalisation de la présente description; la figure 2 représente schématiquement une découpe de mémoire C-SRAM comportant une seule partition SRAM et un seul bus mémoire local ; la figure 3 représente schématiquement une découpe de mémoire C-SRAM comportant deux partitions SRAM à largeur complète ; la figure 4 représente schématiquement une découpe de mémoire C-SRAM comportant deux partitions SRAM à demi-largeur ; la figure 5 représente schématiquement une découpe de mémoire C-SRAM comportant quatre partitions SRAM à demi-largeur et deux bus mémoire locaux; la figure 6 est un schéma de circuit d’une cellule mémoire SRAM à un seul port ; la figure 7 est un schéma de circuit d’une cellule mémoire SRAM à double port ; la figure 8 est un schéma de circuit d’une cellule mémoire SRAM à deux ports ; la figure 9 est un tableau représentant des capacités de lecture et d’écriture de cellules mémoires SRAM à un seul port, à double port et à deux ports, ainsi que leurs équivalents à double pompage ; la figure 10 est un graphique représentant la consommation d’énergie en fonction de la fréquence d’instructions de solutions C-SRAM basées sur différents types de mémoire SRAM selon un exemple de réalisation de la présente description ; la figure 11 représente schématiquement un dispositif informatique agencé pour réaliser la conception de circuits d’une mémoire calculatoire selon un exemple de réalisation de la présente description ; la figure 12 est un organigramme représentant des étapes dans un procédé de conception de circuits d’une mémoire calculatoire selon un exemple de réalisation de la présente description ; la figure 13 est un organigramme illustrant une fonction de prise de décision automatique du procédé de la figure 12 plus en détail selon un exemple de réalisation de la présente description ; la figure 14 est un chronogramme illustrant un exemple d’exécution d’une fonction MAC (multiplication et accumulation) utilisant des solutions C-SRAM comportant des cellules SRAM 1RW, 1R1W et 2RW ou 1R1RW ; la figure 15 est un chronogramme illustrant un exemple d’exécution d’une fonction MAC utilisant des solutions C-SRAM comportant des cellules SRAM 1R1W et 2RW ou 1R1RW ; la figure 16 est un chronogramme illustrant un exemple d’exécution d’une fonction MAC utilisant des solutions C-SRAM comportant des cellules SRAM 4RW ou 2R2RW ; la figure 17 est un chronogramme illustrant des exemples d’exécution, utilisant une solution C-SRAM comportant des cellules SRAM 4RW, d’une pluralité de types d’instructions ayant chacun un nombre d’opérandes différent ; la figure 18 est un chronogramme illustrant des exemples d’exécution, utilisant une solution C-SRAM comportant des cellules SRAM 2RW ou 1R1W, d’une pluralité de types d’instructions ayant chacun un nombre d’opérandes différent ; la figure 19 est un chronogramme illustrant des exemples d’exécution, utilisant une solution C-SRAM comportant des cellules SRAM 1RW, d’une pluralité de types d’instructions ayant chacun un nombre d’opérandes différent ; la figure 20 est un chronogramme illustrant des exemples d’exécution, utilisant une solution C-SRAM comportant des cellules SRAM 1RW, d’une pluralité de types d’instructions ayant chacun un nombre d’opérandes différent ; la figure 21 est un chronogramme illustrant des exemples d’exécution, utilisant une solution C-SRAM comportant des cellules SRAM 1RW, d’une pluralité de types d’instructions ayant chacun un nombre d’opérandes différent ; la figure 22 est un chronogramme illustrant des exemples d’exécution, utilisant une solution C-SRAM comportant des cellules SRAM 4RW, d’une pluralité de types d’instructions ayant chacun un nombre d’opérandes différent ; la figure 23 est un chronogramme illustrant des exemples d’exécution, utilisant une solution C-SRAM comportant des cellules SRAM 2RW ou 1R1RW, d’une pluralité de types d’instructions ayant chacun un nombre d’opérandes différent ; et la figure 24 est un chronogramme illustrant des exemples d’exécution, utilisant une solution C-SRAM comportant des cellules SRAM 2RW ou 1R1RW, d’une pluralité de types d’instructions ayant chacun un nombre d’opérandes différent. De mêmes éléments ont été désignés par de mêmes références dans les différentes figures. En particulier, les éléments structurels et/ou fonctionnels communs aux différents modes de réalisation peuvent présenter les mêmes références et peuvent disposer de propriétés structurelles, dimensionnelles et matérielles identiques. Sauf précision contraire, lorsque l'on fait référence à deux éléments connectés entre eux, cela signifie directement connectés sans éléments intermédiaires autres que des conducteurs, et lorsque l'on fait référence à deux éléments couplés entre eux, cela signifie que ces deux éléments peuvent être connectés ou être reliés par l'intermédiaire d'un ou plusieurs autres éléments. Dans la description qui suit, lorsque l'on fait référence à des qualificatifs de position absolue, tels que les termes "avant", "arrière", "haut", "bas", "gauche", "droite", etc., ou relative, tels que les termes "dessus", "dessous", "supérieur", "inférieur", etc., ou à des qualificatifs d'orientation, tels que les termes "horizontal", "vertical", etc., il est fait référence sauf précision contraire à l'orientation des figures. Sauf précision contraire, les expressions "environ", "approximativement", "sensiblement", et "de l'ordre de" signifient à 10% près, de préférence à 5% près. Dans la présente description, le terme "circuit mémoire calculatoire" sera utilisé pour désigner un dispositif mémoire comportant de la mémoire ayant des capacités de calcul, par exemple sous la forme de capacités In-Memory Computing (IMC – calculs dans la mémoire) ou de capacités Near-Memory Computing (NMC – calculs proches de la mémoire). Dans tous les cas, les éléments de traitement de données sont par exemple présents dans la matrice mémoire avant le bus système, en d’autres termes avant le bus reliant le dispositif mémoire à un ou plusieurs processeurs du système. Les capacités IMC correspondent par exemple à un dispositif mémoire dans lequel des éléments de traitement de données sont situés dans la matrice mémoire avant les amplificateurs de détection (lecture) de la matrice mémoire. Les capacités NMC correspondent par exemple à un dispositif mémoire dans lequel des éléments de traitement de données sont prévus entre les amplificateurs de détection (lecture) et le bus système, en d’autres termes dans lequel le traitement est réalisé sur une lecture de données numériques dans la mémoire avant les sorties de données du dispositif mémoire. La figure 1 illustre schématiquement des circuits mémoires calculatoires 102, 104 et 106 selon des exemples de réalisation de la présente description. Les circuits mémoires calculatoires 102 et 104 correspondent à des approches entièrement personnalisées dans lesquelles la matrice mémoire et les éléments de calcul sont conçus en fonction de l’application spécifique. Le circuit 102 comprend une matrice SRAM 108, bien qu’on puisse utiliser d’autres types de mémoire. La matrice 108 est associée à un décodeur de rangée 110, un décodeur de colonne 112 et un contrôleur de mémoire 114. En outre, des éléments de commande d’écriture 116 contrôlent l’écriture de données dans la matrice mémoire 108, et des amplificateurs de détection (lecture) (SAs) 118 sont utilisés pour convertir des signaux présents sur les lignes de bits de la matrice mémoire 108 en signaux de sortie de la matrice mémoire 108. Dans certains modes de réalisation, on peut trouver des bascules de données à M bits (DFF) 120 pour formater les données lues dans la matrice mémoire 108 dans un format à M bits traité par les éléments de calcul, et pour permettre à des valeurs de données de M bits d’être écrites dans la matrice mémoire 108 pour être stockées temporairement avant l’opération d’écriture. La partie calcul des circuits 102 et 104 comprend par exemple une partie de calcul numérique à M bits 122, un multiplexeur 124 pour réaliser une conversion de N bits en M bits et vice versa, un décodeur d’instructions de N bits 126, et, dans certains modes de réalisation, des bascules de données 128 assurant une interface entre la partie de calcul et le bus système de N bits 130. Le nombre de bits N du bus système 130 est par exemple inférieur au nombre de bits M traités par le circuit de calcul numérique 122. Par exemple, dans certains modes de réalisation, M est un entier multiple de N. Dans un exemple, le bus système 130 est un bus de 32 bits, et le circuit de calcul numérique 122 comprend des processeurs agencés pour réaliser des opérations sur des valeurs de M bits, où M est par exemple égal à 64, 128 ou 256. Le circuit mémoire calculatoire 104 est par exemple identique au circuit 102, excepté que la matrice mémoire 108 est en outre agencée pour avoir une forme personnalisée et un partitionnement. Le décodeur de rangée 110 est par exemple remplacé par un sélecteur multi-rangée 110’ agencé pour sélectionner de multiples rangées pendant des opérations de lecture et d’écriture. Cela permet de mettre en œuvre un IMC vrai. Le circuit mémoire calculatoire 106 correspond à une approche automatisée dans laquelle la partie mémoire et la partie calcul du circuit sont générées automatiquement sur la base des techniques décrites ici. Par exemple, l’approche automatisée implique une séparation entre la conception de la partie mémoire 132, qui est par exemple générée en utilisant un compilateur de SRAM ou un autre type de compilateur de mémoire, et la conception d’un conteneur numérique 134 correspondant à la partie de calcul. La partie mémoire 132 et le conteneur numérique 134 sont par exemple reliés par un bus local de M bits 136. La partie mémoire 132 et le conteneur numérique 134 comportent par exemple les mêmes éléments que les parties mémoire et calcul du circuit 102. Dans certains modes de réalisation, la partie mémoire 132 comprend une ou plusieurs partitions, comme on va le décrire maintenant en faisant référence aux figures 2 à 5. La figure 2 illustre schématiquement une découpe de mémoire C-SRAM 200 comportant une seule partition SRAM 202, qui dans l’exemple de la figure 2 a une largeur IO (entrée-sortie) égale à un mot de 128 bits, et un seul bus mémoire local 136 couplant la partition SRAM 202 au conteneur numérique 134. La figure 3 illustre schématiquement une découpe de mémoire C-SRAM 300 comportant deux partitions SRAM à largeur complète 302, 304, chaque partition 302, 304 ayant par exemple une largeur IO égale à un mot de 128 bits, et un seul bus mémoire local 136. Le bus local 136 comprend par exemple une portion 306 reliant la partition 302 au bus 136, et une portion 308 reliant la partition 304 au bus 136. La figure 4 illustre schématiquement une découpe de mémoire C-SRAM 400 comportant deux partitions SRAM à demi-largeur 402, 404. Par exemple, chacune des partitions a une largeur IO égale à la moitié d’une longueur de mots, ce qui dans l’exemple de la figure 4 correspond à une largeur IO de 64 bits pour une longueur de mots de 128 bits. La partition 402 comprend par exemple les bits les moins significatifs (LSB) de chaque mot, et la partition 404 les bits les plus significatifs (MSB) de chaque mot, de sorte que conjointement les partitions 402, 404 mémorisent des mots entiers dans chaque rangée correspondante. Le bus local 136 dans l’exemple de la figure 4 comprend un bus local 406 reliant la partition 402 au conteneur numérique 134, et un bus local 408 reliant la partition 404 au conteneur numérique 134, chacun des bus locaux 406, 408 étant un bus de 64 bits, c’est-à-dire d’une largeur égale à la largeur IO de chaque partition. La figure 5 illustre schématiquement une découpe de mémoire C-SRAM 500 comportant quatre partitions SRAM à demi-largeur 502, 504, 506 et 508. Les partitions 502 et 504 mémorisent par exemple des LSB, tandis que les partitions 506 et 508 mémorisent par exemple des MSB, de sorte que conjointement les partitions 502, 506 mémorisent par exemple des mots entiers dans chaque rangée correspondante, et conjointement les partitions 504 et 508 mémorisent par exemple des mots entiers dans chaque rangée correspondante. Le bus local 136 dans l’exemple de la figure 5 comprend un bus local 510 reliant les partitions 502 et 504 au conteneur numérique 134, et un bus local 512 reliant les partitions 506 et 508 au conteneur numérique 134. Il est connu de mettre en œuvre des cellules mémoires d’une matrice mémoire en utilisant divers types différents de cellules mémoires. Par exemple, dans le cas de cellules mémoires SRAM, des types de cellules à un seul port, à double port et à multiples ports sont connus, et certaines techniques, comme une technique connue sous le nom de double pompage, peuvent être utilisées pour émuler le fonctionnement d’une mémoire ayant un plus grand nombre de ports que le nombre effectivement disponible. Dans la présente description, on décrit des exemples basés sur des cellules mémoires SRAM à un seul port, à double port et à deux ports, chacun avec et sans le double pompage. Toutefois, dans des variantes de réalisation, des types de cellules mémoires alternatifs et/ou additionnels pourraient être considérés, y compris des cellules mémoires aussi bien volatiles que non volatiles. La figure 6 est un schéma de circuit d’une cellule mémoire SRAM à un seul port 600 selon un exemple de réalisation. La cellule comprend par exemple un premier inverseur constitué de transistors 602 et 604 couplés en série entre les rails de tension VDD et de masse, et un deuxième inverseur constitué de transistors 606 et 608 couplés en série entre les rails de tension VDD et de masse, les inverseurs étant couplés de manière croisée entre des nœuds de mémorisation de bit 610, 612. Le nœud 610 est couplé à une ligne de bit BL par un transistor 614 ayant sa grille couplée à une ligne de mot WL, et le nœud 612 est couplé à une ligne de bit par un transistor 616 ayant sa grille couplée à la ligne de mot WL. La figure 7 est un schéma de circuit d’une cellule mémoire SRAM à double port 700 selon un exemple de réalisation de la présente description. La cellule 700 est par exemple similaire la cellule 600 de la figure 6, et les éléments similaires portent les mêmes références numériques et ne seront pas décrits de nouveau en détail. Dans la cellule mémoire 700, les transistors 614, 616 ont leurs grilles couplées à une ligne de mot WL1, et couplent respectivement les nœuds de mémorisation 610, 612 aux lignes de bit BL1 et . La cellule mémoire 700 comprend en plus, par rapport à la cellule mémoire 600 de la figure 6, un autre transistor 702 couplant le nœud de mémorisation 610 à une autre ligne de bit BL2, et un autre transistor 704 couplant le nœud de mémorisation 612 à une autre ligne de bit . La figure 8 est un schéma de circuit d’une cellule mémoire SRAM à deux ports 800 selon un exemple de réalisation de la présente description. La cellule 800 est par exemple similaire à la cellule 600 de la figure 6, et les éléments similaires portent les mêmes références numériques et ne seront pas décrits de nouveau en détail. Dans la cellule mémoire 800, les transistors 614, 616 ont leurs grilles couplée à une ligne de mot WL1, et couplent respectivement les nœuds de mémorisation 610, 612 à des lignes de bit WBL et . Par rapport à la cellule mémoire 600, la cellule mémoire 800 comprend en outre des transistors 802 et 804 couplés entre le rail de masse et une autre ligne de bit RBL. Le transistor 802 a par exemple sa grille couplée au nœud de mémorisation 612, et le transistor 804 a par exemple sa grille couplée à une autre ligne de mot WL2. Les cellules mémoires 600, 700 et 800 permettent par exemple diverses possibilités d’accès pendant chaque cycle mémoire, comme on va le décrire maintenant plus en détail en faisant référence à la figure 9. La figure 9 est un tableau représentant des capacités de lecture et d’écriture de cellules mémoires SRAM à simple port (S-P), à double port (D-P) et à deux ports (2-P). Dans ce tableau, des points pleins représentent des mises en œuvre n’utilisant pas le double pompage, tandis que des points creux représentent des mises en œuvre qui utilisent le double pompage. Le double pompage est une technique dans laquelle la matrice mémoire comprend une horloge interne ayant une fréquence d’horloge plus rapide, permettant, dans un cycle mémoire donné, de réaliser deux accès mémoire. Par exemple, le double pompage est décrit plus en détail dans la publication de G.S. Ditlow et al. intitulée “A 4R2W Register File for 2.3 GHz Wire-Speed POWER Processor with Double-Pumped Write Operation”, ISSCC, pp. 256-257, 2011, dont le contenu est incorporé ici en référence dans les limites autorisées par la loi. En considérant d’abord le cas de la cellule mémoire à simple port (S-P) 600, sans utilisation de double pompage, une seule cellule mémoire 600 d’une colonne peut être lue à la fois ou écrite à la fois pendant un cycle d’accès mémoire, comme cela est représenté par les caractères “1RW” (1-PORT). En outre, en utilisant le double pompage, il devient possible de réaliser des opérations équivalant à avoir deux ports (2-PORT). En particulier, la réalisation de deux accès en lecture ou en écriture devient possible, comme cela est représenté par les caractères “2RW” dans le tableau. Il est aussi possible de réaliser un seul accès en lecture et un seul accès en écriture, comme cela est représenté par les caractères “1R1W”, ou de réaliser une seule lecture, et un autre seul accès en lecture ou écriture, comme cela est représenté par les caractères “1R1RW”. Dans le cas de la cellule mémoire à double port 700, il devient possible, pendant un cycle d’accès mémoire et sans utilisation du double pompage, de réaliser deux opérations d’accès mémoire dans deux cellules mémoires différentes de chaque colonne. Ainsi, les types d’accès 2RW, 1R1W et 1R1RW sont possibles. En outre, en utilisant le double pompage, il devient possible de réaliser des opérations équivalant à avoir quatre ports (4-PORT). En particulier, la réalisation de quatre accès en lecture ou écriture devient possible, comme cela est représenté par des caractères “4RW” dans le tableau. Il est aussi possible de réaliser deux accès en lecture et deux accès en écriture, comme cela est représenté par les caractères “2R2W”, ou de réaliser deux accès en lecture, et deux autres accès en lecture ou écriture, comme cela est représenté par les caractères “2R2RW”. Dans le cas de la cellule mémoire à deux ports 800, il est possible, pendant un cycle d’accès mémoire et sans utiliser le double pompage, de réaliser un seul accès en lecture et un seul accès en écriture (1R1W). En outre, dans le cas où les lignes de bit WBL et ne sont pas réservées pour des opérations d’écriture, il est possible de réaliser une seule lecture par l’intermédiaire de la ligne de bit RBL, et un seul autre accès en lecture ou en écriture (1R1RW) par l’intermédiaire des lignes de bit WBL et . En outre, en utilisant le double pompage, il devient possible de réaliser deux accès en lecture et deux accès en écriture (2R2W), ou, dans le cas où les lignes de bit WBL et ne sont pas réservées pour des opérations d’écriture, de réaliser deux accès en lecture, et deux autres accès en lecture ou écriture (2R2RW). La figure 10 est un graphique représentant l’efficacité énergétique, en TOPS/W, en fonction de la fréquence d’instructions de solutions C-SRAM basées sur différents types de mémoires SRAM selon un exemple de réalisation de la présente description. Une courbe en trait plein 1002 en figure 10 représentent le cas d’une cellule mémoire du type mémoire 1RW ou 1R1W, une courbe en trait interrompu 1004 représente le cas d’un type de mémoire 2RW ou 1R1RW, et une courbe en pointillés 1006 représente le cas d’un type mémoire 4RW ou 2R2RW. On peut voir que, pour des fréquences d’instructions f inst inférieures, par exemple jusqu’à environ 200 MHz, la solution la plus efficace en énergie est une solution 1RW ou 1R1W. Pour des fréquences d’instructions f inst intermédiaires, par exemple entre environ 200 MHz et environ 400 MHz, la solution la plus efficace en énergie est une solution 2RW ou 1R1RW. Pour des fréquences d’instructions f inst supérieures, par exemple des fréquences au-dessus d’environ 500 MHz (la figure 10 illustre des fréquences d’instructions allant jusqu’à 530 MHz), la solution la plus efficace en énergie est une solution 4RW ou 2R2RW. Ainsi, on peut voir d’après la figure 10 que la meilleure efficacité énergétique est déterminée à la fois par la fréquence et par le nombre de ports de mémoire disponibles. La figure 11 illustre schématiquement un dispositif informatique 1100 agencé pour réaliser une conception de circuit d’une mémoire calculatoire selon un exemple de réalisation. Le dispositif informatique 1100 comprend par exemple un dispositif de traitement (P) 1102 comprenant un ou plusieurs processeurs sous le contrôle d’instructions mémorisées dans une mémoire d’instructions (INSTR MEM (RAM)) 1104. La mémoire d’instructions 1104 est par exemple une RAM. Le dispositif de traitement 1102 et la mémoire 1104 communiquent par exemple par l’intermédiaire d’un bus système 1106. En outre, dans certains modes de réalisation, le dispositif informatique 1100 comprend, aussi couplée au bus système 1106, une mémoire non volatile (NON-VOL MEM) 1108, et une interface d’entrée/sortie (I/O INTERFACE) 1110. La figure 12 est un organigramme représentant des étapes dans un procédé de conception de circuits selon un exemple de réalisation de la présente description. Le procédé de la figure 12 est par exemple mis en œuvre par le dispositif informatique 1100 de la figure 11. Par exemple, le dispositif de traitement 1102 est agencé pour mettre en œuvre ce procédé sous le contrôle des instructions mémorisées dans la mémoire d’instructions 1104. Le procédé de la figure 12 est basé sur une fonction de prise de décision automatique 1200, qui par exemple reçoit plusieurs fichiers de conception de circuits (INPUT IPs) 1202 en entrée. Par exemple, ces entrées 1202 comprennent des fichiers de conception associés à la partie de stockage mémoire de la mémoire calculatoire. Ces fichiers de conception sont par exemple sous forme de vues CAD (conception assistée par ordinateur) générées par un ou plusieurs compilateurs de SRAM 1204. Dans l’exemple de la figure 12, il y a un compilateur de SRAM A basé sur une mémoire 1RW, un compilateur de SRAM B basé sur une mémoire 1R1W, un compilateur de SRAM C basé sur une mémoire 2RW, et un compilateur de SRAM D basé sur une mémoire 4RW. Les entrées 1202 comprennent aussi par exemple des fichiers de conception 1206 pour mettre en œuvre le conteneur numérique. Par exemple, ces fichiers de conception 1206 comprennent des vues en langage HDL (langage de description matérielle) du conteneur numérique, et sont par exemple sous forme d’une conception IP (propriété intellectuelle) en langage RTL configurable (langage à transfert de registres). Par exemple, ces fichiers de conception comprennent tous les opérateurs disponibles pour la partie calcul de la mémoire calculatoire, ce qui peut inclure des opérateurs arithmétiques comme addition (ADD), soustraction (SUB), multiplication (MUL), division (DIV), MAC (multiplication et accumulation), etc., des opérateurs logiques comme ET, OU, OU EXCLUSIF, etc., ou d’autres types d’opérations comme le décalage (SHIFT), l’incrémentation (INC) ou la décrémentation (DEC). La fonction de prise de décision automatique 1200 reçoit aussi par exemple des entrées d’utilisateur (USER INPUTS). Cela peut inclure des entrées associées à des caractéristiques de mémoire (MEM FEATURES) 1208, comme la taille de mot, le nombre de mots, etc., et des entrées associées à des caractéristiques (COMP FEATURES) 1210 des calculs à réaliser, comme les opérations à réaliser, la fréquence d’instructions, et dans certains cas la distribution d’occurrences d’instructions, en d’autres termes le pourcentage avec lequel chaque instruction est susceptible de survenir par rapport au nombre total d’instructions à exécuter. Sur la base des entrées, la fonction de prise de décision automatique 1200 génère par exemple une découpe C-SRAM (C-SRAM CUT) correspondant à la sélection de l’un des compilateurs SRAM. En outre, la fonction de prise de décision automatique 1200 génère par exemple un fichier de conception paramétré du conteneur numérique, définissant par exemple un sous-ensemble sélectionné des opérations disponibles à mettre en œuvre dans la partie calcul. Le fichier de conception paramétré est par exemple sous la forme d’une vue HDL. Les parties conteneur numérique et stockage mémoire de la découpe C-SRAM sont par exemple générées dans une étape 1212. Par exemple, cela implique la génération d’un ou plusieurs fichiers de conception représentant des vues EDA (de l’anglais Electronic Design Automation - automatisation de conception électronique) du compilateur SRAM sélectionné, avec un nombre requis de découpes. En outre, le fichier de conception paramétré est par exemple traité afin de générer une vue HDL. Ensuite, dans une étape (FULL CUT GENERATION) 1214, le conteneur numérique et les découpes SRAM sont par exemple combinées pour générer un ou plusieurs fichiers de conception C-SRAM assemblés, correspondant par exemple à des vues EDA de la C-SRAM qui sont prêtes à être utilisées. Dans certains modes de réalisation, une mémoire calculatoire est ensuite fabriquée sur la base desdits un ou plusieurs fichiers de conception représentant la partie stockage mémoire et la partie calculatoire assemblées. La figure 13 est un organigramme illustrant la fonction de prise de décision automatique du procédé de la figure 12 plus en détail selon un exemple de réalisation. L’exemple de la figure 13 est basé sur des entrées d’utilisateur indiquant les instructions à exécuter par la partie calcul, et/ou le nombre d’opérations par instructions. La fréquence d’instructions f inst 1302 est aussi par exemple fournie en tant qu’entrée d’utilisateur, ainsi que la taille mémoire SRAM totale 1303. Dans une étape 1304, un type de SRAM est par exemple choisi. Par exemple, chacun des types de SRAM disponibles est choisi tour à tour pendant le procédé, et dans l’étape 1304 un type SRAM pas encore traité est choisi. Les types de SRAM disponibles correspondent par exemple à ceux pour lesquels un compilateur de SRAM correspondant 1204 de la figure 12 est disponible. Dans une étape 1305, une évaluation est faite du nombre N représentant un nombre de cycles moyen du circuit mémoire calculatoire par instruction à exécuter par le circuit mémoire calculatoire. Cela permet par exemple de calculer une fréquence C-SRAM minimum f C-SRAM_min , où : f C-SRAM _min = N*f inst Le nombre moyen N de cycles du circuit mémoire calculatoire par instruction à exécuter par le circuit mémoire calculatoire va dépendre du nombre d’opérandes des instructions, et aussi du type de mémoire, puisque certains types de mémoire vont permettre un plus grand fonctionnement en parallèle que d’autres. Cela va aussi dépendre de la possibilité de fonctionnement en parallèle de la partie calcul. Dans certains modes de réalisation, le calcul est basé sur un type d’instruction du pire cas, en d’autres termes sur le nombre maximum d’accès en mémoire parmi les instructions à exécuter, ou est basé sur une longueur d’instruction moyenne. Dans d’autres cas, décrits plus en détail ci-après, le calcul est basé sur la distribution d’occurrences d’instructions. Par exemple, le tableau suivant fournit un nombre typique d’opérations d’accès mémoire associé à certaines opérations définies précédemment : Opération Nombre d’accès en mémoire AND 5 OR 5 XOR 5 ADD 5 SUB 5 SHIFT 4 INC 4 DEC 4 MAC 6 On va maintenant décrire certains exemples du calcul du nombre moyen N de cycles du circuit mémoire calculatoire par instruction à exécuter en faisant référence aux figures 14 à 24. Dans les figures 14 à 16, la “D” représente une opération de décodage d’instruction, les lettres “MUL” une opération de multiplication, les lettres “ADD” une addition, la lettre “R” une opération de lecture, et la lettre “W” une opération d’écriture. La figure 14 est un chronogramme illustrant un exemple d’exécution d’une fonction MAC (multiplication et accumulation) utilisant des solutions C-SRAM comportant des cellules SRAM 1RW, 1R1W et 2RW ou 1R1RW. Un exemple du signal d’horloge d’instructions CLK_inst est représenté en haut de la figure, et deux instructions MAC INST_1 et INST_2 sont représentées. Dans un premier exemple de la figure 14, on utilise une cellule SRAM 1RW. Dans ce cas, la fréquence f C-SRAM de l’horloge C-SRAM CLK_C est égale à cinq fois la fréquence f inst de l’horloge CLK_inst. Une rangée 1402 en figure 14 représente la partie de décodage d’instructions et de calcul de la C-SRAM, et une rangée 1404 représente des accès mémoire par l’intermédiaire de l’unique port PORT A de la SRAM. On peut voir que, dans le premier exemple, pendant un cycle d’instruction, la première période de calcul implique une opération de décodage d’instruction, les deuxième et troisième périodes de calcul impliquent des opérations de lecture à partir de la SRAM, la quatrième période de calcul implique une multiplication des deux valeurs lues ainsi qu’une opération de lecture d’une autre valeur, et la cinquième période de calcul implique l’addition du résultat de la multiplication et de la nouvelle valeur lue en mémoire. Le résultat est écrit en mémoire pendant la première période de calcul du cycle d’instruction suivant. Ainsi, le temps total 1406 de l’opération est égal à six périodes de l’horloge CLK_C. La figure 14 illustre aussi un deuxième exemple basé sur une SRAM 1R1W. Dans ce cas, N est encore égal à cinq. Une rangée 1408 en figure 14 représente la partie de décodage d’instructions et de calcul de la C-SRAM, une rangée 1410 représente des accès en mémoire par l’intermédiaire du port d’écriture PORT A de la mémoire, et une rangée 1412 représente des accès en mémoire par l’intermédiaire du port de lecture PORT B de la mémoire. Comme cela est représenté par les rangées 1408, 1410et 1412 de la figure 14, la seule différence par rapport au premier exemple est que l’écriture est réalisée par l’intermédiaire d’un autre port. Le temps total 1414 de l’opération reste égal à six périodes de l’horloge CLK_C. La figure 14 illustre aussi un troisième exemple basé sur une SRAM 2RW ou 1R1RW. Dans ce cas, N est réduit à 4, et l’horloge CLK_C est ainsi redessinée pour cette valeur de N. Une rangée 1416 en figure 14 représente la partie de décodage d’instructions et de calcul de la C-SRAM, une rangée 1418 représente des accès en mémoire par l’intermédiaire du port PORT A de la SRAM, et une rangée 1412 représente des accès en mémoire par l’intermédiaire du port PORT B de la mémoire. Comme cela est représenté par les rangées 1416, 1418 et 1420, il est maintenant possible de réaliser les deux accès en lecture initiaux dans un seul cycle, économisant ainsi une période de calcul. Le temps total 1422 de l’opération est aussi réduit à cinq périodes de l’horloge CLK_C. La figure 15 est un chronogramme illustrant un exemple d’exécution d’une fonction MAC utilisant des solutions C-SRAM comportant des cellules SRAM 1R1W et 2RW ou 1R1RW. Dans l’exemple de la figure 15, on utilise un fonctionnement en pipeline dans la partie de décodage d’instructions et de calcul. Un premier exemple de la figure 15 est basé sur un type de SRAM 1R1W et N est égal à 3. Une rangée 1502 en figure 15 représente un premier étage de pipeline de la partie de décodage d’instructions et de calcul de la C-SRAM, une rangée 1504 représente un deuxième étage de pipeline de la partie de décodage d’instructions et de calcul de la C-SRAM, une rangée 1506 représente des accès mémoire par l’intermédiaire du port PORT A de la SRAM, et une rangée 1508 représente des accès mémoire par l’intermédiaire du port PORT B de la mémoire. Comme cela est illustré, dans une première période de calcul, une première instruction est décodée dans le premier étage de pipeline. Dans des deuxième et troisième périodes de calcul, des accès en lecture sont réalisés par l’intermédiaire du port PORT B. Dans la quatrième période de calcul, le premier étage de pipeline réalise une multiplication, le deuxième étage de pipeline réalise un décodage d’une deuxième instruction, et un accès en lecture est réalisé par l’intermédiaire du port PORT B. Dans la cinquième période de calcul, le premier étage de pipeline réalise une addition et un accès en lecture est réalisé par l’intermédiaire du port PORT B. Dans la sixième période de calcul, des accès en écriture et en lecture sont réalisés par l’intermédiaire des ports PORT A et PORT B respectivement. Dans la septième période de calcul, une troisième instruction est décodée dans le premier étage de pipeline, une multiplication est réalisée dans le deuxième étage de pipeline, et un accès en lecture est réalisé par l’intermédiaire du port PORT B. Dans la huitième période de calcul, une addition est réalisée par le deuxième étage de pipeline et un accès en lecture est réalisé par l’intermédiaire du port PORT B. Dans la neuvième période de calcul, des accès en écriture et en lecture sont réalisés par l’intermédiaire des ports PORT A et PORT B respectivement. Dans la dixième période de calcul, une multiplication est réalisée par le premier étage de pipeline, et un accès en lecture est réalisé par l’intermédiaire du port PORT B. Dans une onzième période de calcul, une addition est réalisée par le premier étage de pipeline, et dans la douzième période de calcul, un accès en écriture est réalisé par l’intermédiaire du port PORT A. Dans cet exemple, le temps total 1510 de l’opération est égal à six périodes de l’horloge CLK_C. La figure 15 illustre aussi un deuxième exemple basé sur un type de SRAM 2RW ou 1R1RW. Une rangée 1512 en figure 15 représente un premier étage de pipeline de la partie de décodage d’instructions et de calcul de la C-SRAM, une rangée 1514 représente un deuxième étage de pipeline de la partie de décodage d’instructions et de calcul de la C-SRAM, une rangée 1516 représente des accès mémoire par l’intermédiaire du port PORT A de la SRAM, et une rangée 1518 représente des accès mémoire par l’intermédiaire du port PORT B de la mémoire. Comme cela est représenté par les rangées 1512 à 1518, dans ce cas N est égal à 2, puisqu’il devient possible de réaliser les paires d’accès en lecture en parallèle plutôt qu’en série. Dans cet exemple, le temps total 1520 de l’opération est égal à cinq périodes de l’horloge CLK_C. La figure 16 est un chronogramme illustrant un exemple d’exécution d’une fonction MAC utilisant des solutions C-SRAM comportant des cellules SRAM 4RW ou 2R2RW. Dans cet exemple, N est égal à 1, en d’autres termes f C-SRAM est égal à f inst . En outre, dans cet exemple, il y a quatre étages de pipeline dans la partie de décodage d’instructions et de calcul de la C-SRAM. Une rangée 1602 en figure 16 représente un premier étage de pipeline de la partie de décodage d’instructions et de calcul de la C-SRAM, une rangée 1604 représente un deuxième étage de pipeline de la partie de décodage d’instructions et de calcul de la C-SRAM, une rangée 1606 représente un troisième étage de pipeline de la partie de décodage d’instructions et de calcul de la C-SRAM, une rangée 1608 représente un quatrième étage de pipeline de la partie de décodage d’instructions et de calcul de la C-SRAM, une rangée 1610 représente des accès mémoire par l’intermédiaire du port PORT A de la SRAM, et une rangée 1612 représente des accès mémoire par l’intermédiaire du port PORT B de la mémoire, une rangée 1614 représente des accès mémoire par l’intermédiaire du port PORT C de la mémoire et une rangée 1616 représente des accès mémoire par l’intermédiaire du port PORT D de la mémoire. Dans cet exemple, le temps total 1620 de l’opération est égal à cinq périodes de l’horloge CLK_C. Les figures 17 à 24 sont des chronogrammes similaires à ceux des figures 14 à 16, mais pour faciliter l’illustration ils présentent seulement des flèches orientées vers le haut pour représenter des fronts significatifs de l’horloge d’instructions CLK_inst, et ils ne représentent pas en détail les accès en lecture et en écriture qui sont réalisés. Alors que les exemples des figures 14 à 16 illustrent des cas dans lesquels il y a un seul type d’opération, qui est une opération MAC, dans les exemples des figures 17 à 24, il y a trois types d’opérations, chacune ayant un nombre différent d’opérandes. Dans les figures 17 à 24, le caractère “D” désigne une opération de décodage, le caractère “X” désigne une fonction appliquée à un ou plusieurs opérandes, le caractère “1” désigne un seul accès en lecture, le caractère “2” désigne deux accès en lecture, le caractère “X” désigne un calcul, et le caractère “W” désigne un accès en écriture. Les figures 17 à 24 correspondent à des exemples basés sur les trois types d’instructions suivants : une instruction à courte longueur basée sur un seul opérande correspondant au motif “D 1 X W” (voir par exemple la rangée 1702 de la figure 17), une instruction à longueur moyenne basée sur deux opérandes correspondant au motif “D 1 1 X W” (voir par exemple la rangée 1704 de la figure 17), et une instruction à grande longueur basée sur trois opérandes correspondant au motif “D 1 1 1 X W” (voir par exemple la rangée 1706 de la figure 17). Des blocs 1708 en trait interrompu dans les figures 17 à 21 représentent des opérations de repos insérées à la suite des instructions à longueur courte et moyenne pour les amener à la longueur d’instruction de six opérations. Des blocs 2202 en trait interrompu dans les figures 22 à 24 représentent une opération de repos insérée dans l’instruction à un seul opérande pour l’amener à la longueur d’instruction de cinq opérations, comme les types d’instructions à longueur moyenne et à grande longueur dans ces exemples. Les figures 17 et 18 sont basées sur des mises en œuvre en pipeline dans lesquelles il n’y a pas de dépendance entre une instruction et la suivante. La figure 17 est un chronogramme illustrant des exemples d’exécution, utilisant une solution C-SRAM comportant des cellules SRAM 4RW, des trois types d’instructions. Dans l’exemple de la figure 17 : La figure 18 est un chronogramme illustrant des exemples d’exécution, utilisant une solution C-SRAM comportant des cellules SRAM 2RW ou 1R1W, des trois types d’instructions. Dans l’exemple de la figure 18 : Les exemples des figures 19 à 21 sont basés sur des mises en œuvre ayant une dépendance d’instructions entre une instruction est la suivante. Dans certains modes de réalisation, la présence ou l’absence de dépendance d’instructions est inclus sous forme d’une entrée supplémentaire pendant l’opération 1305 de la figure 13. La figure 19 est un chronogramme illustrant des exemples d’exécution, utilisant une solution C-SRAM comportant des cellules SRAM 1RW, des trois types d’instructions. Dans cette mise en œuvre, il y a par exemple un tampon d’instruction de sorte que, pour éviter qu’un accès en lecture soit réalisé avant un accès en écriture de l’instruction précédente, un cycle d’attente (WAIT) est ajouté. Dans certains modes de réalisation, on utilise un FSM qui commence seulement sur des cycles qui sont des multiples de quatre. Dans l’exemple de la figure 19 : La figure 20 est un chronogramme illustrant des exemples d’exécution, utilisant une solution C-SRAM comportant des cellules SRAM 1RW, des trois types d’instructions. Comme dans l’exemple de la figure 19, en raison de la dépendance d’instructions, quelques cycles d’attente (WAIT) sont ajoutés. Dans certains modes de réalisation, on utilise un FSM qui commence seulement sur des cycles qui sont des multiples de cinq. Dans l’exemple de la figure 20 : La figure 21 est un chronogramme illustrant des exemples d’exécution, utilisant une solution C-SRAM comportant de cellules SRAM 1RW, des trois types d’instructions. Dans l’exemple de la figure 21, la valeur de N est suffisamment élevée pour qu’aucun cycle d’attente ne soit utilisé. Dans certains modes de réalisation, on utilise un FSM qui commence seulement sur des cycles qui sont des multiples de six. Dans l’exemple de la figure 21 : Les figures 22 à 24 correspondent à des exemples dans lesquels deux opérations de lecture peuvent être effectuées à la fois, et ainsi chacun des types d’instructions est réduit d’une période d’opération. Les figures 22 et 23 sont basées sur des mises en œuvre en pipeline dans lesquelles il n’y a pas de dépendance d’instructions entre une instruction et la suivante. La figure 22 est un chronogramme illustrant des exemples d’exécution, utilisant une solution C-SRAM comportant des cellules SRAM 4RW, des trois types d’instructions. Dans la mise en œuvre de la figure 22, on utilise par exemple un pipeline à cinq étages. Dans l’exemple de la figure 22 : La figure 23 est un chronogramme illustrant des exemples d’exécution, utilisant une solution C-SRAM comportant des cellules SRAM 2RW ou 1R1RW, des trois types d’instructions. Dans certains modes de réalisation, on utilise un FSM qui commence seulement sur des cycles qui sont des multiples de deux. Dans l’exemple de la figure 21 : En effet, des mises en œuvre basées sur une cellule SRAM 2RW ou 1R1RW sont par exemple possibles avec N égal à 2 ou 3. La figure 24 est un chronogramme illustrant des exemples d’exécution, utilisant une solution C-SRAM comportant des cellules SRAM 2RW ou 1R1RW, des trois types d’instructions. Dans l’exemple de la figure 24, on suppose une dépendance d’instructions, et aucun pipeline n’est utilisé. Dans certains modes de réalisation, on utilise un FSM qui commence seulement sur des cycles qui sont des multiples de cinq. Dans l’exemple de la figure 24 : On peut voir que, dans les exemples des figures 17, 18 et 21 à 24, le nombre d’opérations pouvant être effectuées pendant chaque cycle d’instruction est le même quelle que soit la distribution entre les instructions courtes, moyennes et longues. Toutefois, dans les exemples des figures 19 et 20, il y a une dépendance. Par exemple, on peut voir que, dans l’exemple de la figure 19 avec N=3, un gain est possible par rapport à l’exemple de la figure 21 sous certaines conditions concernant la distribution des instructions courtes, moyennes et longues, comme lorsque le nombre d’instructions courtes représente en moyenne au moins 33 pourcent des instructions. Dans un autre exemple, on peut voir que, dans l’exemple de la figure 20 avec N=4, un gain est possible par rapport à l’exemple de la figure 21 sous certaines conditions concernant la distribution des instructions courtes, moyennes et longues, comme lorsque le nombre d’instructions courtes et moyennes représentent en moyenne au moins 75 pourcent des instructions, et/ou lorsqu’il y a plus d’instructions moyennes que d’instructions courtes. Par conséquent, dans certains modes de réalisation, l’indication des instructions fournies en entrée 1301 de la figure 13 inclut une indication de la distribution entre les types d’instructions, comme le pourcentage moyen d’occurrences pour chaque type d’instruction s’il y a plusieurs longueurs d’instructions différentes. Comme cela a été montré précédemment, pour certains types de mémoire SRAM, seule la longueur d’instruction du pire cas est considérée, c’est-à-dire la longueur d’instruction la plus grande, alors que pour d’autres types de mémoire SRAM, la distribution particulière est aussi prise en compte. Par exemple, la mémoire non volatile 1108 de la figure 11 mémorise une indication, pour chaque type de mémoire SRAM, pour une pluralité de longueurs d’instructions différentes, et/ou pour une pluralité de distributions d’occurrences d’instructions différentes, de la valeur correspondante de N qu’on peut atteindre. Cette information est par exemple fournie sous la forme d’une table de correspondance (LUT). En faisant de nouveau référence à la figure 13, dans une étape 1306, une fréquence de fonctionnement maximum f C-SRAM_max de la SRAM calculatoire est par exemple déterminée. Elle est par exemple fonction du type de SRAM, de la taille totale de la SRAM, puisque plus la taille est grande plus la fréquence maximum est basse, et du nombre de découpes, puisque plus le nombre de découpes est grand plus la fréquence maximum est grande. La fréquence de fonctionnement C-SRAM maximum calculée f C-SRAM_max est ensuite par exemple comparée à la fréquence C-SRAM minimum f C-SRAM_min . Si : alors le type de SRAM est par exemple choisi comme candidat potentiel. Sinon, dans une étape 1307, on détermine si le nombre de découpes est supérieur ou égal à un seuil, et dans la négative, l’étape 1306 est répétée après avoir augmenté de un le nombre de découpes dans une étape 1308. Dans l’exemple de la figure 13, le seuil pour le nombre de découpes est de 16, en d’autres termes une découpe ne sera ajoutée que si le nombre de découpes est inférieur à 16. Une fois que tous les nombres de découpes jusqu’au seuil ont été évalués, dans une opération 1309, on détermine s’il y a d’autres types de SRAM qui n’ont pas encore été considérés. Si oui, le procédé revient à l’étape 1304. En variante, une fois que tous les types de SRAM ont été considérés, dans une étape 1310, un type de SRAM est par exemple choisi parmi les candidats identifiés. Par exemple, le meilleur candidat est choisi sur la base d’un ou plusieurs critères de sélection, comme le fait que le candidat présente la surface la plus faible, la consommation d’énergie la plus faible, et/ou, dans le cas où la fréquence d’instructions n’est pas fixée à l’entrée (voir ci-après), la fréquence de fonctionnement la plus rapide. Alors que la figure 13 illustre un exemple dans lequel l’utilisateur fournit, en tant que l’une des entrées, la fréquence d’instructions f inst , dans des variantes de réalisation, la fréquence d’instructions n’est pas définie, et le fonctionnement 1306 implique aussi la détermination d’une fréquence d’instructions maximum f inst_max sur la base de N et de la fréquence de C-SRAM maximum. Par exemple, f inst_max est calculé de la façon suivante : f inst_max = f C-SRAM_max /N Dans un tel cas, la sélection du type de SRAM dans l’étape 1310 peut aussi être basée sur la fréquence f inst_max déterminée. Un avantage des modes de réalisation décrits ici est que, pendant la conception de circuits, une solution de mémoire calculatoire peut être choisie parmi les candidats identifiés comme faisables pour le type ou les types d’instructions à exécuter. Divers modes de réalisation et variantes ont été décrits. La personne du métier comprendra que certaines caractéristiques de ces divers modes de réalisation et variantes pourraient être combinées, et d’autres variantes apparaitront à la personne du métier. Par exemple, bien qu’on ait décrit des modes de réalisation basés sur un certain nombre de types de SRAM différents, il sera clair pour la personne du métier que les principes décrits ici pourraient être appliqués à d’autres types de mémoires, et aussi à la conception de tout type de circuit mémoire calculatoire, qu’il soit basé sur une architecture IMC ou NMC, ou sur un autre type d’architecture. Procédé de conception de circuits pour un circuit mémoire calculatoire (106) comprenant : - recevoir, par un dispositif informatique (1100), une indication d’au moins un type d’instruction à exécuter par le circuit mémoire calculatoire (106) et une indication d’une taille de stockage mémoire du circuit mémoire calculatoire (106) ; - évaluer, par le dispositif informatique (1100) pour une pluralité de types de cellules mémoires, un nombre (N) représentant un nombre de cycles du circuit mémoire calculatoire (106) par instruction à exécuter par le circuit mémoire calculatoire (106), l’évaluation étant basée sur l’indication d’au moins un type d’instruction ; - déterminer, par le dispositif informatique (1100), pour chacun de la pluralité de types de cellules mémoires et sur la base du nombre N et de la taille de stockage mémoire, une fréquence de fonctionnement du circuit mémoire calculatoire (106) ; et - sélectionner l’un de la pluralité de types de cellules mémoires sur la base de la fréquence de fonctionnement déterminée du circuit mémoire calculatoire (106). Procédé selon la revendication 1, comprenant en outre : - déterminer, par le dispositif informatique (1100) pour chacun de la pluralité de types de cellules mémoires, sur la base de la fréquence de fonctionnement du circuit mémoire calculatoire (106), une fréquence d’instructions maximum des instructions à exécuter par le circuit mémoire calculatoire (106) ; et - sélectionner, par le dispositif informatique (1100), l’un de la pluralité de types de cellules mémoires ayant la fréquence d’instructions maximum la plus élevée. Procédé selon la revendication 1, comprenant en outre : - recevoir, par le dispositif informatique (1100), une indication d’une fréquence d’instructions des instructions à exécuter par le circuit mémoire calculatoire (106) ; - déterminer, par le dispositif informatique (1100) pour chacun de la pluralité de types de cellules mémoires et sur la base de l’indication de la fréquence d’instructions et du nombre N, une fréquence de fonctionnement minimum du circuit mémoire calculatoire (106) ; et - sélectionner un ou plusieurs de la pluralité de types de cellules mémoires pour lesquels une fréquence de fonctionnement est supérieure à la fréquence de fonctionnement minimum du circuit mémoire calculatoire (106). Procédé selon la revendication 2 ou 3, comprenant en outre la génération, par le dispositif informatique (1100), pour le type sélectionné de cellule mémoire, d’un ou plusieurs fichiers de conception représentant une mise en œuvre du circuit mémoire calculatoire (106) ayant le type sélectionné de cellule mémoire et un ou plusieurs éléments de traitement pour mettre en œuvre ladite au moins une opération. Procédé selon l’une quelconque des revendications 1 à 4, dans lequel l’indication d’au moins un type d’instruction comprend une indication d’un nombre d’opérations de chacun desdits au moins un type d’instruction. Procédé selon l’une quelconque des revendications 1 à 5, dans lequel l’indication d’au moins un type d’instruction comprend une indication d’une distribution relative d’occurrences de chaque type d’instruction par rapport au nombre global d’instructions. Dispositif informatique (1100) pour la conception de circuits d’un circuit mémoire calculatoire (106), le dispositif informatique comprenant un ou plusieurs processeurs (1102) sous le contrôle d’instructions mémorisées dans une mémoire d’instructions (1104), le dispositif informatique (1100) étant agencé pour : - recevoir une indication d’au moins une opération à effectuer par le circuit mémoire calculatoire (106) et une indication d’une taille de stockage mémoire du circuit mémoire calculatoire (106) ; - déterminer, pour une pluralité de types de cellules mémoires, un nombre (N) représentant un nombre de cycles du circuit mémoire calculatoire (106) par instruction à exécuter par le circuit mémoire calculatoire (106) ; - déterminer, pour chacun de la pluralité de types de cellules mémoires et sur la base du nombre N et de la taille de stockage mémoire, une fréquence de fonctionnement du circuit mémoire calculatoire (106) ; et - sélectionner l’un de la pluralité de types de cellules mémoires sur la base de la fréquence de fonctionnement déterminée du circuit mémoire calculatoire (106). Dispositif informatique (1100) selon la revendication 7, agencé en outre pour : - déterminer, pour chacun de la pluralité de types de cellules mémoires, sur la base de la fréquence de fonctionnement du circuit mémoire calculatoire (106), une fréquence d’instructions maximum des instructions à exécuter par le circuit mémoire calculatoire (106) ; et - sélectionner, par le dispositif informatique, l’un de la pluralité de types de cellules mémoires ayant la fréquence d’instructions maximum la plus élevée. Dispositif informatique (1100) selon la revendication 7, agencé en outre pour : - recevoir une indication d’une fréquence d’instructions des instructions à exécuter par le circuit mémoire calculatoire (106) ; - déterminer, pour chacun de la pluralité de types de cellules mémoires et sur la base de l’indication de la fréquence d’instructions et du nombre N, une fréquence de fonctionnement minimum du circuit mémoire calculatoire (106) ; et - sélectionner un ou plusieurs de la pluralité de types de cellules mémoires pour lesquels une fréquence de fonctionnement est supérieure à la fréquence de fonctionnement minimum du circuit mémoire calculatoire (106). Dispositif informatique (1100) selon la revendication 8 ou 9, agencé en outre pour générer, pour chacun des types sélectionnés de cellules mémoires, un ou plusieurs fichiers de conception représentant une mise en œuvre du circuit mémoire calculatoire (106) ayant le type sélectionné de cellules mémoires et un ou plusieurs éléments de traitement pour mettre en œuvre ladite au moins une opération.