Accueil > Forum > > > > Double question : Dual Core et Heap
Double question : Dual Core et Heap
jeudi 28 février 2008 à 09:30:16 |
Double question : Dual Core et Heap

epineurien
|
Salut ! J'aurais deux questions complétement différentes : 1) Comment fait-on pour gérer les processeurs double coeur (ou plus) en ASM ? 2) J'utilise beaucoup la Heap (le Tas) , pour y mettre des back buffer , et j'aurais voulut savoir si les accés Heap sont plus lent que les accés à la mémoire standard ? Merci d'avance !
|
|
jeudi 28 février 2008 à 10:27:35 |
Re : Double question : Dual Core et Heap

_dune2_
|
Salut,
1) En fait, on ne gère pas directement les 2 coeurs d'un dual-core en asm. Ceci est complétement transparent pour le programmeur, car c'est le scheduler de l'OS qui gère la disponibilité des ressources sur chaque CPU et donc l'affectation de ta tache à un CPU. Sur certains OS, il est possible de paramétrer une "affinité" entre une tache et un core, ce qui permet au scheduler du noyau de faire tourner la tache sur un core précis (tout en partageant les ressources avec les autres taches bien-entendu). Si ce fonctionnement ne correspond pas à ton attente, et que tu souhaites maîtriser de manière plus fine les affectations des process sur chaque core, il te faut utiliser des couches Temps-réèls sur ces OS (RTX pour windows, RTAI pour linux) qui te permettront de passer en priorité devant l'OS lui-même ... et donc de t'octroyer un core si le coeur t'en dit (Ôh il est beau ce jeu de mot ;) ), avec les conséquence et sanctions qui s'en suivent ;)
2) Il ne faut pas mélanger les termes ;) En programmation, on distingue plusieurs zones mémoires (data, code, heap ...) qui sont remappées sur des espace de mémoire physique. Ensuite cette mémoire physique est gérée par le controleur de mémoire et le processeur pour optimiser son accés en utilisant les possibilités de cache mémoire. On comprend donc aisément que le fait d'écrire dans la zone "heap", "data" ou "code" ne changera rien à la vitesse d'accés. Ce qui va changer la vitesse d'accés, c'est la gestion du cache et le pré-chargement du cache par le CPU ... et de ce coté là, je peux t'assurer que c'est performant et efficace !! (utilisation du modèle MESI (Modified, Exclusive, Shared, Invalid) pour la cohérence des données dans le cache, gestion approprié du L1, L2 et optionnellement le L3, gestion du prefetch qui permet de charger en avance de temps les données potentiellement utilisées dans un futur proche et ce en temps masqué, et tout cela dans un memory-management engine (sorte de processeur de gestion de la mémoire dans le processeur ;) ) qui travaille en parallèle avec le CPU). Bref, tout cela pour dire que c'est pas vraiment toi qui va décider si tes données vont se situer dans la RAM physique ou dans le cache L2 (plus rapide) ou dans le cache L1 (encore plus rapide) , sauf si pour une raison d'optimisation en streaming, tu utilises les instructions SSE3 tels que "prefetchntoa" etc ... Mais surtout pour te dire que le "memory-management engine" qui va le faire à ta place, connait bien mieux que toi l'architecture du système, ses défauts et ses atouts, et que dans 99% des cas, il gèrera ta mémoire de manière optimale en terme de performance.
dune2++
Gentoo... que du bonheur ...
|
|
jeudi 28 février 2008 à 11:11:22 |
Re : Double question : Dual Core et Heap

epineurien
|
OK, merci !
Pour ce qui des coeurs multiples , c'était plutot pour savoir si il y a un moyen de parrallèliser le programme ; un exemple bidon : l'affichage graphique géré par un coeur et le reste par l'autre ...
|
|
jeudi 28 février 2008 à 11:24:54 |
Re : Double question : Dual Core et Heap

_dune2_
|
Réponse acceptée !
Pour la programmation parallèle, oui bien sûr que tu peux paralléliser tes opérations ;)
Il te suffit de séparer la programmation de l'affichage dans un thread et le reste dans un autre thread par exemple. Le re-scheduler du système pourra alors répartir la charge sur les 2 CPUs (en fonction de la disponibilité et en tenant compte des autres tâches du système; mais en supposant que seul ton appli tourne, et que un des 2 threads prenne 100% du core, alors automatiquement ton 2ème thread tournera sur le core non occupé ;) ).
Ce qu'il faut retenir, c'est que pour tirer parti de la répartition de charge sur plusieurs cores, il te faut programmer en multi-threads.
(Ensuite, il va de soit que ça implique des tas de contrainte et de rigueur dans la programmation comme la mise en place de mutex car les accées mémoires vont se retrouver REELLEMENT parallèle (on ne parle plus de multiplexage des threads, mais bien de la parallèlisation !))
dune2++
Gentoo... que du bonheur ...
|
|
jeudi 28 février 2008 à 11:36:59 |
Re : Double question : Dual Core et Heap

epineurien
|
D'accord , donc je doit faire tourner deux process différents ? Comment on fait pour faire communiquer deux process entre eux ?
|
|
jeudi 28 février 2008 à 12:11:10 |
Re : Double question : Dual Core et Heap

_dune2_
|
Pas forcément 2 process ... 1 seul process avec plusieurs threads ;)
Gentoo... que du bonheur ...
|
|
mercredi 5 mars 2008 à 21:07:31 |
Re : Double question : Dual Core et Heap

foxz
|
euh de l'hyperthreading sur un multi core ca donne quoi ??? :-)))
pour information : evite d'utiliser la pile, sous windows elle a une taille definie assez petite de plus je pense que tu as un probleme de conception de comment utiliser la pile....
perso je ne passe pratiquement que des pointeurs dans la pile.
Il veux mieux utilisé DS que SS. je ne pense pas qu'il existe un instruction rep movsd (par ex) pour le segment SS.
FoxZ...
|
|
mercredi 5 mars 2008 à 23:00:56 |
Re : Double question : Dual Core et Heap

_dune2_
|
L'hyperthreading sur un multi-core, ça donne 4 contextes de process simultanés avec 2 core de calcul uniquement (dans le cas du core-duo hyperthreaded). Perso, je ne suis pas impressionné par l'hyperthreading, qui contrairement à ce qu'intel voudrait faire croire, n'est pas l'équivalent de 2 cpus ... mais juste 2 contextes de registres (ça évite juste des switching de contextes).
Pour la pile, je laisse la parole aux utilisateurs de windows. Par contre, qu'entends-tu par "problème de conception de comment utiliser la pile" ?? Il n'en a nullement été question jusqu'à maintenant ??
++dune2
Gentoo... que du bonheur ...
|
|
Cette discussion est classée dans : question, double, core, heap, dual
Répondre à ce message
Sujets en rapport avec ce message
presentation & petite question... [ par BlackWizzard ]
tout d'abord, je suis le co-webmaster de ce site, mais je vous previent, je n'ai que les bases et que la theorie, aucune pratiques!le prob, C que G ja
Une question conne [ par Slashgo ]
Je voudrais juste savoir où quelle(s) logiciels il faut pour dévelloper en assembleur.Gratuit de préférence@+
ptite question [ par comax ]
Voilà, j'ai un pc qui est relativement ancien et son bios ne prend pas les cdrom bootable. Or j'ai un cdrom bootable que j'aimerai bien voir. Je voudr
Question de débutant [ par Laurent1313 ]
Voilà je débute avec l'assembleur sous Delphi et il y a un truc que je ne comprends pas. Je voudrais juste savoir quelle est la différence entre :ça :
Question sur Langage PERL [ par marouanito ]
salut à tous,je m'y connais pas trop dans Perl, mais je voulais juste savoir comment on fait sous Perl pour convertir une variable en virgule flottant
Petite question... [ par did2604 ]
Bonsoir,Que signifie exactement la notation crochet en assembleur ? Je m'explique, par exemple : mov cl,[bx], je suppose que ce n'est pas un move ordi
Question Asm/C++ [ par Lelys ]
Bonjour,Je voudrai faire un OS, mais le problème c'est que je ne m'en sort pas en ASM...Je suis plus allese en C/C++.Mais le problème est que les syst
question sur les pic [ par majoreea ]
Je souhauterai avoir le schema d'une telecommande infra rouge pour pc avec PIC
question idiote sur option casemap [ par illupo ]
salutj'aimerais enfin connaitre la vraie signification deoption casemap : nonecar dans les pages web que j'ai pu visiter certains disent que le compil
petite question par rapport au assembleur !!! [ par WaFFel ]
c'est juste une question pour savoir si sa marche :S...bien dison que je trouve une source d'un programme en assembleur qui a ete ecris pour un 8086ma
Livres en rapport
|
Derniers Blogs
MIX10 A LAS VEGAS : IMMERSIONMIX10 A LAS VEGAS : IMMERSION par odewit
Hi from Vegas !
En resume [je corrigerai les accents a mon retour !], Las Vegas m'impressionne par sa demesure.
Ou que l'on aille, les itineraires traversent des salles bruyantes pleines de machines a sous et de tables de jeu.
Les decors, surtout a...
Cliquez pour lire la suite de l'article par odewit [RIA SERVICES] MAITRE - DéTAIL ET DOMAINDATASOURCE[RIA SERVICES] MAITRE - DéTAIL ET DOMAINDATASOURCE par Audrey
A l'occasion d'un projet client, j'ai utilisé RIA Services avec Silverlight 3 (mais cela fonctionne aussi avec la version 4), et je l'ai utilisé pour une interface façon Maitre / Détail. Voici comment j'ai procédé pour arriver à mes fins. Nous allons pren...
Cliquez pour lire la suite de l'article par Audrey CSDL FUNCTIONCSDL FUNCTION par Matthieu MEZIL
Dans mon post précédent , j'ai utilisé une CSDL Function afin de générer une requête SQL avec un DateDiff utilisant la date courante sur la BD à partir d'une requête LINQ. Dans le cadre de ce post , vous avez probablement remarqué que dans le cadre de plu...
Cliquez pour lire la suite de l'article par Matthieu MEZIL LINQ TO ENTITIESLINQ TO ENTITIES par Matthieu MEZIL
Cette semaine je suis à Montréal en tant que speaker sur Entity Framework pour l'évènement confoo . J'en profite pour remercier les organisateurs de cet évènement de m'avoir fait confiance et Access-IT de m'avoir permis d'y participer. En parallèle, j'ai ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL FAIRE APPARAITRE L'ONGLET 'DéVELOPPEUR' DANS OFFICE 2010FAIRE APPARAITRE L'ONGLET 'DéVELOPPEUR' DANS OFFICE 2010 par neodante
La nouvelle interface d'Office 2010 à amener quelques modifications par rapport à celle de 2007. Certes mineures, ces modifications ont fait disparaître la case à cocher de l'onglet 'Développeur' en première page du panneau du 'bouton Office' (dans Office...
Cliquez pour lire la suite de l'article par neodante
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|