Brevet FR2939533A1 — publié le 20100611

ACCES DE MEMOIRE CACHE PARTAGEE A DES DONNEES D'ENTREE/SORTIE CONTEXTE Les contrôleurs d'entrée/sortie (I/O) ne mettent en oeuvre qu'une petite mémoire cache, afin de maintenir une cohérence avec une mémoire de système informatique. La petite mémoire cache est utilisée pour gérer les données auxquelles un accès est effectué à partir d'une mémoire cohérente du système. Des améliorations sont nécessaires dans ce domaine technologique. RESUME Dans un mode de réalisation, l'accès de mémoire cache partagée à des données d'entrée/sortie (I/O) comprend un dispositif. Le dispositif comprend un processeur. Le processeur comprend une mémoire cache partagée, un contrôleur d'entrée/sortie et une pluralité de coeurs de processeur. La mémoire cache partagée est configurée pour charger et mémoriser des données d'entrée/sortie. Le contrôleur d'entrée/sortie est configuré pour échanger des données d'entrée/sortie avec la mémoire cache partagée. Chacun de la pluralité de coeurs de processeur est configuré pour accéder aux données d'entrée/sortie mémorisées dans la mémoire cache partagée. Dans un autre mode de réalisation, l'accès de mémoire cache partagée à des données d'entrée/sortie comprend un procédé. Le procédé comprend la configuration d'une mémoire cache partagée pour mémoriser des données d'entrée/sortie pour un processeur. Le processeur comprend une pluralité de coeurs de processeur. Le procédé comprend en outre la mémorisation des données d'entrée/sortie provenant d'un et allant vers un dispositif d'entrée/sortie dans la mémoire cache partagée et l'accès aux données d'entrée/sortie mémorisées dans la mémoire cache partagée par au moins l'un de la pluralité de coeurs de processeur. Dans un autre mode de réalisation, l'accès de mémoire cache partagée à des données d'entrée/sortie comprend un dispositif. Le dispositif comprend des moyens pour charger et mémoriser des données d'entrée/sortie. Le dispositif comprend en outre des moyens pour échanger les données d'entrée/sortie avec les moyens pour charger et mémoriser et une pluralité de moyens pour traiter et accéder aux données d'entrée/sortie mémorisées dans les moyens pour charger et mémoriser. Dans d'autres modes de réalisation, l'un quelconque des modes de réalisation ci-dessus peut comprendre un ou plusieurs des modes de réalisation qui suivent. Dans certains modes de réalisation, le processeur comprend en outre un dispositif d'entrée/sortie configuré pour échanger des données d'entrée/sortie avec le contrôleur d'entrée/sortie. Dans d'autres modes de réalisation, chacun de la pluralité de coeurs de processeur comprend une mémoire cache de coeur de processeur, la mémoire cache de coeur de processeur de chaque coeur de processeur étant différente de la mémoire cache partagée. Dans certains modes de réalisation, la mémoire cache partagée est en outre configurée pour déterminer un indicateur d'utilisation pour les données d'entrée/sortie mémorisées dans la mémoire cache partagée et/ou pour déplacer les données d'entrée/sortie mémorisées dans la mémoire cache partagée vers une mémoire sur la base de l'indicateur d'utilisation. Dans d'autres modes de réalisation, la mémoire cache partagée est en outre configurée pour déterminer l'indicateur d'utilisation pour les données d'entrée/sortie mémorisées dans la mémoire cache partagée sur la base d'une modification des données d'entrée/sortie par au moins l'un de la pluralité de coeurs de processeur. Dans certains modes de réalisation, la mémoire cache partagée est en outre configurée pour déterminer l'indicateur d'utilisation pour les données d'entrée/sortie mémorisées dans la mémoire cache partagée sur la base d'un type des données, d'une source des données et/ou d'une destination des données. Dans d'autres modes de réalisation, la mémoire cache partagée est en outre configurée pour déterminer l'indicateur d'utilisation pour les données d'entrée/sortie mémorisées dans la mémoire cache partagée sur la base d'une taille libre de la mémoire cache partagée et/ou d'un pourcentage de la taille libre de la mémoire cache partagée. Dans certains modes de réalisation, le procédé comprend en outre la communication des données d'entrée/sortie vers le et provenant du dispositif d'entrée/sortie à un contrôleur d'entrée/sortie et la communication des données d'entrée/sortie vers le et provenant du contrôleur d'entrée/sortie à la mémoire cache partagée. Dans d'autres modes de réalisation, le procédé comprend en outre la détermination d'un indicateur d'utilisation pour les données d'entrée/sortie mémorisées dans la mémoire cache partagée et/ou le déplacement des données d'entrée/sortie mémorisées dans la mémoire cache partagée vers une mémoire sur la base de l'indicateur d'utilisation. Dans certains modes de réalisation, le procédé comprend en outre la détermination de l'indicateur d'utilisation pour les données d'entrée/sortie mémorisées dans la mémoire cache partagée sur la base d'une modification des données d'entrée/sortie par au moins l'un de la pluralité de coeurs de processeur. Dans d'autres modes de réalisation, le procédé comprend en outre la détermination de l'indicateur d'utilisation pour les données d'entrée/sortie mémorisées dans la mémoire cache partagée sur la base d'un type des données, d'une source des données et/ou d'une destination des données. Dans certains modes de réalisation, le procédé comprend en outre la détermination de l'indicateur d'utilisation pour les données d'entrée/sortie mémorisées dans la mémoire cache partagée sur la base d'une taille libre de la mémoire cache partagée et/ou d'un pourcentage de la taille libre de la mémoire cache partagée. Ces avantages et caractéristiques et d'autres des divers modes de réalisation, ainsi que leur organisation et leur manière de fonctionner, deviendront évidents à partir de la description détaillée qui suit lorsqu'elle est lue conjointement avec les dessins joints. BREVE DESCRIPTION DES DESSINS Des modes de réalisation sont décrits en faisant référence aux dessins joints, sur lesquels : la figure 1 est un schéma de principe illustrant un système exemplaire ; la figure 2 est un schéma de principe illustrant un serveur d'entrée/sortie en accès direct exemplaire ; la figure 3 est un schéma de principe illustrant un système exemplaire du flux de données dans un serveur d'entrée/sortie en accès direct ; la figure 4 illustre un système exemplaire et le flux de données d'entrée/sortie à travers le système ; la figure 5 illustre un système exemplaire et le flux de données d'entrée/sortie à travers le système ; la figure 6 illustre un système exemplaire et le flux de données d'entrée/sortie à travers le système ; la figure 7 illustre un organigramme du flux exemplaire de données d'entrée/sortie ; et la figure 8 illustre un organigramme du flux de données d'entrée/sortie. DESCRIPTION DETAILLEE Les densités des circuits de processeur se développent au point que les contrôleurs d'entrée/sortie (I/O) (par exemple, une interface PCIE (Peripheral Component Interconnect Express), une interface Ethernet, etc.) peuvent être inclus sur la même puce en tant que multiples coeurs d'unité centrale (CPU) (également appelés processeur). Dans certains exemples, les coeurs d'unité centrale peuvent partager une mémoire cache entre eux, c'est-à-dire, une mémoire cache partagée, pour permettre avantageusement un partage efficace, et une utilisation optimale de mémorisation en mémoire cache mise en oeuvre sur la puce. Dans certaines mises en oeuvre de la technologie, les contrôleurs d'entrée/sortie ne mettent en oeuvre qu'une petite mémoire cache, afin de maintenir la cohérence avec une mémoire de système informatique. La petite mémoire cache est utilisée pour gérer les données auxquelles un accès est effectué à partir d'une mémoire cohérente du système. Dans ces mises en oeuvre, les lignes de mémoire cache font généralement partie d'un accès direct à la mémoire (DMA). Une fois que la ligne de mémoire cache a été utilisée, elle est rapidement libérée, en réécrivant les données dans la mémoire si elles ont été modifiées. Pour les données écrites, cette réécriture gaspille une bande passante de la mémoire, étant donné qu'un accès à la mémoire doit être effectué d'abord pour écrire les données, et ensuite de nouveau pour que le processeur les lise. Dans ces mises en oeuvre, pour les données lues, les données, bien qu'envoyées d'une mémoire cache de processeur au contrôleur d'entrée/sortie, peuvent être perdues de la mémoire cache du processeur, et ainsi, dans le cas d'un nouvel accès par le processeur, doivent être lues dans la mémoire. En outre, dans ces mises en oeuvre, les lignes de mémoire cache auxquelles un accès est effectué pour effectuer un envoi à des dispositifs d'entrée/sortie sont soit chargées à partir de la mémoire, soit explicitement positionnées à partir des mémoires caches de processeur pour effectuer le chargement. A ce titre, dans cette mise en oeuvre, la mémoire cache supplémentaire augmente la latence des données d'entrée/sortie. Cependant, dans certains exemples, une fois qu'un contrôleur d'entrée/sortie est mis en oeuvre sur la puce de processeur, sa petite mémoire cache dédiée peut être éliminée. Au lieu de cela, le contrôleur d'entrée/sortie peut, par exemple, utiliser la grande mémoire cache partagée avec les coeurs de processeur, c'est-à-dire, la mémoire cache partagée. Dans d'autres exemples, cette utilisation de la mémoire cache partagée élimine avantageusement le besoin de retirer les lignes de mémoire cache immédiatement et diminue la latence du chargement et/ou de la mémorisation des données d'entrée/sortie. Dans d'autres exemples, un autre avantage est que la mémoire cache partagée laisse les données d'entrée/sortie là où un accès peut y être facilement effectué par les coeurs de processeur. Dans certains exemples, un avantage supplémentaire est que la bande passante de la mémoire est économisée étant donné que la ligne de mémoire cache ne doit pas être écrite vers une mémoire, seulement pour être lue et souvent modifiée un court temps après par un coeur de processeur. Dans certains exemples, les données d'entrée/sortie peuvent être mémorisées centralement et/ou chargées dans la mémoire cache partagée du processeur qui est utilisée pour la mise en mémoire cache centralisée de données d'entrée/sortie pour une utilisation par le processeur, les coeurs de processeur et/ou les mémoires caches de coeur de processeur. Dans certains exemples, cette approche est avantageuse en ce que les coeurs de processeur ne doivent pas être interrompus pour mémoriser et/ou charger les données d'entrée/sortie dans la mémoire cache partagée, mais au lieu de cela la mémoire cache de coeur de processeur trouve simplement les données d'entrée/sortie nécessaires alors qu'elle accède à la mémoire cache partagée lorsque les données d'entrée/sortie sont nécessaires. Dans d'autres exemples, la lecture des données produites par un coeur de processeur et envoyées à l'interface d'entrée/sortie est également avantageusement améliorée en ce que les données d'entrée/sortie sont trouvées directement dans la mémoire cache partagée. Dans certains exemples, ces données d'entrée/sortie restent dans la mémoire cache partagée, bénéficiant avantageusement d'une mémoire cache de coeur de processeur qui pourrait accéder de nouveau aux données, au lieu de devoir accéder de nouveau à la mémoire pour les données, ce qui augmente la demande appliquée à la mémoire. La figure 1 est un schéma de principe illustrant un système 100 exemplaire. Le système 100 comprend un ordinateur A 110a, un ordinateur B 110b, une ferme de serveurs 112, un serveur 114, un réseau de communication A 120a, un réseau de communication B 120b, et un serveur d'entrée/sortie en accès direct 130. L'ordinateur A 110a, l'ordinateur B 110a, la ferme de serveurs 112 et le serveur 114 communiquent avec le serveur d'entrée/sortie en accès direct 130 par l'intermédiaire du réseau de communication A 120a et/ou du réseau de communication B 120a. La communication entre les ordinateurs 110a et 110b et les serveurs 112, 114 et 130 peut, par exemple, comprendre des données pour un traitement (par exemple, un fichier multimédia pour un encodage, un fichier de données pour un chiffrement, des fichiers de données pour une compilation, etc.) et/ou des données demandées (par exemple, une page Web demandée, un fichier de données demandé, un fichier multimédia demandé, etc.). La figure 2 est un schéma de principe illustrant un serveur d'entrée/sortie (I/O) en accès direct 230 exemplaire dans un système 200. Le serveur d'entrée/sortie en accès direct 230 comprend un dispositif de réseau A 232a, un dispositif de réseau B 232b et un dispositif d'entrée/sortie 232c (appelés collectivement dispositif d'entrée/sortie 232). Le serveur d'entrée/sortie en accès direct 230 comprend en outre une mémoire 236, un dispositif de mémorisation 238 et un processeur 240. Le processeur 240 comprend un contrôleur d'entrée/sortie 244, une mémoire cache partagée 246 et une pluralité de coeurs de processeur A 242a, B 242b et C 242c (appelés collectivement coeur de processeur 242). Chaque coeur de processeur 242 comprend une mémoire cache de coeur de processeur, par exemple, une mémoire cache de coeur de processeur A 243A (celles-ci étant appelées collectivement mémoire cache de coeur de processeur 243). Dans certains exemples, le dispositif d'entrée/sortie 232 comprend n'importe quel type de dispositif d'entrée/sortie comprenant un dispositif de réseau (par exemple, un modem, un dispositif Ethernet, un dispositif de réseau à fibres optiques, etc.), un dispositif de mémorisation (par exemple, un disque dur, un réseau de zone de mémorisation, une mémoire associée au réseau, etc.), et/ou n'importe quel autre type de dispositif d'entrée/sortie (par exemple, un scanner, une imprimante, etc.). Les données d'entrée/sortie peuvent comprendre, par exemple, n'importe quel type de données utilisées et/ou auxquelles un accès est effectué par n'importe quel type de dispositif d'entrée/sortie 232 et/ou processeur 240. Les données d'entrée/sortie peuvent comprendre, par exemple, un ensemble de fichiers compressés, un flot de données encodées, un flot de données chiffrées, un fichier multimédia, un fichier de données, et/ou n'importe quel autre type de fichier utilisé dans/par le processeur 240. Dans d'autres exemples, le processeur 240 configure la mémoire cache partagée 246 pour mémoriser des données d'entrée/sortie (par exemple, écrire des données d'entrée/sortie, lire des données d'entrée/sortie, accéder à des données d'entrée/sortie, etc.). Dans certains exemples, la mémoire cache partagée 246 peut, par exemple, faire partie du domaine de cohérence de la mémoire cache du processeur 240, ce qui permet au processeur 240 de réduire avantageusement sa demande appliquée à la mémoire 236 en accédant aux données d'entrée/sortie dans la mémoire cache partagée 246. Le processeur 240 comprend une pluralité de coeurs de processeur A 242a, B 242b et C 242c. Chacun des coeurs de processeur 242 peut accéder aux données d'entrée/sortie mémorisées dans la mémoire cache partagée 246. L'accès aux données d'entrée/sortie par chaque coeur de processeur 242 peut comprendre la récupération des données d'entrée/sortie pour un traitement (par exemple, un encodage, un décodage, un calcul, un affichage graphique, etc.) et/ou un chargement des données d'entrée/sortie après traitement (par exemple, pour une mémorisation dans la mémoire 236, pour une mémorisation dans le dispositif de mémorisation 238, pour une transmission par l'intermédiaire du dispositif de réseau A 232a, pour une sortie par l'intermédiaire du dispositif d'entrée/sortie 232c, etc.). Dans certains exemples, le contrôleur d'entrée/sortie 244 reçoit les données d'entrée/sortie du dispositif d'entrée/sortie 232. Le contrôleur d'entrée/sortie 244 peut mémoriser les données d'entrée/sortie reçues directement dans la mémoire cache partagée 246. Dans d'autres exemples, la mémoire cache partagée 246 peut être avantageusement utilisée pour réduire la latence moyenne pour les coeurs de processeur 242 accédant aux données d'entrée/sortie reçues en chargeant les données d'entrée/sortie dans la mémoire cache partagée 246 sur le processeur 240. Dans certains exemples, la mémoire cache partagée 246 est plus proche dans la hiérarchie de mémoires de la mémoire cache de coeur de processeur 243 que la mémoire 236, ce qui offre avantageusement une latence moyenne réduite pour le chargement des données d'entrée/sortie. Dans certains exemples, la mémoire cache partagée 246 peut être plus proche dans la hiérarchie de mémoires, étant donné que la hiérarchie de mémoires en commençant par le coeur de processeur 242 passe de la mémoire cache de coeur de processeur 243 à la mémoire cache partagée 246 à la mémoire 236. Autrement dit, dans ces exemples, la mémoire cache partagée 246 est plus proche logiquement et/ou physiquement de la mémoire cache de coeur de processeur 243 que la mémoire 236. Dans d'autres exemples, d'entrée/sortie 244 communique d'entrée/sortie de la mémoire cache dispositif d'entrée/sortie 232. d'entrée/sortie 244 peut charger d'entrée/sortie directement de la le contrôleur les données partagée 246 au Le contrôleur les données mémoire cache partagée 246 vers le dispositif d'entrée/sortie 232. Dans certains exemples, les données d'entrée/sortie peuvent avantageusement être traitées par le coeur de processeur 242, mémorisées dans la mémoire cache partagée 246, qui est plus proche dans la hiérarchie de mémoires du coeur de processeur 242 que la mémoire 236, et communiquées au dispositif d'entrée/sortie 232 pour une sortie (par exemple, une transmission, une mémorisation, etc.), ce qui réduit la latence moyenne pour les transactions d'entrée/sortie. Dans d'autres exemples, un autre avantage est que le chargement et la mémorisation directs des données d'entrée/sortie du dispositif d'entrée/sortie 232 vers la mémoire cache partagée 246 par l'intermédiaire du contrôleur d'entrée/sortie 244 peuvent réduire la demande appliquée à la mémoire 236, ce qui augmente la bande passante disponible pour la mémoire 236 pour un autre chargement et une autre mémorisation. Dans certains exemples, le contrôleur d'entrée/sortie 244 communique directement avec la mémoire cache partagée 246 et/ou le dispositif d'entrée/sortie 234. Par exemple, les adresses de la mémoire cache partagée 246 peuvent être mémorisées dans la logique de commande du contrôleur d'entrée/sortie 244, de sorte que le contrôleur d'entrée/sortie 244 n'utilise pas d'instructions d'une source externe en relation avec l'emplacement de chargement et/ou de mémorisation des données d'entrée/sortie. Le dispositif d'entrée/sortie 234 peut, par exemple, charger les données d'entrée/sortie directement à partir du contrôleur d'entrée/sortie 244 et/ou les mémoriser dans celui-ci sans instructions d'une source externe en relation avec l'emplacement de chargement et/ou de mémorisation des données d'entrée/sortie. Dans certains exemples, la communication directe des données d'entrée/sortie entre le contrôleur d'entrée/sortie 244, le dispositif d'entrée/sortie et la mémoire cache partagée 246 permet avantageusement aux coeurs de processeur 242 d'accéder aux données d'entrée/sortie sans avoir à charger les données d'entrée/sortie à partir de la mémoire 236 et/ou du dispositif de mémorisation 238, ce qui diminue la latence d'accès aux données d'entrée/sortie et la latence pour achever les transactions d'entrée/sortie. Dans d'autres exemples, un autre avantage est que les données d'entrée/sortie sont mémorisées et/ou chargées dans la mémoire cache partagée 246 automatiquement sans prendre en considération des instructions externes, ce qui permet au dispositif d'entrée/sortie 232 et/ou au contrôleur d'entrée/sortie de comprendre une logique simple comparé à des configurations qui nécessitent des instructions externes pour la mémorisation et/ou le chargement de données d'entrée/sortie. Dans d'autres exemples, les mémoires caches de coeur de processeur 243 sont différentes de la mémoire cache partagée 246. Autrement dit, chaque coeur de processeur 242 peut comprendre sa mémoire cache de coeur de processeur 243 et le processeur 240 a une mémoire cache partagée 246 distincte. La mémoire cache partagée 246 distincte est accessible par tous les coeurs de processeur 242. La figure 3 est un schéma de principe illustrant un système 300 exemplaire du flux de données dans un serveur d'entrée/sortie en accès direct 330. Le serveur d'entrée/sortie en accès direct 330 comprend une pluralité de dispositifs d'entrée/sortie, un dispositif de réseau A 332a, un dispositif de réseau B 332b, un dispositif d'entrée/sortie 332z (appelés collectivement dispositif d'entrée/sortie 332). Chaque dispositif d'entrée/sortie 332 comprend des données d'entrée/sortie A 352a, B 352b et Z 352z, respectivement (appelées collectivement données d'entrée/sortie 352). Le serveur d'entrée/sortie en accès direct 330 comprend en outre un processeur 340 et une mémoire 336. Le processeur 340 comprend un contrôleur d'entrée/sortie 334, des coeurs de processeur 342 et une mémoire cache partagée 346. Dans certains exemples, le dispositif d'entrée/sortie 332 reçoit les données d'entrée/sortie 352 (par exemple, d'un réseau de communication, d'un disque dur, etc.). Les données d'entrée/sortie 352 sont communiquées du dispositif d'entrée/sortie 332 au contrôleur d'entrée/sortie 344. Les données d'entrée/sortie 352 peuvent, par exemple, être communiquées directement du dispositif d'entrée/sortie 332 au contrôleur d'entrée/sortie 344 par l'intermédiaire de connexions électriques. Les données d'entrée/sortie sont communiquées du contrôleur d'entrée/sortie 344 à la mémoire cache partagée 346. Les données d'entrée/sortie 352 peuvent, par exemple, être communiquées directement du contrôleur d'entrée/sortie 344 à la mémoire cache partagée 346 par l'intermédiaire de connexions électriques. Bien qu'une connexion directe entre le dispositif d'entrée/sortie 332, le contrôleur d'entrée/sortie 344 et/ou la mémoire cache partagée 346 soit examinée ici, la configuration peut comprendre n'importe quel type de modules intermédiaires et/ou d'éléments de circuit (par exemple, un décodeur, un décrypteur, etc.). Dans d'autres exemples, le dispositif d'entrée/sortie 332 communique les données d'entrée/sortie 352 (par exemple, à un réseau de communication, à un SAN, etc.). Les données d'entrée/sortie sont mémorisées dans la mémoire cache partagée 346. Les données d'entrée/sortie sont communiquées de la mémoire cache partagée 346 au contrôleur d'entrée/sortie 344. Le contrôleur d'entrée/sortie 344 communique les données d'entrée/sortie 352 au dispositif d'entrée/sortie 332 pour une communication. Par exemple, un coeur de processeur 342 nécessite un fichier de données pour un chiffrement et une transmission par l'intermédiaire d'un réseau de communication dans le futur proche (par exemple, un besoin prédictif pour le fichier de données, une analyse de l'étape d'extraction, etc.). La mémoire cache partagée 346 demande le fichier de données à la mémoire 236 de la figure 2. Le fichier de données est chargé dans la mémoire cache partagée 346. La mémoire cache de coeur de processeur accède au fichier de données dans la mémoire cache partagée 346 et charge le fichier de données dans la mémoire cache de coeur de processeur pour un traitement. Le coeur de processeur 342 chiffre le fichier de données et traite le fichier de données chiffré pour une transmission (par exemple, vers TCP/IP (Transmission Control Protocol/Internet Protocol), vers HTTP (HyperText Transport Protocol), etc.). La mémoire cache de coeur de processeur charge le fichier de données chiffré pour une transmission à la mémoire cache partagée 346. Le contrôleur d'entrée/sortie 344 communique le fichier de données chiffré pour une transmission directe au dispositif d'entrée/sortie 332 approprié (dans cet exemple, une carte de réseau Ethernet). Dans certains exemples, la hiérarchie de mémoires caches de la mémoire cache partagée 346 intermédiaire permet avantageusement la réduction du chargement et/ou de la mémorisation des données d'entrée/sortie. La figure 4 illustre un système 400 exemplaire et le flux de données d'entrée/sortie à travers le système 400. Le système 400 comprend un dispositif d'entrée/sortie 432, un contrôleur d'entrée/sortie 444, une mémoire cache partagée 446, un coeur de processeur 442 et une mémoire 436. Le dispositif d'entrée/sortie 432 reçoit (450) des données d'entrée/sortie à travers un réseau de communication. Le contrôleur d'entrée/sortie 444 reçoit (451) les données d'entrée/sortie du dispositif d'entrée/sortie 432. La mémoire cache partagée 446 mémorise (452) les données d'entrée/sortie. Le coeur de processeur 442 traite (453) les données d'entrée/sortie (par exemple, modifie les codes, etc.) après que les données d'entrée/sortie ont été chargées de la mémoire cache partagée dans la mémoire cache de coeur de processeur. La mémoire cache de coeur de processeur écrit (454) les données d'entrée/sortie traitées dans la mémoire cache partagée 446. Dans certains exemples, la mémoire cache partagée 446 poussera ultérieurement, ou réécrira les données d'entrée/sortie traitées dans la mémoire 436, alors qu'elle doit libérer l'espace pour d'autres données. La mémoire cache partagée 446 écrit (455) les données d'entrée/sortie traitées dans la mémoire sur la base d'un indicateur d'utilisation (par exemple, un indicateur d'utilisation pour écrire dans la mémoire, un indicateur d'utilisation indiquant que des données d'entrée/sortie traitées ont été modifiées et ne sont pas prêtes pour une sortie, etc.). Dans d'autres exemples, les données d'entrée/sortie pourraient être explicitement renvoyées à la mémoire 436. La figure 5 illustre un système 500 exemplaire et le flux de données d'entrée/sortie à travers le système 500. Le système 500 comprend un dispositif d'entrée/sortie 532, un contrôleur d'entrée/sortie 544, une mémoire cache partagée 546 et un coeur de processeur 542. Le dispositif d'entrée/sortie 532 reçoit (550) des données d'entrée/sortie par l'intermédiaire du réseau de communication. Le contrôleur d'entrée/sortie 544 reçoit (551) les données d'entrée/sortie du dispositif d'entrée/sortie 532. La mémoire cache partagée 546 mémorise (552) les données d'entrée/sortie provenant du contrôleur d'entrée/sortie 544. La mémoire cache de coeur de processeur charge les données d'entrée/sortie pour un traitement (553) par le coeur de processeur 542. La mémoire cache partagée 546 mémorise (554) les données d'entrée/sortie traitées provenant de la mémoire cache de coeur de processeur. Le contrôleur d'entrée/sortie 544 communique (555) les données d'entrée/sortie traitées au dispositif d'entrée/sortie 532. Le dispositif d'entrée/sortie 532 délivre (556) les données d'entrée/sortie traitées (par exemple, transmission à l'ordinateur A 110a, mémorisation sur un SAN, etc.). La figure 6 illustre un système 600 exemplaire et le flux de données d'entrée/sortie à travers le système 600. Le système 600 comprend un dispositif d'entrée/sortie 632, et un contrôleur d'entrée/sortie 644, une mémoire cache partagée 646, un coeur de processeur 642 et une mémoire 636. La mémoire 636 lit (650) les données d'entrée/sortie. La mémoire cache partagée 646 charge (651) les données d'entrée/sortie provenant de la mémoire 636. La mémoire cache de coeur de processeur charge les données d'entrée/sortie et le coeur de processeur 642 traite (652) les données d'entrée/sortie (par exemple, modifie le code, etc.). La mémoire cache partagée 646 mémorise (653) les données d'entrée/sortie traitées provenant de la mémoire cache de coeur de processeur. Le contrôleur d'entrée/sortie 644 charge (654) les données d'entrée/sortie traitées. Le dispositif d'entrée/sortie 632 délivre (655) les données d'entrée/sortie traitées (par exemple, transmission à travers un réseau de communication, sortie vers un dispositif d'affichage, etc .) . La figure 7 illustre un organigramme du flux exemplaire de données d'entrée/sortie à travers le système 200 de la figure 2. Le processeur 240 configure (710) la mémoire cache partagée pour charger et mémoriser les données d'entrée/sortie. La mémoire cache partagée 246 mémorise (720) les données d'entrée/sortie écrites par le contrôleur d'entrée/sortie 244 et/ou les coeurs de processeur 242. Le contrôleur d'entrée/sortie 244 et/ou le coeur de processeur 242 accèdent (730) aux données d'entrée/sortie mémorisées dans la mémoire cache partagée. La figure 8 illustre un organigramme du flux de données d'entrée/sortie à travers le système 200 exemplaire de la figure 2. Le contrôleur d'entrée/sortie 244 et/ou le processeur 240 configurent (810) la mémoire cache partagée 246 pour charger et mémoriser les données d'entrée/sortie. La mémoire cache partagée 246 mémorise (820) les données d'entrée/sortie écrites par le contrôleur d'entrée/sortie 244 et/ou le coeur de processeur 242. Le contrôleur d'entrée/sortie 244 et/ou le coeur de processeur 242 accèdent (830) aux données d'entrée/sortie dans la mémoire cache partagée 246. La mémoire cache partagée 246 détermine (840) un indicateur d'utilisation des données d'entrée/sortie mémorisées dans la mémoire cache partagée 246. Si l'indicateur d'utilisation indique que les données d'entrée/sortie devraient être maintenues dans la mémoire cache partagée, la mémoire cache partagée 246 conserve les données d'entrée/sortie et continue d'autoriser l'accès (830) aux données d'entrée/sortie. Si la mémoire cache partagée 246 détermine (840) que l'indicateur d'utilisation des données indique un effacement dans la mémoire cache partagée, la mémoire cache partagée 246 écrit (850) les données d'entrée/sortie dans la mémoire 236 sur la base de l'indicateur d'utilisation et/ou efface les données d'entrée/sortie de la mémoire cache partagée. Dans certains exemples, la mémoire cache partagée 246 détermine (840) l'indicateur d'utilisation pour les données d'entrée/sortie sur la base d'une modification des données d'entrée/sortie par au moins l'un de la pluralité de coeurs de processeur 242. Par exemple, les données d'entrée/sortie sont destinées à être délivrées à l'ordinateur A 110a à travers le réseau de communication A 120a. Le coeur de processeur 242 chiffre les données d'entrée/sortie pour sortie et la mémoire cache de coeur de processeur 243 charge les données d'entrée/sortie chiffrées dans la mémoire cache partagée 246. La modification des données d'entrée/sortie par le coeur de processeur 242 génère l'indicateur d'utilisation qui est utilisé pour la sortie, l'effacement et/ou le déplacement des données d'entrée/sortie à partir de la mémoire cache partagée 246. Dans certains exemples, la mémoire cache partagée 246 détermine (840) l'indicateur d'utilisation pour les données d'entrée/sortie sur la base d'un type des données d'entrée/sortie (par exemple, des données décodées, des données encodées, des données dans un protocole spécifié, etc.), d'une source des données d'entrée/sortie (par exemple, une carte de réseau, un dispositif de mémorisation, un coeur de processeur 242, etc.) et/ou d'une destination des données d'entrée/sortie (par exemple, des données marquées pour une écriture dans une mémoire à lecture seule, des données marquées à transmettre à un autre ordinateur, etc.). Par exemple, la mémoire cache partagée 246 détermine (840) l'indicateur d'utilisation sur la base de la destination des données d'entrée/sortie incluse dans un en-tête de communication (dans cet exemple, une ferme de serveurs tiers). Dans d'autres exemples, le type des données d'entrée/sortie est spécifié dans un pilote logiciel d'entrée/sortie. Le pilote logiciel d'entrée/sortie peut, par exemple, fournir des instructions pour indiquer que les données ne doivent pas être réutilisées et/ou doivent être retirées de la mémoire cache partagée 246. Dans certains exemples, la source des entrées/sorties comprend des données d'entrée/sortie entrantes (par exemple, des données d'entrée/sortie reçues par l'intermédiaire du dispositif d'entrée/sortie 232 qui n'ont pas été traitées par au moins l'un des coeurs de processeur 242, etc.) et/ou des données d'entrée/sortie sortantes (par exemple, des données d'entrée/sortie traitées par au moins l'un des coeurs de processeur 242 et prêtes pour une communication au dispositif d'entrée/sortie 232, etc.). Par exemple, l'indicateur d'utilisation indique que les données d'entrée/sortie sont retirées de la mémoire cache partagée 246 après que les données d'entrée/sortie ont été communiquées au dispositif d'entrée/sortie 232. En tant qu'autre exemple, l'indicateur d'utilisation indique que les données d'entrée/sortie sont conservées dans la mémoire cache partagée 246 après que les données d'entrée/sortie ont été reçues du dispositif d'entrée/sortie 232, mais avant que les données d'entrée/sortie aient été traitées par au moins l'un des coeurs de processeur 242. Dans certains exemples, la mémoire cache partagée 246 détermine (840) l'indicateur d'utilisation pour les données d'entrée/sortie sur la base d'une taille libre de la mémoire cache partagée 246 (par exemple, seulement dix kilo-octets de disponible et les données d'entrée/sortie représentent onze kilo-octets, seulement deux mégaoctets disponible et les données d'entrée/sortie représentent un mégaoctet, etc.) et/ou d'un pourcentage de la taille libre de la mémoire cache partagée 246 (par exemple, les données d'entrée/sortie occupent plus de cinquante pour cent de l'espace libre de la mémoire cache partagée, les données d'entrée/sortie occuperont plus de dix pour cent de la taille totale de la mémoire cache partagée, etc.). Par exemple, la mémoire cache partagée 246 détermine (840) l'indicateur d'utilisation sur la base de la taille libre de la mémoire cache partagée 246 (dans cet exemple, la taille libre de la mémoire cache partagée 246 est supérieure aux données d'entrée/sortie, ainsi l'indicateur d'utilisation indique de charger et de conserver les données d'entrée/sortie dans la mémoire cache partagée 246). Dans d'autres exemples, le pourcentage de la taille libre de la mémoire cache partagée 246 comprend une limite au pourcentage de mémoire cache partagée 246 qui est occupé par des données d'entrée/sortie et/ou d'autres données auxquelles un accès a été effectué en dernier par la mémoire cache partagée 246, la mémoire cache de coeur de processeur, la mémoire 236, le contrôleur d'entrée/sortie 244, et/ou n'importe quel autre composant du système 200. La mémoire cache partagée 246 peut, par exemple, retirer les données d'entrée/sortie et/ou les autres données lorsque le dernier accès dépasse un seuil spécifié. Dans d'autres exemples, la mémoire cache partagée 246 détermine (840) l'indicateur d'utilisation pour les données d'entrée/sortie sur la base d'un ou de plusieurs des mécanismes tels que décrits ici et/ou de n'importe quel autre type de mécanisme de commande de mémoire cache (par exemple, une cohérence à base de répertoire, un espionnage, une copie, un protocole MSI, un protocole MFSI, etc.). Divers modes de réalisation décrits ici peuvent être mis en oeuvre dans un logiciel, un matériel, une logique d'application ou une combinaison de logiciel, de matériel et de logique d'application. Le logiciel, la logique d'application et/ou le matériel peuvent résider, par exemple, sur un ensemble de puces, un dispositif mobile, un ordinateur de bureau, un ordinateur portable ou un serveur. Les mises en oeuvre logicielles et Web de divers modes de réalisation peuvent être accomplies avec des techniques de programmation standard avec une logique à base de règles et une autre logique pour effectuer diverses étapes ou processus de recherche dans une base de données, étapes ou processus de corrélation, étapes ou processus de comparaison, et étapes ou processus de décision. Divers modes de réalisation peuvent également être totalement ou partiellement mis en oeuvre dans des éléments ou modules de réseau. Il conviendrait de noter que les mots � composant � et � module �, tels qu'utilisés ici et dans les revendications qui suivent, sont destinés à englober des mises en oeuvre utilisant une ou plusieurs lignes de code logiciel, et/ou des mises en oeuvre matérielles, et/ou un équipement pour recevoir des entrées manuelles. Les systèmes et procédés décrits ci-dessus peuvent être mis en oeuvre dans des éléments de circuit électroniques numériques, dans un matériel informatique, un micrologiciel, et/ou un logiciel. La mise en oeuvre peut être, par exemple, un processeur programmable, un ordinateur, et/ou de multiples ordinateurs. Les étapes de procédé peuvent être effectuées par un ou plusieurs processeurs programmables exécutant un programme informatique pour effectuer des fonctions de l'invention en agissant sur des données d'entrée et en générant une sortie. Les étapes de procédé peuvent également être effectuées par des éléments de circuit logiques à usage spécial et un dispositif peut être mis en oeuvre en tant que tels éléments de circuit. Les éléments de circuit peuvent être, par exemple, un FPGA (Field Programmable Gate Array) et/ou un ASIC (Application Specific Integrated Circuit). Des modules, des sous-programmes, et des agents logiciels peuvent se référer à des parties du programme informatique, au processeur, aux éléments de circuit spéciaux, à un logiciel, et/ou à un matériel qui met en oeuvre cette fonctionnalité. Des processeurs appropriés pour exécuter un programme informatique comprennent, à titre d'exemple, à la fois des microprocesseurs à usages général et spécial, et un ou plusieurs processeurs de n'importe quel type d'ordinateur numérique. En général, un processeur reçoit des instructions et des données d'une mémoire morte ou d'une mémoire vive, ou des deux. Les éléments essentiels d'un ordinateur sont un processeur pour exécuter des instructions et un ou plusieurs dispositifs de mémoire pour mémoriser des instructions et des données. En général, un ordinateur peut être couplé fonctionnellement pour recevoir des données d'un ou de plusieurs dispositifs de mémoire de masse et/ou transférer des données à un ou plusieurs dispositifs de mémoire de masse pour mémoriser des données (par exemple, des disques magnétiques, des disques magnéto- optiques, ou des disques optiques). Une transmission de données et des instructions peuvent également être effectuées sur un réseau de communication. Les supports d'informations appropriés pour mettre en oeuvre des instructions de programme informatique et des données comprennent toutes les formes de mémoire non volatile, y compris, à titre d'exemple, des dispositifs de mémoire à semi- conducteurs. Les supports d'informations peuvent être, par exemple, une EPROM, une EEPROM, des dispositifs de mémoire flash, des disques magnétiques, des disques durs internes, des disques amovibles, des disques magnéto-optiques, des CD-ROM, et/ou des DVD-ROM. Le processeur et la mémoire peuvent être complétés par des éléments de circuit logiques à usage spécial, et/ou incorporés dans ceux-ci. Les exemples de réseaux de communication comprennent un réseau local (LAN), un réseau étendu (WAN), Internet, des réseaux câblés, des réseaux sans fil, des réseaux à base de paquets, et/ou des réseaux à base de supports. La connectivité au réseau peut comprendre, mais sans y être limitée, des connexions sans fil à longue distance, des connexions sans fil à courte distance, et diverses connexions câblées comprenant, mais sans y être limitées, des lignes téléphoniques, des lignes de câble, des lignes de puissance, et similaires. Les réseaux à base de paquets peuvent comprendre, par exemple, Internet, un réseau IP (Carrier Internet Protocol) (par exemple, un réseau local (LAN), un réseau étendu (WAN), un réseau universitaire (CAN), un réseau métropolitain (MAN), un réseau domestique (HAN)), un réseau IP privé, un autocommutateur IP (IPBX), un réseau sans fil (par exemple, un réseau d'accès radio (RAN), un réseau 802.11, un réseau 802.16, un réseau de service radio en mode paquet général (GPRS), un HiperLAN) et/ou d'autres réseaux à base de paquets. Les réseaux à base de circuits peuvent comprendre, par exemple, le réseau téléphonique commuté public (RTCP), un autocommutateur privé (PBX), un réseau sans fil (par exemple, RAN, Bluetooth, un réseau à accès multiple par répartition par code (CDMA), un réseau à accès multiple par répartition dans le temps (TDMA), un réseau de système global pour communications mobiles (GSM)) et/ou d'autres réseaux à base de circuits. Les termes comprendre, inclure et/ou plusieurs formes de chacun sont ouverts et comprennent les parties énumérées et peut comprendre des parties supplémentaires qui ne sont pas énumérées. Les termes et/ou sont ouverts et comprennent une ou plusieurs des parties énumérées et des combinaisons des parties énumérées. La description qui précède de modes de réalisation a été présentée à des fins d'illustration et de description. La description qui précède n'est pas destinée à être exhaustive ou à limiter les modes de réalisation de la présente invention à la forme précise présentée, et des modifications et des variantes sont possibles en tenant compte des enseignements ci-dessus, ou peuvent être acquises à partir d'une pratique des divers modes de réalisation. Les modes de réalisation examinés ici ont été choisis et décrits afin d'expliquer les principes et la nature des divers modes de réalisation et leur application pratique pour permettre à un homme du métier d'utiliser la présente invention dans divers modes de réalisation et avec diverses modifications appropriées à l'utilisation particulière envisagée. Les caractéristiques des modes de réalisation décrits ici peuvent être combinées en toutes les combinaisons possibles de procédés, de dispositifs, de modules, de systèmes et de produits programme d'ordinateur. A REVENDICATIONS1. Dispositif (130, 230, 330) caractérisé en ce qu'il comprend : un processeur (240, 340) comprenant : une mémoire cache (246, 346, 446, 546, 646) configurée pour charger et mémoriser des données d'entrée/sortie, caractérisé en ce que la mémoire cache est partagée et en ce que le dispositif comprend en outreun contrôleur d'entrée/sortie (244, 344, 444, 544, 644) configuré pour échanger les données d'entrée/sortie avec la mémoire cache partagée ; et une pluralité de coeurs de processeur (242a, 242b, 242c, 342, 442, 542, 642), chacun de la pluralité de coeurs de processeur étant configuré pour accéder aux données d'entrée/sortie mémorisées dans la mémoire cache partagée. 2. Dispositif selon la revendication 1, dans lequel le processeur comprend en outre un dispositif d'entrée/sortie (232a, 232b, 234, 332a, 332b, 334, 432, 532, 632) configuré pour échanger les données d'entrée/sortie avec le contrôleur d'entrée/sortie. 3. Dispositif selon la revendication 2, dans lequel chacun de la pluralité de coeurs de processeur comprend une mémoire cache de coeur de processeur (243a), la mémoire cache de coeur de processeur de chaque coeur de processeur étant différente de la mémoire cache partagée. 4. Dispositif selon la revendication 1, dans lequel la mémoire cache partagée est en outre configurée pour : déterminer un indicateur d'utilisation pour les données d'entrée/sortie mémorisées dans la mémoire cache partagée ; et déplacer les données d'entrée/sortie mémorisées dans la mémoire cache partagée vers la mémoire (236, 336, 436, 536, 636) sur la base de l'indicateur d'utilisation. 5. Dispositif selon le revendication 5, dans lequel la mémoire cache partagée est en outre configurée pour déterminer l'indicateur d'utilisation pour les données d'entrée/sortie mémorisées dans la mémoire cache partagée sur la base d'une modification des données d'entrée/sortie par au moins l'un de la pluralité de coeurs de processeur. 6. Dispositif selon la revendication 5, dans lequel la mémoire cache partagée est en outre configurée pour déterminer l'indicateur d'utilisation pour les données d'entrée/sortie mémorisées dans la mémoire cache partagée sur la base d'un type des données, d'une source des données, d'une destination des données, ou d'une combinaison quelconque de ceux-ci. 7. Dispositif selon la revendication 5, dans lequel la mémoire cache partagée est en outre configurée pour déterminer l'indicateur d'utilisation pour les données d'entrée/sortie mémorisées dans la mémoire cache partagée sur la base d'une taille libre de la mémoire cache partagée, d'un pourcentage de la taille libre de la mémoire cache partagée, ou d'une combinaison quelconque de ceux-ci. 8. Procédé consistant à : configurer une mémoire cache partagée (246, 346, 446, 546, 646) pour mémoriser des données d'entrée/sortie pour un processeur (240, 340), le processeur comprenant une pluralité de coeurs de processeur (242a, 242b, 242c, 342, 442, 542, 642) ; mémoriser les données d'entrée/sortie provenant d'un et allant vers un dispositif d'entrée/sortie (232a, 232b, 234, 332a, 332b, 334, 432, 532, 632) dans la mémoire cache partagée ; et accéder aux données d'entrée/sortie mémorisées dans la mémoire cache partagée par au moins l'un de la pluralité de coeurs de processeur. 9. Procédé selon la revendication 8, consistant en outre à : communiquer les données d'entrée/sortie allant vers le et provenant du dispositif d'entrée/sortie à un contrôleur d'entrée/sortie (244, 344, 444, 544, 644) ; et communiquer les données d'entrée/sortie allant vers le et provenant du contrôleur d'entrée/sortie à la mémoire cache partagée. 10. Procédé selon la revendication 8, dans lequel chacun de la pluralité de coeurs de processeur comprend une mémoire cache de coeur de processeur, la pluralité de mémoires caches de coeur de processeur étant différentes de la mémoire cache partagée. 11. Procédé selon la revendication 8, consistant en outre à : déterminer un indicateur d'utilisation pour les données d'entrée/sortie mémorisées dans la mémoire cache partagée ; et déplacer les données d'entrée/sortie mémorisées dans la mémoire cache partagée vers la mémoire sur la base de l'indicateur d'utilisation. 12. Procédé selon la revendication 11, dans lequel la 10 détermination de l'indicateur d'utilisation pour les données d'entrée/sortie mémorisées dans la mémoire cache partagée est basée sur une modification des données d'entrée/sortie par au moins l'un de la pluralité de coeurs de processeur. 15 13. Procédé selon la revendication 11, dans lequel la détermination de l'indicateur d'utilisation pour les données d'entrée/sortie mémorisées dans la mémoire cache partagée est basée sur un type des données, une source des données, une destination des données, ou une combinaison 20 quelconque de ceux-ci. 14. Procédé selon la revendication 11, dans lequel la détermination de l'indicateur d'utilisation pour les données d'entrée/sortie mémorisées dans la mémoire cache partagée est basée sur une taille libre de la mémoire 25 cache partagée, un pourcentage de la taille libre de la mémoire cache partagée, ou une combinaison quelconque de ceux-ci.