Category Archives: Microarchitecture

Digital design and computer architecture (david & sarah harris)

Deux ouvrages de référence sur le fonctionnement des microprocesseurs. Une édition se base sur l’architecture MIPS, l’autre édition se base sur l’architecture ARM.

Leur approche est de commencer par aborder dans la première partie la conception de circuits logiques (digital design). Les différents composants électroniques (ALU, multiplexeurs, registres, …) sont utilisés dans la deuxième partie pour expliquer très concrètement et clairement l’ architecture des microprocesseurs sans s’égarer dans les détails (amélioration de performance, pipelining, vectoriel, …).

Au final, cette approche concrète permet d’avoir toutes les connaissances de base nécessaires pour concevoir un micro-processeur simple en langage HDL (verilog).

J’ai lu l’édition MIPS et je projette de lire l’édition ARM (processeur du Raspberry). Ce sont des ouvrages que je conseille vraiment ! Mon seul petit regret est l’absence d’explication sur l’implémentation en pratique via un FPGA. Mais on peut voir cela d’une façon positive : c’est aussi l’occasion de découvrir par soi même un territoire inconnu … 😎

Advertisements

E8BC : opérations arithmétiques

Une calculatrice élémentaire pour vérifier le fonctionnement des opérations arithmétiques ADD, SUB, MUL (unsigned), DIV(unsigned). Le résultat ne doit pas dépasser 8 bits (=255).

Les opérandes sont introduites en IN0,IN1 et l’opération est sélectionnée en IN2 via un clavier élémentaire. Résultat affiché sur OUT0. Toutes les données sont entrées ou affichées en hexadécimal.

Dépôt du projet : https://github.com/CodingPat/E8BC/

Continue reading E8BC : opérations arithmétiques

E8BC : l’assembleur disponible en version pre-alpha

A la veille de la rentrée, on franchit une étape importante dans le développement de notre plate-forme E8BC : l’assembleur en version alpha est disponible !

Vous pourrez donc coder en langage assembleur qui sera traduit en langage machine par le programme assembleur. Une étape fondamentale d’abstraction du hardware : c’est la première couche logicielle de notre plate-forme.

Attention : il s’agit d’une version pre-alpha, un nombre restreint d’instructions sont disponibles. Les instructions restantes seront ajoutées au fur et à mesure …

Un premier programme de test est disponible : leds_01.asm, qui permet d’incrémenter un compteur et d’afficher le résultat sous forme de leds.
Dépôt du projet : https://github.com/CodingPat/E8BC/

Continue reading E8BC : l’assembleur disponible en version pre-alpha

E8BC assembler

Maintenant que l’ensemble des instructions E8BC est en phase de finalisation, nous allons démarrer à présent le développement d’un assembleur qui nous permettra de traduire un programme source écrit en assembleur vers le code machine.

Pour ce faire, j’ai choisi le langage python. Le programme s’appelle : “assembler.py” et est placé dans le répertoire /script.

Le dépôt : https://github.com/CodingPat/E8BC/

Continue reading E8BC assembler

E8bC : exécution d’une instruction à la fois

step_debug

Jusqu’à présent, nous avons testé les instructions en les exécutant cycle par cycle via le signal MAN_CLK. Mais les instructions ayant des cycles variables, il n’est pas toujours aisé de passer rapidement sur plusieurs instructions pour atteindre l’instruction qui nous intéresse précisément. C’est le but de la petite modification avec le signal DEBUG.

Continue reading E8bC : exécution d’une instruction à la fois