98 lines
4.0 KiB
TeX
98 lines
4.0 KiB
TeX
\documentclass[10pt]{article}
|
||
|
||
% import des packages nécessaires
|
||
\usepackage[T1]{fontenc}
|
||
\usepackage{xcolor}
|
||
\usepackage[french]{babel}
|
||
\usepackage{syntax}
|
||
\usepackage{listings}
|
||
\usepackage{amsmath}
|
||
\usepackage[french]{babel}
|
||
\usepackage{hyperref}
|
||
\usepackage{graphicx}
|
||
|
||
\hypersetup{colorlinks=false}
|
||
\graphicspath{ {./figs/} }
|
||
|
||
% titre
|
||
\title{Caractérisation de l’instruction \texttt{clflush} sur systèmes multi-socket}
|
||
\author{\textsc{Augustin LUCAS}\\ENS de Lyon\\ \\Encadré par :\\
|
||
\textsc{Guillaume DIDIER}, \textsc{Angeliki KRITIKAKOU}\\
|
||
Équipe TARAN\\
|
||
Laboratoire IRISA\\
|
||
RENNES}
|
||
|
||
\date{3 Juin 2024 - 12 Juillet 2024}
|
||
|
||
% quelques macros
|
||
\newcommand{\TODO}[1]{\textbf{\color{red}#1}}
|
||
|
||
% le document lui-même
|
||
\begin{document}
|
||
\maketitle
|
||
\tableofcontents
|
||
\newpage
|
||
|
||
|
||
\section{Abstract}
|
||
|
||
\TODO{Réécrire parce qu'il fallait juste que je démarre mais ça ne ressemble à rien}
|
||
|
||
Les CPU modernes ont beaucoup d'instruction, et leur compréhension complète demande
|
||
une très grande maitrise technique. De plus, le fonctionnement détaillé des instructions des leaders du domaine
|
||
(Intel) est souvent non documenté, compliquant l'émergence de nouvelles industries dans ce secteur
|
||
très compétitif. Certaines attaques par canaux auxiliaire sur le cache comme Flush+Flush \cite{flushflush}
|
||
exploitent des caractéristiques très fines des processeurs, il est alors important de comprendre
|
||
le fonctionnement intrinsèque de certaines instruction pour mieux réaliser
|
||
ces attaques. \textit{Calibration Done right} \cite{calibrationdoneright} caractérise le fonctionnement de
|
||
l'instruction \texttt{clflush} sur certains processeurs Intel mais a mis en évidence que le fonctionnement
|
||
sur des systèmes à plusieurs sockets était significativement différent.
|
||
|
||
\section{Introduction}
|
||
|
||
\subsection{Hiérarchie de cache}
|
||
|
||
La mémoire DRAM d'un ordinateur est lente comparée à la fréquence du CPU. Le CPU dispose donc de caches,
|
||
basés sur une mémoire SRAM, plus petite mais plus rapide. La politique de fonctionnement du cache
|
||
cherche à minimiser le temps d'exécution qui est bloqué par les accès à la mémoire. Une politique optimale
|
||
serait donc de charger en priorité les données qui vont être utilisées dans un futur proche et d'évicter
|
||
les données qui seront utilisées dans plus longtemps ou qui ne sont plus utiles.
|
||
Comme on ne peut pas déterminer cela aisément, une heuristique de type LRU (Least Recently Used) est
|
||
généralement mise en place pour déterminer les données à évicter.
|
||
|
||
\begin{center}
|
||
\includegraphics{cachehierarchy}
|
||
\end{center}
|
||
|
||
Les processeurs que nous étudions disposent de 3 niveaux de cache : L1, L2, L3. À l'instar du L1 et L2,
|
||
le cache L3 est partagé et inclusif\footnote{Cela dépend de l'architecture considérée : à partir de SkyLake, le L3 n'est plus inclusif} : le L3 est le même pour tous les coeurs,
|
||
alors que chaque coeur dispose de son L1 et son L2 ; toutes les données contenues dans au
|
||
moins un L1 ou un L2 sont aussi dans le L3
|
||
|
||
Si le L3 est partagé, il n'est cependant pas composé d'un unique \TODO{espace mémoire} dans le CPU mais est séparé en différentes slices : des tranches de mémoire accolées chacune à un coeur~
|
||
\footnote{\TODO{c'est plus compliqué sur les nouveaux proc}}.
|
||
|
||
\begin{figure}[h]
|
||
\centering
|
||
\includegraphics[width=0.4\textwidth]{broadwell-die-shot}
|
||
\caption{Broadwell Deca-Core die shot by Intel - annotated by Wikichip \cite{broadwelldieshot}}
|
||
\end{figure}
|
||
|
||
\subsubsection{L'instruction \texttt{clflush}}
|
||
|
||
\subsection{Attaques par canaux auxiliaires: Flush+Flush}
|
||
|
||
\section{Systèmes multi-socket}
|
||
\TODO{trouver un titre approprié}
|
||
|
||
\subsection{Conduite des expériences}
|
||
|
||
\subsection{Analyse des résultats}
|
||
|
||
\bibliographystyle{plain}
|
||
\bibliography{refs}
|
||
|
||
Experiments presented in this paper were carried out using the Grid'5000 testbed, supported by a scientific interest group hosted by Inria and including \textsc{Cnrs}, \textsc{Renater} and several Universities as well as other organizations (see \url{https://www.grid5000.fr} ).
|
||
|
||
\end{document}
|