Pour bien comprendre son ordinateur,Pour bien comprendre son ordinateur, il faut comprendre son micro-processeur, et considérer au moins 6 instructions qui sont la lecture de la mémoire vers un registre interne; son écriture d'un registre vers la mémoire, puis l'addition, les multiplications, la comparaison et les sauts d'une position d'instruction à une autre que les sauts soient conditionnels ou pas. Puis les opérations sur les bytes elles-mêmes. et les fonction Et, Ou, Not pour inverser un état et le Ou exclusif qui permet par exemple de tracer des lignes dans Denis-Draw pour qu'elles se déplacent en fonction du curseur de la souris.Un micro-processeur est composé d'une unité logique, d'une unité arithmétique, d'un bus d'adresse, d'un bus de donnés et d'une horloge à quartz, quand votre µprocesseur place sur son bus d'adresse un champs de bits un mot binaire est constitué de bits, un certain nombre depuis qu'ils ont placé deux transistors l'un à coté de l'autre. Puis, quatre. On trouve des mots binaire de 4, 8, 16, 24, 32, 64, 128, 256... bits différents. Ce sont les données de cette adresse mémoire qui sont plaquées sur le bus de donnnées en lecture ou en écriture selon l'état du booléan R/W (read/write) qui est une des broches de votre microprocesseur. Si il pointe sur une instruction, celle-ci est décodée et selon l'instruction à effectuer, qui consiste le plus souvent d'écrire un mot dans sa mémoire ou de le lire. Les mots binaires sont composés de champs de bits qui forment avec une suite logique d'état binaire et qui peuvent être exprimé selon le cas par une suite comme celle-ci 4, 8, 16, 32 ou bien 64 bits. En effet le premier microprocesseur été composé seulement de 4 bits différents ce qui permet de représenter un chiffre de 0 à 15 ou de 0 à $F en hexadécimal.
Quand un registre est affecté d'une donnée le drapeau Z est soulevé si ce chiffre est nul.
Il serait doté d'une multiple porte Nand
avec autant de bits que celui du registre affecté.
Votre microprocesseur est attribué d'un registre d'état avec
différent drapeaux
booléen.
Et effectue des opérations de calcul mathématique avec le
mnémonique
selon l'architecture
Les opérations logiques sont les suivante
La première opération logique permet de vérifier la condition suivante : deux états binaires soient vrai.
Ce code est bien sûr composé de différentes instructions et de
fonctions logiques qui sont exécutées les unes à la suites de autres.
A la fréquence du quartz,
le processeur décode des champs de bits avec des portes logiques
(and,
or, not, xor)
qui forment des éléments constituant toutes les opérations du microprocesseur de façon électronique (on dit en logique câblée).
La simple combinaison de porte Nand
permet d'obtenir vers quelles opérations logiques vont être effectuées,
grâce à ce décodage alors différentes fonctions de calcul sont attribuées aux registres.
Il existe seulement quelque registres et se nomment indifférament selon les langage
d'assemblage des
microprocesseurs A,B X & Y ou Bien PC le
Les opérations de comparaison sont aussi nécessaires, elles permettent de vérifier l'égalité de deux valeurs
ou bien la différence entre-elle mais aussi de savoir si une valeur est plus petite ou plus grande qu'une autre.
Ces fonctions portent les noms suivants : Less than ou Greater than. Les identifiants se doivent d'être uniques et semblent devoir le rester. Car votre Compilateur agrège son vocabulaire, en fonction, d'un état de connaissances qui a pour demeure, celui d'être inscrit localement ou de façon plus subjective globalement. Les variables elles aussi quand elles sont globales à votre programme doivent aussi être unique mais celle qui sont local à une fonction peuvent avoir le même nom que d'autre variable dont la portée est elle aussi locale à une autre fonction. Et en définitive, dans un programme orienté objet, seul le tronc commun de l'application pourrait être global et c'est alors ce corps applicatif principale qui devrait initialiser toutes les variables ou objets qui lui sont nécessaires que la méthode première devrait encapsuler pour éviter des conflits entre ces variables. Quand vous effectuez des fonctions multithreadées (sur de multiples cœurs de calcul) les méthodes que vous appelaient peuvent être appelées par de multiple processus simultanément, alors comme elle s'exécute en parallèle alors les variables que vous utilisez doivent être passées dans la pile de votre programme (à travers le stack segment de chaque thread). Si une variable doit être utilisée conjointement alors elle doit être protégée par un sémaphore (un mutex) comme à la Sncf pour indiquer que le thread en question n'interfère pas avec un autre qui attend sa disponibilité. A la Sncf un tronçon de voie ne peut être utilisé par deux trains qui se croisent simultanément, c'est le même phénomène dans le cas de traitement multi-cœur. Une méthode est dite ré-entrante si elle peut être utilisée conjointement par plusieurs processus en même temps, pour un mécanicien, deux clés différentes pourraient entrer dans le même verrou simultanément. Et la méthode réentrante se doit d'effectuer le même travail indifféremment selon le nombre de cœur l'utilisant. Denis-draw est constitué de plus de 200 modules multi-threadés qui agissent ensemble selon les fonctions que vous utilisez et ceci de façon transparente. Il est prévu d'utiliser jusqu'à 32 cœurs de calcul en parallèle. Je procède ainsi par exemple, quand une image est sélectionnée alors si votre ordinateur est équipé de 4 cœurs de calcul, alors chacun de ces cœurs va devoir traiter une partie (un quart) de cette image. Bien sûr si la hauteur de l'image n'est pas un multiple de quatre, alors le dernier cœur se voit attribué le reliquat. Je procède ainsi, tout d'abord, je cherche à déterminer de combien de cœurs de calcul est équipé votre microprocesseur. Puis j'initialise un compteur avec ce nombre, (il est protégé par un mutex), et je créé autant de thread différents avec comme paramètre une fraction de la hauteur de l'image et du nombre de cœurs. Quand chaque cœur à terminé son «travail» alors ce compteur est décrémenté d'une unité. Au préalable un autre thread avec un temps de latence plus lent, attend que ce compteur passe à zéro. Quand c'est le cas tous les threads ont terminé leur «job», le thread de synchronisation rend l'âme et les processus sont alors synchronisés et le programme peut continuer son travail, comme d'actualiser l'écran et d'indiquer précisément le temps de ce traitement en milliseconde. Dans le dialogue des préférences on peut activer l'option utilisation mono-cœur (dans la rubrique interface) et mesurer le temps ainsi gagné. En effet quoi de plus, qu'une unité pour décrire sa manière toute précise afin d'être reconnu par ces paires. Qui sont constitué des méthodes publiques sans interférences. Une description méthodique de l'affichage d'une palette, permet par exemple quand une étape supplémentaire de passage des couleurs de transition comme avec l'Option noir au blanc, qui s'affiche cette méthode est une fonction particulière de l'unité des palettes de Denis - Draw. On transforme aisément un système de coordonné polaire en x=cos(alpha)*rayon
y=sin(alpha)*rayon
Une fonction du rayon pour déplacer le centre et obtenir une position dans l'image du cercle alors x=cos(alpha)*rayon+deplacement.x
y=sin(alpha)*rayon+deplacement.y
Une fonction d'alpha un angle en radian puis du rayon appliqué,
Comme les fonctions sinus et cosinus ont un espace de variation compris
entre -1 et 1, la multiplication de ce résultat par le facteur rayon, qui peut varier.
x=cos(alpha)*rayon_sur_axe_x
y=sin(alpha)*rayon_sur_axe_y
© BeeLog |