<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Architecture-Du-Processeur | Dr. Goulu</title><link>https://drgoulu.com/tag/architecture-du-processeur/</link><atom:link href="https://drgoulu.com/tag/architecture-du-processeur/index.xml" rel="self" type="application/rss+xml"/><description>Architecture-Du-Processeur</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>fr-FR</language><lastBuildDate>Thu, 04 Jul 2019 00:00:00 +0000</lastBuildDate><image><url>https://drgoulu.com/media/icon_hu_8d57a97d564ea9bb.png</url><title>Architecture-Du-Processeur</title><link>https://drgoulu.com/tag/architecture-du-processeur/</link></image><item><title>Est-ce que les variables de registre apportent beaucoup d’amélioration de la vitesse dans un programme ?</title><link>https://drgoulu.com/2019/07/04/est-ce-que-les-variables-de-registre-apportent-beaucoup-damelioration-de-la-vitesse-dans-un-programme/</link><pubDate>Thu, 04 Jul 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/07/04/est-ce-que-les-variables-de-registre-apportent-beaucoup-damelioration-de-la-vitesse-dans-un-programme/</guid><description>&lt;p&gt;&lt;em&gt;Article initialement publié sur
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Oui, mais ne vous en occupez pas, le compilateur fait ça beaucoup mieux que vous.&lt;/p&gt;
&lt;p&gt;Selon
:&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;En architecture 64 bits, le nombre de registres est suffisamment important pour que pratiquement tous les paramètres et toutes les variables locales utilisent un registre dédié. Le protocole d’appel entre les méthodes s’appuie également fortement sur les registres. L&amp;rsquo;appelant alimente des registres avant l&amp;rsquo;appel. La pile est utilisée pour sauver l&amp;rsquo;état des registres avant l&amp;rsquo;appel et pour les paramètres complémentaires n&amp;rsquo;ayant pas trouvés de place dans un registre.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ensuite il donnent un tableau des temps d&amp;rsquo;accès en fonction de la
:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;registres : 1 cycle processeur (~1 nanoseconde)&lt;/li&gt;
&lt;li&gt;cache L1 : 1 microseconde (1000x plus lent…)&lt;/li&gt;
&lt;li&gt;cache L2 : 4 microsecondes&lt;/li&gt;
&lt;li&gt;cache L3 : 10 à 20 microsecondes&lt;/li&gt;
&lt;li&gt;RAM : &amp;gt; 200 microsecondes (~200'000x plus lent que le registre…)&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Peut-on dire qu’à partir d’un cahier des charges, avec deux langages différents, on obtiendra deux programmes compilés identiques, pour un même processeur ?</title><link>https://drgoulu.com/2019/04/01/peut-on-dire-qua-partir-dun-cahier-des-charges-avec-deux-langages-differents-on-obtiendra-deux-programmes-compiles-identiques-pour-un-meme-processeur/</link><pubDate>Mon, 01 Apr 2019 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2019/04/01/peut-on-dire-qua-partir-dun-cahier-des-charges-avec-deux-langages-differents-on-obtiendra-deux-programmes-compiles-identiques-pour-un-meme-processeur/</guid><description>&lt;p&gt;&lt;em&gt;Article initialement publié sur
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Non, c’est quasiment impossible d’obtenir deux programmes compilés identiques. Déjà il ne reste plus beaucoup de langages compilés actifs : C++, Go, Swift, Ada, et, il faut le dire, ces bon vieux Formol et Cobtran. Les autres (Python, Java, JavaScript etc.) font chacun leur “bytecode” interprété.&lt;/p&gt;
&lt;p&gt;Les langages compilés et leurs compilateurs sont suffisamment différents dans la représentation des objets voire des chaines de caractères, le passage de paramètres etc et l’optimisation du code pour les processeurs actuels qu’ils vont produire du code différent, à part peut-être pour print(“Hello World!”).&lt;/p&gt;</description></item></channel></rss>