\section{Introduction}

De nos jours, la capacité d'intégration augmente. Un concepteur possède un ``tas'' de transistors toujours plus grand à sa disposition. L'objectif des vingt dernières années étaient d'avoir un processeur monolithique pouvant extraire le plus d'ILP (Instruction Level Parallelism) possible. Les études de David W. Wall \cite{1991_wall} montre que le parallélisme moyen est de 3-5 instructions. Les mono processeurs de la fin du XXème siècles comme le MipsR10000 \cite{1996_yeager}, l'alpha 21264 \cite{1998_kessler}, le pentium 4 \cite{2001_hinton} ou encore l'Itanium et l'Itanium 2 d'Intel \cite{2000_sharangpani}, \cite{2003_mcnairy} exploitent tous fortement l'ILP. Dans le même laps de temps des systèmes CMP (Chip Multi Processors) émergaient. Ils consitents en plusieurs processeurs exploitant faiblement l'ILP. Mais le système d'exploitation peut alors éxecuter plusieurs tâches simultanéments. Ces CMP exploitent le TLP (Thread Level Paralelism). Dans cette catégorie nous pouvons citer le piranha de Compaq \cite{2000_barroso}, l'Hydra de Stanford \cite{2000_hammond}. On peut également citer le Power4 \cite{2002_tendler} ou l'alpha 21364 \cite{2002_mukherjee} qui sont des processeurs monolithiques mais étant conçut pour être intégrer dans un environnement multi-processeur.

En prenant en compte la sous exploitation des ressources internes des processeurs mono-core, une autre voie pour exploiter le TLP à émerger. Elle consiste à intégrer non pas un mais plusieurs contextes par core. Ceci est la technique du Multi-threading et de sa variante le SMT (Simultaneous multi threading). C'est principalement les travaux de recherches de l'équipe de Tullsen \cite{1995_tullsen}, \cite{1996_tullsen}. Pour un ajout minime en surface (une duplication de quelques registres d'état, des multiplexeurs ...), nous pouvons avoir des processeurs mono-core multi-threadé. Ceci à vut l'apparition du Pentium 4 Hyperthreading d'Intel \cite{2003_koufaty} (ajoutant de 5\% en surface pour un gain de performance de 30\%). 

Il y a deux grandes lignes de conduites : Les ressources sont soit totalement dédiés à une tâches (cas des CMP classique), soit totalement partagés entre plusieurs tâches (cas des SMT). Entre ces deux voies, nous pouvons faire varier le degré de partage des ressources entre les tâches. C'est à dire que les ressources internes d'un core ne sont partagées de manière uniformes entre tous les threads. Ils y a alors l'émergence de CMP de SMT. Le POWER 5 \cite{2004_kalla} est un dual-core où chaque core est SMT de degré 2. De même pour le montecito d'Intel \cite{2005_mcnairy}. Alors que le Niagara de Sun intégre 8 cores de CMT (Corse Grain Multi Threanding) de degré 4 \cite{2005_kongetira}.

L'objectif de ce papier est d'analyser en terme de performance le partage des ressources d'un processeur. Pour cela, nous allons voir dans la section \ref{experimentations} les éxperimentations que nous allons réaliser, ainsi que celles qui ont déjà été réalisé. Dans la section \ref{methodologie} nous allons montrer nos hypothèse de travail. Suivit d'une section interprétant les résultats.
