Le 05 octobre 2015 à 19:12:57 pierre135b a écrit :
Bah imaginons que PC (Program counter) pointe vers la "cellule" 12000 de la ram, c'est une instruction qui veux copier la valeur de la cellule 26890 à la cellule 26988 mais que les 2 valeurs des cellules sources et cibles soient contenues dans PC+1 et PC+2 donc les cellules 12001 et 12002
Souvent il n'y a pas d'operation "copy", tu as load et store. Et tu encode dans l'instruction load le registre qui contient l'adresse du load et le registre qui va etre remplit par le load.
Pareil pour store.
Pour les pipelines. Oui c'est complique ce truc. Et il y a 50 facons differente de regle le probleme des stall. Typiquement, la prediction est utilise. Aussi tu peux reordoner les instruction dans certains cas. Aussi, tu peux faire du multi-threading, ...
Ok, mais si un opcode demande une adresse mémoire qui est dans la cellule mémoire?
Pour les stalls je pense faire une premiere version sans pipeline, question de simplicitée :p
Je ne comprends pas ta question. Regarde cette instruction la: http://chortle.ccsu.edu/assemblytutorial/Chapter-15/ass15_7.html
L'instruction contient. l'adresse, le registre de destination et le registre d'offset.
Nan ce que je veux dire, c'est si j'ai une instruction avec un argument qui est stocké dans la "cellule" d'apres (la cellule d'apres dans la mémoire) je le récupère comment (l'adresse) ?
quand tu lis l'instruction, tu lis TOUTE l'instruction. Si c'est une instruction sur 4 bytes, alors tu lis 4 bytes. Si c'est une instructino sur 18 bytes, alors tu lis 18 bytes...
Comment je reconnais alors que mon instruction est sur x bytes ?
Imaginons sur une mémoire 64 bits (64 bits d'adresse possible), je pourrais avoir alors un bus de 128 bits entre le décodeur et la ram ? (si je dois stocker l'instr+reg+adresse?)
Comment je reconnais alors que mon instruction est sur x bytes ?
Ca depend de ton assembleur. Les processeurs RISC fixent la taille des instructions pour que ca doit plus simple. Les processeurs CISC font chier le monde avec des instructions a taille variables.
Imaginons sur une mémoire 64 bits (64 bits d'adresse possible), je pourrais avoir alors un bus de 128 bits entre le décodeur et la ram ? (si je dois stocker l'instr+reg+adresse?)
c'est possible.
Oui donc le décodeur peut dire à la ram de lui envoyer X bytes apres le PC ?
Pour construire le décodeur et le registre, y'a des schéma (avec porte logique)?
par exemple.
Le decodeur depends completement de ton assembleur.
Pour les registres les mots cles sont flip-flop et D-latches
Oui j'ai vu cela, je pense avoir quasi toutes les cartes en main désormais,sauf la ram, je seche la dessus :'), me reste plus qu'a le faire sur minecraf puis dans un logiciel spécial ^^
La ram est un composant completement different. Tu as typiquement un composant "ram" dans les simulateur de circuit.
J'ai créé un registre dans minecraft xD
Mais enfait, il ne possede pas d'horloge, juste le I/O et reset, c'est pas grave ? (car je ne voyais pas d'utiité à une horloge en fait)
de memoire, tu n'as pas besoin d'horloge pour faire un registre.