|
Auteur | Sujet : 4 Go de RAM |
---|
samurai80 | Reprise du message précédent : bref non, 4Go de RAM ne servent pas a rien pour tout le monde. Si vous tenez a le dire quand meme, il faut preciser que ca sert a rien pour faire de la bureautique et du jeu. Pour ceux qui font de l edition video, c autre chose deja. Et pour ceux qui font de la CAO comme moi, la c clair que les 4Go peuvent servir souvent. Message cité 1 fois Message édité par samurai80 le 28-08-2007 à 13:21:00 |
![]() Publicité | Posté le 28-08-2007 à 13:18:09 ![]() ![]() |
Gigathlon Quad-neurones natif |
|
samurai80 | ca devie mais comme vous deviez dans mon domaine de predilection (le PCI, PCI-X et PCIe), je ne peux m'empecher de rajouter un petit mot Dans les specs PCI-X c bien marque qu'il est obligatoire de gerer l'adressage 64b (mais pas dans les specs PCI par contre), c a dire que le periph doit avoir ses registres BAR d'une largeur de 64b pour que le systeme puisse assigner a ce periph un espace memoire situe au dessus de la limite des 4Go imposee par les adresses 32b. J'ai moi meme voulu tester le periph PCI-X que je developpais il y a pas longtemps pour voir s'il fonctionnait lorsqu'il etait mappe au dela de 4Go (donc sur une adresse 64b qui demande deux cycles d'adresse sur un bus PCI-X de 32b ou encore 1 seul avec un bus 64b). J'ai eu beau utiliser Windows XP 64b avec un Xeon recent mais c le bios qui assigne les espaces memoire aux peripheriques et il semble impossible qu'il mappe les periphs PCI (ou X ou Express) au dessus de 4Go. En effet, j'ai essaye de grossir expres l'espace memoire PCI requis par ma carte jusqu'a 1Go, j'ai meme essaye de mettre 4 cartes demandant chacune 512Mo ou meme 2Go et de mettre 6Go de RAM sur la machine de test mais ca n'a rien donne et a chaque fois le PC a carrement refuse de detecter mes peripheriques lorsqu'il n'arrivait plus a les mapper sous 4Go. A mon avis et d'apres ce que j'ai pu trouver, le seul espace memoire pouvant etre mappe au dessus de 4Go est la memoire centrale du PC c a d la RAM. Du coup, j'ai pu tester que ma carte PCI-X arrivait en tant que maitre a acceder a la RAM lorsque celle-ci etait mappee au dela de 4Go (j'ai bien vu les deux cycles d'adresse lorsque je testais sur un bus 32b) mais je n'ai jamais pu tester mon periph en tant qu'esclave situe au dessus de 4Go pour la simple raison que le bios n'a jamais voulu le mapper au dela de 4Go. Les specs PCI-X disent pourtant que les periph PCI-X doivent pouvoir etre mappe au dela de 4Go (donc sur 64b) mais je n'ai pu le verifier qu'en simu et je suppose que c'est comme ca pour tout le monde (ou alors faut se refaire un bios juste pour ce test qui de ttes facons n'est pas tres important). Meme si l'espace memoire mappe par les peripheriques PCI (ou X ou Express) est faible en general, il arrivera un jour ou les bios finiront par les mapper au dessus de 4Go (puisque c cense etre supporte par tous les periphs pcix et pcie). Et vu que comme moi, les autres n'ont pas du pouvoir tester le bon fonctionnement de leur periph mappe au dela de 64b sur un systeme reel, je me dis qu'on court a la cata... On est pas encore au bout de nos peines pour le passage a l'adressage sur 64b, y compris au niveau du hard ! Message cité 1 fois Message édité par samurai80 le 29-08-2007 à 05:23:06 |
Gigathlon Quad-neurones natif |
|
samurai80 |
|
samurai80 |
Je t'avoue Gigathlon que je comprends pas tout ce que tu dis. Tout d'abord par rapport a ton parallele avec le reseau, disons que PCI et PCI-X sont un peut comme le protocle 10/100Mb et le protocole 1Gb. Apres ca s'arrete la pour la comparaison car le PCI et le PCI-X sont des protocoles ou tous les acces sont forcement broadcastes puisque le meme bus est partage par tout le monde (contraire de point a point). En ce qui concerne le PCIe, le protocole n'a rien a voir et n'est pas compatible physiquement, sachant qu'en plus c'est un protocole point a point et serie cette fois. Par contre, le PCI et le PCI-X etant compatibles vers le bas (on peut brancher une carte PCI sur un slot PCI-X mais pas le contraire par contre), le controleur de bus PCI-X verifie si tout le monde sur le bus est capable de tourner en PCI-X, a quelle frequence et avec quelle largeur de bus (si le bus est un bus 64b). Cette reconnaissance est faite grace a la detection d'une tension en point qui est a 0, 1/2 ou 1 selon que les cartes ont ce point relie direct a la masse (0 = PCI), relie a la masse via une resistance de 10k (1/2 = PCI-X 66MHz) ou flottant en cicruit ouvert (1 = PCI-X 133Mhz). Il existe un peu la meme technique pour la detection du bus 64b. Apres ca, le bus choisit le protocole de sorte que tout le monde arrive a communiquer, sachant que ceux qui sont compatibles PCI-X sont forcement compatibles PCI mais ceux qui ont leur signal de protocole relie a la masse (PCI) ne fonctionnent qu'en PCI et pas en PCI-X. Il suffit donc d'une carte PCI melangee avec d'autres cartes PCI-X pour que le bus et les cartes PCI-X 133Mhz connectees avec se retrouvent a fonctionner en PCI 33MHz. Si on est en PCI, il n'y aura pas de phase d'attributs qui n'existe qu'en PCI-X et les sequenceurs des periph PCI-X doivent fonctionner dans les deux cas. Ils doivent fonctionner aussi dans le cas du bus de donnees de 32b ou de 64b ainsi qu'ils doivent fonctionner dans le cas d'adresse de 32b ou d'adresses de 64b (qui demande le support du Dual Address Cycle si jamais le bus de donnees ne fait que 32b). Quand on teste si son circuit d'interface PCI marche, il faut tester toutes ces combinaisons puisque initialisation ou pas, les differentes possibilites sont toutes cablees puisqu'au final on n'a qu'un seul circuit electronique ! Apres pour ta question d'initialisation de registre, ca vient juste apres que chaque bridge aie determine dans quel protocole fonctionne son bus (PCI ou PCI-X pour les bus PCI-X, PCIe 1.0 ou 2.0 pour les bridges PCIe). C la que le chipset verifie qui est present sur quel bus, et entre autres quelle est la taille de(s) l'espace memoire que chacun requiert (il verifie les registres BAR ou Base Address Register donc qui se situent dans cet espace de configuration PCI). Une fois connue la demande de chacun, le bios assigne un intervalle de memoire pour chacun (enfin seulement pour ceux qui en demandent) selon un algorithme propre a chaque bios. Et ma constatation est que les bios actuels, du moins ceux que j'ai testes, n'assignent pas d'intervale au dessus de 4Go. Pour conclure et pour essayer de repondre a ta question:
ma reponse est oui a haut niveau (bios, soft) et non a bas niveau (hard, circuit logique). Mais reste qu'a un niveau plus bas, les protocoles sur chaque bus sont differents, et une carte qui peut fonctionner avec plusieurs protocoles (PCI ou PCI-X, PCIe adresse 32b ou PCIe adresse 64b) doit pouvoir switcher entre ces protocoles apres la phase d'initialisation. Selon le protocole, la sequence est differente (sinon y'aurait pas plusieurs protocoles) et c a chacune de ces sequences que le periph doit pouvoir repondre correctement. Pour rappelle, un controleur PCI sur un peripherique n'est jamais que des portes logiques connectes entre elle avec un reset et cadencees par une clock. Pour les softeux tout ca est transparent, mais pour le hard, il faut que tout ca fonctionne et ca se fait pas automatiquement ! Message cité 1 fois Message édité par samurai80 le 29-08-2007 à 10:18:00 |
![]() Publicité | Posté le 29-08-2007 à 10:14:16 ![]() ![]() |
bjone Insert booze to continue | point très interressant.
Message cité 1 fois Message édité par bjone le 29-08-2007 à 10:47:41 |
Gigathlon Quad-neurones natif |
|
samurai80 |
Deuxiement chose a bien voir et qui explique que ce probleme ne soit pas non plus un enorme probleme : la memoire mappee par le pci ne couvre pas forcement toute la memoire physiquement embarquee dans la carte. Comme je l'ecris plus haut, beaucoup font comme moi et ne mappent qu'une partie de la memoire embarquee, une banque, pour des raisons d'allegement du circuit de decodage d'adresse a l'entree de l'interface PCI (afin de pouvoir tourner a une frequence suffisante). Cette banque est selectionnee par celui qui veut acceder au periph pci par le biais d'un premier registre situe en general dans un petit espace memoire situe dans le periph comportant un tas d'autres petits registres de controle et de statut. En quelques sorte, ce petit registre de selection de banque memoire comporte le haut de l'adresse qui, recollee aux adresses qui arrivent ensuite par le PCI, formera l'adresse finale sur la memoire embarquee (GDDR pour une carte graphique par ex). resultat, on ne mappe en general pas plus de 64Mo ou 128Mo de memoire via le PCI pour un periph et du coup, ca ne pose pas trop de probleme vis a vis de la limite des 4go, meme pour des cartes embarquant 2Go. Apres, j'ai aussi constate que la carte graphique (une x700, une 8800GTX et meme une vieille GeForce 4 MX) n'a que sa zone de petits registres de controle de mappee par le PCI et que sa memoire GDDR embarquee ne l'est pas du tout. Cela s'explique par le fait que le processeur central n'accede pas directement a la GDDR en tant que maitre mais plutot en tant qu'esclave. Le periph PCI n'est donc jamais la cible (l'esclave) lors des acces a la memoie GDDR. C la carte graphique elle meme, par le biais de son controleur DMA, qui accede au donnees de sa memoire GDDR et les transfere en tant que maitre au processeur central. Quand le CPU veut par ex lire des donnees se trouvant dans la GDDR de la cg, il ecrit d'abord le decriptif de la commande DMA qu'il veut effectuer (lire tant de donnees a tel endroit dans la GDDR et ramener ces donnees a tel endroit dans la RAM). Pour ca il ecrit les petits registres du controleur DMA de la cg qui se trouve dans le petit espace memoire dont je parlais qui contient les registres de controle. Le controleur DMA de la cg demarre alors et effectue le boulot. Il vient donc lire la GDDR, et une fois les donnees pretes, les envoie vers la RAM du systeme en effectuant une ecriture PCI en tant que maitre. En faisant cela, la GDDR n'a pas besoin d'etre mappee via le PCI et c ce qui semble se passer en pratique. Donc pas trop de soucis a se faire quand meme du cote du mapping des periph PCI, les gros espaces memoire (en dehors des registres de controle donc) sont en general accedees exclusivement via DMA sinon, les perfs chutent grandement (du fait que le CPU est utilise pendant toute la procedure). Message édité par samurai80 le 29-08-2007 à 11:20:30 |
samurai80 |
|
samurai80 | Sinon si y'en a que ca interesse puisqu'on est parti dans une discussion esotherique :
Message édité par samurai80 le 30-08-2007 à 05:43:45 |
samurai80 |
La configuration du PCI est independante de l'OS, du driver ou du directdraw puisque la taille memoire requise est cable en dur dans la carte. Par contre je me suis peut etre trompe en donnant le nom des cartes videos que j'ai essaye. J'ai donne des noms de cartes que nous avons, sans vraiment verifier si c etait ces cartes que j'avais testees (il me semble avoir teste une carte video integree en fait mais pour le reste c pas sur). Desole pour l'imprecision Message édité par samurai80 le 30-08-2007 à 06:42:56 |
samurai80 |
|
Gigathlon Quad-neurones natif |
Message cité 1 fois Message édité par Gigathlon le 30-08-2007 à 08:51:51 |
samurai80 |
|
samurai80 |
|
Gigathlon Quad-neurones natif |
Message cité 1 fois Message édité par Gigathlon le 30-08-2007 à 09:51:41 |
samurai80 |
Sinon, si je comprends bien ce que tu veux dire, tu voudrais faire fonctionner le bus PCI-X sous les deux protocoles a la fois dans le cas ou il y a des cartes PCI et des cartes PCI-X raccordees au meme bus. Ca n'est malheureusement pas possible car contrairement au PCI, le bus PCI-X est un bus "registered" c a dire que les signaux traversent une porte logique de type Flip Flop ce qui leur confere une plus grande latence (+1 clk) mais une meilleure stabilite. Le bus lorsqu'il fonctionne en PCI-X s'adapte vis a vis de cette latence. Enfin, le fait de passer par des flips flops en PCI-X permet a celui ci de fonctionner a 66MHz ou 133Mhz ce qui n'est pas possible avec le PCI physiquement moins stable qui se limite souvent a 33MHz, surtout si il y a plus d'une carte de connectees sur un meme bus. Or l'horloge du bus, que tu le veuilles ou non, y'en aura toujours qu'une seule et il faudrait alors faire marcher les periphs PCI-X a 33Mhz ce qui n'a pas grand interet... Pour terminer, disons que la situation n'est pas si grave. Deja les periphs PCI-X ne sont pas tres nombreux. Deuxiemement, la plupart des cartes meres ont un bus independant pour certains slots. Typiquement sur les cartes les mieux fournies, on peut avoir par ex 6 slots PCI-X. 3 slots sont parfois sur le meme bus, et les 3 autres slots sur 3 bus differents. En mettant les cartes bridant le systeme sur des bus independants, on permet aux autres de fonctionner dans leur protocole optimal. Si jamais l'utilisateur melangeait sur un meme bus une carte PCI avec une PCI-X, le driver de l'une des cartes est charge de prevenir l'utilisateur sur le fait qu'il ferait mieux de changer l'emplacement de la carte pour ne pas diminuer les performances (en realite je ne sais pas si c'est fait cela dit). Message cité 1 fois Message édité par samurai80 le 30-08-2007 à 10:32:06 |
bjone Insert booze to continue |
Message édité par bjone le 30-08-2007 à 11:03:10 |
bjone Insert booze to continue |
|
samurai80 | Ouh la, il faudrait que je demande a mon softeux de service (c lui qui fait les drivers et il connait surement un peu comment ca marche au niveau des cg) ! Sinon, je sais pas si c ce que tu as voulu dire mais le mapping de la memoire dans les BAR du PCI (ou X ou Express) ne depend pas d'un mode de fonctionnement (Direct3D ou OpenGL ou ce que tu veux) mais est fait au demarrage du PC selon la taille memoire demandee qui est cablee en hard dans l'interface PCIe de la carte graphique. Si 256Mo de GDDR sont visibles par le CPU (ou plutot par le bridge PCI), ils le resteront toujours qque soit le mode de fonctionnement. Message cité 1 fois Message édité par samurai80 le 30-08-2007 à 11:07:35 |
samurai80 |
|
bjone Insert booze to continue |
|
bjone Insert booze to continue |
|
samurai80 | ok, bon je comprends pas tout mais d'accord quand meme |
samurai80 | je vois |
ptitbicou | hummm et comment utiliser reellement les 4 go de ram sous vista 32 bit au lieu de n'avoir que 3.25 go ? |
Gigathlon Quad-neurones natif |
|
shalkys3 made in rimard |
![]() Publicité | Posté le ![]() ![]() |