---
# System prepended metadata

title: Cours de systèmes - ASSE
tags: [' asse', ' S5', cours, ' Ing1', ' ASSE']

---

---
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