Pourquoi une carte graphique externe ?
Travailler avec plusieurs écrans est devenu assez classique dans certains domaines (tels que le journalisme) et avoir deux écrans (ou plus) sur son ordinateur n’est plus un luxe réservé aux traders. Si tous les ordinateurs de bureau (ou presque) gèrent parfaitement deux écrans externes — et parfois plus — ce n’est que rarement le cas sur les ordinateurs portables : avec des cartes graphiques qui gèrent deux sorties, une est évidemment réservée à l’écran interne.
Quelques constructeurs proposent de désactiver l’écran interne (comme Lenovo), d’autres installent des cartes graphiques qui gèrent plus de deux écrans, comme les Radeon 5000, 6000 et 7000. Mais dans la majorité des cas, le seul moyen d’installer deux écrans externes (ou plus) est une carte graphique externe.
Plusieurs interfaces, notre choix
Une carte graphique externe ? Oui, ça existe. Passons en revue les solutions existantes et justifions notre choix.
D’abord, il y a les cartes graphiques USB 2.0 (bientôt 3.0). Elles sont lentes, très limitées au niveau des fonctions et des performances, mais peu onéreuses — moins de 100 € — et efficaces pour de la bureautique simple. Pour ajouter un écran qui ne monte pas trop haut au niveau de la définition — les cartes limitent à 1 680 x 1 050 ou 1 920 x 1 200 en fonction des modèles — c’est correct. Si on a besoin de plus de deux écrans, la facture monte vite.
Ensuite, il y a les boîtiers qui séparent le signal, comme les solutions de Matrox. Ils sont souvent chers, mais ont l’avantage de provoquer une perte de performances faible. Leur fonctionnement est simple : on branche deux écrans identiques (en définition) à la « carte », qui va faire croire au système qu’un écran d’une définition doublée est branché. Le principal défaut est que le tout est dépendant de l’ordinateur : une prise HDMI ou DVI Single Link ne fournit pas assez de bande passante pour deux écrans en haute définition. Il faut donc soit rester en VGA — avec les défauts classiques — soit passer en DisplayPort ou disposer d’un des rares ordinateurs portables dotés d’une sortie DVI Dual Link.
Certains constructeurs, Dell, Sony ou Toshiba, proposent aussi des réplicateurs de ports qui intègrent parfois plusieurs sorties vidéo. Soit en utilisant les fonctions de la carte graphique interne, soit en intégrant des cartes graphiques USB directement.
On trouve aussi des cartes graphiques en PC Card, un format rare dans les ordinateurs récents. Si la solution est compacte, elle pose des problèmes de performances : le PC Card est techniquement similaire au PCI et les 133 Mo/s de l’interface limitent rapidement. De plus, les GPU utilisés sont souvent lents, pour des questions de dissipation thermique et de compatibilité PCI.
Autre solution, acheter un ordinateur avec une sortie pour un GPU externe : Fujitsu ou Sony en proposent, avec des interfaces rapides — PCI-Express 8x pour le premier, 4x pour le second — et des cartes graphiques milieu de gamme. C’est efficace, mais limité dans le choix du GPU et surtout de l’ordinateur.
Une solution plus récente est le connecteur Thunderbolt des derniers ordinateurs d’Apple : la technologie transporte du PCI-Express x4 et il est donc possible de proposer des boîtiers compatibles avec cette norme en sortie et d’y brancher une carte graphique. C’est séduisant, mais deux problèmes (encore) se posent : l’absence de boîtiers de ce type, qui restent des prototypes, et le fait que les ordinateurs compatibles soient rares.
Une des solutions, que nous avons choisi, l’ExpressCard. Si la vitesse n’est pas le point fort de cette technologie — 250 Mo/s ou 500 Mo/s en fonction des ordinateurs —, les ordinateurs portables sont couramment équipés de l’emplacement idoine et les boîtiers permettant de brancher un GPU en externe existent. Sans être la panacée, l’ExpressCard est pour nous aujourd’hui le meilleur compromis.
Terminons en évoquant une solution « DIY » (Do It Yourself) : il existe des solutions permettant de récupérer directement des liens PCI-Express dans un ordinateur portable pour brancher ensuite une carte graphique en externe. Certains récupèrent le PCI-Express de l’ExpressCard, d’autres directement en interne dans un emplacement Mini Card (utilisé pour les cartes Wi-Fi) et certains câblent même les liens inutilisés directement sur le southbridge, en soudant sur la carte mère. Le résultat final est très efficace — il est possible de récupérer deux lignes PCI-Express 2.0 —, mais y parvenir reste un exercice très complexe et qui n’est pas sans danger pour l’ordinateur.
La solution de Village Instruments
Le boîtier que nous avons utilisé est un ViDock 3 de chez Village Instruments. Ce boîtier externe est prévu pour recevoir une carte PCI-Express x16 (généralement une carte graphique) interfacée en PCI-Express x1 via le connecteur ExpressCard.
Le boîtier, en métal, mesure 242 x 140 x 65 mm et peut accepter une carte double emplacement. Un câble de 70 cm environ permet de relier le boîtier à un ordinateur, avec une carte ExpressCard/34 intégrée. La finition est correcte et — bonne idée — on trouve deux prises USB sur le boîtier. Il s’agit en fait d’un hub USB interne au boîtier qui récupère le lien USB de l’ExpressCard. Pour rappel, le connecteur en question transporte du PCI-Express (1 ligne), mais aussi de l’USB 2.0.
Notre boîtier est la version de base, destinée à des cartes graphiques d’entrée de gamme. Il se limite donc, au niveau de l’alimentation, aux 75 W de la norme PCI-Express, via une alimentation externe peu encombrante. Deux autres versions du boîtier existent : le ViDock 4 est plus long (342 mm au lieu de 242 mm) et propose une alimentation de 150 W. Cette dernière permet donc d’alimenter la carte graphique via le bus PCI-Express, mais aussi via un connecteur PCI-Express à 6 broches. Le ViDock 4 Plus, quant à lui, nécessite deux alimentations : une de 150 W et une de 75 W. Il permet donc d’installer des cartes qui nécessitent deux connecteurs PCI-Express à 6 broches, soit 225 W. Les rares cartes nécessitant un connecteur 8 broches ne sont pas supportées.
Notons que le PCB et l’arrière du boîtier sont communs à tous les modèles : notre ViDock 3 possède une prise femelle pour une seconde alimentation.
L’installation est assez simple, à base de vis à mains, même s’il faut démonter en partie le boîtier. Une fois allumé, ce dernier s’illumine d’une LED bleue assez puissante, mais il est possible de cacher le boîtier.
Le chevauchement et le choix du GPU
Deux autres points sont à prendre en compte avant d’utiliser un GPU externe. Le premier point est lié à l’usage, le second au choix de la carte graphique.
Un problème de chevauchement
Le premier problème vient de l’usage avec plusieurs écrans : si vos fenêtres chevauchent les écrans, il peut y avoir des ralentissements au niveau de l’affichage. Il ne se pose que si une fenêtre est affichée en partie sur un écran géré par un GPU et en partie sur un écran géré par un autre GPU. Dans ce cas précis, l’affichage est très lent (sous Windows et Mac OS X, nous n’avons pas testé sous Linux), essentiellement à cause de la liaison utilisée.
En simplifiant, chaque modification de la fenêtre dans un écran doit être reportée sur le second écran. Si dans un système classique c’est très rapide — il suffit d’écrire à un autre endroit de la mémoire vidéo —, le cas des systèmes dotés de plusieurs GPU est différent. En effet, il faut modifier l’image dans la mémoire de la première carte graphique et ensuite dans la mémoire de la seconde carte graphique (la fenêtre est considérée comme un seul élément). Et ce déplacement passe par le bus PCI-Express qui dans notre cas est très lent : seulement 250 Mo/s.
Concrètement, il nous est arrivé de taper au clavier plus vite que l’affichage simplement parce qu’une fenêtre dépassait de quelques pixels sur un écran adjacent géré par la carte graphique interne de notre machine de test. Le plus simple est de bien cloisonner les écrans et d’éviter les chevauchements quand c’est possible.
Le choix de la carte graphique
Nous l’avons vu, notre boîtier se limite aux cartes courtes (moins de 25 cm) et alimentées uniquement par le bus PCI-Express. Le choix de la carte graphique est donc important : il faut un modèle qui ne consomme pas trop et qui n’est pas trop long. Il faut aussi éviter les modèles low profile, sauf s’ils sont livrés avec une équerre adaptée. Pour nos tests, nous avons utilisé deux cartes : une Radeon HD 2600 XT et une GeForce GT 120 (une simple GeForce 9500 GT renommée). Dans les deux cas, les cartes étaient des modèles Apple, qui restent tout à fait utilisables sous Windows. Les ViDock 4 et 4 Plus ont moins de problèmes sur ce point précis, avec les cartes de 30 cm supportées et deux connecteurs PCI-Express à 6 broches.
Pour les adaptes du silence, il est possible d’utiliser une carte passive, mais attention : ce type de carte est souvent pensé pour être utilisé dans un boîtier classique, ventilé, et l’espace exigu du boîtier ViDock n’est pas nécessairement adapté.
Le problème de l’allocation des ressources
À l’usage, on peut se heurter rapidement à un des problèmes classiques : l’allocation des ressources. En effet, les BIOS des PC portables sont souvent frustes et le paramètre appelé TOLUD parfois mal réglé.
TOLUD ?
TOLUD signifie Top Of Low Usable DRAM. C’est la valeur utilisée pour déterminer la mémoire maximale disponible avec un système 32 bits quand on a 4 Go de RAM. Typiquement, un système 32 bits est capable de prendre en charge 4 Go de RAM mais une partie de l’espace adressable est allouée aux composants pour l’accès aux périphériques, c’est une des particularités des processeurs Intel. Et cette partie n’est donc pas utilisable par le processeur comme mémoire vive.
Dans les faits, les cartes graphiques nécessitent par exemple une « fenêtre » de 256 Mo qui va permettre d’adresser la mémoire vidéo rapidement. Sans entrer dans les détails, nous avons un dossier sur la gestion de la mémoire avec les systèmes 32 bits, c’est ce qui explique qu’une machine dotée de 4 Go de RAM avec un système 32 bits ne puisse utiliser que 3 ou 3,2 Go de RAM.
Le problème qui survient avec les cartes graphiques externes, c’est qu’elles ont besoin de mémoire et que certains BIOS n’ont pas prévu ce cas de figure. Il est en effet nécessaire de disposer de plus de 512 Mo de mémoire pour les cartes PCI-Express : 256 Mo par carte graphique et de la mémoire pour les autres périphériques. Or certains BIOS fixent la valeur TOLUD à 3,5 Go, soit seulement 512 Mo de mémoire restants libres, ce qui empêche les cartes graphiques de fonctionner.
Il y a plusieurs solutions à ce problème, la plus simple étant d’utiliser un OS 64 bits, qui va déplacer la zone allouée au PCI-Express hors de la mémoire vive adressable. Il est aussi possible d’activer la technologie PAE, qui va permettre la réallocation de la même façon, mais toutes les cartes graphiques ne sont pas compatibles, ni tous les BIOS. Enfin, il est possible de modifier le BIOS pour modifier la valeur TOLUD et la descendre à 3 Go ou — la technique la plus radicale — utiliser moins de mémoire vive.
En effet, la valeur TOLUD n’est utilisée que si la mémoire vive dépasse sa limite. Typiquement, utiliser 4 Go de RAM avec une valeur TOLUD à 3,5 Go. En passant à 3 Go de RAM, il devrait rester 1 Go de libre, ce qui est suffisant pour utiliser le GPU interne et le GPU externe simultanément.
Au final, il est prudent de se renseigner avant d’utiliser un GPU externe sur une machine dotée de 4 Go de RAM et travaillant avec un OS 32 bits.
La gestion du démarrage
Deux autres petits problèmes : le démarrage et la connexion.
La gestion du démarrage
Petit problème simple à corriger, certains BIOS ne veulent pas initialiser l’ordinateur si une seconde carte graphique est connectée. Heureusement, VillageTronics a pensé à une solution : si le boîtier démarre au moment de l’allumage de l’ordinateur, il est possible de décaler la mise en marche de la carte graphique elle-même. Des jumpers permettent de décaler de 2, 4 ou 8 secondes le démarrage du GPU et donc laisser le BIOS initialiser la machine avant de connecter la carte. Une de nos machines de test ne voulait pas démarrer « à froid » avec le boîtier connecté et le jumper a permis de corriger le problème.
Connecter à chaud… ou pas
Selon les systèmes d’exploitation et les ordinateurs, le comportement est différent. En effet, le branchement à chaud de la carte, s’il est théoriquement possible, dépend énormément de l’appareil.
Sous Windows 7 et avec une machine récente qui utilise la même marque de GPU que celui de la carte graphique externe, ça devrait fonctionner — ce fut le cas dans nos tests . Il est possible d’éjecter la carte à chaud et de l’insérer quand l’ordinateur fonctionne, sans aucun problème. Attention à ne pas éjecter la carte directement : il faut passer par la barre des tâches et bien éjecter le boîtier.
Si la machine utilise Windows 7 et un GPU Intel, c’est tout aussi fonctionnel : le système accepte de lancer deux pilotes de GPU en même temps.
Si, par contre, vous avez un GPU interne AMD et un GPU externe NVIDIA (ou le contraire), bonjour les problèmes. Techniquement rien n’empêche le tout de fonctionner avec les pilotes standards de l’OS, mais les pilotes officiels des constructeurs bloquent certaines fonctions (voire la totalité) d’un pilote du rival. Par exemple Nvidia bloque via ses pilotes l’utilisation d’une GeForce pour PhysX quand on utilise une Radeon pour l’affichage principal. La seule machine où nous avons testé n’a pas voulu activer correctement la carte graphique, mais des recherches sur des forums montrent que ça fonctionne parfois, avec des pilotes modifiés.
Sous Mac OS X, tout dépend du modèle d’ordinateur. Certains modèles de MacBook Pro n’acceptent pas les GPU externes, d’autre acceptent le GPU externe, mais désactivent l’interne ; notre modèle de test (un MacBook Pro 17 pouces 2009) l’accepte, mais uniquement avec une connexion à froid (avant le démarrage). Sur le dernier modèle en date de MacBook Pro, doté d’un connecteur Thunderbolt, le branchement à chaud est par contre fonctionnel.
Optimus & Co.
Pour les amateurs, il existe des pilotes modifiés qui permettent d’utiliser la technologie Optimus avec une carte graphique externe.
Il y a quelques limitations : la première est d’utiliser un GPU Intel compatible. La technologie fonctionne avec quelques puces Intel seulement : le GMA 4500MHD (qui accompagne certains Core 2 Duo), l’Intel HD des Core ix Arrandale, l’Intel HD 3000 des Core ix Sandy Bridge et le GMA 3150 des Atom.
La seconde est d’utiliser une carte NVIDIA compatible. Les cartes basées sur les GPU GT21x (GeForce GT 330 par exemple) et les cartes basées sur les puces Fermi (GeForce GT 4xx et GT 5xx) sont compatibles. Il faut simplement éviter les cartes basées sur d’anciens GPU de type G9x ou GT200.
Point intéressant de cette solution, il devient possible d’envoyer directement le flux vidéo sur l’écran interne de l’ordinateur portable.
Pour ceux qui n’ont pas une carte NVIDIA, il existe une seconde solution.
Ultramon
Nous ne l’avons pas essayée, mais elle est bien expliquée dans ce sujet (en anglais). Elle consiste à utiliser le logiciel Ultramon pour cloner un écran externe sur l’écran interne.
Cela ne fonctionne qu’avec les applications capables de fonctionner en fenêtre et a un impact sur les performances, mais cela permet de jouer sur l’écran interne sans brancher d’écran externe.
Virtu Universal
La dernière solution est d’utiliser la technologie Virtu Universal de Lucid. Celle-ci permet de gérer les GPU externes à la manière d’Optimus, mais nécessite une plateforme Sandy Bridge, elle est donc réservée aux ordinateurs portables récents. En outre, pour le moment, Lucid ne vend pas directement au particuliers. Il est néanmoins possible de récupérer les pilotes en se procurant une carte mère compatible.
Les performances
Mesurer les performances du GPU externe n’est pas chose aisée. Dans notre cas, d’une part, notre boîtier de test n’avait qu’une alimentation de base, ce qui limitait la puissance de la carte graphique à intégrer. D’autre part la seule machine disposant du même GPU était un Mac, dont les pilotes ne sont pas aussi optimisés que ceux d’une machine Windows. Et malheureusement, il nous a été impossible de faire des tests sous Windows avec cette machine.
La bande passante
Sur un MacBook Pro, nous avons mesuré — via CUDA-Z — la bande passante de l’ExpressCard. Nous avons atteint (seulement) 190 Mo/s dans le meilleur des cas, sur un bus pouvant atteindre en théorie 250 Mo/s. C’est assez peu et même problématique dans certains cas.
En effet, pour afficher 60 images par seconde sur un écran classique de 22 pouces qui travaille en 1 680 x 1050, il faut une bande passante d’environ 400 Mo/s. Pour un écran plus ancien en 1 280 x 1 024, 300 Mo/s. Comme on le voit, des problèmes de fluidité peuvent se poser. En usage bureautique, ce n’est pas réellement un problème : que le curseur soit animé à 60 images/s ou à 30 images/s, c’est invisible. Mais pour regarder une vidéo, c’est très vite limitant : une simple vidéo en plein écran est saccadée.
NVIDIA, dans ses pilotes Windows, détecte la vitesse du bus et active une compression au niveau du GPU — sur les puces récentes —, mais ce n’est pas le cas sur tous les systèmes et c’est uniquement le cas sur les puces interfacées en PCI-Express x1.
Dans les jeux
Dans les jeux, la bande passante limite rapidement : il faut considérer que les performances sont divisées par deux par rapport à une carte interfacée en PCI-Express x16. Le simple fait de passer sur un lien PCI-Express 2.0 (500 Mo/s) permet d’ailleurs d’augmenter les performances.
Nous avons effectué un test 3DMark 06 avec une GeForce 9500 GT sur un portable doté d’un Core 2 Duo à 2 GHz et nous avons obtenu un score de 3580. Sur une machine de bureau et avec un GPU identique, le score moyen est compris entre 5 000 et 6 000 dans une définition identique et avec une carte interfacée en PCI-Express 16x.
Avec plusieurs écrans
Dans la plupart des cas, les personnes qui veulent un GPU externe ont une idée en tête : multiplier les écrans. Comme nous l’expliquons plus haut, la bande passante n’est pas assez élevée pour un simple écran 22 pouces et le problème se pose évidemment si on veut brancher plusieurs écrans. Dans la pratique, c’est parfaitement utilisable en bureautique, pour du surf et dans tous les cas où les animations sont lentes. Sur de la vidéo, c’est très dépendant des pilotes : si le décodage se fait sur le GPU, ce n’est pas un réel problème, ce dernier recevant la version compressée du flux. Si c’est par contre le CPU qui décode, les saccades sont à prévoir, surtout en plein écran : la bande passante est trop faible.
Améliorer les choses ?
Il existe quelques solutions pour améliorer les performances.
La première, c’est d’utiliser un bus plus rapide. Thunderbolt, XGP (chez AMD) ou tout simplement un ordinateur doté d’un connecteur ExpressCard en PCI-Express 2.0 (c’est généralement le cas des machines en processeur Sandy Bridge).
La seconde, c’est d’utiliser une carte graphique NVIDIA récente : les pilotes permettent d’activer une compression en temps réel des données, ce qui limite la bande passante nécessaire. Attention, cette fonction est liée à l’utilisation du bus PCI-Express x1, elle ne s’active pas sur les cartes interfacées en x2 ou en x4.
La troisième, c’est d’optimiser un peu. Il est possible d’overclocker le bus PCI-Express dans de rares cas, et l’augmentation des performances avec la fréquence est linéaire. Sur les cartes graphiques d’entrée de gamme, il est recommandé de désactiver les fonctions comme l’HyperMemory et le TurboMemory : elles utilisent la mémoire vive pour augmenter virtuellement la capacité de la mémoire vidéo, mais saturent le bus PCI-Express. Enfin, si votre carte graphique a une sortie HDMI capable de transporter le son, désactiver le contrôleur audio permet de gagner quelques précieux mégaoctets.
Pour les jeux, il est éventuellement possible de passer la profondeur de couleurs sur 16 bits — attention, le résultat est parfois visuellement peu attractif — et diminuer la définition de l’écran.
Pour la vidéo, la solution la plus efficace est d’utiliser l’accélération vidéo de la carte graphique quand c’est possible. Les modèles récents décodent la majorité des codecs et des programmes comme VLC ou le lecteur Media Player de Windows sont capables d’utiliser l’accélération vidéo directement.
Autre chose qu’une carte graphique ?
Est-il possible d’utiliser autre chose qu’une carte graphique ? Oui.
Le boîtier sert juste à modifier le format physique de la connexion, mais c’est un classique signal PCI-Express qui est transmis. Concrètement, il suffit de brancher une carte PCI-Express et ça devrait fonctionner.
Nous avons testé avec un contrôleur USB 3.0 ainsi qu’avec une carte SATA en PCI-Express x1 sans aucun souci : tout fonctionne parfaitement, comme si la carte était en interne. Pour peu que des pilotes soient disponibles, il est donc possible d’utiliser virtuellement n’importe quelle carte PCI-Express, tant que le bus ne limite pas. Comme le boîtier intègre un connecteur physique en x16 en interne, tous les formats de cartes sont acceptés, du x1 au x16.
Attention tout de même, les performances restent souvent faibles : la majorité des contrôleurs qui utilisent un bus PCI-Express x1 sont prévus pour du PCI-Express 2.0. Que ce soit pour les cartes USB 3.0, les cartes SATA 6 gigabits/s ou toutes les cartes PCI-Express 4x et 8x, la bande passante limitée de l’ExpressCard va être un problème. Et dans 99 % des cas, acheter directement la carte en ExpressCard est en fait plus intéressant financièrement.
Conclusion
Alors, un GPU externe, est-ce une bonne idée ? Dans certains cas, oui. Un vrai GPU peut amener de l’accélération graphique, la prise en charge de plusieurs écrans, des fonctions inédites.
Les solutions actuelles sont-elles efficaces ? Pas réellement. Que ce soit l’ExpressCard (testé ici), le Thunderbolt ou LightPeak (comme sur le Vaio Zx), la bande passante est trop faible pour tirer la quintessence d’un GPU, même milieu de gamme. Il faudrait une interface externe rapide, offrant au moins 2 Go/s de bande passante (du PCI-Express x8) pour rendre l’utilisation d’un GPU externe transparente.
Et il y a la question du prix : les solutions clés en main valent environ 200 € pour le boîtier (au minimum). Les solutions « DIY » sont moins onéreuses mais l’intégration laisse à désirer et le prix reste élevé. De plus, il faut aussi prendre en compte le prix de la carte graphique, même si un modèle d’entrée de gamme à moins de 100 € est souvent suffisant.
Au final, il faut prendre le tout comme une solution qui existe, utilisable, mais qui n’est pas la solution ultime.
Enfin, pour les amateurs, un énorme sujet est disponible sur les forums de NotebookReview.