C'est peut-être une question stupide et peut être le résultat d'un malentendu. J'étudie les processeurs en ce moment, et la mémoire en particulier. Je venais de lire à quel point la SRAM est plus rapide que la DRAM mais plus chère. SRAM est très cher: j'ai acheté un peu et j'ai trouvé une carte SRAM alimentée par batterie avec 16 Mo pour environ 400 $.
Récemment, un ami a mentionné qu'il utilisait Linux pour chiots dans la RAM et que c'était rapide. J'ai remarqué, cependant, que le noyau Linux minuscule peut être encore plus petit ... aussi petit que 8 Mo! Cela m'a fait penser: pouvons-nous exécuter linux dans SRAM? Cette question est-elle même bien formulée?
La recherche sur cette question s'est révélée inefficace, mais elle a soulevé encore plus de questions. Pourrait-on exécuter linux dans le cache L3? Intel Core i7 peut avoir un cache L3 suffisamment grand pour accueillir les 8 Mo ... mais est-ce que je fais une erreur catégorique? Quelle est la différence entre ceci et Linux «embarqué»?
C'est la question: pouvons-nous exécuter linux dans SRAM ou L3 Cache? Y a-t-il quelque chose de plus rapide? À quelle vitesse pouvons-nous linux!?
z.
la source
Réponses:
Linux ou tout autre système d'exploitation ne sait pas comment fonctionne la RAM. Tant que le contrôleur de mémoire est correctement configuré (par exemple, les taux de rafraîchissement définis pour les non-SRAM), le système d'exploitation ne se soucie pas s'il s'exécute sur de la mémoire dynamique ordinaire (RAM ordinaire), de la RAM en mode page rapide (FP RAM, à partir du C64-ish fois), RAM de mode de sortie de données étendue (EDO), RAM synchrone (SDRAM), n'importe laquelle des SDRAMS à double débit (DDR 1/2/3).
Tous ceux qui soutiennent la lecture et l'écriture à partir d'endroits aléatoires. Tout fonctionnera.
Maintenant, le cache est un peu différent. Vous n'avez pas à y écrire pour que le contenu change. Cela vous gênera. Pourtant, il est quelque peu utilisable. Je sais que coreboot utilise le cache comme une sorte de mémoire lors du démarrage, avant que le contrôleur de mémoire ne soit correctement configuré. (Pour plus de détails, consultez les vidéos des discussions de Coreboot lors du FOSDEM 2011).
Donc en théorie oui, vous pouvez l'utiliser.
MAIS : Pour les tâches pratiques, un système avec 1 Go de mémoire «régulière» à «vitesse moyenne» fonctionnera beaucoup mieux qu'avec seulement quelques Mo de mémoire ultra rapide. Ce qui signifie que vous avez trois choix:
Sauf dans de très rares cas, le dernier n'est pas sensible.
la source
Oui, vous pouvez, et c'est en fait ainsi que cela se fait déjà, automatiquement. Les parties de RAM les plus utilisées sont copiées dans le cache. Si votre utilisation totale de RAM est inférieure à la taille de votre cache (comme vous le supposez), le mécanisme de mise en cache existant aura tout copié dans la RAM.
Le seul moment où le cache serait ensuite recopié dans la RAM normale est lorsque le PC passe en mode veille S3. Cela est nécessaire car les caches sont hors tension en mode S3.
la source
De nombreux processeurs permettent au cache d'être utilisé comme RAM. Par exemple, la plupart des processeurs x86 plus récents peuvent configurer certaines régions en écriture différée sans lecture lors des lectures via les MTRR. Cela peut être utilisé pour désigner une région de l'espace d'adressage en tant que cache-ram.
Que cela soit bénéfique est une autre question - cela verrouillerait le noyau dans la RAM, mais en même temps réduirait la taille effective du cache. Il pourrait également y avoir des effets secondaires (comme avoir à désactiver la mise en cache pour le reste du système) qui rendraient cela beaucoup plus lent.
la source
"pouvons-nous exécuter linux dans le cache L3?"
Non , cela n'est pas possible car la mémoire cache n'est pas adressée directement / linéairement.
En raison de la façon dont la mémoire cache est conçue, le registre du compteur de programme CPU (IP) ne peut pas pointer vers un emplacement dans la mémoire cache.
Un cache CPU a sa propre "associativité" et cette associativité définit la façon dont la mémoire "normale" est "mappée" à la mémoire cache. Cette caractéristique de la mémoire cache est l'une des raisons pour lesquelles les mémoires cache sont si rapides.
la source
"pouvons-nous exécuter linux dans le cache L3?"
Non, le cache est là pour un travail spécifique de conservation des données de programme et des instructions prêtes pour le moment où le processeur en aura besoin. Vous trouverez de toute façon le système d'exploitation dans le cache car il est constamment utilisé. Charger tout le système d'exploitation dans le cache n'est pas efficace car vous n'utilisez pas tous les chemins de code dans le noyau à la fois.
"pouvons-nous exécuter linux dans SRAM?"
Vous pouvez certainement utiliser la SRAM sauvegardée par batterie comme partition de démarrage, vous pouvez ensuite utiliser le drapeau intégré d'exécution en place. Cela pourrait entraîner des temps de démarrage plus rapides et des opérations légèrement plus rapides. Cependant, un facteur majeur est la bande passante entre le cache L3 et l'emplacement du noyau (un lecteur de démarrage ou RAM).
"Y a-t-il quelque chose de plus rapide? À quelle vitesse pouvons-nous Linux!?"
Généralement, les fabricants de matériel et les développeurs de systèmes d'exploitation s'efforcent de rendre le traitement aussi rapide que possible. Cependant, votre question est très générale, voulez-vous accélérer les temps de démarrage, optimiser l'accès au système de fichiers, accélérer les calculs ou autre chose. Une fois que vous avez une question plus spécifique, vous pouvez certainement commencer à trouver le goulot d'étranglement et à le supprimer. Votre lecteur SRAM accélérerait certainement votre processus de démarrage. Accéder à une interface graphique en 3 secondes serait très cool à voir.
la source
À l'époque des 486, il y avait des machines où toute la RAM était SRAM. C'est de retour quand 8 Mo était beaucoup, mais semble correspondre à vos contraintes. Je suis sûr que 8 Mo de SRAM sont beaucoup moins chers maintenant qu'à l'époque.
Ainsi, vous pouvez exécuter Linux dans SRAM si la machine a été conçue de cette façon. Ce n'est pas une théorie; c'est fait.
Mais pas dans Cache. Le cache est câblé différemment et, plus important encore, traité différemment. Vous ne pouvez pas y répondre de la même façon. Les morceaux sont mappés différemment, pas comme un morceau continu. Et le contenu n'est pas nécessairement ce que vous voyez sur le disque - les puces Intel plus récentes font une sorte de "compilation" juste à temps (plus un CISC => RISC-micro-op re-encoding) où les micro-ops sont les choses qui finissent dans le cache. En bref, ce qui est dans le cache n'est pas votre programme, mais une vue modifiée de celui-ci, vous ne pouvez donc plus l'utiliser comme représentation mémoire de votre programme.
La question est pourquoi. À part "parce que je peux", il n'y a pas beaucoup de raisons à cela. Le système de cache vous offre la plupart des avantages de vitesse avec beaucoup moins de coûts. Et rappelez-vous que le coût n'est pas seulement de l'argent ... SRAM prend plus de transistors, ce qui signifie plus d'électricité.
la source