Brevet FR3115616A1 — publié le 20220429

Titre de l'invention : Matériel et prise en charge de configuration pour l'allocation de ressources partagées Des modes de réalisation destinés à allouer des ressources partagées sont divulgués. Dans un mode de réalisation, un appareil comprend un cœur et un sélecteur de débit matériel. Le sélecteur de débit matériel est destiné, en réponse à une première indication selon laquelle la demande de largeur de bande de mémoire provenant du cœur a atteint une valeur de seuil, à déterminer une valeur de retard devant être utilisée pour limiter l'allocation de largeur de bande de mémoire au cœur. Le sélecteur de débit matériel comprend un contrôleur ayant un premier compteur destiné à compter une deuxième indication de demande de largeur de bande de mémoire provenant du premier cœur et un deuxième compteur destiné à compter des expirations de fenêtres temporelles. La première indication est basée sur une différence entre la valeur du premier compteur et la valeur du deuxième compteur. Figure: Figure 1 Matériel et prise en charge de configuration pour l'allocation de ressources partagées Domaine technique de l’invention Le domaine de l'invention concerne de manière générale l'architecture d'ordinateurs et plus précisément, l'allocation de ressources partagées. Contexte de l'invention. Les cœurs de processeurs présents dans les processeurs multicœurs peuvent utiliser des ressources système partagées telles que des caches (par exemple, un cache de dernier niveau, LLC, Last Level Cache), une mémoire système, des dispositifs d'entrée/sortie (I/O) et des interconnexions. La qualité du service fourni aux applications peut se dégrader et/ou être imprévisible en raison de conflits d'accès à ces ressources partagées ou à d'autres. Certains processeurs intègrent des technologies telles que la Technologie de Direction des Ressources (RDT, Resource Director Technology) d'Intel Corporation, qui offrent une visibilité et/ou un contrôle sur la façon dont les ressources partagées, telles que la largeur de bande de la mémoire et du LLC, sont utilisées par différentes applications s'exécutant sur le processeur. À titre d'exemple, ces technologies peuvent permettre au logiciel système d'allouer différentes quantités d'une ressource à différentes applications et/ou de surveiller l'utilisation de ressources et d'empêcher temporairement l'accès à une ressource par une application de faible priorité qui dépasse un quota. La présente invention est illustrée à titre non limitatif d'exemple dans les figures des dessins annexés, dans lesquels les mêmes références indiquent des éléments semblables et dans lesquels : représente un schéma fonctionnel d'un système selon des modes de réalisation dans lesquels la ressource partagée allouée peut être un cache et/ou une largeur de bande de mémoire ; , , , illustrent des sélecteurs de débit selon certains modes de réalisation ; montre comment la sortie principale d'un seau percé (leaky bucket) dans un sélecteur de débit peut être utilisée selon certains modes de réalisation ; illustre un modèle d'utilisation au niveau du système selon certains modes de réalisation ; illustre un modèle d'utilisation au niveau du système selon certains modes de réalisation ; représente une vue de principe d'un avantage potentiel de certains modes de réalisation ; illustre l'utilisation d'un mode de réalisation d'une technique de pseudo-verrouillage qui peut permettre le partage efficace d'un cache ; illustre un procédé selon un mode de réalisation ; [ et [11B]] sont des schémas fonctionnels illustrant un format générique d'instruction adapté à la vectorisation et des modèles d'instructions correspondants, selon certains modes de réalisation ; la est un schéma fonctionnel illustrant un format générique d'instruction adapté à la vectorisation et des modèles d'instructions de classe A correspondants, selon certains modes de réalisation ; la est un schéma fonctionnel illustrant le format générique d'instruction adapté à la vectorisation et des modèles d'instructions de classe B correspondants, selon certains modes de réalisation ; est un schéma fonctionnel illustrant un exemple de format spécifique d'instruction adapté à la vectorisation selon certains modes de réalisation ; est un schéma fonctionnel illustrant les champs du format spécifique d'instruction adapté à la vectorisation, qui constituent le champ opcode complet selon un mode de réalisation ; est un schéma fonctionnel illustrant les champs du format spécifique d'instruction adapté à la vectorisation, qui constituent le champ d'index de registre selon un mode de réalisation ; est un schéma fonctionnel illustrant les champs du format spécifique d'instruction adapté à la vectorisation, qui constituent le champ d'opération d'augmentation selon un mode de réalisation ; est un schéma fonctionnel d'une architecture de registre selon un mode de réalisation ; est un schéma fonctionnel illustrant à la fois un exemple de pipeline à exécution dans l'ordre et un exemple de pipeline à renommage de registre et à émission/exécution dans le désordre selon certains modes de réalisation ; est un schéma fonctionnel illustrant à la fois un exemple de réalisation d'un cœur à architecture à exécution dans l'ordre et un exemple de cœur à architecture à renommage de registre et à émission/exécution dans le désordre à incorporer dans un processeur selon certains modes de réalisation ; les figures 15A-B illustrent un schéma fonctionnel d'un exemple plus spécifique d'architecture à cœur à exécution dans l'ordre, lequel cœur peut être l'un de plusieurs blocs logiques (notamment d'autres cœurs du même type et/ou de types différents) dans une puce ; est un schéma fonctionnel d'un seul cœur de processeur, avec sa connexion au réseau d'interconnexion sur puce et avec son sous-ensemble local de cache de Niveau 2 (L2), selon certains modes de réalisation ; représente une vue agrandie d'une partie du cœur de processeur de la , selon certains modes de réalisation ; est un schéma fonctionnel d'un processeur qui peut avoir plus d'un cœur, qui peut avoir un contrôleur mémoire intégré et qui peut avoir un circuit graphique intégré, selon certains modes de réalisation ; les figures 17-20 sont des schémas fonctionnels d'exemples d'architectures d'ordinateurs ; est un schéma fonctionnel d'un système selon un mode de réalisation de la présente invention ; est un schéma fonctionnel d'un premier exemple de système plus spécifique selon un mode de réalisation de la présente invention ; est un schéma fonctionnel d'un deuxième exemple de système plus spécifique selon un mode de réalisation de la présente invention ; est un schéma fonctionnel d'un système sur puce (SoC) selon un mode de réalisation de la présente invention ; et est un schéma fonctionnel comparant l'utilisation d'un convertisseur d'instructions logiciel destiné à convertir des instructions binaires d'un jeu d'instructions source en instructions binaires d'un jeu d'instructions cible selon certains modes de réalisation. Appareil comprenant : un cœur (111, 112, 704, 1490, 1602A-N) ; et un matériel sélecteur de débit (161A, 161B, 162A, 162B, 200, 300, 400, 610, 630, 702) destiné, en réponse à une première indication selon laquelle la demande de largeur de bande de mémoire provenant du cœur (111, 112, 704, 1490, 1602A-N) a atteint une valeur de seuil supérieure, à déterminer une première valeur de retard (MBEDelay) devant être utilisée pour limiter l'allocation de largeur de bande de mémoire au cœur (111, 112, 704, 1490, 1602A-N), dans lequel le matériel sélecteur de débit (161A, 161B, 162A, 162B, 200, 300, 400, 610, 630, 702) comprend un contrôleur ayant un premier compteur destiné à compter une deuxième indication de demande de largeur de bande de mémoire provenant du premier cœur et un deuxième compteur destiné à compter des expirations de fenêtres temporelles, et la première indication est basée sur une différence entre la valeur du premier compteur et la valeur du deuxième compteur. Appareil selon la revendication 1, dans lequel le premier compteur est destiné à compter des échecs de cache partagé en tant que deuxième indication de demande de largeur de bande de mémoire. Appareil selon la revendication 1 ou 2, comprenant en outre un agent de mise en cache (410, 706) connecté à un contrôleur mémoire intégré (420, 708, 1614, 1872, 1882) sur une interconnexion maillée, dans lequel l'agent de mise en cache (410, 706) est destiné à fournir au sélecteur de débit (161A, 161B, 162A, 162B, 200, 300, 400, 610, 630, 702) la deuxième indication. Appareil selon l'une quelconque des revendications 1 à 3, comprenant en outre un matériel limiteur de débit (151A, 151B, 152A, 152B), dans lequel le matériel sélecteur de débit (161A, 161B, 162A, 162B, 200, 300, 400, 610, 630, 702) est destiné à fournir au limiteur de débit (151A, 151B, 152A, 152B) la première valeur de retard (MBEDelay) devant être utilisée par le matériel limiteur de débit pour limiter l'allocation de largeur de bande de mémoire au cœur (111, 112, 704, 1490, 1602A-N). Appareil selon l'une quelconque des revendications 1 à 4, dans lequel la première valeur de retard (MBEDelay) doit être utilisée pour retarder des demandes d'accès mémoire provenant du cœur (111, 112, 704, 1490, 1602A-N). Appareil selon l'une quelconque des revendications 1 à 5, dans lequel la première valeur de retard (MBEDelay) doit être mappée sur un niveau de ralentissement devant être utilisé pour ralentir l'accès mémoire à partir du cœur (111, 112, 704, 1490, 1602A-N). Appareil selon l'une quelconque des revendications 1 à 6, dans lequel la première valeur de retard (MBEDelay) doit être utilisée pour retarder des demandes d'accès mémoire à partir du cœur (111, 112, 704, 1490, 1602A-N) en retardant l'allocation de micro-opérations provenant d'une file d'exécution (111A, 111B, 112A, 112B) s'exécutant sur le cœur (111, 112, 704, 1490, 1602A-N). Appareil selon l'une quelconque des revendications 1 à 7, dans lequel le matériel sélecteur de débit (161A, 161B, 162A, 162B, 200, 300, 400, 610, 630, 702) est également destiné, en réponse à une troisième indication selon laquelle la demande de largeur de bande de mémoire provenant du cœur (111, 112, 704, 1490, 1602A-N) a diminué jusqu'à une valeur de seuil inférieure, à fournir au matériel limiteur de débit (151A, 151B, 152A, 152B) une quatrième indication devant être utilisée pour augmenter l'allocation de largeur de bande de mémoire au cœur (111, 112, 704, 1490, 1602A-N). Appareil selon la revendication 8, dans lequel, en réponse à la quatrième indication, l'allocation de largeur de bande de mémoire au cœur (111, 112, 704, 1490, 1602A-N) doit cesser d'être limitée par le matériel limiteur de débit. Appareil selon la revendication 8 ou 9, dans lequel le matériel limiteur de débit (151A, 151B, 152A, 152B) est destiné à poursuivre la limitation d'allocation de largeur de bande de mémoire au cœur (111, 112, 704, 1490, 1602A-N) avant la troisième indication et une cinquième indication selon laquelle la demande de largeur de bande de mémoire provenant du cœur (111, 112, 704, 1490, 1602A-N) a diminué jusqu'à la valeur de seuil supérieure. Appareil selon l'une quelconque des revendications 1 à 10, dans lequel le matériel sélecteur de débit (161A, 161B, 162A, 162B, 200, 300, 400, 610, 630, 702) est destiné à déterminer la première valeur de retard sur la base d'une première classe de service devant être affectée à une file d'exécution (111A, 111B, 112A, 112B) devant être exécutée sur le cœur (111, 112, 704, 1490, 1602A-N). Appareil selon la revendication 11, dans lequel le matériel sélecteur de débit (161A, 161B, 162A, 162B, 200, 300, 400, 610, 630, 702) est destiné à déterminer une première longueur de fenêtre temporelle sur la base de la première classe de service devant être affectée à la file d'exécution (111A, 111B, 112A, 112B). Appareil selon la revendication 12, comprenant en outre une unité de stockage destinée à stocker un mappage d'une pluralité de classes de service, notamment la première classe de service, sur une pluralité de longueurs de fenêtre temporelle, notamment la première longueur de fenêtre temporelle. Appareil selon la revendication 13, dans lequel le mappage doit être stocké par un processus d'étalonnage pendant la mise sous tension de l'appareil. Procédé (1000) comprenant : l'étalonnage (1010) d'un sélecteur de débit matériel (161A, 161B, 162A, 162B, 200, 300, 400, 610, 630, 702) avec une longueur de fenêtre temporelle et une première valeur de retard (MBEDelay) ; la détermination (1020) du fait que la demande de largeur de bande de mémoire provenant d'un cœur (111, 112, 704, 1490, 1602A-N) de processeur a atteint une valeur de seuil supérieure, dans lequel la détermination est basée sur une différence entre une indication de demande de largeur de bande de mémoire provenant du cœur (111, 112, 704, 1490, 1602A-N) et un compte d'expirations de fenêtres temporelles ; et en réponse à la détermination du fait que la demande de largeur de bande de mémoire provenant du cœur (111, 112, 704, 1490, 1602A-N) de processeur a atteint la valeur de seuil supérieure, la limitation (1022) de l'allocation de largeur de bande de mémoire au cœur (111, 112, 704, 1490, 1602A-N) sur la base de la première valeur de retard. Procédé (1000) selon la revendication 15, comprenant en outre : la détermination du fait que la demande de largeur de bande de mémoire provenant du cœur (111, 112, 704, 1490, 1602A-N) de processeur a diminué jusqu'à une valeur de seuil inférieure ; et en réponse à la détermination du fait que la demande de largeur de bande de mémoire provenant du cœur (111, 112, 704, 1490, 1602A-N) de processeur a diminué jusqu'à la valeur de seuil inférieure, la suppression (1042) de la limitation de l'allocation de largeur de bande de mémoire au cœur (111, 112, 704, 1490, 1602A-N). Procédé (1000) selon la revendication 15, comprenant en outre : la détermination du fait que la demande de largeur de bande de mémoire provenant du cœur (111, 112, 704, 1490, 1602A-N) de processeur a diminué jusqu'à la valeur de seuil supérieure après la détermination du fait que la demande a atteint la valeur de seuil supérieure et avant la détermination du fait que la demande a diminué jusqu'à la valeur de seuil inférieure ; et en réponse à la détermination du fait que la demande de largeur de bande de mémoire provenant du cœur (111, 112, 704, 1490, 1602A-N) de processeur a diminué jusqu'à la valeur de seuil supérieure, la poursuite de la limitation de l'allocation de largeur de bande de mémoire au cœur (111, 112, 704, 1490, 1602A-N). Système (100, 1700) comprenant : une mémoire (1740) ; un cœur (111, 112, 704, 1490, 1602A-N) ; un sélecteur de débit matériel (161A, 161B, 162A, 162B, 200, 300, 400, 610, 630, 702) destiné, en réponse à une première indication selon laquelle la demande de largeur de bande de mémoire provenant du cœur (111, 112, 704, 1490, 1602A-N) a atteint une valeur de seuil supérieure, à déterminer une première valeur de retard devant être utilisée pour limiter l'allocation de largeur de bande de mémoire au cœur (111, 112, 704, 1490, 1602A-N), dans lequel le sélecteur de débit matériel (161A, 161B, 162A, 162B, 200, 300, 400, 610, 630, 702) comprend un contrôleur (220) ayant un premier compteur destiné à compter une deuxième indication de demande de largeur de bande de mémoire provenant du premier cœur et un deuxième compteur destiné à compter des expirations de fenêtres temporelles, et la première indication est basée sur une différence entre la valeur du premier compteur et la valeur du deuxième compteur. Système (100, 1700) selon la revendication 18, dans lequel le sélecteur de débit matériel (161A, 161B, 162A, 162B, 200, 300, 400, 610, 630, 702) est destiné à déterminer une première longueur de fenêtre temporelle sur la base d'une première classe de service devant être affectée à une file d'exécution (111A, 111B, 112A, 112B) devant être exécutée sur le cœur (111, 112, 704, 1490, 1602A-N). Système (100, 1700) selon la revendication 19, comprenant en outre une unité de stockage destinée à stocker un mappage d'une pluralité de classes de service, notamment la première classe de service, sur une pluralité de longueurs de fenêtre temporelle, notamment la première longueur de fenêtre temporelle.