Principale différence entre la mémoire Partagée et mémoire Distribuée
Je suis un peu confus entre à propos de la différence entre mémoire partagée et à mémoire distribuée. Pouvez-vous préciser?
- Est la mémoire partagée pour un processeur et distribué pour beaucoup (pour le réseau)?
- Pourquoi avons-nous besoin d'une mémoire distribuée, si nous avons de la mémoire partagée?
2. La mémoire partagée est sur un hôte, à mémoire distribuée est sur de nombreux hôtes. 3. Mémoire distribuée est nécessaire lorsque vous partager de la mémoire à travers de nombreux hôtes.
OriginalL'auteur pavel | 2016-04-15
Vous devez vous connecter pour publier un commentaire.
Réponse courte
Mémoire partagée et à mémoire distribuée sont de bas niveau de la programmation des abstractions qui sont utilisés avec certains types de programmation parallèle. De mémoire partagée permet à plusieurs éléments de traitement à partager le même emplacement en mémoire (c'est-à voir les uns les autres, lit et écrit) sans autres directives spéciales, tout en mémoire distribuée explicite des commandes de transfert de données à partir d'un traitement d'un élément à un autre.
Réponse détaillée
Il y a deux questions à considérer en ce qui concerne les conditions mémoire partagée et à mémoire distribuée. L'un est ce que cela signifie que la programmation des abstractions, et l'autre est que signifient-ils en termes de la façon dont le matériel est réellement mis en œuvre.
Dans le passé, il était vrai mémoire partagée cache-cohérente des systèmes multiprocesseurs. Les systèmes communiquent les uns avec les autres et avec partage de la mémoire principale sur un bus partagé. Cela signifiait que tout accès à partir de n'importe quel processeur à la mémoire de l'égalité des temps de latence. Aujourd'hui, ces types de systèmes ne sont pas fabriqués. Au lieu de cela, il ya divers point-à-point des liens entre les éléments de traitement et des éléments de la mémoire (c'est la raison pour pour les non-uniform memory access, ou NUMA). Cependant, l'idée de communiquer directement à travers la mémoire demeure utile abstraction de programmation. Ainsi, dans de nombreux systèmes, c'est géré par le matériel et le programmeur n'a pas besoin d'insérer les directives spéciales. Certains sont communs à des techniques de programmation que l'utilisation de ces abstractions sont OpenMP et Pthreads.
À mémoire distribuée a traditionnellement été associée avec des processeurs d'effectuer le calcul sur la mémoire locale et puis une fois qu'il l'aide de messages explicites pour le transfert de données à distance avec des processeurs. Cela ajoute de la complexité pour le programmeur, mais simplifie la mise en œuvre du matériel parce que le système n'a plus à maintenir l'illusion que toute la mémoire est en fait partagée. Ce type de programmation a toujours été utilisé avec les supercalculateurs qui ont des centaines ou des milliers d'éléments de traitement. Une technique couramment utilisée est MPI.
Cependant, les supercalculateurs sont pas les seuls systèmes à mémoire distribuée. Un autre exemple est GPGPU de programmation qui est disponible pour de nombreux systèmes de bureau ou portables vendus aujourd'hui. Les deux CUDA et OpenCL nécessitent que le programmeur explicitement gérer le partage entre le CPU et le GPU (ou d'autres d'accélérateur dans le cas d'OpenCL). C'est en grande partie parce que quand le GPU de la programmation a commencé le GPU et CPU et de la mémoire a été séparé par le bus PCI qui a un très long temps de latence par rapport à l'exécution de calcul sur connectées localement de la mémoire. Donc, les modèles de programmation ont été développés en supposant que la mémoire a été séparé (ou distribué) et la communication entre les deux éléments de traitement (CPU et GPU) requis de communication explicite. Maintenant que de nombreux systèmes ont GPU et CPU éléments sur le même die il y a des propositions pour permettre la programmation GPGPU d'avoir une interface qui ressemble plus à de la mémoire partagée.
OriginalL'auteur Gabriel Southern
Moderne x86 termes, par exemple, tous les Processeurs d'un ordinateur physique partager de la mémoire. par exemple, 4-socket système à quatre 18-core. Chaque PROCESSEUR possède sa propre mémoire des contrôleurs, mais ils parlent les uns aux autres de sorte que tous les Processeurs sont une partie d'une cohérence de domaine. Le système est NUMA mémoire partagée, qui n'est pas distribué.
Une salle pleine de ces machines formulaire distribué mémoire de cluster qui communiquent par envoi de messages sur un réseau.
Considérations pratiques sont une des principales raisons pour mémoire distribuée: il est impossible d'avoir des milliers ou des millions de cœurs de PROCESSEUR partage la même mémoire avec toute sorte de cohérence sémantique qui font qu'il vaut la peine de l'appeler de la mémoire partagée.
OriginalL'auteur Peter Cordes