cours-snt/nsi/nsi-von-neumann/cours.tex
2022-10-25 14:33:52 +02:00

208 lines
6.1 KiB
TeX
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\documentclass[11pt,a4paper]{../../template/template_cours}
\usepackage{float}
\title{Architectures matérielles — Découvrir Von Neumann}
\author{Adrian Amaglio}
\def\thesequence{NSI première}
\usepackage{tikz}
\begin{document}
\maketitle
% ---
\section{Architecture Von Neumann}
\begin{figure}[h!]
\center
\includegraphics[width=\textwidth]{archVN.png}
\caption{Architecture Von Neumann. Les registres sont sur fond clair}
\end{figure}
% ---
\section{La mémoire vive (ou RAM)}
Il sagit dun tableau de bits (64 dans les ordinateurs récents).
\begin{figure}[h!]
\begin{tabular}{r|l}
Adresse (ici sur 4 bits) & valeur (ici sur 8 bits) \\
\hline
0000 & 0110 1010 \\
0001 & 1111 1111 \\
0010 & 1111 0000 \\
&\\
\end{tabular}
\end{figure}
% ---
\section{Les Registres}
Le processeur ne traite pas directement les données en RAM, il utilise pour cela des registres (de la mémoire directement inclue dans le processeur).\\
Parmi ces registres, nous allons utiliser les trois suivants :
\begin{description}
\item[RI] le registre d'instruction ; il contient l'instruction en cours ;
\item[CO] le compteur ordinal ; il contient l'adresse de la prochaine instruction à exécuter ;
\item[ACC] l'accumulateur ; registre de l'UAL chargé de stocker une des opérandes avant l'exécution puis le résultat de l'opération.
\end{description}
% ---
\section{Les instructions}
Un processeur est capable dexécuter des instructions.
\begin{definition}
Le \textbf{langage machine} est un ensemble dinstructions binaire que le processeur peut suivre.\\
Un \textbf{langage assembleur} est la version lisible (par les humain·e·s) de ce langage binaire.
\end{definition}
Un langage assembleur est souvent spécifique un type de processeur.
\begin{figure}[h!]
\begin{tabular}{l|l|l}
Instruction machine & Instruction Assembleur & Effet \\
\hline
0000 aaaa & LD A & Lit le contenu de la cellule A (ACC ← A) \\
0001 aaaa & STO A & Enregistre dans la cellule A (A ← ACC) \\
0010 aaaa & ADD N & Ajoute le contenu de la cellule A (ACC ← ACC + N) \\
0011 aaaa & SUB N & Soustrait le contenu de la cellule A (ACC ← ACC - N) \\
0100 aaaa & JMP A & Saute à l'adresse A (CO ← A) \\
0101 aaaa & JMPZ A & Saute à l'adresse A (CO ← A) si ACC = 0\\
0110 aaaa & JMPP A & Saute à l'adresse A (CO ← A) si ACC > 0 \\
0111 aaaa & JMPN A & Saute à l'adresse A (CO ← A) si ACC < 0 \\
\end{tabular}
\caption{Un exemple de langage machine, dont une opération est numérotée sur 4 bits et un paramètre sur 4 bits également.\\
\#A signifie, la valeur de la case dadresse A.}
\end{figure}
Voici un exemple détat de la mémoire et des registres.
Que va faire le processeur ainsi démarré ?
\begin{figure}[h!]
\centering
\begin{tabular}{l|l}
Adresse & Contenu \\
\hline
0 & 25 \\
1 & 14 \\
&\\
8 & LD 0 \\
9 & SUB 1 \\
10 & STO 2 \\
11 & END \\
\end{tabular}\hspace{5em}
\begin{tabular}{l|l|l|l}
Étape & RI & CO & Acc\\
\hline
Initiale & & 8 & \\
1 & & & \\
2 & & & \\
3 & & & \\
4 & & & \\
\end{tabular}
\end{figure}
\subsection{Exercice}
Voici un exemple détat de la mémoire et des registres.
Complétez le tableau de droite pour simuler les actions du processeur et essayez de décrire ce que fait ce programme.
\begin{figure}[h!]
\centering
\begin{tabular}{l|l}
Adresse & Contenu \\
\hline
0 & 3 \\
1 & 20 \\
&\\
8 & LD 0 \\
9 & ADD 10 \\
10 & STO 2 \\
11 & END \\
\end{tabular}\hspace{5em}
\begin{tabular}{l|l|l|l}
Étape & RI & CO & Acc \\
\hline
Initiale & & 8 & \\
1 & & & \\
2 & & & \\
3 & & & \\
4 & & & \\
\end{tabular}
\end{figure}
\subsection{Exercice}
Voici un exemple détat de la mémoire et des registres.
Complétez le tableau de droite pour simuler les actions du processeur et essayez de décrire ce que fait ce programme.
\begin{figure}[h!]
\centering
\begin{tabular}{l|l}
Adresse & Contenu \\
\hline
0 & 3 \\
1 & 20 \\
&\\
8 & LD 0 \\
9 & ADD 10 \\
10 & JMP 8 \\
11 & END \\
\end{tabular}\hspace{5em}
\begin{tabular}{l|l|l|l}
Étape & RI & CO & Acc \\
\hline
Initiale & & 8 & \\
1 & & & \\
2 & & & \\
3 & & & \\
4 & & & \\
5 & & & \\
6 & & & \\
7 & & & \\
8 & & & \\
\end{tabular}
\end{figure}
\subsection{Exercice}
\textbf{Bonus.}
Écrire un programme en langage assembleur qui récupère la valeur en RAM à ladresse 0, à ajoute 1 et stock le résultat à ladresse 0.
\subsection{Exercice}
\textbf{Bonus.} Voici un exemple détat de la mémoire et des registres.
Complétez le tableau de droite pour simuler les actions du processeur et essayez de décrire ce que fait ce programme.
\begin{figure}[h!]
\centering
\begin{tabular}{l|l}
Adresse & Contenu \\
\hline
0 & 3 \\
1 & 20 \\
&\\
8 & LD 0 \\
9 & SUB 1 \\
10 & JUMPZ 13 \\
11 & JUMP 9 \\
12 & JMP 8 \\
13 & STO 0 \\
14 & END \\
\end{tabular}\hspace{5em}
\begin{tabular}{l|l|l|l}
Étape & RI & CO & Acc \\
\hline
Initiale & & 8 & \\
1 & & & \\
2 & & & \\
3 & & & \\
4 & & & \\
5 & & & \\
6 & & & \\
7 & & & \\
8 & & & \\
\end{tabular}
\end{figure}
\subsection{Exercice}
\textbf{Bonus.}
Écrire un programme en langage assembleur qui récupère la valeur en RAM à ladresse 0, à ajoute 1 et stock le résultat à ladresse 0.
\subsection{Exercice}
\textbf{Bonus.}
Écrire un programme en langage assembleur qui récupère la valeur en RAM à ladresse 0, à ajoute 1 si elle est négative (et retranche 1 si elle est positive) et stock le résultat à ladresse 0.
\subsection{Exercice}
\textbf{Bonus.}
Écrire un programme en langage assembleur qui récupère la valeur en RAM à ladresse 0, à ajoute 1 si elle est négative (et retranche 1 si elle est positive) et stock le résultat à ladresse 0, puis recommence jusquà ce que la valeur soit nulle.
\end{document}