Brevet FR2856814A1 — publié le 20041231

Procédé de contrôle d'une mémoire-cache, et dispositif de mémoire-cache correspondant L'invention concerne les mémoires-cache et plus particulièrement la gestion et le contrôle de leur fonctionnement. Les mémoires-cache sont bien connues de l'homme du métier. On peut citer à cet égard l'ouvrage de Hennessy et Patterson, computer architecture : a quantative approach chapitre 5, seconde édition, Morgan Kaufmann Publishers Inc (San Fransisco), ISBN 155860-329-8. On rappelle maintenant quelques caractéristiques connues d'un dispositif de mémoire cache, l'homme du métier pouvant à toutes fins utiles se référer à l'ouvrage précité pour plus de détails. Un dispositif de mémoire-cache, qui comprend classiquement une mémoire-cache proprement dite associée à un contrôleur de cache, est un dispositif de mémoire à haute performance utilisé pour stocker des données ou des instructions auxquelles une unité centrale, ou processeur, doit avoir accès fréquemment. C'est la raison pour laquelle un dispositif de mémoire-cache est généralement situé à proximité immédiate du processeur. Une mémoire-cache contient par conséquent une partie de la mémoire, par exemple la mémoire programme, contenant les données ou instructions nécessaires pour le bon fonctionnement du processeur. L'unité de travail ou d'allocation dans une mémoire-cache est la ligne de cache. Une ligne de cache est utilisée pour contenir une copie de l'état d'un bloc mémoire de la mémoire programme ou une donnée. Le nombre d'octets de données associé à une ligne de cache est la taille de la ligne de cache. Un bloc mémoire est un bloc continu d'octets mémoire et la taille d'un bloc mémoire est égal à la taille de la ligne de cache. Dans une mémoire-cache, une ligne de cache est reproduite un certain nombre de fois pour former un groupe de lignes de cache, ce groupe étant généralement désigné par l'homme du métier sous la dénomination anglo-saxonne de set . La variable utilisée pour sélectionner une ligne de cache dans un groupe est appelée la voie , ou encore way selon une dénomination anglo-saxonne habituellement utilisée par l'homme du métier. Le nombre de voies dans un groupe détermine la taille du groupe et est un nombre entier, supérieur ou égal à 1, et égal à une puissance de 2. Un groupe est alors dupliqué pour former une mémoire-cache. La variable utilisée pour sélectionner un groupe dans la mémoirecache est appelée l'index. Le nombre de groupes est un entier NS supérieur ou égal à 1 et également une puissance de 2. D'une façon générale, l'adresse d'un bloc mémoire détermine dans quel groupe de la mémoire-cache ce bloc mémoire peut être stocké. Le bloc mémoire peut être stocké dans n'importe lequel des lignes de cache à l'intérieur du groupe sélectionné. Le nombre de lignes de cache différentes dans lesquelles un bloc mémoire particulier peut être stocké définit l'associativité d'une mémoire-cache, et est fixé par le nombre NW. (NW est également le nombre de voies ( ways )). L'associativité est un paramètre clé d'une mémoire-cache. Augmenter l'associativité permet plus de flexibilité dans l'affectation des blocs mémoire aux différentes lignes de cache. Cependant, l' augmentation de l'associativité conduit à des réalisations de mémoire-cache plus coûteuses et potentiellement plus lentes en terme d'accès à la mémoire-cache. On distingue alors trois types de mémoires-cache. Si le nombre NW est égal à 1, on est alors en présence d'un cache du type à accès direct, également dénommé direct mapped cache selon une dénomination anglo-saxonne communément utilisée. Dans ce type de mémoire-cache, un bloc mémoire peut être stocké dans exactement une ligne de cache de la mémoire-cache. Si les nombres NW et NS sont tous deux strictement supérieurs à 1, on est alors en présence d'un cache du type à associativité partielle ou set-associative cache selon une dénomination anglosaxonne couramment utilisée. Dans ce type de mémoire-cache, un bloc mémoire peut être stocké dans l'une quelconque des NW lignes de cache d'un groupe donné de la mémoire-cache. Si NW est strictement supérieur à 1 et si NS est égal à 1, on est alors en présence d'une mémoire-cache du type à associativité totale, ou fully associative cache selon une dénomination anglo-saxonne couramment utilisée. Dans ce type de mémoire-cache, un bloc mémoire peut être stocké dans l'une quelconque des lignes de cache de la mémoire-c ache. L'invention s'applique aux mémoires-cache du type à accès direct ou du type à associativité partielle. Lorsque le microprocesseur doit accéder à une donnée ou une instruction, la démarche habituelle est de scruter le contenu de la mémoire-cache pour voir si elle s'y trouve. Si la donnée est présente dans la mémoire-cache, il s'agit alors d'un succès ( hit , selon une dénomination anglo-saxonne couramment utilisée) et la donnée est lue en cache rapidement (si l'accès est un accès en lecture) ou écrite rapidement dans la mémoire cache si l'accès est un accès en écriture (écrasement d'une donnée existante). Si la donnée est absente de la mémoire cache, il s'agit d'un échec ( Miss en langue anglaise) et la donnée est lue en mémoire vive et est ensuite recopiée en mémoire-cache pour un accès ultérieur. Plus précisément, en cas d'échec on procède à la détermination de l'allocation d'une ligne de cache. Dans un cache à associativité partielle à N voies (N ways), ceci implique de choisir une voie parmi les N. Si l'une des voies n'est pas déjà occupée, on choisira alors cette voie. Si par contre les N voies sont déjà occupées, on va choisir l'une d'entre elles en vue de son remplacement . Le choix de cette voie peut s'effectuer en mettant en u̇vre plusieurs algorithmes possibles. L'algorithme le plus fréquemment utilisé est celui connu de l'homme du métier sous la dénomination moins récemment utilisé (LRU : Least Recently Used). Deux évènements peuvent se passer selon que la ligne de cache à remplacer est propre ( c'est à dire est une copie exacte du contenu correspondant de la mémoire principale) ou sale ( c'est à dire a un contenu plus à jour que le contenu correspondant de la mémoire principale). Le statut propre/sale d'une ligne de cache est déterminé par exemple par un bit spécifique associé à chaque ligne de cache. En présence d'un statut propre , la nouvelle ligne de cache peut simplement écraser l'ancienne ligne de cache dans la mémoire cache. En présence d'un statut sale , avant que la nouvelle ligne de cache puisse remplacer l'ancienne ligne de cache, cette dernière doit être expulsée ( évicted selon une dénomination anglo-saxonne habituellement utilisée à cet égard)vers la mémoire principale, c'est à dire que la mémoire principale est mise à jour avec le contenu de la ligne de cache de façon à assurer une cohérence. L'étape finale consiste à extraire l'instruction ou la donnée de la mémoire principale et à l'écrire dans la ligne de cache allouée et à désigner cette ligne de cache comme valide. Il convient de noter ici que l'étape de contrôle ou de scrutation du contenu de la mémoire-cache est effectuée lors de chaque requête d'accès à la mémoire-cache, qu'il s'agisse d'un accès en lecture ou en écriture. Mais la procédure mentionnée ci-dessus peut ne pas être exactement la même lors d'un échec en lecture ou en écriture. Ainsi par exemple quelques fois des caches peuvent n'allouer de nouvelles lignes de cache qu'en lecture alors qu'en écriture la donnée est simplement écrite dans la mémoire principale sans allouer de nouvelle ligne de cache dans la mémoire cache. Les processeurs qui coopèrent avec des mémoires-cache, pour l'échange de données ou d'instructions, peuvent créer des difficultés avec les systèmes temps réel, puisque le fonctionnement du cache peut être extrêmement non-déterministe. Or, les tâches qui ont des contraintes temps réel sévères ne peuvent pas accepter des comportements non-déterministes, puisque cela peut engendrer des dysfonctionnements de l'application. Le problème principal est celui connu sous le vocable interférence . L'interférence peut être intrinsèque ( emballement ( thrashing selon une dénomination anglo-saxonne habituellement utilisée) entre traitements dans une tâche donnée) ou extrinsèque (emballement entre différentes tâches). L' emballement est le phénomène par lequel des lignes de caches sont continuellement allouées puis remplacées/expulsées de la mémoire cache. Le phénomène d' emballement peut être désastreux pour les performances globales du dispositif de mémoire cache, et est particulièrement dangereux lors que des comportements temps réels sont requis. C'est le cas par exemple dans des applications de téléphonie mobile dans lesquelles certaines tâches sont moins importantes ( par exemple repasser des données audio) tandis que d'autres tâches sont des tâches temps réel (par exemple des opérations de communication modem). Ce phénomène d'emballement peut encore plus gênant dans un environnement de commande mécanique, par exemple dans la commande de disques durs, où si les contraintes temps réel ne sont pas respectées, le système mécanique peut tomber en panne. L'interférence intrinsèque peut être évitée en rendant les caches aussi associatifs que possible. Quant à l'interférence extrinsèque, pour garantir qu'une donnée ou une instruction 'temps réel' se situe effectivement dans la mémoire- cache au moment où le processeur doit utiliser cette donnée ou cette instruction, deux solutions existent, qui utilisent le fait que la mémoire-cache est formée d'un ensemble de lignes de cache et, lorsque celui-ci présente une associativité par voie, d'un ensemble de voies ( ways ). Une première solution consiste à verrouiller la mémoire-cache par ligne de cache. Ainsi, une ligne de cache qui est verrouillée ne peut pas être remplacée. Et, si une donnée ou une instruction temps réel est présente dans une telle ligne de cache verrouillée, ceci garantit sa présence dans la mémoire-cache à chaque accès de cette donnée par le processeur. Un tel verrouillage par ligne de cache présente l'avantage d'offrir un très fine granularité, c'est-à-dire une granularité au niveau ligne de cache, mais présente l'inconvénient de devoir connaître exactement l'adresse, ce qui n'est pas toujours très facile ou possible au niveau gestion par le logiciel qui contrôle les traitements (processes) ou les taches (par exemple le 'real time operating system' RTOS). Une autre solution, applicable dans les caches à associativité partielle (ou totale), consiste à utiliser un verrouillage par voie ( lock by cache way ). Dans un tel cas, c'est une voie complète qui est verrouillée, ce qui interdit toute donnée ou instruction située dans une telle voie verrouillée d'être remplacée. Une telle solution offre une granularité plus grossière que la granularité par ligne de cache mais permet de verrouiller une partie prédéterminée de la mémoire-cache sans s'attacher à des adresses spécifiques. Une telle solution présente néanmoins deux inconvénients majeurs : 1 - Si chaque tâche requiert d'avoir une mémoire-cache ayant un certain niveau d'associativité, la mémoire-cache complète doit avoir un très haut niveau d'associativité, par exemple un cache associatif à 16 voies. Or, de tels caches sont très difficiles à concevoir, notamment lorsqu'il s'agit de prévoir en outre des fréquences de fonctionnement élevées et/ou une faible consommation. 2- Un mécanisme spécifique doit être mis en u̇vre afin de forcer le stockage des données ou des instructions dans la voie considérée avant verrouillage de celle-ci. Mais, de par la nature même des mémoires-cache à associativité partielle, une donnée peut être placée dans n'importe laquelle des voies d'un groupe ( set ), la voie choisie étant déterminée par un algorithme de remplacement qui est souvent basé sur l'historique des accès (par exemple un algorithme LRU ( Least Recently Used ) dans lequel on remplace la donnée la moins récemment utilisée). Ceci impose par conséquent une série de manipulations spécifiques pour forcer le stockage d'une donnée dans une voie particulière avant son verrouillage, comme par exemple décrit dans le document Analog Devices ADSP-21535 , Blackfin DSP Hardware Référence ; Révision 1.0, octobre 2002, pages 6-25. L'invention vise à remédier à ces inconvénients. Un but de l'invention est de proposer un verrouillage de la mémoire-cache, qui ne nécessite pas de connaître précisément les adresses de lignes de cache à verrouiller, ce qui est un avantage certain par rapport à la solution du verrouillage par ligne de cache. L'invention a également pour but de proposer un verrouillage du cache qui présente une facilité de réalisation. Ainsi, l'invention propose la réalisation d'une mémoire-cache subdivisée dans laquelle chaque subdivision a la même associativité que la mémoire-cache complète, mais simplement avec une taille plus petite. Ceci distingue l'invention de la solution lock by way . En outre il n'y a pas de procédure logicielle complexe pour s'assurer que la donnée est placée à l'endroit où on le désire, contrairement à ce qui se passe dans le composant Analog Device Blackfin mentionné ciavant. L'invention propose un procédé de contrôle d'une mémoirecache du type à accès direct ou du type à associativité partielle comprenant NSgroupes ( sets ) contenant chacun NW lignes de cache, NS étant un entier supérieur à 1 et NW étant un entier supérieur ou égal à 1. Le procédé comporte en présence d'une requête d'accès à une ligne de cache, une scrutation du contenu de la mémoire-cache, un accès à ladite ligne de cache si celle-ci est déjà allouée, et une allocation dans la mémoire-cache d'une nouvelle ligne de cache dans le cas contraire. Selon une caractéristique générale de l'invention, on subdivise la mémoire-cache en SB subdivisions, chaque subdivision comportant NS/SB sous-groupes contenant chacun NW lignes de cache. On affecte à chaque subdivision une indication de protection représentative d'un caractère protégé au nom de la subdivision. Cette indication de protection peut provenir par exemple d'une unité de contrôle de mémoire (memory management unit (MMU)). L'étape de scrutation est effectuée dans toutes les subdivisions protégées ou non. Ledit accès à une ligne de cache déjà allouée s'effectue même si cette ligne de cache appartient à une subdivision protégée, tandis que ladite allocation d'une nouvelle ligne de cache ne s'effectue que dans une subdivision non protégée. En d'autres termes, selon l'invention, on subdivise la mémoirecache horizontalement , c'est-à-dire par tranches perpendiculaires aux voies ( ways ). Par ailleurs, toutes les subdivisions sont toujours accédées, qu'elles soient protégées ou non, afin de déterminer les conditions de succès ou d'échec ( Hit or Miss ) à l'issue d'une étape de scrutation. Ceci maintient la cohérence et évite des repliements de cache lorsque des subdivisions sont protégées/déprotégées pour différentes tâches, puisque le contenu de la mémoire-cache complète est toujours visible pour toutes les tâches indépendamment du fait que les subdivisions soient ou non protégées. Par ailleurs, le fait d'autoriser l'accès à une ligne de cache déjà allouée, même si cette ligne de cache appartient à une subdivision protégée, permet lors d'un accès en écriture, de ne pas empêcher une tâche actuellement en cours d'exécution par le processeur de modifier une donnée qui est déjà présente dans la mémoire-cache. Selon un mode de mise en u̇vre de l'invention dans lequel la mémoire-cache comporte une zone de stockages de données et une zone de stockage d'adresses, la requête d'accès à une ligne de cache s'effectue en utilisant un mot d'adresse comportant un index et une étiquette ( Tag , en langue anglaise). Par ailleurs, chaque ligne de cache de la zone de stockage de données est associée à un champ d'adressage de la zone de stockage d'adresses, ce champ d'adressage étant destiné à contenir une étiquette étendue d'un mot d'adresse, cette étiquette étendue étant formée de l'étiquette d'un mot d'adresse ainsi que d'un nombre prédéterminé de bits de poids fort de l'index, dépendant du nombre de subdivisions. Le nombre de subdivisions peut aller de 2 à théoriquement NS, par puissance de 2. En pratique le nombre de subdivision est limité par des contraintes de réalisation, et ce nombre peut être égal à 4 ou 8 par exemple. Et en pratique ledit nombre prédéterminé de bits de poids fort de l'index est égal à log2(nombre de subdivisions). Selon un mode de mise en u̇vre de l'invention, chaque subdivision de la zone de stockage d'adresses comporte NS/SB souszone individuellement adressables par un index raccourci d'un mot d'adresse, cet index raccourci étant formé des bits de l'index d'un mot d'adresse à l'exception dudit nombre prédéterminé de bits de poids fort de cet index. Par ailleurs, chaque sous-zone contient NW champ d'adressage, chaque champ d'adressage étant susceptible de contenir une étiquette étendue. Selon un mode de mise en u̇vre de l'invention, dans l'étape de scrutation, on compare le contenu de chacun des NW champs d'adressage de chaque sous-zone désignée par l'index raccourci du mot d'adresse associé à ladite requête d'accès, avec l' étiquette étendue de ce mot d'adresse, et on délivre une information de scrutation représentative du succès ou de l'échec de cette scrutation. Une information représentative du succès de la scrutation comporte avantageusement un premier mot numérique représentatif de la subdivision comportant le champ d'adressage contenant l'étiquette étendue du mot d'adresse associé à ladite requête d'accès. Et, on adresse alors la zone de stockage de données à partir du premier mot numérique et de l'index raccourci du mot d'adresse associé à ladite requête d' accès. Dans le cas d'une mémoire-cache à associativité partielle, c'est-à-dire dans laquelle NW est supérieur à 1, une information représentative du succès de la scrutation comporte avantageusement un deuxième mot numérique représentatif de l'emplacement dudit champ d'adressage dans la sous-zone désignée par l'index raccourci du mot d' adresse. On sélectionne alors la ligne de cache appartenant aux NW lignes de cache désignées par le premier mot numérique, en utilisant le deuxième mot numérique. Selon un mode de mise en ouvre de l'invention, en présence d'une information représentative d'un échec de la scrutation, on élabore un mot numérique d'attribution, désignant une subdivision non-protégée de la mémoire-cache, et on alloue ladite nouvelle ligne de cache dans ladite subdivision ainsi désignée, et dans le sous-groupe de cette subdivision désigné par l'index raccourci du mot d'adresse associé à ladite requête d' accès. On peut par exemple élaborer le mot numérique d'attribution à partir du nombre prédéterminé de bits de poids fort de l'index et des indications de protection des subdivisions. L'invention propose également un dispositif de mémoire-cache comportant une mémoire-cache du type à accès direct ou du type à associativité partielle comprenant NS groupes contenant chacun NW ligne de cache, NS étant un entier supérieur à un et NW étant un entier supérieur ou égal à un, et un contrôleur de cache apte en présence d'une requête d'accès à une ligne de cache, à activer des moyens de scrutation du contenu de la mémoire-cache, à autoriser un accès à ladite ligne de cache si celle-ci est déjà allouée, et à allouer dans la mémoire-cache d'une nouvelle ligne de cache dans le cas contraire (ce qui pourrait conduire par exemple à l' expulsion d'une ancienne ligne de cache). Selon une caractéristique générale de l'invention, la mémoirecache est subdivisée en SB subdivisions, chaque subdivision comportant NS/SB sous-groupes contenant chacun NW lignes de cache, par le fait que chaque subdivision est affectée d'une indication de protection représentative d'un caractère protégé ou non de la subdivision. Les moyens de scrutation sont aptes à effectuer ladite scrutation dans toutes les subdivisions protégées ou non. Le contrôleur de cache autorise ledit accès à une ligne de cache déjà allouée même si cette ligne de cache appartient à une subdivision protégée, tandis que le contrôleur de cache est apte à allouer une nouvelle ligne de cache uniquement dans une subdivision non protégée. Selon un mode de réalisation de l'invention, dans lequel la mémoire cache comporte une zone de stockage de données, et une zone de stockage d'adresses, la requête d'accès à une ligne de cache comporte un mot d'adresse comportant un index et une étiquette. Chaque ligne de cache de la zone de stockage de données est associée à un champ d'adressage de la zone de stockage d'adresses, ce champ d'adressage étant destiné à contenir une étiquette étendue d'un mot d'adresse, cette étiquette étendue étant formée de l'étiquette d'un mot d'adresse ainsi que d'un nombre prédéterminé de bits de poids forts de l'index, dépendant du nombre de subdivisions. Selon un mode de réalisation de l'invention, chaque subdivision de la zone de stockage d'adresses comporte NS/SB sous-zones individuellement adressables par un index raccourci d'un mot d'adresse, cet index raccourci étant formé des bits de l'index d'un mot d'adresse à l'exception dudit nombre prédéterminé de bits de poids forts de cet index, chaque sous-zone contenant NW champs d'adressage, chaque champ d'adressage étant susceptible de contenir une étiquette étendue. Selon un mode de réalisation de l'invention, les moyens de scrutation comportent des moyens de comparaison aptes à comparer le contenu de chacun des NW champs d'adressages de chaque sous-zone désignée par l'index raccourci du mot d'adresse associé à ladite requête d'accès, avec l'étiquette étendue de ce mot d'adresse, et délivrent une information de scrutation représentative du succès ou de l'échec de cette scrutation. Selon un mode de réalisation de l'invention, une information représentative du succès de la scrutation comporte un premier mot numérique représentatif de la subdivision comportant le champ d'adressage contenant l'étiquette étendue du mot d'adresse associé à ladite requête d' accès. La zone de stockage de données est adressable à partir du premier mot numérique et de l'index raccourci du mot d'adresse associé à ladite requête d' accès. Selon un mode de réalisation de l'invention, dans lequel NW est supérieur à un, une information représentative du succès de la scrutation comporte un deuxième mot numérique représentatif de l'emplacement dudit champ d'adressage dans la sous-zone désignée par l'index raccourci du mot d' adresse. Et la mémoire cache comporte des moyens de sélection aptes à sélectionner la ligne de cache appartenant au NW lignes de caches désignées par le premier mot numérique, en utilisant le deuxième mot numérique. Selon un mode de réalisation de l'invention, le contrôleur de cache comporte des moyens d'élaboration, aptes en présence d'une information représentative d'un échec de la scrutation, à élaborer un mot numérique d'attribution désignant une subdivision non protégée de la mémoire cache, ladite nouvelle ligne de cache étant allouée dans ladite subdivision ainsi désignée, et dans le sous groupe de cette subdivision désigné par l'index raccourci du mot d'adresse associé à ladite requête d' accès. Selon un mode de réalisation de l'invention, les moyens d'élaboration élaborent ledit mot numérique d'attribution à partir dudit nombre prédéterminé de bits de poids forts de l'index et des indications de protection des subdivisions. D'autres avantages et caractéristiques de l'invention apparaîtront à l'examen de la description détaillée de modes de réalisation et de mise en u̇vre, nullement limitatifs, et des dessins annexés sur lesquels : - la figure 1 illustre schématiquement un dispositif de mémoire-cache selon l'invention, - la figure 2 illustre plus en détail mais toujours schématiquement l'architecture interne d'une mémoire-cache appartenant à un dispositif de mémoire-cache selon l'invention, - la figure 3 illustre un mode de mise en u̇vre d'un procédé selon l'invention, et, - les figures 4 et 5 illustrent schématiquement un exemple d'élaboration d'un mot numérique d'attribution désignant une subdivision non protégée. Sur la figure 1, la référence DCH désigne un dispositif de mémoire-cache selon l'invention comportant une mémoire-cache proprement dite MMCH associée à un contrôleur de cache CCH. Le dispositif de mémoire-cache, qui va maintenant être décrit à titre d'exemple non limitatif en se référant plus particulièrement à la figure 2, est un dispositif du type à associativité partielle ayant une taille de cache totale de 32 kilooctets. La mémoire-cache MMCH comporte NS= 256 groupes ( sets ) de lignes de cache. Chaque groupe comporte NW=4 voies ( ways ). En d'autres termes, chaque groupe comporte NW lignes de cache LCH ayant chacune une taille de 32 octets. Ce dispositif de mémoire-cache travaille dans un espace d'adressage de 32 bits. Les paramètres de cache utilisés ici correspondent par exemple à un cache de niveau 1 dans un processeur actuel. Cela étant, l'invention s'applique à tout type de dispositif de cache, quelle que soit sa taille, qu'il soit du type à associativité partielle (quel que soit le niveau d'associativité partielle) comme celui qui est décrit maintenant, ou bien du type à accès direct. Par ailleurs, l'invention s'applique également que le cache soit physique ou virtuel, c'est-à-dire qu'il concerne des adresses physiques ou virtuelles. L'invention est également indépendante du comportement du dispositif de cache proprement dit, c'est-à-dire de la méthode de mise à jour de la mémoire vive ou de programme (non représentée sur les figures). Ainsi, l'invention s'applique que ce mode de mise en u̇vre soit du type Write through selon une dénomination habituellement utilisée par l'homme du métier, dans lequel les nouvelles données sont mises à jour dans la mémoire et dans lequel il n'y a donc pas de données n'existant que dans le mémoire-cache, ou du type Write back dans lequel on ne copie la ligne en mémoire que dans certains cas. L'invention s'applique également quel que soit le mode d'allocation dans la mémoire-cache et quel que soit le mode d'allocation des voies. L'invention s'applique encore quelle que soit la réalisation physique de la mémoire-cache. Sur la figure 2, la mémoire de cache MMCH comporte une zone de stockage d'adresses ZA et une zone de stockage de données ZD. Au sens de la présente invention, le mot donnée s'entend ici comme pouvant être une donnée proprement dite ou bien une instruction par exemple. D'une façon générale, la mémoire-cache est subdivisée en SB subdivisions, ici en quatre subdivisions. Ainsi, la zone de données ZD comporte quatre subdivisions SBD1-SBD4. Chaque subdivision comporte 64 sous-groupes contenant chacun quatre lignes de caches LCH (niveau d'associativité égal à 4). De même, la zone de stockage d'adresses comporte quatre subdivisions TAR1-TAR4. Chaque subdivision TARi comporte 64 sous-zones. Chaque sous-zone est destinée, comme on le verra plus en détail ci-après, à pouvoir stocker quatre étiquettes étendues TGE de mots d'adresse MAD. Dans la zone de stockage de données ZD, les voies ( ways ) sont référencées WDO-WD3 tandis que dans la zone de stockage d'adresses ZA les voies sont référencées WAO-WA3. La requête d'accès, que ce soit en écriture ou en lecture, à une ligne de cache LCH s'effectue en utilisant un mot d'adresse MAD comportant un index IX, une étiquette TG, et une partie supplémentaire, couramment désignée sous le vocable anglo-saxon d' offset , OFS. Dans l'exemple décrit ici, dans lequel l'espace d'adressage est sur 32 bits, les bits 0 à 4 du mots d'adresse forment l'offset OFS tandis que les bits 5 à 12 forment l'index et que les bits 13 à 31 forment l'étiquette TG. Le nombre de bits de l'étiquette, de l'index et de l'offset est directement relié aux paramètres du cache (taille, taille de la ligne de cache, niveau d' associativité). A partir de mot d'adresse MAD, on forme un mot d'adresse transformé MADT comportant toujours la partie d'offset OFS. Par contre, l'index est maintenant transformé en un index raccourci IXR formé uniquement des bits 5 à 10 tandis que l'étiquette est transformée en une étiquette étendue TGE formée des bits 11 à 31. Il s'agit d'un décalage de 2 bits correspondant à log2(4), 4 étant ici le nombre de subdivisions. On a vu que chaque subdivision TARi de la zone de stockage d'adresses ZA était formée de 64 sous-zones comportant chacune quatre emplacements destinés à contenir quatre étiquettes étendues TGE. Chaque sous-zone est individuellement adressable par l'index raccourci IXR du mot d' adresse. Au pied de chaque subdivision TARi sont situés des moyens de comparaison CMPi destinés, comme on le verra plus en détail ci-après, à comparer une étiquette étendue TGE d'un mot d'adresse MAD avec le contenu des quatre champs d'adressage d'une sous-zone de la subdivision considérée, cette sous-zone étant sélectionnée par l'index raccourci IXR. D'une façon générale, chacune des subdivisions est affectée d'une indication de protection, formée par exemple d'un mot Enp de quatre bits (puisqu'il y a ici quatre subdivisions) délivré par exemple par une unité de gestion de mémoire MMU (fig. 4). Ce mot Enp indique, pour chaque subdivision, si elle est protégée ou non. Et, selon l'invention, on ne pourra allouer une nouvelle ligne de cache que dans une subdivision non protégée. Afin de préserver la complète cohérence entre les données contenues dans la mémoire de cache subdivisée selon l'invention MMCH, le schéma suivant est utilisé : - la première phase d'accès à la mémoire-cache en présence d'une requête d'accès, en lecture ou en écriture, est une phase de scrutation pour déterminer si la ligne de cache désignée par cette requête d'accès est ou non déjà présente dans la mémoire-cache. Et, cette scrutation s'effectue dans toutes les subdivisions de la mémoire-cache, qu'elles soient ou non protégées. Ceci permet notamment que toutes les requêtes d'accès en lecture voient le contenu complet de la mémoire-cache. Dans cette étape de scrutation, l'étiquette étendue TGE du mot d'adresse transformé MADT associé à la requête d'accès, est délivrée aux quatre moyens de comparaison CMP1-CMP4. Par ailleurs, dans chacune des subdivisions TARi, on sélectionne par l'index raccourci IXR du mot d'adresse transformé quatre champs d'adressage respectivement contenus dans les voies WAO et WA3. Dans le cas où la ligne de cache faisant l'objet de ladite requête est déjà présente c'est-à-dire déjà allouée dans le cache, son étiquette étendue est située, par construction même de la mémoirecache, dans un seul champ d'adressage de la mémoire-cache. Ainsi, si chaque moyen de comparaison CMPi délivre un mot de comparaison Hi de quatre bits, respectivement associés aux quatre voies WAO-WA3, on supposera ici qu'un bit Hi[j] =0 signifie que la comparaison entre l'étiquette étendue TGE du mot d'adresse transformé MATD, et le champ d'adressage de la voie considérée WAi était négative, c'est-à-dire que le champ d'adressage correspondant ne comportait pas l'étiquette étendue TGE. Dans le cas contraire, le bit du mot de comparaison est à 1. Ainsi, en cas de succès de l'étape de scrutation, il existera par construction, un seul mot de comparaison Hi ayant un seul bit à 1. Tous les autres bits de ce mot de comparaison et tous les autres bits des autres mots de comparaison seront à zéro. A partir de là, des moyens logiques LG, recevant les quatre mots de comparaison H1-H4 délivrent un premier mot numérique Ml représentatif de la subdivision TARi comportant le champ d'adressage contenant l'étiquette étendue du mot d'adresse associé à ladite requête d'accès. Et, on va alors adresser la zone de stockage de données ZD à partir du premier mot numérique Ml et de l'index raccourci IXR du mot d'adresse associé à ladite requête d' accès. Ceci va permettre de sélectionner dans la zone de stockage de données ZD, la subdivision SBDi correspondant à la subdivision TARi ayant conduit au succès de la scrutation, et, à l'intérieur de cette subdivision SBDi, l'ensemble des quatre lignes de cache LCH désignées par l'index raccourci IXR. Lors d'un accès en lecture, qui est plus particulièrement illustré sur la figure 2, le contenu des quatre lignes de cache LCH ainsi désignées dans la zone de stockage de données ZD sont délivrées en sortie des quatre voies WDO-WD4 aux quatre entrées d'un multiplexeur MUX1. Ce multiplexeur MUX1 est commandé par un deuxième mot numérique M2 qui est représentatif de l'emplacement du champ d'adressage ayant conduit au succès de la scrutation, c'est à dire la voie qui conduit au succès. En pratique, ici, ce mot M2 est l'un des mots de comparaison H1-H4 qui sont délivrés en entrée d'un multiplexeur MUX3 commandé par le premier mot numérique Ml. Par conséquent, en sortie du multiplexeur MUX1, on obtient la ligne de cache LCH ayant fait l'objet de la requête d'accès en lecture. Le mot de données particulier de cette ligne de cache désigné par le mot d'adresse MAD est alors sélectionné au moyen de l'offset OFS commandant un multiplexeur MUX2. La sortie du multiplexeur MUX2 délivre le mot WD requis et désigné par le mot d'adresse MAD. On voit donc qu'en cas de succès à l'issue de la phase de scrutation (étapes 30 et 31, figure 3), l'accès 32 à une ligne de cache s'effectue comme dans le cas d'un dispositif de mémoire-cache classique. Par contre, en cas d'échec de la scrutation, c'est-à-dire si toutes les comparaisons CMPi sont négatives, il convient alors d'allouer (étape 33) une nouvelle ligne de cache dans la mémoirecache. Et, selon l'invention, ceci ne peut s'effectuer que dans une subdivision non-protégée. Le choix de cette subdivision, effectué par exemple par le contrôleur de cache CCH, prend alors en compte l'état de protection des subdivisions Enp. Ainsi, selon l'invention, une donnée stockée dans une subdivision protégée est elle-même protégée, c'est-à-dire qu'elle ne peut pas être évincée de la mémoire-cache. De même, l'espace de stockage non utilisé, c'est-à-dire les lignes de cache invalides, à l'intérieur des subdivisions protégées, sont elles-mêmes protégées puisqu'une nouvelle allocation ne peut pas utiliser cet espace. Il existe plusieurs façons de choisir la subdivision à utiliser en cas d'échec à l'issue d'une étape de scrutation. La méthode utilisée dépend de l'application et du mode de réalisation de la mémoire-cache. On va maintenant en donner un exemple non limitatif. Comme illustré sur la figure 4, le contrôleur de cache CCH comporte des moyens d'élaboration MLB aptes à élaborer à partir du mot numérique Enp et des deux bits de poids fort de l'index IX, un mot numérique Ptu désignant la subdivision à utiliser. A titre d'exemple, ce mot Ptu est un mot de quatre bits dont le bit qui prend la valeur 1 désigne une subdivision non-protégée. Dans le cas où les quatre subdivisions sont non-protégées, c'est-à-dire toutes disponibles pour une éventuelle nouvelle allocation, on peut alors établir une correspondance bijective entre les deux bits de poids fort de l'index et les quatre bits du mot Ptu. Plus particulièrement, si les deux bits de poids fort de l'index sont égaux à '00', alors le mot Ptu est égal à 0001 désignant la subdivision 1. Si les deux bits de poids fort de l'index sont égaux à '01', alors le mot Ptu est égal à 0010 désignant la subdivision n[deg]2. De même, si le deux bits de poids forts de l'index sont égaux à '10', alors le mot Ptu est égal à 0100 désignant la subdivision n[deg]3. Enfin, si les deux bits de poids fort de l'index sont égaux à '11', alors le mot Ptu est égal à 1000 désignant la subdivision n[deg] 4. Si par contre l'une au moins des subdivisions est protégée, alors le mot Enp représentatif de l'état de protection des subdivisions, ainsi que les deux bits de poids fort de l'index du mot d'adresse associé à la requête d'accès, sont combinés dans les moyens d'élaboration pour déterminer le mot d'attribution Ptu. A titre d'exemple, on supposera sur la figure 5 que la mémoirecache ne comporte qu'une seule subdivision protégée. Ainsi, si dans l'étape 50, les deux bits de poids fort de l'index IX sont égaux à 00, alors le mot d'attribution Ptu est a priori égal à 0001. On regarde alors si la subdivision SBD1 désignée par ce mot Ptu est ou non protégée (étape 51). Si la subdivision SBD1 n'est pas protégée, alors on valide le mot Ptu à la valeur 001. Si par contre la subdivision SBD1 est protégée, alors on va regarder si la subdivision SBD2 est ou non protégée. Comme dans le cas présent, on a supposé qu'une seule subdivision était protégée, la subdivision SBD2 n'est pas protégée. Par conséquent, on affectera la valeur 0010 au mot Ptu et la nouvelle allocation de la ligne de cache s'effectuera dans cette subdivision. Le même cheminement s'applique si les bits de poids fort de l'index sont égaux à 01, 10 ou 11 (étapes 53, 54, 55, 56). Matériellement, les moyens d'élaboration MLB pourront aisément être conçus par des circuits et portes logiques à partir de l'algorithme illustré sur la figure 5, en utilisant par exemple un algorithme de synthèse logique. Il existe bien entendu des cas triviaux. Ainsi, par exemple si une seule subdivision est disponible, c'est-à-dire si toutes les autres sont protégées, alors on utilisera cette subdivision indépendamment de la valeur des deux bits de poids fort de l'index. REVENDICATIONS 1. Procédé de contrôle d'une mémoire cache du type à accès direct ou du type à associativité partielle comprenant NS groupes contenant chacun NW lignes de cache, NS étant un entier supérieur à un et NW étant entier supérieur ou égal à un, ledit procédé comportant en présence d'une requête d'accès à une ligne de cache, une scrutation du contenu de la mémoire cache, un accès à ladite ligne de cache si celle-ci est déjà allouée, et une allocation dans la mémoire cache d'une nouvelle ligne de cache dans le cas contraire, caractérisé par le fait qu'on subdivise la mémoire cache (MMCH) en SB subdivisions, chaque subdivision comportant NS/SB sous-groupes contenant chacun NW lignes de cache (LCH), par le fait qu'on affecte à chaque subdivision une indication de protection (Enp) représentative d'un caractère protégé ou non de la subdivision,par le fait que l'étape de scrutation est effectuée dans toutes les subdivisions protégées ou non, par le fait que ledit accès à une ligne de cache déjà allouée s'effectue même si cette ligne de cache appartient à une subdivision protégée, tandis que ladite allocation d'une nouvelle ligne de cache ne s'effectue que dans une subdivision non protégée. 2. Procédé selon la revendication 1, caractérisé par le fait que la mémoire cache comporte une zone de stockage de données (ZD), et une zone de stockage d'adresses, par le fait que la requête d'accès à une ligne de cache s'effectue en utilisant un mot d'adresse comportant un index (IX) et une étiquette (TG), et par le fait que chaque ligne de cache de la zone de stockage de données est associée à un champ d'adressage de la zone de stockage d'adresses, ce champ d'adressage étant destiné à contenir une étiquette étendue (TGE) d'un mot d'adresse (MAD), cette étiquette étendue (TGE) étant formée de l'étiquette (TG) d'un mot d'adresse ainsi que d'un nombre prédéterminé de bits de poids forts de l'index (IX) dépendant du nombre de subdivisions (SBDi). 3. Procédé selon la revendication 2, caractérisé par le fait que la chaque subdivision (TARi) de la zone de stockage d'adresses comporte NS/SB sous-zones individuellement adressables par un index raccourci (IXR) d'un mot d'adresse, cet index raccourci étant formé des bits de l'index d'un mot d'adresse à l'exception dudit nombre prédéterminé de bits de poids forts de cet index, chaque sous-zone contenant NW champs d'adressage, chaque champ d'adressage étant susceptible de contenir une étiquette étendue (TGE). 4. Procédé selon la revendication 3, caractérisé par le fait que dans l'étape de scrutation, on compare (CMPi) le contenu de chacun des NW champs d'adressages de chaque sous-zone désignée par l'index raccourci (IXR) du mot d'adresse associé à ladite requête d'accès, avec l' étiquette étendue de ce mot d'adresse, et on délivre une information de scrutation représentative du succès ou de l'échec de cette scrutation. 5. Procédé selon la revendication 4, caractérisé par le fait qu'une information représentative du succès de la scrutation comporte un premier mot numérique (Ml) représentatif de la subdivision comportant le champ d'adressage contenant l'étiquette étendue du mot d'adresse associé à ladite requête d'accès, par le fait qu'on adresse la zone de stockage de données (ZD) à partir du premier mot numérique et de l'index raccourci du mot d'adresse associé à ladite requête d' accès. 6. Procédé selon la revendication 5, pour une mémoire cache dans laquelle NW est supérieur à un, caractérisé par le fait qu'une information représentative du succès de la scrutation comporte un deuxième mot numérique (M2) représentatif de l'emplacement dudit champ d'adressage dans la sous-zone désignée par l'index raccourci du mot d'adresse, et par le fait qu'on sélectionne la ligne de cache appartenant aux NW lignes de caches désignées par le premier mot numérique (Ml), en utilisant le deuxième mot numérique (M2). 7. Procédé selon l'une des revendications 4 à 6, caractérisé par le fait qu'en présence d'une information représentative d'un échec de la scrutation, on élabore un mot numérique d'attribution (Ptu) désignant une subdivision non protégée de la mémoire cache, et on alloue ladite nouvelle ligne de cache dans ladite subdivision ainsi désignée, et dans le sous groupe de cette subdivision désigné par l'index raccourci du mot d'adresse associé à ladite requête d' accès. 8. Procédé selon la revendication 7, caractérisé par le fait qu'on élabore ledit mot numérique d'attribution (Ptu) à partir dudit nombre prédéterminé de bits de poids forts de l'index (IX(12 :11 et des indications de protection des subdivisions (Enp). 9. Dispositif de mémoire cache, comportant une mémoire cache (MMCH) du type à accès direct ou du type à associativité partielle comprenant NS groupes contenant chacun NW lignes de cache, NS étant un entier supérieur à un et NW étant entier supérieur ou égal à un, et un contrôleur de cache (CCH) apte en présence d'une requête d'accès à une ligne de cache, à activer des moyens de scrutation du contenu de la mémoire cache, à autoriser un accès à ladite ligne de cache si celle ci est déjà allouée, et à allouer dans la mémoire cache d'une nouvelle ligne de cache dans le cas contraire, caractérisé par le fait que la mémoire cache est subdivisée en SB subdivisions (SBDi, TARi) chaque subdivision comportant NS/SB sous-groupes contenant chacun NW lignes de cache, par le fait que chaque subdivision est affectée d'une indication de protection représentative d'un caractère protégé ou non de la subdivision, par le fait que les moyens de scrutation sont aptes à effectuer ladite scrutation dans toutes les subdivisions protégées ou non, par le fait que le contrôleur de cache autorise ledit accès à une ligne de cache déjà allouée même si cette ligne de cache appartient à une subdivision protégée, tandis que le contrôleur de cache est apte à allouer une nouvelle ligne de cache uniquement dans une subdivision non protégée. 10. Dispositif selon la revendication 9, caractérisé par le fait que la mémoire cache comporte une zone de stockage de données (ZD), et une zone de stockage d'adresses (ZA), par le fait que la requête d'accès à une ligne de cache comporte un mot d'adresse comportant un index et une étiquette, , et par le fait que chaque ligne de cache de la zone de stockage de données est associée à un champ d'adressage de la zone de stockage d'adresses, ce champ d'adressage étant destiné à contenir une étiquette étendue (TGE) d'un mot d'adresse, cette étiquette étendue (TGE) étant formée de l'étiquette (TG) d'un mot d'adresse ainsi que d'un nombre prédéterminé de bits de poids forts de l'index (IX) dépendant du nombre de subdivisions. 11. Dispositif selon la revendication 10, caractérisé par le fait que chaque subdivision (TARi) de la zone de stockage d'adresses comporte NS/SB sous-zones individuellement adressables par un index raccourci d'un mot d'adresse, cet index raccourci étant formé des bits de l'index d'un mot d'adresse à l'exception dudit nombre prédéterminé de bits de poids forts de cet index, chaque sous-zone contenant NW champs d'adressage, chaque champ d'adressage étant susceptible de contenir une étiquette étendue. 12. Dispositif selon la revendication 11, caractérisé par le fait que les moyens de scrutation comportent des moyens de comparaison (CMPi) aptes à comparer le contenu de chacun des NW champs d'adressages de chaque sous-zone désignée par l'index raccourci du mot d'adresse associé à ladite requête d'accès, avec l'étiquette étendue de ce mot d'adresse, et délivrent une information de scrutation représentative du succès ou de l'échec de cette scrutation. 13. Dispositif selon la revendication 12, caractérisé par le fait qu'une information représentative du succès de la scrutation comporte un premier mot numérique (Ml) représentatif de la subdivision comportant le champ d'adressage contenant l'étiquette étendue du mot d'adresse associé à ladite requête d'accès, par le fait que la zone de stockage de données est adressable à partir du premier mot numérique (Ml) et de l'index raccourci (IXR) du mot d'adresse associé à ladite requête d' accès. 14. Dispositif selon la revendication 13, caractérisé par le fait que NW est supérieur à un, par le fait qu'une information représentative du succès de la scrutation comporte un deuxième mot numérique (M2) représentatif de l'emplacement dudit champ d'adressage dans la sous-zone désignée par l'index raccourci du mot d'adresse, et par le fait que la mémoire cache comporte des moyens de sélection (MUX1) aptes à sélectionner la ligne de cache appartenant au NW lignes de caches désignées par le premier mot numérique, en utilisant le deuxième mot numérique. 15. Dispositif selon l'une des revendications 12 à 14, caractérisé par le fait que le contrôleur de cache (CCH) comporte des moyens d'élaboration (MLB), aptes en présence d'une information représentative d'un échec de la scrutation, à élaborer un mot numérique d'attribution (Ptu) désignant une subdivision non protégée de la mémoire cache, ladite nouvelle ligne de cache étant allouée dans ladite subdivision ainsi désignée, et dans le sous groupe de cette subdivision désigné par l'index raccourci du mot d'adresse associé à ladite requête d' accès. 16. Dispositif selon la revendication 15, caractérisé par le fait que les moyens d'élaboration (MLB) élaborent ledit mot numérique d'attribution à partir dudit nombre prédéterminé de bits de poids forts de l'index et des indications de protection des subdivisions.