---
tags: cours, asse, ASSE, S5, Ing1
author: Robin 'Pachichi' Boucher
date: 20/12/18
---
###### Jeudi 20 décembre
# Cours de systèmes - ASSE
:::info
Rappels
* RISC / CISC
* Pipeline
* 5 levels
1. fetch
2. decode
3. execute
4. memory
5. writeback
* Dependency
* stall (bulle)
* bypass unit
* Branch predictor
* microcode
:::
#### Cours actuel
Branchement indirect: indirection avant de jmp
$\rightarrow$ branch predictor
```
jmp %addr
call %addr
ret
```
Plus rapide de push les registres un par un que d'appeler `pusha`.
Les processeurs ***out of order***
$\rightarrow$ Spectre/Meltdown (bug CPU)
* Spectre: bug des branch predictors (faire sauter un bout de code sur une branche différente)
* Meltdown:
Les micro-instructions ne vérifient pas les permissions si User ou Kernel.
$\rightarrow$ Bout de code se trouvant à des endroits où il ne devrait pas se trouver
> [color=blue] insérer image TLB et datacache ici (check cahier)
---
Fait partie de la TLB (**???**)
* Addresse physique
* Addresse virtuelle
* flags
* ID
---
**TLB**: Accélère la traduction d'addresse virtuelle
**Dcache**: DataCache
$\rightarrow$ flush quand on change d'address space (changement de **cr3**)
Raisons d'aller dans le Kernel:
* syscalls
* interruptions
* ...
Les addresses de pages paires, on le prend pour le user land et les addresses des pages impaires pour le kernel land (ou inversement, peu importe).
**KPTI**
* Rowhammer
* Nethammer